From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: James Jong Newsgroups: gmane.emacs.bugs Subject: bug#13908: Unable to compile Emacs 24.3 stable Date: Wed, 13 Mar 2013 18:13:38 -0400 Message-ID: References: <83obenhwcg.fsf@gnu.org> <83mwu7hv2n.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=047d7b604368d9a68b04d7d5b77a X-Trace: ger.gmane.org 1363212849 6850 80.91.229.3 (13 Mar 2013 22:14:09 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 13 Mar 2013 22:14:09 +0000 (UTC) Cc: Paul Eggert , 13908@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Mar 13 23:14:33 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UFtwO-0001Vz-9S for geb-bug-gnu-emacs@m.gmane.org; Wed, 13 Mar 2013 23:14:33 +0100 Original-Received: from localhost ([::1]:43385 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFtw1-0001Qy-ME for geb-bug-gnu-emacs@m.gmane.org; Wed, 13 Mar 2013 18:14:09 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:38801) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFtvs-0001QY-1T for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 18:14:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UFtvn-000574-Oo for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 18:13:59 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:47933) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UFtvn-00056x-CB for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 18:13:55 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1UFtws-0003bh-IG for bug-gnu-emacs@gnu.org; Wed, 13 Mar 2013 18:15:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: James Jong Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Mar 2013 22:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13908 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo Original-Received: via spool by 13908-submit@debbugs.gnu.org id=B13908.136321289613838 (code B ref 13908); Wed, 13 Mar 2013 22:15:02 +0000 Original-Received: (at 13908) by debbugs.gnu.org; 13 Mar 2013 22:14:56 +0000 Original-Received: from localhost ([127.0.0.1]:52043 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFtwm-0003b9-En for submit@debbugs.gnu.org; Wed, 13 Mar 2013 18:14:56 -0400 Original-Received: from mail-ee0-f49.google.com ([74.125.83.49]:35647) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UFtwi-0003at-R1 for 13908@debbugs.gnu.org; Wed, 13 Mar 2013 18:14:54 -0400 Original-Received: by mail-ee0-f49.google.com with SMTP id d41so708672eek.36 for <13908@debbugs.gnu.org>; Wed, 13 Mar 2013 15:13:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=ImYR0Yqs1kLq6OjPeNS6nCjXrL/9DbIJ7d8Q8d25wzY=; b=ht+qpQNUWX1Z82wi2gn2q75jfG4eApOfr2FLeqqEoO95gjrSuQosO0vM1s9C/ztFnD vUpue3T0liGp1FNTn5aj+LwJOe22+CCy6KmCLcEqxNOOkv9ApuNTEaUnfqDjTm7k619T XuNuT4ovYWbo7ifQ0qFnRwKi9jag5ZZp8iRjv7pr1tolsZhVNj9DQOrIkMRw/9uUaBXg 6I2i3ObAZ7I1JXC52U0x4QJRgluS6LCLuEwqQ7/uX8aoY3cU9T+jVYiTyxZ7DNBdJ2VI e31H0lztTUyyZrqi9J2WBbZEdSrtXOMpm/tohVy05ekLdX6GEXM2BcBap4v7Dt5ogLpr OVeA== X-Received: by 10.14.173.196 with SMTP id v44mr46599eel.29.1363212819333; Wed, 13 Mar 2013 15:13:39 -0700 (PDT) Original-Received: by 10.14.219.193 with HTTP; Wed, 13 Mar 2013 15:13:38 -0700 (PDT) In-Reply-To: <83mwu7hv2n.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:72438 Archived-At: --047d7b604368d9a68b04d7d5b77a Content-Type: multipart/alternative; boundary=047d7b604368d9a68604d7d5b778 --047d7b604368d9a68604d7d5b778 Content-Type: text/plain; charset=ISO-8859-1 Thanks a lot Eli. Attached you can find the regex.ii file created by that command. James On Wed, Mar 13, 2013 at 5:02 PM, Eli Zaretskii wrote: > > Date: Wed, 13 Mar 2013 16:48:47 -0400 > > From: James Jong > > > > Thank you Eli. Attached you can find the output of that command (which I > > run from lib-src) > > Now run this command: > > gcc -std=gnu99 -E -I. -I../src -I../lib > -I/home/james/raid/opt/emacs/releases/src/emacs-24.3.gcc.4.7.2/lib-src > -I/home/james/raid/opt/emacs/releases/src/emacs-24.3.gcc.4.7.2/lib-src/../src > -I/home/james/raid/opt/emacs/releases/src/emacs-24.3.gcc.4.7.2/lib-src/../lib > -g3 -O2 -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER > /home/james/raid/opt/emacs/releases/src/emacs-24.3.gcc.4.7.2/lib-src/../src/regex.c > -o regex.ii > > and post the file regex.ii created by that command. > > --047d7b604368d9a68604d7d5b778 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Thanks a lot Eli. Attached you can find the regex.ii file = created by that command.

James


On Wed, Mar 13, 2013 at 5:0= 2 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> Date: Wed, 13 Mar 2013 16:48:47 -0400 > From: James Jong <ribonuc= leico@gmail.com>
>
> Thank you Eli. Attached you can find the output of t= hat command (which I
> run from lib-src)

Now run this command:

=A0 =A0gcc -std=3Dgnu99 -E =A0 =A0 -I. -I../src -I../lib -I/home/james/raid= /opt/emacs/releases/src/emacs-24.3.gcc.4.7.2/lib-src -I/home/james/raid/opt= /emacs/releases/src/emacs-24.3.gcc.4.7.2/lib-src/../src -I/home/james/raid/= opt/emacs/releases/src/emacs-24.3.gcc.4.7.2/lib-src/../lib =A0 -g3 -O2 -DCO= NFIG_BROKETS -DINHIBIT_STRING_HEADER /home/james/raid/opt/emacs/releases/sr= c/emacs-24.3.gcc.4.7.2/lib-src/../src/regex.c -o regex.ii

and post the file regex.ii created by that command.


--047d7b604368d9a68604d7d5b778-- --047d7b604368d9a68b04d7d5b77a Content-Type: application/octet-stream; name="regex.ii" Content-Disposition: attachment; filename="regex.ii" Content-Transfer-Encoding: base64 X-Attachment-Id: f_he91pe170 DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4z LmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KIyAxICIvaG9tZS9qYW1lcy9yYWlk L29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8vIg0K I2RlZmluZSBfX1NURENfXyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVh c2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2Rl ZmluZSBfX1NURENfVkVSU0lPTl9fIDE5OTkwMUwNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmMiDQojZGVmaW5lIF9fU1REQ19VVEZfMTZfXyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQv b3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3Ny Yy9yZWdleC5jIg0KI2RlZmluZSBfX1NURENfVVRGXzMyX18gMQ0KIyAxICIvaG9tZS9qYW1lcy9y YWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8u Li9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19TVERDX0hPU1RFRF9fIDENCiMgMSAiL2hvbWUvamFt ZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1z cmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fR05VQ19fIDQNCiMgMSAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fR05VQ19NSU5PUl9fIDcNCiMgMSAiL2hvbWUvamFt ZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1z cmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fR05VQ19QQVRDSExFVkVMX18gMg0KIyAxICIv aG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43 LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19WRVJTSU9OX18gIjQuNy4yIg0K IyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5n Y2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19BVE9NSUNfUkVMQVhF RCAwDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0y NC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0FUT01JQ19T RVFfQ1NUIDUNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2Vt YWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fQVRP TUlDX0FDUVVJUkUgMg0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUg X19BVE9NSUNfUkVMRUFTRSAzDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVh c2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2Rl ZmluZSBfX0FUT01JQ19BQ1FfUkVMIDQNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3Mv cmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMi DQojZGVmaW5lIF9fQVRPTUlDX0NPTlNVTUUgMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9l bWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVn ZXguYyINCiNkZWZpbmUgX19PUFRJTUlaRV9fIDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmMiDQojZGVmaW5lIF9fRklOSVRFX01BVEhfT05MWV9fIDANCiMgMSAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9MUDY0IDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQojZGVmaW5lIF9fTFA2NF9fIDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmMiDQojZGVmaW5lIF9fU0laRU9GX0lOVF9fIDQNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQojZGVmaW5lIF9fU0laRU9GX0xPTkdfXyA4DQojIDEgIi9ob21lL2phbWVzL3Jh aWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4u L3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1NJWkVPRl9MT05HX0xPTkdfXyA4DQojIDEgIi9ob21l L2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9s aWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1NJWkVPRl9TSE9SVF9fIDINCiMgMSAi L2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQu Ny4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fU0laRU9GX0ZMT0FUX18gNA0K IyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5n Y2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19TSVpFT0ZfRE9VQkxF X18gOA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3Mt MjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19TSVpFT0Zf TE9OR19ET1VCTEVfXyAxNg0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNl cy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZp bmUgX19TSVpFT0ZfU0laRV9UX18gOA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgX19DSEFSX0JJVF9fIDgNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3Mv cmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMi DQojZGVmaW5lIF9fQklHR0VTVF9BTElHTk1FTlRfXyAxNg0KIyAxICIvaG9tZS9qYW1lcy9yYWlk L29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9z cmMvcmVnZXguYyINCiNkZWZpbmUgX19PUkRFUl9MSVRUTEVfRU5ESUFOX18gMTIzNA0KIyAxICIv aG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43 LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19PUkRFUl9CSUdfRU5ESUFOX18g NDMyMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3Mt MjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19PUkRFUl9Q RFBfRU5ESUFOX18gMzQxMg0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNl cy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZp bmUgX19CWVRFX09SREVSX18gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18NCiMgMSAiL2hvbWUvamFt ZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1z cmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fRkxPQVRfV09SRF9PUkRFUl9fIF9fT1JERVJf TElUVExFX0VORElBTl9fDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2Vz L3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmlu ZSBfX1NJWkVPRl9QT0lOVEVSX18gOA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgX19TSVpFX1RZUEVfXyBsb25nIHVuc2lnbmVkIGludA0KIyAxICIvaG9tZS9qYW1l cy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNy Yy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBsb25nIGludA0KIyAx ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2Mu NC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19XQ0hBUl9UWVBFX18gaW50 DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4z LmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1dJTlRfVFlQRV9f IHVuc2lnbmVkIGludA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUg X19JTlRNQVhfVFlQRV9fIGxvbmcgaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX1VJTlRNQVhfVFlQRV9fIGxvbmcgdW5zaWduZWQgaW50DQojIDEgIi9ob21l L2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9s aWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0NIQVIxNl9UWVBFX18gc2hvcnQgdW5z aWduZWQgaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9l bWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0NI QVIzMl9UWVBFX18gdW5zaWduZWQgaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX1NJR19BVE9NSUNfVFlQRV9fIGludA0KIyAxICIvaG9tZS9qYW1lcy9yYWlk L29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9z cmMvcmVnZXguYyINCiNkZWZpbmUgX19JTlQ4X1RZUEVfXyBzaWduZWQgY2hhcg0KIyAxICIvaG9t ZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIv bGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19JTlQxNl9UWVBFX18gc2hvcnQgaW50 DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4z LmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0lOVDMyX1RZUEVf XyBpbnQNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UNjRf VFlQRV9fIGxvbmcgaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2Vz L3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmlu ZSBfX1VJTlQ4X1RZUEVfXyB1bnNpZ25lZCBjaGFyDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0 L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9y ZWdleC5jIg0KI2RlZmluZSBfX1VJTlQxNl9UWVBFX18gc2hvcnQgdW5zaWduZWQgaW50DQojIDEg Ii9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40 LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1VJTlQzMl9UWVBFX18gdW5z aWduZWQgaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9l bWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1VJ TlQ2NF9UWVBFX18gbG9uZyB1bnNpZ25lZCBpbnQNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmMiDQojZGVmaW5lIF9fSU5UX0xFQVNUOF9UWVBFX18gc2lnbmVkIGNoYXINCiMgMSAiL2hv bWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4y L2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UX0xFQVNUMTZfVFlQRV9fIHNo b3J0IGludA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1h Y3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19JTlRf TEVBU1QzMl9UWVBFX18gaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVh c2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2Rl ZmluZSBfX0lOVF9MRUFTVDY0X1RZUEVfXyBsb25nIGludA0KIyAxICIvaG9tZS9qYW1lcy9yYWlk L29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9z cmMvcmVnZXguYyINCiNkZWZpbmUgX19VSU5UX0xFQVNUOF9UWVBFX18gdW5zaWduZWQgY2hhcg0K IyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5n Y2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19VSU5UX0xFQVNUMTZf VFlQRV9fIHNob3J0IHVuc2lnbmVkIGludA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFj cy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXgu YyINCiNkZWZpbmUgX19VSU5UX0xFQVNUMzJfVFlQRV9fIHVuc2lnbmVkIGludA0KIyAxICIvaG9t ZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIv bGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19VSU5UX0xFQVNUNjRfVFlQRV9fIGxv bmcgdW5zaWduZWQgaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2Vz L3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmlu ZSBfX0lOVF9GQVNUOF9UWVBFX18gc2lnbmVkIGNoYXINCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UX0ZBU1QxNl9UWVBFX18gbG9uZyBpbnQNCiMgMSAiL2hv bWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4y L2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UX0ZBU1QzMl9UWVBFX18gbG9u ZyBpbnQNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UX0ZB U1Q2NF9UWVBFX18gbG9uZyBpbnQNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVs ZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQoj ZGVmaW5lIF9fVUlOVF9GQVNUOF9UWVBFX18gdW5zaWduZWQgY2hhcg0KIyAxICIvaG9tZS9qYW1l cy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNy Yy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19VSU5UX0ZBU1QxNl9UWVBFX18gbG9uZyB1bnNp Z25lZCBpbnQNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2Vt YWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fVUlO VF9GQVNUMzJfVFlQRV9fIGxvbmcgdW5zaWduZWQgaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQv b3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3Ny Yy9yZWdleC5jIg0KI2RlZmluZSBfX1VJTlRfRkFTVDY0X1RZUEVfXyBsb25nIHVuc2lnbmVkIGlu dA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQu My5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19JTlRQVFJfVFlQ RV9fIGxvbmcgaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3Ny Yy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBf X1VJTlRQVFJfVFlQRV9fIGxvbmcgdW5zaWduZWQgaW50DQojIDEgIi9ob21lL2phbWVzL3JhaWQv b3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3Ny Yy9yZWdleC5jIg0KI2RlZmluZSBfX0dYWF9BQklfVkVSU0lPTiAxMDAyDQojIDEgIi9ob21lL2ph bWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWIt c3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1NDSEFSX01BWF9fIDEyNw0KIyAxICIvaG9t ZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIv bGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19TSFJUX01BWF9fIDMyNzY3DQojIDEg Ii9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40 LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0lOVF9NQVhfXyAyMTQ3NDgz NjQ3DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0y NC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0xPTkdfTUFY X18gOTIyMzM3MjAzNjg1NDc3NTgwN0wNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3Mv cmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMi DQojZGVmaW5lIF9fTE9OR19MT05HX01BWF9fIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTA0KIyAxICIv aG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43 LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19XQ0hBUl9NQVhfXyAyMTQ3NDgz NjQ3DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0y NC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1dDSEFSX01J Tl9fICgtX19XQ0hBUl9NQVhfXyAtIDEpDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX1dJTlRfTUFYX18gNDI5NDk2NzI5NVUNCiMgMSAiL2hvbWUvamFtZXMvcmFp ZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4v c3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fV0lOVF9NSU5fXyAwVQ0KIyAxICIvaG9tZS9qYW1lcy9y YWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8u Li9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19QVFJESUZGX01BWF9fIDkyMjMzNzIwMzY4NTQ3NzU4 MDdMDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0y NC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1NJWkVfTUFY X18gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFj cy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXgu YyINCiNkZWZpbmUgX19JTlRNQVhfTUFYX18gOTIyMzM3MjAzNjg1NDc3NTgwN0wNCiMgMSAiL2hv bWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4y L2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UTUFYX0MoYykgYyAjIyBMDQoj IDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdj Yy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1VJTlRNQVhfTUFYX18g MTg0NDY3NDQwNzM3MDk1NTE2MTVVTA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgX19VSU5UTUFYX0MoYykgYyAjIyBVTA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29w dC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMv cmVnZXguYyINCiNkZWZpbmUgX19TSUdfQVRPTUlDX01BWF9fIDIxNDc0ODM2NDcNCiMgMSAiL2hv bWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4y L2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fU0lHX0FUT01JQ19NSU5fXyAoLV9f U0lHX0FUT01JQ19NQVhfXyAtIDEpDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3Jl bGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0K I2RlZmluZSBfX0lOVDhfTUFYX18gMTI3DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX0lOVDE2X01BWF9fIDMyNzY3DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0 L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9y ZWdleC5jIg0KI2RlZmluZSBfX0lOVDMyX01BWF9fIDIxNDc0ODM2NDcNCiMgMSAiL2hvbWUvamFt ZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1z cmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UNjRfTUFYX18gOTIyMzM3MjAzNjg1NDc3 NTgwN0wNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fVUlOVDhf TUFYX18gMjU1DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9l bWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1VJ TlQxNl9NQVhfXyA2NTUzNQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNl cy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZp bmUgX19VSU5UMzJfTUFYX18gNDI5NDk2NzI5NVUNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmMiDQojZGVmaW5lIF9fVUlOVDY0X01BWF9fIDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUwNCiMg MSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2Nj LjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UX0xFQVNUOF9NQVhf XyAxMjcNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UOF9D KGMpIGMNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UX0xF QVNUMTZfTUFYX18gMzI3NjcNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFz ZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVm aW5lIF9fSU5UMTZfQyhjKSBjDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVh c2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2Rl ZmluZSBfX0lOVF9MRUFTVDMyX01BWF9fIDIxNDc0ODM2NDcNCiMgMSAiL2hvbWUvamFtZXMvcmFp ZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4v c3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UMzJfQyhjKSBjDQojIDEgIi9ob21lL2phbWVzL3Jh aWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4u L3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0lOVF9MRUFTVDY0X01BWF9fIDkyMjMzNzIwMzY4NTQ3 NzU4MDdMDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFj cy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0lOVDY0 X0MoYykgYyAjIyBMDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3Ny Yy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBf X1VJTlRfTEVBU1Q4X01BWF9fIDI1NQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgX19VSU5UOF9DKGMpIGMNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3Mv cmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMi DQojZGVmaW5lIF9fVUlOVF9MRUFTVDE2X01BWF9fIDY1NTM1DQojIDEgIi9ob21lL2phbWVzL3Jh aWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4u L3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1VJTlQxNl9DKGMpIGMNCiMgMSAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fVUlOVF9MRUFTVDMyX01BWF9fIDQyOTQ5NjcyOTVV DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4z LmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1VJTlQzMl9DKGMp IGMgIyMgVQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1h Y3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19VSU5U X0xFQVNUNjRfTUFYX18gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTA0KIyAxICIvaG9tZS9qYW1lcy9y YWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8u Li9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19VSU5UNjRfQyhjKSBjICMjIFVMDQojIDEgIi9ob21l L2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9s aWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0lOVF9GQVNUOF9NQVhfXyAxMjcNCiMg MSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2Nj LjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UX0ZBU1QxNl9NQVhf XyA5MjIzMzcyMDM2ODU0Nzc1ODA3TA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgX19JTlRfRkFTVDMyX01BWF9fIDkyMjMzNzIwMzY4NTQ3NzU4MDdMDQojIDEgIi9o b21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40Ljcu Mi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0lOVF9GQVNUNjRfTUFYX18gOTIy MzM3MjAzNjg1NDc3NTgwN0wNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFz ZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVm aW5lIF9fVUlOVF9GQVNUOF9NQVhfXyAyNTUNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1h Y3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4 LmMiDQojZGVmaW5lIF9fVUlOVF9GQVNUMTZfTUFYX18gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTA0K IyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5n Y2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19VSU5UX0ZBU1QzMl9N QVhfXyAxODQ0Njc0NDA3MzcwOTU1MTYxNVVMDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2Vt YWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdl eC5jIg0KI2RlZmluZSBfX1VJTlRfRkFTVDY0X01BWF9fIDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUwN CiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMu Z2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fSU5UUFRSX01BWF9f IDkyMjMzNzIwMzY4NTQ3NzU4MDdMDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3Jl bGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0K I2RlZmluZSBfX1VJTlRQVFJfTUFYX18gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTA0KIyAxICIvaG9t ZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIv bGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19GTFRfRVZBTF9NRVRIT0RfXyAwDQoj IDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdj Yy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0RFQ19FVkFMX01FVEhP RF9fIDINCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fRkxUX1JB RElYX18gMg0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1h Y3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19GTFRf TUFOVF9ESUdfXyAyNA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUg X19GTFRfRElHX18gNg0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUg X19GTFRfTUlOX0VYUF9fICgtMTI1KQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgX19GTFRfTUlOXzEwX0VYUF9fICgtMzcpDQojIDEgIi9ob21lL2phbWVzL3JhaWQv b3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3Ny Yy9yZWdleC5jIg0KI2RlZmluZSBfX0ZMVF9NQVhfRVhQX18gMTI4DQojIDEgIi9ob21lL2phbWVz L3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3Jj Ly4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0ZMVF9NQVhfMTBfRVhQX18gMzgNCiMgMSAiL2hv bWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4y L2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fRkxUX0RFQ0lNQUxfRElHX18gOQ0K IyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5n Y2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19GTFRfTUFYX18gMy40 MDI4MjM0NjYzODUyODg1OTgxMmUrMzhGDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX0ZMVF9NSU5fXyAxLjE3NTQ5NDM1MDgyMjI4NzUwNzk3ZS0zOEYNCiMgMSAi L2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQu Ny4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fRkxUX0VQU0lMT05fXyAxLjE5 MjA5Mjg5NTUwNzgxMjUwMDAwZS03Rg0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgX19GTFRfREVOT1JNX01JTl9fIDEuNDAxMjk4NDY0MzI0ODE3MDcwOTJlLTQ1Rg0K IyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5n Y2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19GTFRfSEFTX0RFTk9S TV9fIDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fRkxUX0hB U19JTkZJTklUWV9fIDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMv c3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5l IF9fRkxUX0hBU19RVUlFVF9OQU5fXyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX0RCTF9NQU5UX0RJR19fIDUzDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0 L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9y ZWdleC5jIg0KI2RlZmluZSBfX0RCTF9ESUdfXyAxNQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29w dC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMv cmVnZXguYyINCiNkZWZpbmUgX19EQkxfTUlOX0VYUF9fICgtMTAyMSkNCiMgMSAiL2hvbWUvamFt ZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1z cmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fREJMX01JTl8xMF9FWFBfXyAoLTMwNykNCiMg MSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2Nj LjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fREJMX01BWF9FWFBfXyAx MDI0DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0y NC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0RCTF9NQVhf MTBfRVhQX18gMzA4DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3Ny Yy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBf X0RCTF9ERUNJTUFMX0RJR19fIDE3DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3Jl bGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0K I2RlZmluZSBfX0RCTF9NQVhfXyAoKGRvdWJsZSkxLjc5NzY5MzEzNDg2MjMxNTcwODE1ZSszMDhM KQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQu My5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19EQkxfTUlOX18g KChkb3VibGUpMi4yMjUwNzM4NTg1MDcyMDEzODMwOWUtMzA4TCkNCiMgMSAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fREJMX0VQU0lMT05fXyAoKGRvdWJsZSkyLjIyMDQ0 NjA0OTI1MDMxMzA4MDg1ZS0xNkwpDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3Jl bGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0K I2RlZmluZSBfX0RCTF9ERU5PUk1fTUlOX18gKChkb3VibGUpNC45NDA2NTY0NTg0MTI0NjU0NDE3 N2UtMzI0TCkNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2Vt YWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fREJM X0hBU19ERU5PUk1fXyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2Vz L3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmlu ZSBfX0RCTF9IQVNfSU5GSU5JVFlfXyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX0RCTF9IQVNfUVVJRVRfTkFOX18gMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlk L29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9z cmMvcmVnZXguYyINCiNkZWZpbmUgX19MREJMX01BTlRfRElHX18gNjQNCiMgMSAiL2hvbWUvamFt ZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1z cmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fTERCTF9ESUdfXyAxOA0KIyAxICIvaG9tZS9q YW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGli LXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19MREJMX01JTl9FWFBfXyAoLTE2MzgxKQ0K IyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5n Y2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19MREJMX01JTl8xMF9F WFBfXyAoLTQ5MzEpDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3Ny Yy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBf X0xEQkxfTUFYX0VYUF9fIDE2Mzg0DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3Jl bGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0K I2RlZmluZSBfX0xEQkxfTUFYXzEwX0VYUF9fIDQ5MzINCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQojZGVmaW5lIF9fREVDSU1BTF9ESUdfXyAyMQ0KIyAxICIvaG9tZS9qYW1lcy9y YWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8u Li9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19MREJMX01BWF9fIDEuMTg5NzMxNDk1MzU3MjMxNzY1 MDJlKzQ5MzJMDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9l bWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0xE QkxfTUlOX18gMy4zNjIxMDMxNDMxMTIwOTM1MDYyNmUtNDkzMkwNCiMgMSAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fTERCTF9FUFNJTE9OX18gMS4wODQyMDIxNzI0ODU1 MDQ0MzQwMWUtMTlMDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3Ny Yy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBf X0xEQkxfREVOT1JNX01JTl9fIDMuNjQ1MTk5NTMxODgyNDc0NjAyNTNlLTQ5NTFMDQojIDEgIi9o b21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40Ljcu Mi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0xEQkxfSEFTX0RFTk9STV9fIDEN CiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMu Z2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fTERCTF9IQVNfSU5G SU5JVFlfXyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9l bWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0xE QkxfSEFTX1FVSUVUX05BTl9fIDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVs ZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQoj ZGVmaW5lIF9fREVDMzJfTUFOVF9ESUdfXyA3DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2Vt YWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdl eC5jIg0KI2RlZmluZSBfX0RFQzMyX01JTl9FWFBfXyAoLTk0KQ0KIyAxICIvaG9tZS9qYW1lcy9y YWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8u Li9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19ERUMzMl9NQVhfRVhQX18gOTcNCiMgMSAiL2hvbWUv amFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xp Yi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fREVDMzJfTUlOX18gMUUtOTVERg0KIyAx ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2Mu NC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19ERUMzMl9NQVhfXyA5Ljk5 OTk5OUU5NkRGDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9l bWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0RF QzMyX0VQU0lMT05fXyAxRS02REYNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVs ZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQoj ZGVmaW5lIF9fREVDMzJfU1VCTk9STUFMX01JTl9fIDAuMDAwMDAxRS05NURGDQojIDEgIi9ob21l L2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9s aWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0RFQzY0X01BTlRfRElHX18gMTYNCiMg MSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2Nj LjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fREVDNjRfTUlOX0VYUF9f ICgtMzgyKQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1h Y3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19ERUM2 NF9NQVhfRVhQX18gMzg1DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2Vz L3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmlu ZSBfX0RFQzY0X01JTl9fIDFFLTM4M0REDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX0RFQzY0X01BWF9fIDkuOTk5OTk5OTk5OTk5OTk5RTM4NEREDQojIDEgIi9o b21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40Ljcu Mi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0RFQzY0X0VQU0lMT05fXyAxRS0x NUREDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0y NC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0RFQzY0X1NV Qk5PUk1BTF9NSU5fXyAwLjAwMDAwMDAwMDAwMDAwMUUtMzgzREQNCiMgMSAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fREVDMTI4X01BTlRfRElHX18gMzQNCiMgMSAiL2hv bWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4y L2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fREVDMTI4X01JTl9FWFBfXyAoLTYx NDIpDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0y NC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0RFQzEyOF9N QVhfRVhQX18gNjE0NQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUg X19ERUMxMjhfTUlOX18gMUUtNjE0M0RMDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX0RFQzEyOF9NQVhfXyA5Ljk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5 OTk5OUU2MTQ0REwNCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3Jj L2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9f REVDMTI4X0VQU0lMT05fXyAxRS0zM0RMDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBfX0RFQzEyOF9TVUJOT1JNQUxfTUlOX18gMC4wMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDFFLTYxNDNETA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgX19SRUdJU1RFUl9QUkVGSVhfXyANCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmMiDQojZGVmaW5lIF9fVVNFUl9MQUJFTF9QUkVGSVhfXyANCiMgMSAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fR05VQ19TVERDX0lOTElORV9fIDENCiMgMSAiL2hv bWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4y L2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fR0NDX0hBVkVfU1lOQ19DT01QQVJF X0FORF9TV0FQXzEgMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUg X19HQ0NfSEFWRV9TWU5DX0NPTVBBUkVfQU5EX1NXQVBfMiAxDQojIDEgIi9ob21lL2phbWVzL3Jh aWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4u L3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0dDQ19IQVZFX1NZTkNfQ09NUEFSRV9BTkRfU1dBUF80 IDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0 LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fR0NDX0hBVkVf U1lOQ19DT01QQVJFX0FORF9TV0FQXzggMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFj cy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXgu YyINCiNkZWZpbmUgX19HQ0NfQVRPTUlDX0JPT0xfTE9DS19GUkVFIDINCiMgMSAiL2hvbWUvamFt ZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1z cmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fR0NDX0FUT01JQ19DSEFSX0xPQ0tfRlJFRSAy DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4z LmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0dDQ19BVE9NSUNf Q0hBUjE2X1RfTE9DS19GUkVFIDINCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVs ZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQoj ZGVmaW5lIF9fR0NDX0FUT01JQ19DSEFSMzJfVF9MT0NLX0ZSRUUgMg0KIyAxICIvaG9tZS9qYW1l cy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNy Yy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19HQ0NfQVRPTUlDX1dDSEFSX1RfTE9DS19GUkVF IDINCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0 LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fR0NDX0FUT01J Q19TSE9SVF9MT0NLX0ZSRUUgMg0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxl YXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNk ZWZpbmUgX19HQ0NfQVRPTUlDX0lOVF9MT0NLX0ZSRUUgMg0KIyAxICIvaG9tZS9qYW1lcy9yYWlk L29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9z cmMvcmVnZXguYyINCiNkZWZpbmUgX19HQ0NfQVRPTUlDX0xPTkdfTE9DS19GUkVFIDINCiMgMSAi L2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQu Ny4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fR0NDX0FUT01JQ19MTE9OR19M T0NLX0ZSRUUgMg0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMv ZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19H Q0NfQVRPTUlDX1RFU1RfQU5EX1NFVF9UUlVFVkFMIDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQojZGVmaW5lIF9fR0NDX0FUT01JQ19QT0lOVEVSX0xPQ0tfRlJFRSAyDQojIDEg Ii9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40 LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX1BSQUdNQV9SRURFRklORV9F WFROQU1FIDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2Vt YWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fU0la RU9GX0lOVDEyOF9fIDE2DQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2Vz L3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmlu ZSBfX1NJWkVPRl9XQ0hBUl9UX18gNA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgX19TSVpFT0ZfV0lOVF9UX18gNA0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9l bWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVn ZXguYyINCiNkZWZpbmUgX19TSVpFT0ZfUFRSRElGRl9UX18gOA0KIyAxICIvaG9tZS9qYW1lcy9y YWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8u Li9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19hbWQ2NCAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQv b3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3Ny Yy9yZWdleC5jIg0KI2RlZmluZSBfX2FtZDY0X18gMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29w dC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMv cmVnZXguYyINCiNkZWZpbmUgX194ODZfNjQgMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9l bWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVn ZXguYyINCiNkZWZpbmUgX194ODZfNjRfXyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2Vt YWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdl eC5jIg0KI2RlZmluZSBfX2s4IDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVs ZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQoj ZGVmaW5lIF9fazhfXyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2Vz L3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmlu ZSBfX01NWF9fIDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3Jj L2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9f U1NFX18gMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1h Y3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19TU0Uy X18gMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3Mt MjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19TU0VfTUFU SF9fIDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fU1NFMl9N QVRIX18gMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1h Y3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX19nbnVf bGludXhfXyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9l bWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX2xp bnV4IDENCiMgMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fbGludXhf XyAxDQojIDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0y NC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBsaW51eCAxDQoj IDEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdj Yy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX3VuaXggMQ0KIyAxICIv aG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43 LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgX191bml4X18gMQ0KIyAxICIvaG9t ZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIv bGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgdW5peCAxDQojIDEgIi9ob21lL2phbWVz L3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3Jj Ly4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBfX0VMRl9fIDENCiMgMSAiL2hvbWUvamFtZXMvcmFp ZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4v c3JjL3JlZ2V4LmMiDQojZGVmaW5lIF9fREVDSU1BTF9CSURfRk9STUFUX18gMQ0KIyAxICI8Y29t bWFuZC1saW5lPiINCiNkZWZpbmUgQ09ORklHX0JST0tFVFMgMQ0KI2RlZmluZSBJTkhJQklUX1NU UklOR19IRUFERVIgMQ0KIyAxICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiMgMzcgIi9o b21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40Ljcu Mi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVk ICItV3N0cmljdC1vdmVyZmxvdyINCg0KI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICIt V3VudXNlZC1idXQtc2V0LXZhcmlhYmxlIg0KI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVk ICItV3VudXNlZC1mdW5jdGlvbiINCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1 bnVzZWQtbWFjcm9zIg0KI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1y ZXN1bHQiDQojcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXZhcmlhYmxl Ig0KDQoNCg0KIyAxICIuLi9zcmMvY29uZmlnLmgiIDENCiMgMjkgIi4uL3NyYy9jb25maWcuaCIN CiNkZWZpbmUgRU1BQ1NfQ09ORklHX0ggDQoNCg0KDQoNCg0KDQoNCiNkZWZpbmUgQU1QRVJTQU5E X0ZVTExfTkFNRSAxDQojIDgxICIuLi9zcmMvY29uZmlnLmgiDQojZGVmaW5lIENMQVNIX0RFVEVD VElPTiAxDQoNCg0KI2RlZmluZSBDT1BZUklHSFQgIkNvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4iDQojIDEwNyAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmlu ZSBERUZBVUxUX1NPVU5EX0RFVklDRSAiL2Rldi9kc3AiDQojIDExNiAiLi4vc3JjL2NvbmZpZy5o Ig0KI2RlZmluZSBESVJFQ1RPUllfU0VQICcvJw0KIyAxMzAgIi4uL3NyYy9jb25maWcuaCINCiNk ZWZpbmUgRE9VR19MRUFfTUFMTE9DIDENCg0KDQojZGVmaW5lIEVNQUNTX0NPTkZJR1VSQVRJT04g Ing4Nl82NC11bmtub3duLWxpbnV4LWdudSINCg0KDQojZGVmaW5lIEVNQUNTX0NPTkZJR19PUFRJ T05TICIgJy0td2l0aG91dC1naWYnICctLXByZWZpeD0vaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFj cy9yZWxlYXNlcy9lbWFjcy0yNC4zJyINCiMgMTQ5ICIuLi9zcmMvY29uZmlnLmgiDQojZGVmaW5l IF9GT1JUSUZZX1NPVVJDRSAyDQojIDE3OSAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBHQ19T RVRKTVBfV09SS1MgMQ0KDQoNCiNkZWZpbmUgR0VUUEdSUF9WT0lEIDENCg0KDQoNCg0KDQoNCiNk ZWZpbmUgR0VUVElNRU9GREFZX1RJTUVaT05FIHN0cnVjdCB0aW1lem9uZQ0KDQoNCg0KDQoNCg0K I2RlZmluZSBHTlVMSUJfRlNDQU5GIDENCg0KDQoNCg0KDQoNCiNkZWZpbmUgR05VTElCX1NDQU5G IDENCg0KDQojZGVmaW5lIEdOVV9MSU5VWCANCg0KDQojZGVmaW5lIEdOVV9NQUxMT0MgMQ0KIyAy MTkgIi4uL3NyYy9jb25maWcuaCINCiNkZWZpbmUgSEFWRV9BTEFSTSAxDQoNCg0KDQojZGVmaW5l IEhBVkVfQUxMT0NBIDENCg0KDQoNCiNkZWZpbmUgSEFWRV9BTExPQ0FfSCAxDQoNCg0KI2RlZmlu ZSBIQVZFX0FMU0EgMQ0KDQoNCiNkZWZpbmUgSEFWRV9DOTlfU1RSVE9MRCAxDQoNCg0KI2RlZmlu ZSBIQVZFX0NGTUFLRVJBVyAxDQoNCg0KI2RlZmluZSBIQVZFX0NGU0VUU1BFRUQgMQ0KDQoNCiNk ZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDENCg0KDQojZGVmaW5lIEhBVkVfQ0xPQ0tfU0VUVElN RSAxDQoNCg0KI2RlZmluZSBIQVZFX0NMT1NFRElSIDENCiMgMjU3ICIuLi9zcmMvY29uZmlnLmgi DQojZGVmaW5lIEhBVkVfQ09QWVNJR04gMQ0KDQoNCiNkZWZpbmUgSEFWRV9EQlVTIDENCiMgMjc4 ICIuLi9zcmMvY29uZmlnLmgiDQojZGVmaW5lIEhBVkVfREJVU19XQVRDSF9HRVRfVU5JWF9GRCAx DQoNCg0KDQojZGVmaW5lIEhBVkVfREVDTF9HRVRFTlYgMQ0KDQoNCg0KI2RlZmluZSBIQVZFX0RF Q0xfTE9DQUxUSU1FX1IgMQ0KDQoNCg0KI2RlZmluZSBIQVZFX0RFQ0xfU1RSTU9ERSAwDQoNCg0K DQojZGVmaW5lIEhBVkVfREVDTF9TVFJUT0lNQVggMQ0KIyAzMDYgIi4uL3NyYy9jb25maWcuaCIN CiNkZWZpbmUgSEFWRV9ERUNMX1NUUlRPVU1BWCAxDQoNCg0KDQojZGVmaW5lIEhBVkVfREVDTF9T WVNfU0lHTElTVCAxDQojIDMyNCAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBIQVZFX0RFVl9Q VE1YIDENCg0KDQojZGVmaW5lIEhBVkVfRElGRlRJTUUgMQ0KDQoNCiNkZWZpbmUgSEFWRV9ESVJF TlRfSCAxDQoNCg0KI2RlZmluZSBIQVZFX0RVUDIgMQ0KDQoNCiNkZWZpbmUgSEFWRV9FTkRHUkVO VCAxDQoNCg0KI2RlZmluZSBIQVZFX0VORFBXRU5UIDENCg0KDQojZGVmaW5lIEhBVkVfRU5WSVJP Tl9ERUNMIDENCg0KDQojZGVmaW5lIEhBVkVfRVVJREFDQ0VTUyAxDQoNCg0KI2RlZmluZSBIQVZF X0VYRUNJTkZPX0ggMQ0KDQoNCiNkZWZpbmUgSEFWRV9GQ05UTF9IIDENCg0KDQojZGVmaW5lIEhB VkVfRk9SSyAxDQoNCg0KI2RlZmluZSBIQVZFX0ZQQVRIQ09ORiAxDQoNCg0KI2RlZmluZSBIQVZF X0ZSRUVJRkFERFJTIDENCg0KDQojZGVmaW5lIEhBVkVfRlJFRVRZUEUgMQ0KDQoNCiNkZWZpbmUg SEFWRV9GU0VFS08gMQ0KDQoNCiNkZWZpbmUgSEFWRV9GU1lOQyAxDQoNCg0KDQoNCg0KI2RlZmlu ZSBIQVZFX0ZVVElNRVMgMQ0KDQoNCiNkZWZpbmUgSEFWRV9GVVRJTUVTQVQgMQ0KDQoNCiNkZWZp bmUgSEFWRV9HQUlfU1RSRVJST1IgMQ0KDQoNCiNkZWZpbmUgSEFWRV9HQ09ORiAxDQoNCg0KI2Rl ZmluZSBIQVZFX0dFVEFERFJJTkZPIDENCg0KDQojZGVmaW5lIEhBVkVfR0VUQ1dEIDENCg0KDQoj ZGVmaW5lIEhBVkVfR0VUREVMSU0gMQ0KDQoNCiNkZWZpbmUgSEFWRV9HRVRHUkVOVCAxDQoNCg0K I2RlZmluZSBIQVZFX0dFVEhPU1ROQU1FIDENCg0KDQojZGVmaW5lIEhBVkVfR0VUSUZBRERSUyAx DQoNCg0KI2RlZmluZSBIQVZFX0dFVExJTkUgMQ0KDQoNCiNkZWZpbmUgSEFWRV9HRVRPUFRfSCAx DQoNCg0KI2RlZmluZSBIQVZFX0dFVE9QVF9MT05HX09OTFkgMQ0KDQoNCiNkZWZpbmUgSEFWRV9H RVRQQUdFU0laRSAxDQoNCg0KI2RlZmluZSBIQVZFX0dFVFBFRVJOQU1FIDENCg0KDQojZGVmaW5l IEhBVkVfR0VUUFQgMQ0KDQoNCiNkZWZpbmUgSEFWRV9HRVRQV0VOVCAxDQoNCg0KI2RlZmluZSBI QVZFX0dFVFJMSU1JVCAxDQoNCg0KI2RlZmluZSBIQVZFX0dFVFJVU0FHRSAxDQoNCg0KI2RlZmlu ZSBIQVZFX0dFVFNPQ0tOQU1FIDENCg0KDQojZGVmaW5lIEhBVkVfR0VUVElNRU9GREFZIDENCg0K DQojZGVmaW5lIEhBVkVfR0VUV0QgMQ0KDQoNCiNkZWZpbmUgSEFWRV9HRVRfQ1VSUkVOVF9ESVJf TkFNRSAxDQojIDQ1NyAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBIQVZFX0dQTSAxDQoNCg0K I2RlZmluZSBIQVZFX0dSQU5UUFQgMQ0KIyA0NzUgIi4uL3NyYy9jb25maWcuaCINCiNkZWZpbmUg SEFWRV9HVEtfRklMRV9TRUxFQ1RJT05fTkVXIDENCg0KDQojZGVmaW5lIEhBVkVfR1RLX01BSU4g MQ0KIyA0OTkgIi4uL3NyYy9jb25maWcuaCINCiNkZWZpbmUgSEFWRV9HX1RZUEVfSU5JVCAxDQoN Cg0KI2RlZmluZSBIQVZFX0hfRVJSTk8gMQ0KDQoNCiNkZWZpbmUgSEFWRV9JRkFERFJTX0ggMQ0K DQoNCg0KDQoNCiNkZWZpbmUgSEFWRV9JTkVUX1NPQ0tFVFMgMQ0KDQoNCiNkZWZpbmUgSEFWRV9J TlRUWVBFU19IIDENCg0KDQojZGVmaW5lIEhBVkVfSlBFRyAxDQojIDU0NCAiLi4vc3JjL2NvbmZp Zy5oIg0KI2RlZmluZSBIQVZFX0xBTkdJTkZPX0NPREVTRVQgMQ0KIyA1ODYgIi4uL3NyYy9jb25m aWcuaCINCiNkZWZpbmUgSEFWRV9MSUJNIDENCiMgNjA3ICIuLi9zcmMvY29uZmlnLmgiDQojZGVm aW5lIEhBVkVfTElCU0VMSU5VWCAxDQoNCg0KDQoNCg0KI2RlZmluZSBIQVZFX0xJQlhNTDIgMQ0K DQoNCg0KDQoNCiNkZWZpbmUgSEFWRV9MSU5VWF9WRVJTSU9OX0ggMQ0KDQoNCiNkZWZpbmUgSEFW RV9MT0NBTFRJTUVfUiAxDQoNCg0KI2RlZmluZSBIQVZFX0xPTkdfRklMRV9OQU1FUyAxDQoNCg0K I2RlZmluZSBIQVZFX0xPTkdfTE9OR19JTlQgMQ0KDQoNCiNkZWZpbmUgSEFWRV9MUkFORDQ4IDEN Cg0KDQojZGVmaW5lIEhBVkVfTFNUQVQgMQ0KIyA2NjEgIi4uL3NyYy9jb25maWcuaCINCiNkZWZp bmUgSEFWRV9NQlNUQVRFX1QgMQ0KDQoNCiNkZWZpbmUgSEFWRV9NRU1PUllfSCAxDQoNCg0KDQoN CiNkZWZpbmUgSEFWRV9NRU5VUyAxDQoNCg0KI2RlZmluZSBIQVZFX01LU1RFTVAgMQ0KDQoNCiNk ZWZpbmUgSEFWRV9NTUFQIDENCg0KDQojZGVmaW5lIEhBVkVfTU9VU0UgMQ0KIyA2ODcgIi4uL3Ny Yy9jb25maWcuaCINCiNkZWZpbmUgSEFWRV9ORVRfSUZfSCAxDQojIDcwMyAiLi4vc3JjL2NvbmZp Zy5oIg0KI2RlZmluZSBIQVZFX1BFUlNPTkFMSVRZX0xJTlVYMzIgMQ0KDQoNCiNkZWZpbmUgSEFW RV9QTkcgMQ0KDQoNCiNkZWZpbmUgSEFWRV9QTkdfSCAxDQoNCg0KI2RlZmluZSBIQVZFX1BPU0lY X01FTUFMSUdOIDENCg0KDQojZGVmaW5lIEhBVkVfUE9TSVhfT1BFTlBUIDENCg0KDQojZGVmaW5l IEhBVkVfUFJPQ0ZTIDENCg0KDQojZGVmaW5lIEhBVkVfUFNFTEVDVCAxDQoNCg0KDQoNCg0KI2Rl ZmluZSBIQVZFX1BUSFJFQUQgMQ0KDQoNCiNkZWZpbmUgSEFWRV9QVEhSRUFEX0ggMQ0KDQoNCiNk ZWZpbmUgSEFWRV9QVEhSRUFEX1NJR01BU0sgMQ0KDQoNCiNkZWZpbmUgSEFWRV9QVFlTIDENCg0K DQojZGVmaW5lIEhBVkVfUFRZX0ggMQ0KDQoNCiNkZWZpbmUgSEFWRV9QV0RfSCAxDQoNCg0KI2Rl ZmluZSBIQVZFX1JBTkRPTSAxDQoNCg0KI2RlZmluZSBIQVZFX1JFQURMSU5LIDENCg0KDQojZGVm aW5lIEhBVkVfUkVBRExJTktBVCAxDQoNCg0KI2RlZmluZSBIQVZFX1JFQ1ZGUk9NIDENCg0KDQoj ZGVmaW5lIEhBVkVfUkVTX0lOSVQgMQ0KDQoNCiNkZWZpbmUgSEFWRV9SSU5UIDENCg0KDQojZGVm aW5lIEhBVkVfUlNWRyAxDQoNCg0KI2RlZmluZSBIQVZFX1NFTEVDVCAxDQoNCg0KI2RlZmluZSBI QVZFX1NFTkRUTyAxDQoNCg0KI2RlZmluZSBIQVZFX1NFVElUSU1FUiAxDQoNCg0KI2RlZmluZSBI QVZFX1NFVExPQ0FMRSAxDQoNCg0KI2RlZmluZSBIQVZFX1NFVFBHSUQgMQ0KDQoNCiNkZWZpbmUg SEFWRV9TRVRSTElNSVQgMQ0KDQoNCiNkZWZpbmUgSEFWRV9TRVRTSUQgMQ0KDQoNCiNkZWZpbmUg SEFWRV9TSFVURE9XTiAxDQojIDgwMyAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBIQVZFX1NJ R1NFVF9UIDENCg0KDQojZGVmaW5lIEhBVkVfU05QUklOVEYgMQ0KDQoNCiNkZWZpbmUgSEFWRV9T T0NLRVRTIDENCg0KDQojZGVmaW5lIEhBVkVfU09VTkQgMQ0KDQoNCg0KDQoNCiNkZWZpbmUgSEFW RV9TUEVFRF9UIDENCg0KDQojZGVmaW5lIEhBVkVfU1RESU5UX0ggMQ0KDQoNCiNkZWZpbmUgSEFW RV9TVERJT19FWFRfSCAxDQoNCg0KI2RlZmluZSBIQVZFX1NURExJQl9IIDENCg0KDQojZGVmaW5l IEhBVkVfU1RSSU5HU19IIDENCg0KDQojZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQ0KDQoNCiNkZWZp bmUgSEFWRV9TVFJTSUdOQUwgMQ0KDQoNCiNkZWZpbmUgSEFWRV9TVFJUT0lNQVggMQ0KIyA4NDgg Ii4uL3NyYy9jb25maWcuaCINCiNkZWZpbmUgSEFWRV9TVFJUT1VNQVggMQ0KDQoNCiNkZWZpbmUg SEFWRV9TVFJVQ1RfSUZSRVFfSUZSX0FERFIgMQ0KDQoNCg0KDQoNCiNkZWZpbmUgSEFWRV9TVFJV Q1RfSUZSRVFfSUZSX0JST0FEQUREUiAxDQoNCg0KI2RlZmluZSBIQVZFX1NUUlVDVF9JRlJFUV9J RlJfRkxBR1MgMQ0KDQoNCiNkZWZpbmUgSEFWRV9TVFJVQ1RfSUZSRVFfSUZSX0hXQUREUiAxDQoN Cg0KI2RlZmluZSBIQVZFX1NUUlVDVF9JRlJFUV9JRlJfTkVUTUFTSyAxDQojIDg4MSAiLi4vc3Jj L2NvbmZpZy5oIg0KI2RlZmluZSBIQVZFX1NUUlVDVF9TVEFUX1NUX0FUSU1fVFZfTlNFQyAxDQoj IDg5MyAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBIQVZFX1NUUlVDVF9UTV9UTV9aT05FIDEN Cg0KDQoNCiNkZWZpbmUgSEFWRV9TVFJVQ1RfVVRJTUJVRiAxDQoNCg0KDQoNCg0KI2RlZmluZSBI QVZFX1NZTUxJTksgMQ0KDQoNCiNkZWZpbmUgSEFWRV9TWU5DIDENCiMgOTE4ICIuLi9zcmMvY29u ZmlnLmgiDQojZGVmaW5lIEhBVkVfU1lTX1BBUkFNX0ggMQ0KDQoNCiNkZWZpbmUgSEFWRV9TWVNf UkVTT1VSQ0VfSCAxDQoNCg0KI2RlZmluZSBIQVZFX1NZU19TRUxFQ1RfSCAxDQoNCg0KI2RlZmlu ZSBIQVZFX1NZU19TT0NLRVRfSCAxDQoNCg0KI2RlZmluZSBIQVZFX1NZU19TT1VORENBUkRfSCAx DQoNCg0KI2RlZmluZSBIQVZFX1NZU19TVEFUX0ggMQ0KIyA5NDIgIi4uL3NyYy9jb25maWcuaCIN CiNkZWZpbmUgSEFWRV9TWVNfVElNRV9IIDENCg0KDQojZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0gg MQ0KDQoNCiNkZWZpbmUgSEFWRV9TWVNfVU5fSCAxDQoNCg0KI2RlZmluZSBIQVZFX1NZU19VVFNO QU1FX0ggMQ0KDQoNCiNkZWZpbmUgSEFWRV9TWVNfVkxJTUlUX0ggMQ0KDQoNCiNkZWZpbmUgSEFW RV9TWVNfV0FJVF9IIDENCg0KDQojZGVmaW5lIEhBVkVfVEVSTV9IIDENCg0KDQojZGVmaW5lIEhB VkVfVElGRiAxDQoNCg0KI2RlZmluZSBIQVZFX1RJTUVSX1NFVFRJTUUgMQ0KDQoNCiNkZWZpbmUg SEFWRV9UTV9HTVRPRkYgMQ0KDQoNCg0KI2RlZmluZSBIQVZFX1RNX1pPTkUgMQ0KIyA5ODMgIi4u L3NyYy9jb25maWcuaCINCiNkZWZpbmUgSEFWRV9UWlNFVCAxDQoNCg0KI2RlZmluZSBIQVZFX1VO SVNURF9IIDENCg0KDQojZGVmaW5lIEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVCAxDQojIDk5 OCAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBIQVZFX1VUSU1FUyAxDQoNCg0KI2RlZmluZSBI QVZFX1VUSU1FX0ggMQ0KDQoNCiNkZWZpbmUgSEFWRV9VVE1QX0ggMQ0KDQoNCiNkZWZpbmUgSEFW RV9WRk9SSyAxDQoNCg0KDQoNCg0KI2RlZmluZSBIQVZFX1dDSEFSX0ggMQ0KDQoNCiNkZWZpbmUg SEFWRV9XQ0hBUl9UIDENCg0KDQojZGVmaW5lIEhBVkVfV0lORE9XX1NZU1RFTSAxDQoNCg0KDQoN Cg0KI2RlZmluZSBIQVZFX1dPUktJTkdfRk9SSyAxDQoNCg0KI2RlZmluZSBIQVZFX1dPUktJTkdf VVRJTUVTIDENCg0KDQojZGVmaW5lIEhBVkVfV09SS0lOR19WRk9SSyAxDQoNCg0KDQoNCg0KDQoj ZGVmaW5lIEhBVkVfWDExIDENCg0KDQojZGVmaW5lIEhBVkVfWDExUjYgMQ0KDQoNCiNkZWZpbmUg SEFWRV9YMTFSNl9YSU0gMQ0KIyAxMDUzICIuLi9zcmMvY29uZmlnLmgiDQojZGVmaW5lIEhBVkVf WEZUIDENCg0KDQojZGVmaW5lIEhBVkVfWElNIDENCg0KDQojZGVmaW5lIEhBVkVfWEtCR0VUS0VZ Qk9BUkQgMQ0KDQoNCiNkZWZpbmUgSEFWRV9YUE0gMQ0KDQoNCiNkZWZpbmUgSEFWRV9YUk1TRVRE QVRBQkFTRSAxDQoNCg0KI2RlZmluZSBIQVZFX1hTQ1JFRU5OVU1CRVJPRlNDUkVFTiAxDQoNCg0K I2RlZmluZSBIQVZFX1hTQ1JFRU5SRVNPVVJDRVNUUklORyAxDQoNCg0KI2RlZmluZSBIQVZFX1hf STE4TiAxDQoNCg0KI2RlZmluZSBIQVZFX1hfU00gMQ0KDQoNCiNkZWZpbmUgSEFWRV9YX1dJTkRP V1MgMQ0KDQoNCiNkZWZpbmUgSEFWRV9fQk9PTCAxDQoNCg0KDQoNCg0KI2RlZmluZSBIQVZFX19T RVRKTVAgMQ0KDQoNCiNkZWZpbmUgSEFWRV9fX0JVSUxUSU5fVU5XSU5EX0lOSVQgMQ0KDQoNCiNk ZWZpbmUgSEFWRV9fX0VYRUNVVEFCTEVfU1RBUlQgMQ0KDQoNCiNkZWZpbmUgSEFWRV9fX0ZQRU5E SU5HIDENCiMgMTExMCAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBJTlRFUlJVUFRfSU5QVVQg MQ0KDQoNCg0KDQoNCiNkZWZpbmUgSVNfQU5ZX1NFUChfY18pIChJU19ESVJFQ1RPUllfU0VQIChf Y18pKQ0KDQoNCiNkZWZpbmUgSVNfREVWSUNFX1NFUChfY18pIDANCg0KDQojZGVmaW5lIElTX0RJ UkVDVE9SWV9TRVAoX2NfKSAoKF9jXykgPT0gRElSRUNUT1JZX1NFUCkNCiMgMTEzNSAiLi4vc3Jj L2NvbmZpZy5oIg0KI2RlZmluZSBMU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOSyAxDQojIDEx NDQgIi4uL3NyYy9jb25maWcuaCINCiNkZWZpbmUgTUFJTF9VU0VfRkxPQ0sgMQ0KIyAxMTUzICIu Li9zcmMvY29uZmlnLmgiDQojZGVmaW5lIE1BSUxfVVNFX1BPUCAxDQoNCg0KDQoNCg0KDQojZGVm aW5lIE5BUlJPV1BST1RPIDENCiMgMTE4MSAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBOVUxM X0RFVklDRSAiL2Rldi9udWxsIg0KIyAxMTkwICIuLi9zcmMvY29uZmlnLmgiDQojZGVmaW5lIFBB Q0tBR0UgImVtYWNzIg0KDQoNCiNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgIiINCg0KDQojZGVm aW5lIFBBQ0tBR0VfTkFNRSAiZW1hY3MiDQoNCg0KI2RlZmluZSBQQUNLQUdFX1NUUklORyAiZW1h Y3MgMjQuMyINCg0KDQojZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAiZW1hY3MiDQoNCg0KI2RlZmlu ZSBQQUNLQUdFX1VSTCAiIg0KDQoNCiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIyNC4zIg0KDQoN CiNkZWZpbmUgUEVORElOR19PVVRQVVRfQ09VTlQoRklMRSkgKChGSUxFKS0+X0lPX3dyaXRlX3B0 ciAtIChGSUxFKS0+X0lPX3dyaXRlX2Jhc2UpDQoNCg0KDQoNCiNkZWZpbmUgUE5HX0RFUFNUUlVD VCANCiMgMTIzNiAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBQVFlfSVRFUkFUSU9OIGludCBp OyBmb3IgKGkgPSAwOyBpIDwgMTsgaSsrKQ0KDQoNCiNkZWZpbmUgUFRZX05BTUVfU1BSSU5URiAN Cg0KDQojZGVmaW5lIFBUWV9PUEVOIGZkID0gcG9zaXhfb3BlbnB0IChPX1JEV1IgfCBPX05PQ1RU WSkNCg0KDQojZGVmaW5lIFBUWV9UVFlfTkFNRV9TUFJJTlRGIHsgY2hhciAqcHR5bmFtZSA9IDA7 IHNpZ3NldF90IGJsb2NrZWQ7IHNpZ2VtcHR5c2V0ICgmYmxvY2tlZCk7IHNpZ2FkZHNldCAoJmJs b2NrZWQsIFNJR0NITEQpOyBwdGhyZWFkX3NpZ21hc2sgKFNJR19CTE9DSywgJmJsb2NrZWQsIDAp OyBpZiAoZ3JhbnRwdCAoZmQpICE9IC0xICYmIHVubG9ja3B0IChmZCkgIT0gLTEpIHB0eW5hbWUg PSBwdHNuYW1lKGZkKTsgcHRocmVhZF9zaWdtYXNrIChTSUdfVU5CTE9DSywgJmJsb2NrZWQsIDAp OyBpZiAoIXB0eW5hbWUpIHsgY2xvc2UgKGZkKTsgcmV0dXJuIC0xOyB9IHNucHJpbnRmIChwdHlf bmFtZSwgc2l6ZW9mIHB0eV9uYW1lLCAiJXMiLCBwdHluYW1lKTsgfQ0KIyAxMjY2ICIuLi9zcmMv Y29uZmlnLmgiDQojZGVmaW5lIFNFUENIQVIgJzonDQojIDEyNzUgIi4uL3NyYy9jb25maWcuaCIN CiNkZWZpbmUgU0lHTkFMU19WSUFfQ0hBUkFDVEVSUyAxDQojIDEzMDAgIi4uL3NyYy9jb25maWcu aCINCiNkZWZpbmUgU1REQ19IRUFERVJTIDENCiMgMTMwOSAiLi4vc3JjL2NvbmZpZy5oIg0KI2Rl ZmluZSBTWVNURU1fVFlQRSAiZ251L2xpbnV4Ig0KIyAxMzE4ICIuLi9zcmMvY29uZmlnLmgiDQoj ZGVmaW5lIFRFUk1JTkZPIDENCg0KDQojZGVmaW5lIFRFUk1fSEVBREVSICJndGt1dGlsLmgiDQoN Cg0KI2RlZmluZSBUSU1FX1dJVEhfU1lTX1RJTUUgMQ0KIyAxMzM0ICIuLi9zcmMvY29uZmlnLmgi DQojZGVmaW5lIFRZUEVPRl9TVFJVQ1RfU1RBVF9TVF9BVElNX0lTX1NUUlVDVF9USU1FU1BFQyAx DQojIDEzNDcgIi4uL3NyYy9jb25maWcuaCINCiNkZWZpbmUgVU5JWDk4X1BUWVMgMQ0KDQoNCiNk ZWZpbmUgVVNBQkxFX0ZJT05SRUFEIDENCg0KDQojZGVmaW5lIFVTQUJMRV9TSUdJTyAxDQoNCg0K I2RlZmluZSBVU0VSX0ZVTExfTkFNRSBwdy0+cHdfZ2Vjb3MNCg0KDQojZGVmaW5lIFVTRV9HVEsg MQ0KIyAxMzcxICIuLi9zcmMvY29uZmlnLmgiDQojZGVmaW5lIFVTRV9UT09MS0lUX1NDUk9MTF9C QVJTIDENCg0KDQojZGVmaW5lIFVTRV9YSU0gMQ0KDQoNCg0KDQoNCiNkZWZpbmUgVVNHIA0KIyAx MzkzICIuLi9zcmMvY29uZmlnLmgiDQojZGVmaW5lIFZFUlNJT04gIjI0LjMiDQojIDE0MjYgIi4u L3NyYy9jb25maWcuaCINCiNkZWZpbmUgWFJlZ2lzdGVySU1JbnN0YW50aWF0ZUNhbGxiYWNrX2Fy ZzYgWFBvaW50ZXINCg0KDQoNCg0KDQoNCiNkZWZpbmUgX0RBUldJTl9VU0VfNjRfQklUX0lOT0RF IDENCiMgMTQ2MCAiLi4vc3JjL2NvbmZpZy5oIg0KI2RlZmluZSBfTm9yZXR1cm4gX19hdHRyaWJ1 dGVfXyAoKF9fbm9yZXR1cm5fXykpDQojIDE0ODQgIi4uL3NyYy9jb25maWcuaCINCiNkZWZpbmUg X0FMTF9TT1VSQ0UgMQ0KDQoNCg0KI2RlZmluZSBfREFSV0lOX0NfU09VUkNFIDENCg0KDQoNCiNk ZWZpbmUgX0dOVV9TT1VSQ0UgMQ0KDQoNCg0KI2RlZmluZSBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJ Q1MgMQ0KDQoNCg0KI2RlZmluZSBfVEFOREVNX1NPVVJDRSAxDQoNCg0KDQojZGVmaW5lIF9fRVhU RU5TSU9OU19fIDENCg0KDQoNCg0KDQojZGVmaW5lIF9fR0VUT1BUX1BSRUZJWCBycGxfDQoNCg0K DQojZGVmaW5lIF9fcmVzdHJpY3RfYXJyIF9fcmVzdHJpY3QNCiMgMTUzMiAiLi4vc3JjL2NvbmZp Zy5oIg0KI2RlZmluZSBfR0xfSU5MSU5FIGlubGluZQ0KI2RlZmluZSBfR0xfRVhURVJOX0lOTElO RSBleHRlcm4gaW5saW5lDQojIDE1NDkgIi4uL3NyYy9jb25maWcuaCINCiNkZWZpbmUgX0dMX0lO TElORV9IRUFERVJfQ09OU1RfUFJBR01BIA0KDQoNCg0KDQojZGVmaW5lIF9HTF9JTkxJTkVfSEVB REVSX0JFR0lOIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwdXNoIikgX1ByYWdtYSAoIkdDQyBk aWFnbm9zdGljIGlnbm9yZWQgXCItV21pc3NpbmctcHJvdG90eXBlc1wiIikgX1ByYWdtYSAoIkdD QyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV21pc3NpbmctZGVjbGFyYXRpb25zXCIiKSBfR0xfSU5M SU5FX0hFQURFUl9DT05TVF9QUkFHTUENCg0KDQoNCg0KI2RlZmluZSBfR0xfSU5MSU5FX0hFQURF Ul9FTkQgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIHBvcCIpDQoNCg0KDQoNCg0KDQoNCiNkZWZp bmUgZ2xfdmFfY29weShhLGIpICgoYSkgPSAoYikpDQojIDE2MDEgIi4uL3NyYy9jb25maWcuaCIN CiNkZWZpbmUgbXlfc3RyZnRpbWUgbnN0cmZ0aW1lDQojIDE2MTIgIi4uL3NyYy9jb25maWcuaCIN CiNkZWZpbmUgcmVzdHJpY3QgX19yZXN0cmljdA0KIyAxNjMwICIuLi9zcmMvY29uZmlnLmgiDQoj ZGVmaW5lIHN1YnByb2Nlc3NlcyAxDQojIDE2MzkgIi4uL3NyYy9jb25maWcuaCINCiNkZWZpbmUg X0dMX1VOVVNFRCBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpDQoNCg0KDQoNCg0KI2RlZmlu ZSBfVU5VU0VEX1BBUkFNRVRFUl8gX0dMX1VOVVNFRA0KDQoNCg0KI2RlZmluZSBfR0xfQVRUUklC VVRFX1BVUkUgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkNCg0KDQoNCg0KDQoNCiNkZWZpbmUg X0dMX0FUVFJJQlVURV9DT05TVCBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkNCiMgMTY2OCAi Li4vc3JjL2NvbmZpZy5oIg0KIyAxICIuLi9zcmMvY29uZl9wb3N0LmgiIDENCiMgMzcgIi4uL3Ny Yy9jb25mX3Bvc3QuaCINCiMgMSAiLi4vbGliL2FsbG9jYS5oIiAxDQojIDI1ICIuLi9saWIvYWxs b2NhLmgiDQojZGVmaW5lIF9HTF9BTExPQ0FfSCANCiMgNDAgIi4uL2xpYi9hbGxvY2EuaCINCiNk ZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2ENCiMgMzggIi4uL3NyYy9jb25mX3Bvc3QuaCIg Mg0KIyAxODkgIi4uL3NyYy9jb25mX3Bvc3QuaCINCiMgMSAiL3Vzci9pbmNsdWRlL3N0cmluZy5o IiAxIDMgNA0KIyAyNCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQNCiNkZWZpbmUgX1NUUklO R19IIDENCg0KIyAxICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9n Y2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80 LjcuMi9pbmNsdWRlLWZpeGVkL2ZlYXR1cmVzLmgiIDEgMyA0DQojIDMwICIvbmZzL2UtbmZzLTAx L3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIv Z2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2ZlYXR1cmVz LmgiIDMgNA0KI2RlZmluZSBfRkVBVFVSRVNfSCAxDQojIDEwMiAiL25mcy9lLW5mcy0wMS91MTAv c2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94 ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9mZWF0dXJlcy5oIiAz IDQNCiN1bmRlZiBfX1VTRV9JU09DOTkNCiN1bmRlZiBfX1VTRV9QT1NJWA0KI3VuZGVmIF9fVVNF X1BPU0lYMg0KI3VuZGVmIF9fVVNFX1BPU0lYMTk5MzA5DQojdW5kZWYgX19VU0VfUE9TSVgxOTk1 MDYNCiN1bmRlZiBfX1VTRV9YT1BFTg0KI3VuZGVmIF9fVVNFX1hPUEVOX0VYVEVOREVEDQojdW5k ZWYgX19VU0VfVU5JWDk4DQojdW5kZWYgX19VU0VfWE9QRU4ySw0KI3VuZGVmIF9fVVNFX0xBUkdF RklMRQ0KI3VuZGVmIF9fVVNFX0xBUkdFRklMRTY0DQojdW5kZWYgX19VU0VfRklMRV9PRkZTRVQ2 NA0KI3VuZGVmIF9fVVNFX0JTRA0KI3VuZGVmIF9fVVNFX1NWSUQNCiN1bmRlZiBfX1VTRV9NSVND DQojdW5kZWYgX19VU0VfQVRGSUxFDQojdW5kZWYgX19VU0VfR05VDQojdW5kZWYgX19VU0VfUkVF TlRSQU5UDQojdW5kZWYgX19VU0VfRk9SVElGWV9MRVZFTA0KI3VuZGVmIF9fRkFWT1JfQlNEDQoj dW5kZWYgX19LRVJORUxfU1RSSUNUX05BTUVTDQoNCg0KDQoNCiNkZWZpbmUgX19LRVJORUxfU1RS SUNUX05BTUVTIA0KDQoNCg0KI2RlZmluZSBfX1VTRV9BTlNJIDENCiMgMTQxICIvbmZzL2UtbmZz LTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9s aWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2ZlYXR1 cmVzLmgiIDMgNA0KI2RlZmluZSBfX0dOVUNfUFJFUkVRKG1haixtaW4pICgoX19HTlVDX18gPDwg MTYpICsgX19HTlVDX01JTk9SX18gPj0gKChtYWopIDw8IDE2KSArIChtaW4pKQ0KIyAxNTggIi9u ZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQv YmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUtZml4 ZWQvZmVhdHVyZXMuaCIgMyA0DQojdW5kZWYgX0lTT0M5OV9TT1VSQ0UNCiNkZWZpbmUgX0lTT0M5 OV9TT1VSQ0UgMQ0KI3VuZGVmIF9QT1NJWF9TT1VSQ0UNCiNkZWZpbmUgX1BPU0lYX1NPVVJDRSAx DQojdW5kZWYgX1BPU0lYX0NfU09VUkNFDQojZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSAyMDAxMTJM DQojdW5kZWYgX1hPUEVOX1NPVVJDRQ0KI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMA0KI3VuZGVm IF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQNCiNkZWZpbmUgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCAx DQojdW5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQ0KI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNF IDENCiN1bmRlZiBfQlNEX1NPVVJDRQ0KI2RlZmluZSBfQlNEX1NPVVJDRSAxDQojdW5kZWYgX1NW SURfU09VUkNFDQojZGVmaW5lIF9TVklEX1NPVVJDRSAxDQojdW5kZWYgX0FURklMRV9TT1VSQ0UN CiNkZWZpbmUgX0FURklMRV9TT1VSQ0UgMQ0KIyAxOTQgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVu dGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0 LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUtZml4ZWQvZmVhdHVyZXMuaCIgMyA0DQoj ZGVmaW5lIF9fVVNFX0lTT0M5OSAxDQojIDIxMiAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZp Y19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5r bm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9mZWF0dXJlcy5oIiAzIDQNCiNkZWZp bmUgX19VU0VfUE9TSVggMQ0KDQoNCg0KI2RlZmluZSBfX1VTRV9QT1NJWDIgMQ0KDQoNCg0KI2Rl ZmluZSBfX1VTRV9QT1NJWDE5OTMwOSAxDQoNCg0KDQojZGVmaW5lIF9fVVNFX1BPU0lYMTk5NTA2 IDENCg0KDQoNCiNkZWZpbmUgX19VU0VfWE9QRU4ySyAxDQoNCg0KDQojZGVmaW5lIF9fVVNFX1hP UEVOIDENCg0KI2RlZmluZSBfX1VTRV9YT1BFTl9FWFRFTkRFRCAxDQojZGVmaW5lIF9fVVNFX1VO SVg5OCAxDQojdW5kZWYgX0xBUkdFRklMRV9TT1VSQ0UNCiNkZWZpbmUgX0xBUkdFRklMRV9TT1VS Q0UgMQ0KDQojZGVmaW5lIF9fVVNFX1hPUEVOMksgMQ0KI3VuZGVmIF9fVVNFX0lTT0M5OQ0KI2Rl ZmluZSBfX1VTRV9JU09DOTkgMQ0KIyAyNTEgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNf bGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25v d24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUtZml4ZWQvZmVhdHVyZXMuaCIgMyA0DQojZGVmaW5l IF9fVVNFX0xBUkdFRklMRSAxDQoNCg0KDQojZGVmaW5lIF9fVVNFX0xBUkdFRklMRTY0IDENCg0K DQoNCg0KDQoNCg0KI2RlZmluZSBfX1VTRV9NSVNDIDENCg0KDQoNCiNkZWZpbmUgX19VU0VfQlNE IDENCg0KDQoNCiNkZWZpbmUgX19VU0VfU1ZJRCAxDQoNCg0KDQojZGVmaW5lIF9fVVNFX0FURklM RSAxDQoNCg0KDQojZGVmaW5lIF9fVVNFX0dOVSAxDQojIDI5NSAiL25mcy9lLW5mcy0wMS91MTAv c2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94 ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9mZWF0dXJlcy5oIiAz IDQNCiNkZWZpbmUgX19VU0VfRk9SVElGWV9MRVZFTCAyDQojIDMwNCAiL25mcy9lLW5mcy0wMS91 MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2dj Yy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9mZWF0dXJlcy5o IiAzIDQNCiNkZWZpbmUgX19TVERDX0lFQ181NTlfXyAxDQojZGVmaW5lIF9fU1REQ19JRUNfNTU5 X0NPTVBMRVhfXyAxDQoNCg0KI2RlZmluZSBfX1NURENfSVNPXzEwNjQ2X18gMjAwMDA5TA0KDQoN Cg0KDQoNCg0KDQojdW5kZWYgX19HTlVfTElCUkFSWV9fDQojZGVmaW5lIF9fR05VX0xJQlJBUllf XyA2DQoNCg0KDQojZGVmaW5lIF9fR0xJQkNfXyAyDQojZGVmaW5lIF9fR0xJQkNfTUlOT1JfXyA1 DQoNCiNkZWZpbmUgX19HTElCQ19QUkVSRVEobWFqLG1pbikgKChfX0dMSUJDX18gPDwgMTYpICsg X19HTElCQ19NSU5PUl9fID49ICgobWFqKSA8PCAxNikgKyAobWluKSkNCg0KDQoNCg0KDQoNCg0K I2RlZmluZSBfX0dMSUJDX0hBVkVfTE9OR19MT05HIDENCg0KDQoNCg0KDQojIDEgIi91c3IvaW5j bHVkZS9zeXMvY2RlZnMuaCIgMSAzIDQNCiMgMjEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIg MyA0DQojZGVmaW5lIF9TWVNfQ0RFRlNfSCAxDQojIDM2ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZz LmgiIDMgNA0KI3VuZGVmIF9fUA0KI3VuZGVmIF9fUE1UDQojIDQ3ICIvdXNyL2luY2x1ZGUvc3lz L2NkZWZzLmgiIDMgNA0KI2RlZmluZSBfX1RIUk9XIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpDQojZGVmaW5lIF9fTlRIKGZjdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgZmN0 DQojIDc0ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNA0KI2RlZmluZSBfX1AoYXJncykg YXJncw0KI2RlZmluZSBfX1BNVChhcmdzKSBhcmdzDQoNCg0KDQoNCiNkZWZpbmUgX19DT05DQVQo eCx5KSB4ICMjIHkNCiNkZWZpbmUgX19TVFJJTkcoeCkgI3gNCg0KDQojZGVmaW5lIF9fcHRyX3Qg dm9pZCAqDQojZGVmaW5lIF9fbG9uZ19kb3VibGVfdCBsb25nIGRvdWJsZQ0KDQoNCg0KDQoNCg0K DQojZGVmaW5lIF9fQkVHSU5fREVDTFMgDQojZGVmaW5lIF9fRU5EX0RFQ0xTIA0KIyAxMTQgIi91 c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0DQojZGVmaW5lIF9fQkVHSU5fTkFNRVNQQUNFX1NU RCANCiNkZWZpbmUgX19FTkRfTkFNRVNQQUNFX1NURCANCiNkZWZpbmUgX19VU0lOR19OQU1FU1BB Q0VfU1REKG5hbWUpIA0KI2RlZmluZSBfX0JFR0lOX05BTUVTUEFDRV9DOTkgDQojZGVmaW5lIF9f RU5EX05BTUVTUEFDRV9DOTkgDQojZGVmaW5lIF9fVVNJTkdfTkFNRVNQQUNFX0M5OShuYW1lKSAN Cg0KDQoNCg0KDQojZGVmaW5lIF9fYm91bmRlZCANCiNkZWZpbmUgX191bmJvdW5kZWQgDQojZGVm aW5lIF9fcHRydmFsdWUgDQoNCg0KDQoNCiNkZWZpbmUgX19ib3MocHRyKSBfX2J1aWx0aW5fb2Jq ZWN0X3NpemUgKHB0ciwgX19VU0VfRk9SVElGWV9MRVZFTCA+IDEpDQojZGVmaW5lIF9fYm9zMChw dHIpIF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAocHRyLCAwKQ0KI2RlZmluZSBfX3dhcm5kZWNsKG5h bWUsbXNnKSBleHRlcm4gdm9pZCBuYW1lICh2b2lkKQ0KDQoNCg0KDQoNCiNkZWZpbmUgX19mbGV4 YXJyIFtdDQojIDE2NyAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQNCiNkZWZpbmUgX19S RURJUkVDVChuYW1lLHByb3RvLGFsaWFzKSBuYW1lIHByb3RvIF9fYXNtX18gKF9fQVNNTkFNRSAo I2FsaWFzKSkNCg0KDQoNCg0KI2RlZmluZSBfX1JFRElSRUNUX05USChuYW1lLHByb3RvLGFsaWFz KSBuYW1lIHByb3RvIF9fYXNtX18gKF9fQVNNTkFNRSAoI2FsaWFzKSkgX19USFJPVw0KDQoNCiNk ZWZpbmUgX19BU01OQU1FKGNuYW1lKSBfX0FTTU5BTUUyIChfX1VTRVJfTEFCRUxfUFJFRklYX18s IGNuYW1lKQ0KI2RlZmluZSBfX0FTTU5BTUUyKHByZWZpeCxjbmFtZSkgX19TVFJJTkcgKHByZWZp eCkgY25hbWUNCiMgMTk3ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNA0KI2RlZmluZSBf X2F0dHJpYnV0ZV9tYWxsb2NfXyBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpDQojIDIwNiAi L3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQNCiNkZWZpbmUgX19hdHRyaWJ1dGVfcHVyZV9f IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpDQojIDIxNSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVm cy5oIiAzIDQNCiNkZWZpbmUgX19hdHRyaWJ1dGVfdXNlZF9fIF9fYXR0cmlidXRlX18gKChfX3Vz ZWRfXykpDQojZGVmaW5lIF9fYXR0cmlidXRlX25vaW5saW5lX18gX19hdHRyaWJ1dGVfXyAoKF9f bm9pbmxpbmVfXykpDQoNCg0KDQoNCg0KDQoNCiNkZWZpbmUgX19hdHRyaWJ1dGVfZGVwcmVjYXRl ZF9fIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpDQojIDIzNiAiL3Vzci9pbmNsdWRl L3N5cy9jZGVmcy5oIiAzIDQNCiNkZWZpbmUgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpIF9f YXR0cmlidXRlX18gKChfX2Zvcm1hdF9hcmdfXyAoeCkpKQ0KIyAyNDYgIi91c3IvaW5jbHVkZS9z eXMvY2RlZnMuaCIgMyA0DQojZGVmaW5lIF9fYXR0cmlidXRlX2Zvcm1hdF9zdHJmbW9uX18oYSxi KSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zdHJmbW9uX18sIGEsIGIpKSkNCiMgMjU1 ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNA0KI2RlZmluZSBfX25vbm51bGwocGFyYW1z KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gcGFyYW1zKSkNCg0KDQoNCg0KDQoNCg0KI2Rl ZmluZSBfX2F0dHJpYnV0ZV93YXJuX3VudXNlZF9yZXN1bHRfXyBfX2F0dHJpYnV0ZV9fICgoX193 YXJuX3VudXNlZF9yZXN1bHRfXykpDQoNCg0KI2RlZmluZSBfX3d1ciBfX2F0dHJpYnV0ZV93YXJu X3VudXNlZF9yZXN1bHRfXw0KIyAyNzcgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0DQoj ZGVmaW5lIF9fYWx3YXlzX2lubGluZSBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNf aW5saW5lX18pKQ0KIyAyOTkgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0DQojZGVmaW5l IF9fcmVzdHJpY3RfYXJyIF9fcmVzdHJpY3QNCiMgMzEzICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZz LmgiIDMgNA0KIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMgNA0KDQoNCg0K I2RlZmluZSBfX1dPUkRTSVpFIDY0DQojZGVmaW5lIF9fV09SRFNJWkVfQ09NUEFUMzIgMQ0KIyAz MTQgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMiAzIDQNCiMgMzMxICIvdXNyL2luY2x1ZGUv c3lzL2NkZWZzLmgiIDMgNA0KI2RlZmluZSBfX0xEQkxfUkVESVIxKG5hbWUscHJvdG8sYWxpYXMp IG5hbWUgcHJvdG8NCiNkZWZpbmUgX19MREJMX1JFRElSKG5hbWUscHJvdG8pIG5hbWUgcHJvdG8N CiNkZWZpbmUgX19MREJMX1JFRElSMV9OVEgobmFtZSxwcm90byxhbGlhcykgbmFtZSBwcm90byBf X1RIUk9XDQojZGVmaW5lIF9fTERCTF9SRURJUl9OVEgobmFtZSxwcm90bykgbmFtZSBwcm90byBf X1RIUk9XDQojZGVmaW5lIF9fTERCTF9SRURJUl9ERUNMKG5hbWUpIA0KIyAzMzkgIi9uZnMvZS1u ZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4u L2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUtZml4ZWQvZmVh dHVyZXMuaCIgMiAzIDQNCiMgMzYxICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4 LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxp bnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2ZlYXR1cmVzLmgiIDMgNA0KIyAxICIvdXNyL2lu Y2x1ZGUvZ251L3N0dWJzLmgiIDEgMyA0DQoNCg0KDQojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dv cmRzaXplLmgiIDEgMyA0DQoNCg0KDQojZGVmaW5lIF9fV09SRFNJWkUgNjQNCiNkZWZpbmUgX19X T1JEU0laRV9DT01QQVQzMiAxDQojIDUgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMiAzIDQN Cg0KDQoNCg0KIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0dWJzLTY0LmgiIDEgMyA0DQojIDEwICIv dXNyL2luY2x1ZGUvZ251L3N0dWJzLTY0LmgiIDMgNA0KI2RlZmluZSBfX3N0dWJfX19rZXJuZWxf Y29zbCANCiNkZWZpbmUgX19zdHViX19fa2VybmVsX3JlbV9waW8ybCANCiNkZWZpbmUgX19zdHVi X19fa2VybmVsX3NpbmwgDQojZGVmaW5lIF9fc3R1Yl9fX2tlcm5lbF90YW5sIA0KI2RlZmluZSBf X3N0dWJfYmRmbHVzaCANCiNkZWZpbmUgX19zdHViX2NoZmxhZ3MgDQojZGVmaW5lIF9fc3R1Yl9m YXR0YWNoIA0KI2RlZmluZSBfX3N0dWJfZmNoZmxhZ3MgDQojZGVmaW5lIF9fc3R1Yl9mZGV0YWNo IA0KI2RlZmluZSBfX3N0dWJfZmV1cGRhdGVlbnYgDQojZGVmaW5lIF9fc3R1Yl9nZXRtc2cgDQoj ZGVmaW5lIF9fc3R1Yl9ndHR5IA0KI2RlZmluZSBfX3N0dWJfbGNobW9kIA0KI2RlZmluZSBfX3N0 dWJfbHV0aW1lcyANCiNkZWZpbmUgX19zdHViX3B1dG1zZyANCiNkZWZpbmUgX19zdHViX3Jldm9r ZSANCiNkZWZpbmUgX19zdHViX3NldGxvZ2luIA0KI2RlZmluZSBfX3N0dWJfc2lncmV0dXJuIA0K I2RlZmluZSBfX3N0dWJfc3N0ayANCiNkZWZpbmUgX19zdHViX3N0dHkgDQojIDEwICIvdXNyL2lu Y2x1ZGUvZ251L3N0dWJzLmgiIDIgMyA0DQojIDM2MiAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50 aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQt dW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9mZWF0dXJlcy5oIiAyIDMgNA0K IyAyNyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNA0KDQoNCg0KDQojZGVmaW5lIF9fbmVl ZF9zaXplX3QgDQojZGVmaW5lIF9fbmVlZF9OVUxMIA0KIyAxICIvbmZzL2UtbmZzLTAxL3UxMC9z Y2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4 Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNA0KIyAx ODcgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14 ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1 ZGUvc3RkZGVmLmgiIDMgNA0KI2RlZmluZSBfX3NpemVfdF9fIA0KI2RlZmluZSBfX1NJWkVfVF9f IA0KI2RlZmluZSBfU0laRV9UIA0KI2RlZmluZSBfU1lTX1NJWkVfVF9IIA0KI2RlZmluZSBfVF9T SVpFXyANCiNkZWZpbmUgX1RfU0laRSANCiNkZWZpbmUgX19TSVpFX1QgDQojZGVmaW5lIF9TSVpF X1RfIA0KI2RlZmluZSBfQlNEX1NJWkVfVF8gDQojZGVmaW5lIF9TSVpFX1RfREVGSU5FRF8gDQoj ZGVmaW5lIF9TSVpFX1RfREVGSU5FRCANCiNkZWZpbmUgX0JTRF9TSVpFX1RfREVGSU5FRF8gDQoj ZGVmaW5lIF9TSVpFX1RfREVDTEFSRUQgDQojZGVmaW5lIF9fX2ludF9zaXplX3RfaCANCiNkZWZp bmUgX0dDQ19TSVpFX1QgDQojZGVmaW5lIF9TSVpFVF8gDQoNCg0KDQoNCiNkZWZpbmUgX19zaXpl X3QgDQoNCg0KDQoNCg0KdHlwZWRlZiBsb25nIHVuc2lnbmVkIGludCBzaXplX3Q7DQojIDIzNSAi L25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82 NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS9z dGRkZWYuaCIgMyA0DQojdW5kZWYgX19uZWVkX3NpemVfdA0KIyAzOTggIi9uZnMvZS1uZnMtMDEv dTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9n Y2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUvc3RkZGVmLmgiIDMgNA0K I3VuZGVmIE5VTEwNCg0KDQoNCg0KI2RlZmluZSBOVUxMICgodm9pZCAqKTApDQoNCg0KDQoNCg0K I3VuZGVmIF9fbmVlZF9OVUxMDQojIDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0DQoN Cg0KDQoNCmV4dGVybiB2b2lkICptZW1jcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LA0KICAg ICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikNCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx LCAyKSkpOw0KDQoNCmV4dGVybiB2b2lkICptZW1tb3ZlICh2b2lkICpfX2Rlc3QsIF9fY29uc3Qg dm9pZCAqX19zcmMsIHNpemVfdCBfX24pDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0KDQoNCg0KDQoNCmV4 dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCB2b2lk ICpfX3Jlc3RyaWN0IF9fc3JjLA0KICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQ0KICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEsIDIpKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgKm1lbXNldCAodm9pZCAqX19zLCBpbnQg X19jLCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KZXh0ZXJuIGludCBtZW1jbXAgKF9fY29uc3Qg dm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQ0KICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7DQoNCg0KZXh0ZXJuIHZvaWQgKm1lbWNociAo X19jb25zdCB2b2lkICpfX3MsIGludCBfX2MsIHNpemVfdCBfX24pDQogICAgICBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgKnJhd21lbWNo ciAoX19jb25zdCB2b2lkICpfX3MsIGludCBfX2MpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKTsNCg0KDQpleHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpf X3MsIGludCBfX2MsIHNpemVfdCBfX24pDQogICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEpKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmlj dCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykNCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp Ow0KDQpleHRlcm4gY2hhciAqc3RybmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsDQogICAg ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikNCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx LCAyKSkpOw0KDQoNCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0 LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpDQogICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0KZXh0 ZXJuIGNoYXIgKnN0cm5jYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIg Kl9fcmVzdHJpY3QgX19zcmMsDQogICAgICAgIHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0KDQpl eHRlcm4gaW50IHN0cmNtcCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIp DQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1 cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0KZXh0ZXJuIGlu dCBzdHJuY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90 IF9fbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo KF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOw0KDQoNCmV4 dGVybiBpbnQgc3RyY29sbCAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIp DQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1 cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0KZXh0ZXJuIHNp emVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwNCiAgICAgICAgIF9fY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikNCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOw0KDQoNCg0K DQoNCg0KIyAxICIvdXNyL2luY2x1ZGUveGxvY2FsZS5oIiAxIDMgNA0KIyAyMiAiL3Vzci9pbmNs dWRlL3hsb2NhbGUuaCIgMyA0DQojZGVmaW5lIF9YTE9DQUxFX0ggMQ0KDQoNCg0KDQoNCnR5cGVk ZWYgc3RydWN0IF9fbG9jYWxlX3N0cnVjdA0Kew0KDQogIHN0cnVjdCBsb2NhbGVfZGF0YSAqX19s b2NhbGVzWzEzXTsNCg0KDQogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOw0K ICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsNCiAgY29uc3QgaW50ICpfX2N0eXBlX3RvdXBw ZXI7DQoNCg0KICBjb25zdCBjaGFyICpfX25hbWVzWzEzXTsNCn0gKl9fbG9jYWxlX3Q7DQojIDEx OSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMgNA0KDQoNCmV4dGVybiBpbnQgc3RyY29sbF9s IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgX19sb2NhbGVfdCBfX2wp DQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1 cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgMykpKTsNCg0KZXh0ZXJu IHNpemVfdCBzdHJ4ZnJtX2wgKGNoYXIgKl9fZGVzdCwgX19jb25zdCBjaGFyICpfX3NyYywgc2l6 ZV90IF9fbiwNCiAgICBfX2xvY2FsZV90IF9fbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpOw0KDQoNCg0KDQpleHRlcm4g Y2hhciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gY2hhciAqc3RybmR1cCAoX19j b25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCiNkZWZpbmUgc3RyZHVwYShzKSAoX19leHRlbnNp b25fXyAoeyBfX2NvbnN0IGNoYXIgKl9fb2xkID0gKHMpOyBzaXplX3QgX19sZW4gPSBzdHJsZW4g KF9fb2xkKSArIDE7IGNoYXIgKl9fbmV3ID0gKGNoYXIgKikgX19idWlsdGluX2FsbG9jYSAoX19s ZW4pOyAoY2hhciAqKSBtZW1jcHkgKF9fbmV3LCBfX29sZCwgX19sZW4pOyB9KSkNCiMgMTU0ICIv dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNA0KI2RlZmluZSBzdHJuZHVwYShzLG4pIChfX2V4dGVu c2lvbl9fICh7IF9fY29uc3QgY2hhciAqX19vbGQgPSAocyk7IHNpemVfdCBfX2xlbiA9IHN0cm5s ZW4gKF9fb2xkLCAobikpOyBjaGFyICpfX25ldyA9IChjaGFyICopIF9fYnVpbHRpbl9hbGxvY2Eg KF9fbGVuICsgMSk7IF9fbmV3W19fbGVuXSA9ICdcMCc7IChjaGFyICopIG1lbWNweSAoX19uZXcs IF9fb2xkLCBfX2xlbik7IH0pKQ0KIyAxNjUgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0DQoN Cg0KZXh0ZXJuIGNoYXIgKnN0cmNociAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpDQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsNCg0KZXh0ZXJuIGNoYXIgKnN0cnJj aHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIGNoYXIgKnN0cmNocm51bCAoX19jb25z dCBjaGFyICpfX3MsIGludCBfX2MpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsNCg0KDQoNCg0KDQpleHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19z LCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEsIDIpKSk7DQoNCg0KZXh0ZXJuIHNpemVfdCBzdHJzcG4gKF9fY29uc3QgY2hhciAqX19z LCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEsIDIpKSk7DQoNCmV4dGVybiBjaGFyICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywg X19jb25zdCBjaGFyICpfX2FjY2VwdCkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxLCAyKSkpOw0KDQpleHRlcm4gY2hhciAqc3Ryc3RyIChfX2NvbnN0IGNoYXIgKl9faGF5c3Rh Y2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSwgMikpKTsNCg0KDQoNCmV4dGVybiBjaGFyICpzdHJ0b2sgKGNoYXIgKl9fcmVzdHJp Y3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkNCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOw0K DQoNCg0KDQpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hhciAqX19yZXN0cmljdCBfX3MsDQog ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sDQogICAgY2hhciAqKl9fcmVzdHJp Y3QgX19zYXZlX3B0cikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpOw0KDQpleHRlcm4gY2hhciAqc3RydG9rX3Ig KGNoYXIgKl9fcmVzdHJpY3QgX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSwN CiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fc2F2ZV9wdHIpDQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsN Cg0KDQoNCg0KZXh0ZXJuIGNoYXIgKnN0cmNhc2VzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFj aywgX19jb25zdCBjaGFyICpfX25lZWRsZSkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyKSkpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgKm1lbW1lbSAoX19jb25zdCB2 b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwNCiAgICAgICBfX2NvbnN0IHZv aWQgKl9fbmVlZGxlLCBzaXplX3QgX19uZWVkbGVsZW4pDQogICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSwgMykpKTsNCg0KDQoNCmV4dGVybiB2b2lkICpfX21lbXBjcHkgKHZvaWQg Kl9fcmVzdHJpY3QgX19kZXN0LA0KICAgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBz aXplX3QgX19uKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7DQpleHRlcm4gdm9pZCAqbWVtcGNweSAodm9pZCAq X19yZXN0cmljdCBfX2Rlc3QsDQogICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3Ny Yywgc2l6ZV90IF9fbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOw0KDQoNCg0KDQoNCmV4dGVybiBzaXplX3Qg c3RybGVuIChfX2NvbnN0IGNoYXIgKl9fcykNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOw0KDQoNCg0KDQoNCmV4dGVybiBzaXplX3Qgc3RybmxlbiAoX19jb25zdCBjaGFy ICpfX3N0cmluZywgc2l6ZV90IF9fbWF4bGVuKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIGNoYXIgKnN0cmVycm9yIChpbnQgX19lcnJu dW0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQojIDI4MSAiL3Vzci9pbmNsdWRl L3N0cmluZy5oIiAzIDQNCmV4dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNo YXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsNCg0KDQoNCg0KDQpleHRl cm4gdm9pZCBfX2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsNCg0KDQoNCmV4 dGVybiB2b2lkIGJjb3B5IChfX2NvbnN0IHZvaWQgKl9fc3JjLCB2b2lkICpfX2Rlc3QsIHNpemVf dCBfX24pDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0KDQpleHRlcm4gdm9pZCBiemVybyAodm9pZCAqX19z LCBzaXplX3QgX19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KZXh0ZXJuIGludCBiY21wIChfX2NvbnN0IHZvaWQg Kl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikNCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOw0KDQoNCmV4dGVybiBjaGFyICppbmRleCAoX19jb25z dCBjaGFyICpfX3MsIGludCBfX2MpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsNCg0KDQpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9f YykNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9f cHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOw0KDQoNCg0KZXh0ZXJu IGludCBmZnMgKGludCBfX2kpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsNCg0KDQoNCg0KZXh0ZXJuIGludCBmZnNsIChsb25nIGludCBf X2wpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsNCg0KX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsIChsb25nIGxvbmcgaW50IF9f bGwpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsNCg0KDQoNCg0KZXh0ZXJuIGludCBzdHJjYXNlY21wIChfX2NvbnN0IGNoYXIg Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyKSkpOw0KDQoNCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgKF9fY29uc3QgY2hhciAq X19zMSwgX19jb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQ0KICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDIpKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIGludCBzdHJjYXNlY21w X2wgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyLA0KICAgIF9fbG9jYWxl X3QgX19sb2MpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgMykpKTsN Cg0KZXh0ZXJuIGludCBzdHJuY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg Y2hhciAqX19zMiwNCiAgICAgc2l6ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xvYykNCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCA0KSkpOw0KDQoNCg0KDQoNCmV4dGVybiBj aGFyICpzdHJzZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwNCiAgICAgICBfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19kZWxpbSkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOw0KDQoNCg0KDQpleHRl cm4gaW50IHN0cnZlcnNjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3My KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7DQoNCg0KZXh0ZXJu IGNoYXIgKnN0cnNpZ25hbCAoaW50IF9fc2lnKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KTsNCg0KDQpleHRlcm4gY2hhciAqX19zdHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCmV4dGVybiBj aGFyICpzdHBjcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19zcmMpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0KDQoNCmV4dGVybiBjaGFyICpfX3N0cG5j cHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LA0KICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fc3JjLCBzaXplX3QgX19uKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7DQpleHRlcm4gY2hhciAqc3RwbmNw eSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsDQogICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3NyYywgc2l6ZV90IF9fbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOw0KDQoNCmV4dGVybiBjaGFy ICpzdHJmcnkgKGNoYXIgKl9fc3RyaW5nKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KZXh0ZXJuIHZvaWQgKm1lbWZy b2IgKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIGNo YXIgKmJhc2VuYW1lIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsNCiMgNDE0ICIv dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNA0KIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdHJpbmcu aCIgMSAzIDQNCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZy5oIiAzIDQNCiNkZWZpbmUg X1NUUklOR19BUkNIX3VuYWxpZ25lZCAxDQojIDQxNSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAy IDMgNA0KDQoNCiMgMSAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQv Z2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUv NC43LjIvaW5jbHVkZS1maXhlZC9iaXRzL3N0cmluZzIuaCIgMSAzIDQNCiMgNTMgIi9uZnMvZS1u ZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4u L2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUtZml4ZWQvYml0 cy9zdHJpbmcyLmgiIDMgNA0KI2RlZmluZSBfX1NUUklOR19JTkxJTkUgaW5saW5lDQoNCg0KDQoN Cg0KDQoNCiMgMSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAxIDMgNA0KIyAyMCAiL3Vzci9pbmNs dWRlL2VuZGlhbi5oIiAzIDQNCiNkZWZpbmUgX0VORElBTl9IIDENCiMgMzIgIi91c3IvaW5jbHVk ZS9lbmRpYW4uaCIgMyA0DQojZGVmaW5lIF9fTElUVExFX0VORElBTiAxMjM0DQojZGVmaW5lIF9f QklHX0VORElBTiA0MzIxDQojZGVmaW5lIF9fUERQX0VORElBTiAzNDEyDQoNCg0KIyAxICIvdXNy L2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAzIDQNCg0KDQoNCg0KDQoNCiNkZWZpbmUgX19CWVRF X09SREVSIF9fTElUVExFX0VORElBTg0KIyAzOCAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMg NA0KDQoNCg0KDQojZGVmaW5lIF9fRkxPQVRfV09SRF9PUkRFUiBfX0JZVEVfT1JERVINCg0KDQoN CiNkZWZpbmUgTElUVExFX0VORElBTiBfX0xJVFRMRV9FTkRJQU4NCiNkZWZpbmUgQklHX0VORElB TiBfX0JJR19FTkRJQU4NCiNkZWZpbmUgUERQX0VORElBTiBfX1BEUF9FTkRJQU4NCiNkZWZpbmUg QllURV9PUkRFUiBfX0JZVEVfT1JERVINCg0KDQoNCiNkZWZpbmUgX19MT05HX0xPTkdfUEFJUihI SSxMTykgTE8sIEhJDQojIDYyICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUx L29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4 LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3RyaW5nMi5oIiAyIDMgNA0KIyAxICIvdXNy L2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMgNA0KIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw ZXMuaCIgMyA0DQojZGVmaW5lIF9CSVRTX1RZUEVTX0ggMQ0KDQoNCiMgMSAiL3Vzci9pbmNsdWRl L2JpdHMvd29yZHNpemUuaCIgMSAzIDQNCg0KDQoNCiNkZWZpbmUgX19XT1JEU0laRSA2NA0KI2Rl ZmluZSBfX1dPUkRTSVpFX0NPTVBBVDMyIDENCiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz LmgiIDIgMyA0DQoNCiNkZWZpbmUgX19uZWVkX3NpemVfdCANCiMgMSAiL25mcy9lLW5mcy0wMS91 MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2dj Yy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQN CiMgMjM1ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43 LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9p bmNsdWRlL3N0ZGRlZi5oIiAzIDQNCiN1bmRlZiBfX25lZWRfc2l6ZV90DQojIDQwOSAiL25mcy9l LW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4v Li4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRkZWYu aCIgMyA0DQojdW5kZWYgX19uZWVkX05VTEwNCiMgMzIgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz LmgiIDIgMyA0DQoNCg0KdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOw0KdHlwZWRlZiB1 bnNpZ25lZCBzaG9ydCBpbnQgX191X3Nob3J0Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191X2lu dDsNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX191X2xvbmc7DQoNCg0KdHlwZWRlZiBzaWdu ZWQgY2hhciBfX2ludDhfdDsNCnR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7DQp0eXBl ZGVmIHNpZ25lZCBzaG9ydCBpbnQgX19pbnQxNl90Ow0KdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBp bnQgX191aW50MTZfdDsNCnR5cGVkZWYgc2lnbmVkIGludCBfX2ludDMyX3Q7DQp0eXBlZGVmIHVu c2lnbmVkIGludCBfX3VpbnQzMl90Ow0KDQp0eXBlZGVmIHNpZ25lZCBsb25nIGludCBfX2ludDY0 X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdWludDY0X3Q7DQoNCg0KDQoNCg0KDQoN CnR5cGVkZWYgbG9uZyBpbnQgX19xdWFkX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9f dV9xdWFkX3Q7DQojIDEwMiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMyA0DQojZGVmaW5l IF9fUzE2X1RZUEUgc2hvcnQgaW50DQojZGVmaW5lIF9fVTE2X1RZUEUgdW5zaWduZWQgc2hvcnQg aW50DQojZGVmaW5lIF9fUzMyX1RZUEUgaW50DQojZGVmaW5lIF9fVTMyX1RZUEUgdW5zaWduZWQg aW50DQojZGVmaW5lIF9fU0xPTkdXT1JEX1RZUEUgbG9uZyBpbnQNCiNkZWZpbmUgX19VTE9OR1dP UkRfVFlQRSB1bnNpZ25lZCBsb25nIGludA0KIyAxMjEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz LmgiIDMgNA0KI2RlZmluZSBfX1NRVUFEX1RZUEUgbG9uZyBpbnQNCiNkZWZpbmUgX19VUVVBRF9U WVBFIHVuc2lnbmVkIGxvbmcgaW50DQojZGVmaW5lIF9fU1dPUkRfVFlQRSBsb25nIGludA0KI2Rl ZmluZSBfX1VXT1JEX1RZUEUgdW5zaWduZWQgbG9uZyBpbnQNCiNkZWZpbmUgX19TTE9ORzMyX1RZ UEUgaW50DQojZGVmaW5lIF9fVUxPTkczMl9UWVBFIHVuc2lnbmVkIGludA0KI2RlZmluZSBfX1M2 NF9UWVBFIGxvbmcgaW50DQojZGVmaW5lIF9fVTY0X1RZUEUgdW5zaWduZWQgbG9uZyBpbnQNCg0K I2RlZmluZSBfX1NURF9UWVBFIHR5cGVkZWYNCg0KDQoNCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv dHlwZXNpemVzLmgiIDEgMyA0DQojIDI1ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlc2l6ZXMuaCIg MyA0DQojZGVmaW5lIF9CSVRTX1RZUEVTSVpFU19IIDENCg0KDQoNCg0KI2RlZmluZSBfX0RFVl9U X1RZUEUgX19VUVVBRF9UWVBFDQojZGVmaW5lIF9fVUlEX1RfVFlQRSBfX1UzMl9UWVBFDQojZGVm aW5lIF9fR0lEX1RfVFlQRSBfX1UzMl9UWVBFDQojZGVmaW5lIF9fSU5PX1RfVFlQRSBfX1VMT05H V09SRF9UWVBFDQojZGVmaW5lIF9fSU5PNjRfVF9UWVBFIF9fVVFVQURfVFlQRQ0KI2RlZmluZSBf X01PREVfVF9UWVBFIF9fVTMyX1RZUEUNCiNkZWZpbmUgX19OTElOS19UX1RZUEUgX19VV09SRF9U WVBFDQojZGVmaW5lIF9fT0ZGX1RfVFlQRSBfX1NMT05HV09SRF9UWVBFDQojZGVmaW5lIF9fT0ZG NjRfVF9UWVBFIF9fU1FVQURfVFlQRQ0KI2RlZmluZSBfX1BJRF9UX1RZUEUgX19TMzJfVFlQRQ0K I2RlZmluZSBfX1JMSU1fVF9UWVBFIF9fVUxPTkdXT1JEX1RZUEUNCiNkZWZpbmUgX19STElNNjRf VF9UWVBFIF9fVVFVQURfVFlQRQ0KI2RlZmluZSBfX0JMS0NOVF9UX1RZUEUgX19TTE9OR1dPUkRf VFlQRQ0KI2RlZmluZSBfX0JMS0NOVDY0X1RfVFlQRSBfX1NRVUFEX1RZUEUNCiNkZWZpbmUgX19G U0JMS0NOVF9UX1RZUEUgX19VTE9OR1dPUkRfVFlQRQ0KI2RlZmluZSBfX0ZTQkxLQ05UNjRfVF9U WVBFIF9fVVFVQURfVFlQRQ0KI2RlZmluZSBfX0ZTRklMQ05UX1RfVFlQRSBfX1VMT05HV09SRF9U WVBFDQojZGVmaW5lIF9fRlNGSUxDTlQ2NF9UX1RZUEUgX19VUVVBRF9UWVBFDQojZGVmaW5lIF9f SURfVF9UWVBFIF9fVTMyX1RZUEUNCiNkZWZpbmUgX19DTE9DS19UX1RZUEUgX19TTE9OR1dPUkRf VFlQRQ0KI2RlZmluZSBfX1RJTUVfVF9UWVBFIF9fU0xPTkdXT1JEX1RZUEUNCiNkZWZpbmUgX19V U0VDT05EU19UX1RZUEUgX19VMzJfVFlQRQ0KI2RlZmluZSBfX1NVU0VDT05EU19UX1RZUEUgX19T TE9OR1dPUkRfVFlQRQ0KI2RlZmluZSBfX0RBRERSX1RfVFlQRSBfX1MzMl9UWVBFDQojZGVmaW5l IF9fU1dCTEtfVF9UWVBFIF9fU0xPTkdXT1JEX1RZUEUNCiNkZWZpbmUgX19LRVlfVF9UWVBFIF9f UzMyX1RZUEUNCiNkZWZpbmUgX19DTE9DS0lEX1RfVFlQRSBfX1MzMl9UWVBFDQojZGVmaW5lIF9f VElNRVJfVF9UWVBFIHZvaWQgKg0KI2RlZmluZSBfX0JMS1NJWkVfVF9UWVBFIF9fU0xPTkdXT1JE X1RZUEUNCiNkZWZpbmUgX19GU0lEX1RfVFlQRSBzdHJ1Y3QgeyBpbnQgX192YWxbMl07IH0NCiNk ZWZpbmUgX19TU0laRV9UX1RZUEUgX19TV09SRF9UWVBFDQoNCg0KI2RlZmluZSBfX0ZEX1NFVFNJ WkUgMTAyNA0KIyAxMzUgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMyA0DQoNCg0KdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2Rldl90Ow0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191 aWRfdDsNCnR5cGVkZWYgdW5zaWduZWQgaW50IF9fZ2lkX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxv bmcgaW50IF9faW5vX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9faW5vNjRfdDsNCnR5 cGVkZWYgdW5zaWduZWQgaW50IF9fbW9kZV90Ow0KdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBf X25saW5rX3Q7DQp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7DQp0eXBlZGVmIGxvbmcgaW50IF9f b2ZmNjRfdDsNCnR5cGVkZWYgaW50IF9fcGlkX3Q7DQp0eXBlZGVmIHN0cnVjdCB7IGludCBfX3Zh bFsyXTsgfSBfX2ZzaWRfdDsNCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190Ow0KdHlwZWRlZiB1 bnNpZ25lZCBsb25nIGludCBfX3JsaW1fdDsNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19y bGltNjRfdDsNCnR5cGVkZWYgdW5zaWduZWQgaW50IF9faWRfdDsNCnR5cGVkZWYgbG9uZyBpbnQg X190aW1lX3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VzZWNvbmRzX3Q7DQp0eXBlZGVmIGxv bmcgaW50IF9fc3VzZWNvbmRzX3Q7DQoNCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsNCnR5cGVkZWYg bG9uZyBpbnQgX19zd2Jsa190Ow0KdHlwZWRlZiBpbnQgX19rZXlfdDsNCg0KDQp0eXBlZGVmIGlu dCBfX2Nsb2NraWRfdDsNCg0KDQp0eXBlZGVmIHZvaWQgKiBfX3RpbWVyX3Q7DQoNCg0KdHlwZWRl ZiBsb25nIGludCBfX2Jsa3NpemVfdDsNCg0KDQoNCg0KdHlwZWRlZiBsb25nIGludCBfX2Jsa2Nu dF90Ow0KdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudDY0X3Q7DQoNCg0KdHlwZWRlZiB1bnNpZ25l ZCBsb25nIGludCBfX2ZzYmxrY250X3Q7DQp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fZnNi bGtjbnQ2NF90Ow0KDQoNCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2ZpbGNudF90Ow0K dHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZzZmlsY250NjRfdDsNCg0KdHlwZWRlZiBsb25n IGludCBfX3NzaXplX3Q7DQoNCg0KDQp0eXBlZGVmIF9fb2ZmNjRfdCBfX2xvZmZfdDsNCnR5cGVk ZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsNCnR5cGVkZWYgY2hhciAqX19jYWRkcl90Ow0KDQoNCnR5 cGVkZWYgbG9uZyBpbnQgX19pbnRwdHJfdDsNCg0KDQp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Nv Y2tsZW5fdDsNCg0KDQojdW5kZWYgX19TVERfVFlQRQ0KIyA2MyAiL25mcy9lLW5mcy0wMS91MTAv c2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94 ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9iaXRzL3N0cmluZzIu aCIgMiAzIDQNCg0KDQojZGVmaW5lIF9fU1RSSU5HMl9TTUFMTF9HRVQxNihzcmMsaWR4KSAoKChf X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3JjKSlbaWR4ICsgMV0g PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHNyYykp W2lkeF0pDQoNCg0KI2RlZmluZSBfX1NUUklORzJfU01BTExfR0VUMzIoc3JjLGlkeCkgKCgoKChf X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3JjKSlbaWR4ICsgM10g PDwgOCB8ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHNyYykp W2lkeCArIDJdKSA8PCA4IHwgKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh ciAqKSAoc3JjKSlbaWR4ICsgMV0pIDw8IDggfCAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo X19jb25zdCBjaGFyICopIChzcmMpKVtpZHhdKQ0KIyAxMDIgIi9uZnMvZS1uZnMtMDEvdTEwL3Nj aWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2 XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUtZml4ZWQvYml0cy9zdHJpbmcyLmgi IDMgNA0KI2RlZmluZSBfX3N0cmluZzJfMWJwdHJfcChfX3gpICgoc2l6ZV90KShjb25zdCB2b2lk ICopKChfX3gpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKF9feCkgPT0gMSkNCiMgMjA0 ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2 XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRl LWZpeGVkL2JpdHMvc3RyaW5nMi5oIiAzIDQNCiNkZWZpbmUgX19iemVybyhzLG4pIF9fYnVpbHRp bl9tZW1zZXQgKHMsICdcMCcsIG4pDQojIDIxNiAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZp Y19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5r bm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9iaXRzL3N0cmluZzIuaCIgMyA0DQoj ZGVmaW5lIF9fbWVtcGNweShkZXN0LHNyYyxuKSBfX2J1aWx0aW5fbWVtcGNweSAoZGVzdCwgc3Jj LCBuKQ0KIyAyMzIgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2dj Yy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQu Ny4yL2luY2x1ZGUtZml4ZWQvYml0cy9zdHJpbmcyLmgiIDMgNA0KI2RlZmluZSBtZW1wY3B5KGRl c3Qsc3JjLG4pIF9fbWVtcGNweSAoZGVzdCwgc3JjLCBuKQ0KIyA0MDMgIi9uZnMvZS1uZnMtMDEv dTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9n Y2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUtZml4ZWQvYml0cy9zdHJp bmcyLmgiIDMgNA0KZXh0ZXJuIHZvaWQgKl9fcmF3bWVtY2hyIChjb25zdCB2b2lkICpfX3MsIGlu dCBfX2MpOw0KDQojZGVmaW5lIHN0cmNocihzLGMpIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5f Y29uc3RhbnRfcCAoYykgJiYgIV9fYnVpbHRpbl9jb25zdGFudF9wIChzKSAmJiAoYykgPT0gJ1ww JyA/IChjaGFyICopIF9fcmF3bWVtY2hyIChzLCBjKSA6IF9fYnVpbHRpbl9zdHJjaHIgKHMsIGMp KSkNCiMgNTg2ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2Mt NC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80Ljcu Mi9pbmNsdWRlLWZpeGVkL2JpdHMvc3RyaW5nMi5oIiAzIDQNCiNkZWZpbmUgX19zdHBjcHkoZGVz dCxzcmMpIF9fYnVpbHRpbl9zdHBjcHkgKGRlc3QsIHNyYykNCiMgNjA3ICIvbmZzL2UtbmZzLTAx L3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIv Z2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3Ry aW5nMi5oIiAzIDQNCiNkZWZpbmUgc3RwY3B5KGRlc3Qsc3JjKSBfX3N0cGNweSAoZGVzdCwgc3Jj KQ0KIyA3NzAgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00 LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4y L2luY2x1ZGUtZml4ZWQvYml0cy9zdHJpbmcyLmgiIDMgNA0KI2RlZmluZSBzdHJuY3B5KGRlc3Qs c3JjLG4pIF9fYnVpbHRpbl9zdHJuY3B5IChkZXN0LCBzcmMsIG4pDQojIDc5NCAiL25mcy9lLW5m cy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4v bGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9iaXRz L3N0cmluZzIuaCIgMyA0DQojZGVmaW5lIHN0cm5jYXQoZGVzdCxzcmMsbikgX19idWlsdGluX3N0 cm5jYXQgKGRlc3QsIHNyYywgbikNCiMgODA5ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmlj X2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtu b3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3RyaW5nMi5oIiAzIDQNCiNk ZWZpbmUgc3RyY21wKHMxLHMyKSBfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19z Ml9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoczEpICYmIF9fYnVpbHRpbl9jb25zdGFudF9w IChzMikgJiYgKF9fczFfbGVuID0gc3RybGVuIChzMSksIF9fczJfbGVuID0gc3RybGVuIChzMiks ICghX19zdHJpbmcyXzFicHRyX3AgKHMxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoIV9fc3RyaW5n Ml8xYnB0cl9wIChzMikgfHwgX19zMl9sZW4gPj0gNCkpID8gX19idWlsdGluX3N0cmNtcCAoczEs IHMyKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoczEpICYmIF9fc3RyaW5nMl8xYnB0cl9wIChz MSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChzMSksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGlu X2NvbnN0YW50X3AgKHMyKSAmJiBfX3N0cmluZzJfMWJwdHJfcCAoczIpID8gX19idWlsdGluX3N0 cmNtcCAoczEsIHMyKSA6IF9fc3RyY21wX2NnIChzMSwgczIsIF9fczFfbGVuKSkgOiAoX19idWls dGluX2NvbnN0YW50X3AgKHMyKSAmJiBfX3N0cmluZzJfMWJwdHJfcCAoczIpICYmIChfX3MyX2xl biA9IHN0cmxlbiAoczIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChz MSkgJiYgX19zdHJpbmcyXzFicHRyX3AgKHMxKSA/IF9fYnVpbHRpbl9zdHJjbXAgKHMxLCBzMikg OiBfX3N0cmNtcF9nYyAoczEsIHMyLCBfX3MyX2xlbikpIDogX19idWlsdGluX3N0cmNtcCAoczEs IHMyKSkpKTsgfSkNCiMgODUxICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUx L29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4 LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3RyaW5nMi5oIiAzIDQNCiNkZWZpbmUgX19z dHJjbXBfY2MoczEsczIsbCkgKF9fZXh0ZW5zaW9uX18gKHsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0 ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMxKSlbMF0g LSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopKHMyKSlbMF0pOyBp ZiAobCA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzMSkpWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVk IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczIpKVsxXSk7IGlmIChsID4gMSAmJiBfX3Jlc3Vs dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0 IGNoYXIgKikgKHMxKSlbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBj aGFyICopIChzMikpWzJdKTsgaWYgKGwgPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0g KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMxKSlbM10gLSAo KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzMikpWzNdKTsgfSB9 IF9fcmVzdWx0OyB9KSkNCiMgODc4ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4 LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxp bnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3RyaW5nMi5oIiAzIDQNCiNkZWZpbmUg X19zdHJjbXBfY2coczEsczIsbDEpIChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgdW5zaWduZWQg Y2hhciAqX19zMiA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo czIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg KF9fY29uc3QgY2hhciAqKSAoczEpKVswXSAtIF9fczJbMF0pOyBpZiAobDEgPiAwICYmIF9fcmVz dWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u c3QgY2hhciAqKSAoczEpKVsxXSAtIF9fczJbMV0pOyBpZiAobDEgPiAxICYmIF9fcmVzdWx0ID09 IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh ciAqKSAoczEpKVsyXSAtIF9fczJbMl0pOyBpZiAobDEgPiAyICYmIF9fcmVzdWx0ID09IDApIF9f cmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHMx KSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkNCiMgOTAwICIvbmZzL2UtbmZzLTAx L3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIv Z2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3Ry aW5nMi5oIiAzIDQNCiNkZWZpbmUgX19zdHJjbXBfZ2MoczEsczIsbDIpIChfX2V4dGVuc2lvbl9f ICh7IF9fY29uc3QgdW5zaWduZWQgY2hhciAqX19zMSA9IChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg KikgKF9fY29uc3QgY2hhciAqKSAoczEpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBd IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczIpKVswXTsg aWYgKGwyID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9f Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzMikpWzFdKTsgaWYgKGwy ID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAoKF9fY29uc3Qg dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzMikpWzJdKTsgaWYgKGwyID4gMiAm JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVk IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoczIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpDQoj IDkyOSAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4y LXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5j bHVkZS1maXhlZC9iaXRzL3N0cmluZzIuaCIgMyA0DQojZGVmaW5lIHN0cm5jbXAoczEsczIsbikg KF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChuKSAmJiAoKF9fYnVpbHRpbl9j b25zdGFudF9wIChzMSkgJiYgc3RybGVuIChzMSkgPCAoKHNpemVfdCkgKG4pKSkgfHwgKF9fYnVp bHRpbl9jb25zdGFudF9wIChzMikgJiYgc3RybGVuIChzMikgPCAoKHNpemVfdCkgKG4pKSkpID8g c3RyY21wIChzMSwgczIpIDogc3RybmNtcCAoczEsIHMyLCBuKSkpDQojIDk0NCAiL25mcy9lLW5m cy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4v bGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9iaXRz L3N0cmluZzIuaCIgMyA0DQojZGVmaW5lIHN0cmNzcG4ocyxyZWplY3QpIF9fZXh0ZW5zaW9uX18g KHsgY2hhciBfX3IwLCBfX3IxLCBfX3IyOyAoX19idWlsdGluX2NvbnN0YW50X3AgKHJlamVjdCkg JiYgX19zdHJpbmcyXzFicHRyX3AgKHJlamVjdCkgPyAoKF9fYnVpbHRpbl9jb25zdGFudF9wIChz KSAmJiBfX3N0cmluZzJfMWJwdHJfcCAocykpID8gX19idWlsdGluX3N0cmNzcG4gKHMsIHJlamVj dCkgOiAoKF9fcjAgPSAoKF9fY29uc3QgY2hhciAqKSAocmVqZWN0KSlbMF0sIF9fcjAgPT0gJ1ww JykgPyBzdHJsZW4gKHMpIDogKChfX3IxID0gKChfX2NvbnN0IGNoYXIgKikgKHJlamVjdCkpWzFd LCBfX3IxID09ICdcMCcpID8gX19zdHJjc3BuX2MxIChzLCBfX3IwKSA6ICgoX19yMiA9ICgoX19j b25zdCBjaGFyICopIChyZWplY3QpKVsyXSwgX19yMiA9PSAnXDAnKSA/IF9fc3RyY3Nwbl9jMiAo cywgX19yMCwgX19yMSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKHJlamVjdCkpWzNdID09ICdcMCcg PyBfX3N0cmNzcG5fYzMgKHMsIF9fcjAsIF9fcjEsIF9fcjIpIDogX19idWlsdGluX3N0cmNzcG4g KHMsIHJlamVjdCkpKSkpKSA6IF9fYnVpbHRpbl9zdHJjc3BuIChzLCByZWplY3QpKTsgfSkNCiMg OTc4ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIt eDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNs dWRlLWZpeGVkL2JpdHMvc3RyaW5nMi5oIiAzIDQNCmlubGluZSBzaXplX3QgX19zdHJjc3BuX2Mx IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fcmVqZWN0KTsNCmlubGluZSBzaXplX3QNCl9fc3Ry Y3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX3JlamVjdCkNCnsNCiAgcmVnaXN0ZXIg c2l6ZV90IF9fcmVzdWx0ID0gMDsNCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gIT0gJ1wwJyAmJiBf X3NbX19yZXN1bHRdICE9IF9fcmVqZWN0KQ0KICAgICsrX19yZXN1bHQ7DQogIHJldHVybiBfX3Jl c3VsdDsNCn0NCg0KaW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19z LCBpbnQgX19yZWplY3QxLA0KICAgICAgICAgaW50IF9fcmVqZWN0Mik7DQppbmxpbmUgc2l6ZV90 DQpfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19yZWplY3QxLCBpbnQgX19y ZWplY3QyKQ0Kew0KICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOw0KICB3aGlsZSAoX19z W19fcmVzdWx0XSAhPSAnXDAnICYmIF9fc1tfX3Jlc3VsdF0gIT0gX19yZWplY3QxDQogICYmIF9f c1tfX3Jlc3VsdF0gIT0gX19yZWplY3QyKQ0KICAgICsrX19yZXN1bHQ7DQogIHJldHVybiBfX3Jl c3VsdDsNCn0NCg0KaW5saW5lIHNpemVfdCBfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19z LCBpbnQgX19yZWplY3QxLA0KICAgICAgICAgaW50IF9fcmVqZWN0MiwgaW50IF9fcmVqZWN0Myk7 DQppbmxpbmUgc2l6ZV90DQpfX3N0cmNzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19y ZWplY3QxLCBpbnQgX19yZWplY3QyLA0KICAgICAgIGludCBfX3JlamVjdDMpDQp7DQogIHJlZ2lz dGVyIHNpemVfdCBfX3Jlc3VsdCA9IDA7DQogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcg JiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDENCiAgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl amVjdDIgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdDMpDQogICAgKytfX3Jlc3VsdDsNCiAg cmV0dXJuIF9fcmVzdWx0Ow0KfQ0KIyAxMDIwICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmlj X2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtu b3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3RyaW5nMi5oIiAzIDQNCiNk ZWZpbmUgc3Ryc3BuKHMsYWNjZXB0KSBfX2V4dGVuc2lvbl9fICh7IGNoYXIgX19hMCwgX19hMSwg X19hMjsgKF9fYnVpbHRpbl9jb25zdGFudF9wIChhY2NlcHQpICYmIF9fc3RyaW5nMl8xYnB0cl9w IChhY2NlcHQpID8gKChfX2J1aWx0aW5fY29uc3RhbnRfcCAocykgJiYgX19zdHJpbmcyXzFicHRy X3AgKHMpKSA/IF9fYnVpbHRpbl9zdHJzcG4gKHMsIGFjY2VwdCkgOiAoKF9fYTAgPSAoKF9fY29u c3QgY2hhciAqKSAoYWNjZXB0KSlbMF0sIF9fYTAgPT0gJ1wwJykgPyAoKHZvaWQpIChzKSwgMCkg OiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoYWNjZXB0KSlbMV0sIF9fYTEgPT0gJ1wwJykg PyBfX3N0cnNwbl9jMSAocywgX19hMCkgOiAoKF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAoYWNj ZXB0KSlbMl0sIF9fYTIgPT0gJ1wwJykgPyBfX3N0cnNwbl9jMiAocywgX19hMCwgX19hMSkgOiAo KChfX2NvbnN0IGNoYXIgKikgKGFjY2VwdCkpWzNdID09ICdcMCcgPyBfX3N0cnNwbl9jMyAocywg X19hMCwgX19hMSwgX19hMikgOiBfX2J1aWx0aW5fc3Ryc3BuIChzLCBhY2NlcHQpKSkpKSkgOiBf X2J1aWx0aW5fc3Ryc3BuIChzLCBhY2NlcHQpKTsgfSkNCiMgMTA1NCAiL25mcy9lLW5mcy0wMS91 MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2dj Yy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9iaXRzL3N0cmlu ZzIuaCIgMyA0DQppbmxpbmUgc2l6ZV90IF9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIgKl9fcywg aW50IF9fYWNjZXB0KTsNCmlubGluZSBzaXplX3QNCl9fc3Ryc3BuX2MxIChfX2NvbnN0IGNoYXIg Kl9fcywgaW50IF9fYWNjZXB0KQ0Kew0KICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOw0K DQogIHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0KQ0KICAgICsrX19yZXN1bHQ7DQog IHJldHVybiBfX3Jlc3VsdDsNCn0NCg0KaW5saW5lIHNpemVfdCBfX3N0cnNwbl9jMiAoX19jb25z dCBjaGFyICpfX3MsIGludCBfX2FjY2VwdDEsDQogICAgICAgIGludCBfX2FjY2VwdDIpOw0KaW5s aW5lIHNpemVfdA0KX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQx LCBpbnQgX19hY2NlcHQyKQ0Kew0KICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOw0KDQog IHdoaWxlIChfX3NbX19yZXN1bHRdID09IF9fYWNjZXB0MSB8fCBfX3NbX19yZXN1bHRdID09IF9f YWNjZXB0MikNCiAgICArK19fcmVzdWx0Ow0KICByZXR1cm4gX19yZXN1bHQ7DQp9DQoNCmlubGlu ZSBzaXplX3QgX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLA0K ICAgICAgICBpbnQgX19hY2NlcHQyLCBpbnQgX19hY2NlcHQzKTsNCmlubGluZSBzaXplX3QNCl9f c3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwgaW50IF9fYWNjZXB0 MiwgaW50IF9fYWNjZXB0MykNCnsNCiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsNCg0K ICB3aGlsZSAoX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDEgfHwgX19zW19fcmVzdWx0XSA9PSBf X2FjY2VwdDINCiAgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDMpDQogICAgKytfX3Jlc3Vs dDsNCiAgcmV0dXJuIF9fcmVzdWx0Ow0KfQ0KDQoNCg0KDQoNCg0KDQojZGVmaW5lIHN0cnBicmso cyxhY2NlcHQpIF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOyAoX19idWls dGluX2NvbnN0YW50X3AgKGFjY2VwdCkgJiYgX19zdHJpbmcyXzFicHRyX3AgKGFjY2VwdCkgPyAo KF9fYnVpbHRpbl9jb25zdGFudF9wIChzKSAmJiBfX3N0cmluZzJfMWJwdHJfcCAocykpID8gX19i dWlsdGluX3N0cnBicmsgKHMsIGFjY2VwdCkgOiAoKF9fYTAgPSAoKF9fY29uc3QgY2hhciAqKSAo YWNjZXB0KSlbMF0sIF9fYTAgPT0gJ1wwJykgPyAoKHZvaWQpIChzKSwgKGNoYXIgKikgTlVMTCkg OiAoKF9fYTEgPSAoKF9fY29uc3QgY2hhciAqKSAoYWNjZXB0KSlbMV0sIF9fYTEgPT0gJ1wwJykg PyBfX2J1aWx0aW5fc3RyY2hyIChzLCBfX2EwKSA6ICgoX19hMiA9ICgoX19jb25zdCBjaGFyICop IChhY2NlcHQpKVsyXSwgX19hMiA9PSAnXDAnKSA/IF9fc3RycGJya19jMiAocywgX19hMCwgX19h MSkgOiAoKChfX2NvbnN0IGNoYXIgKikgKGFjY2VwdCkpWzNdID09ICdcMCcgPyBfX3N0cnBicmtf YzMgKHMsIF9fYTAsIF9fYTEsIF9fYTIpIDogX19idWlsdGluX3N0cnBicmsgKHMsIGFjY2VwdCkp KSkpKSA6IF9fYnVpbHRpbl9zdHJwYnJrIChzLCBhY2NlcHQpKTsgfSkNCiMgMTEzMCAiL25mcy9l LW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4v Li4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9i aXRzL3N0cmluZzIuaCIgMyA0DQppbmxpbmUgY2hhciAqX19zdHJwYnJrX2MyIChfX2NvbnN0IGNo YXIgKl9fcywgaW50IF9fYWNjZXB0MSwNCiAgICAgICAgIGludCBfX2FjY2VwdDIpOw0KaW5saW5l IGNoYXIgKg0KX19zdHJwYnJrX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYWNjZXB0MSwg aW50IF9fYWNjZXB0MikNCnsNCg0KICB3aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19h Y2NlcHQxICYmICpfX3MgIT0gX19hY2NlcHQyKQ0KICAgICsrX19zOw0KICByZXR1cm4gKl9fcyA9 PSAnXDAnID8gKCh2b2lkICopMCkgOiAoY2hhciAqKSAoc2l6ZV90KSBfX3M7DQp9DQoNCmlubGlu ZSBjaGFyICpfX3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLA0K ICAgICAgICAgaW50IF9fYWNjZXB0MiwgaW50IF9fYWNjZXB0Myk7DQppbmxpbmUgY2hhciAqDQpf X3N0cnBicmtfYzMgKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19hY2NlcHQxLCBpbnQgX19hY2Nl cHQyLA0KICAgICAgIGludCBfX2FjY2VwdDMpDQp7DQoNCiAgd2hpbGUgKCpfX3MgIT0gJ1wwJyAm JiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0Mg0KICAmJiAqX19zICE9IF9f YWNjZXB0MykNCiAgICArK19fczsNCiAgcmV0dXJuICpfX3MgPT0gJ1wwJyA/ICgodm9pZCAqKTAp IDogKGNoYXIgKikgKHNpemVfdCkgX19zOw0KfQ0KIyAxMTczICIvbmZzL2UtbmZzLTAxL3UxMC9z Y2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4 Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3RyaW5nMi5o IiAzIDQNCiNkZWZpbmUgX19zdHJ0b2tfcihzLHNlcCxuZXh0cCkgKF9fZXh0ZW5zaW9uX18gKF9f YnVpbHRpbl9jb25zdGFudF9wIChzZXApICYmIF9fc3RyaW5nMl8xYnB0cl9wIChzZXApID8gKCgo X19jb25zdCBjaGFyICopIChzZXApKVswXSAhPSAnXDAnICYmICgoX19jb25zdCBjaGFyICopIChz ZXApKVsxXSA9PSAnXDAnID8gX19zdHJ0b2tfcl8xYyAocywgKChfX2NvbnN0IGNoYXIgKikgKHNl cCkpWzBdLCBuZXh0cCkgOiBfX3N0cnRva19yIChzLCBzZXAsIG5leHRwKSkgOiBfX3N0cnRva19y IChzLCBzZXAsIG5leHRwKSkpDQojIDExODIgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNf bGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25v d24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUtZml4ZWQvYml0cy9zdHJpbmcyLmgiIDMgNA0KaW5s aW5lIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hhciAqKl9f bmV4dHApOw0KaW5saW5lIGNoYXIgKg0KX19zdHJ0b2tfcl8xYyAoY2hhciAqX19zLCBjaGFyIF9f c2VwLCBjaGFyICoqX19uZXh0cCkNCnsNCiAgY2hhciAqX19yZXN1bHQ7DQogIGlmIChfX3MgPT0g KCh2b2lkICopMCkpDQogICAgX19zID0gKl9fbmV4dHA7DQogIHdoaWxlICgqX19zID09IF9fc2Vw KQ0KICAgICsrX19zOw0KICBfX3Jlc3VsdCA9ICgodm9pZCAqKTApOw0KICBpZiAoKl9fcyAhPSAn XDAnKQ0KICAgIHsNCiAgICAgIF9fcmVzdWx0ID0gX19zKys7DQogICAgICB3aGlsZSAoKl9fcyAh PSAnXDAnKQ0KIGlmICgqX19zKysgPT0gX19zZXApDQogICB7DQogICAgIF9fc1stMV0gPSAnXDAn Ow0KICAgICBicmVhazsNCiAgIH0NCiAgICAgICpfX25leHRwID0gX19zOw0KICAgIH0NCiAgcmV0 dXJuIF9fcmVzdWx0Ow0KfQ0KDQojZGVmaW5lIHN0cnRva19yKHMsc2VwLG5leHRwKSBfX3N0cnRv a19yIChzLCBzZXAsIG5leHRwKQ0KDQoNCg0KDQoNCg0KDQpleHRlcm4gY2hhciAqX19zdHJzZXBf ZyAoY2hhciAqKl9fc3RyaW5ncCwgX19jb25zdCBjaGFyICpfX2RlbGltKTsNCiNkZWZpbmUgX19z dHJzZXAocyxyZWplY3QpIF9fZXh0ZW5zaW9uX18gKHsgY2hhciBfX3IwLCBfX3IxLCBfX3IyOyAo X19idWlsdGluX2NvbnN0YW50X3AgKHJlamVjdCkgJiYgX19zdHJpbmcyXzFicHRyX3AgKHJlamVj dCkgJiYgKF9fcjAgPSAoKF9fY29uc3QgY2hhciAqKSAocmVqZWN0KSlbMF0sICgoX19jb25zdCBj aGFyICopIChyZWplY3QpKVswXSAhPSAnXDAnKSA/ICgoX19yMSA9ICgoX19jb25zdCBjaGFyICop IChyZWplY3QpKVsxXSwgKChfX2NvbnN0IGNoYXIgKikgKHJlamVjdCkpWzFdID09ICdcMCcpID8g X19zdHJzZXBfMWMgKHMsIF9fcjApIDogKChfX3IyID0gKChfX2NvbnN0IGNoYXIgKikgKHJlamVj dCkpWzJdLCBfX3IyID09ICdcMCcpID8gX19zdHJzZXBfMmMgKHMsIF9fcjAsIF9fcjEpIDogKCgo X19jb25zdCBjaGFyICopIChyZWplY3QpKVszXSA9PSAnXDAnID8gX19zdHJzZXBfM2MgKHMsIF9f cjAsIF9fcjEsIF9fcjIpIDogX19zdHJzZXBfZyAocywgcmVqZWN0KSkpKSA6IF9fc3Ryc2VwX2cg KHMsIHJlamVjdCkpOyB9KQ0KIyAxMjMyICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xp bnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3du LWxpbnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3RyaW5nMi5oIiAzIDQNCmlubGlu ZSBjaGFyICpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCk7DQppbmxpbmUg Y2hhciAqDQpfX3N0cnNlcF8xYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdCkNCnsNCiAgcmVn aXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOw0KICBpZiAoX19yZXR2YWwgIT0gKCh2b2lkICop MCkgJiYgKCpfX3MgPSAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmVq ZWN0KSAmJiAhX19idWlsdGluX2NvbnN0YW50X3AgKF9fcmV0dmFsKSAmJiAoX19yZWplY3QpID09 ICdcMCcgPyAoY2hhciAqKSBfX3Jhd21lbWNociAoX19yZXR2YWwsIF9fcmVqZWN0KSA6IF9fYnVp bHRpbl9zdHJjaHIgKF9fcmV0dmFsLCBfX3JlamVjdCkpKSkgIT0gKCh2b2lkICopMCkpDQogICAg KigqX19zKSsrID0gJ1wwJzsNCiAgcmV0dXJuIF9fcmV0dmFsOw0KfQ0KDQppbmxpbmUgY2hhciAq X19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0Mik7 DQppbmxpbmUgY2hhciAqDQpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEs IGNoYXIgX19yZWplY3QyKQ0Kew0KICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7DQog IGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkNCiAgICB7DQogICAgICByZWdpc3RlciBjaGFy ICpfX2NwID0gX19yZXR2YWw7DQogICAgICB3aGlsZSAoMSkNCiB7DQogICBpZiAoKl9fY3AgPT0g J1wwJykNCiAgICAgew0KICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsNCiAgIGJyZWFrOw0KICAg ICB9DQogICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MikNCiAg ICAgew0KICAgICAgICpfX2NwKysgPSAnXDAnOw0KICAgICAgIGJyZWFrOw0KICAgICB9DQogICAr K19fY3A7DQogfQ0KICAgICAgKl9fcyA9IF9fY3A7DQogICAgfQ0KICByZXR1cm4gX19yZXR2YWw7 DQp9DQoNCmlubGluZSBjaGFyICpfX3N0cnNlcF8zYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVj dDEsIGNoYXIgX19yZWplY3QyLA0KICAgICAgIGNoYXIgX19yZWplY3QzKTsNCmlubGluZSBjaGFy ICoNCl9fc3Ryc2VwXzNjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVj dDIsIGNoYXIgX19yZWplY3QzKQ0Kew0KICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7 DQogIGlmIChfX3JldHZhbCAhPSAoKHZvaWQgKikwKSkNCiAgICB7DQogICAgICByZWdpc3RlciBj aGFyICpfX2NwID0gX19yZXR2YWw7DQogICAgICB3aGlsZSAoMSkNCiB7DQogICBpZiAoKl9fY3Ag PT0gJ1wwJykNCiAgICAgew0KICAgICAgIF9fY3AgPSAoKHZvaWQgKikwKTsNCiAgIGJyZWFrOw0K ICAgICB9DQogICBpZiAoKl9fY3AgPT0gX19yZWplY3QxIHx8ICpfX2NwID09IF9fcmVqZWN0MiB8 fCAqX19jcCA9PSBfX3JlamVjdDMpDQogICAgIHsNCiAgICAgICAqX19jcCsrID0gJ1wwJzsNCiAg ICAgICBicmVhazsNCiAgICAgfQ0KICAgKytfX2NwOw0KIH0NCiAgICAgICpfX3MgPSBfX2NwOw0K ICAgIH0NCiAgcmV0dXJuIF9fcmV0dmFsOw0KfQ0KDQojZGVmaW5lIHN0cnNlcChzLHJlamVjdCkg X19zdHJzZXAgKHMsIHJlamVjdCkNCiMgMTMwNyAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZp Y19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5r bm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9iaXRzL3N0cmluZzIuaCIgMyA0DQoj ZGVmaW5lIF9fbmVlZF9tYWxsb2NfYW5kX2NhbGxvYyANCiMgMSAiLi4vbGliL3N0ZGxpYi5oIiAx IDMgNA0KIyAyMCAiLi4vbGliL3N0ZGxpYi5oIiAzIDQNCiAgICAgICANCiMgMjEgIi4uL2xpYi9z dGRsaWIuaCIgMw0KDQoNCg0KDQoNCg0KIyAxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDEgMyA0 DQojIDI4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNA0KI2RlZmluZSBfX25lZWRfc2l6ZV90 IA0KDQoNCg0KDQojIDEgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0 L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251 LzQuNy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0DQojIDIzNSAiL25mcy9lLW5mcy0wMS91MTAv c2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94 ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRkZWYuaCIgMyA0DQojdW5k ZWYgX19uZWVkX3NpemVfdA0KIyA0MDkgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGlu dXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24t bGludXgtZ251LzQuNy4yL2luY2x1ZGUvc3RkZGVmLmgiIDMgNA0KI3VuZGVmIF9fbmVlZF9OVUxM DQojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0DQoNCg0KIyA1ODYgIi91c3IvaW5j bHVkZS9zdGRsaWIuaCIgMyA0DQojZGVmaW5lIF9fbWFsbG9jX2FuZF9jYWxsb2NfZGVmaW5lZCAN Cg0KDQpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18g KChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCmV4dGVybiB2b2lkICpjYWxsb2MgKHNpemVf dCBfX25tZW1iLCBzaXplX3QgX19zaXplKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSk7DQoNCiMgOTc1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNA0K I3VuZGVmIF9fbmVlZF9tYWxsb2NfYW5kX2NhbGxvYw0KDQoNCiMgMjggIi4uL2xpYi9zdGRsaWIu aCIgMiAzDQojIDEzMDkgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0 L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251 LzQuNy4yL2luY2x1ZGUtZml4ZWQvYml0cy9zdHJpbmcyLmgiIDIgMyA0DQoNCg0KDQoNCmV4dGVy biBjaGFyICpfX3N0cmR1cCAoX19jb25zdCBjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsNCiNkZWZpbmUgX19z dHJkdXAocykgKF9fZXh0ZW5zaW9uX18gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzKSAmJiBfX3N0 cmluZzJfMWJwdHJfcCAocykgPyAoKChfX2NvbnN0IGNoYXIgKikgKHMpKVswXSA9PSAnXDAnID8g KGNoYXIgKikgY2FsbG9jICgxLCAxKSA6ICh7IHNpemVfdCBfX2xlbiA9IHN0cmxlbiAocykgKyAx OyBjaGFyICpfX3JldHZhbCA9IChjaGFyICopIG1hbGxvYyAoX19sZW4pOyBpZiAoX19yZXR2YWwg IT0gTlVMTCkgX19yZXR2YWwgPSAoY2hhciAqKSBtZW1jcHkgKF9fcmV0dmFsLCBzLCBfX2xlbik7 IF9fcmV0dmFsOyB9KSkgOiBfX3N0cmR1cCAocykpKQ0KIyAxMzI2ICIvbmZzL2UtbmZzLTAxL3Ux MC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2Nj L3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlLWZpeGVkL2JpdHMvc3RyaW5n Mi5oIiAzIDQNCiNkZWZpbmUgc3RyZHVwKHMpIF9fc3RyZHVwIChzKQ0KDQoNCg0KDQoNCmV4dGVy biBjaGFyICpfX3N0cm5kdXAgKF9fY29uc3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pDQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxv Y19fKSk7DQojZGVmaW5lIF9fc3RybmR1cChzLG4pIChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5f Y29uc3RhbnRfcCAocykgJiYgX19zdHJpbmcyXzFicHRyX3AgKHMpID8gKCgoX19jb25zdCBjaGFy ICopIChzKSlbMF0gPT0gJ1wwJyA/IChjaGFyICopIGNhbGxvYyAoMSwgMSkgOiAoeyBzaXplX3Qg X19sZW4gPSBzdHJsZW4gKHMpICsgMTsgc2l6ZV90IF9fbiA9IChuKTsgY2hhciAqX19yZXR2YWw7 IGlmIChfX24gPCBfX2xlbikgX19sZW4gPSBfX24gKyAxOyBfX3JldHZhbCA9IChjaGFyICopIG1h bGxvYyAoX19sZW4pOyBpZiAoX19yZXR2YWwgIT0gTlVMTCkgeyBfX3JldHZhbFtfX2xlbiAtIDFd ID0gJ1wwJzsgX19yZXR2YWwgPSAoY2hhciAqKSBtZW1jcHkgKF9fcmV0dmFsLCBzLCBfX2xlbiAt IDEpOyB9IF9fcmV0dmFsOyB9KSkgOiBfX3N0cm5kdXAgKHMsIG4pKSkNCiMgMTM1NCAiL25mcy9l LW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4v Li4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9i aXRzL3N0cmluZzIuaCIgMyA0DQojZGVmaW5lIHN0cm5kdXAocyxuKSBfX3N0cm5kdXAgKHMsIG4p DQoNCg0KDQoNCg0KDQojdW5kZWYgX19TVFJJTkdfSU5MSU5FDQojIDQxOCAiL3Vzci9pbmNsdWRl L3N0cmluZy5oIiAyIDMgNA0KDQoNCg0KDQojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzMu aCIgMSAzIDQNCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL3N0cmluZzMuaCIgMyA0DQojdW5kZWYg bWVtY3B5DQojdW5kZWYgbWVtbW92ZQ0KI3VuZGVmIG1lbXNldA0KI3VuZGVmIHN0cmNhdA0KI3Vu ZGVmIHN0cmNweQ0KI3VuZGVmIHN0cm5jYXQNCiN1bmRlZiBzdHJuY3B5DQoNCiN1bmRlZiBtZW1w Y3B5DQojdW5kZWYgc3RwY3B5DQoNCg0KI3VuZGVmIGJjb3B5DQojdW5kZWYgYnplcm8NCg0KDQoN CiNkZWZpbmUgbWVtY3B5KGRlc3Qsc3JjLGxlbikgKChfX2JvczAgKGRlc3QpICE9IChzaXplX3Qp IC0xKSA/IF9fYnVpbHRpbl9fX21lbWNweV9jaGsgKGRlc3QsIHNyYywgbGVuLCBfX2JvczAgKGRl c3QpKSA6IF9fbWVtY3B5X2ljaGsgKGRlc3QsIHNyYywgbGVuKSkNCg0KDQoNCnN0YXRpYyBfX2lu bGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSB2b2lkICoNCl9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpIF9fbWVtY3B5X2ljaGsgKHZvaWQgKl9fcmVzdHJpY3QgX19k ZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX2xlbikNCg0Kew0K ICByZXR1cm4gX19idWlsdGluX19fbWVtY3B5X2NoayAoX19kZXN0LCBfX3NyYywgX19sZW4sIF9f YnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19kZXN0LCAwKSk7DQp9DQoNCg0KI2RlZmluZSBtZW1tb3Zl KGRlc3Qsc3JjLGxlbikgKChfX2JvczAgKGRlc3QpICE9IChzaXplX3QpIC0xKSA/IF9fYnVpbHRp bl9fX21lbW1vdmVfY2hrIChkZXN0LCBzcmMsIGxlbiwgX19ib3MwIChkZXN0KSkgOiBfX21lbW1v dmVfaWNoayAoZGVzdCwgc3JjLCBsZW4pKQ0KDQoNCg0Kc3RhdGljIF9faW5saW5lIF9fYXR0cmli dXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQgKg0KX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fKSkgX19tZW1tb3ZlX2ljaGsgKHZvaWQgKl9fZGVzdCwgX19jb25zdCB2b2lkICpfX3Ny Yywgc2l6ZV90IF9fbGVuKQ0Kew0KICByZXR1cm4gX19idWlsdGluX19fbWVtbW92ZV9jaGsgKF9f ZGVzdCwgX19zcmMsIF9fbGVuLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fZGVzdCwgMCkpOw0K fQ0KDQoNCg0KI2RlZmluZSBtZW1wY3B5KGRlc3Qsc3JjLGxlbikgKChfX2JvczAgKGRlc3QpICE9 IChzaXplX3QpIC0xKSA/IF9fYnVpbHRpbl9fX21lbXBjcHlfY2hrIChkZXN0LCBzcmMsIGxlbiwg X19ib3MwIChkZXN0KSkgOiBfX21lbXBjcHlfaWNoayAoZGVzdCwgc3JjLCBsZW4pKQ0KDQoNCg0K c3RhdGljIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIHZvaWQg Kg0KX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19tZW1wY3B5X2ljaGsgKHZvaWQgKl9f cmVzdHJpY3QgX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf X2xlbikNCg0Kew0KICByZXR1cm4gX19idWlsdGluX19fbWVtcGNweV9jaGsgKF9fZGVzdCwgX19z cmMsIF9fbGVuLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fZGVzdCwgMCkpOw0KfQ0KIyA4NSAi L3Vzci9pbmNsdWRlL2JpdHMvc3RyaW5nMy5oIiAzIDQNCmV4dGVybiB2b2lkIF9fd2Fybl9tZW1z ZXRfemVyb19sZW4gKHZvaWQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7DQojZGVmaW5lIG1lbXNldChkZXN0LGNoLGxlbikgKF9fYnVpbHRpbl9jb25zdGFudF9w IChsZW4pICYmIChsZW4pID09IDAgPyAoX193YXJuX21lbXNldF96ZXJvX2xlbiAoKSwgKHZvaWQp IChjaCksICh2b2lkKSAobGVuKSwgKHZvaWQgKikgKGRlc3QpKSA6ICgoX19ib3MwIChkZXN0KSAh PSAoc2l6ZV90KSAtMSkgPyBfX2J1aWx0aW5fX19tZW1zZXRfY2hrIChkZXN0LCBjaCwgbGVuLCBf X2JvczAgKGRlc3QpKSA6IF9fbWVtc2V0X2ljaGsgKGRlc3QsIGNoLCBsZW4pKSkNCg0KDQoNCg0K DQpzdGF0aWMgX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgdm9p ZCAqDQpfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX21lbXNldF9pY2hrICh2b2lkICpf X2Rlc3QsIGludCBfX2NoLCBzaXplX3QgX19sZW4pDQp7DQogIHJldHVybiBfX2J1aWx0aW5fX19t ZW1zZXRfY2hrIChfX2Rlc3QsIF9fY2gsIF9fbGVuLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9f ZGVzdCwgMCkpOw0KfQ0KDQoNCiNkZWZpbmUgYmNvcHkoc3JjLGRlc3QsbGVuKSAoKHZvaWQpICgo X19ib3MwIChkZXN0KSAhPSAoc2l6ZV90KSAtMSkgPyBfX2J1aWx0aW5fX19tZW1tb3ZlX2NoayAo ZGVzdCwgc3JjLCBsZW4sIF9fYm9zMCAoZGVzdCkpIDogX19tZW1tb3ZlX2ljaGsgKGRlc3QsIHNy YywgbGVuKSkpDQoNCg0KDQojZGVmaW5lIGJ6ZXJvKGRlc3QsbGVuKSAoKHZvaWQpICgoX19ib3Mw IChkZXN0KSAhPSAoc2l6ZV90KSAtMSkgPyBfX2J1aWx0aW5fX19tZW1zZXRfY2hrIChkZXN0LCAn XDAnLCBsZW4sIF9fYm9zMCAoZGVzdCkpIDogX19tZW1zZXRfaWNoayAoZGVzdCwgJ1wwJywgbGVu KSkpDQoNCg0KDQoNCg0KDQojZGVmaW5lIHN0cmNweShkZXN0LHNyYykgKChfX2JvcyAoZGVzdCkg IT0gKHNpemVfdCkgLTEpID8gX19idWlsdGluX19fc3RyY3B5X2NoayAoZGVzdCwgc3JjLCBfX2Jv cyAoZGVzdCkpIDogX19zdHJjcHlfaWNoayAoZGVzdCwgc3JjKSkNCg0KDQoNCnN0YXRpYyBfX2lu bGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBjaGFyICoNCl9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpIF9fc3RyY3B5X2ljaGsgKGNoYXIgKl9fcmVzdHJpY3QgX19k ZXN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpDQp7DQogIHJldHVybiBfX2J1aWx0 aW5fX19zdHJjcHlfY2hrIChfX2Rlc3QsIF9fc3JjLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9f ZGVzdCwgMiA+IDEpKTsNCn0NCg0KDQoNCiNkZWZpbmUgc3RwY3B5KGRlc3Qsc3JjKSAoKF9fYm9z IChkZXN0KSAhPSAoc2l6ZV90KSAtMSkgPyBfX2J1aWx0aW5fX19zdHBjcHlfY2hrIChkZXN0LCBz cmMsIF9fYm9zIChkZXN0KSkgOiBfX3N0cGNweV9pY2hrIChkZXN0LCBzcmMpKQ0KDQoNCg0Kc3Rh dGljIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIGNoYXIgKg0K X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19zdHBjcHlfaWNoayAoY2hhciAqX19yZXN0 cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykNCnsNCiAgcmV0dXJu IF9fYnVpbHRpbl9fX3N0cGNweV9jaGsgKF9fZGVzdCwgX19zcmMsIF9fYnVpbHRpbl9vYmplY3Rf c2l6ZSAoX19kZXN0LCAyID4gMSkpOw0KfQ0KDQoNCg0KI2RlZmluZSBzdHJuY3B5KGRlc3Qsc3Jj LGxlbikgKChfX2JvcyAoZGVzdCkgIT0gKHNpemVfdCkgLTEpID8gX19idWlsdGluX19fc3RybmNw eV9jaGsgKGRlc3QsIHNyYywgbGVuLCBfX2JvcyAoZGVzdCkpIDogX19zdHJuY3B5X2ljaGsgKGRl c3QsIHNyYywgbGVuKSkNCg0KDQoNCnN0YXRpYyBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19h bHdheXNfaW5saW5lX18pKSBjaGFyICoNCl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9f c3RybmNweV9pY2hrIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fc3JjLCBzaXplX3QgX19sZW4pDQoNCnsNCiAgcmV0dXJuIF9fYnVpbHRpbl9fX3N0 cm5jcHlfY2hrIChfX2Rlc3QsIF9fc3JjLCBfX2xlbiwgX19idWlsdGluX29iamVjdF9zaXplIChf X2Rlc3QsIDIgPiAxKSk7DQp9DQoNCg0KDQpleHRlcm4gY2hhciAqX19zdHBuY3B5X2NoayAoY2hh ciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLA0KICAgICAgIHNpemVf dCBfX2Rlc3RsZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KZXh0ZXJuIGNoYXIg Kl9fc3RwbmNweV9hbGlhcyAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXpl X3QgX19uKSBfX2FzbV9fICgiIiAic3RwbmNweSIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsNCg0KZXh0ZXJuIF9faW5s aW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIGNoYXIgKg0KX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSkgc3RwbmNweSAoY2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIg Kl9fc3JjLCBzaXplX3QgX19uKQ0Kew0KICBpZiAoX19idWlsdGluX29iamVjdF9zaXplIChfX2Rl c3QsIDIgPiAxKSAhPSAoc2l6ZV90KSAtMQ0KICAgICAgJiYgKCFfX2J1aWx0aW5fY29uc3RhbnRf cCAoX19uKSB8fCBfX24gPD0gX19idWlsdGluX29iamVjdF9zaXplIChfX2Rlc3QsIDIgPiAxKSkp DQogICAgcmV0dXJuIF9fc3RwbmNweV9jaGsgKF9fZGVzdCwgX19zcmMsIF9fbiwgX19idWlsdGlu X29iamVjdF9zaXplIChfX2Rlc3QsIDIgPiAxKSk7DQogIHJldHVybiBfX3N0cG5jcHlfYWxpYXMg KF9fZGVzdCwgX19zcmMsIF9fbik7DQp9DQoNCg0KI2RlZmluZSBzdHJjYXQoZGVzdCxzcmMpICgo X19ib3MgKGRlc3QpICE9IChzaXplX3QpIC0xKSA/IF9fYnVpbHRpbl9fX3N0cmNhdF9jaGsgKGRl c3QsIHNyYywgX19ib3MgKGRlc3QpKSA6IF9fc3RyY2F0X2ljaGsgKGRlc3QsIHNyYykpDQoNCg0K DQpzdGF0aWMgX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgY2hh ciAqDQpfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX3N0cmNhdF9pY2hrIChjaGFyICpf X3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQ0Kew0KICBy ZXR1cm4gX19idWlsdGluX19fc3RyY2F0X2NoayAoX19kZXN0LCBfX3NyYywgX19idWlsdGluX29i amVjdF9zaXplIChfX2Rlc3QsIDIgPiAxKSk7DQp9DQoNCg0KI2RlZmluZSBzdHJuY2F0KGRlc3Qs c3JjLGxlbikgKChfX2JvcyAoZGVzdCkgIT0gKHNpemVfdCkgLTEpID8gX19idWlsdGluX19fc3Ry bmNhdF9jaGsgKGRlc3QsIHNyYywgbGVuLCBfX2JvcyAoZGVzdCkpIDogX19zdHJuY2F0X2ljaGsg KGRlc3QsIHNyYywgbGVuKSkNCg0KDQoNCnN0YXRpYyBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgo X19hbHdheXNfaW5saW5lX18pKSBjaGFyICoNCl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp IF9fc3RybmNhdF9pY2hrIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19sZW4pDQoNCnsNCiAgcmV0dXJuIF9fYnVpbHRpbl9f X3N0cm5jYXRfY2hrIChfX2Rlc3QsIF9fc3JjLCBfX2xlbiwgX19idWlsdGluX29iamVjdF9zaXpl IChfX2Rlc3QsIDIgPiAxKSk7DQp9DQojIDQyMyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMg NA0KDQoNCg0KDQojIDE5MCAiLi4vc3JjL2NvbmZfcG9zdC5oIiAyDQojIDEgIi4uL2xpYi9zdGRs aWIuaCIgMQ0KIyAyMCAiLi4vbGliL3N0ZGxpYi5oIg0KICAgICAgIA0KIyAyMSAiLi4vbGliL3N0 ZGxpYi5oIiAzDQojIDM1ICIuLi9saWIvc3RkbGliLmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL3N0 ZGxpYi5oIiAxIDMgNA0KIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQNCiNkZWZpbmUg X19uZWVkX3NpemVfdCANCg0KI2RlZmluZSBfX25lZWRfd2NoYXJfdCANCiNkZWZpbmUgX19uZWVk X05VTEwgDQoNCiMgMSAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQv Z2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUv NC43LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQNCiMgMjM1ICIvbmZzL2UtbmZzLTAxL3UxMC9z Y2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4 Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQNCiN1bmRl ZiBfX25lZWRfc2l6ZV90DQojIDI2NCAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51 eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1s aW51eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRkZWYuaCIgMyA0DQojZGVmaW5lIF9fd2NoYXJfdF9f IA0KI2RlZmluZSBfX1dDSEFSX1RfXyANCiNkZWZpbmUgX1dDSEFSX1QgDQojZGVmaW5lIF9UX1dD SEFSXyANCiNkZWZpbmUgX1RfV0NIQVIgDQojZGVmaW5lIF9fV0NIQVJfVCANCiNkZWZpbmUgX1dD SEFSX1RfIA0KI2RlZmluZSBfQlNEX1dDSEFSX1RfIA0KI2RlZmluZSBfV0NIQVJfVF9ERUZJTkVE XyANCiNkZWZpbmUgX1dDSEFSX1RfREVGSU5FRCANCiNkZWZpbmUgX1dDSEFSX1RfSCANCiNkZWZp bmUgX19faW50X3djaGFyX3RfaCANCiNkZWZpbmUgX19JTlRfV0NIQVJfVF9IIA0KI2RlZmluZSBf R0NDX1dDSEFSX1QgDQojZGVmaW5lIF9XQ0hBUl9UX0RFQ0xBUkVEIA0KIyAyOTEgIi9uZnMvZS1u ZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4u L2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUvc3RkZGVmLmgi IDMgNA0KI3VuZGVmIF9CU0RfV0NIQVJfVF8NCiMgMzI1ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2ll bnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82 NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQNCnR5cGVkZWYg aW50IHdjaGFyX3Q7DQojIDM0NCAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81 MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51 eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRkZWYuaCIgMyA0DQojdW5kZWYgX19uZWVkX3djaGFyX3QN CiMgMzk4ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43 LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9p bmNsdWRlL3N0ZGRlZi5oIiAzIDQNCiN1bmRlZiBOVUxMDQoNCg0KDQoNCiNkZWZpbmUgTlVMTCAo KHZvaWQgKikwKQ0KDQoNCg0KDQoNCiN1bmRlZiBfX25lZWRfTlVMTA0KIyAzNCAiL3Vzci9pbmNs dWRlL3N0ZGxpYi5oIiAyIDMgNA0KDQoNCg0KDQojZGVmaW5lIF9TVERMSUJfSCAxDQoNCg0KDQoj IDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFncy5oIiAxIDMgNA0KIyAyNiAiL3Vzci9pbmNs dWRlL2JpdHMvd2FpdGZsYWdzLmgiIDMgNA0KI2RlZmluZSBXTk9IQU5HIDENCiNkZWZpbmUgV1VO VFJBQ0VEIDINCg0KDQojZGVmaW5lIFdTVE9QUEVEIDINCiNkZWZpbmUgV0VYSVRFRCA0DQojZGVm aW5lIFdDT05USU5VRUQgOA0KI2RlZmluZSBXTk9XQUlUIDB4MDEwMDAwMDANCg0KI2RlZmluZSBf X1dOT1RIUkVBRCAweDIwMDAwMDAwDQoNCiNkZWZpbmUgX19XQUxMIDB4NDAwMDAwMDANCiNkZWZp bmUgX19XQ0xPTkUgMHg4MDAwMDAwMA0KIyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMg NA0KIyAxICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDEgMyA0DQojIDI5ICIvdXNy L2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDMgNA0KI2RlZmluZSBfX1dFWElUU1RBVFVTKHN0 YXR1cykgKCgoc3RhdHVzKSAmIDB4ZmYwMCkgPj4gOCkNCg0KDQojZGVmaW5lIF9fV1RFUk1TSUco c3RhdHVzKSAoKHN0YXR1cykgJiAweDdmKQ0KDQoNCiNkZWZpbmUgX19XU1RPUFNJRyhzdGF0dXMp IF9fV0VYSVRTVEFUVVMoc3RhdHVzKQ0KDQoNCiNkZWZpbmUgX19XSUZFWElURUQoc3RhdHVzKSAo X19XVEVSTVNJRyhzdGF0dXMpID09IDApDQoNCg0KI2RlZmluZSBfX1dJRlNJR05BTEVEKHN0YXR1 cykgKCgoc2lnbmVkIGNoYXIpICgoKHN0YXR1cykgJiAweDdmKSArIDEpID4+IDEpID4gMCkNCg0K DQoNCiNkZWZpbmUgX19XSUZTVE9QUEVEKHN0YXR1cykgKCgoc3RhdHVzKSAmIDB4ZmYpID09IDB4 N2YpDQoNCg0KDQoNCiNkZWZpbmUgX19XSUZDT05USU5VRUQoc3RhdHVzKSAoKHN0YXR1cykgPT0g X19XX0NPTlRJTlVFRCkNCg0KDQoNCiNkZWZpbmUgX19XQ09SRURVTVAoc3RhdHVzKSAoKHN0YXR1 cykgJiBfX1dDT1JFRkxBRykNCg0KDQojZGVmaW5lIF9fV19FWElUQ09ERShyZXQsc2lnKSAoKHJl dCkgPDwgOCB8IChzaWcpKQ0KI2RlZmluZSBfX1dfU1RPUENPREUoc2lnKSAoKHNpZykgPDwgOCB8 IDB4N2YpDQojZGVmaW5lIF9fV19DT05USU5VRUQgMHhmZmZmDQojZGVmaW5lIF9fV0NPUkVGTEFH IDB4ODANCg0KDQoNCg0KDQoNCnVuaW9uIHdhaXQNCiAgew0KICAgIGludCB3X3N0YXR1czsNCiAg ICBzdHJ1Y3QNCiAgICAgIHsNCg0KIHVuc2lnbmVkIGludCBfX3dfdGVybXNpZzo3Ow0KIHVuc2ln bmVkIGludCBfX3dfY29yZWR1bXA6MTsNCiB1bnNpZ25lZCBpbnQgX193X3JldGNvZGU6ODsNCiB1 bnNpZ25lZCBpbnQ6MTY7DQoNCg0KDQoNCg0KDQoNCiAgICAgIH0gX193YWl0X3Rlcm1pbmF0ZWQ7 DQogICAgc3RydWN0DQogICAgICB7DQoNCiB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6ODsNCiB1 bnNpZ25lZCBpbnQgX193X3N0b3BzaWc6ODsNCiB1bnNpZ25lZCBpbnQ6MTY7DQoNCg0KDQoNCg0K DQogICAgICB9IF9fd2FpdF9zdG9wcGVkOw0KICB9Ow0KDQojZGVmaW5lIHdfdGVybXNpZyBfX3dh aXRfdGVybWluYXRlZC5fX3dfdGVybXNpZw0KI2RlZmluZSB3X2NvcmVkdW1wIF9fd2FpdF90ZXJt aW5hdGVkLl9fd19jb3JlZHVtcA0KI2RlZmluZSB3X3JldGNvZGUgX193YWl0X3Rlcm1pbmF0ZWQu X193X3JldGNvZGUNCiNkZWZpbmUgd19zdG9wc2lnIF9fd2FpdF9zdG9wcGVkLl9fd19zdG9wc2ln DQojZGVmaW5lIHdfc3RvcHZhbCBfX3dhaXRfc3RvcHBlZC5fX3dfc3RvcHZhbA0KIyA0NCAiL3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNA0KDQoNCg0KDQoNCg0KDQojZGVmaW5lIF9fV0FJVF9J TlQoc3RhdHVzKSAoX19leHRlbnNpb25fXyAoeyB1bmlvbiB7IF9fdHlwZW9mKHN0YXR1cykgX19p bjsgaW50IF9faTsgfSBfX3U7IF9fdS5fX2luID0gKHN0YXR1cyk7IF9fdS5fX2k7IH0pKQ0KIyA2 OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQNCnR5cGVkZWYgdW5pb24NCiAgew0KICAgIHVu aW9uIHdhaXQgKl9fdXB0cjsNCiAgICBpbnQgKl9faXB0cjsNCiAgfSBfX1dBSVRfU1RBVFVTIF9f YXR0cmlidXRlX18gKChfX3RyYW5zcGFyZW50X3VuaW9uX18pKTsNCiNkZWZpbmUgX19XQUlUX1NU QVRVU19ERUZOIGludCAqDQojIDg1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNA0KI2RlZmlu ZSBXRVhJVFNUQVRVUyhzdGF0dXMpIF9fV0VYSVRTVEFUVVMoX19XQUlUX0lOVChzdGF0dXMpKQ0K I2RlZmluZSBXVEVSTVNJRyhzdGF0dXMpIF9fV1RFUk1TSUcoX19XQUlUX0lOVChzdGF0dXMpKQ0K I2RlZmluZSBXU1RPUFNJRyhzdGF0dXMpIF9fV1NUT1BTSUcoX19XQUlUX0lOVChzdGF0dXMpKQ0K I2RlZmluZSBXSUZFWElURUQoc3RhdHVzKSBfX1dJRkVYSVRFRChfX1dBSVRfSU5UKHN0YXR1cykp DQojZGVmaW5lIFdJRlNJR05BTEVEKHN0YXR1cykgX19XSUZTSUdOQUxFRChfX1dBSVRfSU5UKHN0 YXR1cykpDQojZGVmaW5lIFdJRlNUT1BQRUQoc3RhdHVzKSBfX1dJRlNUT1BQRUQoX19XQUlUX0lO VChzdGF0dXMpKQ0KDQojZGVmaW5lIFdJRkNPTlRJTlVFRChzdGF0dXMpIF9fV0lGQ09OVElOVUVE KF9fV0FJVF9JTlQoc3RhdHVzKSkNCg0KDQoNCg0KDQp0eXBlZGVmIHN0cnVjdA0KICB7DQogICAg aW50IHF1b3Q7DQogICAgaW50IHJlbTsNCiAgfSBkaXZfdDsNCg0KDQoNCnR5cGVkZWYgc3RydWN0 DQogIHsNCiAgICBsb25nIGludCBxdW90Ow0KICAgIGxvbmcgaW50IHJlbTsNCiAgfSBsZGl2X3Q7 DQojZGVmaW5lIF9fbGRpdl90X2RlZmluZWQgMQ0KDQoNCg0KDQoNCg0KX19leHRlbnNpb25fXyB0 eXBlZGVmIHN0cnVjdA0KICB7DQogICAgbG9uZyBsb25nIGludCBxdW90Ow0KICAgIGxvbmcgbG9u ZyBpbnQgcmVtOw0KICB9IGxsZGl2X3Q7DQojZGVmaW5lIF9fbGxkaXZfdF9kZWZpbmVkIDENCg0K DQoNCg0KDQojZGVmaW5lIFJBTkRfTUFYIDIxNDc0ODM2NDcNCg0KDQoNCg0KI2RlZmluZSBFWElU X0ZBSUxVUkUgMQ0KI2RlZmluZSBFWElUX1NVQ0NFU1MgMA0KDQoNCg0KI2RlZmluZSBNQl9DVVJf TUFYIChfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICgpKQ0KZXh0ZXJuIHNpemVfdCBfX2N0eXBlX2dl dF9tYl9jdXJfbWF4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJp YnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KDQpleHRlcm4gZG91Ymxl IGF0b2YgKF9fY29uc3QgY2hhciAqX19ucHRyKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0K ZXh0ZXJuIGludCBhdG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikNCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSk7DQoNCmV4dGVybiBsb25nIGludCBhdG9sIChfX2NvbnN0IGNoYXIgKl9fbnB0cikNCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dh cm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQoNCg0KX19leHRlbnNpb25fXyBleHRlcm4gbG9u ZyBsb25nIGludCBhdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpDQogICAgIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1 bHRfXykpOw0KDQoNCg0KDQoNCmV4dGVybiBkb3VibGUgc3RydG9kIChfX2NvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19ucHRyLA0KICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikNCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0K DQoNCg0KZXh0ZXJuIGZsb2F0IHN0cnRvZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0 ciwNCiAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRl X18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0 b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAgIGNoYXIgKipfX3Jl c3RyaWN0IF9fZW5kcHRyKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVz ZWRfcmVzdWx0X18pKTsNCg0KDQoNCg0KDQpleHRlcm4gbG9uZyBpbnQgc3RydG9sIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0KICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs IGludCBfX2Jhc2UpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9y ZXN1bHRfXykpOw0KDQpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy LCBpbnQgX19iYXNlKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKTsNCg0KDQoNCg0KX19leHRlbnNpb25fXw0KZXh0ZXJuIGxvbmcgbG9uZyBpbnQg c3RydG9xIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAgICBjaGFyICoq X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRl X18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCl9fZXh0ZW5zaW9uX18NCmV4dGVybiB1 bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25wdHIsDQogICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsN Cg0KDQoNCg0KDQpfX2V4dGVuc2lvbl9fDQpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0b2xsIChf X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAgICAgY2hhciAqKl9fcmVzdHJp Y3QgX19lbmRwdHIsIGludCBfX2Jhc2UpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193 YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQpfX2V4dGVuc2lvbl9fDQpleHRlcm4gdW5zaWduZWQg bG9uZyBsb25nIGludCBzdHJ0b3VsbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwN CiAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpDQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQojIDI0MCAiL3Vz ci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQNCmV4dGVybiBsb25nIGludCBzdHJ0b2xfbCAoX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw dHIsIGludCBfX2Jhc2UsDQogICAgIF9fbG9jYWxlX3QgX19sb2MpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgNCkpKSBfX2F0dHJp YnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQpleHRlcm4gdW5zaWduZWQgbG9u ZyBpbnQgc3RydG91bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwNCiAgICAgICAgaW50IF9fYmFzZSwgX19sb2Nh bGVfdCBfX2xvYykNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCA0KSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSk7DQoNCl9fZXh0ZW5zaW9uX18NCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRv bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICBjaGFyICoqX19yZXN0 cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwNCiAgICBfX2xvY2FsZV90IF9fbG9jKQ0KICAgICBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEsIDQpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KX19l eHRlbnNpb25fXw0KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGxfbCAoX19j b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgICBjaGFyICoqX19yZXN0cmljdCBf X2VuZHB0ciwNCiAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKQ0KICAgICBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDQpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KZXh0ZXJu IGRvdWJsZSBzdHJ0b2RfbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgIGNo YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBfX2xvY2FsZV90IF9fbG9jKQ0KICAgICBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMp KSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KZXh0ZXJuIGZs b2F0IHN0cnRvZl9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0KICAgICAgICAg Y2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIF9fbG9jYWxlX3QgX19sb2MpDQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg MykpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQpleHRlcm4g bG9uZyBkb3VibGUgc3RydG9sZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLA0K ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsDQogICAgICAgICBfX2xvY2FsZV90 IF9fbG9jKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDMpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKTsNCg0KDQoNCg0KDQoNCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfaW50ZXJuYWwgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsDQogICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f ZW5kcHRyLCBpbnQgX19ncm91cCkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSk7DQpleHRlcm4gZmxvYXQgX19zdHJ0b2ZfaW50ZXJuYWwgKF9fY29u c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsDQogICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw dHIsIGludCBfX2dyb3VwKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVz ZWRfcmVzdWx0X18pKTsNCmV4dGVybiBsb25nIGRvdWJsZSBfX3N0cnRvbGRfaW50ZXJuYWwgKF9f Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsDQogICAgICAgICAgIGNoYXIgKipfX3Jlc3Ry aWN0IF9fZW5kcHRyLA0KICAgICAgICAgICBpbnQgX19ncm91cCkNCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0 cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCmV4dGVybiBsb25nIGludCBf X3N0cnRvbF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAg ICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwNCiAgICAgICBpbnQgX19iYXNlLCBpbnQgX19n cm91cCkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSk7DQojZGVmaW5lIF9fc3RydG9sX2ludGVybmFsX2RlZmluZWQgMQ0KDQoNCmV4dGVybiB1bnNp Z25lZCBsb25nIGludCBfX3N0cnRvdWxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj dCBfX25wdHIsDQogICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsDQogICAgICAg ICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgo X193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KI2RlZmluZSBfX3N0cnRvdWxfaW50ZXJuYWxfZGVm aW5lZCAxDQoNCg0KDQpfX2V4dGVuc2lvbl9fDQpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRv bGxfaW50ZXJuYWwgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsDQogICAgICBjaGFy ICoqX19yZXN0cmljdCBfX2VuZHB0ciwNCiAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKQ0K ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCiNk ZWZpbmUgX19zdHJ0b2xsX2ludGVybmFsX2RlZmluZWQgMQ0KDQoNCl9fZXh0ZW5zaW9uX18NCmV4 dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfaW50ZXJuYWwgKF9fY29uc3Qg Y2hhciAqDQogICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwNCiAgICAgICAgIGNoYXIgKipfX3Jl c3RyaWN0IF9fZW5kcHRyLA0KICAgICAgICAgaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApDQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KI2RlZmlu ZSBfX3N0cnRvdWxsX2ludGVybmFsX2RlZmluZWQgMQ0KIyA0MjkgIi91c3IvaW5jbHVkZS9zdGRs aWIuaCIgMyA0DQpleHRlcm4gY2hhciAqbDY0YSAobG9uZyBpbnQgX19uKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykp Ow0KDQoNCmV4dGVybiBsb25nIGludCBhNjRsIChfX2NvbnN0IGNoYXIgKl9fcykNCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQoNCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAx IDMgNA0KIyAyNSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQNCiNkZWZpbmUgX1NZU19U WVBFU19IIDENCg0KDQoNCg0KDQoNCg0KDQoNCnR5cGVkZWYgX191X2NoYXIgdV9jaGFyOw0KdHlw ZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsNCnR5cGVkZWYgX191X2ludCB1X2ludDsNCnR5cGVkZWYg X191X2xvbmcgdV9sb25nOw0KdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7DQp0eXBlZGVmIF9fdV9x dWFkX3QgdV9xdWFkX3Q7DQp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsNCiNkZWZpbmUgX191X2No YXJfZGVmaW5lZCANCg0KDQoNCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90Ow0KDQoNCg0KdHlwZWRl ZiBfX2lub190IGlub190Ow0KDQoNCg0KI2RlZmluZSBfX2lub190X2RlZmluZWQgDQoNCg0KdHlw ZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsNCiNkZWZpbmUgX19pbm82NF90X2RlZmluZWQgDQoNCg0K DQp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7DQojZGVmaW5lIF9fZGV2X3RfZGVmaW5lZCANCg0KDQoN CnR5cGVkZWYgX19naWRfdCBnaWRfdDsNCiNkZWZpbmUgX19naWRfdF9kZWZpbmVkIA0KDQoNCg0K dHlwZWRlZiBfX21vZGVfdCBtb2RlX3Q7DQojZGVmaW5lIF9fbW9kZV90X2RlZmluZWQgDQoNCg0K DQp0eXBlZGVmIF9fbmxpbmtfdCBubGlua190Ow0KI2RlZmluZSBfX25saW5rX3RfZGVmaW5lZCAN Cg0KDQoNCnR5cGVkZWYgX191aWRfdCB1aWRfdDsNCiNkZWZpbmUgX191aWRfdF9kZWZpbmVkIA0K DQoNCg0KDQp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7DQoNCg0KDQojZGVmaW5lIF9fb2ZmX3RfZGVm aW5lZCANCg0KDQp0eXBlZGVmIF9fb2ZmNjRfdCBvZmY2NF90Ow0KI2RlZmluZSBfX29mZjY0X3Rf ZGVmaW5lZCANCg0KDQoNCnR5cGVkZWYgX19waWRfdCBwaWRfdDsNCiNkZWZpbmUgX19waWRfdF9k ZWZpbmVkIA0KDQoNCg0KdHlwZWRlZiBfX2lkX3QgaWRfdDsNCiNkZWZpbmUgX19pZF90X2RlZmlu ZWQgDQoNCg0KDQp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90Ow0KI2RlZmluZSBfX3NzaXplX3Rf ZGVmaW5lZCANCg0KDQoNCg0KdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsNCnR5cGVkZWYgX19j YWRkcl90IGNhZGRyX3Q7DQojZGVmaW5lIF9fZGFkZHJfdF9kZWZpbmVkIA0KDQoNCg0KDQp0eXBl ZGVmIF9fa2V5X3Qga2V5X3Q7DQojZGVmaW5lIF9fa2V5X3RfZGVmaW5lZCANCg0KDQoNCiNkZWZp bmUgX19uZWVkX2Nsb2NrX3QgDQoNCiNkZWZpbmUgX19uZWVkX3RpbWVfdCANCiNkZWZpbmUgX19u ZWVkX3RpbWVyX3QgDQojZGVmaW5lIF9fbmVlZF9jbG9ja2lkX3QgDQojIDEgIi4uL2xpYi90aW1l LmgiIDEgMyA0DQojIDIwICIuLi9saWIvdGltZS5oIiAzIDQNCiAgICAgICANCiMgMjEgIi4uL2xp Yi90aW1lLmgiIDMNCiMgMzMgIi4uL2xpYi90aW1lLmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL3Rp bWUuaCIgMSAzIDQNCiMgNTUgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNA0KI2RlZmluZSBfX2Ns b2NrX3RfZGVmaW5lZCAxDQoNCg0KDQoNCg0KdHlwZWRlZiBfX2Nsb2NrX3QgY2xvY2tfdDsNCg0K DQoNCg0KDQoNCiN1bmRlZiBfX25lZWRfY2xvY2tfdA0KDQoNCiNkZWZpbmUgX190aW1lX3RfZGVm aW5lZCAxDQoNCg0KDQoNCg0KdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7DQoNCg0KDQoNCg0KDQoj dW5kZWYgX19uZWVkX3RpbWVfdA0KDQoNCg0KI2RlZmluZSBfX2Nsb2NraWRfdF9kZWZpbmVkIDEN Cg0KDQoNCg0KdHlwZWRlZiBfX2Nsb2NraWRfdCBjbG9ja2lkX3Q7DQoNCg0KI3VuZGVmIF9fY2xv Y2tpZF90aW1lX3QNCg0KDQoNCiNkZWZpbmUgX190aW1lcl90X2RlZmluZWQgMQ0KDQoNCg0KDQp0 eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90Ow0KDQoNCiN1bmRlZiBfX25lZWRfdGltZXJfdA0KIyAx MjggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNA0KI3VuZGVmIF9fbmVlZF90aW1lc3BlYw0KIyAz NCAiLi4vbGliL3RpbWUuaCIgMiAzDQojIDEzNCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy IDMgNA0KDQoNCg0KdHlwZWRlZiBfX3VzZWNvbmRzX3QgdXNlY29uZHNfdDsNCiNkZWZpbmUgX191 c2Vjb25kc190X2RlZmluZWQgDQoNCg0KdHlwZWRlZiBfX3N1c2Vjb25kc190IHN1c2Vjb25kc190 Ow0KI2RlZmluZSBfX3N1c2Vjb25kc190X2RlZmluZWQgDQoNCg0KDQojZGVmaW5lIF9fbmVlZF9z aXplX3QgDQojIDEgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2dj Yy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQu Ny4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0DQojIDIzNSAiL25mcy9lLW5mcy0wMS91MTAvc2Np ZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZf NjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRkZWYuaCIgMyA0DQojdW5kZWYg X19uZWVkX3NpemVfdA0KIyA0MDkgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgv NTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGlu dXgtZ251LzQuNy4yL2luY2x1ZGUvc3RkZGVmLmgiIDMgNA0KI3VuZGVmIF9fbmVlZF9OVUxMDQoj IDE0OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNA0KDQoNCg0KdHlwZWRlZiB1bnNp Z25lZCBsb25nIGludCB1bG9uZzsNCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsN CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7DQojIDE4OCAiL3Vzci9pbmNsdWRlL3N5cy90eXBl cy5oIiAzIDQNCiNkZWZpbmUgX19pbnROX3QoTixNT0RFKSB0eXBlZGVmIGludCBpbnQgIyNOICMj X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChNT0RFKSkpDQoNCiNkZWZpbmUgX191X2ludE5f dChOLE1PREUpIHR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50ICMjTiAjI190IF9fYXR0cmlidXRl X18gKChfX21vZGVfXyAoTU9ERSkpKQ0KDQoNCg0KI2RlZmluZSBfX2ludDhfdF9kZWZpbmVkIA0K dHlwZWRlZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19RSV9fKSkpOw0K dHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsN CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7 DQp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkp Ow0KDQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50OF90IF9fYXR0cmlidXRlX18gKChfX21v ZGVfXyAoX19RSV9fKSkpOw0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmli dXRlX18gKChfX21vZGVfXyAoX19ISV9fKSkpOw0KdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQz Ml90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOw0KdHlwZWRlZiB1bnNpZ25l ZCBpbnQgdV9pbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX19ESV9fKSkpOw0KDQp0 eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoX193b3JkX18p KSk7DQoNCg0KDQoNCg0KI2RlZmluZSBfX0JJVF9UWVBFU19ERUZJTkVEX18gMQ0KDQoNCg0KDQoN Cg0KDQojIDEgIi4uL2xpYi9zeXMvc2VsZWN0LmgiIDEgMyA0DQojIDE5ICIuLi9saWIvc3lzL3Nl bGVjdC5oIiAzIDQNCiAgICAgICANCiMgMjAgIi4uL2xpYi9zeXMvc2VsZWN0LmgiIDMNCiMgNjEg Ii4uL2xpYi9zeXMvc2VsZWN0LmgiIDMNCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAx IDMgNA0KIyA2MiAiLi4vbGliL3N5cy9zZWxlY3QuaCIgMiAzDQojIDgzICIuLi9saWIvc3lzL3Nl bGVjdC5oIiAzDQojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEgMyA0DQojIDIzICIv dXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQNCiNkZWZpbmUgX1NZU19TRUxFQ1RfSCAxDQoN Cg0KDQoNCg0KDQoNCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDEgMyA0DQojIDI2 ICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMyA0DQojZGVmaW5lIF9fRkRfWkVSTyhzKSBk byB7IHVuc2lnbmVkIGludCBfX2k7IGZkX3NldCAqX19hcnIgPSAocyk7IGZvciAoX19pID0gMDsg X19pIDwgc2l6ZW9mIChmZF9zZXQpIC8gc2l6ZW9mIChfX2ZkX21hc2spOyArK19faSkgX19GRFNf QklUUyAoX19hcnIpW19faV0gPSAwOyB9IHdoaWxlICgwKQ0KDQoNCg0KDQoNCg0KI2RlZmluZSBf X0ZEX1NFVChkLHMpIChfX0ZEU19CSVRTIChzKVtfX0ZERUxUKGQpXSB8PSBfX0ZETUFTSyhkKSkN CiNkZWZpbmUgX19GRF9DTFIoZCxzKSAoX19GRFNfQklUUyAocylbX19GREVMVChkKV0gJj0gfl9f RkRNQVNLKGQpKQ0KI2RlZmluZSBfX0ZEX0lTU0VUKGQscykgKChfX0ZEU19CSVRTIChzKVtfX0ZE RUxUKGQpXSAmIF9fRkRNQVNLKGQpKSAhPSAwKQ0KIyAzMiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxl Y3QuaCIgMiAzIDQNCg0KDQojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMgNA0K IyAyMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMgNA0KI2RlZmluZSBfU0lHU0VUX0hf dHlwZXMgMQ0KDQp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsNCg0KDQoNCiNkZWZpbmUgX1NJ R1NFVF9OV09SRFMgKDEwMjQgLyAoOCAqIHNpemVvZiAodW5zaWduZWQgbG9uZyBpbnQpKSkNCnR5 cGVkZWYgc3RydWN0DQogIHsNCiAgICB1bnNpZ25lZCBsb25nIGludCBfX3ZhbFsoMTAyNCAvICg4 ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07DQogIH0gX19zaWdzZXRfdDsNCiMgMzUg Ii91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMyA0DQoNCg0KI2RlZmluZSBfX3NpZ3NldF90 X2RlZmluZWQgDQp0eXBlZGVmIF9fc2lnc2V0X3Qgc2lnc2V0X3Q7DQoNCg0KDQojZGVmaW5lIF9f bmVlZF90aW1lX3QgDQojZGVmaW5lIF9fbmVlZF90aW1lc3BlYyANCiMgMSAiLi4vbGliL3RpbWUu aCIgMSAzIDQNCiMgMjAgIi4uL2xpYi90aW1lLmgiIDMgNA0KICAgICAgIA0KIyAyMSAiLi4vbGli L3RpbWUuaCIgMw0KIyAzMyAiLi4vbGliL3RpbWUuaCIgMw0KIyAxICIvdXNyL2luY2x1ZGUvdGlt ZS5oIiAxIDMgNA0KIyA2OCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0DQojdW5kZWYgX19uZWVk X2Nsb2NrX3QNCiMgODQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNA0KI3VuZGVmIF9fbmVlZF90 aW1lX3QNCiMgOTYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNA0KI3VuZGVmIF9fY2xvY2tpZF90 aW1lX3QNCiMgMTA4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQNCiN1bmRlZiBfX25lZWRfdGlt ZXJfdA0KDQoNCg0KDQoNCg0KI2RlZmluZSBfX3RpbWVzcGVjX2RlZmluZWQgMQ0KDQoNCg0KDQoN CnN0cnVjdCB0aW1lc3BlYw0KICB7DQogICAgX190aW1lX3QgdHZfc2VjOw0KICAgIGxvbmcgaW50 IHR2X25zZWM7DQogIH07DQoNCg0KI3VuZGVmIF9fbmVlZF90aW1lc3BlYw0KIyAzNCAiLi4vbGli L3RpbWUuaCIgMiAzDQojIDQ1ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNA0KI2Rl ZmluZSBfX25lZWRfdGltZXZhbCANCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAxIDMg NA0KIyA2MiAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzIDQNCiN1bmRlZiBfX25lZWRfdGlt ZXZhbA0KDQojZGVmaW5lIF9TVFJVQ1RfVElNRVZBTCAxDQoNCg0KDQoNCnN0cnVjdCB0aW1ldmFs DQogIHsNCiAgICBfX3RpbWVfdCB0dl9zZWM7DQogICAgX19zdXNlY29uZHNfdCB0dl91c2VjOw0K ICB9Ow0KIyA0NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQNCiMgNTUgIi91c3Iv aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNA0KdHlwZWRlZiBsb25nIGludCBfX2ZkX21hc2s7DQoN Cg0KI3VuZGVmIF9fTkZEQklUUw0KI3VuZGVmIF9fRkRFTFQNCiN1bmRlZiBfX0ZETUFTSw0KDQoj ZGVmaW5lIF9fTkZEQklUUyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSkNCiNkZWZpbmUgX19GREVM VChkKSAoKGQpIC8gX19ORkRCSVRTKQ0KI2RlZmluZSBfX0ZETUFTSyhkKSAoKF9fZmRfbWFzaykg MSA8PCAoKGQpICUgX19ORkRCSVRTKSkNCg0KDQp0eXBlZGVmIHN0cnVjdA0KICB7DQoNCg0KDQog ICAgX19mZF9tYXNrIGZkc19iaXRzWzEwMjQgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSldOw0K I2RlZmluZSBfX0ZEU19CSVRTKHNldCkgKChzZXQpLT5mZHNfYml0cykNCg0KDQoNCg0KICB9IGZk X3NldDsNCg0KDQojZGVmaW5lIEZEX1NFVFNJWkUgX19GRF9TRVRTSVpFDQoNCg0KDQp0eXBlZGVm IF9fZmRfbWFzayBmZF9tYXNrOw0KDQoNCiNkZWZpbmUgTkZEQklUUyBfX05GREJJVFMNCg0KDQoN Cg0KI2RlZmluZSBGRF9TRVQoZmQsZmRzZXRwKSBfX0ZEX1NFVCAoZmQsIGZkc2V0cCkNCiNkZWZp bmUgRkRfQ0xSKGZkLGZkc2V0cCkgX19GRF9DTFIgKGZkLCBmZHNldHApDQojZGVmaW5lIEZEX0lT U0VUKGZkLGZkc2V0cCkgX19GRF9JU1NFVCAoZmQsIGZkc2V0cCkNCiNkZWZpbmUgRkRfWkVSTyhm ZHNldHApIF9fRkRfWkVSTyAoZmRzZXRwKQ0KDQoNCg0KIyAxMDkgIi91c3IvaW5jbHVkZS9zeXMv c2VsZWN0LmgiIDMgNA0KZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19y ZXN0cmljdCBfX3JlYWRmZHMsDQogICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dyaXRlZmRzLA0K ICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX19leGNlcHRmZHMsDQogICAgIHN0cnVjdCB0aW1ldmFs ICpfX3Jlc3RyaWN0IF9fdGltZW91dCk7DQojIDEyMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu aCIgMyA0DQpleHRlcm4gaW50IHBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmlj dCBfX3JlYWRmZHMsDQogICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywNCiAgICAg IGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywNCiAgICAgIGNvbnN0IHN0cnVjdCB0aW1l c3BlYyAqX19yZXN0cmljdCBfX3RpbWVvdXQsDQogICAgICBjb25zdCBfX3NpZ3NldF90ICpfX3Jl c3RyaWN0IF9fc2lnbWFzayk7DQoNCg0KDQojIDg0ICIuLi9saWIvc3lzL3NlbGVjdC5oIiAyIDMN CiMgOTYgIi4uL2xpYi9zeXMvc2VsZWN0LmgiIDMNCiNkZWZpbmUgX0dMX1NZU19TRUxFQ1RfSCAN CiMgMTIzICIuLi9saWIvc3lzL3NlbGVjdC5oIiAzDQojZGVmaW5lIF9HTF9DWFhERUZTX0ggDQoj IDE4OSAiLi4vbGliL3N5cy9zZWxlY3QuaCIgMw0KI2RlZmluZSBfR0xfRVhURVJOX0MgZXh0ZXJu DQojIDE5OSAiLi4vbGliL3N5cy9zZWxlY3QuaCIgMw0KI2RlZmluZSBfR0xfRlVOQ0RFQ0xfUlBM KGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKSBfR0xfRlVOQ0RFQ0xfUlBM XzEgKHJwbF8gIyNmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKQ0KDQoj ZGVmaW5lIF9HTF9GVU5DREVDTF9SUExfMShycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5k X2F0dHJpYnV0ZXMpIF9HTF9FWFRFUk5fQyByZXR0eXBlIHJwbF9mdW5jIHBhcmFtZXRlcnNfYW5k X2F0dHJpYnV0ZXMNCiMgMjExICIuLi9saWIvc3lzL3NlbGVjdC5oIiAzDQojZGVmaW5lIF9HTF9G VU5DREVDTF9TWVMoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIF9HTF9F WFRFUk5fQyByZXR0eXBlIGZ1bmMgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcw0KIyAyMjAgIi4u L2xpYi9zeXMvc2VsZWN0LmgiIDMNCiNkZWZpbmUgX0dMX0NYWEFMSUFTX1JQTChmdW5jLHJldHR5 cGUscGFyYW1ldGVycykgX0dMX0NYWEFMSUFTX1JQTF8xIChmdW5jLCBycGxfICMjZnVuYywgcmV0 dHlwZSwgcGFyYW1ldGVycykNCiMgMjMwICIuLi9saWIvc3lzL3NlbGVjdC5oIiAzDQojZGVmaW5l IF9HTF9DWFhBTElBU19SUExfMShmdW5jLHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVycykgX0dM X0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkNCiMgMjQ4ICIuLi9saWIvc3lzL3NlbGVj dC5oIiAzDQojZGVmaW5lIF9HTF9DWFhBTElBU19SUExfQ0FTVF8xKGZ1bmMscnBsX2Z1bmMscmV0 dHlwZSxwYXJhbWV0ZXJzKSBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQ0KIyAy NzMgIi4uL2xpYi9zeXMvc2VsZWN0LmgiIDMNCiNkZWZpbmUgX0dMX0NYWEFMSUFTX1NZUyhmdW5j LHJldHR5cGUscGFyYW1ldGVycykgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkN CiMgMjkxICIuLi9saWIvc3lzL3NlbGVjdC5oIiAzDQojZGVmaW5lIF9HTF9DWFhBTElBU19TWVNf Q0FTVChmdW5jLHJldHR5cGUscGFyYW1ldGVycykgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxp YXNfZHVtbXkNCiMgMzE2ICIuLi9saWIvc3lzL3NlbGVjdC5oIiAzDQojZGVmaW5lIF9HTF9DWFhB TElBU19TWVNfQ0FTVDIoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMscmV0dHlwZTIscGFyYW1ldGVy czIpIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15DQojIDM0NCAiLi4vbGliL3N5 cy9zZWxlY3QuaCIgMw0KI2RlZmluZSBfR0xfQ1hYQUxJQVNXQVJOKGZ1bmMpIF9HTF9FWFRFUk5f QyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15DQojIDM3MiAiLi4vbGliL3N5cy9zZWxlY3QuaCIgMw0K I2RlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMShmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0 cmlidXRlcykgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkNCiMgMzgzICIuLi9s aWIvc3lzL3NlbGVjdC5oIiAzDQojZGVmaW5lIF9HTF9XQVJOX09OX1VTRShmdW5jdGlvbixtZXNz YWdlKSBleHRlcm4gX190eXBlb2ZfXyAoZnVuY3Rpb24pIGZ1bmN0aW9uIF9fYXR0cmlidXRlX18g KChfX3dhcm5pbmdfXyAobWVzc2FnZSkpKQ0KIyA0MDMgIi4uL2xpYi9zeXMvc2VsZWN0LmgiIDMN CiNkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNf YW5kX2F0dHJpYnV0ZXMsbXNnKSBleHRlcm4gcmV0dHlwZSBmdW5jdGlvbiBwYXJhbWV0ZXJzX2Fu ZF9hdHRyaWJ1dGVzIF9fYXR0cmlidXRlX18gKChfX3dhcm5pbmdfXyAobXNnKSkpDQojIDQyMiAi Li4vbGliL3N5cy9zZWxlY3QuaCIgMw0KI2RlZmluZSBfR0xfV0FSTl9FWFRFUk5fQyBleHRlcm4N CiMgNTU4ICIuLi9saWIvc3lzL3NlbGVjdC5oIiAzDQpleHRlcm4gaW50IF9nbF9jeHhhbGlhc19k dW1teQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7DQoNCmV4dGVybiBpbnQgX2dsX2N4eGFsaWFz X2R1bW15Ow0KIyAyMjEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQNCg0KDQojIDEg Ii9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZf NjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUt Zml4ZWQvc3lzL3N5c21hY3Jvcy5oIiAxIDMgNA0KIyAzMCAiL25mcy9lLW5mcy0wMS91MTAvc2Np ZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZf NjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS1maXhlZC9zeXMvc3lzbWFjcm9zLmgi IDMgNA0KI2RlZmluZSBfU1lTX1NZU01BQ1JPU19IIDENCg0KDQoNCg0KDQoNCg0KX19leHRlbnNp b25fXw0KZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIHVu c2lnbmVkIGludCBnbnVfZGV2X21ham9yICh1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fZGV2KQ0K ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCl9fZXh0ZW5zaW9uX18NCmV4dGVy biBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSB1bnNpZ25lZCBpbnQg Z251X2Rldl9taW5vciAodW5zaWduZWQgbG9uZyBsb25nIGludCBfX2RldikNCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQpfX2V4dGVuc2lvbl9fDQpleHRlcm4gX19pbmxpbmUg X19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgdW5zaWduZWQgbG9uZyBsb25nIGludCBn bnVfZGV2X21ha2VkZXYgKHVuc2lnbmVkIGludCBfX21ham9yLA0KICAgICAgIHVuc2lnbmVkIGlu dCBfX21pbm9yKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0KDQpfX2V4 dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18p KSB1bnNpZ25lZCBpbnQNCl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIGdudV9kZXZfbWFq b3IgKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19kZXYpDQp7DQogIHJldHVybiAoKF9fZGV2ID4+ IDgpICYgMHhmZmYpIHwgKCh1bnNpZ25lZCBpbnQpIChfX2RldiA+PiAzMikgJiB+MHhmZmYpOw0K fQ0KDQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVf aW5saW5lX18pKSB1bnNpZ25lZCBpbnQNCl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIGdu dV9kZXZfbWlub3IgKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19kZXYpDQp7DQogIHJldHVybiAo X19kZXYgJiAweGZmKSB8ICgodW5zaWduZWQgaW50KSAoX19kZXYgPj4gMTIpICYgfjB4ZmYpOw0K fQ0KDQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVf aW5saW5lX18pKSB1bnNpZ25lZCBsb25nIGxvbmcgaW50DQpfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKSBnbnVfZGV2X21ha2VkZXYgKHVuc2lnbmVkIGludCBfX21ham9yLCB1bnNpZ25lZCBp bnQgX19taW5vcikNCnsNCiAgcmV0dXJuICgoX19taW5vciAmIDB4ZmYpIHwgKChfX21ham9yICYg MHhmZmYpIDw8IDgpDQogICB8ICgoKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpIChfX21pbm9yICYg fjB4ZmYpKSA8PCAxMikNCiAgIHwgKCgodW5zaWduZWQgbG9uZyBsb25nIGludCkgKF9fbWFqb3Ig JiB+MHhmZmYpKSA8PCAzMikpOw0KfQ0KDQoNCg0KDQojZGVmaW5lIG1ham9yKGRldikgZ251X2Rl dl9tYWpvciAoZGV2KQ0KI2RlZmluZSBtaW5vcihkZXYpIGdudV9kZXZfbWlub3IgKGRldikNCiNk ZWZpbmUgbWFrZWRldihtYWosbWluKSBnbnVfZGV2X21ha2VkZXYgKG1haiwgbWluKQ0KIyAyMjQg Ii91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQNCg0KDQoNCg0KdHlwZWRlZiBfX2Jsa3Np emVfdCBibGtzaXplX3Q7DQojZGVmaW5lIF9fYmxrc2l6ZV90X2RlZmluZWQgDQoNCg0KDQoNCg0K dHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90Ow0KI2RlZmluZSBfX2Jsa2NudF90X2RlZmluZWQg DQoNCg0KdHlwZWRlZiBfX2ZzYmxrY250X3QgZnNibGtjbnRfdDsNCiNkZWZpbmUgX19mc2Jsa2Nu dF90X2RlZmluZWQgDQoNCg0KdHlwZWRlZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsNCiNkZWZp bmUgX19mc2ZpbGNudF90X2RlZmluZWQgDQojIDI2MiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o IiAzIDQNCnR5cGVkZWYgX19ibGtjbnQ2NF90IGJsa2NudDY0X3Q7DQp0eXBlZGVmIF9fZnNibGtj bnQ2NF90IGZzYmxrY250NjRfdDsNCnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90 Ow0KDQoNCg0KDQoNCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMyA0 DQojIDIxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMyA0DQojZGVmaW5lIF9C SVRTX1BUSFJFQURUWVBFU19IIDENCg0KIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5o IiAxIDMgNA0KDQoNCg0KI2RlZmluZSBfX1dPUkRTSVpFIDY0DQojZGVmaW5lIF9fV09SRFNJWkVf Q09NUEFUMzIgMQ0KIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMyA0 DQoNCg0KI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX0FUVFJfVCA1Ng0KI2RlZmluZSBfX1NJWkVP Rl9QVEhSRUFEX01VVEVYX1QgNDANCiNkZWZpbmUgX19TSVpFT0ZfUFRIUkVBRF9NVVRFWEFUVFJf VCA0DQojZGVmaW5lIF9fU0laRU9GX1BUSFJFQURfQ09ORF9UIDQ4DQojZGVmaW5lIF9fU0laRU9G X1BUSFJFQURfQ09OREFUVFJfVCA0DQojZGVmaW5lIF9fU0laRU9GX1BUSFJFQURfUldMT0NLX1Qg NTYNCiNkZWZpbmUgX19TSVpFT0ZfUFRIUkVBRF9SV0xPQ0tBVFRSX1QgOA0KI2RlZmluZSBfX1NJ WkVPRl9QVEhSRUFEX0JBUlJJRVJfVCAzMg0KI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX0JBUlJJ RVJBVFRSX1QgNA0KIyA1MCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNA0K dHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBwdGhyZWFkX3Q7DQoNCg0KdHlwZWRlZiB1bmlvbg0K ew0KICBjaGFyIF9fc2l6ZVs1Nl07DQogIGxvbmcgaW50IF9fYWxpZ247DQp9IHB0aHJlYWRfYXR0 cl90Ow0KDQoNCg0KdHlwZWRlZiBzdHJ1Y3QgX19wdGhyZWFkX2ludGVybmFsX2xpc3QNCnsNCiAg c3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9saXN0ICpfX3ByZXY7DQogIHN0cnVjdCBfX3B0aHJl YWRfaW50ZXJuYWxfbGlzdCAqX19uZXh0Ow0KfSBfX3B0aHJlYWRfbGlzdF90Ow0KIyA3NiAiL3Vz ci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMgNA0KdHlwZWRlZiB1bmlvbg0Kew0KICBz dHJ1Y3QgX19wdGhyZWFkX211dGV4X3MNCiAgew0KICAgIGludCBfX2xvY2s7DQogICAgdW5zaWdu ZWQgaW50IF9fY291bnQ7DQogICAgaW50IF9fb3duZXI7DQoNCiAgICB1bnNpZ25lZCBpbnQgX19u dXNlcnM7DQoNCg0KDQogICAgaW50IF9fa2luZDsNCg0KICAgIGludCBfX3NwaW5zOw0KICAgIF9f cHRocmVhZF9saXN0X3QgX19saXN0Ow0KI2RlZmluZSBfX1BUSFJFQURfTVVURVhfSEFWRV9QUkVW IDENCiMgMTAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMyA0DQogIH0gX19k YXRhOw0KICBjaGFyIF9fc2l6ZVs0MF07DQogIGxvbmcgaW50IF9fYWxpZ247DQp9IHB0aHJlYWRf bXV0ZXhfdDsNCg0KdHlwZWRlZiB1bmlvbg0Kew0KICBjaGFyIF9fc2l6ZVs0XTsNCiAgaW50IF9f YWxpZ247DQp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7DQoNCg0KDQoNCnR5cGVkZWYgdW5pb24NCnsN CiAgc3RydWN0DQogIHsNCiAgICBpbnQgX19sb2NrOw0KICAgIHVuc2lnbmVkIGludCBfX2Z1dGV4 Ow0KICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3RvdGFsX3NlcTsN CiAgICBfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX193YWtldXBfc2VxOw0K ICAgIF9fZXh0ZW5zaW9uX18gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3dva2VuX3NlcTsNCiAg ICB2b2lkICpfX211dGV4Ow0KICAgIHVuc2lnbmVkIGludCBfX253YWl0ZXJzOw0KICAgIHVuc2ln bmVkIGludCBfX2Jyb2FkY2FzdF9zZXE7DQogIH0gX19kYXRhOw0KICBjaGFyIF9fc2l6ZVs0OF07 DQogIF9fZXh0ZW5zaW9uX18gbG9uZyBsb25nIGludCBfX2FsaWduOw0KfSBwdGhyZWFkX2NvbmRf dDsNCg0KdHlwZWRlZiB1bmlvbg0Kew0KICBjaGFyIF9fc2l6ZVs0XTsNCiAgaW50IF9fYWxpZ247 DQp9IHB0aHJlYWRfY29uZGF0dHJfdDsNCg0KDQoNCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJl YWRfa2V5X3Q7DQoNCg0KDQp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsNCg0KDQoNCg0KDQp0 eXBlZGVmIHVuaW9uDQp7DQoNCiAgc3RydWN0DQogIHsNCiAgICBpbnQgX19sb2NrOw0KICAgIHVu c2lnbmVkIGludCBfX25yX3JlYWRlcnM7DQogICAgdW5zaWduZWQgaW50IF9fcmVhZGVyc193YWtl dXA7DQogICAgdW5zaWduZWQgaW50IF9fd3JpdGVyX3dha2V1cDsNCiAgICB1bnNpZ25lZCBpbnQg X19ucl9yZWFkZXJzX3F1ZXVlZDsNCiAgICB1bnNpZ25lZCBpbnQgX19ucl93cml0ZXJzX3F1ZXVl ZDsNCiAgICBpbnQgX193cml0ZXI7DQogICAgaW50IF9fc2hhcmVkOw0KICAgIHVuc2lnbmVkIGxv bmcgaW50IF9fcGFkMTsNCiAgICB1bnNpZ25lZCBsb25nIGludCBfX3BhZDI7DQoNCg0KICAgIHVu c2lnbmVkIGludCBfX2ZsYWdzOw0KICB9IF9fZGF0YTsNCiMgMTg3ICIvdXNyL2luY2x1ZGUvYml0 cy9wdGhyZWFkdHlwZXMuaCIgMyA0DQogIGNoYXIgX19zaXplWzU2XTsNCiAgbG9uZyBpbnQgX19h bGlnbjsNCn0gcHRocmVhZF9yd2xvY2tfdDsNCg0KdHlwZWRlZiB1bmlvbg0Kew0KICBjaGFyIF9f c2l6ZVs4XTsNCiAgbG9uZyBpbnQgX19hbGlnbjsNCn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7DQoN Cg0KDQoNCg0KdHlwZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190Ow0KDQoNCg0K DQp0eXBlZGVmIHVuaW9uDQp7DQogIGNoYXIgX19zaXplWzMyXTsNCiAgbG9uZyBpbnQgX19hbGln bjsNCn0gcHRocmVhZF9iYXJyaWVyX3Q7DQoNCnR5cGVkZWYgdW5pb24NCnsNCiAgY2hhciBfX3Np emVbNF07DQogIGludCBfX2FsaWduOw0KfSBwdGhyZWFkX2JhcnJpZXJhdHRyX3Q7DQojIDI3MSAi L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNA0KDQoNCg0KIyA0MzkgIi91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMiAzIDQNCg0KDQoNCg0KDQoNCmV4dGVybiBsb25nIGludCByYW5kb20gKHZv aWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCmV4dGVybiB2b2lkIHNyYW5k b20gKHVuc2lnbmVkIGludCBfX3NlZWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0K DQoNCg0KDQoNCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNo YXIgKl9fc3RhdGVidWYsDQogICBzaXplX3QgX19zdGF0ZWxlbikgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOw0KDQoNCg0KZXh0 ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCg0K DQoNCnN0cnVjdCByYW5kb21fZGF0YQ0KICB7DQogICAgaW50MzJfdCAqZnB0cjsNCiAgICBpbnQz Ml90ICpycHRyOw0KICAgIGludDMyX3QgKnN0YXRlOw0KICAgIGludCByYW5kX3R5cGU7DQogICAg aW50IHJhbmRfZGVnOw0KICAgIGludCByYW5kX3NlcDsNCiAgICBpbnQzMl90ICplbmRfcHRyOw0K ICB9Ow0KDQpleHRlcm4gaW50IHJhbmRvbV9yIChzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp Y3QgX19idWYsDQogICAgICAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp Ow0KDQpleHRlcm4gaW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJh bmRvbV9kYXRhICpfX2J1ZikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOw0KDQpleHRlcm4gaW50IGluaXRzdGF0ZV9y ICh1bnNpZ25lZCBpbnQgX19zZWVkLCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RhdGVidWYsDQogICBz aXplX3QgX19zdGF0ZWxlbiwNCiAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1 ZikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgyLCA0KSkpOw0KDQpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVz dHJpY3QgX19zdGF0ZWJ1ZiwNCiAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmlj dCBfX2J1ZikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCByYW5kICh2 b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0KZXh0ZXJuIHZvaWQgc3JhbmQg KHVuc2lnbmVkIGludCBfX3NlZWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoN Cg0KDQpleHRlcm4gaW50IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gZG91YmxlIGRyYW5kNDgg KHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KZXh0ZXJuIGRvdWJsZSBlcmFu ZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOw0KDQoNCmV4dGVybiBs b25nIGludCBscmFuZDQ4ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCmV4 dGVybiBsb25nIGludCBucmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkNCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOw0KDQoNCmV4dGVybiBsb25nIGludCBtcmFuZDQ4ICh2b2lkKSBfX2F0dHJpYnV0 ZV9fICgoX19ub3Rocm93X18pKTsNCmV4dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBz aG9ydCBpbnQgX194c3ViaVszXSkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOw0KDQoNCmV4dGVybiB2b2lkIHNyYW5k NDggKGxvbmcgaW50IF9fc2VlZHZhbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQpl eHRlcm4gdW5zaWduZWQgc2hvcnQgaW50ICpzZWVkNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3Nl ZWQxNnZbM10pDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKTsNCmV4dGVybiB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNo b3J0IGludCBfX3BhcmFtWzddKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCg0Kc3RydWN0IGRyYW5kNDhfZGF0 YQ0KICB7DQogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsNCiAgICB1bnNpZ25lZCBzaG9y dCBpbnQgX19vbGRfeFszXTsNCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgX19jOw0KICAgIHVuc2ln bmVkIHNob3J0IGludCBfX2luaXQ7DQogICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX2E7DQog IH07DQoNCg0KZXh0ZXJuIGludCBkcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz dHJpY3QgX19idWZmZXIsDQogICAgICAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx LCAyKSkpOw0KZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJp WzNdLA0KICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLA0K ICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0KDQpleHRl cm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZl ciwNCiAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpDQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikp KTsNCmV4dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwN CiAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwNCiAgICAg ICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpDQogICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0KDQpl eHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1 ZmZlciwNCiAgICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpDQogICAgIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg MikpKTsNCmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVsz XSwNCiAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwNCiAg ICAgICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpDQogICAgIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsNCg0K DQpleHRlcm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0 OF9kYXRhICpfX2J1ZmZlcikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOw0KDQpleHRlcm4gaW50IHNlZWQ0OF9yICh1 bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdLA0KICAgICAgIHN0cnVjdCBkcmFuZDQ4X2Rh dGEgKl9fYnVmZmVyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDIpKSk7DQoNCmV4dGVybiBpbnQgbGNvbmc0OF9yICh1bnNpZ25l ZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwNCiAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19i dWZmZXIpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMikpKTsNCiMgNTk3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMg NA0KDQoNCg0KZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXpl KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19t YWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCmV4 dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KTsNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgY2ZyZWUgKHZvaWQgKl9fcHRyKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKTsNCiMgNjE3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNA0KZXh0 ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJu X3VudXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IHBvc2l4X21lbWFsaWduICh2 b2lkICoqX19tZW1wdHIsIHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkNCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQoN CmV4dGVybiB2b2lkIGFib3J0ICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7DQoNCg0KDQpleHRlcm4gaW50IGF0ZXhpdCAo dm9pZCAoKl9fZnVuYykgKHZvaWQpKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIGludCBvbl9l eGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2b2lkICpfX2FyZyksIHZvaWQgKl9f YXJnKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gdm9pZCBleGl0IChpbnQgX19z dGF0dXMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25v cmV0dXJuX18pKTsNCg0KDQoNCg0KDQoNCmV4dGVybiB2b2lkIF9FeGl0IChpbnQgX19zdGF0dXMp IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJu X18pKTsNCg0KDQoNCg0KDQoNCmV4dGVybiBjaGFyICpnZXRlbnYgKF9fY29uc3QgY2hhciAqX19u YW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0K DQoNCg0KZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUp DQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0K DQoNCg0KDQoNCmV4dGVybiBpbnQgcHV0ZW52IChjaGFyICpfX3N0cmluZykgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOw0KDQoN Cg0KDQoNCmV4dGVybiBpbnQgc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgX19jb25zdCBj aGFyICpfX3ZhbHVlLCBpbnQgX19yZXBsYWNlKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7DQoNCg0KZXh0ZXJuIGlu dCB1bnNldGVudiAoX19jb25zdCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBjbGVhcmVudiAodm9pZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQojIDY5OCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQN CmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0 ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KIyA3MDkgIi91c3IvaW5jbHVkZS9zdGRs aWIuaCIgMyA0DQpleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9y ZXN1bHRfXykpOw0KIyA3MTkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0DQpleHRlcm4gaW50 IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQojIDcyOSAi L3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQNCmV4dGVybiBjaGFyICpta2R0ZW1wIChjaGFyICpf X3RlbXBsYXRlKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IHN5c3RlbSAoX19jb25zdCBjaGFyICpfX2Nv bW1hbmQpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQoN Cg0KDQoNCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lIChfX2NvbnN0IGNoYXIg Kl9fbmFtZSkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSk7DQojIDc1NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQNCmV4dGVybiBjaGFyICpy ZWFscGF0aCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwNCiAgICAgICAgIGNoYXIg Kl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19h dHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KDQoNCg0KDQojZGVmaW5l IF9fQ09NUEFSX0ZOX1QgDQp0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpIChfX2NvbnN0IHZv aWQgKiwgX19jb25zdCB2b2lkICopOw0KDQoNCnR5cGVkZWYgX19jb21wYXJfZm5fdCBjb21wYXJp c29uX2ZuX3Q7DQoNCg0KDQoNCg0KDQpleHRlcm4gdm9pZCAqYnNlYXJjaCAoX19jb25zdCB2b2lk ICpfX2tleSwgX19jb25zdCB2b2lkICpfX2Jhc2UsDQogICAgICAgIHNpemVfdCBfX25tZW1iLCBz aXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFyKQ0KICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDIsIDUpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKTsNCg0KDQoNCmV4dGVybiB2b2lkIHFzb3J0ICh2b2lkICpfX2Jhc2UsIHNpemVf dCBfX25tZW1iLCBzaXplX3QgX19zaXplLA0KICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7DQoNCg0KDQpleHRlcm4gaW50IGFi cyAoaW50IF9feCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQpl eHRlcm4gbG9uZyBpbnQgbGFicyAobG9uZyBpbnQgX194KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fy bl91bnVzZWRfcmVzdWx0X18pKTsNCg0KDQoNCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9u ZyBpbnQgbGxhYnMgKGxvbmcgbG9uZyBpbnQgX194KQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f d2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGRpdl90IGRpdiAo aW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKTsNCmV4dGVybiBsZGl2X3QgbGRpdiAobG9uZyBpbnQgX19udW1lciwg bG9uZyBpbnQgX19kZW5vbSkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jl c3VsdF9fKSk7DQoNCg0KDQoNCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxsZGl2X3QgbGxkaXYgKGxv bmcgbG9uZyBpbnQgX19udW1lciwNCiAgICAgICAgbG9uZyBsb25nIGludCBfX2Rlbm9tKQ0KICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KIyA4MjEgIi91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0DQpleHRlcm4gY2hhciAqZWN2dCAoZG91YmxlIF9fdmFs dWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsDQogICAgIGludCAqX19y ZXN0cmljdCBfX3NpZ24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMywgNCkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9y ZXN1bHRfXykpOw0KDQoNCg0KDQpleHRlcm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGlu dCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsDQogICAgIGludCAqX19yZXN0cmlj dCBfX3NpZ24pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMywgNCkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRf XykpOw0KDQoNCg0KDQpleHRlcm4gY2hhciAqZ2N2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25k aWdpdCwgY2hhciAqX19idWYpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KDQpleHRlcm4gY2hhciAqcWVjdnQgKGxvbmcgZG91Ymxl IF9fdmFsdWUsIGludCBfX25kaWdpdCwNCiAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBp bnQgKl9fcmVzdHJpY3QgX19zaWduKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkgX19hdHRyaWJ1dGVfXyAoKF9f d2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCmV4dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUg X192YWx1ZSwgaW50IF9fbmRpZ2l0LA0KICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGlu dCAqX19yZXN0cmljdCBfX3NpZ24pDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCkpKSBfX2F0dHJpYnV0ZV9fICgoX193 YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KZXh0ZXJuIGNoYXIgKnFnY3Z0IChsb25nIGRvdWJsZSBf X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSkgX19hdHRyaWJ1 dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KDQoNCg0KZXh0ZXJuIGludCBlY3Z0 X3IgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0 LA0KICAgICBpbnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLA0K ICAgICBzaXplX3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMywgNCwgNSkpKTsNCmV4dGVybiBpbnQgZmN2dF9yIChkb3Vi bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwNCiAgICAg aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwNCiAgICAgc2l6 ZV90IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDMsIDQsIDUpKSk7DQoNCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBkb3Vi bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LA0KICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQs IGludCAqX19yZXN0cmljdCBfX3NpZ24sDQogICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBz aXplX3QgX19sZW4pDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMywgNCwgNSkpKTsNCmV4dGVybiBpbnQgcWZjdnRfciAobG9u ZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LA0KICAgICAgaW50ICpfX3Jlc3RyaWN0IF9f ZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24sDQogICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f YnVmLCBzaXplX3QgX19sZW4pDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCwgNSkpKTsNCg0KDQoNCg0KDQoNCg0KZXh0 ZXJuIGludCBtYmxlbiAoX19jb25zdCBjaGFyICpfX3MsIHNpemVfdCBfX24pIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSk7DQoNCg0KZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2MsDQog ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSk7DQoNCg0KZXh0ZXJuIGludCB3Y3RvbWIgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSBf X2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNl ZF9yZXN1bHRfXykpOw0KDQoNCg0KZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAod2NoYXJfdCAqX19y ZXN0cmljdCBfX3B3Y3MsDQogICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3Qg X19uKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0KZXh0ZXJuIHNpemVfdCB3Y3N0 b21icyAoY2hhciAqX19yZXN0cmljdCBfX3MsDQogICBfX2NvbnN0IHdjaGFyX3QgKl9fcmVzdHJp Y3QgX19wd2NzLCBzaXplX3QgX19uKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KTsNCg0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IHJwbWF0Y2ggKF9fY29uc3QgY2hhciAqX19y ZXNwb25zZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7 DQojIDkwOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQNCmV4dGVybiBpbnQgZ2V0c3Vib3B0 IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsDQogICAgICAgIGNoYXIgKl9fY29uc3QgKl9f cmVzdHJpY3QgX190b2tlbnMsDQogICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKQ0K ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KTsNCg0KDQoNCg0KDQpleHRlcm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFn KSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KDQoNCg0K DQpleHRlcm4gaW50IGdyYW50cHQgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKTsNCg0KDQoNCmV4dGVybiBpbnQgdW5sb2NrcHQgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKTsNCg0KDQoNCg0KZXh0ZXJuIGNoYXIgKnB0c25hbWUgKGludCBfX2Zk KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBwdHNuYW1lX3IgKGludCBf X2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7DQoNCg0KZXh0 ZXJuIGludCBnZXRwdCAodm9pZCk7DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IGdldGxvYWRhdmcg KGRvdWJsZSBfX2xvYWRhdmdbXSwgaW50IF9fbmVsZW0pDQogICAgIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsNCg0KDQoNCg0K DQojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGxpYi5oIiAxIDMgNA0KIyAyNCAiL3Vzci9pbmNs dWRlL2JpdHMvc3RkbGliLmgiIDMgNA0KZXh0ZXJuIGNoYXIgKl9fcmVhbHBhdGhfY2hrIChfX2Nv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLA0KICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9f cmVzb2x2ZWQsDQogICAgICAgIHNpemVfdCBfX3Jlc29sdmVkbGVuKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0K ZXh0ZXJuIGNoYXIgKl9fcmVhbHBhdGhfYWxpYXMgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf X25hbWUsIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkgX19hc21fXyAoIiIgInJlYWxwYXRo IikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkNCg0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSk7DQoNCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNf aW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpIGNoYXIg Kg0KX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgcmVhbHBhdGggKF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX25hbWUsIGNoYXIgKl9fcmVzdHJpY3QgX19yZXNvbHZlZCkNCnsNCiAgaWYg KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19yZXNvbHZlZCwgMiA+IDEpICE9IChzaXplX3QpIC0x KQ0KICAgIHJldHVybiBfX3JlYWxwYXRoX2NoayAoX19uYW1lLCBfX3Jlc29sdmVkLCBfX2J1aWx0 aW5fb2JqZWN0X3NpemUgKF9fcmVzb2x2ZWQsIDIgPiAxKSk7DQoNCiAgcmV0dXJuIF9fcmVhbHBh dGhfYWxpYXMgKF9fbmFtZSwgX19yZXNvbHZlZCk7DQp9DQoNCg0KZXh0ZXJuIGludCBfX3B0c25h bWVfcl9jaGsgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLA0KICAgICAg IHNpemVfdCBfX25yZWFsKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDIpKSk7DQpleHRlcm4gaW50IF9fcHRzbmFtZV9yX2FsaWFzIChp bnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgX19hc21fXyAoIiIgInB0c25h bWVfciIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpDQoNCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgyKSkpOw0KDQpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAo KF9fYWx3YXlzX2lubGluZV9fKSkgaW50DQpfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBw dHNuYW1lX3IgKGludCBfX2ZkLCBjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKQ0Kew0KICBp ZiAoX19idWlsdGluX29iamVjdF9zaXplIChfX2J1ZiwgMiA+IDEpICE9IChzaXplX3QpIC0xDQog ICAgICAmJiAoIV9fYnVpbHRpbl9jb25zdGFudF9wIChfX2J1ZmxlbikgfHwgX19idWZsZW4gPiBf X2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAyID4gMSkpKQ0KICAgIHJldHVybiBfX3B0c25h bWVfcl9jaGsgKF9fZmQsIF9fYnVmLCBfX2J1ZmxlbiwgX19idWlsdGluX29iamVjdF9zaXplIChf X2J1ZiwgMiA+IDEpKTsNCiAgcmV0dXJuIF9fcHRzbmFtZV9yX2FsaWFzIChfX2ZkLCBfX2J1Ziwg X19idWZsZW4pOw0KfQ0KDQoNCmV4dGVybiBpbnQgX193Y3RvbWJfY2hrIChjaGFyICpfX3MsIHdj aGFyX3QgX193Y2hhciwgc2l6ZV90IF9fYnVmbGVuKQ0KICBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KZXh0ZXJu IGludCBfX3djdG9tYl9hbGlhcyAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIF9fYXNtX18g KCIiICJ3Y3RvbWIiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKQ0KICAgICAgICAgICAg ICBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQpleHRlcm4gX19p bmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBpbnQNCl9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpIHdjdG9tYiAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpDQp7DQoNCg0KDQojZGVmaW5l IF9fU1RETElCX01CX0xFTl9NQVggMTYNCg0KDQoNCiAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6 ZSAoX19zLCAyID4gMSkgIT0gKHNpemVfdCkgLTEgJiYgMTYgPiBfX2J1aWx0aW5fb2JqZWN0X3Np emUgKF9fcywgMiA+IDEpKQ0KICAgIHJldHVybiBfX3djdG9tYl9jaGsgKF9fcywgX193Y2hhciwg X19idWlsdGluX29iamVjdF9zaXplIChfX3MsIDIgPiAxKSk7DQogIHJldHVybiBfX3djdG9tYl9h bGlhcyAoX19zLCBfX3djaGFyKTsNCn0NCg0KDQpleHRlcm4gc2l6ZV90IF9fbWJzdG93Y3NfY2hr ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZHN0LA0KICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fc3JjLA0KICAgICAgICAgc2l6ZV90IF9fbGVuLCBzaXplX3QgX19kc3RsZW4pIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KZXh0ZXJuIHNpemVfdCBfX21ic3Rvd2NzX2Fs aWFzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZHN0LCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19zcmMsIHNpemVfdCBfX2xlbikgX19hc21fXyAoIiIgIm1ic3Rvd2NzIikgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fKSkNCg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ow0KDQpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkg c2l6ZV90DQpfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBtYnN0b3djcyAod2NoYXJfdCAq X19yZXN0cmljdCBfX2RzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3Qg X19sZW4pDQoNCnsNCiAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19kc3QsIDIgPiAxKSAh PSAoc2l6ZV90KSAtMQ0KICAgICAgJiYgKCFfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19sZW4pDQog ICB8fCBfX2xlbiA+IF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19kc3QsIDIgPiAxKSAvIHNpemVv ZiAod2NoYXJfdCkpKQ0KICAgIHJldHVybiBfX21ic3Rvd2NzX2NoayAoX19kc3QsIF9fc3JjLCBf X2xlbiwNCiAgICAgIF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19kc3QsIDIgPiAxKSAvIHNpemVv ZiAod2NoYXJfdCkpOw0KICByZXR1cm4gX19tYnN0b3djc19hbGlhcyAoX19kc3QsIF9fc3JjLCBf X2xlbik7DQp9DQoNCg0KZXh0ZXJuIHNpemVfdCBfX3djc3RvbWJzX2NoayAoY2hhciAqX19yZXN0 cmljdCBfX2RzdCwNCiAgICAgICAgIF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3NyYywN CiAgICAgICAgIHNpemVfdCBfX2xlbiwgc2l6ZV90IF9fZHN0bGVuKSBfX2F0dHJpYnV0ZV9fICgo X19ub3Rocm93X18pKTsNCmV4dGVybiBzaXplX3QgX193Y3N0b21ic19hbGlhcyAoY2hhciAqX19y ZXN0cmljdCBfX2RzdCwgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3Qg X19sZW4pIF9fYXNtX18gKCIiICJ3Y3N0b21icyIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpDQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsNCg0KZXh0ZXJuIF9f aW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIHNpemVfdA0KX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgd2NzdG9tYnMgKGNoYXIgKl9fcmVzdHJpY3QgX19kc3Qs IF9fY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbGVuKQ0KDQp7DQog IGlmIChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fZHN0LCAyID4gMSkgIT0gKHNpemVfdCkgLTEN CiAgICAgICYmICghX19idWlsdGluX2NvbnN0YW50X3AgKF9fbGVuKSB8fCBfX2xlbiA+IF9fYnVp bHRpbl9vYmplY3Rfc2l6ZSAoX19kc3QsIDIgPiAxKSkpDQogICAgcmV0dXJuIF9fd2NzdG9tYnNf Y2hrIChfX2RzdCwgX19zcmMsIF9fbGVuLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fZHN0LCAy ID4gMSkpOw0KICByZXR1cm4gX193Y3N0b21ic19hbGlhcyAoX19kc3QsIF9fc3JjLCBfX2xlbik7 DQp9DQojIDk2OSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNA0KDQoNCg0KDQoNCg0KI3Vu ZGVmIF9fbmVlZF9tYWxsb2NfYW5kX2NhbGxvYw0KDQoNCiMgMzYgIi4uL2xpYi9zdGRsaWIuaCIg MiAzDQoNCg0KI2RlZmluZSBfR0xfU1RETElCX0ggDQoNCg0KIyAxICIvbmZzL2UtbmZzLTAxL3Ux MC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2Nj L3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNA0K IyA0MCAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4y LXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5j bHVkZS9zdGRkZWYuaCIgMyA0DQojZGVmaW5lIF9TVERERUZfSCANCiNkZWZpbmUgX1NURERFRl9I XyANCg0KI2RlZmluZSBfQU5TSV9TVERERUZfSCANCg0KI2RlZmluZSBfX1NURERFRl9IX18gDQoj IDEzOSAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4y LXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5j bHVkZS9zdGRkZWYuaCIgMyA0DQojZGVmaW5lIF9QVFJESUZGX1QgDQojZGVmaW5lIF9UX1BUUkRJ RkZfIA0KI2RlZmluZSBfVF9QVFJESUZGIA0KI2RlZmluZSBfX1BUUkRJRkZfVCANCiNkZWZpbmUg X1BUUkRJRkZfVF8gDQojZGVmaW5lIF9CU0RfUFRSRElGRl9UXyANCiNkZWZpbmUgX19faW50X3B0 cmRpZmZfdF9oIA0KI2RlZmluZSBfR0NDX1BUUkRJRkZfVCANCg0KDQoNCnR5cGVkZWYgbG9uZyBp bnQgcHRyZGlmZl90Ow0KIyAxNjEgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgv NTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGlu dXgtZ251LzQuNy4yL2luY2x1ZGUvc3RkZGVmLmgiIDMgNA0KI3VuZGVmIF9fbmVlZF9wdHJkaWZm X3QNCiMgMjM1ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2Mt NC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80Ljcu Mi9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQNCiN1bmRlZiBfX25lZWRfc2l6ZV90DQojIDM0NCAiL25m cy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9i aW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRk ZWYuaCIgMyA0DQojdW5kZWYgX19uZWVkX3djaGFyX3QNCiMgMzk4ICIvbmZzL2UtbmZzLTAxL3Ux MC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2Nj L3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQNCiN1 bmRlZiBOVUxMDQoNCg0KDQoNCiNkZWZpbmUgTlVMTCAoKHZvaWQgKikwKQ0KDQoNCg0KDQoNCiN1 bmRlZiBfX25lZWRfTlVMTA0KDQoNCg0KDQojZGVmaW5lIG9mZnNldG9mKFRZUEUsTUVNQkVSKSBf X2J1aWx0aW5fb2Zmc2V0b2YgKFRZUEUsIE1FTUJFUikNCiMgNDIgIi4uL2xpYi9zdGRsaWIuaCIg MiAzDQojIDEwMSAiLi4vbGliL3N0ZGxpYi5oIiAzDQojZGVmaW5lIF9HTF9BVFRSSUJVVEVfUFVS RSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQ0KIyAzODEgIi4uL2xpYi9zdGRsaWIuaCIgMw0K I2RlZmluZSBfR0xfQVJHX05PTk5VTEwocGFyYW1zKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gcGFyYW1zKSkNCiMgNTM4ICIuLi9saWIvc3RkbGliLmgiIDMNCmV4dGVybiBpbnQgX2dsX2N4 eGFsaWFzX2R1bW15Ow0KZXh0ZXJuIGludCBfZ2xfY3h4YWxpYXNfZHVtbXk7DQojIDE5MSAiLi4v c3JjL2NvbmZfcG9zdC5oIiAyDQoNCg0KI2RlZmluZSBOT19JTkxJTkUgX19hdHRyaWJ1dGVfXygo bm9pbmxpbmUpKQ0KDQoNCg0KDQoNCiNkZWZpbmUgRVhURVJOQUxMWV9WSVNJQkxFIF9fYXR0cmli dXRlX18oKGV4dGVybmFsbHlfdmlzaWJsZSkpDQoNCg0KDQoNCg0KI2RlZmluZSBBVFRSSUJVVEVf Rk9STUFUKHNwZWMpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIHNwZWMpKQ0KDQoNCg0KDQoN CiNkZWZpbmUgQVRUUklCVVRFX0ZPUk1BVF9QUklOVEYoZm9ybWF0c3RyaW5nX3BhcmFtZXRlcixm aXJzdF9hcmd1bWVudCkgQVRUUklCVVRFX0ZPUk1BVCAoKF9fZ251X3ByaW50Zl9fLCBmb3JtYXRz dHJpbmdfcGFyYW1ldGVyLCBmaXJzdF9hcmd1bWVudCkpDQoNCg0KDQoNCg0KDQojZGVmaW5lIEFU VFJJQlVURV9DT05TVCBfR0xfQVRUUklCVVRFX0NPTlNUDQoNCg0KDQoNCg0KDQojZGVmaW5lIElO TElORSBfR0xfSU5MSU5FDQojZGVmaW5lIEVYVEVSTl9JTkxJTkUgX0dMX0VYVEVSTl9JTkxJTkUN CiNkZWZpbmUgSU5MSU5FX0hFQURFUl9CRUdJTiBfR0xfSU5MSU5FX0hFQURFUl9CRUdJTg0KI2Rl ZmluZSBJTkxJTkVfSEVBREVSX0VORCBfR0xfSU5MSU5FX0hFQURFUl9FTkQNCiMgMjM4ICIuLi9z cmMvY29uZl9wb3N0LmgiDQojZGVmaW5lIElGX0xJTlQoQ29kZSkgDQojZGVmaW5lIGxpbnRfYXNz dW1lKGNvbmQpICgodm9pZCkgKDAgJiYgKGNvbmQpKSkNCiMgMTY2OSAiLi4vc3JjL2NvbmZpZy5o IiAyDQojIDQ4ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3Mt MjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIgMg0KDQojIDEgIi9uZnMvZS1u ZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4u L2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUvc3RkZGVmLmgi IDEgMyA0DQojIDUwICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1h Y3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIgMg0KIyA2MSAiL2hvbWUv amFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xp Yi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIFdJREVfQ0hBUl9TVVBQT1JUIChIQVZFX1dD VFlQRV9IICYmIEhBVkVfV0NIQVJfSCAmJiBIQVZFX0JUT1dDICYmICFlbWFjcykNCiMgMTA3ICIv aG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43 LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgV0VBS19BTElBUyhhLGIpIA0KDQoN Cg0KDQoNCg0KI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSAobXNnaWQpDQoNCg0KDQoNCg0KI2RlZmlu ZSBnZXR0ZXh0X25vb3AoU3RyaW5nKSBTdHJpbmcNCiMgMjAzICIvaG9tZS9qYW1lcy9yYWlkL29w dC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMv cmVnZXguYyINCiN1bmRlZiBSRUxfQUxMT0MNCg0KIyAxICIuLi9saWIvdW5pc3RkLmgiIDENCiMg MTkgIi4uL2xpYi91bmlzdGQuaCINCiAgICAgICANCiMgMjAgIi4uL2xpYi91bmlzdGQuaCIgMw0K IyA0MyAiLi4vbGliL3VuaXN0ZC5oIiAzDQojIDEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMSAz IDQNCiMgMjQgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0DQojZGVmaW5lIF9VTklTVERfSCAx DQoNCg0KDQoNCg0KDQoNCg0KDQojZGVmaW5lIF9QT1NJWF9WRVJTSU9OIDIwMDExMkwNCg0KDQoN Cg0KDQojZGVmaW5lIF9QT1NJWDJfVkVSU0lPTiAyMDAxMTJMDQoNCg0KDQojZGVmaW5lIF9QT1NJ WDJfQ19CSU5EIDIwMDExMkwNCg0KDQoNCiNkZWZpbmUgX1BPU0lYMl9DX0RFViAyMDAxMTJMDQoN Cg0KDQojZGVmaW5lIF9QT1NJWDJfU1dfREVWIDIwMDExMkwNCg0KDQoNCiNkZWZpbmUgX1BPU0lY Ml9MT0NBTEVERUYgMjAwMTEyTA0KDQoNCg0KI2RlZmluZSBfWE9QRU5fVkVSU0lPTiA2MDANCg0K DQoNCg0KDQoNCg0KI2RlZmluZSBfWE9QRU5fWENVX1ZFUlNJT04gNA0KDQoNCiNkZWZpbmUgX1hP UEVOX1hQRzIgMQ0KI2RlZmluZSBfWE9QRU5fWFBHMyAxDQojZGVmaW5lIF9YT1BFTl9YUEc0IDEN Cg0KDQojZGVmaW5lIF9YT1BFTl9VTklYIDENCg0KDQojZGVmaW5lIF9YT1BFTl9DUllQVCAxDQoN Cg0KDQojZGVmaW5lIF9YT1BFTl9FTkhfSTE4TiAxDQoNCg0KI2RlZmluZSBfWE9QRU5fTEVHQUNZ IDENCiMgMTczICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNA0KIyAxICIvdXNyL2luY2x1ZGUv Yml0cy9wb3NpeF9vcHQuaCIgMSAzIDQNCiMgMjEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4X29w dC5oIiAzIDQNCiNkZWZpbmUgX1BPU0lYX09QVF9IIDENCg0KDQojZGVmaW5lIF9QT1NJWF9KT0Jf Q09OVFJPTCAxDQoNCg0KI2RlZmluZSBfUE9TSVhfU0FWRURfSURTIDENCg0KDQojZGVmaW5lIF9Q T1NJWF9QUklPUklUWV9TQ0hFRFVMSU5HIDIwMDExMkwNCg0KDQojZGVmaW5lIF9QT1NJWF9TWU5D SFJPTklaRURfSU8gMjAwMTEyTA0KDQoNCiNkZWZpbmUgX1BPU0lYX0ZTWU5DIDIwMDExMkwNCg0K DQojZGVmaW5lIF9QT1NJWF9NQVBQRURfRklMRVMgMjAwMTEyTA0KDQoNCiNkZWZpbmUgX1BPU0lY X01FTUxPQ0sgMjAwMTEyTA0KDQoNCiNkZWZpbmUgX1BPU0lYX01FTUxPQ0tfUkFOR0UgMjAwMTEy TA0KDQoNCiNkZWZpbmUgX1BPU0lYX01FTU9SWV9QUk9URUNUSU9OIDIwMDExMkwNCg0KDQojZGVm aW5lIF9QT1NJWF9DSE9XTl9SRVNUUklDVEVEIDENCg0KDQoNCiNkZWZpbmUgX1BPU0lYX1ZESVNB QkxFICdcMCcNCg0KDQojZGVmaW5lIF9QT1NJWF9OT19UUlVOQyAxDQoNCg0KI2RlZmluZSBfWE9Q RU5fUkVBTFRJTUUgMQ0KDQoNCiNkZWZpbmUgX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgMQ0KDQoN CiNkZWZpbmUgX1hPUEVOX1NITSAxDQoNCg0KI2RlZmluZSBfUE9TSVhfVEhSRUFEUyAyMDAxMTJM DQoNCg0KI2RlZmluZSBfUE9TSVhfUkVFTlRSQU5UX0ZVTkNUSU9OUyAxDQojZGVmaW5lIF9QT1NJ WF9USFJFQURfU0FGRV9GVU5DVElPTlMgMjAwMTEyTA0KDQoNCiNkZWZpbmUgX1BPU0lYX1RIUkVB RF9QUklPUklUWV9TQ0hFRFVMSU5HIDIwMDExMkwNCg0KDQojZGVmaW5lIF9QT1NJWF9USFJFQURf QVRUUl9TVEFDS1NJWkUgMjAwMTEyTA0KDQoNCiNkZWZpbmUgX1BPU0lYX1RIUkVBRF9BVFRSX1NU QUNLQUREUiAyMDAxMTJMDQoNCg0KI2RlZmluZSBfUE9TSVhfVEhSRUFEX1BSSU9fSU5IRVJJVCAy MDAxMTJMDQoNCg0KDQojZGVmaW5lIF9QT1NJWF9USFJFQURfUFJJT19QUk9URUNUIDIwMDExMkwN Cg0KDQojZGVmaW5lIF9QT1NJWF9TRU1BUEhPUkVTIDIwMDExMkwNCg0KDQojZGVmaW5lIF9QT1NJ WF9SRUFMVElNRV9TSUdOQUxTIDIwMDExMkwNCg0KDQojZGVmaW5lIF9QT1NJWF9BU1lOQ0hST05P VVNfSU8gMjAwMTEyTA0KI2RlZmluZSBfUE9TSVhfQVNZTkNfSU8gMQ0KDQojZGVmaW5lIF9MRlNf QVNZTkNIUk9OT1VTX0lPIDENCg0KI2RlZmluZSBfUE9TSVhfUFJJT1JJVElaRURfSU8gMjAwMTEy TA0KDQoNCiNkZWZpbmUgX0xGUzY0X0FTWU5DSFJPTk9VU19JTyAxDQoNCg0KI2RlZmluZSBfTEZT X0xBUkdFRklMRSAxDQojZGVmaW5lIF9MRlM2NF9MQVJHRUZJTEUgMQ0KI2RlZmluZSBfTEZTNjRf U1RESU8gMQ0KDQoNCiNkZWZpbmUgX1BPU0lYX1NIQVJFRF9NRU1PUllfT0JKRUNUUyAyMDAxMTJM DQoNCg0KI2RlZmluZSBfUE9TSVhfQ1BVVElNRSAwDQoNCg0KI2RlZmluZSBfUE9TSVhfVEhSRUFE X0NQVVRJTUUgMA0KDQoNCiNkZWZpbmUgX1BPU0lYX1JFR0VYUCAxDQoNCg0KI2RlZmluZSBfUE9T SVhfUkVBREVSX1dSSVRFUl9MT0NLUyAyMDAxMTJMDQoNCg0KI2RlZmluZSBfUE9TSVhfU0hFTEwg MQ0KDQoNCiNkZWZpbmUgX1BPU0lYX1RJTUVPVVRTIDIwMDExMkwNCg0KDQojZGVmaW5lIF9QT1NJ WF9TUElOX0xPQ0tTIDIwMDExMkwNCg0KDQojZGVmaW5lIF9QT1NJWF9TUEFXTiAyMDAxMTJMDQoN Cg0KI2RlZmluZSBfUE9TSVhfVElNRVJTIDIwMDExMkwNCg0KDQojZGVmaW5lIF9QT1NJWF9CQVJS SUVSUyAyMDAxMTJMDQoNCg0KI2RlZmluZSBfUE9TSVhfTUVTU0FHRV9QQVNTSU5HIDIwMDExMkwN Cg0KDQojZGVmaW5lIF9QT1NJWF9USFJFQURfUFJPQ0VTU19TSEFSRUQgMjAwMTEyTA0KDQoNCiNk ZWZpbmUgX1BPU0lYX01PTk9UT05JQ19DTE9DSyAwDQoNCg0KI2RlZmluZSBfUE9TSVhfQ0xPQ0tf U0VMRUNUSU9OIDIwMDExMkwNCg0KDQojZGVmaW5lIF9QT1NJWF9BRFZJU09SWV9JTkZPIDIwMDEx MkwNCg0KDQojZGVmaW5lIF9QT1NJWF9JUFY2IDIwMDExMkwNCg0KDQojZGVmaW5lIF9QT1NJWF9S QVdfU09DS0VUUyAyMDAxMTJMDQoNCg0KI2RlZmluZSBfUE9TSVgyX0NIQVJfVEVSTSAyMDAxMTJM DQoNCg0KI2RlZmluZSBfUE9TSVhfU1BPUkFESUNfU0VSVkVSIC0xDQojZGVmaW5lIF9QT1NJWF9U SFJFQURfU1BPUkFESUNfU0VSVkVSIC0xDQoNCg0KI2RlZmluZSBfUE9TSVhfVFJBQ0UgLTENCiNk ZWZpbmUgX1BPU0lYX1RSQUNFX0VWRU5UX0ZJTFRFUiAtMQ0KI2RlZmluZSBfUE9TSVhfVFJBQ0Vf SU5IRVJJVCAtMQ0KI2RlZmluZSBfUE9TSVhfVFJBQ0VfTE9HIC0xDQoNCg0KI2RlZmluZSBfUE9T SVhfVFlQRURfTUVNT1JZX09CSkVDVFMgLTENCiMgMTc0ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDIgMyA0DQoNCg0KDQojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2Vudmlyb25tZW50cy5oIiAxIDMg NA0KIyAyMyAiL3Vzci9pbmNsdWRlL2JpdHMvZW52aXJvbm1lbnRzLmgiIDMgNA0KIyAxICIvdXNy L2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAxIDMgNA0KDQoNCg0KI2RlZmluZSBfX1dPUkRTSVpF IDY0DQojZGVmaW5lIF9fV09SRFNJWkVfQ09NUEFUMzIgMQ0KIyAyNCAiL3Vzci9pbmNsdWRlL2Jp dHMvZW52aXJvbm1lbnRzLmgiIDIgMyA0DQojIDUzICIvdXNyL2luY2x1ZGUvYml0cy9lbnZpcm9u bWVudHMuaCIgMyA0DQojZGVmaW5lIF9QT1NJWF9WNl9MUEJJR19PRkZCSUcgLTENCiNkZWZpbmUg X1hCUzVfTFBCSUdfT0ZGQklHIC0xDQoNCg0KI2RlZmluZSBfUE9TSVhfVjZfTFA2NF9PRkY2NCAx DQojZGVmaW5lIF9YQlM1X0xQNjRfT0ZGNjQgMQ0KIyA4MiAiL3Vzci9pbmNsdWRlL2JpdHMvZW52 aXJvbm1lbnRzLmgiIDMgNA0KI2RlZmluZSBfX0lMUDMyX09GRjMyX0NGTEFHUyAiLW0zMiINCiNk ZWZpbmUgX19JTFAzMl9PRkZCSUdfQ0ZMQUdTICItbTMyIC1EX0xBUkdFRklMRV9TT1VSQ0UgLURf RklMRV9PRkZTRVRfQklUUz02NCINCiNkZWZpbmUgX19JTFAzMl9PRkYzMl9MREZMQUdTICItbTMy Ig0KI2RlZmluZSBfX0lMUDMyX09GRkJJR19MREZMQUdTICItbTMyIg0KI2RlZmluZSBfX0xQNjRf T0ZGNjRfQ0ZMQUdTICItbTY0Ig0KI2RlZmluZSBfX0xQNjRfT0ZGNjRfTERGTEFHUyAiLW02NCIN CiMgMTc4ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMyA0DQoNCg0KDQojZGVmaW5lIFNURElO X0ZJTEVOTyAwDQojZGVmaW5lIFNURE9VVF9GSUxFTk8gMQ0KI2RlZmluZSBTVERFUlJfRklMRU5P IDINCiMgMTk1ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNA0KI2RlZmluZSBfX25lZWRfc2l6 ZV90IA0KI2RlZmluZSBfX25lZWRfTlVMTCANCiMgMSAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50 aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQt dW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQNCiMgMTYxICIv bmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9nY2MtNC43LjIteDg2XzY0 L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80LjcuMi9pbmNsdWRlL3N0 ZGRlZi5oIiAzIDQNCiN1bmRlZiBfX25lZWRfcHRyZGlmZl90DQojIDIzNSAiL25mcy9lLW5mcy0w MS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGli L2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRkZWYuaCIgMyA0 DQojdW5kZWYgX19uZWVkX3NpemVfdA0KIyAzNDQgIi9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlm aWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVu a25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUvc3RkZGVmLmgiIDMgNA0KI3VuZGVmIF9fbmVl ZF93Y2hhcl90DQojIDM5OCAiL25mcy9lLW5mcy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9v cHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4vbGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1n bnUvNC43LjIvaW5jbHVkZS9zdGRkZWYuaCIgMyA0DQojdW5kZWYgTlVMTA0KDQoNCg0KDQojZGVm aW5lIE5VTEwgKCh2b2lkICopMCkNCg0KDQoNCg0KDQojdW5kZWYgX19uZWVkX05VTEwNCg0KDQoN Cg0KI2RlZmluZSBvZmZzZXRvZihUWVBFLE1FTUJFUikgX19idWlsdGluX29mZnNldG9mIChUWVBF LCBNRU1CRVIpDQojIDE5OCAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAyIDMgNA0KIyAyMzggIi91 c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0DQp0eXBlZGVmIF9faW50cHRyX3QgaW50cHRyX3Q7DQoj ZGVmaW5lIF9faW50cHRyX3RfZGVmaW5lZCANCg0KDQoNCg0KDQp0eXBlZGVmIF9fc29ja2xlbl90 IHNvY2tsZW5fdDsNCiNkZWZpbmUgX19zb2NrbGVuX3RfZGVmaW5lZCANCg0KDQoNCg0KDQojZGVm aW5lIFJfT0sgNA0KI2RlZmluZSBXX09LIDINCiNkZWZpbmUgWF9PSyAxDQojZGVmaW5lIEZfT0sg MA0KDQoNCmV4dGVybiBpbnQgYWNjZXNzIChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlw ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOw0KDQoNCg0KDQpleHRlcm4gaW50IGV1aWRhY2Nlc3MgKF9fY29uc3QgY2hhciAq X19uYW1lLCBpbnQgX190eXBlKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KZXh0ZXJuIGludCBlYWNjZXNz IChfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fdHlwZSkNCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOw0KDQoNCg0K DQoNCg0KZXh0ZXJuIGludCBmYWNjZXNzYXQgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fZmls ZSwgaW50IF9fdHlwZSwgaW50IF9fZmxhZykNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpIF9fYXR0cmlidXRlX18gKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQoNCg0KI2RlZmluZSBTRUVLX1NFVCAwDQoj ZGVmaW5lIFNFRUtfQ1VSIDENCiNkZWZpbmUgU0VFS19FTkQgMg0KDQoNCg0KDQojZGVmaW5lIExf U0VUIFNFRUtfU0VUDQojZGVmaW5lIExfSU5DUiBTRUVLX0NVUg0KI2RlZmluZSBMX1hUTkQgU0VF S19FTkQNCiMgMzAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNA0KZXh0ZXJuIF9fb2ZmX3Qg bHNlZWsgKGludCBfX2ZkLCBfX29mZl90IF9fb2Zmc2V0LCBpbnQgX193aGVuY2UpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpOw0KIyAzMTIgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0 DQpleHRlcm4gX19vZmY2NF90IGxzZWVrNjQgKGludCBfX2ZkLCBfX29mZjY0X3QgX19vZmZzZXQs IGludCBfX3doZW5jZSkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQoNCg0K DQoNCg0KDQpleHRlcm4gaW50IGNsb3NlIChpbnQgX19mZCk7DQoNCg0KDQoNCg0KDQpleHRlcm4g c3NpemVfdCByZWFkIChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRlcykgX19h dHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KDQoNCg0KDQpleHRlcm4g c3NpemVfdCB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24p IF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQojIDM0MyAiL3Vzci9p bmNsdWRlL3VuaXN0ZC5oIiAzIDQNCmV4dGVybiBzc2l6ZV90IHByZWFkIChpbnQgX19mZCwgdm9p ZCAqX19idWYsIHNpemVfdCBfX25ieXRlcywNCiAgICAgICAgX19vZmZfdCBfX29mZnNldCkgX19h dHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KDQoNCg0KDQoNCmV4dGVy biBzc2l6ZV90IHB3cml0ZSAoaW50IF9fZmQsIF9fY29uc3Qgdm9pZCAqX19idWYsIHNpemVfdCBf X24sDQogICAgICAgICBfX29mZl90IF9fb2Zmc2V0KSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpOw0KIyAzNzEgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0DQpleHRl cm4gc3NpemVfdCBwcmVhZDY0IChpbnQgX19mZCwgdm9pZCAqX19idWYsIHNpemVfdCBfX25ieXRl cywNCiAgIF9fb2ZmNjRfdCBfX29mZnNldCkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRf cmVzdWx0X18pKTsNCg0KDQpleHRlcm4gc3NpemVfdCBwd3JpdGU2NCAoaW50IF9fZmQsIF9fY29u c3Qgdm9pZCAqX19idWYsIHNpemVfdCBfX24sDQogICAgX19vZmY2NF90IF9fb2Zmc2V0KSBfX2F0 dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KDQoNCg0KDQpleHRl cm4gaW50IHBpcGUgKGludCBfX3BpcGVkZXNbMl0pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQojIDM5MyAiL3Vz ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQNCmV4dGVybiB1bnNpZ25lZCBpbnQgYWxhcm0gKHVuc2ln bmVkIGludCBfX3NlY29uZHMpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KIyA0MDUg Ii91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0DQpleHRlcm4gdW5zaWduZWQgaW50IHNsZWVwICh1 bnNpZ25lZCBpbnQgX19zZWNvbmRzKTsNCg0KDQoNCg0KDQoNCmV4dGVybiBfX3VzZWNvbmRzX3Qg dWFsYXJtIChfX3VzZWNvbmRzX3QgX192YWx1ZSwgX191c2Vjb25kc190IF9faW50ZXJ2YWwpDQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIGlu dCB1c2xlZXAgKF9fdXNlY29uZHNfdCBfX3VzZWNvbmRzKTsNCiMgNDI5ICIvdXNyL2luY2x1ZGUv dW5pc3RkLmgiIDMgNA0KZXh0ZXJuIGludCBwYXVzZSAodm9pZCk7DQoNCg0KDQpleHRlcm4gaW50 IGNob3duIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwgX191aWRfdCBfX293bmVyLCBfX2dpZF90IF9f Z3JvdXApDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRf XykpOw0KDQoNCg0KZXh0ZXJuIGludCBmY2hvd24gKGludCBfX2ZkLCBfX3VpZF90IF9fb3duZXIs IF9fZ2lkX3QgX19ncm91cCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KDQoNCg0KZXh0ZXJuIGludCBsY2hv d24gKF9fY29uc3QgY2hhciAqX19maWxlLCBfX3VpZF90IF9fb3duZXIsIF9fZ2lkX3QgX19ncm91 cCkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7 DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IGZjaG93bmF0IChpbnQgX19mZCwgX19jb25zdCBjaGFy ICpfX2ZpbGUsIF9fdWlkX3QgX19vd25lciwNCiAgICAgICBfX2dpZF90IF9fZ3JvdXAsIGludCBf X2ZsYWcpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMikpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRf XykpOw0KDQoNCg0KZXh0ZXJuIGludCBjaGRpciAoX19jb25zdCBjaGFyICpfX3BhdGgpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KZXh0ZXJu IGludCBmY2hkaXIgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0 dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KIyA0NzEgIi91c3IvaW5jbHVk ZS91bmlzdGQuaCIgMyA0DQpleHRlcm4gY2hhciAqZ2V0Y3dkIChjaGFyICpfX2J1Ziwgc2l6ZV90 IF9fc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9f d2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KDQoNCg0KDQpleHRlcm4gY2hhciAqZ2V0X2N1cnJl bnRfZGlyX25hbWUgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0K DQoNCg0KZXh0ZXJuIGNoYXIgKmdldHdkIChjaGFyICpfX2J1ZikNCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0 cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2Vk X3Jlc3VsdF9fKSk7DQoNCg0KDQoNCmV4dGVybiBpbnQgZHVwIChpbnQgX19mZCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0 X18pKTsNCg0KDQpleHRlcm4gaW50IGR1cDIgKGludCBfX2ZkLCBpbnQgX19mZDIpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCmV4dGVybiBjaGFyICoqX19lbnZpcm9uOw0KDQpl eHRlcm4gY2hhciAqKmVudmlyb247DQoNCg0KDQoNCg0KZXh0ZXJuIGludCBleGVjdmUgKF9fY29u c3QgY2hhciAqX19wYXRoLCBjaGFyICpfX2NvbnN0IF9fYXJndltdLA0KICAgICBjaGFyICpfX2Nv bnN0IF9fZW52cFtdKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCmV4dGVybiBpbnQgZmV4ZWN2ZSAoaW50IF9f ZmQsIGNoYXIgKl9fY29uc3QgX19hcmd2W10sIGNoYXIgKl9fY29uc3QgX19lbnZwW10pDQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IGV4ZWN2 IChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgY2hhciAqX19jb25zdCBfX2FyZ3ZbXSkNCiAgICAgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOw0KDQoNCg0KZXh0ZXJuIGludCBleGVjbGUgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2Nv bnN0IGNoYXIgKl9fYXJnLCAuLi4pDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsNCg0KDQoNCmV4dGVybiBpbnQgZXhl Y2wgKF9fY29uc3QgY2hhciAqX19wYXRoLCBfX2NvbnN0IGNoYXIgKl9fYXJnLCAuLi4pDQogICAg IF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKTsNCg0KDQoNCmV4dGVybiBpbnQgZXhlY3ZwIChfX2NvbnN0IGNoYXIgKl9fZmlsZSwg Y2hhciAqX19jb25zdCBfX2FyZ3ZbXSkNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOw0KDQoNCg0KDQpleHRlcm4gaW50 IGV4ZWNscCAoX19jb25zdCBjaGFyICpfX2ZpbGUsIF9fY29uc3QgY2hhciAqX19hcmcsIC4uLikN CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpOw0KDQoNCg0KDQpleHRlcm4gaW50IG5pY2UgKGludCBfX2luYykgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVz dWx0X18pKTsNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgX2V4aXQgKGludCBfX3N0YXR1cykgX19hdHRy aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOw0KDQoNCg0KDQoNCiMgMSAiL3Vzci9pbmNsdWRlL2Jp dHMvY29uZm5hbWUuaCIgMSAzIDQNCiMgMjYgIi91c3IvaW5jbHVkZS9iaXRzL2NvbmZuYW1lLmgi IDMgNA0KZW51bQ0KICB7DQogICAgX1BDX0xJTktfTUFYLA0KI2RlZmluZSBfUENfTElOS19NQVgg X1BDX0xJTktfTUFYDQogICAgX1BDX01BWF9DQU5PTiwNCiNkZWZpbmUgX1BDX01BWF9DQU5PTiBf UENfTUFYX0NBTk9ODQogICAgX1BDX01BWF9JTlBVVCwNCiNkZWZpbmUgX1BDX01BWF9JTlBVVCBf UENfTUFYX0lOUFVUDQogICAgX1BDX05BTUVfTUFYLA0KI2RlZmluZSBfUENfTkFNRV9NQVggX1BD X05BTUVfTUFYDQogICAgX1BDX1BBVEhfTUFYLA0KI2RlZmluZSBfUENfUEFUSF9NQVggX1BDX1BB VEhfTUFYDQogICAgX1BDX1BJUEVfQlVGLA0KI2RlZmluZSBfUENfUElQRV9CVUYgX1BDX1BJUEVf QlVGDQogICAgX1BDX0NIT1dOX1JFU1RSSUNURUQsDQojZGVmaW5lIF9QQ19DSE9XTl9SRVNUUklD VEVEIF9QQ19DSE9XTl9SRVNUUklDVEVEDQogICAgX1BDX05PX1RSVU5DLA0KI2RlZmluZSBfUENf Tk9fVFJVTkMgX1BDX05PX1RSVU5DDQogICAgX1BDX1ZESVNBQkxFLA0KI2RlZmluZSBfUENfVkRJ U0FCTEUgX1BDX1ZESVNBQkxFDQogICAgX1BDX1NZTkNfSU8sDQojZGVmaW5lIF9QQ19TWU5DX0lP IF9QQ19TWU5DX0lPDQogICAgX1BDX0FTWU5DX0lPLA0KI2RlZmluZSBfUENfQVNZTkNfSU8gX1BD X0FTWU5DX0lPDQogICAgX1BDX1BSSU9fSU8sDQojZGVmaW5lIF9QQ19QUklPX0lPIF9QQ19QUklP X0lPDQogICAgX1BDX1NPQ0tfTUFYQlVGLA0KI2RlZmluZSBfUENfU09DS19NQVhCVUYgX1BDX1NP Q0tfTUFYQlVGDQogICAgX1BDX0ZJTEVTSVpFQklUUywNCiNkZWZpbmUgX1BDX0ZJTEVTSVpFQklU UyBfUENfRklMRVNJWkVCSVRTDQogICAgX1BDX1JFQ19JTkNSX1hGRVJfU0laRSwNCiNkZWZpbmUg X1BDX1JFQ19JTkNSX1hGRVJfU0laRSBfUENfUkVDX0lOQ1JfWEZFUl9TSVpFDQogICAgX1BDX1JF Q19NQVhfWEZFUl9TSVpFLA0KI2RlZmluZSBfUENfUkVDX01BWF9YRkVSX1NJWkUgX1BDX1JFQ19N QVhfWEZFUl9TSVpFDQogICAgX1BDX1JFQ19NSU5fWEZFUl9TSVpFLA0KI2RlZmluZSBfUENfUkVD X01JTl9YRkVSX1NJWkUgX1BDX1JFQ19NSU5fWEZFUl9TSVpFDQogICAgX1BDX1JFQ19YRkVSX0FM SUdOLA0KI2RlZmluZSBfUENfUkVDX1hGRVJfQUxJR04gX1BDX1JFQ19YRkVSX0FMSUdODQogICAg X1BDX0FMTE9DX1NJWkVfTUlOLA0KI2RlZmluZSBfUENfQUxMT0NfU0laRV9NSU4gX1BDX0FMTE9D X1NJWkVfTUlODQogICAgX1BDX1NZTUxJTktfTUFYLA0KI2RlZmluZSBfUENfU1lNTElOS19NQVgg X1BDX1NZTUxJTktfTUFYDQogICAgX1BDXzJfU1lNTElOS1MNCiNkZWZpbmUgX1BDXzJfU1lNTElO S1MgX1BDXzJfU1lNTElOS1MNCiAgfTsNCg0KDQplbnVtDQogIHsNCiAgICBfU0NfQVJHX01BWCwN CiNkZWZpbmUgX1NDX0FSR19NQVggX1NDX0FSR19NQVgNCiAgICBfU0NfQ0hJTERfTUFYLA0KI2Rl ZmluZSBfU0NfQ0hJTERfTUFYIF9TQ19DSElMRF9NQVgNCiAgICBfU0NfQ0xLX1RDSywNCiNkZWZp bmUgX1NDX0NMS19UQ0sgX1NDX0NMS19UQ0sNCiAgICBfU0NfTkdST1VQU19NQVgsDQojZGVmaW5l IF9TQ19OR1JPVVBTX01BWCBfU0NfTkdST1VQU19NQVgNCiAgICBfU0NfT1BFTl9NQVgsDQojZGVm aW5lIF9TQ19PUEVOX01BWCBfU0NfT1BFTl9NQVgNCiAgICBfU0NfU1RSRUFNX01BWCwNCiNkZWZp bmUgX1NDX1NUUkVBTV9NQVggX1NDX1NUUkVBTV9NQVgNCiAgICBfU0NfVFpOQU1FX01BWCwNCiNk ZWZpbmUgX1NDX1RaTkFNRV9NQVggX1NDX1RaTkFNRV9NQVgNCiAgICBfU0NfSk9CX0NPTlRST0ws DQojZGVmaW5lIF9TQ19KT0JfQ09OVFJPTCBfU0NfSk9CX0NPTlRST0wNCiAgICBfU0NfU0FWRURf SURTLA0KI2RlZmluZSBfU0NfU0FWRURfSURTIF9TQ19TQVZFRF9JRFMNCiAgICBfU0NfUkVBTFRJ TUVfU0lHTkFMUywNCiNkZWZpbmUgX1NDX1JFQUxUSU1FX1NJR05BTFMgX1NDX1JFQUxUSU1FX1NJ R05BTFMNCiAgICBfU0NfUFJJT1JJVFlfU0NIRURVTElORywNCiNkZWZpbmUgX1NDX1BSSU9SSVRZ X1NDSEVEVUxJTkcgX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcNCiAgICBfU0NfVElNRVJTLA0KI2Rl ZmluZSBfU0NfVElNRVJTIF9TQ19USU1FUlMNCiAgICBfU0NfQVNZTkNIUk9OT1VTX0lPLA0KI2Rl ZmluZSBfU0NfQVNZTkNIUk9OT1VTX0lPIF9TQ19BU1lOQ0hST05PVVNfSU8NCiAgICBfU0NfUFJJ T1JJVElaRURfSU8sDQojZGVmaW5lIF9TQ19QUklPUklUSVpFRF9JTyBfU0NfUFJJT1JJVElaRURf SU8NCiAgICBfU0NfU1lOQ0hST05JWkVEX0lPLA0KI2RlZmluZSBfU0NfU1lOQ0hST05JWkVEX0lP IF9TQ19TWU5DSFJPTklaRURfSU8NCiAgICBfU0NfRlNZTkMsDQojZGVmaW5lIF9TQ19GU1lOQyBf U0NfRlNZTkMNCiAgICBfU0NfTUFQUEVEX0ZJTEVTLA0KI2RlZmluZSBfU0NfTUFQUEVEX0ZJTEVT IF9TQ19NQVBQRURfRklMRVMNCiAgICBfU0NfTUVNTE9DSywNCiNkZWZpbmUgX1NDX01FTUxPQ0sg X1NDX01FTUxPQ0sNCiAgICBfU0NfTUVNTE9DS19SQU5HRSwNCiNkZWZpbmUgX1NDX01FTUxPQ0tf UkFOR0UgX1NDX01FTUxPQ0tfUkFOR0UNCiAgICBfU0NfTUVNT1JZX1BST1RFQ1RJT04sDQojZGVm aW5lIF9TQ19NRU1PUllfUFJPVEVDVElPTiBfU0NfTUVNT1JZX1BST1RFQ1RJT04NCiAgICBfU0Nf TUVTU0FHRV9QQVNTSU5HLA0KI2RlZmluZSBfU0NfTUVTU0FHRV9QQVNTSU5HIF9TQ19NRVNTQUdF X1BBU1NJTkcNCiAgICBfU0NfU0VNQVBIT1JFUywNCiNkZWZpbmUgX1NDX1NFTUFQSE9SRVMgX1ND X1NFTUFQSE9SRVMNCiAgICBfU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTLA0KI2RlZmluZSBfU0Nf U0hBUkVEX01FTU9SWV9PQkpFQ1RTIF9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMNCiAgICBfU0Nf QUlPX0xJU1RJT19NQVgsDQojZGVmaW5lIF9TQ19BSU9fTElTVElPX01BWCBfU0NfQUlPX0xJU1RJ T19NQVgNCiAgICBfU0NfQUlPX01BWCwNCiNkZWZpbmUgX1NDX0FJT19NQVggX1NDX0FJT19NQVgN CiAgICBfU0NfQUlPX1BSSU9fREVMVEFfTUFYLA0KI2RlZmluZSBfU0NfQUlPX1BSSU9fREVMVEFf TUFYIF9TQ19BSU9fUFJJT19ERUxUQV9NQVgNCiAgICBfU0NfREVMQVlUSU1FUl9NQVgsDQojZGVm aW5lIF9TQ19ERUxBWVRJTUVSX01BWCBfU0NfREVMQVlUSU1FUl9NQVgNCiAgICBfU0NfTVFfT1BF Tl9NQVgsDQojZGVmaW5lIF9TQ19NUV9PUEVOX01BWCBfU0NfTVFfT1BFTl9NQVgNCiAgICBfU0Nf TVFfUFJJT19NQVgsDQojZGVmaW5lIF9TQ19NUV9QUklPX01BWCBfU0NfTVFfUFJJT19NQVgNCiAg ICBfU0NfVkVSU0lPTiwNCiNkZWZpbmUgX1NDX1ZFUlNJT04gX1NDX1ZFUlNJT04NCiAgICBfU0Nf UEFHRVNJWkUsDQojZGVmaW5lIF9TQ19QQUdFU0laRSBfU0NfUEFHRVNJWkUNCiNkZWZpbmUgX1ND X1BBR0VfU0laRSBfU0NfUEFHRVNJWkUNCiAgICBfU0NfUlRTSUdfTUFYLA0KI2RlZmluZSBfU0Nf UlRTSUdfTUFYIF9TQ19SVFNJR19NQVgNCiAgICBfU0NfU0VNX05TRU1TX01BWCwNCiNkZWZpbmUg X1NDX1NFTV9OU0VNU19NQVggX1NDX1NFTV9OU0VNU19NQVgNCiAgICBfU0NfU0VNX1ZBTFVFX01B WCwNCiNkZWZpbmUgX1NDX1NFTV9WQUxVRV9NQVggX1NDX1NFTV9WQUxVRV9NQVgNCiAgICBfU0Nf U0lHUVVFVUVfTUFYLA0KI2RlZmluZSBfU0NfU0lHUVVFVUVfTUFYIF9TQ19TSUdRVUVVRV9NQVgN CiAgICBfU0NfVElNRVJfTUFYLA0KI2RlZmluZSBfU0NfVElNRVJfTUFYIF9TQ19USU1FUl9NQVgN Cg0KDQoNCiAgICBfU0NfQkNfQkFTRV9NQVgsDQojZGVmaW5lIF9TQ19CQ19CQVNFX01BWCBfU0Nf QkNfQkFTRV9NQVgNCiAgICBfU0NfQkNfRElNX01BWCwNCiNkZWZpbmUgX1NDX0JDX0RJTV9NQVgg X1NDX0JDX0RJTV9NQVgNCiAgICBfU0NfQkNfU0NBTEVfTUFYLA0KI2RlZmluZSBfU0NfQkNfU0NB TEVfTUFYIF9TQ19CQ19TQ0FMRV9NQVgNCiAgICBfU0NfQkNfU1RSSU5HX01BWCwNCiNkZWZpbmUg X1NDX0JDX1NUUklOR19NQVggX1NDX0JDX1NUUklOR19NQVgNCiAgICBfU0NfQ09MTF9XRUlHSFRT X01BWCwNCiNkZWZpbmUgX1NDX0NPTExfV0VJR0hUU19NQVggX1NDX0NPTExfV0VJR0hUU19NQVgN CiAgICBfU0NfRVFVSVZfQ0xBU1NfTUFYLA0KI2RlZmluZSBfU0NfRVFVSVZfQ0xBU1NfTUFYIF9T Q19FUVVJVl9DTEFTU19NQVgNCiAgICBfU0NfRVhQUl9ORVNUX01BWCwNCiNkZWZpbmUgX1NDX0VY UFJfTkVTVF9NQVggX1NDX0VYUFJfTkVTVF9NQVgNCiAgICBfU0NfTElORV9NQVgsDQojZGVmaW5l IF9TQ19MSU5FX01BWCBfU0NfTElORV9NQVgNCiAgICBfU0NfUkVfRFVQX01BWCwNCiNkZWZpbmUg X1NDX1JFX0RVUF9NQVggX1NDX1JFX0RVUF9NQVgNCiAgICBfU0NfQ0hBUkNMQVNTX05BTUVfTUFY LA0KI2RlZmluZSBfU0NfQ0hBUkNMQVNTX05BTUVfTUFYIF9TQ19DSEFSQ0xBU1NfTkFNRV9NQVgN Cg0KICAgIF9TQ18yX1ZFUlNJT04sDQojZGVmaW5lIF9TQ18yX1ZFUlNJT04gX1NDXzJfVkVSU0lP Tg0KICAgIF9TQ18yX0NfQklORCwNCiNkZWZpbmUgX1NDXzJfQ19CSU5EIF9TQ18yX0NfQklORA0K ICAgIF9TQ18yX0NfREVWLA0KI2RlZmluZSBfU0NfMl9DX0RFViBfU0NfMl9DX0RFVg0KICAgIF9T Q18yX0ZPUlRfREVWLA0KI2RlZmluZSBfU0NfMl9GT1JUX0RFViBfU0NfMl9GT1JUX0RFVg0KICAg IF9TQ18yX0ZPUlRfUlVOLA0KI2RlZmluZSBfU0NfMl9GT1JUX1JVTiBfU0NfMl9GT1JUX1JVTg0K ICAgIF9TQ18yX1NXX0RFViwNCiNkZWZpbmUgX1NDXzJfU1dfREVWIF9TQ18yX1NXX0RFVg0KICAg IF9TQ18yX0xPQ0FMRURFRiwNCiNkZWZpbmUgX1NDXzJfTE9DQUxFREVGIF9TQ18yX0xPQ0FMRURF Rg0KDQogICAgX1NDX1BJSSwNCiNkZWZpbmUgX1NDX1BJSSBfU0NfUElJDQogICAgX1NDX1BJSV9Y VEksDQojZGVmaW5lIF9TQ19QSUlfWFRJIF9TQ19QSUlfWFRJDQogICAgX1NDX1BJSV9TT0NLRVQs DQojZGVmaW5lIF9TQ19QSUlfU09DS0VUIF9TQ19QSUlfU09DS0VUDQogICAgX1NDX1BJSV9JTlRF Uk5FVCwNCiNkZWZpbmUgX1NDX1BJSV9JTlRFUk5FVCBfU0NfUElJX0lOVEVSTkVUDQogICAgX1ND X1BJSV9PU0ksDQojZGVmaW5lIF9TQ19QSUlfT1NJIF9TQ19QSUlfT1NJDQogICAgX1NDX1BPTEws DQojZGVmaW5lIF9TQ19QT0xMIF9TQ19QT0xMDQogICAgX1NDX1NFTEVDVCwNCiNkZWZpbmUgX1ND X1NFTEVDVCBfU0NfU0VMRUNUDQogICAgX1NDX1VJT19NQVhJT1YsDQojZGVmaW5lIF9TQ19VSU9f TUFYSU9WIF9TQ19VSU9fTUFYSU9WDQogICAgX1NDX0lPVl9NQVggPSBfU0NfVUlPX01BWElPViwN CiNkZWZpbmUgX1NDX0lPVl9NQVggX1NDX0lPVl9NQVgNCiAgICBfU0NfUElJX0lOVEVSTkVUX1NU UkVBTSwNCiNkZWZpbmUgX1NDX1BJSV9JTlRFUk5FVF9TVFJFQU0gX1NDX1BJSV9JTlRFUk5FVF9T VFJFQU0NCiAgICBfU0NfUElJX0lOVEVSTkVUX0RHUkFNLA0KI2RlZmluZSBfU0NfUElJX0lOVEVS TkVUX0RHUkFNIF9TQ19QSUlfSU5URVJORVRfREdSQU0NCiAgICBfU0NfUElJX09TSV9DT1RTLA0K I2RlZmluZSBfU0NfUElJX09TSV9DT1RTIF9TQ19QSUlfT1NJX0NPVFMNCiAgICBfU0NfUElJX09T SV9DTFRTLA0KI2RlZmluZSBfU0NfUElJX09TSV9DTFRTIF9TQ19QSUlfT1NJX0NMVFMNCiAgICBf U0NfUElJX09TSV9NLA0KI2RlZmluZSBfU0NfUElJX09TSV9NIF9TQ19QSUlfT1NJX00NCiAgICBf U0NfVF9JT1ZfTUFYLA0KI2RlZmluZSBfU0NfVF9JT1ZfTUFYIF9TQ19UX0lPVl9NQVgNCg0KDQog ICAgX1NDX1RIUkVBRFMsDQojZGVmaW5lIF9TQ19USFJFQURTIF9TQ19USFJFQURTDQogICAgX1ND X1RIUkVBRF9TQUZFX0ZVTkNUSU9OUywNCiNkZWZpbmUgX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9O UyBfU0NfVEhSRUFEX1NBRkVfRlVOQ1RJT05TDQogICAgX1NDX0dFVEdSX1JfU0laRV9NQVgsDQoj ZGVmaW5lIF9TQ19HRVRHUl9SX1NJWkVfTUFYIF9TQ19HRVRHUl9SX1NJWkVfTUFYDQogICAgX1ND X0dFVFBXX1JfU0laRV9NQVgsDQojZGVmaW5lIF9TQ19HRVRQV19SX1NJWkVfTUFYIF9TQ19HRVRQ V19SX1NJWkVfTUFYDQogICAgX1NDX0xPR0lOX05BTUVfTUFYLA0KI2RlZmluZSBfU0NfTE9HSU5f TkFNRV9NQVggX1NDX0xPR0lOX05BTUVfTUFYDQogICAgX1NDX1RUWV9OQU1FX01BWCwNCiNkZWZp bmUgX1NDX1RUWV9OQU1FX01BWCBfU0NfVFRZX05BTUVfTUFYDQogICAgX1NDX1RIUkVBRF9ERVNU UlVDVE9SX0lURVJBVElPTlMsDQojZGVmaW5lIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJ T05TIF9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TDQogICAgX1NDX1RIUkVBRF9LRVlT X01BWCwNCiNkZWZpbmUgX1NDX1RIUkVBRF9LRVlTX01BWCBfU0NfVEhSRUFEX0tFWVNfTUFYDQog ICAgX1NDX1RIUkVBRF9TVEFDS19NSU4sDQojZGVmaW5lIF9TQ19USFJFQURfU1RBQ0tfTUlOIF9T Q19USFJFQURfU1RBQ0tfTUlODQogICAgX1NDX1RIUkVBRF9USFJFQURTX01BWCwNCiNkZWZpbmUg X1NDX1RIUkVBRF9USFJFQURTX01BWCBfU0NfVEhSRUFEX1RIUkVBRFNfTUFYDQogICAgX1NDX1RI UkVBRF9BVFRSX1NUQUNLQUREUiwNCiNkZWZpbmUgX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiBf U0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSDQogICAgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSwN CiNkZWZpbmUgX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSBfU0NfVEhSRUFEX0FUVFJfU1RBQ0tT SVpFDQogICAgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HLA0KI2RlZmluZSBfU0NfVEhS RUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcgX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HDQog ICAgX1NDX1RIUkVBRF9QUklPX0lOSEVSSVQsDQojZGVmaW5lIF9TQ19USFJFQURfUFJJT19JTkhF UklUIF9TQ19USFJFQURfUFJJT19JTkhFUklUDQogICAgX1NDX1RIUkVBRF9QUklPX1BST1RFQ1Qs DQojZGVmaW5lIF9TQ19USFJFQURfUFJJT19QUk9URUNUIF9TQ19USFJFQURfUFJJT19QUk9URUNU DQogICAgX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCwNCiNkZWZpbmUgX1NDX1RIUkVBRF9QUk9D RVNTX1NIQVJFRCBfU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVEDQoNCiAgICBfU0NfTlBST0NFU1NP UlNfQ09ORiwNCiNkZWZpbmUgX1NDX05QUk9DRVNTT1JTX0NPTkYgX1NDX05QUk9DRVNTT1JTX0NP TkYNCiAgICBfU0NfTlBST0NFU1NPUlNfT05MTiwNCiNkZWZpbmUgX1NDX05QUk9DRVNTT1JTX09O TE4gX1NDX05QUk9DRVNTT1JTX09OTE4NCiAgICBfU0NfUEhZU19QQUdFUywNCiNkZWZpbmUgX1ND X1BIWVNfUEFHRVMgX1NDX1BIWVNfUEFHRVMNCiAgICBfU0NfQVZQSFlTX1BBR0VTLA0KI2RlZmlu ZSBfU0NfQVZQSFlTX1BBR0VTIF9TQ19BVlBIWVNfUEFHRVMNCiAgICBfU0NfQVRFWElUX01BWCwN CiNkZWZpbmUgX1NDX0FURVhJVF9NQVggX1NDX0FURVhJVF9NQVgNCiAgICBfU0NfUEFTU19NQVgs DQojZGVmaW5lIF9TQ19QQVNTX01BWCBfU0NfUEFTU19NQVgNCg0KICAgIF9TQ19YT1BFTl9WRVJT SU9OLA0KI2RlZmluZSBfU0NfWE9QRU5fVkVSU0lPTiBfU0NfWE9QRU5fVkVSU0lPTg0KICAgIF9T Q19YT1BFTl9YQ1VfVkVSU0lPTiwNCiNkZWZpbmUgX1NDX1hPUEVOX1hDVV9WRVJTSU9OIF9TQ19Y T1BFTl9YQ1VfVkVSU0lPTg0KICAgIF9TQ19YT1BFTl9VTklYLA0KI2RlZmluZSBfU0NfWE9QRU5f VU5JWCBfU0NfWE9QRU5fVU5JWA0KICAgIF9TQ19YT1BFTl9DUllQVCwNCiNkZWZpbmUgX1NDX1hP UEVOX0NSWVBUIF9TQ19YT1BFTl9DUllQVA0KICAgIF9TQ19YT1BFTl9FTkhfSTE4TiwNCiNkZWZp bmUgX1NDX1hPUEVOX0VOSF9JMThOIF9TQ19YT1BFTl9FTkhfSTE4Tg0KICAgIF9TQ19YT1BFTl9T SE0sDQojZGVmaW5lIF9TQ19YT1BFTl9TSE0gX1NDX1hPUEVOX1NITQ0KDQogICAgX1NDXzJfQ0hB Ul9URVJNLA0KI2RlZmluZSBfU0NfMl9DSEFSX1RFUk0gX1NDXzJfQ0hBUl9URVJNDQogICAgX1ND XzJfQ19WRVJTSU9OLA0KI2RlZmluZSBfU0NfMl9DX1ZFUlNJT04gX1NDXzJfQ19WRVJTSU9ODQog ICAgX1NDXzJfVVBFLA0KI2RlZmluZSBfU0NfMl9VUEUgX1NDXzJfVVBFDQoNCiAgICBfU0NfWE9Q RU5fWFBHMiwNCiNkZWZpbmUgX1NDX1hPUEVOX1hQRzIgX1NDX1hPUEVOX1hQRzINCiAgICBfU0Nf WE9QRU5fWFBHMywNCiNkZWZpbmUgX1NDX1hPUEVOX1hQRzMgX1NDX1hPUEVOX1hQRzMNCiAgICBf U0NfWE9QRU5fWFBHNCwNCiNkZWZpbmUgX1NDX1hPUEVOX1hQRzQgX1NDX1hPUEVOX1hQRzQNCg0K ICAgIF9TQ19DSEFSX0JJVCwNCiNkZWZpbmUgX1NDX0NIQVJfQklUIF9TQ19DSEFSX0JJVA0KICAg IF9TQ19DSEFSX01BWCwNCiNkZWZpbmUgX1NDX0NIQVJfTUFYIF9TQ19DSEFSX01BWA0KICAgIF9T Q19DSEFSX01JTiwNCiNkZWZpbmUgX1NDX0NIQVJfTUlOIF9TQ19DSEFSX01JTg0KICAgIF9TQ19J TlRfTUFYLA0KI2RlZmluZSBfU0NfSU5UX01BWCBfU0NfSU5UX01BWA0KICAgIF9TQ19JTlRfTUlO LA0KI2RlZmluZSBfU0NfSU5UX01JTiBfU0NfSU5UX01JTg0KICAgIF9TQ19MT05HX0JJVCwNCiNk ZWZpbmUgX1NDX0xPTkdfQklUIF9TQ19MT05HX0JJVA0KICAgIF9TQ19XT1JEX0JJVCwNCiNkZWZp bmUgX1NDX1dPUkRfQklUIF9TQ19XT1JEX0JJVA0KICAgIF9TQ19NQl9MRU5fTUFYLA0KI2RlZmlu ZSBfU0NfTUJfTEVOX01BWCBfU0NfTUJfTEVOX01BWA0KICAgIF9TQ19OWkVSTywNCiNkZWZpbmUg X1NDX05aRVJPIF9TQ19OWkVSTw0KICAgIF9TQ19TU0laRV9NQVgsDQojZGVmaW5lIF9TQ19TU0la RV9NQVggX1NDX1NTSVpFX01BWA0KICAgIF9TQ19TQ0hBUl9NQVgsDQojZGVmaW5lIF9TQ19TQ0hB Ul9NQVggX1NDX1NDSEFSX01BWA0KICAgIF9TQ19TQ0hBUl9NSU4sDQojZGVmaW5lIF9TQ19TQ0hB Ul9NSU4gX1NDX1NDSEFSX01JTg0KICAgIF9TQ19TSFJUX01BWCwNCiNkZWZpbmUgX1NDX1NIUlRf TUFYIF9TQ19TSFJUX01BWA0KICAgIF9TQ19TSFJUX01JTiwNCiNkZWZpbmUgX1NDX1NIUlRfTUlO IF9TQ19TSFJUX01JTg0KICAgIF9TQ19VQ0hBUl9NQVgsDQojZGVmaW5lIF9TQ19VQ0hBUl9NQVgg X1NDX1VDSEFSX01BWA0KICAgIF9TQ19VSU5UX01BWCwNCiNkZWZpbmUgX1NDX1VJTlRfTUFYIF9T Q19VSU5UX01BWA0KICAgIF9TQ19VTE9OR19NQVgsDQojZGVmaW5lIF9TQ19VTE9OR19NQVggX1ND X1VMT05HX01BWA0KICAgIF9TQ19VU0hSVF9NQVgsDQojZGVmaW5lIF9TQ19VU0hSVF9NQVggX1ND X1VTSFJUX01BWA0KDQogICAgX1NDX05MX0FSR01BWCwNCiNkZWZpbmUgX1NDX05MX0FSR01BWCBf U0NfTkxfQVJHTUFYDQogICAgX1NDX05MX0xBTkdNQVgsDQojZGVmaW5lIF9TQ19OTF9MQU5HTUFY IF9TQ19OTF9MQU5HTUFYDQogICAgX1NDX05MX01TR01BWCwNCiNkZWZpbmUgX1NDX05MX01TR01B WCBfU0NfTkxfTVNHTUFYDQogICAgX1NDX05MX05NQVgsDQojZGVmaW5lIF9TQ19OTF9OTUFYIF9T Q19OTF9OTUFYDQogICAgX1NDX05MX1NFVE1BWCwNCiNkZWZpbmUgX1NDX05MX1NFVE1BWCBfU0Nf TkxfU0VUTUFYDQogICAgX1NDX05MX1RFWFRNQVgsDQojZGVmaW5lIF9TQ19OTF9URVhUTUFYIF9T Q19OTF9URVhUTUFYDQoNCiAgICBfU0NfWEJTNV9JTFAzMl9PRkYzMiwNCiNkZWZpbmUgX1NDX1hC UzVfSUxQMzJfT0ZGMzIgX1NDX1hCUzVfSUxQMzJfT0ZGMzINCiAgICBfU0NfWEJTNV9JTFAzMl9P RkZCSUcsDQojZGVmaW5lIF9TQ19YQlM1X0lMUDMyX09GRkJJRyBfU0NfWEJTNV9JTFAzMl9PRkZC SUcNCiAgICBfU0NfWEJTNV9MUDY0X09GRjY0LA0KI2RlZmluZSBfU0NfWEJTNV9MUDY0X09GRjY0 IF9TQ19YQlM1X0xQNjRfT0ZGNjQNCiAgICBfU0NfWEJTNV9MUEJJR19PRkZCSUcsDQojZGVmaW5l IF9TQ19YQlM1X0xQQklHX09GRkJJRyBfU0NfWEJTNV9MUEJJR19PRkZCSUcNCg0KICAgIF9TQ19Y T1BFTl9MRUdBQ1ksDQojZGVmaW5lIF9TQ19YT1BFTl9MRUdBQ1kgX1NDX1hPUEVOX0xFR0FDWQ0K ICAgIF9TQ19YT1BFTl9SRUFMVElNRSwNCiNkZWZpbmUgX1NDX1hPUEVOX1JFQUxUSU1FIF9TQ19Y T1BFTl9SRUFMVElNRQ0KICAgIF9TQ19YT1BFTl9SRUFMVElNRV9USFJFQURTLA0KI2RlZmluZSBf U0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUyBfU0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUw0KDQog ICAgX1NDX0FEVklTT1JZX0lORk8sDQojZGVmaW5lIF9TQ19BRFZJU09SWV9JTkZPIF9TQ19BRFZJ U09SWV9JTkZPDQogICAgX1NDX0JBUlJJRVJTLA0KI2RlZmluZSBfU0NfQkFSUklFUlMgX1NDX0JB UlJJRVJTDQogICAgX1NDX0JBU0UsDQojZGVmaW5lIF9TQ19CQVNFIF9TQ19CQVNFDQogICAgX1ND X0NfTEFOR19TVVBQT1JULA0KI2RlZmluZSBfU0NfQ19MQU5HX1NVUFBPUlQgX1NDX0NfTEFOR19T VVBQT1JUDQogICAgX1NDX0NfTEFOR19TVVBQT1JUX1IsDQojZGVmaW5lIF9TQ19DX0xBTkdfU1VQ UE9SVF9SIF9TQ19DX0xBTkdfU1VQUE9SVF9SDQogICAgX1NDX0NMT0NLX1NFTEVDVElPTiwNCiNk ZWZpbmUgX1NDX0NMT0NLX1NFTEVDVElPTiBfU0NfQ0xPQ0tfU0VMRUNUSU9ODQogICAgX1NDX0NQ VVRJTUUsDQojZGVmaW5lIF9TQ19DUFVUSU1FIF9TQ19DUFVUSU1FDQogICAgX1NDX1RIUkVBRF9D UFVUSU1FLA0KI2RlZmluZSBfU0NfVEhSRUFEX0NQVVRJTUUgX1NDX1RIUkVBRF9DUFVUSU1FDQog ICAgX1NDX0RFVklDRV9JTywNCiNkZWZpbmUgX1NDX0RFVklDRV9JTyBfU0NfREVWSUNFX0lPDQog ICAgX1NDX0RFVklDRV9TUEVDSUZJQywNCiNkZWZpbmUgX1NDX0RFVklDRV9TUEVDSUZJQyBfU0Nf REVWSUNFX1NQRUNJRklDDQogICAgX1NDX0RFVklDRV9TUEVDSUZJQ19SLA0KI2RlZmluZSBfU0Nf REVWSUNFX1NQRUNJRklDX1IgX1NDX0RFVklDRV9TUEVDSUZJQ19SDQogICAgX1NDX0ZEX01HTVQs DQojZGVmaW5lIF9TQ19GRF9NR01UIF9TQ19GRF9NR01UDQogICAgX1NDX0ZJRk8sDQojZGVmaW5l IF9TQ19GSUZPIF9TQ19GSUZPDQogICAgX1NDX1BJUEUsDQojZGVmaW5lIF9TQ19QSVBFIF9TQ19Q SVBFDQogICAgX1NDX0ZJTEVfQVRUUklCVVRFUywNCiNkZWZpbmUgX1NDX0ZJTEVfQVRUUklCVVRF UyBfU0NfRklMRV9BVFRSSUJVVEVTDQogICAgX1NDX0ZJTEVfTE9DS0lORywNCiNkZWZpbmUgX1ND X0ZJTEVfTE9DS0lORyBfU0NfRklMRV9MT0NLSU5HDQogICAgX1NDX0ZJTEVfU1lTVEVNLA0KI2Rl ZmluZSBfU0NfRklMRV9TWVNURU0gX1NDX0ZJTEVfU1lTVEVNDQogICAgX1NDX01PTk9UT05JQ19D TE9DSywNCiNkZWZpbmUgX1NDX01PTk9UT05JQ19DTE9DSyBfU0NfTU9OT1RPTklDX0NMT0NLDQog ICAgX1NDX01VTFRJX1BST0NFU1MsDQojZGVmaW5lIF9TQ19NVUxUSV9QUk9DRVNTIF9TQ19NVUxU SV9QUk9DRVNTDQogICAgX1NDX1NJTkdMRV9QUk9DRVNTLA0KI2RlZmluZSBfU0NfU0lOR0xFX1BS T0NFU1MgX1NDX1NJTkdMRV9QUk9DRVNTDQogICAgX1NDX05FVFdPUktJTkcsDQojZGVmaW5lIF9T Q19ORVRXT1JLSU5HIF9TQ19ORVRXT1JLSU5HDQogICAgX1NDX1JFQURFUl9XUklURVJfTE9DS1Ms DQojZGVmaW5lIF9TQ19SRUFERVJfV1JJVEVSX0xPQ0tTIF9TQ19SRUFERVJfV1JJVEVSX0xPQ0tT DQogICAgX1NDX1NQSU5fTE9DS1MsDQojZGVmaW5lIF9TQ19TUElOX0xPQ0tTIF9TQ19TUElOX0xP Q0tTDQogICAgX1NDX1JFR0VYUCwNCiNkZWZpbmUgX1NDX1JFR0VYUCBfU0NfUkVHRVhQDQogICAg X1NDX1JFR0VYX1ZFUlNJT04sDQojZGVmaW5lIF9TQ19SRUdFWF9WRVJTSU9OIF9TQ19SRUdFWF9W RVJTSU9ODQogICAgX1NDX1NIRUxMLA0KI2RlZmluZSBfU0NfU0hFTEwgX1NDX1NIRUxMDQogICAg X1NDX1NJR05BTFMsDQojZGVmaW5lIF9TQ19TSUdOQUxTIF9TQ19TSUdOQUxTDQogICAgX1NDX1NQ QVdOLA0KI2RlZmluZSBfU0NfU1BBV04gX1NDX1NQQVdODQogICAgX1NDX1NQT1JBRElDX1NFUlZF UiwNCiNkZWZpbmUgX1NDX1NQT1JBRElDX1NFUlZFUiBfU0NfU1BPUkFESUNfU0VSVkVSDQogICAg X1NDX1RIUkVBRF9TUE9SQURJQ19TRVJWRVIsDQojZGVmaW5lIF9TQ19USFJFQURfU1BPUkFESUNf U0VSVkVSIF9TQ19USFJFQURfU1BPUkFESUNfU0VSVkVSDQogICAgX1NDX1NZU1RFTV9EQVRBQkFT RSwNCiNkZWZpbmUgX1NDX1NZU1RFTV9EQVRBQkFTRSBfU0NfU1lTVEVNX0RBVEFCQVNFDQogICAg X1NDX1NZU1RFTV9EQVRBQkFTRV9SLA0KI2RlZmluZSBfU0NfU1lTVEVNX0RBVEFCQVNFX1IgX1ND X1NZU1RFTV9EQVRBQkFTRV9SDQogICAgX1NDX1RJTUVPVVRTLA0KI2RlZmluZSBfU0NfVElNRU9V VFMgX1NDX1RJTUVPVVRTDQogICAgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTLA0KI2RlZmluZSBf U0NfVFlQRURfTUVNT1JZX09CSkVDVFMgX1NDX1RZUEVEX01FTU9SWV9PQkpFQ1RTDQogICAgX1ND X1VTRVJfR1JPVVBTLA0KI2RlZmluZSBfU0NfVVNFUl9HUk9VUFMgX1NDX1VTRVJfR1JPVVBTDQog ICAgX1NDX1VTRVJfR1JPVVBTX1IsDQojZGVmaW5lIF9TQ19VU0VSX0dST1VQU19SIF9TQ19VU0VS X0dST1VQU19SDQogICAgX1NDXzJfUEJTLA0KI2RlZmluZSBfU0NfMl9QQlMgX1NDXzJfUEJTDQog ICAgX1NDXzJfUEJTX0FDQ09VTlRJTkcsDQojZGVmaW5lIF9TQ18yX1BCU19BQ0NPVU5USU5HIF9T Q18yX1BCU19BQ0NPVU5USU5HDQogICAgX1NDXzJfUEJTX0xPQ0FURSwNCiNkZWZpbmUgX1NDXzJf UEJTX0xPQ0FURSBfU0NfMl9QQlNfTE9DQVRFDQogICAgX1NDXzJfUEJTX01FU1NBR0UsDQojZGVm aW5lIF9TQ18yX1BCU19NRVNTQUdFIF9TQ18yX1BCU19NRVNTQUdFDQogICAgX1NDXzJfUEJTX1RS QUNLLA0KI2RlZmluZSBfU0NfMl9QQlNfVFJBQ0sgX1NDXzJfUEJTX1RSQUNLDQogICAgX1NDX1NZ TUxPT1BfTUFYLA0KI2RlZmluZSBfU0NfU1lNTE9PUF9NQVggX1NDX1NZTUxPT1BfTUFYDQogICAg X1NDX1NUUkVBTVMsDQojZGVmaW5lIF9TQ19TVFJFQU1TIF9TQ19TVFJFQU1TDQogICAgX1NDXzJf UEJTX0NIRUNLUE9JTlQsDQojZGVmaW5lIF9TQ18yX1BCU19DSEVDS1BPSU5UIF9TQ18yX1BCU19D SEVDS1BPSU5UDQoNCiAgICBfU0NfVjZfSUxQMzJfT0ZGMzIsDQojZGVmaW5lIF9TQ19WNl9JTFAz Ml9PRkYzMiBfU0NfVjZfSUxQMzJfT0ZGMzINCiAgICBfU0NfVjZfSUxQMzJfT0ZGQklHLA0KI2Rl ZmluZSBfU0NfVjZfSUxQMzJfT0ZGQklHIF9TQ19WNl9JTFAzMl9PRkZCSUcNCiAgICBfU0NfVjZf TFA2NF9PRkY2NCwNCiNkZWZpbmUgX1NDX1Y2X0xQNjRfT0ZGNjQgX1NDX1Y2X0xQNjRfT0ZGNjQN CiAgICBfU0NfVjZfTFBCSUdfT0ZGQklHLA0KI2RlZmluZSBfU0NfVjZfTFBCSUdfT0ZGQklHIF9T Q19WNl9MUEJJR19PRkZCSUcNCg0KICAgIF9TQ19IT1NUX05BTUVfTUFYLA0KI2RlZmluZSBfU0Nf SE9TVF9OQU1FX01BWCBfU0NfSE9TVF9OQU1FX01BWA0KICAgIF9TQ19UUkFDRSwNCiNkZWZpbmUg X1NDX1RSQUNFIF9TQ19UUkFDRQ0KICAgIF9TQ19UUkFDRV9FVkVOVF9GSUxURVIsDQojZGVmaW5l IF9TQ19UUkFDRV9FVkVOVF9GSUxURVIgX1NDX1RSQUNFX0VWRU5UX0ZJTFRFUg0KICAgIF9TQ19U UkFDRV9JTkhFUklULA0KI2RlZmluZSBfU0NfVFJBQ0VfSU5IRVJJVCBfU0NfVFJBQ0VfSU5IRVJJ VA0KICAgIF9TQ19UUkFDRV9MT0csDQojZGVmaW5lIF9TQ19UUkFDRV9MT0cgX1NDX1RSQUNFX0xP Rw0KDQogICAgX1NDX0xFVkVMMV9JQ0FDSEVfU0laRSwNCiNkZWZpbmUgX1NDX0xFVkVMMV9JQ0FD SEVfU0laRSBfU0NfTEVWRUwxX0lDQUNIRV9TSVpFDQogICAgX1NDX0xFVkVMMV9JQ0FDSEVfQVNT T0MsDQojZGVmaW5lIF9TQ19MRVZFTDFfSUNBQ0hFX0FTU09DIF9TQ19MRVZFTDFfSUNBQ0hFX0FT U09DDQogICAgX1NDX0xFVkVMMV9JQ0FDSEVfTElORVNJWkUsDQojZGVmaW5lIF9TQ19MRVZFTDFf SUNBQ0hFX0xJTkVTSVpFIF9TQ19MRVZFTDFfSUNBQ0hFX0xJTkVTSVpFDQogICAgX1NDX0xFVkVM MV9EQ0FDSEVfU0laRSwNCiNkZWZpbmUgX1NDX0xFVkVMMV9EQ0FDSEVfU0laRSBfU0NfTEVWRUwx X0RDQUNIRV9TSVpFDQogICAgX1NDX0xFVkVMMV9EQ0FDSEVfQVNTT0MsDQojZGVmaW5lIF9TQ19M RVZFTDFfRENBQ0hFX0FTU09DIF9TQ19MRVZFTDFfRENBQ0hFX0FTU09DDQogICAgX1NDX0xFVkVM MV9EQ0FDSEVfTElORVNJWkUsDQojZGVmaW5lIF9TQ19MRVZFTDFfRENBQ0hFX0xJTkVTSVpFIF9T Q19MRVZFTDFfRENBQ0hFX0xJTkVTSVpFDQogICAgX1NDX0xFVkVMMl9DQUNIRV9TSVpFLA0KI2Rl ZmluZSBfU0NfTEVWRUwyX0NBQ0hFX1NJWkUgX1NDX0xFVkVMMl9DQUNIRV9TSVpFDQogICAgX1ND X0xFVkVMMl9DQUNIRV9BU1NPQywNCiNkZWZpbmUgX1NDX0xFVkVMMl9DQUNIRV9BU1NPQyBfU0Nf TEVWRUwyX0NBQ0hFX0FTU09DDQogICAgX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRSwNCiNkZWZp bmUgX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRSBfU0NfTEVWRUwyX0NBQ0hFX0xJTkVTSVpFDQog ICAgX1NDX0xFVkVMM19DQUNIRV9TSVpFLA0KI2RlZmluZSBfU0NfTEVWRUwzX0NBQ0hFX1NJWkUg X1NDX0xFVkVMM19DQUNIRV9TSVpFDQogICAgX1NDX0xFVkVMM19DQUNIRV9BU1NPQywNCiNkZWZp bmUgX1NDX0xFVkVMM19DQUNIRV9BU1NPQyBfU0NfTEVWRUwzX0NBQ0hFX0FTU09DDQogICAgX1ND X0xFVkVMM19DQUNIRV9MSU5FU0laRSwNCiNkZWZpbmUgX1NDX0xFVkVMM19DQUNIRV9MSU5FU0la RSBfU0NfTEVWRUwzX0NBQ0hFX0xJTkVTSVpFDQogICAgX1NDX0xFVkVMNF9DQUNIRV9TSVpFLA0K I2RlZmluZSBfU0NfTEVWRUw0X0NBQ0hFX1NJWkUgX1NDX0xFVkVMNF9DQUNIRV9TSVpFDQogICAg X1NDX0xFVkVMNF9DQUNIRV9BU1NPQywNCiNkZWZpbmUgX1NDX0xFVkVMNF9DQUNIRV9BU1NPQyBf U0NfTEVWRUw0X0NBQ0hFX0FTU09DDQogICAgX1NDX0xFVkVMNF9DQUNIRV9MSU5FU0laRSwNCiNk ZWZpbmUgX1NDX0xFVkVMNF9DQUNIRV9MSU5FU0laRSBfU0NfTEVWRUw0X0NBQ0hFX0xJTkVTSVpF DQoNCg0KICAgIF9TQ19JUFY2ID0gX1NDX0xFVkVMMV9JQ0FDSEVfU0laRSArIDUwLA0KI2RlZmlu ZSBfU0NfSVBWNiBfU0NfSVBWNg0KICAgIF9TQ19SQVdfU09DS0VUUw0KI2RlZmluZSBfU0NfUkFX X1NPQ0tFVFMgX1NDX1JBV19TT0NLRVRTDQogIH07DQoNCg0KZW51bQ0KICB7DQogICAgX0NTX1BB VEgsDQojZGVmaW5lIF9DU19QQVRIIF9DU19QQVRIDQoNCiAgICBfQ1NfVjZfV0lEVEhfUkVTVFJJ Q1RFRF9FTlZTLA0KI2RlZmluZSBfQ1NfVjZfV0lEVEhfUkVTVFJJQ1RFRF9FTlZTIF9DU19WNl9X SURUSF9SRVNUUklDVEVEX0VOVlMNCg0KICAgIF9DU19HTlVfTElCQ19WRVJTSU9OLA0KI2RlZmlu ZSBfQ1NfR05VX0xJQkNfVkVSU0lPTiBfQ1NfR05VX0xJQkNfVkVSU0lPTg0KICAgIF9DU19HTlVf TElCUFRIUkVBRF9WRVJTSU9OLA0KI2RlZmluZSBfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTiBf Q1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTg0KDQogICAgX0NTX0xGU19DRkxBR1MgPSAxMDAwLA0K I2RlZmluZSBfQ1NfTEZTX0NGTEFHUyBfQ1NfTEZTX0NGTEFHUw0KICAgIF9DU19MRlNfTERGTEFH UywNCiNkZWZpbmUgX0NTX0xGU19MREZMQUdTIF9DU19MRlNfTERGTEFHUw0KICAgIF9DU19MRlNf TElCUywNCiNkZWZpbmUgX0NTX0xGU19MSUJTIF9DU19MRlNfTElCUw0KICAgIF9DU19MRlNfTElO VEZMQUdTLA0KI2RlZmluZSBfQ1NfTEZTX0xJTlRGTEFHUyBfQ1NfTEZTX0xJTlRGTEFHUw0KICAg IF9DU19MRlM2NF9DRkxBR1MsDQojZGVmaW5lIF9DU19MRlM2NF9DRkxBR1MgX0NTX0xGUzY0X0NG TEFHUw0KICAgIF9DU19MRlM2NF9MREZMQUdTLA0KI2RlZmluZSBfQ1NfTEZTNjRfTERGTEFHUyBf Q1NfTEZTNjRfTERGTEFHUw0KICAgIF9DU19MRlM2NF9MSUJTLA0KI2RlZmluZSBfQ1NfTEZTNjRf TElCUyBfQ1NfTEZTNjRfTElCUw0KICAgIF9DU19MRlM2NF9MSU5URkxBR1MsDQojZGVmaW5lIF9D U19MRlM2NF9MSU5URkxBR1MgX0NTX0xGUzY0X0xJTlRGTEFHUw0KDQogICAgX0NTX1hCUzVfSUxQ MzJfT0ZGMzJfQ0ZMQUdTID0gMTEwMCwNCiNkZWZpbmUgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZM QUdTIF9DU19YQlM1X0lMUDMyX09GRjMyX0NGTEFHUw0KICAgIF9DU19YQlM1X0lMUDMyX09GRjMy X0xERkxBR1MsDQojZGVmaW5lIF9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MgX0NTX1hCUzVf SUxQMzJfT0ZGMzJfTERGTEFHUw0KICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMsDQojZGVm aW5lIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMgX0NTX1hCUzVfSUxQMzJfT0ZGMzJfTElCUw0K ICAgIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJTlRGTEFHUywNCiNkZWZpbmUgX0NTX1hCUzVfSUxQ MzJfT0ZGMzJfTElOVEZMQUdTIF9DU19YQlM1X0lMUDMyX09GRjMyX0xJTlRGTEFHUw0KICAgIF9D U19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MsDQojZGVmaW5lIF9DU19YQlM1X0lMUDMyX09GRkJJ R19DRkxBR1MgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUw0KICAgIF9DU19YQlM1X0lMUDMy X09GRkJJR19MREZMQUdTLA0KI2RlZmluZSBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUyBf Q1NfWEJTNV9JTFAzMl9PRkZCSUdfTERGTEFHUw0KICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19M SUJTLA0KI2RlZmluZSBfQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUyBfQ1NfWEJTNV9JTFAzMl9P RkZCSUdfTElCUw0KICAgIF9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1MsDQojZGVmaW5l IF9DU19YQlM1X0lMUDMyX09GRkJJR19MSU5URkxBR1MgX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJ TlRGTEFHUw0KICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfQ0ZMQUdTLA0KI2RlZmluZSBfQ1NfWEJT NV9MUDY0X09GRjY0X0NGTEFHUyBfQ1NfWEJTNV9MUDY0X09GRjY0X0NGTEFHUw0KICAgIF9DU19Y QlM1X0xQNjRfT0ZGNjRfTERGTEFHUywNCiNkZWZpbmUgX0NTX1hCUzVfTFA2NF9PRkY2NF9MREZM QUdTIF9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUw0KICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRf TElCUywNCiNkZWZpbmUgX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTIF9DU19YQlM1X0xQNjRfT0ZG NjRfTElCUw0KICAgIF9DU19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdTLA0KI2RlZmluZSBfQ1Nf WEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUyBfQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUw0K ICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19DRkxBR1MsDQojZGVmaW5lIF9DU19YQlM1X0xQQklH X09GRkJJR19DRkxBR1MgX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUw0KICAgIF9DU19YQlM1 X0xQQklHX09GRkJJR19MREZMQUdTLA0KI2RlZmluZSBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERG TEFHUyBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUw0KICAgIF9DU19YQlM1X0xQQklHX09G RkJJR19MSUJTLA0KI2RlZmluZSBfQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElCUyBfQ1NfWEJTNV9M UEJJR19PRkZCSUdfTElCUw0KICAgIF9DU19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MsDQoj ZGVmaW5lIF9DU19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MgX0NTX1hCUzVfTFBCSUdfT0ZG QklHX0xJTlRGTEFHUw0KDQogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0NGTEFHUywNCiNk ZWZpbmUgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0NGTEFHUyBfQ1NfUE9TSVhfVjZfSUxQMzJf T0ZGMzJfQ0ZMQUdTDQogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xERkxBR1MsDQojZGVm aW5lIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MREZMQUdTIF9DU19QT1NJWF9WNl9JTFAzMl9P RkYzMl9MREZMQUdTDQogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJQlMsDQojZGVmaW5l IF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9MSUJTIF9DU19QT1NJWF9WNl9JTFAzMl9PRkYzMl9M SUJTDQogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJTlRGTEFHUywNCiNkZWZpbmUgX0NT X1BPU0lYX1Y2X0lMUDMyX09GRjMyX0xJTlRGTEFHUyBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGMzJf TElOVEZMQUdTDQogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19DRkxBR1MsDQojZGVmaW5l IF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfQ0ZMQUdTIF9DU19QT1NJWF9WNl9JTFAzMl9PRkZC SUdfQ0ZMQUdTDQogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MREZMQUdTLA0KI2RlZmlu ZSBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xERkxBR1MgX0NTX1BPU0lYX1Y2X0lMUDMyX09G RkJJR19MREZMQUdTDQogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSUJTLA0KI2RlZmlu ZSBfQ1NfUE9TSVhfVjZfSUxQMzJfT0ZGQklHX0xJQlMgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJ R19MSUJTDQogICAgX0NTX1BPU0lYX1Y2X0lMUDMyX09GRkJJR19MSU5URkxBR1MsDQojZGVmaW5l IF9DU19QT1NJWF9WNl9JTFAzMl9PRkZCSUdfTElOVEZMQUdTIF9DU19QT1NJWF9WNl9JTFAzMl9P RkZCSUdfTElOVEZMQUdTDQogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfQ0ZMQUdTLA0KI2Rl ZmluZSBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9DRkxBR1MgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZG NjRfQ0ZMQUdTDQogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTERGTEFHUywNCiNkZWZpbmUg X0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTERGTEFHUyBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9M REZMQUdTDQogICAgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElCUywNCiNkZWZpbmUgX0NTX1BP U0lYX1Y2X0xQNjRfT0ZGNjRfTElCUyBfQ1NfUE9TSVhfVjZfTFA2NF9PRkY2NF9MSUJTDQogICAg X0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTLA0KI2RlZmluZSBfQ1NfUE9TSVhfVjZf TFA2NF9PRkY2NF9MSU5URkxBR1MgX0NTX1BPU0lYX1Y2X0xQNjRfT0ZGNjRfTElOVEZMQUdTDQog ICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19DRkxBR1MsDQojZGVmaW5lIF9DU19QT1NJWF9W Nl9MUEJJR19PRkZCSUdfQ0ZMQUdTIF9DU19QT1NJWF9WNl9MUEJJR19PRkZCSUdfQ0ZMQUdTDQog ICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZMQUdTLA0KI2RlZmluZSBfQ1NfUE9TSVhf VjZfTFBCSUdfT0ZGQklHX0xERkxBR1MgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MREZMQUdT DQogICAgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSUJTLA0KI2RlZmluZSBfQ1NfUE9TSVhf VjZfTFBCSUdfT0ZGQklHX0xJQlMgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSUJTDQogICAg X0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSU5URkxBR1MNCiNkZWZpbmUgX0NTX1BPU0lYX1Y2 X0xQQklHX09GRkJJR19MSU5URkxBR1MgX0NTX1BPU0lYX1Y2X0xQQklHX09GRkJJR19MSU5URkxB R1MNCiAgfTsNCiMgNTU1ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMyA0DQoNCg0KZXh0ZXJu IGxvbmcgaW50IHBhdGhjb25mIChfX2NvbnN0IGNoYXIgKl9fcGF0aCwgaW50IF9fbmFtZSkNCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOw0KDQoNCmV4dGVybiBsb25nIGludCBmcGF0aGNvbmYgKGludCBfX2ZkLCBpbnQg X19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0KDQpleHRlcm4gbG9uZyBp bnQgc3lzY29uZiAoaW50IF9fbmFtZSkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQoN Cg0KDQpleHRlcm4gc2l6ZV90IGNvbmZzdHIgKGludCBfX25hbWUsIGNoYXIgKl9fYnVmLCBzaXpl X3QgX19sZW4pIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQpleHRlcm4g X19waWRfdCBnZXRwaWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoN CmV4dGVybiBfX3BpZF90IGdldHBwaWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpOw0KDQoNCg0KDQpleHRlcm4gX19waWRfdCBnZXRwZ3JwICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKTsNCiMgNTkxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNA0KZXh0 ZXJuIF9fcGlkX3QgX19nZXRwZ2lkIChfX3BpZF90IF9fcGlkKSBfX2F0dHJpYnV0ZV9fICgoX19u b3Rocm93X18pKTsNCg0KZXh0ZXJuIF9fcGlkX3QgZ2V0cGdpZCAoX19waWRfdCBfX3BpZCkgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IHNldHBn aWQgKF9fcGlkX3QgX19waWQsIF9fcGlkX3QgX19wZ2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKTsNCiMgNjE3ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNA0KZXh0ZXJuIGludCBz ZXRwZ3JwICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCiMgNjM0ICIvdXNy L2luY2x1ZGUvdW5pc3RkLmgiIDMgNA0KZXh0ZXJuIF9fcGlkX3Qgc2V0c2lkICh2b2lkKSBfX2F0 dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0KDQoNCmV4dGVybiBfX3BpZF90IGdldHNpZCAo X19waWRfdCBfX3BpZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQoNCg0KDQpleHRl cm4gX191aWRfdCBnZXR1aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0K DQoNCmV4dGVybiBfX3VpZF90IGdldGV1aWQgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpOw0KDQoNCmV4dGVybiBfX2dpZF90IGdldGdpZCAodm9pZCkgX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fKSk7DQoNCg0KZXh0ZXJuIF9fZ2lkX3QgZ2V0ZWdpZCAodm9pZCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQoNCg0KDQoNCmV4dGVybiBpbnQgZ2V0Z3JvdXBzIChp bnQgX19zaXplLCBfX2dpZF90IF9fbGlzdFtdKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18p KSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KZXh0ZXJu IGludCBncm91cF9tZW1iZXIgKF9fZ2lkX3QgX19naWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBzZXR1aWQgKF9fdWlkX3QgX191aWQpIF9f YXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IHNldHJldWlk IChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IHNldGV1aWQgKF9fdWlkX3QgX191aWQpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBzZXRnaWQg KF9fZ2lkX3QgX19naWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQpl eHRlcm4gaW50IHNldHJlZ2lkIChfX2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IHNldGVnaWQgKF9f Z2lkX3QgX19naWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQoNCmV4 dGVybiBpbnQgZ2V0cmVzdWlkIChfX3VpZF90ICpfX3J1aWQsIF9fdWlkX3QgKl9fZXVpZCwgX191 aWRfdCAqX19zdWlkKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0KDQoN CmV4dGVybiBpbnQgZ2V0cmVzZ2lkIChfX2dpZF90ICpfX3JnaWQsIF9fZ2lkX3QgKl9fZWdpZCwg X19naWRfdCAqX19zZ2lkKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0K DQoNCmV4dGVybiBpbnQgc2V0cmVzdWlkIChfX3VpZF90IF9fcnVpZCwgX191aWRfdCBfX2V1aWQs IF9fdWlkX3QgX19zdWlkKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0K DQoNCmV4dGVybiBpbnQgc2V0cmVzZ2lkIChfX2dpZF90IF9fcmdpZCwgX19naWRfdCBfX2VnaWQs IF9fZ2lkX3QgX19zZ2lkKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0K DQoNCg0KDQoNCmV4dGVybiBfX3BpZF90IGZvcmsgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIF9fcGlkX3QgdmZvcmsgKHZvaWQpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQoNCmV4dGVybiBjaGFyICp0dHluYW1l IChpbnQgX19mZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQoNCg0KDQpleHRlcm4g aW50IHR0eW5hbWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pDQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMikpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQoN Cg0KZXh0ZXJuIGludCBpc2F0dHkgKGludCBfX2ZkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKTsNCg0KDQoNCg0KDQpleHRlcm4gaW50IHR0eXNsb3QgKHZvaWQpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IGxpbmsgKF9fY29uc3QgY2hhciAq X19mcm9tLCBfX2NvbnN0IGNoYXIgKl9fdG8pDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhy b3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKSBfX2F0dHJpYnV0ZV9f ICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KDQpleHRlcm4gaW50IGxpbmthdCAo aW50IF9fZnJvbWZkLCBfX2NvbnN0IGNoYXIgKl9fZnJvbSwgaW50IF9fdG9mZCwNCiAgICAgX19j b25zdCBjaGFyICpfX3RvLCBpbnQgX19mbGFncykNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCA0KSkpIF9fYXR0cmlidXRl X18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQoNCmV4dGVybiBpbnQgc3ltbGlu ayAoX19jb25zdCBjaGFyICpfX2Zyb20sIF9fY29uc3QgY2hhciAqX190bykNCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy KSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQoNCmV4 dGVybiBzc2l6ZV90IHJlYWRsaW5rIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wYXRoLA0K ICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikNCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp IF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQoNCmV4dGVy biBpbnQgc3ltbGlua2F0IChfX2NvbnN0IGNoYXIgKl9fZnJvbSwgaW50IF9fdG9mZCwNCiAgICAg ICAgX19jb25zdCBjaGFyICpfX3RvKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91 bnVzZWRfcmVzdWx0X18pKTsNCg0KDQpleHRlcm4gc3NpemVfdCByZWFkbGlua2F0IChpbnQgX19m ZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwNCiAgICAgIGNoYXIgKl9fcmVzdHJp Y3QgX19idWYsIHNpemVfdCBfX2xlbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpIF9fYXR0cmlidXRlX18gKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQpleHRlcm4gaW50IHVubGluayAoX19jb25z dCBjaGFyICpfX25hbWUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKTsNCg0KDQoNCmV4dGVybiBpbnQgdW5saW5rYXQgKGludCBf X2ZkLCBfX2NvbnN0IGNoYXIgKl9fbmFtZSwgaW50IF9fZmxhZykNCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOw0KDQoN Cg0KZXh0ZXJuIGludCBybWRpciAoX19jb25zdCBjaGFyICpfX3BhdGgpIF9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsNCg0KDQoN CmV4dGVybiBfX3BpZF90IHRjZ2V0cGdycCAoaW50IF9fZmQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpOw0KDQoNCmV4dGVybiBpbnQgdGNzZXRwZ3JwIChpbnQgX19mZCwgX19waWRfdCBf X3BncnBfaWQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQoNCg0KZXh0 ZXJuIGNoYXIgKmdldGxvZ2luICh2b2lkKTsNCg0KDQoNCg0KDQoNCg0KZXh0ZXJuIGludCBnZXRs b2dpbl9yIChjaGFyICpfX25hbWUsIHNpemVfdCBfX25hbWVfbGVuKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCmV4dGVybiBpbnQgc2V0bG9naW4gKF9fY29uc3Qg Y2hhciAqX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEpKSk7DQoNCg0KDQoNCg0KDQoNCiNkZWZpbmUgX19uZWVkX2dldG9w dCANCiMgMSAiLi4vbGliL2dldG9wdC5oIiAxIDMgNA0KIyAyMyAiLi4vbGliL2dldG9wdC5oIiAz IDQNCiAgICAgICANCiMgMjQgIi4uL2xpYi9nZXRvcHQuaCIgMw0KDQoNCg0KDQoNCg0KDQojZGVm aW5lIF9HTF9TWVNURU1fR0VUT1BUIA0KIyAxICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDEgMyA0 DQojIDU5ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMgNA0KZXh0ZXJuIGNoYXIgKm9wdGFyZzsN CiMgNzMgIi91c3IvaW5jbHVkZS9nZXRvcHQuaCIgMyA0DQpleHRlcm4gaW50IG9wdGluZDsNCg0K DQoNCg0KZXh0ZXJuIGludCBvcHRlcnI7DQoNCg0KDQpleHRlcm4gaW50IG9wdG9wdDsNCiMgMTUy ICIvdXNyL2luY2x1ZGUvZ2V0b3B0LmgiIDMgNA0KZXh0ZXJuIGludCBnZXRvcHQgKGludCBfX19h cmdjLCBjaGFyICpjb25zdCAqX19fYXJndiwgY29uc3QgY2hhciAqX19zaG9ydG9wdHMpDQogICAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQojIDE3NSAiL3Vzci9pbmNsdWRlL2dl dG9wdC5oIiAzIDQNCiN1bmRlZiBfX25lZWRfZ2V0b3B0DQojIDMzICIuLi9saWIvZ2V0b3B0Lmgi IDIgMw0KI3VuZGVmIF9HTF9TWVNURU1fR0VUT1BUDQoNCg0KDQoNCg0KI2RlZmluZSBfR0xfR0VU T1BUX0ggMQ0KIyA1NyAiLi4vbGliL2dldG9wdC5oIiAzDQojdW5kZWYgX19uZWVkX2dldG9wdA0K I3VuZGVmIGdldG9wdA0KI3VuZGVmIGdldG9wdF9sb25nDQojdW5kZWYgZ2V0b3B0X2xvbmdfb25s eQ0KI3VuZGVmIG9wdGFyZw0KI3VuZGVmIG9wdGVycg0KI3VuZGVmIG9wdGluZA0KI3VuZGVmIG9w dG9wdA0KI3VuZGVmIG9wdGlvbg0KI2RlZmluZSBfX0dFVE9QVF9DT05DQVQoeCx5KSB4ICMjIHkN CiNkZWZpbmUgX19HRVRPUFRfWENPTkNBVCh4LHkpIF9fR0VUT1BUX0NPTkNBVCAoeCwgeSkNCiNk ZWZpbmUgX19HRVRPUFRfSUQoeSkgX19HRVRPUFRfWENPTkNBVCAoX19HRVRPUFRfUFJFRklYLCB5 KQ0KI2RlZmluZSBnZXRvcHQgX19HRVRPUFRfSUQgKGdldG9wdCkNCiNkZWZpbmUgZ2V0b3B0X2xv bmcgX19HRVRPUFRfSUQgKGdldG9wdF9sb25nKQ0KI2RlZmluZSBnZXRvcHRfbG9uZ19vbmx5IF9f R0VUT1BUX0lEIChnZXRvcHRfbG9uZ19vbmx5KQ0KI2RlZmluZSBvcHRhcmcgX19HRVRPUFRfSUQg KG9wdGFyZykNCiNkZWZpbmUgb3B0ZXJyIF9fR0VUT1BUX0lEIChvcHRlcnIpDQojZGVmaW5lIG9w dGluZCBfX0dFVE9QVF9JRCAob3B0aW5kKQ0KI2RlZmluZSBvcHRvcHQgX19HRVRPUFRfSUQgKG9w dG9wdCkNCiNkZWZpbmUgb3B0aW9uIF9fR0VUT1BUX0lEIChvcHRpb24pDQojZGVmaW5lIF9nZXRv cHRfaW50ZXJuYWwgX19HRVRPUFRfSUQgKGdldG9wdF9pbnRlcm5hbCkNCiMgOTggIi4uL2xpYi9n ZXRvcHQuaCIgMw0KI2RlZmluZSBfX2dldG9wdF9hcmd2X2NvbnN0IA0KIyAxNDggIi4uL2xpYi9n ZXRvcHQuaCIgMw0KZXh0ZXJuIGNoYXIgKnJwbF9vcHRhcmc7DQojIDE2MiAiLi4vbGliL2dldG9w dC5oIiAzDQpleHRlcm4gaW50IHJwbF9vcHRpbmQ7DQoNCg0KDQoNCmV4dGVybiBpbnQgcnBsX29w dGVycjsNCg0KDQoNCmV4dGVybiBpbnQgcnBsX29wdG9wdDsNCiMgMTk2ICIuLi9saWIvZ2V0b3B0 LmgiIDMNCnN0cnVjdCBycGxfb3B0aW9uDQp7DQogIGNvbnN0IGNoYXIgKm5hbWU7DQoNCg0KICBp bnQgaGFzX2FyZzsNCiAgaW50ICpmbGFnOw0KICBpbnQgdmFsOw0KfTsNCiNkZWZpbmUgR05VTElC X2RlZmluZWRfc3RydWN0X29wdGlvbiAxDQoNCg0KDQoNCiNkZWZpbmUgbm9fYXJndW1lbnQgMA0K I2RlZmluZSByZXF1aXJlZF9hcmd1bWVudCAxDQojZGVmaW5lIG9wdGlvbmFsX2FyZ3VtZW50IDIN CiMgMjQxICIuLi9saWIvZ2V0b3B0LmgiIDMNCmV4dGVybiBpbnQgcnBsX2dldG9wdCAoaW50IF9f X2FyZ2MsIGNoYXIgKmNvbnN0ICpfX19hcmd2LCBjb25zdCBjaGFyICpfX3Nob3J0b3B0cykNCiAg ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDIsIDMpKSk7DQoNCg0KZXh0ZXJuIGludCBycGxfZ2V0b3B0X2xvbmcgKGludCBfX19h cmdjLCBjaGFyICogKl9fX2FyZ3YsDQogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpfX3Nob3J0b3B0cywNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBycGxf b3B0aW9uICpfX2xvbmdvcHRzLCBpbnQgKl9fbG9uZ2luZCkNCiAgICAgICBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDMpKSk7DQpl eHRlcm4gaW50IHJwbF9nZXRvcHRfbG9uZ19vbmx5IChpbnQgX19fYXJnYywgY2hhciAqICpfX19h cmd2LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpfX3Nob3J0b3B0 cywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJwbF9vcHRpb24g Kl9fbG9uZ29wdHMsIGludCAqX19sb25naW5kKQ0KICAgICAgIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMiwgMykpKTsNCiMgMjYxICIu Li9saWIvZ2V0b3B0LmgiIDMNCiN1bmRlZiBfX25lZWRfZ2V0b3B0DQojIDgzOCAiL3Vzci9pbmNs dWRlL3VuaXN0ZC5oIiAyIDMgNA0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IGdldGhvc3RuYW1l IChjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOw0KDQoNCg0KDQoNCg0KZXh0ZXJu IGludCBzZXRob3N0bmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVfdCBfX2xlbikNCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0K DQpleHRlcm4gaW50IHNldGhvc3RpZCAobG9uZyBpbnQgX19pZCkgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0K DQoNCg0KDQpleHRlcm4gaW50IGdldGRvbWFpbm5hbWUgKGNoYXIgKl9fbmFtZSwgc2l6ZV90IF9f bGVuKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18p KTsNCmV4dGVybiBpbnQgc2V0ZG9tYWlubmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUsIHNpemVf dCBfX2xlbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIGludCB2aGFuZ3VwICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKTsNCg0KDQpleHRlcm4gaW50IHJldm9rZSAoX19jb25zdCBjaGFyICpf X2ZpbGUpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0K DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IHByb2ZpbCAodW5zaWduZWQgc2hvcnQgaW50ICpfX3Nh bXBsZV9idWZmZXIsIHNpemVfdCBfX3NpemUsDQogICAgIHNpemVfdCBfX29mZnNldCwgdW5zaWdu ZWQgaW50IF9fc2NhbGUpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsNCg0KDQoNCg0KDQpleHRlcm4gaW50IGFjY3Qg KF9fY29uc3QgY2hhciAqX19uYW1lKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0K DQoNCmV4dGVybiBjaGFyICpnZXR1c2Vyc2hlbGwgKHZvaWQpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpOw0KZXh0ZXJuIHZvaWQgZW5kdXNlcnNoZWxsICh2b2lkKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3Rocm93X18pKTsNCmV4dGVybiB2b2lkIHNldHVzZXJzaGVsbCAodm9pZCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQoNCg0KDQoNCg0KZXh0ZXJuIGludCBkYWVtb24gKGlu dCBfX25vY2hkaXIsIGludCBfX25vY2xvc2UpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp IF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KDQoNCg0KDQpl eHRlcm4gaW50IGNocm9vdCAoX19jb25zdCBjaGFyICpfX3BhdGgpIF9fYXR0cmlidXRlX18gKChf X25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0 ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQoNCg0KZXh0ZXJuIGNoYXIgKmdldHBh c3MgKF9fY29uc3QgY2hhciAqX19wcm9tcHQpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsNCiMgOTIzICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNA0KZXh0ZXJuIGludCBmc3lu YyAoaW50IF9fZmQpOw0KDQoNCg0KDQoNCg0KZXh0ZXJuIGxvbmcgaW50IGdldGhvc3RpZCAodm9p ZCk7DQoNCg0KZXh0ZXJuIHZvaWQgc3luYyAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJv d19fKSk7DQoNCg0KDQoNCmV4dGVybiBpbnQgZ2V0cGFnZXNpemUgKHZvaWQpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsNCg0KDQoNCg0K ZXh0ZXJuIGludCBnZXRkdGFibGVzaXplICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKTsNCg0KDQoNCg0KZXh0ZXJuIGludCB0cnVuY2F0ZSAoX19jb25zdCBjaGFyICpfX2ZpbGUs IF9fb2ZmX3QgX19sZW5ndGgpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpOw0KIyA5NjAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0DQpleHRl cm4gaW50IHRydW5jYXRlNjQgKF9fY29uc3QgY2hhciAqX19maWxlLCBfX29mZjY0X3QgX19sZW5n dGgpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykp Ow0KIyA5NzAgIi91c3IvaW5jbHVkZS91bmlzdGQuaCIgMyA0DQpleHRlcm4gaW50IGZ0cnVuY2F0 ZSAoaW50IF9fZmQsIF9fb2ZmX3QgX19sZW5ndGgpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQojIDk4MCAiL3Vz ci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQNCmV4dGVybiBpbnQgZnRydW5jYXRlNjQgKGludCBfX2Zk LCBfX29mZjY0X3QgX19sZW5ndGgpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0 cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQojIDk5MCAiL3Vzci9pbmNsdWRl L3VuaXN0ZC5oIiAzIDQNCmV4dGVybiBpbnQgYnJrICh2b2lkICpfX2FkZHIpIF9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSk7DQoNCg0KDQoNCg0KZXh0ZXJuIHZvaWQgKnNicmsgKGludHB0cl90IF9fZGVsdGEpIF9fYXR0 cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KIyAxMDExICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgi IDMgNA0KZXh0ZXJuIGxvbmcgaW50IHN5c2NhbGwgKGxvbmcgaW50IF9fc3lzbm8sIC4uLikgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQojIDEwMjggIi91c3IvaW5jbHVkZS91bmlzdGQu aCIgMyA0DQojZGVmaW5lIEZfVUxPQ0sgMA0KI2RlZmluZSBGX0xPQ0sgMQ0KI2RlZmluZSBGX1RM T0NLIDINCiNkZWZpbmUgRl9URVNUIDMNCg0KDQpleHRlcm4gaW50IGxvY2tmIChpbnQgX19mZCwg aW50IF9fY21kLCBfX29mZl90IF9fbGVuKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9y ZXN1bHRfXykpOw0KIyAxMDQ0ICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDMgNA0KZXh0ZXJuIGlu dCBsb2NrZjY0IChpbnQgX19mZCwgaW50IF9fY21kLCBfX29mZjY0X3QgX19sZW4pIF9fYXR0cmli dXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQojIDEwNTQgIi91c3IvaW5jbHVkZS91 bmlzdGQuaCIgMyA0DQojZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSAoX19l eHRlbnNpb25fXyAoeyBsb25nIGludCBfX3Jlc3VsdDsgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQp IChleHByZXNzaW9uKTsgd2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBlcnJubyA9PSBFSU5UUik7 IF9fcmVzdWx0OyB9KSkNCiMgMTA2NSAiL3Vzci9pbmNsdWRlL3VuaXN0ZC5oIiAzIDQNCmV4dGVy biBpbnQgZmRhdGFzeW5jIChpbnQgX19maWxkZXMpOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gY2hh ciAqY3J5cHQgKF9fY29uc3QgY2hhciAqX19rZXksIF9fY29uc3QgY2hhciAqX19zYWx0KQ0KICAg ICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEsIDIpKSk7DQoNCg0KDQpleHRlcm4gdm9pZCBlbmNyeXB0IChjaGFyICpfX2Jsb2NrLCBp bnQgX19lZGZsYWcpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKTsNCg0KDQoNCg0KDQoNCmV4dGVybiB2b2lkIHN3YWIgKF9fY29u c3Qgdm9pZCAqX19yZXN0cmljdCBfX2Zyb20sIHZvaWQgKl9fcmVzdHJpY3QgX190bywNCiAgICBz c2l6ZV90IF9fbikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxLCAyKSkpOw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gY2hhciAqY3Rlcm1p ZCAoY2hhciAqX19zKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0KDQoNCg0KDQoj IDEgIi91c3IvaW5jbHVkZS9iaXRzL3VuaXN0ZC5oIiAxIDMgNA0KIyAyNCAiL3Vzci9pbmNsdWRl L2JpdHMvdW5pc3RkLmgiIDMgNA0KZXh0ZXJuIHNzaXplX3QgX19yZWFkX2NoayAoaW50IF9fZmQs IHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsDQogICAgICBzaXplX3QgX19idWZsZW4pIF9f YXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQpleHRlcm4gc3NpemVfdCBf X3JlYWRfYWxpYXMgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKSBfX2Fz bV9fICgiIiAicmVhZCIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KZXh0ZXJuIF9faW5saW5lIF9fYXR0 cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkgc3NpemVfdA0KcmVhZCAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXpl X3QgX19uYnl0ZXMpDQp7DQogIGlmIChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAwKSAh PSAoc2l6ZV90KSAtMQ0KICAgICAgJiYgKCFfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19uYnl0ZXMp IHx8IF9fbmJ5dGVzID4gX19idWlsdGluX29iamVjdF9zaXplIChfX2J1ZiwgMCkpKQ0KICAgIHJl dHVybiBfX3JlYWRfY2hrIChfX2ZkLCBfX2J1ZiwgX19uYnl0ZXMsIF9fYnVpbHRpbl9vYmplY3Rf c2l6ZSAoX19idWYsIDApKTsNCiAgcmV0dXJuIF9fcmVhZF9hbGlhcyAoX19mZCwgX19idWYsIF9f bmJ5dGVzKTsNCn0NCg0KDQpleHRlcm4gc3NpemVfdCBfX3ByZWFkX2NoayAoaW50IF9fZmQsIHZv aWQgKl9fYnVmLCBzaXplX3QgX19uYnl0ZXMsDQogICAgICAgX19vZmZfdCBfX29mZnNldCwgc2l6 ZV90IF9fYnVmc2l6ZSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsN CmV4dGVybiBzc2l6ZV90IF9fcHJlYWQ2NF9jaGsgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwgc2l6 ZV90IF9fbmJ5dGVzLA0KICAgICAgICAgX19vZmY2NF90IF9fb2Zmc2V0LCBzaXplX3QgX19idWZz aXplKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KZXh0ZXJuIHNz aXplX3QgX19wcmVhZF9hbGlhcyAoaW50IF9fZmQsIHZvaWQgKl9fYnVmLCBzaXplX3QgX19uYnl0 ZXMsIF9fb2ZmX3QgX19vZmZzZXQpIF9fYXNtX18gKCIiICJwcmVhZCIpDQoNCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSk7DQpleHRlcm4gc3NpemVfdCBfX3ByZWFkNjRfYWxpYXMgKGludCBfX2ZkLCB2b2lkICpf X2J1Ziwgc2l6ZV90IF9fbmJ5dGVzLCBfX29mZjY0X3QgX19vZmZzZXQpIF9fYXNtX18gKCIiICJw cmVhZDY0IikNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmli dXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCg0KZXh0ZXJuIF9faW5saW5lIF9f YXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgc3NpemVfdA0KcHJlYWQgKGludCBfX2ZkLCB2b2lkICpfX2J1Ziwg c2l6ZV90IF9fbmJ5dGVzLCBfX29mZl90IF9fb2Zmc2V0KQ0Kew0KICBpZiAoX19idWlsdGluX29i amVjdF9zaXplIChfX2J1ZiwgMCkgIT0gKHNpemVfdCkgLTENCiAgICAgICYmICghX19idWlsdGlu X2NvbnN0YW50X3AgKF9fbmJ5dGVzKSB8fCBfX25ieXRlcyA+IF9fYnVpbHRpbl9vYmplY3Rfc2l6 ZSAoX19idWYsIDApKSkNCiAgICByZXR1cm4gX19wcmVhZF9jaGsgKF9fZmQsIF9fYnVmLCBfX25i eXRlcywgX19vZmZzZXQsIF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19idWYsIDApKTsNCiAgcmV0 dXJuIF9fcHJlYWRfYWxpYXMgKF9fZmQsIF9fYnVmLCBfX25ieXRlcywgX19vZmZzZXQpOw0KfQ0K IyA3MSAiL3Vzci9pbmNsdWRlL2JpdHMvdW5pc3RkLmgiIDMgNA0KZXh0ZXJuIF9faW5saW5lIF9f YXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgc3NpemVfdA0KcHJlYWQ2NCAoaW50IF9fZmQsIHZvaWQgKl9fYnVm LCBzaXplX3QgX19uYnl0ZXMsIF9fb2ZmNjRfdCBfX29mZnNldCkNCnsNCiAgaWYgKF9fYnVpbHRp bl9vYmplY3Rfc2l6ZSAoX19idWYsIDApICE9IChzaXplX3QpIC0xDQogICAgICAmJiAoIV9fYnVp bHRpbl9jb25zdGFudF9wIChfX25ieXRlcykgfHwgX19uYnl0ZXMgPiBfX2J1aWx0aW5fb2JqZWN0 X3NpemUgKF9fYnVmLCAwKSkpDQogICAgcmV0dXJuIF9fcHJlYWQ2NF9jaGsgKF9fZmQsIF9fYnVm LCBfX25ieXRlcywgX19vZmZzZXQsIF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19idWYsIDApKTsN CiAgcmV0dXJuIF9fcHJlYWQ2NF9hbGlhcyAoX19mZCwgX19idWYsIF9fbmJ5dGVzLCBfX29mZnNl dCk7DQp9DQoNCg0KDQoNCmV4dGVybiBzc2l6ZV90IF9fcmVhZGxpbmtfY2hrIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19wYXRoLA0KICAgICAgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs IHNpemVfdCBfX2xlbiwNCiAgICAgICAgICBzaXplX3QgX19idWZsZW4pDQogICAgIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikp KSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KZXh0ZXJuIHNzaXpl X3QgX19yZWFkbGlua19hbGlhcyAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hh ciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSBfX2FzbV9fICgiIiAicmVhZGxpbmsi KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKQ0KDQoNCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxLCAyKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3Vs dF9fKSk7DQoNCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5l X18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSkgX19hdHRyaWJ1dGVfXyAo KF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKSBzc2l6ZV90DQpfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKSByZWFkbGluayAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0aCwgY2hhciAq X19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKQ0KDQp7DQogIGlmIChfX2J1aWx0aW5fb2Jq ZWN0X3NpemUgKF9fYnVmLCAyID4gMSkgIT0gKHNpemVfdCkgLTENCiAgICAgICYmICghX19idWls dGluX2NvbnN0YW50X3AgKF9fbGVuKSB8fCBfX2xlbiA+IF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAo X19idWYsIDIgPiAxKSkpDQogICAgcmV0dXJuIF9fcmVhZGxpbmtfY2hrIChfX3BhdGgsIF9fYnVm LCBfX2xlbiwgX19idWlsdGluX29iamVjdF9zaXplIChfX2J1ZiwgMiA+IDEpKTsNCiAgcmV0dXJu IF9fcmVhZGxpbmtfYWxpYXMgKF9fcGF0aCwgX19idWYsIF9fbGVuKTsNCn0NCg0KDQoNCmV4dGVy biBzc2l6ZV90IF9fcmVhZGxpbmthdF9jaGsgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVz dHJpY3QgX19wYXRoLA0KICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4s DQogICAgIHNpemVfdCBfX2J1ZmxlbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyLCAzKSkpIF9fYXR0cmlidXRlX18gKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQpleHRlcm4gc3NpemVfdCBfX3JlYWRsaW5rYXRfYWxp YXMgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wYXRoLCBjaGFyICpfX3Jl c3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIF9fYXNtX18gKCIiICJyZWFkbGlua2F0IikgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkNCg0KDQoNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgyLCAzKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9f KSk7DQoNCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDMpKSkgX19hdHRyaWJ1dGVfXyAoKF9f d2Fybl91bnVzZWRfcmVzdWx0X18pKSBzc2l6ZV90DQpfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKSByZWFkbGlua2F0IChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcGF0 aCwgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKQ0KDQp7DQogIGlmIChfX2J1 aWx0aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAyID4gMSkgIT0gKHNpemVfdCkgLTENCiAgICAgICYm ICghX19idWlsdGluX2NvbnN0YW50X3AgKF9fbGVuKSB8fCBfX2xlbiA+IF9fYnVpbHRpbl9vYmpl Y3Rfc2l6ZSAoX19idWYsIDIgPiAxKSkpDQogICAgcmV0dXJuIF9fcmVhZGxpbmthdF9jaGsgKF9f ZmQsIF9fcGF0aCwgX19idWYsIF9fbGVuLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAy ID4gMSkpOw0KICByZXR1cm4gX19yZWFkbGlua2F0X2FsaWFzIChfX2ZkLCBfX3BhdGgsIF9fYnVm LCBfX2xlbik7DQp9DQoNCg0KZXh0ZXJuIGNoYXIgKl9fZ2V0Y3dkX2NoayAoY2hhciAqX19idWYs IHNpemVfdCBfX3NpemUsIHNpemVfdCBfX2J1ZmxlbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9f bm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCmV4 dGVybiBjaGFyICpfX2dldGN3ZF9hbGlhcyAoY2hhciAqX19idWYsIHNpemVfdCBfX3NpemUpIF9f YXNtX18gKCIiICJnZXRjd2QiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChf X3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9f ICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1 bHRfXykpIGNoYXIgKg0KX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgZ2V0Y3dkIChjaGFy ICpfX2J1Ziwgc2l6ZV90IF9fc2l6ZSkNCnsNCiAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAo X19idWYsIDIgPiAxKSAhPSAoc2l6ZV90KSAtMQ0KICAgICAgJiYgKCFfX2J1aWx0aW5fY29uc3Rh bnRfcCAoX19zaXplKSB8fCBfX3NpemUgPiBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAy ID4gMSkpKQ0KICAgIHJldHVybiBfX2dldGN3ZF9jaGsgKF9fYnVmLCBfX3NpemUsIF9fYnVpbHRp bl9vYmplY3Rfc2l6ZSAoX19idWYsIDIgPiAxKSk7DQogIHJldHVybiBfX2dldGN3ZF9hbGlhcyAo X19idWYsIF9fc2l6ZSk7DQp9DQoNCg0KZXh0ZXJuIGNoYXIgKl9fZ2V0d2RfY2hrIChjaGFyICpf X2J1Ziwgc2l6ZV90IGJ1ZmxlbikNCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSk7DQpleHRlcm4gY2hhciAqX19nZXR3ZF9hbGlhcyAoY2hhciAqX19i dWYpIF9fYXNtX18gKCIiICJnZXR3ZCIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpDQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSBfX2F0dHJpYnV0ZV9fICgoX193 YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KDQpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAo KF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9f YXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXykpIF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51 c2VkX3Jlc3VsdF9fKSkgY2hhciAqDQpfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBnZXR3 ZCAoY2hhciAqX19idWYpDQp7DQogIGlmIChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAy ID4gMSkgIT0gKHNpemVfdCkgLTEpDQogICAgcmV0dXJuIF9fZ2V0d2RfY2hrIChfX2J1ZiwgX19i dWlsdGluX29iamVjdF9zaXplIChfX2J1ZiwgMiA+IDEpKTsNCiAgcmV0dXJuIF9fZ2V0d2RfYWxp YXMgKF9fYnVmKTsNCn0NCg0KDQpleHRlcm4gc2l6ZV90IF9fY29uZnN0cl9jaGsgKGludCBfX25h bWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4sDQogICAgICAgIHNpemVfdCBfX2J1Zmxlbikg X19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gc2l6ZV90IF9fY29uZnN0cl9h bGlhcyAoaW50IF9fbmFtZSwgY2hhciAqX19idWYsIHNpemVfdCBfX2xlbikgX19hc21fXyAoIiIg ImNvbmZzdHIiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKQ0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7DQoNCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdh eXNfaW5saW5lX18pKSBzaXplX3QNCl9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpIGNvbmZz dHIgKGludCBfX25hbWUsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19sZW4pDQp7DQogIGlmIChfX2J1 aWx0aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAyID4gMSkgIT0gKHNpemVfdCkgLTENCiAgICAgICYm ICghX19idWlsdGluX2NvbnN0YW50X3AgKF9fbGVuKSB8fCBfX2J1aWx0aW5fb2JqZWN0X3NpemUg KF9fYnVmLCAyID4gMSkgPCBfX2xlbikpDQogICAgcmV0dXJuIF9fY29uZnN0cl9jaGsgKF9fbmFt ZSwgX19idWYsIF9fbGVuLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAyID4gMSkpOw0K ICByZXR1cm4gX19jb25mc3RyX2FsaWFzIChfX25hbWUsIF9fYnVmLCBfX2xlbik7DQp9DQoNCg0K ZXh0ZXJuIGludCBfX2dldGdyb3Vwc19jaGsgKGludCBfX3NpemUsIF9fZ2lkX3QgX19saXN0W10s IHNpemVfdCBsaXN0bGVuKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKSBfX2F0 dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpOw0KZXh0ZXJuIGludCBfX2dldGdy b3Vwc19hbGlhcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3RbXSkgX19hc21fXyAoIiIgImdl dGdyb3VwcyIpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpDQogICAgICAgICAgICAgICAg IF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQoNCmV4dGVybiBfX2lu bGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBpbnQNCl9fYXR0cmlidXRl X18gKChfX25vdGhyb3dfXykpIGdldGdyb3VwcyAoaW50IF9fc2l6ZSwgX19naWRfdCBfX2xpc3Rb XSkNCnsNCiAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19saXN0LCAyID4gMSkgIT0gKHNp emVfdCkgLTENCiAgICAgICYmICghX19idWlsdGluX2NvbnN0YW50X3AgKF9fc2l6ZSkNCiAgIHx8 IF9fc2l6ZSAqIHNpemVvZiAoX19naWRfdCkgPiBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fbGlz dCwgMiA+IDEpKSkNCiAgICByZXR1cm4gX19nZXRncm91cHNfY2hrIChfX3NpemUsIF9fbGlzdCwg X19idWlsdGluX29iamVjdF9zaXplIChfX2xpc3QsIDIgPiAxKSk7DQogIHJldHVybiBfX2dldGdy b3Vwc19hbGlhcyAoX19zaXplLCBfX2xpc3QpOw0KfQ0KDQoNCmV4dGVybiBpbnQgX190dHluYW1l X3JfY2hrIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbiwNCiAgICAgICBz aXplX3QgX19ucmVhbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgyKSkpOw0KZXh0ZXJuIGludCBfX3R0eW5hbWVfcl9hbGlhcyAoaW50 IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pIF9fYXNtX18gKCIiICJ0dHluYW1l X3IiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKQ0KDQogICAgIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMikpKTsNCg0KZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChf X2Fsd2F5c19pbmxpbmVfXykpIGludA0KX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgdHR5 bmFtZV9yIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikNCnsNCiAgaWYg KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19idWYsIDIgPiAxKSAhPSAoc2l6ZV90KSAtMQ0KICAg ICAgJiYgKCFfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19idWZsZW4pIHx8IF9fYnVmbGVuID4gX19i dWlsdGluX29iamVjdF9zaXplIChfX2J1ZiwgMiA+IDEpKSkNCiAgICByZXR1cm4gX190dHluYW1l X3JfY2hrIChfX2ZkLCBfX2J1ZiwgX19idWZsZW4sIF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19i dWYsIDIgPiAxKSk7DQogIHJldHVybiBfX3R0eW5hbWVfcl9hbGlhcyAoX19mZCwgX19idWYsIF9f YnVmbGVuKTsNCn0NCg0KDQoNCmV4dGVybiBpbnQgX19nZXRsb2dpbl9yX2NoayAoY2hhciAqX19i dWYsIHNpemVfdCBfX2J1Zmxlbiwgc2l6ZV90IF9fbnJlYWwpDQogICAgIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKTsNCmV4dGVybiBpbnQgX19nZXRsb2dpbl9yX2FsaWFzIChjaGFy ICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuKSBfX2FzbV9fICgiIiAiZ2V0bG9naW5fciIpDQogICAg ICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7DQoNCmV4 dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBpbnQNCmdl dGxvZ2luX3IgKGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pDQp7DQogIGlmIChfX2J1aWx0 aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAyID4gMSkgIT0gKHNpemVfdCkgLTENCiAgICAgICYmICgh X19idWlsdGluX2NvbnN0YW50X3AgKF9fYnVmbGVuKSB8fCBfX2J1ZmxlbiA+IF9fYnVpbHRpbl9v YmplY3Rfc2l6ZSAoX19idWYsIDIgPiAxKSkpDQogICAgcmV0dXJuIF9fZ2V0bG9naW5fcl9jaGsg KF9fYnVmLCBfX2J1ZmxlbiwgX19idWlsdGluX29iamVjdF9zaXplIChfX2J1ZiwgMiA+IDEpKTsN CiAgcmV0dXJuIF9fZ2V0bG9naW5fcl9hbGlhcyAoX19idWYsIF9fYnVmbGVuKTsNCn0NCg0KDQoN Cg0KZXh0ZXJuIGludCBfX2dldGhvc3RuYW1lX2NoayAoY2hhciAqX19idWYsIHNpemVfdCBfX2J1 Zmxlbiwgc2l6ZV90IF9fbnJlYWwpDQogICAgIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsNCmV4dGVybiBpbnQgX19nZXRob3N0 bmFtZV9hbGlhcyAoY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgX19hc21fXyAoIiIgImdl dGhvc3RuYW1lIikgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSkNCiAgICAgICAgICAgICAg ICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7DQoNCmV4dGVybiBfX2lubGlu ZSBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBpbnQNCl9fYXR0cmlidXRlX18g KChfX25vdGhyb3dfXykpIGdldGhvc3RuYW1lIChjaGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVu KQ0Kew0KICBpZiAoX19idWlsdGluX29iamVjdF9zaXplIChfX2J1ZiwgMiA+IDEpICE9IChzaXpl X3QpIC0xDQogICAgICAmJiAoIV9fYnVpbHRpbl9jb25zdGFudF9wIChfX2J1ZmxlbikgfHwgX19i dWZsZW4gPiBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKF9fYnVmLCAyID4gMSkpKQ0KICAgIHJldHVy biBfX2dldGhvc3RuYW1lX2NoayAoX19idWYsIF9fYnVmbGVuLCBfX2J1aWx0aW5fb2JqZWN0X3Np emUgKF9fYnVmLCAyID4gMSkpOw0KICByZXR1cm4gX19nZXRob3N0bmFtZV9hbGlhcyAoX19idWYs IF9fYnVmbGVuKTsNCn0NCg0KDQoNCg0KZXh0ZXJuIGludCBfX2dldGRvbWFpbm5hbWVfY2hrIChj aGFyICpfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLCBzaXplX3QgX19ucmVhbCkNCiAgICAgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp IF9fYXR0cmlidXRlX18gKChfX3dhcm5fdW51c2VkX3Jlc3VsdF9fKSk7DQpleHRlcm4gaW50IF9f Z2V0ZG9tYWlubmFtZV9hbGlhcyAoY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgX19hc21f XyAoIiIgImdldGRvbWFpbm5hbWUiKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKQ0KDQog ICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgX19h dHRyaWJ1dGVfXyAoKF9fd2Fybl91bnVzZWRfcmVzdWx0X18pKTsNCg0KZXh0ZXJuIF9faW5saW5l IF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIGludA0KX19hdHRyaWJ1dGVfXyAo KF9fbm90aHJvd19fKSkgZ2V0ZG9tYWlubmFtZSAoY2hhciAqX19idWYsIHNpemVfdCBfX2J1Zmxl bikNCnsNCiAgaWYgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoX19idWYsIDIgPiAxKSAhPSAoc2l6 ZV90KSAtMQ0KICAgICAgJiYgKCFfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19idWZsZW4pIHx8IF9f YnVmbGVuID4gX19idWlsdGluX29iamVjdF9zaXplIChfX2J1ZiwgMiA+IDEpKSkNCiAgICByZXR1 cm4gX19nZXRkb21haW5uYW1lX2NoayAoX19idWYsIF9fYnVmbGVuLCBfX2J1aWx0aW5fb2JqZWN0 X3NpemUgKF9fYnVmLCAyID4gMSkpOw0KICByZXR1cm4gX19nZXRkb21haW5uYW1lX2FsaWFzIChf X2J1ZiwgX19idWZsZW4pOw0KfQ0KIyAxMTAxICIvdXNyL2luY2x1ZGUvdW5pc3RkLmgiIDIgMyA0 DQoNCg0KDQojIDQ0ICIuLi9saWIvdW5pc3RkLmgiIDIgMw0KIyA1NSAiLi4vbGliL3VuaXN0ZC5o IiAzDQojZGVmaW5lIF9HTF9VTklTVERfSCANCg0KDQojIDEgIi9uZnMvZS1uZnMtMDEvdTEwL3Nj aWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZfNjQvYmluLy4uL2xpYi9nY2MveDg2 XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0DQojIDU5 ICIuLi9saWIvdW5pc3RkLmgiIDIgMw0KIyA2NTkgIi4uL2xpYi91bmlzdGQuaCIgMw0KZXh0ZXJu IGludCBfZ2xfY3h4YWxpYXNfZHVtbXk7DQoNCmV4dGVybiBpbnQgX2dsX2N4eGFsaWFzX2R1bW15 Ow0KIyAxNTY4ICIuLi9saWIvdW5pc3RkLmgiIDMNCmV4dGVybiBpbnQgX2dsX2N4eGFsaWFzX2R1 bW15DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOw0KDQpleHRlcm4gaW50IF9nbF9jeHhhbGlhc19kdW1teTsNCiMgMTY4OSAi Li4vbGliL3VuaXN0ZC5oIiAzDQpleHRlcm4gaW50IF9nbF9jeHhhbGlhc19kdW1teTsNCg0KZXh0 ZXJuIGludCBfZ2xfY3h4YWxpYXNfZHVtbXk7DQojIDIwNiAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmMiIDINCg0KDQoNCnN0YXRpYyB2b2lkICoNCnhtYWxsb2MgKHNpemVfdCBzaXplKQ0Kew0K ICB2b2lkICp2YWwgPSBtYWxsb2MgKHNpemUpOw0KICBpZiAoIXZhbCAmJiBzaXplKQ0KICAgIHsN CiAgICAgIHdyaXRlICgyLCAidmlydHVhbCBtZW1vcnkgZXhoYXVzdGVkXG4iLCAyNSk7DQogICAg ICBleGl0ICgxKTsNCiAgICB9DQogIHJldHVybiB2YWw7DQp9DQoNCnN0YXRpYyB2b2lkICoNCnhy ZWFsbG9jICh2b2lkICpibG9jaywgc2l6ZV90IHNpemUpDQp7DQogIHZvaWQgKnZhbDsNCg0KDQog IGlmICghIGJsb2NrKQ0KICAgIHZhbCA9IG1hbGxvYyAoc2l6ZSk7DQogIGVsc2UNCiAgICB2YWwg PSByZWFsbG9jIChibG9jaywgc2l6ZSk7DQogIGlmICghdmFsICYmIHNpemUpDQogICAgew0KICAg ICAgd3JpdGUgKDIsICJ2aXJ0dWFsIG1lbW9yeSBleGhhdXN0ZWRcbiIsIDI1KTsNCiAgICAgIGV4 aXQgKDEpOw0KICAgIH0NCiAgcmV0dXJuIHZhbDsNCn0NCg0KDQoNCg0KI2RlZmluZSBtYWxsb2Mg eG1hbGxvYw0KDQoNCg0KI2RlZmluZSByZWFsbG9jIHhyZWFsbG9jDQoNCiMgMSAiL25mcy9lLW5m cy0wMS91MTAvc2NpZW50aWZpY19saW51eC81MS9vcHQvZ2NjLTQuNy4yLXg4Nl82NC9iaW4vLi4v bGliL2djYy94ODZfNjQtdW5rbm93bi1saW51eC1nbnUvNC43LjIvaW5jbHVkZS9zdGRib29sLmgi IDEgMyA0DQojIDI5ICIvbmZzL2UtbmZzLTAxL3UxMC9zY2llbnRpZmljX2xpbnV4LzUxL29wdC9n Y2MtNC43LjIteDg2XzY0L2Jpbi8uLi9saWIvZ2NjL3g4Nl82NC11bmtub3duLWxpbnV4LWdudS80 LjcuMi9pbmNsdWRlL3N0ZGJvb2wuaCIgMyA0DQojZGVmaW5lIF9TVERCT09MX0ggDQoNCg0KDQoj ZGVmaW5lIGJvb2wgX0Jvb2wNCiNkZWZpbmUgdHJ1ZSAxDQojZGVmaW5lIGZhbHNlIDANCiMgNDgg Ii9uZnMvZS1uZnMtMDEvdTEwL3NjaWVudGlmaWNfbGludXgvNTEvb3B0L2djYy00LjcuMi14ODZf NjQvYmluLy4uL2xpYi9nY2MveDg2XzY0LXVua25vd24tbGludXgtZ251LzQuNy4yL2luY2x1ZGUv c3RkYm9vbC5oIiAzIDQNCiNkZWZpbmUgX19ib29sX3RydWVfZmFsc2VfYXJlX2RlZmluZWQgMQ0K IyAyNDkgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4z LmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIiAyDQoNCg0KDQoNCg0KZW51bSBzeW50 YXhjb2RlIHsgU3doaXRlc3BhY2UgPSAwLCBTd29yZCA9IDEsIFNzeW1ib2wgPSAyIH07DQoNCg0K I2RlZmluZSBDSEFSX0NIQVJTRVQoYykgMA0KI2RlZmluZSBDSEFSU0VUX0xFQURJTkdfQ09ERV9C QVNFKGMpIDANCiNkZWZpbmUgTUFYX01VTFRJQllURV9MRU5HVEggMQ0KI2RlZmluZSBSRV9NVUxU SUJZVEVfUCh4KSAwDQojZGVmaW5lIFJFX1RBUkdFVF9NVUxUSUJZVEVfUCh4KSAwDQojZGVmaW5l IFdPUkRfQk9VTkRBUllfUChjMSxjMikgKDApDQojZGVmaW5lIENIQVJfSEVBRF9QKHApICgxKQ0K I2RlZmluZSBTSU5HTEVfQllURV9DSEFSX1AoYykgKDEpDQojZGVmaW5lIFNBTUVfQ0hBUlNFVF9Q KGMxLGMyKSAoMSkNCiNkZWZpbmUgQllURVNfQllfQ0hBUl9IRUFEKHApICgxKQ0KI2RlZmluZSBQ UkVWX0NIQVJfQk9VTkRBUlkocCxsaW1pdCkgKChwKS0tKQ0KI2RlZmluZSBTVFJJTkdfQ0hBUihw KSAoKihwKSkNCiNkZWZpbmUgUkVfU1RSSU5HX0NIQVIocCxtdWx0aWJ5dGUpIFNUUklOR19DSEFS IChwKQ0KI2RlZmluZSBDSEFSX1NUUklORyhjLHMpICgqKHMpID0gKGMpLCAxKQ0KI2RlZmluZSBT VFJJTkdfQ0hBUl9BTkRfTEVOR1RIKHAsYWN0dWFsX2xlbikgKChhY3R1YWxfbGVuKSA9IDEsICoo cCkpDQojZGVmaW5lIFJFX1NUUklOR19DSEFSX0FORF9MRU5HVEgocCxsZW4sbXVsdGlieXRlKSBT VFJJTkdfQ0hBUl9BTkRfTEVOR1RIIChwLCBsZW4pDQojZGVmaW5lIFJFX0NIQVJfVE9fTVVMVElC WVRFKGMpIChjKQ0KI2RlZmluZSBSRV9DSEFSX1RPX1VOSUJZVEUoYykgKGMpDQojZGVmaW5lIEdF VF9DSEFSX0JFRk9SRV8yKGMscCxzdHIxLGVuZDEsc3RyMixlbmQyKSAoYyA9ICgocCkgPT0gKHN0 cjIpID8gKigoZW5kMSkgLSAxKSA6ICooKHApIC0gMSkpKQ0KDQojZGVmaW5lIEdFVF9DSEFSX0FG VEVSKGMscCxsZW4pIChjID0gKnAsIGxlbiA9IDEpDQoNCiNkZWZpbmUgTUFLRV9DSEFSKGNoYXJz ZXQsYzEsYzIpIChjMSkNCiNkZWZpbmUgQllURThfVE9fQ0hBUihjKSAoYykNCiNkZWZpbmUgQ0hB Ul9CWVRFOF9QKGMpICgwKQ0KI2RlZmluZSBDSEFSX0xFQURJTkdfQ09ERShjKSAoYykNCg0KDQoN Cg0KI2RlZmluZSBSRV9UUkFOU0xBVEUoVEJMLEMpICgodW5zaWduZWQgY2hhcikoVEJMKVtDXSkN CiNkZWZpbmUgUkVfVFJBTlNMQVRFX1AoVEJMKSAoVEJMKQ0KDQoNCg0KIyAxICIvaG9tZS9qYW1l cy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNy Yy8uLi9zcmMvcmVnZXguaCIgMQ0KIyAyMSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVs ZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmgiDQoj ZGVmaW5lIF9SRUdFWF9IIDENCiMgNDMgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVh c2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5oIg0KdHlw ZWRlZiB1bnNpZ25lZCBsb25nIGludCByZWdfc3ludGF4X3Q7DQoNCg0KDQojZGVmaW5lIFJFX0JB Q0tTTEFTSF9FU0NBUEVfSU5fTElTVFMgKCh1bnNpZ25lZCBsb25nIGludCkgMSkNCg0KDQoNCg0K I2RlZmluZSBSRV9CS19QTFVTX1FNIChSRV9CQUNLU0xBU0hfRVNDQVBFX0lOX0xJU1RTIDw8IDEp DQoNCg0KDQoNCg0KI2RlZmluZSBSRV9DSEFSX0NMQVNTRVMgKFJFX0JLX1BMVVNfUU0gPDwgMSkN CiMgNzIgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4z LmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5oIg0KI2RlZmluZSBSRV9DT05URVhUX0lO REVQX0FOQ0hPUlMgKFJFX0NIQVJfQ0xBU1NFUyA8PCAxKQ0KDQoNCg0KDQoNCg0KDQojZGVmaW5l IFJFX0NPTlRFWFRfSU5ERVBfT1BTIChSRV9DT05URVhUX0lOREVQX0FOQ0hPUlMgPDwgMSkNCg0K DQoNCiNkZWZpbmUgUkVfQ09OVEVYVF9JTlZBTElEX09QUyAoUkVfQ09OVEVYVF9JTkRFUF9PUFMg PDwgMSkNCg0KDQoNCiNkZWZpbmUgUkVfRE9UX05FV0xJTkUgKFJFX0NPTlRFWFRfSU5WQUxJRF9P UFMgPDwgMSkNCg0KDQoNCiNkZWZpbmUgUkVfRE9UX05PVF9OVUxMIChSRV9ET1RfTkVXTElORSA8 PCAxKQ0KDQoNCg0KI2RlZmluZSBSRV9IQVRfTElTVFNfTk9UX05FV0xJTkUgKFJFX0RPVF9OT1Rf TlVMTCA8PCAxKQ0KDQoNCg0KDQojZGVmaW5lIFJFX0lOVEVSVkFMUyAoUkVfSEFUX0xJU1RTX05P VF9ORVdMSU5FIDw8IDEpDQoNCg0KDQojZGVmaW5lIFJFX0xJTUlURURfT1BTIChSRV9JTlRFUlZB TFMgPDwgMSkNCg0KDQoNCiNkZWZpbmUgUkVfTkVXTElORV9BTFQgKFJFX0xJTUlURURfT1BTIDw8 IDEpDQoNCg0KDQoNCiNkZWZpbmUgUkVfTk9fQktfQlJBQ0VTIChSRV9ORVdMSU5FX0FMVCA8PCAx KQ0KDQoNCg0KI2RlZmluZSBSRV9OT19CS19QQVJFTlMgKFJFX05PX0JLX0JSQUNFUyA8PCAxKQ0K DQoNCg0KI2RlZmluZSBSRV9OT19CS19SRUZTIChSRV9OT19CS19QQVJFTlMgPDwgMSkNCg0KDQoN CiNkZWZpbmUgUkVfTk9fQktfVkJBUiAoUkVfTk9fQktfUkVGUyA8PCAxKQ0KDQoNCg0KDQoNCiNk ZWZpbmUgUkVfTk9fRU1QVFlfUkFOR0VTIChSRV9OT19CS19WQkFSIDw8IDEpDQoNCg0KDQojZGVm aW5lIFJFX1VOTUFUQ0hFRF9SSUdIVF9QQVJFTl9PUkQgKFJFX05PX0VNUFRZX1JBTkdFUyA8PCAx KQ0KDQoNCg0KI2RlZmluZSBSRV9OT19QT1NJWF9CQUNLVFJBQ0tJTkcgKFJFX1VOTUFUQ0hFRF9S SUdIVF9QQVJFTl9PUkQgPDwgMSkNCg0KDQoNCiNkZWZpbmUgUkVfTk9fR05VX09QUyAoUkVfTk9f UE9TSVhfQkFDS1RSQUNLSU5HIDw8IDEpDQoNCg0KI2RlZmluZSBSRV9GUlVHQUwgKFJFX05PX0dO VV9PUFMgPDwgMSkNCg0KDQojZGVmaW5lIFJFX1NIWV9HUk9VUFMgKFJFX0ZSVUdBTCA8PCAxKQ0K DQoNCiNkZWZpbmUgUkVfTk9fTkVXTElORV9BTkNIT1IgKFJFX1NIWV9HUk9VUFMgPDwgMSkNCg0K DQoNCg0KDQoNCg0KI2RlZmluZSBSRV9ERUJVRyAoUkVfTk9fTkVXTElORV9BTkNIT1IgPDwgMSkN Cg0KDQoNCg0KDQpleHRlcm4gcmVnX3N5bnRheF90IHJlX3N5bnRheF9vcHRpb25zOw0KIyAxODAg Ii9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40 LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5oIg0KI2RlZmluZSBSRV9TWU5UQVhfRU1BQ1MgKFJF X0NIQVJfQ0xBU1NFUyB8IFJFX0lOVEVSVkFMUyB8IFJFX1NIWV9HUk9VUFMgfCBSRV9GUlVHQUwp DQoNCg0KI2RlZmluZSBSRV9TWU5UQVhfQVdLIChSRV9CQUNLU0xBU0hfRVNDQVBFX0lOX0xJU1RT IHwgUkVfRE9UX05PVF9OVUxMIHwgUkVfTk9fQktfUEFSRU5TIHwgUkVfTk9fQktfUkVGUyB8IFJF X05PX0JLX1ZCQVIgfCBSRV9OT19FTVBUWV9SQU5HRVMgfCBSRV9ET1RfTkVXTElORSB8IFJFX0NP TlRFWFRfSU5ERVBfQU5DSE9SUyB8IFJFX1VOTUFUQ0hFRF9SSUdIVF9QQVJFTl9PUkQgfCBSRV9O T19HTlVfT1BTKQ0KDQoNCg0KDQoNCg0KI2RlZmluZSBSRV9TWU5UQVhfR05VX0FXSyAoKFJFX1NZ TlRBWF9QT1NJWF9FWFRFTkRFRCB8IFJFX0JBQ0tTTEFTSF9FU0NBUEVfSU5fTElTVFMgfCBSRV9E RUJVRykgJiB+KFJFX0RPVF9OT1RfTlVMTCB8IFJFX0lOVEVSVkFMUyB8IFJFX0NPTlRFWFRfSU5E RVBfT1BTKSkNCg0KDQoNCiNkZWZpbmUgUkVfU1lOVEFYX1BPU0lYX0FXSyAoUkVfU1lOVEFYX1BP U0lYX0VYVEVOREVEIHwgUkVfQkFDS1NMQVNIX0VTQ0FQRV9JTl9MSVNUUyB8IFJFX0lOVEVSVkFM UyB8IFJFX05PX0dOVV9PUFMpDQoNCg0KDQojZGVmaW5lIFJFX1NZTlRBWF9HUkVQIChSRV9CS19Q TFVTX1FNIHwgUkVfQ0hBUl9DTEFTU0VTIHwgUkVfSEFUX0xJU1RTX05PVF9ORVdMSU5FIHwgUkVf SU5URVJWQUxTIHwgUkVfTkVXTElORV9BTFQpDQoNCg0KDQoNCiNkZWZpbmUgUkVfU1lOVEFYX0VH UkVQIChSRV9DSEFSX0NMQVNTRVMgfCBSRV9DT05URVhUX0lOREVQX0FOQ0hPUlMgfCBSRV9DT05U RVhUX0lOREVQX09QUyB8IFJFX0hBVF9MSVNUU19OT1RfTkVXTElORSB8IFJFX05FV0xJTkVfQUxU IHwgUkVfTk9fQktfUEFSRU5TIHwgUkVfTk9fQktfVkJBUikNCg0KDQoNCg0KDQojZGVmaW5lIFJF X1NZTlRBWF9QT1NJWF9FR1JFUCAoUkVfU1lOVEFYX0VHUkVQIHwgUkVfSU5URVJWQUxTIHwgUkVf Tk9fQktfQlJBQ0VTKQ0KDQoNCg0KI2RlZmluZSBSRV9TWU5UQVhfRUQgUkVfU1lOVEFYX1BPU0lY X0JBU0lDDQoNCiNkZWZpbmUgUkVfU1lOVEFYX1NFRCBSRV9TWU5UQVhfUE9TSVhfQkFTSUMNCg0K DQojZGVmaW5lIF9SRV9TWU5UQVhfUE9TSVhfQ09NTU9OIChSRV9DSEFSX0NMQVNTRVMgfCBSRV9E T1RfTkVXTElORSB8IFJFX0RPVF9OT1RfTlVMTCB8IFJFX0lOVEVSVkFMUyB8IFJFX05PX0VNUFRZ X1JBTkdFUykNCg0KDQoNCiNkZWZpbmUgUkVfU1lOVEFYX1BPU0lYX0JBU0lDIChfUkVfU1lOVEFY X1BPU0lYX0NPTU1PTiB8IFJFX0JLX1BMVVNfUU0pDQoNCg0KDQoNCg0KI2RlZmluZSBSRV9TWU5U QVhfUE9TSVhfTUlOSU1BTF9CQVNJQyAoX1JFX1NZTlRBWF9QT1NJWF9DT01NT04gfCBSRV9MSU1J VEVEX09QUykNCg0KDQojZGVmaW5lIFJFX1NZTlRBWF9QT1NJWF9FWFRFTkRFRCAoX1JFX1NZTlRB WF9QT1NJWF9DT01NT04gfCBSRV9DT05URVhUX0lOREVQX0FOQ0hPUlMgfCBSRV9DT05URVhUX0lO REVQX09QUyB8IFJFX05PX0JLX0JSQUNFUyB8IFJFX05PX0JLX1BBUkVOUyB8IFJFX05PX0JLX1ZC QVIgfCBSRV9DT05URVhUX0lOVkFMSURfT1BTIHwgUkVfVU5NQVRDSEVEX1JJR0hUX1BBUkVOX09S RCkNCg0KDQoNCg0KDQoNCg0KI2RlZmluZSBSRV9TWU5UQVhfUE9TSVhfTUlOSU1BTF9FWFRFTkRF RCAoX1JFX1NZTlRBWF9QT1NJWF9DT01NT04gfCBSRV9DT05URVhUX0lOREVQX0FOQ0hPUlMgfCBS RV9DT05URVhUX0lOVkFMSURfT1BTIHwgUkVfTk9fQktfQlJBQ0VTIHwgUkVfTk9fQktfUEFSRU5T IHwgUkVfTk9fQktfUkVGUyB8IFJFX05PX0JLX1ZCQVIgfCBSRV9VTk1BVENIRURfUklHSFRfUEFS RU5fT1JEKQ0KIyAyNTMgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9l bWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5oIg0KI2RlZmluZSBSRV9E VVBfTUFYICgweDdmZmYpDQoNCg0KDQoNCg0KDQojZGVmaW5lIFJFR19FWFRFTkRFRCAxDQoNCg0K DQojZGVmaW5lIFJFR19JQ0FTRSAoUkVHX0VYVEVOREVEIDw8IDEpDQoNCg0KDQoNCiNkZWZpbmUg UkVHX05FV0xJTkUgKFJFR19JQ0FTRSA8PCAxKQ0KDQoNCg0KI2RlZmluZSBSRUdfTk9TVUIgKFJF R19ORVdMSU5FIDw8IDEpDQojIDI4MyAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFz ZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmgiDQojZGVm aW5lIFJFR19OT1RCT0wgMQ0KDQoNCiNkZWZpbmUgUkVHX05PVEVPTCAoMSA8PCAxKQ0KDQoNCg0K DQp0eXBlZGVmIGVudW0NCnsNCg0KICBSRUdfRU5PU1lTID0gLTEsDQoNCg0KICBSRUdfTk9FUlJP UiA9IDAsDQogIFJFR19OT01BVENILA0KDQoNCg0KICBSRUdfQkFEUEFULA0KICBSRUdfRUNPTExB VEUsDQogIFJFR19FQ1RZUEUsDQogIFJFR19FRVNDQVBFLA0KICBSRUdfRVNVQlJFRywNCiAgUkVH X0VCUkFDSywNCiAgUkVHX0VQQVJFTiwNCiAgUkVHX0VCUkFDRSwNCiAgUkVHX0JBREJSLA0KICBS RUdfRVJBTkdFLA0KICBSRUdfRVNQQUNFLA0KICBSRUdfQkFEUlBULA0KDQoNCiAgUkVHX0VFTkQs DQogIFJFR19FU0laRSwNCiAgUkVHX0VSUEFSRU4sDQogIFJFR19FUkFOR0VYDQp9IHJlZ19lcnJj b2RlX3Q7DQojIDMyOSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2Vt YWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmgiDQojZGVmaW5lIFJFX1RS QU5TTEFURV9UWVBFIGNoYXIgKg0KDQoNCnN0cnVjdCByZV9wYXR0ZXJuX2J1ZmZlcg0Kew0KDQoN Cg0KDQogIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsNCg0KDQogIHNpemVfdCBhbGxvY2F0ZWQ7DQoN Cg0KICBzaXplX3QgdXNlZDsNCg0KDQogIHJlZ19zeW50YXhfdCBzeW50YXg7DQoNCg0KDQoNCiAg Y2hhciAqZmFzdG1hcDsNCg0KDQoNCg0KDQogIGNoYXIgKiB0cmFuc2xhdGU7DQoNCg0KICBzaXpl X3QgcmVfbnN1YjsNCg0KDQoNCg0KDQogIHVuc2lnbmVkIGNhbl9iZV9udWxsIDogMTsNCg0KDQoN Cg0KDQojZGVmaW5lIFJFR1NfVU5BTExPQ0FURUQgMA0KI2RlZmluZSBSRUdTX1JFQUxMT0NBVEUg MQ0KI2RlZmluZSBSRUdTX0ZJWEVEIDINCiAgdW5zaWduZWQgcmVnc19hbGxvY2F0ZWQgOiAyOw0K DQoNCg0KICB1bnNpZ25lZCBmYXN0bWFwX2FjY3VyYXRlIDogMTsNCg0KDQoNCiAgdW5zaWduZWQg bm9fc3ViIDogMTsNCg0KDQoNCiAgdW5zaWduZWQgbm90X2JvbCA6IDE7DQoNCg0KICB1bnNpZ25l ZCBub3RfZW9sIDogMTsNCg0KDQoNCiAgdW5zaWduZWQgdXNlZF9zeW50YXggOiAxOw0KIyA0MTEg Ii9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40 LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5oIg0KfTsNCg0KdHlwZWRlZiBzdHJ1Y3QgcmVfcGF0 dGVybl9idWZmZXIgcmVnZXhfdDsNCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3NpemVfdCByZWdvZmZf dDsNCg0KDQoNCg0Kc3RydWN0IHJlX3JlZ2lzdGVycw0Kew0KICB1bnNpZ25lZCBudW1fcmVnczsN CiAgcmVnb2ZmX3QgKnN0YXJ0Ow0KICByZWdvZmZfdCAqZW5kOw0KfTsNCg0KDQoNCg0KDQoNCiNk ZWZpbmUgUkVfTlJFR1MgMzANCg0KDQoNCg0KDQoNCnR5cGVkZWYgc3RydWN0DQp7DQogIHJlZ29m Zl90IHJtX3NvOw0KICByZWdvZmZfdCBybV9lbzsNCn0gcmVnbWF0Y2hfdDsNCg0KDQoNCg0KDQpl eHRlcm4gcmVnX3N5bnRheF90IHJlX3NldF9zeW50YXggKHJlZ19zeW50YXhfdCBfX3N5bnRheCk7 DQoNCg0KDQoNCmV4dGVybiBjb25zdCBjaGFyICpyZV9jb21waWxlX3BhdHRlcm4gKGNvbnN0IGNo YXIgKl9fcGF0dGVybiwgc2l6ZV90IF9fbGVuZ3RoLA0KICAgICAgICAgICBzdHJ1Y3QgcmVfcGF0 dGVybl9idWZmZXIgKl9fYnVmZmVyKTsNCg0KDQoNCg0KDQpleHRlcm4gaW50IHJlX2NvbXBpbGVf ZmFzdG1hcCAoc3RydWN0IHJlX3BhdHRlcm5fYnVmZmVyICpfX2J1ZmZlcik7DQoNCg0KDQoNCg0K DQoNCmV4dGVybiByZWdvZmZfdCByZV9zZWFyY2ggKHN0cnVjdCByZV9wYXR0ZXJuX2J1ZmZlciAq X19idWZmZXIsDQogICAgICBjb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90IF9fbGVuZ3RoLA0K ICAgICAgc3NpemVfdCBfX3N0YXJ0LCBzc2l6ZV90IF9fcmFuZ2UsDQogICAgICBzdHJ1Y3QgcmVf cmVnaXN0ZXJzICpfX3JlZ3MpOw0KDQoNCg0KDQpleHRlcm4gcmVnb2ZmX3QgcmVfc2VhcmNoXzIg KHN0cnVjdCByZV9wYXR0ZXJuX2J1ZmZlciAqX19idWZmZXIsDQogICAgICAgIGNvbnN0IGNoYXIg Kl9fc3RyaW5nMSwgc2l6ZV90IF9fbGVuZ3RoMSwNCiAgICAgICAgY29uc3QgY2hhciAqX19zdHJp bmcyLCBzaXplX3QgX19sZW5ndGgyLA0KICAgICAgICBzc2l6ZV90IF9fc3RhcnQsIHNzaXplX3Qg X19yYW5nZSwNCiAgICAgICAgc3RydWN0IHJlX3JlZ2lzdGVycyAqX19yZWdzLA0KICAgICAgICBz c2l6ZV90IF9fc3RvcCk7DQoNCg0KDQoNCmV4dGVybiByZWdvZmZfdCByZV9tYXRjaCAoc3RydWN0 IHJlX3BhdHRlcm5fYnVmZmVyICpfX2J1ZmZlciwNCiAgICAgY29uc3QgY2hhciAqX19zdHJpbmcs IHNpemVfdCBfX2xlbmd0aCwNCiAgICAgc3NpemVfdCBfX3N0YXJ0LCBzdHJ1Y3QgcmVfcmVnaXN0 ZXJzICpfX3JlZ3MpOw0KDQoNCg0KZXh0ZXJuIHJlZ29mZl90IHJlX21hdGNoXzIgKHN0cnVjdCBy ZV9wYXR0ZXJuX2J1ZmZlciAqX19idWZmZXIsDQogICAgICAgY29uc3QgY2hhciAqX19zdHJpbmcx LCBzaXplX3QgX19sZW5ndGgxLA0KICAgICAgIGNvbnN0IGNoYXIgKl9fc3RyaW5nMiwgc2l6ZV90 IF9fbGVuZ3RoMiwNCiAgICAgICBzc2l6ZV90IF9fc3RhcnQsIHN0cnVjdCByZV9yZWdpc3RlcnMg Kl9fcmVncywNCiAgICAgICBzc2l6ZV90IF9fc3RvcCk7DQojIDUxNyAiL2hvbWUvamFtZXMvcmFp ZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4v c3JjL3JlZ2V4LmgiDQpleHRlcm4gdm9pZCByZV9zZXRfcmVnaXN0ZXJzIChzdHJ1Y3QgcmVfcGF0 dGVybl9idWZmZXIgKl9fYnVmZmVyLA0KICAgICAgICAgc3RydWN0IHJlX3JlZ2lzdGVycyAqX19y ZWdzLA0KICAgICAgICAgdW5zaWduZWQgX19udW1fcmVncywNCiAgICAgICAgIHJlZ29mZl90ICpf X3N0YXJ0cywgcmVnb2ZmX3QgKl9fZW5kcyk7DQojIDU0OSAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmgiDQpleHRlcm4gcmVnX2VycmNvZGVfdCByZWdjb21wIChyZWdleF90ICpfX3Jlc3RyaWN0 IF9fcHJlZywNCiAgICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19wYXR0ZXJuLA0KICAg ICAgICAgaW50IF9fY2ZsYWdzKTsNCg0KZXh0ZXJuIHJlZ19lcnJjb2RlX3QgcmVnZXhlYyAoY29u c3QgcmVnZXhfdCAqX19yZXN0cmljdCBfX3ByZWcsDQogICAgICAgICBjb25zdCBjaGFyICpfX3Jl c3RyaWN0IF9fc3RyaW5nLCBzaXplX3QgX19ubWF0Y2gsDQogICAgICAgICByZWdtYXRjaF90IF9f cG1hdGNoW19fcmVzdHJpY3RdLA0KICAgICAgICAgaW50IF9fZWZsYWdzKTsNCg0KZXh0ZXJuIHNp emVfdCByZWdlcnJvciAoaW50IF9fZXJyY29kZSwgY29uc3QgcmVnZXhfdCAqIF9fcHJlZywNCiAg IGNoYXIgKl9fZXJyYnVmLCBzaXplX3QgX19lcnJidWZfc2l6ZSk7DQoNCmV4dGVybiB2b2lkIHJl Z2ZyZWUgKHJlZ2V4X3QgKl9fcHJlZyk7DQojIDU5MiAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1h Y3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4 LmgiDQojZGVmaW5lIENIQVJfQ0xBU1NfTUFYX0xFTkdUSCA5DQojZGVmaW5lIGJ0b3djKGMpIGMN Cg0KDQp0eXBlZGVmIGVudW0geyBSRUNDX0VSUk9SID0gMCwNCiAgICAgICAgUkVDQ19BTE5VTSwg UkVDQ19BTFBIQSwgUkVDQ19XT1JELA0KICAgICAgICBSRUNDX0dSQVBILCBSRUNDX1BSSU5ULA0K ICAgICAgICBSRUNDX0xPV0VSLCBSRUNDX1VQUEVSLA0KICAgICAgICBSRUNDX1BVTkNULCBSRUND X0NOVFJMLA0KICAgICAgICBSRUNDX0RJR0lULCBSRUNDX1hESUdJVCwNCiAgICAgICAgUkVDQ19C TEFOSywgUkVDQ19TUEFDRSwNCiAgICAgICAgUkVDQ19NVUxUSUJZVEUsIFJFQ0NfTk9OQVNDSUks DQogICAgICAgIFJFQ0NfQVNDSUksIFJFQ0NfVU5JQllURQ0KfSByZV93Y3R5cGVfdDsNCg0KZXh0 ZXJuIGNoYXIgcmVfaXN3Y3R5cGUgKGludCBjaCwgcmVfd2N0eXBlX3QgY2MpOw0KZXh0ZXJuIHJl X3djdHlwZV90IHJlX3djdHlwZSAoY29uc3QgdW5zaWduZWQgY2hhciogc3RyKTsNCg0KdHlwZWRl ZiBpbnQgcmVfd2NoYXJfdDsNCg0KZXh0ZXJuIHZvaWQgcmVfc2V0X3doaXRlc3BhY2VfcmVnZXhw IChjb25zdCBjaGFyICpyZWdleHApOw0KIyAyOTMgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j IiAyDQoNCg0KIyAxICIvdXNyL2luY2x1ZGUvY3R5cGUuaCIgMSAzIDQNCiMgMjUgIi91c3IvaW5j bHVkZS9jdHlwZS5oIiAzIDQNCiNkZWZpbmUgX0NUWVBFX0ggMQ0KDQoNCg0KDQoNCiMgNDUgIi91 c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQNCiNkZWZpbmUgX0lTYml0KGJpdCkgKChiaXQpIDwgOCA/ ICgoMSA8PCAoYml0KSkgPDwgOCkgOiAoKDEgPDwgKGJpdCkpID4+IDgpKQ0KDQoNCmVudW0NCnsN CiAgX0lTdXBwZXIgPSAoKDApIDwgOCA/ICgoMSA8PCAoMCkpIDw8IDgpIDogKCgxIDw8ICgwKSkg Pj4gOCkpLA0KICBfSVNsb3dlciA9ICgoMSkgPCA4ID8gKCgxIDw8ICgxKSkgPDwgOCkgOiAoKDEg PDwgKDEpKSA+PiA4KSksDQogIF9JU2FscGhhID0gKCgyKSA8IDggPyAoKDEgPDwgKDIpKSA8PCA4 KSA6ICgoMSA8PCAoMikpID4+IDgpKSwNCiAgX0lTZGlnaXQgPSAoKDMpIDwgOCA/ICgoMSA8PCAo MykpIDw8IDgpIDogKCgxIDw8ICgzKSkgPj4gOCkpLA0KICBfSVN4ZGlnaXQgPSAoKDQpIDwgOCA/ ICgoMSA8PCAoNCkpIDw8IDgpIDogKCgxIDw8ICg0KSkgPj4gOCkpLA0KICBfSVNzcGFjZSA9ICgo NSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAoKDEgPDwgKDUpKSA+PiA4KSksDQogIF9JU3By aW50ID0gKCg2KSA8IDggPyAoKDEgPDwgKDYpKSA8PCA4KSA6ICgoMSA8PCAoNikpID4+IDgpKSwN CiAgX0lTZ3JhcGggPSAoKDcpIDwgOCA/ICgoMSA8PCAoNykpIDw8IDgpIDogKCgxIDw8ICg3KSkg Pj4gOCkpLA0KICBfSVNibGFuayA9ICgoOCkgPCA4ID8gKCgxIDw8ICg4KSkgPDwgOCkgOiAoKDEg PDwgKDgpKSA+PiA4KSksDQogIF9JU2NudHJsID0gKCg5KSA8IDggPyAoKDEgPDwgKDkpKSA8PCA4 KSA6ICgoMSA8PCAoOSkpID4+IDgpKSwNCiAgX0lTcHVuY3QgPSAoKDEwKSA8IDggPyAoKDEgPDwg KDEwKSkgPDwgOCkgOiAoKDEgPDwgKDEwKSkgPj4gOCkpLA0KICBfSVNhbG51bSA9ICgoMTEpIDwg OCA/ICgoMSA8PCAoMTEpKSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4KSkNCn07DQojIDgxICIv dXNyL2luY2x1ZGUvY3R5cGUuaCIgMyA0DQpleHRlcm4gX19jb25zdCB1bnNpZ25lZCBzaG9ydCBp bnQgKipfX2N0eXBlX2JfbG9jICh2b2lkKQ0KICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdCkp Ow0KZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90ICoqX19jdHlwZV90b2xvd2VyX2xvYyAodm9pZCkN CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3QpKTsNCmV4dGVybiBfX2NvbnN0IF9faW50MzJf dCAqKl9fY3R5cGVfdG91cHBlcl9sb2MgKHZvaWQpDQogICAgIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0KSk7DQoNCiNkZWZpbmUgX19pc2N0eXBlKGMsdHlwZSkgKCgqX19jdHlwZV9iX2xvYyAoKSlb KGludCkgKGMpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpIHR5cGUpDQoNCg0KI2RlZmluZSBfX2lz YXNjaWkoYykgKCgoYykgJiB+MHg3ZikgPT0gMCkNCiNkZWZpbmUgX190b2FzY2lpKGMpICgoYykg JiAweDdmKQ0KDQojZGVmaW5lIF9fZXhjdHlwZShuYW1lKSBleHRlcm4gaW50IG5hbWUgKGludCkg X19USFJPVw0KDQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IGlzYWxudW0gKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzYWxwaGEgKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzY250cmwgKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzZGlnaXQgKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzbG93ZXIgKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzcHJpbnQgKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzcHVuY3QgKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzdXBwZXIgKGludCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzeGRpZ2l0IChpbnQpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KZXh0ZXJuIGludCB0b2xvd2VyIChpbnQgX19j KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0KDQpleHRlcm4gaW50IHRvdXBwZXIg KGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KDQoNCg0KDQoN CmV4dGVybiBpbnQgaXNibGFuayAoaW50KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsN Cg0KDQoNCg0KDQoNCmV4dGVybiBpbnQgaXNjdHlwZSAoaW50IF9fYywgaW50IF9fbWFzaykgX19h dHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQoNCg0KDQoNCg0KDQpleHRlcm4gaW50IGlzYXNj aWkgKGludCBfX2MpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KDQoNCg0KZXh0ZXJu IGludCB0b2FzY2lpIChpbnQgX19jKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCg0K DQoNCmV4dGVybiBpbnQgX3RvdXBwZXIgKGludCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19f KSk7DQpleHRlcm4gaW50IF90b2xvd2VyIChpbnQpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3df XykpOw0KDQoNCg0KI2RlZmluZSBfX3RvYm9keShjLGYsYSxhcmdzKSAoX19leHRlbnNpb25fXyAo eyBpbnQgX19yZXM7IGlmIChzaXplb2YgKGMpID4gMSkgeyBpZiAoX19idWlsdGluX2NvbnN0YW50 X3AgKGMpKSB7IGludCBfX2MgPSAoYyk7IF9fcmVzID0gX19jIDwgLTEyOCB8fCBfX2MgPiAyNTUg PyBfX2MgOiAoYSlbX19jXTsgfSBlbHNlIF9fcmVzID0gZiBhcmdzOyB9IGVsc2UgX19yZXMgPSAo YSlbKGludCkgKGMpXTsgX19yZXM7IH0pKQ0KIyAxNzMgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAz IDQNCiNkZWZpbmUgaXNhbG51bShjKSBfX2lzY3R5cGUoKGMpLCBfSVNhbG51bSkNCiNkZWZpbmUg aXNhbHBoYShjKSBfX2lzY3R5cGUoKGMpLCBfSVNhbHBoYSkNCiNkZWZpbmUgaXNjbnRybChjKSBf X2lzY3R5cGUoKGMpLCBfSVNjbnRybCkNCiNkZWZpbmUgaXNkaWdpdChjKSBfX2lzY3R5cGUoKGMp LCBfSVNkaWdpdCkNCiNkZWZpbmUgaXNsb3dlcihjKSBfX2lzY3R5cGUoKGMpLCBfSVNsb3dlcikN CiNkZWZpbmUgaXNncmFwaChjKSBfX2lzY3R5cGUoKGMpLCBfSVNncmFwaCkNCiNkZWZpbmUgaXNw cmludChjKSBfX2lzY3R5cGUoKGMpLCBfSVNwcmludCkNCiNkZWZpbmUgaXNwdW5jdChjKSBfX2lz Y3R5cGUoKGMpLCBfSVNwdW5jdCkNCiNkZWZpbmUgaXNzcGFjZShjKSBfX2lzY3R5cGUoKGMpLCBf SVNzcGFjZSkNCiNkZWZpbmUgaXN1cHBlcihjKSBfX2lzY3R5cGUoKGMpLCBfSVN1cHBlcikNCiNk ZWZpbmUgaXN4ZGlnaXQoYykgX19pc2N0eXBlKChjKSwgX0lTeGRpZ2l0KQ0KDQoNCiNkZWZpbmUg aXNibGFuayhjKSBfX2lzY3R5cGUoKGMpLCBfSVNibGFuaykNCiMgMjA0ICIvdXNyL2luY2x1ZGUv Y3R5cGUuaCIgMyA0DQojZGVmaW5lIHRvbG93ZXIoYykgX190b2JvZHkgKGMsIHRvbG93ZXIsICpf X2N0eXBlX3RvbG93ZXJfbG9jICgpLCAoYykpDQojZGVmaW5lIHRvdXBwZXIoYykgX190b2JvZHkg KGMsIHRvdXBwZXIsICpfX2N0eXBlX3RvdXBwZXJfbG9jICgpLCAoYykpDQoNCg0KDQojZGVmaW5l IGlzYXNjaWkoYykgX19pc2FzY2lpIChjKQ0KI2RlZmluZSB0b2FzY2lpKGMpIF9fdG9hc2NpaSAo YykNCg0KI2RlZmluZSBfdG9sb3dlcihjKSAoKGludCkgKCpfX2N0eXBlX3RvbG93ZXJfbG9jICgp KVsoaW50KSAoYyldKQ0KI2RlZmluZSBfdG91cHBlcihjKSAoKGludCkgKCpfX2N0eXBlX3RvdXBw ZXJfbG9jICgpKVsoaW50KSAoYyldKQ0KIyAyMzcgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzIDQN CiNkZWZpbmUgX19pc2N0eXBlX2woYyx0eXBlLGxvY2FsZSkgKChsb2NhbGUpLT5fX2N0eXBlX2Jb KGludCkgKGMpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpIHR5cGUpDQoNCg0KI2RlZmluZSBfX2V4 Y3R5cGVfbChuYW1lKSBleHRlcm4gaW50IG5hbWUgKGludCwgX19sb2NhbGVfdCkgX19USFJPVw0K DQoNCg0KDQoNCg0KZXh0ZXJuIGludCBpc2FsbnVtX2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRy aWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzYWxwaGFfbCAoaW50LCBfX2xv Y2FsZV90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93X18pKTsNCmV4dGVybiBpbnQgaXNjbnRy bF9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KZXh0 ZXJuIGludCBpc2RpZ2l0X2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90 aHJvd19fKSk7DQpleHRlcm4gaW50IGlzbG93ZXJfbCAoaW50LCBfX2xvY2FsZV90KSBfX2F0dHJp YnV0ZV9fICgoX19ub3Rocm93X18pKTsNCmV4dGVybiBpbnQgaXNncmFwaF9sIChpbnQsIF9fbG9j YWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KZXh0ZXJuIGludCBpc3ByaW50 X2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRl cm4gaW50IGlzcHVuY3RfbCAoaW50LCBfX2xvY2FsZV90KSBfX2F0dHJpYnV0ZV9fICgoX19ub3Ro cm93X18pKTsNCmV4dGVybiBpbnQgaXNzcGFjZV9sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmli dXRlX18gKChfX25vdGhyb3dfXykpOw0KZXh0ZXJuIGludCBpc3VwcGVyX2wgKGludCwgX19sb2Nh bGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IGlzeGRpZ2l0 X2wgKGludCwgX19sb2NhbGVfdCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQoNCmV4 dGVybiBpbnQgaXNibGFua19sIChpbnQsIF9fbG9jYWxlX3QpIF9fYXR0cmlidXRlX18gKChfX25v dGhyb3dfXykpOw0KDQoNCg0KZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19sb2Nh bGVfdCBfX2wpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0KZXh0ZXJuIGludCB0b2xv d2VyX2wgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSBfX2F0dHJpYnV0ZV9fICgoX19ub3Rocm93 X18pKTsNCg0KDQpleHRlcm4gaW50IF9fdG91cHBlcl9sIChpbnQgX19jLCBfX2xvY2FsZV90IF9f bCkgX19hdHRyaWJ1dGVfXyAoKF9fbm90aHJvd19fKSk7DQpleHRlcm4gaW50IHRvdXBwZXJfbCAo aW50IF9fYywgX19sb2NhbGVfdCBfX2wpIF9fYXR0cmlidXRlX18gKChfX25vdGhyb3dfXykpOw0K DQoNCiNkZWZpbmUgX190b2xvd2VyX2woYyxsb2NhbGUpIF9fdG9ib2R5IChjLCBfX3RvbG93ZXJf bCwgKGxvY2FsZSktPl9fY3R5cGVfdG9sb3dlciwgKGMsIGxvY2FsZSkpDQoNCiNkZWZpbmUgX190 b3VwcGVyX2woYyxsb2NhbGUpIF9fdG9ib2R5IChjLCBfX3RvdXBwZXJfbCwgKGxvY2FsZSktPl9f Y3R5cGVfdG91cHBlciwgKGMsIGxvY2FsZSkpDQoNCiNkZWZpbmUgdG9sb3dlcl9sKGMsbG9jYWxl KSBfX3RvbG93ZXJfbCAoKGMpLCAobG9jYWxlKSkNCiNkZWZpbmUgdG91cHBlcl9sKGMsbG9jYWxl KSBfX3RvdXBwZXJfbCAoKGMpLCAobG9jYWxlKSkNCg0KDQoNCg0KI2RlZmluZSBfX2lzYWxudW1f bChjLGwpIF9faXNjdHlwZV9sKChjKSwgX0lTYWxudW0sIChsKSkNCiNkZWZpbmUgX19pc2FscGhh X2woYyxsKSBfX2lzY3R5cGVfbCgoYyksIF9JU2FscGhhLCAobCkpDQojZGVmaW5lIF9faXNjbnRy bF9sKGMsbCkgX19pc2N0eXBlX2woKGMpLCBfSVNjbnRybCwgKGwpKQ0KI2RlZmluZSBfX2lzZGln aXRfbChjLGwpIF9faXNjdHlwZV9sKChjKSwgX0lTZGlnaXQsIChsKSkNCiNkZWZpbmUgX19pc2xv d2VyX2woYyxsKSBfX2lzY3R5cGVfbCgoYyksIF9JU2xvd2VyLCAobCkpDQojZGVmaW5lIF9faXNn cmFwaF9sKGMsbCkgX19pc2N0eXBlX2woKGMpLCBfSVNncmFwaCwgKGwpKQ0KI2RlZmluZSBfX2lz cHJpbnRfbChjLGwpIF9faXNjdHlwZV9sKChjKSwgX0lTcHJpbnQsIChsKSkNCiNkZWZpbmUgX19p c3B1bmN0X2woYyxsKSBfX2lzY3R5cGVfbCgoYyksIF9JU3B1bmN0LCAobCkpDQojZGVmaW5lIF9f aXNzcGFjZV9sKGMsbCkgX19pc2N0eXBlX2woKGMpLCBfSVNzcGFjZSwgKGwpKQ0KI2RlZmluZSBf X2lzdXBwZXJfbChjLGwpIF9faXNjdHlwZV9sKChjKSwgX0lTdXBwZXIsIChsKSkNCiNkZWZpbmUg X19pc3hkaWdpdF9sKGMsbCkgX19pc2N0eXBlX2woKGMpLCBfSVN4ZGlnaXQsIChsKSkNCg0KI2Rl ZmluZSBfX2lzYmxhbmtfbChjLGwpIF9faXNjdHlwZV9sKChjKSwgX0lTYmxhbmssIChsKSkNCg0K DQojZGVmaW5lIF9faXNhc2NpaV9sKGMsbCkgKChsKSwgX19pc2FzY2lpIChjKSkNCiNkZWZpbmUg X190b2FzY2lpX2woYyxsKSAoKGwpLCBfX3RvYXNjaWkgKGMpKQ0KDQoNCiNkZWZpbmUgaXNhbG51 bV9sKGMsbCkgX19pc2FsbnVtX2wgKChjKSwgKGwpKQ0KI2RlZmluZSBpc2FscGhhX2woYyxsKSBf X2lzYWxwaGFfbCAoKGMpLCAobCkpDQojZGVmaW5lIGlzY250cmxfbChjLGwpIF9faXNjbnRybF9s ICgoYyksIChsKSkNCiNkZWZpbmUgaXNkaWdpdF9sKGMsbCkgX19pc2RpZ2l0X2wgKChjKSwgKGwp KQ0KI2RlZmluZSBpc2xvd2VyX2woYyxsKSBfX2lzbG93ZXJfbCAoKGMpLCAobCkpDQojZGVmaW5l IGlzZ3JhcGhfbChjLGwpIF9faXNncmFwaF9sICgoYyksIChsKSkNCiNkZWZpbmUgaXNwcmludF9s KGMsbCkgX19pc3ByaW50X2wgKChjKSwgKGwpKQ0KI2RlZmluZSBpc3B1bmN0X2woYyxsKSBfX2lz cHVuY3RfbCAoKGMpLCAobCkpDQojZGVmaW5lIGlzc3BhY2VfbChjLGwpIF9faXNzcGFjZV9sICgo YyksIChsKSkNCiNkZWZpbmUgaXN1cHBlcl9sKGMsbCkgX19pc3VwcGVyX2wgKChjKSwgKGwpKQ0K I2RlZmluZSBpc3hkaWdpdF9sKGMsbCkgX19pc3hkaWdpdF9sICgoYyksIChsKSkNCg0KI2RlZmlu ZSBpc2JsYW5rX2woYyxsKSBfX2lzYmxhbmtfbCAoKGMpLCAobCkpDQoNCg0KI2RlZmluZSBpc2Fz Y2lpX2woYyxsKSBfX2lzYXNjaWlfbCAoKGMpLCAobCkpDQojZGVmaW5lIHRvYXNjaWlfbChjLGwp IF9fdG9hc2NpaV9sICgoYyksIChsKSkNCg0KDQoNCg0KDQoNCg0KIyAyOTYgIi9ob21lL2phbWVz L3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3Jj Ly4uL3NyYy9yZWdleC5jIiAyDQojIDM1NiAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVs ZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQoj ZGVmaW5lIElTX1JFQUxfQVNDSUkoYykgKChjKSA8IDAyMDApDQoNCg0KI2RlZmluZSBJU1VOSUJZ VEUoYykgMQ0KDQoNCiNkZWZpbmUgSVNCTEFOSyhjKSBpc2JsYW5rIChjKQ0KDQoNCg0KDQojZGVm aW5lIElTR1JBUEgoYykgaXNncmFwaCAoYykNCg0KDQoNCg0KDQojdW5kZWYgSVNQUklOVA0KI2Rl ZmluZSBJU1BSSU5UKGMpIGlzcHJpbnQgKGMpDQojZGVmaW5lIElTRElHSVQoYykgaXNkaWdpdCAo YykNCiNkZWZpbmUgSVNBTE5VTShjKSBpc2FsbnVtIChjKQ0KI2RlZmluZSBJU0FMUEhBKGMpIGlz YWxwaGEgKGMpDQojZGVmaW5lIElTQ05UUkwoYykgaXNjbnRybCAoYykNCiNkZWZpbmUgSVNMT1dF UihjKSBpc2xvd2VyIChjKQ0KI2RlZmluZSBJU1BVTkNUKGMpIGlzcHVuY3QgKGMpDQojZGVmaW5l IElTU1BBQ0UoYykgaXNzcGFjZSAoYykNCiNkZWZpbmUgSVNVUFBFUihjKSBpc3VwcGVyIChjKQ0K I2RlZmluZSBJU1hESUdJVChjKSBpc3hkaWdpdCAoYykNCg0KI2RlZmluZSBJU1dPUkQoYykgSVNB TFBIQSAoYykNCg0KDQojZGVmaW5lIFRPTE9XRVIoYykgX3RvbG93ZXIgKGMpDQoNCg0KDQoNCg0K I2RlZmluZSBDSEFSX1NFVF9TSVpFIDI1Ng0KDQoNCg0KDQoNCg0KDQpzdGF0aWMgY2hhciByZV9z eW50YXhfdGFibGVbMjU2XTsNCg0Kc3RhdGljIHZvaWQNCmluaXRfc3ludGF4X29uY2UgKHZvaWQp DQp7DQogICByZWdpc3RlciBpbnQgYzsNCiAgIHN0YXRpYyBpbnQgZG9uZSA9IDA7DQoNCiAgIGlm IChkb25lKQ0KICAgICByZXR1cm47DQoNCiAgIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc2l6ZW9m IHJlX3N5bnRheF90YWJsZSkgJiYgKHNpemVvZiByZV9zeW50YXhfdGFibGUpID09IDAgPyAoX193 YXJuX21lbXNldF96ZXJvX2xlbiAoKSwgKHZvaWQpICgwKSwgKHZvaWQpIChzaXplb2YgcmVfc3lu dGF4X3RhYmxlKSwgKHZvaWQgKikgKHJlX3N5bnRheF90YWJsZSkpIDogKChfX2J1aWx0aW5fb2Jq ZWN0X3NpemUgKHJlX3N5bnRheF90YWJsZSwgMCkgIT0gKHNpemVfdCkgLTEpID8gX19idWlsdGlu X19fbWVtc2V0X2NoayAocmVfc3ludGF4X3RhYmxlLCAwLCBzaXplb2YgcmVfc3ludGF4X3RhYmxl LCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKHJlX3N5bnRheF90YWJsZSwgMCkpIDogX19tZW1zZXRf aWNoayAocmVfc3ludGF4X3RhYmxlLCAwLCBzaXplb2YgcmVfc3ludGF4X3RhYmxlKSkpOw0KDQog ICBmb3IgKGMgPSAwOyBjIDwgMjU2OyArK2MpDQogICAgIGlmICgoKCpfX2N0eXBlX2JfbG9jICgp KVsoaW50KSAoKGMpKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSBfSVNhbG51bSkpDQogcmVfc3lu dGF4X3RhYmxlW2NdID0gU3dvcmQ7DQoNCiAgIHJlX3N5bnRheF90YWJsZVsnXyddID0gU3N5bWJv bDsNCg0KICAgZG9uZSA9IDE7DQp9DQoNCg0KDQojZGVmaW5lIFNZTlRBWChjKSByZV9zeW50YXhf dGFibGVbKGMpXQ0KDQoNCg0KI2RlZmluZSBTSUdOX0VYVEVORF9DSEFSKGMpICgoc2lnbmVkIGNo YXIpIChjKSkNCiMgNDY0ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMv ZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgUkVH RVhfQUxMT0NBVEUgYWxsb2NhDQoNCg0KI2RlZmluZSBSRUdFWF9SRUFMTE9DQVRFKHNvdXJjZSxv c2l6ZSxuc2l6ZSkgKGRlc3RpbmF0aW9uID0gKGNoYXIgKikgYWxsb2NhIChuc2l6ZSksIG1lbWNw eSAoZGVzdGluYXRpb24sIHNvdXJjZSwgb3NpemUpKQ0KDQoNCg0KDQojZGVmaW5lIFJFR0VYX0ZS RUUoYXJnKSAoKHZvaWQpMCkNCiMgNDk3ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxl YXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNk ZWZpbmUgUkVHRVhfQUxMT0NBVEVfU1RBQ0sgYWxsb2NhDQoNCiNkZWZpbmUgUkVHRVhfUkVBTExP Q0FURV9TVEFDSyhzb3VyY2Usb3NpemUsbnNpemUpIFJFR0VYX1JFQUxMT0NBVEUgKHNvdXJjZSwg b3NpemUsIG5zaXplKQ0KDQoNCiNkZWZpbmUgUkVHRVhfRlJFRV9TVEFDSyhhcmcpICgodm9pZCkw KQ0KIyA1MTEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0y NC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBGSVJTVF9TVFJJ TkdfUChwdHIpIChzaXplMSAmJiBzdHJpbmcxIDw9IChwdHIpICYmIChwdHIpIDw9IHN0cmluZzEg KyBzaXplMSkNCg0KDQoNCiNkZWZpbmUgVEFMTE9DKG4sdCkgKCh0ICopIG1hbGxvYyAoKG4pICog c2l6ZW9mICh0KSkpDQojZGVmaW5lIFJFVEFMTE9DKGFkZHIsbix0KSAoKGFkZHIpID0gKHQgKikg cmVhbGxvYyAoYWRkciwgKG4pICogc2l6ZW9mICh0KSkpDQojZGVmaW5lIFJFR0VYX1RBTExPQyhu LHQpICgodCAqKSBSRUdFWF9BTExPQ0FURSAoKG4pICogc2l6ZW9mICh0KSkpDQoNCiNkZWZpbmUg QllURVdJRFRIIDgNCg0KI2RlZmluZSBTVFJFUShzMSxzMikgKChzdHJjbXAgKHMxLCBzMikgPT0g MCkpDQoNCiN1bmRlZiBNQVgNCiN1bmRlZiBNSU4NCiNkZWZpbmUgTUFYKGEsYikgKChhKSA+IChi KSA/IChhKSA6IChiKSkNCiNkZWZpbmUgTUlOKGEsYikgKChhKSA8IChiKSA/IChhKSA6IChiKSkN Cg0KDQoNCg0KDQp0eXBlZGVmIGNvbnN0IHVuc2lnbmVkIGNoYXIgcmVfY2hhcjsNCg0KDQp0eXBl ZGVmIGNoYXIgYm9vbGVhbjsNCg0Kc3RhdGljIHJlZ29mZl90IHJlX21hdGNoXzJfaW50ZXJuYWwg KHN0cnVjdCByZV9wYXR0ZXJuX2J1ZmZlciAqYnVmcCwNCiAgICAgICAgIHJlX2NoYXIgKnN0cmlu ZzEsIHNpemVfdCBzaXplMSwNCiAgICAgICAgIHJlX2NoYXIgKnN0cmluZzIsIHNpemVfdCBzaXpl MiwNCiAgICAgICAgIHNzaXplX3QgcG9zLA0KICAgICAgICAgc3RydWN0IHJlX3JlZ2lzdGVycyAq cmVncywNCiAgICAgICAgIHNzaXplX3Qgc3RvcCk7DQoNCg0KDQoNCg0KDQp0eXBlZGVmIGVudW0N CnsNCiAgbm9fb3AgPSAwLA0KDQoNCiAgc3VjY2VlZCwNCg0KDQogIGV4YWN0biwNCg0KDQogIGFu eWNoYXIsDQojIDU3NiAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2Vt YWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQogIGNoYXJzZXQsDQoN Cg0KDQogIGNoYXJzZXRfbm90LA0KDQoNCg0KDQoNCiAgc3RhcnRfbWVtb3J5LA0KDQoNCg0KDQoN CiAgc3RvcF9tZW1vcnksDQoNCg0KDQogIGR1cGxpY2F0ZSwNCg0KDQogIGJlZ2xpbmUsDQoNCg0K ICBlbmRsaW5lLA0KDQoNCg0KICBiZWdidWYsDQoNCg0KICBlbmRidWYsDQoNCg0KICBqdW1wLA0K DQoNCg0KICBvbl9mYWlsdXJlX2p1bXAsDQoNCg0KDQogIG9uX2ZhaWx1cmVfa2VlcF9zdHJpbmdf anVtcCwNCg0KDQoNCg0KICBvbl9mYWlsdXJlX2p1bXBfbG9vcCwNCg0KDQoNCg0KDQogIG9uX2Zh aWx1cmVfanVtcF9uYXN0eWxvb3AsDQoNCg0KDQoNCg0KDQoNCiAgb25fZmFpbHVyZV9qdW1wX3Nt YXJ0LA0KDQoNCg0KDQoNCiAgc3VjY2VlZF9uLA0KDQoNCg0KICBqdW1wX24sDQoNCg0KDQoNCiAg c2V0X251bWJlcl9hdCwNCg0KICB3b3JkYmVnLA0KICB3b3JkZW5kLA0KDQogIHdvcmRib3VuZCwN CiAgbm90d29yZGJvdW5kLA0KDQogIHN5bWJlZywNCiAgc3ltZW5kLA0KDQoNCg0KICBzeW50YXhz cGVjLA0KDQoNCiAgbm90c3ludGF4c3BlYw0KIyA2ODcgIi9ob21lL2phbWVzL3JhaWQvb3B0L2Vt YWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdl eC5jIg0KfSByZV9vcGNvZGVfdDsNCg0KDQoNCg0KDQojZGVmaW5lIFNUT1JFX05VTUJFUihkZXN0 aW5hdGlvbixudW1iZXIpIGRvIHsgKGRlc3RpbmF0aW9uKVswXSA9IChudW1iZXIpICYgMDM3Nzsg KGRlc3RpbmF0aW9uKVsxXSA9IChudW1iZXIpID4+IDg7IH0gd2hpbGUgKDApDQojIDcwMyAiL2hv bWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4y L2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIFNUT1JFX05VTUJFUl9BTkRfSU5DUihk ZXN0aW5hdGlvbixudW1iZXIpIGRvIHsgU1RPUkVfTlVNQkVSIChkZXN0aW5hdGlvbiwgbnVtYmVy KTsgKGRlc3RpbmF0aW9uKSArPSAyOyB9IHdoaWxlICgwKQ0KIyA3MTIgIi9ob21lL2phbWVzL3Jh aWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4u L3NyYy9yZWdleC5jIg0KI2RlZmluZSBFWFRSQUNUX05VTUJFUihkZXN0aW5hdGlvbixzb3VyY2Up IGRvIHsgKGRlc3RpbmF0aW9uKSA9ICooc291cmNlKSAmIDAzNzc7IChkZXN0aW5hdGlvbikgKz0g U0lHTl9FWFRFTkRfQ0hBUiAoKigoc291cmNlKSArIDEpKSA8PCA4OyB9IHdoaWxlICgwKQ0KIyA3 MzcgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdj Yy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBFWFRSQUNUX05VTUJFUl9B TkRfSU5DUihkZXN0aW5hdGlvbixzb3VyY2UpIGRvIHsgRVhUUkFDVF9OVU1CRVIgKGRlc3RpbmF0 aW9uLCBzb3VyY2UpOyAoc291cmNlKSArPSAyOyB9IHdoaWxlICgwKQ0KIyA3NjMgIi9ob21lL2ph bWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWIt c3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBTVE9SRV9DSEFSQUNURVJfQU5EX0lOQ1IoZGVz dGluYXRpb24sY2hhcmFjdGVyKSBkbyB7IChkZXN0aW5hdGlvbilbMF0gPSAoY2hhcmFjdGVyKSAm IDAzNzc7IChkZXN0aW5hdGlvbilbMV0gPSAoKGNoYXJhY3RlcikgPj4gOCkgJiAwMzc3OyAoZGVz dGluYXRpb24pWzJdID0gKGNoYXJhY3RlcikgPj4gMTY7IChkZXN0aW5hdGlvbikgKz0gMzsgfSB3 aGlsZSAoMCkNCiMgNzc0ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMv ZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgRVhU UkFDVF9DSEFSQUNURVIoZGVzdGluYXRpb24sc291cmNlKSBkbyB7IChkZXN0aW5hdGlvbikgPSAo KHNvdXJjZSlbMF0gfCAoKHNvdXJjZSlbMV0gPDwgOCkgfCAoKHNvdXJjZSlbMl0gPDwgMTYpKTsg fSB3aGlsZSAoMCkNCiMgNzg2ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUg Q0hBUlNFVF9CSVRNQVBfU0laRShwKSAoKHApWzFdICYgMHg3RikNCg0KDQojZGVmaW5lIENIQVJT RVRfUkFOR0VfVEFCTEVfRVhJU1RTX1AocCkgKChwKVsxXSAmIDB4ODApDQoNCg0KDQoNCg0KI2Rl ZmluZSBDSEFSU0VUX1JBTkdFX1RBQkxFKHApICgmKHApWzQgKyBDSEFSU0VUX0JJVE1BUF9TSVpF IChwKV0pDQoNCg0KI2RlZmluZSBDSEFSU0VUX1JBTkdFX1RBQkxFX0JJVFMocCkgKChwKVsyICsg Q0hBUlNFVF9CSVRNQVBfU0laRSAocCldICsgKHApWzMgKyBDSEFSU0VUX0JJVE1BUF9TSVpFIChw KV0gKiAweDEwMCkNCg0KDQoNCg0KDQoNCg0KI2RlZmluZSBDSEFSU0VUX1JBTkdFX1RBQkxFX0VO RChyYW5nZV90YWJsZSxjb3VudCkgKChyYW5nZV90YWJsZSkgKyAoY291bnQpICogMiAqIDMpDQoN Cg0KDQoNCiNkZWZpbmUgQ0hBUlNFVF9MT09LVVBfUkFOR0VfVEFCTEVfUkFXKG5vdCxjLHJhbmdl X3RhYmxlLGNvdW50KSBkbyB7IHJlX3djaGFyX3QgcmFuZ2Vfc3RhcnQsIHJhbmdlX2VuZDsgcmVf Y2hhciAqcnRwOyByZV9jaGFyICpyYW5nZV90YWJsZV9lbmQgPSBDSEFSU0VUX1JBTkdFX1RBQkxF X0VORCAoKHJhbmdlX3RhYmxlKSwgKGNvdW50KSk7IGZvciAocnRwID0gKHJhbmdlX3RhYmxlKTsg cnRwIDwgcmFuZ2VfdGFibGVfZW5kOyBydHAgKz0gMiAqIDMpIHsgRVhUUkFDVF9DSEFSQUNURVIg KHJhbmdlX3N0YXJ0LCBydHApOyBFWFRSQUNUX0NIQVJBQ1RFUiAocmFuZ2VfZW5kLCBydHAgKyAz KTsgaWYgKHJhbmdlX3N0YXJ0IDw9IChjKSAmJiAoYykgPD0gcmFuZ2VfZW5kKSB7IChub3QpID0g IShub3QpOyBicmVhazsgfSB9IH0gd2hpbGUgKDApDQojIDgzNSAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQojZGVmaW5lIENIQVJTRVRfTE9PS1VQX1JBTkdFX1RBQkxFKG5vdCxjLGNoYXJz ZXQpIGRvIHsgaW50IGNvdW50OyByZV9jaGFyICpyYW5nZV90YWJsZSA9IENIQVJTRVRfUkFOR0Vf VEFCTEUgKGNoYXJzZXQpOyBFWFRSQUNUX05VTUJFUl9BTkRfSU5DUiAoY291bnQsIHJhbmdlX3Rh YmxlKTsgQ0hBUlNFVF9MT09LVVBfUkFOR0VfVEFCTEVfUkFXICgobm90KSwgKGMpLCByYW5nZV90 YWJsZSwgY291bnQpOyB9IHdoaWxlICgwKQ0KIyAxMjE1ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9l bWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVn ZXguYyINCiN1bmRlZiBhc3NlcnQNCiNkZWZpbmUgYXNzZXJ0KGUpIA0KDQojZGVmaW5lIERFQlVH X1NUQVRFTUVOVChlKSANCiNkZWZpbmUgREVCVUdfUFJJTlQxKHgpIA0KI2RlZmluZSBERUJVR19Q UklOVDIoeDEseDIpIA0KI2RlZmluZSBERUJVR19QUklOVDMoeDEseDIseDMpIA0KI2RlZmluZSBE RUJVR19QUklOVDQoeDEseDIseDMseDQpIA0KI2RlZmluZSBERUJVR19QUklOVF9DT01QSUxFRF9Q QVRURVJOKHAscyxlKSANCiNkZWZpbmUgREVCVUdfUFJJTlRfRE9VQkxFX1NUUklORyh3LHMxLHN6 MSxzMixzejIpIA0KDQoNCg0KDQoNCg0KDQojZGVmaW5lIElGX0xJTlQoQ29kZSkgDQoNCg0KDQoN Cg0KDQoNCnJlZ19zeW50YXhfdCByZV9zeW50YXhfb3B0aW9uczsNCiMgMTI1MCAiL2hvbWUvamFt ZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1z cmMvLi4vc3JjL3JlZ2V4LmMiDQpyZWdfc3ludGF4X3QNCnJlX3NldF9zeW50YXggKHJlZ19zeW50 YXhfdCBzeW50YXgpDQp7DQogIHJlZ19zeW50YXhfdCByZXQgPSByZV9zeW50YXhfb3B0aW9uczsN Cg0KICByZV9zeW50YXhfb3B0aW9ucyA9IHN5bnRheDsNCiAgcmV0dXJuIHJldDsNCn0NCg0KDQoN CnN0YXRpYyByZV9jaGFyICp3aGl0ZXNwYWNlX3JlZ2V4cDsNCg0Kdm9pZA0KcmVfc2V0X3doaXRl c3BhY2VfcmVnZXhwIChjb25zdCBjaGFyICpyZWdleHApDQp7DQogIHdoaXRlc3BhY2VfcmVnZXhw ID0gKHJlX2NoYXIgKikgcmVnZXhwOw0KfQ0KDQoNCg0KDQoNCg0KDQpzdGF0aWMgY29uc3QgY2hh ciAqcmVfZXJyb3JfbXNnaWRbXSA9DQogIHsNCiAgICAiU3VjY2VzcyIsDQogICAgIk5vIG1hdGNo IiwNCiAgICAiSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24iLA0KICAgICJJbnZhbGlkIGNvbGxh dGlvbiBjaGFyYWN0ZXIiLA0KICAgICJJbnZhbGlkIGNoYXJhY3RlciBjbGFzcyBuYW1lIiwNCiAg ICAiVHJhaWxpbmcgYmFja3NsYXNoIiwNCiAgICAiSW52YWxpZCBiYWNrIHJlZmVyZW5jZSIsDQog ICAgIlVubWF0Y2hlZCBbIG9yIFteIiwNCiAgICAiVW5tYXRjaGVkICggb3IgXFwoIiwNCiAgICAi VW5tYXRjaGVkIFxceyIsDQogICAgIkludmFsaWQgY29udGVudCBvZiBcXHtcXH0iLA0KICAgICJJ bnZhbGlkIHJhbmdlIGVuZCIsDQogICAgIk1lbW9yeSBleGhhdXN0ZWQiLA0KICAgICJJbnZhbGlk IHByZWNlZGluZyByZWd1bGFyIGV4cHJlc3Npb24iLA0KICAgICJQcmVtYXR1cmUgZW5kIG9mIHJl Z3VsYXIgZXhwcmVzc2lvbiIsDQogICAgIlJlZ3VsYXIgZXhwcmVzc2lvbiB0b28gYmlnIiwNCiAg ICAiVW5tYXRjaGVkICkgb3IgXFwpIiwNCiAgICAiUmFuZ2Ugc3RyaWRpbmcgb3ZlciBjaGFyc2V0 cyINCiAgfTsNCiMgMTMxNyAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3Jj L2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIE1B VENIX01BWV9BTExPQ0FURSANCiMgMTMzOCAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVs ZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQoj ZGVmaW5lIElOSVRfRkFJTFVSRV9BTExPQyAyMA0KIyAxMzUxICIvaG9tZS9qYW1lcy9yYWlkL29w dC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMv cmVnZXguYyINCnNpemVfdCByZV9tYXhfZmFpbHVyZXMgPSA0MDAwMDsNCg0KDQoNCg0KdW5pb24g ZmFpbF9zdGFja19lbHQNCnsNCiAgcmVfY2hhciAqcG9pbnRlcjsNCg0KICBsb25nIGludGVnZXI7 DQp9Ow0KDQp0eXBlZGVmIHVuaW9uIGZhaWxfc3RhY2tfZWx0IGZhaWxfc3RhY2tfZWx0X3Q7DQoN CnR5cGVkZWYgc3RydWN0DQp7DQogIGZhaWxfc3RhY2tfZWx0X3QgKnN0YWNrOw0KICBzaXplX3Qg c2l6ZTsNCiAgc2l6ZV90IGF2YWlsOw0KICBzaXplX3QgZnJhbWU7DQp9IGZhaWxfc3RhY2tfdHlw ZTsNCg0KI2RlZmluZSBGQUlMX1NUQUNLX0VNUFRZKCkgKGZhaWxfc3RhY2suZnJhbWUgPT0gMCkN Cg0KDQoNCg0KDQoNCiNkZWZpbmUgSU5JVF9GQUlMX1NUQUNLKCkgZG8geyBmYWlsX3N0YWNrLnN0 YWNrID0gUkVHRVhfQUxMT0NBVEVfU1RBQ0sgKElOSVRfRkFJTFVSRV9BTExPQyAqIFRZUElDQUxf RkFJTFVSRV9TSVpFICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSk7IGlmIChmYWlsX3N0YWNr LnN0YWNrID09IE5VTEwpIHJldHVybiAtMjsgZmFpbF9zdGFjay5zaXplID0gSU5JVF9GQUlMVVJF X0FMTE9DOyBmYWlsX3N0YWNrLmF2YWlsID0gMDsgZmFpbF9zdGFjay5mcmFtZSA9IDA7IH0gd2hp bGUgKDApDQojIDE0MTggIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9l bWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBGQUlM X1NUQUNLX0dST1dUSF9GQUNUT1IgNA0KDQojZGVmaW5lIEdST1dfRkFJTF9TVEFDSyhmYWlsX3N0 YWNrKSAoKChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSA+PSBy ZV9tYXhfZmFpbHVyZXMgKiBUWVBJQ0FMX0ZBSUxVUkVfU0laRSkgPyAwIDogKChmYWlsX3N0YWNr KS5zdGFjayA9IFJFR0VYX1JFQUxMT0NBVEVfU1RBQ0sgKChmYWlsX3N0YWNrKS5zdGFjaywgKGZh aWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpLCBNSU4gKHJlX21heF9m YWlsdXJlcyAqIFRZUElDQUxfRkFJTFVSRV9TSVpFLCAoKGZhaWxfc3RhY2spLnNpemUgKiBzaXpl b2YgKGZhaWxfc3RhY2tfZWx0X3QpICogRkFJTF9TVEFDS19HUk9XVEhfRkFDVE9SKSkpLCAoZmFp bF9zdGFjaykuc3RhY2sgPT0gTlVMTCA/IDAgOiAoKGZhaWxfc3RhY2spLnNpemUgPSAoTUlOIChy ZV9tYXhfZmFpbHVyZXMgKiBUWVBJQ0FMX0ZBSUxVUkVfU0laRSwgKChmYWlsX3N0YWNrKS5zaXpl ICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIEZBSUxfU1RBQ0tfR1JPV1RIX0ZBQ1RPUikp IC8gc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSksIDEpKSkNCiMgMTQ0NCAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIFBVU0hfRkFJTFVSRV9QT0lOVEVSKGl0ZW0pIGZhaWxf c3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5wb2ludGVyID0gKGl0ZW0pDQoNCg0KDQoN Cg0KI2RlZmluZSBQVVNIX0ZBSUxVUkVfSU5UKGl0ZW0pIGZhaWxfc3RhY2suc3RhY2tbZmFpbF9z dGFjay5hdmFpbCsrXS5pbnRlZ2VyID0gKGl0ZW0pDQoNCg0KDQoNCiNkZWZpbmUgUE9QX0ZBSUxV UkVfUE9JTlRFUigpIGZhaWxfc3RhY2suc3RhY2tbLS1mYWlsX3N0YWNrLmF2YWlsXS5wb2ludGVy DQojZGVmaW5lIFBPUF9GQUlMVVJFX0lOVCgpIGZhaWxfc3RhY2suc3RhY2tbLS1mYWlsX3N0YWNr LmF2YWlsXS5pbnRlZ2VyDQoNCg0KI2RlZmluZSBOVU1fTk9OUkVHX0lURU1TIDMNCg0KDQojZGVm aW5lIEZBSUxVUkVfUEFUKGgpIGZhaWxfc3RhY2suc3RhY2tbKGgpIC0gMV0ucG9pbnRlcg0KI2Rl ZmluZSBGQUlMVVJFX1NUUihoKSAoZmFpbF9zdGFjay5zdGFja1soaCkgLSAyXS5wb2ludGVyKQ0K I2RlZmluZSBORVhUX0ZBSUxVUkVfSEFORExFKGgpIGZhaWxfc3RhY2suc3RhY2tbKGgpIC0gM10u aW50ZWdlcg0KI2RlZmluZSBUT1BfRkFJTFVSRV9IQU5ETEUoKSBmYWlsX3N0YWNrLmZyYW1lDQoN Cg0KI2RlZmluZSBFTlNVUkVfRkFJTF9TVEFDSyhzcGFjZSkgd2hpbGUgKFJFTUFJTklOR19BVkFJ TF9TTE9UUyA8PSBzcGFjZSkgeyBpZiAoIUdST1dfRkFJTF9TVEFDSyAoZmFpbF9zdGFjaykpIHJl dHVybiAtMjsgREVCVUdfUFJJTlQyICgiXG4gIERvdWJsZWQgc3RhY2s7IHNpemUgbm93OiAlZFxu IiwgKGZhaWxfc3RhY2spLnNpemUpOyBERUJVR19QUklOVDIgKCIJIHNsb3RzIGF2YWlsYWJsZTog JWRcbiIsIFJFTUFJTklOR19BVkFJTF9TTE9UUyk7fQ0KIyAxNDc3ICIvaG9tZS9qYW1lcy9yYWlk L29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9z cmMvcmVnZXguYyINCiNkZWZpbmUgUFVTSF9GQUlMVVJFX1JFRyhudW0pIGRvIHsgY2hhciAqZGVz dGluYXRpb247IEVOU1VSRV9GQUlMX1NUQUNLKDMpOyBERUJVR19QUklOVDQgKCIgICAgUHVzaCBy ZWcgJWQgKHNwYW5uaW5nICVwIC0+ICVwKVxuIiwgbnVtLCByZWdzdGFydFtudW1dLCByZWdlbmRb bnVtXSk7IFBVU0hfRkFJTFVSRV9QT0lOVEVSIChyZWdzdGFydFtudW1dKTsgUFVTSF9GQUlMVVJF X1BPSU5URVIgKHJlZ2VuZFtudW1dKTsgUFVTSF9GQUlMVVJFX0lOVCAobnVtKTsgfSB3aGlsZSAo MCkNCiMgMTQ5MCAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIFBVU0hfTlVN QkVSKHB0cix2YWwpIGRvIHsgY2hhciAqZGVzdGluYXRpb247IGludCBjOyBFTlNVUkVfRkFJTF9T VEFDSygzKTsgRVhUUkFDVF9OVU1CRVIgKGMsIHB0cik7IERFQlVHX1BSSU5UNCAoIiAgICBQdXNo IG51bWJlciAlcCA9ICVkIC0+ICVkXG4iLCBwdHIsIGMsIHZhbCk7IFBVU0hfRkFJTFVSRV9JTlQg KGMpOyBQVVNIX0ZBSUxVUkVfUE9JTlRFUiAocHRyKTsgUFVTSF9GQUlMVVJFX0lOVCAoLTEpOyBT VE9SRV9OVU1CRVIgKHB0ciwgdmFsKTsgfSB3aGlsZSAoMCkNCiMgMTUwNCAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQojZGVmaW5lIFBPUF9GQUlMVVJFX1JFR19PUl9DT1VOVCgpIGRvIHsg bG9uZyBwZnJlZyA9IFBPUF9GQUlMVVJFX0lOVCAoKTsgaWYgKHBmcmVnID09IC0xKSB7IHVuc2ln bmVkIGNoYXIgKnB0ciA9ICh1bnNpZ25lZCBjaGFyKikgUE9QX0ZBSUxVUkVfUE9JTlRFUiAoKTsg cGZyZWcgPSBQT1BfRkFJTFVSRV9JTlQgKCk7IFNUT1JFX05VTUJFUiAocHRyLCBwZnJlZyk7IERF QlVHX1BSSU5UMyAoIiAgICAgUG9wIGNvdW50ZXIgJXAgPSAlZFxuIiwgcHRyLCBwZnJlZyk7IH0g ZWxzZSB7IHJlZ2VuZFtwZnJlZ10gPSBQT1BfRkFJTFVSRV9QT0lOVEVSICgpOyByZWdzdGFydFtw ZnJlZ10gPSBQT1BfRkFJTFVSRV9QT0lOVEVSICgpOyBERUJVR19QUklOVDQgKCIgICAgIFBvcCBy ZWcgJWQgKHNwYW5uaW5nICVwIC0+ICVwKVxuIiwgcGZyZWcsIHJlZ3N0YXJ0W3BmcmVnXSwgcmVn ZW5kW3BmcmVnXSk7IH0gfSB3aGlsZSAoMCkNCiMgMTUyNiAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmMiDQojZGVmaW5lIENIRUNLX0lORklOSVRFX0xPT1AocGF0X2N1cixzdHJpbmdfcGxhY2Up IGRvIHsgc3NpemVfdCBmYWlsdXJlID0gVE9QX0ZBSUxVUkVfSEFORExFICgpOyB3aGlsZSAoZmFp bHVyZSA+IDAgJiYgKEZBSUxVUkVfU1RSIChmYWlsdXJlKSA9PSBzdHJpbmdfcGxhY2UgfHwgRkFJ TFVSRV9TVFIgKGZhaWx1cmUpID09IE5VTEwpKSB7IGFzc2VydCAoRkFJTFVSRV9QQVQgKGZhaWx1 cmUpID49IGJ1ZnAtPmJ1ZmZlciAmJiBGQUlMVVJFX1BBVCAoZmFpbHVyZSkgPD0gYnVmcC0+YnVm ZmVyICsgYnVmcC0+dXNlZCk7IGlmIChGQUlMVVJFX1BBVCAoZmFpbHVyZSkgPT0gcGF0X2N1cikg eyBjeWNsZSA9IDE7IGJyZWFrOyB9IERFQlVHX1BSSU5UMiAoIiAgT3RoZXIgcGF0dGVybjogJXBc biIsIEZBSUxVUkVfUEFUIChmYWlsdXJlKSk7IGZhaWx1cmUgPSBORVhUX0ZBSUxVUkVfSEFORExF KGZhaWx1cmUpOyB9IERFQlVHX1BSSU5UMiAoIiAgT3RoZXIgc3RyaW5nOiAlcFxuIiwgRkFJTFVS RV9TVFIgKGZhaWx1cmUpKTsgfSB3aGlsZSAoMCkNCiMgMTU1NiAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQojZGVmaW5lIFBVU0hfRkFJTFVSRV9QT0lOVChwYXR0ZXJuLHN0cmluZ19wbGFj ZSkgZG8geyBjaGFyICpkZXN0aW5hdGlvbjsgREVCVUdfU1RBVEVNRU5UIChuZmFpbHVyZV9wb2lu dHNfcHVzaGVkKyspOyBERUJVR19QUklOVDEgKCJcblBVU0hfRkFJTFVSRV9QT0lOVDpcbiIpOyBE RUJVR19QUklOVDIgKCIgIEJlZm9yZSBwdXNoLCBuZXh0IGF2YWlsOiAlZFxuIiwgKGZhaWxfc3Rh Y2spLmF2YWlsKTsgREVCVUdfUFJJTlQyICgiCQkJc2l6ZTogJWRcbiIsIChmYWlsX3N0YWNrKS5z aXplKTsgRU5TVVJFX0ZBSUxfU1RBQ0sgKE5VTV9OT05SRUdfSVRFTVMpOyBERUJVR19QUklOVDEg KCJcbiIpOyBERUJVR19QUklOVDIgKCIgIFB1c2ggZnJhbWUgaW5kZXg6ICVkXG4iLCBmYWlsX3N0 YWNrLmZyYW1lKTsgUFVTSF9GQUlMVVJFX0lOVCAoZmFpbF9zdGFjay5mcmFtZSk7IERFQlVHX1BS SU5UMiAoIiAgUHVzaCBzdHJpbmcgJXA6IGAiLCBzdHJpbmdfcGxhY2UpOyBERUJVR19QUklOVF9E T1VCTEVfU1RSSU5HIChzdHJpbmdfcGxhY2UsIHN0cmluZzEsIHNpemUxLCBzdHJpbmcyLCBzaXpl Mik7IERFQlVHX1BSSU5UMSAoIidcbiIpOyBQVVNIX0ZBSUxVUkVfUE9JTlRFUiAoc3RyaW5nX3Bs YWNlKTsgREVCVUdfUFJJTlQyICgiICBQdXNoIHBhdHRlcm4gJXA6ICIsIHBhdHRlcm4pOyBERUJV R19QUklOVF9DT01QSUxFRF9QQVRURVJOIChidWZwLCBwYXR0ZXJuLCBwZW5kKTsgUFVTSF9GQUlM VVJFX1BPSU5URVIgKHBhdHRlcm4pOyBmYWlsX3N0YWNrLmZyYW1lID0gZmFpbF9zdGFjay5hdmFp bDsgfSB3aGlsZSAoMCkNCiMgMTU5MSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFz ZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQojZGVm aW5lIFRZUElDQUxfRkFJTFVSRV9TSVpFIDIwDQoNCg0KI2RlZmluZSBSRU1BSU5JTkdfQVZBSUxf U0xPVFMgKChmYWlsX3N0YWNrKS5zaXplIC0gKGZhaWxfc3RhY2spLmF2YWlsKQ0KIyAxNjA3ICIv aG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43 LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgUE9QX0ZBSUxVUkVfUE9JTlQoc3Ry LHBhdCkgZG8geyBhc3NlcnQgKCFGQUlMX1NUQUNLX0VNUFRZICgpKTsgREVCVUdfUFJJTlQxICgi UE9QX0ZBSUxVUkVfUE9JTlQ6XG4iKTsgREVCVUdfUFJJTlQyICgiICBCZWZvcmUgcG9wLCBuZXh0 IGF2YWlsOiAlZFxuIiwgZmFpbF9zdGFjay5hdmFpbCk7IERFQlVHX1BSSU5UMiAoIgkJICAgICBz aXplOiAlZFxuIiwgZmFpbF9zdGFjay5zaXplKTsgd2hpbGUgKGZhaWxfc3RhY2suZnJhbWUgPCBm YWlsX3N0YWNrLmF2YWlsKSBQT1BfRkFJTFVSRV9SRUdfT1JfQ09VTlQgKCk7IHBhdCA9IFBPUF9G QUlMVVJFX1BPSU5URVIgKCk7IERFQlVHX1BSSU5UMiAoIiAgUG9wcGluZyBwYXR0ZXJuICVwOiAi LCBwYXQpOyBERUJVR19QUklOVF9DT01QSUxFRF9QQVRURVJOIChidWZwLCBwYXQsIHBlbmQpOyBz dHIgPSBQT1BfRkFJTFVSRV9QT0lOVEVSICgpOyBERUJVR19QUklOVDIgKCIgIFBvcHBpbmcgc3Ry aW5nICVwOiBgIiwgc3RyKTsgREVCVUdfUFJJTlRfRE9VQkxFX1NUUklORyAoc3RyLCBzdHJpbmcx LCBzaXplMSwgc3RyaW5nMiwgc2l6ZTIpOyBERUJVR19QUklOVDEgKCInXG4iKTsgZmFpbF9zdGFj ay5mcmFtZSA9IFBPUF9GQUlMVVJFX0lOVCAoKTsgREVCVUdfUFJJTlQyICgiICBQb3BwaW5nICBm cmFtZSBpbmRleDogJWRcbiIsIGZhaWxfc3RhY2suZnJhbWUpOyBhc3NlcnQgKGZhaWxfc3RhY2su YXZhaWwgPj0gMCk7IGFzc2VydCAoZmFpbF9zdGFjay5mcmFtZSA8PSBmYWlsX3N0YWNrLmF2YWls KTsgREVCVUdfU1RBVEVNRU5UIChuZmFpbHVyZV9wb2ludHNfcG9wcGVkKyspOyB9IHdoaWxlICgw KQ0KIyAxNjQ0ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3Mt MjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgUkVHX1VOU0VU KGUpICgoZSkgPT0gTlVMTCkNCg0KDQoNCnN0YXRpYyByZWdfZXJyY29kZV90IHJlZ2V4X2NvbXBp bGUgKHJlX2NoYXIgKnBhdHRlcm4sIHNpemVfdCBzaXplLA0KICAgICAgICByZWdfc3ludGF4X3Qg c3ludGF4LA0KICAgICAgICBzdHJ1Y3QgcmVfcGF0dGVybl9idWZmZXIgKmJ1ZnApOw0Kc3RhdGlj IHZvaWQgc3RvcmVfb3AxIChyZV9vcGNvZGVfdCBvcCwgdW5zaWduZWQgY2hhciAqbG9jLCBpbnQg YXJnKTsNCnN0YXRpYyB2b2lkIHN0b3JlX29wMiAocmVfb3Bjb2RlX3Qgb3AsIHVuc2lnbmVkIGNo YXIgKmxvYywgaW50IGFyZzEsIGludCBhcmcyKTsNCnN0YXRpYyB2b2lkIGluc2VydF9vcDEgKHJl X29wY29kZV90IG9wLCB1bnNpZ25lZCBjaGFyICpsb2MsDQogICBpbnQgYXJnLCB1bnNpZ25lZCBj aGFyICplbmQpOw0Kc3RhdGljIHZvaWQgaW5zZXJ0X29wMiAocmVfb3Bjb2RlX3Qgb3AsIHVuc2ln bmVkIGNoYXIgKmxvYywNCiAgIGludCBhcmcxLCBpbnQgYXJnMiwgdW5zaWduZWQgY2hhciAqZW5k KTsNCnN0YXRpYyBib29sZWFuIGF0X2JlZ2xpbmVfbG9jX3AgKHJlX2NoYXIgKnBhdHRlcm4sIHJl X2NoYXIgKnAsDQogICAgIHJlZ19zeW50YXhfdCBzeW50YXgpOw0Kc3RhdGljIGJvb2xlYW4gYXRf ZW5kbGluZV9sb2NfcCAocmVfY2hhciAqcCwgcmVfY2hhciAqcGVuZCwNCiAgICAgcmVnX3N5bnRh eF90IHN5bnRheCk7DQpzdGF0aWMgcmVfY2hhciAqc2tpcF9vbmVfY2hhciAocmVfY2hhciAqcCk7 DQpzdGF0aWMgaW50IGFuYWx5c2VfZmlyc3QgKHJlX2NoYXIgKnAsIHJlX2NoYXIgKnBlbmQsDQog ICAgIGNoYXIgKmZhc3RtYXAsIGNvbnN0IGludCBtdWx0aWJ5dGUpOw0KDQoNCg0KI2RlZmluZSBQ QVRGRVRDSChjKSBkbyB7IGludCBsZW47IGlmIChwID09IHBlbmQpIHJldHVybiBSRUdfRUVORDsg YyA9IFJFX1NUUklOR19DSEFSX0FORF9MRU5HVEggKHAsIGxlbiwgbXVsdGlieXRlKTsgcCArPSBs ZW47IH0gd2hpbGUgKDApDQojIDE2ODEgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVh c2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2Rl ZmluZSBUUkFOU0xBVEUoZCkgKFJFX1RSQU5TTEFURV9QICh0cmFuc2xhdGUpID8gUkVfVFJBTlNM QVRFICh0cmFuc2xhdGUsIChkKSkgOiAoZCkpDQoNCg0KDQoNCg0KDQoNCiNkZWZpbmUgSU5JVF9C VUZfU0laRSAzMg0KDQoNCiNkZWZpbmUgR0VUX0JVRkZFUl9TUEFDRShuKSB3aGlsZSAoKHNpemVf dCkgKGIgLSBidWZwLT5idWZmZXIgKyAobikpID4gYnVmcC0+YWxsb2NhdGVkKSBFWFRFTkRfQlVG RkVSICgpDQoNCg0KDQoNCiNkZWZpbmUgQlVGX1BVU0goYykgZG8geyBHRVRfQlVGRkVSX1NQQUNF ICgxKTsgKmIrKyA9ICh1bnNpZ25lZCBjaGFyKSAoYyk7IH0gd2hpbGUgKDApDQoNCg0KDQoNCg0K DQoNCiNkZWZpbmUgQlVGX1BVU0hfMihjMSxjMikgZG8geyBHRVRfQlVGRkVSX1NQQUNFICgyKTsg KmIrKyA9ICh1bnNpZ25lZCBjaGFyKSAoYzEpOyAqYisrID0gKHVuc2lnbmVkIGNoYXIpIChjMik7 IH0gd2hpbGUgKDApDQojIDE3MTUgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2Vz L3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmlu ZSBTVE9SRV9KVU1QKG9wLGxvYyx0bykgc3RvcmVfb3AxIChvcCwgbG9jLCAodG8pIC0gKGxvYykg LSAzKQ0KDQoNCg0KI2RlZmluZSBTVE9SRV9KVU1QMihvcCxsb2MsdG8sYXJnKSBzdG9yZV9vcDIg KG9wLCBsb2MsICh0bykgLSAobG9jKSAtIDMsIGFyZykNCg0KDQoNCiNkZWZpbmUgSU5TRVJUX0pV TVAob3AsbG9jLHRvKSBpbnNlcnRfb3AxIChvcCwgbG9jLCAodG8pIC0gKGxvYykgLSAzLCBiKQ0K DQoNCg0KI2RlZmluZSBJTlNFUlRfSlVNUDIob3AsbG9jLHRvLGFyZykgaW5zZXJ0X29wMiAob3As IGxvYywgKHRvKSAtIChsb2MpIC0gMywgYXJnLCBiKQ0KDQoNCg0KDQoNCg0KI2RlZmluZSBNQVhf QlVGX1NJWkUgKDFMIDw8IDE1KQ0KIyAxNzU5ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiNkZWZpbmUgTU9WRV9CVUZGRVJfUE9JTlRFUihQKSAoKFApID0gbmV3X2J1ZmZlciArICgoUCkg LSBvbGRfYnVmZmVyKSkNCiNkZWZpbmUgRUxTRV9FWFRFTkRfQlVGRkVSX0hJR0hfQk9VTkQgDQoN CiNkZWZpbmUgRVhURU5EX0JVRkZFUigpIGRvIHsgdW5zaWduZWQgY2hhciAqb2xkX2J1ZmZlciA9 IGJ1ZnAtPmJ1ZmZlcjsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA9PSBNQVhfQlVGX1NJWkUpIHJldHVy biBSRUdfRVNJWkU7IGJ1ZnAtPmFsbG9jYXRlZCA8PD0gMTsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA+ IE1BWF9CVUZfU0laRSkgYnVmcC0+YWxsb2NhdGVkID0gTUFYX0JVRl9TSVpFOyBSRVRBTExPQyAo YnVmcC0+YnVmZmVyLCBidWZwLT5hbGxvY2F0ZWQsIHVuc2lnbmVkIGNoYXIpOyBpZiAoYnVmcC0+ YnVmZmVyID09IE5VTEwpIHJldHVybiBSRUdfRVNQQUNFOyBpZiAob2xkX2J1ZmZlciAhPSBidWZw LT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgTU9W RV9CVUZGRVJfUE9JTlRFUiAoYik7IE1PVkVfQlVGRkVSX1BPSU5URVIgKGJlZ2FsdCk7IGlmIChm aXh1cF9hbHRfanVtcCkgTU9WRV9CVUZGRVJfUE9JTlRFUiAoZml4dXBfYWx0X2p1bXApOyBpZiAo bGFzdHN0YXJ0KSBNT1ZFX0JVRkZFUl9QT0lOVEVSIChsYXN0c3RhcnQpOyBpZiAocGVuZGluZ19l eGFjdCkgTU9WRV9CVUZGRVJfUE9JTlRFUiAocGVuZGluZ19leGFjdCk7IH0gRUxTRV9FWFRFTkRf QlVGRkVSX0hJR0hfQk9VTkQgfSB3aGlsZSAoMCkNCiMgMTc5MyAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQojZGVmaW5lIE1BWF9SRUdOVU0gMjU1DQoNCg0KDQp0eXBlZGVmIGludCByZWdu dW1fdDsNCg0KDQoNCg0KDQoNCg0KdHlwZWRlZiBsb25nIHBhdHRlcm5fb2Zmc2V0X3Q7DQoNCnR5 cGVkZWYgc3RydWN0DQp7DQogIHBhdHRlcm5fb2Zmc2V0X3QgYmVnYWx0X29mZnNldDsNCiAgcGF0 dGVybl9vZmZzZXRfdCBmaXh1cF9hbHRfanVtcDsNCiAgcGF0dGVybl9vZmZzZXRfdCBsYXN0c3Rh cnRfb2Zmc2V0Ow0KICByZWdudW1fdCByZWdudW07DQp9IGNvbXBpbGVfc3RhY2tfZWx0X3Q7DQoN Cg0KdHlwZWRlZiBzdHJ1Y3QNCnsNCiAgY29tcGlsZV9zdGFja19lbHRfdCAqc3RhY2s7DQogIHNp emVfdCBzaXplOw0KICBzaXplX3QgYXZhaWw7DQp9IGNvbXBpbGVfc3RhY2tfdHlwZTsNCg0KDQoj ZGVmaW5lIElOSVRfQ09NUElMRV9TVEFDS19TSVpFIDMyDQoNCiNkZWZpbmUgQ09NUElMRV9TVEFD S19FTVBUWSAoY29tcGlsZV9zdGFjay5hdmFpbCA9PSAwKQ0KI2RlZmluZSBDT01QSUxFX1NUQUNL X0ZVTEwgKGNvbXBpbGVfc3RhY2suYXZhaWwgPT0gY29tcGlsZV9zdGFjay5zaXplKQ0KDQoNCiNk ZWZpbmUgQ09NUElMRV9TVEFDS19UT1AgKGNvbXBpbGVfc3RhY2suc3RhY2tbY29tcGlsZV9zdGFj ay5hdmFpbF0pDQojIDE4NDAgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3Ny Yy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBJ TU1FRElBVEVfUVVJVF9DSEVDSyAoKHZvaWQpMCkNCg0KDQoNCnN0cnVjdCByYW5nZV90YWJsZV93 b3JrX2FyZWENCnsNCiAgaW50ICp0YWJsZTsNCiAgaW50IGFsbG9jYXRlZDsNCiAgaW50IHVzZWQ7 DQogIGludCBiaXRzOw0KfTsNCg0KDQoNCg0KDQoNCiNkZWZpbmUgRVhURU5EX1JBTkdFX1RBQkxF KHdvcmtfYXJlYSxuKSBkbyB7IGlmICgoKHdvcmtfYXJlYSkudXNlZCArIChuKSkgKiBzaXplb2Yg KGludCkgPiAod29ya19hcmVhKS5hbGxvY2F0ZWQpIHsgZXh0ZW5kX3JhbmdlX3RhYmxlX3dvcmtf YXJlYSAoJndvcmtfYXJlYSk7IGlmICgod29ya19hcmVhKS50YWJsZSA9PSAwKSByZXR1cm4gKFJF R19FU1BBQ0UpOyB9IH0gd2hpbGUgKDApDQojIDE4NjcgIi9ob21lL2phbWVzL3JhaWQvb3B0L2Vt YWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdl eC5jIg0KI2RlZmluZSBTRVRfUkFOR0VfVEFCTEVfV09SS19BUkVBX0JJVCh3b3JrX2FyZWEsYml0 KSAod29ya19hcmVhKS5iaXRzIHw9IChiaXQpDQoNCg0KDQoNCiNkZWZpbmUgQklUX1dPUkQgMHgx DQojZGVmaW5lIEJJVF9MT1dFUiAweDINCiNkZWZpbmUgQklUX1BVTkNUIDB4NA0KI2RlZmluZSBC SVRfU1BBQ0UgMHg4DQojZGVmaW5lIEJJVF9VUFBFUiAweDEwDQojZGVmaW5lIEJJVF9NVUxUSUJZ VEUgMHgyMA0KDQoNCiNkZWZpbmUgU0VUX1JBTkdFX1RBQkxFX1dPUktfQVJFQSh3b3JrX2FyZWEs cmFuZ2Vfc3RhcnQscmFuZ2VfZW5kKSBkbyB7IEVYVEVORF9SQU5HRV9UQUJMRSAoKHdvcmtfYXJl YSksIDIpOyAod29ya19hcmVhKS50YWJsZVsod29ya19hcmVhKS51c2VkKytdID0gKHJhbmdlX3N0 YXJ0KTsgKHdvcmtfYXJlYSkudGFibGVbKHdvcmtfYXJlYSkudXNlZCsrXSA9IChyYW5nZV9lbmQp OyB9IHdoaWxlICgwKQ0KDQoNCg0KDQoNCg0KDQojZGVmaW5lIEZSRUVfUkFOR0VfVEFCTEVfV09S S19BUkVBKHdvcmtfYXJlYSkgZG8geyBpZiAoKHdvcmtfYXJlYSkudGFibGUpIGZyZWUgKCh3b3Jr X2FyZWEpLnRhYmxlKTsgfSB3aGlsZSAoMCkNCg0KDQoNCg0KDQojZGVmaW5lIENMRUFSX1JBTkdF X1RBQkxFX1dPUktfVVNFRCh3b3JrX2FyZWEpICgod29ya19hcmVhKS51c2VkID0gMCwgKHdvcmtf YXJlYSkuYml0cyA9IDApDQojZGVmaW5lIFJBTkdFX1RBQkxFX1dPUktfVVNFRCh3b3JrX2FyZWEp ICgod29ya19hcmVhKS51c2VkKQ0KI2RlZmluZSBSQU5HRV9UQUJMRV9XT1JLX0JJVFMod29ya19h cmVhKSAoKHdvcmtfYXJlYSkuYml0cykNCiNkZWZpbmUgUkFOR0VfVEFCTEVfV09SS19FTFQod29y a19hcmVhLGkpICgod29ya19hcmVhKS50YWJsZVtpXSkNCg0KDQoNCiNkZWZpbmUgU0VUX0xJU1Rf QklUKGMpIChiWygoYykpIC8gQllURVdJRFRIXSB8PSAxIDw8ICgoYykgJSBCWVRFV0lEVEgpKQ0K IyAyMDEyICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQu My5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgR0VUX1VOU0lHTkVE X05VTUJFUihudW0pIGRvIHsgaWYgKHAgPT0gcGVuZCkgRlJFRV9TVEFDS19SRVRVUk4gKFJFR19F QlJBQ0UpOyBlbHNlIHsgUEFURkVUQ0ggKGMpOyB3aGlsZSAoJzAnIDw9IGMgJiYgYyA8PSAnOScp IHsgaW50IHByZXY7IGlmIChudW0gPCAwKSBudW0gPSAwOyBwcmV2ID0gbnVtOyBudW0gPSBudW0g KiAxMCArIGMgLSAnMCc7IGlmIChudW0gLyAxMCAhPSBwcmV2KSBGUkVFX1NUQUNLX1JFVFVSTiAo UkVHX0JBREJSKTsgaWYgKHAgPT0gcGVuZCkgRlJFRV9TVEFDS19SRVRVUk4gKFJFR19FQlJBQ0Up OyBQQVRGRVRDSCAoYyk7IH0gfSB9IHdoaWxlICgwKQ0KIyAyMDM4ICIvaG9tZS9qYW1lcy9yYWlk L29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9z cmMvcmVnZXguYyINCnJlX3djdHlwZV90DQpyZV93Y3R5cGUgKGNvbnN0IHJlX2NoYXIgKnN0cikN CnsNCiAgY29uc3QgY2hhciAqc3RyaW5nID0gKGNvbnN0IGNoYXIgKikgc3RyOw0KICBpZiAoKChf X2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29u c3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoImFsbnVtIikgJiYgKF9f czFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MyX2xlbiA9IHN0cmxlbiAoImFsbnVtIiksICgh KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv aWQgKikoc3RyaW5nKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25z dCB2b2lkICopKCgiYWxudW0iKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYWxudW0i KSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJh bG51bSIpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25z dCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykg PT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MxX2xlbiA8IDQpID8gKF9f YnVpbHRpbl9jb25zdGFudF9wICgiYWxudW0iKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo ImFsbnVtIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImFsbnVtIikgPT0gMSkgPyBf X2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJhbG51bSIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19j b25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j b25zdCBjaGFyICopICgiYWxudW0iKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25z dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cmluZykpWzBdIC0gX19zMlsw XSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9f Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9f czJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0g LSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9 ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVsz XSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3Ag KCJhbG51bSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYWxudW0iKSArIDEpIC0gKHNp emVfdCkoY29uc3Qgdm9pZCAqKSgiYWxudW0iKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4g KCJhbG51bSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcp ICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25z dCB2b2lkICopKHN0cmluZykgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJhbG51 bSIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9f Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3Rl ciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f Y29uc3QgY2hhciAqKSAoImFsbnVtIikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0 ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop IChfX2NvbnN0IGNoYXIgKikgKCJhbG51bSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19y ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo YXIgKikgKF9fY29uc3QgY2hhciAqKSAoImFsbnVtIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAm JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVk IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImFsbnVtIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9 KSkpIDogX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAiYWxudW0iKSkpKTsgfSkgPT0gMCkpKSBy ZXR1cm4gUkVDQ19BTE5VTTsNCiAgZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBf X3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1 aWx0aW5fY29uc3RhbnRfcCAoImFscGhhIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcp LCBfX3MyX2xlbiA9IHN0cmxlbiAoImFscGhhIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKiko KHN0cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSB8fCBf X3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYWxwaGEiKSArIDEp IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYWxwaGEiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0 KSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJhbHBoYSIpIDogKF9fYnVpbHRpbl9jb25z dGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkg LSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgJiYgKF9fczFfbGVuID0gc3Ry bGVuIChzdHJpbmcpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiYWxw aGEiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImFscGhhIikgKyAxKSAtIChzaXplX3Qp KGNvbnN0IHZvaWQgKikoImFscGhhIikgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcs ICJhbHBoYSIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3My ID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYWxwaGEiKTsg cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv bnN0IGNoYXIgKikgKHN0cmluZykpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYg X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo X19jb25zdCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAx ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg KikgKF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVu ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh ciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1 bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJhbHBoYSIpICYmICgoc2l6ZV90KShj b25zdCB2b2lkICopKCgiYWxwaGEiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYWxw aGEiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJhbHBoYSIpLCBfX3MyX2xlbiA8IDQp ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lk ICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkg PyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJhbHBoYSIpIDogKF9fZXh0ZW5zaW9uX18gKHsg X19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo X19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBd IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImFscGhhIikp WzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19z MVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhbHBo YSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9 IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo ImFscGhhIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3Vs dCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq KSAoImFscGhhIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogX19idWlsdGluX3N0cmNtcCAo c3RyaW5nLCAiYWxwaGEiKSkpKTsgfSkgPT0gMCkpKSByZXR1cm4gUkVDQ19BTFBIQTsNCiAgZWxz ZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1 aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoIndvcmQi KSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHN0cmluZyksIF9fczJfbGVuID0gc3RybGVuICgid29y ZCIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShj b25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNpemVf dCkoY29uc3Qgdm9pZCAqKSgoIndvcmQiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi d29yZCIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IF9fYnVpbHRpbl9zdHJjbXAgKHN0cmlu ZywgIndvcmQiKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiAoKHNpemVfdCko Y29uc3Qgdm9pZCAqKSgoc3RyaW5nKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShzdHJp bmcpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoc3RyaW5nKSwgX19zMV9sZW4gPCA0KSA/ IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoIndvcmQiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAq KSgoIndvcmQiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgid29yZCIpID09IDEpID8g X19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAid29yZCIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19j b25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j b25zdCBjaGFyICopICgid29yZCIpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0 IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMF0gLSBfX3MyWzBd KTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19j b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cmluZykpWzFdIC0gX19z MlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgo KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVsyXSAt IF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYmIF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0g KCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cmluZykpWzNd IC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAo IndvcmQiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIndvcmQiKSArIDEpIC0gKHNpemVf dCkoY29uc3Qgdm9pZCAqKSgid29yZCIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoIndv cmQiKSwgX19zMl9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiAo KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoc3RyaW5nKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p ZCAqKShzdHJpbmcpID09IDEpID8gX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAid29yZCIpIDog KF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3Qg dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQg X19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg Y2hhciAqKSAoIndvcmQiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkg eyBfX3Jlc3VsdCA9IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u c3QgY2hhciAqKSAoIndvcmQiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09 IDApIHsgX19yZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf X2NvbnN0IGNoYXIgKikgKCJ3b3JkIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3Vs dCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg KF9fY29uc3QgY2hhciAqKSAoIndvcmQiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBfX2J1 aWx0aW5fc3RyY21wIChzdHJpbmcsICJ3b3JkIikpKSk7IH0pID09IDApKSkgcmV0dXJuIFJFQ0Nf V09SRDsNCiAgZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19z Ml9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3Rh bnRfcCAoImFzY2lpIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MyX2xlbiA9 IHN0cmxlbiAoImFzY2lpIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmluZykgKyAx KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0 KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYXNjaWkiKSArIDEpIC0gKHNpemVfdCko Y29uc3Qgdm9pZCAqKSgiYXNjaWkiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBfX2J1aWx0 aW5fc3RyY21wIChzdHJpbmcsICJhc2NpaSIpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJp bmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShj b25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcp LCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiYXNjaWkiKSAmJiAoKHNp emVfdCkoY29uc3Qgdm9pZCAqKSgoImFzY2lpIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg KikoImFzY2lpIikgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJhc2NpaSIpIDog KF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3Qg dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYXNjaWkiKTsgcmVnaXN0ZXIgaW50 IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg KHN0cmluZykpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy ICopIChzdHJpbmcpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0 ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg Y2hhciAqKSAoc3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z dCBjaGFyICopIChzdHJpbmcpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAo X19idWlsdGluX2NvbnN0YW50X3AgKCJhc2NpaSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop KCgiYXNjaWkiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYXNjaWkiKSA9PSAxKSAm JiAoX19zMl9sZW4gPSBzdHJsZW4gKCJhc2NpaSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRp bl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcp ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgPyBfX2J1aWx0aW5f c3RyY21wIChzdHJpbmcsICJhc2NpaSIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNp Z25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy ICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0 IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImFzY2lpIikpWzBdOyBpZiAoX19z Ml9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19j b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJhc2NpaSIpKVsxXSk7IGlm IChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0g KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImFzY2lpIikpWzJd KTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNd IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImFzY2lpIikp WzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAiYXNj aWkiKSkpKTsgfSkgPT0gMCkpKSByZXR1cm4gUkVDQ19BU0NJSTsNCiAgZWxzZSBpZiAoKChfX2V4 dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3Rh bnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoIm5vbmFzY2lpIikgJiYgKF9f czFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MyX2xlbiA9IHN0cmxlbiAoIm5vbmFzY2lpIiks ICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0 IHZvaWQgKikoc3RyaW5nKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShj b25zdCB2b2lkICopKCgibm9uYXNjaWkiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi bm9uYXNjaWkiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBfX2J1aWx0aW5fc3RyY21wIChz dHJpbmcsICJub25hc2NpaSIpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgo c2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk ICopKHN0cmluZykgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MxX2xl biA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgibm9uYXNjaWkiKSAmJiAoKHNpemVfdCko Y29uc3Qgdm9pZCAqKSgoIm5vbmFzY2lpIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko Im5vbmFzY2lpIikgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJub25hc2NpaSIp IDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29u c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibm9uYXNjaWkiKTsgcmVnaXN0 ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo YXIgKikgKHN0cmluZykpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1 bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z dCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9f cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f Y29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAm JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo X19jb25zdCBjaGFyICopIChzdHJpbmcpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0p KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJub25hc2NpaSIpICYmICgoc2l6ZV90KShjb25z dCB2b2lkICopKCgibm9uYXNjaWkiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgibm9u YXNjaWkiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJub25hc2NpaSIpLCBfX3MyX2xl biA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25z dCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykg PT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJub25hc2NpaSIpIDogKF9fZXh0ZW5z aW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQg Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQg PSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo Im5vbmFzY2lpIikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y ZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo YXIgKikgKCJub25hc2NpaSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0g MCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f Y29uc3QgY2hhciAqKSAoIm5vbmFzY2lpIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jl c3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg KikgKF9fY29uc3QgY2hhciAqKSAoIm5vbmFzY2lpIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkp IDogX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAibm9uYXNjaWkiKSkpKTsgfSkgPT0gMCkpKSBy ZXR1cm4gUkVDQ19OT05BU0NJSTsNCiAgZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVf dCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBf X2J1aWx0aW5fY29uc3RhbnRfcCAoImdyYXBoIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJp bmcpLCBfX3MyX2xlbiA9IHN0cmxlbiAoImdyYXBoIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQg KikoKHN0cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSB8 fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiZ3JhcGgiKSAr IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZ3JhcGgiKSA9PSAxKSB8fCBfX3MyX2xlbiA+ PSA0KSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJncmFwaCIpIDogKF9fYnVpbHRpbl9j b25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsg MSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgJiYgKF9fczFfbGVuID0g c3RybGVuIChzdHJpbmcpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgi Z3JhcGgiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImdyYXBoIikgKyAxKSAtIChzaXpl X3QpKGNvbnN0IHZvaWQgKikoImdyYXBoIikgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJp bmcsICJncmFwaCIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpf X3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZ3JhcGgi KTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf X2NvbnN0IGNoYXIgKikgKHN0cmluZykpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAg JiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq KSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4g PiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNo YXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFf bGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQg Y2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVszXSAtIF9fczJbM10pOyB9IH0gX19y ZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJncmFwaCIpICYmICgoc2l6ZV90 KShjb25zdCB2b2lkICopKCgiZ3JhcGgiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi Z3JhcGgiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJncmFwaCIpLCBfX3MyX2xlbiA8 IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2 b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0g MSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJncmFwaCIpIDogKF9fZXh0ZW5zaW9uX18g KHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAq KSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3Mx WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImdyYXBo IikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo X19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJn cmFwaCIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3Vs dCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq KSAoImdyYXBoIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jl c3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh ciAqKSAoImdyYXBoIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogX19idWlsdGluX3N0cmNt cCAoc3RyaW5nLCAiZ3JhcGgiKSkpKTsgfSkgPT0gMCkpKSByZXR1cm4gUkVDQ19HUkFQSDsNCiAg ZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChf X2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoImxv d2VyIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MyX2xlbiA9IHN0cmxlbiAo Imxvd2VyIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmluZykgKyAxKSAtIChzaXpl X3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgo c2l6ZV90KShjb25zdCB2b2lkICopKCgibG93ZXIiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p ZCAqKSgibG93ZXIiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBfX2J1aWx0aW5fc3RyY21w IChzdHJpbmcsICJsb3dlciIpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgo c2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lk ICopKHN0cmluZykgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MxX2xl biA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgibG93ZXIiKSAmJiAoKHNpemVfdCkoY29u c3Qgdm9pZCAqKSgoImxvd2VyIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImxvd2Vy IikgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJsb3dlciIpIDogKF9fZXh0ZW5z aW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQg Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgibG93ZXIiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0 ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cmluZykp WzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jl c3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJp bmcpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsg X19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo c3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw KSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop IChzdHJpbmcpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGlu X2NvbnN0YW50X3AgKCJsb3dlciIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgibG93ZXIi KSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgibG93ZXIiKSA9PSAxKSAmJiAoX19zMl9s ZW4gPSBzdHJsZW4gKCJsb3dlciIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFu dF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAo c2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChz dHJpbmcsICJsb3dlciIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFy ICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJp bmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVk IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxvd2VyIikpWzBdOyBpZiAoX19zMl9sZW4gPiAw ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNp Z25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJsb3dlciIpKVsxXSk7IGlmIChfX3MyX2xl biA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0 IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxvd2VyIikpWzJdKTsgaWYgKF9f czJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2Nv bnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImxvd2VyIikpWzNdKTsgfSB9 IF9fcmVzdWx0OyB9KSkpIDogX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAibG93ZXIiKSkpKTsg fSkgPT0gMCkpKSByZXR1cm4gUkVDQ19MT1dFUjsNCiAgZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9f ICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3Ry aW5nKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoInByaW50IikgJiYgKF9fczFfbGVuID0gc3Ry bGVuIChzdHJpbmcpLCBfX3MyX2xlbiA9IHN0cmxlbiAoInByaW50IiksICghKChzaXplX3QpKGNv bnN0IHZvaWQgKikoKHN0cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5n KSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgi cHJpbnQiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgicHJpbnQiKSA9PSAxKSB8fCBf X3MyX2xlbiA+PSA0KSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJwcmludCIpIDogKF9f YnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChz dHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgJiYgKF9f czFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25z dGFudF9wICgicHJpbnQiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoInByaW50IikgKyAx KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInByaW50IikgPT0gMSkgPyBfX2J1aWx0aW5fc3Ry Y21wIChzdHJpbmcsICJwcmludCIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l ZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop ICgicHJpbnQiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBj aGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cmluZykpWzBdIC0gX19zMlswXSk7IGlmIChfX3Mx X2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWdu ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9fczJbMV0pOyBpZiAo X19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVu c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsg aWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3Qg dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVszXSAtIF9fczJbM10p OyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJwcmludCIpICYm ICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgicHJpbnQiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg dm9pZCAqKSgicHJpbnQiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJwcmludCIpLCBf X3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90 KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0 cmluZykgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJwcmludCIpIDogKF9fZXh0 ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWdu ZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1 bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq KSAoInByaW50IikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y ZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo YXIgKikgKCJwcmludCIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkg eyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u c3QgY2hhciAqKSAoInByaW50IikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9 PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f Y29uc3QgY2hhciAqKSAoInByaW50IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogX19idWls dGluX3N0cmNtcCAoc3RyaW5nLCAicHJpbnQiKSkpKTsgfSkgPT0gMCkpKSByZXR1cm4gUkVDQ19Q UklOVDsNCiAgZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19z Ml9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3Rh bnRfcCAoInB1bmN0IikgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MyX2xlbiA9 IHN0cmxlbiAoInB1bmN0IiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmluZykgKyAx KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0 KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgicHVuY3QiKSArIDEpIC0gKHNpemVfdCko Y29uc3Qgdm9pZCAqKSgicHVuY3QiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBfX2J1aWx0 aW5fc3RyY21wIChzdHJpbmcsICJwdW5jdCIpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJp bmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShj b25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcp LCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgicHVuY3QiKSAmJiAoKHNp emVfdCkoY29uc3Qgdm9pZCAqKSgoInB1bmN0IikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg KikoInB1bmN0IikgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJwdW5jdCIpIDog KF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3Qg dW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgicHVuY3QiKTsgcmVnaXN0ZXIgaW50 IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg KHN0cmluZykpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0g MCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy ICopIChzdHJpbmcpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0 ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg Y2hhciAqKSAoc3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jl c3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z dCBjaGFyICopIChzdHJpbmcpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAo X19idWlsdGluX2NvbnN0YW50X3AgKCJwdW5jdCIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop KCgicHVuY3QiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgicHVuY3QiKSA9PSAxKSAm JiAoX19zMl9sZW4gPSBzdHJsZW4gKCJwdW5jdCIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRp bl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcp ICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgPyBfX2J1aWx0aW5f c3RyY21wIChzdHJpbmcsICJwdW5jdCIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNp Z25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFy ICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0 IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInB1bmN0IikpWzBdOyBpZiAoX19z Ml9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19j b25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJwdW5jdCIpKVsxXSk7IGlm IChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0g KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInB1bmN0IikpWzJd KTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNd IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInB1bmN0Iikp WzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAicHVu Y3QiKSkpKTsgfSkgPT0gMCkpKSByZXR1cm4gUkVDQ19QVU5DVDsNCiAgZWxzZSBpZiAoKChfX2V4 dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3Rh bnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoInNwYWNlIikgJiYgKF9fczFf bGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MyX2xlbiA9IHN0cmxlbiAoInNwYWNlIiksICghKChz aXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQg Kikoc3RyaW5nKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2 b2lkICopKCgic3BhY2UiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgic3BhY2UiKSA9 PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJzcGFj ZSIpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2 b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0g MSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVp bHRpbl9jb25zdGFudF9wICgic3BhY2UiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoInNw YWNlIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoInNwYWNlIikgPT0gMSkgPyBfX2J1 aWx0aW5fc3RyY21wIChzdHJpbmcsICJzcGFjZSIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25z dCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z dCBjaGFyICopICgic3BhY2UiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1 bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cmluZykpWzBdIC0gX19zMlswXSk7 IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29u c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9fczJb MV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChf X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0gLSBf X3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgo KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVszXSAt IF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJz cGFjZSIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgic3BhY2UiKSArIDEpIC0gKHNpemVf dCkoY29uc3Qgdm9pZCAqKSgic3BhY2UiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJz cGFjZSIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYm ICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2 b2lkICopKHN0cmluZykgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJzcGFjZSIp IDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29u c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBp bnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u c3QgY2hhciAqKSAoInNwYWNlIikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09 IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf X2NvbnN0IGNoYXIgKikgKCJzcGFjZSIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1 bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg KikgKF9fY29uc3QgY2hhciAqKSAoInNwYWNlIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBf X3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo YXIgKikgKF9fY29uc3QgY2hhciAqKSAoInNwYWNlIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkp IDogX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAic3BhY2UiKSkpKTsgfSkgPT0gMCkpKSByZXR1 cm4gUkVDQ19TUEFDRTsNCiAgZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3Mx X2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0 aW5fY29uc3RhbnRfcCAoInVwcGVyIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBf X3MyX2xlbiA9IHN0cmxlbiAoInVwcGVyIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0 cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSB8fCBfX3Mx X2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgidXBwZXIiKSArIDEpIC0g KHNpemVfdCkoY29uc3Qgdm9pZCAqKSgidXBwZXIiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkg PyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJ1cHBlciIpIDogKF9fYnVpbHRpbl9jb25zdGFu dF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAo c2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVu IChzdHJpbmcpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgidXBwZXIi KSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoInVwcGVyIikgKyAxKSAtIChzaXplX3QpKGNv bnN0IHZvaWQgKikoInVwcGVyIikgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJ1 cHBlciIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0g KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgidXBwZXIiKTsgcmVn aXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0 IGNoYXIgKikgKHN0cmluZykpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19y ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j b25zdCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYm IF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikg KF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4g MiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAq KSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7 IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJ1cHBlciIpICYmICgoc2l6ZV90KShjb25z dCB2b2lkICopKCgidXBwZXIiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgidXBwZXIi KSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJ1cHBlciIpLCBfX3MyX2xlbiA8IDQpID8g KF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICop KChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgPyBf X2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJ1cHBlciIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19j b25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j b25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0g KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInVwcGVyIikpWzBd OyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsx XSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJ1cHBlciIp KVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChf X3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInVw cGVyIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9 IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo InVwcGVyIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogX19idWlsdGluX3N0cmNtcCAoc3Ry aW5nLCAidXBwZXIiKSkpKTsgfSkgPT0gMCkpKSByZXR1cm4gUkVDQ19VUFBFUjsNCiAgZWxzZSBp ZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0 aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoInVuaWJ5dGUi KSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHN0cmluZyksIF9fczJfbGVuID0gc3RybGVuICgidW5p Ynl0ZSIpLCAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90 KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgfHwgX19zMV9sZW4gPj0gNCkgJiYgKCEoKHNp emVfdCkoY29uc3Qgdm9pZCAqKSgoInVuaWJ5dGUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9p ZCAqKSgidW5pYnl0ZSIpID09IDEpIHx8IF9fczJfbGVuID49IDQpKSA/IF9fYnVpbHRpbl9zdHJj bXAgKHN0cmluZywgInVuaWJ5dGUiKSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAm JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoc3RyaW5nKSArIDEpIC0gKHNpemVfdCkoY29uc3Qg dm9pZCAqKShzdHJpbmcpID09IDEpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoc3RyaW5nKSwgX19z MV9sZW4gPCA0KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoInVuaWJ5dGUiKSAmJiAoKHNpemVf dCkoY29uc3Qgdm9pZCAqKSgoInVuaWJ5dGUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAq KSgidW5pYnl0ZSIpID09IDEpID8gX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAidW5pYnl0ZSIp IDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29u c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgidW5pYnl0ZSIpOyByZWdpc3Rl ciBpbnQgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hh ciAqKSAoc3RyaW5nKSlbMF0gLSBfX3MyWzBdKTsgaWYgKF9fczFfbGVuID4gMCAmJiBfX3Jlc3Vs dCA9PSAwKSB7IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0 IGNoYXIgKikgKHN0cmluZykpWzFdIC0gX19zMlsxXSk7IGlmIChfX3MxX2xlbiA+IDEgJiYgX19y ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j b25zdCBjaGFyICopIChzdHJpbmcpKVsyXSAtIF9fczJbMl0pOyBpZiAoX19zMV9sZW4gPiAyICYm IF9fcmVzdWx0ID09IDApIF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChf X2NvbnN0IGNoYXIgKikgKHN0cmluZykpWzNdIC0gX19zMlszXSk7IH0gfSBfX3Jlc3VsdDsgfSkp KSA6IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoInVuaWJ5dGUiKSAmJiAoKHNpemVfdCkoY29uc3Qg dm9pZCAqKSgoInVuaWJ5dGUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgidW5pYnl0 ZSIpID09IDEpICYmIChfX3MyX2xlbiA9IHN0cmxlbiAoInVuaWJ5dGUiKSwgX19zMl9sZW4gPCA0 KSA/IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9p ZCAqKSgoc3RyaW5nKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShzdHJpbmcpID09IDEp ID8gX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAidW5pYnl0ZSIpIDogKF9fZXh0ZW5zaW9uX18g KHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAq KSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3Mx WzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInVuaWJ5 dGUiKSlbMF07IGlmIChfX3MyX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9 IChfX3MxWzFdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo InVuaWJ5dGUiKSlbMV0pOyBpZiAoX19zMl9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19y ZXN1bHQgPSAoX19zMVsyXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo YXIgKikgKCJ1bmlieXRlIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAw KSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29u c3QgY2hhciAqKSAoInVuaWJ5dGUiKSlbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiBfX2J1aWx0 aW5fc3RyY21wIChzdHJpbmcsICJ1bmlieXRlIikpKSk7IH0pID09IDApKSkgcmV0dXJuIFJFQ0Nf VU5JQllURTsNCiAgZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwg X19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29u c3RhbnRfcCAoIm11bHRpYnl0ZSIpICYmIChfX3MxX2xlbiA9IHN0cmxlbiAoc3RyaW5nKSwgX19z Ml9sZW4gPSBzdHJsZW4gKCJtdWx0aWJ5dGUiKSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo c3RyaW5nKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKShzdHJpbmcpID09IDEpIHx8IF9f czFfbGVuID49IDQpICYmICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJtdWx0aWJ5dGUiKSAr IDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgibXVsdGlieXRlIikgPT0gMSkgfHwgX19zMl9s ZW4gPj0gNCkpID8gX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAibXVsdGlieXRlIikgOiAoX19i dWlsdGluX2NvbnN0YW50X3AgKHN0cmluZykgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0 cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSAmJiAoX19z MV9sZW4gPSBzdHJsZW4gKHN0cmluZyksIF9fczFfbGVuIDwgNCkgPyAoX19idWlsdGluX2NvbnN0 YW50X3AgKCJtdWx0aWJ5dGUiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoIm11bHRpYnl0 ZSIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJtdWx0aWJ5dGUiKSA9PSAxKSA/IF9f YnVpbHRpbl9zdHJjbXAgKHN0cmluZywgIm11bHRpYnl0ZSIpIDogKF9fZXh0ZW5zaW9uX18gKHsg X19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo X19jb25zdCBjaGFyICopICgibXVsdGlieXRlIik7IHJlZ2lzdGVyIGludCBfX3Jlc3VsdCA9ICgo KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVswXSAt IF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQg PSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlb MV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVz dWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cmlu ZykpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0gMCkgX19y ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3Ry aW5nKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRpbl9jb25z dGFudF9wICgibXVsdGlieXRlIikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJtdWx0aWJ5 dGUiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgibXVsdGlieXRlIikgPT0gMSkgJiYg KF9fczJfbGVuID0gc3RybGVuICgibXVsdGlieXRlIiksIF9fczJfbGVuIDwgNCkgPyAoX19idWls dGluX2NvbnN0YW50X3AgKHN0cmluZykgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmlu ZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSA/IF9fYnVpbHRp bl9zdHJjbXAgKHN0cmluZywgIm11bHRpYnl0ZSIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25z dCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z dCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChf X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoIm11bHRpYnl0ZSIpKVsw XTsgaWYgKF9fczJfbGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFb MV0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgibXVsdGli eXRlIikpWzFdKTsgaWYgKF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0 ID0gKF9fczFbMl0gLSAoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop ICgibXVsdGlieXRlIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBf X3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3Qg Y2hhciAqKSAoIm11bHRpYnl0ZSIpKVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IF9fYnVpbHRp bl9zdHJjbXAgKHN0cmluZywgIm11bHRpYnl0ZSIpKSkpOyB9KSA9PSAwKSkpIHJldHVybiBSRUND X01VTFRJQllURTsNCiAgZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xl biwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5f Y29uc3RhbnRfcCAoImRpZ2l0IikgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3My X2xlbiA9IHN0cmxlbiAoImRpZ2l0IiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmlu ZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSB8fCBfX3MxX2xl biA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiZGlnaXQiKSArIDEpIC0gKHNp emVfdCkoY29uc3Qgdm9pZCAqKSgiZGlnaXQiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBf X2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJkaWdpdCIpIDogKF9fYnVpbHRpbl9jb25zdGFudF9w IChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6 ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChz dHJpbmcpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiZGlnaXQiKSAm JiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImRpZ2l0IikgKyAxKSAtIChzaXplX3QpKGNvbnN0 IHZvaWQgKikoImRpZ2l0IikgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJkaWdp dCIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9f Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiZGlnaXQiKTsgcmVnaXN0 ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNo YXIgKikgKHN0cmluZykpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1 bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z dCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9f cmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f Y29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAm JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo X19jb25zdCBjaGFyICopIChzdHJpbmcpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0p KSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJkaWdpdCIpICYmICgoc2l6ZV90KShjb25zdCB2 b2lkICopKCgiZGlnaXQiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiZGlnaXQiKSA9 PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJkaWdpdCIpLCBfX3MyX2xlbiA8IDQpID8gKF9f YnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChz dHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgPyBfX2J1 aWx0aW5fc3RyY21wIChzdHJpbmcsICJkaWdpdCIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25z dCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25z dCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChf X2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRpZ2l0IikpWzBdOyBp ZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAt ICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJkaWdpdCIpKVsx XSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3Mx WzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRpZ2l0 IikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChf X3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImRp Z2l0IikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogX19idWlsdGluX3N0cmNtcCAoc3RyaW5n LCAiZGlnaXQiKSkpKTsgfSkgPT0gMCkpKSByZXR1cm4gUkVDQ19ESUdJVDsNCiAgZWxzZSBpZiAo KChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5f Y29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoInhkaWdpdCIpICYm IChfX3MxX2xlbiA9IHN0cmxlbiAoc3RyaW5nKSwgX19zMl9sZW4gPSBzdHJsZW4gKCJ4ZGlnaXQi KSwgKCEoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoc3RyaW5nKSArIDEpIC0gKHNpemVfdCkoY29u c3Qgdm9pZCAqKShzdHJpbmcpID09IDEpIHx8IF9fczFfbGVuID49IDQpICYmICghKChzaXplX3Qp KGNvbnN0IHZvaWQgKikoKCJ4ZGlnaXQiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgi eGRpZ2l0IikgPT0gMSkgfHwgX19zMl9sZW4gPj0gNCkpID8gX19idWlsdGluX3N0cmNtcCAoc3Ry aW5nLCAieGRpZ2l0IikgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKHN0cmluZykgJiYgKChzaXpl X3QpKGNvbnN0IHZvaWQgKikoKHN0cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKiko c3RyaW5nKSA9PSAxKSAmJiAoX19zMV9sZW4gPSBzdHJsZW4gKHN0cmluZyksIF9fczFfbGVuIDwg NCkgPyAoX19idWlsdGluX2NvbnN0YW50X3AgKCJ4ZGlnaXQiKSAmJiAoKHNpemVfdCkoY29uc3Qg dm9pZCAqKSgoInhkaWdpdCIpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKCJ4ZGlnaXQi KSA9PSAxKSA/IF9fYnVpbHRpbl9zdHJjbXAgKHN0cmluZywgInhkaWdpdCIpIDogKF9fZXh0ZW5z aW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQg Y2hhciAqKSAoX19jb25zdCBjaGFyICopICgieGRpZ2l0Iik7IHJlZ2lzdGVyIGludCBfX3Jlc3Vs dCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcp KVswXSAtIF9fczJbMF0pOyBpZiAoX19zMV9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19y ZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3Ry aW5nKSlbMV0gLSBfX3MyWzFdKTsgaWYgKF9fczFfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7 IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikg KHN0cmluZykpWzJdIC0gX19zMlsyXSk7IGlmIChfX3MxX2xlbiA+IDIgJiYgX19yZXN1bHQgPT0g MCkgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq KSAoc3RyaW5nKSlbM10gLSBfX3MyWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogKF9fYnVpbHRp bl9jb25zdGFudF9wICgieGRpZ2l0IikgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKCJ4ZGln aXQiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgieGRpZ2l0IikgPT0gMSkgJiYgKF9f czJfbGVuID0gc3RybGVuICgieGRpZ2l0IiksIF9fczJfbGVuIDwgNCkgPyAoX19idWlsdGluX2Nv bnN0YW50X3AgKHN0cmluZykgJiYgKChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmluZykgKyAx KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSA/IF9fYnVpbHRpbl9zdHJj bXAgKHN0cmluZywgInhkaWdpdCIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25l ZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICop IChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVu c2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInhkaWdpdCIpKVswXTsgaWYgKF9fczJf bGVuID4gMCAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMV0gLSAoKF9fY29u c3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgieGRpZ2l0IikpWzFdKTsgaWYg KF9fczJfbGVuID4gMSAmJiBfX3Jlc3VsdCA9PSAwKSB7IF9fcmVzdWx0ID0gKF9fczFbMl0gLSAo KF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgieGRpZ2l0IikpWzJd KTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNd IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoInhkaWdpdCIp KVszXSk7IH0gfSBfX3Jlc3VsdDsgfSkpKSA6IF9fYnVpbHRpbl9zdHJjbXAgKHN0cmluZywgInhk aWdpdCIpKSkpOyB9KSA9PSAwKSkpIHJldHVybiBSRUNDX1hESUdJVDsNCiAgZWxzZSBpZiAoKChf X2V4dGVuc2lvbl9fICh7IHNpemVfdCBfX3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29u c3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1aWx0aW5fY29uc3RhbnRfcCAoImNudHJsIikgJiYgKF9f czFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MyX2xlbiA9IHN0cmxlbiAoImNudHJsIiksICgh KChzaXplX3QpKGNvbnN0IHZvaWQgKikoKHN0cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZv aWQgKikoc3RyaW5nKSA9PSAxKSB8fCBfX3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25z dCB2b2lkICopKCgiY250cmwiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiY250cmwi KSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0KSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJj bnRybCIpIDogKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25z dCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykg PT0gMSkgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcpLCBfX3MxX2xlbiA8IDQpID8gKF9f YnVpbHRpbl9jb25zdGFudF9wICgiY250cmwiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgo ImNudHJsIikgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoImNudHJsIikgPT0gMSkgPyBf X2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJjbnRybCIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19j b25zdCB1bnNpZ25lZCBjaGFyICpfX3MyID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19j b25zdCBjaGFyICopICgiY250cmwiKTsgcmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25z dCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKHN0cmluZykpWzBdIC0gX19zMlsw XSk7IGlmIChfX3MxX2xlbiA+IDAgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9f Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9f czJbMV0pOyBpZiAoX19zMV9sZW4gPiAxICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAo KChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0g LSBfX3MyWzJdKTsgaWYgKF9fczFfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9 ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVsz XSAtIF9fczJbM10pOyB9IH0gX19yZXN1bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3Ag KCJjbnRybCIpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiY250cmwiKSArIDEpIC0gKHNp emVfdCkoY29uc3Qgdm9pZCAqKSgiY250cmwiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4g KCJjbnRybCIpLCBfX3MyX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcp ICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25z dCB2b2lkICopKHN0cmluZykgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJjbnRy bCIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9f Y29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3Rl ciBpbnQgX19yZXN1bHQgPSBfX3MxWzBdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9f Y29uc3QgY2hhciAqKSAoImNudHJsIikpWzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0 ID09IDApIHsgX19yZXN1bHQgPSAoX19zMVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICop IChfX2NvbnN0IGNoYXIgKikgKCJjbnRybCIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19y ZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNo YXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNudHJsIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAm JiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVk IGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImNudHJsIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9 KSkpIDogX19idWlsdGluX3N0cmNtcCAoc3RyaW5nLCAiY250cmwiKSkpKTsgfSkgPT0gMCkpKSBy ZXR1cm4gUkVDQ19DTlRSTDsNCiAgZWxzZSBpZiAoKChfX2V4dGVuc2lvbl9fICh7IHNpemVfdCBf X3MxX2xlbiwgX19zMl9sZW47IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoc3RyaW5nKSAmJiBfX2J1 aWx0aW5fY29uc3RhbnRfcCAoImJsYW5rIikgJiYgKF9fczFfbGVuID0gc3RybGVuIChzdHJpbmcp LCBfX3MyX2xlbiA9IHN0cmxlbiAoImJsYW5rIiksICghKChzaXplX3QpKGNvbnN0IHZvaWQgKiko KHN0cmluZykgKyAxKSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoc3RyaW5nKSA9PSAxKSB8fCBf X3MxX2xlbiA+PSA0KSAmJiAoISgoc2l6ZV90KShjb25zdCB2b2lkICopKCgiYmxhbmsiKSArIDEp IC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYmxhbmsiKSA9PSAxKSB8fCBfX3MyX2xlbiA+PSA0 KSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJibGFuayIpIDogKF9fYnVpbHRpbl9jb25z dGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lkICopKChzdHJpbmcpICsgMSkg LSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkgJiYgKF9fczFfbGVuID0gc3Ry bGVuIChzdHJpbmcpLCBfX3MxX2xlbiA8IDQpID8gKF9fYnVpbHRpbl9jb25zdGFudF9wICgiYmxh bmsiKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoImJsYW5rIikgKyAxKSAtIChzaXplX3Qp KGNvbnN0IHZvaWQgKikoImJsYW5rIikgPT0gMSkgPyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcs ICJibGFuayIpIDogKF9fZXh0ZW5zaW9uX18gKHsgX19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3My ID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAoX19jb25zdCBjaGFyICopICgiYmxhbmsiKTsg cmVnaXN0ZXIgaW50IF9fcmVzdWx0ID0gKCgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2Nv bnN0IGNoYXIgKikgKHN0cmluZykpWzBdIC0gX19zMlswXSk7IGlmIChfX3MxX2xlbiA+IDAgJiYg X19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo X19jb25zdCBjaGFyICopIChzdHJpbmcpKVsxXSAtIF9fczJbMV0pOyBpZiAoX19zMV9sZW4gPiAx ICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIg KikgKF9fY29uc3QgY2hhciAqKSAoc3RyaW5nKSlbMl0gLSBfX3MyWzJdKTsgaWYgKF9fczFfbGVu ID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3VsdCA9ICgoKF9fY29uc3QgdW5zaWduZWQgY2hh ciAqKSAoX19jb25zdCBjaGFyICopIChzdHJpbmcpKVszXSAtIF9fczJbM10pOyB9IH0gX19yZXN1 bHQ7IH0pKSkgOiAoX19idWlsdGluX2NvbnN0YW50X3AgKCJibGFuayIpICYmICgoc2l6ZV90KShj b25zdCB2b2lkICopKCgiYmxhbmsiKSArIDEpIC0gKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgiYmxh bmsiKSA9PSAxKSAmJiAoX19zMl9sZW4gPSBzdHJsZW4gKCJibGFuayIpLCBfX3MyX2xlbiA8IDQp ID8gKF9fYnVpbHRpbl9jb25zdGFudF9wIChzdHJpbmcpICYmICgoc2l6ZV90KShjb25zdCB2b2lk ICopKChzdHJpbmcpICsgMSkgLSAoc2l6ZV90KShjb25zdCB2b2lkICopKHN0cmluZykgPT0gMSkg PyBfX2J1aWx0aW5fc3RyY21wIChzdHJpbmcsICJibGFuayIpIDogKF9fZXh0ZW5zaW9uX18gKHsg X19jb25zdCB1bnNpZ25lZCBjaGFyICpfX3MxID0gKF9fY29uc3QgdW5zaWduZWQgY2hhciAqKSAo X19jb25zdCBjaGFyICopIChzdHJpbmcpOyByZWdpc3RlciBpbnQgX19yZXN1bHQgPSBfX3MxWzBd IC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAoImJsYW5rIikp WzBdOyBpZiAoX19zMl9sZW4gPiAwICYmIF9fcmVzdWx0ID09IDApIHsgX19yZXN1bHQgPSAoX19z MVsxXSAtICgoX19jb25zdCB1bnNpZ25lZCBjaGFyICopIChfX2NvbnN0IGNoYXIgKikgKCJibGFu ayIpKVsxXSk7IGlmIChfX3MyX2xlbiA+IDEgJiYgX19yZXN1bHQgPT0gMCkgeyBfX3Jlc3VsdCA9 IChfX3MxWzJdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAqKSAo ImJsYW5rIikpWzJdKTsgaWYgKF9fczJfbGVuID4gMiAmJiBfX3Jlc3VsdCA9PSAwKSBfX3Jlc3Vs dCA9IChfX3MxWzNdIC0gKChfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKikgKF9fY29uc3QgY2hhciAq KSAoImJsYW5rIikpWzNdKTsgfSB9IF9fcmVzdWx0OyB9KSkpIDogX19idWlsdGluX3N0cmNtcCAo c3RyaW5nLCAiYmxhbmsiKSkpKTsgfSkgPT0gMCkpKSByZXR1cm4gUkVDQ19CTEFOSzsNCiAgZWxz ZSByZXR1cm4gMDsNCn0NCg0KDQpib29sZWFuDQpyZV9pc3djdHlwZSAoaW50IGNoLCByZV93Y3R5 cGVfdCBjYykNCnsNCiAgc3dpdGNoIChjYykNCiAgICB7DQogICAgY2FzZSBSRUNDX0FMTlVNOiBy ZXR1cm4gKCgqX19jdHlwZV9iX2xvYyAoKSlbKGludCkgKChjaCkpXSAmICh1bnNpZ25lZCBzaG9y dCBpbnQpIF9JU2FsbnVtKSAhPSAwOw0KICAgIGNhc2UgUkVDQ19BTFBIQTogcmV0dXJuICgoKl9f Y3R5cGVfYl9sb2MgKCkpWyhpbnQpICgoY2gpKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSBfSVNh bHBoYSkgIT0gMDsNCiAgICBjYXNlIFJFQ0NfQkxBTks6IHJldHVybiAoKCpfX2N0eXBlX2JfbG9j ICgpKVsoaW50KSAoKGNoKSldICYgKHVuc2lnbmVkIHNob3J0IGludCkgX0lTYmxhbmspICE9IDA7 DQogICAgY2FzZSBSRUNDX0NOVFJMOiByZXR1cm4gKCgqX19jdHlwZV9iX2xvYyAoKSlbKGludCkg KChjaCkpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9JU2NudHJsKSAhPSAwOw0KICAgIGNhc2Ug UkVDQ19ESUdJVDogcmV0dXJuICgoKl9fY3R5cGVfYl9sb2MgKCkpWyhpbnQpICgoY2gpKV0gJiAo dW5zaWduZWQgc2hvcnQgaW50KSBfSVNkaWdpdCkgIT0gMDsNCiAgICBjYXNlIFJFQ0NfR1JBUEg6 IHJldHVybiAoKCpfX2N0eXBlX2JfbG9jICgpKVsoaW50KSAoKGNoKSldICYgKHVuc2lnbmVkIHNo b3J0IGludCkgX0lTZ3JhcGgpICE9IDA7DQogICAgY2FzZSBSRUNDX0xPV0VSOiByZXR1cm4gKCgq X19jdHlwZV9iX2xvYyAoKSlbKGludCkgKChjaCkpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9J U2xvd2VyKSAhPSAwOw0KICAgIGNhc2UgUkVDQ19QUklOVDogcmV0dXJuICgoKl9fY3R5cGVfYl9s b2MgKCkpWyhpbnQpICgoY2gpKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSBfSVNwcmludCkgIT0g MDsNCiAgICBjYXNlIFJFQ0NfUFVOQ1Q6IHJldHVybiAoKCpfX2N0eXBlX2JfbG9jICgpKVsoaW50 KSAoKGNoKSldICYgKHVuc2lnbmVkIHNob3J0IGludCkgX0lTcHVuY3QpICE9IDA7DQogICAgY2Fz ZSBSRUNDX1NQQUNFOiByZXR1cm4gKCgqX19jdHlwZV9iX2xvYyAoKSlbKGludCkgKChjaCkpXSAm ICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9JU3NwYWNlKSAhPSAwOw0KICAgIGNhc2UgUkVDQ19VUFBF UjogcmV0dXJuICgoKl9fY3R5cGVfYl9sb2MgKCkpWyhpbnQpICgoY2gpKV0gJiAodW5zaWduZWQg c2hvcnQgaW50KSBfSVN1cHBlcikgIT0gMDsNCiAgICBjYXNlIFJFQ0NfWERJR0lUOiByZXR1cm4g KCgqX19jdHlwZV9iX2xvYyAoKSlbKGludCkgKChjaCkpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQp IF9JU3hkaWdpdCkgIT0gMDsNCiAgICBjYXNlIFJFQ0NfQVNDSUk6IHJldHVybiAoKGNoKSA8IDAy MDApICE9IDA7DQogICAgY2FzZSBSRUNDX05PTkFTQ0lJOiByZXR1cm4gISgoY2gpIDwgMDIwMCk7 DQogICAgY2FzZSBSRUNDX1VOSUJZVEU6IHJldHVybiAxICE9IDA7DQogICAgY2FzZSBSRUNDX01V TFRJQllURTogcmV0dXJuICExOw0KICAgIGNhc2UgUkVDQ19XT1JEOiByZXR1cm4gKCgqX19jdHlw ZV9iX2xvYyAoKSlbKGludCkgKChjaCkpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9JU2FscGhh KSAhPSAwOw0KICAgIGNhc2UgUkVDQ19FUlJPUjogcmV0dXJuIDA7DQogICAgZGVmYXVsdDoNCiAg ICAgIGFib3J0ICgpOw0KICAgIH0NCn0NCg0KDQoNCnN0YXRpYyBpbnQNCnJlX3djdHlwZV90b19i aXQgKHJlX3djdHlwZV90IGNjKQ0Kew0KICBzd2l0Y2ggKGNjKQ0KICAgIHsNCiAgICBjYXNlIFJF Q0NfTk9OQVNDSUk6IGNhc2UgUkVDQ19QUklOVDogY2FzZSBSRUNDX0dSQVBIOg0KICAgIGNhc2Ug UkVDQ19NVUxUSUJZVEU6IHJldHVybiAweDIwOw0KICAgIGNhc2UgUkVDQ19BTFBIQTogY2FzZSBS RUNDX0FMTlVNOiBjYXNlIFJFQ0NfV09SRDogcmV0dXJuIDB4MTsNCiAgICBjYXNlIFJFQ0NfTE9X RVI6IHJldHVybiAweDI7DQogICAgY2FzZSBSRUNDX1VQUEVSOiByZXR1cm4gMHgxMDsNCiAgICBj YXNlIFJFQ0NfUFVOQ1Q6IHJldHVybiAweDQ7DQogICAgY2FzZSBSRUNDX1NQQUNFOiByZXR1cm4g MHg4Ow0KICAgIGNhc2UgUkVDQ19BU0NJSTogY2FzZSBSRUNDX0RJR0lUOiBjYXNlIFJFQ0NfWERJ R0lUOiBjYXNlIFJFQ0NfQ05UUkw6DQogICAgY2FzZSBSRUNDX0JMQU5LOiBjYXNlIFJFQ0NfVU5J QllURTogY2FzZSBSRUNDX0VSUk9SOiByZXR1cm4gMDsNCiAgICBkZWZhdWx0Og0KICAgICAgYWJv cnQgKCk7DQogICAgfQ0KfQ0KDQoNCg0KDQoNCg0Kc3RhdGljIHZvaWQNCmV4dGVuZF9yYW5nZV90 YWJsZV93b3JrX2FyZWEgKHN0cnVjdCByYW5nZV90YWJsZV93b3JrX2FyZWEgKndvcmtfYXJlYSkN CnsNCiAgd29ya19hcmVhLT5hbGxvY2F0ZWQgKz0gMTYgKiBzaXplb2YgKGludCk7DQogIHdvcmtf YXJlYS0+dGFibGUgPSB4cmVhbGxvYyAod29ya19hcmVhLT50YWJsZSwgd29ya19hcmVhLT5hbGxv Y2F0ZWQpOw0KfQ0KIyAyMzk1ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCnN0YXRpYyBi b29sZWFuIGdyb3VwX2luX2NvbXBpbGVfc3RhY2sgKGNvbXBpbGVfc3RhY2tfdHlwZSBjb21waWxl X3N0YWNrLA0KICAgICAgICAgICByZWdudW1fdCByZWdudW0pOw0KIyAyNDE3ICIvaG9tZS9qYW1l cy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNy Yy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgRklYVVBfQUxUX0pVTVAoKSBkbyB7IGlmIChmaXh1 cF9hbHRfanVtcCkgU1RPUkVfSlVNUCAoanVtcCwgZml4dXBfYWx0X2p1bXAsIGIpOyB9IHdoaWxl ICgwKQ0KDQoNCg0KDQoNCg0KDQojZGVmaW5lIEZSRUVfU1RBQ0tfUkVUVVJOKHZhbHVlKSBkbyB7 IEZSRUVfUkFOR0VfVEFCTEVfV09SS19BUkVBIChyYW5nZV90YWJsZV93b3JrKTsgZnJlZSAoY29t cGlsZV9zdGFjay5zdGFjayk7IHJldHVybiB2YWx1ZTsgfSB3aGlsZSAoMCkNCg0KDQoNCg0KDQoN CnN0YXRpYyByZWdfZXJyY29kZV90DQpyZWdleF9jb21waWxlIChjb25zdCByZV9jaGFyICpwYXR0 ZXJuLCBzaXplX3Qgc2l6ZSwgcmVnX3N5bnRheF90IHN5bnRheCwgc3RydWN0IHJlX3BhdHRlcm5f YnVmZmVyICpidWZwKQ0Kew0KDQogIHJlZ2lzdGVyIHJlX3djaGFyX3QgYywgYzE7DQoNCg0KICBy ZWdpc3RlciB1bnNpZ25lZCBjaGFyICpiOw0KDQoNCiAgY29tcGlsZV9zdGFja190eXBlIGNvbXBp bGVfc3RhY2s7DQoNCg0KDQoNCg0KDQogIHJlX2NoYXIgKnAgPSBwYXR0ZXJuOw0KDQogIHJlX2No YXIgKnBlbmQgPSBwYXR0ZXJuICsgc2l6ZTsNCg0KDQogIGNoYXIgKiB0cmFuc2xhdGUgPSBidWZw LT50cmFuc2xhdGU7DQoNCg0KDQoNCg0KICB1bnNpZ25lZCBjaGFyICpwZW5kaW5nX2V4YWN0ID0g MDsNCg0KDQoNCg0KICB1bnNpZ25lZCBjaGFyICpsYXN0c3RhcnQgPSAwOw0KDQoNCiAgdW5zaWdu ZWQgY2hhciAqYmVnYWx0Ow0KDQoNCg0KICByZV9jaGFyICpiZWdfaW50ZXJ2YWw7DQoNCg0KDQoN CiAgdW5zaWduZWQgY2hhciAqZml4dXBfYWx0X2p1bXAgPSAwOw0KDQoNCiAgc3RydWN0IHJhbmdl X3RhYmxlX3dvcmtfYXJlYSByYW5nZV90YWJsZV93b3JrOw0KDQoNCiAgY29uc3QgYm9vbGVhbiBt dWx0aWJ5dGUgPSAwOw0KDQoNCiAgaW50IGluX3N1YnBhdHRlcm4gPSAwOw0KDQoNCg0KICByZV9j aGFyICptYWluX3AgOw0KICByZV9jaGFyICptYWluX3BhdHRlcm4gOw0KICByZV9jaGFyICptYWlu X3BlbmQgOw0KIyAyNTA4ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMv ZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiAgY29tcGlsZV9z dGFjay5zdGFjayA9ICgoY29tcGlsZV9zdGFja19lbHRfdCAqKSB4bWFsbG9jICgoMzIpICogc2l6 ZW9mIChjb21waWxlX3N0YWNrX2VsdF90KSkpOw0KICBpZiAoY29tcGlsZV9zdGFjay5zdGFjayA9 PSAoKHZvaWQgKikwKSkNCiAgICByZXR1cm4gUkVHX0VTUEFDRTsNCg0KICBjb21waWxlX3N0YWNr LnNpemUgPSAzMjsNCiAgY29tcGlsZV9zdGFjay5hdmFpbCA9IDA7DQoNCiAgcmFuZ2VfdGFibGVf d29yay50YWJsZSA9IDA7DQogIHJhbmdlX3RhYmxlX3dvcmsuYWxsb2NhdGVkID0gMDsNCg0KDQog IGJ1ZnAtPnN5bnRheCA9IHN5bnRheDsNCiAgYnVmcC0+ZmFzdG1hcF9hY2N1cmF0ZSA9IDA7DQog IGJ1ZnAtPm5vdF9ib2wgPSBidWZwLT5ub3RfZW9sID0gMDsNCiAgYnVmcC0+dXNlZF9zeW50YXgg PSAwOw0KDQoNCg0KDQogIGJ1ZnAtPnVzZWQgPSAwOw0KDQoNCiAgYnVmcC0+cmVfbnN1YiA9IDA7 DQoNCg0KDQogICBpbml0X3N5bnRheF9vbmNlICgpOw0KDQoNCiAgaWYgKGJ1ZnAtPmFsbG9jYXRl ZCA9PSAwKQ0KICAgIHsNCiAgICAgIGlmIChidWZwLT5idWZmZXIpDQogew0KDQoNCiAgICgoYnVm cC0+YnVmZmVyKSA9ICh1bnNpZ25lZCBjaGFyICopIHhyZWFsbG9jIChidWZwLT5idWZmZXIsICgz MikgKiBzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSk7DQogfQ0KICAgICAgZWxzZQ0KIHsNCiAgIGJ1 ZnAtPmJ1ZmZlciA9ICgodW5zaWduZWQgY2hhciAqKSB4bWFsbG9jICgoMzIpICogc2l6ZW9mICh1 bnNpZ25lZCBjaGFyKSkpOw0KIH0NCiAgICAgIGlmICghYnVmcC0+YnVmZmVyKSBkbyB7IGRvIHsg aWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSkgZnJlZSAoKHJhbmdlX3RhYmxlX3dvcmspLnRh YmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNvbXBpbGVfc3RhY2suc3RhY2spOyByZXR1cm4gUkVH X0VTUEFDRTsgfSB3aGlsZSAoMCk7DQoNCiAgICAgIGJ1ZnAtPmFsbG9jYXRlZCA9IDMyOw0KICAg IH0NCg0KICBiZWdhbHQgPSBiID0gYnVmcC0+YnVmZmVyOw0KDQoNCiAgd2hpbGUgKDEpDQogICAg ew0KICAgICAgaWYgKHAgPT0gcGVuZCkNCiB7DQoNCg0KICAgaWYgKGluX3N1YnBhdHRlcm4pDQog ICAgIHsNCiAgICAgICBpbl9zdWJwYXR0ZXJuID0gMDsNCiAgICAgICBwYXR0ZXJuID0gbWFpbl9w YXR0ZXJuOw0KICAgICAgIHAgPSBtYWluX3A7DQogICAgICAgcGVuZCA9IG1haW5fcGVuZDsNCiAg ICAgICBjb250aW51ZTsNCiAgICAgfQ0KDQogICBicmVhazsNCiB9DQoNCiAgICAgIGRvIHsgaW50 IGxlbjsgaWYgKHAgPT0gcGVuZCkgcmV0dXJuIFJFR19FRU5EOyBjID0gKChsZW4pID0gMSwgKihw KSk7IHAgKz0gbGVuOyB9IHdoaWxlICgwKTsNCg0KICAgICAgc3dpdGNoIChjKQ0KIHsNCiBjYXNl ICcgJzoNCiAgIHsNCiAgICAgcmVfY2hhciAqcDEgPSBwOw0KDQoNCg0KICAgICBpZiAoIXdoaXRl c3BhY2VfcmVnZXhwIHx8IGluX3N1YnBhdHRlcm4pDQogICAgICAgZ290byBub3JtYWxfY2hhcjsN Cg0KDQogICAgIHdoaWxlIChwMSAhPSBwZW5kKQ0KICAgICAgIHsNCiAgaWYgKCpwMSAhPSAnICcp DQogICAgYnJlYWs7DQogIHAxKys7DQogICAgICAgfQ0KDQoNCiAgICAgaWYgKHAxICE9IHBlbmQN CiAgJiYgKCpwMSA9PSAnKicgfHwgKnAxID09ICcrJyB8fCAqcDEgPT0gJz8nDQogICAgICB8fCAo KnAxID09ICdcXCcgJiYgcDEgKyAxICE9IHBlbmQgJiYgcDFbMV0gPT0gJ3snKSkpDQogICAgICAg Z290byBub3JtYWxfY2hhcjsNCg0KDQogICAgIGluX3N1YnBhdHRlcm4gPSAxOw0KICAgICBtYWlu X3AgPSBwMTsNCiAgICAgbWFpbl9wZW5kID0gcGVuZDsNCiAgICAgbWFpbl9wYXR0ZXJuID0gcGF0 dGVybjsNCiAgICAgcCA9IHBhdHRlcm4gPSB3aGl0ZXNwYWNlX3JlZ2V4cDsNCiAgICAgcGVuZCA9 IHAgKyBzdHJsZW4gKChjb25zdCBjaGFyICopIHApOw0KICAgICBicmVhazsNCiAgIH0NCg0KIGNh c2UgJ14nOg0KICAgew0KICAgICBpZiAoDQogICAgIHAgPT0gcGF0dGVybiArIDENCg0KICB8fCBz eW50YXggJiAoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKQ0KDQog IHx8IGF0X2JlZ2xpbmVfbG9jX3AgKHBhdHRlcm4sIHAsIHN5bnRheCkpDQogICAgICAgZG8geyB3 aGlsZSAoKHNpemVfdCkgKGIgLSBidWZwLT5idWZmZXIgKyAoMSkpID4gYnVmcC0+YWxsb2NhdGVk KSBkbyB7IHVuc2lnbmVkIGNoYXIgKm9sZF9idWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZw LT5hbGxvY2F0ZWQgPT0gKDFMIDw8IDE1KSkgcmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2Nh dGVkIDw8PSAxOyBpZiAoYnVmcC0+YWxsb2NhdGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2Nh dGVkID0gKDFMIDw8IDE1KTsgKChidWZwLT5idWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJl YWxsb2MgKGJ1ZnAtPmJ1ZmZlciwgKGJ1ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVk IGNoYXIpKSk7IGlmIChidWZwLT5idWZmZXIgPT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQ QUNFOyBpZiAob2xkX2J1ZmZlciAhPSBidWZwLT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3 X2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgKChiKSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1 ZmZlcikpOyAoKGJlZ2FsdCkgPSBuZXdfYnVmZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikp OyBpZiAoZml4dXBfYWx0X2p1bXApICgoZml4dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgo Zml4dXBfYWx0X2p1bXApIC0gb2xkX2J1ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFy dCkgPSBuZXdfYnVmZmVyICsgKChsYXN0c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGlu Z19leGFjdCkgKChwZW5kaW5nX2V4YWN0KSA9IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3Qp IC0gb2xkX2J1ZmZlcikpOyB9IH0gd2hpbGUgKDApOyAqYisrID0gKHVuc2lnbmVkIGNoYXIpICgo c3ludGF4ICYgKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpKSA/IGJlZ2J1ZiA6IGJlZ2xpbmUpOyB9IHdoaWxlICgwKTsNCiAgICAg ZWxzZQ0KICAgICAgIGdvdG8gbm9ybWFsX2NoYXI7DQogICB9DQogICBicmVhazsNCg0KDQogY2Fz ZSAnJCc6DQogICB7DQogICAgIGlmICgNCiAgICAgcCA9PSBwZW5kDQoNCiAgfHwgc3ludGF4ICYg KCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkNCg0KICB8fCBhdF9l bmRsaW5lX2xvY19wIChwLCBwZW5kLCBzeW50YXgpKQ0KICAgICAgICBkbyB7IHdoaWxlICgoc2l6 ZV90KSAoYiAtIGJ1ZnAtPmJ1ZmZlciArICgxKSkgPiBidWZwLT5hbGxvY2F0ZWQpIGRvIHsgdW5z aWduZWQgY2hhciAqb2xkX2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgaWYgKGJ1ZnAtPmFsbG9jYXRl ZCA9PSAoMUwgPDwgMTUpKSByZXR1cm4gUkVHX0VTSVpFOyBidWZwLT5hbGxvY2F0ZWQgPDw9IDE7 IGlmIChidWZwLT5hbGxvY2F0ZWQgPiAoMUwgPDwgMTUpKSBidWZwLT5hbGxvY2F0ZWQgPSAoMUwg PDwgMTUpOyAoKGJ1ZnAtPmJ1ZmZlcikgPSAodW5zaWduZWQgY2hhciAqKSB4cmVhbGxvYyAoYnVm cC0+YnVmZmVyLCAoYnVmcC0+YWxsb2NhdGVkKSAqIHNpemVvZiAodW5zaWduZWQgY2hhcikpKTsg aWYgKGJ1ZnAtPmJ1ZmZlciA9PSAoKHZvaWQgKikwKSkgcmV0dXJuIFJFR19FU1BBQ0U7IGlmIChv bGRfYnVmZmVyICE9IGJ1ZnAtPmJ1ZmZlcikgeyB1bnNpZ25lZCBjaGFyICpuZXdfYnVmZmVyID0g YnVmcC0+YnVmZmVyOyAoKGIpID0gbmV3X2J1ZmZlciArICgoYikgLSBvbGRfYnVmZmVyKSk7ICgo YmVnYWx0KSA9IG5ld19idWZmZXIgKyAoKGJlZ2FsdCkgLSBvbGRfYnVmZmVyKSk7IGlmIChmaXh1 cF9hbHRfanVtcCkgKChmaXh1cF9hbHRfanVtcCkgPSBuZXdfYnVmZmVyICsgKChmaXh1cF9hbHRf anVtcCkgLSBvbGRfYnVmZmVyKSk7IGlmIChsYXN0c3RhcnQpICgobGFzdHN0YXJ0KSA9IG5ld19i dWZmZXIgKyAoKGxhc3RzdGFydCkgLSBvbGRfYnVmZmVyKSk7IGlmIChwZW5kaW5nX2V4YWN0KSAo KHBlbmRpbmdfZXhhY3QpID0gbmV3X2J1ZmZlciArICgocGVuZGluZ19leGFjdCkgLSBvbGRfYnVm ZmVyKSk7IH0gfSB3aGlsZSAoMCk7ICpiKysgPSAodW5zaWduZWQgY2hhcikgKChzeW50YXggJiAo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkpID8gZW5kYnVmIDogZW5kbGluZSk7IH0gd2hpbGUgKDApOw0KICAgICAgZWxzZQ0KICAg ICAgICBnb3RvIG5vcm1hbF9jaGFyOw0KICAgIH0NCiAgICBicmVhazsNCg0KDQogY2FzZSAnKyc6 DQogY2FzZSAnPyc6DQogICBpZiAoKHN5bnRheCAmICgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8 PCAxKSkNCiAgICAgICB8fCAoc3ludGF4ICYgKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQp IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IDw8IDEpKSkNCiAgICAgZ290byBub3JtYWxfY2hhcjsNCiBoYW5kbGVfcGx1czoNCiBjYXNlICcq JzoNCg0KICAgaWYgKCFsYXN0c3RhcnQpDQogICAgIHsNCiAgICAgICBpZiAoc3ludGF4ICYgKCgo KCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkN CiAgZG8geyBkbyB7IGlmICgocmFuZ2VfdGFibGVfd29yaykudGFibGUpIGZyZWUgKChyYW5nZV90 YWJsZV93b3JrKS50YWJsZSk7IH0gd2hpbGUgKDApOyBmcmVlIChjb21waWxlX3N0YWNrLnN0YWNr KTsgcmV0dXJuIFJFR19CQURSUFQ7IH0gd2hpbGUgKDApOw0KICAgICAgIGVsc2UgaWYgKCEoc3lu dGF4ICYgKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp KSkNCiAgZ290byBub3JtYWxfY2hhcjsNCiAgICAgfQ0KDQogICB7DQoNCiAgICAgYm9vbGVhbiB6 ZXJvX3RpbWVzX29rID0gMCwgbWFueV90aW1lc19vayA9IDA7DQogICAgIGJvb2xlYW4gZ3JlZWR5 ID0gMTsNCg0KDQoNCg0KDQoNCiAgICAgZm9yICg7OykNCiAgICAgICB7DQogIGlmICgoc3ludGF4 ICYgKCgoKCgoKCgoKCgoKCgoKCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkNCiAg ICAgICYmIGMgPT0gJz8nICYmICh6ZXJvX3RpbWVzX29rIHx8IG1hbnlfdGltZXNfb2spKQ0KICAg IGdyZWVkeSA9IDA7DQogIGVsc2UNCiAgICB7DQogICAgICB6ZXJvX3RpbWVzX29rIHw9IGMgIT0g JysnOw0KICAgICAgbWFueV90aW1lc19vayB8PSBjICE9ICc/JzsNCiAgICB9DQoNCiAgaWYgKHAg PT0gcGVuZCkNCiAgICBicmVhazsNCiAgZWxzZSBpZiAoKnAgPT0gJyonDQogICAgfHwgKCEoc3lu dGF4ICYgKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpKQ0KICAgICAgICAmJiAoKnAgPT0g JysnIHx8ICpwID09ICc/JykpKQ0KICAgIDsNCiAgZWxzZSBpZiAoc3ludGF4ICYgKCgodW5zaWdu ZWQgbG9uZyBpbnQpIDEpIDw8IDEpICYmICpwID09ICdcXCcpDQogICAgew0KICAgICAgaWYgKHAr MSA9PSBwZW5kKQ0KICAgICAgICBkbyB7IGRvIHsgaWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJs ZSkgZnJlZSAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNv bXBpbGVfc3RhY2suc3RhY2spOyByZXR1cm4gUkVHX0VFU0NBUEU7IH0gd2hpbGUgKDApOw0KICAg ICAgaWYgKHBbMV0gPT0gJysnIHx8IHBbMV0gPT0gJz8nKQ0KICAgICAgICBkbyB7IGludCBsZW47 IGlmIChwID09IHBlbmQpIHJldHVybiBSRUdfRUVORDsgYyA9ICgobGVuKSA9IDEsICoocCkpOyBw ICs9IGxlbjsgfSB3aGlsZSAoMCk7DQogICAgICBlbHNlDQogICAgICAgIGJyZWFrOw0KICAgIH0N CiAgZWxzZQ0KICAgIGJyZWFrOw0KDQogIGRvIHsgaW50IGxlbjsgaWYgKHAgPT0gcGVuZCkgcmV0 dXJuIFJFR19FRU5EOyBjID0gKChsZW4pID0gMSwgKihwKSk7IHAgKz0gbGVuOyB9IHdoaWxlICgw KTsNCiAgICAgICAgfQ0KDQoNCg0KICAgICBpZiAoIWxhc3RzdGFydCB8fCBsYXN0c3RhcnQgPT0g YikNCiAgICAgICBicmVhazsNCg0KDQoNCiAgICAgaWYgKGdyZWVkeSkNCiAgICAgICB7DQogIGlm IChtYW55X3RpbWVzX29rKQ0KICAgIHsNCiAgICAgIGJvb2xlYW4gc2ltcGxlID0gc2tpcF9vbmVf Y2hhciAobGFzdHN0YXJ0KSA9PSBiOw0KICAgICAgc2l6ZV90IHN0YXJ0b2Zmc2V0ID0gMDsNCiAg ICAgIHJlX29wY29kZV90IG9maiA9DQoNCiAgICAgICAgKHNpbXBsZSB8fCAhYW5hbHlzZV9maXJz dCAobGFzdHN0YXJ0LCBiLCAoKHZvaWQgKikwKSwgMCkpDQogICAgICAgID8gb25fZmFpbHVyZV9q dW1wIDogb25fZmFpbHVyZV9qdW1wX2xvb3A7DQogICAgICA7DQoNCiAgICAgIGlmICghemVyb190 aW1lc19vayAmJiBzaW1wbGUpDQogICAgICAgIHsNCg0KDQogICAgICAgdW5zaWduZWQgY2hhciAq cDEsICpwMjsNCiAgICAgICBzdGFydG9mZnNldCA9IGIgLSBsYXN0c3RhcnQ7DQogICAgICAgd2hp bGUgKChzaXplX3QpIChiIC0gYnVmcC0+YnVmZmVyICsgKHN0YXJ0b2Zmc2V0KSkgPiBidWZwLT5h bGxvY2F0ZWQpIGRvIHsgdW5zaWduZWQgY2hhciAqb2xkX2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsg aWYgKGJ1ZnAtPmFsbG9jYXRlZCA9PSAoMUwgPDwgMTUpKSByZXR1cm4gUkVHX0VTSVpFOyBidWZw LT5hbGxvY2F0ZWQgPDw9IDE7IGlmIChidWZwLT5hbGxvY2F0ZWQgPiAoMUwgPDwgMTUpKSBidWZw LT5hbGxvY2F0ZWQgPSAoMUwgPDwgMTUpOyAoKGJ1ZnAtPmJ1ZmZlcikgPSAodW5zaWduZWQgY2hh ciAqKSB4cmVhbGxvYyAoYnVmcC0+YnVmZmVyLCAoYnVmcC0+YWxsb2NhdGVkKSAqIHNpemVvZiAo dW5zaWduZWQgY2hhcikpKTsgaWYgKGJ1ZnAtPmJ1ZmZlciA9PSAoKHZvaWQgKikwKSkgcmV0dXJu IFJFR19FU1BBQ0U7IGlmIChvbGRfYnVmZmVyICE9IGJ1ZnAtPmJ1ZmZlcikgeyB1bnNpZ25lZCBj aGFyICpuZXdfYnVmZmVyID0gYnVmcC0+YnVmZmVyOyAoKGIpID0gbmV3X2J1ZmZlciArICgoYikg LSBvbGRfYnVmZmVyKSk7ICgoYmVnYWx0KSA9IG5ld19idWZmZXIgKyAoKGJlZ2FsdCkgLSBvbGRf YnVmZmVyKSk7IGlmIChmaXh1cF9hbHRfanVtcCkgKChmaXh1cF9hbHRfanVtcCkgPSBuZXdfYnVm ZmVyICsgKChmaXh1cF9hbHRfanVtcCkgLSBvbGRfYnVmZmVyKSk7IGlmIChsYXN0c3RhcnQpICgo bGFzdHN0YXJ0KSA9IG5ld19idWZmZXIgKyAoKGxhc3RzdGFydCkgLSBvbGRfYnVmZmVyKSk7IGlm IChwZW5kaW5nX2V4YWN0KSAoKHBlbmRpbmdfZXhhY3QpID0gbmV3X2J1ZmZlciArICgocGVuZGlu Z19leGFjdCkgLSBvbGRfYnVmZmVyKSk7IH0gfSB3aGlsZSAoMCk7DQogICAgICAgcDEgPSBiOyBw MiA9IGxhc3RzdGFydDsNCiAgICAgICB3aGlsZSAocDIgPCBwMSkNCiAgICAgICAgICpiKysgPSAq cDIrKzsNCiAgICAgICB6ZXJvX3RpbWVzX29rID0gMTsNCiAgICAgICAgfQ0KDQogICAgICB3aGls ZSAoKHNpemVfdCkgKGIgLSBidWZwLT5idWZmZXIgKyAoNikpID4gYnVmcC0+YWxsb2NhdGVkKSBk byB7IHVuc2lnbmVkIGNoYXIgKm9sZF9idWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZwLT5h bGxvY2F0ZWQgPT0gKDFMIDw8IDE1KSkgcmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2NhdGVk IDw8PSAxOyBpZiAoYnVmcC0+YWxsb2NhdGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2NhdGVk ID0gKDFMIDw8IDE1KTsgKChidWZwLT5idWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJlYWxs b2MgKGJ1ZnAtPmJ1ZmZlciwgKGJ1ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVkIGNo YXIpKSk7IGlmIChidWZwLT5idWZmZXIgPT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQQUNF OyBpZiAob2xkX2J1ZmZlciAhPSBidWZwLT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1 ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgKChiKSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1ZmZl cikpOyAoKGJlZ2FsdCkgPSBuZXdfYnVmZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikpOyBp ZiAoZml4dXBfYWx0X2p1bXApICgoZml4dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgoZml4 dXBfYWx0X2p1bXApIC0gb2xkX2J1ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFydCkg PSBuZXdfYnVmZmVyICsgKChsYXN0c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGluZ19l eGFjdCkgKChwZW5kaW5nX2V4YWN0KSA9IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3QpIC0g b2xkX2J1ZmZlcikpOyB9IH0gd2hpbGUgKDApOw0KICAgICAgaWYgKCF6ZXJvX3RpbWVzX29rKQ0K DQogICAgICAgIHN0b3JlX29wMSAob2ZqLCBiLCAoYiArIDYpIC0gKGIpIC0gMyk7DQogICAgICBl bHNlDQoNCg0KDQoNCiAgICAgICAgaW5zZXJ0X29wMSAoc2ltcGxlID8gb25fZmFpbHVyZV9qdW1w X3NtYXJ0IDogb2ZqLCBsYXN0c3RhcnQgKyBzdGFydG9mZnNldCwgKGIgKyA2KSAtIChsYXN0c3Rh cnQgKyBzdGFydG9mZnNldCkgLSAzLCBiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7DQogICAgICBiICs9IDM7DQogICAgICBzdG9yZV9vcDEgKGp1bXAsIGIsIChsYXN0 c3RhcnQgKyBzdGFydG9mZnNldCkgLSAoYikgLSAzKTsNCiAgICAgIGIgKz0gMzsNCiAgICB9DQog IGVsc2UNCiAgICB7DQoNCiAgICAgIDsNCiAgICAgIHdoaWxlICgoc2l6ZV90KSAoYiAtIGJ1ZnAt PmJ1ZmZlciArICgzKSkgPiBidWZwLT5hbGxvY2F0ZWQpIGRvIHsgdW5zaWduZWQgY2hhciAqb2xk X2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA9PSAoMUwgPDwgMTUp KSByZXR1cm4gUkVHX0VTSVpFOyBidWZwLT5hbGxvY2F0ZWQgPDw9IDE7IGlmIChidWZwLT5hbGxv Y2F0ZWQgPiAoMUwgPDwgMTUpKSBidWZwLT5hbGxvY2F0ZWQgPSAoMUwgPDwgMTUpOyAoKGJ1ZnAt PmJ1ZmZlcikgPSAodW5zaWduZWQgY2hhciAqKSB4cmVhbGxvYyAoYnVmcC0+YnVmZmVyLCAoYnVm cC0+YWxsb2NhdGVkKSAqIHNpemVvZiAodW5zaWduZWQgY2hhcikpKTsgaWYgKGJ1ZnAtPmJ1ZmZl ciA9PSAoKHZvaWQgKikwKSkgcmV0dXJuIFJFR19FU1BBQ0U7IGlmIChvbGRfYnVmZmVyICE9IGJ1 ZnAtPmJ1ZmZlcikgeyB1bnNpZ25lZCBjaGFyICpuZXdfYnVmZmVyID0gYnVmcC0+YnVmZmVyOyAo KGIpID0gbmV3X2J1ZmZlciArICgoYikgLSBvbGRfYnVmZmVyKSk7ICgoYmVnYWx0KSA9IG5ld19i dWZmZXIgKyAoKGJlZ2FsdCkgLSBvbGRfYnVmZmVyKSk7IGlmIChmaXh1cF9hbHRfanVtcCkgKChm aXh1cF9hbHRfanVtcCkgPSBuZXdfYnVmZmVyICsgKChmaXh1cF9hbHRfanVtcCkgLSBvbGRfYnVm ZmVyKSk7IGlmIChsYXN0c3RhcnQpICgobGFzdHN0YXJ0KSA9IG5ld19idWZmZXIgKyAoKGxhc3Rz dGFydCkgLSBvbGRfYnVmZmVyKSk7IGlmIChwZW5kaW5nX2V4YWN0KSAoKHBlbmRpbmdfZXhhY3Qp ID0gbmV3X2J1ZmZlciArICgocGVuZGluZ19leGFjdCkgLSBvbGRfYnVmZmVyKSk7IH0gfSB3aGls ZSAoMCk7DQogICAgICBpbnNlcnRfb3AxIChvbl9mYWlsdXJlX2p1bXAsIGxhc3RzdGFydCwgKGIg KyAzKSAtIChsYXN0c3RhcnQpIC0gMywgYik7DQogICAgICBiICs9IDM7DQogICAgfQ0KICAgICAg IH0NCiAgICAgZWxzZQ0KICAgICAgIHsNCg0KICB3aGlsZSAoKHNpemVfdCkgKGIgLSBidWZwLT5i dWZmZXIgKyAoNykpID4gYnVmcC0+YWxsb2NhdGVkKSBkbyB7IHVuc2lnbmVkIGNoYXIgKm9sZF9i dWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZwLT5hbGxvY2F0ZWQgPT0gKDFMIDw8IDE1KSkg cmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2NhdGVkIDw8PSAxOyBpZiAoYnVmcC0+YWxsb2Nh dGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2NhdGVkID0gKDFMIDw8IDE1KTsgKChidWZwLT5i dWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJlYWxsb2MgKGJ1ZnAtPmJ1ZmZlciwgKGJ1ZnAt PmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSk7IGlmIChidWZwLT5idWZmZXIg PT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQQUNFOyBpZiAob2xkX2J1ZmZlciAhPSBidWZw LT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgKChi KSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1ZmZlcikpOyAoKGJlZ2FsdCkgPSBuZXdfYnVm ZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikpOyBpZiAoZml4dXBfYWx0X2p1bXApICgoZml4 dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgoZml4dXBfYWx0X2p1bXApIC0gb2xkX2J1ZmZl cikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFydCkgPSBuZXdfYnVmZmVyICsgKChsYXN0c3Rh cnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGluZ19leGFjdCkgKChwZW5kaW5nX2V4YWN0KSA9 IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3QpIC0gb2xkX2J1ZmZlcikpOyB9IH0gd2hpbGUg KDApOw0KICBpZiAobWFueV90aW1lc19vaykNCiAgICB7DQogICAgICBib29sZWFuIGVtcHR5cCA9 IGFuYWx5c2VfZmlyc3QgKGxhc3RzdGFydCwgYiwgKCh2b2lkICopMCksIDApOw0KDQoNCg0KDQog ICAgICBpZiAoZW1wdHlwKSBkbyB7IHdoaWxlICgoc2l6ZV90KSAoYiAtIGJ1ZnAtPmJ1ZmZlciAr ICgxKSkgPiBidWZwLT5hbGxvY2F0ZWQpIGRvIHsgdW5zaWduZWQgY2hhciAqb2xkX2J1ZmZlciA9 IGJ1ZnAtPmJ1ZmZlcjsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA9PSAoMUwgPDwgMTUpKSByZXR1cm4g UkVHX0VTSVpFOyBidWZwLT5hbGxvY2F0ZWQgPDw9IDE7IGlmIChidWZwLT5hbGxvY2F0ZWQgPiAo MUwgPDwgMTUpKSBidWZwLT5hbGxvY2F0ZWQgPSAoMUwgPDwgMTUpOyAoKGJ1ZnAtPmJ1ZmZlcikg PSAodW5zaWduZWQgY2hhciAqKSB4cmVhbGxvYyAoYnVmcC0+YnVmZmVyLCAoYnVmcC0+YWxsb2Nh dGVkKSAqIHNpemVvZiAodW5zaWduZWQgY2hhcikpKTsgaWYgKGJ1ZnAtPmJ1ZmZlciA9PSAoKHZv aWQgKikwKSkgcmV0dXJuIFJFR19FU1BBQ0U7IGlmIChvbGRfYnVmZmVyICE9IGJ1ZnAtPmJ1ZmZl cikgeyB1bnNpZ25lZCBjaGFyICpuZXdfYnVmZmVyID0gYnVmcC0+YnVmZmVyOyAoKGIpID0gbmV3 X2J1ZmZlciArICgoYikgLSBvbGRfYnVmZmVyKSk7ICgoYmVnYWx0KSA9IG5ld19idWZmZXIgKyAo KGJlZ2FsdCkgLSBvbGRfYnVmZmVyKSk7IGlmIChmaXh1cF9hbHRfanVtcCkgKChmaXh1cF9hbHRf anVtcCkgPSBuZXdfYnVmZmVyICsgKChmaXh1cF9hbHRfanVtcCkgLSBvbGRfYnVmZmVyKSk7IGlm IChsYXN0c3RhcnQpICgobGFzdHN0YXJ0KSA9IG5ld19idWZmZXIgKyAoKGxhc3RzdGFydCkgLSBv bGRfYnVmZmVyKSk7IGlmIChwZW5kaW5nX2V4YWN0KSAoKHBlbmRpbmdfZXhhY3QpID0gbmV3X2J1 ZmZlciArICgocGVuZGluZ19leGFjdCkgLSBvbGRfYnVmZmVyKSk7IH0gfSB3aGlsZSAoMCk7ICpi KysgPSAodW5zaWduZWQgY2hhcikgKG5vX29wKTsgfSB3aGlsZSAoMCk7DQogICAgICBzdG9yZV9v cDEgKGVtcHR5cCA/IG9uX2ZhaWx1cmVfanVtcF9uYXN0eWxvb3AgOiBvbl9mYWlsdXJlX2p1bXAs IGIsIChsYXN0c3RhcnQpIC0gKGIpIC0gMykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsNCiAgICAgIGIgKz0gMzsNCiAgICAgIGlmICh6ZXJvX3RpbWVzX29rKQ0KICAgICAg ICB7DQoNCg0KDQogICBpbnNlcnRfb3AxIChqdW1wLCBsYXN0c3RhcnQsIChiKSAtIChsYXN0c3Rh cnQpIC0gMywgYik7DQogICBiICs9IDM7DQogICAgICAgIH0NCiAgICB9DQogIGVsc2UNCiAgICB7 DQoNCiAgICAgIGluc2VydF9vcDEgKGp1bXAsIGxhc3RzdGFydCwgKGIgKyAzKSAtIChsYXN0c3Rh cnQpIC0gMywgYik7DQogICAgICBiICs9IDM7DQogICAgICBpbnNlcnRfb3AxIChvbl9mYWlsdXJl X2p1bXAsIGxhc3RzdGFydCwgKGxhc3RzdGFydCArIDYpIC0gKGxhc3RzdGFydCkgLSAzLCBiKTsN CiAgICAgIGIgKz0gMzsNCiAgICB9DQogICAgICAgfQ0KICAgfQ0KICAgcGVuZGluZ19leGFjdCA9 IDA7DQogICBicmVhazsNCg0KDQogY2FzZSAnLic6DQogICBsYXN0c3RhcnQgPSBiOw0KICAgZG8g eyB3aGlsZSAoKHNpemVfdCkgKGIgLSBidWZwLT5idWZmZXIgKyAoMSkpID4gYnVmcC0+YWxsb2Nh dGVkKSBkbyB7IHVuc2lnbmVkIGNoYXIgKm9sZF9idWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChi dWZwLT5hbGxvY2F0ZWQgPT0gKDFMIDw8IDE1KSkgcmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxs b2NhdGVkIDw8PSAxOyBpZiAoYnVmcC0+YWxsb2NhdGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxs b2NhdGVkID0gKDFMIDw8IDE1KTsgKChidWZwLT5idWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikg eHJlYWxsb2MgKGJ1ZnAtPmJ1ZmZlciwgKGJ1ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2ln bmVkIGNoYXIpKSk7IGlmIChidWZwLT5idWZmZXIgPT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdf RVNQQUNFOyBpZiAob2xkX2J1ZmZlciAhPSBidWZwLT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAq bmV3X2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgKChiKSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xk X2J1ZmZlcikpOyAoKGJlZ2FsdCkgPSBuZXdfYnVmZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZl cikpOyBpZiAoZml4dXBfYWx0X2p1bXApICgoZml4dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciAr ICgoZml4dXBfYWx0X2p1bXApIC0gb2xkX2J1ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3Rz dGFydCkgPSBuZXdfYnVmZmVyICsgKChsYXN0c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVu ZGluZ19leGFjdCkgKChwZW5kaW5nX2V4YWN0KSA9IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhh Y3QpIC0gb2xkX2J1ZmZlcikpOyB9IH0gd2hpbGUgKDApOyAqYisrID0gKHVuc2lnbmVkIGNoYXIp IChhbnljaGFyKTsgfSB3aGlsZSAoMCk7DQogICBicmVhazsNCg0KDQogY2FzZSAnWyc6DQogICB7 DQogICAgIHJlX2NoYXIgKnAxOw0KDQogICAgICgocmFuZ2VfdGFibGVfd29yaykudXNlZCA9IDAs IChyYW5nZV90YWJsZV93b3JrKS5iaXRzID0gMCk7DQoNCiAgICAgaWYgKHAgPT0gcGVuZCkgZG8g eyBkbyB7IGlmICgocmFuZ2VfdGFibGVfd29yaykudGFibGUpIGZyZWUgKChyYW5nZV90YWJsZV93 b3JrKS50YWJsZSk7IH0gd2hpbGUgKDApOyBmcmVlIChjb21waWxlX3N0YWNrLnN0YWNrKTsgcmV0 dXJuIFJFR19FQlJBQ0s7IH0gd2hpbGUgKDApOw0KDQoNCg0KICAgICB3aGlsZSAoKHNpemVfdCkg KGIgLSBidWZwLT5idWZmZXIgKyAoMzQpKSA+IGJ1ZnAtPmFsbG9jYXRlZCkgZG8geyB1bnNpZ25l ZCBjaGFyICpvbGRfYnVmZmVyID0gYnVmcC0+YnVmZmVyOyBpZiAoYnVmcC0+YWxsb2NhdGVkID09 ICgxTCA8PCAxNSkpIHJldHVybiBSRUdfRVNJWkU7IGJ1ZnAtPmFsbG9jYXRlZCA8PD0gMTsgaWYg KGJ1ZnAtPmFsbG9jYXRlZCA+ICgxTCA8PCAxNSkpIGJ1ZnAtPmFsbG9jYXRlZCA9ICgxTCA8PCAx NSk7ICgoYnVmcC0+YnVmZmVyKSA9ICh1bnNpZ25lZCBjaGFyICopIHhyZWFsbG9jIChidWZwLT5i dWZmZXIsIChidWZwLT5hbGxvY2F0ZWQpICogc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkpOyBpZiAo YnVmcC0+YnVmZmVyID09ICgodm9pZCAqKTApKSByZXR1cm4gUkVHX0VTUEFDRTsgaWYgKG9sZF9i dWZmZXIgIT0gYnVmcC0+YnVmZmVyKSB7IHVuc2lnbmVkIGNoYXIgKm5ld19idWZmZXIgPSBidWZw LT5idWZmZXI7ICgoYikgPSBuZXdfYnVmZmVyICsgKChiKSAtIG9sZF9idWZmZXIpKTsgKChiZWdh bHQpID0gbmV3X2J1ZmZlciArICgoYmVnYWx0KSAtIG9sZF9idWZmZXIpKTsgaWYgKGZpeHVwX2Fs dF9qdW1wKSAoKGZpeHVwX2FsdF9qdW1wKSA9IG5ld19idWZmZXIgKyAoKGZpeHVwX2FsdF9qdW1w KSAtIG9sZF9idWZmZXIpKTsgaWYgKGxhc3RzdGFydCkgKChsYXN0c3RhcnQpID0gbmV3X2J1ZmZl ciArICgobGFzdHN0YXJ0KSAtIG9sZF9idWZmZXIpKTsgaWYgKHBlbmRpbmdfZXhhY3QpICgocGVu ZGluZ19leGFjdCkgPSBuZXdfYnVmZmVyICsgKChwZW5kaW5nX2V4YWN0KSAtIG9sZF9idWZmZXIp KTsgfSB9IHdoaWxlICgwKTsNCg0KICAgICBsYXN0c3RhcnQgPSBiOw0KDQoNCg0KICAgICBkbyB7 IHdoaWxlICgoc2l6ZV90KSAoYiAtIGJ1ZnAtPmJ1ZmZlciArICgxKSkgPiBidWZwLT5hbGxvY2F0 ZWQpIGRvIHsgdW5zaWduZWQgY2hhciAqb2xkX2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgaWYgKGJ1 ZnAtPmFsbG9jYXRlZCA9PSAoMUwgPDwgMTUpKSByZXR1cm4gUkVHX0VTSVpFOyBidWZwLT5hbGxv Y2F0ZWQgPDw9IDE7IGlmIChidWZwLT5hbGxvY2F0ZWQgPiAoMUwgPDwgMTUpKSBidWZwLT5hbGxv Y2F0ZWQgPSAoMUwgPDwgMTUpOyAoKGJ1ZnAtPmJ1ZmZlcikgPSAodW5zaWduZWQgY2hhciAqKSB4 cmVhbGxvYyAoYnVmcC0+YnVmZmVyLCAoYnVmcC0+YWxsb2NhdGVkKSAqIHNpemVvZiAodW5zaWdu ZWQgY2hhcikpKTsgaWYgKGJ1ZnAtPmJ1ZmZlciA9PSAoKHZvaWQgKikwKSkgcmV0dXJuIFJFR19F U1BBQ0U7IGlmIChvbGRfYnVmZmVyICE9IGJ1ZnAtPmJ1ZmZlcikgeyB1bnNpZ25lZCBjaGFyICpu ZXdfYnVmZmVyID0gYnVmcC0+YnVmZmVyOyAoKGIpID0gbmV3X2J1ZmZlciArICgoYikgLSBvbGRf YnVmZmVyKSk7ICgoYmVnYWx0KSA9IG5ld19idWZmZXIgKyAoKGJlZ2FsdCkgLSBvbGRfYnVmZmVy KSk7IGlmIChmaXh1cF9hbHRfanVtcCkgKChmaXh1cF9hbHRfanVtcCkgPSBuZXdfYnVmZmVyICsg KChmaXh1cF9hbHRfanVtcCkgLSBvbGRfYnVmZmVyKSk7IGlmIChsYXN0c3RhcnQpICgobGFzdHN0 YXJ0KSA9IG5ld19idWZmZXIgKyAoKGxhc3RzdGFydCkgLSBvbGRfYnVmZmVyKSk7IGlmIChwZW5k aW5nX2V4YWN0KSAoKHBlbmRpbmdfZXhhY3QpID0gbmV3X2J1ZmZlciArICgocGVuZGluZ19leGFj dCkgLSBvbGRfYnVmZmVyKSk7IH0gfSB3aGlsZSAoMCk7ICpiKysgPSAodW5zaWduZWQgY2hhcikg KCpwID09ICdeJyA/IGNoYXJzZXRfbm90IDogY2hhcnNldCk7IH0gd2hpbGUgKDApOw0KICAgICBp ZiAoKnAgPT0gJ14nKQ0KICAgICAgIHArKzsNCg0KDQogICAgIHAxID0gcDsNCg0KDQogICAgIGRv IHsgd2hpbGUgKChzaXplX3QpIChiIC0gYnVmcC0+YnVmZmVyICsgKDEpKSA+IGJ1ZnAtPmFsbG9j YXRlZCkgZG8geyB1bnNpZ25lZCBjaGFyICpvbGRfYnVmZmVyID0gYnVmcC0+YnVmZmVyOyBpZiAo YnVmcC0+YWxsb2NhdGVkID09ICgxTCA8PCAxNSkpIHJldHVybiBSRUdfRVNJWkU7IGJ1ZnAtPmFs bG9jYXRlZCA8PD0gMTsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA+ICgxTCA8PCAxNSkpIGJ1ZnAtPmFs bG9jYXRlZCA9ICgxTCA8PCAxNSk7ICgoYnVmcC0+YnVmZmVyKSA9ICh1bnNpZ25lZCBjaGFyICop IHhyZWFsbG9jIChidWZwLT5idWZmZXIsIChidWZwLT5hbGxvY2F0ZWQpICogc2l6ZW9mICh1bnNp Z25lZCBjaGFyKSkpOyBpZiAoYnVmcC0+YnVmZmVyID09ICgodm9pZCAqKTApKSByZXR1cm4gUkVH X0VTUEFDRTsgaWYgKG9sZF9idWZmZXIgIT0gYnVmcC0+YnVmZmVyKSB7IHVuc2lnbmVkIGNoYXIg Km5ld19idWZmZXIgPSBidWZwLT5idWZmZXI7ICgoYikgPSBuZXdfYnVmZmVyICsgKChiKSAtIG9s ZF9idWZmZXIpKTsgKChiZWdhbHQpID0gbmV3X2J1ZmZlciArICgoYmVnYWx0KSAtIG9sZF9idWZm ZXIpKTsgaWYgKGZpeHVwX2FsdF9qdW1wKSAoKGZpeHVwX2FsdF9qdW1wKSA9IG5ld19idWZmZXIg KyAoKGZpeHVwX2FsdF9qdW1wKSAtIG9sZF9idWZmZXIpKTsgaWYgKGxhc3RzdGFydCkgKChsYXN0 c3RhcnQpID0gbmV3X2J1ZmZlciArICgobGFzdHN0YXJ0KSAtIG9sZF9idWZmZXIpKTsgaWYgKHBl bmRpbmdfZXhhY3QpICgocGVuZGluZ19leGFjdCkgPSBuZXdfYnVmZmVyICsgKChwZW5kaW5nX2V4 YWN0KSAtIG9sZF9idWZmZXIpKTsgfSB9IHdoaWxlICgwKTsgKmIrKyA9ICh1bnNpZ25lZCBjaGFy KSAoKDEgPDwgOCkgLyA4KTsgfSB3aGlsZSAoMCk7DQoNCg0KICAgICAoX19idWlsdGluX2NvbnN0 YW50X3AgKCgxIDw8IDgpIC8gOCkgJiYgKCgxIDw8IDgpIC8gOCkgPT0gMCA/IChfX3dhcm5fbWVt c2V0X3plcm9fbGVuICgpLCAodm9pZCkgKDApLCAodm9pZCkgKCgxIDw8IDgpIC8gOCksICh2b2lk ICopIChiKSkgOiAoKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoYiwgMCkgIT0gKHNpemVfdCkgLTEp ID8gX19idWlsdGluX19fbWVtc2V0X2NoayAoYiwgMCwgKDEgPDwgOCkgLyA4LCBfX2J1aWx0aW5f b2JqZWN0X3NpemUgKGIsIDApKSA6IF9fbWVtc2V0X2ljaGsgKGIsIDAsICgxIDw8IDgpIC8gOCkp KTsNCg0KDQogICAgIGlmICgocmVfb3Bjb2RlX3QpIGJbLTJdID09IGNoYXJzZXRfbm90DQogICYm IChzeW50YXggJiAoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKSkNCiAgICAgICAoYlsoKCdcbicpKSAv IDhdIHw9IDEgPDwgKCgnXG4nKSAlIDgpKTsNCg0KDQogICAgIGZvciAoOzspDQogICAgICAgew0K ICBib29sZWFuIGVzY2FwZWRfY2hhciA9IDA7DQogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAyID0g cDsNCiAgcmVfd2NoYXJfdCBjaDsNCg0KICBpZiAocCA9PSBwZW5kKSBkbyB7IGRvIHsgaWYgKChy YW5nZV90YWJsZV93b3JrKS50YWJsZSkgZnJlZSAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKTsg fSB3aGlsZSAoMCk7IGZyZWUgKGNvbXBpbGVfc3RhY2suc3RhY2spOyByZXR1cm4gUkVHX0VCUkFD SzsgfSB3aGlsZSAoMCk7DQoNCg0KDQoNCg0KICBkbyB7IGludCBsZW47IGlmIChwID09IHBlbmQp IHJldHVybiBSRUdfRUVORDsgYyA9ICgobGVuKSA9IDEsICoocCkpOyBwICs9IGxlbjsgfSB3aGls ZSAoMCk7DQoNCg0KICBpZiAoKHN5bnRheCAmICgodW5zaWduZWQgbG9uZyBpbnQpIDEpKSAmJiBj ID09ICdcXCcpDQogICAgew0KICAgICAgaWYgKHAgPT0gcGVuZCkgZG8geyBkbyB7IGlmICgocmFu Z2VfdGFibGVfd29yaykudGFibGUpIGZyZWUgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSk7IH0g d2hpbGUgKDApOyBmcmVlIChjb21waWxlX3N0YWNrLnN0YWNrKTsgcmV0dXJuIFJFR19FRVNDQVBF OyB9IHdoaWxlICgwKTsNCg0KICAgICAgZG8geyBpbnQgbGVuOyBpZiAocCA9PSBwZW5kKSByZXR1 cm4gUkVHX0VFTkQ7IGMgPSAoKGxlbikgPSAxLCAqKHApKTsgcCArPSBsZW47IH0gd2hpbGUgKDAp Ow0KICAgICAgZXNjYXBlZF9jaGFyID0gMTsNCiAgICB9DQogIGVsc2UNCiAgICB7DQoNCg0KDQog ICAgICBpZiAoYyA9PSAnXScgJiYgcDIgIT0gcDEpDQogICAgICAgIGJyZWFrOw0KICAgIH0NCg0K DQoNCg0KICBpZiAoIWVzY2FwZWRfY2hhciAmJg0KICAgICAgc3ludGF4ICYgKCgoKHVuc2lnbmVk IGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSAmJiBjID09ICdbJyAmJiAqcCA9PSAnOicpDQogICAg ew0KDQogICAgICB1bnNpZ25lZCBjaGFyIHN0cls5ICsgMV07DQogICAgICBjb25zdCB1bnNpZ25l ZCBjaGFyICpjbGFzc19iZWc7DQoNCiAgICAgIGRvIHsgaW50IGxlbjsgaWYgKHAgPT0gcGVuZCkg cmV0dXJuIFJFR19FRU5EOyBjID0gKChsZW4pID0gMSwgKihwKSk7IHAgKz0gbGVuOyB9IHdoaWxl ICgwKTsNCiAgICAgIGMxID0gMDsNCiAgICAgIGNsYXNzX2JlZyA9IHA7DQoNCg0KICAgICAgaWYg KHAgPT0gcGVuZCkgZG8geyBkbyB7IGlmICgocmFuZ2VfdGFibGVfd29yaykudGFibGUpIGZyZWUg KChyYW5nZV90YWJsZV93b3JrKS50YWJsZSk7IH0gd2hpbGUgKDApOyBmcmVlIChjb21waWxlX3N0 YWNrLnN0YWNrKTsgcmV0dXJuIFJFR19FQlJBQ0s7IH0gd2hpbGUgKDApOw0KDQogICAgICBmb3Ig KDs7KQ0KICAgICAgICB7DQogICAgICAgICAgZG8geyBpbnQgbGVuOyBpZiAocCA9PSBwZW5kKSBy ZXR1cm4gUkVHX0VFTkQ7IGMgPSAoKGxlbikgPSAxLCAqKHApKTsgcCArPSBsZW47IH0gd2hpbGUg KDApOw0KICAgICAgICAgIGlmICgoYyA9PSAnOicgJiYgKnAgPT0gJ10nKSB8fCBwID09IHBlbmQp DQogICAgICAgICAgICBicmVhazsNCiAgIGlmIChjMSA8IDkpDQogICAgIHN0cltjMSsrXSA9IGM7 DQogICBlbHNlDQoNCiAgICAgc3RyWzBdID0gJ1wwJzsNCiAgICAgICAgfQ0KICAgICAgc3RyW2Mx XSA9ICdcMCc7DQoNCg0KDQoNCg0KICAgICAgaWYgKGMgPT0gJzonICYmICpwID09ICddJykNCiAg ICAgICAgew0KICAgcmVfd2N0eXBlX3QgY2MgPSByZV93Y3R5cGUgKHN0cik7DQoNCiAgIGlmIChj YyA9PSAwKQ0KICAgICBkbyB7IGRvIHsgaWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSkgZnJl ZSAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNvbXBpbGVf c3RhY2suc3RhY2spOyByZXR1cm4gUkVHX0VDVFlQRTsgfSB3aGlsZSAoMCk7DQoNCg0KDQogICAg ICAgICAgICAgICAgICAgICAgICBkbyB7IGludCBsZW47IGlmIChwID09IHBlbmQpIHJldHVybiBS RUdfRUVORDsgYyA9ICgobGVuKSA9IDEsICoocCkpOyBwICs9IGxlbjsgfSB3aGlsZSAoMCk7DQoN CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwID09IHBlbmQpIGRvIHsgZG8geyBpZiAoKHJh bmdlX3RhYmxlX3dvcmspLnRhYmxlKSBmcmVlICgocmFuZ2VfdGFibGVfd29yaykudGFibGUpOyB9 IHdoaWxlICgwKTsgZnJlZSAoY29tcGlsZV9zdGFjay5zdGFjayk7IHJldHVybiBSRUdfRUJSQUNL OyB9IHdoaWxlICgwKTsNCg0KDQogICBmb3IgKGNoID0gMDsgY2ggPCAoMSA8PCA4KTsgKytjaCkN CiAgICAgaWYgKHJlX2lzd2N0eXBlIChjaCwgY2MpKQ0KICAgICAgIHsNCiAgICAgICAgIGMgPSAo KHRyYW5zbGF0ZSkgPyAoKHVuc2lnbmVkIGNoYXIpKHRyYW5zbGF0ZSlbKGNoKV0pIDogKGNoKSk7 DQogICAgICAgICBpZiAoYyA8ICgxIDw8IDgpKQ0KICAgIChiWygoYykpIC8gOF0gfD0gMSA8PCAo KGMpICUgOCkpOw0KICAgICAgIH0NCiMgMjk2MCAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3Mv cmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMi DQogICBpZiAoKDEgPDwgY2MpICYgKCgxIDw8IFJFQ0NfU1BBQ0UpIHwgKDEgPDwgUkVDQ19XT1JE KSkpDQogICAgIGJ1ZnAtPnVzZWRfc3ludGF4ID0gMTsNCg0KDQogICBjb250aW51ZTsNCiAgICAg ICAgfQ0KICAgICAgZWxzZQ0KICAgICAgICB7DQoNCiAgIHAgPSBjbGFzc19iZWc7DQogICAoYlso KCdbJykpIC8gOF0gfD0gMSA8PCAoKCdbJykgJSA4KSk7DQoNCg0KDQoNCiAgIGMgPSAnOic7DQog ICAgICAgIH0NCiAgICB9DQoNCiAgaWYgKHAgPCBwZW5kICYmIHBbMF0gPT0gJy0nICYmIHBbMV0g IT0gJ10nKQ0KICAgIHsNCg0KDQogICAgICBkbyB7IGludCBsZW47IGlmIChwID09IHBlbmQpIHJl dHVybiBSRUdfRUVORDsgYzEgPSAoKGxlbikgPSAxLCAqKHApKTsgcCArPSBsZW47IH0gd2hpbGUg KDApOw0KDQoNCiAgICAgIGRvIHsgaW50IGxlbjsgaWYgKHAgPT0gcGVuZCkgcmV0dXJuIFJFR19F RU5EOyBjMSA9ICgobGVuKSA9IDEsICoocCkpOyBwICs9IGxlbjsgfSB3aGlsZSAoMCk7DQoNCg0K DQoNCg0KDQoNCiAgICB9DQogIGVsc2UNCg0KICAgIGMxID0gYzsNCg0KICBpZiAoYyA+IGMxKQ0K ICAgIHsNCiAgICAgIGlmIChzeW50YXggJiAoKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25n IGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkpDQogICAgICAg IGRvIHsgZG8geyBpZiAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKSBmcmVlICgocmFuZ2VfdGFi bGVfd29yaykudGFibGUpOyB9IHdoaWxlICgwKTsgZnJlZSAoY29tcGlsZV9zdGFjay5zdGFjayk7 IHJldHVybiBSRUdfRVJBTkdFWDsgfSB3aGlsZSAoMCk7DQoNCiAgICB9DQogIGVsc2UNCiAgICB7 DQoNCg0KICAgICAgZm9yICg7IGMgPD0gYzE7IGMrKykNCiAgICAgICAgew0KICAgY2ggPSAoKHRy YW5zbGF0ZSkgPyAoKHVuc2lnbmVkIGNoYXIpKHRyYW5zbGF0ZSlbKGMpXSkgOiAoYykpOw0KICAg aWYgKGNoIDwgKDEgPDwgOCkpDQogICAgIChiWygoY2gpKSAvIDhdIHw9IDEgPDwgKChjaCkgJSA4 KSk7DQogICAgICAgIH0NCiMgMzA0MyAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFz ZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQogICAg fQ0KICAgICAgIH0NCg0KDQoNCiAgICAgd2hpbGUgKChpbnQpIGJbLTFdID4gMCAmJiBiW2JbLTFd IC0gMV0gPT0gMCkNCiAgICAgICBiWy0xXS0tOw0KICAgICBiICs9IGJbLTFdOw0KDQoNCiAgICAg aWYgKCgocmFuZ2VfdGFibGVfd29yaykudXNlZCkNCiAgfHwgKChyYW5nZV90YWJsZV93b3JrKS5i aXRzKSkNCiAgICAgICB7DQogIGludCBpOw0KICBpbnQgdXNlZCA9ICgocmFuZ2VfdGFibGVfd29y aykudXNlZCk7DQoNCg0KDQoNCiAgd2hpbGUgKChzaXplX3QpIChiIC0gYnVmcC0+YnVmZmVyICsg KDQgKyB1c2VkICogMykpID4gYnVmcC0+YWxsb2NhdGVkKSBkbyB7IHVuc2lnbmVkIGNoYXIgKm9s ZF9idWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZwLT5hbGxvY2F0ZWQgPT0gKDFMIDw8IDE1 KSkgcmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2NhdGVkIDw8PSAxOyBpZiAoYnVmcC0+YWxs b2NhdGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2NhdGVkID0gKDFMIDw8IDE1KTsgKChidWZw LT5idWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJlYWxsb2MgKGJ1ZnAtPmJ1ZmZlciwgKGJ1 ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSk7IGlmIChidWZwLT5idWZm ZXIgPT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQQUNFOyBpZiAob2xkX2J1ZmZlciAhPSBi dWZwLT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsg KChiKSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1ZmZlcikpOyAoKGJlZ2FsdCkgPSBuZXdf YnVmZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikpOyBpZiAoZml4dXBfYWx0X2p1bXApICgo Zml4dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgoZml4dXBfYWx0X2p1bXApIC0gb2xkX2J1 ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFydCkgPSBuZXdfYnVmZmVyICsgKChsYXN0 c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGluZ19leGFjdCkgKChwZW5kaW5nX2V4YWN0 KSA9IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3QpIC0gb2xkX2J1ZmZlcikpOyB9IH0gd2hp bGUgKDApOw0KDQoNCiAgbGFzdHN0YXJ0WzFdIHw9IDB4ODA7DQoNCg0KDQogICpiKysgPSAoKHJh bmdlX3RhYmxlX3dvcmspLmJpdHMpICYgMHhmZjsNCiAgKmIrKyA9ICgocmFuZ2VfdGFibGVfd29y aykuYml0cykgPj4gODsNCg0KICBkbyB7IGRvIHsgKGIpWzBdID0gKHVzZWQgLyAyKSAmIDAzNzc7 IChiKVsxXSA9ICh1c2VkIC8gMikgPj4gODsgfSB3aGlsZSAoMCk7IChiKSArPSAyOyB9IHdoaWxl ICgwKTsNCiAgZm9yIChpID0gMDsgaSA8IHVzZWQ7IGkrKykNCiAgICBkbyB7IChiKVswXSA9ICgo KHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlW2ldKSkgJiAwMzc3OyAoYilbMV0gPSAoKCgocmFuZ2Vf dGFibGVfd29yaykudGFibGVbaV0pKSA+PiA4KSAmIDAzNzc7IChiKVsyXSA9ICgoKHJhbmdlX3Rh YmxlX3dvcmspLnRhYmxlW2ldKSkgPj4gMTY7IChiKSArPSAzOyB9IHdoaWxlICgwKQ0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7DQogICAgICAg fQ0KICAgfQ0KICAgYnJlYWs7DQoNCg0KIGNhc2UgJygnOg0KICAgaWYgKHN5bnRheCAmICgoKCgo KCgoKCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkNCiAg ICAgZ290byBoYW5kbGVfb3BlbjsNCiAgIGVsc2UNCiAgICAgZ290byBub3JtYWxfY2hhcjsNCg0K DQogY2FzZSAnKSc6DQogICBpZiAoc3ludGF4ICYgKCgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9u ZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKQ0KICAgICBnb3RvIGhhbmRsZV9jbG9zZTsN CiAgIGVsc2UNCiAgICAgZ290byBub3JtYWxfY2hhcjsNCg0KDQogY2FzZSAnXG4nOg0KICAgaWYg KHN5bnRheCAmICgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkpDQog ICAgIGdvdG8gaGFuZGxlX2FsdDsNCiAgIGVsc2UNCiAgICAgZ290byBub3JtYWxfY2hhcjsNCg0K DQogY2FzZSAnfCc6DQogICBpZiAoc3ludGF4ICYgKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBs b25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkpDQogICAgIGdvdG8g aGFuZGxlX2FsdDsNCiAgIGVsc2UNCiAgICAgZ290byBub3JtYWxfY2hhcjsNCg0KDQogY2FzZSAn eyc6DQogICAgaWYgKHN5bnRheCAmICgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpICYmIHN5 bnRheCAmICgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp KQ0KICAgICAgZ290byBoYW5kbGVfaW50ZXJ2YWw7DQogICAgZWxzZQ0KICAgICAgZ290byBub3Jt YWxfY2hhcjsNCg0KDQogY2FzZSAnXFwnOg0KICAgaWYgKHAgPT0gcGVuZCkgZG8geyBkbyB7IGlm ICgocmFuZ2VfdGFibGVfd29yaykudGFibGUpIGZyZWUgKChyYW5nZV90YWJsZV93b3JrKS50YWJs ZSk7IH0gd2hpbGUgKDApOyBmcmVlIChjb21waWxlX3N0YWNrLnN0YWNrKTsgcmV0dXJuIFJFR19F RVNDQVBFOyB9IHdoaWxlICgwKTsNCg0KDQoNCg0KICAgZG8geyBpbnQgbGVuOyBpZiAocCA9PSBw ZW5kKSByZXR1cm4gUkVHX0VFTkQ7IGMgPSAoKGxlbikgPSAxLCAqKHApKTsgcCArPSBsZW47IH0g d2hpbGUgKDApOw0KDQogICBzd2l0Y2ggKGMpDQogICAgIHsNCiAgICAgY2FzZSAnKCc6DQogICAg ICAgaWYgKHN5bnRheCAmICgoKCgoKCgoKCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSkNCiAgZ290byBub3JtYWxfYmFja3NsYXNoOw0KDQogICAgIGhhbmRs ZV9vcGVuOg0KICAgICAgIHsNCiAgaW50IHNoeSA9IDA7DQogIHJlZ251bV90IHJlZ251bSA9IDA7 DQogIGlmIChwKzEgPCBwZW5kKQ0KICAgIHsNCg0KICAgICAgaWYgKChzeW50YXggJiAoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkgJiYgKnAg PT0gJz8nKQ0KICAgICAgICB7DQogICBkbyB7IGludCBsZW47IGlmIChwID09IHBlbmQpIHJldHVy biBSRUdfRUVORDsgYyA9ICgobGVuKSA9IDEsICoocCkpOyBwICs9IGxlbjsgfSB3aGlsZSAoMCk7 DQogICB3aGlsZSAoIXNoeSkNCiAgICAgew0KICAgICAgIGRvIHsgaW50IGxlbjsgaWYgKHAgPT0g cGVuZCkgcmV0dXJuIFJFR19FRU5EOyBjID0gKChsZW4pID0gMSwgKihwKSk7IHAgKz0gbGVuOyB9 IHdoaWxlICgwKTsNCiAgICAgICBzd2l0Y2ggKGMpDQogICAgICAgICB7DQogICAgICAgICBjYXNl ICc6Jzogc2h5ID0gMTsgYnJlYWs7DQogICAgICAgICBjYXNlICcwJzoNCg0KDQogICAgaWYgKHJl Z251bSA9PSAwKQ0KICAgICAgZG8geyBkbyB7IGlmICgocmFuZ2VfdGFibGVfd29yaykudGFibGUp IGZyZWUgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSk7IH0gd2hpbGUgKDApOyBmcmVlIChjb21w aWxlX3N0YWNrLnN0YWNrKTsgcmV0dXJuIFJFR19CQURQQVQ7IH0gd2hpbGUgKDApOw0KICAgICAg ICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6DQogICAgICAgICBjYXNl ICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6DQogICAgcmVnbnVt ID0gMTAqcmVnbnVtICsgKGMgLSAnMCcpOyBicmVhazsNCiAgICAgICAgIGRlZmF1bHQ6DQoNCiAg ICBkbyB7IGRvIHsgaWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSkgZnJlZSAoKHJhbmdlX3Rh YmxlX3dvcmspLnRhYmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNvbXBpbGVfc3RhY2suc3RhY2sp OyByZXR1cm4gUkVHX0JBRFBBVDsgfSB3aGlsZSAoMCk7DQogICAgICAgICB9DQogICAgIH0NCiAg ICAgICAgfQ0KICAgIH0NCg0KICBpZiAoIXNoeSkNCiAgICByZWdudW0gPSArK2J1ZnAtPnJlX25z dWI7DQogIGVsc2UgaWYgKHJlZ251bSkNCiAgICB7DQogICAgICBzaHkgPSAwOw0KICAgICAgaWYg KHJlZ251bSA+IGJ1ZnAtPnJlX25zdWIpDQogICAgICAgIGJ1ZnAtPnJlX25zdWIgPSByZWdudW07 DQogICAgICBlbHNlIGlmIChyZWdudW0gPiBidWZwLT5yZV9uc3ViDQoNCg0KDQoNCg0KICAgICAg ICB8fCBncm91cF9pbl9jb21waWxlX3N0YWNrIChjb21waWxlX3N0YWNrLCByZWdudW0pKQ0KICAg ICAgICBkbyB7IGRvIHsgaWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSkgZnJlZSAoKHJhbmdl X3RhYmxlX3dvcmspLnRhYmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNvbXBpbGVfc3RhY2suc3Rh Y2spOyByZXR1cm4gUkVHX0JBRFBBVDsgfSB3aGlsZSAoMCk7DQogICAgfQ0KICBlbHNlDQoNCiAg ICByZWdudW0gPSAtIGJ1ZnAtPnJlX25zdWI7DQoNCiAgaWYgKChjb21waWxlX3N0YWNrLmF2YWls ID09IGNvbXBpbGVfc3RhY2suc2l6ZSkpDQogICAgew0KICAgICAgKChjb21waWxlX3N0YWNrLnN0 YWNrKSA9IChjb21waWxlX3N0YWNrX2VsdF90ICopIHhyZWFsbG9jIChjb21waWxlX3N0YWNrLnN0 YWNrLCAoY29tcGlsZV9zdGFjay5zaXplIDw8IDEpICogc2l6ZW9mIChjb21waWxlX3N0YWNrX2Vs dF90KSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsNCiAgICAgIGlmIChjb21waWxl X3N0YWNrLnN0YWNrID09ICgodm9pZCAqKTApKSByZXR1cm4gUkVHX0VTUEFDRTsNCg0KICAgICAg Y29tcGlsZV9zdGFjay5zaXplIDw8PSAxOw0KICAgIH0NCg0KDQoNCg0KDQogIChjb21waWxlX3N0 YWNrLnN0YWNrW2NvbXBpbGVfc3RhY2suYXZhaWxdKS5iZWdhbHRfb2Zmc2V0ID0gYmVnYWx0IC0g YnVmcC0+YnVmZmVyOw0KICAoY29tcGlsZV9zdGFjay5zdGFja1tjb21waWxlX3N0YWNrLmF2YWls XSkuZml4dXBfYWx0X2p1bXANCiAgICA9IGZpeHVwX2FsdF9qdW1wID8gZml4dXBfYWx0X2p1bXAg LSBidWZwLT5idWZmZXIgKyAxIDogMDsNCiAgKGNvbXBpbGVfc3RhY2suc3RhY2tbY29tcGlsZV9z dGFjay5hdmFpbF0pLmxhc3RzdGFydF9vZmZzZXQgPSBiIC0gYnVmcC0+YnVmZmVyOw0KICAoY29t cGlsZV9zdGFjay5zdGFja1tjb21waWxlX3N0YWNrLmF2YWlsXSkucmVnbnVtID0gcmVnbnVtOw0K DQoNCg0KICBpZiAocmVnbnVtIDw9IDI1NSAmJiByZWdudW0gPiAwKQ0KICAgIGRvIHsgd2hpbGUg KChzaXplX3QpIChiIC0gYnVmcC0+YnVmZmVyICsgKDIpKSA+IGJ1ZnAtPmFsbG9jYXRlZCkgZG8g eyB1bnNpZ25lZCBjaGFyICpvbGRfYnVmZmVyID0gYnVmcC0+YnVmZmVyOyBpZiAoYnVmcC0+YWxs b2NhdGVkID09ICgxTCA8PCAxNSkpIHJldHVybiBSRUdfRVNJWkU7IGJ1ZnAtPmFsbG9jYXRlZCA8 PD0gMTsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA+ICgxTCA8PCAxNSkpIGJ1ZnAtPmFsbG9jYXRlZCA9 ICgxTCA8PCAxNSk7ICgoYnVmcC0+YnVmZmVyKSA9ICh1bnNpZ25lZCBjaGFyICopIHhyZWFsbG9j IChidWZwLT5idWZmZXIsIChidWZwLT5hbGxvY2F0ZWQpICogc2l6ZW9mICh1bnNpZ25lZCBjaGFy KSkpOyBpZiAoYnVmcC0+YnVmZmVyID09ICgodm9pZCAqKTApKSByZXR1cm4gUkVHX0VTUEFDRTsg aWYgKG9sZF9idWZmZXIgIT0gYnVmcC0+YnVmZmVyKSB7IHVuc2lnbmVkIGNoYXIgKm5ld19idWZm ZXIgPSBidWZwLT5idWZmZXI7ICgoYikgPSBuZXdfYnVmZmVyICsgKChiKSAtIG9sZF9idWZmZXIp KTsgKChiZWdhbHQpID0gbmV3X2J1ZmZlciArICgoYmVnYWx0KSAtIG9sZF9idWZmZXIpKTsgaWYg KGZpeHVwX2FsdF9qdW1wKSAoKGZpeHVwX2FsdF9qdW1wKSA9IG5ld19idWZmZXIgKyAoKGZpeHVw X2FsdF9qdW1wKSAtIG9sZF9idWZmZXIpKTsgaWYgKGxhc3RzdGFydCkgKChsYXN0c3RhcnQpID0g bmV3X2J1ZmZlciArICgobGFzdHN0YXJ0KSAtIG9sZF9idWZmZXIpKTsgaWYgKHBlbmRpbmdfZXhh Y3QpICgocGVuZGluZ19leGFjdCkgPSBuZXdfYnVmZmVyICsgKChwZW5kaW5nX2V4YWN0KSAtIG9s ZF9idWZmZXIpKTsgfSB9IHdoaWxlICgwKTsgKmIrKyA9ICh1bnNpZ25lZCBjaGFyKSAoc3RhcnRf bWVtb3J5KTsgKmIrKyA9ICh1bnNpZ25lZCBjaGFyKSAocmVnbnVtKTsgfSB3aGlsZSAoMCk7DQoN CiAgY29tcGlsZV9zdGFjay5hdmFpbCsrOw0KDQogIGZpeHVwX2FsdF9qdW1wID0gMDsNCiAgbGFz dHN0YXJ0ID0gMDsNCiAgYmVnYWx0ID0gYjsNCg0KDQoNCiAgcGVuZGluZ19leGFjdCA9IDA7DQog IGJyZWFrOw0KICAgICAgIH0NCg0KICAgICBjYXNlICcpJzoNCiAgICAgICBpZiAoc3ludGF4ICYg KCgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp KSBnb3RvIG5vcm1hbF9iYWNrc2xhc2g7DQoNCiAgICAgICBpZiAoKGNvbXBpbGVfc3RhY2suYXZh aWwgPT0gMCkpDQogIHsNCiAgICBpZiAoc3ludGF4ICYgKCgoKCgoKCgoKCgoKCgoKCgoKHVuc2ln bmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSkNCiAgICAgIGdvdG8gbm9ybWFsX2JhY2tzbGFzaDsNCiAgICBlbHNlDQogICAgICBkbyB7 IGRvIHsgaWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSkgZnJlZSAoKHJhbmdlX3RhYmxlX3dv cmspLnRhYmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNvbXBpbGVfc3RhY2suc3RhY2spOyByZXR1 cm4gUkVHX0VSUEFSRU47IH0gd2hpbGUgKDApOw0KICB9DQoNCiAgICAgaGFuZGxlX2Nsb3NlOg0K ICAgICAgIGRvIHsgaWYgKGZpeHVwX2FsdF9qdW1wKSBzdG9yZV9vcDEgKGp1bXAsIGZpeHVwX2Fs dF9qdW1wLCAoYikgLSAoZml4dXBfYWx0X2p1bXApIC0gMyk7IH0gd2hpbGUgKDApOw0KDQoNCiAg ICAgICBpZiAoKGNvbXBpbGVfc3RhY2suYXZhaWwgPT0gMCkpDQogIHsNCiAgICBpZiAoc3ludGF4 ICYgKCgoKCgoKCgoKCgoKCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkNCiAgICAgIGdvdG8gbm9ybWFsX2NoYXI7 DQogICAgZWxzZQ0KICAgICAgZG8geyBkbyB7IGlmICgocmFuZ2VfdGFibGVfd29yaykudGFibGUp IGZyZWUgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSk7IH0gd2hpbGUgKDApOyBmcmVlIChjb21w aWxlX3N0YWNrLnN0YWNrKTsgcmV0dXJuIFJFR19FUlBBUkVOOyB9IHdoaWxlICgwKTsNCiAgfQ0K DQoNCg0KICAgICAgIDsNCiAgICAgICB7DQoNCg0KDQogIHJlZ251bV90IHJlZ251bTsNCg0KICBj b21waWxlX3N0YWNrLmF2YWlsLS07DQogIGJlZ2FsdCA9IGJ1ZnAtPmJ1ZmZlciArIChjb21waWxl X3N0YWNrLnN0YWNrW2NvbXBpbGVfc3RhY2suYXZhaWxdKS5iZWdhbHRfb2Zmc2V0Ow0KICBmaXh1 cF9hbHRfanVtcA0KICAgID0gKGNvbXBpbGVfc3RhY2suc3RhY2tbY29tcGlsZV9zdGFjay5hdmFp bF0pLmZpeHVwX2FsdF9qdW1wDQogICAgICA/IGJ1ZnAtPmJ1ZmZlciArIChjb21waWxlX3N0YWNr LnN0YWNrW2NvbXBpbGVfc3RhY2suYXZhaWxdKS5maXh1cF9hbHRfanVtcCAtIDENCiAgICAgIDog MDsNCiAgbGFzdHN0YXJ0ID0gYnVmcC0+YnVmZmVyICsgKGNvbXBpbGVfc3RhY2suc3RhY2tbY29t cGlsZV9zdGFjay5hdmFpbF0pLmxhc3RzdGFydF9vZmZzZXQ7DQogIHJlZ251bSA9IChjb21waWxl X3N0YWNrLnN0YWNrW2NvbXBpbGVfc3RhY2suYXZhaWxdKS5yZWdudW07DQoNCg0KDQogIHBlbmRp bmdfZXhhY3QgPSAwOw0KDQoNCg0KICBpZiAocmVnbnVtIDw9IDI1NSAmJiByZWdudW0gPiAwKQ0K ICAgIGRvIHsgd2hpbGUgKChzaXplX3QpIChiIC0gYnVmcC0+YnVmZmVyICsgKDIpKSA+IGJ1ZnAt PmFsbG9jYXRlZCkgZG8geyB1bnNpZ25lZCBjaGFyICpvbGRfYnVmZmVyID0gYnVmcC0+YnVmZmVy OyBpZiAoYnVmcC0+YWxsb2NhdGVkID09ICgxTCA8PCAxNSkpIHJldHVybiBSRUdfRVNJWkU7IGJ1 ZnAtPmFsbG9jYXRlZCA8PD0gMTsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA+ICgxTCA8PCAxNSkpIGJ1 ZnAtPmFsbG9jYXRlZCA9ICgxTCA8PCAxNSk7ICgoYnVmcC0+YnVmZmVyKSA9ICh1bnNpZ25lZCBj aGFyICopIHhyZWFsbG9jIChidWZwLT5idWZmZXIsIChidWZwLT5hbGxvY2F0ZWQpICogc2l6ZW9m ICh1bnNpZ25lZCBjaGFyKSkpOyBpZiAoYnVmcC0+YnVmZmVyID09ICgodm9pZCAqKTApKSByZXR1 cm4gUkVHX0VTUEFDRTsgaWYgKG9sZF9idWZmZXIgIT0gYnVmcC0+YnVmZmVyKSB7IHVuc2lnbmVk IGNoYXIgKm5ld19idWZmZXIgPSBidWZwLT5idWZmZXI7ICgoYikgPSBuZXdfYnVmZmVyICsgKChi KSAtIG9sZF9idWZmZXIpKTsgKChiZWdhbHQpID0gbmV3X2J1ZmZlciArICgoYmVnYWx0KSAtIG9s ZF9idWZmZXIpKTsgaWYgKGZpeHVwX2FsdF9qdW1wKSAoKGZpeHVwX2FsdF9qdW1wKSA9IG5ld19i dWZmZXIgKyAoKGZpeHVwX2FsdF9qdW1wKSAtIG9sZF9idWZmZXIpKTsgaWYgKGxhc3RzdGFydCkg KChsYXN0c3RhcnQpID0gbmV3X2J1ZmZlciArICgobGFzdHN0YXJ0KSAtIG9sZF9idWZmZXIpKTsg aWYgKHBlbmRpbmdfZXhhY3QpICgocGVuZGluZ19leGFjdCkgPSBuZXdfYnVmZmVyICsgKChwZW5k aW5nX2V4YWN0KSAtIG9sZF9idWZmZXIpKTsgfSB9IHdoaWxlICgwKTsgKmIrKyA9ICh1bnNpZ25l ZCBjaGFyKSAoc3RvcF9tZW1vcnkpOyAqYisrID0gKHVuc2lnbmVkIGNoYXIpIChyZWdudW0pOyB9 IHdoaWxlICgwKTsNCiAgICAgICB9DQogICAgICAgYnJlYWs7DQoNCg0KICAgICBjYXNlICd8JzoN CiAgICAgICBpZiAoc3ludGF4ICYgKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IHx8IHN5bnRheCAmICgoKCgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKQ0KICBnb3RvIG5vcm1hbF9iYWNrc2xhc2g7DQog ICAgIGhhbmRsZV9hbHQ6DQogICAgICAgaWYgKHN5bnRheCAmICgoKCgoKCgoKCgoKHVuc2lnbmVk IGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSkNCiAgZ290byBub3JtYWxfY2hhcjsNCg0KDQoNCiAgICAgICB3aGls ZSAoKHNpemVfdCkgKGIgLSBidWZwLT5idWZmZXIgKyAoMykpID4gYnVmcC0+YWxsb2NhdGVkKSBk byB7IHVuc2lnbmVkIGNoYXIgKm9sZF9idWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZwLT5h bGxvY2F0ZWQgPT0gKDFMIDw8IDE1KSkgcmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2NhdGVk IDw8PSAxOyBpZiAoYnVmcC0+YWxsb2NhdGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2NhdGVk ID0gKDFMIDw8IDE1KTsgKChidWZwLT5idWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJlYWxs b2MgKGJ1ZnAtPmJ1ZmZlciwgKGJ1ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVkIGNo YXIpKSk7IGlmIChidWZwLT5idWZmZXIgPT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQQUNF OyBpZiAob2xkX2J1ZmZlciAhPSBidWZwLT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1 ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgKChiKSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1ZmZl cikpOyAoKGJlZ2FsdCkgPSBuZXdfYnVmZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikpOyBp ZiAoZml4dXBfYWx0X2p1bXApICgoZml4dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgoZml4 dXBfYWx0X2p1bXApIC0gb2xkX2J1ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFydCkg PSBuZXdfYnVmZmVyICsgKChsYXN0c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGluZ19l eGFjdCkgKChwZW5kaW5nX2V4YWN0KSA9IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3QpIC0g b2xkX2J1ZmZlcikpOyB9IH0gd2hpbGUgKDApOw0KICAgICAgIGluc2VydF9vcDEgKG9uX2ZhaWx1 cmVfanVtcCwgYmVnYWx0LCAoYiArIDYpIC0gKGJlZ2FsdCkgLSAzLCBiKTsNCiAgICAgICBwZW5k aW5nX2V4YWN0ID0gMDsNCiAgICAgICBiICs9IDM7DQojIDMzMDEgIi9ob21lL2phbWVzL3JhaWQv b3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3Ny Yy9yZWdleC5jIg0KICAgICAgIGRvIHsgaWYgKGZpeHVwX2FsdF9qdW1wKSBzdG9yZV9vcDEgKGp1 bXAsIGZpeHVwX2FsdF9qdW1wLCAoYikgLSAoZml4dXBfYWx0X2p1bXApIC0gMyk7IH0gd2hpbGUg KDApOw0KDQoNCg0KDQogICAgICAgZml4dXBfYWx0X2p1bXAgPSBiOw0KICAgICAgIHdoaWxlICgo c2l6ZV90KSAoYiAtIGJ1ZnAtPmJ1ZmZlciArICgzKSkgPiBidWZwLT5hbGxvY2F0ZWQpIGRvIHsg dW5zaWduZWQgY2hhciAqb2xkX2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgaWYgKGJ1ZnAtPmFsbG9j YXRlZCA9PSAoMUwgPDwgMTUpKSByZXR1cm4gUkVHX0VTSVpFOyBidWZwLT5hbGxvY2F0ZWQgPDw9 IDE7IGlmIChidWZwLT5hbGxvY2F0ZWQgPiAoMUwgPDwgMTUpKSBidWZwLT5hbGxvY2F0ZWQgPSAo MUwgPDwgMTUpOyAoKGJ1ZnAtPmJ1ZmZlcikgPSAodW5zaWduZWQgY2hhciAqKSB4cmVhbGxvYyAo YnVmcC0+YnVmZmVyLCAoYnVmcC0+YWxsb2NhdGVkKSAqIHNpemVvZiAodW5zaWduZWQgY2hhcikp KTsgaWYgKGJ1ZnAtPmJ1ZmZlciA9PSAoKHZvaWQgKikwKSkgcmV0dXJuIFJFR19FU1BBQ0U7IGlm IChvbGRfYnVmZmVyICE9IGJ1ZnAtPmJ1ZmZlcikgeyB1bnNpZ25lZCBjaGFyICpuZXdfYnVmZmVy ID0gYnVmcC0+YnVmZmVyOyAoKGIpID0gbmV3X2J1ZmZlciArICgoYikgLSBvbGRfYnVmZmVyKSk7 ICgoYmVnYWx0KSA9IG5ld19idWZmZXIgKyAoKGJlZ2FsdCkgLSBvbGRfYnVmZmVyKSk7IGlmIChm aXh1cF9hbHRfanVtcCkgKChmaXh1cF9hbHRfanVtcCkgPSBuZXdfYnVmZmVyICsgKChmaXh1cF9h bHRfanVtcCkgLSBvbGRfYnVmZmVyKSk7IGlmIChsYXN0c3RhcnQpICgobGFzdHN0YXJ0KSA9IG5l d19idWZmZXIgKyAoKGxhc3RzdGFydCkgLSBvbGRfYnVmZmVyKSk7IGlmIChwZW5kaW5nX2V4YWN0 KSAoKHBlbmRpbmdfZXhhY3QpID0gbmV3X2J1ZmZlciArICgocGVuZGluZ19leGFjdCkgLSBvbGRf YnVmZmVyKSk7IH0gfSB3aGlsZSAoMCk7DQogICAgICAgYiArPSAzOw0KDQogICAgICAgbGFzdHN0 YXJ0ID0gMDsNCiAgICAgICBiZWdhbHQgPSBiOw0KICAgICAgIGJyZWFrOw0KDQoNCiAgICAgY2Fz ZSAneyc6DQoNCiAgICAgICBpZiAoIShzeW50YXggJiAoKCgoKCgoKCgoKHVuc2lnbmVkIGxvbmcg aW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSkNCg0KDQogICAgfHwgKHN5bnRheCAmICgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBp bnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpKSkNCiAgZ290byBub3JtYWxfYmFja3NsYXNoOw0KDQogICAg IGhhbmRsZV9pbnRlcnZhbDoNCiAgICAgICB7DQoNCg0KDQogIGludCBsb3dlcl9ib3VuZCA9IDAs IHVwcGVyX2JvdW5kID0gLTE7DQoNCiAgYmVnX2ludGVydmFsID0gcDsNCg0KICBkbyB7IGlmIChw ID09IHBlbmQpIGRvIHsgZG8geyBpZiAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKSBmcmVlICgo cmFuZ2VfdGFibGVfd29yaykudGFibGUpOyB9IHdoaWxlICgwKTsgZnJlZSAoY29tcGlsZV9zdGFj ay5zdGFjayk7IHJldHVybiBSRUdfRUJSQUNFOyB9IHdoaWxlICgwKTsgZWxzZSB7IGRvIHsgaW50 IGxlbjsgaWYgKHAgPT0gcGVuZCkgcmV0dXJuIFJFR19FRU5EOyBjID0gKChsZW4pID0gMSwgKihw KSk7IHAgKz0gbGVuOyB9IHdoaWxlICgwKTsgd2hpbGUgKCcwJyA8PSBjICYmIGMgPD0gJzknKSB7 IGludCBwcmV2OyBpZiAobG93ZXJfYm91bmQgPCAwKSBsb3dlcl9ib3VuZCA9IDA7IHByZXYgPSBs b3dlcl9ib3VuZDsgbG93ZXJfYm91bmQgPSBsb3dlcl9ib3VuZCAqIDEwICsgYyAtICcwJzsgaWYg KGxvd2VyX2JvdW5kIC8gMTAgIT0gcHJldikgZG8geyBkbyB7IGlmICgocmFuZ2VfdGFibGVfd29y aykudGFibGUpIGZyZWUgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSk7IH0gd2hpbGUgKDApOyBm cmVlIChjb21waWxlX3N0YWNrLnN0YWNrKTsgcmV0dXJuIFJFR19CQURCUjsgfSB3aGlsZSAoMCk7 IGlmIChwID09IHBlbmQpIGRvIHsgZG8geyBpZiAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKSBm cmVlICgocmFuZ2VfdGFibGVfd29yaykudGFibGUpOyB9IHdoaWxlICgwKTsgZnJlZSAoY29tcGls ZV9zdGFjay5zdGFjayk7IHJldHVybiBSRUdfRUJSQUNFOyB9IHdoaWxlICgwKTsgZG8geyBpbnQg bGVuOyBpZiAocCA9PSBwZW5kKSByZXR1cm4gUkVHX0VFTkQ7IGMgPSAoKGxlbikgPSAxLCAqKHAp KTsgcCArPSBsZW47IH0gd2hpbGUgKDApOyB9IH0gfSB3aGlsZSAoMCk7DQoNCiAgaWYgKGMgPT0g JywnKQ0KICAgIGRvIHsgaWYgKHAgPT0gcGVuZCkgZG8geyBkbyB7IGlmICgocmFuZ2VfdGFibGVf d29yaykudGFibGUpIGZyZWUgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSk7IH0gd2hpbGUgKDAp OyBmcmVlIChjb21waWxlX3N0YWNrLnN0YWNrKTsgcmV0dXJuIFJFR19FQlJBQ0U7IH0gd2hpbGUg KDApOyBlbHNlIHsgZG8geyBpbnQgbGVuOyBpZiAocCA9PSBwZW5kKSByZXR1cm4gUkVHX0VFTkQ7 IGMgPSAoKGxlbikgPSAxLCAqKHApKTsgcCArPSBsZW47IH0gd2hpbGUgKDApOyB3aGlsZSAoJzAn IDw9IGMgJiYgYyA8PSAnOScpIHsgaW50IHByZXY7IGlmICh1cHBlcl9ib3VuZCA8IDApIHVwcGVy X2JvdW5kID0gMDsgcHJldiA9IHVwcGVyX2JvdW5kOyB1cHBlcl9ib3VuZCA9IHVwcGVyX2JvdW5k ICogMTAgKyBjIC0gJzAnOyBpZiAodXBwZXJfYm91bmQgLyAxMCAhPSBwcmV2KSBkbyB7IGRvIHsg aWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSkgZnJlZSAoKHJhbmdlX3RhYmxlX3dvcmspLnRh YmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNvbXBpbGVfc3RhY2suc3RhY2spOyByZXR1cm4gUkVH X0JBREJSOyB9IHdoaWxlICgwKTsgaWYgKHAgPT0gcGVuZCkgZG8geyBkbyB7IGlmICgocmFuZ2Vf dGFibGVfd29yaykudGFibGUpIGZyZWUgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSk7IH0gd2hp bGUgKDApOyBmcmVlIChjb21waWxlX3N0YWNrLnN0YWNrKTsgcmV0dXJuIFJFR19FQlJBQ0U7IH0g d2hpbGUgKDApOyBkbyB7IGludCBsZW47IGlmIChwID09IHBlbmQpIHJldHVybiBSRUdfRUVORDsg YyA9ICgobGVuKSA9IDEsICoocCkpOyBwICs9IGxlbjsgfSB3aGlsZSAoMCk7IH0gfSB9IHdoaWxl ICgwKTsNCiAgZWxzZQ0KDQogICAgdXBwZXJfYm91bmQgPSBsb3dlcl9ib3VuZDsNCg0KICBpZiAo bG93ZXJfYm91bmQgPCAwIHx8IHVwcGVyX2JvdW5kID4gKDB4N2ZmZikNCiAgICAgIHx8ICh1cHBl cl9ib3VuZCA+PSAwICYmIGxvd2VyX2JvdW5kID4gdXBwZXJfYm91bmQpKQ0KICAgIGRvIHsgZG8g eyBpZiAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKSBmcmVlICgocmFuZ2VfdGFibGVfd29yayku dGFibGUpOyB9IHdoaWxlICgwKTsgZnJlZSAoY29tcGlsZV9zdGFjay5zdGFjayk7IHJldHVybiBS RUdfQkFEQlI7IH0gd2hpbGUgKDApOw0KDQogIGlmICghKHN5bnRheCAmICgoKCgoKCgoKCgoKCgo dW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKSkNCiAgICB7DQogICAgICBpZiAo YyAhPSAnXFwnKQ0KICAgICAgICBkbyB7IGRvIHsgaWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJs ZSkgZnJlZSAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNv bXBpbGVfc3RhY2suc3RhY2spOyByZXR1cm4gUkVHX0JBREJSOyB9IHdoaWxlICgwKTsNCiAgICAg IGlmIChwID09IHBlbmQpDQogICAgICAgIGRvIHsgZG8geyBpZiAoKHJhbmdlX3RhYmxlX3dvcmsp LnRhYmxlKSBmcmVlICgocmFuZ2VfdGFibGVfd29yaykudGFibGUpOyB9IHdoaWxlICgwKTsgZnJl ZSAoY29tcGlsZV9zdGFjay5zdGFjayk7IHJldHVybiBSRUdfRUVTQ0FQRTsgfSB3aGlsZSAoMCk7 DQogICAgICBkbyB7IGludCBsZW47IGlmIChwID09IHBlbmQpIHJldHVybiBSRUdfRUVORDsgYyA9 ICgobGVuKSA9IDEsICoocCkpOyBwICs9IGxlbjsgfSB3aGlsZSAoMCk7DQogICAgfQ0KDQogIGlm IChjICE9ICd9JykNCiAgICBkbyB7IGRvIHsgaWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSkg ZnJlZSAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNvbXBp bGVfc3RhY2suc3RhY2spOyByZXR1cm4gUkVHX0JBREJSOyB9IHdoaWxlICgwKTsNCg0KDQoNCg0K ICBpZiAoIWxhc3RzdGFydCkNCiAgICB7DQogICAgICBpZiAoc3ludGF4ICYgKCgoKCgoKHVuc2ln bmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkNCiAgICAgICAg ZG8geyBkbyB7IGlmICgocmFuZ2VfdGFibGVfd29yaykudGFibGUpIGZyZWUgKChyYW5nZV90YWJs ZV93b3JrKS50YWJsZSk7IH0gd2hpbGUgKDApOyBmcmVlIChjb21waWxlX3N0YWNrLnN0YWNrKTsg cmV0dXJuIFJFR19CQURSUFQ7IH0gd2hpbGUgKDApOw0KICAgICAgZWxzZSBpZiAoc3ludGF4ICYg KCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKQ0KICAg ICAgICBsYXN0c3RhcnQgPSBiOw0KICAgICAgZWxzZQ0KICAgICAgICBnb3RvIHVuZmV0Y2hfaW50 ZXJ2YWw7DQogICAgfQ0KDQogIGlmICh1cHBlcl9ib3VuZCA9PSAwKQ0KDQoNCiAgICBiID0gbGFz dHN0YXJ0Ow0KICBlbHNlIGlmIChsb3dlcl9ib3VuZCA9PSAxICYmIHVwcGVyX2JvdW5kID09IDEp DQoNCiAgICA7DQojIDMzODYgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3Ny Yy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KICBlbHNlDQog ICAgew0KDQogICAgICB1bnNpZ25lZCBpbnQgbmJ5dGVzID0gKHVwcGVyX2JvdW5kIDwgMCA/IDMN CiAgICAgICAgOiB1cHBlcl9ib3VuZCA+IDEgPyA1IDogMCk7DQogICAgICB1bnNpZ25lZCBpbnQg c3RhcnRvZmZzZXQgPSAwOw0KDQogICAgICB3aGlsZSAoKHNpemVfdCkgKGIgLSBidWZwLT5idWZm ZXIgKyAoMjApKSA+IGJ1ZnAtPmFsbG9jYXRlZCkgZG8geyB1bnNpZ25lZCBjaGFyICpvbGRfYnVm ZmVyID0gYnVmcC0+YnVmZmVyOyBpZiAoYnVmcC0+YWxsb2NhdGVkID09ICgxTCA8PCAxNSkpIHJl dHVybiBSRUdfRVNJWkU7IGJ1ZnAtPmFsbG9jYXRlZCA8PD0gMTsgaWYgKGJ1ZnAtPmFsbG9jYXRl ZCA+ICgxTCA8PCAxNSkpIGJ1ZnAtPmFsbG9jYXRlZCA9ICgxTCA8PCAxNSk7ICgoYnVmcC0+YnVm ZmVyKSA9ICh1bnNpZ25lZCBjaGFyICopIHhyZWFsbG9jIChidWZwLT5idWZmZXIsIChidWZwLT5h bGxvY2F0ZWQpICogc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkpOyBpZiAoYnVmcC0+YnVmZmVyID09 ICgodm9pZCAqKTApKSByZXR1cm4gUkVHX0VTUEFDRTsgaWYgKG9sZF9idWZmZXIgIT0gYnVmcC0+ YnVmZmVyKSB7IHVuc2lnbmVkIGNoYXIgKm5ld19idWZmZXIgPSBidWZwLT5idWZmZXI7ICgoYikg PSBuZXdfYnVmZmVyICsgKChiKSAtIG9sZF9idWZmZXIpKTsgKChiZWdhbHQpID0gbmV3X2J1ZmZl ciArICgoYmVnYWx0KSAtIG9sZF9idWZmZXIpKTsgaWYgKGZpeHVwX2FsdF9qdW1wKSAoKGZpeHVw X2FsdF9qdW1wKSA9IG5ld19idWZmZXIgKyAoKGZpeHVwX2FsdF9qdW1wKSAtIG9sZF9idWZmZXIp KTsgaWYgKGxhc3RzdGFydCkgKChsYXN0c3RhcnQpID0gbmV3X2J1ZmZlciArICgobGFzdHN0YXJ0 KSAtIG9sZF9idWZmZXIpKTsgaWYgKHBlbmRpbmdfZXhhY3QpICgocGVuZGluZ19leGFjdCkgPSBu ZXdfYnVmZmVyICsgKChwZW5kaW5nX2V4YWN0KSAtIG9sZF9idWZmZXIpKTsgfSB9IHdoaWxlICgw KTsNCg0KICAgICAgaWYgKGxvd2VyX2JvdW5kID09IDApDQogICAgICAgIHsNCg0KDQogICBpbnNl cnRfb3AxIChvbl9mYWlsdXJlX2p1bXBfbG9vcCwgbGFzdHN0YXJ0LCAoYiArIDMgKyBuYnl0ZXMp IC0gKGxhc3RzdGFydCkgLSAzLCBiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgOw0KICAgYiAr PSAzOw0KICAgICAgICB9DQogICAgICBlbHNlDQogICAgICAgIHsNCg0KDQoNCg0KDQogICBpbnNl cnRfb3AyIChzdWNjZWVkX24sIGxhc3RzdGFydCwgKGIgKyA1ICsgbmJ5dGVzKSAtIChsYXN0c3Rh cnQpIC0gMywgbG93ZXJfYm91bmQsIGIpDQoNCiAgICAgICAgICAgICAgICAgICAgICA7DQogICBi ICs9IDU7DQoNCg0KDQoNCg0KICAgaW5zZXJ0X29wMiAoc2V0X251bWJlcl9hdCwgbGFzdHN0YXJ0 LCA1LCBsb3dlcl9ib3VuZCwgYik7DQogICBiICs9IDU7DQogICBzdGFydG9mZnNldCArPSA1Ow0K ICAgICAgICB9DQoNCiAgICAgIGlmICh1cHBlcl9ib3VuZCA8IDApDQogICAgICAgIHsNCg0KDQog ICBzdG9yZV9vcDEgKGp1bXAsIGIsIChsYXN0c3RhcnQgKyBzdGFydG9mZnNldCkgLSAoYikgLSAz KTsNCiAgIGIgKz0gMzsNCiAgICAgICAgfQ0KICAgICAgZWxzZSBpZiAodXBwZXJfYm91bmQgPiAx KQ0KICAgICAgICB7DQoNCg0KDQoNCg0KDQogICBzdG9yZV9vcDIgKGp1bXBfbiwgYiwgKGxhc3Rz dGFydCArIHN0YXJ0b2Zmc2V0KSAtIChiKSAtIDMsIHVwcGVyX2JvdW5kIC0gMSkNCiAgICAgICAg ICAgICAgICAgICAgICAgICA7DQogICBiICs9IDU7DQojIDM0NTcgIi9ob21lL2phbWVzL3JhaWQv b3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3Ny Yy9yZWdleC5jIg0KICAgaW5zZXJ0X29wMiAoc2V0X251bWJlcl9hdCwgbGFzdHN0YXJ0LCBiIC0g bGFzdHN0YXJ0LA0KICAgICAgICB1cHBlcl9ib3VuZCAtIDEsIGIpOw0KICAgYiArPSA1Ow0KICAg ICAgICB9DQogICAgfQ0KICBwZW5kaW5nX2V4YWN0ID0gMDsNCiAgYmVnX2ludGVydmFsID0gKCh2 b2lkICopMCk7DQogICAgICAgfQ0KICAgICAgIGJyZWFrOw0KDQogICAgIHVuZmV0Y2hfaW50ZXJ2 YWw6DQoNCiAgICAgICAgOw0KICAgICAgICBwID0gYmVnX2ludGVydmFsOw0KICAgICAgICBiZWdf aW50ZXJ2YWwgPSAoKHZvaWQgKikwKTsNCg0KDQogICAgICAgIGMgPSAneyc7DQoNCiAgICAgICAg aWYgKCEoc3ludGF4ICYgKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkpKQ0KICAgew0KICAgICA7DQogICAgIGdvdG8gbm9ybWFsX2JhY2tzbGFzaDsNCiAg IH0NCiAgICAgICAgZWxzZQ0KICAgZ290byBub3JtYWxfY2hhcjsNCiMgMzUxNyAiL2hvbWUvamFt ZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1z cmMvLi4vc3JjL3JlZ2V4LmMiDQogICAgIGNhc2UgJ3cnOg0KICAgICAgIGlmIChzeW50YXggJiAo KCgoKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkpDQogIGdvdG8gbm9ybWFs X2NoYXI7DQogICAgICAgbGFzdHN0YXJ0ID0gYjsNCiAgICAgICBkbyB7IHdoaWxlICgoc2l6ZV90 KSAoYiAtIGJ1ZnAtPmJ1ZmZlciArICgyKSkgPiBidWZwLT5hbGxvY2F0ZWQpIGRvIHsgdW5zaWdu ZWQgY2hhciAqb2xkX2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA9 PSAoMUwgPDwgMTUpKSByZXR1cm4gUkVHX0VTSVpFOyBidWZwLT5hbGxvY2F0ZWQgPDw9IDE7IGlm IChidWZwLT5hbGxvY2F0ZWQgPiAoMUwgPDwgMTUpKSBidWZwLT5hbGxvY2F0ZWQgPSAoMUwgPDwg MTUpOyAoKGJ1ZnAtPmJ1ZmZlcikgPSAodW5zaWduZWQgY2hhciAqKSB4cmVhbGxvYyAoYnVmcC0+ YnVmZmVyLCAoYnVmcC0+YWxsb2NhdGVkKSAqIHNpemVvZiAodW5zaWduZWQgY2hhcikpKTsgaWYg KGJ1ZnAtPmJ1ZmZlciA9PSAoKHZvaWQgKikwKSkgcmV0dXJuIFJFR19FU1BBQ0U7IGlmIChvbGRf YnVmZmVyICE9IGJ1ZnAtPmJ1ZmZlcikgeyB1bnNpZ25lZCBjaGFyICpuZXdfYnVmZmVyID0gYnVm cC0+YnVmZmVyOyAoKGIpID0gbmV3X2J1ZmZlciArICgoYikgLSBvbGRfYnVmZmVyKSk7ICgoYmVn YWx0KSA9IG5ld19idWZmZXIgKyAoKGJlZ2FsdCkgLSBvbGRfYnVmZmVyKSk7IGlmIChmaXh1cF9h bHRfanVtcCkgKChmaXh1cF9hbHRfanVtcCkgPSBuZXdfYnVmZmVyICsgKChmaXh1cF9hbHRfanVt cCkgLSBvbGRfYnVmZmVyKSk7IGlmIChsYXN0c3RhcnQpICgobGFzdHN0YXJ0KSA9IG5ld19idWZm ZXIgKyAoKGxhc3RzdGFydCkgLSBvbGRfYnVmZmVyKSk7IGlmIChwZW5kaW5nX2V4YWN0KSAoKHBl bmRpbmdfZXhhY3QpID0gbmV3X2J1ZmZlciArICgocGVuZGluZ19leGFjdCkgLSBvbGRfYnVmZmVy KSk7IH0gfSB3aGlsZSAoMCk7ICpiKysgPSAodW5zaWduZWQgY2hhcikgKHN5bnRheHNwZWMpOyAq YisrID0gKHVuc2lnbmVkIGNoYXIpIChTd29yZCk7IH0gd2hpbGUgKDApOw0KICAgICAgIGJyZWFr Ow0KDQoNCiAgICAgY2FzZSAnVyc6DQogICAgICAgaWYgKHN5bnRheCAmICgoKCgoKCgoKCgoKCgo KCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkNCiAgZ290byBub3JtYWxfY2hhcjsNCiAgICAg ICBsYXN0c3RhcnQgPSBiOw0KICAgICAgIGRvIHsgd2hpbGUgKChzaXplX3QpIChiIC0gYnVmcC0+ YnVmZmVyICsgKDIpKSA+IGJ1ZnAtPmFsbG9jYXRlZCkgZG8geyB1bnNpZ25lZCBjaGFyICpvbGRf YnVmZmVyID0gYnVmcC0+YnVmZmVyOyBpZiAoYnVmcC0+YWxsb2NhdGVkID09ICgxTCA8PCAxNSkp IHJldHVybiBSRUdfRVNJWkU7IGJ1ZnAtPmFsbG9jYXRlZCA8PD0gMTsgaWYgKGJ1ZnAtPmFsbG9j YXRlZCA+ICgxTCA8PCAxNSkpIGJ1ZnAtPmFsbG9jYXRlZCA9ICgxTCA8PCAxNSk7ICgoYnVmcC0+ YnVmZmVyKSA9ICh1bnNpZ25lZCBjaGFyICopIHhyZWFsbG9jIChidWZwLT5idWZmZXIsIChidWZw LT5hbGxvY2F0ZWQpICogc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkpOyBpZiAoYnVmcC0+YnVmZmVy ID09ICgodm9pZCAqKTApKSByZXR1cm4gUkVHX0VTUEFDRTsgaWYgKG9sZF9idWZmZXIgIT0gYnVm cC0+YnVmZmVyKSB7IHVuc2lnbmVkIGNoYXIgKm5ld19idWZmZXIgPSBidWZwLT5idWZmZXI7ICgo YikgPSBuZXdfYnVmZmVyICsgKChiKSAtIG9sZF9idWZmZXIpKTsgKChiZWdhbHQpID0gbmV3X2J1 ZmZlciArICgoYmVnYWx0KSAtIG9sZF9idWZmZXIpKTsgaWYgKGZpeHVwX2FsdF9qdW1wKSAoKGZp eHVwX2FsdF9qdW1wKSA9IG5ld19idWZmZXIgKyAoKGZpeHVwX2FsdF9qdW1wKSAtIG9sZF9idWZm ZXIpKTsgaWYgKGxhc3RzdGFydCkgKChsYXN0c3RhcnQpID0gbmV3X2J1ZmZlciArICgobGFzdHN0 YXJ0KSAtIG9sZF9idWZmZXIpKTsgaWYgKHBlbmRpbmdfZXhhY3QpICgocGVuZGluZ19leGFjdCkg PSBuZXdfYnVmZmVyICsgKChwZW5kaW5nX2V4YWN0KSAtIG9sZF9idWZmZXIpKTsgfSB9IHdoaWxl ICgwKTsgKmIrKyA9ICh1bnNpZ25lZCBjaGFyKSAobm90c3ludGF4c3BlYyk7ICpiKysgPSAodW5z aWduZWQgY2hhcikgKFN3b3JkKTsgfSB3aGlsZSAoMCk7DQogICAgICAgYnJlYWs7DQoNCg0KICAg ICBjYXNlICc8JzoNCiAgICAgICBpZiAoc3ludGF4ICYgKCgoKCgoKCgoKCgoKCgoKCgoKCgodW5z aWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpKQ0KICBnb3RvIG5vcm1hbF9jaGFyOw0KICAgICAgIGRvIHsgd2hp bGUgKChzaXplX3QpIChiIC0gYnVmcC0+YnVmZmVyICsgKDEpKSA+IGJ1ZnAtPmFsbG9jYXRlZCkg ZG8geyB1bnNpZ25lZCBjaGFyICpvbGRfYnVmZmVyID0gYnVmcC0+YnVmZmVyOyBpZiAoYnVmcC0+ YWxsb2NhdGVkID09ICgxTCA8PCAxNSkpIHJldHVybiBSRUdfRVNJWkU7IGJ1ZnAtPmFsbG9jYXRl ZCA8PD0gMTsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA+ICgxTCA8PCAxNSkpIGJ1ZnAtPmFsbG9jYXRl ZCA9ICgxTCA8PCAxNSk7ICgoYnVmcC0+YnVmZmVyKSA9ICh1bnNpZ25lZCBjaGFyICopIHhyZWFs bG9jIChidWZwLT5idWZmZXIsIChidWZwLT5hbGxvY2F0ZWQpICogc2l6ZW9mICh1bnNpZ25lZCBj aGFyKSkpOyBpZiAoYnVmcC0+YnVmZmVyID09ICgodm9pZCAqKTApKSByZXR1cm4gUkVHX0VTUEFD RTsgaWYgKG9sZF9idWZmZXIgIT0gYnVmcC0+YnVmZmVyKSB7IHVuc2lnbmVkIGNoYXIgKm5ld19i dWZmZXIgPSBidWZwLT5idWZmZXI7ICgoYikgPSBuZXdfYnVmZmVyICsgKChiKSAtIG9sZF9idWZm ZXIpKTsgKChiZWdhbHQpID0gbmV3X2J1ZmZlciArICgoYmVnYWx0KSAtIG9sZF9idWZmZXIpKTsg aWYgKGZpeHVwX2FsdF9qdW1wKSAoKGZpeHVwX2FsdF9qdW1wKSA9IG5ld19idWZmZXIgKyAoKGZp eHVwX2FsdF9qdW1wKSAtIG9sZF9idWZmZXIpKTsgaWYgKGxhc3RzdGFydCkgKChsYXN0c3RhcnQp ID0gbmV3X2J1ZmZlciArICgobGFzdHN0YXJ0KSAtIG9sZF9idWZmZXIpKTsgaWYgKHBlbmRpbmdf ZXhhY3QpICgocGVuZGluZ19leGFjdCkgPSBuZXdfYnVmZmVyICsgKChwZW5kaW5nX2V4YWN0KSAt IG9sZF9idWZmZXIpKTsgfSB9IHdoaWxlICgwKTsgKmIrKyA9ICh1bnNpZ25lZCBjaGFyKSAod29y ZGJlZyk7IH0gd2hpbGUgKDApOw0KICAgICAgIGJyZWFrOw0KDQogICAgIGNhc2UgJz4nOg0KICAg ICAgIGlmIChzeW50YXggJiAoKCgoKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkpDQogIGdvdG8gbm9ybWFsX2NoYXI7DQogICAgICAgZG8geyB3aGlsZSAoKHNpemVfdCkgKGIg LSBidWZwLT5idWZmZXIgKyAoMSkpID4gYnVmcC0+YWxsb2NhdGVkKSBkbyB7IHVuc2lnbmVkIGNo YXIgKm9sZF9idWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZwLT5hbGxvY2F0ZWQgPT0gKDFM IDw8IDE1KSkgcmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2NhdGVkIDw8PSAxOyBpZiAoYnVm cC0+YWxsb2NhdGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2NhdGVkID0gKDFMIDw8IDE1KTsg KChidWZwLT5idWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJlYWxsb2MgKGJ1ZnAtPmJ1ZmZl ciwgKGJ1ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSk7IGlmIChidWZw LT5idWZmZXIgPT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQQUNFOyBpZiAob2xkX2J1ZmZl ciAhPSBidWZwLT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1ZmZlciA9IGJ1ZnAtPmJ1 ZmZlcjsgKChiKSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1ZmZlcikpOyAoKGJlZ2FsdCkg PSBuZXdfYnVmZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikpOyBpZiAoZml4dXBfYWx0X2p1 bXApICgoZml4dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgoZml4dXBfYWx0X2p1bXApIC0g b2xkX2J1ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFydCkgPSBuZXdfYnVmZmVyICsg KChsYXN0c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGluZ19leGFjdCkgKChwZW5kaW5n X2V4YWN0KSA9IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3QpIC0gb2xkX2J1ZmZlcikpOyB9 IH0gd2hpbGUgKDApOyAqYisrID0gKHVuc2lnbmVkIGNoYXIpICh3b3JkZW5kKTsgfSB3aGlsZSAo MCk7DQogICAgICAgYnJlYWs7DQoNCiAgICAgY2FzZSAnXyc6DQogICAgICAgaWYgKHN5bnRheCAm ICgoKCgoKCgoKCgoKCgoKCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkNCiAgZ290byBub3Jt YWxfY2hhcjsNCiAgICAgICAgICAgICAgbGFzdHN0YXJ0ID0gYjsNCiAgICAgICAgICAgICAgZG8g eyBpbnQgbGVuOyBpZiAocCA9PSBwZW5kKSByZXR1cm4gUkVHX0VFTkQ7IGMgPSAoKGxlbikgPSAx LCAqKHApKTsgcCArPSBsZW47IH0gd2hpbGUgKDApOw0KICAgICAgICAgICAgICBpZiAoYyA9PSAn PCcpDQogICAgICAgICAgICAgICAgZG8geyB3aGlsZSAoKHNpemVfdCkgKGIgLSBidWZwLT5idWZm ZXIgKyAoMSkpID4gYnVmcC0+YWxsb2NhdGVkKSBkbyB7IHVuc2lnbmVkIGNoYXIgKm9sZF9idWZm ZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZwLT5hbGxvY2F0ZWQgPT0gKDFMIDw8IDE1KSkgcmV0 dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2NhdGVkIDw8PSAxOyBpZiAoYnVmcC0+YWxsb2NhdGVk ID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2NhdGVkID0gKDFMIDw8IDE1KTsgKChidWZwLT5idWZm ZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJlYWxsb2MgKGJ1ZnAtPmJ1ZmZlciwgKGJ1ZnAtPmFs bG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSk7IGlmIChidWZwLT5idWZmZXIgPT0g KCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQQUNFOyBpZiAob2xkX2J1ZmZlciAhPSBidWZwLT5i dWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgKChiKSA9 IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1ZmZlcikpOyAoKGJlZ2FsdCkgPSBuZXdfYnVmZmVy ICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikpOyBpZiAoZml4dXBfYWx0X2p1bXApICgoZml4dXBf YWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgoZml4dXBfYWx0X2p1bXApIC0gb2xkX2J1ZmZlcikp OyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFydCkgPSBuZXdfYnVmZmVyICsgKChsYXN0c3RhcnQp IC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGluZ19leGFjdCkgKChwZW5kaW5nX2V4YWN0KSA9IG5l d19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3QpIC0gb2xkX2J1ZmZlcikpOyB9IH0gd2hpbGUgKDAp OyAqYisrID0gKHVuc2lnbmVkIGNoYXIpIChzeW1iZWcpOyB9IHdoaWxlICgwKTsNCiAgICAgICAg ICAgICAgZWxzZSBpZiAoYyA9PSAnPicpDQogICAgICAgICAgICAgICAgZG8geyB3aGlsZSAoKHNp emVfdCkgKGIgLSBidWZwLT5idWZmZXIgKyAoMSkpID4gYnVmcC0+YWxsb2NhdGVkKSBkbyB7IHVu c2lnbmVkIGNoYXIgKm9sZF9idWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZwLT5hbGxvY2F0 ZWQgPT0gKDFMIDw8IDE1KSkgcmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2NhdGVkIDw8PSAx OyBpZiAoYnVmcC0+YWxsb2NhdGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2NhdGVkID0gKDFM IDw8IDE1KTsgKChidWZwLT5idWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJlYWxsb2MgKGJ1 ZnAtPmJ1ZmZlciwgKGJ1ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSk7 IGlmIChidWZwLT5idWZmZXIgPT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQQUNFOyBpZiAo b2xkX2J1ZmZlciAhPSBidWZwLT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1ZmZlciA9 IGJ1ZnAtPmJ1ZmZlcjsgKChiKSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1ZmZlcikpOyAo KGJlZ2FsdCkgPSBuZXdfYnVmZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikpOyBpZiAoZml4 dXBfYWx0X2p1bXApICgoZml4dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgoZml4dXBfYWx0 X2p1bXApIC0gb2xkX2J1ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFydCkgPSBuZXdf YnVmZmVyICsgKChsYXN0c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGluZ19leGFjdCkg KChwZW5kaW5nX2V4YWN0KSA9IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3QpIC0gb2xkX2J1 ZmZlcikpOyB9IH0gd2hpbGUgKDApOyAqYisrID0gKHVuc2lnbmVkIGNoYXIpIChzeW1lbmQpOyB9 IHdoaWxlICgwKTsNCiAgICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAgIGRvIHsgZG8g eyBpZiAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKSBmcmVlICgocmFuZ2VfdGFibGVfd29yayku dGFibGUpOyB9IHdoaWxlICgwKTsgZnJlZSAoY29tcGlsZV9zdGFjay5zdGFjayk7IHJldHVybiBS RUdfQkFEUEFUOyB9IHdoaWxlICgwKTsNCiAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgY2Fz ZSAnYic6DQogICAgICAgaWYgKHN5bnRheCAmICgoKCgoKCgoKCgoKCgoKCgoKCgoKHVuc2lnbmVk IGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAx KSA8PCAxKSA8PCAxKSkNCiAgZ290byBub3JtYWxfY2hhcjsNCiAgICAgICBkbyB7IHdoaWxlICgo c2l6ZV90KSAoYiAtIGJ1ZnAtPmJ1ZmZlciArICgxKSkgPiBidWZwLT5hbGxvY2F0ZWQpIGRvIHsg dW5zaWduZWQgY2hhciAqb2xkX2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgaWYgKGJ1ZnAtPmFsbG9j YXRlZCA9PSAoMUwgPDwgMTUpKSByZXR1cm4gUkVHX0VTSVpFOyBidWZwLT5hbGxvY2F0ZWQgPDw9 IDE7IGlmIChidWZwLT5hbGxvY2F0ZWQgPiAoMUwgPDwgMTUpKSBidWZwLT5hbGxvY2F0ZWQgPSAo MUwgPDwgMTUpOyAoKGJ1ZnAtPmJ1ZmZlcikgPSAodW5zaWduZWQgY2hhciAqKSB4cmVhbGxvYyAo YnVmcC0+YnVmZmVyLCAoYnVmcC0+YWxsb2NhdGVkKSAqIHNpemVvZiAodW5zaWduZWQgY2hhcikp KTsgaWYgKGJ1ZnAtPmJ1ZmZlciA9PSAoKHZvaWQgKikwKSkgcmV0dXJuIFJFR19FU1BBQ0U7IGlm IChvbGRfYnVmZmVyICE9IGJ1ZnAtPmJ1ZmZlcikgeyB1bnNpZ25lZCBjaGFyICpuZXdfYnVmZmVy ID0gYnVmcC0+YnVmZmVyOyAoKGIpID0gbmV3X2J1ZmZlciArICgoYikgLSBvbGRfYnVmZmVyKSk7 ICgoYmVnYWx0KSA9IG5ld19idWZmZXIgKyAoKGJlZ2FsdCkgLSBvbGRfYnVmZmVyKSk7IGlmIChm aXh1cF9hbHRfanVtcCkgKChmaXh1cF9hbHRfanVtcCkgPSBuZXdfYnVmZmVyICsgKChmaXh1cF9h bHRfanVtcCkgLSBvbGRfYnVmZmVyKSk7IGlmIChsYXN0c3RhcnQpICgobGFzdHN0YXJ0KSA9IG5l d19idWZmZXIgKyAoKGxhc3RzdGFydCkgLSBvbGRfYnVmZmVyKSk7IGlmIChwZW5kaW5nX2V4YWN0 KSAoKHBlbmRpbmdfZXhhY3QpID0gbmV3X2J1ZmZlciArICgocGVuZGluZ19leGFjdCkgLSBvbGRf YnVmZmVyKSk7IH0gfSB3aGlsZSAoMCk7ICpiKysgPSAodW5zaWduZWQgY2hhcikgKHdvcmRib3Vu ZCk7IH0gd2hpbGUgKDApOw0KICAgICAgIGJyZWFrOw0KDQogICAgIGNhc2UgJ0InOg0KICAgICAg IGlmIChzeW50YXggJiAoKCgoKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkp DQogIGdvdG8gbm9ybWFsX2NoYXI7DQogICAgICAgZG8geyB3aGlsZSAoKHNpemVfdCkgKGIgLSBi dWZwLT5idWZmZXIgKyAoMSkpID4gYnVmcC0+YWxsb2NhdGVkKSBkbyB7IHVuc2lnbmVkIGNoYXIg Km9sZF9idWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZwLT5hbGxvY2F0ZWQgPT0gKDFMIDw8 IDE1KSkgcmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2NhdGVkIDw8PSAxOyBpZiAoYnVmcC0+ YWxsb2NhdGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2NhdGVkID0gKDFMIDw8IDE1KTsgKChi dWZwLT5idWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJlYWxsb2MgKGJ1ZnAtPmJ1ZmZlciwg KGJ1ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSk7IGlmIChidWZwLT5i dWZmZXIgPT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQQUNFOyBpZiAob2xkX2J1ZmZlciAh PSBidWZwLT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZl cjsgKChiKSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1ZmZlcikpOyAoKGJlZ2FsdCkgPSBu ZXdfYnVmZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikpOyBpZiAoZml4dXBfYWx0X2p1bXAp ICgoZml4dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgoZml4dXBfYWx0X2p1bXApIC0gb2xk X2J1ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFydCkgPSBuZXdfYnVmZmVyICsgKChs YXN0c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGluZ19leGFjdCkgKChwZW5kaW5nX2V4 YWN0KSA9IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3QpIC0gb2xkX2J1ZmZlcikpOyB9IH0g d2hpbGUgKDApOyAqYisrID0gKHVuc2lnbmVkIGNoYXIpIChub3R3b3JkYm91bmQpOyB9IHdoaWxl ICgwKTsNCiAgICAgICBicmVhazsNCg0KICAgICBjYXNlICdgJzoNCiAgICAgICBpZiAoc3ludGF4 ICYgKCgoKCgoKCgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKQ0KICBnb3RvIG5v cm1hbF9jaGFyOw0KICAgICAgIGRvIHsgd2hpbGUgKChzaXplX3QpIChiIC0gYnVmcC0+YnVmZmVy ICsgKDEpKSA+IGJ1ZnAtPmFsbG9jYXRlZCkgZG8geyB1bnNpZ25lZCBjaGFyICpvbGRfYnVmZmVy ID0gYnVmcC0+YnVmZmVyOyBpZiAoYnVmcC0+YWxsb2NhdGVkID09ICgxTCA8PCAxNSkpIHJldHVy biBSRUdfRVNJWkU7IGJ1ZnAtPmFsbG9jYXRlZCA8PD0gMTsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA+ ICgxTCA8PCAxNSkpIGJ1ZnAtPmFsbG9jYXRlZCA9ICgxTCA8PCAxNSk7ICgoYnVmcC0+YnVmZmVy KSA9ICh1bnNpZ25lZCBjaGFyICopIHhyZWFsbG9jIChidWZwLT5idWZmZXIsIChidWZwLT5hbGxv Y2F0ZWQpICogc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkpOyBpZiAoYnVmcC0+YnVmZmVyID09ICgo dm9pZCAqKTApKSByZXR1cm4gUkVHX0VTUEFDRTsgaWYgKG9sZF9idWZmZXIgIT0gYnVmcC0+YnVm ZmVyKSB7IHVuc2lnbmVkIGNoYXIgKm5ld19idWZmZXIgPSBidWZwLT5idWZmZXI7ICgoYikgPSBu ZXdfYnVmZmVyICsgKChiKSAtIG9sZF9idWZmZXIpKTsgKChiZWdhbHQpID0gbmV3X2J1ZmZlciAr ICgoYmVnYWx0KSAtIG9sZF9idWZmZXIpKTsgaWYgKGZpeHVwX2FsdF9qdW1wKSAoKGZpeHVwX2Fs dF9qdW1wKSA9IG5ld19idWZmZXIgKyAoKGZpeHVwX2FsdF9qdW1wKSAtIG9sZF9idWZmZXIpKTsg aWYgKGxhc3RzdGFydCkgKChsYXN0c3RhcnQpID0gbmV3X2J1ZmZlciArICgobGFzdHN0YXJ0KSAt IG9sZF9idWZmZXIpKTsgaWYgKHBlbmRpbmdfZXhhY3QpICgocGVuZGluZ19leGFjdCkgPSBuZXdf YnVmZmVyICsgKChwZW5kaW5nX2V4YWN0KSAtIG9sZF9idWZmZXIpKTsgfSB9IHdoaWxlICgwKTsg KmIrKyA9ICh1bnNpZ25lZCBjaGFyKSAoYmVnYnVmKTsgfSB3aGlsZSAoMCk7DQogICAgICAgYnJl YWs7DQoNCiAgICAgY2FzZSAnXCcnOg0KICAgICAgIGlmIChzeW50YXggJiAoKCgoKCgoKCgoKCgo KCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkpDQogIGdvdG8gbm9ybWFsX2NoYXI7DQogICAg ICAgZG8geyB3aGlsZSAoKHNpemVfdCkgKGIgLSBidWZwLT5idWZmZXIgKyAoMSkpID4gYnVmcC0+ YWxsb2NhdGVkKSBkbyB7IHVuc2lnbmVkIGNoYXIgKm9sZF9idWZmZXIgPSBidWZwLT5idWZmZXI7 IGlmIChidWZwLT5hbGxvY2F0ZWQgPT0gKDFMIDw8IDE1KSkgcmV0dXJuIFJFR19FU0laRTsgYnVm cC0+YWxsb2NhdGVkIDw8PSAxOyBpZiAoYnVmcC0+YWxsb2NhdGVkID4gKDFMIDw8IDE1KSkgYnVm cC0+YWxsb2NhdGVkID0gKDFMIDw8IDE1KTsgKChidWZwLT5idWZmZXIpID0gKHVuc2lnbmVkIGNo YXIgKikgeHJlYWxsb2MgKGJ1ZnAtPmJ1ZmZlciwgKGJ1ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2Yg KHVuc2lnbmVkIGNoYXIpKSk7IGlmIChidWZwLT5idWZmZXIgPT0gKCh2b2lkICopMCkpIHJldHVy biBSRUdfRVNQQUNFOyBpZiAob2xkX2J1ZmZlciAhPSBidWZwLT5idWZmZXIpIHsgdW5zaWduZWQg Y2hhciAqbmV3X2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsgKChiKSA9IG5ld19idWZmZXIgKyAoKGIp IC0gb2xkX2J1ZmZlcikpOyAoKGJlZ2FsdCkgPSBuZXdfYnVmZmVyICsgKChiZWdhbHQpIC0gb2xk X2J1ZmZlcikpOyBpZiAoZml4dXBfYWx0X2p1bXApICgoZml4dXBfYWx0X2p1bXApID0gbmV3X2J1 ZmZlciArICgoZml4dXBfYWx0X2p1bXApIC0gb2xkX2J1ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAo KGxhc3RzdGFydCkgPSBuZXdfYnVmZmVyICsgKChsYXN0c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBp ZiAocGVuZGluZ19leGFjdCkgKChwZW5kaW5nX2V4YWN0KSA9IG5ld19idWZmZXIgKyAoKHBlbmRp bmdfZXhhY3QpIC0gb2xkX2J1ZmZlcikpOyB9IH0gd2hpbGUgKDApOyAqYisrID0gKHVuc2lnbmVk IGNoYXIpIChlbmRidWYpOyB9IHdoaWxlICgwKTsNCiAgICAgICBicmVhazsNCg0KICAgICBjYXNl ICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6DQogICAgIGNhc2Ug JzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOg0KICAgICAgIHsNCiAgcmVnbnVtX3Qg cmVnOw0KDQogIGlmIChzeW50YXggJiAoKCgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQp IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKQ0KICAgIGdvdG8gbm9ybWFsX2JhY2tzbGFz aDsNCg0KICByZWcgPSBjIC0gJzAnOw0KDQogIGlmIChyZWcgPiBidWZwLT5yZV9uc3ViIHx8IHJl ZyA8IDENCg0KICAgICAgfHwgZ3JvdXBfaW5fY29tcGlsZV9zdGFjayAoY29tcGlsZV9zdGFjaywg cmVnKSkNCiAgICBkbyB7IGRvIHsgaWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJsZSkgZnJlZSAo KHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNvbXBpbGVfc3Rh Y2suc3RhY2spOyByZXR1cm4gUkVHX0VTVUJSRUc7IH0gd2hpbGUgKDApOw0KDQogIGxhc3RzdGFy dCA9IGI7DQogIGRvIHsgd2hpbGUgKChzaXplX3QpIChiIC0gYnVmcC0+YnVmZmVyICsgKDIpKSA+ IGJ1ZnAtPmFsbG9jYXRlZCkgZG8geyB1bnNpZ25lZCBjaGFyICpvbGRfYnVmZmVyID0gYnVmcC0+ YnVmZmVyOyBpZiAoYnVmcC0+YWxsb2NhdGVkID09ICgxTCA8PCAxNSkpIHJldHVybiBSRUdfRVNJ WkU7IGJ1ZnAtPmFsbG9jYXRlZCA8PD0gMTsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA+ICgxTCA8PCAx NSkpIGJ1ZnAtPmFsbG9jYXRlZCA9ICgxTCA8PCAxNSk7ICgoYnVmcC0+YnVmZmVyKSA9ICh1bnNp Z25lZCBjaGFyICopIHhyZWFsbG9jIChidWZwLT5idWZmZXIsIChidWZwLT5hbGxvY2F0ZWQpICog c2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkpOyBpZiAoYnVmcC0+YnVmZmVyID09ICgodm9pZCAqKTAp KSByZXR1cm4gUkVHX0VTUEFDRTsgaWYgKG9sZF9idWZmZXIgIT0gYnVmcC0+YnVmZmVyKSB7IHVu c2lnbmVkIGNoYXIgKm5ld19idWZmZXIgPSBidWZwLT5idWZmZXI7ICgoYikgPSBuZXdfYnVmZmVy ICsgKChiKSAtIG9sZF9idWZmZXIpKTsgKChiZWdhbHQpID0gbmV3X2J1ZmZlciArICgoYmVnYWx0 KSAtIG9sZF9idWZmZXIpKTsgaWYgKGZpeHVwX2FsdF9qdW1wKSAoKGZpeHVwX2FsdF9qdW1wKSA9 IG5ld19idWZmZXIgKyAoKGZpeHVwX2FsdF9qdW1wKSAtIG9sZF9idWZmZXIpKTsgaWYgKGxhc3Rz dGFydCkgKChsYXN0c3RhcnQpID0gbmV3X2J1ZmZlciArICgobGFzdHN0YXJ0KSAtIG9sZF9idWZm ZXIpKTsgaWYgKHBlbmRpbmdfZXhhY3QpICgocGVuZGluZ19leGFjdCkgPSBuZXdfYnVmZmVyICsg KChwZW5kaW5nX2V4YWN0KSAtIG9sZF9idWZmZXIpKTsgfSB9IHdoaWxlICgwKTsgKmIrKyA9ICh1 bnNpZ25lZCBjaGFyKSAoZHVwbGljYXRlKTsgKmIrKyA9ICh1bnNpZ25lZCBjaGFyKSAocmVnKTsg fSB3aGlsZSAoMCk7DQogICAgICAgfQ0KICAgICAgIGJyZWFrOw0KDQoNCiAgICAgY2FzZSAnKyc6 DQogICAgIGNhc2UgJz8nOg0KICAgICAgIGlmIChzeW50YXggJiAoKCh1bnNpZ25lZCBsb25nIGlu dCkgMSkgPDwgMSkpDQogIGdvdG8gaGFuZGxlX3BsdXM7DQogICAgICAgZWxzZQ0KICBnb3RvIG5v cm1hbF9iYWNrc2xhc2g7DQoNCiAgICAgZGVmYXVsdDoNCiAgICAgbm9ybWFsX2JhY2tzbGFzaDoN Cg0KDQoNCiAgICAgICBnb3RvIG5vcm1hbF9jaGFyOw0KICAgICB9DQogICBicmVhazsNCg0KDQog ZGVmYXVsdDoNCg0KIG5vcm1hbF9jaGFyOg0KDQogICBpZiAoIXBlbmRpbmdfZXhhY3QNCg0KDQog ICAgICAgfHwgcGVuZGluZ19leGFjdCArICpwZW5kaW5nX2V4YWN0ICsgMSAhPSBiDQoNCg0KICAg ICAgIHx8ICpwZW5kaW5nX2V4YWN0ID49ICgxIDw8IDgpIC0gMQ0KDQoNCiAgICAgICB8fCAocCAh PSBwZW5kICYmICgqcCA9PSAnKicgfHwgKnAgPT0gJ14nKSkNCiAgICAgICB8fCAoKHN5bnRheCAm ICgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSkNCiAgICA/IHAgKyAxIDwgcGVuZCAmJiAq cCA9PSAnXFwnICYmIChwWzFdID09ICcrJyB8fCBwWzFdID09ICc/JykNCiAgICA6IHAgIT0gcGVu ZCAmJiAoKnAgPT0gJysnIHx8ICpwID09ICc/JykpDQogICAgICAgfHwgKChzeW50YXggJiAoKCgo KCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkNCiAgICAmJiAoKHN5bnRheCAmICgoKCgoKCgoKCgo KCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKQ0KICAgICAgICA/IHAgIT0g cGVuZCAmJiAqcCA9PSAneycNCiAgICAgICAgOiBwICsgMSA8IHBlbmQgJiYgcFswXSA9PSAnXFwn ICYmIHBbMV0gPT0gJ3snKSkpDQogICAgIHsNCg0KDQogICAgICAgbGFzdHN0YXJ0ID0gYjsNCg0K ICAgICAgIGRvIHsgd2hpbGUgKChzaXplX3QpIChiIC0gYnVmcC0+YnVmZmVyICsgKDIpKSA+IGJ1 ZnAtPmFsbG9jYXRlZCkgZG8geyB1bnNpZ25lZCBjaGFyICpvbGRfYnVmZmVyID0gYnVmcC0+YnVm ZmVyOyBpZiAoYnVmcC0+YWxsb2NhdGVkID09ICgxTCA8PCAxNSkpIHJldHVybiBSRUdfRVNJWkU7 IGJ1ZnAtPmFsbG9jYXRlZCA8PD0gMTsgaWYgKGJ1ZnAtPmFsbG9jYXRlZCA+ICgxTCA8PCAxNSkp IGJ1ZnAtPmFsbG9jYXRlZCA9ICgxTCA8PCAxNSk7ICgoYnVmcC0+YnVmZmVyKSA9ICh1bnNpZ25l ZCBjaGFyICopIHhyZWFsbG9jIChidWZwLT5idWZmZXIsIChidWZwLT5hbGxvY2F0ZWQpICogc2l6 ZW9mICh1bnNpZ25lZCBjaGFyKSkpOyBpZiAoYnVmcC0+YnVmZmVyID09ICgodm9pZCAqKTApKSBy ZXR1cm4gUkVHX0VTUEFDRTsgaWYgKG9sZF9idWZmZXIgIT0gYnVmcC0+YnVmZmVyKSB7IHVuc2ln bmVkIGNoYXIgKm5ld19idWZmZXIgPSBidWZwLT5idWZmZXI7ICgoYikgPSBuZXdfYnVmZmVyICsg KChiKSAtIG9sZF9idWZmZXIpKTsgKChiZWdhbHQpID0gbmV3X2J1ZmZlciArICgoYmVnYWx0KSAt IG9sZF9idWZmZXIpKTsgaWYgKGZpeHVwX2FsdF9qdW1wKSAoKGZpeHVwX2FsdF9qdW1wKSA9IG5l d19idWZmZXIgKyAoKGZpeHVwX2FsdF9qdW1wKSAtIG9sZF9idWZmZXIpKTsgaWYgKGxhc3RzdGFy dCkgKChsYXN0c3RhcnQpID0gbmV3X2J1ZmZlciArICgobGFzdHN0YXJ0KSAtIG9sZF9idWZmZXIp KTsgaWYgKHBlbmRpbmdfZXhhY3QpICgocGVuZGluZ19leGFjdCkgPSBuZXdfYnVmZmVyICsgKChw ZW5kaW5nX2V4YWN0KSAtIG9sZF9idWZmZXIpKTsgfSB9IHdoaWxlICgwKTsgKmIrKyA9ICh1bnNp Z25lZCBjaGFyKSAoZXhhY3RuKTsgKmIrKyA9ICh1bnNpZ25lZCBjaGFyKSAoMCk7IH0gd2hpbGUg KDApOw0KICAgICAgIHBlbmRpbmdfZXhhY3QgPSBiIC0gMTsNCiAgICAgfQ0KDQogICB3aGlsZSAo KHNpemVfdCkgKGIgLSBidWZwLT5idWZmZXIgKyAoMSkpID4gYnVmcC0+YWxsb2NhdGVkKSBkbyB7 IHVuc2lnbmVkIGNoYXIgKm9sZF9idWZmZXIgPSBidWZwLT5idWZmZXI7IGlmIChidWZwLT5hbGxv Y2F0ZWQgPT0gKDFMIDw8IDE1KSkgcmV0dXJuIFJFR19FU0laRTsgYnVmcC0+YWxsb2NhdGVkIDw8 PSAxOyBpZiAoYnVmcC0+YWxsb2NhdGVkID4gKDFMIDw8IDE1KSkgYnVmcC0+YWxsb2NhdGVkID0g KDFMIDw8IDE1KTsgKChidWZwLT5idWZmZXIpID0gKHVuc2lnbmVkIGNoYXIgKikgeHJlYWxsb2Mg KGJ1ZnAtPmJ1ZmZlciwgKGJ1ZnAtPmFsbG9jYXRlZCkgKiBzaXplb2YgKHVuc2lnbmVkIGNoYXIp KSk7IGlmIChidWZwLT5idWZmZXIgPT0gKCh2b2lkICopMCkpIHJldHVybiBSRUdfRVNQQUNFOyBp ZiAob2xkX2J1ZmZlciAhPSBidWZwLT5idWZmZXIpIHsgdW5zaWduZWQgY2hhciAqbmV3X2J1ZmZl ciA9IGJ1ZnAtPmJ1ZmZlcjsgKChiKSA9IG5ld19idWZmZXIgKyAoKGIpIC0gb2xkX2J1ZmZlcikp OyAoKGJlZ2FsdCkgPSBuZXdfYnVmZmVyICsgKChiZWdhbHQpIC0gb2xkX2J1ZmZlcikpOyBpZiAo Zml4dXBfYWx0X2p1bXApICgoZml4dXBfYWx0X2p1bXApID0gbmV3X2J1ZmZlciArICgoZml4dXBf YWx0X2p1bXApIC0gb2xkX2J1ZmZlcikpOyBpZiAobGFzdHN0YXJ0KSAoKGxhc3RzdGFydCkgPSBu ZXdfYnVmZmVyICsgKChsYXN0c3RhcnQpIC0gb2xkX2J1ZmZlcikpOyBpZiAocGVuZGluZ19leGFj dCkgKChwZW5kaW5nX2V4YWN0KSA9IG5ld19idWZmZXIgKyAoKHBlbmRpbmdfZXhhY3QpIC0gb2xk X2J1ZmZlcikpOyB9IH0gd2hpbGUgKDApOw0KICAgew0KICAgICBpbnQgbGVuOw0KDQogICAgIGlm IChtdWx0aWJ5dGUpDQogICAgICAgew0KICBjID0gKCh0cmFuc2xhdGUpID8gKCh1bnNpZ25lZCBj aGFyKSh0cmFuc2xhdGUpWyhjKV0pIDogKGMpKTsNCiAgbGVuID0gKCooYikgPSAoYyksIDEpOw0K ICBiICs9IGxlbjsNCiAgICAgICB9DQogICAgIGVsc2UNCiAgICAgICB7DQogIGMxID0gKGMpOw0K ICBpZiAoISAoMCkpDQogICAgew0KICAgICAgcmVfd2NoYXJfdCBjMiA9ICgodHJhbnNsYXRlKSA/ ICgodW5zaWduZWQgY2hhcikodHJhbnNsYXRlKVsoYzEpXSkgOiAoYzEpKTsNCg0KICAgICAgaWYg KGMxICE9IGMyICYmIChjMSA9IChjMikpID49IDApDQogICAgICAgIGMgPSBjMTsNCiAgICB9DQog ICpiKysgPSBjOw0KICBsZW4gPSAxOw0KICAgICAgIH0NCiAgICAgKCpwZW5kaW5nX2V4YWN0KSAr PSBsZW47DQogICB9DQoNCiAgIGJyZWFrOw0KIH0NCiAgICB9DQoNCg0KDQoNCiAgZG8geyBpZiAo Zml4dXBfYWx0X2p1bXApIHN0b3JlX29wMSAoanVtcCwgZml4dXBfYWx0X2p1bXAsIChiKSAtIChm aXh1cF9hbHRfanVtcCkgLSAzKTsgfSB3aGlsZSAoMCk7DQoNCiAgaWYgKCEoY29tcGlsZV9zdGFj ay5hdmFpbCA9PSAwKSkNCiAgICBkbyB7IGRvIHsgaWYgKChyYW5nZV90YWJsZV93b3JrKS50YWJs ZSkgZnJlZSAoKHJhbmdlX3RhYmxlX3dvcmspLnRhYmxlKTsgfSB3aGlsZSAoMCk7IGZyZWUgKGNv bXBpbGVfc3RhY2suc3RhY2spOyByZXR1cm4gUkVHX0VQQVJFTjsgfSB3aGlsZSAoMCk7DQoNCg0K DQogIGlmIChzeW50YXggJiAoKCgoKCgoKCgoKCgoKCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSkNCiAg ICBkbyB7IHdoaWxlICgoc2l6ZV90KSAoYiAtIGJ1ZnAtPmJ1ZmZlciArICgxKSkgPiBidWZwLT5h bGxvY2F0ZWQpIGRvIHsgdW5zaWduZWQgY2hhciAqb2xkX2J1ZmZlciA9IGJ1ZnAtPmJ1ZmZlcjsg aWYgKGJ1ZnAtPmFsbG9jYXRlZCA9PSAoMUwgPDwgMTUpKSByZXR1cm4gUkVHX0VTSVpFOyBidWZw LT5hbGxvY2F0ZWQgPDw9IDE7IGlmIChidWZwLT5hbGxvY2F0ZWQgPiAoMUwgPDwgMTUpKSBidWZw LT5hbGxvY2F0ZWQgPSAoMUwgPDwgMTUpOyAoKGJ1ZnAtPmJ1ZmZlcikgPSAodW5zaWduZWQgY2hh ciAqKSB4cmVhbGxvYyAoYnVmcC0+YnVmZmVyLCAoYnVmcC0+YWxsb2NhdGVkKSAqIHNpemVvZiAo dW5zaWduZWQgY2hhcikpKTsgaWYgKGJ1ZnAtPmJ1ZmZlciA9PSAoKHZvaWQgKikwKSkgcmV0dXJu IFJFR19FU1BBQ0U7IGlmIChvbGRfYnVmZmVyICE9IGJ1ZnAtPmJ1ZmZlcikgeyB1bnNpZ25lZCBj aGFyICpuZXdfYnVmZmVyID0gYnVmcC0+YnVmZmVyOyAoKGIpID0gbmV3X2J1ZmZlciArICgoYikg LSBvbGRfYnVmZmVyKSk7ICgoYmVnYWx0KSA9IG5ld19idWZmZXIgKyAoKGJlZ2FsdCkgLSBvbGRf YnVmZmVyKSk7IGlmIChmaXh1cF9hbHRfanVtcCkgKChmaXh1cF9hbHRfanVtcCkgPSBuZXdfYnVm ZmVyICsgKChmaXh1cF9hbHRfanVtcCkgLSBvbGRfYnVmZmVyKSk7IGlmIChsYXN0c3RhcnQpICgo bGFzdHN0YXJ0KSA9IG5ld19idWZmZXIgKyAoKGxhc3RzdGFydCkgLSBvbGRfYnVmZmVyKSk7IGlm IChwZW5kaW5nX2V4YWN0KSAoKHBlbmRpbmdfZXhhY3QpID0gbmV3X2J1ZmZlciArICgocGVuZGlu Z19leGFjdCkgLSBvbGRfYnVmZmVyKSk7IH0gfSB3aGlsZSAoMCk7ICpiKysgPSAodW5zaWduZWQg Y2hhcikgKHN1Y2NlZWQpOyB9IHdoaWxlICgwKTsNCg0KDQogIGJ1ZnAtPnVzZWQgPSBiIC0gYnVm cC0+YnVmZmVyOw0KIyAzNzI0ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9z cmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiAgZG8geyBk byB7IGlmICgocmFuZ2VfdGFibGVfd29yaykudGFibGUpIGZyZWUgKChyYW5nZV90YWJsZV93b3Jr KS50YWJsZSk7IH0gd2hpbGUgKDApOyBmcmVlIChjb21waWxlX3N0YWNrLnN0YWNrKTsgcmV0dXJu IFJFR19OT0VSUk9SOyB9IHdoaWxlICgwKTsNCn0NCg0KDQoNCg0KDQpzdGF0aWMgdm9pZA0Kc3Rv cmVfb3AxIChyZV9vcGNvZGVfdCBvcCwgdW5zaWduZWQgY2hhciAqbG9jLCBpbnQgYXJnKQ0Kew0K ICAqbG9jID0gKHVuc2lnbmVkIGNoYXIpIG9wOw0KICBkbyB7IChsb2MgKyAxKVswXSA9IChhcmcp ICYgMDM3NzsgKGxvYyArIDEpWzFdID0gKGFyZykgPj4gODsgfSB3aGlsZSAoMCk7DQp9DQoNCg0K DQoNCnN0YXRpYyB2b2lkDQpzdG9yZV9vcDIgKHJlX29wY29kZV90IG9wLCB1bnNpZ25lZCBjaGFy ICpsb2MsIGludCBhcmcxLCBpbnQgYXJnMikNCnsNCiAgKmxvYyA9ICh1bnNpZ25lZCBjaGFyKSBv cDsNCiAgZG8geyAobG9jICsgMSlbMF0gPSAoYXJnMSkgJiAwMzc3OyAobG9jICsgMSlbMV0gPSAo YXJnMSkgPj4gODsgfSB3aGlsZSAoMCk7DQogIGRvIHsgKGxvYyArIDMpWzBdID0gKGFyZzIpICYg MDM3NzsgKGxvYyArIDMpWzFdID0gKGFyZzIpID4+IDg7IH0gd2hpbGUgKDApOw0KfQ0KDQoNCg0K DQoNCnN0YXRpYyB2b2lkDQppbnNlcnRfb3AxIChyZV9vcGNvZGVfdCBvcCwgdW5zaWduZWQgY2hh ciAqbG9jLCBpbnQgYXJnLCB1bnNpZ25lZCBjaGFyICplbmQpDQp7DQogIHJlZ2lzdGVyIHVuc2ln bmVkIGNoYXIgKnBmcm9tID0gZW5kOw0KICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpwdG8gPSBl bmQgKyAzOw0KDQogIHdoaWxlIChwZnJvbSAhPSBsb2MpDQogICAgKi0tcHRvID0gKi0tcGZyb207 DQoNCiAgc3RvcmVfb3AxIChvcCwgbG9jLCBhcmcpOw0KfQ0KDQoNCg0KDQpzdGF0aWMgdm9pZA0K aW5zZXJ0X29wMiAocmVfb3Bjb2RlX3Qgb3AsIHVuc2lnbmVkIGNoYXIgKmxvYywgaW50IGFyZzEs IGludCBhcmcyLCB1bnNpZ25lZCBjaGFyICplbmQpDQp7DQogIHJlZ2lzdGVyIHVuc2lnbmVkIGNo YXIgKnBmcm9tID0gZW5kOw0KICByZWdpc3RlciB1bnNpZ25lZCBjaGFyICpwdG8gPSBlbmQgKyA1 Ow0KDQogIHdoaWxlIChwZnJvbSAhPSBsb2MpDQogICAgKi0tcHRvID0gKi0tcGZyb207DQoNCiAg c3RvcmVfb3AyIChvcCwgbG9jLCBhcmcxLCBhcmcyKTsNCn0NCg0KDQoNCg0KDQoNCnN0YXRpYyBi b29sZWFuDQphdF9iZWdsaW5lX2xvY19wIChjb25zdCByZV9jaGFyICpwYXR0ZXJuLCBjb25zdCBy ZV9jaGFyICpwLCByZWdfc3ludGF4X3Qgc3ludGF4KQ0Kew0KICByZV9jaGFyICpwcmV2ID0gcCAt IDI7DQogIGJvb2xlYW4gb2RkX2JhY2tzbGFzaGVzOw0KDQoNCiAgaWYgKCpwcmV2ID09ICcoJykN CiAgICBvZGRfYmFja3NsYXNoZXMgPSAoc3ludGF4ICYgKCgoKCgoKCgoKCgoKCgodW5zaWduZWQg bG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKSA9PSAwOw0KDQoNCiAgZWxzZSBpZiAo KnByZXYgPT0gJ3wnKQ0KICAgIG9kZF9iYWNrc2xhc2hlcyA9IChzeW50YXggJiAoKCgoKCgoKCgo KCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSkgPT0gMDsNCg0KDQogIGVsc2UgaWYgKCpwcmV2ID09ICc6JyAmJiAoc3ludGF4ICYgKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkpKQ0K ICAgIHsNCg0KICAgICAgd2hpbGUgKHByZXYgLSAxID49IHBhdHRlcm4gJiYgcHJldlstMV0gPj0g JzAnICYmIHByZXZbLTFdIDw9ICc5JykNCiAtLXByZXY7DQoNCiAgICAgIGlmICghKHByZXYgLSAy ID49IHBhdHRlcm4NCiAgICAgJiYgcHJldlstMV0gPT0gJz8nICYmIHByZXZbLTJdID09ICcoJykp DQogcmV0dXJuIDA7DQogICAgICBwcmV2IC09IDI7DQogICAgICBvZGRfYmFja3NsYXNoZXMgPSAo c3ludGF4ICYgKCgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpKSA9PSAwOw0KICAgIH0NCiAgZWxzZQ0KICAgIHJldHVybiAwOw0KDQoNCiAgcCA9 IHByZXY7DQogIHdoaWxlIChwcmV2IC0gMSA+PSBwYXR0ZXJuICYmIHByZXZbLTFdID09ICdcXCcp DQogICAgLS1wcmV2Ow0KICByZXR1cm4gKHAgLSBwcmV2KSAmIG9kZF9iYWNrc2xhc2hlczsNCn0N Cg0KDQoNCg0KDQpzdGF0aWMgYm9vbGVhbg0KYXRfZW5kbGluZV9sb2NfcCAoY29uc3QgcmVfY2hh ciAqcCwgY29uc3QgcmVfY2hhciAqcGVuZCwgcmVnX3N5bnRheF90IHN5bnRheCkNCnsNCiAgcmVf Y2hhciAqbmV4dCA9IHA7DQogIGJvb2xlYW4gbmV4dF9iYWNrc2xhc2ggPSAqbmV4dCA9PSAnXFwn Ow0KICByZV9jaGFyICpuZXh0X25leHQgPSBwICsgMSA8IHBlbmQgPyBwICsgMSA6IDA7DQoNCiAg cmV0dXJuDQoNCiAgICAgICAoc3ludGF4ICYgKCgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBp bnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpID8gKm5leHQgPT0gJyknDQogOiBuZXh0X2JhY2tz bGFzaCAmJiBuZXh0X25leHQgJiYgKm5leHRfbmV4dCA9PSAnKScpDQoNCiAgICB8fCAoc3ludGF4 ICYgKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPyAqbmV4dCA9PSAnfCcNCiA6IG5leHRfYmFja3NsYXNoICYmIG5l eHRfbmV4dCAmJiAqbmV4dF9uZXh0ID09ICd8Jyk7DQp9DQoNCg0KDQoNCg0Kc3RhdGljIGJvb2xl YW4NCmdyb3VwX2luX2NvbXBpbGVfc3RhY2sgKGNvbXBpbGVfc3RhY2tfdHlwZSBjb21waWxlX3N0 YWNrLCByZWdudW1fdCByZWdudW0pDQp7DQogIHNzaXplX3QgdGhpc19lbGVtZW50Ow0KDQogIGZv ciAodGhpc19lbGVtZW50ID0gY29tcGlsZV9zdGFjay5hdmFpbCAtIDE7DQogICAgICAgdGhpc19l bGVtZW50ID49IDA7DQogICAgICAgdGhpc19lbGVtZW50LS0pDQogICAgaWYgKGNvbXBpbGVfc3Rh Y2suc3RhY2tbdGhpc19lbGVtZW50XS5yZWdudW0gPT0gcmVnbnVtKQ0KICAgICAgcmV0dXJuIDE7 DQoNCiAgcmV0dXJuIDA7DQp9DQojIDM4NzAgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3Jl bGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0K c3RhdGljIGludA0KYW5hbHlzZV9maXJzdCAoY29uc3QgcmVfY2hhciAqcCwgY29uc3QgcmVfY2hh ciAqcGVuZCwgY2hhciAqZmFzdG1hcCwgY29uc3QgaW50IG11bHRpYnl0ZSkNCnsNCiAgaW50IGos IGs7DQogIGJvb2xlYW4gbm90Ow0KDQoNCg0KICBib29sZWFuIG1hdGNoX2FueV9tdWx0aWJ5dGVf Y2hhcmFjdGVycyA9IDA7DQoNCiAgOw0KIyAzODk3ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFj cy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXgu YyINCiAgd2hpbGUgKHAgPCBwZW5kKQ0KICAgIHsNCiMgMzkwNyAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQogICAgICByZV9jaGFyICpwMSA9IHA7DQoNCiAgICAgIHN3aXRjaCAoKnArKykN CiB7DQogY2FzZSBzdWNjZWVkOg0KICAgcmV0dXJuIDE7DQoNCiBjYXNlIGR1cGxpY2F0ZToNCg0K DQoNCg0KICAgcCsrOw0KICAgY29udGludWU7DQoNCg0KDQoNCg0KIGNhc2UgZXhhY3RuOg0KICAg aWYgKGZhc3RtYXApDQogICAgIHsNCg0KDQoNCg0KICAgICAgIGZhc3RtYXBbcFsxXV0gPSAxOw0K ICAgICAgIGlmICghIG11bHRpYnl0ZSkNCiAgew0KDQoNCg0KICAgIGludCBjID0gKHBbMV0pOw0K DQogICAgZmFzdG1hcFsoYyldID0gMTsNCiAgfQ0KICAgICB9DQogICBicmVhazsNCg0KDQogY2Fz ZSBhbnljaGFyOg0KDQoNCiAgIGlmICghZmFzdG1hcCkgYnJlYWs7DQogICByZXR1cm4gLTE7DQoN Cg0KIGNhc2UgY2hhcnNldF9ub3Q6DQogICBpZiAoIWZhc3RtYXApIGJyZWFrOw0KICAgew0KDQog ICAgIGZvciAoaiA9ICgoJnBbLTFdKVsxXSAmIDB4N0YpICogODsNCiAgIGogPCAoMSA8PCA4KTsg aisrKQ0KICAgICAgIGZhc3RtYXBbal0gPSAxOw0KICAgfQ0KDQoNCiBjYXNlIGNoYXJzZXQ6DQog ICBpZiAoIWZhc3RtYXApIGJyZWFrOw0KICAgbm90ID0gKHJlX29wY29kZV90KSAqKHAgLSAxKSA9 PSBjaGFyc2V0X25vdDsNCiAgIGZvciAoaiA9ICgoJnBbLTFdKVsxXSAmIDB4N0YpICogOCAtIDEs IHArKzsNCiAgICAgICAgaiA+PSAwOyBqLS0pDQogICAgIGlmICghIShwW2ogLyA4XSAmICgxIDw8 IChqICUgOCkpKSBeIG5vdCkNCiAgICAgICBmYXN0bWFwW2pdID0gMTsNCiMgNDAxOSAiL2hvbWUv amFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xp Yi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQogICBicmVhazsNCg0KIGNhc2Ugc3ludGF4c3BlYzoNCiBj YXNlIG5vdHN5bnRheHNwZWM6DQogICBpZiAoIWZhc3RtYXApIGJyZWFrOw0KDQogICBub3QgPSAo cmVfb3Bjb2RlX3QpcFstMV0gPT0gbm90c3ludGF4c3BlYzsNCiAgIGsgPSAqcCsrOw0KICAgZm9y IChqID0gMDsgaiA8ICgxIDw8IDgpOyBqKyspDQogICAgIGlmICgocmVfc3ludGF4X3RhYmxlWyhq KV0gPT0gKGVudW0gc3ludGF4Y29kZSkgaykgXiBub3QpDQogICAgICAgZmFzdG1hcFtqXSA9IDE7 DQogICBicmVhazsNCiMgNDA2MyAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMv c3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQogY2FzZSBu b19vcDoNCiBjYXNlIGJlZ2xpbmU6DQogY2FzZSBlbmRsaW5lOg0KIGNhc2UgYmVnYnVmOg0KIGNh c2UgZW5kYnVmOg0KIGNhc2Ugd29yZGJvdW5kOg0KIGNhc2Ugbm90d29yZGJvdW5kOg0KIGNhc2Ug d29yZGJlZzoNCiBjYXNlIHdvcmRlbmQ6DQogY2FzZSBzeW1iZWc6DQogY2FzZSBzeW1lbmQ6DQog ICBjb250aW51ZTsNCg0KDQogY2FzZSBqdW1wOg0KICAgZG8geyBkbyB7IChqKSA9ICoocCkgJiAw Mzc3OyAoaikgKz0gKChzaWduZWQgY2hhcikgKCooKHApICsgMSkpKSA8PCA4OyB9IHdoaWxlICgw KTsgKHApICs9IDI7IH0gd2hpbGUgKDApOw0KICAgaWYgKGogPCAwKQ0KDQoNCiAgICAgYnJlYWs7 DQogICBwICs9IGo7DQogICBzd2l0Y2ggKCpwKQ0KICAgICB7DQogICAgIGNhc2Ugb25fZmFpbHVy ZV9qdW1wOg0KICAgICBjYXNlIG9uX2ZhaWx1cmVfa2VlcF9zdHJpbmdfanVtcDoNCiAgICAgY2Fz ZSBvbl9mYWlsdXJlX2p1bXBfbG9vcDoNCiAgICAgY2FzZSBvbl9mYWlsdXJlX2p1bXBfbmFzdHls b29wOg0KICAgICBjYXNlIG9uX2ZhaWx1cmVfanVtcF9zbWFydDoNCiAgICAgICBwKys7DQogICAg ICAgYnJlYWs7DQogICAgIGRlZmF1bHQ6DQogICAgICAgY29udGludWU7DQogICAgIH07DQoNCg0K DQoNCiBjYXNlIG9uX2ZhaWx1cmVfanVtcDoNCiBjYXNlIG9uX2ZhaWx1cmVfa2VlcF9zdHJpbmdf anVtcDoNCiBjYXNlIG9uX2ZhaWx1cmVfanVtcF9uYXN0eWxvb3A6DQogY2FzZSBvbl9mYWlsdXJl X2p1bXBfbG9vcDoNCiBjYXNlIG9uX2ZhaWx1cmVfanVtcF9zbWFydDoNCiAgIGRvIHsgZG8geyAo aikgPSAqKHApICYgMDM3NzsgKGopICs9ICgoc2lnbmVkIGNoYXIpICgqKChwKSArIDEpKSkgPDwg ODsgfSB3aGlsZSAoMCk7IChwKSArPSAyOyB9IHdoaWxlICgwKTsNCiAgIGlmIChwICsgaiA8PSBw MSkNCiAgICAgOw0KICAgZWxzZQ0KICAgICB7DQoNCg0KICAgICAgIGludCByID0gYW5hbHlzZV9m aXJzdCAocCwgcGVuZCwgZmFzdG1hcCwgbXVsdGlieXRlKTsNCiAgICAgICBpZiAocikgcmV0dXJu IHI7DQogICAgICAgcCArPSBqOw0KICAgICB9DQogICBjb250aW51ZTsNCg0KDQogY2FzZSBqdW1w X246DQoNCiAgIDsNCiAgIHAgKz0gNDsNCg0KDQoNCiAgIGNvbnRpbnVlOw0KDQogY2FzZSBzdWNj ZWVkX246DQoNCiAgIDsNCiAgIHAgKz0gNDsNCg0KDQoNCiAgIGNvbnRpbnVlOw0KDQoNCiBjYXNl IHNldF9udW1iZXJfYXQ6DQogICBwICs9IDQ7DQogICBjb250aW51ZTsNCg0KDQogY2FzZSBzdGFy dF9tZW1vcnk6DQogY2FzZSBzdG9wX21lbW9yeToNCiAgIHAgKz0gMTsNCiAgIGNvbnRpbnVlOw0K DQoNCiBkZWZhdWx0Og0KICAgYWJvcnQgKCk7DQogfQ0KDQoNCg0KDQogICAgICByZXR1cm4gMDsN CiAgICB9DQoNCg0KICByZXR1cm4gMTsNCg0KfQ0KIyA0MTgxICIvaG9tZS9qYW1lcy9yYWlkL29w dC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMv cmVnZXguYyINCmludA0KcmVfY29tcGlsZV9mYXN0bWFwIChzdHJ1Y3QgcmVfcGF0dGVybl9idWZm ZXIgKmJ1ZnApDQp7DQogIGNoYXIgKmZhc3RtYXAgPSBidWZwLT5mYXN0bWFwOw0KICBpbnQgYW5h bHlzaXM7DQoNCiAgOw0KDQogIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoMSA8PCA4KSAmJiAoMSA8 PCA4KSA9PSAwID8gKF9fd2Fybl9tZW1zZXRfemVyb19sZW4gKCksICh2b2lkKSAoMCksICh2b2lk KSAoMSA8PCA4KSwgKHZvaWQgKikgKGZhc3RtYXApKSA6ICgoX19idWlsdGluX29iamVjdF9zaXpl IChmYXN0bWFwLCAwKSAhPSAoc2l6ZV90KSAtMSkgPyBfX2J1aWx0aW5fX19tZW1zZXRfY2hrIChm YXN0bWFwLCAwLCAxIDw8IDgsIF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoZmFzdG1hcCwgMCkpIDog X19tZW1zZXRfaWNoayAoZmFzdG1hcCwgMCwgMSA8PCA4KSkpOw0KICBidWZwLT5mYXN0bWFwX2Fj Y3VyYXRlID0gMTsNCg0KICBhbmFseXNpcyA9IGFuYWx5c2VfZmlyc3QgKGJ1ZnAtPmJ1ZmZlciwg YnVmcC0+YnVmZmVyICsgYnVmcC0+dXNlZCwNCiAgICAgICBmYXN0bWFwLCAwKTsNCiAgYnVmcC0+ Y2FuX2JlX251bGwgPSAoYW5hbHlzaXMgIT0gMCk7DQogIHJldHVybiAwOw0KfQ0KIyA0MjExICIv aG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43 LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCnZvaWQNCnJlX3NldF9yZWdpc3RlcnMgKHN0cnVj dCByZV9wYXR0ZXJuX2J1ZmZlciAqYnVmcCwgc3RydWN0IHJlX3JlZ2lzdGVycyAqcmVncywgdW5z aWduZWQgaW50IG51bV9yZWdzLCByZWdvZmZfdCAqc3RhcnRzLCByZWdvZmZfdCAqZW5kcykNCnsN CiAgaWYgKG51bV9yZWdzKQ0KICAgIHsNCiAgICAgIGJ1ZnAtPnJlZ3NfYWxsb2NhdGVkID0gMTsN CiAgICAgIHJlZ3MtPm51bV9yZWdzID0gbnVtX3JlZ3M7DQogICAgICByZWdzLT5zdGFydCA9IHN0 YXJ0czsNCiAgICAgIHJlZ3MtPmVuZCA9IGVuZHM7DQogICAgfQ0KICBlbHNlDQogICAgew0KICAg ICAgYnVmcC0+cmVnc19hbGxvY2F0ZWQgPSAwOw0KICAgICAgcmVncy0+bnVtX3JlZ3MgPSAwOw0K ICAgICAgcmVncy0+c3RhcnQgPSByZWdzLT5lbmQgPSAocmVnb2ZmX3QgKikgMDsNCiAgICB9DQp9 DQoNCg0KDQoNCg0KDQoNCnJlZ29mZl90DQpyZV9zZWFyY2ggKHN0cnVjdCByZV9wYXR0ZXJuX2J1 ZmZlciAqYnVmcCwgY29uc3QgY2hhciAqc3RyaW5nLCBzaXplX3Qgc2l6ZSwNCiAgICBzc2l6ZV90 IHN0YXJ0cG9zLCBzc2l6ZV90IHJhbmdlLCBzdHJ1Y3QgcmVfcmVnaXN0ZXJzICpyZWdzKQ0Kew0K ICByZXR1cm4gcmVfc2VhcmNoXzIgKGJ1ZnAsICgodm9pZCAqKTApLCAwLCBzdHJpbmcsIHNpemUs IHN0YXJ0cG9zLCByYW5nZSwNCiAgICAgICAgcmVncywgc2l6ZSk7DQp9DQoNCg0KDQojZGVmaW5l IEhFQURfQUREUl9WU1RSSU5HKFApICgoKFApID49IHNpemUxID8gc3RyaW5nMiA6IHN0cmluZzEp KQ0KDQoNCg0KI2RlZmluZSBQT1NfQUREUl9WU1RSSU5HKFBPUykgKCgoUE9TKSA+PSBzaXplMSA/ IHN0cmluZzIgLSBzaXplMSA6IHN0cmluZzEpICsgKFBPUykpDQojIDQyNzMgIi9ob21lL2phbWVz L3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3Jj Ly4uL3NyYy9yZWdleC5jIg0KcmVnb2ZmX3QNCnJlX3NlYXJjaF8yIChzdHJ1Y3QgcmVfcGF0dGVy bl9idWZmZXIgKmJ1ZnAsIGNvbnN0IGNoYXIgKnN0cjEsIHNpemVfdCBzaXplMSwNCiAgICAgIGNv bnN0IGNoYXIgKnN0cjIsIHNpemVfdCBzaXplMiwgc3NpemVfdCBzdGFydHBvcywgc3NpemVfdCBy YW5nZSwNCiAgICAgIHN0cnVjdCByZV9yZWdpc3RlcnMgKnJlZ3MsIHNzaXplX3Qgc3RvcCkNCnsN CiAgcmVnb2ZmX3QgdmFsOw0KICByZV9jaGFyICpzdHJpbmcxID0gKHJlX2NoYXIqKSBzdHIxOw0K ICByZV9jaGFyICpzdHJpbmcyID0gKHJlX2NoYXIqKSBzdHIyOw0KICByZWdpc3RlciBjaGFyICpm YXN0bWFwID0gYnVmcC0+ZmFzdG1hcDsNCiAgcmVnaXN0ZXIgY2hhciAqIHRyYW5zbGF0ZSA9IGJ1 ZnAtPnRyYW5zbGF0ZTsNCiAgc2l6ZV90IHRvdGFsX3NpemUgPSBzaXplMSArIHNpemUyOw0KICBz c2l6ZV90IGVuZHBvcyA9IHN0YXJ0cG9zICsgcmFuZ2U7DQogIGJvb2xlYW4gYW5jaG9yZWRfc3Rh cnQ7DQoNCiAgY29uc3QgYm9vbGVhbiBtdWx0aWJ5dGUgPSAwOw0KDQoNCiAgaWYgKHN0YXJ0cG9z IDwgMCB8fCBzdGFydHBvcyA+IHRvdGFsX3NpemUpDQogICAgcmV0dXJuIC0xOw0KDQoNCg0KDQog IGlmIChlbmRwb3MgPCAwKQ0KICAgIHJhbmdlID0gMCAtIHN0YXJ0cG9zOw0KICBlbHNlIGlmIChl bmRwb3MgPiB0b3RhbF9zaXplKQ0KICAgIHJhbmdlID0gdG90YWxfc2l6ZSAtIHN0YXJ0cG9zOw0K DQoNCg0KICBpZiAoYnVmcC0+dXNlZCA+IDAgJiYgKHJlX29wY29kZV90KSBidWZwLT5idWZmZXJb MF0gPT0gYmVnYnVmICYmIHJhbmdlID4gMCkNCiAgICB7DQogICAgICBpZiAoc3RhcnRwb3MgPiAw KQ0KIHJldHVybiAtMTsNCiAgICAgIGVsc2UNCiByYW5nZSA9IDA7DQogICAgfQ0KIyA0MzIzICIv aG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43 LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiAgaWYgKGZhc3RtYXAgJiYgIWJ1ZnAtPmZhc3Rt YXBfYWNjdXJhdGUpDQogICAgcmVfY29tcGlsZV9mYXN0bWFwIChidWZwKTsNCg0KDQogIGFuY2hv cmVkX3N0YXJ0ID0gKGJ1ZnAtPmJ1ZmZlclswXSA9PSBiZWdsaW5lKTsNCiMgNDMzOSAiL2hvbWUv amFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xp Yi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQogIGZvciAoOzspDQogICAgew0KDQoNCg0KDQogICAgICBp ZiAoYW5jaG9yZWRfc3RhcnQgJiYgc3RhcnRwb3MgPiAwKQ0KIHsNCiAgIGlmICghICgoc3RhcnRw b3MgPD0gc2l6ZTEgPyBzdHJpbmcxW3N0YXJ0cG9zIC0gMV0NCiAgICA6IHN0cmluZzJbc3RhcnRw b3MgLSBzaXplMSAtIDFdKQ0KICAgPT0gJ1xuJykpDQogICAgIGdvdG8gYWR2YW5jZTsNCiB9DQoN Cg0KDQoNCg0KICAgICAgaWYgKGZhc3RtYXAgJiYgc3RhcnRwb3MgPCB0b3RhbF9zaXplICYmICFi dWZwLT5jYW5fYmVfbnVsbCkNCiB7DQogICByZWdpc3RlciByZV9jaGFyICpkOw0KICAgcmVnaXN0 ZXIgcmVfd2NoYXJfdCBidWZfY2g7DQoNCiAgIGQgPSAoKChzdGFydHBvcykgPj0gc2l6ZTEgPyBz dHJpbmcyIC0gc2l6ZTEgOiBzdHJpbmcxKSArIChzdGFydHBvcykpOw0KDQogICBpZiAocmFuZ2Ug PiAwKQ0KICAgICB7DQogICAgICAgcmVnaXN0ZXIgaW50IGxpbSA9IDA7DQogICAgICAgc3NpemVf dCBpcmFuZ2UgPSByYW5nZTsNCg0KICAgICAgIGlmIChzdGFydHBvcyA8IHNpemUxICYmIHN0YXJ0 cG9zICsgcmFuZ2UgPj0gc2l6ZTEpDQogIGxpbSA9IHJhbmdlIC0gKHNpemUxIC0gc3RhcnRwb3Mp Ow0KDQoNCg0KICAgICAgIGlmICgodHJhbnNsYXRlKSkNCiAgew0KICAgIGlmIChtdWx0aWJ5dGUp DQogICAgICB3aGlsZSAocmFuZ2UgPiBsaW0pDQogICAgICAgIHsNCiAgIGludCBidWZfY2hhcmxl bjsNCg0KICAgYnVmX2NoID0gKChidWZfY2hhcmxlbikgPSAxLCAqKGQpKTsNCiAgIGJ1Zl9jaCA9 ICgodW5zaWduZWQgY2hhcikodHJhbnNsYXRlKVtidWZfY2hdKTsNCiAgIGlmIChmYXN0bWFwWyhi dWZfY2gpXSkNCiAgICAgYnJlYWs7DQoNCiAgIHJhbmdlIC09IGJ1Zl9jaGFybGVuOw0KICAgZCAr PSBidWZfY2hhcmxlbjsNCiAgICAgICAgfQ0KICAgIGVsc2UNCiAgICAgIHdoaWxlIChyYW5nZSA+ IGxpbSkNCiAgICAgICAgew0KICAgcmVnaXN0ZXIgcmVfd2NoYXJfdCBjaCwgdHJhbnNsYXRlZDsN Cg0KICAgYnVmX2NoID0gKmQ7DQogICBjaCA9IChidWZfY2gpOw0KICAgdHJhbnNsYXRlZCA9ICgo dW5zaWduZWQgY2hhcikodHJhbnNsYXRlKVtjaF0pOw0KICAgaWYgKHRyYW5zbGF0ZWQgIT0gY2gN CiAgICAgICAmJiAoY2ggPSAodHJhbnNsYXRlZCkpID49IDApDQogICAgIGJ1Zl9jaCA9IGNoOw0K ICAgaWYgKGZhc3RtYXBbYnVmX2NoXSkNCiAgICAgYnJlYWs7DQogICBkKys7DQogICByYW5nZS0t Ow0KICAgICAgICB9DQogIH0NCiAgICAgICBlbHNlDQogIHsNCiAgICBpZiAobXVsdGlieXRlKQ0K ICAgICAgd2hpbGUgKHJhbmdlID4gbGltKQ0KICAgICAgICB7DQogICBpbnQgYnVmX2NoYXJsZW47 DQoNCiAgIGJ1Zl9jaCA9ICgoYnVmX2NoYXJsZW4pID0gMSwgKihkKSk7DQogICBpZiAoZmFzdG1h cFsoYnVmX2NoKV0pDQogICAgIGJyZWFrOw0KICAgcmFuZ2UgLT0gYnVmX2NoYXJsZW47DQogICBk ICs9IGJ1Zl9jaGFybGVuOw0KICAgICAgICB9DQogICAgZWxzZQ0KICAgICAgd2hpbGUgKHJhbmdl ID4gbGltICYmICFmYXN0bWFwWypkXSkNCiAgICAgICAgew0KICAgZCsrOw0KICAgcmFuZ2UtLTsN CiAgICAgICAgfQ0KICB9DQogICAgICAgc3RhcnRwb3MgKz0gaXJhbmdlIC0gcmFuZ2U7DQogICAg IH0NCiAgIGVsc2UNCiAgICAgew0KICAgICAgIGlmIChtdWx0aWJ5dGUpDQogIHsNCiAgICBidWZf Y2ggPSAoKihkKSk7DQogICAgYnVmX2NoID0gKCh0cmFuc2xhdGUpID8gKCh1bnNpZ25lZCBjaGFy KSh0cmFuc2xhdGUpWyhidWZfY2gpXSkgOiAoYnVmX2NoKSk7DQogICAgaWYgKCEgZmFzdG1hcFso YnVmX2NoKV0pDQogICAgICBnb3RvIGFkdmFuY2U7DQogIH0NCiAgICAgICBlbHNlDQogIHsNCiAg ICByZWdpc3RlciByZV93Y2hhcl90IGNoLCB0cmFuc2xhdGVkOw0KDQogICAgYnVmX2NoID0gKmQ7 DQogICAgY2ggPSAoYnVmX2NoKTsNCiAgICB0cmFuc2xhdGVkID0gKCh0cmFuc2xhdGUpID8gKCh1 bnNpZ25lZCBjaGFyKSh0cmFuc2xhdGUpWyhjaCldKSA6IChjaCkpOw0KICAgIGlmICh0cmFuc2xh dGVkICE9IGNoDQogICAgICAgICYmIChjaCA9ICh0cmFuc2xhdGVkKSkgPj0gMCkNCiAgICAgIGJ1 Zl9jaCA9IGNoOw0KICAgIGlmICghIGZhc3RtYXBbKCh0cmFuc2xhdGUpID8gKCh1bnNpZ25lZCBj aGFyKSh0cmFuc2xhdGUpWyhidWZfY2gpXSkgOiAoYnVmX2NoKSldKQ0KICAgICAgZ290byBhZHZh bmNlOw0KICB9DQogICAgIH0NCiB9DQoNCg0KICAgICAgaWYgKHJhbmdlID49IDAgJiYgc3RhcnRw b3MgPT0gdG90YWxfc2l6ZSAmJiBmYXN0bWFwDQogICAmJiAhYnVmcC0+Y2FuX2JlX251bGwpDQog cmV0dXJuIC0xOw0KDQogICAgICB2YWwgPSByZV9tYXRjaF8yX2ludGVybmFsIChidWZwLCBzdHJp bmcxLCBzaXplMSwgc3RyaW5nMiwgc2l6ZTIsDQogICAgIHN0YXJ0cG9zLCByZWdzLCBzdG9wKTsN Cg0KICAgICAgaWYgKHZhbCA+PSAwKQ0KIHJldHVybiBzdGFydHBvczsNCg0KICAgICAgaWYgKHZh bCA9PSAtMikNCiByZXR1cm4gLTI7DQoNCiAgICBhZHZhbmNlOg0KICAgICAgaWYgKCFyYW5nZSkN CiBicmVhazsNCiAgICAgIGVsc2UgaWYgKHJhbmdlID4gMCkNCiB7DQoNCiAgIGlmIChtdWx0aWJ5 dGUpDQogICAgIHsNCiAgICAgICByZV9jaGFyICpwID0gKCgoc3RhcnRwb3MpID49IHNpemUxID8g c3RyaW5nMiAtIHNpemUxIDogc3RyaW5nMSkgKyAoc3RhcnRwb3MpKTsNCiAgICAgICBpbnQgbGVu ID0gKDEpOw0KDQogICAgICAgcmFuZ2UgLT0gbGVuOw0KICAgICAgIGlmIChyYW5nZSA8IDApDQog IGJyZWFrOw0KICAgICAgIHN0YXJ0cG9zICs9IGxlbjsNCiAgICAgfQ0KICAgZWxzZQ0KICAgICB7 DQogICAgICAgcmFuZ2UtLTsNCiAgICAgICBzdGFydHBvcysrOw0KICAgICB9DQogfQ0KICAgICAg ZWxzZQ0KIHsNCiAgIHJhbmdlKys7DQogICBzdGFydHBvcy0tOw0KDQoNCiAgIGlmIChtdWx0aWJ5 dGUpDQogICAgIHsNCiAgICAgICByZV9jaGFyICpwID0gKCgoc3RhcnRwb3MpID49IHNpemUxID8g c3RyaW5nMiAtIHNpemUxIDogc3RyaW5nMSkgKyAoc3RhcnRwb3MpKSArIDE7DQogICAgICAgcmVf Y2hhciAqcDAgPSBwOw0KICAgICAgIHJlX2NoYXIgKnBoZWFkID0gKCgoc3RhcnRwb3MpID49IHNp emUxID8gc3RyaW5nMiA6IHN0cmluZzEpKTsNCg0KDQogICAgICAgKChwKS0tKTsNCiAgICAgICBy YW5nZSArPSBwMCAtIDEgLSBwOw0KICAgICAgIGlmIChyYW5nZSA+IDApDQogIGJyZWFrOw0KDQog ICAgICAgc3RhcnRwb3MgLT0gcDAgLSAxIC0gcDsNCiAgICAgfQ0KIH0NCiAgICB9DQogIHJldHVy biAtMTsNCn0NCg0KDQoNCg0Kc3RhdGljIGludCBiY21wX3RyYW5zbGF0ZSAocmVfY2hhciAqczEs IHJlX2NoYXIgKnMyLA0KICAgICAgcmVnaXN0ZXIgc3NpemVfdCBsZW4sDQogICAgICBjaGFyICog dHJhbnNsYXRlLA0KICAgICAgY29uc3QgaW50IG11bHRpYnl0ZSk7DQoNCg0KDQojZGVmaW5lIFBP SU5URVJfVE9fT0ZGU0VUKHB0cikgKEZJUlNUX1NUUklOR19QIChwdHIpID8gKChyZWdvZmZfdCkg KChwdHIpIC0gc3RyaW5nMSkpIDogKChyZWdvZmZfdCkgKChwdHIpIC0gc3RyaW5nMiArIHNpemUx KSkpDQojIDQ1MzMgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFj cy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KI2RlZmluZSBQUkVGRVRD SCgpIHdoaWxlIChkID09IGRlbmQpIHsgaWYgKGRlbmQgPT0gZW5kX21hdGNoXzIpIGdvdG8gZmFp bDsgZCA9IHN0cmluZzI7IGRlbmQgPSBlbmRfbWF0Y2hfMjsgfQ0KIyA0NTQ4ICIvaG9tZS9qYW1l cy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNy Yy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgUFJFRkVUQ0hfTk9MSU1JVCgpIGlmIChkID09IGVu ZDEpIHsgZCA9IHN0cmluZzI7IGRlbmQgPSBlbmRfbWF0Y2hfMjsgfQ0KIyA0NTU3ICIvaG9tZS9q YW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGli LXNyYy8uLi9zcmMvcmVnZXguYyINCiNkZWZpbmUgQVRfU1RSSU5HU19CRUcoZCkgKChkKSA9PSAo c2l6ZTEgPyBzdHJpbmcxIDogc3RyaW5nMikgfHwgIXNpemUyKQ0KI2RlZmluZSBBVF9TVFJJTkdT X0VORChkKSAoKGQpID09IGVuZDIpDQojIDQ1ODkgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNz L3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5j Ig0KI2RlZmluZSBGUkVFX1ZBUih2YXIpIGRvIHsgaWYgKHZhcikgeyBSRUdFWF9GUkVFICh2YXIp OyB2YXIgPSBOVUxMOyB9IH0gd2hpbGUgKDApDQoNCg0KDQoNCg0KDQoNCiNkZWZpbmUgRlJFRV9W QVJJQUJMRVMoKSBkbyB7IFJFR0VYX0ZSRUVfU1RBQ0sgKGZhaWxfc3RhY2suc3RhY2spOyBGUkVF X1ZBUiAocmVnc3RhcnQpOyBGUkVFX1ZBUiAocmVnZW5kKTsgRlJFRV9WQVIgKGJlc3RfcmVnc3Rh cnQpOyBGUkVFX1ZBUiAoYmVzdF9yZWdlbmQpOyB9IHdoaWxlICgwKQ0KIyA0NjE0ICIvaG9tZS9q YW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGli LXNyYy8uLi9zcmMvcmVnZXguYyINCnN0YXRpYyByZV9jaGFyICoNCnNraXBfb25lX2NoYXIgKGNv bnN0IHJlX2NoYXIgKnApDQp7DQogIHN3aXRjaCAoKnArKykNCiAgICB7DQogICAgY2FzZSBhbnlj aGFyOg0KICAgICAgYnJlYWs7DQoNCiAgICBjYXNlIGV4YWN0bjoNCiAgICAgIHAgKz0gKnAgKyAx Ow0KICAgICAgYnJlYWs7DQoNCiAgICBjYXNlIGNoYXJzZXRfbm90Og0KICAgIGNhc2UgY2hhcnNl dDoNCiAgICAgIGlmICgoKHAgLSAxKVsxXSAmIDB4ODApKQ0KIHsNCiAgIGludCBtY250Ow0KICAg cCA9ICgmKHAgLSAxKVs0ICsgKChwIC0gMSlbMV0gJiAweDdGKV0pOw0KICAgZG8geyBkbyB7ICht Y250KSA9ICoocCkgJiAwMzc3OyAobWNudCkgKz0gKChzaWduZWQgY2hhcikgKCooKHApICsgMSkp KSA8PCA4OyB9IHdoaWxlICgwKTsgKHApICs9IDI7IH0gd2hpbGUgKDApOw0KICAgcCA9ICgocCkg KyAobWNudCkgKiAyICogMyk7DQogfQ0KICAgICAgZWxzZQ0KIHAgKz0gMSArICgocCAtIDEpWzFd ICYgMHg3Rik7DQogICAgICBicmVhazsNCg0KICAgIGNhc2Ugc3ludGF4c3BlYzoNCiAgICBjYXNl IG5vdHN5bnRheHNwZWM6DQoNCg0KDQoNCiAgICAgIHArKzsNCiAgICAgIGJyZWFrOw0KDQogICAg ZGVmYXVsdDoNCiAgICAgIHAgPSAoKHZvaWQgKikwKTsNCiAgICB9DQogIHJldHVybiBwOw0KfQ0K DQoNCg0Kc3RhdGljIHJlX2NoYXIgKg0Kc2tpcF9ub29wcyAoY29uc3QgcmVfY2hhciAqcCwgY29u c3QgcmVfY2hhciAqcGVuZCkNCnsNCiAgaW50IG1jbnQ7DQogIHdoaWxlIChwIDwgcGVuZCkNCiAg ICB7DQogICAgICBzd2l0Y2ggKCpwKQ0KIHsNCiBjYXNlIHN0YXJ0X21lbW9yeToNCiBjYXNlIHN0 b3BfbWVtb3J5Og0KICAgcCArPSAyOyBicmVhazsNCiBjYXNlIG5vX29wOg0KICAgcCArPSAxOyBi cmVhazsNCiBjYXNlIGp1bXA6DQogICBwICs9IDE7DQogICBkbyB7IGRvIHsgKG1jbnQpID0gKihw KSAmIDAzNzc7IChtY250KSArPSAoKHNpZ25lZCBjaGFyKSAoKigocCkgKyAxKSkpIDw8IDg7IH0g d2hpbGUgKDApOyAocCkgKz0gMjsgfSB3aGlsZSAoMCk7DQogICBwICs9IG1jbnQ7DQogICBicmVh azsNCiBkZWZhdWx0Og0KICAgcmV0dXJuIHA7DQogfQ0KICAgIH0NCiAgOw0KICByZXR1cm4gcDsN Cn0NCg0KDQpzdGF0aWMgaW50DQptdXR1YWxseV9leGNsdXNpdmVfcCAoc3RydWN0IHJlX3BhdHRl cm5fYnVmZmVyICpidWZwLCBjb25zdCByZV9jaGFyICpwMSwgY29uc3QgcmVfY2hhciAqcDIpDQp7 DQogIHJlX29wY29kZV90IG9wMjsNCiAgY29uc3QgYm9vbGVhbiBtdWx0aWJ5dGUgPSAwOw0KICB1 bnNpZ25lZCBjaGFyICpwZW5kID0gYnVmcC0+YnVmZmVyICsgYnVmcC0+dXNlZDsNCg0KIA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOw0KDQoNCg0KDQoNCiAgcDIgPSBz a2lwX25vb3BzIChwMiwgcGVuZCk7DQoNCg0KDQoNCiANCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsNCg0KICBvcDIgPSBwMiA9PSBwZW5kID8gc3VjY2VlZCA6ICpwMjsN Cg0KICBzd2l0Y2ggKG9wMikNCiAgICB7DQogICAgY2FzZSBzdWNjZWVkOg0KICAgIGNhc2UgZW5k YnVmOg0KDQogICAgICBpZiAoc2tpcF9vbmVfY2hhciAocDEpKQ0KIHsNCiAgIDsNCiAgIHJldHVy biAxOw0KIH0NCiAgICAgIGJyZWFrOw0KDQogICAgY2FzZSBlbmRsaW5lOg0KICAgIGNhc2UgZXhh Y3RuOg0KICAgICAgew0KIHJlZ2lzdGVyIHJlX3djaGFyX3QgYw0KICAgPSAocmVfb3Bjb2RlX3Qp ICpwMiA9PSBlbmRsaW5lID8gJ1xuJw0KICAgOiAoKihwMiArIDIpKTsNCg0KIGlmICgocmVfb3Bj b2RlX3QpICpwMSA9PSBleGFjdG4pDQogICB7DQogICAgIGlmIChjICE9ICgqKHAxICsgMikpKQ0K ICAgICAgIHsNCiAgOw0KICByZXR1cm4gMTsNCiAgICAgICB9DQogICB9DQoNCiBlbHNlIGlmICgo cmVfb3Bjb2RlX3QpICpwMSA9PSBjaGFyc2V0DQogICB8fCAocmVfb3Bjb2RlX3QpICpwMSA9PSBj aGFyc2V0X25vdCkNCiAgIHsNCiAgICAgaW50IG5vdCA9IChyZV9vcGNvZGVfdCkgKnAxID09IGNo YXJzZXRfbm90Ow0KDQoNCg0KICAgICBpZiAoISBtdWx0aWJ5dGUgfHwgKChjKSA8IDAyMDApKQ0K ICAgICAgIHsNCiAgaWYgKGMgPCAoKHAxKVsxXSAmIDB4N0YpICogOA0KICAgICAgJiYgcDFbMiAr IGMgLyA4XSAmICgxIDw8IChjICUgOCkpKQ0KICAgIG5vdCA9ICFub3Q7DQogICAgICAgfQ0KICAg ICBlbHNlIGlmICgoKHAxKVsxXSAmIDB4ODApKQ0KICAgICAgIGRvIHsgaW50IGNvdW50OyByZV9j aGFyICpyYW5nZV90YWJsZSA9ICgmKHAxKVs0ICsgKChwMSlbMV0gJiAweDdGKV0pOyBkbyB7IGRv IHsgKGNvdW50KSA9ICoocmFuZ2VfdGFibGUpICYgMDM3NzsgKGNvdW50KSArPSAoKHNpZ25lZCBj aGFyKSAoKigocmFuZ2VfdGFibGUpICsgMSkpKSA8PCA4OyB9IHdoaWxlICgwKTsgKHJhbmdlX3Rh YmxlKSArPSAyOyB9IHdoaWxlICgwKTsgZG8geyByZV93Y2hhcl90IHJhbmdlX3N0YXJ0LCByYW5n ZV9lbmQ7IHJlX2NoYXIgKnJ0cDsgcmVfY2hhciAqcmFuZ2VfdGFibGVfZW5kID0gKCgocmFuZ2Vf dGFibGUpKSArICgoY291bnQpKSAqIDIgKiAzKTsgZm9yIChydHAgPSAocmFuZ2VfdGFibGUpOyBy dHAgPCByYW5nZV90YWJsZV9lbmQ7IHJ0cCArPSAyICogMykgeyBkbyB7IChyYW5nZV9zdGFydCkg PSAoKHJ0cClbMF0gfCAoKHJ0cClbMV0gPDwgOCkgfCAoKHJ0cClbMl0gPDwgMTYpKTsgfSB3aGls ZSAoMCk7IGRvIHsgKHJhbmdlX2VuZCkgPSAoKHJ0cCArIDMpWzBdIHwgKChydHAgKyAzKVsxXSA8 PCA4KSB8ICgocnRwICsgMylbMl0gPDwgMTYpKTsgfSB3aGlsZSAoMCk7IGlmIChyYW5nZV9zdGFy dCA8PSAoKGMpKSAmJiAoKGMpKSA8PSByYW5nZV9lbmQpIHsgKChub3QpKSA9ICEoKG5vdCkpOyBi cmVhazsgfSB9IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsNCg0KDQoNCiAgICAgaWYgKCFub3Qp DQogICAgICAgew0KICA7DQogIHJldHVybiAxOw0KICAgICAgIH0NCiAgIH0NCiBlbHNlIGlmICgo cmVfb3Bjb2RlX3QpICpwMSA9PSBhbnljaGFyDQogICAmJiBjID09ICdcbicpDQogICB7DQogICAg IDsNCiAgICAgcmV0dXJuIDE7DQogICB9DQogICAgICB9DQogICAgICBicmVhazsNCg0KICAgIGNh c2UgY2hhcnNldDoNCiAgICAgIHsNCiBpZiAoKHJlX29wY29kZV90KSAqcDEgPT0gZXhhY3RuKQ0K DQogICByZXR1cm4gbXV0dWFsbHlfZXhjbHVzaXZlX3AgKGJ1ZnAsIHAyLCBwMSk7DQoNCg0KDQoN CiAgICAgIGVsc2UgaWYgKCFtdWx0aWJ5dGUgfHwgISgocDIpWzFdICYgMHg4MCkpDQogew0KIyA0 NzkwICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5n Y2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiAgIGlmICgocmVfb3Bjb2RlX3QpICpw MSA9PSBjaGFyc2V0KQ0KICAgICB7DQogICAgICAgaW50IGlkeDsNCg0KDQogICAgICAgZm9yIChp ZHggPSAwOw0KICAgICAoaWR4IDwgKGludCkgcDJbMV0NCiAgICAgICYmIGlkeCA8ICgocDEpWzFd ICYgMHg3RikpOw0KICAgICBpZHgrKykNCiAgaWYgKChwMlsyICsgaWR4XSAmIHAxWzIgKyBpZHhd KSAhPSAwKQ0KICAgIGJyZWFrOw0KDQogICAgICAgaWYgKGlkeCA9PSBwMlsxXQ0KICAgIHx8IGlk eCA9PSAoKHAxKVsxXSAmIDB4N0YpKQ0KICB7DQogICAgOw0KICAgIHJldHVybiAxOw0KICB9DQog ICAgIH0NCiAgIGVsc2UgaWYgKChyZV9vcGNvZGVfdCkgKnAxID09IGNoYXJzZXRfbm90KQ0KICAg ICB7DQogICAgICAgaW50IGlkeDsNCg0KDQogICAgICAgZm9yIChpZHggPSAwOyBpZHggPCAoaW50 KSBwMlsxXTsgaWR4KyspDQogIGlmICghIChwMlsyICsgaWR4XSA9PSAwDQogICAgICAgICB8fCAo aWR4IDwgKChwMSlbMV0gJiAweDdGKQ0KICAgICAgJiYgKChwMlsyICsgaWR4XSAmIH4gcDFbMiAr IGlkeF0pID09IDApKSkpDQogICAgYnJlYWs7DQoNCiAgICAgICBpZiAoaWR4ID09IHAyWzFdKQ0K ICB7DQogICAgOw0KICAgIHJldHVybiAxOw0KICB9DQogICAgICAgfQ0KICAgfQ0KICAgICAgfQ0K ICAgICAgYnJlYWs7DQoNCiAgICBjYXNlIGNoYXJzZXRfbm90Og0KICAgICAgc3dpdGNoICgqcDEp DQogew0KIGNhc2UgZXhhY3RuOg0KIGNhc2UgY2hhcnNldDoNCg0KICAgcmV0dXJuIG11dHVhbGx5 X2V4Y2x1c2l2ZV9wIChidWZwLCBwMiwgcDEpOw0KIGNhc2UgY2hhcnNldF9ub3Q6DQoNCg0KDQoN CiAgIGJyZWFrOw0KIH0NCiAgICAgIGJyZWFrOw0KDQogICAgY2FzZSB3b3JkZW5kOg0KICAgICAg cmV0dXJuICgocmVfb3Bjb2RlX3QpICpwMSA9PSBzeW50YXhzcGVjICYmIHAxWzFdID09IFN3b3Jk KTsNCiAgICBjYXNlIHN5bWVuZDoNCiAgICAgIHJldHVybiAoKHJlX29wY29kZV90KSAqcDEgPT0g c3ludGF4c3BlYw0KICAgICAgICAgICAgICAmJiAocDFbMV0gPT0gU3N5bWJvbCB8fCBwMVsxXSA9 PSBTd29yZCkpOw0KICAgIGNhc2Ugbm90c3ludGF4c3BlYzoNCiAgICAgIHJldHVybiAoKHJlX29w Y29kZV90KSAqcDEgPT0gc3ludGF4c3BlYyAmJiBwMVsxXSA9PSBwMlsxXSk7DQoNCiAgICBjYXNl IHdvcmRiZWc6DQogICAgICByZXR1cm4gKChyZV9vcGNvZGVfdCkgKnAxID09IG5vdHN5bnRheHNw ZWMgJiYgcDFbMV0gPT0gU3dvcmQpOw0KICAgIGNhc2Ugc3ltYmVnOg0KICAgICAgcmV0dXJuICgo cmVfb3Bjb2RlX3QpICpwMSA9PSBub3RzeW50YXhzcGVjDQogICAgICAgICAgICAgICYmIChwMVsx XSA9PSBTc3ltYm9sIHx8IHAxWzFdID09IFN3b3JkKSk7DQogICAgY2FzZSBzeW50YXhzcGVjOg0K ICAgICAgcmV0dXJuICgocmVfb3Bjb2RlX3QpICpwMSA9PSBub3RzeW50YXhzcGVjICYmIHAxWzFd ID09IHAyWzFdKTsNCg0KICAgIGNhc2Ugd29yZGJvdW5kOg0KICAgICAgcmV0dXJuICgoKHJlX29w Y29kZV90KSAqcDEgPT0gbm90c3ludGF4c3BlYw0KICAgICAgICB8fCAocmVfb3Bjb2RlX3QpICpw MSA9PSBzeW50YXhzcGVjKQ0KICAgICAgICYmIHAxWzFdID09IFN3b3JkKTsNCiMgNDg3NCAiL2hv bWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4y L2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQogICAgZGVmYXVsdDoNCiAgICAgIDsNCiAgICB9DQoN Cg0KICByZXR1cm4gMDsNCn0NCg0KDQoNCg0KDQoNCg0KcmVnb2ZmX3QNCnJlX21hdGNoIChzdHJ1 Y3QgcmVfcGF0dGVybl9idWZmZXIgKmJ1ZnAsIGNvbnN0IGNoYXIgKnN0cmluZywNCiAgIHNpemVf dCBzaXplLCBzc2l6ZV90IHBvcywgc3RydWN0IHJlX3JlZ2lzdGVycyAqcmVncykNCnsNCiAgcmVn b2ZmX3QgcmVzdWx0ID0gcmVfbWF0Y2hfMl9pbnRlcm5hbCAoYnVmcCwgKCh2b2lkICopMCksIDAs IChyZV9jaGFyKikgc3RyaW5nLA0KICAgICAgc2l6ZSwgcG9zLCByZWdzLCBzaXplKTsNCiAgcmV0 dXJuIHJlc3VsdDsNCn0NCg0KIyA0OTE4ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxl YXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCnJl Z29mZl90DQpyZV9tYXRjaF8yIChzdHJ1Y3QgcmVfcGF0dGVybl9idWZmZXIgKmJ1ZnAsIGNvbnN0 IGNoYXIgKnN0cmluZzEsDQogICAgIHNpemVfdCBzaXplMSwgY29uc3QgY2hhciAqc3RyaW5nMiwg c2l6ZV90IHNpemUyLCBzc2l6ZV90IHBvcywNCiAgICAgc3RydWN0IHJlX3JlZ2lzdGVycyAqcmVn cywgc3NpemVfdCBzdG9wKQ0Kew0KICByZWdvZmZfdCByZXN1bHQ7DQojIDQ5MzIgIi9ob21lL2ph bWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWIt c3JjLy4uL3NyYy9yZWdleC5jIg0KICByZXN1bHQgPSByZV9tYXRjaF8yX2ludGVybmFsIChidWZw LCAocmVfY2hhciopIHN0cmluZzEsIHNpemUxLA0KICAgIChyZV9jaGFyKikgc3RyaW5nMiwgc2l6 ZTIsDQogICAgcG9zLCByZWdzLCBzdG9wKTsNCiAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KDQoNCg0K DQpzdGF0aWMgcmVnb2ZmX3QNCnJlX21hdGNoXzJfaW50ZXJuYWwgKHN0cnVjdCByZV9wYXR0ZXJu X2J1ZmZlciAqYnVmcCwgY29uc3QgcmVfY2hhciAqc3RyaW5nMSwNCiAgICAgICBzaXplX3Qgc2l6 ZTEsIGNvbnN0IHJlX2NoYXIgKnN0cmluZzIsIHNpemVfdCBzaXplMiwNCiAgICAgICBzc2l6ZV90 IHBvcywgc3RydWN0IHJlX3JlZ2lzdGVycyAqcmVncywgc3NpemVfdCBzdG9wKQ0Kew0KDQogIHNz aXplX3QgbWNudDsNCiAgc2l6ZV90IHJlZzsNCg0KDQogIHJlX2NoYXIgKmVuZDEsICplbmQyOw0K DQoNCg0KICByZV9jaGFyICplbmRfbWF0Y2hfMSwgKmVuZF9tYXRjaF8yOw0KDQoNCiAgcmVfY2hh ciAqZCwgKmRlbmQ7DQoNCg0KDQoNCg0KICByZV9jaGFyICpkZmFpbDsNCg0KDQogIHJlX2NoYXIg KnAgPSBidWZwLT5idWZmZXI7DQogIHJlX2NoYXIgKnBlbmQgPSBwICsgYnVmcC0+dXNlZDsNCg0K DQogIGNoYXIgKiB0cmFuc2xhdGUgPSBidWZwLT50cmFuc2xhdGU7DQoNCg0KICBjb25zdCBib29s ZWFuIG11bHRpYnl0ZSA9IDA7DQoNCg0KICBjb25zdCBib29sZWFuIHRhcmdldF9tdWx0aWJ5dGUg PSAwOw0KIyA0OTg4ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1h Y3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiAgZmFpbF9zdGFja190 eXBlIGZhaWxfc3RhY2s7DQojIDUwMDMgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVh c2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KICBz aXplX3QgbnVtX3JlZ3MgPSBidWZwLT5yZV9uc3ViICsgMTsNCiMgNTAxMyAiL2hvbWUvamFtZXMv cmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMv Li4vc3JjL3JlZ2V4LmMiDQogIHJlX2NoYXIgKipyZWdzdGFydCwgKipyZWdlbmQ7DQoNCg0KDQoN Cg0KDQogIHVuc2lnbmVkIGJlc3RfcmVnc19zZXQgPSAwOw0KDQogIHJlX2NoYXIgKipiZXN0X3Jl Z3N0YXJ0LCAqKmJlc3RfcmVnZW5kOw0KIyA1MDMzICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFj cy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXgu YyINCiAgcmVfY2hhciAqbWF0Y2hfZW5kID0gKCh2b2lkICopMCk7DQoNCg0KDQoNCg0KDQogIDsN Cg0KICBkbyB7IGZhaWxfc3RhY2suc3RhY2sgPSBfX2J1aWx0aW5fYWxsb2NhICgyMCAqIDIwICog c2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSk7IGlmIChmYWlsX3N0YWNrLnN0YWNrID09ICgodm9p ZCAqKTApKSByZXR1cm4gLTI7IGZhaWxfc3RhY2suc2l6ZSA9IDIwOyBmYWlsX3N0YWNrLmF2YWls ID0gMDsgZmFpbF9zdGFjay5mcmFtZSA9IDA7IH0gd2hpbGUgKDApOw0KDQoNCg0KDQoNCg0KDQog IGlmIChidWZwLT5yZV9uc3ViKQ0KICAgIHsNCiAgICAgIHJlZ3N0YXJ0ID0gKChyZV9jaGFyICog KikgX19idWlsdGluX2FsbG9jYSAoKG51bV9yZWdzKSAqIHNpemVvZiAocmVfY2hhciAqKSkpOw0K ICAgICAgcmVnZW5kID0gKChyZV9jaGFyICogKikgX19idWlsdGluX2FsbG9jYSAoKG51bV9yZWdz KSAqIHNpemVvZiAocmVfY2hhciAqKSkpOw0KICAgICAgYmVzdF9yZWdzdGFydCA9ICgocmVfY2hh ciAqICopIF9fYnVpbHRpbl9hbGxvY2EgKChudW1fcmVncykgKiBzaXplb2YgKHJlX2NoYXIgKikp KTsNCiAgICAgIGJlc3RfcmVnZW5kID0gKChyZV9jaGFyICogKikgX19idWlsdGluX2FsbG9jYSAo KG51bV9yZWdzKSAqIHNpemVvZiAocmVfY2hhciAqKSkpOw0KDQogICAgICBpZiAoIShyZWdzdGFy dCAmJiByZWdlbmQgJiYgYmVzdF9yZWdzdGFydCAmJiBiZXN0X3JlZ2VuZCkpDQogew0KICAgZG8g eyAoKHZvaWQpMCk7IGRvIHsgaWYgKHJlZ3N0YXJ0KSB7ICgodm9pZCkwKTsgcmVnc3RhcnQgPSAo KHZvaWQgKikwKTsgfSB9IHdoaWxlICgwKTsgZG8geyBpZiAocmVnZW5kKSB7ICgodm9pZCkwKTsg cmVnZW5kID0gKCh2b2lkICopMCk7IH0gfSB3aGlsZSAoMCk7IGRvIHsgaWYgKGJlc3RfcmVnc3Rh cnQpIHsgKCh2b2lkKTApOyBiZXN0X3JlZ3N0YXJ0ID0gKCh2b2lkICopMCk7IH0gfSB3aGlsZSAo MCk7IGRvIHsgaWYgKGJlc3RfcmVnZW5kKSB7ICgodm9pZCkwKTsgYmVzdF9yZWdlbmQgPSAoKHZv aWQgKikwKTsgfSB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7DQogICByZXR1cm4gLTI7DQogfQ0K ICAgIH0NCiAgZWxzZQ0KICAgIHsNCg0KDQogICAgICByZWdzdGFydCA9IHJlZ2VuZCA9IGJlc3Rf cmVnc3RhcnQgPSBiZXN0X3JlZ2VuZCA9ICgodm9pZCAqKTApOw0KICAgIH0NCg0KDQoNCiAgaWYg KHBvcyA8IDAgfHwgcG9zID4gc2l6ZTEgKyBzaXplMikNCiAgICB7DQogICAgICBkbyB7ICgodm9p ZCkwKTsgZG8geyBpZiAocmVnc3RhcnQpIHsgKCh2b2lkKTApOyByZWdzdGFydCA9ICgodm9pZCAq KTApOyB9IH0gd2hpbGUgKDApOyBkbyB7IGlmIChyZWdlbmQpIHsgKCh2b2lkKTApOyByZWdlbmQg PSAoKHZvaWQgKikwKTsgfSB9IHdoaWxlICgwKTsgZG8geyBpZiAoYmVzdF9yZWdzdGFydCkgeyAo KHZvaWQpMCk7IGJlc3RfcmVnc3RhcnQgPSAoKHZvaWQgKikwKTsgfSB9IHdoaWxlICgwKTsgZG8g eyBpZiAoYmVzdF9yZWdlbmQpIHsgKCh2b2lkKTApOyBiZXN0X3JlZ2VuZCA9ICgodm9pZCAqKTAp OyB9IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsNCiAgICAgIHJldHVybiAtMTsNCiAgICB9DQoN Cg0KDQoNCiAgZm9yIChyZWcgPSAxOyByZWcgPCBudW1fcmVnczsgcmVnKyspDQogICAgcmVnc3Rh cnRbcmVnXSA9IHJlZ2VuZFtyZWddID0gKCh2b2lkICopMCk7DQoNCg0KDQogIGlmIChzaXplMiA9 PSAwICYmIHN0cmluZzEgIT0gKCh2b2lkICopMCkpDQogICAgew0KICAgICAgc3RyaW5nMiA9IHN0 cmluZzE7DQogICAgICBzaXplMiA9IHNpemUxOw0KICAgICAgc3RyaW5nMSA9IDA7DQogICAgICBz aXplMSA9IDA7DQogICAgfQ0KICBlbmQxID0gc3RyaW5nMSArIHNpemUxOw0KICBlbmQyID0gc3Ry aW5nMiArIHNpemUyOw0KDQoNCg0KDQoNCg0KDQogIGlmIChwb3MgPj0gc2l6ZTEpDQogICAgew0K DQogICAgICBkID0gc3RyaW5nMiArIHBvcyAtIHNpemUxOw0KICAgICAgZGVuZCA9IGVuZF9tYXRj aF8yID0gc3RyaW5nMiArIHN0b3AgLSBzaXplMTsNCiAgICAgIGVuZF9tYXRjaF8xID0gZW5kMTsN CiAgICB9DQogIGVsc2UNCiAgICB7DQogICAgICBpZiAoc3RvcCA8IHNpemUxKQ0KIHsNCg0KICAg ZW5kX21hdGNoXzEgPSBzdHJpbmcxICsgc3RvcDsNCiMgNTEyMyAiL2hvbWUvamFtZXMvcmFpZC9v cHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3Jj L3JlZ2V4LmMiDQogICBlbmRfbWF0Y2hfMiA9IGVuZF9tYXRjaF8xOw0KIH0NCiAgICAgIGVsc2UN CiB7DQoNCg0KICAgZW5kX21hdGNoXzEgPSBlbmQxOw0KICAgZW5kX21hdGNoXzIgPSBzdHJpbmcy ICsgc3RvcCAtIHNpemUxOw0KIH0NCiAgICAgIGQgPSBzdHJpbmcxICsgcG9zOw0KICAgICAgZGVu ZCA9IGVuZF9tYXRjaF8xOw0KICAgIH0NCg0KICA7DQogIDsNCiAgOw0KICA7DQogIDsNCg0KDQoN Cg0KICBmb3IgKDs7KQ0KICAgIHsNCiAgICAgIDsNCg0KICAgICAgaWYgKHAgPT0gcGVuZCkNCiB7 DQogICA7DQoNCg0KDQogICBpZiAoZCAhPSBlbmRfbWF0Y2hfMikNCiAgICAgew0KDQoNCiAgICAg ICBib29sZWFuIHNhbWVfc3RyX3AgPSAoKHNpemUxICYmIHN0cmluZzEgPD0gKG1hdGNoX2VuZCkg JiYgKG1hdGNoX2VuZCkgPD0gc3RyaW5nMSArIHNpemUxKQ0KICAgICAgICA9PSAoc2l6ZTEgJiYg c3RyaW5nMSA8PSAoZCkgJiYgKGQpIDw9IHN0cmluZzEgKyBzaXplMSkpOw0KDQogICAgICAgYm9v bGVhbiBiZXN0X21hdGNoX3A7DQoNCg0KDQogICAgICAgaWYgKHNhbWVfc3RyX3ApDQogIGJlc3Rf bWF0Y2hfcCA9IGQgPiBtYXRjaF9lbmQ7DQogICAgICAgZWxzZQ0KICBiZXN0X21hdGNoX3AgPSAh KHNpemUxICYmIHN0cmluZzEgPD0gKGQpICYmIChkKSA8PSBzdHJpbmcxICsgc2l6ZTEpOw0KDQog ICAgICAgOw0KDQogICAgICAgaWYgKCEoZmFpbF9zdGFjay5mcmFtZSA9PSAwKSkNCiAgew0KDQoN CiAgICBpZiAoIWJlc3RfcmVnc19zZXQgfHwgYmVzdF9tYXRjaF9wKQ0KICAgICAgew0KICAgICAg ICBiZXN0X3JlZ3Nfc2V0ID0gMTsNCiAgICAgICAgbWF0Y2hfZW5kID0gZDsNCg0KICAgICAgICA7 DQoNCiAgICAgICAgZm9yIChyZWcgPSAxOyByZWcgPCBudW1fcmVnczsgcmVnKyspDQogICB7DQog ICAgIGJlc3RfcmVnc3RhcnRbcmVnXSA9IHJlZ3N0YXJ0W3JlZ107DQogICAgIGJlc3RfcmVnZW5k W3JlZ10gPSByZWdlbmRbcmVnXTsNCiAgIH0NCiAgICAgIH0NCiAgICBnb3RvIGZhaWw7DQogIH0N Cg0KDQoNCg0KICAgICAgIGVsc2UgaWYgKGJlc3RfcmVnc19zZXQgJiYgIWJlc3RfbWF0Y2hfcCkN CiAgew0KICByZXN0b3JlX2Jlc3RfcmVnczoNCg0KDQoNCg0KDQogICAgOw0KDQogICAgZCA9IG1h dGNoX2VuZDsNCiAgICBkZW5kID0gKChkID49IHN0cmluZzEgJiYgZCA8PSBlbmQxKQ0KICAgICAg PyBlbmRfbWF0Y2hfMSA6IGVuZF9tYXRjaF8yKTsNCg0KICAgIGZvciAocmVnID0gMTsgcmVnIDwg bnVtX3JlZ3M7IHJlZysrKQ0KICAgICAgew0KICAgICAgICByZWdzdGFydFtyZWddID0gYmVzdF9y ZWdzdGFydFtyZWddOw0KICAgICAgICByZWdlbmRbcmVnXSA9IGJlc3RfcmVnZW5kW3JlZ107DQog ICAgICB9DQogIH0NCiAgICAgfQ0KDQogc3VjY2VlZF9sYWJlbDoNCiAgIDsNCg0KDQogICBpZiAo cmVncyAmJiAhYnVmcC0+bm9fc3ViKQ0KICAgICB7DQoNCiAgICAgICBpZiAoYnVmcC0+cmVnc19h bGxvY2F0ZWQgPT0gMCkNCiAgew0KDQoNCiAgICByZWdzLT5udW1fcmVncyA9ICgoMzApID4gKG51 bV9yZWdzICsgMSkgPyAoMzApIDogKG51bV9yZWdzICsgMSkpOw0KICAgIHJlZ3MtPnN0YXJ0ID0g KChyZWdvZmZfdCAqKSB4bWFsbG9jICgocmVncy0+bnVtX3JlZ3MpICogc2l6ZW9mIChyZWdvZmZf dCkpKTsNCiAgICByZWdzLT5lbmQgPSAoKHJlZ29mZl90ICopIHhtYWxsb2MgKChyZWdzLT5udW1f cmVncykgKiBzaXplb2YgKHJlZ29mZl90KSkpOw0KICAgIGlmIChyZWdzLT5zdGFydCA9PSAoKHZv aWQgKikwKSB8fCByZWdzLT5lbmQgPT0gKCh2b2lkICopMCkpDQogICAgICB7DQogICAgICAgIGRv IHsgKCh2b2lkKTApOyBkbyB7IGlmIChyZWdzdGFydCkgeyAoKHZvaWQpMCk7IHJlZ3N0YXJ0ID0g KCh2b2lkICopMCk7IH0gfSB3aGlsZSAoMCk7IGRvIHsgaWYgKHJlZ2VuZCkgeyAoKHZvaWQpMCk7 IHJlZ2VuZCA9ICgodm9pZCAqKTApOyB9IH0gd2hpbGUgKDApOyBkbyB7IGlmIChiZXN0X3JlZ3N0 YXJ0KSB7ICgodm9pZCkwKTsgYmVzdF9yZWdzdGFydCA9ICgodm9pZCAqKTApOyB9IH0gd2hpbGUg KDApOyBkbyB7IGlmIChiZXN0X3JlZ2VuZCkgeyAoKHZvaWQpMCk7IGJlc3RfcmVnZW5kID0gKCh2 b2lkICopMCk7IH0gfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOw0KICAgICAgICByZXR1cm4gLTI7 DQogICAgICB9DQogICAgYnVmcC0+cmVnc19hbGxvY2F0ZWQgPSAxOw0KICB9DQogICAgICAgZWxz ZSBpZiAoYnVmcC0+cmVnc19hbGxvY2F0ZWQgPT0gMSkNCiAgew0KDQoNCiAgICBpZiAocmVncy0+ bnVtX3JlZ3MgPCBudW1fcmVncyArIDEpDQogICAgICB7DQogICAgICAgIHJlZ3MtPm51bV9yZWdz ID0gbnVtX3JlZ3MgKyAxOw0KICAgICAgICAoKHJlZ3MtPnN0YXJ0KSA9IChyZWdvZmZfdCAqKSB4 cmVhbGxvYyAocmVncy0+c3RhcnQsIChyZWdzLT5udW1fcmVncykgKiBzaXplb2YgKHJlZ29mZl90 KSkpOw0KICAgICAgICAoKHJlZ3MtPmVuZCkgPSAocmVnb2ZmX3QgKikgeHJlYWxsb2MgKHJlZ3Mt PmVuZCwgKHJlZ3MtPm51bV9yZWdzKSAqIHNpemVvZiAocmVnb2ZmX3QpKSk7DQogICAgICAgIGlm IChyZWdzLT5zdGFydCA9PSAoKHZvaWQgKikwKSB8fCByZWdzLT5lbmQgPT0gKCh2b2lkICopMCkp DQogICB7DQogICAgIGRvIHsgKCh2b2lkKTApOyBkbyB7IGlmIChyZWdzdGFydCkgeyAoKHZvaWQp MCk7IHJlZ3N0YXJ0ID0gKCh2b2lkICopMCk7IH0gfSB3aGlsZSAoMCk7IGRvIHsgaWYgKHJlZ2Vu ZCkgeyAoKHZvaWQpMCk7IHJlZ2VuZCA9ICgodm9pZCAqKTApOyB9IH0gd2hpbGUgKDApOyBkbyB7 IGlmIChiZXN0X3JlZ3N0YXJ0KSB7ICgodm9pZCkwKTsgYmVzdF9yZWdzdGFydCA9ICgodm9pZCAq KTApOyB9IH0gd2hpbGUgKDApOyBkbyB7IGlmIChiZXN0X3JlZ2VuZCkgeyAoKHZvaWQpMCk7IGJl c3RfcmVnZW5kID0gKCh2b2lkICopMCk7IH0gfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOw0KICAg ICByZXR1cm4gLTI7DQogICB9DQogICAgICB9DQogIH0NCiAgICAgICBlbHNlDQogIHsNCg0KDQog ICAgOw0KICB9DQoNCg0KDQoNCiAgICAgICBpZiAocmVncy0+bnVtX3JlZ3MgPiAwKQ0KICB7DQog ICAgcmVncy0+c3RhcnRbMF0gPSBwb3M7DQogICAgcmVncy0+ZW5kWzBdID0gKChzaXplMSAmJiBz dHJpbmcxIDw9IChkKSAmJiAoZCkgPD0gc3RyaW5nMSArIHNpemUxKSA/ICgocmVnb2ZmX3QpICgo ZCkgLSBzdHJpbmcxKSkgOiAoKHJlZ29mZl90KSAoKGQpIC0gc3RyaW5nMiArIHNpemUxKSkpOw0K ICB9DQoNCg0KDQogICAgICAgZm9yIChyZWcgPSAxOyByZWcgPCAoKG51bV9yZWdzKSA8IChyZWdz LT5udW1fcmVncykgPyAobnVtX3JlZ3MpIDogKHJlZ3MtPm51bV9yZWdzKSk7IHJlZysrKQ0KICB7 DQogICAgaWYgKCgocmVnc3RhcnRbcmVnXSkgPT0gKCh2b2lkICopMCkpIHx8ICgocmVnZW5kW3Jl Z10pID09ICgodm9pZCAqKTApKSkNCiAgICAgIHJlZ3MtPnN0YXJ0W3JlZ10gPSByZWdzLT5lbmRb cmVnXSA9IC0xOw0KICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAgcmVncy0+c3RhcnRbcmVnXQ0K ICAgPSAocmVnb2ZmX3QpICgoc2l6ZTEgJiYgc3RyaW5nMSA8PSAocmVnc3RhcnRbcmVnXSkgJiYg KHJlZ3N0YXJ0W3JlZ10pIDw9IHN0cmluZzEgKyBzaXplMSkgPyAoKHJlZ29mZl90KSAoKHJlZ3N0 YXJ0W3JlZ10pIC0gc3RyaW5nMSkpIDogKChyZWdvZmZfdCkgKChyZWdzdGFydFtyZWddKSAtIHN0 cmluZzIgKyBzaXplMSkpKTsNCiAgICAgICAgcmVncy0+ZW5kW3JlZ10NCiAgID0gKHJlZ29mZl90 KSAoKHNpemUxICYmIHN0cmluZzEgPD0gKHJlZ2VuZFtyZWddKSAmJiAocmVnZW5kW3JlZ10pIDw9 IHN0cmluZzEgKyBzaXplMSkgPyAoKHJlZ29mZl90KSAoKHJlZ2VuZFtyZWddKSAtIHN0cmluZzEp KSA6ICgocmVnb2ZmX3QpICgocmVnZW5kW3JlZ10pIC0gc3RyaW5nMiArIHNpemUxKSkpOw0KICAg ICAgfQ0KICB9DQoNCg0KDQoNCg0KDQogICAgICAgZm9yIChyZWcgPSBudW1fcmVnczsgcmVnIDwg cmVncy0+bnVtX3JlZ3M7IHJlZysrKQ0KICByZWdzLT5zdGFydFtyZWddID0gcmVncy0+ZW5kW3Jl Z10gPSAtMTsNCiAgICAgfQ0KDQogIA0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7DQogICA7DQoNCiAgIG1jbnQgPSAoKHNpemUxICYmIHN0cmlu ZzEgPD0gKGQpICYmIChkKSA8PSBzdHJpbmcxICsgc2l6ZTEpID8gKChyZWdvZmZfdCkgKChkKSAt IHN0cmluZzEpKSA6ICgocmVnb2ZmX3QpICgoZCkgLSBzdHJpbmcyICsgc2l6ZTEpKSkgLSBwb3M7 DQoNCiAgIDsNCg0KICAgZG8geyAoKHZvaWQpMCk7IGRvIHsgaWYgKHJlZ3N0YXJ0KSB7ICgodm9p ZCkwKTsgcmVnc3RhcnQgPSAoKHZvaWQgKikwKTsgfSB9IHdoaWxlICgwKTsgZG8geyBpZiAocmVn ZW5kKSB7ICgodm9pZCkwKTsgcmVnZW5kID0gKCh2b2lkICopMCk7IH0gfSB3aGlsZSAoMCk7IGRv IHsgaWYgKGJlc3RfcmVnc3RhcnQpIHsgKCh2b2lkKTApOyBiZXN0X3JlZ3N0YXJ0ID0gKCh2b2lk ICopMCk7IH0gfSB3aGlsZSAoMCk7IGRvIHsgaWYgKGJlc3RfcmVnZW5kKSB7ICgodm9pZCkwKTsg YmVzdF9yZWdlbmQgPSAoKHZvaWQgKikwKTsgfSB9IHdoaWxlICgwKTsgfSB3aGlsZSAoMCk7DQog ICByZXR1cm4gbWNudDsNCiB9DQoNCg0KICAgICAgc3dpdGNoICgqcCsrKQ0KIHsNCg0KDQogY2Fz ZSBub19vcDoNCiAgIDsNCiAgIGJyZWFrOw0KDQogY2FzZSBzdWNjZWVkOg0KICAgOw0KICAgZ290 byBzdWNjZWVkX2xhYmVsOw0KDQoNCg0KDQogY2FzZSBleGFjdG46DQogICBtY250ID0gKnArKzsN CiAgIDsNCg0KDQogICBkZmFpbCA9IGQ7DQoNCg0KDQoNCiAgIGlmICgodHJhbnNsYXRlKSkNCiAg ICAgZG8NCiAgICAgICB7DQogIHdoaWxlIChkID09IGRlbmQpIHsgaWYgKGRlbmQgPT0gZW5kX21h dGNoXzIpIGdvdG8gZmFpbDsgZCA9IHN0cmluZzI7IGRlbmQgPSBlbmRfbWF0Y2hfMjsgfTsNCiAg aWYgKCgodW5zaWduZWQgY2hhcikodHJhbnNsYXRlKVsqZF0pICE9ICpwKyspDQogICAgew0KICAg ICAgZCA9IGRmYWlsOw0KICAgICAgZ290byBmYWlsOw0KICAgIH0NCiAgZCsrOw0KICAgICAgIH0N CiAgICAgd2hpbGUgKC0tbWNudCk7DQogICBlbHNlDQogICAgIGRvDQogICAgICAgew0KICB3aGls ZSAoZCA9PSBkZW5kKSB7IGlmIChkZW5kID09IGVuZF9tYXRjaF8yKSBnb3RvIGZhaWw7IGQgPSBz dHJpbmcyOyBkZW5kID0gZW5kX21hdGNoXzI7IH07DQogIGlmICgqZCsrICE9ICpwKyspDQogICAg ew0KICAgICAgZCA9IGRmYWlsOw0KICAgICAgZ290byBmYWlsOw0KICAgIH0NCiAgICAgICB9DQog ICAgIHdoaWxlICgtLW1jbnQpOw0KIyA1NDIzICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9y ZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyIN CiAgIGJyZWFrOw0KDQoNCg0KIGNhc2UgYW55Y2hhcjoNCiAgIHsNCiAgICAgaW50IGJ1Zl9jaGFy bGVuOw0KICAgICByZV93Y2hhcl90IGJ1Zl9jaDsNCg0KICAgICA7DQoNCiAgICAgd2hpbGUgKGQg PT0gZGVuZCkgeyBpZiAoZGVuZCA9PSBlbmRfbWF0Y2hfMikgZ290byBmYWlsOyBkID0gc3RyaW5n MjsgZGVuZCA9IGVuZF9tYXRjaF8yOyB9Ow0KICAgICBidWZfY2ggPSAoKGJ1Zl9jaGFybGVuKSA9 IDEsICooZCkpDQogICAgICAgICAgICAgICAgICAgICAgIDsNCiAgICAgYnVmX2NoID0gKCh0cmFu c2xhdGUpID8gKCh1bnNpZ25lZCBjaGFyKSh0cmFuc2xhdGUpWyhidWZfY2gpXSkgOiAoYnVmX2No KSk7DQoNCiAgICAgaWYgKCghKGJ1ZnAtPnN5bnRheCAmICgoKCgoKCgodW5zaWduZWQgbG9uZyBp bnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKQ0KICAgJiYgYnVmX2No ID09ICdcbicpDQogIHx8ICgoYnVmcC0+c3ludGF4ICYgKCgoKCgoKCgodW5zaWduZWQgbG9uZyBp bnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKQ0KICAgICAg JiYgYnVmX2NoID09ICdcMDAwJykpDQogICAgICAgZ290byBmYWlsOw0KDQogICAgIDsNCiAgICAg ZCArPSBidWZfY2hhcmxlbjsNCiAgIH0NCiAgIGJyZWFrOw0KDQoNCiBjYXNlIGNoYXJzZXQ6DQog Y2FzZSBjaGFyc2V0X25vdDoNCiAgIHsNCiAgICAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGM7DQog ICAgIGJvb2xlYW4gbm90ID0gKHJlX29wY29kZV90KSAqKHAgLSAxKSA9PSBjaGFyc2V0X25vdDsN CiAgICAgaW50IGxlbjsNCg0KDQoNCiAgICAgcmVfY2hhciAqcmFuZ2VfdGFibGUgOw0KDQoNCiAg ICAgaW50IHJhbmdlX3RhYmxlX2V4aXN0czsNCg0KDQoNCiAgICAgaW50IGNvdW50ID0gMDsNCg0K DQogICAgIGJvb2xlYW4gdW5pYnl0ZV9jaGFyID0gMDsNCg0KICAgICA7DQoNCiAgICAgcmFuZ2Vf dGFibGVfZXhpc3RzID0gKCgmcFstMV0pWzFdICYgMHg4MCk7DQoNCiAgICAgaWYgKHJhbmdlX3Rh YmxlX2V4aXN0cykNCiAgICAgICB7DQogIHJhbmdlX3RhYmxlID0gKCYoJnBbLTFdKVs0ICsgKCgm cFstMV0pWzFdICYgMHg3RildKTsNCiAgZG8geyBkbyB7IChjb3VudCkgPSAqKHJhbmdlX3RhYmxl KSAmIDAzNzc7IChjb3VudCkgKz0gKChzaWduZWQgY2hhcikgKCooKHJhbmdlX3RhYmxlKSArIDEp KSkgPDwgODsgfSB3aGlsZSAoMCk7IChyYW5nZV90YWJsZSkgKz0gMjsgfSB3aGlsZSAoMCk7DQog ICAgICAgfQ0KDQogICAgIHdoaWxlIChkID09IGRlbmQpIHsgaWYgKGRlbmQgPT0gZW5kX21hdGNo XzIpIGdvdG8gZmFpbDsgZCA9IHN0cmluZzI7IGRlbmQgPSBlbmRfbWF0Y2hfMjsgfTsNCiAgICAg YyA9ICgobGVuKSA9IDEsICooZCkpOw0KICAgICBpZiAodGFyZ2V0X211bHRpYnl0ZSkNCiAgICAg ICB7DQogIGludCBjMTsNCg0KICBjID0gKCh0cmFuc2xhdGUpID8gKCh1bnNpZ25lZCBjaGFyKSh0 cmFuc2xhdGUpWyhjKV0pIDogKGMpKTsNCiAgYzEgPSAoYyk7DQogIGlmIChjMSA+PSAwKQ0KICAg IHsNCiAgICAgIHVuaWJ5dGVfY2hhciA9IDE7DQogICAgICBjID0gYzE7DQogICAgfQ0KICAgICAg IH0NCiAgICAgZWxzZQ0KICAgICAgIHsNCiAgaW50IGMxID0gKGMpOw0KDQogIGlmICghICgwKSkN CiAgICB7DQogICAgICBjMSA9ICgodHJhbnNsYXRlKSA/ICgodW5zaWduZWQgY2hhcikodHJhbnNs YXRlKVsoYzEpXSkgOiAoYzEpKTsNCiAgICAgIGMxID0gKGMxKTsNCiAgICAgIGlmIChjMSA+PSAw KQ0KICAgICAgICB7DQogICB1bmlieXRlX2NoYXIgPSAxOw0KICAgYyA9IGMxOw0KICAgICAgICB9 DQogICAgfQ0KICBlbHNlDQogICAgdW5pYnl0ZV9jaGFyID0gMTsNCiAgICAgICB9DQoNCiAgICAg aWYgKHVuaWJ5dGVfY2hhciAmJiBjIDwgKDEgPDwgOCkpDQogICAgICAgew0KDQoNCiAgaWYgKGMg PCAodW5zaWduZWQpICgoKCZwWy0xXSlbMV0gJiAweDdGKSAqIDgpDQogICAgICAmJiBwWzEgKyBj IC8gOF0gJiAoMSA8PCAoYyAlIDgpKSkNCiAgICBub3QgPSAhbm90Ow0KICAgICAgIH0NCiMgNTUz OSAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2Nj LjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQogICAgIGlmIChyYW5nZV90YWJsZV9leGlz dHMpDQogICAgICAgcCA9ICgocmFuZ2VfdGFibGUpICsgKGNvdW50KSAqIDIgKiAzKTsNCiAgICAg ZWxzZQ0KICAgICAgIHAgKz0gKCgmcFstMV0pWzFdICYgMHg3RikgKyAxOw0KDQogICAgIGlmICgh bm90KSBnb3RvIGZhaWw7DQoNCiAgICAgZCArPSBsZW47DQogICB9DQogICBicmVhazsNCg0KDQoN Cg0KDQoNCiBjYXNlIHN0YXJ0X21lbW9yeToNCiAgIDsNCg0KDQogICBkbyB7IGNoYXIgKmRlc3Rp bmF0aW9uOyB3aGlsZSAoKChmYWlsX3N0YWNrKS5zaXplIC0gKGZhaWxfc3RhY2spLmF2YWlsKSA8 PSAzKSB7IGlmICghKCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRf dCkgPj0gcmVfbWF4X2ZhaWx1cmVzICogMjApID8gMCA6ICgoZmFpbF9zdGFjaykuc3RhY2sgPSAo ZGVzdGluYXRpb24gPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhICgoKHJlX21heF9mYWlsdXJl cyAqIDIwKSA8ICgoKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3Qp ICogNCkpID8gKHJlX21heF9mYWlsdXJlcyAqIDIwKSA6ICgoKGZhaWxfc3RhY2spLnNpemUgKiBz aXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpICogNCkpKSksICgoX19idWlsdGluX29iamVjdF9zaXpl IChkZXN0aW5hdGlvbiwgMCkgIT0gKHNpemVfdCkgLTEpID8gX19idWlsdGluX19fbWVtY3B5X2No ayAoZGVzdGluYXRpb24sIChmYWlsX3N0YWNrKS5zdGFjaywgKGZhaWxfc3RhY2spLnNpemUgKiBz aXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGRlc3RpbmF0 aW9uLCAwKSkgOiBfX21lbWNweV9pY2hrIChkZXN0aW5hdGlvbiwgKGZhaWxfc3RhY2spLnN0YWNr LCAoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkpKSksIChmYWls X3N0YWNrKS5zdGFjayA9PSAoKHZvaWQgKikwKSA/IDAgOiAoKGZhaWxfc3RhY2spLnNpemUgPSAo KChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgPCAoKChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChm YWlsX3N0YWNrX2VsdF90KSAqIDQpKSA/IChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgOiAoKChmYWls X3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQpKSkgLyBzaXplb2Yg KGZhaWxfc3RhY2tfZWx0X3QpKSwgMSkpKSkgcmV0dXJuIC0yOyA7IDt9OyA7IGZhaWxfc3RhY2su c3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5wb2ludGVyID0gKHJlZ3N0YXJ0Wyh1bnNpZ25lZCBp bnQpKnBdKTsgZmFpbF9zdGFjay5zdGFja1tmYWlsX3N0YWNrLmF2YWlsKytdLnBvaW50ZXIgPSAo cmVnZW5kWyh1bnNpZ25lZCBpbnQpKnBdKTsgZmFpbF9zdGFjay5zdGFja1tmYWlsX3N0YWNrLmF2 YWlsKytdLmludGVnZXIgPSAoKHVuc2lnbmVkIGludCkqcCk7IH0gd2hpbGUgKDApOw0KDQogICBy ZWdzdGFydFsqcF0gPSBkOw0KICAgcmVnZW5kWypwXSA9ICgodm9pZCAqKTApOw0KICAgOw0KDQoN CiAgIHAgKz0gMTsNCiAgIGJyZWFrOw0KDQoNCg0KDQogY2FzZSBzdG9wX21lbW9yeToNCiAgIDsN Cg0KICAgOw0KIyA1NTkwICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMv ZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiAgIHJlZ2VuZFsq cF0gPSBkOw0KICAgOw0KDQoNCiAgIHAgKz0gMTsNCiAgIGJyZWFrOw0KDQoNCg0KDQogY2FzZSBk dXBsaWNhdGU6DQogICB7DQogICAgIHJlZ2lzdGVyIHJlX2NoYXIgKmQyLCAqZGVuZDI7DQogICAg IGludCByZWdubyA9ICpwKys7DQogICAgIDsNCg0KDQogICAgIGlmICgoKHJlZ3N0YXJ0W3JlZ25v XSkgPT0gKCh2b2lkICopMCkpIHx8ICgocmVnZW5kW3JlZ25vXSkgPT0gKCh2b2lkICopMCkpKQ0K ICAgICAgIGdvdG8gZmFpbDsNCg0KDQogICAgIGQyID0gcmVnc3RhcnRbcmVnbm9dOw0KDQoNCiAg ICAgZGZhaWwgPSBkOw0KDQoNCg0KDQoNCg0KICAgICBkZW5kMiA9ICgoKHNpemUxICYmIHN0cmlu ZzEgPD0gKHJlZ3N0YXJ0W3JlZ25vXSkgJiYgKHJlZ3N0YXJ0W3JlZ25vXSkgPD0gc3RyaW5nMSAr IHNpemUxKQ0KICAgICAgICA9PSAoc2l6ZTEgJiYgc3RyaW5nMSA8PSAocmVnZW5kW3JlZ25vXSkg JiYgKHJlZ2VuZFtyZWdub10pIDw9IHN0cmluZzEgKyBzaXplMSkpDQogICAgICAgPyByZWdlbmRb cmVnbm9dIDogZW5kX21hdGNoXzEpOw0KICAgICBmb3IgKDs7KQ0KICAgICAgIHsNCg0KDQogIHdo aWxlIChkMiA9PSBkZW5kMikNCiAgICB7DQogICAgICBpZiAoZGVuZDIgPT0gZW5kX21hdGNoXzIp IGJyZWFrOw0KICAgICAgaWYgKGRlbmQyID09IHJlZ2VuZFtyZWdub10pIGJyZWFrOw0KDQoNCiAg ICAgIGQyID0gc3RyaW5nMjsNCiAgICAgIGRlbmQyID0gcmVnZW5kW3JlZ25vXTsNCiAgICB9DQoN CiAgaWYgKGQyID09IGRlbmQyKSBicmVhazsNCg0KDQogIHdoaWxlIChkID09IGRlbmQpIHsgaWYg KGRlbmQgPT0gZW5kX21hdGNoXzIpIGdvdG8gZmFpbDsgZCA9IHN0cmluZzI7IGRlbmQgPSBlbmRf bWF0Y2hfMjsgfTsNCg0KDQogIG1jbnQgPSBkZW5kIC0gZDsNCg0KDQoNCiAgaWYgKG1jbnQgPiBk ZW5kMiAtIGQyKQ0KICAgIG1jbnQgPSBkZW5kMiAtIGQyOw0KDQoNCg0KICBpZiAoKHRyYW5zbGF0 ZSkNCiAgICAgID8gYmNtcF90cmFuc2xhdGUgKGQsIGQyLCBtY250LCB0cmFuc2xhdGUsIHRhcmdl dF9tdWx0aWJ5dGUpDQogICAgICA6IG1lbWNtcCAoZCwgZDIsIG1jbnQpKQ0KICAgIHsNCiAgICAg IGQgPSBkZmFpbDsNCiAgICAgIGdvdG8gZmFpbDsNCiAgICB9DQogIGQgKz0gbWNudCwgZDIgKz0g bWNudDsNCiAgICAgICB9DQogICB9DQogICBicmVhazsNCg0KDQoNCg0KIGNhc2UgYmVnbGluZToN CiAgIDsNCg0KICAgaWYgKCgoZCkgPT0gKHNpemUxID8gc3RyaW5nMSA6IHN0cmluZzIpIHx8ICFz aXplMikpDQogICAgIHsNCiAgICAgICBpZiAoIWJ1ZnAtPm5vdF9ib2wpIGJyZWFrOw0KICAgICB9 DQogICBlbHNlDQogICAgIHsNCiAgICAgICB1bnNpZ25lZCBjOw0KICAgICAgIChjID0gKChkKSA9 PSAoc3RyaW5nMikgPyAqKChlbmQxKSAtIDEpIDogKigoZCkgLSAxKSkpOw0KICAgICAgIGlmIChj ID09ICdcbicpDQogIGJyZWFrOw0KICAgICB9DQoNCiAgIGdvdG8gZmFpbDsNCg0KDQoNCiBjYXNl IGVuZGxpbmU6DQogICA7DQoNCiAgIGlmICgoKGQpID09IGVuZDIpKQ0KICAgICB7DQogICAgICAg aWYgKCFidWZwLT5ub3RfZW9sKSBicmVhazsNCiAgICAgfQ0KICAgZWxzZQ0KICAgICB7DQogICAg ICAgaWYgKGQgPT0gZW5kMSkgeyBkID0gc3RyaW5nMjsgZGVuZCA9IGVuZF9tYXRjaF8yOyB9Ow0K ICAgICAgIGlmICgqZCA9PSAnXG4nKQ0KICBicmVhazsNCiAgICAgfQ0KICAgZ290byBmYWlsOw0K DQoNCg0KIGNhc2UgYmVnYnVmOg0KICAgOw0KICAgaWYgKCgoZCkgPT0gKHNpemUxID8gc3RyaW5n MSA6IHN0cmluZzIpIHx8ICFzaXplMikpDQogICAgIGJyZWFrOw0KICAgZ290byBmYWlsOw0KDQoN Cg0KIGNhc2UgZW5kYnVmOg0KICAgOw0KICAgaWYgKCgoZCkgPT0gZW5kMikpDQogICAgIGJyZWFr Ow0KICAgZ290byBmYWlsOw0KIyA1NzM1ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxl YXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiBj YXNlIG9uX2ZhaWx1cmVfa2VlcF9zdHJpbmdfanVtcDoNCiAgIGRvIHsgZG8geyAobWNudCkgPSAq KHApICYgMDM3NzsgKG1jbnQpICs9ICgoc2lnbmVkIGNoYXIpICgqKChwKSArIDEpKSkgPDwgODsg fSB3aGlsZSAoMCk7IChwKSArPSAyOyB9IHdoaWxlICgwKTsNCiAgDQogICAgICAgICAgICAgICAg ICA7DQoNCiAgIGRvIHsgY2hhciAqZGVzdGluYXRpb247IDsgOyA7IDsgd2hpbGUgKCgoZmFpbF9z dGFjaykuc2l6ZSAtIChmYWlsX3N0YWNrKS5hdmFpbCkgPD0gMykgeyBpZiAoISgoKGZhaWxfc3Rh Y2spLnNpemUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpID49IHJlX21heF9mYWlsdXJlcyAq IDIwKSA/IDAgOiAoKGZhaWxfc3RhY2spLnN0YWNrID0gKGRlc3RpbmF0aW9uID0gKGNoYXIgKikg X19idWlsdGluX2FsbG9jYSAoKChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgPCAoKChmYWlsX3N0YWNr KS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQpKSA/IChyZV9tYXhfZmFpbHVy ZXMgKiAyMCkgOiAoKChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90 KSAqIDQpKSkpLCAoKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoZGVzdGluYXRpb24sIDApICE9IChz aXplX3QpIC0xKSA/IF9fYnVpbHRpbl9fX21lbWNweV9jaGsgKGRlc3RpbmF0aW9uLCAoZmFpbF9z dGFjaykuc3RhY2ssIChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90 KSwgX19idWlsdGluX29iamVjdF9zaXplIChkZXN0aW5hdGlvbiwgMCkpIDogX19tZW1jcHlfaWNo ayAoZGVzdGluYXRpb24sIChmYWlsX3N0YWNrKS5zdGFjaywgKGZhaWxfc3RhY2spLnNpemUgKiBz aXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpKSkpLCAoZmFpbF9zdGFjaykuc3RhY2sgPT0gKCh2b2lk ICopMCkgPyAwIDogKChmYWlsX3N0YWNrKS5zaXplID0gKCgocmVfbWF4X2ZhaWx1cmVzICogMjAp IDwgKCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkgKiA0KSkg PyAocmVfbWF4X2ZhaWx1cmVzICogMjApIDogKCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAo ZmFpbF9zdGFja19lbHRfdCkgKiA0KSkpIC8gc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSksIDEp KSkpIHJldHVybiAtMjsgOyA7fTsgOyA7IGZhaWxfc3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFp bCsrXS5pbnRlZ2VyID0gKGZhaWxfc3RhY2suZnJhbWUpOyA7IDsgOyBmYWlsX3N0YWNrLnN0YWNr W2ZhaWxfc3RhY2suYXZhaWwrK10ucG9pbnRlciA9ICgoKHZvaWQgKikwKSk7IDsgOyBmYWlsX3N0 YWNrLnN0YWNrW2ZhaWxfc3RhY2suYXZhaWwrK10ucG9pbnRlciA9IChwIC0gMyk7IGZhaWxfc3Rh Y2suZnJhbWUgPSBmYWlsX3N0YWNrLmF2YWlsOyB9IHdoaWxlICgwKTsNCiAgIGJyZWFrOw0KIyA1 NzU3ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5n Y2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiBjYXNlIG9uX2ZhaWx1cmVfanVtcF9u YXN0eWxvb3A6DQogICBkbyB7IGRvIHsgKG1jbnQpID0gKihwKSAmIDAzNzc7IChtY250KSArPSAo KHNpZ25lZCBjaGFyKSAoKigocCkgKyAxKSkpIDw8IDg7IH0gd2hpbGUgKDApOyAocCkgKz0gMjsg fSB3aGlsZSAoMCk7DQogIA0KICAgICAgICAgICAgICAgICAgOw0KDQogICA7DQogICB7DQogICAg IGludCBjeWNsZSA9IDA7DQogICAgIGRvIHsgc3NpemVfdCBmYWlsdXJlID0gZmFpbF9zdGFjay5m cmFtZTsgd2hpbGUgKGZhaWx1cmUgPiAwICYmICgoZmFpbF9zdGFjay5zdGFja1soZmFpbHVyZSkg LSAyXS5wb2ludGVyKSA9PSBkIHx8IChmYWlsX3N0YWNrLnN0YWNrWyhmYWlsdXJlKSAtIDJdLnBv aW50ZXIpID09ICgodm9pZCAqKTApKSkgeyA7IGlmIChmYWlsX3N0YWNrLnN0YWNrWyhmYWlsdXJl KSAtIDFdLnBvaW50ZXIgPT0gcCAtIDQpIHsgY3ljbGUgPSAxOyBicmVhazsgfSA7IGZhaWx1cmUg PSBmYWlsX3N0YWNrLnN0YWNrWyhmYWlsdXJlKSAtIDNdLmludGVnZXI7IH0gOyB9IHdoaWxlICgw KTsNCiAgICAgaWYgKCFjeWNsZSkNCg0KDQoNCg0KICAgICAgIGRvIHsgY2hhciAqZGVzdGluYXRp b247IDsgOyA7IDsgd2hpbGUgKCgoZmFpbF9zdGFjaykuc2l6ZSAtIChmYWlsX3N0YWNrKS5hdmFp bCkgPD0gMykgeyBpZiAoISgoKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxfc3RhY2tf ZWx0X3QpID49IHJlX21heF9mYWlsdXJlcyAqIDIwKSA/IDAgOiAoKGZhaWxfc3RhY2spLnN0YWNr ID0gKGRlc3RpbmF0aW9uID0gKGNoYXIgKikgX19idWlsdGluX2FsbG9jYSAoKChyZV9tYXhfZmFp bHVyZXMgKiAyMCkgPCAoKChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2Vs dF90KSAqIDQpKSA/IChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgOiAoKChmYWlsX3N0YWNrKS5zaXpl ICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQpKSkpLCAoKF9fYnVpbHRpbl9vYmplY3Rf c2l6ZSAoZGVzdGluYXRpb24sIDApICE9IChzaXplX3QpIC0xKSA/IF9fYnVpbHRpbl9fX21lbWNw eV9jaGsgKGRlc3RpbmF0aW9uLCAoZmFpbF9zdGFjaykuc3RhY2ssIChmYWlsX3N0YWNrKS5zaXpl ICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSwgX19idWlsdGluX29iamVjdF9zaXplIChkZXN0 aW5hdGlvbiwgMCkpIDogX19tZW1jcHlfaWNoayAoZGVzdGluYXRpb24sIChmYWlsX3N0YWNrKS5z dGFjaywgKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpKSkpLCAo ZmFpbF9zdGFjaykuc3RhY2sgPT0gKCh2b2lkICopMCkgPyAwIDogKChmYWlsX3N0YWNrKS5zaXpl ID0gKCgocmVfbWF4X2ZhaWx1cmVzICogMjApIDwgKCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVv ZiAoZmFpbF9zdGFja19lbHRfdCkgKiA0KSkgPyAocmVfbWF4X2ZhaWx1cmVzICogMjApIDogKCgo ZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkgKiA0KSkpIC8gc2l6 ZW9mIChmYWlsX3N0YWNrX2VsdF90KSksIDEpKSkpIHJldHVybiAtMjsgOyA7fTsgOyA7IGZhaWxf c3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5pbnRlZ2VyID0gKGZhaWxfc3RhY2suZnJh bWUpOyA7IDsgOyBmYWlsX3N0YWNrLnN0YWNrW2ZhaWxfc3RhY2suYXZhaWwrK10ucG9pbnRlciA9 IChkKTsgOyA7IGZhaWxfc3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5wb2ludGVyID0g KHAgLSAzKTsgZmFpbF9zdGFjay5mcmFtZSA9IGZhaWxfc3RhY2suYXZhaWw7IH0gd2hpbGUgKDAp Ow0KICAgfQ0KICAgYnJlYWs7DQoNCg0KDQogY2FzZSBvbl9mYWlsdXJlX2p1bXBfbG9vcDoNCiBv bl9mYWlsdXJlOg0KICAgZG8geyBkbyB7IChtY250KSA9ICoocCkgJiAwMzc3OyAobWNudCkgKz0g KChzaWduZWQgY2hhcikgKCooKHApICsgMSkpKSA8PCA4OyB9IHdoaWxlICgwKTsgKHApICs9IDI7 IH0gd2hpbGUgKDApOw0KICANCiAgICAgICAgICAgICAgICAgIDsNCiAgIHsNCiAgICAgaW50IGN5 Y2xlID0gMDsNCiAgICAgZG8geyBzc2l6ZV90IGZhaWx1cmUgPSBmYWlsX3N0YWNrLmZyYW1lOyB3 aGlsZSAoZmFpbHVyZSA+IDAgJiYgKChmYWlsX3N0YWNrLnN0YWNrWyhmYWlsdXJlKSAtIDJdLnBv aW50ZXIpID09IGQgfHwgKGZhaWxfc3RhY2suc3RhY2tbKGZhaWx1cmUpIC0gMl0ucG9pbnRlcikg PT0gKCh2b2lkICopMCkpKSB7IDsgaWYgKGZhaWxfc3RhY2suc3RhY2tbKGZhaWx1cmUpIC0gMV0u cG9pbnRlciA9PSBwIC0gMykgeyBjeWNsZSA9IDE7IGJyZWFrOyB9IDsgZmFpbHVyZSA9IGZhaWxf c3RhY2suc3RhY2tbKGZhaWx1cmUpIC0gM10uaW50ZWdlcjsgfSA7IH0gd2hpbGUgKDApOw0KICAg ICBpZiAoY3ljbGUpDQoNCg0KDQoNCg0KICAgICAgIHAgKz0gbWNudDsNCiAgICAgZWxzZQ0KICAg ICAgIGRvIHsgY2hhciAqZGVzdGluYXRpb247IDsgOyA7IDsgd2hpbGUgKCgoZmFpbF9zdGFjayku c2l6ZSAtIChmYWlsX3N0YWNrKS5hdmFpbCkgPD0gMykgeyBpZiAoISgoKGZhaWxfc3RhY2spLnNp emUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpID49IHJlX21heF9mYWlsdXJlcyAqIDIwKSA/ IDAgOiAoKGZhaWxfc3RhY2spLnN0YWNrID0gKGRlc3RpbmF0aW9uID0gKGNoYXIgKikgX19idWls dGluX2FsbG9jYSAoKChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgPCAoKChmYWlsX3N0YWNrKS5zaXpl ICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQpKSA/IChyZV9tYXhfZmFpbHVyZXMgKiAy MCkgOiAoKChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQp KSkpLCAoKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoZGVzdGluYXRpb24sIDApICE9IChzaXplX3Qp IC0xKSA/IF9fYnVpbHRpbl9fX21lbWNweV9jaGsgKGRlc3RpbmF0aW9uLCAoZmFpbF9zdGFjayku c3RhY2ssIChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSwgX19i dWlsdGluX29iamVjdF9zaXplIChkZXN0aW5hdGlvbiwgMCkpIDogX19tZW1jcHlfaWNoayAoZGVz dGluYXRpb24sIChmYWlsX3N0YWNrKS5zdGFjaywgKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2Yg KGZhaWxfc3RhY2tfZWx0X3QpKSkpLCAoZmFpbF9zdGFjaykuc3RhY2sgPT0gKCh2b2lkICopMCkg PyAwIDogKChmYWlsX3N0YWNrKS5zaXplID0gKCgocmVfbWF4X2ZhaWx1cmVzICogMjApIDwgKCgo ZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkgKiA0KSkgPyAocmVf bWF4X2ZhaWx1cmVzICogMjApIDogKCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9z dGFja19lbHRfdCkgKiA0KSkpIC8gc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSksIDEpKSkpIHJl dHVybiAtMjsgOyA7fTsgOyA7IGZhaWxfc3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5p bnRlZ2VyID0gKGZhaWxfc3RhY2suZnJhbWUpOyA7IDsgOyBmYWlsX3N0YWNrLnN0YWNrW2ZhaWxf c3RhY2suYXZhaWwrK10ucG9pbnRlciA9IChkKTsgOyA7IGZhaWxfc3RhY2suc3RhY2tbZmFpbF9z dGFjay5hdmFpbCsrXS5wb2ludGVyID0gKHAgLSAzKTsgZmFpbF9zdGFjay5mcmFtZSA9IGZhaWxf c3RhY2suYXZhaWw7IH0gd2hpbGUgKDApOw0KICAgfQ0KICAgYnJlYWs7DQojIDU4MTAgIi9ob21l L2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3NyYy9lbWFjcy0yNC4zLmdjYy40LjcuMi9s aWItc3JjLy4uL3NyYy9yZWdleC5jIg0KIGNhc2Ugb25fZmFpbHVyZV9qdW1wOg0KICAgZG8geyBk byB7IChtY250KSA9ICoocCkgJiAwMzc3OyAobWNudCkgKz0gKChzaWduZWQgY2hhcikgKCooKHAp ICsgMSkpKSA8PCA4OyB9IHdoaWxlICgwKTsgKHApICs9IDI7IH0gd2hpbGUgKDApOw0KICANCiAg ICAgICAgICAgICAgICAgIDsNCg0KICAgZG8geyBjaGFyICpkZXN0aW5hdGlvbjsgOyA7IDsgOyB3 aGlsZSAoKChmYWlsX3N0YWNrKS5zaXplIC0gKGZhaWxfc3RhY2spLmF2YWlsKSA8PSAzKSB7IGlm ICghKCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkgPj0gcmVf bWF4X2ZhaWx1cmVzICogMjApID8gMCA6ICgoZmFpbF9zdGFjaykuc3RhY2sgPSAoZGVzdGluYXRp b24gPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhICgoKHJlX21heF9mYWlsdXJlcyAqIDIwKSA8 ICgoKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpICogNCkpID8g KHJlX21heF9mYWlsdXJlcyAqIDIwKSA6ICgoKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZh aWxfc3RhY2tfZWx0X3QpICogNCkpKSksICgoX19idWlsdGluX29iamVjdF9zaXplIChkZXN0aW5h dGlvbiwgMCkgIT0gKHNpemVfdCkgLTEpID8gX19idWlsdGluX19fbWVtY3B5X2NoayAoZGVzdGlu YXRpb24sIChmYWlsX3N0YWNrKS5zdGFjaywgKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZh aWxfc3RhY2tfZWx0X3QpLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGRlc3RpbmF0aW9uLCAwKSkg OiBfX21lbWNweV9pY2hrIChkZXN0aW5hdGlvbiwgKGZhaWxfc3RhY2spLnN0YWNrLCAoZmFpbF9z dGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkpKSksIChmYWlsX3N0YWNrKS5z dGFjayA9PSAoKHZvaWQgKikwKSA/IDAgOiAoKGZhaWxfc3RhY2spLnNpemUgPSAoKChyZV9tYXhf ZmFpbHVyZXMgKiAyMCkgPCAoKChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNr X2VsdF90KSAqIDQpKSA/IChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgOiAoKChmYWlsX3N0YWNrKS5z aXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQpKSkgLyBzaXplb2YgKGZhaWxfc3Rh Y2tfZWx0X3QpKSwgMSkpKSkgcmV0dXJuIC0yOyA7IDt9OyA7IDsgZmFpbF9zdGFjay5zdGFja1tm YWlsX3N0YWNrLmF2YWlsKytdLmludGVnZXIgPSAoZmFpbF9zdGFjay5mcmFtZSk7IDsgOyA7IGZh aWxfc3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5wb2ludGVyID0gKGQpOyA7IDsgZmFp bF9zdGFjay5zdGFja1tmYWlsX3N0YWNrLmF2YWlsKytdLnBvaW50ZXIgPSAocCAtMyk7IGZhaWxf c3RhY2suZnJhbWUgPSBmYWlsX3N0YWNrLmF2YWlsOyB9IHdoaWxlICgwKTsNCiAgIGJyZWFrOw0K IyA1ODI1ICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQu My5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCiBjYXNlIG9uX2ZhaWx1cmVfanVt cF9zbWFydDoNCiAgIGRvIHsgZG8geyAobWNudCkgPSAqKHApICYgMDM3NzsgKG1jbnQpICs9ICgo c2lnbmVkIGNoYXIpICgqKChwKSArIDEpKSkgPDwgODsgfSB3aGlsZSAoMCk7IChwKSArPSAyOyB9 IHdoaWxlICgwKTsNCiAgDQogICAgICAgICAgICAgICAgICA7DQogICB7DQogICAgIHJlX2NoYXIg KnAxID0gcDsNCg0KICAgICB1bnNpZ25lZCBjaGFyICpwMiA9ICh1bnNpZ25lZCBjaGFyKikgcCAr IG1jbnQ7DQogICAgIHVuc2lnbmVkIGNoYXIgKnAzID0gKHVuc2lnbmVkIGNoYXIqKSBwIC0gMzsN Cg0KICAgICBwIC09IDM7DQoNCg0KICAgICBkbyB7IChtY250KSA9ICoocDIgLSAyKSAmIDAzNzc7 IChtY250KSArPSAoKHNpZ25lZCBjaGFyKSAoKigocDIgLSAyKSArIDEpKSkgPDwgODsgfSB3aGls ZSAoMCk7DQoNCg0KDQogICAgIDsNCiAgICAgOw0KICAgICA7DQogICAgIGlmIChtdXR1YWxseV9l eGNsdXNpdmVfcCAoYnVmcCwgcDEsIHAyKSkNCiAgICAgICB7DQoNCiAgOw0KICAqcDMgPSAodW5z aWduZWQgY2hhcikgb25fZmFpbHVyZV9rZWVwX3N0cmluZ19qdW1wOw0KICBkbyB7IChwMiAtIDIp WzBdID0gKG1jbnQgKyAzKSAmIDAzNzc7IChwMiAtIDIpWzFdID0gKG1jbnQgKyAzKSA+PiA4OyB9 IHdoaWxlICgwKTsNCiAgICAgICB9DQogICAgIGVsc2UNCiAgICAgICB7DQoNCiAgOw0KICAqcDMg PSAodW5zaWduZWQgY2hhcikgb25fZmFpbHVyZV9qdW1wOw0KICAgICAgIH0NCiAgICAgOw0KICAg fQ0KICAgYnJlYWs7DQoNCg0KIGNhc2UganVtcDoNCiB1bmNvbmRpdGlvbmFsX2p1bXA6DQogICAo KHZvaWQpMCk7DQogICBkbyB7IGRvIHsgKG1jbnQpID0gKihwKSAmIDAzNzc7IChtY250KSArPSAo KHNpZ25lZCBjaGFyKSAoKigocCkgKyAxKSkpIDw8IDg7IH0gd2hpbGUgKDApOyAocCkgKz0gMjsg fSB3aGlsZSAoMCk7DQogICA7DQogICBwICs9IG1jbnQ7DQogICA7DQogICBicmVhazsNCg0KDQoN Cg0KIGNhc2Ugc3VjY2VlZF9uOg0KDQogICBkbyB7IChtY250KSA9ICoocCArIDIpICYgMDM3Nzsg KG1jbnQpICs9ICgoc2lnbmVkIGNoYXIpICgqKChwICsgMikgKyAxKSkpIDw8IDg7IH0gd2hpbGUg KDApOw0KICAgOw0KDQoNCiAgIGlmIChtY250ICE9IDApDQogICAgIHsNCg0KICAgICAgIHVuc2ln bmVkIGNoYXIgKnAyID0gKHVuc2lnbmVkIGNoYXIqKSBwICsgMjsNCiAgICAgICBtY250LS07DQog ICAgICAgcCArPSA0Ow0KICAgICAgIGRvIHsgY2hhciAqZGVzdGluYXRpb247IGludCBjOyB3aGls ZSAoKChmYWlsX3N0YWNrKS5zaXplIC0gKGZhaWxfc3RhY2spLmF2YWlsKSA8PSAzKSB7IGlmICgh KCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkgPj0gcmVfbWF4 X2ZhaWx1cmVzICogMjApID8gMCA6ICgoZmFpbF9zdGFjaykuc3RhY2sgPSAoZGVzdGluYXRpb24g PSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhICgoKHJlX21heF9mYWlsdXJlcyAqIDIwKSA8ICgo KGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpICogNCkpID8gKHJl X21heF9mYWlsdXJlcyAqIDIwKSA6ICgoKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxf c3RhY2tfZWx0X3QpICogNCkpKSksICgoX19idWlsdGluX29iamVjdF9zaXplIChkZXN0aW5hdGlv biwgMCkgIT0gKHNpemVfdCkgLTEpID8gX19idWlsdGluX19fbWVtY3B5X2NoayAoZGVzdGluYXRp b24sIChmYWlsX3N0YWNrKS5zdGFjaywgKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxf c3RhY2tfZWx0X3QpLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGRlc3RpbmF0aW9uLCAwKSkgOiBf X21lbWNweV9pY2hrIChkZXN0aW5hdGlvbiwgKGZhaWxfc3RhY2spLnN0YWNrLCAoZmFpbF9zdGFj aykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkpKSksIChmYWlsX3N0YWNrKS5zdGFj ayA9PSAoKHZvaWQgKikwKSA/IDAgOiAoKGZhaWxfc3RhY2spLnNpemUgPSAoKChyZV9tYXhfZmFp bHVyZXMgKiAyMCkgPCAoKChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2Vs dF90KSAqIDQpKSA/IChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgOiAoKChmYWlsX3N0YWNrKS5zaXpl ICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQpKSkgLyBzaXplb2YgKGZhaWxfc3RhY2tf ZWx0X3QpKSwgMSkpKSkgcmV0dXJuIC0yOyA7IDt9OyBkbyB7IChjKSA9ICoocDIpICYgMDM3Nzsg KGMpICs9ICgoc2lnbmVkIGNoYXIpICgqKChwMikgKyAxKSkpIDw8IDg7IH0gd2hpbGUgKDApOyA7 IGZhaWxfc3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5pbnRlZ2VyID0gKGMpOyBmYWls X3N0YWNrLnN0YWNrW2ZhaWxfc3RhY2suYXZhaWwrK10ucG9pbnRlciA9IChwMik7IGZhaWxfc3Rh Y2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5pbnRlZ2VyID0gKC0xKTsgZG8geyAocDIpWzBd ID0gKG1jbnQpICYgMDM3NzsgKHAyKVsxXSA9IChtY250KSA+PiA4OyB9IHdoaWxlICgwKTsgfSB3 aGlsZSAoMCk7DQogICAgIH0NCiAgIGVsc2UNCg0KICAgICBnb3RvIG9uX2ZhaWx1cmU7DQogICBi cmVhazsNCg0KIGNhc2UganVtcF9uOg0KDQogICBkbyB7IChtY250KSA9ICoocCArIDIpICYgMDM3 NzsgKG1jbnQpICs9ICgoc2lnbmVkIGNoYXIpICgqKChwICsgMikgKyAxKSkpIDw8IDg7IH0gd2hp bGUgKDApOw0KICAgOw0KDQoNCiAgIGlmIChtY250ICE9IDApDQogICAgIHsNCg0KICAgICAgIHVu c2lnbmVkIGNoYXIgKnAyID0gKHVuc2lnbmVkIGNoYXIqKSBwICsgMjsNCiAgICAgICBtY250LS07 DQogICAgICAgZG8geyBjaGFyICpkZXN0aW5hdGlvbjsgaW50IGM7IHdoaWxlICgoKGZhaWxfc3Rh Y2spLnNpemUgLSAoZmFpbF9zdGFjaykuYXZhaWwpIDw9IDMpIHsgaWYgKCEoKChmYWlsX3N0YWNr KS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSA+PSByZV9tYXhfZmFpbHVyZXMgKiAy MCkgPyAwIDogKChmYWlsX3N0YWNrKS5zdGFjayA9IChkZXN0aW5hdGlvbiA9IChjaGFyICopIF9f YnVpbHRpbl9hbGxvY2EgKCgocmVfbWF4X2ZhaWx1cmVzICogMjApIDwgKCgoZmFpbF9zdGFjayku c2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkgKiA0KSkgPyAocmVfbWF4X2ZhaWx1cmVz ICogMjApIDogKCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkg KiA0KSkpKSwgKChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGRlc3RpbmF0aW9uLCAwKSAhPSAoc2l6 ZV90KSAtMSkgPyBfX2J1aWx0aW5fX19tZW1jcHlfY2hrIChkZXN0aW5hdGlvbiwgKGZhaWxfc3Rh Y2spLnN0YWNrLCAoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCks IF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoZGVzdGluYXRpb24sIDApKSA6IF9fbWVtY3B5X2ljaGsg KGRlc3RpbmF0aW9uLCAoZmFpbF9zdGFjaykuc3RhY2ssIChmYWlsX3N0YWNrKS5zaXplICogc2l6 ZW9mIChmYWlsX3N0YWNrX2VsdF90KSkpKSwgKGZhaWxfc3RhY2spLnN0YWNrID09ICgodm9pZCAq KTApID8gMCA6ICgoZmFpbF9zdGFjaykuc2l6ZSA9ICgoKHJlX21heF9mYWlsdXJlcyAqIDIwKSA8 ICgoKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpICogNCkpID8g KHJlX21heF9mYWlsdXJlcyAqIDIwKSA6ICgoKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZh aWxfc3RhY2tfZWx0X3QpICogNCkpKSAvIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkpLCAxKSkp KSByZXR1cm4gLTI7IDsgO307IGRvIHsgKGMpID0gKihwMikgJiAwMzc3OyAoYykgKz0gKChzaWdu ZWQgY2hhcikgKCooKHAyKSArIDEpKSkgPDwgODsgfSB3aGlsZSAoMCk7IDsgZmFpbF9zdGFjay5z dGFja1tmYWlsX3N0YWNrLmF2YWlsKytdLmludGVnZXIgPSAoYyk7IGZhaWxfc3RhY2suc3RhY2tb ZmFpbF9zdGFjay5hdmFpbCsrXS5wb2ludGVyID0gKHAyKTsgZmFpbF9zdGFjay5zdGFja1tmYWls X3N0YWNrLmF2YWlsKytdLmludGVnZXIgPSAoLTEpOyBkbyB7IChwMilbMF0gPSAobWNudCkgJiAw Mzc3OyAocDIpWzFdID0gKG1jbnQpID4+IDg7IH0gd2hpbGUgKDApOyB9IHdoaWxlICgwKTsNCiAg ICAgICBnb3RvIHVuY29uZGl0aW9uYWxfanVtcDsNCiAgICAgfQ0KDQogICBlbHNlDQogICAgIHAg Kz0gNDsNCiAgIGJyZWFrOw0KDQogY2FzZSBzZXRfbnVtYmVyX2F0Og0KICAgew0KICAgICB1bnNp Z25lZCBjaGFyICpwMjsNCiAgICAgOw0KDQogICAgIGRvIHsgZG8geyAobWNudCkgPSAqKHApICYg MDM3NzsgKG1jbnQpICs9ICgoc2lnbmVkIGNoYXIpICgqKChwKSArIDEpKSkgPDwgODsgfSB3aGls ZSAoMCk7IChwKSArPSAyOyB9IHdoaWxlICgwKTsNCg0KICAgICBwMiA9ICh1bnNpZ25lZCBjaGFy KikgcCArIG1jbnQ7DQoNCiAgICAgZG8geyBkbyB7IChtY250KSA9ICoocCkgJiAwMzc3OyAobWNu dCkgKz0gKChzaWduZWQgY2hhcikgKCooKHApICsgMSkpKSA8PCA4OyB9IHdoaWxlICgwKTsgKHAp ICs9IDI7IH0gd2hpbGUgKDApOw0KICAgICA7DQogICAgIGRvIHsgY2hhciAqZGVzdGluYXRpb247 IGludCBjOyB3aGlsZSAoKChmYWlsX3N0YWNrKS5zaXplIC0gKGZhaWxfc3RhY2spLmF2YWlsKSA8 PSAzKSB7IGlmICghKCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRf dCkgPj0gcmVfbWF4X2ZhaWx1cmVzICogMjApID8gMCA6ICgoZmFpbF9zdGFjaykuc3RhY2sgPSAo ZGVzdGluYXRpb24gPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhICgoKHJlX21heF9mYWlsdXJl cyAqIDIwKSA8ICgoKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3Qp ICogNCkpID8gKHJlX21heF9mYWlsdXJlcyAqIDIwKSA6ICgoKGZhaWxfc3RhY2spLnNpemUgKiBz aXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpICogNCkpKSksICgoX19idWlsdGluX29iamVjdF9zaXpl IChkZXN0aW5hdGlvbiwgMCkgIT0gKHNpemVfdCkgLTEpID8gX19idWlsdGluX19fbWVtY3B5X2No ayAoZGVzdGluYXRpb24sIChmYWlsX3N0YWNrKS5zdGFjaywgKGZhaWxfc3RhY2spLnNpemUgKiBz aXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGRlc3RpbmF0 aW9uLCAwKSkgOiBfX21lbWNweV9pY2hrIChkZXN0aW5hdGlvbiwgKGZhaWxfc3RhY2spLnN0YWNr LCAoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkpKSksIChmYWls X3N0YWNrKS5zdGFjayA9PSAoKHZvaWQgKikwKSA/IDAgOiAoKGZhaWxfc3RhY2spLnNpemUgPSAo KChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgPCAoKChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChm YWlsX3N0YWNrX2VsdF90KSAqIDQpKSA/IChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgOiAoKChmYWls X3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQpKSkgLyBzaXplb2Yg KGZhaWxfc3RhY2tfZWx0X3QpKSwgMSkpKSkgcmV0dXJuIC0yOyA7IDt9OyBkbyB7IChjKSA9ICoo cDIpICYgMDM3NzsgKGMpICs9ICgoc2lnbmVkIGNoYXIpICgqKChwMikgKyAxKSkpIDw8IDg7IH0g d2hpbGUgKDApOyA7IGZhaWxfc3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5pbnRlZ2Vy ID0gKGMpOyBmYWlsX3N0YWNrLnN0YWNrW2ZhaWxfc3RhY2suYXZhaWwrK10ucG9pbnRlciA9IChw Mik7IGZhaWxfc3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5pbnRlZ2VyID0gKC0xKTsg ZG8geyAocDIpWzBdID0gKG1jbnQpICYgMDM3NzsgKHAyKVsxXSA9IChtY250KSA+PiA4OyB9IHdo aWxlICgwKTsgfSB3aGlsZSAoMCk7DQogICAgIGJyZWFrOw0KICAgfQ0KDQogY2FzZSB3b3JkYm91 bmQ6DQogY2FzZSBub3R3b3JkYm91bmQ6DQogICB7DQogICAgIGJvb2xlYW4gbm90ID0gKHJlX29w Y29kZV90KSAqKHAgLSAxKSA9PSBub3R3b3JkYm91bmQ7DQogICAgIDsNCg0KDQoNCg0KICAgICBp ZiAoKChkKSA9PSAoc2l6ZTEgPyBzdHJpbmcxIDogc3RyaW5nMikgfHwgIXNpemUyKSB8fCAoKGQp ID09IGVuZDIpKQ0KICAgICAgIG5vdCA9ICFub3Q7DQogICAgIGVsc2UNCiAgICAgICB7DQoNCg0K ICByZV93Y2hhcl90IGMxLCBjMjsNCiAgaW50IHMxLCBzMjsNCiAgaW50IGR1bW15Ow0KDQoNCg0K DQoNCiAgKGMxID0gKChkKSA9PSAoc3RyaW5nMikgPyAqKChlbmQxKSAtIDEpIDogKigoZCkgLSAx KSkpOw0KICBzMSA9IHJlX3N5bnRheF90YWJsZVsoYzEpXTsNCg0KDQoNCiAgaWYgKGQgPT0gZW5k MSkgeyBkID0gc3RyaW5nMjsgZGVuZCA9IGVuZF9tYXRjaF8yOyB9Ow0KICAoYzIgPSAqZCwgZHVt bXkgPSAxKTsNCiAgczIgPSByZV9zeW50YXhfdGFibGVbKGMyKV07DQoNCiAgaWYgKA0KICAgICAg KChzMSA9PSBTd29yZCkgIT0gKHMyID09IFN3b3JkKSkNCg0KDQogICAgICB8fCAoKHMxID09IFN3 b3JkKSAmJiAoMCkpKQ0KICAgIG5vdCA9ICFub3Q7DQogICAgICAgfQ0KICAgICBpZiAobm90KQ0K ICAgICAgIGJyZWFrOw0KICAgICBlbHNlDQogICAgICAgZ290byBmYWlsOw0KICAgfQ0KDQogY2Fz ZSB3b3JkYmVnOg0KICAgOw0KDQoNCg0KDQogICBpZiAoKChkKSA9PSBlbmQyKSkNCiAgICAgZ290 byBmYWlsOw0KICAgZWxzZQ0KICAgICB7DQoNCg0KICAgICAgIHJlX3djaGFyX3QgYzEsIGMyOw0K ICAgICAgIGludCBzMSwgczI7DQogICAgICAgaW50IGR1bW15Ow0KDQoNCg0KDQoNCiAgICAgICB3 aGlsZSAoZCA9PSBkZW5kKSB7IGlmIChkZW5kID09IGVuZF9tYXRjaF8yKSBnb3RvIGZhaWw7IGQg PSBzdHJpbmcyOyBkZW5kID0gZW5kX21hdGNoXzI7IH07DQogICAgICAgKGMyID0gKmQsIGR1bW15 ID0gMSk7DQogICAgICAgczIgPSByZV9zeW50YXhfdGFibGVbKGMyKV07DQoNCg0KICAgICAgIGlm IChzMiAhPSBTd29yZCkNCiAgZ290byBmYWlsOw0KDQoNCiAgICAgICBpZiAoISgoZCkgPT0gKHNp emUxID8gc3RyaW5nMSA6IHN0cmluZzIpIHx8ICFzaXplMikpDQogIHsNCiAgICAoYzEgPSAoKGQp ID09IChzdHJpbmcyKSA/ICooKGVuZDEpIC0gMSkgOiAqKChkKSAtIDEpKSk7DQoNCg0KDQogICAg czEgPSByZV9zeW50YXhfdGFibGVbKGMxKV07DQoNCg0KDQogICAgaWYgKChzMSA9PSBTd29yZCkg JiYgISgwKSkNCiAgICAgIGdvdG8gZmFpbDsNCiAgfQ0KICAgICB9DQogICBicmVhazsNCg0KIGNh c2Ugd29yZGVuZDoNCiAgIDsNCg0KDQoNCg0KICAgaWYgKCgoZCkgPT0gKHNpemUxID8gc3RyaW5n MSA6IHN0cmluZzIpIHx8ICFzaXplMikpDQogICAgIGdvdG8gZmFpbDsNCiAgIGVsc2UNCiAgICAg ew0KDQoNCiAgICAgICByZV93Y2hhcl90IGMxLCBjMjsNCiAgICAgICBpbnQgczEsIHMyOw0KICAg ICAgIGludCBkdW1teTsNCg0KDQoNCg0KDQogICAgICAgKGMxID0gKChkKSA9PSAoc3RyaW5nMikg PyAqKChlbmQxKSAtIDEpIDogKigoZCkgLSAxKSkpOw0KICAgICAgIHMxID0gcmVfc3ludGF4X3Rh YmxlWyhjMSldOw0KDQoNCiAgICAgICBpZiAoczEgIT0gU3dvcmQpDQogIGdvdG8gZmFpbDsNCg0K DQogICAgICAgaWYgKCEoKGQpID09IGVuZDIpKQ0KICB7DQogICAgaWYgKGQgPT0gZW5kMSkgeyBk ID0gc3RyaW5nMjsgZGVuZCA9IGVuZF9tYXRjaF8yOyB9Ow0KICAgIChjMiA9ICpkLCBkdW1teSA9 IDEpOw0KDQoNCg0KICAgIHMyID0gcmVfc3ludGF4X3RhYmxlWyhjMildOw0KDQoNCg0KICAgIGlm ICgoczIgPT0gU3dvcmQpICYmICEoMCkpDQogICBnb3RvIGZhaWw7DQogIH0NCiAgICAgfQ0KICAg YnJlYWs7DQoNCiBjYXNlIHN5bWJlZzoNCiAgIDsNCg0KDQoNCg0KICAgaWYgKCgoZCkgPT0gZW5k MikpDQogICAgIGdvdG8gZmFpbDsNCiAgIGVsc2UNCiAgICAgew0KDQoNCiAgICAgICByZV93Y2hh cl90IGMxLCBjMjsNCiAgICAgICBpbnQgczEsIHMyOw0KDQoNCg0KDQoNCiAgICAgICB3aGlsZSAo ZCA9PSBkZW5kKSB7IGlmIChkZW5kID09IGVuZF9tYXRjaF8yKSBnb3RvIGZhaWw7IGQgPSBzdHJp bmcyOyBkZW5kID0gZW5kX21hdGNoXzI7IH07DQogICAgICAgYzIgPSAoKihkKSk7DQogICAgICAg czIgPSByZV9zeW50YXhfdGFibGVbKGMyKV07DQoNCg0KICAgICAgIGlmIChzMiAhPSBTd29yZCAm JiBzMiAhPSBTc3ltYm9sKQ0KICBnb3RvIGZhaWw7DQoNCg0KICAgICAgIGlmICghKChkKSA9PSAo c2l6ZTEgPyBzdHJpbmcxIDogc3RyaW5nMikgfHwgIXNpemUyKSkNCiAgew0KICAgIChjMSA9ICgo ZCkgPT0gKHN0cmluZzIpID8gKigoZW5kMSkgLSAxKSA6ICooKGQpIC0gMSkpKTsNCg0KDQoNCiAg ICBzMSA9IHJlX3N5bnRheF90YWJsZVsoYzEpXTsNCg0KDQogICAgaWYgKHMxID09IFN3b3JkIHx8 IHMxID09IFNzeW1ib2wpDQogICAgICBnb3RvIGZhaWw7DQogIH0NCiAgICAgfQ0KICAgYnJlYWs7 DQoNCiBjYXNlIHN5bWVuZDoNCiAgIDsNCg0KDQoNCg0KICAgaWYgKCgoZCkgPT0gKHNpemUxID8g c3RyaW5nMSA6IHN0cmluZzIpIHx8ICFzaXplMikpDQogICAgIGdvdG8gZmFpbDsNCiAgIGVsc2UN CiAgICAgew0KDQoNCiAgICAgICByZV93Y2hhcl90IGMxLCBjMjsNCiAgICAgICBpbnQgczEsIHMy Ow0KDQoNCg0KDQoNCiAgICAgICAoYzEgPSAoKGQpID09IChzdHJpbmcyKSA/ICooKGVuZDEpIC0g MSkgOiAqKChkKSAtIDEpKSk7DQogICAgICAgczEgPSByZV9zeW50YXhfdGFibGVbKGMxKV07DQoN Cg0KICAgICAgIGlmIChzMSAhPSBTd29yZCAmJiBzMSAhPSBTc3ltYm9sKQ0KICBnb3RvIGZhaWw7 DQoNCg0KICAgICAgIGlmICghKChkKSA9PSBlbmQyKSkNCiAgew0KICAgIGlmIChkID09IGVuZDEp IHsgZCA9IHN0cmluZzI7IGRlbmQgPSBlbmRfbWF0Y2hfMjsgfTsNCiAgICBjMiA9ICgqKGQpKTsN Cg0KDQoNCiAgICBzMiA9IHJlX3N5bnRheF90YWJsZVsoYzIpXTsNCg0KDQogICAgaWYgKHMyID09 IFN3b3JkIHx8IHMyID09IFNzeW1ib2wpDQogICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsN CiAgfQ0KICAgICB9DQogICBicmVhazsNCg0KIGNhc2Ugc3ludGF4c3BlYzoNCiBjYXNlIG5vdHN5 bnRheHNwZWM6DQogICB7DQogICAgIGJvb2xlYW4gbm90ID0gKHJlX29wY29kZV90KSAqKHAgLSAx KSA9PSBub3RzeW50YXhzcGVjOw0KICAgICBtY250ID0gKnArKzsNCiAgICAgOw0KICAgICB3aGls ZSAoZCA9PSBkZW5kKSB7IGlmIChkZW5kID09IGVuZF9tYXRjaF8yKSBnb3RvIGZhaWw7IGQgPSBz dHJpbmcyOyBkZW5kID0gZW5kX21hdGNoXzI7IH07DQoNCg0KDQoNCg0KDQoNCiAgICAgew0KICAg ICAgIGludCBsZW47DQogICAgICAgcmVfd2NoYXJfdCBjOw0KDQogICAgICAgKGMgPSAqZCwgbGVu ID0gMSk7DQogICAgICAgaWYgKChyZV9zeW50YXhfdGFibGVbKGMpXSAhPSAoZW51bSBzeW50YXhj b2RlKSBtY250KSBeIG5vdCkNCiAgZ290byBmYWlsOw0KICAgICAgIGQgKz0gbGVuOw0KICAgICB9 DQogICB9DQogICBicmVhazsNCiMgNjIxNiAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVs ZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQog ZGVmYXVsdDoNCiAgIGFib3J0ICgpOw0KIH0NCiAgICAgIGNvbnRpbnVlOw0KDQoNCg0KICAgIGZh aWw6DQogICAgICAoKHZvaWQpMCk7DQogICAgICBpZiAoIShmYWlsX3N0YWNrLmZyYW1lID09IDAp KQ0KIHsNCiAgIHJlX2NoYXIgKnN0ciwgKnBhdDsNCg0KICAgOw0KICAgZG8geyA7IDsgOyA7IHdo aWxlIChmYWlsX3N0YWNrLmZyYW1lIDwgZmFpbF9zdGFjay5hdmFpbCkgZG8geyBsb25nIHBmcmVn ID0gZmFpbF9zdGFjay5zdGFja1stLWZhaWxfc3RhY2suYXZhaWxdLmludGVnZXI7IGlmIChwZnJl ZyA9PSAtMSkgeyB1bnNpZ25lZCBjaGFyICpwdHIgPSAodW5zaWduZWQgY2hhciopIGZhaWxfc3Rh Y2suc3RhY2tbLS1mYWlsX3N0YWNrLmF2YWlsXS5wb2ludGVyOyBwZnJlZyA9IGZhaWxfc3RhY2su c3RhY2tbLS1mYWlsX3N0YWNrLmF2YWlsXS5pbnRlZ2VyOyBkbyB7IChwdHIpWzBdID0gKHBmcmVn KSAmIDAzNzc7IChwdHIpWzFdID0gKHBmcmVnKSA+PiA4OyB9IHdoaWxlICgwKTsgOyB9IGVsc2Ug eyByZWdlbmRbcGZyZWddID0gZmFpbF9zdGFjay5zdGFja1stLWZhaWxfc3RhY2suYXZhaWxdLnBv aW50ZXI7IHJlZ3N0YXJ0W3BmcmVnXSA9IGZhaWxfc3RhY2suc3RhY2tbLS1mYWlsX3N0YWNrLmF2 YWlsXS5wb2ludGVyOyA7IH0gfSB3aGlsZSAoMCk7IHBhdCA9IGZhaWxfc3RhY2suc3RhY2tbLS1m YWlsX3N0YWNrLmF2YWlsXS5wb2ludGVyOyA7IDsgc3RyID0gZmFpbF9zdGFjay5zdGFja1stLWZh aWxfc3RhY2suYXZhaWxdLnBvaW50ZXI7IDsgOyA7IGZhaWxfc3RhY2suZnJhbWUgPSBmYWlsX3N0 YWNrLnN0YWNrWy0tZmFpbF9zdGFjay5hdmFpbF0uaW50ZWdlcjsgOyA7IDsgOyB9IHdoaWxlICgw KTsNCiAgIHN3aXRjaCAoKnBhdCsrKQ0KICAgICB7DQogICAgIGNhc2Ugb25fZmFpbHVyZV9rZWVw X3N0cmluZ19qdW1wOg0KICAgICAgIDsNCiAgICAgICBnb3RvIGNvbnRpbnVlX2ZhaWx1cmVfanVt cDsNCg0KICAgICBjYXNlIG9uX2ZhaWx1cmVfanVtcF9uYXN0eWxvb3A6DQogICAgICAgOw0KICAg ICAgIGRvIHsgY2hhciAqZGVzdGluYXRpb247IDsgOyA7IDsgd2hpbGUgKCgoZmFpbF9zdGFjayku c2l6ZSAtIChmYWlsX3N0YWNrKS5hdmFpbCkgPD0gMykgeyBpZiAoISgoKGZhaWxfc3RhY2spLnNp emUgKiBzaXplb2YgKGZhaWxfc3RhY2tfZWx0X3QpID49IHJlX21heF9mYWlsdXJlcyAqIDIwKSA/ IDAgOiAoKGZhaWxfc3RhY2spLnN0YWNrID0gKGRlc3RpbmF0aW9uID0gKGNoYXIgKikgX19idWls dGluX2FsbG9jYSAoKChyZV9tYXhfZmFpbHVyZXMgKiAyMCkgPCAoKChmYWlsX3N0YWNrKS5zaXpl ICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQpKSA/IChyZV9tYXhfZmFpbHVyZXMgKiAy MCkgOiAoKChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSAqIDQp KSkpLCAoKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoZGVzdGluYXRpb24sIDApICE9IChzaXplX3Qp IC0xKSA/IF9fYnVpbHRpbl9fX21lbWNweV9jaGsgKGRlc3RpbmF0aW9uLCAoZmFpbF9zdGFjayku c3RhY2ssIChmYWlsX3N0YWNrKS5zaXplICogc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSwgX19i dWlsdGluX29iamVjdF9zaXplIChkZXN0aW5hdGlvbiwgMCkpIDogX19tZW1jcHlfaWNoayAoZGVz dGluYXRpb24sIChmYWlsX3N0YWNrKS5zdGFjaywgKGZhaWxfc3RhY2spLnNpemUgKiBzaXplb2Yg KGZhaWxfc3RhY2tfZWx0X3QpKSkpLCAoZmFpbF9zdGFjaykuc3RhY2sgPT0gKCh2b2lkICopMCkg PyAwIDogKChmYWlsX3N0YWNrKS5zaXplID0gKCgocmVfbWF4X2ZhaWx1cmVzICogMjApIDwgKCgo ZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9zdGFja19lbHRfdCkgKiA0KSkgPyAocmVf bWF4X2ZhaWx1cmVzICogMjApIDogKCgoZmFpbF9zdGFjaykuc2l6ZSAqIHNpemVvZiAoZmFpbF9z dGFja19lbHRfdCkgKiA0KSkpIC8gc2l6ZW9mIChmYWlsX3N0YWNrX2VsdF90KSksIDEpKSkpIHJl dHVybiAtMjsgOyA7fTsgOyA7IGZhaWxfc3RhY2suc3RhY2tbZmFpbF9zdGFjay5hdmFpbCsrXS5p bnRlZ2VyID0gKGZhaWxfc3RhY2suZnJhbWUpOyA7IDsgOyBmYWlsX3N0YWNrLnN0YWNrW2ZhaWxf c3RhY2suYXZhaWwrK10ucG9pbnRlciA9IChzdHIpOyA7IDsgZmFpbF9zdGFjay5zdGFja1tmYWls X3N0YWNrLmF2YWlsKytdLnBvaW50ZXIgPSAocGF0IC0gMik7IGZhaWxfc3RhY2suZnJhbWUgPSBm YWlsX3N0YWNrLmF2YWlsOyB9IHdoaWxlICgwKTsNCg0KDQogICAgIGNhc2Ugb25fZmFpbHVyZV9q dW1wX2xvb3A6DQogICAgIGNhc2Ugb25fZmFpbHVyZV9qdW1wOg0KICAgICBjYXNlIHN1Y2NlZWRf bjoNCiAgICAgICBkID0gc3RyOw0KICAgICBjb250aW51ZV9mYWlsdXJlX2p1bXA6DQogICAgICAg ZG8geyBkbyB7IChtY250KSA9ICoocGF0KSAmIDAzNzc7IChtY250KSArPSAoKHNpZ25lZCBjaGFy KSAoKigocGF0KSArIDEpKSkgPDwgODsgfSB3aGlsZSAoMCk7IChwYXQpICs9IDI7IH0gd2hpbGUg KDApOw0KICAgICAgIHAgPSBwYXQgKyBtY250Ow0KICAgICAgIGJyZWFrOw0KDQogICAgIGNhc2Ug bm9fb3A6DQoNCiAgICAgICBnb3RvIGZhaWw7DQoNCiAgICAgZGVmYXVsdDoNCiAgICAgICBhYm9y dCAoKTsNCiAgICAgfQ0KDQogICA7DQoNCiAgIGlmIChkID49IHN0cmluZzEgJiYgZCA8PSBlbmQx KQ0KICAgICBkZW5kID0gZW5kX21hdGNoXzE7DQogfQ0KICAgICAgZWxzZQ0KIGJyZWFrOw0KICAg IH0NCg0KICBpZiAoYmVzdF9yZWdzX3NldCkNCiAgICBnb3RvIHJlc3RvcmVfYmVzdF9yZWdzOw0K DQogIGRvIHsgKCh2b2lkKTApOyBkbyB7IGlmIChyZWdzdGFydCkgeyAoKHZvaWQpMCk7IHJlZ3N0 YXJ0ID0gKCh2b2lkICopMCk7IH0gfSB3aGlsZSAoMCk7IGRvIHsgaWYgKHJlZ2VuZCkgeyAoKHZv aWQpMCk7IHJlZ2VuZCA9ICgodm9pZCAqKTApOyB9IH0gd2hpbGUgKDApOyBkbyB7IGlmIChiZXN0 X3JlZ3N0YXJ0KSB7ICgodm9pZCkwKTsgYmVzdF9yZWdzdGFydCA9ICgodm9pZCAqKTApOyB9IH0g d2hpbGUgKDApOyBkbyB7IGlmIChiZXN0X3JlZ2VuZCkgeyAoKHZvaWQpMCk7IGJlc3RfcmVnZW5k ID0gKCh2b2lkICopMCk7IH0gfSB3aGlsZSAoMCk7IH0gd2hpbGUgKDApOw0KDQogIHJldHVybiAt MTsNCn0NCg0KDQoNCg0KDQoNCnN0YXRpYyBpbnQNCmJjbXBfdHJhbnNsYXRlIChjb25zdCByZV9j aGFyICpzMSwgY29uc3QgcmVfY2hhciAqczIsIHJlZ2lzdGVyIHNzaXplX3QgbGVuLA0KICBjaGFy ICogdHJhbnNsYXRlLCBjb25zdCBpbnQgdGFyZ2V0X211bHRpYnl0ZSkNCnsNCiAgcmVnaXN0ZXIg cmVfY2hhciAqcDEgPSBzMSwgKnAyID0gczI7DQogIHJlX2NoYXIgKnAxX2VuZCA9IHMxICsgbGVu Ow0KICByZV9jaGFyICpwMl9lbmQgPSBzMiArIGxlbjsNCg0KDQoNCiAgd2hpbGUgKHAxIDwgcDFf ZW5kICYmIHAyIDwgcDJfZW5kKQ0KICAgIHsNCiAgICAgIGludCBwMV9jaGFybGVuLCBwMl9jaGFy bGVuOw0KICAgICAgcmVfd2NoYXJfdCBwMV9jaCwgcDJfY2g7DQoNCiAgICAgIChwMV9jaCA9ICpw MSwgcDFfY2hhcmxlbiA9IDEpOw0KICAgICAgKHAyX2NoID0gKnAyLCBwMl9jaGFybGVuID0gMSk7 DQoNCiAgICAgIGlmICgoKHVuc2lnbmVkIGNoYXIpKHRyYW5zbGF0ZSlbcDFfY2hdKQ0KICAgIT0g KCh1bnNpZ25lZCBjaGFyKSh0cmFuc2xhdGUpW3AyX2NoXSkpDQogcmV0dXJuIDE7DQoNCiAgICAg IHAxICs9IHAxX2NoYXJsZW4sIHAyICs9IHAyX2NoYXJsZW47DQogICAgfQ0KDQogIGlmIChwMSAh PSBwMV9lbmQgfHwgcDIgIT0gcDJfZW5kKQ0KICAgIHJldHVybiAxOw0KDQogIHJldHVybiAwOw0K fQ0KIyA2MzIzICIvaG9tZS9qYW1lcy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3Mt MjQuMy5nY2MuNC43LjIvbGliLXNyYy8uLi9zcmMvcmVnZXguYyINCmNvbnN0IGNoYXIgKg0KcmVf Y29tcGlsZV9wYXR0ZXJuIChjb25zdCBjaGFyICpwYXR0ZXJuLCBzaXplX3QgbGVuZ3RoLA0KICAg ICAgc3RydWN0IHJlX3BhdHRlcm5fYnVmZmVyICpidWZwKQ0Kew0KICByZWdfZXJyY29kZV90IHJl dDsNCg0KDQoNCiAgYnVmcC0+cmVnc19hbGxvY2F0ZWQgPSAwOw0KDQoNCg0KDQogIGJ1ZnAtPm5v X3N1YiA9IDA7DQoNCiAgcmV0ID0gcmVnZXhfY29tcGlsZSAoKHJlX2NoYXIqKSBwYXR0ZXJuLCBs ZW5ndGgsIHJlX3N5bnRheF9vcHRpb25zLCBidWZwKTsNCg0KICBpZiAoIXJldCkNCiAgICByZXR1 cm4gKCh2b2lkICopMCk7DQogIHJldHVybiAocmVfZXJyb3JfbXNnaWRbKGludCkgcmV0XSk7DQp9 DQoNCiMgNjQ1MCAiL2hvbWUvamFtZXMvcmFpZC9vcHQvZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNz LTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3JlZ2V4LmMiDQpyZWdfZXJyY29kZV90DQpy ZWdjb21wIChyZWdleF90ICpfX3Jlc3RyaWN0IHByZWcsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg cGF0dGVybiwNCiAgaW50IGNmbGFncykNCnsNCiAgcmVnX2VycmNvZGVfdCByZXQ7DQogIHJlZ19z eW50YXhfdCBzeW50YXgNCiAgICA9IChjZmxhZ3MgJiAxKSA/DQogICAgICAoKCgoKCh1bnNpZ25l ZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgfCAoKCgoKCgoKHVuc2lnbmVkIGxvbmcgaW50KSAx KSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSB8ICgoKCgoKCgoKHVuc2lnbmVk IGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSB8 ICgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIHwgKCgoKCgoKCgoKCgoKCgoKCgodW5zaWdu ZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKSB8 ICgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIHwgKCgoKCgodW5z aWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIHwgKCgoKCgoKCgoKCgo KCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgfCAoKCgoKCgoKCgoKCgoKCh1 bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgfCAoKCgoKCgoKCgoKCgo KCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAx KSB8ICgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkgfCAoKCgoKCgoKCgoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEp IDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpKSA6ICgoKCgoKHVuc2lnbmVkIGxv bmcgaW50KSAxKSA8PCAxKSA8PCAxKSB8ICgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIHwgKCgoKCgoKCgodW5zaWduZWQgbG9u ZyBpbnQpIDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIHwgKCgo KCgoKCgoKCh1bnNpZ25lZCBsb25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgfCAoKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBs b25nIGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkpIHwgKCgo dW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8IDEpKTsNCg0KDQogIHByZWctPmJ1ZmZlciA9IDA7DQog IHByZWctPmFsbG9jYXRlZCA9IDA7DQogIHByZWctPnVzZWQgPSAwOw0KDQoNCiAgcHJlZy0+ZmFz dG1hcCA9IHhtYWxsb2MgKDEgPDwgOCk7DQoNCiAgaWYgKGNmbGFncyAmICgxIDw8IDEpKQ0KICAg IHsNCiAgICAgIHVuc2lnbmVkIGk7DQoNCiAgICAgIHByZWctPnRyYW5zbGF0ZSA9IHhtYWxsb2Mg KDI1NiAqIHNpemVvZiAqcHJlZy0+dHJhbnNsYXRlKTsNCiAgICAgIGlmIChwcmVnLT50cmFuc2xh dGUgPT0gKCh2b2lkICopMCkpDQogcmV0dXJuIChpbnQpIFJFR19FU1BBQ0U7DQoNCg0KICAgICAg Zm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQ0KIHByZWctPnRyYW5zbGF0ZVtpXSA9ICgoKl9fY3R5 cGVfYl9sb2MgKCkpWyhpbnQpICgoaSkpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpIF9JU3VwcGVy KSA/ICgoaW50KSAoKl9fY3R5cGVfdG9sb3dlcl9sb2MgKCkpWyhpbnQpIChpKV0pIDogaTsNCiAg ICB9DQogIGVsc2UNCiAgICBwcmVnLT50cmFuc2xhdGUgPSAoKHZvaWQgKikwKTsNCg0KDQogIGlm IChjZmxhZ3MgJiAoKDEgPDwgMSkgPDwgMSkpDQogICAgew0KICAgICAgc3ludGF4ICY9IH4oKCgo KCgoKHVuc2lnbmVkIGxvbmcgaW50KSAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8PCAxKSA8 PCAxKTsNCiAgICAgIHN5bnRheCB8PSAoKCgoKCgoKCgodW5zaWduZWQgbG9uZyBpbnQpIDEpIDw8 IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpIDw8IDEpOw0KICAgIH0NCiAg ZWxzZQ0KICAgIHN5bnRheCB8PSAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCh1bnNpZ25lZCBsb25n IGludCkgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkg PDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwg MSkgPDwgMSkgPDwgMSkgPDwgMSkgPDwgMSk7DQoNCiAgcHJlZy0+bm9fc3ViID0gISEoY2ZsYWdz ICYgKCgoMSA8PCAxKSA8PCAxKSA8PCAxKSk7DQoNCg0KDQogIHJldCA9IHJlZ2V4X2NvbXBpbGUg KChyZV9jaGFyKikgcGF0dGVybiwgc3RybGVuIChwYXR0ZXJuKSwgc3ludGF4LCBwcmVnKTsNCg0K DQoNCiAgaWYgKHJldCA9PSBSRUdfRVJQQVJFTikNCiAgICByZXQgPSBSRUdfRVBBUkVOOw0KDQog IGlmIChyZXQgPT0gUkVHX05PRVJST1IgJiYgcHJlZy0+ZmFzdG1hcCkNCiAgICB7DQoNCiAgICAg IHJlX2NvbXBpbGVfZmFzdG1hcCAocHJlZyk7DQogICAgICBpZiAocHJlZy0+Y2FuX2JlX251bGwp DQogew0KICAgZnJlZSAocHJlZy0+ZmFzdG1hcCk7DQogICBwcmVnLT5mYXN0bWFwID0gKCh2b2lk ICopMCk7DQogfQ0KICAgIH0NCiAgcmV0dXJuIHJldDsNCn0NCg0KIyA2NTMxICIvaG9tZS9qYW1l cy9yYWlkL29wdC9lbWFjcy9yZWxlYXNlcy9zcmMvZW1hY3MtMjQuMy5nY2MuNC43LjIvbGliLXNy Yy8uLi9zcmMvcmVnZXguYyINCnJlZ19lcnJjb2RlX3QNCnJlZ2V4ZWMgKGNvbnN0IHJlZ2V4X3Qg Kl9fcmVzdHJpY3QgcHJlZywgY29uc3QgY2hhciAqX19yZXN0cmljdCBzdHJpbmcsDQogIHNpemVf dCBubWF0Y2gsIHJlZ21hdGNoX3QgcG1hdGNoW19fcmVzdHJpY3RdLCBpbnQgZWZsYWdzKQ0Kew0K ICByZWdvZmZfdCByZXQ7DQogIHN0cnVjdCByZV9yZWdpc3RlcnMgcmVnczsNCiAgcmVnZXhfdCBw cml2YXRlX3ByZWc7DQogIHNpemVfdCBsZW4gPSBzdHJsZW4gKHN0cmluZyk7DQogIGJvb2xlYW4g d2FudF9yZWdfaW5mbyA9ICFwcmVnLT5ub19zdWIgJiYgbm1hdGNoID4gMCAmJiBwbWF0Y2g7DQoN CiAgcHJpdmF0ZV9wcmVnID0gKnByZWc7DQoNCiAgcHJpdmF0ZV9wcmVnLm5vdF9ib2wgPSAhIShl ZmxhZ3MgJiAxKTsNCiAgcHJpdmF0ZV9wcmVnLm5vdF9lb2wgPSAhIShlZmxhZ3MgJiAoMSA8PCAx KSk7DQoNCg0KDQoNCiAgcHJpdmF0ZV9wcmVnLnJlZ3NfYWxsb2NhdGVkID0gMjsNCg0KICBpZiAo d2FudF9yZWdfaW5mbykNCiAgICB7DQogICAgICByZWdzLm51bV9yZWdzID0gbm1hdGNoOw0KICAg ICAgcmVncy5zdGFydCA9ICgocmVnb2ZmX3QgKikgeG1hbGxvYyAoKG5tYXRjaCAqIDIpICogc2l6 ZW9mIChyZWdvZmZfdCkpKTsNCiAgICAgIGlmIChyZWdzLnN0YXJ0ID09ICgodm9pZCAqKTApKQ0K IHJldHVybiBSRUdfTk9NQVRDSDsNCiAgICAgIHJlZ3MuZW5kID0gcmVncy5zdGFydCArIG5tYXRj aDsNCiAgICB9DQojIDY1NzAgIi9ob21lL2phbWVzL3JhaWQvb3B0L2VtYWNzL3JlbGVhc2VzL3Ny Yy9lbWFjcy0yNC4zLmdjYy40LjcuMi9saWItc3JjLy4uL3NyYy9yZWdleC5jIg0KICByZXQgPSBy ZV9zZWFyY2ggKCZwcml2YXRlX3ByZWcsIHN0cmluZywgbGVuLA0KICAgICAgICAgICAgICAgICAg MCwgbGVuLA0KICAgICB3YW50X3JlZ19pbmZvID8gJnJlZ3MgOiAoc3RydWN0IHJlX3JlZ2lzdGVy cyAqKSAwKTsNCg0KDQogIGlmICh3YW50X3JlZ19pbmZvKQ0KICAgIHsNCiAgICAgIGlmIChyZXQg Pj0gMCkNCiB7DQogICB1bnNpZ25lZCByOw0KDQogICBmb3IgKHIgPSAwOyByIDwgbm1hdGNoOyBy KyspDQogICAgIHsNCiAgICAgICBwbWF0Y2hbcl0ucm1fc28gPSByZWdzLnN0YXJ0W3JdOw0KICAg ICAgIHBtYXRjaFtyXS5ybV9lbyA9IHJlZ3MuZW5kW3JdOw0KICAgICB9DQogfQ0KDQoNCiAgICAg IGZyZWUgKHJlZ3Muc3RhcnQpOw0KICAgIH0NCg0KDQogIHJldHVybiByZXQgPj0gMCA/IFJFR19O T0VSUk9SIDogUkVHX05PTUFUQ0g7DQp9DQoNCiMgNjYwNCAiL2hvbWUvamFtZXMvcmFpZC9vcHQv ZW1hY3MvcmVsZWFzZXMvc3JjL2VtYWNzLTI0LjMuZ2NjLjQuNy4yL2xpYi1zcmMvLi4vc3JjL3Jl Z2V4LmMiDQpzaXplX3QNCnJlZ2Vycm9yIChpbnQgZXJyX2NvZGUsIGNvbnN0IHJlZ2V4X3QgKnBy ZWcsIGNoYXIgKmVycmJ1Ziwgc2l6ZV90IGVycmJ1Zl9zaXplKQ0Kew0KICBjb25zdCBjaGFyICpt c2c7DQogIHNpemVfdCBtc2dfc2l6ZTsNCg0KICBpZiAoZXJyX2NvZGUgPCAwDQogICAgICB8fCBl cnJfY29kZSA+PSAoc2l6ZW9mIChyZV9lcnJvcl9tc2dpZCkgLyBzaXplb2YgKHJlX2Vycm9yX21z Z2lkWzBdKSkpDQoNCg0KDQoNCiAgICBhYm9ydCAoKTsNCg0KICBtc2cgPSAocmVfZXJyb3JfbXNn aWRbZXJyX2NvZGVdKTsNCg0KICBtc2dfc2l6ZSA9IHN0cmxlbiAobXNnKSArIDE7DQoNCiAgaWYg KGVycmJ1Zl9zaXplICE9IDApDQogICAgew0KICAgICAgaWYgKG1zZ19zaXplID4gZXJyYnVmX3Np emUpDQogew0KICAgKChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGVycmJ1ZiwgMCkgIT0gKHNpemVf dCkgLTEpID8gX19idWlsdGluX19fbWVtY3B5X2NoayAoZXJyYnVmLCBtc2csIGVycmJ1Zl9zaXpl IC0gMSwgX19idWlsdGluX29iamVjdF9zaXplIChlcnJidWYsIDApKSA6IF9fbWVtY3B5X2ljaGsg KGVycmJ1ZiwgbXNnLCBlcnJidWZfc2l6ZSAtIDEpKTsNCiAgIGVycmJ1ZltlcnJidWZfc2l6ZSAt IDFdID0gMDsNCiB9DQogICAgICBlbHNlDQogKChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGVycmJ1 ZiwgMiA+IDEpICE9IChzaXplX3QpIC0xKSA/IF9fYnVpbHRpbl9fX3N0cmNweV9jaGsgKGVycmJ1 ZiwgbXNnLCBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKGVycmJ1ZiwgMiA+IDEpKSA6IF9fc3RyY3B5 X2ljaGsgKGVycmJ1ZiwgbXNnKSk7DQogICAgfQ0KDQogIHJldHVybiBtc2dfc2l6ZTsNCn0NCg0K DQoNCg0KDQp2b2lkDQpyZWdmcmVlIChyZWdleF90ICpwcmVnKQ0Kew0KICBmcmVlIChwcmVnLT5i dWZmZXIpOw0KICBwcmVnLT5idWZmZXIgPSAoKHZvaWQgKikwKTsNCg0KICBwcmVnLT5hbGxvY2F0 ZWQgPSAwOw0KICBwcmVnLT51c2VkID0gMDsNCg0KICBmcmVlIChwcmVnLT5mYXN0bWFwKTsNCiAg cHJlZy0+ZmFzdG1hcCA9ICgodm9pZCAqKTApOw0KICBwcmVnLT5mYXN0bWFwX2FjY3VyYXRlID0g MDsNCg0KICBmcmVlIChwcmVnLT50cmFuc2xhdGUpOw0KICBwcmVnLT50cmFuc2xhdGUgPSAoKHZv aWQgKikwKTsNCn0NCg0K --047d7b604368d9a68b04d7d5b77a--