public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: c/2404: arm-linux-gcc ice
@ 2001-06-22  5:12 jsm28
  0 siblings, 0 replies; 6+ messages in thread
From: jsm28 @ 2001-06-22  5:12 UTC (permalink / raw)
  To: bkohlen, gcc-bugs, gcc-prs, jsm28, nobody

Synopsis: arm-linux-gcc ice

State-Changed-From-To: open->feedback
State-Changed-By: jsm28
State-Changed-When: Fri Jun 22 05:12:03 2001
State-Changed-Why:
    Does this problem still occur with GCC 3.0?

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=2404&database=gcc


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: c/2404: arm-linux-gcc ice
@ 2001-08-12 10:02 rodrigc
  0 siblings, 0 replies; 6+ messages in thread
From: rodrigc @ 2001-08-12 10:02 UTC (permalink / raw)
  To: rodrigc, bkohlen, gcc-bugs, gcc-prs, jsm28, nobody

Synopsis: arm-linux-gcc ice

State-Changed-From-To: feedback->closed
State-Changed-By: rodrigc
State-Changed-When: Sun Aug 12 10:02:26 2001
State-Changed-Why:
    Patch supplied by Philip Blundell solves the problem.
    Please try a snapshot of gcc 3.1 for Linux ARM at
    http://www.netwinder.org/build/gcc.html
    
    and enter a new GNATS bug report if you find a problem.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=2404&database=gcc


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: c/2404: arm-linux-gcc ice
@ 2001-03-27 14:26 Philip Blundell
  0 siblings, 0 replies; 6+ messages in thread
From: Philip Blundell @ 2001-03-27 14:26 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/2404; it has been noted by GNATS.

From: Philip Blundell <philb@gnu.org>
To: bkohlen@intrinsyc.com
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c/2404: arm-linux-gcc ice 
Date: Tue, 27 Mar 2001 23:22:17 +0100

 >works like a charm... would you say it is 1)likely or 2)unlikely that this patch
 >will break something else?  I'm just not looking forward to 6 hours of testing
 
 Fairly unlikely, I'd guess.  The Debian compiler has had that patch in for a 
 year or so and nobody has reported any ill effects that seem to be due to it.
 
 p.
 
 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: c/2404: arm-linux-gcc ice
@ 2001-03-27 14:16 bkohlen
  0 siblings, 0 replies; 6+ messages in thread
From: bkohlen @ 2001-03-27 14:16 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/2404; it has been noted by GNATS.

From: bkohlen@intrinsyc.com
To: Philip Blundell <philb@gnu.org>
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c/2404: arm-linux-gcc ice
Date: Tue, 27 Mar 2001 14:18:07 -0800

 Philip Blundell wrote:
 
 > >shadow.c: In function `shadowImageGlyphBlt':
 > >shadow.c:1173: Internal compiler error in `purge_addressof_1', at function.c:3
 > >183
 > >Please submit a full bug report.
 > >See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
 >
 > Does this patch help at all?
 
 works like a charm... would you say it is 1)likely or 2)unlikely that this patch
 will break something else?  I'm just not looking forward to 6 hours of testing all
 my packages with the new compiler...
 
 >
 >
 > p.
 
 <snip>patch</snip>
 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: c/2404: arm-linux-gcc ice
@ 2001-03-27 13:26 Philip Blundell
  0 siblings, 0 replies; 6+ messages in thread
From: Philip Blundell @ 2001-03-27 13:26 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR c/2404; it has been noted by GNATS.

From: Philip Blundell <philb@gnu.org>
To: bkohlen@intrinsyc.com
Cc: gcc-gnats@gcc.gnu.org
Subject: Re: c/2404: arm-linux-gcc ice 
Date: Tue, 27 Mar 2001 22:24:04 +0100

 >shadow.c: In function `shadowImageGlyphBlt':
 >shadow.c:1173: Internal compiler error in `purge_addressof_1', at function.c:3
 >183
 >Please submit a full bug report.
 >See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
 
 Does this patch help at all?
 
 p.
 
 --- gcc/function.c	1999/05/20 22:26:35	1.90.4.1
 +++ gcc/function.c	1999/07/16 09:30:04
 @@ -3042,6 +3042,105 @@
     extracted by usage MEM with narrower mode. */
  static rtx purge_addressof_replacements;
  
 +/* Return 1 if X and Y are identical-looking rtx's.
 +   This is the Lisp function EQUAL for rtx arguments.  */
 +
 +int
 +rtx_equal_for_addressof_p (x, y)
 +     rtx x, y;
 +{
 +  register int i;
 +  register int j;
 +  register enum rtx_code code;
 +  register char *fmt;
 +
 +  if (x == y)
 +    return 1;
 +  if (x == 0 || y == 0)
 +    return 0;
 +
 +  code = GET_CODE (x);
 +  /* Rtx's of different codes cannot be equal.  */
 +  if (code != GET_CODE (y))
 +    return 0;
 +
 +  /* (MULT:SI x y) and (MULT:HI x y) are NOT equivalent.
 +     (REG:SI x) and (REG:HI x) are NOT equivalent. 
 +     But (MEM:SI x) and (MEM:HI x) are equivalent for our purposes.  */
 +
 +  if (code != MEM && (GET_MODE (x) != GET_MODE (y)))
 +    return 0;
 +
 +  /* REG, LABEL_REF, and SYMBOL_REF can be compared nonrecursively.  */
 +
 +  if (code == REG)
 +    return REGNO (x) == REGNO (y);
 +  else if (code == LABEL_REF)
 +    return XEXP (x, 0) == XEXP (y, 0);
 +  else if (code == SYMBOL_REF)
 +    return XSTR (x, 0) == XSTR (y, 0);
 +  else if (code == SCRATCH || code == CONST_DOUBLE)
 +    return 0;
 +
 +  /* Compare the elements.  If any pair of corresponding elements
 +     fail to match, return 0 for the whole things.  */
 +
 +  fmt = GET_RTX_FORMAT (code);
 +  for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
 +    {
 +      switch (fmt[i])
 +	{
 +	case 'w':
 +	  if (XWINT (x, i) != XWINT (y, i))
 +	    return 0;
 +	  break;
 +
 +	case 'n':
 +	case 'i':
 +	  if (XINT (x, i) != XINT (y, i))
 +	    return 0;
 +	  break;
 +
 +	case 'V':
 +	case 'E':
 +	  /* Two vectors must have the same length.  */
 +	  if (XVECLEN (x, i) != XVECLEN (y, i))
 +	    return 0;
 +
 +	  /* And the corresponding elements must match.  */
 +	  for (j = 0; j < XVECLEN (x, i); j++)
 +	    if (rtx_equal_p (XVECEXP (x, i, j), XVECEXP (y, i, j)) == 0)
 +	      return 0;
 +	  break;
 +
 +	case 'e':
 +	  if (rtx_equal_p (XEXP (x, i), XEXP (y, i)) == 0)
 +	    return 0;
 +	  break;
 +
 +	case 'S':
 +	case 's':
 +	  if (strcmp (XSTR (x, i), XSTR (y, i)))
 +	    return 0;
 +	  break;
 +
 +	case 'u':
 +	  /* These are just backpointers, so they don't matter.  */
 +	  break;
 +
 +	case '0':
 +	  break;
 +
 +	  /* It is believed that rtx's at this level will never
 +	     contain anything but integers and other rtx's,
 +	     except for within LABEL_REFs and SYMBOL_REFs.  */
 +	default:
 +	  abort ();
 +	}
 +    }
 +  return 1;
 +}
 +
  /* Helper function for purge_addressof.  See if the rtx expression at *LOC
     in INSN needs to be changed.  If FORCE, always put any ADDRESSOFs into
     the stack.  */
 @@ -3122,7 +3221,7 @@
  	      for (tem = purge_bitfield_addressof_replacements;
  		   tem != NULL_RTX;
  		   tem = XEXP (XEXP (tem, 1), 1))
 -		if (rtx_equal_p (x, XEXP (tem, 0)))
 +		if (rtx_equal_for_addressof_p (x, XEXP (tem, 0)))
  		  {
  		    *loc = XEXP (XEXP (tem, 1), 0);
  		    return;
 @@ -3132,7 +3231,7 @@
  	      for (tem = purge_addressof_replacements;
  		   tem != NULL_RTX;
  		   tem = XEXP (XEXP (tem, 1), 1))
 -		if (rtx_equal_p (XEXP (x, 0), XEXP (tem, 0)))
 +		if (rtx_equal_for_addressof_p (XEXP (x, 0), XEXP (tem, 0)))
  		  {
  		    rtx z = XEXP (XEXP (tem, 1), 0);
  
 
 


^ permalink raw reply	[flat|nested] 6+ messages in thread

* c/2404: arm-linux-gcc ice
@ 2001-03-27 12:46 bkohlen
  0 siblings, 0 replies; 6+ messages in thread
From: bkohlen @ 2001-03-27 12:46 UTC (permalink / raw)
  To: gcc-gnats

>Number:         2404
>Category:       c
>Synopsis:       arm-linux-gcc ice
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Mar 27 12:46:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     bkohlen@intrinsyc.com
>Release:        gcc version 2.95.3 20010315 (release)
>Organization:
>Environment:
gcc cross compiler for arm with fairly standard configure
flags. used in combination with glibc-2.1.3 and binutils-2.10.
I was compiling xfree86 for arm when error occured.
>Description:
When installing xfree86 (on my pc, so that I can package it
for arm) it compiles shadow.c and I get the following error:

shadow.c: In function `shadowImageGlyphBlt':
shadow.c:1173: Internal compiler error in `purge_addressof_1', at function.c:3183
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.

I had this exact same problem with gcc-2.95.2, so i tried .3
and it was duplicated perfectly.  I haven't included the
sources you will need to duplicate the error yourself because
it's a 60M tarball (gzipped).  I read the bug reporting
howto though, and I think i've included everything else
that was asked for.  If you need the full sources (i've already
included shadow.c) just email me for them.
>How-To-Repeat:
First you'll need the 60M tarball... then you can just run
the bugcommand script i've provided...
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="shadow.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="shadow.i"

IyAxICJzaGFkb3cuYyIKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uLy4uLy4uLy4u
L2V4cG9ydHMvaW5jbHVkZS9YMTEvWC5oIiAxCiAKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCiAKCgoKCgoKCnR5cGVkZWYgdW5zaWdu
ZWQgbG9uZyBYSUQ7CgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBNYXNrOwoKCgp0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgQXRvbTsJCSAKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBWaXN1YWxJRDsKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIFRpbWU7CiMgOTUgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVk
ZS9YMTEvWC5oIgoKCnR5cGVkZWYgWElEIFdpbmRvdzsKdHlwZWRlZiBYSUQgRHJhd2FibGU7CgoK
dHlwZWRlZiBYSUQgRm9udDsKCnR5cGVkZWYgWElEIFBpeG1hcDsKdHlwZWRlZiBYSUQgQ3Vyc29y
Owp0eXBlZGVmIFhJRCBDb2xvcm1hcDsKdHlwZWRlZiBYSUQgR0NvbnRleHQ7CnR5cGVkZWYgWElE
IEtleVN5bTsKCnR5cGVkZWYgdW5zaWduZWQgY2hhciBLZXlDb2RlOwoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKCQkgICAgICAgCiAKCgoK
CgoKCgoKCiAKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKCgoKIAoK
CgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDM2NSAiLi4vLi4vLi4vLi4vZXhwb3J0
cy9pbmNsdWRlL1gxMS9YLmgiCgoKCgoKCgoKCgoKIAoKCgogCiAKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgogCgoKCgoKIAoKCgoK
IAoKCgoKCiAKCgoKCgoKCiAKCgoKCiAKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCiAKCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoKCgoKIAoKCgoKIAoKCgoKCgogCgoKCgogCgoK
CgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKIAoKCgog
CgoKCgoKIAoKCgogCgoKCgoKIAoKCgoKCiAKCgoKIAoKCgoKCiAKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKIAoKCgoKIAoKCgoKIAoKCgoK
CgoKCgoKCiAKCgoKCgojIDI2ICJzaGFkb3cuYyIgMgoKIyAxICIuLi8uLi9pbmNsdWRlL3Njcm5p
bnRzdHIuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgojIDEgIi4uLy4uL2luY2x1ZGUvc2NyZWVuaW50LmgiIDEKIAogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDEgIi4uLy4uL2luY2x1ZGUvbWlzYy5o
IiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgogCgoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBnbG9iYWxTZXJpYWxO
dW1iZXI7CmV4dGVybiB1bnNpZ25lZCBsb25nIHNlcnZlckdlbmVyYXRpb247CgojIDEgIi4uLy4u
Ly4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWG9zZGVmcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAg
CgoKCgoKCgojIDg5ICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvWDExL1hvc2RlZnMuaCIK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNzYgIi4uLy4uL2luY2x1ZGUv
bWlzYy5oIiAyCgojIDEgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGZ1bmNwcm90
by5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyA3NyAiLi4vLi4vaW5jbHVkZS9t
aXNjLmgiIDIKCiMgMSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YbWQuaCIgMQog
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgogCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIyAxMTkg
Ii4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWG1kLmgiCgoKCgoKCgp0eXBlZGVmIGxv
bmcgSU5UMzI7Cgp0eXBlZGVmIHNob3J0IElOVDE2OwoKCgp0eXBlZGVmIHNpZ25lZCBjaGFyICAg
IElOVDg7CgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIENBUkQzMjsKCnR5cGVkZWYgdW5z
aWduZWQgc2hvcnQgQ0FSRDE2Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgIENBUkQ4OwoKdHlwZWRl
ZiBDQVJEMzIJCUJJVFMzMjsKdHlwZWRlZiBDQVJEMTYJCUJJVFMxNjsKCgoKdHlwZWRlZiBDQVJE
OAkJQllURTsKdHlwZWRlZiBDQVJEOCAgICAgICAgICAgQk9PTDsKCgoKCgoKCgoKCgoKCgoKCgog
CgoKIyAxODMgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWG1kLmgiCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCiAgCgoKCgojIDc4ICIuLi8uLi9pbmNsdWRlL21pc2MuaCIgMgoKCiMg
MSAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNsdWRlL1gxMS9YZGVmcy5oIiAxCiAKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgaW50IEJvb2w7
CgoKCgoKdHlwZWRlZiB2b2lkICpwb2ludGVyOwoKCgp0eXBlZGVmIHN0cnVjdCBfQ2xpZW50ICpD
bGllbnRQdHI7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0ZvbnQgKkZv
bnRQdHI7ICAKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEZTSUQ7CgoKCgoKdHlwZWRl
ZiBGU0lEIEFjY0NvbnRleHQ7CgogCgp0eXBlZGVmIHN0cnVjdCB0aW1ldmFsICoqT1NUaW1lUHRy
OwoKCnR5cGVkZWYgdm9pZCAoKiBCbG9ja0hhbmRsZXJQcm9jUHRyKShwb2ludGVyICAsCgkJCQkg
ICAgIE9TVGltZVB0ciAgLAoJCQkJICAgICBwb2ludGVyICApOwoKCiMgODAgIi4uLy4uL2luY2x1
ZGUvbWlzYy5oIiAyCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoKCgoKCiAKCiAKCgoKCiAKCgogCgoKCgoK
IAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgogCgoKCgogCgogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXpl
X3Q7CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgd2NoYXJf
dDsKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgIHdpbnRfdDsK
CgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIyA4NSAiLi4vLi4vaW5j
bHVkZS9taXNjLmgiIDIKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBQSVhF
TDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIEFUT007CgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0Nh
bGxiYWNrTGlzdCAqQ2FsbGJhY2tMaXN0UHRyOyAgCgoKCnR5cGVkZWYgc3RydWN0IF94UmVxICp4
UmVxUHRyOwoKIyAxICIuLi8uLi9pbmNsdWRlL29zLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyAxICIuLi8uLi9pbmNsdWRlL21pc2MuaCIg
MQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCiMgMjkzICIuLi8uLi9pbmNsdWRlL21pc2MuaCIKCiMgNDkgIi4uLy4uL2lu
Y2x1ZGUvb3MuaCIgMgoKCgojIDEgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGFs
bG9jYS5oIiAxCiAKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKIyA4MyAiLi4vLi4vLi4vLi4vZXhwb3J0cy9pbmNs
dWRlL1gxMS9YYWxsb2NhLmgiCgoKCgoKCgoKCiMgMTIwICIuLi8uLi8uLi8uLi9leHBvcnRzL2lu
Y2x1ZGUvWDExL1hhbGxvY2EuaCIKCgoKCiMgMTMyICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1
ZGUvWDExL1hhbGxvY2EuaCIKCgoKIyA1MiAiLi4vLi4vaW5jbHVkZS9vcy5oIiAyCgoKIyAxICIv
dXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsKCgoKIAoKCgogCgoK
CgoKCgoKCgoKCgoKCgoKdm9pZCB2YV9lbmQgKF9fZ251Y192YV9saXN0KTsJCSAKCgogCgoKCiAK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAoKCgoKCgoKCgoKCgoKIyAx
NzUgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAz
CgoKIAoKCgoKIAoKIAoKIAoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDU0ICIuLi8uLi9pbmNsdWRlL29zLmgiIDIKCgoKCgoKCgoKCgoK
CgoKCgoKCnR5cGVkZWYgcG9pbnRlcglGSUQ7CnR5cGVkZWYgc3RydWN0IF9Gb250UGF0aFJlYyAq
Rm9udFBhdGhQdHI7CnR5cGVkZWYgc3RydWN0IF9OZXdDbGllbnRSZWMgKk5ld0NsaWVudFB0cjsK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0cmluZy5oIiAxIDMKIAoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4v
Li4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCgoKIAoKCgoKCgoKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCgoKCgoKIAoKIyAxNjYgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9mZWF0
dXJlcy5oIiAzCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCiAKCgoKCgoKCgogCgoKCgogCgojIDEgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zeXMv
Y2RlZnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKIAoKCgoKCgoK
CiAKCgoKCiMgNzEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8u
Li9hcm0tbGludXgvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCiAKCgoKCgoKCiAKCgoKIyAxMDMg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9zeXMvY2RlZnMuaCIgMwoKCgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoKCgoKIyAyNTAgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9mZWF0dXJl
cy5oIiAyIDMKCgogCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgoKCgoKCgojIDEgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9nbnUv
c3R1YnMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMjc4ICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvZmVh
dHVyZXMuaCIgMiAzCgoKCgojIDI2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv
Li4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiAKCiAKCgojIDEg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMK
CgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91c3IvbGliL2djYy1saWIvYXJt
LWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoK
CiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAzMTcgIi91c3IvbGliL2djYy1saWIvYXJtLWxp
bnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgojIDMzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJt
LWxpbnV4L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgogCmV4dGVybiB2b2lkICogIG1lbWNweSAg
KHZvaWQgKiAgX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0
cmljdCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwogCgpleHRlcm4gdm9pZCAqICBtZW1tb3ZlICAo
dm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qgdm9pZCAqICBfX3NyYywKCQkJICAgICBzaXplX3QgX19u
KSAgICA7CgogCgoKCmV4dGVybiB2b2lkICogIG1lbWNjcHkgICh2b2lkICogIF9fZGVzdCwgX19j
b25zdCB2b2lkICogIF9fc3JjLAoJCQkgICAgIGludCBfX2MsIHNpemVfdCBfX24pICAgIDsKCgoK
IApleHRlcm4gdm9pZCAqICBtZW1zZXQgICh2b2lkICogIF9fcywgaW50IF9fYywgc2l6ZV90IF9f
bikgICAgOwoKIApleHRlcm4gaW50IG1lbWNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3MxLCBfX2Nv
bnN0IHZvaWQgKiAgX19zMiwKCQkJc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gdm9pZCAqICBt
ZW1jaHIgIChfX2NvbnN0IHZvaWQgKiAgX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSAgICA7CgoK
IAoKZXh0ZXJuIHZvaWQgKiAgcmF3bWVtY2hyICAoX19jb25zdCB2b2lkICogIF9fcywgaW50IF9f
YykgICAgOwoKCgogCmV4dGVybiBjaGFyICpzdHJjcHkgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVz
dCwKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpICAgIDsKIApleHRlcm4gY2hh
ciAqc3RybmNweSAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICAgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0cmNh
dCAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYykgICAgOwogCmV4dGVybiBjaGFyICpzdHJuY2F0ICAoY2hhciAqX19yZXN0cmljdCBf
X2Rlc3QsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikg
ICAgOwoKIApleHRlcm4gaW50IHN0cmNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyKSAgICA7CiAKZXh0ZXJuIGludCBzdHJuY21wICAoX19jb25zdCBjaGFyICpfX3Mx
LCBfX2NvbnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pICAgIDsKCiAKZXh0ZXJuIGludCBzdHJj
b2xsICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKIApleHRl
cm4gc2l6ZV90IHN0cnhmcm0gIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwoKCiAKCgojIDEgIi91
c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5j
bHVkZS94bG9jYWxlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCnR5cGVkZWYg
c3RydWN0IF9fbG9jYWxlX3N0cnVjdAp7CiAgc3RydWN0IGxvY2FsZV9kYXRhICpfX2xvY2FsZXNb
Nl07CSAKCiAgIAogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGludCAqX19jdHlwZV9iOwogIGNvbnN0
IGludCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGludCAqX19jdHlwZV90b3VwcGVyOwp9ICpf
X2xvY2FsZV90OwoKCiMgOTkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8u
Li8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgoKIApleHRlcm4gaW50IF9f
c3RyY29sbF9sICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCSAg
ICAgX19sb2NhbGVfdCBfX2wpICAgIDsKIApleHRlcm4gc2l6ZV90IF9fc3RyeGZybV9sICAoY2hh
ciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAoJCQkJX19sb2NhbGVf
dCBfX2wpICAgIDsKCgoKIApleHRlcm4gY2hhciAqX19zdHJkdXAgIChfX2NvbnN0IGNoYXIgKl9f
cykgICAgOwpleHRlcm4gY2hhciAqc3RyZHVwICAoX19jb25zdCBjaGFyICpfX3MpICAgIDsKCgog
CgoKCmV4dGVybiBjaGFyICpzdHJuZHVwICAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6ZV90
IF9fbikgICAgOwoKCgogCgoKCgoKCgoKCiAKCiMgMTQzICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3RyaW5nLmgiIDMKCgog
CmV4dGVybiBjaGFyICpzdHJjaHIgIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgICAgOwog
CmV4dGVybiBjaGFyICpzdHJyY2hyICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsK
CgogCgpleHRlcm4gY2hhciAqc3RyY2hybnVsICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2Mp
ICAgIDsKCgogCgpleHRlcm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19j
b25zdCBjaGFyICpfX3JlamVjdCkgICAgOwogCgpleHRlcm4gc2l6ZV90IHN0cnNwbiAgKF9fY29u
c3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9fYWNjZXB0KSAgICA7CiAKZXh0ZXJuIGNoYXIg
KnN0cnBicmsgIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkgICAg
OwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssIF9fY29u
c3QgY2hhciAqX19uZWVkbGUpICAgIDsKCgogCmV4dGVybiBjaGFyICpfX3N0cmNhc2VzdHIgIChf
X2NvbnN0IGNoYXIgKl9faGF5c3RhY2ssCgkJCQlfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKSAgICA7
CmV4dGVybiBjaGFyICpzdHJjYXNlc3RyICAoX19jb25zdCBjaGFyICpfX2hheXN0YWNrLAoJCQkg
ICAgICBfX2NvbnN0IGNoYXIgKl9fbmVlZGxlKSAgICA7CgoKIApleHRlcm4gY2hhciAqc3RydG9r
ICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
ZGVsaW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cnRva19yICAoY2hhciAqX19yZXN0cmlj
dCBfX3MsCgkJCSAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkgICAg
ICBjaGFyICoqX19yZXN0cmljdCBfX3NhdmVfcHRyKSAgICA7CgpleHRlcm4gY2hhciAqc3RydG9r
X3IgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2RlbGltLAoJCQkgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgICAgOwoKCgog
CgoKZXh0ZXJuIHZvaWQgKiAgbWVtbWVtICAoX19jb25zdCB2b2lkICogIF9faGF5c3RhY2ssIHNp
emVfdCBfX2hheXN0YWNrbGVuLAoJCQkgICAgX19jb25zdCB2b2lkICogIF9fbmVlZGxlLCBzaXpl
X3QgX19uZWVkbGVsZW4pICAgIDsKCiAKCmV4dGVybiB2b2lkICogIF9fbWVtcGNweSAgKHZvaWQg
KiAgX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwpleHRlcm4gdm9pZCAqICBtZW1wY3B5ICAodm9pZCAq
ICBfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgICBfX2NvbnN0IHZvaWQgKiAgX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgICAgOwoKCgogCmV4dGVybiBzaXplX3Qgc3RybGVuICAoX19jb25z
dCBjaGFyICpfX3MpICAgIDsKCgogCgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gIChfX2NvbnN0IGNo
YXIgKl9fc3RyaW5nLCBzaXplX3QgX19tYXhsZW4pICAgIDsKCgoKIApleHRlcm4gY2hhciAqc3Ry
ZXJyb3IgIChpbnQgX19lcnJudW0pICAgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3Ig
IChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICAgIDsKZXh0ZXJu
IGNoYXIgKnN0cmVycm9yX3IgIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19i
dWZsZW4pICAgIDsKCgogCgpleHRlcm4gdm9pZCBfX2J6ZXJvICAodm9pZCAqICBfX3MsIHNpemVf
dCBfX24pICAgIDsKCgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25zdCB2b2lkICogIF9fc3Jj
LCB2b2lkICogIF9fZGVzdCwgc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gdm9pZCBiemVybyAg
KHZvaWQgKiAgX19zLCBzaXplX3QgX19uKSAgICA7CgogCmV4dGVybiBpbnQgYmNtcCAgKF9fY29u
c3Qgdm9pZCAqICBfX3MxLCBfX2NvbnN0IHZvaWQgKiAgX19zMiwgc2l6ZV90IF9fbikgICAgOwoK
IApleHRlcm4gY2hhciAqaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgICAgOwoK
IApleHRlcm4gY2hhciAqcmluZGV4ICAoX19jb25zdCBjaGFyICpfX3MsIGludCBfX2MpICAgIDsK
CiAKCmV4dGVybiBpbnQgX19mZnMgIChpbnQgX19pKSAgICAgX19hdHRyaWJ1dGVfXyAoKGNvbnN0
KSk7CmV4dGVybiBpbnQgZmZzICAoaW50IF9faSkgICAgIF9fYXR0cmlidXRlX18gKChjb25zdCkp
OwoKIAoKCmV4dGVybiBpbnQgZmZzbCAgKGxvbmcgaW50IF9fbCkgICAgIF9fYXR0cmlidXRlX18g
KChjb25zdCkpOwoKX19leHRlbnNpb25fXyBleHRlcm4gaW50IGZmc2xsICAobG9uZyBsb25nIGlu
dCBfX2xsKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKIApleHRlcm4gaW50
IF9fc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKSAg
ICA7CmV4dGVybiBpbnQgc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBj
aGFyICpfX3MyKSAgICA7CgogCmV4dGVybiBpbnQgc3RybmNhc2VjbXAgIChfX2NvbnN0IGNoYXIg
Kl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKCQkJICAgICBzaXplX3QgX19uKSAgICA7CgoKCiAK
CmV4dGVybiBpbnQgX19zdHJjYXNlY21wX2wgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3Qg
Y2hhciAqX19zMiwKCQkJCV9fbG9jYWxlX3QgX19sb2MpICAgIDsKCmV4dGVybiBpbnQgX19zdHJu
Y2FzZWNtcF9sICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCgkJCQkg
c2l6ZV90IF9fbiwgX19sb2NhbGVfdCBfX2xvYykgICAgOwoKCgogCgpleHRlcm4gY2hhciAqc3Ry
c2VwICAoY2hhciAqKl9fcmVzdHJpY3QgX19zdHJpbmdwLAoJCQkgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2RlbGltKSAgICA7CgoKCiAKZXh0ZXJuIGludCBzdHJ2ZXJzY21wICAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIpICAgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0
cnNpZ25hbCAgKGludCBfX3NpZykgICAgOwoKIApleHRlcm4gY2hhciAqX19zdHBjcHkgIChjaGFy
ICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ny
YykgICAgOwpleHRlcm4gY2hhciAqc3RwY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJ
CSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKSAgICA7CgogCgpleHRlcm4gY2hhciAq
X19zdHBuY3B5ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgICAgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgICA7CmV4dGVybiBjaGFyICpzdHBuY3B5
ICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJCSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX3NyYywgc2l6ZV90IF9fbikgICAgOwoKIApleHRlcm4gY2hhciAqc3RyZnJ5ICAoY2hhciAq
X19zdHJpbmcpICAgIDsKCiAKZXh0ZXJuIHZvaWQgKiAgbWVtZnJvYiAgKHZvaWQgKiAgX19zLCBz
aXplX3QgX19uKSAgICA7CgoKIAoKCgpleHRlcm4gY2hhciAqYmFzZW5hbWUgIChfX2NvbnN0IGNo
YXIgKl9fZmlsZW5hbWUpICAgIDsKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCiAKIyAxICIvdXNy
L2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1
ZGUvYml0cy9zdHJpbmcuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMg
MzQzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxp
bnV4L2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCiAKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDc0ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxp
bnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCiAKCgoKCnR5cGVkZWYgc3RydWN0IHsgdW5z
aWduZWQgY2hhciBfX2FyclsgMiBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjIgIF9fYXR0cmlidXRl
X18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgMyBd
OyB9CV9fU1RSSU5HMl9DT1BZX0FSUjMgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVk
ZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgNCBdOyB9CV9fU1RSSU5HMl9DT1BZX0FS
UjQgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQg
Y2hhciBfX2FyclsgNSBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjUgIF9fYXR0cmlidXRlX18gKChw
YWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgNiBdOyB9CV9f
U1RSSU5HMl9DT1BZX0FSUjYgIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3Ry
dWN0IHsgdW5zaWduZWQgY2hhciBfX2FyclsgNyBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjcgIF9f
YXR0cmlidXRlX18gKChwYWNrZWQpKSA7CnR5cGVkZWYgc3RydWN0IHsgdW5zaWduZWQgY2hhciBf
X2FyclsgOCBdOyB9CV9fU1RSSU5HMl9DT1BZX0FSUjggIF9fYXR0cmlidXRlX18gKChwYWNrZWQp
KSA7CgoKCiAKCgoKCgogCgojIDE4MCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgog
CgoKCgoKCgoKCiAKCgojIDM2NiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u
Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgogCgpleHRl
cm4gdm9pZCAqICBfX3Jhd21lbWNociAoY29uc3Qgdm9pZCAqICBfX3MsIGludCBfX2MpOwoKCgoK
CgoKIAojIDUzMiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u
L2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCiAKCiMgNjk2ICIvdXNyL2xp
Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUv
Yml0cy9zdHJpbmcyLmgiIDMKCgoKCiAKCiMgNzEyICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51
eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMK
CgoKCgoKCgoKCgogCgojIDczMyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u
Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKCgoKCgoK
IAoKCiMgNzY2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4v
YXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgojIDc5MyAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCgoKIyA4MTUgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8u
Li8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKCiMgODQwICIv
dXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2lu
Y2x1ZGUvYml0cy9zdHJpbmcyLmgiIDMKCgoKIAoKCgoKCgoKCgoKCiAKCgoKIyA4NzIgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJjc3BuX2Mx
IChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdCk7CmV4dGVybiBfX2lubGluZSAgc2l6
ZV90Cl9fc3RyY3Nwbl9jMSAoX19jb25zdCBjaGFyICpfX3MsIGNoYXIgX19yZWplY3QpCnsKICBy
ZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdc
MCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3JlamVjdCkKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJu
IF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cmNzcG5fYzIgKF9fY29u
c3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKCQkJCSAgICAgY2hhciBfX3JlamVjdDIpOwpl
eHRlcm4gX19pbmxpbmUgIHNpemVfdApfX3N0cmNzcG5fYzIgKF9fY29uc3QgY2hhciAqX19zLCBj
aGFyIF9fcmVqZWN0MSwgY2hhciBfX3JlamVjdDIpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1
bHQgPSAwOwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAh
PSBfX3JlamVjdDEKCSAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MikKICAgICsrX19yZXN1
bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgpleHRlcm4gX19pbmxpbmUgIHNpemVfdCBfX3N0cmNz
cG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fcmVqZWN0MSwKCQkJCSAgICAgY2hhciBf
X3JlamVjdDIsIGNoYXIgX19yZWplY3QzKTsKZXh0ZXJuIF9faW5saW5lICBzaXplX3QKX19zdHJj
c3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3Qy
LAoJICAgICAgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBzaXplX3QgX19yZXN1bHQgPSAw
OwogIHdoaWxlIChfX3NbX19yZXN1bHRdICE9ICdcMCcgJiYgX19zW19fcmVzdWx0XSAhPSBfX3Jl
amVjdDEKCSAmJiBfX3NbX19yZXN1bHRdICE9IF9fcmVqZWN0MiAmJiBfX3NbX19yZXN1bHRdICE9
IF9fcmVqZWN0MykKICAgICsrX19yZXN1bHQ7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoKCiAKCgoK
IyA5MjcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0t
bGludXgvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBzaXplX3Qg
X19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0KTsKZXh0ZXJuIF9f
aW5saW5lICBzaXplX3QKX19zdHJzcG5fYzEgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNj
ZXB0KQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICAgCiAgd2hpbGUgKF9fc1tf
X3Jlc3VsdF0gPT0gX19hY2NlcHQpCiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsK
fQoKZXh0ZXJuIF9faW5saW5lICBzaXplX3QgX19zdHJzcG5fYzIgKF9fY29uc3QgY2hhciAqX19z
LCBjaGFyIF9fYWNjZXB0MSwKCQkJCSAgICBjaGFyIF9fYWNjZXB0Mik7CmV4dGVybiBfX2lubGlu
ZSAgc2l6ZV90Cl9fc3Ryc3BuX2MyIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEs
IGNoYXIgX19hY2NlcHQyKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9fcmVzdWx0ID0gMDsKICAgCiAg
d2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9fc1tfX3Jlc3VsdF0gPT0gX19h
Y2NlcHQyKQogICAgKytfX3Jlc3VsdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCmV4dGVybiBfX2lu
bGluZSAgc2l6ZV90IF9fc3Ryc3BuX2MzIChfX2NvbnN0IGNoYXIgKl9fcywgY2hhciBfX2FjY2Vw
dDEsCgkJCQkgICAgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKTsKZXh0ZXJuIF9faW5s
aW5lICBzaXplX3QKX19zdHJzcG5fYzMgKF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0
MSwgY2hhciBfX2FjY2VwdDIsIGNoYXIgX19hY2NlcHQzKQp7CiAgcmVnaXN0ZXIgc2l6ZV90IF9f
cmVzdWx0ID0gMDsKICAgCiAgd2hpbGUgKF9fc1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQxIHx8IF9f
c1tfX3Jlc3VsdF0gPT0gX19hY2NlcHQyCgkgfHwgX19zW19fcmVzdWx0XSA9PSBfX2FjY2VwdDMp
CiAgICArK19fcmVzdWx0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgogCgoKIyA5ODIgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk
ZS9iaXRzL3N0cmluZzIuaCIgMwoKZXh0ZXJuIF9faW5saW5lICBjaGFyICpfX3N0cnBicmtfYzIg
KF9fY29uc3QgY2hhciAqX19zLCBjaGFyIF9fYWNjZXB0MSwKCQkJCSAgICAgY2hhciBfX2FjY2Vw
dDIpOwpleHRlcm4gX19pbmxpbmUgIGNoYXIgKgpfX3N0cnBicmtfYzIgKF9fY29uc3QgY2hhciAq
X19zLCBjaGFyIF9fYWNjZXB0MSwgY2hhciBfX2FjY2VwdDIpCnsKICAgCiAgd2hpbGUgKCpfX3Mg
IT0gJ1wwJyAmJiAqX19zICE9IF9fYWNjZXB0MSAmJiAqX19zICE9IF9fYWNjZXB0MikKICAgICsr
X19zOwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSAgOiAoY2hhciAqKSAoc2l6
ZV90KSBfX3M7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJwYnJrX2MzIChfX2NvbnN0
IGNoYXIgKl9fcywgY2hhciBfX2FjY2VwdDEsCgkJCQkgICAgIGNoYXIgX19hY2NlcHQyLCBjaGFy
IF9fYWNjZXB0Myk7CmV4dGVybiBfX2lubGluZSAgY2hhciAqCl9fc3RycGJya19jMyAoX19jb25z
dCBjaGFyICpfX3MsIGNoYXIgX19hY2NlcHQxLCBjaGFyIF9fYWNjZXB0MiwKCSAgICAgIGNoYXIg
X19hY2NlcHQzKQp7CiAgIAogIHdoaWxlICgqX19zICE9ICdcMCcgJiYgKl9fcyAhPSBfX2FjY2Vw
dDEgJiYgKl9fcyAhPSBfX2FjY2VwdDIKCSAmJiAqX19zICE9IF9fYWNjZXB0MykKICAgICsrX19z
OwogIHJldHVybiAqX19zID09ICdcMCcgPyAoKHZvaWQgKikwKSAgOiAoY2hhciAqKSAoc2l6ZV90
KSBfX3M7Cn0KCgoKIAoKCiMgMTAyMCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgoKCgoKZXh0
ZXJuIF9faW5saW5lICBzaXplX3QKc3RybmxlbiAoX19jb25zdCBjaGFyICpfX3N0cmluZywgc2l6
ZV90IF9fbWF4bGVuKQp7CiAgX19jb25zdCBjaGFyICpfX2VuZCA9IChfX2NvbnN0IGNoYXIgKikg
bWVtY2hyIChfX3N0cmluZywgJ1wwJywgX19tYXhsZW4pOwogIHJldHVybiBfX2VuZCA/IChzaXpl
X3QpIChfX2VuZCAtIF9fc3RyaW5nKSA6IF9fbWF4bGVuOwp9CgoKCgoKCgoKCgoKCgpleHRlcm4g
X19pbmxpbmUgIGNoYXIgKl9fc3RydG9rX3JfMWMgKGNoYXIgKl9fcywgY2hhciBfX3NlcCwgY2hh
ciAqKl9fbmV4dHApOwpleHRlcm4gX19pbmxpbmUgIGNoYXIgKgpfX3N0cnRva19yXzFjIChjaGFy
ICpfX3MsIGNoYXIgX19zZXAsIGNoYXIgKipfX25leHRwKQp7CiAgY2hhciAqX19yZXN1bHQ7CiAg
aWYgKF9fcyA9PSAoKHZvaWQgKikwKSApCiAgICBfX3MgPSAqX19uZXh0cDsKICB3aGlsZSAoKl9f
cyA9PSBfX3NlcCkKICAgICsrX19zOwogIGlmICgqX19zID09ICdcMCcpCiAgICBfX3Jlc3VsdCA9
ICgodm9pZCAqKTApIDsKICBlbHNlCiAgICB7CiAgICAgIF9fcmVzdWx0ID0gX19zOwogICAgICB3
aGlsZSAoKl9fcyAhPSAnXDAnICYmICpfX3MgIT0gX19zZXApCgkrK19fczsKICAgICAgaWYgKCpf
X3MgPT0gJ1wwJykKCSpfX25leHRwID0gX19zOwogICAgICBlbHNlCgl7CgkgICpfX3MgPSAnXDAn
OwoJICAqX19uZXh0cCA9IF9fcyArIDE7Cgl9CiAgICB9CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgoK
CgoKCgoKCiMgMTA5MyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4u
Ly4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RyaW5nMi5oIiAzCgpleHRlcm4gX19pbmxpbmUg
IGNoYXIgKl9fc3Ryc2VwXzFjIChjaGFyICoqX19zLCBjaGFyIF9fcmVqZWN0KTsKZXh0ZXJuIF9f
aW5saW5lICBjaGFyICoKX19zdHJzZXBfMWMgKGNoYXIgKipfX3MsIGNoYXIgX19yZWplY3QpCnsK
ICByZWdpc3RlciBjaGFyICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9p
ZCAqKTApICkKICAgIHJldHVybiAqX19zID0gKCh2b2lkICopMCkgOwogIGlmICgqX19yZXR2YWwg
PT0gX19yZWplY3QpCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIGVsc2UKICAgIGlmICgoKl9fcyA9
IChfX2V4dGVuc2lvbl9fIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoICBfX3JlamVjdCApICYmICgg
IF9fcmVqZWN0ICkgPT0gJ1wwJwk/IChjaGFyICopIF9fcmF3bWVtY2hyICggX19yZXR2YWwgLCAg
IF9fcmVqZWN0ICkJOiBzdHJjaHIgKCBfX3JldHZhbCAsICAgX19yZWplY3QgKSkpICkgIT0gKCh2
b2lkICopMCkgKQogICAgICAqKCpfX3MpKysgPSAnXDAnOwogICAgZWxzZQogICAgICAqX19zID0g
KCh2b2lkICopMCkgOwogIHJldHVybiBfX3JldHZhbDsKfQoKZXh0ZXJuIF9faW5saW5lICBjaGFy
ICpfX3N0cnNlcF8yYyAoY2hhciAqKl9fcywgY2hhciBfX3JlamVjdDEsIGNoYXIgX19yZWplY3Qy
KTsKZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJzZXBfMmMgKGNoYXIgKipfX3MsIGNoYXIg
X19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MikKewogIHJlZ2lzdGVyIGNoYXIgKl9fcmV0dmFsID0g
Kl9fczsKICBpZiAoX19yZXR2YWwgPT0gKCh2b2lkICopMCkgKQogICAgcmV0dXJuICpfX3MgPSAo
KHZvaWQgKikwKSA7CiAgaWYgKCpfX3JldHZhbCA9PSBfX3JlamVjdDEgfHwgKl9fcmV0dmFsID09
IF9fcmVqZWN0MikKICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdp
c3RlciBjaGFyICpfX2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYm
ICpfX2NwICE9IF9fcmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIpCgkrK19fY3A7CiAgICAg
IGlmICgqX19jcCAhPSAnXDAnKQoJewoJICAqX19zID0gX19jcDsKCSAgKigqX19zKSsrID0gJ1ww
JzsKCX0KICAgICAgZWxzZQoJKl9fcyA9ICgodm9pZCAqKTApIDsKICAgIH0KICByZXR1cm4gX19y
ZXR2YWw7Cn0KCmV4dGVybiBfX2lubGluZSAgY2hhciAqX19zdHJzZXBfM2MgKGNoYXIgKipfX3Ms
IGNoYXIgX19yZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwKCQkJCSAgIGNoYXIgX19yZWplY3QzKTsK
ZXh0ZXJuIF9faW5saW5lICBjaGFyICoKX19zdHJzZXBfM2MgKGNoYXIgKipfX3MsIGNoYXIgX19y
ZWplY3QxLCBjaGFyIF9fcmVqZWN0MiwgY2hhciBfX3JlamVjdDMpCnsKICByZWdpc3RlciBjaGFy
ICpfX3JldHZhbCA9ICpfX3M7CiAgaWYgKF9fcmV0dmFsID09ICgodm9pZCAqKTApICkKICAgIHJl
dHVybiAqX19zID0gKCh2b2lkICopMCkgOwogIGlmICgqX19yZXR2YWwgPT0gX19yZWplY3QxIHx8
ICpfX3JldHZhbCA9PSBfX3JlamVjdDIKICAgICAgfHwgKl9fcmV0dmFsID09IF9fcmVqZWN0MykK
ICAgICooKl9fcykrKyA9ICdcMCc7CiAgZWxzZQogICAgewogICAgICByZWdpc3RlciBjaGFyICpf
X2NwID0gX19yZXR2YWw7CiAgICAgIHdoaWxlICgqX19jcCAhPSAnXDAnICYmICpfX2NwICE9IF9f
cmVqZWN0MSAmJiAqX19jcCAhPSBfX3JlamVjdDIKCSAgICAgJiYgKl9fY3AgIT0gX19yZWplY3Qz
KQoJKytfX2NwOwogICAgICBpZiAoKl9fY3AgIT0gJ1wwJykKCXsKCSAgKl9fcyA9IF9fY3A7Cgkg
ICooKl9fcykrKyA9ICdcMCc7Cgl9CiAgICAgIGVsc2UKCSpfX3MgPSAoKHZvaWQgKikwKSA7CiAg
ICB9CiAgcmV0dXJuIF9fcmV0dmFsOwp9CgpleHRlcm4gX19pbmxpbmUgIGNoYXIgKl9fc3Ryc2Vw
X2cgKGNoYXIgKipfX3MsIF9fY29uc3QgY2hhciAqX19yZWplY3QpOwpleHRlcm4gX19pbmxpbmUg
IGNoYXIgKgpfX3N0cnNlcF9nIChjaGFyICoqX19zLCBfX2NvbnN0IGNoYXIgKl9fcmVqZWN0KQp7
CiAgcmVnaXN0ZXIgY2hhciAqX19yZXR2YWwgPSAqX19zOwogIGlmIChfX3JldHZhbCA9PSAoKHZv
aWQgKikwKSApCiAgICByZXR1cm4gKCh2b2lkICopMCkgOwogIGlmICgoKl9fcyA9IF9fZXh0ZW5z
aW9uX18JKHsgY2hhciBfX2EwLCBfX2ExLCBfX2EyOwkoX19idWlsdGluX2NvbnN0YW50X3AgKCAg
X19yZWplY3QgKSAmJiAoKHNpemVfdCkoY29uc3Qgdm9pZCAqKSgoICAgX19yZWplY3QgICkgKyAx
KSAtIChzaXplX3QpKGNvbnN0IHZvaWQgKikoICAgX19yZWplY3QgICkgPT0gMSkgCT8gKChfX2Ew
ID0gKChfX2NvbnN0IGNoYXIgICopICggIF9fcmVqZWN0ICkpWzBdLCBfX2EwID09ICdcMCcpCT8g
KCh2b2lkICopMCkgCTogKChfX2ExID0gKChfX2NvbnN0IGNoYXIgKikgKCAgX19yZWplY3QgKSlb
MV0sIF9fYTEgPT0gJ1wwJykJPyAoX19leHRlbnNpb25fXyAoX19idWlsdGluX2NvbnN0YW50X3Ag
KCAgX19hMCApICYmICggIF9fYTAgKSA9PSAnXDAnCT8gKGNoYXIgKikgX19yYXdtZW1jaHIgKCAg
X19yZXR2YWwgICwgICBfX2EwICkJOiBzdHJjaHIgKCAgX19yZXR2YWwgICwgICBfX2EwICkpKSAJ
OiAoKF9fYTIgPSAoKF9fY29uc3QgY2hhciAqKSAoICBfX3JlamVjdCApKVsyXSwgX19hMiA9PSAn
XDAnKQk/IF9fc3RycGJya19jMiAoIF9fcmV0dmFsICwgX19hMCwgX19hMSkJOiAoKChfX2NvbnN0
IGNoYXIgKikgKCAgX19yZWplY3QgKSlbM10gPT0gJ1wwJwk/IF9fc3RycGJya19jMyAoIF9fcmV0
dmFsICwgX19hMCwgX19hMSwgX19hMikJOiBzdHJwYnJrICggX19yZXR2YWwgLCAgIF9fcmVqZWN0
ICkpKSkpCTogc3RycGJyayAoIF9fcmV0dmFsICwgICBfX3JlamVjdCApKTsgfSkgKSAhPSAoKHZv
aWQgKikwKSApCiAgICAqKCpfX3MpKysgPSAnXDAnOwogIHJldHVybiBfX3JldHZhbDsKfQoKCgoK
CiAKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4v
Li4vYXJtLWxpbnV4L2luY2x1ZGUvc3RkbGliLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKIAoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vz
ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK
CgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2Mt
bGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgoj
IDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9s
aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCiMgMzMgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUu
My8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKIAoKIyA0Njkg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKIApleHRlcm4gdm9pZCAqICBtYWxsb2MgIChzaXplX3Qg
X19zaXplKSAgICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAoc2l6ZV90IF9fbm1lbWIsIHNp
emVfdCBfX3NpemUpICAgIDsKCgojIDc2OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKCgojIDEx
ODcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGlu
dXgvaW5jbHVkZS9iaXRzL3N0cmluZzIuaCIgMiAzCgoKCgoKCiMgMTIwMiAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMv
c3RyaW5nMi5oIiAzCgoKCgoKCgoKCgoKCgojIDM0NiAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoK
CiAKCgojIDk1ICIuLi8uLi9pbmNsdWRlL29zLmgiIDIKCgoKCgoKCgoKCiAKCgoKCgoKZXh0ZXJu
IEJvb2wgT3NEZWxheUluaXRDb2xvcnM7CmV4dGVybiB2b2lkICgqT3NWZW5kb3JWRXJyb3JGUHJv
YykoY29uc3QgY2hhciAqLCB2YV9saXN0IGFyZ3MpOwoKZXh0ZXJuIGludCBXYWl0Rm9yU29tZXRo
aW5nKAoKICAgIGludCogIAoKKTsKCiMgMTM0ICIuLi8uLi9pbmNsdWRlL29zLmgiCgpleHRlcm4g
aW50IFJlYWRSZXF1ZXN0RnJvbUNsaWVudCgKCiAgICBDbGllbnRQdHIgIAoKKTsKCgpleHRlcm4g
Qm9vbCBJbnNlcnRGYWtlUmVxdWVzdCgKCiAgICBDbGllbnRQdHIgICwKICAgIGNoYXIqICAsCiAg
ICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgUmVzZXRDdXJyZW50UmVxdWVzdCgKCiAgICBDbGllbnRQ
dHIgIAoKKTsKCmV4dGVybiB2b2lkIEZsdXNoQWxsT3V0cHV0KAoKICAgIHZvaWQKCik7CgpleHRl
cm4gdm9pZCBGbHVzaElmQ3JpdGljYWxPdXRwdXRQZW5kaW5nKAoKICAgIHZvaWQKCik7CgpleHRl
cm4gdm9pZCBTZXRDcml0aWNhbE91dHB1dFBlbmRpbmcoCgogICAgdm9pZAoKKTsKCmV4dGVybiBp
bnQgV3JpdGVUb0NsaWVudCgKCiAgICBDbGllbnRQdHIgICwKICAgIGludCAgLAogICAgY2hhciog
IAoKKTsKCmV4dGVybiB2b2lkIFJlc2V0T3NCdWZmZXJzKAoKICAgIHZvaWQKCik7CgpleHRlcm4g
dm9pZCBDcmVhdGVXZWxsS25vd25Tb2NrZXRzKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBS
ZXNldFdlbGxLbm93blNvY2tldHMoCgogICAgdm9pZAoKKTsKCmV4dGVybiBYSUQKQXV0aG9yaXph
dGlvbklET2ZDbGllbnQoCgogICAgQ2xpZW50UHRyICAKCik7CgpleHRlcm4gY2hhciAqQ2xpZW50
QXV0aG9yaXplZCgKCiAgICBDbGllbnRQdHIgICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgY2hh
ciogICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgY2hhciogIAoKKTsKCmV4dGVybiBCb29sIEVz
dGFibGlzaE5ld0Nvbm5lY3Rpb25zKAoKICAgIENsaWVudFB0ciAgLAogICAgcG9pbnRlciAgCgop
OwoKZXh0ZXJuIHZvaWQgQ2hlY2tDb25uZWN0aW9ucygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZv
aWQgQ2xvc2VEb3duQ29ubmVjdGlvbigKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiBpbnQg
QWRkRW5hYmxlZERldmljZSgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgUmVtb3ZlRW5hYmxl
ZERldmljZSgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgT25seUxpc3RlblRvT25lQ2xpZW50
KAoKICAgIENsaWVudFB0ciAgCgopOwoKZXh0ZXJuIGludCBMaXN0ZW5Ub0FsbENsaWVudHMoCgog
ICAgdm9pZAoKKTsKCmV4dGVybiBpbnQgSWdub3JlQ2xpZW50KAoKICAgIENsaWVudFB0ciAgCgop
OwoKZXh0ZXJuIGludCBBdHRlbmRDbGllbnQoCgogICAgQ2xpZW50UHRyICAKCik7CgpleHRlcm4g
aW50IE1ha2VDbGllbnRHcmFiSW1wZXJ2aW91cygKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVy
biBpbnQgTWFrZUNsaWVudEdyYWJQZXJ2aW91cygKCiAgICBDbGllbnRQdHIgIAoKKTsKCgoKCgoK
CgoKZXh0ZXJuIHZvaWQgQXZhaWxhYmxlQ2xpZW50SW5wdXQoCgogICAgQ2xpZW50UHRyICAKCik7
CgpleHRlcm4gdm9pZCBFcnJvcigKCiAgICBjaGFyKiAgCgopOwoKZXh0ZXJuIENBUkQzMiBHZXRU
aW1lSW5NaWxsaXMoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIEFkanVzdFdhaXRGb3JEZWxh
eSgKCiAgICBwb2ludGVyICAsCiAgICB1bnNpZ25lZCBsb25nICAKCik7Cgp0eXBlZGVmCXN0cnVj
dCBfT3NUaW1lclJlYyAqT3NUaW1lclB0cjsKCnR5cGVkZWYgQ0FSRDMyICgqT3NUaW1lckNhbGxi
YWNrKSgKCiAgICBPc1RpbWVyUHRyICAsCiAgICBDQVJEMzIgICwKICAgIHBvaW50ZXIgIAoKKTsK
CmV4dGVybiB2b2lkIFRpbWVySW5pdCgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIEJvb2wgVGltZXJG
b3JjZSgKCiAgICBPc1RpbWVyUHRyICAKCik7CgoKCgpleHRlcm4gT3NUaW1lclB0ciBUaW1lclNl
dCgKCiAgICBPc1RpbWVyUHRyICAsCiAgICBpbnQgICwKICAgIENBUkQzMiAgLAogICAgT3NUaW1l
ckNhbGxiYWNrICAsCiAgICBwb2ludGVyICAKCik7CgpleHRlcm4gdm9pZCBUaW1lckNoZWNrKAoK
ICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBUaW1lckNhbmNlbCgKCiAgICBPc1RpbWVyUHRyICAK
Cik7CgpleHRlcm4gdm9pZCBUaW1lckZyZWUoCgogICAgT3NUaW1lclB0ciAgCgopOwoKZXh0ZXJu
IHZvaWQgIEF1dG9SZXNldFNlcnZlcigKCiAgICBpbnQgIAoKKTsKCmV4dGVybiB2b2lkICBHaXZl
VXAoCgogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBVc2VNc2coCgogICAgdm9pZAoKKTsKCmV4
dGVybiB2b2lkIFByb2Nlc3NDb21tYW5kTGluZSgKCiAgICBpbnQgICwKICAgIGNoYXIqICBbXQoK
KTsKCmV4dGVybiBwb2ludGVyIFhhbGxvYygKCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRl
cm4gcG9pbnRlciBYTkZhbGxvYygKCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRlcm4gcG9p
bnRlciBYY2FsbG9jKAoKICAgIHVuc2lnbmVkIGxvbmcgIAoKKTsKCmV4dGVybiBwb2ludGVyIFhO
RmNhbGxvYygKCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRlcm4gcG9pbnRlciBYcmVhbGxv
YygKCiAgICBwb2ludGVyICAsCiAgICB1bnNpZ25lZCBsb25nICAKCik7CgpleHRlcm4gcG9pbnRl
ciBYTkZyZWFsbG9jKAoKICAgIHBvaW50ZXIgICwKICAgIHVuc2lnbmVkIGxvbmcgIAoKKTsKCmV4
dGVybiB2b2lkIFhmcmVlKAoKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiB2b2lkIE9zSW5pdEFs
bG9jYXRvcigKCiAgICB2b2lkCgopOwoKZXh0ZXJuIGNoYXIgKlhzdHJkdXAoY29uc3QgY2hhciAq
cyk7CmV4dGVybiBjaGFyICpYTkZzdHJkdXAoY29uc3QgY2hhciAqcyk7Cgp0eXBlZGVmIHZvaWQg
ICgqT3NTaWdIYW5kbGVyUHRyKSgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBPc1NpZ0hhbmRsZXJQ
dHIgT3NTaWduYWwoCgogICAgaW50ICAsCiAgICBPc1NpZ0hhbmRsZXJQdHIgIAoKKTsKCmV4dGVy
biBpbnQgYXVkaXRUcmFpbExldmVsOwoKZXh0ZXJuIHZvaWQgQXVkaXRGKAoKICAgIGNvbnN0IGNo
YXIqICAsCiAgICAuLi4KCik7CgpleHRlcm4gdm9pZCBGYXRhbEVycm9yKAoKICAgIGNvbnN0IGNo
YXIqICAsCiAgICAuLi4KCikKCl9fYXR0cmlidXRlKChub3JldHVybikpCgo7CgpleHRlcm4gdm9p
ZCBFcnJvckYoCgogICAgY29uc3QgY2hhciogICwKICAgIC4uLgoKKTsKCgpleHRlcm4gdm9pZCBW
RXJyb3JGKGNvbnN0IGNoYXIgKmYsIHZhX2xpc3QgYXJncyk7CgoKIyA1MDQgIi4uLy4uL2luY2x1
ZGUvb3MuaCIKCgpleHRlcm4gaW50IE9zTG9va3VwQ29sb3IoCgogICAgaW50CSAsCiAgICBjaGFy
ICogICwKICAgIHVuc2lnbmVkICAsCiAgICB1bnNpZ25lZCBzaG9ydCAqICAsCiAgICB1bnNpZ25l
ZCBzaG9ydCAqICAsCiAgICB1bnNpZ25lZCBzaG9ydCAqICAKCik7CgpleHRlcm4gdm9pZCBPc0lu
aXQoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIE9zQ2xlYW51cCgKCiAgICB2b2lkCgopOwoK
ZXh0ZXJuIHZvaWQgT3NWZW5kb3JGYXRhbEVycm9yKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9p
ZCBPc1ZlbmRvckluaXQoCgogICAgdm9pZAoKKTsKCmV4dGVybiBpbnQgT3NJbml0Q29sb3JzKAoK
ICAgIHZvaWQKCik7Cgp2b2lkIE9zQmxvY2tTaWduYWxzICgKCgkJICAgICB2b2lkCgoJCSAgICAg
KTsKCnZvaWQgT3NSZWxlYXNlU2lnbmFscyAoCgoJCSAgICAgdm9pZAoKCQkgICAgICk7CgoKZXh0
ZXJuIGludCBTeXN0ZW0oY2hhciAqKTsKZXh0ZXJuIHBvaW50ZXIgUG9wZW4oY2hhciAqLCBjaGFy
ICopOwpleHRlcm4gaW50IFBjbG9zZShwb2ludGVyKTsKCgoKCgoKZXh0ZXJuIHZvaWQgQ2hlY2tV
c2VyUGFyYW1ldGVycyhpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNoYXIgKiplbnZwKTsKZXh0ZXJu
IHZvaWQgQ2hlY2tVc2VyQXV0aG9yaXphdGlvbih2b2lkKTsKCmV4dGVybiBpbnQgQWRkSG9zdCgK
CiAgICBDbGllbnRQdHIJICwKICAgIGludCAgICAgICAgICAsCiAgICB1bnNpZ25lZCAgICAgLAog
ICAgcG9pbnRlciAgICAgIAoKKTsKCmV4dGVybiBCb29sIEZvckVhY2hIb3N0SW5GYW1pbHkgKAoK
ICAgIGludAkgICAgICwKICAgIEJvb2wgICAgKCogICApKAoKICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciAqICAsCiAgICAgICAgICAgIHNob3J0ICAgICAgICAgICAgLAogICAgICAgICAgICBwb2lu
dGVyICAgICAgICAgIAoKICAgICAgICAgICAgKSwKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiBp
bnQgUmVtb3ZlSG9zdCgKCiAgICBDbGllbnRQdHIJICwKICAgIGludCAgICAgICAgICAsCiAgICB1
bnNpZ25lZCAgICAgLAogICAgcG9pbnRlciAgICAgIAoKKTsKCmV4dGVybiBpbnQgR2V0SG9zdHMo
CgogICAgcG9pbnRlciAqICAsCiAgICBpbnQJICAgICogICwKICAgIGludAkgICAgKiAgLAogICAg
Qk9PTCAgICAqICAKCik7Cgp0eXBlZGVmIHN0cnVjdCBzb2NrYWRkciAqIHNvY2thZGRyUHRyOwoK
ZXh0ZXJuIGludCBJbnZhbGlkSG9zdCgKCiAgICBzb2NrYWRkclB0ciAgLAogICAgaW50CQkgCgop
OwoKZXh0ZXJuIGludCBMb2NhbENsaWVudCgKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiBp
bnQgQ2hhbmdlQWNjZXNzQ29udHJvbCgKCiAgICBDbGllbnRQdHIgICwKICAgIGludCAgCgopOwoK
ZXh0ZXJuIGludCBHZXRBY2Nlc3NDb250cm9sKAoKICAgIHZvaWQKCik7CgoKZXh0ZXJuIHZvaWQg
QWRkTG9jYWxIb3N0cygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgUmVzZXRIb3N0cygKCiAg
ICBjaGFyICpkaXNwbGF5CgopOwoKZXh0ZXJuIHZvaWQgRW5hYmxlTG9jYWxIb3N0KAoKICAgIHZv
aWQKCik7CgpleHRlcm4gdm9pZCBEaXNhYmxlTG9jYWxIb3N0KAoKICAgIHZvaWQKCik7CgpleHRl
cm4gdm9pZCBBY2Nlc3NVc2luZ1hkbWNwKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBEZWZp
bmVTZWxmKAoKICAgIGludCAgCgopOwoKZXh0ZXJuIHZvaWQgQXVnbWVudFNlbGYoCgogICAgcG9p
bnRlciAgLAogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBJbml0QXV0aG9yaXphdGlvbigKCiAg
ICBjaGFyICogIAoKKTsKCmV4dGVybiBpbnQgTG9hZEF1dGhvcml6YXRpb24oCgogICAgdm9pZAoK
KTsKCmV4dGVybiB2b2lkIFJlZ2lzdGVyQXV0aG9yaXphdGlvbnMoCgogICAgdm9pZAoKKTsKCmV4
dGVybiBYSUQgQXV0aG9yaXphdGlvblRvSUQgKAoJdW5zaWduZWQgc2hvcnQJbmFtZV9sZW5ndGgs
CgljaGFyCQkqbmFtZSwKCXVuc2lnbmVkIHNob3J0CWRhdGFfbGVuZ3RoLAoJY2hhcgkJKmRhdGEp
OwoKZXh0ZXJuIGludCBBdXRob3JpemF0aW9uRnJvbUlEICgKCVhJRCAJCWlkLAoJdW5zaWduZWQg
c2hvcnQJKm5hbWVfbGVucCwKCWNoYXIJCSoqbmFtZXAsCgl1bnNpZ25lZCBzaG9ydAkqZGF0YV9s
ZW5wLAoJY2hhcgkJKipkYXRhcCk7CgpleHRlcm4gWElEIENoZWNrQXV0aG9yaXphdGlvbigKCiAg
ICB1bnNpZ25lZCBpbnQgICwKICAgIGNoYXIgKiAgLAogICAgdW5zaWduZWQgaW50ICAsCiAgICBj
aGFyICogICwKICAgIENsaWVudFB0ciAgLAogICAgY2hhciAqKiAgCgopOwoKZXh0ZXJuIHZvaWQg
UmVzZXRBdXRob3JpemF0aW9uKAoKICAgIHZvaWQKCik7CgpleHRlcm4gaW50IFJlbW92ZUF1dGhv
cml6YXRpb24gKAogICAgdW5zaWduZWQgc2hvcnQJbmFtZV9sZW5ndGgsCiAgICBjaGFyCQkqbmFt
ZSwKICAgIHVuc2lnbmVkIHNob3J0CWRhdGFfbGVuZ3RoLAogICAgY2hhcgkJKmRhdGEpOwoKZXh0
ZXJuIGludCBBZGRBdXRob3JpemF0aW9uKAoKICAgIHVuc2lnbmVkIGludAkgLAogICAgY2hhciAq
CQkgLAogICAgdW5zaWduZWQgaW50CSAsCiAgICBjaGFyICoJCSAKCik7CgpleHRlcm4gWElEIEdl
bmVyYXRlQXV0aG9yaXphdGlvbigKCiAgICB1bnNpZ25lZCBpbnQgICAgLAogICAgY2hhcgkqICAg
LAogICAgdW5zaWduZWQgaW50ICAgICwKICAgIGNoYXIJKiAgICwKICAgIHVuc2lnbmVkIGludCAq
ICAsCiAgICBjaGFyCSoqICAKCik7CgoKCgoKCgoKCgpleHRlcm4gaW50IGRkeFByb2Nlc3NBcmd1
bWVudCgKCiAgICBpbnQgICwKICAgIGNoYXIgKiAgIFtdLAogICAgaW50ICAKCik7CgpleHRlcm4g
dm9pZCBkZHhVc2VNc2codm9pZCk7CgogCgoKCnhSZXFQdHIgUGVla05leHRSZXF1ZXN0KAoKICAg
IHhSZXFQdHIgcmVxLCBDbGllbnRQdHIgY2xpZW50LCBCb29sIHJlYWRtb3JlCgopOwoKdm9pZCBT
a2lwUmVxdWVzdHMoCgogICAgeFJlcVB0ciByZXEsIENsaWVudFB0ciBjbGllbnQsIGludCBudW1z
a2lwcGVkCgopOwoKIAoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKZXh0ZXJuIENhbGxiYWNrTGlz
dFB0ciBTa2lwcGVkUmVxdWVzdHNDYWxsYmFjazsKdHlwZWRlZiBzdHJ1Y3QgewogICAgeFJlcVB0
ciByZXE7CiAgICBDbGllbnRQdHIgY2xpZW50OwogICAgaW50IG51bXNraXBwZWQ7Cn0gU2tpcHBl
ZFJlcXVlc3RJbmZvUmVjOwoKIApleHRlcm4gQ2FsbGJhY2tMaXN0UHRyIFJlcGx5Q2FsbGJhY2s7
CnR5cGVkZWYgc3RydWN0IHsKICAgIENsaWVudFB0ciBjbGllbnQ7CiAgICBwb2ludGVyIHJlcGx5
RGF0YTsKICAgIHVuc2lnbmVkIGxvbmcgZGF0YUxlbkJ5dGVzOwogICAgdW5zaWduZWQgbG9uZyBi
eXRlc1JlbWFpbmluZzsKICAgIEJvb2wgc3RhcnRPZlJlcGx5Owp9IFJlcGx5SW5mb1JlYzsKCiAK
ZXh0ZXJuIENhbGxiYWNrTGlzdFB0ciBGbHVzaENhbGxiYWNrOwoKZXh0ZXJuIHZvaWQgQWJvcnRE
RFgodm9pZCk7CmV4dGVybiB2b2lkIGRkeEdpdmVVcCh2b2lkKTsKZXh0ZXJuIGludCBUaW1lU2lu
Y2VMYXN0SW5wdXRFdmVudCh2b2lkKTsKCgojIDExNyAiLi4vLi4vaW5jbHVkZS9taXNjLmgiIDIK
CgojIDEgIi4uLy4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGZ1bmNzLmgiIDEKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKCgoKCgoKCgoKCgojIDY2ICIuLi8uLi8uLi8u
Li9leHBvcnRzL2luY2x1ZGUvWDExL1hmdW5jcy5oIgoKCgogCgoKIAoKCgoKCiMgOTIgIi4uLy4u
Ly4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWGZ1bmNzLmgiCgoKCgoKCgoKCiMgMTE5ICIuLi8u
Li9pbmNsdWRlL21pc2MuaCIgMgoKCgoKCgoKICAgICAKCgoKCgoKCiAKCgoKCgogCgoKCgoKCgoK
CgoKCgogCgogIAojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8u
Li8uLi9hcm0tbGludXgvaW5jbHVkZS9zdGRsaWIuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgogCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIv
dXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoK
CiMgMTg4ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYu
aCIgMwoKCgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNy
L2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgogCgoKCgog
CnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7CQkJIAogICAgaW50IHJlbTsJCQkgCiAg
fSBkaXZfdDsKCiAKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9uZyBpbnQgcXVvdDsJCSAKICAg
IGxvbmcgaW50IHJlbTsJCSAKICB9IGxkaXZfdDsKCgoKCiAKX19leHRlbnNpb25fXyB0eXBlZGVm
IHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsJCSAKICAgIGxvbmcgbG9uZyBpbnQg
cmVtOwkJIAogIH0gbGxkaXZfdDsKCgoKCiAKCgoKIAoKCgoKCiAKCmV4dGVybiBzaXplX3QgX19j
dHlwZV9nZXRfbWJfY3VyX21heCAgKHZvaWQpICAgIDsKCgogCmV4dGVybiBkb3VibGUgYXRvZiAg
KF9fY29uc3QgY2hhciAqX19ucHRyKSAgICA7CiAKZXh0ZXJuIGludCBhdG9pICAoX19jb25zdCBj
aGFyICpfX25wdHIpICAgIDsKIApleHRlcm4gbG9uZyBpbnQgYXRvbCAgKF9fY29uc3QgY2hhciAq
X19ucHRyKSAgICA7CgoKIApfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGF0b2xs
ICAoX19jb25zdCBjaGFyICpfX25wdHIpICAgIDsKCgogCmV4dGVybiBkb3VibGUgc3RydG9kICAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJICAgY2hhciAqKl9fcmVzdHJpY3Qg
X19lbmRwdHIpICAgIDsKCgogCmV4dGVybiBmbG9hdCBzdHJ0b2YgIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAoJCQkgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSAgICA7Cgpl
eHRlcm4gbG9uZyBkb3VibGUgIHN0cnRvbGQgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAoJCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgICAgOwoKCiAKZXh0ZXJu
IGxvbmcgaW50IHN0cnRvbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCSAg
ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpICAgIDsKIApleHRlcm4g
dW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCgkJCQkgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkgICAgICAgaW50
IF9fYmFzZSkgICAgOwoKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBzdHJ0
b3EgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICBjaGFyICoqX19yZXN0
cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgICAgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVu
c2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBf
X25wdHIsCgkJCQkJICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCSAgICBpbnQg
X19iYXNlKSAgICA7CgoKCiAKCiAKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBz
dHJ0b2xsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSAgICA7CiAKX19leHRlbnNpb25fXwpleHRl
cm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBzdHJ0b3VsbCAgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCgkJCQkJICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkg
ICAgIGludCBfX2Jhc2UpICAgIDsKCgoKCiAKCgoKCgoKCgoKCiAKCgoKIAoKZXh0ZXJuIGxvbmcg
aW50IF9fc3RydG9sX2wgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAoJCQkJIF9fbG9jYWxlX3QgX19s
b2MpICAgIDsKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBfX3N0cnRvdWxfbCAgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRw
dHIsCgkJCQkJICAgaW50IF9fYmFzZSwgX19sb2NhbGVfdCBfX2xvYykgICAgOwoKX19leHRlbnNp
b25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfbCAgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCgkJCQkgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UsCgkJCQkgICAgICAgX19sb2NhbGVfdCBfX2xvYykgICAgOwoKX19leHRlbnNpb25f
XwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRvdWxsX2wgIChfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QKCQkJCQkJIF9fbnB0ciwKCQkJCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAoJCQkJCQkgaW50IF9fYmFzZSwKCQkJCQkJIF9fbG9jYWxlX3QgX19sb2MpICAgIDsK
CmV4dGVybiBkb3VibGUgX19zdHJ0b2RfbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w
dHIsCgkJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xv
YykgICAgOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2wgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLAoJCQkgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVf
dCBfX2xvYykgICAgOwoKZXh0ZXJuIGxvbmcgZG91YmxlICBfX3N0cnRvbGRfbCAgKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LAoJCQkJCSBfX2xvY2FsZV90IF9fbG9jKSAgICA7CgoKCiAKCgpleHRlcm4gZG91YmxlIF9fc3Ry
dG9kX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJICAgICAgaW50IF9fZ3JvdXApICAgIDsK
ZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3Vw
KSAgICA7CmV4dGVybiBsb25nIGRvdWJsZSAgX19zdHJ0b2xkX2ludGVybmFsICAoX19jb25zdCBj
aGFyICoKCQkJCQkJX19yZXN0cmljdCBfX25wdHIsCgkJCQkJCWNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyLAoJCQkJCQlpbnQgX19ncm91cCkgICAgOwoKZXh0ZXJuIGxvbmcgaW50IF9fc3RydG9s
X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQljaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQlpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoK
CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgX19zdHJ0b3VsX2ludGVybmFsICAoX19jb25zdCBj
aGFyICoKCQkJCQkJICBfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJICBjaGFyICoqX19yZXN0cmlj
dCBfX2VuZHB0ciwKCQkJCQkJICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgICAgOwoKCgoKX19l
eHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfaW50ZXJuYWwgIChfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJCSAgICAgIGNoYXIgKipfX3Jlc3RyaWN0
IF9fZW5kcHRyLAoJCQkJCSAgICAgIGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSAgICA7CgoKCl9f
ZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9pbnRl
cm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJCWNo
YXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCQlpbnQgX19iYXNlLAoJCQkJ
CQkJaW50IF9fZ3JvdXApICAgIDsKCgoKCgoKIAoKZXh0ZXJuIF9faW5saW5lIGRvdWJsZQpzdHJ0
b2QgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9f
ZW5kcHRyKSAgCnsKICByZXR1cm4gX19zdHJ0b2RfaW50ZXJuYWwgKF9fbnB0ciwgX19lbmRwdHIs
IDApOwp9CmV4dGVybiBfX2lubGluZSBsb25nIGludApzdHJ0b2wgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJaW50IF9fYmFzZSkg
IAp7CiAgcmV0dXJuIF9fc3RydG9sX2ludGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2Us
IDApOwp9CmV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGludApzdHJ0b3VsIChfX2NvbnN0
IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCSBp
bnQgX19iYXNlKSAgCnsKICByZXR1cm4gX19zdHJ0b3VsX2ludGVybmFsIChfX25wdHIsIF9fZW5k
cHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5lIGZsb2F0CnN0cnRvZiAoX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpICAK
ewogIHJldHVybiBfX3N0cnRvZl9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KZXh0
ZXJuIF9faW5saW5lIGxvbmcgZG91YmxlIApzdHJ0b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19ucHRyLCBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikgIAp7CiAgcmV0dXJuIF9fc3Ry
dG9sZF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgMCk7Cn0KCgoKX19leHRlbnNpb25fXyBl
eHRlcm4gX19pbmxpbmUgbG9uZyBsb25nIGludApzdHJ0b3EgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJaW50IF9fYmFzZSkgIAp7
CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAw
KTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50
CnN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAoJIGludCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvdWxsX2ludGVy
bmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKCl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIF9faW5saW5lIGxvbmcgbG9uZyBpbnQKc3RydG9sbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkgaW50IF9fYmFzZSkgIAp7
CiAgcmV0dXJuIF9fc3RydG9sbF9pbnRlcm5hbCAoX19ucHRyLCBfX2VuZHB0ciwgX19iYXNlLCAw
KTsKfQpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgaW50
CnN0cnRvdWxsIChfX2NvbnN0IGNoYXIgKiBfX3Jlc3RyaWN0IF9fbnB0ciwgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCgkgIGludCBfX2Jhc2UpICAKewogIHJldHVybiBfX3N0cnRvdWxsX2lu
dGVybmFsIChfX25wdHIsIF9fZW5kcHRyLCBfX2Jhc2UsIDApOwp9CgoKZXh0ZXJuIF9faW5saW5l
IGRvdWJsZQphdG9mIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIAp7CiAgcmV0dXJuIHN0cnRvZCAo
X19ucHRyLCAoY2hhciAqKikgKCh2b2lkICopMCkgKTsKfQpleHRlcm4gX19pbmxpbmUgaW50CmF0
b2kgKF9fY29uc3QgY2hhciAqX19ucHRyKSAgCnsKICByZXR1cm4gKGludCkgc3RydG9sIChfX25w
dHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsKfQpleHRlcm4gX19pbmxpbmUgbG9uZyBp
bnQKYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpICAKewogIHJldHVybiBzdHJ0b2wgKF9fbnB0
ciwgKGNoYXIgKiopICgodm9pZCAqKTApICwgMTApOwp9CgoKX19leHRlbnNpb25fXyBleHRlcm4g
X19pbmxpbmUgbG9uZyBsb25nIGludAphdG9sbCAoX19jb25zdCBjaGFyICpfX25wdHIpICAKewog
IHJldHVybiBzdHJ0b2xsIChfX25wdHIsIChjaGFyICoqKSAoKHZvaWQgKikwKSAsIDEwKTsKfQoK
CgoKCiAKCgpleHRlcm4gY2hhciAqbDY0YSAgKGxvbmcgaW50IF9fbikgICAgOwoKIApleHRlcm4g
bG9uZyBpbnQgYTY0bCAgKF9fY29uc3QgY2hhciAqX19zKSAgICA7CgoKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3lz
L3R5cGVzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRl
L2JpdHMvdHlwZXMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoK
CgogCgoKIyAxOSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxp
Yi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAy
NjkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCgoKCgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgv
Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMg
MjkgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGlu
dXgvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiAKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9f
dV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRlbnNp
b25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRlbnNp
b25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDggIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9iaXRzL3R5
cGVzLmgiIDMKCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYgdW5zaWduZWQg
Y2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2X3Q7CnR5cGVk
ZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVkIGludCBfX2lu
dDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVuc2lvbl9fIHR5
cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lvbl9fIHR5cGVk
ZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBfX3F1YWRfdCAq
X19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CQkgCnR5cGVkZWYgX191X2lu
dCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsJCSAKdHlwZWRlZiBfX3VfbG9u
ZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CQkgCnR5cGVkZWYgX191X2lu
dCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CQkgCnR5cGVkZWYgX19x
dWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50IF9fcGlkX3Q7CQkJIAp0eXBlZGVmIGludCBf
X3NzaXplX3Q7CQkJIAp0eXBlZGVmIF9fdV9sb25nIF9fcmxpbV90OwkJIAp0eXBlZGVmIF9fdV9x
dWFkX3QgX19ybGltNjRfdDsJCSAKdHlwZWRlZiBfX3VfaW50IF9faWRfdDsJCQkgCgp0eXBlZGVm
IHN0cnVjdAogIHsKICAgIGludCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwkJCQkgCgogCnR5cGVk
ZWYgaW50IF9fZGFkZHJfdDsJCQkgCnR5cGVkZWYgY2hhciAqX19jYWRkcl90Owp0eXBlZGVmIGxv
bmcgaW50IF9fdGltZV90Owp0eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsJCSAKDAp0eXBlZGVm
IGxvbmcgaW50IF9fY2xvY2tfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZkX21h
c2s7CgogCgoKIAoKCgoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgICAKCgogICAgX19mZF9tYXNr
IGZkc19iaXRzWzEwMjQgIC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpIF07CgoKCgoKICB9IF9f
ZmRfc2V0OwoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQg
aW50IF9faXBjX3BpZF90OwoKCiAKCiAKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBl
ZGVmIF9fcXVhZF90IF9fYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250
X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9u
ZyBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCiAKdHlw
ZWRlZiBfX3VfbG9uZyBfX2lubzY0X3Q7CgogCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoK
IAp0eXBlZGVmIGxvbmcgaW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGlu
dCBfX3RfdXNjYWxhcl90OwoKIAp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCiAKCiMgMSAiL3Vz
ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNs
dWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgoK
CgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u
L2FybS1saW51eC9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CiMgNjIgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0t
bGludXgvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDMKCgoKCgogCnN0cnVjdCBfX3NjaGVkX3BhcmFt
CiAgewogICAgaW50IHNjaGVkX3ByaW9yaXR5OwogIH07CgoKIyAyMyAiL3Vzci9saWIvZ2NjLWxp
Yi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvcHRo
cmVhZHR5cGVzLmgiIDIgMwoKCiAKc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrCnsKICBsb25nIGlu
dCBfX3N0YXR1czsgICAgICAgICAgICAgCiAgaW50IF9fc3BpbmxvY2s7ICAgICAgICAgICAgICAg
IAp9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9k
ZXNjcjsKCgoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBf
X3NjaGVkcG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQg
X19pbmhlcml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGlu
dCBfX3N0YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tz
aXplOwp9IHB0aHJlYWRfYXR0cl90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRo
cmVhZF9mYXN0bG9jayBfX2NfbG9jazsgIAogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOyAg
ICAgICAgIAp9IHB0aHJlYWRfY29uZF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1
bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVh
ZF9rZXlfdDsKCgogCiAKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOyAgICAg
ICAgICAgICAgICAKICBpbnQgX19tX2NvdW50OyAgICAgICAgICAgICAgICAgICAKICBfcHRocmVh
ZF9kZXNjciBfX21fb3duZXI7ICAgICAgICAKICBpbnQgX19tX2tpbmQ7ICAgICAgICAgICAgICAg
ICAgICAKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7ICAKfSBwdGhyZWFkX211
dGV4X3Q7CgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRf
bXV0ZXhhdHRyX3Q7CgoKIAp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgoKIAp0eXBlZGVm
IHN0cnVjdCBfcHRocmVhZF9yd2xvY2tfdAp7CiAgc3RydWN0IF9wdGhyZWFkX2Zhc3Rsb2NrIF9f
cndfbG9jazsgIAogIGludCBfX3J3X3JlYWRlcnM7ICAgICAgICAgICAgICAgICAgICAKICBfcHRo
cmVhZF9kZXNjciBfX3J3X3dyaXRlcjsgICAgICAgICAgCiAgX3B0aHJlYWRfZGVzY3IgX19yd19y
ZWFkX3dhaXRpbmc7ICAgIAogIF9wdGhyZWFkX2Rlc2NyIF9fcndfd3JpdGVfd2FpdGluZzsgICAK
ICBpbnQgX19yd19raW5kOyAgICAgICAgICAgICAgICAgICAgICAgCiAgaW50IF9fcndfcHNoYXJl
ZDsgICAgICAgICAgICAgICAgICAgIAp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKIAp0eXBlZGVmIHN0
cnVjdAp7CiAgaW50IF9fbG9ja2tpbmQ7CiAgaW50IF9fcHNoYXJlZDsKfSBwdGhyZWFkX3J3bG9j
a2F0dHJfdDsKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCgojIDE1
MCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51
eC9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzCgoKCgojIDMwICIvdXNyL2xpYi9nY2MtbGliL2Fy
bS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3lzL3R5cGVzLmgi
IDIgMwoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsKdHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9y
dDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRl
ZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBf
X2ZzaWRfdCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZfdCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19p
bm9fdCBpbm9fdDsKCgoKCgoKdHlwZWRlZiBfX2lubzY0X3QgaW5vNjRfdDsKCgoKCnR5cGVkZWYg
X19kZXZfdCBkZXZfdDsKCgoKCnR5cGVkZWYgX19naWRfdCBnaWRfdDsKCgoKCnR5cGVkZWYgX19t
b2RlX3QgbW9kZV90OwoKCgoKdHlwZWRlZiBfX25saW5rX3QgbmxpbmtfdDsKCgoKCnR5cGVkZWYg
X191aWRfdCB1aWRfdDsKCgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoKCgoKCnR5cGVkZWYg
X19vZmY2NF90IG9mZjY0X3Q7CgoKCgp0eXBlZGVmIF9fcGlkX3QgcGlkX3Q7CgoKCgp0eXBlZGVm
IF9faWRfdCBpZF90OwoKCgp0eXBlZGVmIF9fc3NpemVfdCBzc2l6ZV90OwoKCgoKdHlwZWRlZiBf
X2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRyX3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBf
X2tleV90IGtleV90OwoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUu
My8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIu
OTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoKCgogCnR5
cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7CgoKCgoKCgoKCiAKdHlwZWRlZiBfX3RpbWVfdCB0aW1l
X3Q7CgoKCgoKIyA4OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4u
Ly4uL2FybS1saW51eC9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyAyNzkgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgi
IDMKCgoKIyAxMjIgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8u
Li9hcm0tbGludXgvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCiMgMSAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAx
OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
IAoKIAoKCiMgMTI2ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgogCgoKCgogCgoKIyAyNjkgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoK
CgoKCgoKCgogCgogCgojIDMxNyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCiAKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMTI1ICIvdXNy
L2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1
ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCgogCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgdWxvbmc7
CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQg
dWludDsKCgogCgojIDE1OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u
Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy90eXBlcy5oIiAzCgoKIAoKCgoKCgoKdHlwZWRl
ZiBpbnQgaW50OF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1FJX18gKSkpIDsKdHlw
ZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9fICkpKSA7
CnR5cGVkZWYgaW50IGludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lfXyAp
KSkgOwp0eXBlZGVmIGludCBpbnQ2NF90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX0RJ
X18gKSkpIDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50MTZfdCBf
X2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ISV9fICkpKSA7CnR5cGVkZWYgdW5zaWduZWQg
aW50IHVfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19TSV9fICkpKSA7CnR5
cGVkZWYgdW5zaWduZWQgaW50IHVfaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAg
X19ESV9fICkpKSA7Cgp0eXBlZGVmIGludCByZWdpc3Rlcl90IF9fYXR0cmlidXRlX18gKChfX21v
ZGVfXyAoX193b3JkX18pKSk7CgoKIAoKCgoKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0t
bGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2VuZGlhbi5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxp
Yi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvZW5k
aWFuLmgiIDEgMwogCgoKCgoKCgoKCgoKIyAzNSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgv
Mi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKCgogCgoK
CgoKCgoKCgoKCgojIDE5MSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u
Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRl
L3N5cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgogCgoKIAojIDEg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCiMgMzEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8u
Li9hcm0tbGludXgvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKIyAxICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0
cy9zaWdzZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBpbnQgX19zaWdf
YXRvbWljX3Q7CgogCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICB1bnNpZ25lZCBsb25nIGludCBf
X3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKSBdOwogIH0gX19z
aWdzZXRfdDsKCgoKCiAKCgoKCgojIDEyNSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDMKCiMgMzQg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0t
bGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3RpbWUuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9saWIvZ2NjLWxpYi9h
cm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3RpbWUuaCIgMwoK
CgojIDYyICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJt
LWxpbnV4L2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgNzMgIi91c3IvbGliL2djYy1saWIvYXJtLWxp
bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDMKCgoKCgoK
CgogCgpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CQkgCiAgICBsb25n
IGludCB0dl9uc2VjOwkJIAogIH07CgoKCgoKIyAyNzkgIi91c3IvbGliL2djYy1saWIvYXJtLWxp
bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAz
OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51
eC9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIAoKIAoKCgpzdHJ1Y3QgdGltZXZhbDsKCnR5
cGVkZWYgX19mZF9tYXNrIGZkX21hc2s7CgogCnR5cGVkZWYgX19mZF9zZXQgZmRfc2V0OwoKIAoK
CgogCgoKCgogCgoKCgoKCiAKCgoKCmV4dGVybiBpbnQgX19zZWxlY3QgIChpbnQgX19uZmRzLCBf
X2ZkX3NldCAqX19yZWFkZmRzLAoJCQkgIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAq
X19leGNlcHRmZHMsCgkJCSAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgICAgOwpleHRlcm4g
aW50IHNlbGVjdCAgKGludCBfX25mZHMsIF9fZmRfc2V0ICpfX3JlYWRmZHMsCgkJCV9fZmRfc2V0
ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRmZHMsCgkJCXN0cnVjdCB0aW1ldmFsICpf
X3RpbWVvdXQpICAgIDsKCgogCgogCgoKZXh0ZXJuIGludCBwc2VsZWN0ICAoaW50IF9fbmZkcywg
X19mZF9zZXQgKl9fcmVhZGZkcywKCQkJIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAq
X19leGNlcHRmZHMsCgkJCSBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdGltZW91dCwKCQkJIGNv
bnN0IF9fc2lnc2V0X3QgKl9fc2lnbWFzaykgICAgOwoKCiAKCgojIDE5NCAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy90
eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u
Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgNDcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4
LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMK
CgoKIyAxOTcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9h
cm0tbGludXgvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgogCgp0eXBlZGVmIF9fYmxrY250
X3QgYmxrY250X3Q7CSAgCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7ICAKdHlwZWRl
ZiBfX2ZzZmlsY250X3QgZnNmaWxjbnRfdDsgIAoKCgoKCgoKdHlwZWRlZiBfX2Jsa2NudDY0X3Qg
YmxrY250NjRfdDsgICAgICAKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Jsa2NudDY0X3Q7ICAK
dHlwZWRlZiBfX2ZzZmlsY250NjRfdCBmc2ZpbGNudDY0X3Q7ICAKCgogCgoKIyAzMzkgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk
ZS9zdGRsaWIuaCIgMiAzCgoKIAoKCgogCmV4dGVybiBpbnQzMl90IHJhbmRvbSAgKHZvaWQpICAg
IDsKCiAKZXh0ZXJuIHZvaWQgc3JhbmRvbSAgKHVuc2lnbmVkIGludCBfX3NlZWQpICAgIDsKCiAK
CgoKZXh0ZXJuIHZvaWQgKiAgaW5pdHN0YXRlICAodW5zaWduZWQgaW50IF9fc2VlZCwgdm9pZCAq
ICBfX3N0YXRlYnVmLAoJCQkgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4pICAgIDsKCiAKCmV4dGVy
biB2b2lkICogIHNldHN0YXRlICAodm9pZCAqICBfX3N0YXRlYnVmKSAgICA7CgoKCiAKCgoKc3Ry
dWN0IHJhbmRvbV9kYXRhCiAgewogICAgaW50MzJfdCAqZnB0cjsJCSAKICAgIGludDMyX3QgKnJw
dHI7CQkgCiAgICBpbnQzMl90ICpzdGF0ZTsJCSAKICAgIGludCByYW5kX3R5cGU7CQkgCiAgICBp
bnQgcmFuZF9kZWc7CQkgCiAgICBpbnQgcmFuZF9zZXA7CQkgCiAgICBpbnQzMl90ICplbmRfcHRy
OwkJIAogIH07CgpleHRlcm4gaW50IHJhbmRvbV9yICAoc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jl
c3RyaWN0IF9fYnVmLAoJCQkgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKCmV4
dGVybiBpbnQgc3JhbmRvbV9yICAodW5zaWduZWQgaW50IF9fc2VlZCwgc3RydWN0IHJhbmRvbV9k
YXRhICpfX2J1ZikgICAgOwoKZXh0ZXJuIGludCBpbml0c3RhdGVfciAgKHVuc2lnbmVkIGludCBf
X3NlZWQsCgkJCSAgICAgdm9pZCAqICBfX3Jlc3RyaWN0IF9fc3RhdGVidWYsCgkJCSAgICAgc2l6
ZV90IF9fc3RhdGVsZW4sCgkJCSAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9f
YnVmKSAgICA7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgICh2b2lkICogIF9fcmVzdHJpY3QgX19z
dGF0ZWJ1ZiwKCQkJICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZikgICAg
OwoKCgoKIApleHRlcm4gaW50IHJhbmQgICh2b2lkKSAgICA7CiAKZXh0ZXJuIHZvaWQgc3JhbmQg
ICh1bnNpZ25lZCBpbnQgX19zZWVkKSAgICA7CgoKIApleHRlcm4gaW50IHJhbmRfciAgKHVuc2ln
bmVkIGludCAqX19zZWVkKSAgICA7CgoKCgogCgogCmV4dGVybiBkb3VibGUgZHJhbmQ0OCAgKHZv
aWQpICAgIDsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1
YmlbM10pICAgIDsKCiAKZXh0ZXJuIGxvbmcgaW50IGxyYW5kNDggICh2b2lkKSAgICA7CmV4dGVy
biBsb25nIGludCBucmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsK
CiAKZXh0ZXJuIGxvbmcgaW50IG1yYW5kNDggICh2b2lkKSAgICA7CmV4dGVybiBsb25nIGludCBq
cmFuZDQ4ICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10pICAgIDsKCiAKZXh0ZXJuIHZv
aWQgc3JhbmQ0OCAgKGxvbmcgaW50IF9fc2VlZHZhbCkgICAgOwpleHRlcm4gdW5zaWduZWQgc2hv
cnQgaW50ICpzZWVkNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSAgICA7CmV4
dGVybiB2b2lkIGxjb25nNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSkgICAgOwoK
IApzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IHhbM107CSAK
ICAgIHVuc2lnbmVkIHNob3J0IGludCBhWzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYzsJ
IAogICAgdW5zaWduZWQgc2hvcnQgaW50IG9sZF94WzNdOyAgCiAgICBpbnQgaW5pdDsJCQkgCiAg
fTsKCgogCmV4dGVybiBpbnQgZHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0
cmljdCBfX2J1ZmZlciwKCQkJICAgZG91YmxlICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CmV4
dGVybiBpbnQgZXJhbmQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAg
IHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgICAgOwoKIApleHRlcm4gaW50IGxyYW5kNDhfciAgKHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jl
c3RyaWN0IF9fcmVzdWx0KSAgICA7CmV4dGVybiBpbnQgbnJhbmQ0OF9yICAodW5zaWduZWQgc2hv
cnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3Qg
X19idWZmZXIsCgkJCSAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSAgICA7CgogCmV4
dGVybiBpbnQgbXJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1
ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICAgIDsKZXh0ZXJuIGlu
dCBqcmFuZDQ4X3IgICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKCQkJICAgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVz
dHJpY3QgX19yZXN1bHQpICAgIDsKCiAKZXh0ZXJuIGludCBzcmFuZDQ4X3IgIChsb25nIGludCBf
X3NlZWR2YWwsIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fYnVmZmVyKSAgICA7CgpleHRlcm4gaW50
IHNlZWQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSwKCQkJICBzdHJ1Y3Qg
ZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgICAgOwoKZXh0ZXJuIGludCBsY29uZzQ4X3IgICh1bnNp
Z25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKCQkJICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19i
dWZmZXIpICAgIDsKCgoKCgoKCgoKCgoKCgogCgpleHRlcm4gdm9pZCAqICByZWFsbG9jICAodm9p
ZCAqICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgICAgOwogCmV4dGVybiB2b2lkIGZyZWUgICh2b2lk
ICogIF9fcHRyKSAgICA7CgoKIApleHRlcm4gdm9pZCBjZnJlZSAgKHZvaWQgKiAgX19wdHIpICAg
IDsKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4v
YXJtLWxpbnV4L2luY2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIg
MSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xpYi9nY2MtbGli
L2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4
LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdXNyL2xp
Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCiAKCgoK
CiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9nY2MtbGliL2Fy
bS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoKCgoKCgoKIAoK
CgoKCgoKIyAyNSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u
L2FybS1saW51eC9pbmNsdWRlL2FsbG9jYS5oIiAyIDMKCgogCgogCgoKIApleHRlcm4gdm9pZCAq
ICBhbGxvY2EgIChzaXplX3QgX19zaXplKSAgICA7CgoKCgoKIAoKCiMgNDkyICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3Rk
bGliLmgiIDIgMwoKCgoKIApleHRlcm4gdm9pZCAqICB2YWxsb2MgIChzaXplX3QgX19zaXplKSAg
ICA7CgoKCiAKZXh0ZXJuIHZvaWQgYWJvcnQgICh2b2lkKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9f
bm9yZXR1cm5fXykpOwoKCiAKZXh0ZXJuIGludCBhdGV4aXQgICh2b2lkICgqX19mdW5jKSAodm9p
ZCkpICAgIDsKCgogCgpleHRlcm4gaW50IF9fb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQg
X19zdGF0dXMsIHZvaWQgKiAgX19hcmcpLAoJCQkgICB2b2lkICogIF9fYXJnKSAgICA7CmV4dGVy
biBpbnQgb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQgKiAgX19h
cmcpLAoJCQkgdm9pZCAqICBfX2FyZykgICAgOwoKCiAKCgpleHRlcm4gdm9pZCBleGl0ICAoaW50
IF9fc3RhdHVzKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCiAKCmV4dGVy
biB2b2lkIF9FeGl0ICAoaW50IF9fc3RhdHVzKSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1
cm5fXykpOwoKCgogCmV4dGVybiBjaGFyICpnZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
ICAgOwoKIAoKZXh0ZXJuIGNoYXIgKl9fc2VjdXJlX2dldGVudiAgKF9fY29uc3QgY2hhciAqX19u
YW1lKSAgICA7CgoKIAogCgpleHRlcm4gaW50IHB1dGVudiAgKGNoYXIgKl9fc3RyaW5nKSAgICA7
CgoKCiAKCmV4dGVybiBpbnQgc2V0ZW52ICAoX19jb25zdCBjaGFyICpfX25hbWUsIF9fY29uc3Qg
Y2hhciAqX192YWx1ZSwKCQkJaW50IF9fcmVwbGFjZSkgICAgOwoKIApleHRlcm4gdm9pZCB1bnNl
dGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgICA7CgoKCiAKCgpleHRlcm4gaW50IGNsZWFy
ZW52ICAodm9pZCkgICAgOwoKCgoKIAoKCgpleHRlcm4gY2hhciAqbWt0ZW1wICAoY2hhciAqX190
ZW1wbGF0ZSkgICAgOwoKIAoKCgoKZXh0ZXJuIGludCBta3N0ZW1wICAoY2hhciAqX190ZW1wbGF0
ZSkgICAgOwoKCgogCmV4dGVybiBpbnQgc3lzdGVtICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQp
ICAgIDsKCgoKIAoKCmV4dGVybiBjaGFyICpjYW5vbmljYWxpemVfZmlsZV9uYW1lICAoX19jb25z
dCBjaGFyICpfX25hbWUpICAgIDsKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCgkJCSAgICBjaGFyICpfX3Jlc3RyaWN0IF9f
cmVzb2x2ZWQpICAgIDsKCgoKIAoKCnR5cGVkZWYgaW50ICgqX19jb21wYXJfZm5fdCkgIChfX2Nv
bnN0IHZvaWQgKiAsIF9fY29uc3Qgdm9pZCAqICkgIDsKCgp0eXBlZGVmIF9fY29tcGFyX2ZuX3Qg
Y29tcGFyaXNvbl9mbl90OwoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNoICAoX19jb25zdCB2
b2lkICogIF9fa2V5LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAgICAgc2l6ZV90IF9f
bm1lbWIsIHNpemVfdCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSAg
OwoKIAoKZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIs
IHNpemVfdCBfX3NpemUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikgIDsKCgogCmV4dGVy
biBpbnQgYWJzICAoaW50IF9feCkgICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0
ZXJuIGxvbmcgaW50IGxhYnMgIChsb25nIGludCBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICgoX19j
b25zdF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50IGxsYWJzICAobG9u
ZyBsb25nIGludCBfX3gpICAgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK
IAoKIApleHRlcm4gZGl2X3QgZGl2ICAoaW50IF9fbnVtZXIsIGludCBfX2Rlbm9tKSAgICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRlcm4gbGRpdl90IGxkaXYgIChsb25nIGludCBf
X251bWVyLCBsb25nIGludCBfX2Rlbm9tKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsbGRpdl90IGxsZGl2ICAobG9uZyBsb25nIGlu
dCBfX251bWVyLAoJCQkJCSBsb25nIGxvbmcgaW50IF9fZGVub20pICAgIAogICAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCiAKCgogCgoKZXh0ZXJuIGNoYXIgKmVjdnQgIChkb3Vi
bGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50
ICpfX3Jlc3RyaWN0IF9fc2lnbikgICAgOwoKIAoKCmV4dGVybiBjaGFyICpmY3Z0ICAoZG91Ymxl
IF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCgkJCWludCAq
X19yZXN0cmljdCBfX3NpZ24pICAgIDsKCiAKCgpleHRlcm4gY2hhciAqZ2N2dCAgKGRvdWJsZSBf
X3ZhbHVlLCBpbnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgICA7CgogCmV4dGVybiBjaGFyICpx
ZWN2dCAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCgkJCSBpbnQgKl9fcmVz
dHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgICAgOwpleHRlcm4gY2hhciAq
cWZjdnQgIChsb25nIGRvdWJsZSAgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAoJCQkgaW50ICpfX3Jl
c3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmljdCBfX3NpZ24pICAgIDsKZXh0ZXJuIGNoYXIg
KnFnY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYp
ICAgIDsKCgoKIAoKZXh0ZXJuIGludCBlY3Z0X3IgIChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRp
Z2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKCQkJaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwg
Y2hhciAqX19yZXN0cmljdCBfX2J1ZiwKCQkJc2l6ZV90IF9fbGVuKSAgICA7CmV4dGVybiBpbnQg
ZmN2dF9yICAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3RyaWN0IF9f
ZGVjcHQsCgkJCWludCAqX19yZXN0cmljdCBfX3NpZ24sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs
CgkJCXNpemVfdCBfX2xlbikgICAgOwoKZXh0ZXJuIGludCBxZWN2dF9yICAobG9uZyBkb3VibGUg
IF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQg
Kl9fcmVzdHJpY3QgX19zaWduLAoJCQkgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f
bGVuKSAgICA7CmV4dGVybiBpbnQgcWZjdnRfciAgKGxvbmcgZG91YmxlICBfX3ZhbHVlLCBpbnQg
X19uZGlnaXQsCgkJCSBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9f
c2lnbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsIHNpemVfdCBfX2xlbikgICAgOwoKCgoK
IAoKZXh0ZXJuIGludCBtYmxlbiAgKF9fY29uc3QgY2hhciAqX19zLCBzaXplX3QgX19uKSAgICA7
CiAKCmV4dGVybiBpbnQgbWJ0b3djICAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywKCQkJX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgICAgOwogCgpleHRlcm4gaW50
IHdjdG9tYiAgKGNoYXIgKl9fcywgd2NoYXJfdCBfX3djaGFyKSAgICA7CgoKIApleHRlcm4gc2l6
ZV90IG1ic3Rvd2NzICAod2NoYXJfdCAqX19yZXN0cmljdCAgX19wd2NzLAoJCQkgICAgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24pICAgIDsKIApleHRlcm4gc2l6ZV90
IHdjc3RvbWJzICAoY2hhciAqX19yZXN0cmljdCBfX3MsCgkJCSAgICAgX19jb25zdCB3Y2hhcl90
ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikgICAgOwoKCgogCgoKCmV4dGVybiBpbnQg
cnBtYXRjaCAgKF9fY29uc3QgY2hhciAqX19yZXNwb25zZSkgICAgOwoKCgoKIAoKCgoKCmV4dGVy
biBpbnQgZ2V0c3Vib3B0ICAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAoJCQkgICBfX2Nv
bnN0IGNoYXIgKl9fY29uc3QgKl9fcmVzdHJpY3QgX190b2tlbnMsCgkJCSAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fdmFsdWVwKSAgICA7CgoKCgoKIApleHRlcm4gdm9pZCBzZXRrZXkgIChfX2NvbnN0
IGNoYXIgKl9fa2V5KSAgICA7CgogCgogCgoKIApleHRlcm4gaW50IGdyYW50cHQgIChpbnQgX19m
ZCkgICAgOwoKIAoKZXh0ZXJuIGludCB1bmxvY2twdCAgKGludCBfX2ZkKSAgICA7CgogCgoKZXh0
ZXJuIGNoYXIgKnB0c25hbWUgIChpbnQgX19mZCkgICAgOwoKCgogCgoKZXh0ZXJuIGludCBwdHNu
YW1lX3IgIChpbnQgX19mZCwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1ZmxlbikgICAgOwoKIApl
eHRlcm4gaW50IGdldHB0ICAodm9pZCkgICAgOwoKCgoKCiAKCgojIDE1NyAiLi4vLi4vaW5jbHVk
ZS9taXNjLmgiIDIKCgoKCgoKCiAKCiAKCgoKCgoKCgoKIAojIDEgIi91c3IvbGliL2djYy1saWIv
YXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKCgoKIAoKCgogCgoKCiAKCgoK
CiAKCgoKCgogCgoKCiAKCgoKCgoKCgoKCgoKIAoKIAoKCgoKIAoKCgogCgoKCgoKCgoKIAoKCgog
CgoKCgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKIAoKCgoKCgojIDE3NyAiLi4vLi4vaW5jbHVk
ZS9taXNjLmgiIDIKCgoKIAoKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4
LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRoLmgiIDEgMwogCgoKCgoK
CgoKCgoKCgoKCgoKCiAKCgoKCgoKCgogCgogCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxp
bnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9iaXRzL2h1Z2VfdmFsLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiMgNTMgIi91c3IvbGli
L2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9i
aXRzL2h1Z2VfdmFsLmgiIDMKCgoKIAoKCgoKCgoKCgoKIyA4MSAiL3Vzci9saWIvZ2NjLWxpYi9h
cm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvaHVnZV92
YWwuaCIgMwoKCgogCgoKCgojIDMzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv
Li4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgogCgojIDEgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVk
ZS9iaXRzL25hbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgojIDQ4
ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4
L2luY2x1ZGUvYml0cy9uYW4uaCIgMwoKIyAzNyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgv
Mi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL21hdGguaCIgMiAzCgoKIAojIDEg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9iaXRzL21hdGhkZWYuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAp0
eXBlZGVmIGZsb2F0IGZsb2F0X3Q7CQkgCgp0eXBlZGVmIGRvdWJsZSBkb3VibGVfdDsJIAoKCiAK
CgogCgoKCiAKCgoKIAoKCgoKCiAKCiAKCgoKIyA0MCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL21hdGguaCIgMiAzCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4z
Ly4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMwogCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgYWNvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19hY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7
CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbiAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhdGFuICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW4gICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbjIgICAgICAgICAg
KGRvdWJsZSAgX195LCBkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2F0YW4yICAgICAgICAgIChkb3VibGUgIF9feSwgZG91YmxlICBfX3gpICAgICAgOwoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgY29zICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRl
cm4gICBkb3VibGUgICAgICAgICBfX2NvcyAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwog
CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzaW4gICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2luICAgICAgICAgIChkb3VibGUgIF9feCkgICAg
ICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRhbiAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX190YW4gICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKCgogCmV4dGVybiAgIHZvaWQgICAgICAgIHNpbmNvcyAgICAgICAKCSAgICAoZG91
YmxlICBfX3gsIGRvdWJsZSAgKl9fc2lueCwgZG91YmxlICAqX19jb3N4KSAgIDsgZXh0ZXJuICAg
dm9pZCAgICAgICAgX19zaW5jb3MgICAgICAgIAkgICAgKGRvdWJsZSAgX194LCBkb3VibGUgICpf
X3NpbngsIGRvdWJsZSAgKl9fY29zeCkgICAgOwoKCiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgIGNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fY29zaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBzaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX3NpbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX190YW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoK
IApleHRlcm4gICBkb3VibGUgICAgICAgICAgYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYWNvc2ggICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXNpbmggICAgICAgICAgKGRvdWJs
ZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXNpbmggICAgICAgICAgKGRv
dWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbmggICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYXRhbmggICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg
ICBleHAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAg
IF9fZXhwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUg
ICAgICAgICAgZXhwMTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJs
ZSAgICAgICAgIF9fZXhwMTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgcG93MTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVy
biAgIGRvdWJsZSAgICAgICAgIF9fcG93MTAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsK
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmcmV4cCAgICAgICAgICAoZG91YmxlICBfX3gs
IGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2ZyZXhwICAg
ICAgICAgIChkb3VibGUgIF9feCwgaW50ICpfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgIGxkZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fZXhwb25l
bnQpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19sZGV4cCAgICAgICAgICAoZG91Ymxl
ICBfX3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IGxvZyAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X19sb2cgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGxvZzEwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX2xvZzEwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBtb2RmICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19p
cHRyKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbW9kZiAgICAgICAgICAoZG91Ymxl
ICBfX3gsIGRvdWJsZSAgKl9faXB0cikgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAg
ICAgZXhwbTEgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fZXhwbTEgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIGxvZzFwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2xvZzFwICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4
dGVybiAgIGRvdWJsZSAgICAgICAgICBsb2diICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBl
eHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZ2IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAg
IDsKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZXhwMiAgICAgICAgICAoZG91YmxlICBf
X3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHAyICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBsb2cyICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZzIgICAgICAgICAg
KGRvdWJsZSAgX194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgcG93
ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19wb3cgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzcXJ0ICAgICAgICAgIChkb3VibGUgIF9feCkg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NxcnQgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBoeXBvdCAgICAgICAgICAoZG91
YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9faHlw
b3QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKCiAKZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgIGNicnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVy
biAgIGRvdWJsZSAgICAgICAgIF9fY2JydCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoK
CgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjZWlsICAgICAgICAgIChkb3VibGUgIF9f
eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NlaWwgICAgICAgICAgKGRvdWJsZSAg
X194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGZhYnMgICAgICAgICAgKGRv
dWJsZSAgX194KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX2ZhYnMgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgX19hdHRy
aWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAg
ICBmbG9vciAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19mbG9vciAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3Vi
bGUgICAgICAgICAgZm1vZCAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICA7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZm1vZCAgICAgICAgICAoZG91YmxlICBfX3gsIGRv
dWJsZSAgX195KSAgICAgIDsKCgogCgpleHRlcm4gIGludCAgICAgX19pc2luZiAgICAgIChkb3Vi
bGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGlu
dCAgICAgX19maW5pdGUgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgogCgpleHRlcm4gIGludCAgICAgaXNpbmYgICAgICAoZG91YmxlICBfX3Zh
bHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgIGZp
bml0ZSAgICAgIChkb3VibGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKIAoKCgoKCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBpbmZuYW4gICAgICAgICAgKGludCBf
X2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2luZm5hbiAgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJp
YnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IGRyZW0gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2RyZW0gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkg
ICAgICA7CgoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2lnbmlmaWNhbmQgICAgICAgICAg
KGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fc2lnbmlmaWNhbmQg
ICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgoKIApleHRlcm4gICBkb3VibGUgICAgICAg
ICAgY29weXNpZ24gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgIF9fYXR0
cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19j
b3B5c2lnbiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgX19hdHRyaWJ1
dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IG5hbiAgICAgICAgICAoX19jb25zdCBjaGFyICpfX3RhZ2IpICAgICBfX2F0dHJpYnV0ZV9fICgg
ICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbmFuICAgICAgICAg
IChfX2NvbnN0IGNoYXIgKl9fdGFnYikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9f
KSAgKSAgOwoKCgogCmV4dGVybiAgaW50ICAgICBfX2lzbmFuICAgICAgKGRvdWJsZSAgX192YWx1
ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIApleHRlcm4gIGludCAgICAgaXNu
YW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK
CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGowICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4
dGVybiAgIGRvdWJsZSAgICAgICAgIF9fajAgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRl
cm4gICBkb3VibGUgICAgICAgICAgajEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19qMSAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRv
dWJsZSAgICAgICAgICBqbiAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICA7IGV4dGVybiAgIGRv
dWJsZSAgICAgICAgIF9fam4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgICA7CmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICB5MCAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX3kwICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIHkxICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9feTEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAg
ICAgeW4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAg
ICBfX3luICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgICAgOwoKCgoKIApleHRlcm4gICBkb3Vi
bGUgICAgICAgICAgZXJmICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9fZXJmICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGVyZmMgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19lcmZjICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgIGxnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAg
ICBfX2xnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAg
ICAgICB0Z2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX190Z2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwoKCgogCmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUg
ICAgICAgICBfX2dhbW1hICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKCgoKIAoKCmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBsZ2FtbWFfciAgICAgICAgICAgICAgKGRvdWJsZSAsIGludCAqX19z
aWduZ2FtcCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xnYW1tYV9yICAgICAgICAg
ICAgICAoZG91YmxlICwgaW50ICpfX3NpZ25nYW1wKSAgICAgIDsKCgoKCiAKCmV4dGVybiAgIGRv
dWJsZSAgICAgICAgICByaW50ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX3JpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0
ZXJuICAgZG91YmxlICAgICAgICAgIG5leHRhZnRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRv
dWJsZSAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4g
ICBkb3VibGUgICAgICAgICBfX25leHRhZnRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgpleHRlcm4g
ICBkb3VibGUgICAgICAgICAgbmV4dHRvd2FyZCAgICAgICAgICAoZG91YmxlICBfX3gsIGxvbmcg
ZG91YmxlIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX19uZXh0dG93YXJkICAgICAgICAgIChkb3VibGUgIF9feCwgbG9u
ZyBkb3VibGUgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoK
IApleHRlcm4gICBkb3VibGUgICAgICAgICAgcmVtYWluZGVyICAgICAgICAgIChkb3VibGUgIF9f
eCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1haW5kZXIg
ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKIApleHRlcm4gICBk
b3VibGUgICAgICAgICAgc2NhbGIgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9fbikg
ICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxiICAgICAgICAgIChkb3VibGUgIF9f
eCwgZG91YmxlICBfX24pICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHNjYWxi
biAgICAgICAgICAoZG91YmxlICBfX3gsIGludCBfX24pICAgIDsgZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgX19zY2FsYm4gICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19uKSAgICAgIDsKCiAK
ZXh0ZXJuICAgaW50ICAgICAgICBpbG9nYiAgICAgICAgKGRvdWJsZSAgX194KSAgIDsgZXh0ZXJu
ICAgaW50ICAgICAgICBfX2lsb2diICAgICAgICAoZG91YmxlICBfX3gpICAgIDsKCgoKIApleHRl
cm4gICBkb3VibGUgICAgICAgICAgc2NhbGJsbiAgICAgICAgICAoZG91YmxlICBfX3gsIGxvbmcg
aW50IF9fbikgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NjYWxibG4gICAgICAgICAg
KGRvdWJsZSAgX194LCBsb25nIGludCBfX24pICAgICAgOwoKIAoKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIG5lYXJieWludCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91
YmxlICAgICAgICAgX19uZWFyYnlpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAK
CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICByb3VuZCAgICAgICAgICAoZG91YmxlICBfX3gpICAg
IDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yb3VuZCAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgICAgOwoKIAoKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHRydW5jICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX190cnVuYyAgICAgICAgICAoZG91YmxlICBfX3gpICAgICBfX2F0dHJp
YnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCiAKCgpleHRlcm4gICBkb3VibGUgICAgICAg
ICAgcmVtcXVvICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3ksIGludCAqX19xdW8p
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19yZW1xdW8gICAgICAgICAgKGRvdWJsZSAg
X194LCBkb3VibGUgIF9feSwgaW50ICpfX3F1bykgICAgICA7CgoKIAoKIAoKZXh0ZXJuICAgbG9u
ZyBpbnQgICAgICAgIGxyaW50ICAgICAgICAoZG91YmxlICBfX3gpICAgOyBleHRlcm4gICBsb25n
IGludCAgICAgICAgX19scmludCAgICAgICAgKGRvdWJsZSAgX194KSAgICA7CmV4dGVybiAgIGxv
bmcgbG9uZyBpbnQgICAgICAgIGxscmludCAgICAgICAgKGRvdWJsZSAgX194KSAgIDsgZXh0ZXJu
ICAgbG9uZyBsb25nIGludCAgICAgICAgX19sbHJpbnQgICAgICAgIChkb3VibGUgIF9feCkgICAg
OwoKIAoKZXh0ZXJuICAgbG9uZyBpbnQgICAgICAgIGxyb3VuZCAgICAgICAgKGRvdWJsZSAgX194
KSAgIDsgZXh0ZXJuICAgbG9uZyBpbnQgICAgICAgIF9fbHJvdW5kICAgICAgICAoZG91YmxlICBf
X3gpICAgIDsKZXh0ZXJuICAgbG9uZyBsb25nIGludCAgICAgICAgbGxyb3VuZCAgICAgICAgKGRv
dWJsZSAgX194KSAgIDsgZXh0ZXJuICAgbG9uZyBsb25nIGludCAgICAgICAgX19sbHJvdW5kICAg
ICAgICAoZG91YmxlICBfX3gpICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmZGlt
ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19mZGltICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAg
OwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZm1heCAgICAgICAgICAoZG91YmxlICBfX3gs
IGRvdWJsZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZm1heCAgICAgICAg
ICAoZG91YmxlICBfX3gsIGRvdWJsZSAgX195KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGZtaW4gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRl
cm4gICBkb3VibGUgICAgICAgICBfX2ZtaW4gICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUg
IF9feSkgICAgICA7CgoKIApleHRlcm4gIGludCAgICAgIF9fZnBjbGFzc2lmeSAgICAgIChkb3Vi
bGUgIF9fdmFsdWUpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVy
biAgaW50ICAgICAgX19zaWduYml0ICAgICAgKGRvdWJsZSAgX192YWx1ZSkgIAogICAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBmbWEg
ICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSwgZG91YmxlICBfX3opICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19mbWEgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUg
IF9feSwgZG91YmxlICBfX3opICAgICAgOwoKIyA2MyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL21hdGguaCIgMiAzCgoKCgoK
CgogCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4v
Li4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiAKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIGFjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAg
IGZsb2F0ICAgICAgICAgX19hY29zZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0
ZXJuICAgZmxvYXQgICAgICAgICAgYXNpbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0
ZXJuICAgZmxvYXQgICAgICAgICBfX2FzaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBhdGFuZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
ICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW4yZiAgICAgICAgIChmbG9hdCAgIF9f
eSwgZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2F0YW4yZiAgICAg
ICAgIChmbG9hdCAgIF9feSwgZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBjb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19jb3NmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBzaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19zaW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICB0YW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX190YW5mICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgogCmV4dGVy
biAgIHZvaWQgICAgICAgc2luY29zZiAgICAgIAoJICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAq
X19zaW54LCBmbG9hdCAgICpfX2Nvc3gpICAgOyBleHRlcm4gICB2b2lkICAgICAgIF9fc2luY29z
ZiAgICAgICAJICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICAqX19zaW54LCBmbG9hdCAgICpfX2Nv
c3gpICAgIDsKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGNvc2hmICAgICAgICAgKGZs
b2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NoZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2luaGYgICAgICAg
ICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3NpbmhmICAgICAg
ICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICB0YW5oZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fdGFuaGYg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
YWNvc2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAg
X19hY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAg
ICAgICAgIGFzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fYXNpbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICBhdGFuaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX2F0YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKIAoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7
IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19leHBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg
IDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGV4cDEwZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXhwMTBmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBwb3cxMGYgICAgICAgICAoZmxv
YXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3BvdzEwZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmcmV4cGYgICAg
ICAgICAoZmxvYXQgICBfX3gsIGludCAqX19leHBvbmVudCkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fZnJleHBmICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgKl9fZXhwb25lbnQpICAg
ICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBsZGV4cGYgICAgICAgICAoZmxvYXQgICBf
X3gsIGludCBfX2V4cG9uZW50KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sZGV4cGYg
ICAgICAgICAoZmxvYXQgICBfX3gsIGludCBfX2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAg
ZmxvYXQgICAgICAgICAgbG9nZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBm
bG9hdCAgICAgICAgIF9fbG9nZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVy
biAgIGZsb2F0ICAgICAgICAgIGxvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRl
cm4gICBmbG9hdCAgICAgICAgIF9fbG9nMTBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK
CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbW9kZmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZs
b2F0ICAgKl9faXB0cikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbW9kZmYgICAgICAg
ICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgKl9faXB0cikgICAgICA7CgoKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBleHBtMWYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2V4cG0xZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCmV4dGVy
biAgIGZsb2F0ICAgICAgICAgIGxvZzFwZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRl
cm4gICBmbG9hdCAgICAgICAgIF9fbG9nMXBmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsK
CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbG9nYmYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
IDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZ2JmICAgICAgICAgKGZsb2F0ICAgX194KSAg
ICAgIDsKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBleHAyZiAgICAgICAgIChmbG9hdCAg
IF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZXhwMmYgICAgICAgICAoZmxvYXQg
ICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2cyZiAgICAgICAgIChm
bG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbG9nMmYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgICAgOwoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHBvd2Yg
ICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19wb3dmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7Cgog
CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHNxcnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7
IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zcXJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
ICA7CgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBoeXBvdGYgICAgICAgICAoZmxvYXQgICBf
X3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19oeXBvdGYgICAg
ICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgoKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBjYnJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fY2JydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKCgogCgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIGNlaWxmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4
dGVybiAgIGZsb2F0ICAgICAgICAgX19jZWlsZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7
CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZhYnNmICAgICAgICAgKGZsb2F0ICAgX194KSAg
ICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fZmFic2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAg
KF9fY29uc3RfXykgICkgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZmxvb3JmICAgICAg
ICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19mbG9vcmYgICAg
ICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbW9k
ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2Ztb2RmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7
CgoKIAoKZXh0ZXJuICBpbnQgICAgX19pc2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBfX2Zpbml0ZWYgICAg
IChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCiAKCmV4
dGVybiAgaW50ICAgIGlzaW5mZiAgICAgKGZsb2F0ICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9f
ICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgaW50ICAgIGZpbml0ZWYgICAgIChmbG9hdCAgIF9f
dmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIAoKCgoKCmV4dGVybiAgIGZs
b2F0ICAgICAgICAgIGluZm5hbmYgICAgICAgICAoaW50IF9fZXJyb3IpICAgICBfX2F0dHJpYnV0
ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19pbmZuYW5m
ICAgICAgICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18p
ICApICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGRyZW1mICAgICAgICAgKGZsb2F0ICAg
X194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZHJlbWYgICAg
ICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIHNpZ25pZmljYW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4g
ICBmbG9hdCAgICAgICAgIF9fc2lnbmlmaWNhbmRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAg
IDsKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBjb3B5c2lnbmYgICAgICAgICAoZmxvYXQg
ICBfX3gsIGZsb2F0ICAgX195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICAp
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fY29weXNpZ25mICAgICAgICAgKGZsb2F0ICAgX194
LCBmbG9hdCAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoK
CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIG5hbmYgICAgICAgICAoX19jb25zdCBjaGFyICpf
X3RhZ2IpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZs
b2F0ICAgICAgICAgX19uYW5mICAgICAgICAgKF9fY29uc3QgY2hhciAqX190YWdiKSAgICAgX19h
dHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgoKCiAKZXh0ZXJuICBpbnQgICAgX19p
c25hbmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp
OwoKCiAKZXh0ZXJuICBpbnQgICAgaXNuYW5mICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9fYXR0
cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajBmICAg
ICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2owZiAgICAgICAg
IChmbG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgajFmICAgICAgICAgKGZs
b2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2oxZiAgICAgICAgIChmbG9hdCAg
KSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgam5mICAgICAgICAgKGludCwgZmxvYXQg
ICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fam5mICAgICAgICAgKGludCwgZmxvYXQg
ICkgICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkwZiAgICAgICAgIChmbG9hdCAgKSAg
ICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195MGYgICAgICAgICAoZmxvYXQgICkgICAgICA7
CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIHkxZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX195MWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIHluZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX3luZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgICAgOwoKCgoKIApl
eHRlcm4gICBmbG9hdCAgICAgICAgICBlcmZmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX2VyZmYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAg
IGZsb2F0ICAgICAgICAgIGVyZmNmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2VyZmNmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9h
dCAgICAgICAgICBsZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2xnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIHRnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fdGdhbW1hZiAgICAgICAgIChmbG9hdCAgKSAgICAgIDsKCgoKIApleHRlcm4gICBm
bG9hdCAgICAgICAgICBnYW1tYWYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fZ2FtbWFmICAgICAgICAgKGZsb2F0ICApICAgICAgOwoKCgogCgoKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgbGdhbW1hZl9yICAgICAgICAgICAgKGZsb2F0ICAsIGludCAqX19z
aWduZ2FtcCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbGdhbW1hZl9yICAgICAgICAg
ICAgKGZsb2F0ICAsIGludCAqX19zaWduZ2FtcCkgICAgICA7CgoKCgogCgpleHRlcm4gICBmbG9h
dCAgICAgICAgICByaW50ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fcmludGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoKIApleHRlcm4g
ICBmbG9hdCAgICAgICAgICBuZXh0YWZ0ZXJmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAg
IF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX25leHRhZnRlcmYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195
KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgpleHRlcm4gICBmbG9h
dCAgICAgICAgICBuZXh0dG93YXJkZiAgICAgICAgIChmbG9hdCAgIF9feCwgbG9uZyBkb3VibGUg
X195KSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9h
dCAgICAgICAgIF9fbmV4dHRvd2FyZGYgICAgICAgICAoZmxvYXQgICBfX3gsIGxvbmcgZG91Ymxl
IF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgcmVtYWluZGVyZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQg
ICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3JlbWFpbmRlcmYgICAgICAgICAo
ZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIHNjYWxiZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX24pICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX3NjYWxiZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBf
X24pICAgICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2NhbGJuZiAgICAgICAgIChm
bG9hdCAgIF9feCwgaW50IF9fbikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2NhbGJu
ZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50IF9fbikgICAgICA7CgogCmV4dGVybiAgIGludCAg
ICAgICBpbG9nYmYgICAgICAgKGZsb2F0ICAgX194KSAgIDsgZXh0ZXJuICAgaW50ICAgICAgIF9f
aWxvZ2JmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKCgogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIHNjYWxibG5mICAgICAgICAgKGZsb2F0ICAgX194LCBsb25nIGludCBfX24pICAgIDsgZXh0
ZXJuICAgZmxvYXQgICAgICAgICBfX3NjYWxibG5mICAgICAgICAgKGZsb2F0ICAgX194LCBsb25n
IGludCBfX24pICAgICAgOwoKIAoKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbmVhcmJ5aW50ZiAg
ICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fbmVhcmJ5
aW50ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCgpleHRlcm4gICBmbG9hdCAgICAg
ICAgICByb3VuZGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAg
ICAgICBfX3JvdW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgogCgpleHRlcm4gICBm
bG9hdCAgICAgICAgICB0cnVuY2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0dHJpYnV0
ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX190cnVuY2Yg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykg
ICkgIDsKCiAKCgpleHRlcm4gICBmbG9hdCAgICAgICAgICByZW1xdW9mICAgICAgICAgKGZsb2F0
ICAgX194LCBmbG9hdCAgIF9feSwgaW50ICpfX3F1bykgICAgOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fcmVtcXVvZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3ksIGludCAqX19x
dW8pICAgICAgOwoKCiAKCiAKCmV4dGVybiAgIGxvbmcgaW50ICAgICAgIGxyaW50ZiAgICAgICAo
ZmxvYXQgICBfX3gpICAgOyBleHRlcm4gICBsb25nIGludCAgICAgICBfX2xyaW50ZiAgICAgICAo
ZmxvYXQgICBfX3gpICAgIDsKZXh0ZXJuICAgbG9uZyBsb25nIGludCAgICAgICBsbHJpbnRmICAg
ICAgIChmbG9hdCAgIF9feCkgICA7IGV4dGVybiAgIGxvbmcgbG9uZyBpbnQgICAgICAgX19sbHJp
bnRmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKIAoKZXh0ZXJuICAgbG9uZyBpbnQgICAgICAg
bHJvdW5kZiAgICAgICAoZmxvYXQgICBfX3gpICAgOyBleHRlcm4gICBsb25nIGludCAgICAgICBf
X2xyb3VuZGYgICAgICAgKGZsb2F0ICAgX194KSAgICA7CmV4dGVybiAgIGxvbmcgbG9uZyBpbnQg
ICAgICAgbGxyb3VuZGYgICAgICAgKGZsb2F0ICAgX194KSAgIDsgZXh0ZXJuICAgbG9uZyBsb25n
IGludCAgICAgICBfX2xscm91bmRmICAgICAgIChmbG9hdCAgIF9feCkgICAgOwoKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgZmRpbWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195
KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19mZGltZiAgICAgICAgIChmbG9hdCAgIF9f
eCwgZmxvYXQgICBfX3kpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmbWF4ZiAg
ICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAg
ICAgICBfX2ZtYXhmICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7Cgog
CmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZtaW5mICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9h
dCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZm1pbmYgICAgICAgICAoZmxv
YXQgICBfX3gsIGZsb2F0ICAgX195KSAgICAgIDsKCgogCmV4dGVybiAgaW50ICAgICBfX2ZwY2xh
c3NpZnlmICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3RfXykpOwoKIApleHRlcm4gIGludCAgICAgX19zaWduYml0ZiAgICAgKGZsb2F0ICAgX192YWx1
ZSkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIGZtYWYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195LCBmbG9hdCAg
IF9feikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZm1hZiAgICAgICAgIChmbG9hdCAg
IF9feCwgZmxvYXQgICBfX3ksIGZsb2F0ICAgX196KSAgICAgIDsKCiMgODIgIi91c3IvbGliL2dj
Yy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRo
LmgiIDIgMwoKCgoKIyAxMDMgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8u
Li8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRoLmgiIDMKCgoKCgoKCgoKIApleHRlcm4gaW50
IHNpZ25nYW07CgoKCiAKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAplbnVt
CiAgewogICAgRlBfTkFOLAoKICAgIEZQX0lORklOSVRFLAoKICAgIEZQX1pFUk8sCgogICAgRlBf
U1VCTk9STUFMLAoKICAgIEZQX05PUk1BTAoKICB9OwoKIAoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiAKdHlwZWRl
ZiBlbnVtCnsKICBfSUVFRV8gPSAtMSwJIAogIF9TVklEXywJIAogIF9YT1BFTl8sCSAKICBfUE9T
SVhfLAogIF9JU09DXwkgCn0gX0xJQl9WRVJTSU9OX1RZUEU7CgogCgoKZXh0ZXJuIF9MSUJfVkVS
U0lPTl9UWVBFIF9MSUJfVkVSU0lPTjsKCgoKCiAKCgoKCgoKCnN0cnVjdCBleGNlcHRpb24KCiAg
ewogICAgaW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFyZzE7CiAgICBkb3Vi
bGUgYXJnMjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgoKCmV4dGVybiBpbnQgbWF0aGVyciAg
KHN0cnVjdCBleGNlcHRpb24gKl9fZXhjKSAgICA7CgoKCgogCgoKCgoKCgogCgojIDEgIi91c3Iv
bGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL2Zsb2F0LmgiIDEgMwogCgoKIAoK
ICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgog
ICAgCgoKICAgIAoKCiAgICAKCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgog
ICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKCiAgICAKCgogICAgCgoKICAgIAoKCiAgICAKCgog
ICAgCgoKICAgIAoKCiAgICAKCgogICAgCgoKICAgIAoKCgoKIyAyODkgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9tYXRoLmgi
IDIgMwoKCiMgMjk5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4v
Li4vYXJtLWxpbnV4L2luY2x1ZGUvbWF0aC5oIiAzCgoKCiAKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIAoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51
eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9tYXRoaW5saW5lLmgi
IDEgMwogCgoKCgoKCgoKIAoKCiMgMzQ4ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1
LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvbWF0aC5oIiAyIDMKCgoKCgogCgoKCgoK
IAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKIAoKCgoKCgoKCgog
CgoKCiMgMTkwICIuLi8uLi9pbmNsdWRlL21pc2MuaCIgMgoKCgoKCgoKCgoKCiMgMSAiL3Vzci9s
aWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRl
L2Fzc2VydC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIyAzMiAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2Fzc2Vy
dC5oIiAzCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIyAxMDkgIi91c3IvbGliL2djYy1saWIv
YXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9hc3NlcnQuaCIg
MwoKIyAyMDEgIi4uLy4uL2luY2x1ZGUvbWlzYy5oIiAyCgojIDEgIi91c3IvbGliL2djYy1saWIv
YXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9jdHlwZS5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCiAKCgoKCgoKCgoKCgoKCgplbnVt
CnsKICBfSVN1cHBlciA9ICgoIDAgKSA8IDggPyAoKDEgPDwgKCAwICkpIDw8IDgpIDogKCgxIDw8
ICggMCApKSA+PiA4KSkgLAkgCiAgX0lTbG93ZXIgPSAoKCAxICkgPCA4ID8gKCgxIDw8ICggMSAp
KSA8PCA4KSA6ICgoMSA8PCAoIDEgKSkgPj4gOCkpICwJIAogIF9JU2FscGhhID0gKCggMiApIDwg
OCA/ICgoMSA8PCAoIDIgKSkgPDwgOCkgOiAoKDEgPDwgKCAyICkpID4+IDgpKSAsCSAKICBfSVNk
aWdpdCA9ICgoIDMgKSA8IDggPyAoKDEgPDwgKCAzICkpIDw8IDgpIDogKCgxIDw8ICggMyApKSA+
PiA4KSkgLAkgCiAgX0lTeGRpZ2l0ID0gKCggNCApIDwgOCA/ICgoMSA8PCAoIDQgKSkgPDwgOCkg
OiAoKDEgPDwgKCA0ICkpID4+IDgpKSAsCSAKICBfSVNzcGFjZSA9ICgoIDUgKSA8IDggPyAoKDEg
PDwgKCA1ICkpIDw8IDgpIDogKCgxIDw8ICggNSApKSA+PiA4KSkgLAkgCiAgX0lTcHJpbnQgPSAo
KCA2ICkgPCA4ID8gKCgxIDw8ICggNiApKSA8PCA4KSA6ICgoMSA8PCAoIDYgKSkgPj4gOCkpICwJ
IAogIF9JU2dyYXBoID0gKCggNyApIDwgOCA/ICgoMSA8PCAoIDcgKSkgPDwgOCkgOiAoKDEgPDwg
KCA3ICkpID4+IDgpKSAsCSAKICBfSVNibGFuayA9ICgoIDggKSA8IDggPyAoKDEgPDwgKCA4ICkp
IDw8IDgpIDogKCgxIDw8ICggOCApKSA+PiA4KSkgLAkgCiAgX0lTY250cmwgPSAoKCA5ICkgPCA4
ID8gKCgxIDw8ICggOSApKSA8PCA4KSA6ICgoMSA8PCAoIDkgKSkgPj4gOCkpICwJIAogIF9JU3B1
bmN0ID0gKCggMTAgKSA8IDggPyAoKDEgPDwgKCAxMCApKSA8PCA4KSA6ICgoMSA8PCAoIDEwICkp
ID4+IDgpKSAsCSAKICBfSVNhbG51bSA9ICgoIDExICkgPCA4ID8gKCgxIDw8ICggMTEgKSkgPDwg
OCkgOiAoKDEgPDwgKCAxMSApKSA+PiA4KSkgCSAKfTsKCgogCgoKCgoKCgoKCgpleHRlcm4gX19j
b25zdCB1bnNpZ25lZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsJIApleHRlcm4gX19jb25zdCBfX2lu
dDMyX3QgKl9fY3R5cGVfdG9sb3dlcjsgIApleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKl9fY3R5
cGVfdG91cHBlcjsgIAoKCgoKCgoKCgogCgoKCmV4dGVybiBpbnQgIGlzYWxudW0gICAoaW50KSAg
ICAgOwpleHRlcm4gaW50ICBpc2FscGhhICAgKGludCkgICAgIDsKZXh0ZXJuIGludCAgaXNjbnRy
bCAgIChpbnQpICAgICA7CmV4dGVybiBpbnQgIGlzZGlnaXQgICAoaW50KSAgICAgOwpleHRlcm4g
aW50ICBpc2xvd2VyICAgKGludCkgICAgIDsKZXh0ZXJuIGludCAgaXNncmFwaCAgIChpbnQpICAg
ICA7CmV4dGVybiBpbnQgIGlzcHJpbnQgICAoaW50KSAgICAgOwpleHRlcm4gaW50ICBpc3B1bmN0
ICAgKGludCkgICAgIDsKZXh0ZXJuIGludCAgaXNzcGFjZSAgIChpbnQpICAgICA7CmV4dGVybiBp
bnQgIGlzdXBwZXIgICAoaW50KSAgICAgOwpleHRlcm4gaW50ICBpc3hkaWdpdCAgIChpbnQpICAg
ICA7CgoKZXh0ZXJuIGludCAgaXNibGFuayAgIChpbnQpICAgICA7CgoKCiAKZXh0ZXJuIGludCB0
b2xvd2VyICAoaW50IF9fYykgICAgOwoKIApleHRlcm4gaW50IHRvdXBwZXIgIChpbnQgX19jKSAg
ICA7CgoKCgogCgpleHRlcm4gaW50IGlzYXNjaWkgIChpbnQgX19jKSAgICA7CgogCgpleHRlcm4g
aW50IHRvYXNjaWkgIChpbnQgX19jKSAgICA7CgoKCgogCgpleHRlcm4gaW50ICBfdG91cHBlciAg
IChpbnQpICAgICA7CmV4dGVybiBpbnQgIF90b2xvd2VyICAgKGludCkgICAgIDsKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKZXh0ZXJuIF9faW5saW5lIGludAp0b2xvd2VyIChpbnQgX19jKSAgCnsKICBy
ZXR1cm4gX19jID49IC0xMjggJiYgX19jIDwgMjU2ID8gX19jdHlwZV90b2xvd2VyW19fY10gOiBf
X2M7Cn0KCmV4dGVybiBfX2lubGluZSBpbnQKdG91cHBlciAoaW50IF9fYykgIAp7CiAgcmV0dXJu
IF9fYyA+PSAtMTI4ICYmIF9fYyA8IDI1NiA/IF9fY3R5cGVfdG91cHBlcltfX2NdIDogX19jOwp9
CgoKCgojIDE4MyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4u
L2FybS1saW51eC9pbmNsdWRlL2N0eXBlLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoK
CgogCgoKCiAKCgoKCgoKCgoKIAoKCgpleHRlcm4gaW50ICBfX2lzYWxudW1fbCAgIChpbnQsIF9f
bG9jYWxlX3QpICAgICA7CmV4dGVybiBpbnQgIF9faXNhbHBoYV9sICAgKGludCwgX19sb2NhbGVf
dCkgICAgIDsKZXh0ZXJuIGludCAgX19pc2NudHJsX2wgICAoaW50LCBfX2xvY2FsZV90KSAgICAg
OwpleHRlcm4gaW50ICBfX2lzZGlnaXRfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAgICA7CmV4dGVy
biBpbnQgIF9faXNsb3dlcl9sICAgKGludCwgX19sb2NhbGVfdCkgICAgIDsKZXh0ZXJuIGludCAg
X19pc2dyYXBoX2wgICAoaW50LCBfX2xvY2FsZV90KSAgICAgOwpleHRlcm4gaW50ICBfX2lzcHJp
bnRfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAgICA7CmV4dGVybiBpbnQgIF9faXNwdW5jdF9sICAg
KGludCwgX19sb2NhbGVfdCkgICAgIDsKZXh0ZXJuIGludCAgX19pc3NwYWNlX2wgICAoaW50LCBf
X2xvY2FsZV90KSAgICAgOwpleHRlcm4gaW50ICBfX2lzdXBwZXJfbCAgIChpbnQsIF9fbG9jYWxl
X3QpICAgICA7CmV4dGVybiBpbnQgIF9faXN4ZGlnaXRfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAg
ICA7CgpleHRlcm4gaW50ICBfX2lzYmxhbmtfbCAgIChpbnQsIF9fbG9jYWxlX3QpICAgICA7CgoK
IApleHRlcm4gaW50IF9fdG9sb3dlcl9sICAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpICAgIDsK
CiAKZXh0ZXJuIGludCBfX3RvdXBwZXJfbCAgKGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSAgICA7
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiMgMjAyICIuLi8uLi9pbmNsdWRlL21pc2Mu
aCIgMgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4v
YXJtLWxpbnV4L2luY2x1ZGUvc3RkaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoK
CgoKCiAKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9z
dGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8y
Ljk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgojIDYxICIvdXNyL2xp
Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgog
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91c3IvbGliL2djYy1saWIv
YXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4
ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgoKCiAKCgoKCiAKCgojIDI2OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdXNyL2xpYi9n
Y2MtbGliL2FybS1saW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKIAoKCgoKCgoK
CgoKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4u
Ly4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgoKCgoKCgoKCgoKCiAK
dHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKCgoKCgoKCgojIDEgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9saWJpby5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIvdXNyL2xpYi9nY2MtbGli
L2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvX0dfY29uZmln
LmgiIDEgMwogCgoKCgoKIAoKCgoKCgojIDEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91c3IvbGliL2djYy1s
aWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoK
CiMgNjEgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKIAoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vz
ci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK
CgogCgogCgoKIyAxODggIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgoKCgoKIAoKCgoKIAoKCiMgMjY5ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoKCgoKCgoKCgoKCgoKIAoKIAoKIyAz
MTcgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCgogCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojIDE0ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvX0dfY29uZmlnLmgiIDIg
MwoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50
MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CgoK
CgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgojIDMwICIvdXNyL2xp
Yi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUv
bGliaW8uaCIgMiAzCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKIyA2NyAiL3Vzci9saWIvZ2Nj
LWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2xpYmlv
LmgiIDMKCgogCgoKCgoKCgoKCgoKCgoKCgoKIyA5OCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGlu
dXgvMi45NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2xpYmlvLmgiIDMKCgoKCgoK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCnN0cnVj
dCBfSU9fanVtcF90OyAgc3RydWN0IF9JT19GSUxFOwoKIAoKCgoKCgoKdHlwZWRlZiB2b2lkIF9J
T19sb2NrX3Q7CgoKCiAKCnN0cnVjdCBfSU9fbWFya2VyIHsKICBzdHJ1Y3QgX0lPX21hcmtlciAq
X25leHQ7CiAgc3RydWN0IF9JT19GSUxFICpfc2J1ZjsKICAgCgogICAKICBpbnQgX3BvczsKIyAx
ODYgIi91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGlu
dXgvaW5jbHVkZS9saWJpby5oIiAzCgp9OwoKc3RydWN0IF9JT19GSUxFIHsKICBpbnQgX2ZsYWdz
OwkJIAoKCiAgIAogICAKICBjaGFyKiBfSU9fcmVhZF9wdHI7CSAKICBjaGFyKiBfSU9fcmVhZF9l
bmQ7CSAKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX2Jhc2U7CSAK
ICBjaGFyKiBfSU9fd3JpdGVfcHRyOwkgCiAgY2hhciogX0lPX3dyaXRlX2VuZDsJIAogIGNoYXIq
IF9JT19idWZfYmFzZTsJIAogIGNoYXIqIF9JT19idWZfZW5kOwkgCiAgIAogIGNoYXIgKl9JT19z
YXZlX2Jhc2U7ICAKICBjaGFyICpfSU9fYmFja3VwX2Jhc2U7ICAgCiAgY2hhciAqX0lPX3NhdmVf
ZW5kOyAgCgogIHN0cnVjdCBfSU9fbWFya2VyICpfbWFya2VyczsKCiAgc3RydWN0IF9JT19GSUxF
ICpfY2hhaW47CgogIGludCBfZmlsZW5vOwogIGludCBfYmxrc2l6ZTsKICBfX29mZl90ICAgX29s
ZF9vZmZzZXQ7ICAKCgogICAKICB1bnNpZ25lZCBzaG9ydCBfY3VyX2NvbHVtbjsKICBzaWduZWQg
Y2hhciBfdnRhYmxlX29mZnNldDsKICBjaGFyIF9zaG9ydGJ1ZlsxXTsKCiAgIAoKICBfSU9fbG9j
a190ICpfbG9jazsKCgoKCgoKCgogIF9fb2ZmNjRfdCAgIF9vZmZzZXQ7CiAgIAogIGludCBfdW51
c2VkMlsxNl07Cgp9OwoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIF9JT19GSUxFOwoKCnN0cnVj
dCBfSU9fRklMRV9wbHVzOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRp
bl87CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZG91dF87CmV4dGVybiBz
dHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGVycl87CgoKCgoKCgoKCgoKIAoKIAoKdHlw
ZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2ZuICAodm9pZCAqICBfX2Nvb2tpZSwgY2hhciAqX19i
dWYsCgkJCQkgICAgICAgc2l6ZV90IF9fbmJ5dGVzKSAgOwoKIAoKCgoKCnR5cGVkZWYgX19zc2l6
ZV90IF9faW9fd3JpdGVfZm4gICh2b2lkICogIF9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVm
LAoJCQkJICAgICAgc2l6ZV90IF9fbikgIDsKCiAKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtf
Zm4gICh2b2lkICogIF9fY29va2llLCBfX29mZl90ICAgX19wb3MsIGludCBfX3cpICA7CgogCnR5
cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gICh2b2lkICogIF9fY29va2llKSAgOwoKCgogCnR5cGVk
ZWYgX19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0
ZV9mbiBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2ll
X3NlZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5j
dGlvbl90OwoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgX19pb19yZWFkX2ZuICpyZWFkOwkJIAogIF9f
aW9fd3JpdGVfZm4gKndyaXRlOwkJIAogIF9faW9fc2Vla19mbiAqc2VlazsJCSAKICBfX2lvX2Ns
b3NlX2ZuICpjbG9zZTsJCSAKfSBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190Owp0eXBlZGVmIF9J
T19jb29raWVfaW9fZnVuY3Rpb25zX3QgY29va2llX2lvX2Z1bmN0aW9uc190OwoKIApzdHJ1Y3Qg
X0lPX2Nvb2tpZV9maWxlCnsKICBzdHJ1Y3QgX0lPX0ZJTEUgX19maWxlOwogIGNvbnN0IHZvaWQg
Kl9fdnRhYmxlOwogIHZvaWQgKl9fY29va2llOwogIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Qg
X19pb19mdW5jdGlvbnM7Cn07CgoKCgoKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93ICAoX0lPX0ZJ
TEUgKikgICAgOwpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgICA7CmV4dGVybiBp
bnQgX19vdmVyZmxvdyAgKF9JT19GSUxFICosIGludCkgICAgOwoKCgoKCgoKCgoKCgoKCgoKZXh0
ZXJuIGludCBfSU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgICA7CmV4dGVybiBpbnQgX0lPX3B1
dGMgIChpbnQgX19jLCBfSU9fRklMRSAqX19mcCkgICAgOwpleHRlcm4gaW50IF9JT19mZW9mICAo
X0lPX0ZJTEUgKl9fZnApICAgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9yICAoX0lPX0ZJTEUgKl9f
ZnApICAgIDsKCmV4dGVybiBpbnQgX0lPX3BlZWtjX2xvY2tlZCAgKF9JT19GSUxFICpfX2ZwKSAg
ICA7CgogCgoKCmV4dGVybiB2b2lkIF9JT19mbG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgICA7CmV4
dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICAgIDsKZXh0ZXJuIGludCBf
SU9fZnRyeWxvY2tmaWxlICAoX0lPX0ZJTEUgKikgICAgOwoKCgoKCgoKCgoKCgpleHRlcm4gaW50
IF9JT192ZnNjYW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICogX19yZXN0
cmljdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmljdCkgICAgOwpleHRl
cm4gaW50IF9JT192ZnByaW50ZiAgKF9JT19GSUxFICpfX3Jlc3RyaWN0LCBjb25zdCBjaGFyICpf
X3Jlc3RyaWN0LAoJCQkgICAgICBfX2dudWNfdmFfbGlzdCApICAgIDsKZXh0ZXJuIF9fc3NpemVf
dCAgIF9JT19wYWRuICAoX0lPX0ZJTEUgKiwgaW50LCBfX3NzaXplX3QgICkgICAgOwpleHRlcm4g
c2l6ZV90ICAgX0lPX3NnZXRuICAoX0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgICAgOwoK
ZXh0ZXJuIF9fb2ZmNjRfdCAgIF9JT19zZWVrb2ZmICAoX0lPX0ZJTEUgKiwgX19vZmY2NF90ICAs
IGludCwgaW50KSAgICA7CmV4dGVybiBfX29mZjY0X3QgICBfSU9fc2Vla3BvcyAgKF9JT19GSUxF
ICosIF9fb2ZmNjRfdCAgLCBpbnQpICAgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1cF9h
cmVhICAoX0lPX0ZJTEUgKikgICAgOwoKCgoKCgojIDU3ICIvdXNyL2xpYi9nY2MtbGliL2FybS1s
aW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvc3RkaW8uaCIgMiAzCgoK
IAoKdHlwZWRlZiBfX29mZl90ICBmcG9zX3Q7CgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCAgZnBvczY0
X3Q7CgoKIAoKCgoKCiAKCgoKCgogCgoKCgoKCiAKCgoKCgoKCiAKCgoKCiAKCgoKCgoKCgojIDEg
Ii91c3IvbGliL2djYy1saWIvYXJtLWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgv
aW5jbHVkZS9iaXRzL3N0ZGlvX2xpbS5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojIDExMCAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u
Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgogCmV4dGVybiBGSUxFICpz
dGRpbjsJCSAKZXh0ZXJuIEZJTEUgKnN0ZG91dDsJCSAKZXh0ZXJuIEZJTEUgKnN0ZGVycjsJCSAK
IAoKCgoKCiAKZXh0ZXJuIGludCByZW1vdmUgIChfX2NvbnN0IGNoYXIgKl9fZmlsZW5hbWUpICAg
IDsKIApleHRlcm4gaW50IHJlbmFtZSAgKF9fY29uc3QgY2hhciAqX19vbGQsIF9fY29uc3QgY2hh
ciAqX19uZXcpICAgIDsKCgogCgpleHRlcm4gRklMRSAqdG1wZmlsZSAgKHZvaWQpICAgIDsKCgoK
CgoKCgpleHRlcm4gRklMRSAqdG1wZmlsZTY0ICAodm9pZCkgICAgOwoKIApleHRlcm4gY2hhciAq
dG1wbmFtICAoY2hhciAqX19zKSAgICA7CgoKIAoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9yICAoY2hh
ciAqX19zKSAgICA7CgoKCgogCgoKCgoKCmV4dGVybiBjaGFyICp0ZW1wbmFtICAoX19jb25zdCBj
aGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkgICAgOwoKCgogCmV4dGVybiBpbnQgZmNs
b3NlICAoRklMRSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gaW50IGZmbHVzaCAgKEZJTEUgKl9f
c3RyZWFtKSAgICA7CgoKIApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9fc3Ry
ZWFtKSAgICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2VhbGwgICh2b2lkKSAgICA7CgoKCgogCmV4
dGVybiBGSUxFICpmb3BlbiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJ
CQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpICAgIDsKIApleHRlcm4gRklMRSAq
ZnJlb3BlbiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCQkgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKCQkJICAgRklMRSAqX19yZXN0cmljdCBfX3N0
cmVhbSkgICAgOwojIDIwMSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45NS4zLy4uLy4u
Ly4uLy4uL2FybS1saW51eC9pbmNsdWRlL3N0ZGlvLmgiIDMKCgpleHRlcm4gRklMRSAqZm9wZW42
NCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAoJCQkgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19tb2RlcykgICAgOwpleHRlcm4gRklMRSAqZnJlb3BlbjY0ICAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5hbWUsCgkJCSAgICAgX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbW9kZXMsCgkJCSAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgICAg
OwoKCgogCmV4dGVybiBGSUxFICpmZG9wZW4gIChpbnQgX19mZCwgX19jb25zdCBjaGFyICpfX21v
ZGVzKSAgICA7CgoKCiAKCmV4dGVybiBGSUxFICpmb3BlbmNvb2tpZSAgKHZvaWQgKl9fcmVzdHJp
Y3QgX19tYWdpY19jb29raWUsCgkJCSAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19t
b2RlcywKCQkJICAgICAgIF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykgICAg
OwoKIAoKCmV4dGVybiBGSUxFICpvcGVuX21lbXN0cmVhbSAgKGNoYXIgKipfX3Jlc3RyaWN0IF9f
YnVmbG9jLAoJCQkJICBzaXplX3QgKl9fcmVzdHJpY3QgX19zaXplbG9jKSAgICA7CgoKCiAKCmV4
dGVybiB2b2lkIHNldGJ1ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVz
dHJpY3QgX19idWYpICAgIDsKIAoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJCSBpbnQgX19tb2Rlcywgc2l6
ZV90IF9fbikgICAgOwoKCiAKCmV4dGVybiB2b2lkIHNldGJ1ZmZlciAgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCgkJCSAgICBzaXplX3QgX19zaXpl
KSAgICA7CgogCmV4dGVybiB2b2lkIHNldGxpbmVidWYgIChGSUxFICpfX3N0cmVhbSkgICAgOwoK
CgogCmV4dGVybiBpbnQgZnByaW50ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCgkJCSBf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwogCmV4dGVybiBpbnQg
cHJpbnRmICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKIApl
eHRlcm4gaW50IHNwcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAgICA7CgogCmV4dGVybiBpbnQgdmZwcmludGYg
IChGSUxFICpfX3Jlc3RyaWN0IF9fcywKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m
b3JtYXQsCgkJCSAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICA7CiAKZXh0ZXJuIGludCB2cHJp
bnRmICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkgX19nbnVjX3ZhX2xp
c3QgIF9fYXJnKSAgICA7CiAKZXh0ZXJuIGludCB2c3ByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3Qg
X19zLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICBfX2dudWNf
dmFfbGlzdCAgX19hcmcpICAgIDsKCgogCmV4dGVybiBpbnQgc25wcmludGYgIChjaGFyICpfX3Jl
c3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwgLi4uKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w
cmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgX192c25wcmludGYgIChjaGFyICpfX3Jlc3Ry
aWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAoJCQkgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2Zvcm1hdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICAgIAogICAgIF9fYXR0
cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4gaW50IHZz
bnByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCgkJCSAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgX19nbnVjX3ZhX2xpc3QgIF9f
YXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywg
MCkpKTsKCgoKIAoKZXh0ZXJuIGludCB2YXNwcmludGYgIChjaGFyICoqX19yZXN0cmljdCBfX3B0
ciwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwgX19nbnVjX3ZhX2xpc3QgIF9f
YXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwg
MCkpKTsKZXh0ZXJuIGludCBfX2FzcHJpbnRmICAoY2hhciAqKl9fcmVzdHJpY3QgX19wdHIsCgkJ
CSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikgICAgCiAgICAgX19hdHRy
aWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CmV4dGVybiBpbnQgYXNw
cmludGYgIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19mbXQsIC4uLikgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
cHJpbnRmX18sIDIsIDMpKSk7CgogCmV4dGVybiBpbnQgdmRwcmludGYgIChpbnQgX19mZCwgX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LAoJCQkgIF9fZ251Y192YV9saXN0ICBfX2FyZykg
ICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7
CmV4dGVybiBpbnQgZHByaW50ZiAgKGludCBfX2ZkLCBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mbXQsIC4uLikgICAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRm
X18sIDIsIDMpKSk7CgoKCiAKZXh0ZXJuIGludCBmc2NhbmYgIChGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtLAoJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwog
CmV4dGVybiBpbnQgc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4u
LikgICAgOwogCmV4dGVybiBpbnQgc3NjYW5mICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
cywKCQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICAgIDsKCgogCmV4
dGVybiBpbnQgdmZzY2FuZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zLAoJCQkgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICAKICAg
ICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKIApleHRl
cm4gaW50IHZzY2FuZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVj
X3ZhX2xpc3QgIF9fYXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19z
Y2FuZl9fLCAxLCAwKSkpOwoKIApleHRlcm4gaW50IHZzc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19zLAoJCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAoJCQkg
X19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRf
XyAoX19zY2FuZl9fLCAyLCAwKSkpOwoKCgogCmV4dGVybiBpbnQgZmdldGMgIChGSUxFICpfX3N0
cmVhbSkgICAgOwpleHRlcm4gaW50IGdldGMgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKIApleHRl
cm4gaW50IGdldGNoYXIgICh2b2lkKSAgICA7CgogCgoKCgogCmV4dGVybiBpbnQgZ2V0Y191bmxv
Y2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCAg
KHZvaWQpICAgIDsKCgoKIApleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkICAoRklMRSAqX19zdHJl
YW0pICAgIDsKCgoKIApleHRlcm4gaW50IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0p
ICAgIDsKZXh0ZXJuIGludCBwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKCiAK
ZXh0ZXJuIGludCBwdXRjaGFyICAoaW50IF9fYykgICAgOwoKIAoKCgoKIApleHRlcm4gaW50IGZw
dXRjX3VubG9ja2VkICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICAgIDsKCgoKIApleHRlcm4g
aW50IHB1dGNfdW5sb2NrZWQgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgICAgOwpleHRlcm4g
aW50IHB1dGNoYXJfdW5sb2NrZWQgIChpbnQgX19jKSAgICA7CgoKCgogCmV4dGVybiBpbnQgZ2V0
dyAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CgogCmV4dGVybiBpbnQgcHV0dyAgKGludCBfX3csIEZJ
TEUgKl9fc3RyZWFtKSAgICA7CgoKCiAKZXh0ZXJuIGNoYXIgKmZnZXRzICAoY2hhciAqX19yZXN0
cmljdCBfX3MsIGludCBfX24sCgkJCSBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgoK
IApleHRlcm4gY2hhciAqZmdldHNfdW5sb2NrZWQgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50
IF9fbiwKCQkJCSAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgICAgOwoKCiAKCmV4dGVybiBj
aGFyICpnZXRzICAoY2hhciAqX19zKSAgICA7CgoKCiAKCgoKCmV4dGVybiBfX3NzaXplX3QgICBf
X2dldGRlbGltICAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAoJCQkJICAgIHNpemVfdCAq
X19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKCQkJCSAgICBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKSAgICA7CmV4dGVybiBfX3NzaXplX3QgICBnZXRkZWxpbSAgKGNoYXIgKipfX3Jl
c3RyaWN0IF9fbGluZXB0ciwKCQkJCSAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50IF9fZGVs
aW1pdGVyLAoJCQkJICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgogCmV4dGVybiBf
X3NzaXplX3QgICBnZXRsaW5lICAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAoJCQkJIHNp
emVfdCAqX19yZXN0cmljdCBfX24sCgkJCQkgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgICAg
OwoKCgogCmV4dGVybiBpbnQgZnB1dHMgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJ
CSAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgoKIApleHRlcm4gaW50IGZw
dXRzX3VubG9ja2VkICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJCUZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pICAgIDsKCgogCmV4dGVybiBpbnQgcHV0cyAgKF9fY29uc3QgY2hh
ciAqX19zKSAgICA7CgoKIApleHRlcm4gaW50IHVuZ2V0YyAgKGludCBfX2MsIEZJTEUgKl9fc3Ry
ZWFtKSAgICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFkICAodm9pZCAqX19yZXN0cmljdCBfX3B0
ciwgc2l6ZV90IF9fc2l6ZSwKCQkJICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSAgICA7CiAKZXh0ZXJuIHNpemVfdCBmd3JpdGUgIChfX2NvbnN0IHZvaWQgKl9fcmVzdHJp
Y3QgX19wdHIsIHNpemVfdCBfX3NpemUsCgkJCSAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJp
Y3QgX19zKSAgICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICAodm9pZCAqX19y
ZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJCSAgIHNpemVfdCBfX24sIEZJTEUgKl9f
cmVzdHJpY3QgX19zdHJlYW0pICAgIDsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgIChf
X2NvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsCgkJCQkgICAgc2l6ZV90IF9fc2l6ZSwgc2l6
ZV90IF9fbiwKCQkJCSAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSAgICA7CgoKCiAKZXh0
ZXJuIGludCBmc2VlayAgKEZJTEUgKl9fc3RyZWFtLCBsb25nIGludCBfX29mZiwgaW50IF9fd2hl
bmNlKSAgICA7CiAKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsICAoRklMRSAqX19zdHJlYW0pICAgIDsK
IApleHRlcm4gdm9pZCByZXdpbmQgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKIAoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCiAKZXh0ZXJuIGludCBmc2Vla28gIChGSUxFICpfX3N0cmVhbSwgX19vZmZf
dCBfX29mZiwgaW50IF9fd2hlbmNlKSAgICA7CiAKZXh0ZXJuIF9fb2ZmX3QgZnRlbGxvICAoRklM
RSAqX19zdHJlYW0pICAgIDsKCgogCmV4dGVybiBpbnQgZmdldHBvcyAgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sCgkJCSBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpICAgIDsKIApleHRlcm4g
aW50IGZzZXRwb3MgIChGSUxFICpfX3N0cmVhbSwgX19jb25zdCBmcG9zX3QgKl9fcG9zKSAgICA7
CiMgNTIzICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJt
LWxpbnV4L2luY2x1ZGUvc3RkaW8uaCIgMwoKCgoKZXh0ZXJuIGludCBmc2Vla282NCAgKEZJTEUg
Kl9fc3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSkgICAgOwpleHRlcm4gX19v
ZmY2NF90IGZ0ZWxsbzY0ICAoRklMRSAqX19zdHJlYW0pICAgIDsKCmV4dGVybiBpbnQgZmdldHBv
czY0ICAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKCQkJICAgZnBvczY0X3QgKl9fcmVzdHJp
Y3QgX19wb3MpICAgIDsKZXh0ZXJuIGludCBmc2V0cG9zNjQgIChGSUxFICpfX3N0cmVhbSwgX19j
b25zdCBmcG9zNjRfdCAqX19wb3MpICAgIDsKCgogCmV4dGVybiB2b2lkIGNsZWFyZXJyICAoRklM
RSAqX19zdHJlYW0pICAgIDsKIApleHRlcm4gaW50IGZlb2YgIChGSUxFICpfX3N0cmVhbSkgICAg
OwogCmV4dGVybiBpbnQgZmVycm9yICAoRklMRSAqX19zdHJlYW0pICAgIDsKCgogCmV4dGVybiB2
b2lkIGNsZWFyZXJyX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICAgIDsKZXh0ZXJuIGludCBm
ZW9mX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICAgIDsKZXh0ZXJuIGludCBmZXJyb3JfdW5s
b2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKCgogCmV4dGVybiB2b2lkIHBlcnJvciAgKF9f
Y29uc3QgY2hhciAqX19zKSAgICA7CgogCgoKZXh0ZXJuIGludCBzeXNfbmVycjsKZXh0ZXJuIF9f
Y29uc3QgY2hhciAqX19jb25zdCBzeXNfZXJybGlzdFtdOwoKCmV4dGVybiBpbnQgX3N5c19uZXJy
OwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IF9zeXNfZXJybGlzdFtdOwoKCgoKIApleHRl
cm4gaW50IGZpbGVubyAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKCiAKZXh0ZXJuIGludCBmaWxl
bm9fdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgICAgOwoKCgoKCiAKZXh0ZXJuIEZJTEUgKnBv
cGVuICAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgICAg
OwoKIApleHRlcm4gaW50IHBjbG9zZSAgKEZJTEUgKl9fc3RyZWFtKSAgICA7CgoKCgogCmV4dGVy
biBjaGFyICpjdGVybWlkICAoY2hhciAqX19zKSAgICA7CgoKCgogCmV4dGVybiBjaGFyICpjdXNl
cmlkICAoY2hhciAqX19zKSAgICA7CgoKCgpzdHJ1Y3Qgb2JzdGFjazsJCQkgCgogCmV4dGVybiBp
bnQgb2JzdGFja19wcmludGYgIChzdHJ1Y3Qgb2JzdGFjayAqX19yZXN0cmljdCBfX29ic3RhY2ss
CgkJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgICAgOwpleHRlcm4g
aW50IG9ic3RhY2tfdnByaW50ZiAgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFj
aywKCQkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCgkJCQkgX19nbnVjX3Zh
X2xpc3QgIF9fYXJncykgICAgOwoKCgoKIAoKIApleHRlcm4gdm9pZCBmbG9ja2ZpbGUgIChGSUxF
ICpfX3N0cmVhbSkgICAgOwoKIAoKZXh0ZXJuIGludCBmdHJ5bG9ja2ZpbGUgIChGSUxFICpfX3N0
cmVhbSkgICAgOwoKIApleHRlcm4gdm9pZCBmdW5sb2NrZmlsZSAgKEZJTEUgKl9fc3RyZWFtKSAg
ICA7CgoKCgoKCgoKCgogCgoKIyAxICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMv
Li4vLi4vLi4vLi4vYXJtLWxpbnV4L2luY2x1ZGUvYml0cy9zdGRpby5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKZXh0ZXJuIF9faW5saW5lICBpbnQKdnByaW50ZiAoX19j
b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBfX2dudWNfdmFfbGlzdCAgX19hcmcpICAKewog
IHJldHVybiB2ZnByaW50ZiAoc3Rkb3V0ICwgX19mbXQsIF9fYXJnKTsKfQoKIApleHRlcm4gX19p
bmxpbmUgIGludApnZXRjaGFyICh2b2lkKSAgCnsKICByZXR1cm4gX0lPX2dldGMgKHN0ZGluICk7
Cn0KCgoKIApleHRlcm4gX19pbmxpbmUgIGludApnZXRjX3VubG9ja2VkIChGSUxFICpfX2ZwKSAg
CnsKICByZXR1cm4gKCggX19mcCApLT5fSU9fcmVhZF9wdHIgPj0gKCBfX2ZwICktPl9JT19yZWFk
X2VuZCA/IF9fdWZsb3cgKCBfX2ZwICkgOiAqKHVuc2lnbmVkIGNoYXIgKikgKCBfX2ZwICktPl9J
T19yZWFkX3B0cisrKSA7Cn0KCiAKZXh0ZXJuIF9faW5saW5lICBpbnQKZ2V0Y2hhcl91bmxvY2tl
ZCAodm9pZCkgIAp7CiAgcmV0dXJuICgoIHN0ZGluICApLT5fSU9fcmVhZF9wdHIgPj0gKCBzdGRp
biAgKS0+X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoIHN0ZGluICApIDogKih1bnNpZ25lZCBjaGFy
ICopICggc3RkaW4gICktPl9JT19yZWFkX3B0cisrKSA7Cn0KCgoKIApleHRlcm4gX19pbmxpbmUg
IGludApwdXRjaGFyIChpbnQgX19jKSAgCnsKICByZXR1cm4gX0lPX3B1dGMgKF9fYywgc3Rkb3V0
ICk7Cn0KCgoKIApleHRlcm4gX19pbmxpbmUgIGludApmcHV0Y191bmxvY2tlZCAoaW50IF9fYywg
RklMRSAqX19zdHJlYW0pICAKewogIHJldHVybiAoKCggIF9fc3RyZWFtICktPl9JT193cml0ZV9w
dHIgPj0gKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93ICggIF9fc3Ry
ZWFtICwgKHVuc2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2lnbmVkIGNoYXIpICgqKCAgX19z
dHJlYW0gKS0+X0lPX3dyaXRlX3B0cisrID0gKCBfX2MgKSkpIDsKfQoKCgoKIApleHRlcm4gX19p
bmxpbmUgIGludApwdXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIAp7CiAg
cmV0dXJuICgoKCAgX19zdHJlYW0gKS0+X0lPX3dyaXRlX3B0ciA+PSAoICBfX3N0cmVhbSApLT5f
SU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKCAgX19zdHJlYW0gLCAodW5zaWduZWQgY2hhcikg
KCBfX2MgKSkgOiAodW5zaWduZWQgY2hhcikgKCooICBfX3N0cmVhbSApLT5fSU9fd3JpdGVfcHRy
KysgPSAoIF9fYyApKSkgOwp9CgogCmV4dGVybiBfX2lubGluZSAgaW50CnB1dGNoYXJfdW5sb2Nr
ZWQgKGludCBfX2MpICAKewogIHJldHVybiAoKCggIHN0ZG91dCAgKS0+X0lPX3dyaXRlX3B0ciA+
PSAoICBzdGRvdXQgICktPl9JT193cml0ZV9lbmQpID8gX19vdmVyZmxvdyAoICBzdGRvdXQgICwg
KHVuc2lnbmVkIGNoYXIpICggX19jICkpIDogKHVuc2lnbmVkIGNoYXIpICgqKCAgc3Rkb3V0ICAp
LT5fSU9fd3JpdGVfcHRyKysgPSAoIF9fYyApKSkgOwp9CgoKCgogCmV4dGVybiBfX2lubGluZSAg
X19zc2l6ZV90ICAKZ2V0bGluZSAoY2hhciAqKl9fbGluZXB0ciwgc2l6ZV90ICpfX24sIEZJTEUg
Kl9fc3RyZWFtKSAgCnsKICByZXR1cm4gX19nZXRkZWxpbSAoX19saW5lcHRyLCBfX24sICdcbics
IF9fc3RyZWFtKTsKfQoKCgoKIApleHRlcm4gX19pbmxpbmUgIGludApmZW9mX3VubG9ja2VkIChG
SUxFICpfX3N0cmVhbSkgIAp7CiAgcmV0dXJuICgoKCBfX3N0cmVhbSApLT5fZmxhZ3MgJiAweDEw
ICkgIT0gMCkgOwp9CgogCmV4dGVybiBfX2lubGluZSAgaW50CmZlcnJvcl91bmxvY2tlZCAoRklM
RSAqX19zdHJlYW0pICAKewogIHJldHVybiAoKCggX19zdHJlYW0gKS0+X2ZsYWdzICYgMHgyMCAp
ICE9IDApIDsKfQoKCgoKCgogCgojIDE0OSAiL3Vzci9saWIvZ2NjLWxpYi9hcm0tbGludXgvMi45
NS4zLy4uLy4uLy4uLy4uL2FybS1saW51eC9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMwoKCiMgMTY1
ICIvdXNyL2xpYi9nY2MtbGliL2FybS1saW51eC8yLjk1LjMvLi4vLi4vLi4vLi4vYXJtLWxpbnV4
L2luY2x1ZGUvYml0cy9zdGRpby5oIiAzCgoKIAoKIyA2MzUgIi91c3IvbGliL2djYy1saWIvYXJt
LWxpbnV4LzIuOTUuMy8uLi8uLi8uLi8uLi9hcm0tbGludXgvaW5jbHVkZS9zdGRpby5oIiAyIDMK
CgoKIAoKCgoKIyAyMDMgIi4uLy4uL2luY2x1ZGUvbWlzYy5oIiAyCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCgoKIAoKCgoKCiAKCgoKCgoKIAoKCgoKZXh0ZXJuIHZvaWQgU3dhcExvbmdz
KAoKICAgIENBUkQzMiAqbGlzdCwKICAgIHVuc2lnbmVkIGxvbmcgY291bnQKCik7CgpleHRlcm4g
dm9pZCBTd2FwU2hvcnRzKAoKICAgIHNob3J0ICpsaXN0LAogICAgdW5zaWduZWQgbG9uZyBjb3Vu
dAoKKTsKCmV4dGVybiB2b2lkIE1ha2VQcmVkZWNsYXJlZEF0b21zKAoKICAgIHZvaWQKCik7Cgpl
eHRlcm4gaW50IE9uZXMoCgogICAgdW5zaWduZWQgbG9uZyAgCgopOwoKdHlwZWRlZiBzdHJ1Y3Qg
X3hQb2ludCAqRERYUG9pbnRQdHI7CnR5cGVkZWYgc3RydWN0IF9Cb3ggKkJveFB0cjsKdHlwZWRl
ZiBzdHJ1Y3QgX3hFdmVudCAqeEV2ZW50UHRyOwp0eXBlZGVmIHN0cnVjdCBfeFJlY3RhbmdsZSAq
eFJlY3RhbmdsZVB0cjsKdHlwZWRlZiBzdHJ1Y3QgX0dyYWJSZWMgKkdyYWJQdHI7CgogCgoKCgoK
dHlwZWRlZiBzdHJ1Y3QgX0NoYXJJbmZvICpDaGFySW5mb1B0cjsgIAoKCgoKIyA0OCAiLi4vLi4v
aW5jbHVkZS9zY3JlZW5pbnQuaCIgMgoKCnR5cGVkZWYgc3RydWN0IF9QaXhtYXBGb3JtYXQgKlBp
eG1hcEZvcm1hdFB0cjsKdHlwZWRlZiBzdHJ1Y3QgX1Zpc3VhbCAqVmlzdWFsUHRyOwp0eXBlZGVm
IHN0cnVjdCBfRGVwdGggICpEZXB0aFB0cjsKdHlwZWRlZiBzdHJ1Y3QgX1NjcmVlbiAqU2NyZWVu
UHRyOwoKZXh0ZXJuIHZvaWQgUmVzZXRTY3JlZW5Qcml2YXRlcygKCiAgICB2b2lkCgopOwoKZXh0
ZXJuIGludCBBbGxvY2F0ZVNjcmVlblByaXZhdGVJbmRleCgKCiAgICB2b2lkCgopOwoKZXh0ZXJu
IHZvaWQgUmVzZXRXaW5kb3dQcml2YXRlcygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIGludCBBbGxv
Y2F0ZVdpbmRvd1ByaXZhdGVJbmRleCgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIEJvb2wgQWxsb2Nh
dGVXaW5kb3dQcml2YXRlKAoKICAgIFNjcmVlblB0ciAgLAogICAgaW50ICAsCiAgICB1bnNpZ25l
ZCAgCgopOwoKZXh0ZXJuIHZvaWQgUmVzZXRHQ1ByaXZhdGVzKAoKICAgIHZvaWQKCik7CgpleHRl
cm4gaW50IEFsbG9jYXRlR0NQcml2YXRlSW5kZXgoCgogICAgdm9pZAoKKTsKCmV4dGVybiBCb29s
IEFsbG9jYXRlR0NQcml2YXRlKAoKICAgIFNjcmVlblB0ciAgLAogICAgaW50ICAsCiAgICB1bnNp
Z25lZCAgCgopOwoKZXh0ZXJuIGludCBBZGRTY3JlZW4oCgogICAgQm9vbCAoKiAgKSgKCglpbnQg
ICwKCVNjcmVlblB0ciAgLAoJaW50ICAsCgljaGFyICoqICAKCiAgICApLAogICAgaW50ICAsCiAg
ICBjaGFyKiogIAoKKTsKCiMgMTQ0ICIuLi8uLi9pbmNsdWRlL3NjcmVlbmludC5oIgoKCmV4dGVy
biB2b2lkIFJlc2V0Q29sb3JtYXBQcml2YXRlcygKCiAgICB2b2lkCgopOwoKCnR5cGVkZWYgc3Ry
dWN0IF9Db2xvcm1hcFJlYyAqQ29sb3JtYXBQdHI7CnR5cGVkZWYgaW50ICgqSW5pdENtYXBQcml2
RnVuYykoCgoJQ29sb3JtYXBQdHIKCik7CgpleHRlcm4gaW50IEFsbG9jYXRlQ29sb3JtYXBQcml2
YXRlSW5kZXgoCgogICAgSW5pdENtYXBQcml2RnVuYyAgCgopOwoKCiMgNDkgIi4uLy4uL2luY2x1
ZGUvc2NybmludHN0ci5oIiAyCgojIDEgIi4uLy4uL2luY2x1ZGUvbWlzY3N0cnVjdC5oIiAxCiAK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgojIDEgIi4u
Ly4uLy4uLy4uL2V4cG9ydHMvaW5jbHVkZS9YMTEvWHByb3Rvc3RyLmgiIDEKIAoKCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgp0eXBlZGVmIHN0cnVjdCBf
eFNlZ21lbnQgewogICAgSU5UMTYgeDEgICwgeTEgICwgeDIgICwgeTIgIDsKfSB4U2VnbWVudDsK
CiAKCnR5cGVkZWYgc3RydWN0IF94UG9pbnQgewoJSU5UMTYJCXggICwgeSAgOwp9IHhQb2ludDsK
CnR5cGVkZWYgc3RydWN0IF94UmVjdGFuZ2xlIHsKICAgIElOVDE2IHggICwgeSAgOwogICAgQ0FS
RDE2ICB3aWR0aCAgLCBoZWlnaHQgIDsKfSB4UmVjdGFuZ2xlOwoKIAoKdHlwZWRlZiBzdHJ1Y3Qg
X3hBcmMgewogICAgSU5UMTYgeCAgLCB5ICA7CiAgICBDQVJEMTYgICB3aWR0aCAgLCBoZWlnaHQg
IDsKICAgIElOVDE2ICAgYW5nbGUxICAsIGFuZ2xlMiAgOwp9IHhBcmM7CgoKIyA1MCAiLi4vLi4v
aW5jbHVkZS9taXNjc3RydWN0LmgiIDIKCgp0eXBlZGVmIHhQb2ludCBERFhQb2ludFJlYzsKCnR5
cGVkZWYgc3RydWN0IF9Cb3ggewogICAgc2hvcnQgeDEsIHkxLCB4MiwgeTI7Cn0gQm94UmVjOwoK
dHlwZWRlZiB1bmlvbiBfRGV2VW5pb24gewogICAgcG9pbnRlcgkJcHRyOwogICAgbG9uZwkJdmFs
OwogICAgdW5zaWduZWQgbG9uZwl1dmFsOwogICAgcG9pbnRlcgkJKCpmcHRyKSgKCiAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQKCiAgICAgICAgICAgICAgICAgICAgICAgICk7Cn0gRGV2VW5p
b247CgoKIyA1MCAiLi4vLi4vaW5jbHVkZS9zY3JuaW50c3RyLmgiIDIKCiMgMSAiLi4vLi4vaW5j
bHVkZS9ic3RvcmUuaCIgMQogCiAKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMSAiLi4vLi4vaW5jbHVk
ZS9ic3RvcmVzdHIuaCIgMQogCiAKCgoKCgoKCgoKCiAKCgoKCgoKCiMgMSAiLi4vLi4vaW5jbHVk
ZS9nYy5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgoKIyAxICIuLi8uLi8uLi8uLi9leHBvcnRzL2luY2x1ZGUvWDExL1hwcm90by5oIiAxCiAK
CgoKIAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgQ0FSRDE2IEtleUJ1dE1h
c2s7CgogCgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOAlieXRlT3JkZXI7CiAgICBCWVRF
CXBhZDsKICAgIENBUkQxNgltYWpvclZlcnNpb24gICwgbWlub3JWZXJzaW9uICA7CiAgICBDQVJE
MTYJbmJ5dGVzQXV0aFByb3RvICA7CSAKICAgIENBUkQxNgluYnl0ZXNBdXRoU3RyaW5nICA7CSAK
ICAgIENBUkQxNglwYWQyICA7Cn0geENvbm5DbGllbnRQcmVmaXg7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICBDQVJEOCAgICAgICAgICBzdWNjZXNzOwogICAgQllURSAgICAgICAgICAgbGVuZ3RoUmVh
c29uOyAgCiAgICBDQVJEMTYgICAgICAgICBtYWpvclZlcnNpb24gICwgCiAgICAgICAgICAgICAg
ICAgICBtaW5vclZlcnNpb24gIDsKICAgIENBUkQxNiAgICAgICAgIGxlbmd0aCAgOyAgIAp9IHhD
b25uU2V0dXBQcmVmaXg7CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDMyICAgICAgICAgcmVs
ZWFzZSAgOwogICAgQ0FSRDMyICAgICAgICAgcmlkQmFzZSAgLCAKICAgICAgICAgICAgICAgICAg
IHJpZE1hc2sgIDsKICAgIENBUkQzMiAgICAgICAgIG1vdGlvbkJ1ZmZlclNpemUgIDsKICAgIENB
UkQxNiAgICAgICAgIG5ieXRlc1ZlbmRvciAgOyAgIAogICAgQ0FSRDE2ICAgICAgICAgbWF4UmVx
dWVzdFNpemUgIDsKICAgIENBUkQ4ICAgICAgICAgIG51bVJvb3RzOyAgICAgICAgICAgCiAgICBD
QVJEOCAgICAgICAgICBudW1Gb3JtYXRzOyAgICAgICAgIAogICAgQ0FSRDggICAgICAgICAgaW1h
Z2VCeXRlT3JkZXI7ICAgICAgICAgCiAgICBDQVJEOCAgICAgICAgICBiaXRtYXBCaXRPcmRlcjsg
ICAgICAgICAKICAgIENBUkQ4ICAgICAgICAgIGJpdG1hcFNjYW5saW5lVW5pdCwgICAgICAKICAg
ICAgICAgICAgICAgICAgIGJpdG1hcFNjYW5saW5lUGFkOyAgICAgIAogICAgQ0FSRDggCSAgIG1p
bktleUNvZGUsIG1heEtleUNvZGU7CiAgICBDQVJEMzIJICAgcGFkMiAgOwp9IHhDb25uU2V0dXA7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCAgICAgICAgICBkZXB0aDsKICAgIENBUkQ4ICAg
ICAgICAgIGJpdHNQZXJQaXhlbDsKICAgIENBUkQ4ICAgICAgICAgIHNjYW5MaW5lUGFkOwogICAg
Q0FSRDggICAgICAgICAgcGFkMTsKICAgIENBUkQzMgkgICBwYWQyICA7Cn0geFBpeG1hcEZvcm1h
dDsKCiAKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IAlkZXB0aDsKICAgIENBUkQ4IAlwYWQx
OwogICAgQ0FSRDE2CW5WaXN1YWxzICA7ICAgCiAgICBDQVJEMzIJcGFkMiAgOwogICAgfSB4RGVw
dGg7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEMzIgIHZpc3VhbElEICA7CgoKCiAgICBDQVJE
OCBjbGFzczsKCiAgICBDQVJEOCBiaXRzUGVyUkdCOwogICAgQ0FSRDE2IGNvbG9ybWFwRW50cmll
cyAgOwogICAgQ0FSRDMyIHJlZE1hc2sgICwgZ3JlZW5NYXNrICAsIGJsdWVNYXNrICA7CiAgICBD
QVJEMzIgcGFkICA7CiAgICB9IHhWaXN1YWxUeXBlOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FS
RDMyICAgICAgICAgIHdpbmRvd0lkICA7CiAgICBDQVJEMzIgICAgICAgIGRlZmF1bHRDb2xvcm1h
cCAgOwogICAgQ0FSRDMyICAgICAgICAgd2hpdGVQaXhlbCAgLCBibGFja1BpeGVsICA7CiAgICBD
QVJEMzIgICAgICAgICBjdXJyZW50SW5wdXRNYXNrICA7ICAgCiAgICBDQVJEMTYgICAgICAgICBw
aXhXaWR0aCAgLCBwaXhIZWlnaHQgIDsKICAgIENBUkQxNiAgICAgICAgIG1tV2lkdGggICwgbW1I
ZWlnaHQgIDsKICAgIENBUkQxNiAgICAgICAgIG1pbkluc3RhbGxlZE1hcHMgICwgbWF4SW5zdGFs
bGVkTWFwcyAgOwogICAgQ0FSRDMyICAgICAgICByb290VmlzdWFsSUQgIDsKICAgIENBUkQ4ICAg
ICAgICAgIGJhY2tpbmdTdG9yZTsKICAgIEJPT0wgICAgICAgICAgIHNhdmVVbmRlcnM7CiAgICBD
QVJEOCAgICAgICAgICByb290RGVwdGg7CiAgICBDQVJEOCAgICAgICAgICBuRGVwdGhzOyAgIAp9
IHhXaW5kb3dSb290OwoMCgogCgoKCgogCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEMzIgdGlt
ZSAgOwogICAgSU5UMTYgeCAgLCB5ICA7Cn0geFRpbWVjb29yZDsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgIENBUkQ4IGZhbWlseTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxlbmd0aCAgOwp9IHhI
b3N0RW50cnk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBJTlQxNiBsZWZ0U2lkZUJlYXJpbmcgICwK
CSAgcmlnaHRTaWRlQmVhcmluZyAgLAoJICBjaGFyYWN0ZXJXaWR0aCAgLAoJICBhc2NlbnQgICwK
CSAgZGVzY2VudCAgOwogICAgQ0FSRDE2IGF0dHJpYnV0ZXMgIDsKfSB4Q2hhckluZm87Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBDQVJEMzIgIG5hbWUgIDsKICAgIENBUkQzMiB2YWx1ZSAgOwp9IHhG
b250UHJvcDsKCiAKCgp0eXBlZGVmIHN0cnVjdCB7ICAgICAgICAgICAgCiAgICBDQVJEOCBsZW47
CSAKCiAgICBJTlQ4IGRlbHRhOwp9IHhUZXh0RWx0OwoKCnR5cGVkZWYgc3RydWN0IHsgICAgICAg
IAogICAgQ0FSRDMyIHBpeGVsICA7CiAgICBDQVJEMTYgcmVkICAsIGdyZWVuICAsIGJsdWUgIDsK
ICAgIENBUkQ4IGZsYWdzOyAgIAogICAgQ0FSRDggcGFkOwp9IHhDb2xvckl0ZW07CgoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgQ0FSRDE2IHJlZCAgLCBncmVlbiAgLCBibHVlICAsIHBhZCAgOwp9IHhy
Z2I7Cgp0eXBlZGVmIENBUkQ4IEtFWUNPREU7CgwKCiAKCgoKCiAKCgp0eXBlZGVmIHN0cnVjdCB7
CQogICAgQllURSB0eXBlOyAgICAgICAgICAgICAgIAogICAgQllURSBkYXRhMTsgICAgICAgICAg
ICAgIAogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7ICAgCiAgICBDQVJEMzIgbGVuZ3RoICA7
ICAgICAgIAogICAgQ0FSRDMyIGRhdGEwMCAgOwogICAgQ0FSRDMyIGRhdGEwMSAgOwogICAgQ0FS
RDMyIGRhdGEwMiAgOwogICAgQ0FSRDMyIGRhdGEwMyAgOwogICAgQ0FSRDMyIGRhdGEwNCAgOwog
ICAgQ0FSRDMyIGRhdGEwNSAgOwogICAgfSB4R2VuZXJpY1JlcGx5OwoKIAoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgQllURSB0eXBlOyAgIAogICAgQ0FSRDggYmFja2luZ1N0b3JlOwogICAgQ0FSRDE2
IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7CSAKICAgIENBUkQzMiAgdmlz
dWFsSUQgIDsKCgoKICAgIENBUkQxNiBjbGFzcyAgOwoKICAgIENBUkQ4IGJpdEdyYXZpdHk7CiAg
ICBDQVJEOCB3aW5HcmF2aXR5OwogICAgQ0FSRDMyIGJhY2tpbmdCaXRQbGFuZXMgIDsKICAgIENB
UkQzMiBiYWNraW5nUGl4ZWwgIDsKICAgIEJPT0wgc2F2ZVVuZGVyOwogICAgQk9PTCBtYXBJbnN0
YWxsZWQ7CiAgICBDQVJEOCBtYXBTdGF0ZTsKICAgIEJPT0wgb3ZlcnJpZGU7CiAgICBDQVJEMzIg
IGNvbG9ybWFwICA7CiAgICBDQVJEMzIgYWxsRXZlbnRNYXNrcyAgOwogICAgQ0FSRDMyIHlvdXJF
dmVudE1hc2sgIDsKICAgIENBUkQxNiBkb05vdFByb3BhZ2F0ZU1hc2sgIDsKICAgIENBUkQxNiBw
YWQgIDsKICAgIH0geEdldFdpbmRvd0F0dHJpYnV0ZXNSZXBseTsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgIEJZVEUgdHlwZTsgICAgCiAgICBDQVJEOCBkZXB0aDsKICAgIENBUkQxNiBzZXF1ZW5jZU51
bWJlciAgOwogICAgQ0FSRDMyIGxlbmd0aCAgOyAgIAogICAgQ0FSRDMyICByb290ICA7CiAgICBJ
TlQxNiB4ICAsIHkgIDsKICAgIENBUkQxNiB3aWR0aCAgLCBoZWlnaHQgIDsKICAgIENBUkQxNiBi
b3JkZXJXaWR0aCAgOwogICAgQ0FSRDE2IHBhZDEgIDsKICAgIENBUkQzMiBwYWQyICA7CiAgICBD
QVJEMzIgcGFkMyAgOwogICAgfSB4R2V0R2VvbWV0cnlSZXBseTsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgIEJZVEUgdHlwZTsgICAKICAgIEJZVEUgcGFkMTsKICAgIENBUkQxNiBzZXF1ZW5jZU51bWJl
ciAgOwogICAgQ0FSRDMyIGxlbmd0aCAgOwogICAgQ0FSRDMyICByb290ICAsIHBhcmVudCAgOwog
ICAgQ0FSRDE2IG5DaGlsZHJlbiAgOwogICAgQ0FSRDE2IHBhZDIgIDsKICAgIENBUkQzMiBwYWQz
ICA7CiAgICBDQVJEMzIgcGFkNCAgOwogICAgQ0FSRDMyIHBhZDUgIDsKICAgIH0geFF1ZXJ5VHJl
ZVJlcGx5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOyAgIAogICAgQllURSBwYWQx
OwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7ICAKICAg
IENBUkQzMiAgYXRvbSAgOwogICAgQ0FSRDMyIHBhZDIgIDsKICAgIENBUkQzMiBwYWQzICA7CiAg
ICBDQVJEMzIgcGFkNCAgOwogICAgQ0FSRDMyIHBhZDUgIDsKICAgIENBUkQzMiBwYWQ2ICA7CiAg
ICB9IHhJbnRlcm5BdG9tUmVwbHk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFIHR5cGU7ICAg
CiAgICBCWVRFIHBhZDE7CiAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgIDsKICAgIENBUkQzMiBs
ZW5ndGggIDsgICAKICAgIENBUkQxNiBuYW1lTGVuZ3RoICA7ICAgCiAgICBDQVJEMTYgcGFkMiAg
OwogICAgQ0FSRDMyIHBhZDMgIDsKICAgIENBUkQzMiBwYWQ0ICA7CiAgICBDQVJEMzIgcGFkNSAg
OwogICAgQ0FSRDMyIHBhZDYgIDsKICAgIENBUkQzMiBwYWQ3ICA7CiAgICB9IHhHZXRBdG9tTmFt
ZVJlcGx5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOyAgIAogICAgQ0FSRDggZm9y
bWF0OwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7ICAK
ICAgIENBUkQzMiAgcHJvcGVydHlUeXBlICA7CiAgICBDQVJEMzIgYnl0ZXNBZnRlciAgOwogICAg
Q0FSRDMyIG5JdGVtcyAgOyAgCiAgICBDQVJEMzIgcGFkMSAgOwogICAgQ0FSRDMyIHBhZDIgIDsK
ICAgIENBUkQzMiBwYWQzICA7CiAgICB9IHhHZXRQcm9wZXJ0eVJlcGx5OwoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgQllURSB0eXBlOyAgIAogICAgQllURSBwYWQxOwogICAgQ0FSRDE2IHNlcXVlbmNl
TnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7CiAgICBDQVJEMTYgblByb3BlcnRpZXMgIDsK
ICAgIENBUkQxNiBwYWQyICA7CiAgICBDQVJEMzIgcGFkMyAgOwogICAgQ0FSRDMyIHBhZDQgIDsK
ICAgIENBUkQzMiBwYWQ1ICA7CiAgICBDQVJEMzIgcGFkNiAgOwogICAgQ0FSRDMyIHBhZDcgIDsK
ICAgIH0geExpc3RQcm9wZXJ0aWVzUmVwbHk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFIHR5
cGU7ICAgCiAgICBCWVRFIHBhZDE7CiAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgIDsKICAgIENB
UkQzMiBsZW5ndGggIDsgICAKICAgIENBUkQzMiAgb3duZXIgIDsKICAgIENBUkQzMiBwYWQyICA7
CiAgICBDQVJEMzIgcGFkMyAgOwogICAgQ0FSRDMyIHBhZDQgIDsKICAgIENBUkQzMiBwYWQ1ICA7
CiAgICBDQVJEMzIgcGFkNiAgOwogICAgfSB4R2V0U2VsZWN0aW9uT3duZXJSZXBseTsKCnR5cGVk
ZWYgc3RydWN0IHsKICAgIEJZVEUgdHlwZTsgICAKICAgIEJZVEUgc3RhdHVzOwogICAgQ0FSRDE2
IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7ICAgCiAgICBDQVJEMzIgcGFk
MSAgOwogICAgQ0FSRDMyIHBhZDIgIDsKICAgIENBUkQzMiBwYWQzICA7CiAgICBDQVJEMzIgcGFk
NCAgOwogICAgQ0FSRDMyIHBhZDUgIDsKICAgIENBUkQzMiBwYWQ2ICA7CiAgICB9IHhHcmFiUG9p
bnRlclJlcGx5OwoKdHlwZWRlZiB4R3JhYlBvaW50ZXJSZXBseSB4R3JhYktleWJvYXJkUmVwbHk7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFIHR5cGU7ICAgCiAgICBCT09MIHNhbWVTY3JlZW47
CiAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgIDsKICAgIENBUkQzMiBsZW5ndGggIDsgICAKICAg
IENBUkQzMiAgcm9vdCAgLCBjaGlsZCAgOwogICAgSU5UMTYgcm9vdFggICwgcm9vdFkgICwgd2lu
WCAgLCB3aW5ZICA7CiAgICBDQVJEMTYgbWFzayAgOwogICAgQ0FSRDE2IHBhZDEgIDsKICAgIENB
UkQzMiBwYWQgIDsKICAgIH0geFF1ZXJ5UG9pbnRlclJlcGx5OwoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgQllURSB0eXBlOyAgIAogICAgQllURSBwYWQxOwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVy
ICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7CiAgICBDQVJEMzIgbkV2ZW50cyAgOwogICAgQ0FSRDMy
IHBhZDIgIDsKICAgIENBUkQzMiBwYWQzICA7CiAgICBDQVJEMzIgcGFkNCAgOwogICAgQ0FSRDMy
IHBhZDUgIDsKICAgIENBUkQzMiBwYWQ2ICA7CiAgICB9IHhHZXRNb3Rpb25FdmVudHNSZXBseTsK
CnR5cGVkZWYgc3RydWN0IHsKICAgIEJZVEUgdHlwZTsgICAKICAgIEJPT0wgc2FtZVNjcmVlbjsK
ICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciAgOwogICAgQ0FSRDMyIGxlbmd0aCAgOyAgCiAgICBD
QVJEMzIgIGNoaWxkICA7CiAgICBJTlQxNiBkc3RYICAsIGRzdFkgIDsKICAgIENBUkQzMiBwYWQy
ICA7CiAgICBDQVJEMzIgcGFkMyAgOwogICAgQ0FSRDMyIHBhZDQgIDsKICAgIENBUkQzMiBwYWQ1
ICA7CiAgICB9IHhUcmFuc2xhdGVDb29yZHNSZXBseTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIEJZ
VEUgdHlwZTsgICAKICAgIENBUkQ4IHJldmVydFRvOwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVy
ICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7ICAgCiAgICBDQVJEMzIgIGZvY3VzICA7CiAgICBDQVJE
MzIgcGFkMSAgOwogICAgQ0FSRDMyIHBhZDIgIDsKICAgIENBUkQzMiBwYWQzICA7CiAgICBDQVJE
MzIgcGFkNCAgOwogICAgQ0FSRDMyIHBhZDUgIDsKICAgIH0geEdldElucHV0Rm9jdXNSZXBseTsK
CnR5cGVkZWYgc3RydWN0IHsKICAgIEJZVEUgdHlwZTsgICAKICAgIEJZVEUgcGFkMTsKICAgIENB
UkQxNiBzZXF1ZW5jZU51bWJlciAgOwogICAgQ0FSRDMyIGxlbmd0aCAgOyAgIAogICAgQllURSBt
YXBbMzJdOwogICAgfSB4UXVlcnlLZXltYXBSZXBseTsKCiAKdHlwZWRlZiBzdHJ1Y3QgX3hRdWVy
eUZvbnRSZXBseSB7CiAgICBCWVRFIHR5cGU7ICAgCiAgICBCWVRFIHBhZDE7CiAgICBDQVJEMTYg
c2VxdWVuY2VOdW1iZXIgIDsKICAgIENBUkQzMiBsZW5ndGggIDsgICAKICAgIHhDaGFySW5mbyBt
aW5Cb3VuZHM7IAoKICAgIENBUkQzMiB3YWxpZ24xICA7CgogICAgeENoYXJJbmZvIG1heEJvdW5k
czsgCgogICAgQ0FSRDMyIHdhbGlnbjIgIDsKCiAgICBDQVJEMTYgbWluQ2hhck9yQnl0ZTIgICwg
bWF4Q2hhck9yQnl0ZTIgIDsKICAgIENBUkQxNiBkZWZhdWx0Q2hhciAgOwogICAgQ0FSRDE2IG5G
b250UHJvcHMgIDsgICAKICAgIENBUkQ4IGRyYXdEaXJlY3Rpb247CiAgICBDQVJEOCBtaW5CeXRl
MSwgbWF4Qnl0ZTE7CiAgICBCT09MIGFsbENoYXJzRXhpc3Q7CiAgICBJTlQxNiBmb250QXNjZW50
ICAsIGZvbnREZXNjZW50ICA7CiAgICBDQVJEMzIgbkNoYXJJbmZvcyAgOyAgCn0geFF1ZXJ5Rm9u
dFJlcGx5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOyAgIAogICAgQ0FSRDggZHJh
d0RpcmVjdGlvbjsKICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciAgOwogICAgQ0FSRDMyIGxlbmd0
aCAgOyAgIAogICAgSU5UMTYgZm9udEFzY2VudCAgLCBmb250RGVzY2VudCAgOwogICAgSU5UMTYg
b3ZlcmFsbEFzY2VudCAgLCBvdmVyYWxsRGVzY2VudCAgOwogICAgSU5UMzIgb3ZlcmFsbFdpZHRo
ICAsIG92ZXJhbGxMZWZ0ICAsIG92ZXJhbGxSaWdodCAgOwogICAgQ0FSRDMyIHBhZCAgOwogICAg
fSB4UXVlcnlUZXh0RXh0ZW50c1JlcGx5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBl
OyAgIAogICAgQllURSBwYWQxOwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJE
MzIgbGVuZ3RoICA7CiAgICBDQVJEMTYgbkZvbnRzICA7CiAgICBDQVJEMTYgcGFkMiAgOwogICAg
Q0FSRDMyIHBhZDMgIDsKICAgIENBUkQzMiBwYWQ0ICA7CiAgICBDQVJEMzIgcGFkNSAgOwogICAg
Q0FSRDMyIHBhZDYgIDsKICAgIENBUkQzMiBwYWQ3ICA7CiAgICB9IHhMaXN0Rm9udHNSZXBseTsK
CiAKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOyAgIAogICAgQ0FSRDggbmFtZUxlbmd0
aDsgICAKICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciAgOwogICAgQ0FSRDMyIGxlbmd0aCAgOyAg
IAogICAgeENoYXJJbmZvIG1pbkJvdW5kczsgCgogICAgQ0FSRDMyIHdhbGlnbjEgIDsKCiAgICB4
Q2hhckluZm8gbWF4Qm91bmRzOyAKCiAgICBDQVJEMzIgd2FsaWduMiAgOwoKICAgIENBUkQxNiBt
aW5DaGFyT3JCeXRlMiAgLCBtYXhDaGFyT3JCeXRlMiAgOwogICAgQ0FSRDE2IGRlZmF1bHRDaGFy
ICA7CiAgICBDQVJEMTYgbkZvbnRQcm9wcyAgOyAgIAogICAgQ0FSRDggZHJhd0RpcmVjdGlvbjsK
ICAgIENBUkQ4IG1pbkJ5dGUxLCBtYXhCeXRlMTsKICAgIEJPT0wgYWxsQ2hhcnNFeGlzdDsKICAg
IElOVDE2IGZvbnRBc2NlbnQgICwgZm9udERlc2NlbnQgIDsKICAgIENBUkQzMiBuUmVwbGllcyAg
OyAgICAKfSB4TGlzdEZvbnRzV2l0aEluZm9SZXBseTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIEJZ
VEUgdHlwZTsgICAKICAgIEJZVEUgcGFkMTsKICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciAgOwog
ICAgQ0FSRDMyIGxlbmd0aCAgOwogICAgQ0FSRDE2IG5QYXRocyAgOwogICAgQ0FSRDE2IHBhZDIg
IDsKICAgIENBUkQzMiBwYWQzICA7CiAgICBDQVJEMzIgcGFkNCAgOwogICAgQ0FSRDMyIHBhZDUg
IDsKICAgIENBUkQzMiBwYWQ2ICA7CiAgICBDQVJEMzIgcGFkNyAgOwogICAgfSB4R2V0Rm9udFBh
dGhSZXBseTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIEJZVEUgdHlwZTsgICAKICAgIENBUkQ4IGRl
cHRoOwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7CiAg
ICBDQVJEMzIgIHZpc3VhbCAgOwogICAgQ0FSRDMyIHBhZDMgIDsKICAgIENBUkQzMiBwYWQ0ICA7
CiAgICBDQVJEMzIgcGFkNSAgOwogICAgQ0FSRDMyIHBhZDYgIDsKICAgIENBUkQzMiBwYWQ3ICA7
CiAgICB9IHhHZXRJbWFnZVJlcGx5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOyAg
IAogICAgQllURSBwYWQxOwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIg
bGVuZ3RoICA7CiAgICBDQVJEMTYgbkNvbG9ybWFwcyAgOwogICAgQ0FSRDE2IHBhZDIgIDsKICAg
IENBUkQzMiBwYWQzICA7CiAgICBDQVJEMzIgcGFkNCAgOwogICAgQ0FSRDMyIHBhZDUgIDsKICAg
IENBUkQzMiBwYWQ2ICA7CiAgICBDQVJEMzIgcGFkNyAgOwogICAgfSB4TGlzdEluc3RhbGxlZENv
bG9ybWFwc1JlcGx5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOyAgCiAgICBCWVRF
IHBhZDE7CiAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgIDsKICAgIENBUkQzMiBsZW5ndGggIDsg
ICAgCiAgICBDQVJEMTYgcmVkICAsIGdyZWVuICAsIGJsdWUgIDsKICAgIENBUkQxNiBwYWQyICA7
CiAgICBDQVJEMzIgcGl4ZWwgIDsKICAgIENBUkQzMiBwYWQzICA7CiAgICBDQVJEMzIgcGFkNCAg
OwogICAgQ0FSRDMyIHBhZDUgIDsKICAgIH0geEFsbG9jQ29sb3JSZXBseTsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgIEJZVEUgdHlwZTsgIAogICAgQllURSBwYWQxOwogICAgQ0FSRDE2IHNlcXVlbmNl
TnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7ICAgCiAgICBDQVJEMzIgcGl4ZWwgIDsKICAg
IENBUkQxNiBleGFjdFJlZCAgLCBleGFjdEdyZWVuICAsIGV4YWN0Qmx1ZSAgOwogICAgQ0FSRDE2
IHNjcmVlblJlZCAgLCBzY3JlZW5HcmVlbiAgLCBzY3JlZW5CbHVlICA7CiAgICBDQVJEMzIgcGFk
MiAgOwogICAgQ0FSRDMyIHBhZDMgIDsKICAgIH0geEFsbG9jTmFtZWRDb2xvclJlcGx5OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOyAgIAogICAgQllURSBwYWQxOwogICAgQ0FSRDE2
IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7CiAgICBDQVJEMTYgblBpeGVs
cyAgLCBuTWFza3MgIDsKICAgIENBUkQzMiBwYWQzICA7CiAgICBDQVJEMzIgcGFkNCAgOwogICAg
Q0FSRDMyIHBhZDUgIDsKICAgIENBUkQzMiBwYWQ2ICA7CiAgICBDQVJEMzIgcGFkNyAgOwogICAg
fSB4QWxsb2NDb2xvckNlbGxzUmVwbHk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFIHR5cGU7
ICAKICAgIEJZVEUgcGFkMTsKICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciAgOwogICAgQ0FSRDMy
IGxlbmd0aCAgOwogICAgQ0FSRDE2IG5QaXhlbHMgIDsKICAgIENBUkQxNiBwYWQyICA7CiAgICBD
QVJEMzIgcmVkTWFzayAgLCBncmVlbk1hc2sgICwgYmx1ZU1hc2sgIDsKICAgIENBUkQzMiBwYWQz
ICA7CiAgICBDQVJEMzIgcGFkNCAgOwogICAgfSB4QWxsb2NDb2xvclBsYW5lc1JlcGx5OwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOyAgCiAgICBCWVRFIHBhZDE7CiAgICBDQVJEMTYg
c2VxdWVuY2VOdW1iZXIgIDsKICAgIENBUkQzMiBsZW5ndGggIDsKICAgIENBUkQxNiBuQ29sb3Jz
ICA7CiAgICBDQVJEMTYgcGFkMiAgOwogICAgQ0FSRDMyIHBhZDMgIDsKICAgIENBUkQzMiBwYWQ0
ICA7CiAgICBDQVJEMzIgcGFkNSAgOwogICAgQ0FSRDMyIHBhZDYgIDsKICAgIENBUkQzMiBwYWQ3
ICA7CiAgICB9IHhRdWVyeUNvbG9yc1JlcGx5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0
eXBlOyAgIAogICAgQllURSBwYWQxOwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7CiAgICBD
QVJEMzIgbGVuZ3RoICA7ICAgCiAgICBDQVJEMTYgZXhhY3RSZWQgICwgZXhhY3RHcmVlbiAgLCBl
eGFjdEJsdWUgIDsKICAgIENBUkQxNiBzY3JlZW5SZWQgICwgc2NyZWVuR3JlZW4gICwgc2NyZWVu
Qmx1ZSAgOwogICAgQ0FSRDMyIHBhZDMgIDsKICAgIENBUkQzMiBwYWQ0ICA7CiAgICBDQVJEMzIg
cGFkNSAgOwogICAgfSB4TG9va3VwQ29sb3JSZXBseTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIEJZ
VEUgdHlwZTsgICAKICAgIEJZVEUgcGFkMTsKICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciAgOwog
ICAgQ0FSRDMyIGxlbmd0aCAgOyAgIAogICAgQ0FSRDE2IHdpZHRoICAsIGhlaWdodCAgOwogICAg
Q0FSRDMyIHBhZDMgIDsKICAgIENBUkQzMiBwYWQ0ICA7CiAgICBDQVJEMzIgcGFkNSAgOwogICAg
Q0FSRDMyIHBhZDYgIDsKICAgIENBUkQzMiBwYWQ3ICA7CiAgICB9IHhRdWVyeUJlc3RTaXplUmVw
bHk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFIHR5cGU7ICAgCiAgICBCWVRFIHBhZDE7CiAg
ICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgIDsKICAgIENBUkQzMiBsZW5ndGggIDsgIAogICAgQk9P
TCAgcHJlc2VudDsKICAgIENBUkQ4IG1ham9yX29wY29kZTsKICAgIENBUkQ4IGZpcnN0X2V2ZW50
OwogICAgQ0FSRDggZmlyc3RfZXJyb3I7CiAgICBDQVJEMzIgcGFkMyAgOwogICAgQ0FSRDMyIHBh
ZDQgIDsKICAgIENBUkQzMiBwYWQ1ICA7CiAgICBDQVJEMzIgcGFkNiAgOwogICAgQ0FSRDMyIHBh
ZDcgIDsKICAgIH0geFF1ZXJ5RXh0ZW5zaW9uUmVwbHk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBC
WVRFIHR5cGU7ICAgCiAgICBDQVJEOCBuRXh0ZW5zaW9uczsKICAgIENBUkQxNiBzZXF1ZW5jZU51
bWJlciAgOwogICAgQ0FSRDMyIGxlbmd0aCAgOwogICAgQ0FSRDMyIHBhZDIgIDsKICAgIENBUkQz
MiBwYWQzICA7CiAgICBDQVJEMzIgcGFkNCAgOwogICAgQ0FSRDMyIHBhZDUgIDsKICAgIENBUkQz
MiBwYWQ2ICA7CiAgICBDQVJEMzIgcGFkNyAgOwogICAgfSB4TGlzdEV4dGVuc2lvbnNSZXBseTsK
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFICAgdHlwZTsgICAKICAgIENBUkQ4ICBzdWNjZXNz
OwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7CiAgICBD
QVJEMzIgcGFkMiAgOwogICAgQ0FSRDMyIHBhZDMgIDsKICAgIENBUkQzMiBwYWQ0ICA7CiAgICBD
QVJEMzIgcGFkNSAgOwogICAgQ0FSRDMyIHBhZDYgIDsKICAgIENBUkQzMiBwYWQ3ICA7CiAgICB9
IHhTZXRNYXBwaW5nUmVwbHk7CnR5cGVkZWYgeFNldE1hcHBpbmdSZXBseSB4U2V0UG9pbnRlck1h
cHBpbmdSZXBseTsKdHlwZWRlZiB4U2V0TWFwcGluZ1JlcGx5IHhTZXRNb2RpZmllck1hcHBpbmdS
ZXBseTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIEJZVEUgdHlwZTsgICAKICAgIENBUkQ4IG5FbHRz
OyAgIAogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7CiAg
ICBDQVJEMzIgcGFkMiAgOwogICAgQ0FSRDMyIHBhZDMgIDsKICAgIENBUkQzMiBwYWQ0ICA7CiAg
ICBDQVJEMzIgcGFkNSAgOwogICAgQ0FSRDMyIHBhZDYgIDsKICAgIENBUkQzMiBwYWQ3ICA7CiAg
ICB9IHhHZXRQb2ludGVyTWFwcGluZ1JlcGx5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0
eXBlOwogICAgQ0FSRDgga2V5U3ltc1BlcktleUNvZGU7CiAgICBDQVJEMTYgc2VxdWVuY2VOdW1i
ZXIgIDsKICAgIENBUkQzMiBsZW5ndGggIDsKICAgIENBUkQzMiBwYWQyICA7CiAgICBDQVJEMzIg
cGFkMyAgOwogICAgQ0FSRDMyIHBhZDQgIDsKICAgIENBUkQzMiBwYWQ1ICA7CiAgICBDQVJEMzIg
cGFkNiAgOwogICAgQ0FSRDMyIHBhZDcgIDsKfSB4R2V0S2V5Ym9hcmRNYXBwaW5nUmVwbHk7ICAg
IAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOwogICAgQ0FSRDggbnVtS2V5UGVyTW9k
aWZpZXI7CiAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgIDsKICAgIENBUkQzMiBsZW5ndGggIDsK
ICAgIENBUkQzMiBwYWQxICA7CiAgICBDQVJEMzIgcGFkMiAgOwogICAgQ0FSRDMyIHBhZDMgIDsK
ICAgIENBUkQzMiBwYWQ0ICA7CiAgICBDQVJEMzIgcGFkNSAgOwogICAgQ0FSRDMyIHBhZDYgIDsK
fSB4R2V0TW9kaWZpZXJNYXBwaW5nUmVwbHk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFIHR5
cGU7ICAgCiAgICBCT09MIGdsb2JhbEF1dG9SZXBlYXQ7CiAgICBDQVJEMTYgc2VxdWVuY2VOdW1i
ZXIgIDsKICAgIENBUkQzMiBsZW5ndGggIDsgICAKICAgIENBUkQzMiBsZWRNYXNrICA7CiAgICBD
QVJEOCBrZXlDbGlja1BlcmNlbnQsIGJlbGxQZXJjZW50OwogICAgQ0FSRDE2IGJlbGxQaXRjaCAg
LCBiZWxsRHVyYXRpb24gIDsKICAgIENBUkQxNiBwYWQgIDsKICAgIEJZVEUgbWFwWzMyXTsgICAK
ICAgIH0geEdldEtleWJvYXJkQ29udHJvbFJlcGx5OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQllU
RSB0eXBlOyAgIAogICAgQllURSBwYWQxOwogICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyICA7CiAg
ICBDQVJEMzIgbGVuZ3RoICA7ICAgCiAgICBDQVJEMTYgYWNjZWxOdW1lcmF0b3IgICwgYWNjZWxE
ZW5vbWluYXRvciAgOwogICAgQ0FSRDE2IHRocmVzaG9sZCAgOwogICAgQ0FSRDE2IHBhZDIgIDsK
ICAgIENBUkQzMiBwYWQzICA7CiAgICBDQVJEMzIgcGFkNCAgOwogICAgQ0FSRDMyIHBhZDUgIDsK
ICAgIENBUkQzMiBwYWQ2ICA7CiAgICB9IHhHZXRQb2ludGVyQ29udHJvbFJlcGx5OwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgQllURSB0eXBlOyAgIAogICAgQllURSBwYWQxOwogICAgQ0FSRDE2IHNl
cXVlbmNlTnVtYmVyICA7CiAgICBDQVJEMzIgbGVuZ3RoICA7ICAgCiAgICBDQVJEMTYgdGltZW91
dCAgLCBpbnRlcnZhbCAgOwogICAgQk9PTCBwcmVmZXJCbGFua2luZzsKICAgIEJPT0wgYWxsb3dF
eHBvc3VyZXM7CiAgICBDQVJEMTYgcGFkMiAgOwogICAgQ0FSRDMyIHBhZDMgIDsKICAgIENBUkQz
MiBwYWQ0ICA7CiAgICBDQVJEMzIgcGFkNSAgOwogICAgQ0FSRDMyIHBhZDYgIDsKICAgIH0geEdl
dFNjcmVlblNhdmVyUmVwbHk7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFIHR5cGU7ICAgCiAg
ICBCT09MIGVuYWJsZWQ7CiAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgIDsKICAgIENBUkQzMiBs
ZW5ndGggIDsKICAgIENBUkQxNiBuSG9zdHMgIDsKICAgIENBUkQxNiBwYWQxICA7CiAgICBDQVJE
MzIgcGFkMyAgOwogICAgQ0FSRDMyIHBhZDQgIDsKICAgIENBUkQzMiBwYWQ1ICA7CiAgICBDQVJE
MzIgcGFkNiAgOwogICAgQ0FSRDMyIHBhZDcgIDsKICAgIH0geExpc3RIb3N0c1JlcGx5OwoKDAoK
CiAKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIEJZVEUgdHlwZTsgICAgICAgICAgICAgICAgICAg
CiAgICBCWVRFIGVycm9yQ29kZTsKICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciAgOyAgICAgICAg
CiAgICBDQVJEMzIgcmVzb3VyY2VJRCAgOwogICAgQ0FSRDE2IG1pbm9yQ29kZSAgOwogICAgQ0FS
RDggbWFqb3JDb2RlOwogICAgQllURSBwYWQxOwogICAgQ0FSRDMyIHBhZDMgIDsKICAgIENBUkQz
MiBwYWQ0ICA7CiAgICBDQVJEMzIgcGFkNSAgOwogICAgQ0FSRDMyIHBhZDYgIDsKICAgIENBUkQz
MiBwYWQ3ICA7Cn0geEVycm9yOwoKIAoKCgoKdHlwZWRlZiBzdHJ1Y3QgX3hFdmVudCB7CiAgICB1
bmlvbiB7CglzdHJ1Y3QgewoJICAgIEJZVEUgdHlwZTsKCSAgICBCWVRFIGRldGFpbDsKCSAgICBD
QVJEMTYgc2VxdWVuY2VOdW1iZXIgIDsKCSAgICB9IHU7CglzdHJ1Y3QgewogICAgICAgICAgICBD
QVJEMzIgcGFkMDAgIDsKCSAgICBDQVJEMzIgIHRpbWUgIDsKCSAgICBDQVJEMzIgIHJvb3QgICwg
ZXZlbnQgICwgY2hpbGQgIDsKCSAgICBJTlQxNiByb290WCAgLCByb290WSAgLCBldmVudFggICwg
ZXZlbnRZICA7CgkgICAgS2V5QnV0TWFzayBzdGF0ZSAgOwoJICAgIEJPT0wgc2FtZVNjcmVlbjsJ
CQoJICAgIEJZVEUgcGFkMTsKCX0ga2V5QnV0dG9uUG9pbnRlcjsKCXN0cnVjdCB7CiAgICAgICAg
ICAgIENBUkQzMiBwYWQwMCAgOwogICAgICAgICAgICBDQVJEMzIgIHRpbWUgIDsKCSAgICBDQVJE
MzIgIHJvb3QgICwgZXZlbnQgICwgY2hpbGQgIDsKCSAgICBJTlQxNiByb290WCAgLCByb290WSAg
LCBldmVudFggICwgZXZlbnRZICA7CgkgICAgS2V5QnV0TWFzayBzdGF0ZSAgOwoJICAgIEJZVEUg
bW9kZTsgCQkJIAoJICAgIEJZVEUgZmxhZ3M7CQkgCgoKCX0gZW50ZXJMZWF2ZTsKCXN0cnVjdCB7
CiAgICAgICAgICAgIENBUkQzMiBwYWQwMCAgOwoJICAgIENBUkQzMiAgd2luZG93ICA7CgkgICAg
QllURSBtb2RlOyAJCQkgCgkgICAgQllURSBwYWQxLCBwYWQyLCBwYWQzOwoJfSBmb2N1czsKCXN0
cnVjdCB7CiAgICAgICAgICAgIENBUkQzMiBwYWQwMCAgOwoJICAgIENBUkQzMiAgd2luZG93ICA7
CgkgICAgQ0FSRDE2IHggICwgeSAgLCB3aWR0aCAgLCBoZWlnaHQgIDsKCSAgICBDQVJEMTYgY291
bnQgIDsKCSAgICBDQVJEMTYgcGFkMiAgOwoJfSBleHBvc2U7CglzdHJ1Y3QgewogICAgICAgICAg
ICBDQVJEMzIgcGFkMDAgIDsKCSAgICBDQVJEMzIgIGRyYXdhYmxlICA7CgkgICAgQ0FSRDE2IHgg
ICwgeSAgLCB3aWR0aCAgLCBoZWlnaHQgIDsKCSAgICBDQVJEMTYgbWlub3JFdmVudCAgOwoJICAg
IENBUkQxNiBjb3VudCAgOwoJICAgIEJZVEUgbWFqb3JFdmVudDsKCSAgICBCWVRFIHBhZDEsIHBh
ZDIsIHBhZDM7Cgl9IGdyYXBoaWNzRXhwb3N1cmU7CglzdHJ1Y3QgewogICAgICAgICAgICBDQVJE
MzIgcGFkMDAgIDsKCSAgICBDQVJEMzIgIGRyYXdhYmxlICA7CgkgICAgQ0FSRDE2IG1pbm9yRXZl
bnQgIDsKCSAgICBCWVRFIG1ham9yRXZlbnQ7CgkgICAgQllURSBicGFkOwoJfSBub0V4cG9zdXJl
OwoJc3RydWN0IHsKICAgICAgICAgICAgQ0FSRDMyIHBhZDAwICA7CgkgICAgQ0FSRDMyICB3aW5k
b3cgIDsKCSAgICBDQVJEOCBzdGF0ZTsKCSAgICBCWVRFIHBhZDEsIHBhZDIsIHBhZDM7Cgl9IHZp
c2liaWxpdHk7CglzdHJ1Y3QgewogICAgICAgICAgICBDQVJEMzIgcGFkMDAgIDsKCSAgICBDQVJE
MzIgIHBhcmVudCAgLCB3aW5kb3cgIDsKCSAgICBJTlQxNiB4ICAsIHkgIDsKCSAgICBDQVJEMTYg
d2lkdGggICwgaGVpZ2h0ICAsIGJvcmRlcldpZHRoICA7CgkgICAgQk9PTCBvdmVycmlkZTsKCSAg
ICBCWVRFIGJwYWQ7CiAgICAgICAgfSBjcmVhdGVOb3RpZnk7CiAKCgoKCgoKCglzdHJ1Y3Qgewog
ICAgICAgICAgICBDQVJEMzIgcGFkMDAgIDsKCSAgICBDQVJEMzIgIGV2ZW50ICAsIHdpbmRvdyAg
OwoJfSBkZXN0cm95Tm90aWZ5OwoJc3RydWN0IHsKICAgICAgICAgICAgQ0FSRDMyIHBhZDAwICA7
CgkgICAgQ0FSRDMyICBldmVudCAgLCB3aW5kb3cgIDsKCSAgICBCT09MIGZyb21Db25maWd1cmU7
CgkgICAgQllURSBwYWQxLCBwYWQyLCBwYWQzOwogICAgICAgIH0gdW5tYXBOb3RpZnk7CglzdHJ1
Y3QgewogICAgICAgICAgICBDQVJEMzIgcGFkMDAgIDsKCSAgICBDQVJEMzIgIGV2ZW50ICAsIHdp
bmRvdyAgOwoJICAgIEJPT0wgb3ZlcnJpZGU7CgkgICAgQllURSBwYWQxLCBwYWQyLCBwYWQzOwog
ICAgICAgIH0gbWFwTm90aWZ5OwoJc3RydWN0IHsKICAgICAgICAgICAgQ0FSRDMyIHBhZDAwICA7
CgkgICAgQ0FSRDMyICBwYXJlbnQgICwgd2luZG93ICA7CiAgICAgICAgfSBtYXBSZXF1ZXN0OwoJ
c3RydWN0IHsKICAgICAgICAgICAgQ0FSRDMyIHBhZDAwICA7CgkgICAgQ0FSRDMyICBldmVudCAg
LCB3aW5kb3cgICwgcGFyZW50ICA7CgkgICAgSU5UMTYgeCAgLCB5ICA7CgkgICAgQk9PTCBvdmVy
cmlkZTsKCSAgICBCWVRFIHBhZDEsIHBhZDIsIHBhZDM7Cgl9IHJlcGFyZW50OwoJc3RydWN0IHsK
ICAgICAgICAgICAgQ0FSRDMyIHBhZDAwICA7CgkgICAgQ0FSRDMyICBldmVudCAgLCB3aW5kb3cg
ICwgYWJvdmVTaWJsaW5nICA7CgkgICAgSU5UMTYgeCAgLCB5ICA7CgkgICAgQ0FSRDE2IHdpZHRo
ICAsIGhlaWdodCAgLCBib3JkZXJXaWR0aCAgOwoJICAgIEJPT0wgb3ZlcnJpZGU7CQkKCSAgICBC
WVRFIGJwYWQ7Cgl9IGNvbmZpZ3VyZU5vdGlmeTsKCXN0cnVjdCB7CiAgICAgICAgICAgIENBUkQz
MiBwYWQwMCAgOwoJICAgIENBUkQzMiAgcGFyZW50ICAsIHdpbmRvdyAgLCBzaWJsaW5nICA7Cgkg
ICAgSU5UMTYgeCAgLCB5ICA7CgkgICAgQ0FSRDE2IHdpZHRoICAsIGhlaWdodCAgLCBib3JkZXJX
aWR0aCAgOwoJICAgIENBUkQxNiB2YWx1ZU1hc2sgIDsKCSAgICBDQVJEMzIgcGFkMSAgOwoJfSBj
b25maWd1cmVSZXF1ZXN0OwoJc3RydWN0IHsKICAgICAgICAgICAgQ0FSRDMyIHBhZDAwICA7Cgkg
ICAgQ0FSRDMyICBldmVudCAgLCB3aW5kb3cgIDsKCSAgICBJTlQxNiB4ICAsIHkgIDsKCSAgICBD
QVJEMzIgcGFkMSAgLCBwYWQyICAsIHBhZDMgICwgcGFkNCAgOwoJfSBncmF2aXR5OwoJc3RydWN0
IHsKICAgICAgICAgICAgQ0FSRDMyIHBhZDAwICA7CgkgICAgQ0FSRDMyICB3aW5kb3cgIDsKCSAg
ICBDQVJEMTYgd2lkdGggICwgaGVpZ2h0ICA7Cgl9IHJlc2l6ZVJlcXVlc3Q7CglzdHJ1Y3Qgewog
CgogICAgICAgICAgICBDQVJEMzIgcGFkMDAgIDsKCSAgICBDQVJEMzIgIGV2ZW50ICAsIHdpbmRv
dyAgLCBwYXJlbnQgIDsKCSAgICBCWVRFIHBsYWNlOwkJCSAKCSAgICBCWVRFIHBhZDEsIHBhZDIs
IHBhZDM7Cgl9IGNpcmN1bGF0ZTsKCXN0cnVjdCB7CiAgICAgICAgICAgIENBUkQzMiBwYWQwMCAg
OwoJICAgIENBUkQzMiAgd2luZG93ICA7CgkgICAgQ0FSRDMyICBhdG9tICA7CgkgICAgQ0FSRDMy
ICB0aW1lICA7CgkgICAgQllURSBzdGF0ZTsJCQkgCgkgICAgQllURSBwYWQxOwoJICAgIENBUkQx
NiBwYWQyICA7Cgl9IHByb3BlcnR5OwoJc3RydWN0IHsKICAgICAgICAgICAgQ0FSRDMyIHBhZDAw
ICA7CiAgICAgICAgICAgIENBUkQzMiAgdGltZSAgOyAgICAgCgkgICAgQ0FSRDMyICB3aW5kb3cg
IDsKCSAgICBDQVJEMzIgIGF0b20gIDsKCX0gc2VsZWN0aW9uQ2xlYXI7CglzdHJ1Y3QgewogICAg
ICAgICAgICBDQVJEMzIgcGFkMDAgIDsKICAgICAgICAgICAgQ0FSRDMyICB0aW1lICA7ICAgIAoJ
ICAgIENBUkQzMiAgb3duZXIgICwgcmVxdWVzdG9yICA7CgkgICAgQ0FSRDMyICBzZWxlY3Rpb24g
ICwgdGFyZ2V0ICAsIHByb3BlcnR5ICA7Cgl9IHNlbGVjdGlvblJlcXVlc3Q7CglzdHJ1Y3Qgewog
ICAgICAgICAgICBDQVJEMzIgcGFkMDAgIDsKICAgICAgICAgICAgQ0FSRDMyICB0aW1lICA7ICAg
CgkgICAgQ0FSRDMyICByZXF1ZXN0b3IgIDsKCSAgICBDQVJEMzIgIHNlbGVjdGlvbiAgLCB0YXJn
ZXQgICwgcHJvcGVydHkgIDsKCX0gc2VsZWN0aW9uTm90aWZ5OwoJc3RydWN0IHsKICAgICAgICAg
ICAgQ0FSRDMyIHBhZDAwICA7CgkgICAgQ0FSRDMyICB3aW5kb3cgIDsKCSAgICBDQVJEMzIgIGNv
bG9ybWFwICA7CgoKCgkgICAgQk9PTCBuZXc7CgoJICAgIEJZVEUgc3RhdGU7CQkJIAoJICAgIEJZ
VEUgcGFkMSwgcGFkMjsKCX0gY29sb3JtYXA7CglzdHJ1Y3QgewoJICAgIENBUkQzMiBwYWQwMCAg
OwoJICAgIENBUkQ4IHJlcXVlc3Q7CgkgICAgQ0FSRDggIGZpcnN0S2V5Q29kZTsKCSAgICBDQVJE
OCBjb3VudDsKCSAgICBCWVRFIHBhZDE7Cgl9IG1hcHBpbmdOb3RpZnk7CglzdHJ1Y3QgewogICAg
ICAgICAgICBDQVJEMzIgcGFkMDAgIDsKCSAgICBDQVJEMzIgIHdpbmRvdyAgOwoJICAgIHVuaW9u
IHsKCQlzdHJ1Y3QgewoJCSAgICBDQVJEMzIgIHR5cGUgIDsKCQkgICAgSU5UMzIgbG9uZ3MwICA7
CgkJICAgIElOVDMyIGxvbmdzMSAgOwoJCSAgICBJTlQzMiBsb25nczIgIDsKCQkgICAgSU5UMzIg
bG9uZ3MzICA7CgkJICAgIElOVDMyIGxvbmdzNCAgOwoJCX0gbDsKCQlzdHJ1Y3QgewoJCSAgICBD
QVJEMzIgIHR5cGUgIDsKCQkgICAgSU5UMTYgc2hvcnRzMCAgOwoJCSAgICBJTlQxNiBzaG9ydHMx
ICA7CgkJICAgIElOVDE2IHNob3J0czIgIDsKCQkgICAgSU5UMTYgc2hvcnRzMyAgOwoJCSAgICBJ
TlQxNiBzaG9ydHM0ICA7CgkJICAgIElOVDE2IHNob3J0czUgIDsKCQkgICAgSU5UMTYgc2hvcnRz
NiAgOwoJCSAgICBJTlQxNiBzaG9ydHM3ICA7CgkJICAgIElOVDE2IHNob3J0czggIDsKCQkgICAg
SU5UMTYgc2hvcnRzOSAgOwoJCX0gczsKCQlzdHJ1Y3QgewoJCSAgICBDQVJEMzIgIHR5cGUgIDsK
CQkgICAgSU5UOCBieXRlc1syMF07CgkJfSBiOwoJICAgIH0gdTsgCgl9IGNsaWVudE1lc3NhZ2U7
CiAgICB9IHU7Cn0geEV2ZW50OwoKIAoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFIHR5cGU7
CiAgICBCWVRFIG1hcFszMV07CiAgICB9IHhLZXltYXBFdmVudDsKCgoKIAoKCgoKdHlwZWRlZiB1
bmlvbiB7CiAgICB4R2VuZXJpY1JlcGx5IGdlbmVyaWM7CiAgICB4R2V0R2VvbWV0cnlSZXBseSBn
ZW9tOwogICAgeFF1ZXJ5VHJlZVJlcGx5IHRyZWU7CiAgICB4SW50ZXJuQXRvbVJlcGx5IGF0b207
CiAgICB4R2V0QXRvbU5hbWVSZXBseSBhdG9tTmFtZTsKICAgIHhHZXRQcm9wZXJ0eVJlcGx5IHBy
b3BlcnR5OwogICAgeExpc3RQcm9wZXJ0aWVzUmVwbHkgbGlzdFByb3BlcnRpZXM7CiAgICB4R2V0
U2VsZWN0aW9uT3duZXJSZXBseSBzZWxlY3Rpb247CiAgICB4R3JhYlBvaW50ZXJSZXBseSBncmFi
UG9pbnRlcjsKICAgIHhHcmFiS2V5Ym9hcmRSZXBseSBncmFiS2V5Ym9hcmQ7CiAgICB4UXVlcnlQ
b2ludGVyUmVwbHkgcG9pbnRlcjsKICAgIHhHZXRNb3Rpb25FdmVudHNSZXBseSBtb3Rpb25FdmVu
dHM7CiAgICB4VHJhbnNsYXRlQ29vcmRzUmVwbHkgY29vcmRzOwogICAgeEdldElucHV0Rm9jdXNS
ZXBseSBpbnB1dEZvY3VzOwogICAgeFF1ZXJ5VGV4dEV4dGVudHNSZXBseSB0ZXh0RXh0ZW50czsK
ICAgIHhMaXN0Rm9udHNSZXBseSBmb250czsKICAgIHhHZXRGb250UGF0aFJlcGx5IGZvbnRQYXRo
OwogICAgeEdldEltYWdlUmVwbHkgaW1hZ2U7CiAgICB4TGlzdEluc3RhbGxlZENvbG9ybWFwc1Jl
cGx5IGNvbG9ybWFwczsKICAgIHhBbGxvY0NvbG9yUmVwbHkgYWxsb2NDb2xvcjsKICAgIHhBbGxv
Y05hbWVkQ29sb3JSZXBseSBhbGxvY05hbWVkQ29sb3I7CiAgICB4QWxsb2NDb2xvckNlbGxzUmVw
bHkgY29sb3JDZWxsczsKICAgIHhBbGxvY0NvbG9yUGxhbmVzUmVwbHkgY29sb3JQbGFuZXM7CiAg
ICB4UXVlcnlDb2xvcnNSZXBseSBjb2xvcnM7CiAgICB4TG9va3VwQ29sb3JSZXBseSBsb29rdXBD
b2xvcjsKICAgIHhRdWVyeUJlc3RTaXplUmVwbHkgYmVzdFNpemU7CiAgICB4UXVlcnlFeHRlbnNp
b25SZXBseSBleHRlbnNpb247CiAgICB4TGlzdEV4dGVuc2lvbnNSZXBseSBleHRlbnNpb25zOwog
ICAgeFNldE1vZGlmaWVyTWFwcGluZ1JlcGx5IHNldE1vZGlmaWVyTWFwcGluZzsKICAgIHhHZXRN
b2RpZmllck1hcHBpbmdSZXBseSBnZXRNb2RpZmllck1hcHBpbmc7CiAgICB4U2V0UG9pbnRlck1h
cHBpbmdSZXBseSBzZXRQb2ludGVyTWFwcGluZzsKICAgIHhHZXRLZXlib2FyZE1hcHBpbmdSZXBs
eSBnZXRLZXlib2FyZE1hcHBpbmc7CiAgICB4R2V0UG9pbnRlck1hcHBpbmdSZXBseSBnZXRQb2lu
dGVyTWFwcGluZzsKICAgIHhHZXRQb2ludGVyQ29udHJvbFJlcGx5IHBvaW50ZXJDb250cm9sOwog
ICAgeEdldFNjcmVlblNhdmVyUmVwbHkgc2NyZWVuU2F2ZXI7CiAgICB4TGlzdEhvc3RzUmVwbHkg
aG9zdHM7CiAgICB4RXJyb3IgZXJyb3I7CiAgICB4RXZlbnQgZXZlbnQ7Cn0geFJlcGx5OwoKDAoK
IAoKCgoKIAoKdHlwZWRlZiBzdHJ1Y3QgX3hSZXEgewoJQ0FSRDggcmVxVHlwZTsKCUNBUkQ4IGRh
dGE7ICAgICAgICAgICAgIAoJQ0FSRDE2IGxlbmd0aCAgOyAgICAgICAgICAKCn0geFJlcTsKCiAK
CgoKIAoKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7CiAgICBCWVRFIHBhZDsK
ICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiBpZCAgOyAgIAogICAgfSB4UmVzb3VyY2VS
ZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQ0FSRDggZGVwdGg7
CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIHdpZCAgLCBwYXJlbnQgIDsKICAgIElO
VDE2IHggICwgeSAgOwogICAgQ0FSRDE2IHdpZHRoICAsIGhlaWdodCAgLCBib3JkZXJXaWR0aCAg
OyAgCgoKCiAgICBDQVJEMTYgY2xhc3MgIDsKCiAgICBDQVJEMzIgIHZpc3VhbCAgOwogICAgQ0FS
RDMyIG1hc2sgIDsKfSB4Q3JlYXRlV2luZG93UmVxOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FS
RDggcmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDMy
ICB3aW5kb3cgIDsKICAgIENBUkQzMiB2YWx1ZU1hc2sgIDsgCn0geENoYW5nZVdpbmRvd0F0dHJp
YnV0ZXNSZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBt
b2RlOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDMyICB3aW5kb3cgIDsKfSB4Q2hhbmdl
U2F2ZVNldFJlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7CiAgICBCWVRF
IHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiAgd2luZG93ICAsIHBhcmVudCAg
OwogICAgSU5UMTYgeCAgLCB5ICA7Cn0geFJlcGFyZW50V2luZG93UmVxOwoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIENBUkQ4IHBhZDsKICAgIENBUkQxNiBsZW5ndGgg
IDsKICAgIENBUkQzMiAgd2luZG93ICA7CiAgICBDQVJEMTYgbWFzayAgOwogICAgQ0FSRDE2IHBh
ZDIgIDsKfSB4Q29uZmlndXJlV2luZG93UmVxOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDgg
cmVxVHlwZTsKICAgIENBUkQ4IGRpcmVjdGlvbjsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENB
UkQzMiAgd2luZG93ICA7Cn0geENpcmN1bGF0ZVdpbmRvd1JlcTsKCnR5cGVkZWYgc3RydWN0IHsg
ICAgIAogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJPT0wgb25seUlmRXhpc3RzOwogICAgQ0FSRDE2
IGxlbmd0aCAgOwogICAgQ0FSRDE2IG5ieXRlcyAgIDsgICAgIAogICAgQ0FSRDE2IHBhZCAgOwp9
IHhJbnRlcm5BdG9tUmVxOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAg
IENBUkQ4IG1vZGU7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIHdpbmRvdyAgOwog
ICAgQ0FSRDMyICBwcm9wZXJ0eSAgLCB0eXBlICA7CiAgICBDQVJEOCBmb3JtYXQ7CiAgICBCWVRF
IHBhZFszXTsKICAgIENBUkQzMiBuVW5pdHMgIDsgICAgICAKfSB4Q2hhbmdlUHJvcGVydHlSZXE7
Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBwYWQ7CiAgICBD
QVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIHdpbmRvdyAgOwogICAgQ0FSRDMyICBwcm9wZXJ0
eSAgOwp9IHhEZWxldGVQcm9wZXJ0eVJlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJl
cVR5cGU7CgoKCiAgICBCT09MIGRlbGV0ZTsKCiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJE
MzIgIHdpbmRvdyAgOwogICAgQ0FSRDMyICBwcm9wZXJ0eSAgLCB0eXBlICA7CiAgICBDQVJEMzIg
bG9uZ09mZnNldCAgOwogICAgQ0FSRDMyIGxvbmdMZW5ndGggIDsKfSB4R2V0UHJvcGVydHlSZXE7
CiAKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAg
Q0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDMyICB3aW5kb3cgIDsKICAgIENBUkQzMiAgc2VsZWN0
aW9uICA7CiAgICBDQVJEMzIgIHRpbWUgIDsKfSB4U2V0U2VsZWN0aW9uT3duZXJSZXE7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBwYWQ7CiAgICBDQVJEMTYg
bGVuZ3RoICA7CiAgICBDQVJEMzIgIHJlcXVlc3RvciAgOwogICAgQ0FSRDMyICBzZWxlY3Rpb24g
ICwgdGFyZ2V0ICAsIHByb3BlcnR5ICA7CiAgICBDQVJEMzIgIHRpbWUgIDsKICAgIH0geENvbnZl
cnRTZWxlY3Rpb25SZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAg
Qk9PTCBwcm9wYWdhdGU7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGRlc3RpbmF0
aW9uICA7CiAgICBDQVJEMzIgZXZlbnRNYXNrICA7CgoKCgogICAgeEV2ZW50IGV2ZW50OwoKfSB4
U2VuZEV2ZW50UmVxOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJP
T0wgb3duZXJFdmVudHM7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGdyYWJXaW5k
b3cgIDsKICAgIENBUkQxNiBldmVudE1hc2sgIDsKICAgIEJZVEUgcG9pbnRlck1vZGUsIGtleWJv
YXJkTW9kZTsKICAgIENBUkQzMiAgY29uZmluZVRvICA7CiAgICBDQVJEMzIgIGN1cnNvciAgOwog
ICAgQ0FSRDMyICB0aW1lICA7Cn0geEdyYWJQb2ludGVyUmVxOwoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgQ0FSRDggcmVxVHlwZTsKICAgIEJPT0wgb3duZXJFdmVudHM7CiAgICBDQVJEMTYgbGVuZ3Ro
ICA7CiAgICBDQVJEMzIgIGdyYWJXaW5kb3cgIDsKICAgIENBUkQxNiBldmVudE1hc2sgIDsKICAg
IEJZVEUgcG9pbnRlck1vZGUsIGtleWJvYXJkTW9kZTsKICAgIENBUkQzMiAgY29uZmluZVRvICA7
CiAgICBDQVJEMzIgIGN1cnNvciAgOwogICAgQ0FSRDggYnV0dG9uOwogICAgQllURSBwYWQ7CiAg
ICBDQVJEMTYgbW9kaWZpZXJzICA7Cn0geEdyYWJCdXR0b25SZXE7Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICBDQVJEOCByZXFUeXBlOwogICAgQ0FSRDggYnV0dG9uOwogICAgQ0FSRDE2IGxlbmd0aCAg
OwogICAgQ0FSRDMyICBncmFiV2luZG93ICA7CiAgICBDQVJEMTYgbW9kaWZpZXJzICA7CiAgICBD
QVJEMTYgcGFkICA7Cn0geFVuZ3JhYkJ1dHRvblJlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENB
UkQ4IHJlcVR5cGU7CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQz
MiAgY3Vyc29yICA7CiAgICBDQVJEMzIgIHRpbWUgIDsKICAgIENBUkQxNiBldmVudE1hc2sgIDsK
ICAgIENBUkQxNiBwYWQyICA7Cn0geENoYW5nZUFjdGl2ZVBvaW50ZXJHcmFiUmVxOwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJPT0wgb3duZXJFdmVudHM7CiAgICBD
QVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGdyYWJXaW5kb3cgIDsKICAgIENBUkQzMiAgdGlt
ZSAgOwogICAgQllURSBwb2ludGVyTW9kZSwga2V5Ym9hcmRNb2RlOyAgCiAgICBDQVJEMTYgcGFk
ICA7Cn0geEdyYWJLZXlib2FyZFJlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5
cGU7CiAgICBCT09MIG93bmVyRXZlbnRzOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDMy
ICBncmFiV2luZG93ICA7CiAgICBDQVJEMTYgbW9kaWZpZXJzICA7CiAgICBDQVJEOCBrZXk7CiAg
ICBCWVRFIHBvaW50ZXJNb2RlLCBrZXlib2FyZE1vZGU7ICAKICAgIEJZVEUgcGFkMSwgcGFkMiwg
cGFkMzsKfSB4R3JhYktleVJlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7
CiAgICBDQVJEOCBrZXk7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGdyYWJXaW5k
b3cgIDsKICAgIENBUkQxNiBtb2RpZmllcnMgIDsKICAgIENBUkQxNiBwYWQgIDsKfSB4VW5ncmFi
S2V5UmVxOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIENBUkQ4IG1v
ZGU7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIHRpbWUgIDsKfSB4QWxsb3dFdmVu
dHNSZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBwYWQ7
CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIHdpbmRvdyAgOwogICAgQ0FSRDMyICBz
dGFydCAgLCBzdG9wICA7Cn0geEdldE1vdGlvbkV2ZW50c1JlcTsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgIENBUkQ4IHJlcVR5cGU7CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAg
IENBUkQzMiAgc3JjV2lkICAsIGRzdFdpZCAgOwogICAgSU5UMTYgc3JjWCAgLCBzcmNZICA7Cn0g
eFRyYW5zbGF0ZUNvb3Jkc1JlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7
CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiAgc3JjV2lkICAs
IGRzdFdpZCAgOwogICAgSU5UMTYgc3JjWCAgLCBzcmNZICA7CiAgICBDQVJEMTYgc3JjV2lkdGgg
ICwgc3JjSGVpZ2h0ICA7CiAgICBJTlQxNiBkc3RYICAsIGRzdFkgIDsKfSB4V2FycFBvaW50ZXJS
ZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQ0FSRDggcmV2ZXJ0
VG87CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGZvY3VzICA7CiAgICBDQVJEMzIg
IHRpbWUgIDsKfSB4U2V0SW5wdXRGb2N1c1JlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4
IHJlcVR5cGU7CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiAg
ZmlkICA7CiAgICBDQVJEMTYgbmJ5dGVzICA7CiAgICBCWVRFIHBhZDEsIHBhZDI7CSAKfSB4T3Bl
bkZvbnRSZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQk9PTCBv
ZGRMZW5ndGg7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGZpZCAgOwogICAgfSB4
UXVlcnlUZXh0RXh0ZW50c1JlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7
CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQxNiBtYXhOYW1lcyAg
OwogICAgQ0FSRDE2IG5ieXRlcyAgOyAgIAp9IHhMaXN0Rm9udHNSZXE7Cgp0eXBlZGVmIHhMaXN0
Rm9udHNSZXEgeExpc3RGb250c1dpdGhJbmZvUmVxOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FS
RDggcmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDE2
IG5Gb250cyAgOwogICAgQllURSBwYWQxLCBwYWQyOwkgCn0geFNldEZvbnRQYXRoUmVxOwoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIENBUkQ4IGRlcHRoOwogICAgQ0FS
RDE2IGxlbmd0aCAgOwogICAgQ0FSRDMyICBwaWQgIDsKICAgIENBUkQzMiAgZHJhd2FibGUgIDsK
ICAgIENBUkQxNiB3aWR0aCAgLCBoZWlnaHQgIDsKfSB4Q3JlYXRlUGl4bWFwUmVxOwoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxl
bmd0aCAgOwogICAgQ0FSRDMyICBnYyAgOwogICAgQ0FSRDMyICBkcmF3YWJsZSAgOwogICAgQ0FS
RDMyIG1hc2sgIDsKfSB4Q3JlYXRlR0NSZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCBy
ZXFUeXBlOwogICAgQllURSBwYWQ7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGdj
ICA7CiAgICBDQVJEMzIgbWFzayAgOwp9IHhDaGFuZ2VHQ1JlcTsgICAgCgp0eXBlZGVmIHN0cnVj
dCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBwYWQ7CiAgICBDQVJEMTYgbGVuZ3RoICA7
CiAgICBDQVJEMzIgIHNyY0dDICAsIGRzdEdDICA7CiAgICBDQVJEMzIgbWFzayAgOwp9IHhDb3B5
R0NSZXE7ICAgIAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJZVEUg
cGFkOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDMyICBnYyAgOwogICAgQ0FSRDE2IGRh
c2hPZmZzZXQgIDsKICAgIENBUkQxNiBuRGFzaGVzICA7ICAgICAgICAgCn0geFNldERhc2hlc1Jl
cTsgICAgCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBvcmRl
cmluZzsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiAgZ2MgIDsKICAgIElOVDE2IHhP
cmlnaW4gICwgeU9yaWdpbiAgOwp9IHhTZXRDbGlwUmVjdGFuZ2xlc1JlcTsgICAgCgp0eXBlZGVm
IHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQk9PTCBleHBvc3VyZXM7CiAgICBDQVJE
MTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIHdpbmRvdyAgOwogICAgSU5UMTYgeCAgLCB5ICA7CiAg
ICBDQVJEMTYgd2lkdGggICwgaGVpZ2h0ICA7Cn0geENsZWFyQXJlYVJlcTsKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGgg
IDsKICAgIENBUkQzMiAgc3JjRHJhd2FibGUgICwgZHN0RHJhd2FibGUgIDsKICAgIENBUkQzMiAg
Z2MgIDsKICAgIElOVDE2IHNyY1ggICwgc3JjWSAgLCBkc3RYICAsIGRzdFkgIDsKICAgIENBUkQx
NiB3aWR0aCAgLCBoZWlnaHQgIDsKfSB4Q29weUFyZWFSZXE7ICAgIAoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxlbmd0aCAgOwog
ICAgQ0FSRDMyICBzcmNEcmF3YWJsZSAgLCBkc3REcmF3YWJsZSAgOwogICAgQ0FSRDMyICBnYyAg
OwogICAgSU5UMTYgc3JjWCAgLCBzcmNZICAsIGRzdFggICwgZHN0WSAgOwogICAgQ0FSRDE2IHdp
ZHRoICAsIGhlaWdodCAgOwogICAgQ0FSRDMyIGJpdFBsYW5lICA7Cn0geENvcHlQbGFuZVJlcTsg
ICAgCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBjb29yZE1v
ZGU7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGRyYXdhYmxlICA7CiAgICBDQVJE
MzIgIGdjICA7Cn0geFBvbHlQb2ludFJlcTsgICAgCgp0eXBlZGVmIHhQb2x5UG9pbnRSZXEgeFBv
bHlMaW5lUmVxOyAgIAoKIAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAg
IEJZVEUgcGFkOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDMyICBkcmF3YWJsZSAgOwog
ICAgQ0FSRDMyICBnYyAgOwp9IHhQb2x5U2VnbWVudFJlcTsgICAgCgp0eXBlZGVmIHhQb2x5U2Vn
bWVudFJlcSB4UG9seUFyY1JlcTsKdHlwZWRlZiB4UG9seVNlZ21lbnRSZXEgeFBvbHlSZWN0YW5n
bGVSZXE7CnR5cGVkZWYgeFBvbHlTZWdtZW50UmVxIHhQb2x5RmlsbFJlY3RhbmdsZVJlcTsKdHlw
ZWRlZiB4UG9seVNlZ21lbnRSZXEgeFBvbHlGaWxsQXJjUmVxOwoKdHlwZWRlZiBzdHJ1Y3QgX0Zp
bGxQb2x5UmVxIHsKICAgIENBUkQ4IHJlcVR5cGU7CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBs
ZW5ndGggIDsKICAgIENBUkQzMiAgZHJhd2FibGUgIDsKICAgIENBUkQzMiAgZ2MgIDsKICAgIEJZ
VEUgc2hhcGU7CiAgICBCWVRFIGNvb3JkTW9kZTsKICAgIENBUkQxNiBwYWQxICA7Cn0geEZpbGxQ
b2x5UmVxOyAgICAKCgp0eXBlZGVmIHN0cnVjdCBfUHV0SW1hZ2VSZXEgewogICAgQ0FSRDggcmVx
VHlwZTsKICAgIENBUkQ4IGZvcm1hdDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiAg
ZHJhd2FibGUgIDsKICAgIENBUkQzMiAgZ2MgIDsKICAgIENBUkQxNiB3aWR0aCAgLCBoZWlnaHQg
IDsKICAgIElOVDE2IGRzdFggICwgZHN0WSAgOwogICAgQ0FSRDggbGVmdFBhZDsKICAgIENBUkQ4
IGRlcHRoOwogICAgQ0FSRDE2IHBhZCAgOwp9IHhQdXRJbWFnZVJlcTsgICAgCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQ0FSRDggZm9ybWF0OwogICAgQ0FSRDE2IGxl
bmd0aCAgOwogICAgQ0FSRDMyICBkcmF3YWJsZSAgOwogICAgSU5UMTYgeCAgLCB5ICA7CiAgICBD
QVJEMTYgd2lkdGggICwgaGVpZ2h0ICA7CiAgICBDQVJEMzIgcGxhbmVNYXNrICA7Cn0geEdldElt
YWdlUmVxOyAgICAKCiAKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7CiAgICBD
QVJEOCBwYWQ7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGRyYXdhYmxlICA7CiAg
ICBDQVJEMzIgIGdjICA7CiAgICBJTlQxNiB4ICAsIHkgIDsJCSAKfSB4UG9seVRleHRSZXE7ICAg
IAoKdHlwZWRlZiB4UG9seVRleHRSZXEgeFBvbHlUZXh0OFJlcTsKdHlwZWRlZiB4UG9seVRleHRS
ZXEgeFBvbHlUZXh0MTZSZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwog
ICAgQllURSBuQ2hhcnM7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGRyYXdhYmxl
ICA7CiAgICBDQVJEMzIgIGdjICA7CiAgICBJTlQxNiB4ICAsIHkgIDsKfSB4SW1hZ2VUZXh0UmVx
OyAgICAKCnR5cGVkZWYgeEltYWdlVGV4dFJlcSB4SW1hZ2VUZXh0OFJlcTsKdHlwZWRlZiB4SW1h
Z2VUZXh0UmVxIHhJbWFnZVRleHQxNlJlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJl
cVR5cGU7CiAgICBCWVRFIGFsbG9jOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDMyICBt
aWQgIDsKICAgIENBUkQzMiAgd2luZG93ICA7CiAgICBDQVJEMzIgIHZpc3VhbCAgOwp9IHhDcmVh
dGVDb2xvcm1hcFJlcTsgICAgCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwog
ICAgQllURSBwYWQ7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIG1pZCAgOwogICAg
Q0FSRDMyICBzcmNDbWFwICA7Cn0geENvcHlDb2xvcm1hcEFuZEZyZWVSZXE7ICAgIAoKdHlwZWRl
ZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxl
bmd0aCAgOwogICAgQ0FSRDMyICBjbWFwICA7CiAgICBDQVJEMTYgcmVkICAsIGdyZWVuICAsIGJs
dWUgIDsKICAgIENBUkQxNiBwYWQyICA7Cn0geEFsbG9jQ29sb3JSZXE7ICAgIAoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxlbmd0
aCAgOwogICAgQ0FSRDMyICBjbWFwICA7CiAgICBDQVJEMTYgbmJ5dGVzICA7ICAgCiAgICBCWVRF
IHBhZDEsIHBhZDI7Cn0geEFsbG9jTmFtZWRDb2xvclJlcTsgICAgCgp0eXBlZGVmIHN0cnVjdCB7
CiAgICBDQVJEOCByZXFUeXBlOwogICAgQk9PTCBjb250aWd1b3VzOwogICAgQ0FSRDE2IGxlbmd0
aCAgOwogICAgQ0FSRDMyICBjbWFwICA7CiAgICBDQVJEMTYgY29sb3JzICAsIHBsYW5lcyAgOwp9
IHhBbGxvY0NvbG9yQ2VsbHNSZXE7ICAgIAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVx
VHlwZTsKICAgIEJPT0wgY29udGlndW91czsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQz
MiAgY21hcCAgOwogICAgQ0FSRDE2IGNvbG9ycyAgLCByZWQgICwgZ3JlZW4gICwgYmx1ZSAgOwp9
IHhBbGxvY0NvbG9yUGxhbmVzUmVxOyAgICAKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJl
cVR5cGU7CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiAgY21h
cCAgOwogICAgQ0FSRDMyIHBsYW5lTWFzayAgOwp9IHhGcmVlQ29sb3JzUmVxOyAgICAKCnR5cGVk
ZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBs
ZW5ndGggIDsKICAgIENBUkQzMiAgY21hcCAgOwp9IHhTdG9yZUNvbG9yc1JlcTsgICAgCgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQ0FSRDggZmxhZ3M7ICAgIAogICAg
Q0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDMyICBjbWFwICA7CiAgICBDQVJEMzIgcGl4ZWwgIDsK
ICAgIENBUkQxNiBuYnl0ZXMgIDsgICAKICAgIEJZVEUgcGFkMSwgcGFkMjsKICAgIH0geFN0b3Jl
TmFtZWRDb2xvclJlcTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7CiAgICBC
WVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiAgY21hcCAgOwp9IHhRdWVy
eUNvbG9yc1JlcTsgICAgCgp0eXBlZGVmIHN0cnVjdCB7ICAgICAKICAgIENBUkQ4IHJlcVR5cGU7
CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiAgY21hcCAgOwog
ICAgQ0FSRDE2IG5ieXRlcyAgOyAgIAogICAgQllURSBwYWQxLCBwYWQyOwp9IHhMb29rdXBDb2xv
clJlcTsgICAgCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBw
YWQ7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMzIgIGNpZCAgOwogICAgQ0FSRDMyICBz
b3VyY2UgICwgbWFzayAgOwogICAgQ0FSRDE2IGZvcmVSZWQgICwgZm9yZUdyZWVuICAsIGZvcmVC
bHVlICA7CiAgICBDQVJEMTYgYmFja1JlZCAgLCBiYWNrR3JlZW4gICwgYmFja0JsdWUgIDsKICAg
IENBUkQxNiB4ICAsIHkgIDsKfSB4Q3JlYXRlQ3Vyc29yUmVxOyAgICAKCnR5cGVkZWYgc3RydWN0
IHsKICAgIENBUkQ4IHJlcVR5cGU7CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsK
ICAgIENBUkQzMiAgY2lkICA7CiAgICBDQVJEMzIgIHNvdXJjZSAgLCBtYXNrICA7CiAgICBDQVJE
MTYgc291cmNlQ2hhciAgLCBtYXNrQ2hhciAgOwogICAgQ0FSRDE2IGZvcmVSZWQgICwgZm9yZUdy
ZWVuICAsIGZvcmVCbHVlICA7CiAgICBDQVJEMTYgYmFja1JlZCAgLCBiYWNrR3JlZW4gICwgYmFj
a0JsdWUgIDsKfSB4Q3JlYXRlR2x5cGhDdXJzb3JSZXE7ICAgIAoKdHlwZWRlZiBzdHJ1Y3Qgewog
ICAgQ0FSRDggcmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAg
Q0FSRDMyICBjdXJzb3IgIDsKICAgIENBUkQxNiBmb3JlUmVkICAsIGZvcmVHcmVlbiAgLCBmb3Jl
Qmx1ZSAgOwogICAgQ0FSRDE2IGJhY2tSZWQgICwgYmFja0dyZWVuICAsIGJhY2tCbHVlICA7Cn0g
eFJlY29sb3JDdXJzb3JSZXE7ICAgIAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlw
ZTsKCgoKICAgIENBUkQ4IGNsYXNzOwoKICAgIENBUkQxNiBsZW5ndGggIDsKICAgIENBUkQzMiAg
ZHJhd2FibGUgIDsKICAgIENBUkQxNiB3aWR0aCAgLCBoZWlnaHQgIDsKfSB4UXVlcnlCZXN0U2l6
ZVJlcTsgICAgCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBw
YWQ7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEMTYgbmJ5dGVzICA7ICAgCiAgICBCWVRF
IHBhZDEsIHBhZDI7Cn0geFF1ZXJ5RXh0ZW5zaW9uUmVxOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAg
Q0FSRDggICByZXFUeXBlOwogICAgQ0FSRDggICBudW1LZXlQZXJNb2RpZmllcjsKICAgIENBUkQx
NiAgbGVuZ3RoICA7Cn0geFNldE1vZGlmaWVyTWFwcGluZ1JlcTsKCnR5cGVkZWYgc3RydWN0IHsK
ICAgIENBUkQ4IHJlcVR5cGU7CiAgICBDQVJEOCBuRWx0czsgICAKICAgIENBUkQxNiBsZW5ndGgg
IDsKfSB4U2V0UG9pbnRlck1hcHBpbmdSZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCBy
ZXFUeXBlOwogICAgQllURSBwYWQ7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEOCAgZmly
c3RLZXlDb2RlOwogICAgQ0FSRDggY291bnQ7CiAgICBDQVJEMTYgcGFkMSAgOwp9IHhHZXRLZXli
b2FyZE1hcHBpbmdSZXE7ICAgIAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsK
ICAgIENBUkQ4IGtleUNvZGVzOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDggIGZpcnN0
S2V5Q29kZTsKICAgIENBUkQ4IGtleVN5bXNQZXJLZXlDb2RlOwogICAgQ0FSRDE2IHBhZDEgIDsK
fSB4Q2hhbmdlS2V5Ym9hcmRNYXBwaW5nUmVxOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDgg
cmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgQ0FSRDMyIG1h
c2sgIDsKfSB4Q2hhbmdlS2V5Ym9hcmRDb250cm9sUmVxOyAgICAKCnR5cGVkZWYgc3RydWN0IHsK
ICAgIENBUkQ4IHJlcVR5cGU7CiAgICBJTlQ4IHBlcmNlbnQ7ICAgCiAgICBDQVJEMTYgbGVuZ3Ro
ICA7Cn0geEJlbGxSZXE7ICAgIAoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsK
ICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgSU5UMTYgYWNjZWxOdW0gICwg
YWNjZWxEZW51bSAgOwogICAgSU5UMTYgdGhyZXNob2xkICA7ICAgICAgICAgICAgIAogICAgQk9P
TCBkb0FjY2VsLCBkb1RocmVzaDsKfSB4Q2hhbmdlUG9pbnRlckNvbnRyb2xSZXE7ICAgIAoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggcmVxVHlwZTsKICAgIEJZVEUgcGFkOwogICAgQ0FSRDE2
IGxlbmd0aCAgOwogICAgSU5UMTYgdGltZW91dCAgLCBpbnRlcnZhbCAgOwogICAgQllURSBwcmVm
ZXJCbGFuaywgYWxsb3dFeHBvc2U7ICAKICAgIENBUkQxNiBwYWQyICA7Cn0geFNldFNjcmVlblNh
dmVyUmVxOyAgICAKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4IHJlcVR5cGU7CiAgICBCWVRF
IG1vZGU7CiAgICBDQVJEMTYgbGVuZ3RoICA7CiAgICBDQVJEOCBob3N0RmFtaWx5OwogICAgQllU
RSBwYWQ7CiAgICBDQVJEMTYgaG9zdExlbmd0aCAgOwp9IHhDaGFuZ2VIb3N0c1JlcTsgICAgCgp0
eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCByZXFUeXBlOwogICAgQllURSBwYWQ7CiAgICBDQVJE
MTYgbGVuZ3RoICA7CiAgICB9IHhMaXN0SG9zdHNSZXE7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBD
QVJEOCByZXFUeXBlOwogICAgQllURSBtb2RlOwogICAgQ0FSRDE2IGxlbmd0aCAgOwogICAgfSB4
Q2hhbmdlTW9kZVJlcTsKCnR5cGVkZWYgeENoYW5nZU1vZGVSZXEgeFNldEFjY2Vzc0NvbnRyb2xS
ZXE7CnR5cGVkZWYgeENoYW5nZU1vZGVSZXEgeFNldENsb3NlRG93bk1vZGVSZXE7CnR5cGVkZWYg
eENoYW5nZU1vZGVSZXEgeEZvcmNlU2NyZWVuU2F2ZXJSZXE7Cgp0eXBlZGVmIHN0cnVjdCB7ICAK
ICAgIENBUkQ4IHJlcVR5cGU7CiAgICBCWVRFIHBhZDsKICAgIENBUkQxNiBsZW5ndGggIDsKICAg
IENBUkQzMiAgd2luZG93ICA7CiAgICBDQVJEMTYgbkF0b21zICA7CiAgICBJTlQxNiBuUG9zaXRp
b25zICA7CiAgICB9IHhSb3RhdGVQcm9wZXJ0aWVzUmVxOwogICAgCgwKCiAKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiLi4vLi4vaW5jbHVkZS9nYy5oIiAyCgoKIyAxICIuLi8u
Li9pbmNsdWRlL3BpeG1hcC5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0RyYXdhYmxlICpE
cmF3YWJsZVB0cjsJCnR5cGVkZWYgc3RydWN0IF9QaXhtYXAgKlBpeG1hcFB0cjsKCnR5cGVkZWYg
dW5pb24gX1BpeFVuaW9uIHsKICAgIFBpeG1hcFB0cgkJcGl4bWFwOwogICAgdW5zaWduZWQgbG9u
ZwlwaXhlbDsKfSBQaXhVbmlvbjsKCgoKCgoKCgoKCgoKCmV4dGVybiBQaXhtYXBQdHIgR2V0U2Ny
YXRjaFBpeG1hcEhlYWRlcigKCiAgICBTY3JlZW5QdHIgICwKICAgIGludCAgLAogICAgaW50ICAs
CiAgICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBwb2ludGVyICAKCik7CgpleHRl
cm4gdm9pZCBGcmVlU2NyYXRjaFBpeG1hcEhlYWRlcigKCiAgICBQaXhtYXBQdHIgIAoKKTsKCmV4
dGVybiBCb29sIENyZWF0ZVNjcmF0Y2hQaXhtYXBzRm9yU2NyZWVuKAoKICAgIGludCAgCgopOwoK
ZXh0ZXJuIHZvaWQgRnJlZVNjcmF0Y2hQaXhtYXBzRm9yU2NyZWVuKAoKICAgIGludCAgCgopOwoK
ZXh0ZXJuIFBpeG1hcFB0ciBBbGxvY2F0ZVBpeG1hcCgKCiAgICBTY3JlZW5QdHIgICwKICAgIGlu
dCAgCgopOwoKCiMgNTMgIi4uLy4uL2luY2x1ZGUvZ2MuaCIgMgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HQ0ludGVyZXN0ICpHQ0ludGVyZXN0UHRyOwp0eXBl
ZGVmIHN0cnVjdCBfR0MgICAgKkdDUHRyOwp0eXBlZGVmIHN0cnVjdCBfR0NPcHMgKkdDT3BzUHRy
OwoKZXh0ZXJuIHZvaWQgVmFsaWRhdGVHQygKCiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQdHIg
IAoKKTsKCmV4dGVybiBpbnQgQ2hhbmdlR0MoCgogICAgR0NQdHIgLAogICAgQklUUzMyICAsCiAg
ICBYSUQqICAKCik7CgpleHRlcm4gaW50IERvQ2hhbmdlR0MoCgogICAgR0NQdHIgLAogICAgQklU
UzMyICAsCiAgICBYSUQqICAsCiAgICBpbnQgIAoKKTsKCnR5cGVkZWYgdW5pb24gewogICAgQ0FS
RDMyIHZhbDsKICAgIHBvaW50ZXIgcHRyOwp9IENoYW5nZUdDVmFsLCAqQ2hhbmdlR0NWYWxQdHI7
CgpleHRlcm4gaW50IGRpeENoYW5nZUdDKAoKICAgIENsaWVudFB0ciAgLAogICAgR0NQdHIgICwK
ICAgIEJJVFMzMiAgLAogICAgQ0FSRDMyICogICwKICAgIENoYW5nZUdDVmFsUHRyICAKCik7Cgpl
eHRlcm4gR0NQdHIgQ3JlYXRlR0MoCgogICAgRHJhd2FibGVQdHIgICwKICAgIEJJVFMzMiAgLAog
ICAgWElEKiAgLAogICAgaW50KiAgCgopOwoKZXh0ZXJuIGludCBDb3B5R0MoCgogICAgR0NQdHIg
LAogICAgR0NQdHIgLAogICAgQklUUzMyICAKCik7CgpleHRlcm4gaW50IEZyZWVHQygKCiAgICBw
b2ludGVyICAsCiAgICBYSUQgIAoKKTsKCmV4dGVybiB2b2lkIFNldEdDTWFzaygKCiAgICBHQ1B0
ciAgLAogICAgTWFzayAgLAogICAgTWFzayAgCgopOwoKZXh0ZXJuIEdDUHRyIENyZWF0ZVNjcmF0
Y2hHQygKCiAgICBTY3JlZW5QdHIgICwKICAgIHVuc2lnbmVkICAKCik7CgpleHRlcm4gdm9pZCBG
cmVlR0NwZXJEZXB0aCgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBCb29sIENyZWF0ZUdDcGVyRGVw
dGgoCgogICAgaW50ICAKCik7CgpleHRlcm4gQm9vbCBDcmVhdGVEZWZhdWx0U3RpcHBsZSgKCiAg
ICBpbnQgIAoKKTsKCmV4dGVybiB2b2lkIEZyZWVEZWZhdWx0U3RpcHBsZSgKCiAgICBpbnQgIAoK
KTsKCmV4dGVybiBpbnQgU2V0RGFzaGVzKAoKICAgIEdDUHRyICAsCiAgICB1bnNpZ25lZCAgLAog
ICAgdW5zaWduZWQgICwKICAgIHVuc2lnbmVkIGNoYXIqICAKCik7CgpleHRlcm4gaW50IFZlcmlm
eVJlY3RPcmRlcigKCiAgICBpbnQgICwKICAgIHhSZWN0YW5nbGUqICAsCiAgICBpbnQgIAoKKTsK
CmV4dGVybiBpbnQgU2V0Q2xpcFJlY3RzKAoKICAgIEdDUHRyICAsCiAgICBpbnQgICwKICAgIGlu
dCAgLAogICAgaW50ICAsCiAgICB4UmVjdGFuZ2xlKiAgLAogICAgaW50ICAKCik7CgpleHRlcm4g
R0NQdHIgR2V0U2NyYXRjaEdDKAoKICAgIHVuc2lnbmVkICAsCiAgICBTY3JlZW5QdHIgIAoKKTsK
CmV4dGVybiB2b2lkIEZyZWVTY3JhdGNoR0MoCgogICAgR0NQdHIgIAoKKTsKCgojIDIxICIuLi8u
Li9pbmNsdWRlL2JzdG9yZXN0ci5oIiAyCgoKIyAxICIuLi8uLi9pbmNsdWRlL3JlZ2lvbi5oIiAx
CiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4v
Li4vaW5jbHVkZS9yZWdpb25zdHIuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCiAKCgoKCgoKCiAKCgoKdHlwZWRlZiBzdHJ1Y3QgX1JlZ0Rh
dGEgewogICAgbG9uZwlzaXplOwogICAgbG9uZyAJbnVtUmVjdHM7CiAKfSBSZWdEYXRhUmVjLCAq
UmVnRGF0YVB0cjsKCnR5cGVkZWYgc3RydWN0IF9SZWdpb24gewogICAgQm94UmVjIAlleHRlbnRz
OwogICAgUmVnRGF0YVB0cglkYXRhOwp9IFJlZ2lvblJlYywgKlJlZ2lvblB0cjsKCmV4dGVybiBC
b3hSZWMgbWlFbXB0eUJveDsKZXh0ZXJuIFJlZ0RhdGFSZWMgbWlFbXB0eURhdGE7CmV4dGVybiBS
ZWdEYXRhUmVjIG1pQnJva2VuRGF0YTsKCgogCgoKCgoKCgoKCgoKIyAxNTkgIi4uLy4uL2luY2x1
ZGUvcmVnaW9uc3RyLmgiCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIyAyMjkgIi4uLy4uL2luY2x1ZGUvcmVnaW9uc3RyLmgiCgoKCiMgMjUxICIuLi8uLi9p
bmNsdWRlL3JlZ2lvbnN0ci5oIgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoK
ZXh0ZXJuIFJlZ2lvblB0ciBtaVJlZ2lvbkNyZWF0ZSgKCiAgICBCb3hQdHIgICwKICAgIGludCAg
CgopOwoKZXh0ZXJuIHZvaWQgbWlSZWdpb25Jbml0KAoKICAgIFJlZ2lvblB0ciAgLAogICAgQm94
UHRyICAsCiAgICBpbnQgIAoKKTsKCmV4dGVybiB2b2lkIG1pUmVnaW9uRGVzdHJveSgKCiAgICBS
ZWdpb25QdHIgIAoKKTsKCmV4dGVybiB2b2lkIG1pUmVnaW9uVW5pbml0KAoKICAgIFJlZ2lvblB0
ciAgCgopOwoKZXh0ZXJuIEJvb2wgbWlSZWdpb25Db3B5KAoKICAgIFJlZ2lvblB0ciAgLAogICAg
UmVnaW9uUHRyICAKCik7CgpleHRlcm4gQm9vbCBtaUludGVyc2VjdCgKCiAgICBSZWdpb25QdHIg
ICwKICAgIFJlZ2lvblB0ciAgLAogICAgUmVnaW9uUHRyICAKCik7CgpleHRlcm4gQm9vbCBtaVVu
aW9uKAoKICAgIFJlZ2lvblB0ciAgLAogICAgUmVnaW9uUHRyICAsCiAgICBSZWdpb25QdHIgIAoK
KTsKCmV4dGVybiBCb29sIG1pUmVnaW9uQXBwZW5kKAoKICAgIFJlZ2lvblB0ciAgLAogICAgUmVn
aW9uUHRyICAKCik7CgpleHRlcm4gQm9vbCBtaVJlZ2lvblZhbGlkYXRlKAoKICAgIFJlZ2lvblB0
ciAgLAogICAgQm9vbCAqICAKCik7CgpleHRlcm4gUmVnaW9uUHRyIG1pUmVjdHNUb1JlZ2lvbigK
CiAgICBpbnQgICwKICAgIHhSZWN0YW5nbGVQdHIgICwKICAgIGludCAgCgopOwoKZXh0ZXJuIEJv
b2wgbWlTdWJ0cmFjdCgKCiAgICBSZWdpb25QdHIgICwKICAgIFJlZ2lvblB0ciAgLAogICAgUmVn
aW9uUHRyICAKCik7CgpleHRlcm4gQm9vbCBtaUludmVyc2UoCgogICAgUmVnaW9uUHRyICAsCiAg
ICBSZWdpb25QdHIgICwKICAgIEJveFB0ciAgCgopOwoKZXh0ZXJuIGludCBtaVJlY3RJbigKCiAg
ICBSZWdpb25QdHIgICwKICAgIEJveFB0ciAgCgopOwoKZXh0ZXJuIHZvaWQgbWlUcmFuc2xhdGVS
ZWdpb24oCgogICAgUmVnaW9uUHRyICAsCiAgICBpbnQgICwKICAgIGludCAgCgopOwoKZXh0ZXJu
IHZvaWQgbWlSZWdpb25SZXNldCgKCiAgICBSZWdpb25QdHIgICwKICAgIEJveFB0ciAgCgopOwoK
ZXh0ZXJuIEJvb2wgbWlQb2ludEluUmVnaW9uKAoKICAgIFJlZ2lvblB0ciAgLAogICAgaW50ICAs
CiAgICBpbnQgICwKICAgIEJveFB0ciAgCgopOwoKZXh0ZXJuIEJvb2wgbWlSZWdpb25Ob3RFbXB0
eSgKCiAgICBSZWdpb25QdHIgIAoKKTsKCmV4dGVybiB2b2lkIG1pUmVnaW9uRW1wdHkoCgogICAg
UmVnaW9uUHRyICAKCik7CgpleHRlcm4gQm94UHRyIG1pUmVnaW9uRXh0ZW50cygKCiAgICBSZWdp
b25QdHIgIAoKKTsKCgojIDQ3ICIuLi8uLi9pbmNsdWRlL3JlZ2lvbi5oIiAyCgoKCiMgMjMgIi4u
Ly4uL2luY2x1ZGUvYnN0b3Jlc3RyLmgiIDIKCiMgMSAiLi4vLi4vaW5jbHVkZS93aW5kb3cuaCIg
MQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9CYWNraW5nU3RvcmUgKkJhY2tpbmdTdG9yZVB0
cjsKdHlwZWRlZiBzdHJ1Y3QgX1dpbmRvdyAqV2luZG93UHRyOwoKdHlwZWRlZiBpbnQgKCpWaXNp
dFdpbmRvd1Byb2NQdHIpKAoKICAgIFdpbmRvd1B0ciAgLAogICAgcG9pbnRlciAgCgopOwoKZXh0
ZXJuIGludCBUcmF2ZXJzZVRyZWUoCgogICAgV2luZG93UHRyICAsCiAgICBWaXNpdFdpbmRvd1By
b2NQdHIgICwKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiBpbnQgV2Fsa1RyZWUoCgogICAgU2Ny
ZWVuUHRyICAsCiAgICBWaXNpdFdpbmRvd1Byb2NQdHIgICwKICAgIHBvaW50ZXIgIAoKKTsKCmV4
dGVybiBXaW5kb3dQdHIgQWxsb2NhdGVXaW5kb3coCgogICAgU2NyZWVuUHRyICAKCik7CgpleHRl
cm4gQm9vbCBDcmVhdGVSb290V2luZG93KAoKICAgIFNjcmVlblB0ciAgCgopOwoKZXh0ZXJuIHZv
aWQgSW5pdFJvb3RXaW5kb3coCgogICAgV2luZG93UHRyICAKCik7CgpleHRlcm4gdm9pZCBDbGlw
cGVkUmVnaW9uRnJvbUJveCgKCiAgICBXaW5kb3dQdHIgICwKICAgIFJlZ2lvblB0ciAgLAogICAg
aW50ICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAKCik7CgpleHRlcm4gV2luZG93
UHRyIFJlYWxDaGlsZEhlYWQoCgogICAgV2luZG93UHRyICAKCik7CgpleHRlcm4gV2luZG93UHRy
IENyZWF0ZVdpbmRvdygKCiAgICBXaW5kb3cgICwKICAgIFdpbmRvd1B0ciAgLAogICAgaW50ICAs
CiAgICBpbnQgICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgdW5zaWduZWQgaW50ICAsCiAgICB1
bnNpZ25lZCBpbnQgICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgTWFzayAgLAogICAgWElEKiAg
LAogICAgaW50ICAsCiAgICBDbGllbnRQdHIgICwKICAgIFZpc3VhbElEICAsCiAgICBpbnQqICAK
Cik7CgpleHRlcm4gaW50IERlbGV0ZVdpbmRvdygKCiAgICBwb2ludGVyICAsCiAgICBYSUQgIAoK
KTsKCmV4dGVybiB2b2lkIERlc3Ryb3lTdWJ3aW5kb3dzKAoKICAgIFdpbmRvd1B0ciAgLAogICAg
Q2xpZW50UHRyICAKCik7CgpleHRlcm4gaW50IENoYW5nZVdpbmRvd0F0dHJpYnV0ZXMoCgogICAg
V2luZG93UHRyICAsCiAgICBNYXNrICAsCiAgICBYSUQqICAsCiAgICBDbGllbnRQdHIgIAoKKTsK
CmV4dGVybiB2b2lkIEdldFdpbmRvd0F0dHJpYnV0ZXMoCgogICAgV2luZG93UHRyICAsCiAgICBD
bGllbnRQdHIgICwKICAgIHhHZXRXaW5kb3dBdHRyaWJ1dGVzUmVwbHkqICAKCik7CgpleHRlcm4g
UmVnaW9uUHRyIENyZWF0ZVVuY2xpcHBlZFdpblNpemUoCgogICAgV2luZG93UHRyICAKCik7Cgpl
eHRlcm4gdm9pZCBHcmF2aXR5VHJhbnNsYXRlKAoKICAgIGludCAgLAogICAgaW50ICAsCiAgICBp
bnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIHVuc2lnbmVkICAsCiAg
ICBpbnQqICAsCiAgICBpbnQqICAKCik7CgpleHRlcm4gaW50IENvbmZpZ3VyZVdpbmRvdygKCiAg
ICBXaW5kb3dQdHIgICwKICAgIE1hc2sgICwKICAgIFhJRCogICwKICAgIENsaWVudFB0ciAgCgop
OwoKZXh0ZXJuIGludCBDaXJjdWxhdGVXaW5kb3coCgogICAgV2luZG93UHRyICAsCiAgICBpbnQg
ICwKICAgIENsaWVudFB0ciAgCgopOwoKZXh0ZXJuIGludCBSZXBhcmVudFdpbmRvdygKCiAgICBX
aW5kb3dQdHIgICwKICAgIFdpbmRvd1B0ciAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIENs
aWVudFB0ciAgCgopOwoKZXh0ZXJuIGludCBNYXBXaW5kb3coCgogICAgV2luZG93UHRyICAsCiAg
ICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiB2b2lkIE1hcFN1YndpbmRvd3MoCgogICAgV2luZG93
UHRyICAsCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiBpbnQgVW5tYXBXaW5kb3coCgogICAg
V2luZG93UHRyICAsCiAgICBCb29sICAKCik7CgpleHRlcm4gdm9pZCBVbm1hcFN1YndpbmRvd3Mo
CgogICAgV2luZG93UHRyICAKCik7CgpleHRlcm4gdm9pZCBIYW5kbGVTYXZlU2V0KAoKICAgIENs
aWVudFB0ciAgCgopOwoKZXh0ZXJuIEJvb2wgVmlzaWJsZUJvdW5kaW5nQm94RnJvbVBvaW50KAoK
ICAgIFdpbmRvd1B0ciAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIEJveFB0ciAgCgopOwoK
ZXh0ZXJuIEJvb2wgUG9pbnRJbldpbmRvd0lzVmlzaWJsZSgKCiAgICBXaW5kb3dQdHIgICwKICAg
IGludCAgLAogICAgaW50ICAKCik7CgpleHRlcm4gUmVnaW9uUHRyIE5vdENsaXBwZWRCeUNoaWxk
cmVuKAoKICAgIFdpbmRvd1B0ciAgCgopOwoKZXh0ZXJuIHZvaWQgU2VuZFZpc2liaWxpdHlOb3Rp
ZnkoCgogICAgV2luZG93UHRyICAKCik7CgpleHRlcm4gdm9pZCBTYXZlU2NyZWVucygKCiAgICBp
bnQgICwKICAgIGludCAgCgopOwoKZXh0ZXJuIFdpbmRvd1B0ciBGaW5kV2luZG93V2l0aE9wdGlv
bmFsKAoKICAgIFdpbmRvd1B0ciAgCgopOwoKZXh0ZXJuIHZvaWQgQ2hlY2tXaW5kb3dPcHRpb25h
bE5lZWQoCgogICAgV2luZG93UHRyICAKCik7CgpleHRlcm4gQm9vbCBNYWtlV2luZG93T3B0aW9u
YWwoCgogICAgV2luZG93UHRyICAKCik7CgpleHRlcm4gdm9pZCBEaXNwb3NlV2luZG93T3B0aW9u
YWwoCgogICAgV2luZG93UHRyICAKCik7CgpleHRlcm4gV2luZG93UHRyIE1vdmVXaW5kb3dJblN0
YWNrKAoKICAgIFdpbmRvd1B0ciAgLAogICAgV2luZG93UHRyICAKCik7Cgp2b2lkIFNldFdpblNp
emUoCgogICAgV2luZG93UHRyICAKCik7Cgp2b2lkIFNldEJvcmRlclNpemUoCgogICAgV2luZG93
UHRyICAKCik7Cgp2b2lkIFJlc2l6ZUNoaWxkcmVuV2luU2l6ZSgKCiAgICBXaW5kb3dQdHIgICwK
ICAgIGludCAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIGludCAgCgopOwoKCiMgMjQgIi4u
Ly4uL2luY2x1ZGUvYnN0b3Jlc3RyLmgiIDIKCgp0eXBlZGVmICAgIHZvaWQgKCogQmFja2luZ1N0
b3JlU2F2ZUFyZWFzUHJvY1B0cikoCgoJUGl4bWFwUHRyICAsCglSZWdpb25QdHIgICwKCWludCAg
LAoJaW50ICAsCglXaW5kb3dQdHIgIAoKKTsKCnR5cGVkZWYgICAgdm9pZCAoKiBCYWNraW5nU3Rv
cmVSZXN0b3JlQXJlYXNQcm9jUHRyKSgKCglQaXhtYXBQdHIgICwKCVJlZ2lvblB0ciAgLAoJaW50
ICAsCglpbnQgICwKCVdpbmRvd1B0ciAgCgopOwoKdHlwZWRlZiAgICB2b2lkICgqIEJhY2tpbmdT
dG9yZVNldENsaXBtYXNrUmduUHJvY1B0cikoCgoJR0NQdHIgICwKCVJlZ2lvblB0ciAgCgopOwoK
dHlwZWRlZiAgICBQaXhtYXBQdHIgKCogQmFja2luZ1N0b3JlR2V0SW1hZ2VQaXhtYXBQcm9jUHRy
KSgJIAoKCXZvaWQKCik7Cgp0eXBlZGVmICAgIFBpeG1hcFB0ciAoKiBCYWNraW5nU3RvcmVHZXRT
cGFuc1BpeG1hcFByb2NQdHIpKAkgCgoJdm9pZAoKKTsKCnR5cGVkZWYgc3RydWN0IF9CU0Z1bmNz
IHsKCglCYWNraW5nU3RvcmVTYXZlQXJlYXNQcm9jUHRyIFNhdmVBcmVhczsKCUJhY2tpbmdTdG9y
ZVJlc3RvcmVBcmVhc1Byb2NQdHIgUmVzdG9yZUFyZWFzOwoJQmFja2luZ1N0b3JlU2V0Q2xpcG1h
c2tSZ25Qcm9jUHRyIFNldENsaXBtYXNrUmduOwoJQmFja2luZ1N0b3JlR2V0SW1hZ2VQaXhtYXBQ
cm9jUHRyIEdldEltYWdlUGl4bWFwOwoJQmFja2luZ1N0b3JlR2V0U3BhbnNQaXhtYXBQcm9jUHRy
IEdldFNwYW5zUGl4bWFwOwoKfSBCU0Z1bmNSZWMsICpCU0Z1bmNQdHI7CgoKIyAyMSAiLi4vLi4v
aW5jbHVkZS9ic3RvcmUuaCIgMgoKCgojIDUxICIuLi8uLi9pbmNsdWRlL3Njcm5pbnRzdHIuaCIg
MgoKIyAxICIuLi8uLi9pbmNsdWRlL2NvbG9ybWFwLmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKIAoKCiAKCgoKCgoKCgogCgoKCgoKCnR5
cGVkZWYgQ0FSRDMyIFBpeGVsOwp0eXBlZGVmIHN0cnVjdCBfQ01FbnRyeSAqRW50cnlQdHI7CiAK
dHlwZWRlZiBzdHJ1Y3QgX2NvbG9yUmVzb3VyY2UgKmNvbG9yUmVzb3VyY2VQdHI7CgpleHRlcm4g
aW50IENyZWF0ZUNvbG9ybWFwKAoKICAgIENvbG9ybWFwICAsCiAgICBTY3JlZW5QdHIgICwKICAg
IFZpc3VhbFB0ciAgLAogICAgQ29sb3JtYXBQdHIqICAsCiAgICBpbnQgICwKICAgIGludCAgCgop
OwoKZXh0ZXJuIGludCBGcmVlQ29sb3JtYXAoCgogICAgcG9pbnRlciAgLAogICAgWElEICAKCik7
CgpleHRlcm4gaW50IFRlbGxMb3N0TWFwKAoKICAgIFdpbmRvd1B0ciAgLAogICAgcG9pbnRlciAg
CgopOwoKZXh0ZXJuIGludCBUZWxsR2FpbmVkTWFwKAoKICAgIFdpbmRvd1B0ciAgLAogICAgcG9p
bnRlciAgCgopOwoKZXh0ZXJuIGludCBDb3B5Q29sb3JtYXBBbmRGcmVlKAoKICAgIENvbG9ybWFw
ICAsCiAgICBDb2xvcm1hcFB0ciAgLAogICAgaW50ICAKCik7CgpleHRlcm4gaW50IEFsbG9jQ29s
b3IoCgogICAgQ29sb3JtYXBQdHIgICwKICAgIHVuc2lnbmVkIHNob3J0KiAgLAogICAgdW5zaWdu
ZWQgc2hvcnQqICAsCiAgICB1bnNpZ25lZCBzaG9ydCogICwKICAgIFBpeGVsKiAgLAogICAgaW50
ICAKCik7CgpleHRlcm4gdm9pZCBGYWtlQWxsb2NDb2xvcigKCiAgICBDb2xvcm1hcFB0ciAgLAog
ICAgeENvbG9ySXRlbSAqICAKCik7CgpleHRlcm4gdm9pZCBGYWtlRnJlZUNvbG9yKAoKICAgIENv
bG9ybWFwUHRyICAsCiAgICBQaXhlbCAgCgopOwoKdHlwZWRlZiBpbnQgKCpDb2xvckNvbXBhcmVQ
cm9jUHRyKSgKCiAgICBFbnRyeVB0ciAgLAogICAgeHJnYiAqICAKCik7CgpleHRlcm4gaW50IEZp
bmRDb2xvcigKCiAgICBDb2xvcm1hcFB0ciAgLAogICAgRW50cnlQdHIgICwKICAgIGludCAgLAog
ICAgeHJnYiogICwKICAgIFBpeGVsKiAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIENvbG9y
Q29tcGFyZVByb2NQdHIgIAoKKTsKCmV4dGVybiBpbnQgUXVlcnlDb2xvcnMoCgogICAgQ29sb3Jt
YXBQdHIgICwKICAgIGludCAgLAogICAgUGl4ZWwqICAsCiAgICB4cmdiKiAgCgopOwoKZXh0ZXJu
IGludCBGcmVlQ2xpZW50UGl4ZWxzKAoKICAgIHBvaW50ZXIgICwKICAgIFhJRCAgCgopOwoKZXh0
ZXJuIGludCBBbGxvY0NvbG9yQ2VsbHMoCgogICAgaW50ICAsCiAgICBDb2xvcm1hcFB0ciAgLAog
ICAgaW50ICAsCiAgICBpbnQgICwKICAgIEJvb2wgICwKICAgIFBpeGVsKiAgLAogICAgUGl4ZWwq
ICAKCik7CgpleHRlcm4gaW50IEFsbG9jQ29sb3JQbGFuZXMoCgogICAgaW50ICAsCiAgICBDb2xv
cm1hcFB0ciAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAg
ICBCb29sICAsCiAgICBQaXhlbCogICwKICAgIFBpeGVsKiAgLAogICAgUGl4ZWwqICAsCiAgICBQ
aXhlbCogIAoKKTsKCmV4dGVybiBpbnQgRnJlZUNvbG9ycygKCiAgICBDb2xvcm1hcFB0ciAgLAog
ICAgaW50ICAsCiAgICBpbnQgICwKICAgIFBpeGVsKiAgLAogICAgUGl4ZWwgIAoKKTsKCmV4dGVy
biBpbnQgU3RvcmVDb2xvcnMoCgogICAgQ29sb3JtYXBQdHIgICwKICAgIGludCAgLAogICAgeENv
bG9ySXRlbSogIAoKKTsKCmV4dGVybiBpbnQgSXNNYXBJbnN0YWxsZWQoCgogICAgQ29sb3JtYXAg
ICwKICAgIFdpbmRvd1B0ciAgCgopOwoKCiMgNTIgIi4uLy4uL2luY2x1ZGUvc2NybmludHN0ci5o
IiAyCgojIDEgIi4uLy4uL2luY2x1ZGUvY3Vyc29yLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0N1cnNvciAq
Q3Vyc29yUHRyOwp0eXBlZGVmIHN0cnVjdCBfQ3Vyc29yTWV0cmljICpDdXJzb3JNZXRyaWNQdHI7
CgpleHRlcm4gQ3Vyc29yUHRyIHJvb3RDdXJzb3I7CgpleHRlcm4gaW50IEZyZWVDdXJzb3IoCgog
ICAgcG9pbnRlciAgLAogICAgWElEICAKCik7CgpleHRlcm4gQ3Vyc29yUHRyIEFsbG9jQ3Vyc29y
KAoKICAgIHVuc2lnbmVkIGNoYXIqICAsCiAgICB1bnNpZ25lZCBjaGFyKiAgLAogICAgQ3Vyc29y
TWV0cmljUHRyICAsCiAgICB1bnNpZ25lZCAgLAogICAgdW5zaWduZWQgICwKICAgIHVuc2lnbmVk
ICAsCiAgICB1bnNpZ25lZCAgLAogICAgdW5zaWduZWQgICwKICAgIHVuc2lnbmVkICAKCik7Cgpl
eHRlcm4gaW50IEFsbG9jR2x5cGhDdXJzb3IoCgogICAgRm9udCAgLAogICAgdW5zaWduZWQgaW50
ICAsCiAgICBGb250ICAsCiAgICB1bnNpZ25lZCBpbnQgICwKICAgIHVuc2lnbmVkICAsCiAgICB1
bnNpZ25lZCAgLAogICAgdW5zaWduZWQgICwKICAgIHVuc2lnbmVkICAsCiAgICB1bnNpZ25lZCAg
LAogICAgdW5zaWduZWQgICwKICAgIEN1cnNvclB0ciogICwKICAgIENsaWVudFB0ciAgCgopOwoK
ZXh0ZXJuIEN1cnNvclB0ciBDcmVhdGVSb290Q3Vyc29yKAoKICAgIGNoYXIqICAsCiAgICB1bnNp
Z25lZCBpbnQgIAoKKTsKCmV4dGVybiBpbnQgU2VydmVyQml0c0Zyb21HbHlwaCgKCiAgICBGb250
UHRyICAsCiAgICB1bnNpZ25lZCBpbnQgICwKICAgIHJlZ2lzdGVyIEN1cnNvck1ldHJpY1B0ciAg
LAogICAgdW5zaWduZWQgY2hhciAqKiAgCgopOwoKZXh0ZXJuIEJvb2wgQ3Vyc29yTWV0cmljc0Zy
b21HbHlwaCgKCiAgICBGb250UHRyICAsCiAgICB1bnNpZ25lZCAgLAogICAgQ3Vyc29yTWV0cmlj
UHRyICAKCik7CgpleHRlcm4gdm9pZCBDaGVja0N1cnNvckNvbmZpbmVtZW50KAoKICAgIFdpbmRv
d1B0ciAgCgopOwoKZXh0ZXJuIHZvaWQgTmV3Q3VycmVudFNjcmVlbigKCiAgICBTY3JlZW5QdHIg
ICwKICAgIGludCAgLAogICAgaW50ICAKCik7CgpleHRlcm4gQm9vbCBQb2ludGVyQ29uZmluZWRU
b1NjcmVlbigKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgR2V0U3ByaXRlUG9zaXRpb24oCgog
ICAgaW50ICogICwKICAgIGludCAqICAKCik7CgoKIyA1MyAiLi4vLi4vaW5jbHVkZS9zY3JuaW50
c3RyLmgiIDIKCiMgMSAiLi4vLi4vaW5jbHVkZS92YWxpZGF0ZS5oIiAxCiAKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgoKCnR5cGVkZWYgZW51bSB7IFZUT3RoZXIsIFZUU3RhY2ssIFZUTW92
ZSwgVlRVbm1hcCwgVlRNYXAsIFZUQnJva2VuIH0gVlRLaW5kOwoKIAp0eXBlZGVmIHVuaW9uIF9W
YWxpZGF0ZSAqVmFsaWRhdGVQdHI7CgoKCgojIDU0ICIuLi8uLi9pbmNsdWRlL3Njcm5pbnRzdHIu
aCIgMgoKCiMgMSAiLi4vLi4vaW5jbHVkZS9kaXguaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCiMgMSAiLi4vLi4vaW5jbHVkZS9pbnB1dC5o
IiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgTGVkczsKdHlw
ZWRlZiBzdHJ1Y3QgX090aGVyQ2xpZW50cyAqT3RoZXJDbGllbnRzUHRyOwp0eXBlZGVmIHN0cnVj
dCBfSW5wdXRDbGllbnRzICpJbnB1dENsaWVudHNQdHI7CnR5cGVkZWYgc3RydWN0IF9EZXZpY2VJ
bnRSZWMgKkRldmljZUludFB0cjsKCnR5cGVkZWYgaW50ICgqRGV2aWNlUHJvYykoCgogICAgRGV2
aWNlSW50UHRyICAsCiAgICBpbnQgIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlByb2Nlc3NJbnB1dFBy
b2MpKAoKICAgIHhFdmVudFB0ciAgLAogICAgRGV2aWNlSW50UHRyICAsCiAgICBpbnQgIAoKKTsK
CnR5cGVkZWYgc3RydWN0IF9EZXZpY2VSZWMgewogICAgcG9pbnRlcglkZXZpY2VQcml2YXRlOwog
ICAgUHJvY2Vzc0lucHV0UHJvYyBwcm9jZXNzSW5wdXRQcm9jOwkgCiAgICBQcm9jZXNzSW5wdXRQ
cm9jIHJlYWxJbnB1dFByb2M7CSAKICAgIFByb2Nlc3NJbnB1dFByb2MgZW5xdWV1ZUlucHV0UHJv
YzsJIAogICAgQm9vbAlvbjsJCQkgCn0gRGV2aWNlUmVjLCAqRGV2aWNlUHRyOwoKdHlwZWRlZiBz
dHJ1Y3QgewogICAgaW50CQkJY2xpY2ssIGJlbGwsIGJlbGxfcGl0Y2gsIGJlbGxfZHVyYXRpb247
CiAgICBCb29sCQlhdXRvUmVwZWF0OwogICAgdW5zaWduZWQgY2hhcglhdXRvUmVwZWF0c1szMl07
CiAgICBMZWRzCQlsZWRzOwogICAgdW5zaWduZWQgY2hhcglpZDsKfSBLZXliZEN0cmw7Cgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBLZXlTeW0gICptYXA7CiAgICBLZXlDb2RlIG1pbktleUNvZGUsCgkg
ICAgbWF4S2V5Q29kZTsKICAgIGludCAgICAgbWFwV2lkdGg7Cn0gS2V5U3ltc1JlYywgKktleVN5
bXNQdHI7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQJCW51bSwgZGVuLCB0aHJlc2hvbGQ7CiAg
ICB1bnNpZ25lZCBjaGFyIGlkOwp9IFB0ckN0cmw7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQg
ICAgICAgICByZXNvbHV0aW9uLCBtaW5fdmFsdWUsIG1heF92YWx1ZTsKICAgIGludCAgICAgICAg
IGludGVnZXJfZGlzcGxheWVkOwogICAgdW5zaWduZWQgY2hhciBpZDsKfSBJbnRlZ2VyQ3RybDsK
CnR5cGVkZWYgc3RydWN0IHsKICAgIGludCAgICAgICAgIG1heF9zeW1ib2xzLCBudW1fc3ltYm9s
c19zdXBwb3J0ZWQ7CiAgICBpbnQgICAgICAgICBudW1fc3ltYm9sc19kaXNwbGF5ZWQ7CiAgICBL
ZXlTeW0gICAgICAqc3ltYm9sc19zdXBwb3J0ZWQ7CiAgICBLZXlTeW0gICAgICAqc3ltYm9sc19k
aXNwbGF5ZWQ7CiAgICB1bnNpZ25lZCBjaGFyIGlkOwp9IFN0cmluZ0N0cmw7Cgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBpbnQgICAgICAgICBwZXJjZW50LCBwaXRjaCwgZHVyYXRpb247CiAgICB1bnNp
Z25lZCBjaGFyIGlkOwp9IEJlbGxDdHJsOwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgTGVkcyAgICAg
ICAgbGVkX3ZhbHVlczsKICAgIE1hc2sgICAgICAgIGxlZF9tYXNrOwogICAgdW5zaWduZWQgY2hh
ciBpZDsKfSBMZWRDdHJsOwoKZXh0ZXJuIEtleWJkQ3RybAlkZWZhdWx0S2V5Ym9hcmRDb250cm9s
OwpleHRlcm4gUHRyQ3RybAkJZGVmYXVsdFBvaW50ZXJDb250cm9sOwoKCmV4dGVybiBEZXZpY2VQ
dHIgQWRkSW5wdXREZXZpY2UoCgogICAgRGV2aWNlUHJvYyAgLAogICAgQm9vbCAgCgopOwoKCgoK
ZXh0ZXJuIERldmljZUludFB0ciBfQWRkSW5wdXREZXZpY2UoCgogICAgRGV2aWNlUHJvYyAgLAog
ICAgQm9vbCAgCgopOwoKZXh0ZXJuIEJvb2wgRW5hYmxlRGV2aWNlKAoKICAgIERldmljZUludFB0
ciAgCgopOwoKZXh0ZXJuIEJvb2wgRGlzYWJsZURldmljZSgKCiAgICBEZXZpY2VJbnRQdHIgIAoK
KTsKCmV4dGVybiBpbnQgSW5pdEFuZFN0YXJ0RGV2aWNlcygKCiAgICB2b2lkCgopOwoKZXh0ZXJu
IHZvaWQgQ2xvc2VEb3duRGV2aWNlcygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgUmVtb3Zl
RGV2aWNlKAoKICAgIERldmljZUludFB0ciAgCgopOwoKZXh0ZXJuIGludCBOdW1Nb3Rpb25FdmVu
dHMoCgogICAgdm9pZAoKKTsKCgpleHRlcm4gdm9pZCBSZWdpc3RlclBvaW50ZXJEZXZpY2UoCgog
ICAgRGV2aWNlUHRyICAKCik7CgoKCgpleHRlcm4gdm9pZCBfUmVnaXN0ZXJQb2ludGVyRGV2aWNl
KAoKICAgIERldmljZUludFB0ciAgCgopOwoKCmV4dGVybiB2b2lkIFJlZ2lzdGVyS2V5Ym9hcmRE
ZXZpY2UoCgogICAgRGV2aWNlUHRyICAKCik7CgoKCgpleHRlcm4gdm9pZCBfUmVnaXN0ZXJLZXli
b2FyZERldmljZSgKCiAgICBEZXZpY2VJbnRQdHIgIAoKKTsKCmV4dGVybiBEZXZpY2VQdHIgTG9v
a3VwS2V5Ym9hcmREZXZpY2UoCgogICAgdm9pZAoKKTsKCmV4dGVybiBEZXZpY2VQdHIgTG9va3Vw
UG9pbnRlckRldmljZSgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIERldmljZVB0ciBMb29rdXBEZXZp
Y2UoCgogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBRdWVyeU1pbk1heEtleUNvZGVzKAoKICAg
IEtleUNvZGUqICAsCiAgICBLZXlDb2RlKiAgCgopOwoKZXh0ZXJuIEJvb2wgU2V0S2V5U3ltc01h
cCgKCiAgICBLZXlTeW1zUHRyICAsCiAgICBLZXlTeW1zUHRyICAKCik7CgpleHRlcm4gQm9vbCBJ
bml0S2V5Q2xhc3NEZXZpY2VTdHJ1Y3QoCgogICAgRGV2aWNlSW50UHRyICAsCiAgICBLZXlTeW1z
UHRyICAsCiAgICBDQVJEOCAgW10KCik7CgpleHRlcm4gQm9vbCBJbml0QnV0dG9uQ2xhc3NEZXZp
Y2VTdHJ1Y3QoCgogICAgRGV2aWNlSW50UHRyICAsCiAgICBpbnQgICwKICAgIENBUkQ4KiAgCgop
OwoKdHlwZWRlZiBpbnQgKCpWYWx1YXRvck1vdGlvblByb2NQdHIpKAoKCQlEZXZpY2VJbnRQdHIg
ICwKCQl4VGltZWNvb3JkICogICwKCQl1bnNpZ25lZCBsb25nICAsCgkJdW5zaWduZWQgbG9uZyAg
LAoJCVNjcmVlblB0ciAgCgopOwoKZXh0ZXJuIEJvb2wgSW5pdFZhbHVhdG9yQ2xhc3NEZXZpY2VT
dHJ1Y3QoCgogICAgRGV2aWNlSW50UHRyICAsCiAgICBpbnQgICwKICAgIFZhbHVhdG9yTW90aW9u
UHJvY1B0ciAgLAogICAgaW50ICAsCiAgICBpbnQgIAoKKTsKCmV4dGVybiBCb29sIEluaXRGb2N1
c0NsYXNzRGV2aWNlU3RydWN0KAoKICAgIERldmljZUludFB0ciAgCgopOwoKdHlwZWRlZiB2b2lk
ICgqQmVsbFByb2NQdHIpKAoKICAgIGludCAgLAogICAgRGV2aWNlSW50UHRyICAsCiAgICBwb2lu
dGVyICAsCiAgICBpbnQKCik7Cgp0eXBlZGVmIHZvaWQgKCpLYmRDdHJsUHJvY1B0cikoCgogICAg
RGV2aWNlSW50UHRyICAsCiAgICBLZXliZEN0cmwgKiAgCgopOwoKZXh0ZXJuIEJvb2wgSW5pdEti
ZEZlZWRiYWNrQ2xhc3NEZXZpY2VTdHJ1Y3QoCgogICAgRGV2aWNlSW50UHRyICAsCiAgICBCZWxs
UHJvY1B0ciAgLAogICAgS2JkQ3RybFByb2NQdHIgIAoKKTsKCnR5cGVkZWYgdm9pZCAoKlB0ckN0
cmxQcm9jUHRyKSgKCiAgICBEZXZpY2VJbnRQdHIgICwKICAgIFB0ckN0cmwgKiAgCgopOwoKZXh0
ZXJuIEJvb2wgSW5pdFB0ckZlZWRiYWNrQ2xhc3NEZXZpY2VTdHJ1Y3QoCgogICAgRGV2aWNlSW50
UHRyICAsCiAgICBQdHJDdHJsUHJvY1B0ciAgCgopOwoKdHlwZWRlZiB2b2lkICgqU3RyaW5nQ3Ry
bFByb2NQdHIpKAoKICAgIERldmljZUludFB0ciAgLAogICAgU3RyaW5nQ3RybCAqICAKCik7Cgpl
eHRlcm4gQm9vbCBJbml0U3RyaW5nRmVlZGJhY2tDbGFzc0RldmljZVN0cnVjdCgKCiAgICBEZXZp
Y2VJbnRQdHIgICwKICAgIFN0cmluZ0N0cmxQcm9jUHRyICAsCiAgICBpbnQgICwKICAgIGludCAg
LAogICAgS2V5U3ltKiAgCgopOwoKdHlwZWRlZiB2b2lkICgqQmVsbEN0cmxQcm9jUHRyKSgKCiAg
ICBEZXZpY2VJbnRQdHIgICwKICAgIEJlbGxDdHJsICogIAoKKTsKCmV4dGVybiBCb29sIEluaXRC
ZWxsRmVlZGJhY2tDbGFzc0RldmljZVN0cnVjdCgKCiAgICBEZXZpY2VJbnRQdHIgICwKICAgIEJl
bGxQcm9jUHRyICAsCiAgICBCZWxsQ3RybFByb2NQdHIgIAoKKTsKCnR5cGVkZWYgdm9pZCAoKkxl
ZEN0cmxQcm9jUHRyKSgKCiAgICBEZXZpY2VJbnRQdHIgICwKICAgIExlZEN0cmwgKiAgCgopOwoK
ZXh0ZXJuIEJvb2wgSW5pdExlZEZlZWRiYWNrQ2xhc3NEZXZpY2VTdHJ1Y3QoCgogICAgRGV2aWNl
SW50UHRyICAsCiAgICBMZWRDdHJsUHJvY1B0ciAgCgopOwoKdHlwZWRlZiB2b2lkICgqSW50ZWdl
ckN0cmxQcm9jUHRyKSgKCiAgICBEZXZpY2VJbnRQdHIgICwKICAgIEludGVnZXJDdHJsICogIAoK
KTsKCgpleHRlcm4gQm9vbCBJbml0SW50ZWdlckZlZWRiYWNrQ2xhc3NEZXZpY2VTdHJ1Y3QoCgog
ICAgRGV2aWNlSW50UHRyICAsCiAgICBJbnRlZ2VyQ3RybFByb2NQdHIgIAoKKTsKCmV4dGVybiBC
b29sIEluaXRQb2ludGVyRGV2aWNlU3RydWN0KAoKICAgIERldmljZVB0ciAgLAogICAgQ0FSRDgq
ICAsCiAgICBpbnQgICwKICAgIFZhbHVhdG9yTW90aW9uUHJvY1B0ciAgLAogICAgUHRyQ3RybFBy
b2NQdHIgICwKICAgIGludCAgCgopOwoKZXh0ZXJuIEJvb2wgSW5pdEtleWJvYXJkRGV2aWNlU3Ry
dWN0KAoKICAgIERldmljZVB0ciAgLAogICAgS2V5U3ltc1B0ciAgLAogICAgQ0FSRDggIFtdLAog
ICAgQmVsbFByb2NQdHIgICwKICAgIEtiZEN0cmxQcm9jUHRyICAKCik7CgpleHRlcm4gdm9pZCBT
ZW5kTWFwcGluZ05vdGlmeSgKCiAgICB1bnNpZ25lZCBpbnQgICwKICAgIHVuc2lnbmVkIGludCAg
LAogICAgdW5zaWduZWQgaW50ICAsCiAgICBDbGllbnRQdHIJIAoKKTsKCmV4dGVybiBCb29sIEJh
ZERldmljZU1hcCgKCiAgICBCWVRFKiAgLAogICAgaW50ICAsCiAgICB1bnNpZ25lZCAgLAogICAg
dW5zaWduZWQgICwKICAgIFhJRCogIAoKKTsKCmV4dGVybiBCb29sIEFsbE1vZGlmaWVyS2V5c0Fy
ZVVwKAoKICAgIERldmljZUludFB0ciAgLAogICAgQ0FSRDgqICAsCiAgICBpbnQgICwKICAgIENB
UkQ4KiAgLAogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBOb3RlTGVkU3RhdGUoCgogICAgRGV2
aWNlSW50UHRyICAsCiAgICBpbnQgICwKICAgIEJvb2wgIAoKKTsKCmV4dGVybiB2b2lkIE1heWJl
U3RvcEhpbnQoCgogICAgRGV2aWNlSW50UHRyICAsCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVy
biB2b2lkIFByb2Nlc3NQb2ludGVyRXZlbnQoCgogICAgeEV2ZW50UHRyICAsCiAgICBEZXZpY2VJ
bnRQdHIgICwKICAgIGludCAgCgopOwoKZXh0ZXJuIHZvaWQgUHJvY2Vzc0tleWJvYXJkRXZlbnQo
CgogICAgeEV2ZW50UHRyICAsCiAgICBEZXZpY2VJbnRQdHIgICwKICAgIGludCAgCgopOwoKIyA1
MDkgIi4uLy4uL2luY2x1ZGUvaW5wdXQuaCIKCgpleHRlcm4gQm9vbCBMZWdhbE1vZGlmaWVyKAoK
ICAgIHVuc2lnbmVkIGludCAgLCAKICAgIERldmljZVB0ciAgCgopOwoKZXh0ZXJuIHZvaWQgUHJv
Y2Vzc0lucHV0RXZlbnRzKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBJbml0SW5wdXQoCgog
ICAgaW50ICAgLAogICAgY2hhciAqKiAgCgopOwoKCiMgNTEgIi4uLy4uL2luY2x1ZGUvZGl4Lmgi
IDIKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgojIDE0MCAiLi4vLi4vaW5j
bHVkZS9kaXguaCIKCgoKIyAxNTYgIi4uLy4uL2luY2x1ZGUvZGl4LmgiCgoKIyAxNjkgIi4uLy4u
L2luY2x1ZGUvZGl4LmgiCgoKIyAxODAgIi4uLy4uL2luY2x1ZGUvZGl4LmgiCgoKCgoKCgoKCgoK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyNDAgIi4uLy4uL2luY2x1ZGUvZGl4LmgiCgoK
CgoKCiMgMjY3ICIuLi8uLi9pbmNsdWRlL2RpeC5oIgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1
Y3QgX1RpbWVTdGFtcCAqVGltZVN0YW1wUHRyOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfV29ya1F1
ZXVlCSpXb3JrUXVldWVQdHI7CgpleHRlcm4gQ2xpZW50UHRyIHJlcXVlc3RpbmdDbGllbnQ7CmV4
dGVybiBDbGllbnRQdHIgKmNsaWVudHM7CmV4dGVybiBDbGllbnRQdHIgc2VydmVyQ2xpZW50Owpl
eHRlcm4gaW50IGN1cnJlbnRNYXhDbGllbnRzOwoKdHlwZWRlZiBpbnQgSFdFdmVudFF1ZXVlVHlw
ZTsKdHlwZWRlZiBIV0V2ZW50UXVldWVUeXBlKiBIV0V2ZW50UXVldWVQdHI7CgpleHRlcm4gSFdF
dmVudFF1ZXVlUHRyIGNoZWNrRm9ySW5wdXRbMl07Cgp0eXBlZGVmIHN0cnVjdCBfVGltZVN0YW1w
IHsKICAgIENBUkQzMiBtb250aHM7CSAKICAgIENBUkQzMiBtaWxsaXNlY29uZHM7Cn0gICAgICAg
ICAgIFRpbWVTdGFtcDsKCiAKCmV4dGVybiB2b2lkIFNldElucHV0Q2hlY2soCgogICAgSFdFdmVu
dFF1ZXVlUHRyICAsCiAgICBIV0V2ZW50UXVldWVQdHIgIAoKKTsKCmV4dGVybiB2b2lkIENsb3Nl
RG93bkNsaWVudCgKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiB2b2lkIFVwZGF0ZUN1cnJl
bnRUaW1lKAoKICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBVcGRhdGVDdXJyZW50VGltZUlmKAoK
ICAgIHZvaWQKCik7CgpleHRlcm4gdm9pZCBJbml0U2VsZWN0aW9ucygKCiAgICB2b2lkCgopOwoK
ZXh0ZXJuIHZvaWQgRmx1c2hDbGllbnRDYWNoZXMoCgogICAgWElEICAKCik7CgpleHRlcm4gaW50
IGRpeERlc3Ryb3lQaXhtYXAoCgogICAgcG9pbnRlciAgLAogICAgWElEICAKCik7CgpleHRlcm4g
dm9pZCBDbG9zZURvd25SZXRhaW5lZFJlc291cmNlcygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZv
aWQgSW5pdENsaWVudCgKCiAgICBDbGllbnRQdHIgICwKICAgIGludCAgLAogICAgcG9pbnRlciAg
CgopOwoKZXh0ZXJuIENsaWVudFB0ciBOZXh0QXZhaWxhYmxlQ2xpZW50KAoKICAgIHBvaW50ZXIg
IAoKKTsKCmV4dGVybiB2b2lkIFNlbmRFcnJvclRvQ2xpZW50KAoKICAgIENsaWVudFB0ciAgLAog
ICAgdW5zaWduZWQgaW50ICAsCiAgICB1bnNpZ25lZCBpbnQgICwKICAgIFhJRCAgLAogICAgaW50
ICAKCik7CgpleHRlcm4gdm9pZCBEZWxldGVXaW5kb3dGcm9tQW55U2VsZWN0aW9ucygKCiAgICBX
aW5kb3dQdHIgIAoKKTsKCmV4dGVybiB2b2lkIE1hcmtDbGllbnRFeGNlcHRpb24oCgogICAgQ2xp
ZW50UHRyICAKCik7CgpleHRlcm4gaW50IEdldEdlb21ldHJ5KAoKICAgIENsaWVudFB0ciAgLAog
ICAgeEdldEdlb21ldHJ5UmVwbHkqICAKCik7CgpleHRlcm4gaW50IFNlbmRDb25uU2V0dXAoCgog
ICAgQ2xpZW50UHRyICAsCiAgICBjaGFyKiAgCgopOwoKZXh0ZXJuIGludApEb0dldEltYWdlKAoK
ICAgIENsaWVudFB0cgkgLAogICAgaW50ICAsCiAgICBEcmF3YWJsZSAgLAogICAgaW50ICAsIAog
ICAgaW50ICAsIAogICAgaW50ICAsIAogICAgaW50ICAsCiAgICBNYXNrICAsCiAgICB4R2V0SW1h
Z2VSZXBseSAqKiAKCik7CgoKCgoKCgoKCiAKCmV4dGVybiB2b2lkIENvcHlJU09MYXRpbjFMb3dl
cmVkKAoKICAgIHVuc2lnbmVkIGNoYXIgKiAgLAogICAgdW5zaWduZWQgY2hhciAqICAsCiAgICBp
bnQgIAoKKTsKCiMgNDcxICIuLi8uLi9pbmNsdWRlL2RpeC5oIgoKCmV4dGVybiBXaW5kb3dQdHIg
TG9va3VwV2luZG93KAoKICAgIFhJRCAgLAogICAgQ2xpZW50UHRyICAKCik7CgpleHRlcm4gcG9p
bnRlciBMb29rdXBEcmF3YWJsZSgKCiAgICBYSUQgICwKICAgIENsaWVudFB0ciAgCgopOwoKCgoK
CgoKCgpleHRlcm4gQ2xpZW50UHRyIExvb2t1cENsaWVudCgKCiAgICBYSUQgICwKICAgIENsaWVu
dFB0ciAgCgopOwoKZXh0ZXJuIHZvaWQgTm9vcEREQSgKCiAgICB2b2lkICosCiAgICAuLi4KCik7
CgpleHRlcm4gaW50IEFsdGVyU2F2ZVNldEZvckNsaWVudCgKCiAgICBDbGllbnRQdHIgICwKICAg
IFdpbmRvd1B0ciAgLAogICAgdW5zaWduZWQgIAoKKTsKCmV4dGVybiB2b2lkIERlbGV0ZVdpbmRv
d0Zyb21BbnlTYXZlU2V0KAoKICAgIFdpbmRvd1B0ciAgCgopOwoKZXh0ZXJuIHZvaWQgQmxvY2tI
YW5kbGVyKAoKICAgIHBvaW50ZXIgICwKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiB2b2lkIFdh
a2V1cEhhbmRsZXIoCgogICAgaW50ICAsCiAgICBwb2ludGVyICAKCik7Cgp0eXBlZGVmIHZvaWQg
KCogV2FrZXVwSGFuZGxlclByb2NQdHIpKAoKICAgIHBvaW50ZXIgICwKICAgIGludCAgLAogICAg
cG9pbnRlciAgCgopOwoKZXh0ZXJuIEJvb2wgUmVnaXN0ZXJCbG9ja0FuZFdha2V1cEhhbmRsZXJz
KAoKICAgIEJsb2NrSGFuZGxlclByb2NQdHIgICwKICAgIFdha2V1cEhhbmRsZXJQcm9jUHRyICAs
CiAgICBwb2ludGVyICAKCik7CgpleHRlcm4gdm9pZCBSZW1vdmVCbG9ja0FuZFdha2V1cEhhbmRs
ZXJzKAoKICAgIEJsb2NrSGFuZGxlclByb2NQdHIgICwKICAgIFdha2V1cEhhbmRsZXJQcm9jUHRy
ICAsCiAgICBwb2ludGVyICAKCik7CgpleHRlcm4gdm9pZCBJbml0QmxvY2tBbmRXYWtldXBIYW5k
bGVycygKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgUHJvY2Vzc1dvcmtRdWV1ZSgKCiAgICB2
b2lkCgopOwoKZXh0ZXJuIEJvb2wgUXVldWVXb3JrUHJvYygKCiAgICBCb29sICgqICApKAoKICAg
ICAgICBDbGllbnRQdHIgICwKICAgICAgICBwb2ludGVyICAKCiAgICAgICAgKSwKICAgIENsaWVu
dFB0ciAgLAogICAgcG9pbnRlciAgCgopOwoKdHlwZWRlZiBCb29sICgqIENsaWVudFNsZWVwUHJv
Y1B0cikoCgogICAgQ2xpZW50UHRyICAsCiAgICBwb2ludGVyICAKCik7CgpleHRlcm4gQm9vbCBD
bGllbnRTbGVlcCgKCiAgICBDbGllbnRQdHIgICwKICAgIENsaWVudFNsZWVwUHJvY1B0ciAgLAog
ICAgcG9pbnRlciAgCgopOwoKCgpleHRlcm4gQm9vbCBDbGllbnRTaWduYWwoCgogICAgQ2xpZW50
UHRyICAKCik7CgoKZXh0ZXJuIHZvaWQgQ2xpZW50V2FrZXVwKAoKICAgIENsaWVudFB0ciAgCgop
OwoKZXh0ZXJuIEJvb2wgQ2xpZW50SXNBc2xlZXAoCgogICAgQ2xpZW50UHRyICAKCik7CgogCgpl
eHRlcm4gQXRvbSBNYWtlQXRvbSgKCiAgICBjaGFyICogICwKICAgIHVuc2lnbmVkICAsCiAgICBC
b29sICAKCik7CgpleHRlcm4gQm9vbCBWYWxpZEF0b20oCgogICAgQXRvbSAgCgopOwoKZXh0ZXJu
IGNoYXIgKk5hbWVGb3JBdG9tKAoKICAgIEF0b20gIAoKKTsKCmV4dGVybiB2b2lkIEF0b21FcnJv
cigKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgRnJlZUFsbEF0b21zKAoKICAgIHZvaWQKCik7
CgpleHRlcm4gdm9pZCBJbml0QXRvbXMoCgogICAgdm9pZAoKKTsKCiAKCmV4dGVybiB2b2lkIFNl
dE1hc2tGb3JFdmVudCgKCiAgICBNYXNrICAsCiAgICBpbnQgIAoKKTsKCgoKCgoKCgoKZXh0ZXJu
IEJvb2wgSXNQYXJlbnQoCgogICAgV2luZG93UHRyICAsCiAgICBXaW5kb3dQdHIgIAoKKTsKCmV4
dGVybiBXaW5kb3dQdHIgR2V0Q3VycmVudFJvb3RXaW5kb3coCgogICAgdm9pZAoKKTsKCmV4dGVy
biBXaW5kb3dQdHIgR2V0U3ByaXRlV2luZG93KAoKICAgIHZvaWQKCik7CgoKCgoKCgoKCgpleHRl
cm4gdm9pZCBOb3RpY2VFdmVudFRpbWUoCgogICAgeEV2ZW50UHRyICAKCik7CgpleHRlcm4gdm9p
ZCBFbnF1ZXVlRXZlbnQoCgogICAgeEV2ZW50UHRyICAsCiAgICBEZXZpY2VJbnRQdHIgICwKICAg
IGludAkgCgopOwoKZXh0ZXJuIHZvaWQgQ29tcHV0ZUZyZWV6ZXMoCgogICAgdm9pZAoKKTsKCmV4
dGVybiB2b2lkIENoZWNrR3JhYkZvclN5bmNzKAoKICAgIERldmljZUludFB0ciAgLAogICAgQm9v
bCAgLAogICAgQm9vbCAgCgopOwoKZXh0ZXJuIHZvaWQgQWN0aXZhdGVQb2ludGVyR3JhYigKCiAg
ICBEZXZpY2VJbnRQdHIgICwKICAgIEdyYWJQdHIgICwKICAgIFRpbWVTdGFtcCAgLAogICAgQm9v
bCAgCgopOwoKZXh0ZXJuIHZvaWQgRGVhY3RpdmF0ZVBvaW50ZXJHcmFiKAoKICAgIERldmljZUlu
dFB0ciAgCgopOwoKZXh0ZXJuIHZvaWQgQWN0aXZhdGVLZXlib2FyZEdyYWIoCgogICAgRGV2aWNl
SW50UHRyICAsCiAgICBHcmFiUHRyICAsCiAgICBUaW1lU3RhbXAgICwKICAgIEJvb2wgIAoKKTsK
CmV4dGVybiB2b2lkIERlYWN0aXZhdGVLZXlib2FyZEdyYWIoCgogICAgRGV2aWNlSW50UHRyICAK
Cik7CgpleHRlcm4gdm9pZCBBbGxvd1NvbWUoCgogICAgQ2xpZW50UHRyCSAsCiAgICBUaW1lU3Rh
bXAgICwKICAgIERldmljZUludFB0ciAgLAogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBSZWxl
YXNlQWN0aXZlR3JhYnMoCgpDbGllbnRQdHIgY2xpZW50CgopOwoKZXh0ZXJuIGludCBEZWxpdmVy
RXZlbnRzVG9XaW5kb3coCgogICAgV2luZG93UHRyICAsCiAgICB4RXZlbnRQdHIgICwKICAgIGlu
dCAgLAogICAgTWFzayAgLAogICAgR3JhYlB0ciAgLAogICAgaW50ICAKCik7CgpleHRlcm4gaW50
IERlbGl2ZXJEZXZpY2VFdmVudHMoCgogICAgV2luZG93UHRyICAsCiAgICB4RXZlbnRQdHIgICwK
ICAgIEdyYWJQdHIgICwKICAgIFdpbmRvd1B0ciAgLAogICAgRGV2aWNlSW50UHRyICAsCiAgICBp
bnQgIAoKKTsKCmV4dGVybiB2b2lkIERlZmluZUluaXRpYWxSb290V2luZG93KAoKICAgIFdpbmRv
d1B0ciAgCgopOwoKZXh0ZXJuIHZvaWQgV2luZG93SGFzTmV3Q3Vyc29yKAoKICAgIFdpbmRvd1B0
ciAgCgopOwoKZXh0ZXJuIEJvb2wgQ2hlY2tEZXZpY2VHcmFicygKCiAgICBEZXZpY2VJbnRQdHIg
ICwKICAgIHhFdmVudFB0ciAgLAogICAgaW50ICAsCiAgICBpbnQgIAoKKTsKCmV4dGVybiB2b2lk
IERlbGl2ZXJGb2N1c2VkRXZlbnQoCgogICAgRGV2aWNlSW50UHRyICAsCiAgICB4RXZlbnRQdHIg
ICwKICAgIFdpbmRvd1B0ciAgLAogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBEZWxpdmVyR3Jh
YmJlZEV2ZW50KAoKICAgIHhFdmVudFB0ciAgLAogICAgRGV2aWNlSW50UHRyICAsCiAgICBCb29s
ICAsCiAgICBpbnQgIAoKKTsKCmV4dGVybiB2b2lkIFJlY2FsY3VsYXRlRGVsaXZlcmFibGVFdmVu
dHMoCgogICAgV2luZG93UHRyICAKCik7CgpleHRlcm4gaW50IE90aGVyQ2xpZW50R29uZSgKCiAg
ICBwb2ludGVyICAsCiAgICBYSUQgIAoKKTsKCmV4dGVybiB2b2lkIERvRm9jdXNFdmVudHMoCgog
ICAgRGV2aWNlSW50UHRyICAsCiAgICBXaW5kb3dQdHIgICwKICAgIFdpbmRvd1B0ciAgLAogICAg
aW50ICAKCik7CgpleHRlcm4gaW50IFNldElucHV0Rm9jdXMoCgogICAgQ2xpZW50UHRyICAsCiAg
ICBEZXZpY2VJbnRQdHIgICwKICAgIFdpbmRvdyAgLAogICAgQ0FSRDggICwKICAgIFRpbWUgICwK
ICAgIEJvb2wgIAoKKTsKCmV4dGVybiBpbnQgR3JhYkRldmljZSgKCiAgICBDbGllbnRQdHIgICwK
ICAgIERldmljZUludFB0ciAgLAogICAgdW5zaWduZWQgICwKICAgIHVuc2lnbmVkICAsCiAgICBX
aW5kb3cgICwKICAgIHVuc2lnbmVkICAsCiAgICBUaW1lICAsCiAgICBNYXNrICAsCiAgICBDQVJE
OCAqICAKCik7CgpleHRlcm4gdm9pZCBJbml0RXZlbnRzKAoKICAgIHZvaWQKCik7CgpleHRlcm4g
dm9pZCBEZWxldGVXaW5kb3dGcm9tQW55RXZlbnRzKAoKICAgIFdpbmRvd1B0cgkgLAogICAgQm9v
bCAgCgopOwoKCgoKCgoKCgpleHRlcm4gTWFzayBFdmVudE1hc2tGb3JDbGllbnQoCgogICAgV2lu
ZG93UHRyICAsCiAgICBDbGllbnRQdHIgIAoKKTsKCgoKZXh0ZXJuIGludCBEZWxpdmVyRXZlbnRz
KAoKICAgIFdpbmRvd1B0ciAgLAogICAgeEV2ZW50UHRyICAsCiAgICBpbnQgICwKICAgIFdpbmRv
d1B0ciAgCgopOwoKZXh0ZXJuIHZvaWQgU2V0Q3JpdGljYWxFdmVudCgKCiAgICBpbnQgIAoKKTsK
CmV4dGVybiB2b2lkIFdyaXRlRXZlbnRzVG9DbGllbnQoCgogICAgQ2xpZW50UHRyICAsCiAgICBp
bnQJICAgICAgLAogICAgeEV2ZW50UHRyICAKCik7CgpleHRlcm4gaW50IFRyeUNsaWVudEV2ZW50
cygKCiAgICBDbGllbnRQdHIgICwKICAgIHhFdmVudFB0ciAgLAogICAgaW50ICAsCiAgICBNYXNr
ICAsCiAgICBNYXNrICAsCiAgICBHcmFiUHRyICAKCik7CgpleHRlcm4gaW50IEV2ZW50U2VsZWN0
Rm9yV2luZG93KAoKICAgIFdpbmRvd1B0ciAgLAogICAgQ2xpZW50UHRyICAsCiAgICBNYXNrICAK
Cik7CgpleHRlcm4gaW50IEV2ZW50U3VwcHJlc3NGb3JXaW5kb3coCgogICAgV2luZG93UHRyICAs
CiAgICBDbGllbnRQdHIgICwKICAgIE1hc2sgICwKICAgIEJvb2wgKiAgCgopOwoKZXh0ZXJuIGlu
dCBNYXliZURlbGl2ZXJFdmVudHNUb0NsaWVudCgKCiAgICBXaW5kb3dQdHIgICwKICAgIHhFdmVu
dFB0ciAgLAogICAgaW50ICAsCiAgICBNYXNrICAsCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVy
biB2b2lkIFdpbmRvd3NSZXN0cnVjdHVyZWQoCgogICAgdm9pZAoKKTsKCmV4dGVybiB2b2lkIFJl
c2V0Q2xpZW50UHJpdmF0ZXMoCgogICAgdm9pZAoKKTsKCmV4dGVybiBpbnQgQWxsb2NhdGVDbGll
bnRQcml2YXRlSW5kZXgoCgogICAgdm9pZAoKKTsKCmV4dGVybiBCb29sIEFsbG9jYXRlQ2xpZW50
UHJpdmF0ZSgKCiAgICBpbnQgICwKICAgIHVuc2lnbmVkICAKCik7CgogCgoKCgoKCgoKdHlwZWRl
ZiB2b2lkICgqQ2FsbGJhY2tQcm9jUHRyKSAoCgogICAgQ2FsbGJhY2tMaXN0UHRyICosIHBvaW50
ZXIsIHBvaW50ZXIKCik7Cgp0eXBlZGVmIEJvb2wgKCpBZGRDYWxsYmFja1Byb2NQdHIpICgKCiAg
ICBDYWxsYmFja0xpc3RQdHIgKiwgQ2FsbGJhY2tQcm9jUHRyLCBwb2ludGVyCgopOwoKdHlwZWRl
ZiBCb29sICgqRGVsZXRlQ2FsbGJhY2tQcm9jUHRyKSAoCgogICAgQ2FsbGJhY2tMaXN0UHRyICos
IENhbGxiYWNrUHJvY1B0ciwgcG9pbnRlcgoKKTsKCnR5cGVkZWYgdm9pZCAoKkNhbGxDYWxsYmFj
a3NQcm9jUHRyKSAoCgogICAgQ2FsbGJhY2tMaXN0UHRyICosIHBvaW50ZXIKCik7Cgp0eXBlZGVm
IHZvaWQgKCpEZWxldGVDYWxsYmFja0xpc3RQcm9jUHRyKSAoCgogICAgQ2FsbGJhY2tMaXN0UHRy
ICoKCik7Cgp0eXBlZGVmIHN0cnVjdCBfQ2FsbGJhY2tQcm9jcyB7CiAgICBBZGRDYWxsYmFja1By
b2NQdHIJCUFkZENhbGxiYWNrOwogICAgRGVsZXRlQ2FsbGJhY2tQcm9jUHRyCURlbGV0ZUNhbGxi
YWNrOwogICAgQ2FsbENhbGxiYWNrc1Byb2NQdHIJQ2FsbENhbGxiYWNrczsKICAgIERlbGV0ZUNh
bGxiYWNrTGlzdFByb2NQdHIJRGVsZXRlQ2FsbGJhY2tMaXN0Owp9IENhbGxiYWNrRnVuY3NSZWMs
ICpDYWxsYmFja0Z1bmNzUHRyOwoKZXh0ZXJuIEJvb2wgQ3JlYXRlQ2FsbGJhY2tMaXN0KAoKICAg
IENhbGxiYWNrTGlzdFB0ciAqICAsCiAgICBDYWxsYmFja0Z1bmNzUHRyICAKCik7CgpleHRlcm4g
Qm9vbCBBZGRDYWxsYmFjaygKCiAgICBDYWxsYmFja0xpc3RQdHIgKiAgLAogICAgQ2FsbGJhY2tQ
cm9jUHRyICAsCiAgICBwb2ludGVyICAKCik7CgpleHRlcm4gQm9vbCBEZWxldGVDYWxsYmFjaygK
CiAgICBDYWxsYmFja0xpc3RQdHIgKiAgLAogICAgQ2FsbGJhY2tQcm9jUHRyICAsCiAgICBwb2lu
dGVyICAKCik7CgpleHRlcm4gdm9pZCBDYWxsQ2FsbGJhY2tzKAoKICAgIENhbGxiYWNrTGlzdFB0
ciAqICAsCiAgICBwb2ludGVyICAKCik7CgpleHRlcm4gdm9pZCBEZWxldGVDYWxsYmFja0xpc3Qo
CgogICAgQ2FsbGJhY2tMaXN0UHRyICogIAoKKTsKCmV4dGVybiB2b2lkIEluaXRDYWxsYmFja01h
bmFnZXIoCgogICAgdm9pZAoKKTsKCiAKCgoKZXh0ZXJuIENhbGxiYWNrTGlzdFB0ciBTZXJ2ZXJH
cmFiQ2FsbGJhY2s7Cgp0eXBlZGVmIGVudW0ge1NFUlZFUl9HUkFCQkVELCBTRVJWRVJfVU5HUkFC
QkVELAoJICAgICAgQ0xJRU5UX1BFUlZJT1VTLCBDTElFTlRfSU1QRVJWSU9VUyB9IFNlcnZlckdy
YWJTdGF0ZTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIENsaWVudFB0ciBjbGllbnQ7CiAgICBTZXJ2
ZXJHcmFiU3RhdGUgZ3JhYnN0YXRlOwp9IFNlcnZlckdyYWJJbmZvUmVjOwoKIAoKCgpleHRlcm4g
Q2FsbGJhY2tMaXN0UHRyIEV2ZW50Q2FsbGJhY2s7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDbGll
bnRQdHIgY2xpZW50OwogICAgeEV2ZW50UHRyIGV2ZW50czsKICAgIGludCBjb3VudDsKfSBFdmVu
dEluZm9SZWM7CgogCgoKCmV4dGVybiBDYWxsYmFja0xpc3RQdHIgRGV2aWNlRXZlbnRDYWxsYmFj
azsKCnR5cGVkZWYgc3RydWN0IHsKICAgIHhFdmVudFB0ciBldmVudHM7CiAgICBpbnQgY291bnQ7
Cn0gRGV2aWNlRXZlbnRJbmZvUmVjOwoKCiMgNTYgIi4uLy4uL2luY2x1ZGUvc2NybmludHN0ci5o
IiAyCgoKdHlwZWRlZiBzdHJ1Y3QgX1BpeG1hcEZvcm1hdCB7CiAgICB1bnNpZ25lZCBjaGFyCWRl
cHRoOwogICAgdW5zaWduZWQgY2hhcgliaXRzUGVyUGl4ZWw7CiAgICB1bnNpZ25lZCBjaGFyCXNj
YW5saW5lUGFkOwogICAgfSBQaXhtYXBGb3JtYXRSZWM7CiAgICAKdHlwZWRlZiBzdHJ1Y3QgX1Zp
c3VhbCB7CiAgICBWaXN1YWxJRAkJdmlkOwogICAgc2hvcnQJCWNsYXNzOwogICAgc2hvcnQJCWJp
dHNQZXJSR0JWYWx1ZTsKICAgIHNob3J0CQlDb2xvcm1hcEVudHJpZXM7CiAgICBzaG9ydAkJbnBs
YW5lczsgCgoKICAgIHVuc2lnbmVkIGxvbmcJcmVkTWFzaywgZ3JlZW5NYXNrLCBibHVlTWFzazsK
ICAgIGludAkJCW9mZnNldFJlZCwgb2Zmc2V0R3JlZW4sIG9mZnNldEJsdWU7CiAgfSBWaXN1YWxS
ZWM7Cgp0eXBlZGVmIHN0cnVjdCBfRGVwdGggewogICAgdW5zaWduZWQgY2hhcglkZXB0aDsKICAg
IHNob3J0CQludW1WaWRzOwogICAgVmlzdWFsSUQJCSp2aWRzOyAgICAgCiAgfSBEZXB0aFJlYzsK
CgogCgoKCgoKdHlwZWRlZiAgICBCb29sICgqIENsb3NlU2NyZWVuUHJvY1B0cikoCgoJaW50ICAs
CglTY3JlZW5QdHIgIAoKKTsKCnR5cGVkZWYgICAgdm9pZCAoKiBRdWVyeUJlc3RTaXplUHJvY1B0
cikoCgoJaW50ICAsCgl1bnNpZ25lZCBzaG9ydCAqICAsCgl1bnNpZ25lZCBzaG9ydCAqICAsCglT
Y3JlZW5QdHIgIAoKKTsKCnR5cGVkZWYgICAgQm9vbCAoKiBTYXZlU2NyZWVuUHJvY1B0cikoCgoJ
IFNjcmVlblB0ciAgLAoJIGludCAgCgopOwoKdHlwZWRlZiAgICB2b2lkICgqIEdldEltYWdlUHJv
Y1B0cikoCgoJRHJhd2FibGVQdHIgICwKCWludCAgLAoJaW50ICAsCglpbnQgICwKCWludCAgLAoJ
dW5zaWduZWQgaW50ICAsCgl1bnNpZ25lZCBsb25nICAsCgljaGFyICogIAoKKTsKCnR5cGVkZWYg
ICAgdm9pZCAoKiBHZXRTcGFuc1Byb2NQdHIpKAoKCURyYXdhYmxlUHRyICAsCglpbnQgICwKCURE
WFBvaW50UHRyICAsCglpbnQqICAsCglpbnQgICwKCWNoYXIgKiAgCgopOwoKdHlwZWRlZiAgICB2
b2lkICgqIFBvaW50ZXJOb25JbnRlcmVzdEJveFByb2NQdHIpKAoKCVNjcmVlblB0ciAgLAoJQm94
UHRyICAKCik7Cgp0eXBlZGVmICAgIHZvaWQgKCogU291cmNlVmFsaWRhdGVQcm9jUHRyKSgKCglE
cmF3YWJsZVB0ciAgLAoJaW50ICAsCglpbnQgICwKCWludCAgLAoJaW50ICAKCik7Cgp0eXBlZGVm
ICAgIEJvb2wgKCogQ3JlYXRlV2luZG93UHJvY1B0cikoCgoJV2luZG93UHRyICAKCik7Cgp0eXBl
ZGVmICAgIEJvb2wgKCogRGVzdHJveVdpbmRvd1Byb2NQdHIpKAoKCVdpbmRvd1B0ciAgCgopOwoK
dHlwZWRlZiAgICBCb29sICgqIFBvc2l0aW9uV2luZG93UHJvY1B0cikoCgoJV2luZG93UHRyICAs
CglpbnQgICwKCWludCAgCgopOwoKdHlwZWRlZiAgICBCb29sICgqIENoYW5nZVdpbmRvd0F0dHJp
YnV0ZXNQcm9jUHRyKSgKCglXaW5kb3dQdHIgICwKCXVuc2lnbmVkIGxvbmcgIAoKKTsKCnR5cGVk
ZWYgICAgQm9vbCAoKiBSZWFsaXplV2luZG93UHJvY1B0cikoCgoJV2luZG93UHRyICAKCik7Cgp0
eXBlZGVmICAgIEJvb2wgKCogVW5yZWFsaXplV2luZG93UHJvY1B0cikoCgoJV2luZG93UHRyICAK
Cik7Cgp0eXBlZGVmICAgIHZvaWQgKCogUmVzdGFja1dpbmRvd1Byb2NQdHIpKAoKCVdpbmRvd1B0
ciAgLAoJV2luZG93UHRyICAKCik7Cgp0eXBlZGVmICAgIGludCAgKCogVmFsaWRhdGVUcmVlUHJv
Y1B0cikoCgoJV2luZG93UHRyICAsCglXaW5kb3dQdHIgICwKCVZUS2luZCAgCgopOwoKdHlwZWRl
ZiAgICB2b2lkICgqIFBvc3RWYWxpZGF0ZVRyZWVQcm9jUHRyKSgKCglXaW5kb3dQdHIgICwKCVdp
bmRvd1B0ciAgLAoJVlRLaW5kICAKCik7Cgp0eXBlZGVmICAgIHZvaWQgKCogV2luZG93RXhwb3N1
cmVzUHJvY1B0cikoCgoJV2luZG93UHRyICAsCglSZWdpb25QdHIgICwKCVJlZ2lvblB0ciAgCgop
OwoKdHlwZWRlZiAgICB2b2lkICgqIFBhaW50V2luZG93UHJvY1B0cikoCgoJV2luZG93UHRyICAs
CglSZWdpb25QdHIgICwKCWludCAgCgopOwoKdHlwZWRlZiBQYWludFdpbmRvd1Byb2NQdHIgUGFp
bnRXaW5kb3dCYWNrZ3JvdW5kUHJvY1B0cjsKdHlwZWRlZiBQYWludFdpbmRvd1Byb2NQdHIgUGFp
bnRXaW5kb3dCb3JkZXJQcm9jUHRyOwoKdHlwZWRlZiAgICB2b2lkICgqIENvcHlXaW5kb3dQcm9j
UHRyKSgKCglXaW5kb3dQdHIgICwKCUREWFBvaW50UmVjICAsCglSZWdpb25QdHIgIAoKKTsKCnR5
cGVkZWYgICAgdm9pZCAoKiBDbGVhclRvQmFja2dyb3VuZFByb2NQdHIpKAoKCVdpbmRvd1B0ciAg
LAoJaW50ICAsCglpbnQgICwKCWludCAgLAoJaW50ICAsCglCb29sICAKCik7Cgp0eXBlZGVmICAg
IHZvaWQgKCogQ2xpcE5vdGlmeVByb2NQdHIpKAoKCVdpbmRvd1B0ciAgLAoJaW50ICAsCglpbnQg
IAoKKTsKCnR5cGVkZWYgICAgUGl4bWFwUHRyICgqIENyZWF0ZVBpeG1hcFByb2NQdHIpKAoKCVNj
cmVlblB0ciAgLAoJaW50ICAsCglpbnQgICwKCWludCAgCgopOwoKdHlwZWRlZiAgICBCb29sICgq
IERlc3Ryb3lQaXhtYXBQcm9jUHRyKSgKCglQaXhtYXBQdHIgIAoKKTsKCnR5cGVkZWYgICAgdm9p
ZCAoKiBTYXZlRG9vbWVkQXJlYXNQcm9jUHRyKSgKCglXaW5kb3dQdHIgICwKCVJlZ2lvblB0ciAg
LAoJaW50ICAsCglpbnQgIAoKKTsKCnR5cGVkZWYgICAgUmVnaW9uUHRyICgqIFJlc3RvcmVBcmVh
c1Byb2NQdHIpKAoKCVdpbmRvd1B0ciAgLAoJUmVnaW9uUHRyICAKCik7Cgp0eXBlZGVmICAgIHZv
aWQgKCogRXhwb3NlQ29weVByb2NQdHIpKAoKCVdpbmRvd1B0ciAgLAoJRHJhd2FibGVQdHIgICwK
CUdDUHRyICAsCglSZWdpb25QdHIgICwKCWludCAgLAoJaW50ICAsCglpbnQgICwKCWludCAgLAoJ
dW5zaWduZWQgbG9uZyAgCgopOwoKdHlwZWRlZiAgICBSZWdpb25QdHIgKCogVHJhbnNsYXRlQmFj
a2luZ1N0b3JlUHJvY1B0cikoCgoJV2luZG93UHRyICAsCglpbnQgICwKCWludCAgLAoJUmVnaW9u
UHRyICAsCglpbnQgICwKCWludCAgCgopOwoKdHlwZWRlZiAgICBSZWdpb25QdHIgKCogQ2xlYXJC
YWNraW5nU3RvcmVQcm9jUHRyKSgKCglXaW5kb3dQdHIgICwKCWludCAgLAoJaW50ICAsCglpbnQg
ICwKCWludCAgLAoJQm9vbCAgCgopOwoKdHlwZWRlZiAgICB2b2lkICgqIERyYXdHdWFyYW50ZWVQ
cm9jUHRyKSgKCglXaW5kb3dQdHIgICwKCUdDUHRyICAsCglpbnQgIAoKKTsKICAgIAp0eXBlZGVm
ICAgIEJvb2wgKCogUmVhbGl6ZUZvbnRQcm9jUHRyKSgKCglTY3JlZW5QdHIgICwKCUZvbnRQdHIg
IAoKKTsKCnR5cGVkZWYgICAgQm9vbCAoKiBVbnJlYWxpemVGb250UHJvY1B0cikoCgoJU2NyZWVu
UHRyICAsCglGb250UHRyICAKCik7Cgp0eXBlZGVmICAgIHZvaWQgKCogQ29uc3RyYWluQ3Vyc29y
UHJvY1B0cikoCgoJU2NyZWVuUHRyICAsCglCb3hQdHIgIAoKKTsKCnR5cGVkZWYgICAgdm9pZCAo
KiBDdXJzb3JMaW1pdHNQcm9jUHRyKSgKCglTY3JlZW5QdHIgICwKCUN1cnNvclB0ciAgLAoJQm94
UHRyICAsCglCb3hQdHIgIAoKKTsKCnR5cGVkZWYgICAgQm9vbCAoKiBEaXNwbGF5Q3Vyc29yUHJv
Y1B0cikoCgoJU2NyZWVuUHRyICAsCglDdXJzb3JQdHIgIAoKKTsKCnR5cGVkZWYgICAgQm9vbCAo
KiBSZWFsaXplQ3Vyc29yUHJvY1B0cikoCgoJU2NyZWVuUHRyICAsCglDdXJzb3JQdHIgIAoKKTsK
CnR5cGVkZWYgICAgQm9vbCAoKiBVbnJlYWxpemVDdXJzb3JQcm9jUHRyKSgKCglTY3JlZW5QdHIg
ICwKCUN1cnNvclB0ciAgCgopOwoKdHlwZWRlZiAgICB2b2lkICgqIFJlY29sb3JDdXJzb3JQcm9j
UHRyKSgKCglTY3JlZW5QdHIgICwKCUN1cnNvclB0ciAgLAoJQm9vbCAgCgopOwoKdHlwZWRlZiAg
ICBCb29sICgqIFNldEN1cnNvclBvc2l0aW9uUHJvY1B0cikoCgoJU2NyZWVuUHRyICAsCglpbnQg
ICwKCWludCAgLAoJQm9vbCAgCgopOwoKdHlwZWRlZiAgICBCb29sICgqIENyZWF0ZUdDUHJvY1B0
cikoCgoJR0NQdHIgIAoKKTsKCnR5cGVkZWYgICAgQm9vbCAoKiBDcmVhdGVDb2xvcm1hcFByb2NQ
dHIpKAoKCUNvbG9ybWFwUHRyICAKCik7Cgp0eXBlZGVmICAgIHZvaWQgKCogRGVzdHJveUNvbG9y
bWFwUHJvY1B0cikoCgoJQ29sb3JtYXBQdHIgIAoKKTsKCnR5cGVkZWYgICAgdm9pZCAoKiBJbnN0
YWxsQ29sb3JtYXBQcm9jUHRyKSgKCglDb2xvcm1hcFB0ciAgCgopOwoKdHlwZWRlZiAgICB2b2lk
ICgqIFVuaW5zdGFsbENvbG9ybWFwUHJvY1B0cikoCgoJQ29sb3JtYXBQdHIgIAoKKTsKCnR5cGVk
ZWYgICAgaW50ICgqIExpc3RJbnN0YWxsZWRDb2xvcm1hcHNQcm9jUHRyKSAoCgoJU2NyZWVuUHRy
ICAsCglYSUQqICAKCik7Cgp0eXBlZGVmICAgIHZvaWQgKCogU3RvcmVDb2xvcnNQcm9jUHRyKSgK
CglDb2xvcm1hcFB0ciAgLAoJaW50ICAsCgl4Q29sb3JJdGVtICogIAoKKTsKCnR5cGVkZWYgICAg
dm9pZCAoKiBSZXNvbHZlQ29sb3JQcm9jUHRyKSgKCgl1bnNpZ25lZCBzaG9ydCogICwKCXVuc2ln
bmVkIHNob3J0KiAgLAoJdW5zaWduZWQgc2hvcnQqICAsCglWaXN1YWxQdHIgIAoKKTsKCiMgNjAx
ICIuLi8uLi9pbmNsdWRlL3Njcm5pbnRzdHIuaCIKCgp0eXBlZGVmICAgIFJlZ2lvblB0ciAoKiBC
aXRtYXBUb1JlZ2lvblByb2NQdHIpKAoKCVBpeG1hcFB0ciAgCgopOwoKIyA2MTkgIi4uLy4uL2lu
Y2x1ZGUvc2NybmludHN0ci5oIgoKCnR5cGVkZWYgICAgdm9pZCAoKiBTZW5kR3JhcGhpY3NFeHBv
c2VQcm9jUHRyKSgKCglDbGllbnRQdHIgICwKCVJlZ2lvblB0ciAgLAoJWElEICAsCglpbnQgICwK
CWludCAgCgopOwoKdHlwZWRlZiAgICB2b2lkICgqIFNjcmVlbkJsb2NrSGFuZGxlclByb2NQdHIp
KAoKCWludCAgLAoJcG9pbnRlciAgLAoJcG9pbnRlciAgLAoJcG9pbnRlciAgCgopOwoKdHlwZWRl
ZiAgICB2b2lkICgqIFNjcmVlbldha2V1cEhhbmRsZXJQcm9jUHRyKSgKCgkgaW50ICAsCgkgcG9p
bnRlciAgLAoJIHVuc2lnbmVkIGxvbmcgICwKCSBwb2ludGVyICAKCik7Cgp0eXBlZGVmICAgIEJv
b2wgKCogQ3JlYXRlU2NyZWVuUmVzb3VyY2VzUHJvY1B0cikoCgoJU2NyZWVuUHRyICAKCik7Cgp0
eXBlZGVmICAgIEJvb2wgKCogTW9kaWZ5UGl4bWFwSGVhZGVyUHJvY1B0cikoCgoJUGl4bWFwUHRy
ICAsCglpbnQgICwKCWludCAgLAoJaW50ICAsCglpbnQgICwKCWludCAgLAoJcG9pbnRlciAgCgop
OwoKdHlwZWRlZiAgICBQaXhtYXBQdHIgKCogR2V0V2luZG93UGl4bWFwUHJvY1B0cikoCgoJV2lu
ZG93UHRyICAKCik7Cgp0eXBlZGVmICAgIHZvaWQgKCogU2V0V2luZG93UGl4bWFwUHJvY1B0ciko
CgoJV2luZG93UHRyICAsCglQaXhtYXBQdHIgIAoKKTsKCnR5cGVkZWYgICAgUGl4bWFwUHRyICgq
IEdldFNjcmVlblBpeG1hcFByb2NQdHIpKAoKCVNjcmVlblB0ciAgCgopOwoKdHlwZWRlZiAgICB2
b2lkICgqIFNldFNjcmVlblBpeG1hcFByb2NQdHIpKAoKCVBpeG1hcFB0ciAgCgopOwoKdHlwZWRl
ZiAgICB2b2lkICgqIE1hcmtXaW5kb3dQcm9jUHRyKSgKCglXaW5kb3dQdHIgIAoKKTsKCnR5cGVk
ZWYgICAgQm9vbCAoKiBNYXJrT3ZlcmxhcHBlZFdpbmRvd3NQcm9jUHRyKSgKCglXaW5kb3dQdHIg
ICwKCVdpbmRvd1B0ciAgLAoJV2luZG93UHRyICogIAoKKTsKCnR5cGVkZWYgICAgQm9vbCAoKiBD
aGFuZ2VTYXZlVW5kZXJQcm9jUHRyKSgKCglXaW5kb3dQdHIgICwKCVdpbmRvd1B0ciAgCgopOwoK
dHlwZWRlZiAgICB2b2lkICgqIFBvc3RDaGFuZ2VTYXZlVW5kZXJQcm9jUHRyKSgKCglXaW5kb3dQ
dHIgICwKCVdpbmRvd1B0ciAgCgopOwoKdHlwZWRlZiAgICB2b2lkICgqIE1vdmVXaW5kb3dQcm9j
UHRyKSgKCglXaW5kb3dQdHIgICwKCWludCAgLAoJaW50ICAsCglXaW5kb3dQdHIgICwKCVZUS2lu
ZCAgCgopOwoKdHlwZWRlZiAgICB2b2lkICgqIFJlc2l6ZVdpbmRvd1Byb2NQdHIpKAoKICAgIFdp
bmRvd1B0ciAgLAogICAgaW50ICAsCiAgICBpbnQgICwgCiAgICB1bnNpZ25lZCBpbnQgICwKICAg
IHVuc2lnbmVkIGludCAgLAogICAgV2luZG93UHRyICAKCik7Cgp0eXBlZGVmICAgIFdpbmRvd1B0
ciAoKiBHZXRMYXllcldpbmRvd1Byb2NQdHIpKAoKICAgIFdpbmRvd1B0ciAgCgopOwoKdHlwZWRl
ZiAgICB2b2lkICgqIEhhbmRsZUV4cG9zdXJlc1Byb2NQdHIpKAoKICAgIFdpbmRvd1B0ciAgCgop
OwoKdHlwZWRlZiAgICB2b2lkICgqIFJlcGFyZW50V2luZG93UHJvY1B0cikoCgogICAgV2luZG93
UHRyICAsCiAgICBXaW5kb3dQdHIgIAoKKTsKCgp0eXBlZGVmICAgIHZvaWQgKCogU2V0U2hhcGVQ
cm9jUHRyKSgKCglXaW5kb3dQdHIgIAoKKTsKCgp0eXBlZGVmICAgIHZvaWQgKCogQ2hhbmdlQm9y
ZGVyV2lkdGhQcm9jUHRyKSgKCglXaW5kb3dQdHIgICwKCXVuc2lnbmVkIGludCAgCgopOwoKdHlw
ZWRlZiAgICB2b2lkICgqIE1hcmtVbnJlYWxpemVkV2luZG93UHJvY1B0cikoCgoJV2luZG93UHRy
ICAsCglXaW5kb3dQdHIgICwKCUJvb2wgIAoKKTsKCnR5cGVkZWYgc3RydWN0IF9TY3JlZW4gewog
ICAgaW50CQkJbXlOdW07CSAKICAgIEFUT00JCWlkOwogICAgc2hvcnQJCXdpZHRoLCBoZWlnaHQ7
CiAgICBzaG9ydAkJbW1XaWR0aCwgbW1IZWlnaHQ7CiAgICBzaG9ydAkJbnVtRGVwdGhzOwogICAg
dW5zaWduZWQgY2hhciAgICAgIAlyb290RGVwdGg7CiAgICBEZXB0aFB0ciAgICAgICAJYWxsb3dl
ZERlcHRoczsKICAgIHVuc2lnbmVkIGxvbmcgICAgICAJcm9vdFZpc3VhbDsKICAgIHVuc2lnbmVk
IGxvbmcJZGVmQ29sb3JtYXA7CiAgICBzaG9ydAkJbWluSW5zdGFsbGVkQ21hcHMsIG1heEluc3Rh
bGxlZENtYXBzOwogICAgY2hhciAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVTdXBwb3J0LCBz
YXZlVW5kZXJTdXBwb3J0OwogICAgdW5zaWduZWQgbG9uZwl3aGl0ZVBpeGVsLCBibGFja1BpeGVs
OwogICAgdW5zaWduZWQgbG9uZwlyZ2Y7CSAKICAgIEdDUHRyCQlHQ3BlckRlcHRoWzggKzFdOwoJ
CQkgCgoKCgoKCiAgICBQaXhtYXBQdHIJCVBpeG1hcFBlckRlcHRoWzFdOwogICAgcG9pbnRlcgkJ
ZGV2UHJpdmF0ZTsKICAgIHNob3J0ICAgICAgIAludW1WaXN1YWxzOwogICAgVmlzdWFsUHRyCQl2
aXN1YWxzOwogICAgaW50CQkJV2luZG93UHJpdmF0ZUxlbjsKICAgIHVuc2lnbmVkCQkqV2luZG93
UHJpdmF0ZVNpemVzOwogICAgdW5zaWduZWQJCXRvdGFsV2luZG93U2l6ZTsKICAgIGludAkJCUdD
UHJpdmF0ZUxlbjsKICAgIHVuc2lnbmVkCQkqR0NQcml2YXRlU2l6ZXM7CiAgICB1bnNpZ25lZAkJ
dG90YWxHQ1NpemU7CgogICAgIAoKICAgIENsb3NlU2NyZWVuUHJvY1B0cgkJQ2xvc2VTY3JlZW47
CiAgICBRdWVyeUJlc3RTaXplUHJvY1B0cglRdWVyeUJlc3RTaXplOwogICAgU2F2ZVNjcmVlblBy
b2NQdHIJCVNhdmVTY3JlZW47CiAgICBHZXRJbWFnZVByb2NQdHIJCUdldEltYWdlOwogICAgR2V0
U3BhbnNQcm9jUHRyCQlHZXRTcGFuczsKICAgIFBvaW50ZXJOb25JbnRlcmVzdEJveFByb2NQdHIg
UG9pbnRlck5vbkludGVyZXN0Qm94OwogICAgU291cmNlVmFsaWRhdGVQcm9jUHRyCVNvdXJjZVZh
bGlkYXRlOwoKICAgICAKCiAgICBDcmVhdGVXaW5kb3dQcm9jUHRyCQlDcmVhdGVXaW5kb3c7CiAg
ICBEZXN0cm95V2luZG93UHJvY1B0cglEZXN0cm95V2luZG93OwogICAgUG9zaXRpb25XaW5kb3dQ
cm9jUHRyCVBvc2l0aW9uV2luZG93OwogICAgQ2hhbmdlV2luZG93QXR0cmlidXRlc1Byb2NQdHIg
Q2hhbmdlV2luZG93QXR0cmlidXRlczsKICAgIFJlYWxpemVXaW5kb3dQcm9jUHRyCVJlYWxpemVX
aW5kb3c7CiAgICBVbnJlYWxpemVXaW5kb3dQcm9jUHRyCVVucmVhbGl6ZVdpbmRvdzsKICAgIFZh
bGlkYXRlVHJlZVByb2NQdHIJCVZhbGlkYXRlVHJlZTsKICAgIFBvc3RWYWxpZGF0ZVRyZWVQcm9j
UHRyCVBvc3RWYWxpZGF0ZVRyZWU7CiAgICBXaW5kb3dFeHBvc3VyZXNQcm9jUHRyCVdpbmRvd0V4
cG9zdXJlczsKICAgIFBhaW50V2luZG93QmFja2dyb3VuZFByb2NQdHIgUGFpbnRXaW5kb3dCYWNr
Z3JvdW5kOwogICAgUGFpbnRXaW5kb3dCb3JkZXJQcm9jUHRyCVBhaW50V2luZG93Qm9yZGVyOwog
ICAgQ29weVdpbmRvd1Byb2NQdHIJCUNvcHlXaW5kb3c7CiAgICBDbGVhclRvQmFja2dyb3VuZFBy
b2NQdHIJQ2xlYXJUb0JhY2tncm91bmQ7CiAgICBDbGlwTm90aWZ5UHJvY1B0cgkJQ2xpcE5vdGlm
eTsKICAgIFJlc3RhY2tXaW5kb3dQcm9jUHRyCVJlc3RhY2tXaW5kb3c7CgogICAgIAoKICAgIENy
ZWF0ZVBpeG1hcFByb2NQdHIJCUNyZWF0ZVBpeG1hcDsKICAgIERlc3Ryb3lQaXhtYXBQcm9jUHRy
CURlc3Ryb3lQaXhtYXA7CgogICAgIAoKICAgIFNhdmVEb29tZWRBcmVhc1Byb2NQdHIJU2F2ZURv
b21lZEFyZWFzOwogICAgUmVzdG9yZUFyZWFzUHJvY1B0cgkJUmVzdG9yZUFyZWFzOwogICAgRXhw
b3NlQ29weVByb2NQdHIJCUV4cG9zZUNvcHk7CiAgICBUcmFuc2xhdGVCYWNraW5nU3RvcmVQcm9j
UHRyIFRyYW5zbGF0ZUJhY2tpbmdTdG9yZTsKICAgIENsZWFyQmFja2luZ1N0b3JlUHJvY1B0cglD
bGVhckJhY2tpbmdTdG9yZTsKICAgIERyYXdHdWFyYW50ZWVQcm9jUHRyCURyYXdHdWFyYW50ZWU7
CiAgICAgCgoKCiAgICBCU0Z1bmNSZWMJCQlCYWNraW5nU3RvcmVGdW5jczsKICAgIAogICAgIAoK
ICAgIFJlYWxpemVGb250UHJvY1B0cgkJUmVhbGl6ZUZvbnQ7CiAgICBVbnJlYWxpemVGb250UHJv
Y1B0cglVbnJlYWxpemVGb250OwoKICAgICAKCiAgICBDb25zdHJhaW5DdXJzb3JQcm9jUHRyCUNv
bnN0cmFpbkN1cnNvcjsKICAgIEN1cnNvckxpbWl0c1Byb2NQdHIJCUN1cnNvckxpbWl0czsKICAg
IERpc3BsYXlDdXJzb3JQcm9jUHRyCURpc3BsYXlDdXJzb3I7CiAgICBSZWFsaXplQ3Vyc29yUHJv
Y1B0cglSZWFsaXplQ3Vyc29yOwogICAgVW5yZWFsaXplQ3Vyc29yUHJvY1B0cglVbnJlYWxpemVD
dXJzb3I7CiAgICBSZWNvbG9yQ3Vyc29yUHJvY1B0cglSZWNvbG9yQ3Vyc29yOwogICAgU2V0Q3Vy
c29yUG9zaXRpb25Qcm9jUHRyCVNldEN1cnNvclBvc2l0aW9uOwoKICAgICAKCiAgICBDcmVhdGVH
Q1Byb2NQdHIJCUNyZWF0ZUdDOwoKICAgICAKCiAgICBDcmVhdGVDb2xvcm1hcFByb2NQdHIJQ3Jl
YXRlQ29sb3JtYXA7CiAgICBEZXN0cm95Q29sb3JtYXBQcm9jUHRyCURlc3Ryb3lDb2xvcm1hcDsK
ICAgIEluc3RhbGxDb2xvcm1hcFByb2NQdHIJSW5zdGFsbENvbG9ybWFwOwogICAgVW5pbnN0YWxs
Q29sb3JtYXBQcm9jUHRyCVVuaW5zdGFsbENvbG9ybWFwOwogICAgTGlzdEluc3RhbGxlZENvbG9y
bWFwc1Byb2NQdHIgTGlzdEluc3RhbGxlZENvbG9ybWFwczsKICAgIFN0b3JlQ29sb3JzUHJvY1B0
cgkJU3RvcmVDb2xvcnM7CiAgICBSZXNvbHZlQ29sb3JQcm9jUHRyCQlSZXNvbHZlQ29sb3I7Cgog
ICAgIAoKIyA5MTUgIi4uLy4uL2luY2x1ZGUvc2NybmludHN0ci5oIgoKICAgIEJpdG1hcFRvUmVn
aW9uUHJvY1B0cglCaXRtYXBUb1JlZ2lvbjsKCgoKICAgIFNlbmRHcmFwaGljc0V4cG9zZVByb2NQ
dHIJU2VuZEdyYXBoaWNzRXhwb3NlOwoKICAgICAKCiAgICBTY3JlZW5CbG9ja0hhbmRsZXJQcm9j
UHRyCUJsb2NrSGFuZGxlcjsKICAgIFNjcmVlbldha2V1cEhhbmRsZXJQcm9jUHRyCVdha2V1cEhh
bmRsZXI7CgogICAgcG9pbnRlciBibG9ja0RhdGE7CiAgICBwb2ludGVyIHdha2V1cERhdGE7Cgog
ICAgIAogICAgRGV2VW5pb24JKmRldlByaXZhdGVzOwoKICAgIENyZWF0ZVNjcmVlblJlc291cmNl
c1Byb2NQdHIgQ3JlYXRlU2NyZWVuUmVzb3VyY2VzOwogICAgTW9kaWZ5UGl4bWFwSGVhZGVyUHJv
Y1B0cglNb2RpZnlQaXhtYXBIZWFkZXI7CgogICAgR2V0V2luZG93UGl4bWFwUHJvY1B0cglHZXRX
aW5kb3dQaXhtYXA7CiAgICBTZXRXaW5kb3dQaXhtYXBQcm9jUHRyCVNldFdpbmRvd1BpeG1hcDsK
ICAgIEdldFNjcmVlblBpeG1hcFByb2NQdHIJR2V0U2NyZWVuUGl4bWFwOwogICAgU2V0U2NyZWVu
UGl4bWFwUHJvY1B0cglTZXRTY3JlZW5QaXhtYXA7CgogICAgUGl4bWFwUHRyIHBTY3JhdGNoUGl4
bWFwOwkJIAoKCgoKCgoKICAgIE1hcmtXaW5kb3dQcm9jUHRyCQlNYXJrV2luZG93OwogICAgTWFy
a092ZXJsYXBwZWRXaW5kb3dzUHJvY1B0ciBNYXJrT3ZlcmxhcHBlZFdpbmRvd3M7CiAgICBDaGFu
Z2VTYXZlVW5kZXJQcm9jUHRyCUNoYW5nZVNhdmVVbmRlcjsKICAgIFBvc3RDaGFuZ2VTYXZlVW5k
ZXJQcm9jUHRyCVBvc3RDaGFuZ2VTYXZlVW5kZXI7CiAgICBNb3ZlV2luZG93UHJvY1B0cgkJTW92
ZVdpbmRvdzsKICAgIFJlc2l6ZVdpbmRvd1Byb2NQdHIJCVJlc2l6ZVdpbmRvdzsKICAgIEdldExh
eWVyV2luZG93UHJvY1B0cglHZXRMYXllcldpbmRvdzsKICAgIEhhbmRsZUV4cG9zdXJlc1Byb2NQ
dHIJSGFuZGxlRXhwb3N1cmVzOwogICAgUmVwYXJlbnRXaW5kb3dQcm9jUHRyCVJlcGFyZW50V2lu
ZG93OwoKCiAgICBTZXRTaGFwZVByb2NQdHIJCVNldFNoYXBlOwoKCiAgICBDaGFuZ2VCb3JkZXJX
aWR0aFByb2NQdHIJQ2hhbmdlQm9yZGVyV2lkdGg7CiAgICBNYXJrVW5yZWFsaXplZFdpbmRvd1By
b2NQdHIJTWFya1VucmVhbGl6ZWRXaW5kb3c7Cgp9IFNjcmVlblJlYzsKCnR5cGVkZWYgc3RydWN0
IF9TY3JlZW5JbmZvIHsKICAgIGludAkJaW1hZ2VCeXRlT3JkZXI7CiAgICBpbnQJCWJpdG1hcFNj
YW5saW5lVW5pdDsKICAgIGludAkJYml0bWFwU2NhbmxpbmVQYWQ7CiAgICBpbnQJCWJpdG1hcEJp
dE9yZGVyOwogICAgaW50CQludW1QaXhtYXBGb3JtYXRzOwogICAgUGl4bWFwRm9ybWF0UmVjCgkJ
Zm9ybWF0c1s4IF07CiAgICBpbnQJCWFycmF5U2l6ZTsKICAgIGludAkJbnVtU2NyZWVuczsKICAg
IFNjcmVlblB0cglzY3JlZW5zWzMgXTsKICAgIGludAkJbnVtVmlkZW9TY3JlZW5zOwp9IFNjcmVl
bkluZm87CgpleHRlcm4gU2NyZWVuSW5mbyBzY3JlZW5JbmZvOwoKZXh0ZXJuIHZvaWQgSW5pdE91
dHB1dCgKCiAgICBTY3JlZW5JbmZvIAkqICAsCiAgICBpbnQgICAgIAkgLAogICAgY2hhciAgICAJ
KiogIAoKKTsKCgojIDI3ICJzaGFkb3cuYyIgMgoKIyAxICIuLi8uLi9pbmNsdWRlL3dpbmRvd3N0
ci5oIiAxCiAKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKCgoKIyAxICIuLi8uLi9pbmNsdWRlL3BpeG1hcHN0ci5oIiAxCiAKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfRHJhd2Fi
bGUgewogICAgdW5zaWduZWQgY2hhcgl0eXBlOwkgCiAgICB1bnNpZ25lZCBjaGFyCWNsYXNzOwkg
CiAgICB1bnNpZ25lZCBjaGFyCWRlcHRoOwogICAgdW5zaWduZWQgY2hhcgliaXRzUGVyUGl4ZWw7
CiAgICB1bnNpZ25lZCBsb25nCWlkOwkgCiAgICBzaG9ydAkJeDsJIAogICAgc2hvcnQJCXk7CSAK
ICAgIHVuc2lnbmVkIHNob3J0CXdpZHRoOwogICAgdW5zaWduZWQgc2hvcnQJaGVpZ2h0OwogICAg
U2NyZWVuUHRyCQlwU2NyZWVuOwogICAgdW5zaWduZWQgbG9uZwlzZXJpYWxOdW1iZXI7Cn0gRHJh
d2FibGVSZWM7CgogCgoKCnR5cGVkZWYgc3RydWN0IF9QaXhtYXAgewogICAgRHJhd2FibGVSZWMJ
CWRyYXdhYmxlOwogICAgaW50CQkJcmVmY250OwogICAgaW50CQkJZGV2S2luZDsKICAgIERldlVu
aW9uCQlkZXZQcml2YXRlOwoKCgp9IFBpeG1hcFJlYzsKCgojIDU0ICIuLi8uLi9pbmNsdWRlL3dp
bmRvd3N0ci5oIiAyCgoKCiMgMSAiLi4vLi4vaW5jbHVkZS9wcm9wZXJ0eS5oIiAxCiAKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1By
b3BlcnR5ICpQcm9wZXJ0eVB0cjsKCmV4dGVybiBpbnQgQ2hhbmdlV2luZG93UHJvcGVydHkoCgog
ICAgV2luZG93UHRyICAsCiAgICBBdG9tICAsCiAgICBBdG9tICAsCiAgICBpbnQgICwKICAgIGlu
dCAgLAogICAgdW5zaWduZWQgbG9uZyAgLAogICAgcG9pbnRlciAgLAogICAgQm9vbCAgCgopOwoK
ZXh0ZXJuIGludCBEZWxldGVQcm9wZXJ0eSgKCiAgICBXaW5kb3dQdHIgICwKICAgIEF0b20gIAoK
KTsKCmV4dGVybiB2b2lkIERlbGV0ZUFsbFdpbmRvd1Byb3BlcnRpZXMoCgogICAgV2luZG93UHRy
ICAKCik7CgoKIyA1NyAiLi4vLi4vaW5jbHVkZS93aW5kb3dzdHIuaCIgMgoKIyAxICIuLi8uLi9p
bmNsdWRlL3Jlc291cmNlLmgiIDEKIAoKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIFJFU1RZUEU7CgoK
CgogCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgogCgogCgogCgogCgog
CgoKCgoKCgogCgoKCgp0eXBlZGVmIGludCAoKkRlbGV0ZVR5cGUpKAoKICAgIHBvaW50ZXIgICwK
ICAgIFhJRCAgCgopOwoKdHlwZWRlZiB2b2lkICgqRmluZFJlc1R5cGUpKAoKICAgIHBvaW50ZXIg
ICwKICAgIFhJRCAgLAogICAgcG9pbnRlciAgCgopOwoKdHlwZWRlZiBCb29sICgqRmluZENvbXBs
ZXhSZXNUeXBlKSgKCiAgICBwb2ludGVyICAsCiAgICBYSUQgICwKICAgIHBvaW50ZXIgIAoKKTsK
CmV4dGVybiBSRVNUWVBFIENyZWF0ZU5ld1Jlc291cmNlVHlwZSgKCiAgICBEZWxldGVUeXBlICAK
Cik7CgpleHRlcm4gUkVTVFlQRSBDcmVhdGVOZXdSZXNvdXJjZUNsYXNzKAoKdm9pZAoKKTsKCmV4
dGVybiBCb29sIEluaXRDbGllbnRSZXNvdXJjZXMoCgogICAgQ2xpZW50UHRyICAKCik7CgpleHRl
cm4gWElEIEZha2VDbGllbnRJRCgKCiAgICBpbnQgIAoKKTsKCmV4dGVybiBCb29sIEFkZFJlc291
cmNlKAoKICAgIFhJRCAgLAogICAgUkVTVFlQRSAgLAogICAgcG9pbnRlciAgCgopOwoKZXh0ZXJu
IHZvaWQgRnJlZVJlc291cmNlKAoKICAgIFhJRCAgLAogICAgUkVTVFlQRSAgCgopOwoKZXh0ZXJu
IHZvaWQgRnJlZVJlc291cmNlQnlUeXBlKAoKICAgIFhJRCAgLAogICAgUkVTVFlQRSAgLAogICAg
Qm9vbCAgCgopOwoKZXh0ZXJuIEJvb2wgQ2hhbmdlUmVzb3VyY2VWYWx1ZSgKCiAgICBYSUQgICwK
ICAgIFJFU1RZUEUgICwKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiB2b2lkIEZpbmRDbGllbnRS
ZXNvdXJjZXNCeVR5cGUoCgogICAgQ2xpZW50UHRyICAsCiAgICBSRVNUWVBFICAsCiAgICBGaW5k
UmVzVHlwZSAgLAogICAgcG9pbnRlciAgCgopOwoKZXh0ZXJuIHZvaWQgRnJlZUNsaWVudE5ldmVy
UmV0YWluUmVzb3VyY2VzKAoKICAgIENsaWVudFB0ciAgCgopOwoKZXh0ZXJuIHZvaWQgRnJlZUNs
aWVudFJlc291cmNlcygKCiAgICBDbGllbnRQdHIgIAoKKTsKCmV4dGVybiB2b2lkIEZyZWVBbGxS
ZXNvdXJjZXMoCgp2b2lkCgopOwoKZXh0ZXJuIEJvb2wgTGVnYWxOZXdJRCgKCiAgICBYSUQgICwK
ICAgIENsaWVudFB0ciAgCgopOwoKZXh0ZXJuIHBvaW50ZXIgTG9va3VwSURCeVR5cGUoCgogICAg
WElEICAsCiAgICBSRVNUWVBFICAKCik7CgpleHRlcm4gcG9pbnRlciBMb29rdXBJREJ5Q2xhc3Mo
CgogICAgWElEICAsCiAgICBSRVNUWVBFICAKCik7CgpleHRlcm4gcG9pbnRlciBMb29rdXBDbGll
bnRSZXNvdXJjZUNvbXBsZXgoCgogICAgQ2xpZW50UHRyIGNsaWVudCwKICAgIFJFU1RZUEUgdHlw
ZSwKICAgIEZpbmRDb21wbGV4UmVzVHlwZSBmdW5jLAogICAgcG9pbnRlciBjZGF0YQoKKTsKCiAK
CgoKCgoKCgoKCgoKIyAyODkgIi4uLy4uL2luY2x1ZGUvcmVzb3VyY2UuaCIKCgoKCgoKCgoKCmV4
dGVybiB2b2lkIEdldFhJRFJhbmdlKAoKICAgIGludCAgLAogICAgQm9vbCAgLAogICAgWElEICog
ICwKICAgIFhJRCAqICAKCik7CgpleHRlcm4gdW5zaWduZWQgaW50IEdldFhJRExpc3QoCgogICAg
Q2xpZW50UHRyICAsCiAgICB1bnNpZ25lZCBpbnQgICwKICAgIFhJRCAqICAKCik7CgoKCiMgNTgg
Ii4uLy4uL2luY2x1ZGUvd2luZG93c3RyLmgiIDIKCgoKCiMgMSAiLi4vLi4vaW5jbHVkZS9vcGFx
dWUuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKIyAxICIuLi8uLi9pbmNs
dWRlL2dsb2JhbHMuaCIgMQogCgoKCgoKCiAKCmV4dGVybiBDQVJEMzIgZGVmYXVsdFNjcmVlblNh
dmVyVGltZTsKZXh0ZXJuIENBUkQzMiBkZWZhdWx0U2NyZWVuU2F2ZXJJbnRlcnZhbDsKZXh0ZXJu
IENBUkQzMiBTY3JlZW5TYXZlclRpbWU7CmV4dGVybiBDQVJEMzIgU2NyZWVuU2F2ZXJJbnRlcnZh
bDsKCmV4dGVybiBjaGFyICpkZWZhdWx0Rm9udFBhdGg7CmV4dGVybiBjaGFyICpyZ2JQYXRoOwpl
eHRlcm4gaW50IG1vbml0b3JSZXNvbHV0aW9uOwpleHRlcm4gQm9vbCBsb2FkYWJsZUZvbnRzOwpl
eHRlcm4gaW50IGRlZmF1bHRDb2xvclZpc3VhbENsYXNzOwoKZXh0ZXJuIEJvb2wgTXVzdF9oYXZl
X21lbW9yeTsKZXh0ZXJuIFdpbmRvd1B0ciAqV2luZG93VGFibGU7CmV4dGVybiBpbnQgR3JhYklu
UHJvZ3Jlc3M7CmV4dGVybiBCb29sIG5vVGVzdEV4dGVuc2lvbnM7CgpleHRlcm4gRERYUG9pbnRS
ZWMgZGl4U2NyZWVuT3JpZ2luc1szIF07CgojIDQxICIuLi8uLi9pbmNsdWRlL2dsb2JhbHMuaCIK
CgoKZXh0ZXJuIEJvb2wgbm9QYW5vcmFtaVhFeHRlbnNpb247CmV4dGVybiBCb29sIFBhbm9yYW1p
WE1hcHBlZDsKZXh0ZXJuIEJvb2wgUGFub3JhbWlYVmlzaWJpbGl0eU5vdGlmeVNlbnQ7CmV4dGVy
biBCb29sIFBhbm9yYW1pWFdpbmRvd0V4cG9zdXJlU2VudDsKZXh0ZXJuIEJvb2wgUGFub3JhbWlY
T25lRXhwb3NlUmVxdWVzdDsKCgoKCiMgMzIgIi4uLy4uL2luY2x1ZGUvb3BhcXVlLmgiIDIKCgpl
eHRlcm4gY2hhciAqZGVmYXVsdFRleHRGb250OwpleHRlcm4gY2hhciAqZGVmYXVsdEN1cnNvckZv
bnQ7CmV4dGVybiBpbnQgTWF4Q2xpZW50czsKZXh0ZXJuIGNoYXIgaXNJdFRpbWVUb1lpZWxkOwpl
eHRlcm4gY2hhciBkaXNwYXRjaEV4Y2VwdGlvbjsKCiAKCgoKCmV4dGVybiBDQVJEMzIgVGltZU91
dFZhbHVlOwpleHRlcm4gaW50IFNjcmVlblNhdmVyQmxhbmtpbmc7CmV4dGVybiBpbnQgU2NyZWVu
U2F2ZXJBbGxvd0V4cG9zdXJlczsKZXh0ZXJuIGludCBkZWZhdWx0U2NyZWVuU2F2ZXJCbGFua2lu
ZzsKZXh0ZXJuIGludCBkZWZhdWx0U2NyZWVuU2F2ZXJBbGxvd0V4cG9zdXJlczsKZXh0ZXJuIGlu
dCBhcmdjR2xvYmFsOwpleHRlcm4gY2hhciAqKmFyZ3ZHbG9iYWw7CmV4dGVybiBjaGFyICpkaXNw
bGF5OwoKZXh0ZXJuIGludCBkZWZhdWx0QmFja2luZ1N0b3JlOwpleHRlcm4gQm9vbCBkaXNhYmxl
QmFja2luZ1N0b3JlOwpleHRlcm4gQm9vbCBlbmFibGVCYWNraW5nU3RvcmU7CmV4dGVybiBCb29s
IGRpc2FibGVTYXZlVW5kZXJzOwpleHRlcm4gQm9vbCBQYXJ0aWFsTmV0d29yazsKCmV4dGVybiBp
bnQgbG9nb1NjcmVlblNhdmVyOwoKCgoKCgoKCgoKZXh0ZXJuIEJvb2wgcGVybWl0T2xkQnVnczsK
ZXh0ZXJuIEJvb2wgZGVmZWF0QWNjZXNzQ29udHJvbDsKCgoKZXh0ZXJuIGNoYXIqIHByb3ROb0xp
c3RlbjsKCgoKCiMgNjIgIi4uLy4uL2luY2x1ZGUvd2luZG93c3RyLmgiIDIKCgoKCgoKCgoKCgoK
CnR5cGVkZWYgc3RydWN0IF9XaW5kb3dPcHQgewogICAgVmlzdWFsSUQJCXZpc3VhbDsJCSAgICAK
ICAgIEN1cnNvclB0cgkJY3Vyc29yOwkJICAgIAogICAgQ29sb3JtYXAJCWNvbG9ybWFwOwkgICAg
CiAgICBNYXNrCQlkb250UHJvcGFnYXRlTWFzazsgIAogICAgTWFzawkJb3RoZXJFdmVudE1hc2tz
OyAgICAKICAgIHN0cnVjdCBfT3RoZXJDbGllbnRzICpvdGhlckNsaWVudHM7CSAgICAKICAgIHN0
cnVjdCBfR3JhYlJlYwkqcGFzc2l2ZUdyYWJzOwkgICAgCiAgICBQcm9wZXJ0eVB0cgkJdXNlclBy
b3BzOwkgICAgCiAgICB1bnNpZ25lZCBsb25nCWJhY2tpbmdCaXRQbGFuZXM7ICAgCiAgICB1bnNp
Z25lZCBsb25nCWJhY2tpbmdQaXhlbDsJICAgIAoKICAgIFJlZ2lvblB0cgkJYm91bmRpbmdTaGFw
ZTsJICAgIAogICAgUmVnaW9uUHRyCQljbGlwU2hhcGU7CSAgICAKCgoKCn0gV2luZG93T3B0UmVj
LCAqV2luZG93T3B0UHRyOwoKCgoKdHlwZWRlZiBzdHJ1Y3QgX1dpbmRvdyB7CiAgICBEcmF3YWJs
ZVJlYwkJZHJhd2FibGU7CiAgICBXaW5kb3dQdHIJCXBhcmVudDsJCSAKICAgIFdpbmRvd1B0cgkJ
bmV4dFNpYjsJIAogICAgV2luZG93UHRyCQlwcmV2U2liOwkgCiAgICBXaW5kb3dQdHIJCWZpcnN0
Q2hpbGQ7CSAKICAgIFdpbmRvd1B0cgkJbGFzdENoaWxkOwkgCiAgICBSZWdpb25SZWMJCWNsaXBM
aXN0OwkgCiAgICBSZWdpb25SZWMJCWJvcmRlckNsaXA7CSAKICAgIHVuaW9uIF9WYWxpZGF0ZQkq
dmFsZGF0YTsKICAgIFJlZ2lvblJlYwkJd2luU2l6ZTsKICAgIFJlZ2lvblJlYwkJYm9yZGVyU2l6
ZTsKICAgIEREWFBvaW50UmVjCQlvcmlnaW47CQkgCiAgICB1bnNpZ25lZCBzaG9ydAlib3JkZXJX
aWR0aDsKICAgIHVuc2lnbmVkIHNob3J0CWRlbGl2ZXJhYmxlRXZlbnRzOwogICAgTWFzawkJZXZl
bnRNYXNrOwogICAgUGl4VW5pb24JCWJhY2tncm91bmQ7CiAgICBQaXhVbmlvbgkJYm9yZGVyOwog
ICAgcG9pbnRlcgkJYmFja1N0b3JhZ2U7CSAKICAgIFdpbmRvd09wdFB0cglvcHRpb25hbDsKICAg
IHVuc2lnbmVkCQliYWNrZ3JvdW5kU3RhdGU6MjsgIAogICAgdW5zaWduZWQJCWJvcmRlcklzUGl4
ZWw6MTsKICAgIHVuc2lnbmVkCQljdXJzb3JJc05vbmU6MTsJIAogICAgdW5zaWduZWQJCWJhY2tp
bmdTdG9yZToyOwogICAgdW5zaWduZWQJCXNhdmVVbmRlcjoxOwogICAgdW5zaWduZWQJCURJWHNh
dmVVbmRlcjoxOwogICAgdW5zaWduZWQJCWJpdEdyYXZpdHk6NDsKICAgIHVuc2lnbmVkCQl3aW5H
cmF2aXR5OjQ7CiAgICB1bnNpZ25lZAkJb3ZlcnJpZGVSZWRpcmVjdDoxOwogICAgdW5zaWduZWQJ
CXZpc2liaWxpdHk6MjsKICAgIHVuc2lnbmVkCQltYXBwZWQ6MTsKICAgIHVuc2lnbmVkCQlyZWFs
aXplZDoxOwkgCiAgICB1bnNpZ25lZAkJdmlld2FibGU6MTsJIAogICAgdW5zaWduZWQJCWRvbnRQ
cm9wYWdhdGU6MzsgCiAgICB1bnNpZ25lZAkJZm9yY2VkQlM6MTsJIAoKCgoKCgogICAgRGV2VW5p
b24JCSpkZXZQcml2YXRlczsKfSBXaW5kb3dSZWM7CgogCgoKCgpleHRlcm4gTWFzawkgICAgRG9u
dFByb3BhZ2F0ZU1hc2tzW107CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoK
CnR5cGVkZWYgc3RydWN0IF9TY3JlZW5TYXZlclN0dWZmIHsKICAgIFdpbmRvd1B0ciBwV2luZG93
OwogICAgWElEICAgICAgIHdpZDsKICAgIGNoYXIgICAgICBibGFua2VkOwogICAgQm9vbCAgICAg
ICgqRXh0ZXJuYWxTY3JlZW5TYXZlcikoCgoJU2NyZWVuUHRyCSAsCglpbnQJCSAsCglCb29sCQkg
CgogICAgKTsKfSBTY3JlZW5TYXZlclN0dWZmUmVjLCAqU2NyZWVuU2F2ZXJTdHVmZlB0cjsKCgoK
CgoKCgpleHRlcm4gaW50IHNjcmVlbklzU2F2ZWQ7CmV4dGVybiBTY3JlZW5TYXZlclN0dWZmUmVj
IHNhdmVkU2NyZWVuSW5mb1szIF07CgogCgoKCgoKCgoKIAoKCgoKCgpleHRlcm4gaW50IG51bVNh
dmVVbmRlcnNWaWV3YWJsZTsKZXh0ZXJuIGludCBkZWx0YVNhdmVVbmRlcnNWaWV3YWJsZTsKCgoj
IDI4ICJzaGFkb3cuYyIgMgoKIyAxICIuLi8uLi8uLi8uLi9pbmNsdWRlL2ZvbnRzL2ZvbnQuaCIg
MQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAogCgoKCgoKIyAxICIuLi8uLi8uLi8uLi9pbmNs
dWRlL2ZvbnRzL2ZzbWFza3MuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCnR5cGVkZWYgQ0FSRDMyIGZzQml0bWFwRm9ybWF0Owp0eXBlZGVmIENBUkQzMiBmc0JpdG1h
cEZvcm1hdE1hc2s7CgoKIyAzMSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9mb250cy9mb250LmgiIDIK
CgoKIAoKCgoKCnR5cGVkZWYgc3RydWN0IF9Gb250SW5mbyAqRm9udEluZm9QdHI7CnR5cGVkZWYg
c3RydWN0IF9Gb250UHJvcCAqRm9udFByb3BQdHI7CnR5cGVkZWYgc3RydWN0IF9FeHRlbnRJbmZv
ICpFeHRlbnRJbmZvUHRyOwp0eXBlZGVmIHN0cnVjdCBfRm9udFBhdGhFbGVtZW50ICpGb250UGF0
aEVsZW1lbnRQdHI7CgoKCgoKCnR5cGVkZWYgc3RydWN0IF9Gb250TmFtZXMgKkZvbnROYW1lc1B0
cjsKdHlwZWRlZiBzdHJ1Y3QgX0ZvbnRSZXNvbHV0aW9uICpGb250UmVzb2x1dGlvblB0cjsKCgoK
CgogIAoKCgoKdHlwZWRlZiBpbnQgRHJhd0RpcmVjdGlvbjsKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKIAoKCgoKCiAKCgoKCmV4dGVybiBpbnQgZ2x5cGhDYWNoaW5nTW9kZTsKCnN0cnVjdCBf
Q2xpZW50OwoKZXh0ZXJuIGludCBTdGFydExpc3RGb250c1dpdGhJbmZvKAogICAgc3RydWN0IF9D
bGllbnQgKiAgLAogICAgaW50ICAsCiAgICB1bnNpZ25lZCBjaGFyICogICwKICAgIGludCAgCik7
CgpleHRlcm4gRm9udE5hbWVzUHRyIE1ha2VGb250TmFtZXNSZWNvcmQoCiAgICB1bnNpZ25lZCAg
Cik7CgpleHRlcm4gdm9pZCBGcmVlRm9udE5hbWVzKAogICAgRm9udE5hbWVzUHRyICAKKTsKCmV4
dGVybiBpbnQgIEFkZEZvbnROYW1lc05hbWUoCiAgICBGb250TmFtZXNQdHIgICwKICAgIGNoYXIg
KiAgLAogICAgaW50ICAKKTsKCgoKCgoKdHlwZWRlZiBzdHJ1Y3QgX0ZvbnRQYXR0ZXJuQ2FjaGUg
ICAgKkZvbnRQYXR0ZXJuQ2FjaGVQdHI7CgpleHRlcm4gRm9udFBhdHRlcm5DYWNoZVB0ciAgTWFr
ZUZvbnRQYXR0ZXJuQ2FjaGUgKAogICAgdm9pZAopOwoKZXh0ZXJuIHZvaWQJCSAgICBGcmVlRm9u
dFBhdHRlcm5DYWNoZSAoCiAgICBGb250UGF0dGVybkNhY2hlUHRyICAKKTsKCmV4dGVybiB2b2lk
CQkgICAgRW1wdHlGb250UGF0dGVybkNhY2hlICgKICAgIEZvbnRQYXR0ZXJuQ2FjaGVQdHIgIAop
OwoKZXh0ZXJuIHZvaWQJCSAgICBDYWNoZUZvbnRQYXR0ZXJuICgKICAgIEZvbnRQYXR0ZXJuQ2Fj
aGVQdHIgICwKICAgIGNoYXIgKiAgLAogICAgaW50ICAsCiAgICBGb250UHRyICAKKTsKZXh0ZXJu
IEZvbnRSZXNvbHV0aW9uUHRyIEdldENsaWVudFJlc29sdXRpb25zKAogICAgaW50ICogIAopOwoK
ZXh0ZXJuIEZvbnRQdHIJCSAgICBGaW5kQ2FjaGVkRm9udFBhdHRlcm4gKAogICAgRm9udFBhdHRl
cm5DYWNoZVB0ciAgLAogICAgY2hhciAqICAsCiAgICBpbnQgIAopOwoKZXh0ZXJuIHZvaWQJCSAg
ICBSZW1vdmVDYWNoZWRGb250UGF0dGVybiAoCiAgICBGb250UGF0dGVybkNhY2hlUHRyICAsCiAg
ICBGb250UHRyICAKKTsKCnR5cGVkZWYgZW51bSB7CiAgICBMaW5lYXI4Qml0LCBUd29EOEJpdCwg
TGluZWFyMTZCaXQsIFR3b0QxNkJpdAp9ICAgICAgICAgICBGb250RW5jb2Rpbmc7CgoKIyAyOSAi
c2hhZG93LmMiIDIKCiMgMSAiLi4vLi4vaW5jbHVkZS9kaXhmb250c3RyLmgiIDEKIAogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi4uLy4uL2luY2x1ZGUvc2VydmVybWQuaCIgMQogCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIyAxMjkgIi4uLy4uL2luY2x1ZGUvc2VydmVybWQuaCIKCgojIDE1MCAiLi4vLi4vaW5j
bHVkZS9zZXJ2ZXJtZC5oIgoKCiMgMTY1ICIuLi8uLi9pbmNsdWRlL3NlcnZlcm1kLmgiCgoKIyAx
ODYgIi4uLy4uL2luY2x1ZGUvc2VydmVybWQuaCIKCgojIDIxNSAiLi4vLi4vaW5jbHVkZS9zZXJ2
ZXJtZC5oIgoKCgojIDIzMSAiLi4vLi4vaW5jbHVkZS9zZXJ2ZXJtZC5oIgoKCiMgMjQ5ICIuLi8u
Li9pbmNsdWRlL3NlcnZlcm1kLmgiCgoKIyAyNjMgIi4uLy4uL2luY2x1ZGUvc2VydmVybWQuaCIK
CgojIDI3NCAiLi4vLi4vaW5jbHVkZS9zZXJ2ZXJtZC5oIgoKCiMgMjg1ICIuLi8uLi9pbmNsdWRl
L3NlcnZlcm1kLmgiCgoKIyAzMDYgIi4uLy4uL2luY2x1ZGUvc2VydmVybWQuaCIKCgojIDMyNyAi
Li4vLi4vaW5jbHVkZS9zZXJ2ZXJtZC5oIgoKCgojIDM0OSAiLi4vLi4vaW5jbHVkZS9zZXJ2ZXJt
ZC5oIgoKCiMgMzYzICIuLi8uLi9pbmNsdWRlL3NlcnZlcm1kLmgiCgoKIyAzNzkgIi4uLy4uL2lu
Y2x1ZGUvc2VydmVybWQuaCIKCgojIDQyMiAiLi4vLi4vaW5jbHVkZS9zZXJ2ZXJtZC5oIgoKCiMg
NDMyICIuLi8uLi9pbmNsdWRlL3NlcnZlcm1kLmgiCgoKIyA0NTYgIi4uLy4uL2luY2x1ZGUvc2Vy
dmVybWQuaCIKCgogCgoKCgoKCiAKIAoKCgoKCgoKIAoKCgoKCgoKCgoKIAoKCgoKCgp0eXBlZGVm
IHN0cnVjdCBfUGFkZGluZ0luZm8gewoJaW50ICAgICBwYWRSb3VuZFVwOwkgCglpbnQJcGFkUGl4
ZWxzTG9nMjsJIAoJaW50ICAgICBwYWRCeXRlc0xvZzI7CSAKCWludAlub3RQb3dlcjI7CSAKCWlu
dAlieXRlc1BlclBpeGVsOwkgCglpbnQJYml0c1BlclBpeGVsOwkgCn0gUGFkZGluZ0luZm87CmV4
dGVybiBQYWRkaW5nSW5mbyBQaXhtYXBXaWR0aFBhZGRpbmdJbmZvW107CgogCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCgoKIyAyOCAiLi4vLi4vaW5jbHVkZS9kaXhmb250c3RyLmgiIDIKCiMgMSAi
Li4vLi4vaW5jbHVkZS9kaXhmb250LmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoK
CgoKIyAxICIuLi8uLi9pbmNsdWRlL2Nsb3N1cmUuaCIgMQogCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfTEZjbG9zdXJlCSpMRmNs
b3N1cmVQdHI7CnR5cGVkZWYgc3RydWN0IF9MRldJY2xvc3VyZQkqTEZXSWNsb3N1cmVQdHI7CnR5
cGVkZWYgc3RydWN0IF9PRmNsb3N1cmUJKk9GY2xvc3VyZVB0cjsKdHlwZWRlZiBzdHJ1Y3QgX1BU
Y2xvc3VyZQkqUFRjbG9zdXJlUHRyOwp0eXBlZGVmIHN0cnVjdCBfSVRjbG9zdXJlCSpJVGNsb3N1
cmVQdHI7CgoKIyAzMSAiLi4vLi4vaW5jbHVkZS9kaXhmb250LmgiIDIKCiMgMSAiLi4vLi4vLi4v
Li4vaW5jbHVkZS9mb250cy9mb250c3RydWN0LmgiIDEKIAogCiAKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9Gb250UHJvcCB7CiAgICBsb25n
ICAgICAgICBuYW1lOwogICAgbG9uZyAgICAgICAgdmFsdWU7CQkgCn0gICAgICAgICAgIEZvbnRQ
cm9wUmVjOwoKdHlwZWRlZiBzdHJ1Y3QgX0ZvbnRSZXNvbHV0aW9uIHsKICAgIHVuc2lnbmVkIHNo
b3J0IHhfcmVzb2x1dGlvbjsKICAgIHVuc2lnbmVkIHNob3J0IHlfcmVzb2x1dGlvbjsKICAgIHVu
c2lnbmVkIHNob3J0IHBvaW50X3NpemU7Cn0gICAgICAgICAgIEZvbnRSZXNvbHV0aW9uUmVjOwoK
dHlwZWRlZiBzdHJ1Y3QgX0V4dGVudEluZm8gewogICAgRHJhd0RpcmVjdGlvbiBkcmF3RGlyZWN0
aW9uOwogICAgaW50ICAgICAgICAgZm9udEFzY2VudDsKICAgIGludCAgICAgICAgIGZvbnREZXNj
ZW50OwogICAgaW50ICAgICAgICAgb3ZlcmFsbEFzY2VudDsKICAgIGludCAgICAgICAgIG92ZXJh
bGxEZXNjZW50OwogICAgaW50ICAgICAgICAgb3ZlcmFsbFdpZHRoOwogICAgaW50ICAgICAgICAg
b3ZlcmFsbExlZnQ7CiAgICBpbnQgICAgICAgICBvdmVyYWxsUmlnaHQ7Cn0gICAgICAgICAgIEV4
dGVudEluZm9SZWM7Cgp0eXBlZGVmIHN0cnVjdCBfQ2hhckluZm8gewogICAgeENoYXJJbmZvICAg
bWV0cmljczsJIAogICAgY2hhciAgICAgICAqYml0czsJCSAKfSAgICAgICAgICAgQ2hhckluZm9S
ZWM7CgogCgoKCgp0eXBlZGVmIHN0cnVjdCBfRm9udEluZm8gewogICAgdW5zaWduZWQgc2hvcnQg
Zmlyc3RDb2w7CiAgICB1bnNpZ25lZCBzaG9ydCBsYXN0Q29sOwogICAgdW5zaWduZWQgc2hvcnQg
Zmlyc3RSb3c7CiAgICB1bnNpZ25lZCBzaG9ydCBsYXN0Um93OwogICAgdW5zaWduZWQgc2hvcnQg
ZGVmYXVsdENoOwogICAgdW5zaWduZWQgaW50IG5vT3ZlcmxhcDoxOwogICAgdW5zaWduZWQgaW50
IHRlcm1pbmFsRm9udDoxOwogICAgdW5zaWduZWQgaW50IGNvbnN0YW50TWV0cmljczoxOwogICAg
dW5zaWduZWQgaW50IGNvbnN0YW50V2lkdGg6MTsKICAgIHVuc2lnbmVkIGludCBpbmtJbnNpZGU6
MTsKICAgIHVuc2lnbmVkIGludCBpbmtNZXRyaWNzOjE7CiAgICB1bnNpZ25lZCBpbnQgYWxsRXhp
c3Q6MTsKICAgIHVuc2lnbmVkIGludCBkcmF3RGlyZWN0aW9uOjI7CiAgICB1bnNpZ25lZCBpbnQg
Y2FjaGFibGU6MTsKICAgIHVuc2lnbmVkIGludCBhbmFtb3JwaGljOjE7CiAgICBzaG9ydCAgICAg
ICBtYXhPdmVybGFwOwogICAgc2hvcnQgICAgICAgcGFkOwogICAgeENoYXJJbmZvICAgbWF4Ym91
bmRzOwogICAgeENoYXJJbmZvICAgbWluYm91bmRzOwogICAgeENoYXJJbmZvICAgaW5rX21heGJv
dW5kczsKICAgIHhDaGFySW5mbyAgIGlua19taW5ib3VuZHM7CiAgICBzaG9ydCAgICAgICBmb250
QXNjZW50OwogICAgc2hvcnQgICAgICAgZm9udERlc2NlbnQ7CiAgICBpbnQgICAgICAgICBucHJv
cHM7CiAgICBGb250UHJvcFB0ciBwcm9wczsKICAgIGNoYXIgICAgICAgKmlzU3RyaW5nUHJvcDsK
fSAgICAgICAgICAgRm9udEluZm9SZWM7Cgp0eXBlZGVmIHN0cnVjdCBfRm9udCB7CiAgICBpbnQg
ICAgICAgICByZWZjbnQ7CiAgICBGb250SW5mb1JlYyBpbmZvOwogICAgY2hhciAgICAgICAgYml0
OwogICAgY2hhciAgICAgICAgYnl0ZTsKICAgIGNoYXIgICAgICAgIGdseXBoOwogICAgY2hhciAg
ICAgICAgc2NhbjsKICAgIGZzQml0bWFwRm9ybWF0IGZvcm1hdDsKICAgIGludCAgICAgICAgICgq
Z2V0X2dseXBocykgKEZvbnRQdHIgICAgICAgICAgLAoJCQkgICAgICAgdW5zaWduZWQgbG9uZyAg
ICAsCgkJCSAgICAgICB1bnNpZ25lZCBjaGFyICogICwKCQkJICAgICAgIEZvbnRFbmNvZGluZyAg
ICAgLAoJCQkgICAgICAgdW5zaWduZWQgbG9uZyAqICAsCgkJCSAgICAgICBDaGFySW5mb1B0ciAq
ICAgICk7CiAgICBpbnQgICAgICAgICAoKmdldF9tZXRyaWNzKSAoRm9udFB0ciAgICAgICAgICAs
CgkJCQl1bnNpZ25lZCBsb25nICAgICwKCQkJCXVuc2lnbmVkIGNoYXIgKiAgLAoJCQkJRm9udEVu
Y29kaW5nICAgICAsCgkJCQl1bnNpZ25lZCBsb25nICogICwKCQkJCXhDaGFySW5mbyAqKiAgICAg
KTsKICAgIHZvaWQgICAgICAgICgqdW5sb2FkX2ZvbnQpIChGb250UHRyICAgICAgICAgICk7CiAg
ICB2b2lkICAgICAgICAoKnVubG9hZF9nbHlwaHMpIChGb250UHRyICAgICAgICAgICk7CiAgICBG
b250UGF0aEVsZW1lbnRQdHIgZnBlOwogICAgcG9pbnRlciAgICAgc3ZyUHJpdmF0ZTsKICAgIHBv
aW50ZXIgICAgIGZvbnRQcml2YXRlOwogICAgcG9pbnRlciAgICAgZnBlUHJpdmF0ZTsKICAgIGlu
dAkJbWF4UHJpdmF0ZTsKICAgIHBvaW50ZXIJKmRldlByaXZhdGVzOwp9ICAgICAgICAgICBGb250
UmVjOwoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9Gb250TmFtZXMgewogICAgaW50ICAgICAgICAg
bm5hbWVzOwogICAgaW50ICAgICAgICAgc2l6ZTsKICAgIGludCAgICAgICAgKmxlbmd0aDsKICAg
IGNoYXIgICAgICAqKm5hbWVzOwp9ICAgICAgICAgICBGb250TmFtZXNSZWM7CgogCnR5cGVkZWYg
c3RydWN0IF9Gb250UGF0aEVsZW1lbnQgewogICAgaW50ICAgICAgICAgbmFtZV9sZW5ndGg7CiAg
ICBjaGFyICAgICAgICpuYW1lOwogICAgaW50ICAgICAgICAgdHlwZTsKICAgIGludCAgICAgICAg
IHJlZmNvdW50OwogICAgcG9pbnRlciAgICAgcHJpdmF0ZTsKfSAgICAgICAgICAgRm9udFBhdGhF
bGVtZW50UmVjOwoKdHlwZWRlZiBCb29sICgqTmFtZUNoZWNrRnVuYykgKGNoYXIgKm5hbWUpOwp0
eXBlZGVmIGludCAoKkluaXRGcGVGdW5jKSAoRm9udFBhdGhFbGVtZW50UHRyIGZwZSk7CnR5cGVk
ZWYgaW50ICgqRnJlZUZwZUZ1bmMpIChGb250UGF0aEVsZW1lbnRQdHIgZnBlKTsKdHlwZWRlZiBp
bnQgKCpSZXNldEZwZUZ1bmMpIChGb250UGF0aEVsZW1lbnRQdHIgZnBlKTsKdHlwZWRlZiBpbnQg
KCpPcGVuRm9udEZ1bmMpICggcG9pbnRlciBjbGllbnQsCgkJCSAgICAgIEZvbnRQYXRoRWxlbWVu
dFB0ciBmcGUsCgkJCSAgICAgIE1hc2sgZmxhZ3MsCgkJCSAgICAgIGNoYXIqIG5hbWUsCgkJCSAg
ICAgIGludCBuYW1lbGVuLAoJCQkgICAgICBmc0JpdG1hcEZvcm1hdCBmb3JtYXQsCgkJCSAgICAg
IGZzQml0bWFwRm9ybWF0TWFzayBmbWFzaywKCQkJICAgICAgWElEIGlkLAoJCQkgICAgICBGb250
UHRyKiBwRm9udCwKCQkJICAgICAgY2hhcioqIGFsaWFzTmFtZSwKCQkJICAgICAgRm9udFB0ciBu
b25fY2FjaGFibGVfZm9udCk7CnR5cGVkZWYgdm9pZCAoKkNsb3NlRm9udEZ1bmMpIChGb250UGF0
aEVsZW1lbnRQdHIgZnBlLCBGb250UHRyIHBGb250KTsKdHlwZWRlZiBpbnQgKCpMaXN0Rm9udHNG
dW5jKSAocG9pbnRlciBjbGllbnQsCgkJCSAgICAgIEZvbnRQYXRoRWxlbWVudFB0ciBmcGUsCgkJ
CSAgICAgIGNoYXIqIHBhdCwKCQkJICAgICAgaW50IGxlbiwKCQkJICAgICAgaW50IG1heCwKCQkJ
ICAgICAgRm9udE5hbWVzUHRyIG5hbWVzKTsKCnR5cGVkZWYgaW50ICgqU3RhcnRMZndpRnVuYykg
KHBvaW50ZXIgY2xpZW50LAoJCQkgICAgICBGb250UGF0aEVsZW1lbnRQdHIgZnBlLAoJCQkgICAg
ICBjaGFyKiBwYXQsCgkJCSAgICAgIGludCBsZW4sCgkJCSAgICAgIGludCBtYXgsCgkJCSAgICAg
IHBvaW50ZXIqIHByaXZhdGVwKTsKCnR5cGVkZWYgaW50ICgqTmV4dExmd2lGdW5jKSAocG9pbnRl
ciBjbGllbnQsCgkJCSAgICAgRm9udFBhdGhFbGVtZW50UHRyIGZwZSwKCQkJICAgICBjaGFyKiog
bmFtZSwKCQkJICAgICBpbnQqIG5hbWVsZW4sCgkJCSAgICAgRm9udEluZm9QdHIqIGluZm8sCgkJ
CSAgICAgaW50KiBudW1Gb250cywKCQkJICAgICBwb2ludGVyIHByaXZhdGUpOwoKdHlwZWRlZiBp
bnQgKCpXYWtldXBGcGVGdW5jKSAoRm9udFBhdGhFbGVtZW50UHRyIGZwZSwKCQkJICAgICAgdW5z
aWduZWQgbG9uZyogTGFzdFNlbGVjdE1hc2spOwoKdHlwZWRlZiB2b2lkICgqQ2xpZW50RGllZEZ1
bmMpIChwb2ludGVyIGNsaWVudCwKCQkJICAgICAgIEZvbnRQYXRoRWxlbWVudFB0ciBmcGUpOwoK
dHlwZWRlZiBpbnQgKCpMb2FkR2x5cGhzRnVuYykgKHBvaW50ZXIgY2xpZW50LAoJCQkgICAgICAg
Rm9udFB0ciBwZm9udCwKCQkJICAgICAgIEJvb2wgcmFuZ2VfZmxhZywKCQkJICAgICAgIHVuc2ln
bmVkIGludCBuY2hhcnMsCgkJCSAgICAgICBpbnQgaXRlbV9zaXplLAoJCQkgICAgICAgdW5zaWdu
ZWQgY2hhciogZGF0YSk7Cgp0eXBlZGVmIGludCAoKlN0YXJ0TGFGdW5jKSAocG9pbnRlciBjbGll
bnQsCgkJCSAgICBGb250UGF0aEVsZW1lbnRQdHIgZnBlLAoJCQkgICAgY2hhciogcGF0LAoJCQkg
ICAgaW50IGxlbiwKCQkJICAgIGludCBtYXgsCgkJCSAgICBwb2ludGVyKiBwcml2YXRlcCk7Cgp0
eXBlZGVmIGludCAoKk5leHRMYUZ1bmMpIChwb2ludGVyIGNsaWVudCwKCQkJICAgRm9udFBhdGhF
bGVtZW50UHRyIGZwZSwKCQkJICAgY2hhcioqIG5hbWVwLAoJCQkgICBpbnQqIG5hbWVsZW5wLAoJ
CQkgICBjaGFyKiogcmVzb2x2ZWRwLAoJCQkgICBpbnQqIHJlc29sdmVkbGVucCwKCQkJICAgcG9p
bnRlciBwcml2YXRlKTsKCnR5cGVkZWYgdm9pZCAoKlNldFBhdGhGdW5jKSh2b2lkKTsKCnR5cGVk
ZWYgc3RydWN0IF9GUEVGdW5jdGlvbnMgewogICAgTmFtZUNoZWNrRnVuYyAgICAgICBuYW1lX2No
ZWNrOwogICAgSW5pdEZwZUZ1bmMgCWluaXRfZnBlOwogICAgUmVzZXRGcGVGdW5jCXJlc2V0X2Zw
ZTsKICAgIEZyZWVGcGVGdW5jICAgICAgICAgZnJlZV9mcGU7CiAgICBPcGVuRm9udEZ1bmMgICAg
ICAgIG9wZW5fZm9udDsKICAgIENsb3NlRm9udEZ1bmMgICAgICAgY2xvc2VfZm9udDsKICAgIExp
c3RGb250c0Z1bmMgICAgICAgbGlzdF9mb250czsKICAgIFN0YXJ0TGFGdW5jICAgICAgICAgc3Rh
cnRfbGlzdF9mb250c19hbmRfYWxpYXNlczsKICAgIE5leHRMYUZ1bmMgICAgICAgICAgbGlzdF9u
ZXh0X2ZvbnRfb3JfYWxpYXM7CiAgICBTdGFydExmd2lGdW5jICAgICAgIHN0YXJ0X2xpc3RfZm9u
dHNfd2l0aF9pbmZvOwogICAgTmV4dExmd2lGdW5jICAgICAgICBsaXN0X25leHRfZm9udF93aXRo
X2luZm87CiAgICBXYWtldXBGcGVGdW5jICAgICAgIHdha2V1cF9mcGU7CiAgICBDbGllbnREaWVk
RnVuYyAJY2xpZW50X2RpZWQ7CgkJIAoKCgoKCgoKICAgIExvYWRHbHlwaHNGdW5jCWxvYWRfZ2x5
cGhzOwogICAgU2V0UGF0aEZ1bmMJCXNldF9wYXRoX2hvb2s7Cn0gRlBFRnVuY3Rpb25zUmVjLCBG
UEVGdW5jdGlvbnM7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CiMgMSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9mb250cy9mb250cHJvdG8uaCIgMQogCgogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKZXh0ZXJuIGludCBSZWdpc3RlckZQRUZ1bmN0aW9ucyAoIE5h
bWVDaGVja0Z1bmMgbmFtZV9mdW5jLCAKCQkJCSAgSW5pdEZwZUZ1bmMgaW5pdF9mdW5jLCAKCQkJ
CSAgRnJlZUZwZUZ1bmMgZnJlZV9mdW5jLCAKCQkJCSAgUmVzZXRGcGVGdW5jIHJlc2V0X2Z1bmMs
IAoJCQkJICBPcGVuRm9udEZ1bmMgb3Blbl9mdW5jLCAKCQkJCSAgQ2xvc2VGb250RnVuYyBjbG9z
ZV9mdW5jLCAKCQkJCSAgTGlzdEZvbnRzRnVuYyBsaXN0X2Z1bmMsIAoJCQkJICBTdGFydExmd2lG
dW5jIHN0YXJ0X2xmd2lfZnVuYywgCgkJCQkgIE5leHRMZndpRnVuYyBuZXh0X2xmd2lfZnVuYywg
CgkJCQkgIFdha2V1cEZwZUZ1bmMgd2FrZXVwX2Z1bmMsIAoJCQkJICBDbGllbnREaWVkRnVuYyBj
bGllbnRfZGllZCwgCgkJCQkgIExvYWRHbHlwaHNGdW5jIGxvYWRfZ2x5cGhzLCAKCQkJCSAgU3Rh
cnRMYUZ1bmMgc3RhcnRfbGlzdF9hbGlhc19mdW5jLCAKCQkJCSAgTmV4dExhRnVuYyBuZXh0X2xp
c3RfYWxpYXNfZnVuYywgCgkJCQkgIFNldFBhdGhGdW5jIHNldF9wYXRoX2Z1bmMpOwoKZXh0ZXJu
IGludCBHZXREZWZhdWx0UG9pbnRTaXplICggdm9pZCApOwoKZXh0ZXJuIGludCBpbml0X2ZzX2hh
bmRsZXJzICggRm9udFBhdGhFbGVtZW50UHRyIGZwZSwgCgkJCSAgICAgIEJsb2NrSGFuZGxlclBy
b2NQdHIgYmxvY2tfaGFuZGxlcik7CmV4dGVybiB2b2lkIHJlbW92ZV9mc19oYW5kbGVycyAoIEZv
bnRQYXRoRWxlbWVudFB0ciBmcGUsIAoJCQkJIEJsb2NrSGFuZGxlclByb2NQdHIgYmxvY2tfaGFu
ZGxlciwgCgkJCQkgQm9vbCBhbGwgKTsKCmV4dGVybiBpbnQgY2xpZW50X2F1dGhfZ2VuZXJhdGlv
biAoIENsaWVudFB0ciBjbGllbnQgKTsKCgoKCgoKZXh0ZXJuIHZvaWQgRGVsZXRlRm9udENsaWVu
dElEICggRm9udCBpZCApOwpleHRlcm4gRm9udCBHZXROZXdGb250Q2xpZW50SUQgKCB2b2lkICk7
CmV4dGVybiBpbnQgU3RvcmVGb250Q2xpZW50Rm9udCAoIEZvbnRQdHIgcGZvbnQsIEZvbnQgaWQg
KTsKCmV4dGVybiBCb29sIFhwQ2xpZW50SXNCaXRtYXBDbGllbnQgKCBDbGllbnRQdHIgY2xpZW50
ICk7CmV4dGVybiBCb29sIFhwQ2xpZW50SXNQcmludENsaWVudCggQ2xpZW50UHRyIGNsaWVudCwg
Rm9udFBhdGhFbGVtZW50UHRyIGZwZSApOwoKIApleHRlcm4gRm9udFB0ciAgQ3JlYXRlRm9udFJl
YyAodm9pZCk7CmV4dGVybiB2b2lkICBEZXN0cm95Rm9udFJlYyAoRm9udFB0ciBmb250KTsKZXh0
ZXJuIEJvb2wgICAgIF9Gb250U2V0TmV3UHJpdmF0ZSAoRm9udFB0ciAgICAgICAgICwKCQkJCSAg
ICBpbnQgICAgICAgICAgICAgLAoJCQkJICAgIHBvaW50ZXIgICAgICAgICApOwpleHRlcm4gaW50
ICAgICAgQWxsb2NhdGVGb250UHJpdmF0ZUluZGV4ICh2b2lkKTsKZXh0ZXJuIHZvaWQgUmVzZXRG
b250UHJpdmF0ZUluZGV4ICh2b2lkKTsKCiAKZXh0ZXJuIHZvaWQgVHlwZTFSZWdpc3RlckZvbnRG
aWxlRnVuY3Rpb25zKHZvaWQpOwpleHRlcm4gdm9pZCBDSURSZWdpc3RlckZvbnRGaWxlRnVuY3Rp
b25zKHZvaWQpOwoKIApleHRlcm4gdm9pZCBTcGVlZG9SZWdpc3RlckZvbnRGaWxlRnVuY3Rpb25z
KHZvaWQpOwoKIApleHRlcm4gdm9pZCBGcmVlVHlwZVJlZ2lzdGVyRm9udEZpbGVGdW5jdGlvbnMo
dm9pZCk7CgoKIyAyOTMgIi4uLy4uLy4uLy4uL2luY2x1ZGUvZm9udHMvZm9udHN0cnVjdC5oIiAy
CgoKCiMgMzIgIi4uLy4uL2luY2x1ZGUvZGl4Zm9udC5oIiAyCgoKCgp0eXBlZGVmIHN0cnVjdCBf
RElYRm9udFByb3AgKkRJWEZvbnRQcm9wUHRyOwoKZXh0ZXJuIEZQRUZ1bmN0aW9ucyAqZnBlX2Z1
bmN0aW9uczsKCmV4dGVybiBpbnQgRm9udFRvWEVycm9yKGludCAgKTsKCmV4dGVybiBCb29sIFNl
dERlZmF1bHRGb250KGNoYXIgKiAgKTsKCmV4dGVybiB2b2lkIFF1ZXVlRm9udFdha2V1cChGb250
UGF0aEVsZW1lbnRQdHIgICk7CgpleHRlcm4gdm9pZCBSZW1vdmVGb250V2FrZXVwKEZvbnRQYXRo
RWxlbWVudFB0ciAgKTsKCmV4dGVybiB2b2lkIEZvbnRXYWtldXAocG9pbnRlciAgLAoJCSAgICAg
ICBpbnQgICwKCQkgICAgICAgcG9pbnRlciAgKTsKCmV4dGVybiBpbnQgT3BlbkZvbnQoQ2xpZW50
UHRyICAsCgkJICAgIFhJRCAgLAoJCSAgICBNYXNrICAsCgkJICAgIHVuc2lnbmVkICAsCgkJICAg
IGNoYXIgKiAgKTsKCmV4dGVybiBpbnQgQ2xvc2VGb250KHBvaW50ZXIgICwKCQkgICAgIFhJRCAg
KTsKCnR5cGVkZWYgc3RydWN0IF94UXVlcnlGb250UmVwbHkgKnhRdWVyeUZvbnRSZXBseVB0cjsK
CmV4dGVybiB2b2lkIFF1ZXJ5Rm9udChGb250UHRyICAsCgkJICAgICAgeFF1ZXJ5Rm9udFJlcGx5
UHRyICAsCgkJICAgICAgaW50ICApOwoKZXh0ZXJuIGludCBMaXN0Rm9udHMoQ2xpZW50UHRyICAs
CgkJICAgICB1bnNpZ25lZCBjaGFyICogICwKCQkgICAgIHVuc2lnbmVkIGludCAgLAoJCSAgICAg
dW5zaWduZWQgaW50ICApOwoKaW50CmRvTGlzdEZvbnRzV2l0aEluZm8oQ2xpZW50UHRyICAsCgkJ
ICAgIExGV0ljbG9zdXJlUHRyICApOwoKZXh0ZXJuIGludCBkb1BvbHlUZXh0KENsaWVudFB0ciAg
LAoJCSAgICAgIFBUY2xvc3VyZVB0ciAgCik7CgpleHRlcm4gaW50IFBvbHlUZXh0KENsaWVudFB0
ciAgLAoJCSAgICBEcmF3YWJsZVB0ciAgLAoJCSAgICBHQ1B0ciAgLAoJCSAgICB1bnNpZ25lZCBj
aGFyICogICwKCQkgICAgdW5zaWduZWQgY2hhciAqICAsCgkJICAgIGludCAgLAoJCSAgICBpbnQg
ICwKCQkgICAgaW50ICAsCgkJICAgIFhJRCAgKTsKCmV4dGVybiBpbnQgZG9JbWFnZVRleHQoQ2xp
ZW50UHRyICAsCgkJICAgICAgIElUY2xvc3VyZVB0ciAgKTsKCmV4dGVybiBpbnQgSW1hZ2VUZXh0
KENsaWVudFB0ciAgLAoJCSAgICAgRHJhd2FibGVQdHIgICwKCQkgICAgIEdDUHRyICAsCgkJICAg
ICBpbnQgICwKCQkgICAgIHVuc2lnbmVkIGNoYXIgKiAgLAoJCSAgICAgaW50ICAsCgkJICAgICBp
bnQgICwKCQkgICAgIGludCAgLAoJCSAgICAgWElEICApOwoKZXh0ZXJuIGludCBTZXRGb250UGF0
aChDbGllbnRQdHIgICwKCQkgICAgICAgaW50ICAsCgkJICAgICAgIHVuc2lnbmVkIGNoYXIgKiAg
LAoJCSAgICAgICBpbnQgKiAgKTsKCmV4dGVybiBpbnQgU2V0RGVmYXVsdEZvbnRQYXRoKGNoYXIg
KiAgKTsKCmV4dGVybiB1bnNpZ25lZCBjaGFyICpHZXRGb250UGF0aChpbnQgKiAgLAoJCQkJICBp
bnQgKiAgKTsKCmV4dGVybiBpbnQgTG9hZEdseXBocyhDbGllbnRQdHIgICwKCQkgICAgICBGb250
UHRyICAsCgkJICAgICAgdW5zaWduZWQgICwKCQkgICAgICBpbnQgICwKCQkgICAgICB1bnNpZ25l
ZCBjaGFyICogICk7CgpleHRlcm4gdm9pZCBEZWxldGVDbGllbnRGb250U3R1ZmYoQ2xpZW50UHRy
ICApOwoKZXh0ZXJuIHZvaWQgSW5pdEZvbnRzKHZvaWQpOwoKZXh0ZXJuIGludCBHZXREZWZhdWx0
UG9pbnRTaXplKHZvaWQpOwoKZXh0ZXJuIHZvaWQgRnJlZUZvbnRzKHZvaWQpOwoKZXh0ZXJuIEZv
bnRQdHIgZmluZF9vbGRfZm9udChYSUQgICk7CgpleHRlcm4gRm9udCBHZXROZXdGb250Q2xpZW50
SUQodm9pZCk7CgpleHRlcm4gaW50IFN0b3JlRm9udENsaWVudEZvbnQoRm9udFB0ciAgLAoJCQkg
ICAgICAgRm9udCAgKTsKCmV4dGVybiB2b2lkIERlbGV0ZUZvbnRDbGllbnRJRChGb250ICApOwoK
CmV4dGVybiB2b2lkIEdldEdseXBocyhGb250UHRyICAgICAgLAoJCSAgICAgIHVuc2lnbmVkIGxv
bmcgICwKCQkgICAgICB1bnNpZ25lZCBjaGFyICogICwKCQkgICAgICBGb250RW5jb2RpbmcgICwK
CQkgICAgICB1bnNpZ25lZCBsb25nICogICwKCQkgICAgICBDaGFySW5mb1B0ciAqICApOwoKZXh0
ZXJuIHZvaWQgUXVlcnlHbHlwaEV4dGVudHMoRm9udFB0ciAgICAgICwKCQkJICAgICAgQ2hhcklu
Zm9QdHIgKiAgLAoJCQkgICAgICB1bnNpZ25lZCBsb25nICAsCgkJCSAgICAgIEV4dGVudEluZm9Q
dHIgICk7CgpleHRlcm4gQm9vbCBRdWVyeVRleHRFeHRlbnRzKEZvbnRQdHIgICAgICAsCgkJCSAg
ICAgdW5zaWduZWQgbG9uZyAgLAoJCQkgICAgIHVuc2lnbmVkIGNoYXIgKiAgLAoJCQkgICAgIEV4
dGVudEluZm9QdHIgICk7CgpleHRlcm4gQm9vbCBQYXJzZUdseXBoQ2FjaGluZ01vZGUoY2hhciAq
ICApOwoKZXh0ZXJuIHZvaWQgSW5pdEdseXBoQ2FjaGluZyh2b2lkKTsKCmV4dGVybiB2b2lkIFNl
dEdseXBoQ2FjaGluZ01vZGUoaW50ICApOwoKZXh0ZXJuIHZvaWQKUmVzZXRGb250UHJpdmF0ZUlu
ZGV4KHZvaWQpOwoKCiMgMjkgIi4uLy4uL2luY2x1ZGUvZGl4Zm9udHN0ci5oIiAyCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKIAoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgojIDMwICJzaGFkb3cuYyIgMgoKCiMgMSAiLi4vLi4vbWkvbWkuaCIgMQogCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgX21pRGFzaCAqbWlEYXNoUHRyOwoKCgogCgpleHRlcm4gdm9pZCBtaVBvbHlBcmMo
CgogICAgRHJhd2FibGVQdHIgICwKICAgIEdDUHRyICAsCiAgICBpbnQgICwKICAgIHhBcmMgKiAg
CgopOwoKIAoKZXh0ZXJuIFJlZ2lvblB0ciBtaUNvcHlBcmVhKAoKICAgIERyYXdhYmxlUHRyICAs
CiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQdHIgICwKICAgIGludCAgLAogICAgaW50ICAsCiAg
ICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBpbnQgIAoKKTsKCmV4dGVybiB2b2lk
IG1pT3BxU3RpcERyYXdhYmxlKAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBHQ1B0ciAgLAogICAg
UmVnaW9uUHRyICAsCiAgICBDQVJEMzIgICogICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBp
bnQgICwKICAgIGludCAgLAogICAgaW50ICAKCik7CgpleHRlcm4gUmVnaW9uUHRyIG1pQ29weVBs
YW5lKAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQdHIgICwK
ICAgIGludCAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAg
ICBpbnQgICwKICAgIHVuc2lnbmVkIGxvbmcgIAoKKTsKCmV4dGVybiB2b2lkIG1pR2V0SW1hZ2Uo
CgogICAgRHJhd2FibGVQdHIgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAg
IGludCAgLAogICAgdW5zaWduZWQgaW50ICAsCiAgICB1bnNpZ25lZCBsb25nICAsCiAgICBjaGFy
ICogIAoKKTsKCmV4dGVybiB2b2lkIG1pUHV0SW1hZ2UoCgogICAgRHJhd2FibGVQdHIgICwKICAg
IEdDUHRyICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAg
IGludCAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIGNoYXIgKiAgCgopOwoKIAoKZXh0ZXJu
IHZvaWQgbWlDbGlwTm90aWZ5KAoKICAgIHZvaWQgKCogICkoCgoJV2luZG93UHRyICAsCglpbnQg
ICwKCWludCAgCgoJKQoKKTsKCiAKCmV4dGVybiB2b2lkIG1pUmVjb2xvckN1cnNvcigKCiAgICBT
Y3JlZW5QdHIgICwKICAgIEN1cnNvclB0ciAgLAogICAgQm9vbCAgCgopOwoKIAoKZXh0ZXJuIG1p
RGFzaFB0ciBtaURhc2hMaW5lKAoKICAgIGludCAgLAogICAgRERYUG9pbnRQdHIgICwKICAgIHVu
c2lnbmVkIGludCAgLAogICAgdW5zaWduZWQgY2hhciAqICAsCiAgICB1bnNpZ25lZCBpbnQgICwK
ICAgIGludCAqICAKCik7CgpleHRlcm4gdm9pZCBtaVN0ZXBEYXNoKAoKICAgIGludCAgLAogICAg
aW50ICogICwKICAgIHVuc2lnbmVkIGNoYXIgKiAgLAogICAgaW50ICAsCiAgICBpbnQgKiAgCgop
OwoKIAoKCgoKCgpleHRlcm4gQm9vbCBtaWVxSW5pdCgKCiAgICBEZXZpY2VQdHIgICwKICAgIERl
dmljZVB0ciAgCgopOwoKZXh0ZXJuIHZvaWQgbWllcUVucXVldWUoCgogICAgeEV2ZW50UHRyICAK
Cik7CgpleHRlcm4gdm9pZCBtaWVxU3dpdGNoU2NyZWVuKAoKICAgIFNjcmVlblB0ciAgLAogICAg
Qm9vbCAgCgopOwoKZXh0ZXJuIGludCBtaWVxUHJvY2Vzc0lucHV0RXZlbnRzKAoKICAgIHZvaWQK
Cik7CgogCgpleHRlcm4gUmVnaW9uUHRyIG1pSGFuZGxlRXhwb3N1cmVzKAoKICAgIERyYXdhYmxl
UHRyICAsCiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQdHIgICwKICAgIGludCAgLAogICAgaW50
ICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIHVuc2ln
bmVkIGxvbmcgIAoKKTsKCmV4dGVybiB2b2lkIG1pU2VuZEdyYXBoaWNzRXhwb3NlKAoKICAgIENs
aWVudFB0ciAgLAogICAgUmVnaW9uUHRyICAsCiAgICBYSUQgICwKICAgIGludCAgLAogICAgaW50
ICAKCik7CgpleHRlcm4gdm9pZCBtaVNlbmRFeHBvc3VyZXMoCgogICAgV2luZG93UHRyICAsCiAg
ICBSZWdpb25QdHIgICwKICAgIGludCAgLAogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBtaVdp
bmRvd0V4cG9zdXJlcygKCiAgICBXaW5kb3dQdHIgICwKICAgIFJlZ2lvblB0ciAgLAogICAgUmVn
aW9uUHRyICAKCik7CgpleHRlcm4gdm9pZCBtaVBhaW50V2luZG93KAoKICAgIFdpbmRvd1B0ciAg
LAogICAgUmVnaW9uUHRyICAsCiAgICBpbnQgIAoKKTsKCmV4dGVybiB2b2lkIG1pQ2xlYXJEcmF3
YWJsZSgKCiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQdHIgIAoKKTsKCiAKCmV4dGVybiB2b2lk
IG1pUG9seUZpbGxSZWN0KAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBHQ1B0ciAgLAogICAgaW50
ICAsCiAgICB4UmVjdGFuZ2xlICogIAoKKTsKCiAKCmV4dGVybiB2b2lkIG1pUG9seUdseXBoQmx0
KAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBHQ1B0ciAgLAogICAgaW50ICAsCiAgICBpbnQgICwK
ICAgIHVuc2lnbmVkIGludCAgLAogICAgQ2hhckluZm9QdHIgKiAgLAogICAgcG9pbnRlciAgCgop
OwoKZXh0ZXJuIHZvaWQgbWlJbWFnZUdseXBoQmx0KAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBH
Q1B0ciAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgQ2hh
ckluZm9QdHIgKiAgLAogICAgcG9pbnRlciAgCgopOwoKIAoKZXh0ZXJuIHZvaWQgbWlGaWxsUG9s
eWdvbigKCiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQdHIgICwKICAgIGludCAgLAogICAgaW50
ICAsCiAgICBpbnQgICwKICAgIEREWFBvaW50UHRyICAKCik7CgogCgpleHRlcm4gQm9vbCBtaUZp
bGxDb252ZXhQb2x5KAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBHQ1B0ciAgLAogICAgaW50ICAs
CiAgICBERFhQb2ludFB0ciAgCgopOwoKIAoKZXh0ZXJuIEJvb2wgbWlGaWxsR2VuZXJhbFBvbHko
CgogICAgRHJhd2FibGVQdHIgICwKICAgIEdDUHRyICAsCiAgICBpbnQgICwKICAgIEREWFBvaW50
UHRyICAKCik7CgogCgpleHRlcm4gdm9pZCBtaVBvbHlQb2ludCgKCiAgICBEcmF3YWJsZVB0ciAg
LAogICAgR0NQdHIgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICB4UG9pbnQgKiAgCgopOwoK
IAoKZXh0ZXJuIHZvaWQgbWlQb2x5UmVjdGFuZ2xlKAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBH
Q1B0ciAgLAogICAgaW50ICAsCiAgICB4UmVjdGFuZ2xlICogIAoKKTsKCiAKCmV4dGVybiB2b2lk
IG1pUG9seVNlZ21lbnQoCgogICAgRHJhd2FibGVQdHIgICwKICAgIEdDUHRyICAsCiAgICBpbnQg
ICwKICAgIHhTZWdtZW50ICogIAoKKTsKCiAKCmV4dGVybiBpbnQgbWlQb2x5VGV4dCgKCiAgICBE
cmF3YWJsZVB0ciAgLAogICAgR0NQdHIgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBpbnQg
ICwKICAgIGNoYXIgKiAgLAogICAgRm9udEVuY29kaW5nICAKCik7CgpleHRlcm4gaW50IG1pUG9s
eVRleHQ4KAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBHQ1B0ciAgLAogICAgaW50ICAsCiAgICBp
bnQgICwKICAgIGludCAgLAogICAgY2hhciAqICAKCik7CgpleHRlcm4gaW50IG1pUG9seVRleHQx
NigKCiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQdHIgICwKICAgIGludCAgLAogICAgaW50ICAs
CiAgICBpbnQgICwKICAgIHVuc2lnbmVkIHNob3J0ICogIAoKKTsKCmV4dGVybiBpbnQgbWlJbWFn
ZVRleHQoCgogICAgRHJhd2FibGVQdHIgICwKICAgIEdDUHRyICAsCiAgICBpbnQgICwKICAgIGlu
dCAgLAogICAgaW50ICAsCiAgICBjaGFyICogICwKICAgIEZvbnRFbmNvZGluZyAgCgopOwoKZXh0
ZXJuIHZvaWQgbWlJbWFnZVRleHQ4KAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBHQ1B0ciAgLAog
ICAgaW50ICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgY2hhciAqICAKCik7CgpleHRlcm4g
dm9pZCBtaUltYWdlVGV4dDE2KAoKICAgIERyYXdhYmxlUHRyICAsCiAgICBHQ1B0ciAgLAogICAg
aW50ICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgdW5zaWduZWQgc2hvcnQgKiAgCgopOwoK
IAoKZXh0ZXJuIHZvaWQgbWlQdXNoUGl4ZWxzKAoKICAgIEdDUHRyICAsCiAgICBQaXhtYXBQdHIg
ICwKICAgIERyYXdhYmxlUHRyICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAg
ICBpbnQgIAoKKTsKCiAKCiAKCmV4dGVybiBCb29sIG1pUmVjdEFsbG9jKAoKICAgIFJlZ2lvblB0
ciAgLAogICAgaW50ICAKCik7CgpleHRlcm4gdm9pZCBtaVNldEV4dGVudHMoCgogICAgUmVnaW9u
UHRyICAKCik7CgpleHRlcm4gaW50IG1pRmluZE1heEJhbmQoCgogICAgUmVnaW9uUHRyICAKCik7
CgoKCgoKCgoKCiAKCmV4dGVybiBCb29sIG1pTW9kaWZ5UGl4bWFwSGVhZGVyKAoKICAgIFBpeG1h
cFB0ciAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBp
bnQgICwKICAgIHBvaW50ZXIgIAoKKTsKCmV4dGVybiBCb29sIG1pQ2xvc2VTY3JlZW4oCgogICAg
aW50ICAsCiAgICBTY3JlZW5QdHIgIAoKKTsKCmV4dGVybiBCb29sIG1pQ3JlYXRlU2NyZWVuUmVz
b3VyY2VzKAoKICAgIFNjcmVlblB0ciAgCgopOwoKZXh0ZXJuIEJvb2wgbWlTY3JlZW5EZXZQcml2
YXRlSW5pdCgKCiAgICBTY3JlZW5QdHIgICwKICAgIGludCAgLAogICAgcG9pbnRlciAgCgopOwoK
ZXh0ZXJuIEJvb2wgbWlTY3JlZW5Jbml0KAoKICAgIFNjcmVlblB0ciAgLAogICAgcG9pbnRlciAg
LAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBpbnQgICwK
ICAgIGludCAgLAogICAgaW50ICAsCiAgICBEZXB0aFB0ciAgLAogICAgVmlzdWFsSUQgICwKICAg
IGludCAgLAogICAgVmlzdWFsUHRyICAKCik7CgpleHRlcm4gaW50IG1pQWxsb2NhdGVHQ1ByaXZh
dGVJbmRleCgKCiAgICB2b2lkCgopOwoKZXh0ZXJuIFBpeG1hcFB0ciBtaUdldFNjcmVlblBpeG1h
cCgKCiAgICBTY3JlZW5QdHIgcFNjcmVlbgoKKTsKCmV4dGVybiB2b2lkIG1pU2V0U2NyZWVuUGl4
bWFwKAoKICAgIFBpeG1hcFB0ciBwUGl4CgopOwoKIAoKZXh0ZXJuIGludCBtaVNoYXBlZFdpbmRv
d0luKAoKICAgIFNjcmVlblB0ciAgLAogICAgUmVnaW9uUHRyICAsCiAgICBSZWdpb25QdHIgICwK
ICAgIEJveFB0ciAgLAogICAgaW50ICAsCiAgICBpbnQgIAoKKTsKCmV4dGVybiBpbnQgbWlWYWxp
ZGF0ZVRyZWUoCgogICAgV2luZG93UHRyICAsCiAgICBXaW5kb3dQdHIgICwKICAgIFZUS2luZCAg
CgopOwoKZXh0ZXJuIHZvaWQgbWlXaWRlTGluZSgKCiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQ
dHIgICwKICAgIGludCAgLAogICAgaW50ICAsCiAgICBERFhQb2ludFB0ciAgCgopOwoKZXh0ZXJu
IHZvaWQgbWlXaWRlRGFzaCgKCiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQdHIgICwKICAgIGlu
dCAgLAogICAgaW50ICAsCiAgICBERFhQb2ludFB0ciAgCgopOwoKZXh0ZXJuIHZvaWQgbWlNaXRl
cigKCiAgICB2b2lkCgopOwoKZXh0ZXJuIHZvaWQgbWlOb3RNaXRlcigKCiAgICB2b2lkCgopOwoK
IAoKZXh0ZXJuIHZvaWQgbWlDbGVhclRvQmFja2dyb3VuZCgKCiAgICBXaW5kb3dQdHIgICwKICAg
IGludCAgLAogICAgaW50ICAsCiAgICBpbnQgICwKICAgIGludCAgLAogICAgQm9vbCAgCgopOwoK
ZXh0ZXJuIEJvb2wgbWlDaGFuZ2VTYXZlVW5kZXIoCgogICAgV2luZG93UHRyICAsCiAgICBXaW5k
b3dQdHIgIAoKKTsKCmV4dGVybiB2b2lkIG1pUG9zdENoYW5nZVNhdmVVbmRlcigKCiAgICBXaW5k
b3dQdHIgICwKICAgIFdpbmRvd1B0ciAgCgopOwoKZXh0ZXJuIHZvaWQgbWlNYXJrV2luZG93KAoK
ICAgIFdpbmRvd1B0ciAgCgopOwoKZXh0ZXJuIEJvb2wgbWlNYXJrT3ZlcmxhcHBlZFdpbmRvd3Mo
CgogICAgV2luZG93UHRyICAsCiAgICBXaW5kb3dQdHIgICwKICAgIFdpbmRvd1B0ciAqICAKCik7
CgpleHRlcm4gdm9pZCBtaUhhbmRsZVZhbGlkYXRlRXhwb3N1cmVzKAoKICAgIFdpbmRvd1B0ciAg
CgopOwoKZXh0ZXJuIHZvaWQgbWlNb3ZlV2luZG93KAoKICAgIFdpbmRvd1B0ciAgLAogICAgaW50
ICAsCiAgICBpbnQgICwKICAgIFdpbmRvd1B0ciAgLAogICAgVlRLaW5kICAKCik7CgpleHRlcm4g
dm9pZCBtaVNsaWRlQW5kU2l6ZVdpbmRvdygKCiAgICBXaW5kb3dQdHIgICwKICAgIGludCAgLAog
ICAgaW50ICAsCiAgICB1bnNpZ25lZCBpbnQgICwKICAgIHVuc2lnbmVkIGludCAgLAogICAgV2lu
ZG93UHRyICAKCik7CgpleHRlcm4gV2luZG93UHRyIG1pR2V0TGF5ZXJXaW5kb3coCgogICAgV2lu
ZG93UHRyICAKCik7CgpleHRlcm4gdm9pZCBtaVNldFNoYXBlKAoKICAgIFdpbmRvd1B0ciAgCgop
OwoKZXh0ZXJuIHZvaWQgbWlDaGFuZ2VCb3JkZXJXaWR0aCgKCiAgICBXaW5kb3dQdHIgICwKICAg
IHVuc2lnbmVkIGludCAgCgopOwoKZXh0ZXJuIHZvaWQgbWlNYXJrVW5yZWFsaXplZFdpbmRvdygK
CiAgICBXaW5kb3dQdHIgICwKICAgIFdpbmRvd1B0ciAgLAogICAgQm9vbCAgCgopOwoKZXh0ZXJu
IHZvaWQgbWlTZWdyZWdhdGVDaGlsZHJlbihXaW5kb3dQdHIgcFdpbiwgUmVnaW9uUHRyIHBSZWcs
IGludCBkZXB0aCk7CgogCgpleHRlcm4gdm9pZCBtaVplcm9Qb2x5QXJjKAoKICAgIERyYXdhYmxl
UHRyICAsCiAgICBHQ1B0ciAgLAogICAgaW50ICAsCiAgICB4QXJjICogIAoKKTsKCiAKCmV4dGVy
biB2b2lkIG1pWmVyb0xpbmUoCgogICAgRHJhd2FibGVQdHIgICwKICAgIEdDUHRyICAsCiAgICBp
bnQgICwKICAgIGludCAgLAogICAgRERYUG9pbnRSZWMgKiAgCgopOwoKZXh0ZXJuIHZvaWQgbWla
ZXJvRGFzaExpbmUoCgogICAgRHJhd2FibGVQdHIgICwKICAgIEdDUHRyICAsCiAgICBpbnQgICwK
ICAgIGludCAgLAogICAgRERYUG9pbnRSZWMgKiAgCgopOwoKZXh0ZXJuIHZvaWQgbWlQb2x5Rmls
bEFyYygKCiAgICBEcmF3YWJsZVB0ciAgLAogICAgR0NQdHIgICwKICAgIGludCAgLAogICAgeEFy
YyAqICAKCik7CgoKIyAzMiAic2hhZG93LmMiIDIKCgoKIyAxICIuLi8uLi9pbmNsdWRlL2djc3Ry
dWN0LmgiIDEKIAogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKCiAKCgoKdHlwZWRlZiBzdHJ1Y3QgX0dDRnVuY3MgewogICAgdm9pZAkoKiBW
YWxpZGF0ZUdDKSgKCgkJR0NQdHIgICwKCQl1bnNpZ25lZCBsb25nICAsCgkJRHJhd2FibGVQdHIg
IAoKKTsKCiAgICB2b2lkCSgqIENoYW5nZUdDKSgKCgkJR0NQdHIgICwKCQl1bnNpZ25lZCBsb25n
ICAKCik7CgogICAgdm9pZAkoKiBDb3B5R0MpKAoKCQlHQ1B0ciAgLAoJCXVuc2lnbmVkIGxvbmcg
ICwKCQlHQ1B0ciAgCgopOwoKICAgIHZvaWQJKCogRGVzdHJveUdDKSgKCgkJR0NQdHIgIAoKKTsK
CiAgICB2b2lkCSgqIENoYW5nZUNsaXApKAoKCQlHQ1B0ciAgLAoJCWludCAgLAoJCXBvaW50ZXIg
ICwKCQlpbnQgIAoKKTsKCiAgICB2b2lkCSgqIERlc3Ryb3lDbGlwKSgKCgkJR0NQdHIgIAoKKTsK
CiAgICB2b2lkCSgqIENvcHlDbGlwKSgKCgkJR0NQdHIgICwKCQlHQ1B0ciAgCgopOwogICAgRGV2
VW5pb24JZGV2UHJpdmF0ZTsKfSBHQ0Z1bmNzOwoKIAoKCgp0eXBlZGVmIHN0cnVjdCBfR0NPcHMg
ewogICAgdm9pZAkoKiBGaWxsU3BhbnMpKAoKCQlEcmF3YWJsZVB0ciAgLAoJCUdDUHRyICAsCgkJ
aW50ICAsCgkJRERYUG9pbnRQdHIgICwKCQlpbnQgKiAgLAoJCWludCAgCgopOwoKICAgIHZvaWQJ
KCogU2V0U3BhbnMpKAoKCQlEcmF3YWJsZVB0ciAgLAoJCUdDUHRyICAsCgkJY2hhciAqICAsCgkJ
RERYUG9pbnRQdHIgICwKCQlpbnQgKiAgLAoJCWludCAgLAoJCWludCAgCgopOwoKICAgIHZvaWQJ
KCogUHV0SW1hZ2UpKAoKCQlEcmF3YWJsZVB0ciAgLAoJCUdDUHRyICAsCgkJaW50ICAsCgkJaW50
ICAsCgkJaW50ICAsCgkJaW50ICAsCgkJaW50ICAsCgkJaW50ICAsCgkJaW50ICAsCgkJY2hhciAq
ICAKCik7CgogICAgUmVnaW9uUHRyCSgqIENvcHlBcmVhKSgKCgkJRHJhd2FibGVQdHIgICwKCQlE
cmF3YWJsZVB0ciAgLAoJCUdDUHRyICAsCgkJaW50ICAsCgkJaW50ICAsCgkJaW50ICAsCgkJaW50
ICAsCgkJaW50ICAsCgkJaW50ICAKCik7CgogICAgUmVnaW9uUHRyCSgqIENvcHlQbGFuZSkoCgoJ
CURyYXdhYmxlUHRyICAsCgkJRHJhd2FibGVQdHIgICwKCQlHQ1B0ciAgLAoJCWludCAgLAoJCWlu
dCAgLAoJCWludCAgLAoJCWludCAgLAoJCWludCAgLAoJCWludCAgLAoJCXVuc2lnbmVkIGxvbmcg
IAoKKTsKICAgIHZvaWQJKCogUG9seVBvaW50KSgKCgkJRHJhd2FibGVQdHIgICwKCQlHQ1B0ciAg
LAoJCWludCAgLAoJCWludCAgLAoJCUREWFBvaW50UHRyICAKCik7CgogICAgdm9pZAkoKiBQb2x5
bGluZXMpKAoKCQlEcmF3YWJsZVB0ciAgLAoJCUdDUHRyICAsCgkJaW50ICAsCgkJaW50ICAsCgkJ
RERYUG9pbnRQdHIgIAoKKTsKCiAgICB2b2lkCSgqIFBvbHlTZWdtZW50KSgKCgkJRHJhd2FibGVQ
dHIgICwKCQlHQ1B0ciAgLAoJCWludCAgLAoJCXhTZWdtZW50ICogIAoKKTsKCiAgICB2b2lkCSgq
IFBvbHlSZWN0YW5nbGUpKAoKCQlEcmF3YWJsZVB0ciAgLAoJCUdDUHRyICAsCgkJaW50ICAsCgkJ
eFJlY3RhbmdsZSAqICAKCik7CgogICAgdm9pZAkoKiBQb2x5QXJjKSgKCgkJRHJhd2FibGVQdHIg
ICwKCQlHQ1B0ciAgLAoJCWludCAgLAoJCXhBcmMgKiAgCgopOwoKICAgIHZvaWQJKCogRmlsbFBv
bHlnb24pKAoKCQlEcmF3YWJsZVB0ciAgLAoJCUdDUHRyICAsCgkJaW50ICAsCgkJaW50ICAsCgkJ
aW50ICAsCgkJRERYUG9pbnRQdHIgIAoKKTsKCiAgICB2b2lkCSgqIFBvbHlGaWxsUmVjdCkoCgoJ
CURyYXdhYmxlUHRyICAsCgkJR0NQdHIgICwKCQlpbnQgICwKCQl4UmVjdGFuZ2xlICogIAoKKTsK
CiAgICB2b2lkCSgqIFBvbHlGaWxsQXJjKSgKCgkJRHJhd2FibGVQdHIgICwKCQlHQ1B0ciAgLAoJ
CWludCAgLAoJCXhBcmMgKiAgCgopOwoKICAgIGludAkJKCogUG9seVRleHQ4KSgKCgkJRHJhd2Fi
bGVQdHIgICwKCQlHQ1B0ciAgLAoJCWludCAgLAoJCWludCAgLAoJCWludCAgLAoJCWNoYXIgKiAg
CgopOwoKICAgIGludAkJKCogUG9seVRleHQxNikoCgoJCURyYXdhYmxlUHRyICAsCgkJR0NQdHIg
ICwKCQlpbnQgICwKCQlpbnQgICwKCQlpbnQgICwKCQl1bnNpZ25lZCBzaG9ydCAqICAKCik7Cgog
ICAgdm9pZAkoKiBJbWFnZVRleHQ4KSgKCgkJRHJhd2FibGVQdHIgICwKCQlHQ1B0ciAgLAoJCWlu
dCAgLAoJCWludCAgLAoJCWludCAgLAoJCWNoYXIgKiAgCgopOwoKICAgIHZvaWQJKCogSW1hZ2VU
ZXh0MTYpKAoKCQlEcmF3YWJsZVB0ciAgLAoJCUdDUHRyICAsCgkJaW50ICAsCgkJaW50ICAsCgkJ
aW50ICAsCgkJdW5zaWduZWQgc2hvcnQgKiAgCgopOwoKICAgIHZvaWQJKCogSW1hZ2VHbHlwaEJs
dCkoCgoJCURyYXdhYmxlUHRyICAsCgkJR0NQdHIgICwKCQlpbnQgICwKCQlpbnQgICwKCQl1bnNp
Z25lZCBpbnQgICwKCQlDaGFySW5mb1B0ciAqICAsCgkJcG9pbnRlciAgCgopOwoKICAgIHZvaWQJ
KCogUG9seUdseXBoQmx0KSgKCgkJRHJhd2FibGVQdHIgICwKCQlHQ1B0ciAgLAoJCWludCAgLAoJ
CWludCAgLAoJCXVuc2lnbmVkIGludCAgLAoJCUNoYXJJbmZvUHRyICogICwKCQlwb2ludGVyICAK
Cik7CgogICAgdm9pZAkoKiBQdXNoUGl4ZWxzKSgKCgkJR0NQdHIgICwKCQlQaXhtYXBQdHIgICwK
CQlEcmF3YWJsZVB0ciAgLAoJCWludCAgLAoJCWludCAgLAoJCWludCAgLAoJCWludCAgCgopOwoK
CgoKCiAgICBEZXZVbmlvbglkZXZQcml2YXRlOwp9IEdDT3BzOwoKIAoKCnR5cGVkZWYgc3RydWN0
IF9HQyB7CiAgICBTY3JlZW5QdHIJCXBTY3JlZW47CQkKICAgIHVuc2lnbmVkIGNoYXIJZGVwdGg7
ICAgIAogICAgdW5zaWduZWQgY2hhcglhbHU7CiAgICB1bnNpZ25lZCBzaG9ydAlsaW5lV2lkdGg7
ICAgICAgICAgIAogICAgdW5zaWduZWQgc2hvcnQJZGFzaE9mZnNldDsKICAgIHVuc2lnbmVkIHNo
b3J0CW51bUluRGFzaExpc3Q7CiAgICB1bnNpZ25lZCBjaGFyCSpkYXNoOwogICAgdW5zaWduZWQg
aW50CWxpbmVTdHlsZSA6IDI7CiAgICB1bnNpZ25lZCBpbnQJY2FwU3R5bGUgOiAyOwogICAgdW5z
aWduZWQgaW50CWpvaW5TdHlsZSA6IDI7CiAgICB1bnNpZ25lZCBpbnQJZmlsbFN0eWxlIDogMjsK
ICAgIHVuc2lnbmVkIGludAlmaWxsUnVsZSA6IDE7CiAgICB1bnNpZ25lZCBpbnQgCWFyY01vZGUg
OiAxOwogICAgdW5zaWduZWQgaW50CXN1YldpbmRvd01vZGUgOiAxOwogICAgdW5zaWduZWQgaW50
CWdyYXBoaWNzRXhwb3N1cmVzIDogMTsKICAgIHVuc2lnbmVkIGludAljbGllbnRDbGlwVHlwZSA6
IDI7ICAKICAgIHVuc2lnbmVkIGludAltaVRyYW5zbGF0ZToxOyAgCiAgICB1bnNpZ25lZCBpbnQJ
dGlsZUlzUGl4ZWw6MTsgIAogICAgdW5zaWduZWQgaW50CWZFeHBvc2U6MTsgICAgICAKICAgIHVu
c2lnbmVkIGludAlmcmVlQ29tcENsaXA6MTsgICAKICAgIHVuc2lnbmVkIGludAl1bnVzZWQ6MTQ7
ICAKICAgIHVuc2lnbmVkIGxvbmcJcGxhbmVtYXNrOwogICAgdW5zaWduZWQgbG9uZwlmZ1BpeGVs
OwogICAgdW5zaWduZWQgbG9uZwliZ1BpeGVsOwogICAgIAoKCgogICAgUGl4VW5pb24JCXRpbGU7
CiAgICBQaXhtYXBQdHIJCXN0aXBwbGU7CiAgICBERFhQb2ludFJlYwkJcGF0T3JnOwkJIAogICAg
c3RydWN0IF9Gb250CSpmb250OwogICAgRERYUG9pbnRSZWMJCWNsaXBPcmc7CiAgICBERFhQb2lu
dFJlYwkJbGFzdFdpbk9yZzsJIAogICAgcG9pbnRlcgkJY2xpZW50Q2xpcDsKICAgIHVuc2lnbmVk
IGxvbmcJc3RhdGVDaGFuZ2VzOwkgCiAgICB1bnNpZ25lZCBsb25nICAgICAgIHNlcmlhbE51bWJl
cjsKICAgIEdDRnVuY3MJCSpmdW5jczsKICAgIEdDT3BzCQkqb3BzOwogICAgRGV2VW5pb24JCSpk
ZXZQcml2YXRlczsKICAgICAKCgoKCiAgICBQaXhtYXBQdHIJCXBSb3RhdGVkUGl4bWFwOyAgCiAg
ICBSZWdpb25QdHIJCXBDb21wb3NpdGVDbGlwOwogICAgIAp9IEdDOwoKCiMgMzUgInNoYWRvdy5j
IiAyCgojIDEgInNoYWRvdy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAxICIu
Li8uLi9yZW5kZXIvcGljdHVyZXN0ci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
IyAxICIuLi8uLi8uLi8uLi9pbmNsdWRlL2V4dGVuc2lvbnMvcmVuZGVycHJvdG8uaCIgMQogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9leHRlbnNp
b25zL3JlbmRlci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdHlwZWRlZiB1bnNp
Z25lZCBsb25nCUdseXBoOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcJR2x5cGhTZXQ7CnR5cGVkZWYg
dW5zaWduZWQgbG9uZwlQaWN0dXJlOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcJUGljdEZvcm1hdDsK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIyAyOSAiLi4vLi4vLi4vLi4vaW5jbHVkZS9leHRlbnNp
b25zL3JlbmRlcnByb3RvLmgiIDIKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgp0eXBlZGVmIHN0
cnVjdCB7CiAgICBDQVJEMTYgIHJlZCAgOwogICAgQ0FSRDE2ICByZWRNYXNrICA7CiAgICBDQVJE
MTYgIGdyZWVuICA7CiAgICBDQVJEMTYgIGdyZWVuTWFzayAgOwogICAgQ0FSRDE2ICBibHVlICA7
CiAgICBDQVJEMTYgIGJsdWVNYXNrICA7CiAgICBDQVJEMTYgIGFscGhhICA7CiAgICBDQVJEMTYg
IGFscGhhTWFzayAgOwp9IHhEaXJlY3RGb3JtYXQ7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIENB
UkQzMiAJaWQgIDsKICAgIENBUkQ4CXR5cGU7CiAgICBDQVJEOAlkZXB0aDsKICAgIENBUkQxNglw
YWQxICA7CiAgICB4RGlyZWN0Rm9ybWF0ICAgZGlyZWN0OwogICAgQ0FSRDMyIAljb2xvcm1hcDsK
fSB4UGljdEZvcm1JbmZvOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEMzIgCXZpc3VhbDsK
ICAgIENBUkQzMiAJZm9ybWF0Owp9IHhQaWN0VmlzdWFsOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAg
ICBDQVJEOAlkZXB0aDsKICAgIENBUkQ4CXBhZDE7CiAgICBDQVJEMTYJblBpY3RWaXN1YWxzICA7
CiAgICBDQVJEMzIJcGFkMiAgOwp9IHhQaWN0RGVwdGg7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAg
IENBUkQzMgluRGVwdGggIDsKICAgIENBUkQzMiAJZmFsbGJhY2sgIDsKfSB4UGljdFNjcmVlbjsK
CgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDMyCXBpeGVsICA7CiAgICBDQVJEMTYJcmVkICA7
CiAgICBDQVJEMTYJZ3JlZW4gIDsKICAgIENBUkQxNglibHVlICA7CiAgICBDQVJEMTYJYWxwaGEg
IDsKfSB4SW5kZXhWYWx1ZTsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDE2CXJlZCAgOwog
ICAgQ0FSRDE2CWdyZWVuICA7CiAgICBDQVJEMTYJYmx1ZSAgOwogICAgQ0FSRDE2CWFscGhhICA7
Cn0geFJlbmRlckNvbG9yOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBJTlQzMiAJeCAgOwogICAg
SU5UMzIgCXkgIDsKfSB4UG9pbnRGaXhlZDsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgeFBvaW50
Rml4ZWQJcDEsIHAyLCBwMzsKfSB4VHJpYW5nbGU7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIENB
UkQxNiAgd2lkdGggIDsKICAgIENBUkQxNiAgaGVpZ2h0ICA7CiAgICBJTlQxNiAgIHggIDsKICAg
IElOVDE2ICAgeSAgOwogICAgSU5UMTYgICB4T2ZmICA7CiAgICBJTlQxNiAgIHlPZmYgIDsKfSB4
R2x5cGhJbmZvOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCAgIGxlbjsKICAgIENBUkQ4
ICAgcGFkMTsKICAgIENBUkQxNiAgcGFkMjsKICAgIElOVDE2ICAgZGVsdGF4OwogICAgSU5UMTYg
ICBkZWx0YXk7Cn0geEdseXBoRWx0OwoKCgogCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDgg
ICByZXFUeXBlOwogICAgQ0FSRDggICByZW5kZXJSZXFUeXBlOwogICAgQ0FSRDE2ICBsZW5ndGgg
IDsKICAgIENBUkQzMiAgbWFqb3JWZXJzaW9uICA7CiAgICBDQVJEMzIgIG1pbm9yVmVyc2lvbiAg
Owp9IHhSZW5kZXJRdWVyeVZlcnNpb25SZXE7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIEJZVEUg
ICAgdHlwZTsgICAgCiAgICBCWVRFICAgIHBhZDE7CiAgICBDQVJEMTYgIHNlcXVlbmNlTnVtYmVy
ICA7CiAgICBDQVJEMzIgIGxlbmd0aCAgOwogICAgQ0FSRDMyICBtYWpvclZlcnNpb24gIDsKICAg
IENBUkQzMiAgbWlub3JWZXJzaW9uICA7CiAgICBDQVJEMzIgIHBhZDIgIDsKICAgIENBUkQzMiAg
cGFkMyAgOwogICAgQ0FSRDMyICBwYWQ0ICA7CiAgICBDQVJEMzIgIHBhZDUgIDsKfSB4UmVuZGVy
UXVlcnlWZXJzaW9uUmVwbHk7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4ICAgcmVxVHlw
ZTsKICAgIENBUkQ4ICAgcmVuZGVyUmVxVHlwZTsKICAgIENBUkQxNiAgbGVuZ3RoICA7Cn0geFJl
bmRlclF1ZXJ5UGljdEZvcm1hdHNSZXE7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIEJZVEUgICAg
dHlwZTsgICAgCiAgICBCWVRFICAgIHBhZDE7CiAgICBDQVJEMTYgIHNlcXVlbmNlTnVtYmVyICA7
CiAgICBDQVJEMzIgIGxlbmd0aCAgOwogICAgQ0FSRDMyICBudW1Gb3JtYXRzICA7CiAgICBDQVJE
MzIgIG51bVNjcmVlbnMgIDsKICAgIENBUkQzMiAgbnVtRGVwdGhzICA7CiAgICBDQVJEMzIgIG51
bVZpc3VhbHMgIDsKICAgIENBUkQzMiAgcGFkNCAgOwogICAgQ0FSRDMyICBwYWQ1ICA7Cn0geFJl
bmRlclF1ZXJ5UGljdEZvcm1hdHNSZXBseTsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDgg
ICByZXFUeXBlOwogICAgQ0FSRDggICByZW5kZXJSZXFUeXBlOwogICAgQ0FSRDE2ICBsZW5ndGgg
IDsKICAgIENBUkQzMiAJZm9ybWF0ICA7Cn0geFJlbmRlclF1ZXJ5UGljdEluZGV4VmFsdWVzUmVx
OwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBCWVRFICAgIHR5cGU7ICAgIAogICAgQllURSAgICBw
YWQxOwogICAgQ0FSRDE2ICBzZXF1ZW5jZU51bWJlciAgOwogICAgQ0FSRDMyICBsZW5ndGggIDsK
ICAgIENBUkQzMiAgbnVtSW5kZXhWYWx1ZXM7CiAgICBDQVJEMzIgIHBhZDIgIDsKICAgIENBUkQz
MiAgcGFkMyAgOwogICAgQ0FSRDMyICBwYWQ0ICA7CiAgICBDQVJEMzIgIHBhZDUgIDsKICAgIENB
UkQzMiAgcGFkNiAgOwp9IHhSZW5kZXJRdWVyeVBpY3RJbmRleFZhbHVlc1JlcGx5OwoKCgp0eXBl
ZGVmIHN0cnVjdCB7CiAgICBDQVJEOAlyZXFUeXBlOwogICAgQ0FSRDgJcmVuZGVyUmVxVHlwZTsK
ICAgIENBUkQxNglsZW5ndGggIDsKICAgIENBUkQzMiAJcGlkICA7CiAgICBDQVJEMzIgCWRyYXdh
YmxlICA7CiAgICBDQVJEMzIgCWZvcm1hdCAgOwogICAgQ0FSRDMyCW1hc2sgIDsKfSB4UmVuZGVy
Q3JlYXRlUGljdHVyZVJlcTsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDgJcmVxVHlwZTsK
ICAgIENBUkQ4CXJlbmRlclJlcVR5cGU7CiAgICBDQVJEMTYJbGVuZ3RoICA7CiAgICBDQVJEMzIg
CXBpY3R1cmUgIDsKICAgIENBUkQzMgltYXNrICA7Cn0geFJlbmRlckNoYW5nZVBpY3R1cmVSZXE7
CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4ICAgICAgIHJlcVR5cGU7CiAgICBDQVJEOCAg
ICAgICByZW5kZXJSZXFUeXBlOwogICAgQ0FSRDE2ICAgICAgbGVuZ3RoICA7CiAgICBDQVJEMzIg
ICAgICBwaWN0dXJlICA7CiAgICBJTlQxNgl4T3JpZ2luICA7CiAgICBJTlQxNgl5T3JpZ2luICA7
Cn0geFJlbmRlclNldFBpY3R1cmVDbGlwUmVjdGFuZ2xlc1JlcTsKCgoKdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgQ0FSRDggICAgICAgcmVxVHlwZTsKICAgIENBUkQ4ICAgICAgIHJlbmRlclJlcVR5cGU7
CiAgICBDQVJEMTYgICAgICBsZW5ndGggIDsKICAgIENBUkQzMiAgICAgIHBpY3R1cmUgIDsKfSB4
UmVuZGVyRnJlZVBpY3R1cmVSZXE7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgIENBUkQ4ICAgICAg
IHJlcVR5cGU7CiAgICBDQVJEOCAgICAgICByZW5kZXJSZXFUeXBlOwogICAgQ0FSRDE2ICAgICAg
bGVuZ3RoICA7CiAgICBDQVJEOAlvcDsKICAgIENBUkQ4CXBhZDE7CiAgICBDQVJEMTYJcGFkMiAg
OwogICAgQ0FSRDMyIAlzcmMgIDsKICAgIENBUkQzMiAJbWFzayAgOwogICAgQ0FSRDMyIAlkc3Qg
IDsKICAgIElOVDE2CXhTcmMgIDsKICAgIElOVDE2CXlTcmMgIDsKICAgIElOVDE2CXhNYXNrICA7
CiAgICBJTlQxNgl5TWFzayAgOwogICAgSU5UMTYJeERzdCAgOwogICAgSU5UMTYJeURzdCAgOwog
ICAgQ0FSRDE2CXdpZHRoICA7CiAgICBDQVJEMTYJaGVpZ2h0ICA7Cn0geFJlbmRlckNvbXBvc2l0
ZVJlcTsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggICAgICAgcmVxVHlwZTsKICAgIENB
UkQ4ICAgICAgIHJlbmRlclJlcVR5cGU7CiAgICBDQVJEMTYgICAgICBsZW5ndGggIDsKICAgIENB
UkQzMiAJc3JjICA7CiAgICBDQVJEMzIgCWRzdCAgOwogICAgQ0FSRDMyCWNvbG9yU2NhbGUgIDsK
ICAgIENBUkQzMglhbHBoYVNjYWxlICA7CiAgICBJTlQxNgl4U3JjICA7CiAgICBJTlQxNgl5U3Jj
ICA7CiAgICBJTlQxNgl4RHN0ICA7CiAgICBJTlQxNgl5RHN0ICA7CiAgICBDQVJEMTYJd2lkdGgg
IDsKICAgIENBUkQxNgloZWlnaHQgIDsKfSB4UmVuZGVyU2NhbGVSZXE7CgoKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgIENBUkQ4ICAgICAgIHJlcVR5cGU7CiAgICBDQVJEOCAgICAgICByZW5kZXJSZXFU
eXBlOwogICAgQ0FSRDE2ICAgICAgbGVuZ3RoICA7CiAgICBDQVJEMzIgCXNyYyAgOwogICAgQ0FS
RDMyIAlkc3QgIDsKICAgIElOVDE2CXhTcmMgIDsKICAgIElOVDE2CXlTcmMgIDsKfSB4UmVuZGVy
VHJpYW5nbGVzUmVxOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCAgICAgICByZXFUeXBl
OwogICAgQ0FSRDggICAgICAgcmVuZGVyUmVxVHlwZTsKICAgIENBUkQxNiAgICAgIGxlbmd0aCAg
OwogICAgQ0FSRDMyIAlnc2lkICA7CiAgICBDQVJEMzIgCWZvcm1hdCAgOwp9IHhSZW5kZXJDcmVh
dGVHbHlwaFNldFJlcTsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggICAgICAgcmVxVHlw
ZTsKICAgIENBUkQ4ICAgICAgIHJlbmRlclJlcVR5cGU7CiAgICBDQVJEMTYgICAgICBsZW5ndGgg
IDsKICAgIENBUkQzMiAgICAgZ3NpZCAgOwogICAgQ0FSRDMyICAgICBleGlzdGluZyAgOwp9IHhS
ZW5kZXJSZWZlcmVuY2VHbHlwaFNldFJlcTsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDgg
ICAgICAgcmVxVHlwZTsKICAgIENBUkQ4ICAgICAgIHJlbmRlclJlcVR5cGU7CiAgICBDQVJEMTYg
ICAgICBsZW5ndGggIDsKICAgIENBUkQzMiAgICAgZ2x5cGhzZXQgIDsKfSB4UmVuZGVyRnJlZUds
eXBoU2V0UmVxOwoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBDQVJEOCAgICAgICByZXFUeXBlOwog
ICAgQ0FSRDggICAgICAgcmVuZGVyUmVxVHlwZTsKICAgIENBUkQxNiAgICAgIGxlbmd0aCAgOwog
ICAgQ0FSRDMyICAgICBnbHlwaHNldCAgOwogICAgQ0FSRDMyCW5nbHlwaHM7Cn0geFJlbmRlckFk
ZEdseXBoc1JlcTsKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggICAgICAgcmVxVHlwZTsK
ICAgIENBUkQ4ICAgICAgIHJlbmRlclJlcVR5cGU7CiAgICBDQVJEMTYgICAgICBsZW5ndGggIDsK
ICAgIENBUkQzMiAgICAgZ2x5cGhzZXQgIDsKfSB4UmVuZGVyRnJlZUdseXBoc1JlcTsKCgoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDggICAgICAgcmVxVHlwZTsKICAgIENBUkQ4ICAgICAgIHJl
bmRlclJlcVR5cGU7CiAgICBDQVJEMTYgICAgICBsZW5ndGggIDsKICAgIENBUkQ4CW9wOwogICAg
Q0FSRDgJcGFkMTsKICAgIENBUkQxNglwYWQyICA7CiAgICBDQVJEMzIgCXNyYyAgOwogICAgQ0FS
RDMyIAlkc3QgIDsKICAgIENBUkQzMiAJbWFza0Zvcm1hdCAgOwogICAgQ0FSRDMyICAgICBnbHlw
aHNldCAgOwogICAgSU5UMTYJeFNyYyAgOwogICAgSU5UMTYJeVNyYyAgOwp9IHhSZW5kZXJDb21w
b3NpdGVHbHlwaHNSZXEsIHhSZW5kZXJDb21wb3NpdGVHbHlwaHM4UmVxLCAKeFJlbmRlckNvbXBv
c2l0ZUdseXBoczE2UmVxLCB4UmVuZGVyQ29tcG9zaXRlR2x5cGhzMzJSZXE7CgoKCgoKIAoKdHlw
ZWRlZiBzdHJ1Y3QgewogICAgQ0FSRDgJcmVxVHlwZTsKICAgIENBUkQ4ICAgICAgIHJlbmRlclJl
cVR5cGU7CiAgICBDQVJEMTYgICAgICBsZW5ndGggIDsKICAgIENBUkQ4CW9wOwogICAgQ0FSRDgJ
cGFkMTsKICAgIENBUkQxNglwYWQyICA7CiAgICBDQVJEMzIgCWRzdCAgOwogICAgeFJlbmRlckNv
bG9yICAgIGNvbG9yOwp9IHhSZW5kZXJGaWxsUmVjdGFuZ2xlc1JlcTsKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDI5ICIuLi8uLi9yZW5kZXIvcGljdHVyZXN0ci5oIiAyCgojIDEgIi4uLy4uL3Jl
bmRlci9waWN0dXJlLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHN0
cnVjdCBfRGlyZWN0Rm9ybWF0CSpEaXJlY3RGb3JtYXRQdHI7CnR5cGVkZWYgc3RydWN0IF9QaWN0
Rm9ybWF0CSpQaWN0Rm9ybWF0UHRyOwp0eXBlZGVmIHN0cnVjdCBfUGljdHVyZQkJKlBpY3R1cmVQ
dHI7CgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgoKCiAKCgoKCgoKCgog
CgoKCgoKCiAKCgoKCgoJCQkJICAgIAogCgoKCgoKCgoKCgoKIyAzMCAiLi4vLi4vcmVuZGVyL3Bp
Y3R1cmVzdHIuaCIgMgoKIyAxICIuLi8uLi9yZW5kZXIvZ2x5cGhzdHIuaCIgMQogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9HbHlwaCB7CiAgICBD
QVJEMzIJcmVmY250OwogICAgQ0FSRDMyCXNpemU7CSAKICAgIHhHbHlwaEluZm8JaW5mbzsKICAg
ICAKfSBHbHlwaFJlYywgKkdseXBoUHRyOwoKdHlwZWRlZiBzdHJ1Y3QgX0dseXBoUmVmIHsKICAg
IENBUkQzMglzaWduYXR1cmU7CiAgICBHbHlwaFB0cglnbHlwaDsKfSBHbHlwaFJlZlJlYywgKkds
eXBoUmVmUHRyOwoKCgp0eXBlZGVmIHN0cnVjdCBfR2x5cGhIYXNoU2V0IHsKICAgIENBUkQzMgll
bnRyaWVzOwogICAgQ0FSRDMyCXNpemU7CiAgICBDQVJEMzIJcmVoYXNoOwp9IEdseXBoSGFzaFNl
dFJlYywgKkdseXBoSGFzaFNldFB0cjsKCnR5cGVkZWYgc3RydWN0IF9HbHlwaEhhc2ggewogICAg
R2x5cGhSZWZQdHIJICAgIHRhYmxlOwogICAgR2x5cGhIYXNoU2V0UHRyIGhhc2hTZXQ7CiAgICBD
QVJEMzIJICAgIHRhYmxlRW50cmllczsKfSBHbHlwaEhhc2hSZWMsICpHbHlwaEhhc2hQdHI7Cgp0
eXBlZGVmIHN0cnVjdCBfR2x5cGhTZXQgewogICAgQ0FSRDMyCSAgICByZWZjbnQ7CiAgICBQaWN0
Rm9ybWF0UHRyICAgZm9ybWF0OwogICAgaW50CQkgICAgZmRlcHRoOwogICAgR2x5cGhIYXNoUmVj
ICAgIGhhc2g7Cn0gR2x5cGhTZXRSZWMsICpHbHlwaFNldFB0cjsKCnR5cGVkZWYgc3RydWN0IF9H
bHlwaExpc3QgewogICAgSU5UMTYJICAgIHhPZmY7CiAgICBJTlQxNgkgICAgeU9mZjsKICAgIENB
UkQ4CSAgICBsZW47CiAgICBQaWN0Rm9ybWF0UHRyICAgZm9ybWF0Owp9IEdseXBoTGlzdFJlYywg
KkdseXBoTGlzdFB0cjsKCmV4dGVybiBHbHlwaEhhc2hSZWMJZ2xvYmFsR2x5cGhzWzUgXTsKCkds
eXBoSGFzaFNldFB0cgpGaW5kR2x5cGhIYXNoU2V0IChDQVJEMzIgZmlsbGVkKTsKCkJvb2wKR2x5
cGhJbml0IChTY3JlZW5QdHIgcFNjcmVlbik7CgpHbHlwaFJlZlB0cgpGaW5kR2x5cGhSZWYgKEds
eXBoSGFzaFB0ciBoYXNoLCBDQVJEMzIgc2lnbmF0dXJlLCBCb29sIG1hdGNoLCBHbHlwaFB0ciBj
b21wYXJlKTsKCkNBUkQzMgpIYXNoR2x5cGggKEdseXBoUHRyIGdseXBoKTsKCnZvaWQKRnJlZUds
eXBoIChHbHlwaFB0ciBnbHlwaCwgaW50IGZvcm1hdCk7Cgp2b2lkCkFkZEdseXBoIChHbHlwaFNl
dFB0ciBnbHlwaFNldCwgR2x5cGhQdHIgZ2x5cGgsIEdseXBoIGlkKTsKCkJvb2wKRGVsZXRlR2x5
cGggKEdseXBoU2V0UHRyIGdseXBoU2V0LCBHbHlwaCBpZCk7CgpHbHlwaFB0cgpGaW5kR2x5cGgg
KEdseXBoU2V0UHRyIGdseXBoU2V0LCBHbHlwaCBpZCk7CgpHbHlwaFB0cgpBbGxvY2F0ZUdseXBo
ICh4R2x5cGhJbmZvICpnaSwgaW50IGZvcm1hdCk7CgpCb29sCkFsbG9jYXRlR2x5cGhIYXNoIChH
bHlwaEhhc2hQdHIgaGFzaCwgR2x5cGhIYXNoU2V0UHRyIGhhc2hTZXQpOwoKQm9vbApSZXNpemVH
bHlwaEhhc2ggKEdseXBoSGFzaFB0ciBoYXNoLCBDQVJEMzIgY2hhbmdlLCBCb29sIGdsb2JhbCk7
CgpCb29sClJlc2l6ZUdseXBoU2V0IChHbHlwaFNldFB0ciBnbHlwaFNldCwgQ0FSRDMyIGNoYW5n
ZSk7CgpHbHlwaFNldFB0cgpBbGxvY2F0ZUdseXBoU2V0IChpbnQgZmRlcHRoLCBQaWN0Rm9ybWF0
UHRyIGZvcm1hdCk7CgppbnQKRnJlZUdseXBoU2V0IChwb2ludGVyICAgdmFsdWUsCgkgICAgICBY
SUQgICAgICAgZ2lkKTsKCgoKCiMgMzEgIi4uLy4uL3JlbmRlci9waWN0dXJlc3RyLmgiIDIKCgoK
dHlwZWRlZiBzdHJ1Y3QgX0RpcmVjdEZvcm1hdCB7CiAgICBDQVJEMTYJICAgIHJlZCwgcmVkTWFz
azsKICAgIENBUkQxNgkgICAgZ3JlZW4sIGdyZWVuTWFzazsKICAgIENBUkQxNgkgICAgYmx1ZSwg
Ymx1ZU1hc2s7CiAgICBDQVJEMTYJICAgIGFscGhhLCBhbHBoYU1hc2s7Cn0gRGlyZWN0Rm9ybWF0
UmVjOwoKdHlwZWRlZiBzdHJ1Y3QgX1BpY3RGb3JtYXQgewogICAgQ0FSRDMyCSAgICBpZDsKICAg
IENBUkQzMgkgICAgZm9ybWF0OwkgICAgIAogICAgdW5zaWduZWQgY2hhciAgIHR5cGU7CiAgICB1
bnNpZ25lZCBjaGFyICAgZGVwdGg7CiAgICBEaXJlY3RGb3JtYXRSZWMgZGlyZWN0OwogICAgQ29s
b3JtYXBQdHIJICAgIHBDb2xvcm1hcDsKfSBQaWN0Rm9ybWF0UmVjOwoKdHlwZWRlZiBzdHJ1Y3Qg
X1BpY3R1cmUgewogICAgRHJhd2FibGVQdHIJICAgIHBEcmF3YWJsZTsKICAgIFBpY3RGb3JtYXRQ
dHIgICBwRm9ybWF0OwogICAgQ0FSRDMyCSAgICBmb3JtYXQ7CSAgICAgCiAgICBpbnQJCSAgICBy
ZWZjbnQ7CiAgICBDQVJEMzIJICAgIGlkOwogICAgUGljdHVyZVB0cgkgICAgcE5leHQ7CSAgICAg
CiAgICAKICAgIHVuc2lnbmVkIGludCAgICByZXBlYXQgOiAxOwogICAgdW5zaWduZWQgaW50ICAg
IGdyYXBoaWNzRXhwb3N1cmVzIDogMTsKICAgIHVuc2lnbmVkIGludCAgICBzdWJXaW5kb3dNb2Rl
IDogMTsKICAgIHVuc2lnbmVkIGludCAgICBwb2x5RWRnZSA6IDE7CiAgICB1bnNpZ25lZCBpbnQg
ICAgcG9seU1vZGUgOiAxOwogICAgdW5zaWduZWQgaW50ICAgIGZyZWVDb21wQ2xpcCA6IDE7CiAg
ICB1bnNpZ25lZCBpbnQgICAgY2xpZW50Q2xpcFR5cGUgOiAyOwogICAgdW5zaWduZWQgaW50ICAg
IGNvbXBvbmVudEFscGhhIDogMTsKICAgIHVuc2lnbmVkIGludCAgICB1bnVzZWQgOiAyMzsKCiAg
ICBQaWN0dXJlUHRyCSAgICBhbHBoYU1hcDsKICAgIEREWFBvaW50UmVjCSAgICBhbHBoYU9yaWdp
bjsKCiAgICBERFhQb2ludFJlYwkgICAgY2xpcE9yaWdpbjsKICAgIHBvaW50ZXIJICAgIGNsaWVu
dENsaXA7CgogICAgQXRvbQkgICAgZGl0aGVyOwoKICAgIHVuc2lnbmVkIGxvbmcgICBzdGF0ZUNo
YW5nZXM7CiAgICB1bnNpZ25lZCBsb25nICAgc2VyaWFsTnVtYmVyOwoKICAgIFJlZ2lvblB0cgkg
ICAgcENvbXBvc2l0ZUNsaXA7CiAgICAKICAgIERldlVuaW9uCSAgICAqZGV2UHJpdmF0ZXM7Cn0g
UGljdHVyZVJlYzsKCnR5cGVkZWYgaW50CSgqQ3JlYXRlUGljdHVyZVByb2NQdHIpCSAgICAoUGlj
dHVyZVB0ciBwUGljdHVyZSk7CnR5cGVkZWYgdm9pZAkoKkRlc3Ryb3lQaWN0dXJlUHJvY1B0cikg
ICAgKFBpY3R1cmVQdHIgcFBpY3R1cmUpOwp0eXBlZGVmIGludAkoKkNoYW5nZVBpY3R1cmVDbGlw
UHJvY1B0cikgKFBpY3R1cmVQdHIJcFBpY3R1cmUsCgkJCQkJICAgICBpbnQJY2xpcFR5cGUsCgkJ
CQkJICAgICBwb2ludGVyICAgIHZhbHVlLAoJCQkJCSAgICAgaW50CW4pOwp0eXBlZGVmIHZvaWQJ
KCpEZXN0cm95UGljdHVyZUNsaXBQcm9jUHRyKShQaWN0dXJlUHRyCXBQaWN0dXJlKTsKICAgIAp0
eXBlZGVmIHZvaWQJKCpDaGFuZ2VQaWN0dXJlUHJvY1B0cikJICAgIChQaWN0dXJlUHRyIHBQaWN0
dXJlLAoJCQkJCSAgICAgTWFzawltYXNrKTsKdHlwZWRlZiB2b2lkCSgqVmFsaWRhdGVQaWN0dXJl
UHJvY1B0cikgICAgKFBpY3R1cmVQdHIgcFBpY3R1cmUsCgkJCQkJICAgICBNYXNrICAgICAgIG1h
c2spOwp0eXBlZGVmIHZvaWQJKCpDb21wb3NpdGVQcm9jUHRyKQkgICAgKENBUkQ4CW9wLAoJCQkJ
CSAgICAgUGljdHVyZVB0ciBwU3JjLAoJCQkJCSAgICAgUGljdHVyZVB0ciBwTWFzaywKCQkJCQkg
ICAgIFBpY3R1cmVQdHIgcERzdCwKCQkJCQkgICAgIElOVDE2CXhTcmMsCgkJCQkJICAgICBJTlQx
Ngl5U3JjLAoJCQkJCSAgICAgSU5UMTYJeE1hc2ssCgkJCQkJICAgICBJTlQxNgl5TWFzaywKCQkJ
CQkgICAgIElOVDE2CXhEc3QsCgkJCQkJICAgICBJTlQxNgl5RHN0LAoJCQkJCSAgICAgQ0FSRDE2
CXdpZHRoLAoJCQkJCSAgICAgQ0FSRDE2CWhlaWdodCk7Cgp0eXBlZGVmIHZvaWQJKCpHbHlwaHNQ
cm9jUHRyKQkgICAgKENBUkQ4ICAgICAgb3AsCgkJCQkJICAgICBQaWN0dXJlUHRyIHBTcmMsCgkJ
CQkJICAgICBQaWN0dXJlUHRyIHBEc3QsCgkJCQkJICAgICBQaWN0Rm9ybWF0UHRyICBtYXNrRm9y
bWF0LAoJCQkJCSAgICAgSU5UMTYgICAgICB4U3JjLAoJCQkJCSAgICAgSU5UMTYgICAgICB5U3Jj
LAoJCQkJCSAgICAgaW50CW5saXN0cywKCQkJCQkgICAgIEdseXBoTGlzdFB0ciAgIGxpc3RzLAoJ
CQkJCSAgICAgR2x5cGhQdHIJKmdseXBocyk7Cgp0eXBlZGVmIHZvaWQJKCpDb21wb3NpdGVSZWN0
c1Byb2NQdHIpICAgIChDQVJEOAkgICAgb3AsCgkJCQkJICAgICBQaWN0dXJlUHRyCSAgICBwRHN0
LAoJCQkJCSAgICAgeFJlbmRlckNvbG9yICAgKmNvbG9yLAoJCQkJCSAgICAgaW50CSAgICBuUmVj
dCwKCQkJCQkgICAgIHhSZWN0YW5nbGUJICAgICpyZWN0cyk7Cgp0eXBlZGVmIHN0cnVjdCBfUGlj
dHVyZVNjcmVlbiB7CiAgICBpbnQJCQkJdG90YWxQaWN0dXJlU2l6ZTsKICAgIHVuc2lnbmVkIGlu
dAkJKlBpY3R1cmVQcml2YXRlU2l6ZXM7CiAgICBpbnQJCQkJUGljdHVyZVByaXZhdGVMZW47Cgog
ICAgUGljdEZvcm1hdFB0cgkJZm9ybWF0czsKICAgIFBpY3RGb3JtYXRQdHIJCWZhbGxiYWNrOwog
ICAgaW50CQkJCW5mb3JtYXRzOwogICAgCiAgICBDcmVhdGVQaWN0dXJlUHJvY1B0cglDcmVhdGVQ
aWN0dXJlOwogICAgRGVzdHJveVBpY3R1cmVQcm9jUHRyCURlc3Ryb3lQaWN0dXJlOwogICAgQ2hh
bmdlUGljdHVyZUNsaXBQcm9jUHRyCUNoYW5nZVBpY3R1cmVDbGlwOwogICAgRGVzdHJveVBpY3R1
cmVDbGlwUHJvY1B0cglEZXN0cm95UGljdHVyZUNsaXA7CiAgICAKICAgIENoYW5nZVBpY3R1cmVQ
cm9jUHRyCUNoYW5nZVBpY3R1cmU7CiAgICBWYWxpZGF0ZVBpY3R1cmVQcm9jUHRyCVZhbGlkYXRl
UGljdHVyZTsKCiAgICBDb21wb3NpdGVQcm9jUHRyCQlDb21wb3NpdGU7CiAgICBHbHlwaHNQcm9j
UHRyCQlHbHlwaHM7CiAgICBDb21wb3NpdGVSZWN0c1Byb2NQdHIJQ29tcG9zaXRlUmVjdHM7Cgog
ICAgRGVzdHJveVdpbmRvd1Byb2NQdHIJRGVzdHJveVdpbmRvdzsKICAgIENsb3NlU2NyZWVuUHJv
Y1B0cgkJQ2xvc2VTY3JlZW47Cgp9IFBpY3R1cmVTY3JlZW5SZWMsICpQaWN0dXJlU2NyZWVuUHRy
OwoKZXh0ZXJuIGludAkJUGljdHVyZVNjcmVlblByaXZhdGVJbmRleDsKZXh0ZXJuIGludAkJUGlj
dHVyZVdpbmRvd1ByaXZhdGVJbmRleDsKZXh0ZXJuIFJFU1RZUEUJCVBpY3R1cmVUeXBlOwpleHRl
cm4gUkVTVFlQRQkJUGljdEZvcm1hdFR5cGU7CmV4dGVybiBSRVNUWVBFCQlHbHlwaFNldFR5cGU7
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKQm9vbApQaWN0dXJlRGVzdHJveVdpbmRvdyAoV2luZG93
UHRyIHBXaW5kb3cpOwoKQm9vbApQaWN0dXJlQ2xvc2VTY3JlZW4gKGludCBJbmRleCwgU2NyZWVu
UHRyIHBTY3JlZW4pOwoKUGljdEZvcm1hdFB0cgpQaWN0dXJlQ3JlYXRlRGVmYXVsdEZvcm1hdHMg
KFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgKm5mb3JtYXRwKTsKClBpY3RGb3JtYXRQdHIKUGljdHVy
ZU1hdGNoVmlzdWFsIChTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGRlcHRoLCBWaXN1YWxQdHIgcFZp
c3VhbCk7CgpQaWN0Rm9ybWF0UHRyClBpY3R1cmVNYXRjaEZvcm1hdCAoU2NyZWVuUHRyIHBTY3Jl
ZW4sIGludCBkZXB0aCwgQ0FSRDMyIGZvcm1hdCk7CiAgICAKQm9vbApQaWN0dXJlSW5pdCAoU2Ny
ZWVuUHRyIHBTY3JlZW4sIFBpY3RGb3JtYXRQdHIgZm9ybWF0cywgaW50IG5mb3JtYXRzKTsKCnZv
aWQKU2V0UGljdHVyZVRvRGVmYXVsdHMgKFBpY3R1cmVQdHIgcFBpY3R1cmUpOwogICAgClBpY3R1
cmVQdHIKQWxsb2NhdGVQaWN0dXJlIChTY3JlZW5QdHIgIHBTY3JlZW4pOwoKQm9vbAptaVBpY3R1
cmVJbml0IChTY3JlZW5QdHIgcFNjcmVlbiwgUGljdEZvcm1hdFB0ciBmb3JtYXRzLCBpbnQgbmZv
cm1hdHMpOwoKClBpY3R1cmVQdHIKQ3JlYXRlUGljdHVyZSAoUGljdHVyZQkJcGlkLAoJICAgICAg
IERyYXdhYmxlUHRyCXBEcmF3YWJsZSwKCSAgICAgICBQaWN0Rm9ybWF0UHRyCXBGb3JtYXQsCgkg
ICAgICAgTWFzawkJbWFzaywKCSAgICAgICBYSUQJCSpsaXN0LAoJICAgICAgIENsaWVudFB0cglj
bGllbnQsCgkgICAgICAgaW50CQkqZXJyb3IpOwoKaW50CkNoYW5nZVBpY3R1cmUgKFBpY3R1cmVQ
dHIJcFBpY3R1cmUsCgkgICAgICAgTWFzawkJdm1hc2ssCgkgICAgICAgWElECQkqdmxpc3QsCgkg
ICAgICAgRGV2VW5pb24JCSp1bGlzdCwKCSAgICAgICBDbGllbnRQdHIJY2xpZW50KTsKCmludApT
ZXRQaWN0dXJlQ2xpcFJlY3RzIChQaWN0dXJlUHRyCXBQaWN0dXJlLAoJCSAgICAgaW50CXhPcmln
aW4sCgkJICAgICBpbnQJeU9yaWdpbiwKCQkgICAgIGludAluUmVjdCwKCQkgICAgIHhSZWN0YW5n
bGUJKnJlY3RzKTsKCnZvaWQKVmFsaWRhdGVQaWN0dXJlKFBpY3R1cmVQdHIgcFBpY3R1cmUpOwoK
aW50CkZyZWVQaWN0dXJlIChwb2ludGVyCXBQaWN0dXJlLAoJICAgICBYSUQJcGlkKTsKCmludApG
cmVlUGljdEZvcm1hdCAocG9pbnRlcglwUGljdEZvcm1hdCwKCQlYSUQgICAgIHBpZCk7Cgp2b2lk
CkNvbXBvc2l0ZVBpY3R1cmUgKENBUkQ4CQlvcCwKCQkgIFBpY3R1cmVQdHIJcFNyYywKCQkgIFBp
Y3R1cmVQdHIJcE1hc2ssCgkJICBQaWN0dXJlUHRyCXBEc3QsCgkJICBJTlQxNgkJeFNyYywKCQkg
IElOVDE2CQl5U3JjLAoJCSAgSU5UMTYJCXhNYXNrLAoJCSAgSU5UMTYJCXlNYXNrLAoJCSAgSU5U
MTYJCXhEc3QsCgkJICBJTlQxNgkJeURzdCwKCQkgIENBUkQxNgl3aWR0aCwKCQkgIENBUkQxNglo
ZWlnaHQpOwoKdm9pZApDb21wb3NpdGVHbHlwaHMgKENBUkQ4CQlvcCwKCQkgUGljdHVyZVB0cglw
U3JjLAoJCSBQaWN0dXJlUHRyCXBEc3QsCgkJIFBpY3RGb3JtYXRQdHIJbWFza0Zvcm1hdCwKCQkg
SU5UMTYJCXhTcmMsCgkJIElOVDE2CQl5U3JjLAoJCSBpbnQJCW5saXN0LAoJCSBHbHlwaExpc3RQ
dHIJbGlzdHMsCgkJIEdseXBoUHRyCSpnbHlwaHMpOwoKdm9pZApDb21wb3NpdGVSZWN0cyAoQ0FS
RDgJCW9wLAoJCVBpY3R1cmVQdHIJcERzdCwKCQl4UmVuZGVyQ29sb3IJKmNvbG9yLAoJCWludAkJ
blJlY3QsCgkJeFJlY3RhbmdsZSAgICAgICpyZWN0cyk7CgoKIyAyOSAic2hhZG93LmgiIDIKCgoK
dHlwZWRlZiB2b2lkICgqU2hhZG93VXBkYXRlUHJvYykgKFNjcmVlblB0ciBwU2NyZWVuLCAKCQkJ
CSAgUGl4bWFwUHRyIHBTaGFkb3csCgkJCQkgIFJlZ2lvblB0ciBkYW1hZ2UpOwoKCgoKCnR5cGVk
ZWYgdm9pZCAqKCpTaGFkb3dXaW5kb3dQcm9jKSAoU2NyZWVuUHRyCXBTY3JlZW4sCgkJCQkgICBD
QVJEMzIJcm93LAoJCQkJICAgQ0FSRDMyCW9mZnNldCwKCQkJCSAgIGludAkJbW9kZSwKCQkJCSAg
IENBUkQzMgkqc2l6ZSk7Cgp0eXBlZGVmIHN0cnVjdCBfc2hhZG93U2NyUHJpdiB7CiAgICBQYWlu
dFdpbmRvd0JhY2tncm91bmRQcm9jUHRyIFBhaW50V2luZG93QmFja2dyb3VuZDsKICAgIFBhaW50
V2luZG93Qm9yZGVyUHJvY1B0cglQYWludFdpbmRvd0JvcmRlcjsKICAgIENvcHlXaW5kb3dQcm9j
UHRyCQlDb3B5V2luZG93OwogICAgQ2xvc2VTY3JlZW5Qcm9jUHRyCQlDbG9zZVNjcmVlbjsKICAg
IENyZWF0ZUdDUHJvY1B0cgkJQ3JlYXRlR0M7CiAgICBHZXRJbWFnZVByb2NQdHIJCUdldEltYWdl
OwoKICAgIENvbXBvc2l0ZVByb2NQdHIJCUNvbXBvc2l0ZTsKICAgIEdseXBoc1Byb2NQdHIJCUds
eXBoczsKCiAgICBTaGFkb3dVcGRhdGVQcm9jCQl1cGRhdGU7CiAgICBTaGFkb3dXaW5kb3dQcm9j
CQl3aW5kb3c7CiAgICBSZWdpb25SZWMJCQlkYW1hZ2U7Cn0gc2hhZG93U2NyUHJpdlJlYywgKnNo
YWRvd1NjclByaXZQdHI7CgpleHRlcm4gaW50IHNoYWRvd1NjclByaXZhdGVJbmRleDsKCgoKCkJv
b2wKc2hhZG93SW5pdCAoU2NyZWVuUHRyIHBTY3JlZW4sIFNoYWRvd1VwZGF0ZVByb2MgdXBkYXRl
LCBTaGFkb3dXaW5kb3dQcm9jIHdpbmRvdyk7Cgp2b2lkICoKc2hhZG93QWxsb2MgKGludCB3aWR0
aCwgaW50IGhlaWdodCwgaW50IGJwcCk7Cgp2b2lkCnNoYWRvd1VwZGF0ZVBhY2tlZCAoU2NyZWVu
UHRyIHBTY3JlZW4sCgkJICAgIFBpeG1hcFB0ciBwU2hhZG93LAoJCSAgICBSZWdpb25QdHIgZGFt
YWdlKTsKCnZvaWQKc2hhZG93VXBkYXRlUGxhbmFyNCAoU2NyZWVuUHRyIHBTY3JlZW4sCgkJICAg
ICBQaXhtYXBQdHIgcFNoYWRvdywKCQkgICAgIFJlZ2lvblB0ciBkYW1hZ2UpOwoKdm9pZApzaGFk
b3dVcGRhdGVQbGFuYXI0eDggKFNjcmVlblB0ciBwU2NyZWVuLAoJCSAgICAgICBQaXhtYXBQdHIg
cFNoYWRvdywKCQkgICAgICAgUmVnaW9uUHRyIGRhbWFnZSk7Cgp2b2lkCnNoYWRvd1VwZGF0ZVJv
dGF0ZTggKFNjcmVlblB0ciBwU2NyZWVuLAoJCSAgICAgUGl4bWFwUHRyIHBTaGFkb3csCgkJICAg
ICBSZWdpb25QdHIgZGFtYWdlKTsKCnZvaWQKc2hhZG93VXBkYXRlUm90YXRlMTYgKFNjcmVlblB0
ciBwU2NyZWVuLAoJCSAgICAgIFBpeG1hcFB0ciBwU2hhZG93LAoJCSAgICAgIFJlZ2lvblB0ciBk
YW1hZ2UpOwoKdm9pZApzaGFkb3dVcGRhdGVSb3RhdGUzMiAoU2NyZWVuUHRyIHBTY3JlZW4sCgkJ
ICAgICAgUGl4bWFwUHRyIHBTaGFkb3csCgkJICAgICAgUmVnaW9uUHRyIGRhbWFnZSk7CgoKIyAz
NiAic2hhZG93LmMiIDIKCgoKCgp0eXBlZGVmIHN0cnVjdCBfc2hhZG93R0NQcml2IHsKICAgIEdD
T3BzICAgKm9wczsKICAgIEdDRnVuY3MgKmZ1bmNzOwp9IHNoYWRvd0dDUHJpdlJlYywgKnNoYWRv
d0dDUHJpdlB0cjsKCmludCBzaGFkb3dTY3JQcml2YXRlSW5kZXg7CmludCBzaGFkb3dHQ1ByaXZh
dGVJbmRleDsKaW50IHNoYWRvd0dlbmVyYXRpb247CgoKCgoKCgoKCgoKCgpzdGF0aWMgdm9pZApz
aGFkb3dSZWRpc3BsYXkgKFNjcmVlblB0ciBwU2NyZWVuKQp7CiAgICBzaGFkb3dTY3JQcml2UHRy
ICAgIHBTY3JQcml2ID0gKChzaGFkb3dTY3JQcml2UHRyKSAoICBwU2NyZWVuICApLT5kZXZQcml2
YXRlc1tzaGFkb3dTY3JQcml2YXRlSW5kZXhdLnB0cikgIDsKICAgIFBpeG1hcFB0cglwU2hhZG93
ID0gKFBpeG1hcFB0cikgcFNjcmVlbi0+ZGV2UHJpdmF0ZTsKICAgIAogICAgaWYgKCEgKCggICAm
cFNjclByaXYtPmRhbWFnZSAgKS0+ZGF0YSAmJiAhKCAgICZwU2NyUHJpdi0+ZGFtYWdlICApLT5k
YXRhLT5udW1SZWN0cykgICkKICAgIHsKCW1pSW50ZXJzZWN0KCAgJnBTY3JQcml2LT5kYW1hZ2Ug
LCAgICZwU2NyUHJpdi0+ZGFtYWdlICwgIAoJCQkgICZXaW5kb3dUYWJsZVtwU2NyZWVuLT5teU51
bV0tPmJvcmRlclNpemUgKSA7CgkoKnBTY3JQcml2LT51cGRhdGUpIChwU2NyZWVuLCBwU2hhZG93
LCAmcFNjclByaXYtPmRhbWFnZSk7Cgl7IHsgaWYgKCggICAgJnBTY3JQcml2LT5kYW1hZ2UgICkt
PmRhdGEgJiYgKCAgICAmcFNjclByaXYtPmRhbWFnZSAgKS0+ZGF0YS0+c2l6ZSkgWGZyZWUoKHBv
aW50ZXIpKCAoICAgICZwU2NyUHJpdi0+ZGFtYWdlICApLT5kYXRhICkpIDsgfSA7ICggICZwU2Ny
UHJpdi0+ZGFtYWdlICktPmV4dGVudHMueDIgPSAoICAmcFNjclByaXYtPmRhbWFnZSApLT5leHRl
bnRzLngxOyAoICAmcFNjclByaXYtPmRhbWFnZSApLT5leHRlbnRzLnkyID0gKCAgJnBTY3JQcml2
LT5kYW1hZ2UgKS0+ZXh0ZW50cy55MTsgKCAgJnBTY3JQcml2LT5kYW1hZ2UgKS0+ZGF0YSA9ICZt
aUVtcHR5RGF0YTsgfSA7CiAgICB9Cn0KCnN0YXRpYyB2b2lkCnNoYWRvd0Jsb2NrSGFuZGxlciAo
cG9pbnRlcglkYXRhLAoJCSAgICAgIE9TVGltZVB0ciBwVGltZW91dCwKCQkgICAgICBwb2ludGVy
IHBSZWFkKQp7CiAgICBTY3JlZW5QdHIJcFNjcmVlbiA9IChTY3JlZW5QdHIpIGRhdGE7CgogICAg
c2hhZG93UmVkaXNwbGF5IChwU2NyZWVuKTsKfQoKc3RhdGljIHZvaWQKc2hhZG93V2FrZXVwSGFu
ZGxlciAocG9pbnRlciBkYXRhLCBpbnQgaSwgcG9pbnRlciBMYXN0U2VsZWN0TWFzaykKewp9Cgpz
dGF0aWMgdm9pZApzaGFkb3dEYW1hZ2VSZWdpb24gKFdpbmRvd1B0ciBwV2luZG93LCBSZWdpb25Q
dHIgcFJlZ2lvbikKewogICAgU2NyZWVuUHRyCXBTY3JlZW4gPSBwV2luZG93LT5kcmF3YWJsZS5w
U2NyZWVuOwogICAgc2hhZG93U2NyUHJpdlB0ciAgICBwU2NyUHJpdiA9ICgoc2hhZG93U2NyUHJp
dlB0cikgKCAgcFNjcmVlbiAgKS0+ZGV2UHJpdmF0ZXNbc2hhZG93U2NyUHJpdmF0ZUluZGV4XS5w
dHIpICA7CgogICAgbWlVbmlvbiggICZwU2NyUHJpdi0+ZGFtYWdlICwgICAmcFNjclByaXYtPmRh
bWFnZSAsICAgcFJlZ2lvbiApIDsKCgoKCn0KCnN0YXRpYyB2b2lkIApzaGFkb3dEYW1hZ2VCb3gg
KFdpbmRvd1B0ciBwV2luZG93LCBCb3hQdHIgcEJveCkKewogICAgUmVnaW9uUmVjCXJlZ2lvbjsK
CiAgICB7IGlmICggIHBCb3ggKSB7ICggICZyZWdpb24gKS0+ZXh0ZW50cyA9ICooICBwQm94ICk7
ICggICZyZWdpb24gKS0+ZGF0YSA9IChSZWdEYXRhUHRyKSgodm9pZCAqKTApIDsgfSBlbHNlIHsg
KCAgJnJlZ2lvbiApLT5leHRlbnRzID0gbWlFbXB0eUJveDsgaWYgKCgoICAxICkgPiAxKSAmJiAo
KCAgJnJlZ2lvbiApLT5kYXRhID0gKFJlZ0RhdGFQdHIpWGFsbG9jKCh1bnNpZ25lZCBsb25nKSgg
KHNpemVvZihSZWdEYXRhUmVjKSArICgoICAgMSAgKSAqIHNpemVvZihCb3hSZWMpKSkgICkpICkp
IHsgKCAgJnJlZ2lvbiApLT5kYXRhLT5zaXplID0gKCAgMSApOyAoICAmcmVnaW9uICktPmRhdGEt
Pm51bVJlY3RzID0gMDsgfSBlbHNlICggICZyZWdpb24gKS0+ZGF0YSA9ICZtaUVtcHR5RGF0YTsg
fSB9IDsKICAgIHNoYWRvd0RhbWFnZVJlZ2lvbiAocFdpbmRvdywgJnJlZ2lvbik7Cn0gICAgCgpz
dGF0aWMgdm9pZApzaGFkb3dEYW1hZ2VSZWN0IChXaW5kb3dQdHIgcFdpbmRvdywgaW50IHgsIGlu
dCB5LCBpbnQgdywgaW50IGgpCnsKICAgIEJveFJlYwlib3g7CgogICAgeCArPSBwV2luZG93LT5k
cmF3YWJsZS54OwogICAgeSArPSBwV2luZG93LT5kcmF3YWJsZS55OwogICAgYm94LngxID0geDsK
ICAgIGJveC54MiA9IHggKyB3OwogICAgYm94LnkxID0geTsKICAgIGJveC55MiA9IHkgKyBoOwog
ICAgc2hhZG93RGFtYWdlQm94IChwV2luZG93LCAmYm94KTsgICAgCn0KCnN0YXRpYyB2b2lkIHNo
YWRvd1ZhbGlkYXRlR0MoR0NQdHIsIHVuc2lnbmVkIGxvbmcsIERyYXdhYmxlUHRyKTsKc3RhdGlj
IHZvaWQgc2hhZG93Q2hhbmdlR0MoR0NQdHIsIHVuc2lnbmVkIGxvbmcpOwpzdGF0aWMgdm9pZCBz
aGFkb3dDb3B5R0MoR0NQdHIsIHVuc2lnbmVkIGxvbmcsIEdDUHRyKTsKc3RhdGljIHZvaWQgc2hh
ZG93RGVzdHJveUdDKEdDUHRyKTsKc3RhdGljIHZvaWQgc2hhZG93Q2hhbmdlQ2xpcChHQ1B0ciwg
aW50LCBwb2ludGVyLCBpbnQpOwpzdGF0aWMgdm9pZCBzaGFkb3dEZXN0cm95Q2xpcChHQ1B0cik7
CnN0YXRpYyB2b2lkIHNoYWRvd0NvcHlDbGlwKEdDUHRyLCBHQ1B0cik7CgpHQ0Z1bmNzIHNoYWRv
d0dDRnVuY3MgPSB7CiAgICBzaGFkb3dWYWxpZGF0ZUdDLCBzaGFkb3dDaGFuZ2VHQywgc2hhZG93
Q29weUdDLCBzaGFkb3dEZXN0cm95R0MsCiAgICBzaGFkb3dDaGFuZ2VDbGlwLCBzaGFkb3dEZXN0
cm95Q2xpcCwgc2hhZG93Q29weUNsaXAKfTsKCmV4dGVybiBHQ09wcyBzaGFkb3dHQ09wczsKCnN0
YXRpYyBCb29sCnNoYWRvd0NyZWF0ZUdDKEdDUHRyIHBHQykKewogICAgU2NyZWVuUHRyIHBTY3Jl
ZW4gPSBwR0MtPnBTY3JlZW47CiAgICBzaGFkb3dTY3JQcml2UHRyICAgIHBTY3JQcml2ID0gKChz
aGFkb3dTY3JQcml2UHRyKSAoICBwU2NyZWVuICApLT5kZXZQcml2YXRlc1tzaGFkb3dTY3JQcml2
YXRlSW5kZXhdLnB0cikgIDsKICAgIHNoYWRvd0dDUHJpdlB0ciAgcEdDUHJpdiA9ICgoc2hhZG93
R0NQcml2UHRyKSAoICBwR0MgICktPmRldlByaXZhdGVzW3NoYWRvd0dDUHJpdmF0ZUluZGV4XS5w
dHIpICA7CiAgICBCb29sIHJldDsKCiAgICB7ICAgcFNjcmVlbiAtPiAgQ3JlYXRlR0MgID0gIHBT
Y3JQcml2IC0+ICBDcmVhdGVHQyA7IH0gOwogICAgaWYoKHJldCA9ICgqcFNjcmVlbi0+Q3JlYXRl
R0MpIChwR0MpKSkgewoJcEdDUHJpdi0+b3BzID0gKCh2b2lkICopMCkgOwoJcEdDUHJpdi0+ZnVu
Y3MgPSBwR0MtPmZ1bmNzOwoJcEdDLT5mdW5jcyA9ICZzaGFkb3dHQ0Z1bmNzOwogICAgfQogICAg
eyAgcFNjclByaXYgLT4gIENyZWF0ZUdDICA9ICAgcFNjcmVlbiAtPiAgQ3JlYXRlR0MgOyAgIHBT
Y3JlZW4gLT4gIENyZWF0ZUdDICA9ICAgc2hhZG93Q3JlYXRlR0MgOyB9IDsKCiAgICByZXR1cm4g
cmV0Owp9CgoKCgoKCgoKCgoKCgoKCgoKCgoKc3RhdGljIHZvaWQKc2hhZG93VmFsaWRhdGVHQygK
ICAgR0NQdHIgICAgICAgICBwR0MsCiAgIHVuc2lnbmVkIGxvbmcgY2hhbmdlcywKICAgRHJhd2Fi
bGVQdHIgICBwRHJhdyAKKXsKICAgIHNoYWRvd0dDUHJpdlB0ciAgcEdDUHJpdiA9ICgoc2hhZG93
R0NQcml2UHRyKSAoICAgcEdDICAgKS0+ZGV2UHJpdmF0ZXNbc2hhZG93R0NQcml2YXRlSW5kZXhd
LnB0cikgIDsgeyAgICBwR0MgIC0+ICBmdW5jcyAgPSAgcEdDUHJpdiAtPiAgZnVuY3MgOyB9IDsg
aWYgKHBHQ1ByaXYtPm9wcykgeyAgICBwR0MgIC0+ICBvcHMgID0gIHBHQ1ByaXYgLT4gIG9wcyA7
IH0gIDsKICAgICgqcEdDLT5mdW5jcy0+VmFsaWRhdGVHQykocEdDLCBjaGFuZ2VzLCBwRHJhdyk7
CiAgICBpZihwRHJhdy0+dHlwZSA9PSAwICkKCXBHQ1ByaXYtPm9wcyA9IHBHQy0+b3BzOyAgIAog
ICAgZWxzZSAKCXBHQ1ByaXYtPm9wcyA9ICgodm9pZCAqKTApIDsKICAgIHsgIHBHQ1ByaXYgLT4g
IGZ1bmNzICA9ICAgIHBHQyAgLT4gIGZ1bmNzIDsgICAgcEdDICAtPiAgZnVuY3MgID0gICAmc2hh
ZG93R0NGdW5jcyA7IH0gOyBpZiAocEdDUHJpdi0+b3BzKSB7ICBwR0NQcml2IC0+ICBvcHMgID0g
ICAgcEdDICAtPiAgb3BzIDsgICAgcEdDICAtPiAgb3BzICA9ICAgJnNoYWRvd0dDT3BzIDsgfSAg
Owp9CgpzdGF0aWMgdm9pZApzaGFkb3dEZXN0cm95R0MoR0NQdHIgcEdDKQp7CiAgICBzaGFkb3dH
Q1ByaXZQdHIgIHBHQ1ByaXYgPSAoKHNoYWRvd0dDUHJpdlB0cikgKCAgIHBHQyAgICktPmRldlBy
aXZhdGVzW3NoYWRvd0dDUHJpdmF0ZUluZGV4XS5wdHIpICA7IHsgICAgcEdDICAtPiAgZnVuY3Mg
ID0gIHBHQ1ByaXYgLT4gIGZ1bmNzIDsgfSA7IGlmIChwR0NQcml2LT5vcHMpIHsgICAgcEdDICAt
PiAgb3BzICA9ICBwR0NQcml2IC0+ICBvcHMgOyB9ICA7CiAgICAoKnBHQy0+ZnVuY3MtPkRlc3Ry
b3lHQykocEdDKTsKICAgIHsgIHBHQ1ByaXYgLT4gIGZ1bmNzICA9ICAgIHBHQyAgLT4gIGZ1bmNz
IDsgICAgcEdDICAtPiAgZnVuY3MgID0gICAmc2hhZG93R0NGdW5jcyA7IH0gOyBpZiAocEdDUHJp
di0+b3BzKSB7ICBwR0NQcml2IC0+ICBvcHMgID0gICAgcEdDICAtPiAgb3BzIDsgICAgcEdDICAt
PiAgb3BzICA9ICAgJnNoYWRvd0dDT3BzIDsgfSAgOwp9CgpzdGF0aWMgdm9pZApzaGFkb3dDaGFu
Z2VHQyAoCiAgICBHQ1B0cgkgICAgcEdDLAogICAgdW5zaWduZWQgbG9uZyAgIG1hc2sKKXsKICAg
IHNoYWRvd0dDUHJpdlB0ciAgcEdDUHJpdiA9ICgoc2hhZG93R0NQcml2UHRyKSAoICAgcEdDICAg
KS0+ZGV2UHJpdmF0ZXNbc2hhZG93R0NQcml2YXRlSW5kZXhdLnB0cikgIDsgeyAgICBwR0MgIC0+
ICBmdW5jcyAgPSAgcEdDUHJpdiAtPiAgZnVuY3MgOyB9IDsgaWYgKHBHQ1ByaXYtPm9wcykgeyAg
ICBwR0MgIC0+ICBvcHMgID0gIHBHQ1ByaXYgLT4gIG9wcyA7IH0gIDsKICAgICgqcEdDLT5mdW5j
cy0+Q2hhbmdlR0MpIChwR0MsIG1hc2spOwogICAgeyAgcEdDUHJpdiAtPiAgZnVuY3MgID0gICAg
cEdDICAtPiAgZnVuY3MgOyAgICBwR0MgIC0+ICBmdW5jcyAgPSAgICZzaGFkb3dHQ0Z1bmNzIDsg
fSA7IGlmIChwR0NQcml2LT5vcHMpIHsgIHBHQ1ByaXYgLT4gIG9wcyAgPSAgICBwR0MgIC0+ICBv
cHMgOyAgICBwR0MgIC0+ICBvcHMgID0gICAmc2hhZG93R0NPcHMgOyB9ICA7Cn0KCnN0YXRpYyB2
b2lkCnNoYWRvd0NvcHlHQyAoCiAgICBHQ1B0cgkgICAgcEdDU3JjLCAKICAgIHVuc2lnbmVkIGxv
bmcgICBtYXNrLAogICAgR0NQdHIJICAgIHBHQ0RzdAopewogICAgc2hhZG93R0NQcml2UHRyICBw
R0NQcml2ID0gKChzaGFkb3dHQ1ByaXZQdHIpICggICBwR0NEc3QgICApLT5kZXZQcml2YXRlc1tz
aGFkb3dHQ1ByaXZhdGVJbmRleF0ucHRyKSAgOyB7ICAgIHBHQ0RzdCAgLT4gIGZ1bmNzICA9ICBw
R0NQcml2IC0+ICBmdW5jcyA7IH0gOyBpZiAocEdDUHJpdi0+b3BzKSB7ICAgIHBHQ0RzdCAgLT4g
IG9wcyAgPSAgcEdDUHJpdiAtPiAgb3BzIDsgfSAgOwogICAgKCpwR0NEc3QtPmZ1bmNzLT5Db3B5
R0MpIChwR0NTcmMsIG1hc2ssIHBHQ0RzdCk7CiAgICB7ICBwR0NQcml2IC0+ICBmdW5jcyAgPSAg
ICBwR0NEc3QgIC0+ICBmdW5jcyA7ICAgIHBHQ0RzdCAgLT4gIGZ1bmNzICA9ICAgJnNoYWRvd0dD
RnVuY3MgOyB9IDsgaWYgKHBHQ1ByaXYtPm9wcykgeyAgcEdDUHJpdiAtPiAgb3BzICA9ICAgIHBH
Q0RzdCAgLT4gIG9wcyA7ICAgIHBHQ0RzdCAgLT4gIG9wcyAgPSAgICZzaGFkb3dHQ09wcyA7IH0g
IDsKfQoKc3RhdGljIHZvaWQKc2hhZG93Q2hhbmdlQ2xpcCAoCiAgICBHQ1B0ciAgIHBHQywKICAg
IGludAkJdHlwZSwKICAgIHBvaW50ZXIJcHZhbHVlLAogICAgaW50CQlucmVjdHMgCil7CiAgICBz
aGFkb3dHQ1ByaXZQdHIgIHBHQ1ByaXYgPSAoKHNoYWRvd0dDUHJpdlB0cikgKCAgIHBHQyAgICkt
PmRldlByaXZhdGVzW3NoYWRvd0dDUHJpdmF0ZUluZGV4XS5wdHIpICA7IHsgICAgcEdDICAtPiAg
ZnVuY3MgID0gIHBHQ1ByaXYgLT4gIGZ1bmNzIDsgfSA7IGlmIChwR0NQcml2LT5vcHMpIHsgICAg
cEdDICAtPiAgb3BzICA9ICBwR0NQcml2IC0+ICBvcHMgOyB9ICA7CiAgICAoKnBHQy0+ZnVuY3Mt
PkNoYW5nZUNsaXApIChwR0MsIHR5cGUsIHB2YWx1ZSwgbnJlY3RzKTsKICAgIHsgIHBHQ1ByaXYg
LT4gIGZ1bmNzICA9ICAgIHBHQyAgLT4gIGZ1bmNzIDsgICAgcEdDICAtPiAgZnVuY3MgID0gICAm
c2hhZG93R0NGdW5jcyA7IH0gOyBpZiAocEdDUHJpdi0+b3BzKSB7ICBwR0NQcml2IC0+ICBvcHMg
ID0gICAgcEdDICAtPiAgb3BzIDsgICAgcEdDICAtPiAgb3BzICA9ICAgJnNoYWRvd0dDT3BzIDsg
fSAgOwp9CgpzdGF0aWMgdm9pZApzaGFkb3dDb3B5Q2xpcChHQ1B0ciBwZ2NEc3QsIEdDUHRyIHBn
Y1NyYykKewogICAgc2hhZG93R0NQcml2UHRyICBwR0NQcml2ID0gKChzaGFkb3dHQ1ByaXZQdHIp
ICggICBwZ2NEc3QgICApLT5kZXZQcml2YXRlc1tzaGFkb3dHQ1ByaXZhdGVJbmRleF0ucHRyKSAg
OyB7ICAgIHBnY0RzdCAgLT4gIGZ1bmNzICA9ICBwR0NQcml2IC0+ICBmdW5jcyA7IH0gOyBpZiAo
cEdDUHJpdi0+b3BzKSB7ICAgIHBnY0RzdCAgLT4gIG9wcyAgPSAgcEdDUHJpdiAtPiAgb3BzIDsg
fSAgOwogICAgKCogcGdjRHN0LT5mdW5jcy0+Q29weUNsaXApKHBnY0RzdCwgcGdjU3JjKTsKICAg
IHsgIHBHQ1ByaXYgLT4gIGZ1bmNzICA9ICAgIHBnY0RzdCAgLT4gIGZ1bmNzIDsgICAgcGdjRHN0
ICAtPiAgZnVuY3MgID0gICAmc2hhZG93R0NGdW5jcyA7IH0gOyBpZiAocEdDUHJpdi0+b3BzKSB7
ICBwR0NQcml2IC0+ICBvcHMgID0gICAgcGdjRHN0ICAtPiAgb3BzIDsgICAgcGdjRHN0ICAtPiAg
b3BzICA9ICAgJnNoYWRvd0dDT3BzIDsgfSAgOwp9CgpzdGF0aWMgdm9pZApzaGFkb3dEZXN0cm95
Q2xpcChHQ1B0ciBwR0MpCnsKICAgIHNoYWRvd0dDUHJpdlB0ciAgcEdDUHJpdiA9ICgoc2hhZG93
R0NQcml2UHRyKSAoICAgcEdDICAgKS0+ZGV2UHJpdmF0ZXNbc2hhZG93R0NQcml2YXRlSW5kZXhd
LnB0cikgIDsgeyAgICBwR0MgIC0+ICBmdW5jcyAgPSAgcEdDUHJpdiAtPiAgZnVuY3MgOyB9IDsg
aWYgKHBHQ1ByaXYtPm9wcykgeyAgICBwR0MgIC0+ICBvcHMgID0gIHBHQ1ByaXYgLT4gIG9wcyA7
IH0gIDsKICAgICgqIHBHQy0+ZnVuY3MtPkRlc3Ryb3lDbGlwKShwR0MpOwogICAgeyAgcEdDUHJp
diAtPiAgZnVuY3MgID0gICAgcEdDICAtPiAgZnVuY3MgOyAgICBwR0MgIC0+ICBmdW5jcyAgPSAg
ICZzaGFkb3dHQ0Z1bmNzIDsgfSA7IGlmIChwR0NQcml2LT5vcHMpIHsgIHBHQ1ByaXYgLT4gIG9w
cyAgPSAgICBwR0MgIC0+ICBvcHMgOyAgICBwR0MgIC0+ICBvcHMgID0gICAmc2hhZG93R0NPcHMg
OyB9ICA7Cn0KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnN0YXRpYyB2b2lkCnNoYWRvd0Nv
bXBvc2l0ZSAoQ0FSRDggICAgICBvcCwKCQkgICBQaWN0dXJlUHRyIHBTcmMsCgkJICAgUGljdHVy
ZVB0ciBwTWFzaywKCQkgICBQaWN0dXJlUHRyIHBEc3QsCgkJICAgSU5UMTYgICAgICB4U3JjLAoJ
CSAgIElOVDE2ICAgICAgeVNyYywKCQkgICBJTlQxNiAgICAgIHhNYXNrLAoJCSAgIElOVDE2ICAg
ICAgeU1hc2ssCgkJICAgSU5UMTYgICAgICB4RHN0LAoJCSAgIElOVDE2ICAgICAgeURzdCwKCQkg
ICBDQVJEMTYgICAgIHdpZHRoLAoJCSAgIENBUkQxNiAgICAgaGVpZ2h0KQp7CiAgICBTY3JlZW5Q
dHIJCXBTY3JlZW4gPSBwRHN0LT5wRHJhd2FibGUtPnBTY3JlZW47CiAgICBQaWN0dXJlU2NyZWVu
UHRyCXBzID0gKChQaWN0dXJlU2NyZWVuUHRyKSAoKCBwU2NyZWVuICktPmRldlByaXZhdGVzW1Bp
Y3R1cmVTY3JlZW5Qcml2YXRlSW5kZXhdLnB0cikpIDsKICAgIHNoYWRvd1NjclByaXZQdHIgICAg
cFNjclByaXYgPSAoKHNoYWRvd1NjclByaXZQdHIpICggIHBTY3JlZW4gICktPmRldlByaXZhdGVz
W3NoYWRvd1NjclByaXZhdGVJbmRleF0ucHRyKSAgOwogICAgCiAgICB7ICAgcHMgLT4gIENvbXBv
c2l0ZSAgPSAgcFNjclByaXYgLT4gIENvbXBvc2l0ZSA7IH0gOwogICAgKCpwcy0+Q29tcG9zaXRl
KSAob3AsCgkJICAgICAgIHBTcmMsCgkJICAgICAgIHBNYXNrLAoJCSAgICAgICBwRHN0LAoJCSAg
ICAgICB4U3JjLAoJCSAgICAgICB5U3JjLAoJCSAgICAgICB4TWFzaywKCQkgICAgICAgeU1hc2ss
CgkJICAgICAgIHhEc3QsCgkJICAgICAgIHlEc3QsCgkJICAgICAgIHdpZHRoLAoJCSAgICAgICBo
ZWlnaHQpOwogICAgeyAgcFNjclByaXYgLT4gIENvbXBvc2l0ZSAgPSAgIHBzIC0+ICBDb21wb3Np
dGUgOyAgIHBzIC0+ICBDb21wb3NpdGUgID0gICBzaGFkb3dDb21wb3NpdGUgOyB9IDsKICAgIGlm
IChwRHN0LT5wRHJhd2FibGUtPnR5cGUgPT0gMCApCglzaGFkb3dEYW1hZ2VSZWN0ICgoV2luZG93
UHRyKSBwRHN0LT5wRHJhd2FibGUsIHhEc3QsIHlEc3QsCgkJCSAgICB3aWR0aCwgaGVpZ2h0KTsK
fQoKc3RhdGljIHZvaWQKc2hhZG93R2x5cGhzIChDQVJEOAkJb3AsCgkJUGljdHVyZVB0cglwU3Jj
LAoJCVBpY3R1cmVQdHIJcERzdCwKCQlQaWN0Rm9ybWF0UHRyCW1hc2tGb3JtYXQsCgkJSU5UMTYJ
CXhTcmMsCgkJSU5UMTYJCXlTcmMsCgkJaW50CQlubGlzdCwKCQlHbHlwaExpc3RQdHIJbGlzdCwK
CQlHbHlwaFB0cgkqZ2x5cGhzKQp7CiAgICBTY3JlZW5QdHIJCXBTY3JlZW4gPSBwRHN0LT5wRHJh
d2FibGUtPnBTY3JlZW47CiAgICBQaWN0dXJlU2NyZWVuUHRyCXBzID0gKChQaWN0dXJlU2NyZWVu
UHRyKSAoKCBwU2NyZWVuICktPmRldlByaXZhdGVzW1BpY3R1cmVTY3JlZW5Qcml2YXRlSW5kZXhd
LnB0cikpIDsKICAgIHNoYWRvd1NjclByaXZQdHIgICAgcFNjclByaXYgPSAoKHNoYWRvd1NjclBy
aXZQdHIpICggIHBTY3JlZW4gICktPmRldlByaXZhdGVzW3NoYWRvd1NjclByaXZhdGVJbmRleF0u
cHRyKSAgOwogICAgaW50CQkJeCwgeTsKICAgIGludAkJCW47CiAgICBHbHlwaFB0cgkJZ2x5cGg7
CgogICAgeyAgIHBzIC0+ICBHbHlwaHMgID0gIHBTY3JQcml2IC0+ICBHbHlwaHMgOyB9IDsKICAg
ICgqcHMtPkdseXBocykgKG9wLCBwU3JjLCBwRHN0LCBtYXNrRm9ybWF0LCB4U3JjLCB5U3JjLCBu
bGlzdCwgbGlzdCwgZ2x5cGhzKTsKICAgIHsgIHBTY3JQcml2IC0+ICBHbHlwaHMgID0gICBwcyAt
PiAgR2x5cGhzIDsgICBwcyAtPiAgR2x5cGhzICA9ICAgc2hhZG93R2x5cGhzIDsgfSA7CiAgICBp
ZiAocERzdC0+cERyYXdhYmxlLT50eXBlID09IDAgKQogICAgewoJeCA9IHhTcmM7Cgl5ID0geVNy
YzsKCXdoaWxlIChubGlzdC0tKQoJewoJICAgIHggKz0gbGlzdC0+eE9mZjsKCSAgICB5ICs9IGxp
c3QtPnlPZmY7CgkgICAgbiA9IGxpc3QtPmxlbjsKCSAgICB3aGlsZSAobi0tKQoJICAgIHsKCQln
bHlwaCA9ICpnbHlwaHMrKzsKCQlzaGFkb3dEYW1hZ2VSZWN0ICgoV2luZG93UHRyKSBwRHN0LT5w
RHJhd2FibGUsCgkJCQkgICAgeCAtIGdseXBoLT5pbmZvLngsCgkJCQkgICAgeSAtIGdseXBoLT5p
bmZvLnksCgkJCQkgICAgZ2x5cGgtPmluZm8ud2lkdGgsCgkJCQkgICAgZ2x5cGgtPmluZm8uaGVp
Z2h0KTsKCQl4ICs9IGdseXBoLT5pbmZvLnhPZmY7CgkJeSArPSBnbHlwaC0+aW5mby55T2ZmOwoJ
ICAgIH0KCSAgICBsaXN0Kys7Cgl9CiAgICB9Cn0KCgogCgoKc3RhdGljIHZvaWQKc2hhZG93Rmls
bFNwYW5zKAogICAgRHJhd2FibGVQdHIgcERyYXcsCiAgICBHQwkJKnBHQywKICAgIGludAkJbklu
aXQsCQogICAgRERYUG9pbnRQdHIgcHB0SW5pdCwJCiAgICBpbnQgCSpwd2lkdGhJbml0LAkJCiAg
ICBpbnQgCWZTb3J0ZWQgCil7CiAgICBzaGFkb3dHQ1ByaXZQdHIgIHBHQ1ByaXYgPSAoKHNoYWRv
d0dDUHJpdlB0cikgKCAgIHBHQyAgICktPmRldlByaXZhdGVzW3NoYWRvd0dDUHJpdmF0ZUluZGV4
XS5wdHIpICA7IEdDRnVuY3MgKm9sZEZ1bmNzID0gIHBHQyAtPmZ1bmNzOyB7ICAgIHBHQyAgLT4g
IGZ1bmNzICA9ICBwR0NQcml2IC0+ICBmdW5jcyA7IH0gOyB7ICAgIHBHQyAgLT4gIG9wcyAgPSAg
cEdDUHJpdiAtPiAgb3BzIDsgfSA7IDsgICAgCgogICAgaWYoMSAgJiYgbkluaXQpIHsKCUREWFBv
aW50UHRyIHBwdCA9IHBwdEluaXQ7CglpbnQgKnB3aWR0aCA9IHB3aWR0aEluaXQ7CglpbnQgaSA9
IG5Jbml0OwoJQm94UmVjIGJveDsKCglib3gueDEgPSBwcHQtPng7Cglib3gueDIgPSBib3gueDEg
KyAqcHdpZHRoOwoJYm94LnkyID0gYm94LnkxID0gcHB0LT55OwoKCXdoaWxlKC0taSkgewoJICAg
cHB0Kys7CgkgICBwd2lkdGhJbml0Kys7CgkgICBpZihib3gueDEgPiBwcHQtPngpIGJveC54MSA9
IHBwdC0+eDsKCSAgIGlmKGJveC54MiA8IChwcHQtPnggKyAqcHdpZHRoKSkgCgkJYm94LngyID0g
cHB0LT54ICsgKnB3aWR0aDsKCSAgIGlmKGJveC55MSA+IHBwdC0+eSkgYm94LnkxID0gcHB0LT55
OwoJICAgZWxzZSBpZihib3gueTIgPCBwcHQtPnkpIGJveC55MiA9IHBwdC0+eTsKCX0KCglib3gu
eTIrKzsKCgkoKnBHQy0+b3BzLT5GaWxsU3BhbnMpKHBEcmF3LCBwR0MsIG5Jbml0LCBwcHRJbml0
LCBwd2lkdGhJbml0LCBmU29ydGVkKTsKCgl7IHsgICBib3ggIC54MSArPSAgICAgcERyYXcgIC0+
eDsgICBib3ggIC54MiArPSAgICAgcERyYXcgIC0+eDsgICBib3ggIC55MSArPSAgICAgcERyYXcg
IC0+eTsgICBib3ggIC55MiArPSAgICAgcERyYXcgIC0+eTsgfSA7IHsgQm94UHRyIGV4dGVudHMg
PSAmICAgIHBHQyAgLT5wQ29tcG9zaXRlQ2xpcC0+ZXh0ZW50czsgaWYoICBib3ggIC54MSA8IGV4
dGVudHMtPngxKSAgIGJveCAgLngxID0gZXh0ZW50cy0+eDE7IGlmKCAgYm94ICAueDIgPiBleHRl
bnRzLT54MikgICBib3ggIC54MiA9IGV4dGVudHMtPngyOyBpZiggIGJveCAgLnkxIDwgZXh0ZW50
cy0+eTEpICAgYm94ICAueTEgPSBleHRlbnRzLT55MTsgaWYoICBib3ggIC55MiA+IGV4dGVudHMt
PnkyKSAgIGJveCAgLnkyID0gZXh0ZW50cy0+eTI7IH0gOyB9IDsKCWlmKCgoKCBib3ggLngyIC0g
IGJveCAueDEpID4gMCkgJiYgKCggYm94IC55MiAtICBib3ggLnkxKSA+IDApKSApCgkgICBzaGFk
b3dEYW1hZ2VCb3ggKChXaW5kb3dQdHIpIHBEcmF3LCAmYm94KTsKICAgIH0gZWxzZQoJKCpwR0Mt
Pm9wcy0+RmlsbFNwYW5zKShwRHJhdywgcEdDLCBuSW5pdCwgcHB0SW5pdCwgcHdpZHRoSW5pdCwg
ZlNvcnRlZCk7CgogICAgeyAgcEdDUHJpdiAtPiAgZnVuY3MgID0gICAgcEdDICAtPiAgZnVuY3Mg
OyAgICBwR0MgIC0+ICBmdW5jcyAgPSAgIG9sZEZ1bmNzIDsgfSA7IHsgIHBHQ1ByaXYgLT4gIG9w
cyAgPSAgICBwR0MgIC0+ICBvcHMgOyAgICBwR0MgIC0+ICBvcHMgID0gICAmc2hhZG93R0NPcHMg
OyB9ICA7Cn0KCnN0YXRpYyB2b2lkCnNoYWRvd1NldFNwYW5zKAogICAgRHJhd2FibGVQdHIJCXBE
cmF3LAogICAgR0NQdHIJCXBHQywKICAgIGNoYXIJCSpwY2hhcnNyYywKICAgIEREWFBvaW50UHRy
IAlwcHRJbml0LAogICAgaW50CQkJKnB3aWR0aEluaXQsCiAgICBpbnQJCQluc3BhbnMsCiAgICBp
bnQJCQlmU29ydGVkIAopewogICAgc2hhZG93R0NQcml2UHRyICBwR0NQcml2ID0gKChzaGFkb3dH
Q1ByaXZQdHIpICggICBwR0MgICApLT5kZXZQcml2YXRlc1tzaGFkb3dHQ1ByaXZhdGVJbmRleF0u
cHRyKSAgOyBHQ0Z1bmNzICpvbGRGdW5jcyA9ICBwR0MgLT5mdW5jczsgeyAgICBwR0MgIC0+ICBm
dW5jcyAgPSAgcEdDUHJpdiAtPiAgZnVuY3MgOyB9IDsgeyAgICBwR0MgIC0+ICBvcHMgID0gIHBH
Q1ByaXYgLT4gIG9wcyA7IH0gOyA7CgogICAgaWYoMSAgJiYgbnNwYW5zKSB7CglERFhQb2ludFB0
ciBwcHQgPSBwcHRJbml0OwoJaW50ICpwd2lkdGggPSBwd2lkdGhJbml0OwoJaW50IGkgPSBuc3Bh
bnM7CglCb3hSZWMgYm94OwoKCWJveC54MSA9IHBwdC0+eDsKCWJveC54MiA9IGJveC54MSArICpw
d2lkdGg7Cglib3gueTIgPSBib3gueTEgPSBwcHQtPnk7CgoJd2hpbGUoLS1pKSB7CgkgICBwcHQr
KzsKCSAgIHB3aWR0aCsrOwoJICAgaWYoYm94LngxID4gcHB0LT54KSBib3gueDEgPSBwcHQtPng7
CgkgICBpZihib3gueDIgPCAocHB0LT54ICsgKnB3aWR0aCkpIAoJCWJveC54MiA9IHBwdC0+eCAr
ICpwd2lkdGg7CgkgICBpZihib3gueTEgPiBwcHQtPnkpIGJveC55MSA9IHBwdC0+eTsKCSAgIGVs
c2UgaWYoYm94LnkyIDwgcHB0LT55KSBib3gueTIgPSBwcHQtPnk7Cgl9CgoJYm94LnkyKys7CgoJ
KCpwR0MtPm9wcy0+U2V0U3BhbnMpKHBEcmF3LCBwR0MsIHBjaGFyc3JjLCBwcHRJbml0LCAKCQkJ
CXB3aWR0aEluaXQsIG5zcGFucywgZlNvcnRlZCk7CgoJeyB7ICAgYm94ICAueDEgKz0gICAgIHBE
cmF3ICAtPng7ICAgYm94ICAueDIgKz0gICAgIHBEcmF3ICAtPng7ICAgYm94ICAueTEgKz0gICAg
IHBEcmF3ICAtPnk7ICAgYm94ICAueTIgKz0gICAgIHBEcmF3ICAtPnk7IH0gOyB7IEJveFB0ciBl
eHRlbnRzID0gJiAgICBwR0MgIC0+cENvbXBvc2l0ZUNsaXAtPmV4dGVudHM7IGlmKCAgYm94ICAu
eDEgPCBleHRlbnRzLT54MSkgICBib3ggIC54MSA9IGV4dGVudHMtPngxOyBpZiggIGJveCAgLngy
ID4gZXh0ZW50cy0+eDIpICAgYm94ICAueDIgPSBleHRlbnRzLT54MjsgaWYoICBib3ggIC55MSA8
IGV4dGVudHMtPnkxKSAgIGJveCAgLnkxID0gZXh0ZW50cy0+eTE7IGlmKCAgYm94ICAueTIgPiBl
eHRlbnRzLT55MikgICBib3ggIC55MiA9IGV4dGVudHMtPnkyOyB9IDsgfSA7CglpZigoKCggYm94
IC54MiAtICBib3ggLngxKSA+IDApICYmICgoIGJveCAueTIgLSAgYm94IC55MSkgPiAwKSkgKQoJ
ICAgc2hhZG93RGFtYWdlQm94ICgoV2luZG93UHRyKSBwRHJhdywgJmJveCk7CiAgICB9IGVsc2UK
CSgqcEdDLT5vcHMtPlNldFNwYW5zKShwRHJhdywgcEdDLCBwY2hhcnNyYywgcHB0SW5pdCwgCgkJ
CQlwd2lkdGhJbml0LCBuc3BhbnMsIGZTb3J0ZWQpOwoKICAgIHsgIHBHQ1ByaXYgLT4gIGZ1bmNz
ICA9ICAgIHBHQyAgLT4gIGZ1bmNzIDsgICAgcEdDICAtPiAgZnVuY3MgID0gICBvbGRGdW5jcyA7
IH0gOyB7ICBwR0NQcml2IC0+ICBvcHMgID0gICAgcEdDICAtPiAgb3BzIDsgICAgcEdDICAtPiAg
b3BzICA9ICAgJnNoYWRvd0dDT3BzIDsgfSAgOwp9CgpzdGF0aWMgdm9pZApzaGFkb3dQdXRJbWFn
ZSgKICAgIERyYXdhYmxlUHRyIHBEcmF3LAogICAgR0NQdHIJcEdDLAogICAgaW50CQlkZXB0aCwg
CiAgICBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwKICAgIGludAkJbGVmdFBhZCwKICAgIGlu
dAkJZm9ybWF0LAogICAgY2hhciAJKnBJbWFnZSAKKXsKICAgIHNoYWRvd0dDUHJpdlB0ciAgcEdD
UHJpdiA9ICgoc2hhZG93R0NQcml2UHRyKSAoICAgcEdDICAgKS0+ZGV2UHJpdmF0ZXNbc2hhZG93
R0NQcml2YXRlSW5kZXhdLnB0cikgIDsgR0NGdW5jcyAqb2xkRnVuY3MgPSAgcEdDIC0+ZnVuY3M7
IHsgICAgcEdDICAtPiAgZnVuY3MgID0gIHBHQ1ByaXYgLT4gIGZ1bmNzIDsgfSA7IHsgICAgcEdD
ICAtPiAgb3BzICA9ICBwR0NQcml2IC0+ICBvcHMgOyB9IDsgOwogICAgKCpwR0MtPm9wcy0+UHV0
SW1hZ2UpKHBEcmF3LCBwR0MsIGRlcHRoLCB4LCB5LCB3LCBoLCAKCQlsZWZ0UGFkLCBmb3JtYXQs
IHBJbWFnZSk7CiAgICB7ICBwR0NQcml2IC0+ICBmdW5jcyAgPSAgICBwR0MgIC0+ICBmdW5jcyA7
ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICAgb2xkRnVuY3MgOyB9IDsgeyAgcEdDUHJpdiAtPiAgb3Bz
ICA9ICAgIHBHQyAgLT4gIG9wcyA7ICAgIHBHQyAgLT4gIG9wcyAgPSAgICZzaGFkb3dHQ09wcyA7
IH0gIDsKCiAgICBpZigxICkgewoJQm94UmVjIGJveDsKCglib3gueDEgPSB4ICsgcERyYXctPng7
Cglib3gueDIgPSBib3gueDEgKyB3OwoJYm94LnkxID0geSArIHBEcmF3LT55OwoJYm94LnkyID0g
Ym94LnkxICsgaDsKCgl7IEJveFB0ciBleHRlbnRzID0gJiAgcEdDIC0+cENvbXBvc2l0ZUNsaXAt
PmV4dGVudHM7IGlmKCBib3ggLngxIDwgZXh0ZW50cy0+eDEpICBib3ggLngxID0gZXh0ZW50cy0+
eDE7IGlmKCBib3ggLngyID4gZXh0ZW50cy0+eDIpICBib3ggLngyID0gZXh0ZW50cy0+eDI7IGlm
KCBib3ggLnkxIDwgZXh0ZW50cy0+eTEpICBib3ggLnkxID0gZXh0ZW50cy0+eTE7IGlmKCBib3gg
LnkyID4gZXh0ZW50cy0+eTIpICBib3ggLnkyID0gZXh0ZW50cy0+eTI7IH0gOwoJaWYoKCgoIGJv
eCAueDIgLSAgYm94IC54MSkgPiAwKSAmJiAoKCBib3ggLnkyIC0gIGJveCAueTEpID4gMCkpICkK
CSAgIHNoYWRvd0RhbWFnZUJveCAoKFdpbmRvd1B0cikgcERyYXcsICZib3gpOwogICAgfQp9Cgpz
dGF0aWMgUmVnaW9uUHRyCnNoYWRvd0NvcHlBcmVhKAogICAgRHJhd2FibGVQdHIgcFNyYywKICAg
IERyYXdhYmxlUHRyIHBEc3QsCiAgICBHQyAqcEdDLAogICAgaW50IHNyY3gsIGludCBzcmN5LAog
ICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogICAgaW50IGRzdHgsIGludCBkc3R5IAopewogICAg
UmVnaW9uUHRyIHJldDsKICAgIHNoYWRvd0dDUHJpdlB0ciAgcEdDUHJpdiA9ICgoc2hhZG93R0NQ
cml2UHRyKSAoICAgcEdDICAgKS0+ZGV2UHJpdmF0ZXNbc2hhZG93R0NQcml2YXRlSW5kZXhdLnB0
cikgIDsgR0NGdW5jcyAqb2xkRnVuY3MgPSAgcEdDIC0+ZnVuY3M7IHsgICAgcEdDICAtPiAgZnVu
Y3MgID0gIHBHQ1ByaXYgLT4gIGZ1bmNzIDsgfSA7IHsgICAgcEdDICAtPiAgb3BzICA9ICBwR0NQ
cml2IC0+ICBvcHMgOyB9IDsgOwogICAgcmV0ID0gKCpwR0MtPm9wcy0+Q29weUFyZWEpKHBTcmMs
IHBEc3QsCiAgICAgICAgICAgIHBHQywgc3JjeCwgc3JjeSwgd2lkdGgsIGhlaWdodCwgZHN0eCwg
ZHN0eSk7CiAgICB7ICBwR0NQcml2IC0+ICBmdW5jcyAgPSAgICBwR0MgIC0+ICBmdW5jcyA7ICAg
IHBHQyAgLT4gIGZ1bmNzICA9ICAgb2xkRnVuY3MgOyB9IDsgeyAgcEdDUHJpdiAtPiAgb3BzICA9
ICAgIHBHQyAgLT4gIG9wcyA7ICAgIHBHQyAgLT4gIG9wcyAgPSAgICZzaGFkb3dHQ09wcyA7IH0g
IDsKCiAgICBpZigxICkgewoJQm94UmVjIGJveDsKCglib3gueDEgPSBkc3R4ICsgcERzdC0+eDsK
CWJveC54MiA9IGJveC54MSArIHdpZHRoOwoJYm94LnkxID0gZHN0eSArIHBEc3QtPnk7Cglib3gu
eTIgPSBib3gueTEgKyBoZWlnaHQ7CgoJeyBCb3hQdHIgZXh0ZW50cyA9ICYgIHBHQyAtPnBDb21w
b3NpdGVDbGlwLT5leHRlbnRzOyBpZiggYm94IC54MSA8IGV4dGVudHMtPngxKSAgYm94IC54MSA9
IGV4dGVudHMtPngxOyBpZiggYm94IC54MiA+IGV4dGVudHMtPngyKSAgYm94IC54MiA9IGV4dGVu
dHMtPngyOyBpZiggYm94IC55MSA8IGV4dGVudHMtPnkxKSAgYm94IC55MSA9IGV4dGVudHMtPnkx
OyBpZiggYm94IC55MiA+IGV4dGVudHMtPnkyKSAgYm94IC55MiA9IGV4dGVudHMtPnkyOyB9IDsK
CWlmKCgoKCBib3ggLngyIC0gIGJveCAueDEpID4gMCkgJiYgKCggYm94IC55MiAtICBib3ggLnkx
KSA+IDApKSApCgkgICBzaGFkb3dEYW1hZ2VCb3ggKChXaW5kb3dQdHIpIHBEc3QsICZib3gpOwog
ICAgfQoKICAgIHJldHVybiByZXQ7Cn0KCnN0YXRpYyBSZWdpb25QdHIKc2hhZG93Q29weVBsYW5l
KAogICAgRHJhd2FibGVQdHIJcFNyYywKICAgIERyYXdhYmxlUHRyCXBEc3QsCiAgICBHQ1B0ciBw
R0MsCiAgICBpbnQJc3JjeCwgaW50IHNyY3ksCiAgICBpbnQJd2lkdGgsIGludCBoZWlnaHQsCiAg
ICBpbnQJZHN0eCwgaW50IGRzdHksCiAgICB1bnNpZ25lZCBsb25nIGJpdFBsYW5lIAopewogICAg
UmVnaW9uUHRyIHJldDsKICAgIHNoYWRvd0dDUHJpdlB0ciAgcEdDUHJpdiA9ICgoc2hhZG93R0NQ
cml2UHRyKSAoICAgcEdDICAgKS0+ZGV2UHJpdmF0ZXNbc2hhZG93R0NQcml2YXRlSW5kZXhdLnB0
cikgIDsgR0NGdW5jcyAqb2xkRnVuY3MgPSAgcEdDIC0+ZnVuY3M7IHsgICAgcEdDICAtPiAgZnVu
Y3MgID0gIHBHQ1ByaXYgLT4gIGZ1bmNzIDsgfSA7IHsgICAgcEdDICAtPiAgb3BzICA9ICBwR0NQ
cml2IC0+ICBvcHMgOyB9IDsgOwogICAgcmV0ID0gKCpwR0MtPm9wcy0+Q29weVBsYW5lKShwU3Jj
LCBwRHN0LAoJICAgICAgIHBHQywgc3JjeCwgc3JjeSwgd2lkdGgsIGhlaWdodCwgZHN0eCwgZHN0
eSwgYml0UGxhbmUpOwogICAgeyAgcEdDUHJpdiAtPiAgZnVuY3MgID0gICAgcEdDICAtPiAgZnVu
Y3MgOyAgICBwR0MgIC0+ICBmdW5jcyAgPSAgIG9sZEZ1bmNzIDsgfSA7IHsgIHBHQ1ByaXYgLT4g
IG9wcyAgPSAgICBwR0MgIC0+ICBvcHMgOyAgICBwR0MgIC0+ICBvcHMgID0gICAmc2hhZG93R0NP
cHMgOyB9ICA7CgogICAgaWYoMSApIHsKCUJveFJlYyBib3g7CgoJYm94LngxID0gZHN0eCArIHBE
c3QtPng7Cglib3gueDIgPSBib3gueDEgKyB3aWR0aDsKCWJveC55MSA9IGRzdHkgKyBwRHN0LT55
OwoJYm94LnkyID0gYm94LnkxICsgaGVpZ2h0OwoKCXsgQm94UHRyIGV4dGVudHMgPSAmICBwR0Mg
LT5wQ29tcG9zaXRlQ2xpcC0+ZXh0ZW50czsgaWYoIGJveCAueDEgPCBleHRlbnRzLT54MSkgIGJv
eCAueDEgPSBleHRlbnRzLT54MTsgaWYoIGJveCAueDIgPiBleHRlbnRzLT54MikgIGJveCAueDIg
PSBleHRlbnRzLT54MjsgaWYoIGJveCAueTEgPCBleHRlbnRzLT55MSkgIGJveCAueTEgPSBleHRl
bnRzLT55MTsgaWYoIGJveCAueTIgPiBleHRlbnRzLT55MikgIGJveCAueTIgPSBleHRlbnRzLT55
MjsgfSA7CglpZigoKCggYm94IC54MiAtICBib3ggLngxKSA+IDApICYmICgoIGJveCAueTIgLSAg
Ym94IC55MSkgPiAwKSkgKQoJICAgc2hhZG93RGFtYWdlQm94ICgoV2luZG93UHRyKSBwRHN0LCAm
Ym94KTsKICAgIH0KCiAgICByZXR1cm4gcmV0Owp9CgpzdGF0aWMgdm9pZApzaGFkb3dQb2x5UG9p
bnQoCiAgICBEcmF3YWJsZVB0ciBwRHJhdywKICAgIEdDUHRyIHBHQywKICAgIGludCBtb2RlLAog
ICAgaW50IG5wdCwKICAgIHhQb2ludCAqcHB0SW5pdCAKKXsKICAgIHNoYWRvd0dDUHJpdlB0ciAg
cEdDUHJpdiA9ICgoc2hhZG93R0NQcml2UHRyKSAoICAgcEdDICAgKS0+ZGV2UHJpdmF0ZXNbc2hh
ZG93R0NQcml2YXRlSW5kZXhdLnB0cikgIDsgR0NGdW5jcyAqb2xkRnVuY3MgPSAgcEdDIC0+ZnVu
Y3M7IHsgICAgcEdDICAtPiAgZnVuY3MgID0gIHBHQ1ByaXYgLT4gIGZ1bmNzIDsgfSA7IHsgICAg
cEdDICAtPiAgb3BzICA9ICBwR0NQcml2IC0+ICBvcHMgOyB9IDsgOwogICAgKCpwR0MtPm9wcy0+
UG9seVBvaW50KShwRHJhdywgcEdDLCBtb2RlLCBucHQsIHBwdEluaXQpOwogICAgeyAgcEdDUHJp
diAtPiAgZnVuY3MgID0gICAgcEdDICAtPiAgZnVuY3MgOyAgICBwR0MgIC0+ICBmdW5jcyAgPSAg
IG9sZEZ1bmNzIDsgfSA7IHsgIHBHQ1ByaXYgLT4gIG9wcyAgPSAgICBwR0MgIC0+ICBvcHMgOyAg
ICBwR0MgIC0+ICBvcHMgID0gICAmc2hhZG93R0NPcHMgOyB9ICA7CgogICAgaWYoMSAgJiYgbnB0
KSB7CglCb3hSZWMgYm94OwoKCWJveC54MiA9IGJveC54MSA9IHBwdEluaXQtPng7Cglib3gueTIg
PSBib3gueTEgPSBwcHRJbml0LT55OwoKCSAKCgl3aGlsZSgtLW5wdCkgewoJICAgcHB0SW5pdCsr
OwoJICAgaWYoYm94LngxID4gcHB0SW5pdC0+eCkgYm94LngxID0gcHB0SW5pdC0+eDsKCSAgIGVs
c2UgaWYoYm94LngyIDwgcHB0SW5pdC0+eCkgYm94LngyID0gcHB0SW5pdC0+eDsKCSAgIGlmKGJv
eC55MSA+IHBwdEluaXQtPnkpIGJveC55MSA9IHBwdEluaXQtPnk7CgkgICBlbHNlIGlmKGJveC55
MiA8IHBwdEluaXQtPnkpIGJveC55MiA9IHBwdEluaXQtPnk7Cgl9CgoJYm94LngyKys7Cglib3gu
eTIrKzsKCgl7IHsgICBib3ggIC54MSArPSAgICAgcERyYXcgIC0+eDsgICBib3ggIC54MiArPSAg
ICAgcERyYXcgIC0+eDsgICBib3ggIC55MSArPSAgICAgcERyYXcgIC0+eTsgICBib3ggIC55MiAr
PSAgICAgcERyYXcgIC0+eTsgfSA7IHsgQm94UHRyIGV4dGVudHMgPSAmICAgIHBHQyAgLT5wQ29t
cG9zaXRlQ2xpcC0+ZXh0ZW50czsgaWYoICBib3ggIC54MSA8IGV4dGVudHMtPngxKSAgIGJveCAg
LngxID0gZXh0ZW50cy0+eDE7IGlmKCAgYm94ICAueDIgPiBleHRlbnRzLT54MikgICBib3ggIC54
MiA9IGV4dGVudHMtPngyOyBpZiggIGJveCAgLnkxIDwgZXh0ZW50cy0+eTEpICAgYm94ICAueTEg
PSBleHRlbnRzLT55MTsgaWYoICBib3ggIC55MiA+IGV4dGVudHMtPnkyKSAgIGJveCAgLnkyID0g
ZXh0ZW50cy0+eTI7IH0gOyB9IDsKCWlmKCgoKCBib3ggLngyIC0gIGJveCAueDEpID4gMCkgJiYg
KCggYm94IC55MiAtICBib3ggLnkxKSA+IDApKSApCgkgICBzaGFkb3dEYW1hZ2VCb3ggKChXaW5k
b3dQdHIpIHBEcmF3LCAmYm94KTsKICAgIH0KfQoKc3RhdGljIHZvaWQKc2hhZG93UG9seWxpbmVz
KAogICAgRHJhd2FibGVQdHIgcERyYXcsCiAgICBHQ1B0cglwR0MsCiAgICBpbnQJCW1vZGUsCQkK
ICAgIGludAkJbnB0LAkJCiAgICBERFhQb2ludFB0ciBwcHRJbml0IAopewogICAgc2hhZG93R0NQ
cml2UHRyICBwR0NQcml2ID0gKChzaGFkb3dHQ1ByaXZQdHIpICggICBwR0MgICApLT5kZXZQcml2
YXRlc1tzaGFkb3dHQ1ByaXZhdGVJbmRleF0ucHRyKSAgOyBHQ0Z1bmNzICpvbGRGdW5jcyA9ICBw
R0MgLT5mdW5jczsgeyAgICBwR0MgIC0+ICBmdW5jcyAgPSAgcEdDUHJpdiAtPiAgZnVuY3MgOyB9
IDsgeyAgICBwR0MgIC0+ICBvcHMgID0gIHBHQ1ByaXYgLT4gIG9wcyA7IH0gOyA7CiAgICAoKnBH
Qy0+b3BzLT5Qb2x5bGluZXMpKHBEcmF3LCBwR0MsIG1vZGUsIG5wdCwgcHB0SW5pdCk7CiAgICB7
ICBwR0NQcml2IC0+ICBmdW5jcyAgPSAgICBwR0MgIC0+ICBmdW5jcyA7ICAgIHBHQyAgLT4gIGZ1
bmNzICA9ICAgb2xkRnVuY3MgOyB9IDsgeyAgcEdDUHJpdiAtPiAgb3BzICA9ICAgIHBHQyAgLT4g
IG9wcyA7ICAgIHBHQyAgLT4gIG9wcyAgPSAgICZzaGFkb3dHQ09wcyA7IH0gIDsKCgogICAgaWYo
MSAgJiYgbnB0KSB7CglCb3hSZWMgYm94OwoJaW50IGV4dHJhID0gcEdDLT5saW5lV2lkdGggPj4g
MTsKCglib3gueDIgPSBib3gueDEgPSBwcHRJbml0LT54OwoJYm94LnkyID0gYm94LnkxID0gcHB0
SW5pdC0+eTsKCglpZihucHQgPiAxKSB7CgkgICBpZihwR0MtPmpvaW5TdHlsZSA9PSAwICkKCQll
eHRyYSA9IDYgKiBwR0MtPmxpbmVXaWR0aDsKCSAgIGVsc2UgaWYocEdDLT5jYXBTdHlsZSA9PSAz
ICkKCQlleHRyYSA9IHBHQy0+bGluZVdpZHRoOwogICAgICAgIH0KCglpZihtb2RlID09IDEgKSB7
CgkgICBpbnQgeCA9IGJveC54MTsKCSAgIGludCB5ID0gYm94LnkxOwoJICAgd2hpbGUoLS1ucHQp
IHsKCQlwcHRJbml0Kys7CgkJeCArPSBwcHRJbml0LT54OwoJCXkgKz0gcHB0SW5pdC0+eTsKCQlp
Zihib3gueDEgPiB4KSBib3gueDEgPSB4OwoJCWVsc2UgaWYoYm94LngyIDwgeCkgYm94LngyID0g
eDsKCQlpZihib3gueTEgPiB5KSBib3gueTEgPSB5OwoJCWVsc2UgaWYoYm94LnkyIDwgeSkgYm94
LnkyID0geTsKCSAgICB9Cgl9IGVsc2UgewoJICAgd2hpbGUoLS1ucHQpIHsKCQlwcHRJbml0Kys7
CgkJaWYoYm94LngxID4gcHB0SW5pdC0+eCkgYm94LngxID0gcHB0SW5pdC0+eDsKCQllbHNlIGlm
KGJveC54MiA8IHBwdEluaXQtPngpIGJveC54MiA9IHBwdEluaXQtPng7CgkJaWYoYm94LnkxID4g
cHB0SW5pdC0+eSkgYm94LnkxID0gcHB0SW5pdC0+eTsKCQllbHNlIGlmKGJveC55MiA8IHBwdElu
aXQtPnkpIGJveC55MiA9IHBwdEluaXQtPnk7CgkgICAgfQoJfQoKCWJveC54MisrOwoJYm94Lnky
Kys7CgoJaWYoZXh0cmEpIHsKCSAgIGJveC54MSAtPSBleHRyYTsKCSAgIGJveC54MiArPSBleHRy
YTsKCSAgIGJveC55MSAtPSBleHRyYTsKCSAgIGJveC55MiArPSBleHRyYTsKICAgICAgICB9CgoJ
eyB7ICAgYm94ICAueDEgKz0gICAgIHBEcmF3ICAtPng7ICAgYm94ICAueDIgKz0gICAgIHBEcmF3
ICAtPng7ICAgYm94ICAueTEgKz0gICAgIHBEcmF3ICAtPnk7ICAgYm94ICAueTIgKz0gICAgIHBE
cmF3ICAtPnk7IH0gOyB7IEJveFB0ciBleHRlbnRzID0gJiAgICBwR0MgIC0+cENvbXBvc2l0ZUNs
aXAtPmV4dGVudHM7IGlmKCAgYm94ICAueDEgPCBleHRlbnRzLT54MSkgICBib3ggIC54MSA9IGV4
dGVudHMtPngxOyBpZiggIGJveCAgLngyID4gZXh0ZW50cy0+eDIpICAgYm94ICAueDIgPSBleHRl
bnRzLT54MjsgaWYoICBib3ggIC55MSA8IGV4dGVudHMtPnkxKSAgIGJveCAgLnkxID0gZXh0ZW50
cy0+eTE7IGlmKCAgYm94ICAueTIgPiBleHRlbnRzLT55MikgICBib3ggIC55MiA9IGV4dGVudHMt
PnkyOyB9IDsgfSA7CglpZigoKCggYm94IC54MiAtICBib3ggLngxKSA+IDApICYmICgoIGJveCAu
eTIgLSAgYm94IC55MSkgPiAwKSkgKQoJICAgc2hhZG93RGFtYWdlQm94ICgoV2luZG93UHRyKSBw
RHJhdywgJmJveCk7CiAgICB9Cn0KCnN0YXRpYyB2b2lkIApzaGFkb3dQb2x5U2VnbWVudCgKICAg
IERyYXdhYmxlUHRyCXBEcmF3LAogICAgR0NQdHIJcEdDLAogICAgaW50CQluc2VnLAogICAgeFNl
Z21lbnQJKnBTZWcgCil7CiAgICBzaGFkb3dHQ1ByaXZQdHIgIHBHQ1ByaXYgPSAoKHNoYWRvd0dD
UHJpdlB0cikgKCAgIHBHQyAgICktPmRldlByaXZhdGVzW3NoYWRvd0dDUHJpdmF0ZUluZGV4XS5w
dHIpICA7IEdDRnVuY3MgKm9sZEZ1bmNzID0gIHBHQyAtPmZ1bmNzOyB7ICAgIHBHQyAgLT4gIGZ1
bmNzICA9ICBwR0NQcml2IC0+ICBmdW5jcyA7IH0gOyB7ICAgIHBHQyAgLT4gIG9wcyAgPSAgcEdD
UHJpdiAtPiAgb3BzIDsgfSA7IDsKICAgICgqcEdDLT5vcHMtPlBvbHlTZWdtZW50KShwRHJhdywg
cEdDLCBuc2VnLCBwU2VnKTsKICAgIHsgIHBHQ1ByaXYgLT4gIGZ1bmNzICA9ICAgIHBHQyAgLT4g
IGZ1bmNzIDsgICAgcEdDICAtPiAgZnVuY3MgID0gICBvbGRGdW5jcyA7IH0gOyB7ICBwR0NQcml2
IC0+ICBvcHMgID0gICAgcEdDICAtPiAgb3BzIDsgICAgcEdDICAtPiAgb3BzICA9ICAgJnNoYWRv
d0dDT3BzIDsgfSAgOwoKICAgIGlmKDEgICYmIG5zZWcpIHsKCUJveFJlYyBib3g7CglpbnQgZXh0
cmEgPSBwR0MtPmxpbmVXaWR0aDsKCiAgICAgICAgaWYocEdDLT5jYXBTdHlsZSAhPSAzICkJCgkg
ICBleHRyYSA+Pj0gMTsKCglpZihwU2VnLT54MiA+IHBTZWctPngxKSB7CgkgICAgYm94LngxID0g
cFNlZy0+eDE7CgkgICAgYm94LngyID0gcFNlZy0+eDI7Cgl9IGVsc2UgewoJICAgIGJveC54MiA9
IHBTZWctPngxOwoJICAgIGJveC54MSA9IHBTZWctPngyOwoJfQoKCWlmKHBTZWctPnkyID4gcFNl
Zy0+eTEpIHsKCSAgICBib3gueTEgPSBwU2VnLT55MTsKCSAgICBib3gueTIgPSBwU2VnLT55MjsK
CX0gZWxzZSB7CgkgICAgYm94LnkyID0gcFNlZy0+eTE7CgkgICAgYm94LnkxID0gcFNlZy0+eTI7
Cgl9CgoJd2hpbGUoLS1uc2VnKSB7CgkgICAgcFNlZysrOwoJICAgIGlmKHBTZWctPngyID4gcFNl
Zy0+eDEpIHsKCQlpZihwU2VnLT54MSA8IGJveC54MSkgYm94LngxID0gcFNlZy0+eDE7CgkJaWYo
cFNlZy0+eDIgPiBib3gueDIpIGJveC54MiA9IHBTZWctPngyOwoJICAgIH0gZWxzZSB7CgkJaWYo
cFNlZy0+eDIgPCBib3gueDEpIGJveC54MSA9IHBTZWctPngyOwoJCWlmKHBTZWctPngxID4gYm94
LngyKSBib3gueDIgPSBwU2VnLT54MTsKCSAgICB9CgkgICAgaWYocFNlZy0+eTIgPiBwU2VnLT55
MSkgewoJCWlmKHBTZWctPnkxIDwgYm94LnkxKSBib3gueTEgPSBwU2VnLT55MTsKCQlpZihwU2Vn
LT55MiA+IGJveC55MikgYm94LnkyID0gcFNlZy0+eTI7CgkgICAgfSBlbHNlIHsKCQlpZihwU2Vn
LT55MiA8IGJveC55MSkgYm94LnkxID0gcFNlZy0+eTI7CgkJaWYocFNlZy0+eTEgPiBib3gueTIp
IGJveC55MiA9IHBTZWctPnkxOwoJICAgIH0KCX0KCglib3gueDIrKzsKCWJveC55MisrOwoKCWlm
KGV4dHJhKSB7CgkgICBib3gueDEgLT0gZXh0cmE7CgkgICBib3gueDIgKz0gZXh0cmE7CgkgICBi
b3gueTEgLT0gZXh0cmE7CgkgICBib3gueTIgKz0gZXh0cmE7CiAgICAgICAgfQoKCXsgeyAgIGJv
eCAgLngxICs9ICAgICBwRHJhdyAgLT54OyAgIGJveCAgLngyICs9ICAgICBwRHJhdyAgLT54OyAg
IGJveCAgLnkxICs9ICAgICBwRHJhdyAgLT55OyAgIGJveCAgLnkyICs9ICAgICBwRHJhdyAgLT55
OyB9IDsgeyBCb3hQdHIgZXh0ZW50cyA9ICYgICAgcEdDICAtPnBDb21wb3NpdGVDbGlwLT5leHRl
bnRzOyBpZiggIGJveCAgLngxIDwgZXh0ZW50cy0+eDEpICAgYm94ICAueDEgPSBleHRlbnRzLT54
MTsgaWYoICBib3ggIC54MiA+IGV4dGVudHMtPngyKSAgIGJveCAgLngyID0gZXh0ZW50cy0+eDI7
IGlmKCAgYm94ICAueTEgPCBleHRlbnRzLT55MSkgICBib3ggIC55MSA9IGV4dGVudHMtPnkxOyBp
ZiggIGJveCAgLnkyID4gZXh0ZW50cy0+eTIpICAgYm94ICAueTIgPSBleHRlbnRzLT55MjsgfSA7
IH0gOwoJaWYoKCgoIGJveCAueDIgLSAgYm94IC54MSkgPiAwKSAmJiAoKCBib3ggLnkyIC0gIGJv
eCAueTEpID4gMCkpICkKCSAgIHNoYWRvd0RhbWFnZUJveCAoKFdpbmRvd1B0cikgcERyYXcsICZi
b3gpOwogICAgfQp9CgpzdGF0aWMgdm9pZApzaGFkb3dQb2x5UmVjdGFuZ2xlKAogICAgRHJhd2Fi
bGVQdHIgIHBEcmF3LAogICAgR0NQdHIgICAgICAgIHBHQywKICAgIGludAkgICAgICAgICBuUmVj
dHMsCiAgICB4UmVjdGFuZ2xlICAqcFJlY3RzIAopewogICAgc2hhZG93R0NQcml2UHRyICBwR0NQ
cml2ID0gKChzaGFkb3dHQ1ByaXZQdHIpICggICBwR0MgICApLT5kZXZQcml2YXRlc1tzaGFkb3dH
Q1ByaXZhdGVJbmRleF0ucHRyKSAgOyBHQ0Z1bmNzICpvbGRGdW5jcyA9ICBwR0MgLT5mdW5jczsg
eyAgICBwR0MgIC0+ICBmdW5jcyAgPSAgcEdDUHJpdiAtPiAgZnVuY3MgOyB9IDsgeyAgICBwR0Mg
IC0+ICBvcHMgID0gIHBHQ1ByaXYgLT4gIG9wcyA7IH0gOyA7CiAgICAoKnBHQy0+b3BzLT5Qb2x5
UmVjdGFuZ2xlKShwRHJhdywgcEdDLCBuUmVjdHMsIHBSZWN0cyk7CiAgICB7ICBwR0NQcml2IC0+
ICBmdW5jcyAgPSAgICBwR0MgIC0+ICBmdW5jcyA7ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICAgb2xk
RnVuY3MgOyB9IDsgeyAgcEdDUHJpdiAtPiAgb3BzICA9ICAgIHBHQyAgLT4gIG9wcyA7ICAgIHBH
QyAgLT4gIG9wcyAgPSAgICZzaGFkb3dHQ09wcyA7IH0gIDsKCiAgICBpZigxICAmJiBuUmVjdHMp
IAogICAgewoJQm94UmVjIGJveDsKCWludCBvZmZzZXQxLCBvZmZzZXQyLCBvZmZzZXQzOwoKCW9m
ZnNldDIgPSBwR0MtPmxpbmVXaWR0aDsKCWlmKCFvZmZzZXQyKSBvZmZzZXQyID0gMTsKCW9mZnNl
dDEgPSBvZmZzZXQyID4+IDE7CglvZmZzZXQzID0gb2Zmc2V0MiAtIG9mZnNldDE7CgoJd2hpbGUo
blJlY3RzLS0pIAoJewoJICAgIGJveC54MSA9IHBSZWN0cy0+eCAtIG9mZnNldDE7CgkgICAgYm94
LnkxID0gcFJlY3RzLT55IC0gb2Zmc2V0MTsKCSAgICBib3gueDIgPSBib3gueDEgKyBwUmVjdHMt
PndpZHRoICsgb2Zmc2V0MjsKCSAgICBib3gueTIgPSBib3gueTEgKyBvZmZzZXQyOwkJCgkgICAg
eyB7ICAgYm94ICAueDEgKz0gICAgIHBEcmF3ICAtPng7ICAgYm94ICAueDIgKz0gICAgIHBEcmF3
ICAtPng7ICAgYm94ICAueTEgKz0gICAgIHBEcmF3ICAtPnk7ICAgYm94ICAueTIgKz0gICAgIHBE
cmF3ICAtPnk7IH0gOyB7IEJveFB0ciBleHRlbnRzID0gJiAgICBwR0MgIC0+cENvbXBvc2l0ZUNs
aXAtPmV4dGVudHM7IGlmKCAgYm94ICAueDEgPCBleHRlbnRzLT54MSkgICBib3ggIC54MSA9IGV4
dGVudHMtPngxOyBpZiggIGJveCAgLngyID4gZXh0ZW50cy0+eDIpICAgYm94ICAueDIgPSBleHRl
bnRzLT54MjsgaWYoICBib3ggIC55MSA8IGV4dGVudHMtPnkxKSAgIGJveCAgLnkxID0gZXh0ZW50
cy0+eTE7IGlmKCAgYm94ICAueTIgPiBleHRlbnRzLT55MikgICBib3ggIC55MiA9IGV4dGVudHMt
PnkyOyB9IDsgfSA7CgkgICAgaWYoKCgoIGJveCAueDIgLSAgYm94IC54MSkgPiAwKSAmJiAoKCBi
b3ggLnkyIC0gIGJveCAueTEpID4gMCkpICkKCQlzaGFkb3dEYW1hZ2VCb3ggKChXaW5kb3dQdHIp
IHBEcmF3LCAmYm94KTsKCgkgICAgYm94LngxID0gcFJlY3RzLT54IC0gb2Zmc2V0MTsKCSAgICBi
b3gueTEgPSBwUmVjdHMtPnkgKyBvZmZzZXQzOwoJICAgIGJveC54MiA9IGJveC54MSArIG9mZnNl
dDI7CgkgICAgYm94LnkyID0gYm94LnkxICsgcFJlY3RzLT5oZWlnaHQgLSBvZmZzZXQyOwkJCgkg
ICAgeyB7ICAgYm94ICAueDEgKz0gICAgIHBEcmF3ICAtPng7ICAgYm94ICAueDIgKz0gICAgIHBE
cmF3ICAtPng7ICAgYm94ICAueTEgKz0gICAgIHBEcmF3ICAtPnk7ICAgYm94ICAueTIgKz0gICAg
IHBEcmF3ICAtPnk7IH0gOyB7IEJveFB0ciBleHRlbnRzID0gJiAgICBwR0MgIC0+cENvbXBvc2l0
ZUNsaXAtPmV4dGVudHM7IGlmKCAgYm94ICAueDEgPCBleHRlbnRzLT54MSkgICBib3ggIC54MSA9
IGV4dGVudHMtPngxOyBpZiggIGJveCAgLngyID4gZXh0ZW50cy0+eDIpICAgYm94ICAueDIgPSBl
eHRlbnRzLT54MjsgaWYoICBib3ggIC55MSA8IGV4dGVudHMtPnkxKSAgIGJveCAgLnkxID0gZXh0
ZW50cy0+eTE7IGlmKCAgYm94ICAueTIgPiBleHRlbnRzLT55MikgICBib3ggIC55MiA9IGV4dGVu
dHMtPnkyOyB9IDsgfSA7CgkgICAgaWYoKCgoIGJveCAueDIgLSAgYm94IC54MSkgPiAwKSAmJiAo
KCBib3ggLnkyIC0gIGJveCAueTEpID4gMCkpICkKCQlzaGFkb3dEYW1hZ2VCb3ggKChXaW5kb3dQ
dHIpIHBEcmF3LCAmYm94KTsKCgkgICAgYm94LngxID0gcFJlY3RzLT54ICsgcFJlY3RzLT53aWR0
aCAtIG9mZnNldDE7CgkgICAgYm94LnkxID0gcFJlY3RzLT55ICsgb2Zmc2V0MzsKCSAgICBib3gu
eDIgPSBib3gueDEgKyBvZmZzZXQyOwoJICAgIGJveC55MiA9IGJveC55MSArIHBSZWN0cy0+aGVp
Z2h0IC0gb2Zmc2V0MjsJCQoJICAgIHsgeyAgIGJveCAgLngxICs9ICAgICBwRHJhdyAgLT54OyAg
IGJveCAgLngyICs9ICAgICBwRHJhdyAgLT54OyAgIGJveCAgLnkxICs9ICAgICBwRHJhdyAgLT55
OyAgIGJveCAgLnkyICs9ICAgICBwRHJhdyAgLT55OyB9IDsgeyBCb3hQdHIgZXh0ZW50cyA9ICYg
ICAgcEdDICAtPnBDb21wb3NpdGVDbGlwLT5leHRlbnRzOyBpZiggIGJveCAgLngxIDwgZXh0ZW50
cy0+eDEpICAgYm94ICAueDEgPSBleHRlbnRzLT54MTsgaWYoICBib3ggIC54MiA+IGV4dGVudHMt
PngyKSAgIGJveCAgLngyID0gZXh0ZW50cy0+eDI7IGlmKCAgYm94ICAueTEgPCBleHRlbnRzLT55
MSkgICBib3ggIC55MSA9IGV4dGVudHMtPnkxOyBpZiggIGJveCAgLnkyID4gZXh0ZW50cy0+eTIp
ICAgYm94ICAueTIgPSBleHRlbnRzLT55MjsgfSA7IH0gOwoJICAgIGlmKCgoKCBib3ggLngyIC0g
IGJveCAueDEpID4gMCkgJiYgKCggYm94IC55MiAtICBib3ggLnkxKSA+IDApKSApCgkJc2hhZG93
RGFtYWdlQm94ICgoV2luZG93UHRyKSBwRHJhdywgJmJveCk7CgoJICAgIGJveC54MSA9IHBSZWN0
cy0+eCAtIG9mZnNldDE7CgkgICAgYm94LnkxID0gcFJlY3RzLT55ICsgcFJlY3RzLT5oZWlnaHQg
LSBvZmZzZXQxOwoJICAgIGJveC54MiA9IGJveC54MSArIHBSZWN0cy0+d2lkdGggKyBvZmZzZXQy
OwoJICAgIGJveC55MiA9IGJveC55MSArIG9mZnNldDI7CQkKCSAgICB7IHsgICBib3ggIC54MSAr
PSAgICAgcERyYXcgIC0+eDsgICBib3ggIC54MiArPSAgICAgcERyYXcgIC0+eDsgICBib3ggIC55
MSArPSAgICAgcERyYXcgIC0+eTsgICBib3ggIC55MiArPSAgICAgcERyYXcgIC0+eTsgfSA7IHsg
Qm94UHRyIGV4dGVudHMgPSAmICAgIHBHQyAgLT5wQ29tcG9zaXRlQ2xpcC0+ZXh0ZW50czsgaWYo
ICBib3ggIC54MSA8IGV4dGVudHMtPngxKSAgIGJveCAgLngxID0gZXh0ZW50cy0+eDE7IGlmKCAg
Ym94ICAueDIgPiBleHRlbnRzLT54MikgICBib3ggIC54MiA9IGV4dGVudHMtPngyOyBpZiggIGJv
eCAgLnkxIDwgZXh0ZW50cy0+eTEpICAgYm94ICAueTEgPSBleHRlbnRzLT55MTsgaWYoICBib3gg
IC55MiA+IGV4dGVudHMtPnkyKSAgIGJveCAgLnkyID0gZXh0ZW50cy0+eTI7IH0gOyB9IDsKCSAg
ICBpZigoKCggYm94IC54MiAtICBib3ggLngxKSA+IDApICYmICgoIGJveCAueTIgLSAgYm94IC55
MSkgPiAwKSkgKQoJCXNoYWRvd0RhbWFnZUJveCAoKFdpbmRvd1B0cikgcERyYXcsICZib3gpOwoK
CSAgICBwUmVjdHMrKzsKCX0KICAgIH0KIH0KCnN0YXRpYyB2b2lkCnNoYWRvd1BvbHlBcmMoCiAg
ICBEcmF3YWJsZVB0cglwRHJhdywKICAgIEdDUHRyCXBHQywKICAgIGludAkJbmFyY3MsCiAgICB4
QXJjCSpwYXJjcyAKKXsKICAgIHNoYWRvd0dDUHJpdlB0ciAgcEdDUHJpdiA9ICgoc2hhZG93R0NQ
cml2UHRyKSAoICAgcEdDICAgKS0+ZGV2UHJpdmF0ZXNbc2hhZG93R0NQcml2YXRlSW5kZXhdLnB0
cikgIDsgR0NGdW5jcyAqb2xkRnVuY3MgPSAgcEdDIC0+ZnVuY3M7IHsgICAgcEdDICAtPiAgZnVu
Y3MgID0gIHBHQ1ByaXYgLT4gIGZ1bmNzIDsgfSA7IHsgICAgcEdDICAtPiAgb3BzICA9ICBwR0NQ
cml2IC0+ICBvcHMgOyB9IDsgOwogICAgKCpwR0MtPm9wcy0+UG9seUFyYykocERyYXcsIHBHQywg
bmFyY3MsIHBhcmNzKTsKICAgIHsgIHBHQ1ByaXYgLT4gIGZ1bmNzICA9ICAgIHBHQyAgLT4gIGZ1
bmNzIDsgICAgcEdDICAtPiAgZnVuY3MgID0gICBvbGRGdW5jcyA7IH0gOyB7ICBwR0NQcml2IC0+
ICBvcHMgID0gICAgcEdDICAtPiAgb3BzIDsgICAgcEdDICAtPiAgb3BzICA9ICAgJnNoYWRvd0dD
T3BzIDsgfSAgOwoKICAgIGlmKDEgICYmIG5hcmNzKSB7CglpbnQgZXh0cmEgPSBwR0MtPmxpbmVX
aWR0aCA+PiAxOwoJQm94UmVjIGJveDsKCglib3gueDEgPSBwYXJjcy0+eDsKCWJveC54MiA9IGJv
eC54MSArIHBhcmNzLT53aWR0aDsKCWJveC55MSA9IHBhcmNzLT55OwoJYm94LnkyID0gYm94Lnkx
ICsgcGFyY3MtPmhlaWdodDsKCgkgCgoJd2hpbGUoLS1uYXJjcykgewoJICAgcGFyY3MrKzsKCSAg
IGlmKGJveC54MSA+IHBhcmNzLT54KSBib3gueDEgPSBwYXJjcy0+eDsKCSAgIGlmKGJveC54MiA8
IChwYXJjcy0+eCArIHBhcmNzLT53aWR0aCkpCgkJYm94LngyID0gcGFyY3MtPnggKyBwYXJjcy0+
d2lkdGg7CgkgICBpZihib3gueTEgPiBwYXJjcy0+eSkgYm94LnkxID0gcGFyY3MtPnk7CgkgICBp
Zihib3gueTIgPCAocGFyY3MtPnkgKyBwYXJjcy0+aGVpZ2h0KSkKCQlib3gueTIgPSBwYXJjcy0+
eSArIHBhcmNzLT5oZWlnaHQ7CiAgICAgICAgfQoKCWlmKGV4dHJhKSB7CgkgICBib3gueDEgLT0g
ZXh0cmE7CgkgICBib3gueDIgKz0gZXh0cmE7CgkgICBib3gueTEgLT0gZXh0cmE7CgkgICBib3gu
eTIgKz0gZXh0cmE7CiAgICAgICAgfQoKCWJveC54MisrOwoJYm94LnkyKys7CgoJeyB7ICAgYm94
ICAueDEgKz0gICAgIHBEcmF3ICAtPng7ICAgYm94ICAueDIgKz0gICAgIHBEcmF3ICAtPng7ICAg
Ym94ICAueTEgKz0gICAgIHBEcmF3ICAtPnk7ICAgYm94ICAueTIgKz0gICAgIHBEcmF3ICAtPnk7
IH0gOyB7IEJveFB0ciBleHRlbnRzID0gJiAgICBwR0MgIC0+cENvbXBvc2l0ZUNsaXAtPmV4dGVu
dHM7IGlmKCAgYm94ICAueDEgPCBleHRlbnRzLT54MSkgICBib3ggIC54MSA9IGV4dGVudHMtPngx
OyBpZiggIGJveCAgLngyID4gZXh0ZW50cy0+eDIpICAgYm94ICAueDIgPSBleHRlbnRzLT54Mjsg
aWYoICBib3ggIC55MSA8IGV4dGVudHMtPnkxKSAgIGJveCAgLnkxID0gZXh0ZW50cy0+eTE7IGlm
KCAgYm94ICAueTIgPiBleHRlbnRzLT55MikgICBib3ggIC55MiA9IGV4dGVudHMtPnkyOyB9IDsg
fSA7CglpZigoKCggYm94IC54MiAtICBib3ggLngxKSA+IDApICYmICgoIGJveCAueTIgLSAgYm94
IC55MSkgPiAwKSkgKQoJICAgc2hhZG93RGFtYWdlQm94ICgoV2luZG93UHRyKSBwRHJhdywgJmJv
eCk7CiAgICB9Cn0KCnN0YXRpYyB2b2lkCnNoYWRvd0ZpbGxQb2x5Z29uKAogICAgRHJhd2FibGVQ
dHIJcERyYXcsCiAgICBHQ1B0cglwR0MsCiAgICBpbnQJCXNoYXBlLAogICAgaW50CQltb2RlLAog
ICAgaW50CQljb3VudCwKICAgIEREWFBvaW50UHRyCXBwdEluaXQgCil7CiAgICBzaGFkb3dHQ1By
aXZQdHIgIHBHQ1ByaXYgPSAoKHNoYWRvd0dDUHJpdlB0cikgKCAgIHBHQyAgICktPmRldlByaXZh
dGVzW3NoYWRvd0dDUHJpdmF0ZUluZGV4XS5wdHIpICA7IEdDRnVuY3MgKm9sZEZ1bmNzID0gIHBH
QyAtPmZ1bmNzOyB7ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICBwR0NQcml2IC0+ICBmdW5jcyA7IH0g
OyB7ICAgIHBHQyAgLT4gIG9wcyAgPSAgcEdDUHJpdiAtPiAgb3BzIDsgfSA7IDsKCiAgICBpZigx
ICAmJiAoY291bnQgPiAyKSkgewoJRERYUG9pbnRQdHIgcHB0ID0gcHB0SW5pdDsKCWludCBpID0g
Y291bnQ7CglCb3hSZWMgYm94OwoKCWJveC54MiA9IGJveC54MSA9IHBwdC0+eDsKCWJveC55MiA9
IGJveC55MSA9IHBwdC0+eTsKCglpZihtb2RlICE9IDAgKSB7CgkgICBpbnQgeCA9IGJveC54MTsK
CSAgIGludCB5ID0gYm94LnkxOwoJICAgd2hpbGUoLS1pKSB7CgkJcHB0Kys7CgkJeCArPSBwcHQt
Png7CgkJeSArPSBwcHQtPnk7CgkJaWYoYm94LngxID4geCkgYm94LngxID0geDsKCQllbHNlIGlm
KGJveC54MiA8IHgpIGJveC54MiA9IHg7CgkJaWYoYm94LnkxID4geSkgYm94LnkxID0geTsKCQll
bHNlIGlmKGJveC55MiA8IHkpIGJveC55MiA9IHk7CgkgICAgfQoJfSBlbHNlIHsKCSAgIHdoaWxl
KC0taSkgewoJCXBwdCsrOwoJCWlmKGJveC54MSA+IHBwdC0+eCkgYm94LngxID0gcHB0LT54OwoJ
CWVsc2UgaWYoYm94LngyIDwgcHB0LT54KSBib3gueDIgPSBwcHQtPng7CgkJaWYoYm94LnkxID4g
cHB0LT55KSBib3gueTEgPSBwcHQtPnk7CgkJZWxzZSBpZihib3gueTIgPCBwcHQtPnkpIGJveC55
MiA9IHBwdC0+eTsKCSAgICB9Cgl9CgoJYm94LngyKys7Cglib3gueTIrKzsKCgkoKnBHQy0+b3Bz
LT5GaWxsUG9seWdvbikocERyYXcsIHBHQywgc2hhcGUsIG1vZGUsIGNvdW50LCBwcHRJbml0KTsK
Cgl7IHsgICBib3ggIC54MSArPSAgICAgcERyYXcgIC0+eDsgICBib3ggIC54MiArPSAgICAgcERy
YXcgIC0+eDsgICBib3ggIC55MSArPSAgICAgcERyYXcgIC0+eTsgICBib3ggIC55MiArPSAgICAg
cERyYXcgIC0+eTsgfSA7IHsgQm94UHRyIGV4dGVudHMgPSAmICAgIHBHQyAgLT5wQ29tcG9zaXRl
Q2xpcC0+ZXh0ZW50czsgaWYoICBib3ggIC54MSA8IGV4dGVudHMtPngxKSAgIGJveCAgLngxID0g
ZXh0ZW50cy0+eDE7IGlmKCAgYm94ICAueDIgPiBleHRlbnRzLT54MikgICBib3ggIC54MiA9IGV4
dGVudHMtPngyOyBpZiggIGJveCAgLnkxIDwgZXh0ZW50cy0+eTEpICAgYm94ICAueTEgPSBleHRl
bnRzLT55MTsgaWYoICBib3ggIC55MiA+IGV4dGVudHMtPnkyKSAgIGJveCAgLnkyID0gZXh0ZW50
cy0+eTI7IH0gOyB9IDsKCWlmKCgoKCBib3ggLngyIC0gIGJveCAueDEpID4gMCkgJiYgKCggYm94
IC55MiAtICBib3ggLnkxKSA+IDApKSApCgkgICBzaGFkb3dEYW1hZ2VCb3ggKChXaW5kb3dQdHIp
IHBEcmF3LCAmYm94KTsKICAgIH0gZWxzZQoJKCpwR0MtPm9wcy0+RmlsbFBvbHlnb24pKHBEcmF3
LCBwR0MsIHNoYXBlLCBtb2RlLCBjb3VudCwgcHB0SW5pdCk7CgogICAgeyAgcEdDUHJpdiAtPiAg
ZnVuY3MgID0gICAgcEdDICAtPiAgZnVuY3MgOyAgICBwR0MgIC0+ICBmdW5jcyAgPSAgIG9sZEZ1
bmNzIDsgfSA7IHsgIHBHQ1ByaXYgLT4gIG9wcyAgPSAgICBwR0MgIC0+ICBvcHMgOyAgICBwR0Mg
IC0+ICBvcHMgID0gICAmc2hhZG93R0NPcHMgOyB9ICA7Cn0KCgpzdGF0aWMgdm9pZCAKc2hhZG93
UG9seUZpbGxSZWN0KAogICAgRHJhd2FibGVQdHIJcERyYXcsCiAgICBHQ1B0cglwR0MsCiAgICBp
bnQJCW5SZWN0c0luaXQsIAogICAgeFJlY3RhbmdsZQkqcFJlY3RzSW5pdCAKKXsKICAgIHNoYWRv
d0dDUHJpdlB0ciAgcEdDUHJpdiA9ICgoc2hhZG93R0NQcml2UHRyKSAoICAgcEdDICAgKS0+ZGV2
UHJpdmF0ZXNbc2hhZG93R0NQcml2YXRlSW5kZXhdLnB0cikgIDsgR0NGdW5jcyAqb2xkRnVuY3Mg
PSAgcEdDIC0+ZnVuY3M7IHsgICAgcEdDICAtPiAgZnVuY3MgID0gIHBHQ1ByaXYgLT4gIGZ1bmNz
IDsgfSA7IHsgICAgcEdDICAtPiAgb3BzICA9ICBwR0NQcml2IC0+ICBvcHMgOyB9IDsgOwoKICAg
IGlmKDEgICYmIG5SZWN0c0luaXQpIHsKCUJveFJlYyBib3g7Cgl4UmVjdGFuZ2xlICpwUmVjdHMg
PSBwUmVjdHNJbml0OwoJaW50IG5SZWN0cyA9IG5SZWN0c0luaXQ7CgoJYm94LngxID0gcFJlY3Rz
LT54OwoJYm94LngyID0gYm94LngxICsgcFJlY3RzLT53aWR0aDsKCWJveC55MSA9IHBSZWN0cy0+
eTsKCWJveC55MiA9IGJveC55MSArIHBSZWN0cy0+aGVpZ2h0OwoKCXdoaWxlKC0tblJlY3RzKSB7
CgkgICAgcFJlY3RzKys7CgkgICAgaWYoYm94LngxID4gcFJlY3RzLT54KSBib3gueDEgPSBwUmVj
dHMtPng7CgkgICAgaWYoYm94LngyIDwgKHBSZWN0cy0+eCArIHBSZWN0cy0+d2lkdGgpKQoJCWJv
eC54MiA9IHBSZWN0cy0+eCArIHBSZWN0cy0+d2lkdGg7CgkgICAgaWYoYm94LnkxID4gcFJlY3Rz
LT55KSBib3gueTEgPSBwUmVjdHMtPnk7CgkgICAgaWYoYm94LnkyIDwgKHBSZWN0cy0+eSArIHBS
ZWN0cy0+aGVpZ2h0KSkKCQlib3gueTIgPSBwUmVjdHMtPnkgKyBwUmVjdHMtPmhlaWdodDsKCX0K
CgkgCgoKCSgqcEdDLT5vcHMtPlBvbHlGaWxsUmVjdCkocERyYXcsIHBHQywgblJlY3RzSW5pdCwg
cFJlY3RzSW5pdCk7CgoJeyB7ICAgYm94ICAueDEgKz0gICAgIHBEcmF3ICAtPng7ICAgYm94ICAu
eDIgKz0gICAgIHBEcmF3ICAtPng7ICAgYm94ICAueTEgKz0gICAgIHBEcmF3ICAtPnk7ICAgYm94
ICAueTIgKz0gICAgIHBEcmF3ICAtPnk7IH0gOyB7IEJveFB0ciBleHRlbnRzID0gJiAgICBwR0Mg
IC0+cENvbXBvc2l0ZUNsaXAtPmV4dGVudHM7IGlmKCAgYm94ICAueDEgPCBleHRlbnRzLT54MSkg
ICBib3ggIC54MSA9IGV4dGVudHMtPngxOyBpZiggIGJveCAgLngyID4gZXh0ZW50cy0+eDIpICAg
Ym94ICAueDIgPSBleHRlbnRzLT54MjsgaWYoICBib3ggIC55MSA8IGV4dGVudHMtPnkxKSAgIGJv
eCAgLnkxID0gZXh0ZW50cy0+eTE7IGlmKCAgYm94ICAueTIgPiBleHRlbnRzLT55MikgICBib3gg
IC55MiA9IGV4dGVudHMtPnkyOyB9IDsgfSA7CglpZigoKCggYm94IC54MiAtICBib3ggLngxKSA+
IDApICYmICgoIGJveCAueTIgLSAgYm94IC55MSkgPiAwKSkgKQoJICAgIHNoYWRvd0RhbWFnZUJv
eCAoKFdpbmRvd1B0cikgcERyYXcsICZib3gpOwogICAgfSBlbHNlCgkoKnBHQy0+b3BzLT5Qb2x5
RmlsbFJlY3QpKHBEcmF3LCBwR0MsIG5SZWN0c0luaXQsIHBSZWN0c0luaXQpOwoKICAgIHsgIHBH
Q1ByaXYgLT4gIGZ1bmNzICA9ICAgIHBHQyAgLT4gIGZ1bmNzIDsgICAgcEdDICAtPiAgZnVuY3Mg
ID0gICBvbGRGdW5jcyA7IH0gOyB7ICBwR0NQcml2IC0+ICBvcHMgID0gICAgcEdDICAtPiAgb3Bz
IDsgICAgcEdDICAtPiAgb3BzICA9ICAgJnNoYWRvd0dDT3BzIDsgfSAgOwp9CgoKc3RhdGljIHZv
aWQKc2hhZG93UG9seUZpbGxBcmMoCiAgICBEcmF3YWJsZVB0cglwRHJhdywKICAgIEdDUHRyCXBH
QywKICAgIGludAkJbmFyY3MsCiAgICB4QXJjCSpwYXJjcyAKKXsKICAgIHNoYWRvd0dDUHJpdlB0
ciAgcEdDUHJpdiA9ICgoc2hhZG93R0NQcml2UHRyKSAoICAgcEdDICAgKS0+ZGV2UHJpdmF0ZXNb
c2hhZG93R0NQcml2YXRlSW5kZXhdLnB0cikgIDsgR0NGdW5jcyAqb2xkRnVuY3MgPSAgcEdDIC0+
ZnVuY3M7IHsgICAgcEdDICAtPiAgZnVuY3MgID0gIHBHQ1ByaXYgLT4gIGZ1bmNzIDsgfSA7IHsg
ICAgcEdDICAtPiAgb3BzICA9ICBwR0NQcml2IC0+ICBvcHMgOyB9IDsgOwogICAgKCpwR0MtPm9w
cy0+UG9seUZpbGxBcmMpKHBEcmF3LCBwR0MsIG5hcmNzLCBwYXJjcyk7CiAgICB7ICBwR0NQcml2
IC0+ICBmdW5jcyAgPSAgICBwR0MgIC0+ICBmdW5jcyA7ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICAg
b2xkRnVuY3MgOyB9IDsgeyAgcEdDUHJpdiAtPiAgb3BzICA9ICAgIHBHQyAgLT4gIG9wcyA7ICAg
IHBHQyAgLT4gIG9wcyAgPSAgICZzaGFkb3dHQ09wcyA7IH0gIDsKCiAgICBpZigxICAmJiBuYXJj
cykgewoJQm94UmVjIGJveDsKCglib3gueDEgPSBwYXJjcy0+eDsKCWJveC54MiA9IGJveC54MSAr
IHBhcmNzLT53aWR0aDsKCWJveC55MSA9IHBhcmNzLT55OwoJYm94LnkyID0gYm94LnkxICsgcGFy
Y3MtPmhlaWdodDsKCgkgCgoJd2hpbGUoLS1uYXJjcykgewoJICAgcGFyY3MrKzsKCSAgIGlmKGJv
eC54MSA+IHBhcmNzLT54KSBib3gueDEgPSBwYXJjcy0+eDsKCSAgIGlmKGJveC54MiA8IChwYXJj
cy0+eCArIHBhcmNzLT53aWR0aCkpCgkJYm94LngyID0gcGFyY3MtPnggKyBwYXJjcy0+d2lkdGg7
CgkgICBpZihib3gueTEgPiBwYXJjcy0+eSkgYm94LnkxID0gcGFyY3MtPnk7CgkgICBpZihib3gu
eTIgPCAocGFyY3MtPnkgKyBwYXJjcy0+aGVpZ2h0KSkKCQlib3gueTIgPSBwYXJjcy0+eSArIHBh
cmNzLT5oZWlnaHQ7CiAgICAgICAgfQoKCXsgeyAgIGJveCAgLngxICs9ICAgICBwRHJhdyAgLT54
OyAgIGJveCAgLngyICs9ICAgICBwRHJhdyAgLT54OyAgIGJveCAgLnkxICs9ICAgICBwRHJhdyAg
LT55OyAgIGJveCAgLnkyICs9ICAgICBwRHJhdyAgLT55OyB9IDsgeyBCb3hQdHIgZXh0ZW50cyA9
ICYgICAgcEdDICAtPnBDb21wb3NpdGVDbGlwLT5leHRlbnRzOyBpZiggIGJveCAgLngxIDwgZXh0
ZW50cy0+eDEpICAgYm94ICAueDEgPSBleHRlbnRzLT54MTsgaWYoICBib3ggIC54MiA+IGV4dGVu
dHMtPngyKSAgIGJveCAgLngyID0gZXh0ZW50cy0+eDI7IGlmKCAgYm94ICAueTEgPCBleHRlbnRz
LT55MSkgICBib3ggIC55MSA9IGV4dGVudHMtPnkxOyBpZiggIGJveCAgLnkyID4gZXh0ZW50cy0+
eTIpICAgYm94ICAueTIgPSBleHRlbnRzLT55MjsgfSA7IH0gOwoJaWYoKCgoIGJveCAueDIgLSAg
Ym94IC54MSkgPiAwKSAmJiAoKCBib3ggLnkyIC0gIGJveCAueTEpID4gMCkpICkKCSAgIHNoYWRv
d0RhbWFnZUJveCAoKFdpbmRvd1B0cikgcERyYXcsICZib3gpOwogICAgfQoKfQoKc3RhdGljIGlu
dApzaGFkb3dQb2x5VGV4dDgoCiAgICBEcmF3YWJsZVB0ciBwRHJhdywKICAgIEdDUHRyCXBHQywK
ICAgIGludAkJeCwgCiAgICBpbnQgCXksCiAgICBpbnQgCWNvdW50LAogICAgY2hhcgkqY2hhcnMg
Cil7CiAgICBpbnQgd2lkdGg7CgogICAgc2hhZG93R0NQcml2UHRyICBwR0NQcml2ID0gKChzaGFk
b3dHQ1ByaXZQdHIpICggICBwR0MgICApLT5kZXZQcml2YXRlc1tzaGFkb3dHQ1ByaXZhdGVJbmRl
eF0ucHRyKSAgOyBHQ0Z1bmNzICpvbGRGdW5jcyA9ICBwR0MgLT5mdW5jczsgeyAgICBwR0MgIC0+
ICBmdW5jcyAgPSAgcEdDUHJpdiAtPiAgZnVuY3MgOyB9IDsgeyAgICBwR0MgIC0+ICBvcHMgID0g
IHBHQ1ByaXYgLT4gIG9wcyA7IH0gOyA7CiAgICB3aWR0aCA9ICgqcEdDLT5vcHMtPlBvbHlUZXh0
OCkocERyYXcsIHBHQywgeCwgeSwgY291bnQsIGNoYXJzKTsKICAgIHsgIHBHQ1ByaXYgLT4gIGZ1
bmNzICA9ICAgIHBHQyAgLT4gIGZ1bmNzIDsgICAgcEdDICAtPiAgZnVuY3MgID0gICBvbGRGdW5j
cyA7IH0gOyB7ICBwR0NQcml2IC0+ICBvcHMgID0gICAgcEdDICAtPiAgb3BzIDsgICAgcEdDICAt
PiAgb3BzICA9ICAgJnNoYWRvd0dDT3BzIDsgfSAgOwoKICAgIHdpZHRoIC09IHg7CgogICAgaWYo
MSAgJiYgKHdpZHRoID4gMCkpIHsKCUJveFJlYyBib3g7CgoJIAoJYm94LngxID0gcERyYXctPngg
KyB4ICsgKCBwR0MtPmZvbnQgKS0+aW5mby5taW5ib3VuZHMuICBsZWZ0U2lkZUJlYXJpbmcgIDsK
CWJveC54MiA9IHBEcmF3LT54ICsgeCArICggcEdDLT5mb250ICktPmluZm8ubWF4Ym91bmRzLiAg
cmlnaHRTaWRlQmVhcmluZyAgOwoKCWlmKGNvdW50ID4gMSkgewoJICAgaWYod2lkdGggPiAwKSBi
b3gueDIgKz0gd2lkdGg7CgkgICBlbHNlIGJveC54MSArPSB3aWR0aDsKCX0KCglib3gueTEgPSBw
RHJhdy0+eSArIHkgLSAoIHBHQy0+Zm9udCApLT5pbmZvLm1heGJvdW5kcy4gIGFzY2VudCAgOwoJ
Ym94LnkyID0gcERyYXctPnkgKyB5ICsgKCBwR0MtPmZvbnQgKS0+aW5mby5tYXhib3VuZHMuICBk
ZXNjZW50ICA7CgoJeyBCb3hQdHIgZXh0ZW50cyA9ICYgIHBHQyAtPnBDb21wb3NpdGVDbGlwLT5l
eHRlbnRzOyBpZiggYm94IC54MSA8IGV4dGVudHMtPngxKSAgYm94IC54MSA9IGV4dGVudHMtPngx
OyBpZiggYm94IC54MiA+IGV4dGVudHMtPngyKSAgYm94IC54MiA9IGV4dGVudHMtPngyOyBpZigg
Ym94IC55MSA8IGV4dGVudHMtPnkxKSAgYm94IC55MSA9IGV4dGVudHMtPnkxOyBpZiggYm94IC55
MiA+IGV4dGVudHMtPnkyKSAgYm94IC55MiA9IGV4dGVudHMtPnkyOyB9IDsKCWlmKCgoKCBib3gg
LngyIC0gIGJveCAueDEpID4gMCkgJiYgKCggYm94IC55MiAtICBib3ggLnkxKSA+IDApKSApCgkg
ICBzaGFkb3dEYW1hZ2VCb3ggKChXaW5kb3dQdHIpIHBEcmF3LCAmYm94KTsKICAgIH0KCiAgICBy
ZXR1cm4gKHdpZHRoICsgeCk7Cn0KCnN0YXRpYyBpbnQKc2hhZG93UG9seVRleHQxNigKICAgIERy
YXdhYmxlUHRyIHBEcmF3LAogICAgR0NQdHIJcEdDLAogICAgaW50CQl4LAogICAgaW50CQl5LAog
ICAgaW50IAljb3VudCwKICAgIHVuc2lnbmVkIHNob3J0ICpjaGFycyAKKXsKICAgIGludCB3aWR0
aDsKCiAgICBzaGFkb3dHQ1ByaXZQdHIgIHBHQ1ByaXYgPSAoKHNoYWRvd0dDUHJpdlB0cikgKCAg
IHBHQyAgICktPmRldlByaXZhdGVzW3NoYWRvd0dDUHJpdmF0ZUluZGV4XS5wdHIpICA7IEdDRnVu
Y3MgKm9sZEZ1bmNzID0gIHBHQyAtPmZ1bmNzOyB7ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICBwR0NQ
cml2IC0+ICBmdW5jcyA7IH0gOyB7ICAgIHBHQyAgLT4gIG9wcyAgPSAgcEdDUHJpdiAtPiAgb3Bz
IDsgfSA7IDsKICAgIHdpZHRoID0gKCpwR0MtPm9wcy0+UG9seVRleHQxNikocERyYXcsIHBHQywg
eCwgeSwgY291bnQsIGNoYXJzKTsKICAgIHsgIHBHQ1ByaXYgLT4gIGZ1bmNzICA9ICAgIHBHQyAg
LT4gIGZ1bmNzIDsgICAgcEdDICAtPiAgZnVuY3MgID0gICBvbGRGdW5jcyA7IH0gOyB7ICBwR0NQ
cml2IC0+ICBvcHMgID0gICAgcEdDICAtPiAgb3BzIDsgICAgcEdDICAtPiAgb3BzICA9ICAgJnNo
YWRvd0dDT3BzIDsgfSAgOwoKICAgIHdpZHRoIC09IHg7CgogICAgaWYoMSAgJiYgKHdpZHRoID4g
MCkpIHsKCUJveFJlYyBib3g7CgoJIAoJYm94LngxID0gcERyYXctPnggKyB4ICsgKCBwR0MtPmZv
bnQgKS0+aW5mby5taW5ib3VuZHMuICBsZWZ0U2lkZUJlYXJpbmcgIDsKCWJveC54MiA9IHBEcmF3
LT54ICsgeCArICggcEdDLT5mb250ICktPmluZm8ubWF4Ym91bmRzLiAgcmlnaHRTaWRlQmVhcmlu
ZyAgOwoKCWlmKGNvdW50ID4gMSkgewoJICAgaWYod2lkdGggPiAwKSBib3gueDIgKz0gd2lkdGg7
CgkgICBlbHNlIGJveC54MSArPSB3aWR0aDsKCX0KCglib3gueTEgPSBwRHJhdy0+eSArIHkgLSAo
IHBHQy0+Zm9udCApLT5pbmZvLm1heGJvdW5kcy4gIGFzY2VudCAgOwoJYm94LnkyID0gcERyYXct
PnkgKyB5ICsgKCBwR0MtPmZvbnQgKS0+aW5mby5tYXhib3VuZHMuICBkZXNjZW50ICA7CgoJeyBC
b3hQdHIgZXh0ZW50cyA9ICYgIHBHQyAtPnBDb21wb3NpdGVDbGlwLT5leHRlbnRzOyBpZiggYm94
IC54MSA8IGV4dGVudHMtPngxKSAgYm94IC54MSA9IGV4dGVudHMtPngxOyBpZiggYm94IC54MiA+
IGV4dGVudHMtPngyKSAgYm94IC54MiA9IGV4dGVudHMtPngyOyBpZiggYm94IC55MSA8IGV4dGVu
dHMtPnkxKSAgYm94IC55MSA9IGV4dGVudHMtPnkxOyBpZiggYm94IC55MiA+IGV4dGVudHMtPnky
KSAgYm94IC55MiA9IGV4dGVudHMtPnkyOyB9IDsKCWlmKCgoKCBib3ggLngyIC0gIGJveCAueDEp
ID4gMCkgJiYgKCggYm94IC55MiAtICBib3ggLnkxKSA+IDApKSApCgkgICBzaGFkb3dEYW1hZ2VC
b3ggKChXaW5kb3dQdHIpIHBEcmF3LCAmYm94KTsKICAgIH0KCiAgICByZXR1cm4gKHdpZHRoICsg
eCk7Cn0KCnN0YXRpYyB2b2lkCnNoYWRvd0ltYWdlVGV4dDgoCiAgICBEcmF3YWJsZVB0ciBwRHJh
dywKICAgIEdDUHRyCXBHQywKICAgIGludAkJeCwgCiAgICBpbnQJCXksCiAgICBpbnQgCWNvdW50
LAogICAgY2hhcgkqY2hhcnMgCil7CiAgICBzaGFkb3dHQ1ByaXZQdHIgIHBHQ1ByaXYgPSAoKHNo
YWRvd0dDUHJpdlB0cikgKCAgIHBHQyAgICktPmRldlByaXZhdGVzW3NoYWRvd0dDUHJpdmF0ZUlu
ZGV4XS5wdHIpICA7IEdDRnVuY3MgKm9sZEZ1bmNzID0gIHBHQyAtPmZ1bmNzOyB7ICAgIHBHQyAg
LT4gIGZ1bmNzICA9ICBwR0NQcml2IC0+ICBmdW5jcyA7IH0gOyB7ICAgIHBHQyAgLT4gIG9wcyAg
PSAgcEdDUHJpdiAtPiAgb3BzIDsgfSA7IDsKICAgICgqcEdDLT5vcHMtPkltYWdlVGV4dDgpKHBE
cmF3LCBwR0MsIHgsIHksIGNvdW50LCBjaGFycyk7CiAgICB7ICBwR0NQcml2IC0+ICBmdW5jcyAg
PSAgICBwR0MgIC0+ICBmdW5jcyA7ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICAgb2xkRnVuY3MgOyB9
IDsgeyAgcEdDUHJpdiAtPiAgb3BzICA9ICAgIHBHQyAgLT4gIG9wcyA7ICAgIHBHQyAgLT4gIG9w
cyAgPSAgICZzaGFkb3dHQ09wcyA7IH0gIDsKCiAgICBpZigxICAmJiBjb3VudCkgewoJaW50IHRv
cCwgYm90LCBNaW4sIE1heDsKCUJveFJlYyBib3g7CgoJdG9wID0gKCgoICggcEdDLT5mb250ICkt
PmluZm8ubWF4Ym91bmRzLiAgYXNjZW50ICAgKSA+ICggICggcEdDLT5mb250ICktPmluZm8uZm9u
dEFzY2VudCAgKSkgPyAoICggcEdDLT5mb250ICktPmluZm8ubWF4Ym91bmRzLiAgYXNjZW50ICAg
KSA6ICggICggcEdDLT5mb250ICktPmluZm8uZm9udEFzY2VudCAgKSkgOwoJYm90ID0gKCgoICgg
cEdDLT5mb250ICktPmluZm8ubWF4Ym91bmRzLiAgZGVzY2VudCAgICkgPiAoICAoIHBHQy0+Zm9u
dCApLT5pbmZvLmZvbnREZXNjZW50ICApKSA/ICggKCBwR0MtPmZvbnQgKS0+aW5mby5tYXhib3Vu
ZHMuICBkZXNjZW50ICAgKSA6ICggICggcEdDLT5mb250ICktPmluZm8uZm9udERlc2NlbnQgICkp
IDsKCglNaW4gPSBjb3VudCAqICggcEdDLT5mb250ICktPmluZm8ubWluYm91bmRzLiAgY2hhcmFj
dGVyV2lkdGggIDsKCWlmKE1pbiA+IDApIE1pbiA9IDA7CglNYXggPSBjb3VudCAqICggcEdDLT5m
b250ICktPmluZm8ubWF4Ym91bmRzLiAgY2hhcmFjdGVyV2lkdGggIDsJCglpZihNYXggPCAwKSBN
YXggPSAwOwoKCSAKCWJveC54MSA9IHBEcmF3LT54ICsgeCArIE1pbiArCgkJKCBwR0MtPmZvbnQg
KS0+aW5mby5taW5ib3VuZHMuICBsZWZ0U2lkZUJlYXJpbmcgIDsKCWJveC54MiA9IHBEcmF3LT54
ICsgeCArIE1heCArIAoJCSggcEdDLT5mb250ICktPmluZm8ubWF4Ym91bmRzLiAgcmlnaHRTaWRl
QmVhcmluZyAgOwoKCWJveC55MSA9IHBEcmF3LT55ICsgeSAtIHRvcDsKCWJveC55MiA9IHBEcmF3
LT55ICsgeSArIGJvdDsKCgl7IEJveFB0ciBleHRlbnRzID0gJiAgcEdDIC0+cENvbXBvc2l0ZUNs
aXAtPmV4dGVudHM7IGlmKCBib3ggLngxIDwgZXh0ZW50cy0+eDEpICBib3ggLngxID0gZXh0ZW50
cy0+eDE7IGlmKCBib3ggLngyID4gZXh0ZW50cy0+eDIpICBib3ggLngyID0gZXh0ZW50cy0+eDI7
IGlmKCBib3ggLnkxIDwgZXh0ZW50cy0+eTEpICBib3ggLnkxID0gZXh0ZW50cy0+eTE7IGlmKCBi
b3ggLnkyID4gZXh0ZW50cy0+eTIpICBib3ggLnkyID0gZXh0ZW50cy0+eTI7IH0gOwoJaWYoKCgo
IGJveCAueDIgLSAgYm94IC54MSkgPiAwKSAmJiAoKCBib3ggLnkyIC0gIGJveCAueTEpID4gMCkp
ICkKCSAgIHNoYWRvd0RhbWFnZUJveCAoKFdpbmRvd1B0cikgcERyYXcsICZib3gpOwogICAgfQp9
CnN0YXRpYyB2b2lkCnNoYWRvd0ltYWdlVGV4dDE2KAogICAgRHJhd2FibGVQdHIgcERyYXcsCiAg
ICBHQ1B0cglwR0MsCiAgICBpbnQJCXgsCiAgICBpbnQJCXksCiAgICBpbnQgCWNvdW50LAogICAg
dW5zaWduZWQgc2hvcnQgKmNoYXJzIAopewogICAgc2hhZG93R0NQcml2UHRyICBwR0NQcml2ID0g
KChzaGFkb3dHQ1ByaXZQdHIpICggICBwR0MgICApLT5kZXZQcml2YXRlc1tzaGFkb3dHQ1ByaXZh
dGVJbmRleF0ucHRyKSAgOyBHQ0Z1bmNzICpvbGRGdW5jcyA9ICBwR0MgLT5mdW5jczsgeyAgICBw
R0MgIC0+ICBmdW5jcyAgPSAgcEdDUHJpdiAtPiAgZnVuY3MgOyB9IDsgeyAgICBwR0MgIC0+ICBv
cHMgID0gIHBHQ1ByaXYgLT4gIG9wcyA7IH0gOyA7CiAgICAoKnBHQy0+b3BzLT5JbWFnZVRleHQx
NikocERyYXcsIHBHQywgeCwgeSwgY291bnQsIGNoYXJzKTsKICAgIHsgIHBHQ1ByaXYgLT4gIGZ1
bmNzICA9ICAgIHBHQyAgLT4gIGZ1bmNzIDsgICAgcEdDICAtPiAgZnVuY3MgID0gICBvbGRGdW5j
cyA7IH0gOyB7ICBwR0NQcml2IC0+ICBvcHMgID0gICAgcEdDICAtPiAgb3BzIDsgICAgcEdDICAt
PiAgb3BzICA9ICAgJnNoYWRvd0dDT3BzIDsgfSAgOwoKICAgIGlmKDEgICYmIGNvdW50KSB7Cglp
bnQgdG9wLCBib3QsIE1pbiwgTWF4OwoJQm94UmVjIGJveDsKCgl0b3AgPSAoKCggKCBwR0MtPmZv
bnQgKS0+aW5mby5tYXhib3VuZHMuICBhc2NlbnQgICApID4gKCAgKCBwR0MtPmZvbnQgKS0+aW5m
by5mb250QXNjZW50ICApKSA/ICggKCBwR0MtPmZvbnQgKS0+aW5mby5tYXhib3VuZHMuICBhc2Nl
bnQgICApIDogKCAgKCBwR0MtPmZvbnQgKS0+aW5mby5mb250QXNjZW50ICApKSA7Cglib3QgPSAo
KCggKCBwR0MtPmZvbnQgKS0+aW5mby5tYXhib3VuZHMuICBkZXNjZW50ICAgKSA+ICggICggcEdD
LT5mb250ICktPmluZm8uZm9udERlc2NlbnQgICkpID8gKCAoIHBHQy0+Zm9udCApLT5pbmZvLm1h
eGJvdW5kcy4gIGRlc2NlbnQgICApIDogKCAgKCBwR0MtPmZvbnQgKS0+aW5mby5mb250RGVzY2Vu
dCAgKSkgOwoKCU1pbiA9IGNvdW50ICogKCBwR0MtPmZvbnQgKS0+aW5mby5taW5ib3VuZHMuICBj
aGFyYWN0ZXJXaWR0aCAgOwoJaWYoTWluID4gMCkgTWluID0gMDsKCU1heCA9IGNvdW50ICogKCBw
R0MtPmZvbnQgKS0+aW5mby5tYXhib3VuZHMuICBjaGFyYWN0ZXJXaWR0aCAgOwkKCWlmKE1heCA8
IDApIE1heCA9IDA7CgoJIAoJYm94LngxID0gcERyYXctPnggKyB4ICsgTWluICsKCQkoIHBHQy0+
Zm9udCApLT5pbmZvLm1pbmJvdW5kcy4gIGxlZnRTaWRlQmVhcmluZyAgOwoJYm94LngyID0gcERy
YXctPnggKyB4ICsgTWF4ICsgCgkJKCBwR0MtPmZvbnQgKS0+aW5mby5tYXhib3VuZHMuICByaWdo
dFNpZGVCZWFyaW5nICA7CgoJYm94LnkxID0gcERyYXctPnkgKyB5IC0gdG9wOwoJYm94LnkyID0g
cERyYXctPnkgKyB5ICsgYm90OwoKCXsgQm94UHRyIGV4dGVudHMgPSAmICBwR0MgLT5wQ29tcG9z
aXRlQ2xpcC0+ZXh0ZW50czsgaWYoIGJveCAueDEgPCBleHRlbnRzLT54MSkgIGJveCAueDEgPSBl
eHRlbnRzLT54MTsgaWYoIGJveCAueDIgPiBleHRlbnRzLT54MikgIGJveCAueDIgPSBleHRlbnRz
LT54MjsgaWYoIGJveCAueTEgPCBleHRlbnRzLT55MSkgIGJveCAueTEgPSBleHRlbnRzLT55MTsg
aWYoIGJveCAueTIgPiBleHRlbnRzLT55MikgIGJveCAueTIgPSBleHRlbnRzLT55MjsgfSA7Cglp
ZigoKCggYm94IC54MiAtICBib3ggLngxKSA+IDApICYmICgoIGJveCAueTIgLSAgYm94IC55MSkg
PiAwKSkgKQoJICAgc2hhZG93RGFtYWdlQm94ICgoV2luZG93UHRyKSBwRHJhdywgJmJveCk7CiAg
ICB9Cn0KCgpzdGF0aWMgdm9pZApzaGFkb3dJbWFnZUdseXBoQmx0KAogICAgRHJhd2FibGVQdHIg
cERyYXcsCiAgICBHQ1B0ciBwR0MsCiAgICBpbnQgeCwgaW50IHksCiAgICB1bnNpZ25lZCBpbnQg
bmdseXBoLAogICAgQ2hhckluZm9QdHIgKnBwY2ksCiAgICBwb2ludGVyIHBnbHlwaEJhc2UgCil7
CiAgICBzaGFkb3dHQ1ByaXZQdHIgIHBHQ1ByaXYgPSAoKHNoYWRvd0dDUHJpdlB0cikgKCAgIHBH
QyAgICktPmRldlByaXZhdGVzW3NoYWRvd0dDUHJpdmF0ZUluZGV4XS5wdHIpICA7IEdDRnVuY3Mg
Km9sZEZ1bmNzID0gIHBHQyAtPmZ1bmNzOyB7ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICBwR0NQcml2
IC0+ICBmdW5jcyA7IH0gOyB7ICAgIHBHQyAgLT4gIG9wcyAgPSAgcEdDUHJpdiAtPiAgb3BzIDsg
fSA7IDsKICAgICgqcEdDLT5vcHMtPkltYWdlR2x5cGhCbHQpKHBEcmF3LCBwR0MsIHgsIHksIG5n
bHlwaCwgCgkJCQkJcHBjaSwgcGdseXBoQmFzZSk7CiAgICB7ICBwR0NQcml2IC0+ICBmdW5jcyAg
PSAgICBwR0MgIC0+ICBmdW5jcyA7ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICAgb2xkRnVuY3MgOyB9
IDsgeyAgcEdDUHJpdiAtPiAgb3BzICA9ICAgIHBHQyAgLT4gIG9wcyA7ICAgIHBHQyAgLT4gIG9w
cyAgPSAgICZzaGFkb3dHQ09wcyA7IH0gIDsKCiAgICBpZigxICAmJiBuZ2x5cGgpIHsKCWludCB0
b3AsIGJvdCwgd2lkdGggPSAwOwoJQm94UmVjIGJveDsKCgl0b3AgPSAoKCggKCBwR0MtPmZvbnQg
KS0+aW5mby5tYXhib3VuZHMuICBhc2NlbnQgICApID4gKCAgKCBwR0MtPmZvbnQgKS0+aW5mby5m
b250QXNjZW50ICApKSA/ICggKCBwR0MtPmZvbnQgKS0+aW5mby5tYXhib3VuZHMuICBhc2NlbnQg
ICApIDogKCAgKCBwR0MtPmZvbnQgKS0+aW5mby5mb250QXNjZW50ICApKSA7Cglib3QgPSAoKCgg
KCBwR0MtPmZvbnQgKS0+aW5mby5tYXhib3VuZHMuICBkZXNjZW50ICAgKSA+ICggICggcEdDLT5m
b250ICktPmluZm8uZm9udERlc2NlbnQgICkpID8gKCAoIHBHQy0+Zm9udCApLT5pbmZvLm1heGJv
dW5kcy4gIGRlc2NlbnQgICApIDogKCAgKCBwR0MtPmZvbnQgKS0+aW5mby5mb250RGVzY2VudCAg
KSkgOwoKCWJveC54MSA9IHBwY2lbMF0tPm1ldHJpY3MubGVmdFNpZGVCZWFyaW5nOwoJaWYoYm94
LngxID4gMCkgYm94LngxID0gMDsKCWJveC54MiA9IHBwY2lbbmdseXBoIC0gMV0tPm1ldHJpY3Mu
cmlnaHRTaWRlQmVhcmluZyAtIAoJCXBwY2lbbmdseXBoIC0gMV0tPm1ldHJpY3MuY2hhcmFjdGVy
V2lkdGg7CglpZihib3gueDIgPCAwKSBib3gueDIgPSAwOwoKCWJveC54MiArPSBwRHJhdy0+eCAr
IHg7Cglib3gueDEgKz0gcERyYXctPnggKyB4OwoJICAgCgl3aGlsZShuZ2x5cGgtLSkgewoJICAg
IHdpZHRoICs9ICgqcHBjaSktPm1ldHJpY3MuY2hhcmFjdGVyV2lkdGg7CgkgICAgcHBjaSsrOwoJ
fQoKCWlmKHdpZHRoID4gMCkgCgkgICBib3gueDIgKz0gd2lkdGg7CgllbHNlIAoJICAgYm94Lngx
ICs9IHdpZHRoOwoKCWJveC55MSA9IHBEcmF3LT55ICsgeSAtIHRvcDsKCWJveC55MiA9IHBEcmF3
LT55ICsgeSArIGJvdDsKCgl7IEJveFB0ciBleHRlbnRzID0gJiAgcEdDIC0+cENvbXBvc2l0ZUNs
aXAtPmV4dGVudHM7IGlmKCBib3ggLngxIDwgZXh0ZW50cy0+eDEpICBib3ggLngxID0gZXh0ZW50
cy0+eDE7IGlmKCBib3ggLngyID4gZXh0ZW50cy0+eDIpICBib3ggLngyID0gZXh0ZW50cy0+eDI7
IGlmKCBib3ggLnkxIDwgZXh0ZW50cy0+eTEpICBib3ggLnkxID0gZXh0ZW50cy0+eTE7IGlmKCBi
b3ggLnkyID4gZXh0ZW50cy0+eTIpICBib3ggLnkyID0gZXh0ZW50cy0+eTI7IH0gOwoJaWYoKCgo
IGJveCAueDIgLSAgYm94IC54MSkgPiAwKSAmJiAoKCBib3ggLnkyIC0gIGJveCAueTEpID4gMCkp
ICkKCSAgIHNoYWRvd0RhbWFnZUJveCAoKFdpbmRvd1B0cikgcERyYXcsICZib3gpOwogICAgfQp9
CgpzdGF0aWMgdm9pZApzaGFkb3dQb2x5R2x5cGhCbHQoCiAgICBEcmF3YWJsZVB0ciBwRHJhdywK
ICAgIEdDUHRyIHBHQywKICAgIGludCB4LCBpbnQgeSwKICAgIHVuc2lnbmVkIGludCBuZ2x5cGgs
CiAgICBDaGFySW5mb1B0ciAqcHBjaSwKICAgIHBvaW50ZXIgcGdseXBoQmFzZSAKKXsKICAgIHNo
YWRvd0dDUHJpdlB0ciAgcEdDUHJpdiA9ICgoc2hhZG93R0NQcml2UHRyKSAoICAgcEdDICAgKS0+
ZGV2UHJpdmF0ZXNbc2hhZG93R0NQcml2YXRlSW5kZXhdLnB0cikgIDsgR0NGdW5jcyAqb2xkRnVu
Y3MgPSAgcEdDIC0+ZnVuY3M7IHsgICAgcEdDICAtPiAgZnVuY3MgID0gIHBHQ1ByaXYgLT4gIGZ1
bmNzIDsgfSA7IHsgICAgcEdDICAtPiAgb3BzICA9ICBwR0NQcml2IC0+ICBvcHMgOyB9IDsgOwog
ICAgKCpwR0MtPm9wcy0+UG9seUdseXBoQmx0KShwRHJhdywgcEdDLCB4LCB5LCBuZ2x5cGgsIAoJ
CQkJcHBjaSwgcGdseXBoQmFzZSk7CiAgICB7ICBwR0NQcml2IC0+ICBmdW5jcyAgPSAgICBwR0Mg
IC0+ICBmdW5jcyA7ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICAgb2xkRnVuY3MgOyB9IDsgeyAgcEdD
UHJpdiAtPiAgb3BzICA9ICAgIHBHQyAgLT4gIG9wcyA7ICAgIHBHQyAgLT4gIG9wcyAgPSAgICZz
aGFkb3dHQ09wcyA7IH0gIDsKCiAgICBpZigxICAmJiBuZ2x5cGgpIHsKCUJveFJlYyBib3g7CgoJ
IAoJYm94LngxID0gcERyYXctPnggKyB4ICsgcHBjaVswXS0+bWV0cmljcy5sZWZ0U2lkZUJlYXJp
bmc7Cglib3gueDIgPSBwRHJhdy0+eCArIHggKyBwcGNpW25nbHlwaCAtIDFdLT5tZXRyaWNzLnJp
Z2h0U2lkZUJlYXJpbmc7CgoJaWYobmdseXBoID4gMSkgewoJICAgIGludCB3aWR0aCA9IDA7CgoJ
ICAgIHdoaWxlKC0tbmdseXBoKSB7IAoJCXdpZHRoICs9ICgqcHBjaSktPm1ldHJpY3MuY2hhcmFj
dGVyV2lkdGg7CgkJcHBjaSsrOwoJICAgIH0KCQoJICAgIGlmKHdpZHRoID4gMCkgYm94LngyICs9
IHdpZHRoOwoJICAgIGVsc2UgYm94LngxICs9IHdpZHRoOwoJfQoKCWJveC55MSA9IHBEcmF3LT55
ICsgeSAtICggcEdDLT5mb250ICktPmluZm8ubWF4Ym91bmRzLiAgYXNjZW50ICA7Cglib3gueTIg
PSBwRHJhdy0+eSArIHkgKyAoIHBHQy0+Zm9udCApLT5pbmZvLm1heGJvdW5kcy4gIGRlc2NlbnQg
IDsKCgl7IEJveFB0ciBleHRlbnRzID0gJiAgcEdDIC0+cENvbXBvc2l0ZUNsaXAtPmV4dGVudHM7
IGlmKCBib3ggLngxIDwgZXh0ZW50cy0+eDEpICBib3ggLngxID0gZXh0ZW50cy0+eDE7IGlmKCBi
b3ggLngyID4gZXh0ZW50cy0+eDIpICBib3ggLngyID0gZXh0ZW50cy0+eDI7IGlmKCBib3ggLnkx
IDwgZXh0ZW50cy0+eTEpICBib3ggLnkxID0gZXh0ZW50cy0+eTE7IGlmKCBib3ggLnkyID4gZXh0
ZW50cy0+eTIpICBib3ggLnkyID0gZXh0ZW50cy0+eTI7IH0gOwoJaWYoKCgoIGJveCAueDIgLSAg
Ym94IC54MSkgPiAwKSAmJiAoKCBib3ggLnkyIC0gIGJveCAueTEpID4gMCkpICkKCSAgIHNoYWRv
d0RhbWFnZUJveCAoKFdpbmRvd1B0cikgcERyYXcsICZib3gpOwogICAgfQp9CgpzdGF0aWMgdm9p
ZApzaGFkb3dQdXNoUGl4ZWxzKAogICAgR0NQdHIJcEdDLAogICAgUGl4bWFwUHRyCXBCaXRNYXAs
CiAgICBEcmF3YWJsZVB0ciBwRHJhdywKICAgIGludAlkeCwgaW50IGR5LCBpbnQgeE9yZywgaW50
IHlPcmcgCil7CiAgICBzaGFkb3dHQ1ByaXZQdHIgIHBHQ1ByaXYgPSAoKHNoYWRvd0dDUHJpdlB0
cikgKCAgIHBHQyAgICktPmRldlByaXZhdGVzW3NoYWRvd0dDUHJpdmF0ZUluZGV4XS5wdHIpICA7
IEdDRnVuY3MgKm9sZEZ1bmNzID0gIHBHQyAtPmZ1bmNzOyB7ICAgIHBHQyAgLT4gIGZ1bmNzICA9
ICBwR0NQcml2IC0+ICBmdW5jcyA7IH0gOyB7ICAgIHBHQyAgLT4gIG9wcyAgPSAgcEdDUHJpdiAt
PiAgb3BzIDsgfSA7IDsKICAgICgqcEdDLT5vcHMtPlB1c2hQaXhlbHMpKHBHQywgcEJpdE1hcCwg
cERyYXcsIGR4LCBkeSwgeE9yZywgeU9yZyk7CiAgICB7ICBwR0NQcml2IC0+ICBmdW5jcyAgPSAg
ICBwR0MgIC0+ICBmdW5jcyA7ICAgIHBHQyAgLT4gIGZ1bmNzICA9ICAgb2xkRnVuY3MgOyB9IDsg
eyAgcEdDUHJpdiAtPiAgb3BzICA9ICAgIHBHQyAgLT4gIG9wcyA7ICAgIHBHQyAgLT4gIG9wcyAg
PSAgICZzaGFkb3dHQ09wcyA7IH0gIDsKCiAgICBpZigxICkgewoJQm94UmVjIGJveDsKCglib3gu
eDEgPSB4T3JnICsgcERyYXctPng7Cglib3gueDIgPSBib3gueDEgKyBkeDsKCWJveC55MSA9IHlP
cmcgKyBwRHJhdy0+eTsKCWJveC55MiA9IGJveC55MSArIGR5OwoKCXsgQm94UHRyIGV4dGVudHMg
PSAmICBwR0MgLT5wQ29tcG9zaXRlQ2xpcC0+ZXh0ZW50czsgaWYoIGJveCAueDEgPCBleHRlbnRz
LT54MSkgIGJveCAueDEgPSBleHRlbnRzLT54MTsgaWYoIGJveCAueDIgPiBleHRlbnRzLT54Mikg
IGJveCAueDIgPSBleHRlbnRzLT54MjsgaWYoIGJveCAueTEgPCBleHRlbnRzLT55MSkgIGJveCAu
eTEgPSBleHRlbnRzLT55MTsgaWYoIGJveCAueTIgPiBleHRlbnRzLT55MikgIGJveCAueTIgPSBl
eHRlbnRzLT55MjsgfSA7CglpZigoKCggYm94IC54MiAtICBib3ggLngxKSA+IDApICYmICgoIGJv
eCAueTIgLSAgYm94IC55MSkgPiAwKSkgKQoJICAgc2hhZG93RGFtYWdlQm94ICgoV2luZG93UHRy
KSBwRHJhdywgJmJveCk7CiAgICB9Cn0KCgpzdGF0aWMgdm9pZApzaGFkb3dQYWludFdpbmRvdygK
ICBXaW5kb3dQdHIgcFdpbmRvdywKICBSZWdpb25QdHIgcHJnbiwKICBpbnQgd2hhdCAKKXsKICAg
IFNjcmVlblB0ciBwU2NyZWVuID0gcFdpbmRvdy0+ZHJhd2FibGUucFNjcmVlbjsKICAgIHNoYWRv
d1NjclByaXZQdHIgICAgcFNjclByaXYgPSAoKHNoYWRvd1NjclByaXZQdHIpICggIHBTY3JlZW4g
ICktPmRldlByaXZhdGVzW3NoYWRvd1NjclByaXZhdGVJbmRleF0ucHRyKSAgOwogICAgCiAgICBp
Zih3aGF0ID09IDAgKSB7Cgl7ICAgcFNjcmVlbiAtPiAgUGFpbnRXaW5kb3dCYWNrZ3JvdW5kICA9
ICBwU2NyUHJpdiAtPiAgUGFpbnRXaW5kb3dCYWNrZ3JvdW5kIDsgfSA7CgkoKnBTY3JlZW4tPlBh
aW50V2luZG93QmFja2dyb3VuZCkgKHBXaW5kb3csIHByZ24sIHdoYXQpOwoJeyAgcFNjclByaXYg
LT4gIFBhaW50V2luZG93QmFja2dyb3VuZCAgPSAgIHBTY3JlZW4gLT4gIFBhaW50V2luZG93QmFj
a2dyb3VuZCA7ICAgcFNjcmVlbiAtPiAgUGFpbnRXaW5kb3dCYWNrZ3JvdW5kICA9ICAgc2hhZG93
UGFpbnRXaW5kb3cgOyB9IDsKICAgIH0gZWxzZSB7Cgl7ICAgcFNjcmVlbiAtPiAgUGFpbnRXaW5k
b3dCb3JkZXIgID0gIHBTY3JQcml2IC0+ICBQYWludFdpbmRvd0JvcmRlciA7IH0gOwoJKCpwU2Ny
ZWVuLT5QYWludFdpbmRvd0JvcmRlcikgKHBXaW5kb3csIHByZ24sIHdoYXQpOwoJeyAgcFNjclBy
aXYgLT4gIFBhaW50V2luZG93Qm9yZGVyICA9ICAgcFNjcmVlbiAtPiAgUGFpbnRXaW5kb3dCb3Jk
ZXIgOyAgIHBTY3JlZW4gLT4gIFBhaW50V2luZG93Qm9yZGVyICA9ICAgc2hhZG93UGFpbnRXaW5k
b3cgOyB9IDsKICAgIH0KICAgIHNoYWRvd0RhbWFnZVJlZ2lvbiAocFdpbmRvdywgcHJnbik7Cn0K
CgpzdGF0aWMgdm9pZCAKc2hhZG93Q29weVdpbmRvdygKICAgV2luZG93UHRyIHBXaW5kb3csCiAg
IEREWFBvaW50UmVjIHB0T2xkT3JnLAogICBSZWdpb25QdHIgcHJnbiAKKXsKICAgIFNjcmVlblB0
ciBwU2NyZWVuID0gcFdpbmRvdy0+ZHJhd2FibGUucFNjcmVlbjsKICAgIHNoYWRvd1NjclByaXZQ
dHIgICAgcFNjclByaXYgPSAoKHNoYWRvd1NjclByaXZQdHIpICggIHBTY3JlZW4gICktPmRldlBy
aXZhdGVzW3NoYWRvd1NjclByaXZhdGVJbmRleF0ucHRyKSAgOwoKICAgIHsgICBwU2NyZWVuIC0+
ICBDb3B5V2luZG93ICA9ICBwU2NyUHJpdiAtPiAgQ29weVdpbmRvdyA7IH0gOwogICAgKCpwU2Ny
ZWVuLT5Db3B5V2luZG93KSAocFdpbmRvdywgcHRPbGRPcmcsIHByZ24pOwogICAgeyAgcFNjclBy
aXYgLT4gIENvcHlXaW5kb3cgID0gICBwU2NyZWVuIC0+ICBDb3B5V2luZG93IDsgICBwU2NyZWVu
IC0+ICBDb3B5V2luZG93ICA9ICAgc2hhZG93Q29weVdpbmRvdyA7IH0gOwogICAgc2hhZG93RGFt
YWdlUmVnaW9uIChwV2luZG93LCBwcmduKTsKfQoKR0NPcHMgc2hhZG93R0NPcHMgPSB7CiAgICBz
aGFkb3dGaWxsU3BhbnMsIHNoYWRvd1NldFNwYW5zLCAKICAgIHNoYWRvd1B1dEltYWdlLCBzaGFk
b3dDb3B5QXJlYSwgCiAgICBzaGFkb3dDb3B5UGxhbmUsIHNoYWRvd1BvbHlQb2ludCwgCiAgICBz
aGFkb3dQb2x5bGluZXMsIHNoYWRvd1BvbHlTZWdtZW50LCAKICAgIHNoYWRvd1BvbHlSZWN0YW5n
bGUsIHNoYWRvd1BvbHlBcmMsIAogICAgc2hhZG93RmlsbFBvbHlnb24sIHNoYWRvd1BvbHlGaWxs
UmVjdCwgCiAgICBzaGFkb3dQb2x5RmlsbEFyYywgc2hhZG93UG9seVRleHQ4LCAKICAgIHNoYWRv
d1BvbHlUZXh0MTYsIHNoYWRvd0ltYWdlVGV4dDgsIAogICAgc2hhZG93SW1hZ2VUZXh0MTYsIHNo
YWRvd0ltYWdlR2x5cGhCbHQsIAogICAgc2hhZG93UG9seUdseXBoQmx0LCBzaGFkb3dQdXNoUGl4
ZWxzLAoKCgogICAgeygodm9pZCAqKTApIH0JCSAKfTsKCnN0YXRpYyB2b2lkCnNoYWRvd0dldElt
YWdlIChEcmF3YWJsZVB0ciBwRHJhd2FibGUsCgkJaW50IHN4LAoJCWludCBzeSwKCQlpbnQgdywK
CQlpbnQgaCwKCQl1bnNpZ25lZCBpbnQgZm9ybWF0LAoJCXVuc2lnbmVkIGxvbmcgcGxhbmVNYXNr
LAoJCWNoYXIgKiBwZHN0TGluZSkKewogICAgU2NyZWVuUHRyIHBTY3JlZW4gPSBwRHJhd2FibGUt
PnBTY3JlZW47CiAgICBzaGFkb3dTY3JQcml2UHRyICAgIHBTY3JQcml2ID0gKChzaGFkb3dTY3JQ
cml2UHRyKSAoICBwU2NyZWVuICApLT5kZXZQcml2YXRlc1tzaGFkb3dTY3JQcml2YXRlSW5kZXhd
LnB0cikgIDsKCiAgICAgCiAgICBpZiAocERyYXdhYmxlLT50eXBlID09IDAgKQoJc2hhZG93UmVk
aXNwbGF5IChwU2NyZWVuKTsKICAgIHsgICBwU2NyZWVuIC0+ICBHZXRJbWFnZSAgPSAgcFNjclBy
aXYgLT4gIEdldEltYWdlIDsgfSA7CiAgICAoKnBTY3JlZW4tPkdldEltYWdlKSAocERyYXdhYmxl
LCBzeCwgc3ksIHcsIGgsIGZvcm1hdCwgcGxhbmVNYXNrLCBwZHN0TGluZSk7CiAgICB7ICBwU2Ny
UHJpdiAtPiAgR2V0SW1hZ2UgID0gICBwU2NyZWVuIC0+ICBHZXRJbWFnZSA7ICAgcFNjcmVlbiAt
PiAgR2V0SW1hZ2UgID0gICBzaGFkb3dHZXRJbWFnZSA7IH0gOwp9CgoJCQpzdGF0aWMgQm9vbApz
aGFkb3dDbG9zZVNjcmVlbiAoaW50IGksIFNjcmVlblB0ciBwU2NyZWVuKQp7CiAgICBzaGFkb3dT
Y3JQcml2UHRyICAgIHBTY3JQcml2ID0gKChzaGFkb3dTY3JQcml2UHRyKSAoICBwU2NyZWVuICAp
LT5kZXZQcml2YXRlc1tzaGFkb3dTY3JQcml2YXRlSW5kZXhdLnB0cikgIDsKCiAgICB7ICAgcFNj
cmVlbiAtPiAgQ2xvc2VTY3JlZW4gID0gIHBTY3JQcml2IC0+ICBDbG9zZVNjcmVlbiA7IH0gOwog
ICAgWGZyZWUoKHBvaW50ZXIpKCBwU2NyUHJpdiApKSA7CiAgICByZXR1cm4gKCpwU2NyZWVuLT5D
bG9zZVNjcmVlbikgKGksIHBTY3JlZW4pOyAgICAKfQoKQm9vbApzaGFkb3dJbml0IChTY3JlZW5Q
dHIgcFNjcmVlbiwgU2hhZG93VXBkYXRlUHJvYyB1cGRhdGUsIFNoYWRvd1dpbmRvd1Byb2Mgd2lu
ZG93KQp7CiAgICBzaGFkb3dTY3JQcml2UHRyCXBTY3JQcml2OwoKICAgIFBpY3R1cmVTY3JlZW5Q
dHIJcHMgPSAoKFBpY3R1cmVTY3JlZW5QdHIpICgoIHBTY3JlZW4gKS0+ZGV2UHJpdmF0ZXNbUGlj
dHVyZVNjcmVlblByaXZhdGVJbmRleF0ucHRyKSkgOwoKICAgIAogICAgaWYgKHNoYWRvd0dlbmVy
YXRpb24gIT0gc2VydmVyR2VuZXJhdGlvbikKICAgIHsKCXNoYWRvd1NjclByaXZhdGVJbmRleCA9
IEFsbG9jYXRlU2NyZWVuUHJpdmF0ZUluZGV4ICgpOwoJaWYgKHNoYWRvd1NjclByaXZhdGVJbmRl
eCA9PSAtMSkKCSAgICByZXR1cm4gMCA7CglzaGFkb3dHQ1ByaXZhdGVJbmRleCA9IEFsbG9jYXRl
R0NQcml2YXRlSW5kZXggKCk7CglpZiAoc2hhZG93R0NQcml2YXRlSW5kZXggPT0gLTEpCgkgICAg
cmV0dXJuIDAgOwoJc2hhZG93R2VuZXJhdGlvbiA9IHNlcnZlckdlbmVyYXRpb247CiAgICB9CiAg
ICBpZiAoIUFsbG9jYXRlR0NQcml2YXRlIChwU2NyZWVuLCBzaGFkb3dHQ1ByaXZhdGVJbmRleCwg
c2l6ZW9mIChzaGFkb3dHQ1ByaXZSZWMpKSkKCXJldHVybiAwIDsKICAgIHBTY3JQcml2ID0gKHNo
YWRvd1NjclByaXZQdHIpIFhhbGxvYygodW5zaWduZWQgbG9uZykoIHNpemVvZiAoc2hhZG93U2Ny
UHJpdlJlYykgKSkgOwogICAgaWYgKCFwU2NyUHJpdikKCXJldHVybiAwIDsKICAgIHsgaWYgKCAg
KChCb3hQdHIpMCkgICkgeyAoICAmcFNjclByaXYtPmRhbWFnZSApLT5leHRlbnRzID0gKiggICgo
Qm94UHRyKTApICApOyAoICAmcFNjclByaXYtPmRhbWFnZSApLT5kYXRhID0gKFJlZ0RhdGFQdHIp
KCh2b2lkICopMCkgOyB9IGVsc2UgeyAoICAmcFNjclByaXYtPmRhbWFnZSApLT5leHRlbnRzID0g
bWlFbXB0eUJveDsgaWYgKCgoICAwICkgPiAxKSAmJiAoKCAgJnBTY3JQcml2LT5kYW1hZ2UgKS0+
ZGF0YSA9IChSZWdEYXRhUHRyKVhhbGxvYygodW5zaWduZWQgbG9uZykoIChzaXplb2YoUmVnRGF0
YVJlYykgKyAoKCAgIDAgICkgKiBzaXplb2YoQm94UmVjKSkpICApKSApKSB7ICggICZwU2NyUHJp
di0+ZGFtYWdlICktPmRhdGEtPnNpemUgPSAoICAwICk7ICggICZwU2NyUHJpdi0+ZGFtYWdlICkt
PmRhdGEtPm51bVJlY3RzID0gMDsgfSBlbHNlICggICZwU2NyUHJpdi0+ZGFtYWdlICktPmRhdGEg
PSAmbWlFbXB0eURhdGE7IH0gfSA7CiAgICBwU2NyUHJpdi0+dXBkYXRlID0gdXBkYXRlOwogICAg
cFNjclByaXYtPndpbmRvdyA9IHdpbmRvdzsKICAgIGlmICghUmVnaXN0ZXJCbG9ja0FuZFdha2V1
cEhhbmRsZXJzIChzaGFkb3dCbG9ja0hhbmRsZXIsCgkJCQkJIHNoYWRvd1dha2V1cEhhbmRsZXIs
CgkJCQkJIChwb2ludGVyKSBwU2NyZWVuKSkKCXJldHVybiAwIDsKICAgIAogICAgeyAgcFNjclBy
aXYgLT4gIENyZWF0ZUdDICA9ICAgcFNjcmVlbiAtPiAgQ3JlYXRlR0MgOyAgIHBTY3JlZW4gLT4g
IENyZWF0ZUdDICA9ICAgc2hhZG93Q3JlYXRlR0MgOyB9IDsKICAgIHsgIHBTY3JQcml2IC0+ICBQ
YWludFdpbmRvd0JhY2tncm91bmQgID0gICBwU2NyZWVuIC0+ICBQYWludFdpbmRvd0JhY2tncm91
bmQgOyAgIHBTY3JlZW4gLT4gIFBhaW50V2luZG93QmFja2dyb3VuZCAgPSAgIHNoYWRvd1BhaW50
V2luZG93IDsgfSA7CiAgICB7ICBwU2NyUHJpdiAtPiAgUGFpbnRXaW5kb3dCb3JkZXIgID0gICBw
U2NyZWVuIC0+ICBQYWludFdpbmRvd0JvcmRlciA7ICAgcFNjcmVlbiAtPiAgUGFpbnRXaW5kb3dC
b3JkZXIgID0gICBzaGFkb3dQYWludFdpbmRvdyA7IH0gOwogICAgeyAgcFNjclByaXYgLT4gIENv
cHlXaW5kb3cgID0gICBwU2NyZWVuIC0+ICBDb3B5V2luZG93IDsgICBwU2NyZWVuIC0+ICBDb3B5
V2luZG93ICA9ICAgc2hhZG93Q29weVdpbmRvdyA7IH0gOwogICAgeyAgcFNjclByaXYgLT4gIENs
b3NlU2NyZWVuICA9ICAgcFNjcmVlbiAtPiAgQ2xvc2VTY3JlZW4gOyAgIHBTY3JlZW4gLT4gIENs
b3NlU2NyZWVuICA9ICAgc2hhZG93Q2xvc2VTY3JlZW4gOyB9IDsKICAgIHsgIHBTY3JQcml2IC0+
ICBHZXRJbWFnZSAgPSAgIHBTY3JlZW4gLT4gIEdldEltYWdlIDsgICBwU2NyZWVuIC0+ICBHZXRJ
bWFnZSAgPSAgIHNoYWRvd0dldEltYWdlIDsgfSA7CgogICAgeyAgcFNjclByaXYgLT4gIEdseXBo
cyAgPSAgIHBzIC0+ICBHbHlwaHMgOyAgIHBzIC0+ICBHbHlwaHMgID0gICBzaGFkb3dHbHlwaHMg
OyB9IDsKICAgIHsgIHBTY3JQcml2IC0+ICBDb21wb3NpdGUgID0gICBwcyAtPiAgQ29tcG9zaXRl
IDsgICBwcyAtPiAgQ29tcG9zaXRlICA9ICAgc2hhZG93Q29tcG9zaXRlIDsgfSA7CgoKICAgIHBT
Y3JlZW4tPmRldlByaXZhdGVzW3NoYWRvd1NjclByaXZhdGVJbmRleF0ucHRyID0gKHBvaW50ZXIp
IHBTY3JQcml2OwogICAgcmV0dXJuIDEgOwp9Cg==


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2001-08-12 10:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-06-22  5:12 c/2404: arm-linux-gcc ice jsm28
  -- strict thread matches above, loose matches on Subject: below --
2001-08-12 10:02 rodrigc
2001-03-27 14:26 Philip Blundell
2001-03-27 14:16 bkohlen
2001-03-27 13:26 Philip Blundell
2001-03-27 12:46 bkohlen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).