<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>64754</bug_id>
          
          <creation_ts>2011-07-18 14:31:31 -0700</creation_ts>
          <short_desc>Rename FloatSize to GraphicsSize</short_desc>
          <delta_ts>2012-02-27 09:09:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>64413</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>438726</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-18 14:31:31 -0700</bug_when>
    <thetext>The first class to be renamed (to cut down on patch size).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438741</commentid>
    <comment_count>1</comment_count>
      <attachid>101207</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-18 14:51:21 -0700</bug_when>
    <thetext>Created attachment 101207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438748</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-18 14:56:29 -0700</bug_when>
    <thetext>Attachment 101207 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebKit2/Shared/WebEvent.h:182:  The parameter name &quot;phase&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/Shared/WebEvent.h:182:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 2 in 155 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438757</commentid>
    <comment_count>3</comment_count>
      <attachid>101214</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-18 15:07:05 -0700</bug_when>
    <thetext>Created attachment 101214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438836</commentid>
    <comment_count>4</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-18 16:55:32 -0700</bug_when>
    <thetext>Any comments/review would be much appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442368</commentid>
    <comment_count>5</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-26 11:03:13 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Any comments/review would be much appreciated.

Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443037</commentid>
    <comment_count>6</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-27 11:34:57 -0700</bug_when>
    <thetext>Simon, it&apos;d be great if you could take a look at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443066</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-27 12:17:55 -0700</bug_when>
    <thetext>Renaming the class seems wrong. Is a graphics-system-specific floating point size the only case where we want a floating point size? At the moment we use FloatSize a lot in WebKit, and on Mac OS X under 64-bit the graphics system size would be a DoubleSize, not a FloatSize. I am not sure that renaming is the right way to go here; we might need both or to use typedefs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443078</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-27 12:22:45 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Renaming the class seems wrong. Is a graphics-system-specific floating point size the only case where we want a floating point size? At the moment we use FloatSize a lot in WebKit, and on Mac OS X under 64-bit the graphics system size would be a DoubleSize, not a FloatSize. I am not sure that renaming is the right way to go here; we might need both or to use typedefs.

I agree. I also think that we might want to use floats for layout, but CGFloat for GraphicsContext etc (i.e. double on 64-bit).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443085</commentid>
    <comment_count>9</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-27 12:27:34 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Renaming the class seems wrong. Is a graphics-system-specific floating point size the only case where we want a floating point size? At the moment we use FloatSize a lot in WebKit, and on Mac OS X under 64-bit the graphics system size would be a DoubleSize, not a FloatSize. I am not sure that renaming is the right way to go here; we might need both or to use typedefs.

I wouldn&apos;t be particularly excited to create a whole new class for DoubleSize and such. At that point it seems like a template would be the answer, and we could always do something like:
typedef Size&lt;float&gt; FloatSize;
and maybe
typedef Size&lt;CGFloat&gt; GraphicsSize;
on Mac?

Any thoughts? I&apos;m also not sure that moving the Int* classes into a set of template specializations would be a win for simplicity, but I&apos;m open to the thought and willing to give it a try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443091</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-27 12:30:18 -0700</bug_when>
    <thetext>Template classes tend to make function names much longer for things like the .exp files and debugging much less pleasant. If we can mitigate that issue, then I think a template is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443092</commentid>
    <comment_count>11</comment_count>
      <attachid>101214</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-27 12:30:26 -0700</bug_when>
    <thetext>Comment on attachment 101214
Patch

Sounds like this one isn&apos;t the answer. Taking off the r?. I&apos;ll give templating a try unless there&apos;s pushback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443095</commentid>
    <comment_count>12</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-27 12:33:01 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Template classes tend to make function names much longer for things like the .exp files and debugging much less pleasant. If we can mitigate that issue, then I think a template is fine.

I agree. It just *seems* cleaner than creating a clone of the Float* classes that just substitute Double... I&apos;m honestly not sure how to make dealing with templates less of a pain though :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444100</commentid>
    <comment_count>13</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-29 14:21:48 -0700</bug_when>
    <thetext>I wanted to have something like this:


#if (USE(CG) || (PLATFORM(WX) &amp;&amp; OS(DARWIN)) || USE(SKIA_ON_MAC_CHROMIUM)) &amp;&amp; defined(CGFLOAT_IS_DOUBLE)
    typedef DoubleRect GraphicsRect;
#else
    typedef FloatRect GraphicsRect;
#endif

But many graphics functions are exported, and we can&apos;t export a typedef that changed like that (that I know of?). How important is it really to convert the GraphicsContext to CGFloat on Mac platforms? It doesn&apos;t seem like this will grant us any more precision, but only scale up to doubles on 64 bit platforms one step earlier than it does currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444212</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-29 18:14:33 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; #if (USE(CG) || (PLATFORM(WX) &amp;&amp; OS(DARWIN)) || USE(SKIA_ON_MAC_CHROMIUM)) &amp;&amp; defined(CGFLOAT_IS_DOUBLE)
&gt;     typedef DoubleRect GraphicsRect;
&gt; #else
&gt;     typedef FloatRect GraphicsRect;
&gt; #endif
&gt; 
&gt; But many graphics functions are exported, and we can&apos;t export a typedef that changed like that (that I know of?).

On Mac we have #if statements in our exp files. And we have various techniques to deal with the fact that CGFloat is a typedef.

&gt; How important is it really to convert the GraphicsContext to CGFloat on Mac platforms?

If that’s not what GraphicsRect means, then why not use FloatRect everywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565711</commentid>
    <comment_count>15</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-27 09:09:46 -0800</bug_when>
    <thetext>We no longer are taking this tact.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101207</attachid>
            <date>2011-07-18 14:51:21 -0700</date>
            <delta_ts>2011-07-18 15:07:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64754-20110718145120.patch</filename>
            <type>text/plain</type>
            <size>293980</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMjExKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzI4IEBACisyMDExLTA3LTE4ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgRmxvYXRTaXpl
IHRvIEdyYXBoaWNzU2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQ3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW5hbWluZyBGbG9hdFNpemUgdG8gR3JhcGhpY3NTaXplIGluIGFudGljaXBhdGlv
biBvZiBhbGxvd2luZyBwb3J0cyB0byB1c2UgNjQgYml0CisgICAgICAgIGZsb2F0cyBpZiB0aGV5
IHNvIGNob29zZS4KKworICAgICAgICBObyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2Vz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5v
cmRlcjoKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzdGFu
Y2VUb0Nsb3Nlc3RDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzdGFuY2VUb0ZhcnRoZXN0
Q29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6Omhvcml6b250YWxFbGxpcHNlUmFkaXVzKToKKyAg
ICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDYW52YXNFbGVtZW50Ojpjb252ZXJ0TG9naWNhbFRvRGV2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6YmFzZVRyYW5zZm9ybSk6CisgICAgICAgICogaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldEFsbEF0dHJpYnV0ZXNUb0RlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBh
Z2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVzaXplQnkp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZXNpemVUbyk6CisgICAgICAgICogcGFn
ZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0UHJpbnRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlc2l6ZVBhZ2VSZWN0c0tlZXBpbmdSYXRpbyk6CisgICAg
ICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uKToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzV2l0aFBh
Z2VTaXplSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpiZWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZh
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnNwb29sUGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQcmlu
dENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50
Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Zml0RHJhZ0ltYWdlVG9NYXhTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVicy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2lu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDo6bW92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcis9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yLT0pOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlcmF0b3IrKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yLSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRvdCk6CisgICAgICAgIChXZWJDb3JlOjppc1BvaW50SW5UcmlhbmdsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpGbG9h
dFF1YWQ6Om1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrPSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvci09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6RmxvYXRSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0UmVjdDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSZWN0Ojptb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0UmVjdDo6ZXhwYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVj
dDo6Y29udHJhY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJhdGVk
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6c3dhcCk6CisgICAgICAgIChXZWJDb3Jl
OjpHbHlwaEJ1ZmZlcjo6b2Zmc2V0QXQpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6ZXhwYW5kTGFzdEFkdmFuY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Z2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OnNldFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTaXplOjpHcmFwaGljc1NpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTaXplOjpkaWFnb25hbExlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1NpemU6Om5hcnJvd1ByZWNpc2lvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NTaXplLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NTaXplOjpHcmFwaGljc1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
aXplOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1NpemU6OmhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1NpemU6OnNldFdpZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU2l6ZTo6c2V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
U2l6ZTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1NpemU6OmFzcGVjdFJh
dGlvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU2l6ZTo6ZXhwYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzU2l6ZTo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NTaXplOjpleHBhbmRlZFRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU2l6ZTo6c2hy
dW5rVG8pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTaXplOjpkaWFnb25hbExlbmd0aFNx
dWFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTaXplOjp0cmFuc3Bvc2VkU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpuYXJyb3dQcmVjaXNpb25Ub0dyYXBoaWNzVW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvcis9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yLT0p
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yLSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRlZEludFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmZsb29yZWRJ
bnRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FsY3VsYXRlUGF0dGVyblNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXRoOjphZGRSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRCZXppZXJz
Rm9yUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aFRyYXZlcnNhbFN0YXRlOjpwcm9jZXNzU2VnbWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JhdGNoQnVmZmVyOjpzZXRMYXN0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmF0Y2hCdWZmZXI6OnNldExhc3RJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjptYXRjaGVzTGFzdFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JhdGNoQnVmZmVyOjptYXRjaGVzTGFzdEluc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OmNsZWFyU2NyYXRjaEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OnNl
dFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjp1cGRhdGVTaGFk
b3dCbHVyVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmFkanVzdEJsdXJSYWRpdXMpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUdl
b21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y29uc3RyYWluZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVxdWlyZXNUaWxlZExh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y29tcHV0ZVBpeGVsQWxp
Z25tZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6c2NhbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzU2l6ZUNHLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NTaXplOjpHcmFwaGljc1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NTaXplOjpvcGVyYXRvciBDR1NpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6dHJhbnNs
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OmFwcGx5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyOjpmaWx0ZXJSZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0Rmls
dGVyUmVzb2x1dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0
U2l6ZU1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc1NpemVNYWMubW06IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVNYWMubW0uCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1NpemU6OkdyYXBoaWNzU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1NpemU6Om9wZXJhdG9yIE5TU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om5hdHVyYWxTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlRHJhZ0ltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvck1hYzo6cGlubmVkSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JNYWM6OnNtb290aFNjcm9sbFdpdGhFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YmVnaW5TY3JvbGxHZXN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzbmFwUnViYmVyQmFuZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c25hcFJ1YmJlckJhbmRUaW1lckZpcmVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwYWludENo
ZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50UmFkaW8pOgorICAgICAgICAoV2ViQ29y
ZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTdGVwcGVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6
OnNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OmFwcGx5U2hhZG93VG9HcmFwaGljc0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRUeXBl
cy5oOgorICAgICAgICAoV2ViQ29yZTo6Zmxvb3JlZExheW91dFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZGV0
ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNS
YXRpb0luZm9ybWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZFJlY3RBZGp1c3RlZEZvckJsZWVk
QXZvaWRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3Jk
ZXJPYnNjdXJlc0JhY2tncm91bmRFZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXRhaWxzTWFya2VyOjpnZXRQYXRoKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5zdXJlUm9vdExheWVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpjb252ZXJ0VG9QYWludGluZ1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50
U2VhcmNoRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVu
em9vbWVkUmVjdEFuZEFkanVzdEN1cnJlbnRDb250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OmZpdHNJbk1heGltdW1JbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJ
bnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jv
b3Q6OmNhbGNWaWV3cG9ydCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXI6OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R0ltYWdlQnVmZmVyVG9vbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VCdWZmZXJU
b29sczo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VCdWZm
ZXJUb29sczo6cm91bmRlZEltYWdlQnVmZmVyU2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbldpdGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94
OjpwYWludFRleHRXaXRoU2hhZG93cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdNYXJr
ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJEYXRhOjpjdXJyZW50QW5nbGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50Ojpjb250YWluZXJUcmFuc2xhdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWxjdWxhdGVHbHlwaEJvdW5kYXJpZXMpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVu
dDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6
Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OmRlY29tcG9zZUFyY1RvQ3ViaWMpOgorICAg
ICAgICAqIHN2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnRyYW5zZm9ybVJlY3QpOgorICAgICAgICAqIHN2Zy9T
VkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6dG9Q
YXRoRGF0YSk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zv
cm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpzY2FsZSk6CisgICAgICAg
ICogc3ZnL1NWR1RyYW5zZm9ybS5oOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5j
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6U1ZHVHJhbnNm
b3JtRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFk
ZFNWR1RyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2U6
OmFkZFRvU1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp0b0NsaXBQYXRoKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRy
YXcpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgorCiAyMDEx
LTA3LTE4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY2lm
eSBhIGNhc2NhZGUgbGlzdCBjb25zaXN0aW5nIG9mIHRoZSBsYXN0IHJlc29ydCBmb250IGZvciBD
b3JlIFRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYxLDcgKzEw
NjEsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQ
b2ludDNELmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmNwcApA
QCAtMTA3NCw2ICsxMDczLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0ODUsOCArMjQ4NSw2IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEJhc2VsaW5lLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oIFwKQEAgLTI1MjMsNiArMjUyMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1R5cGVzM0QuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjY1LDE0ICsyNjUsMTQgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2VDMUV2
CiBfX1pON1dlYkNvcmUxMkpTRE9NV3JhcHBlcjM0dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vh
a1Z0YWJsZUV2CiBfX1pON1dlYkNvcmUxMlBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVudUNs
aWVudEUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTJwYWdlUHJvcGVydHlFUE5TXzVGcmFt
ZUVQS2NpCi1fX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDEzbnVtYmVyT2ZQYWdlc0VQTlNfNUZy
YW1lRVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTNudW1iZXJP
ZlBhZ2VzRVBOU181RnJhbWVFUktOU18xMkdyYXBoaWNzU2l6ZUUKIF9fWk43V2ViQ29yZTEyUHJp
bnRDb250ZXh0MTZjb21wdXRlUGFnZVJlY3RzRVJLTlNfOUZsb2F0UmVjdEVmZmZSZmIKIF9fWk43
V2ViQ29yZTEyUHJpbnRDb250ZXh0MTZpc1BhZ2VCb3hWaXNpYmxlRVBOU181RnJhbWVFaQotX19a
TjdXZWJDb3JlMTJQcmludENvbnRleHQyMHBhZ2VOdW1iZXJGb3JFbGVtZW50RVBOU183RWxlbWVu
dEVSS05TXzlGbG9hdFNpemVFCitfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZU51bWJl
ckZvckVsZW1lbnRFUE5TXzdFbGVtZW50RVJLTlNfMTJHcmFwaGljc1NpemVFCiBfX1pON1dlYkNv
cmUxMlByaW50Q29udGV4dDI2cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHNFUE5TXzVGcmFtZUVp
aWlpaWlpCi1fX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDI3Y29tcHV0ZUF1dG9tYXRpY1NjYWxl
RmFjdG9yRVJLTlNfOUZsb2F0U2l6ZUUKLV9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjdzcG9v
bEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXNFUE5TXzVGcmFtZUVSTlNfMTVHcmFwaGljc0NvbnRleHRF
UktOU185RmxvYXRTaXplRQotX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyOGNvbXB1dGVQYWdl
UmVjdHNXaXRoUGFnZVNpemVFUktOU185RmxvYXRTaXplRWIKK19fWk43V2ViQ29yZTEyUHJpbnRD
b250ZXh0Mjdjb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3JFUktOU18xMkdyYXBoaWNzU2l6ZUUK
K19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjdzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXNF
UE5TXzVGcmFtZUVSTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU18xMkdyYXBoaWNzU2l6ZUUKK19f
Wk43V2ViQ29yZTEyUHJpbnRDb250ZXh0Mjhjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplRVJL
TlNfMTJHcmFwaGljc1NpemVFYgogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQzZW5kRXYKIF9f
Wk43V2ViQ29yZTEyUHJpbnRDb250ZXh0NWJlZ2luRWZmCiBfX1pON1dlYkNvcmUxMlByaW50Q29u
dGV4dDlzcG9vbFBhZ2VFUk5TXzE1R3JhcGhpY3NDb250ZXh0RWlmCkBAIC00MTAsMTQgKzQxMCwx
NCBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDRjbGlwRVJLTlNfCiBfX1pON1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDRjbGlwRVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxNUdy
YXBoaWNzQ29udGV4dDRjbGlwRVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTE1R3JhcGhp
Y3NDb250ZXh0NHNhdmVFdgotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ1c2NhbGVFUktO
U185RmxvYXRTaXplRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ1c2NhbGVFUktOU18x
MkdyYXBoaWNzU2l6ZUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0N3Jlc3RvcmVFdgog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ4ZmlsbFBhdGhFUktOU180UGF0aEUKIF9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OGZpbGxSZWN0RVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OGZpbGxSZWN0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzVD
b2xvckVOU18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDljbGVh
clJlY3RFUktOU185RmxvYXRSZWN0RQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5ZHJh
d0ltYWdlRVBOU181SW1hZ2VFTlNfMTBDb2xvclNwYWNlRVJLTlNfOEludFBvaW50RU5TXzE3Q29t
cG9zaXRlT3BlcmF0b3JFCi1fX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlzZXRTaGFkb3dF
UktOU185RmxvYXRTaXplRWZSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCitfX1pON1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDlzZXRTaGFkb3dFUktOU18xMkdyYXBoaWNzU2l6ZUVmUktOU181
Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5dHJh
bnNsYXRlRWZmCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dEMxRVA5Q0dDb250ZXh0CiBf
X1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dEQxRXYKQEAgLTcxNSw3ICs3MTUsNyBAQCBfX1pO
N1dlYkNvcmU0UGFnZTlnb0ZvcndhcmRFdgogX19aTjdXZWJDb3JlNFBhZ2U5aW5pdEdyb3VwRXYK
IF9fWk43V2ViQ29yZTRQYWdlQzFFUk5TMF8xMVBhZ2VDbGllbnRzRQogX19aTjdXZWJDb3JlNFBh
Z2VEMUV2Ci1fX1pON1dlYkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU185RmxvYXRSZWN0
RVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43V2ViQ29yZTRQYXRoMTRhZGRSb3VuZGVkUmVjdEVSS05T
XzlGbG9hdFJlY3RFUktOU18xMkdyYXBoaWNzU2l6ZUUKIF9fWk43V2ViQ29yZTRQYXRoQzFFdgog
X19aTjdXZWJDb3JlNFBhdGhEMUV2CiBfX1pON1dlYkNvcmU0Y29yZUVQMjBOU1VSTFByb3RlY3Rp
b25TcGFjZQpAQCAtNzMzLDcgKzczMyw3IEBAIF9fWk43V2ViQ29yZTVGcmFtZTE3c2V0VGV4dFpv
b21GYWN0b3JFZgogX19aTjdXZWJDb3JlNUZyYW1lMjN2aXNpYmxlUG9zaXRpb25Gb3JQb2ludEVS
S05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTVGcmFtZTI1bWF0Y2hMYWJlbHNBZ2FpbnN0RWxl
bWVudEVQN05TQXJyYXlQTlNfN0VsZW1lbnRFCiBfX1pON1dlYkNvcmU1RnJhbWUyNXNldFBhZ2VB
bmRUZXh0Wm9vbUZhY3RvcnNFZmYKLV9fWk43V2ViQ29yZTVGcmFtZTI3cmVzaXplUGFnZVJlY3Rz
S2VlcGluZ1JhdGlvRVJLTlNfOUZsb2F0U2l6ZUVTM18KK19fWk43V2ViQ29yZTVGcmFtZTI3cmVz
aXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvRVJLTlNfMTJHcmFwaGljc1NpemVFUzNfCiBfX1pON1dl
YkNvcmU1RnJhbWUyOHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnRFUDdOU0FycmF5UE5TXzdF
bGVtZW50RVBtUGIKIF9fWk43V2ViQ29yZTVGcmFtZTZjcmVhdGVFUE5TXzRQYWdlRVBOU18yMUhU
TUxGcmFtZU93bmVyRWxlbWVudEVQTlNfMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWk43V2ViQ29y
ZTVGcmFtZTdzZXRWaWV3RU4zV1RGMTBQYXNzUmVmUHRySU5TXzlGcmFtZVZpZXdFRUUKQEAgLTkz
MCw3ICs5MzAsNyBAQCBfX1pON1dlYkNvcmU5RE9NV2luZG93MzBkaXNwYXRjaEFsbFBlbmRpCiBf
X1pON1dlYkNvcmU5RE9NV2luZG93MzZkaXNwYXRjaEFsbFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVu
dHNFdgogX19aTjdXZWJDb3JlOUZsb2F0UmVjdEMxRVJLN19OU1JlY3QKIF9fWk43V2ViQ29yZTlG
bG9hdFJlY3RDMUVSS05TXzdJbnRSZWN0RQotX19aTjdXZWJDb3JlOUZsb2F0U2l6ZUMxRVJLTlNf
N0ludFNpemVFCitfX1pON1dlYkNvcmUxMkdyYXBoaWNzU2l6ZUMxRVJLTlNfN0ludFNpemVFCiBf
X1pON1dlYkNvcmU5Rm9udENhY2hlMTNmb250RGF0YUNvdW50RXYKIF9fWk43V2ViQ29yZTlGb250
Q2FjaGUyMWluYWN0aXZlRm9udERhdGFDb3VudEV2CiBfX1pON1dlYkNvcmU5Rm9udENhY2hlMjFw
dXJnZUluYWN0aXZlRm9udERhdGFFaQpAQCAtOTUyLDcgKzk1Miw3IEBAIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcyMGVudGVyQ29tcG9zaXRpbmcKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNo
RGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dy
b3VuZENvbG9yRVJLTlNfNUNvbG9yRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIzdXBkYXRlQ2Fu
SGF2ZVNjcm9sbGJhcnNFdgotX19aTjdXZWJDb3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQ
YWdpbmF0aW9uRVJLTlNfOUZsb2F0U2l6ZUVmTlNfMTlBZGp1c3RWaWV3U2l6ZU9yTm90RQorX19a
TjdXZWJDb3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uRVJLTlNfMTJHcmFw
aGljc1NpemVFZk5TXzE5QWRqdXN0Vmlld1NpemVPck5vdEUKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcyNmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkRVBmZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3MjlzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3Mzd1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlRXYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC04MTUsNyArODE1LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVj
dC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9Gb250QmFzZWxpbmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmgnLApAQCAtODQxLDYgKzg0MCw3IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzU2l6ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMz
RC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgnLApAQCAtMzk1MCw3
ICszOTUwLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0Qu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwJywKLSAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEuY3Bw
JywKQEAgLTM5NjcsNiArMzk2Niw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NT
aXplLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwJywKQEAgLTQwNTIsMTIgKzQw
NTIsMTIgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwJywKLSAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
Ry5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc1NpemVDRy5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwJywKQEAg
LTQzMjUsNyArNDMyNSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Zsb2F0UG9pbnRNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9GbG9hdFJlY3RNYWMubW0nLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9GbG9hdFNpemVNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q2FjaGVNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q29tcGxleFRleHRNYWMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAnLApAQCAtNDMzNCw2ICs0MzMzLDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQYWdlVHJlZU5vZGVNYWMu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0
M0RNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0Nv
bnRleHRNYWMubW0nLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c1NpemVNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFj
Lm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0nLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbScsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw3IEBAIF9fWk5LN1dlYkNv
cmUxNFNpbXBsZUZvbnREYXRhMjJwbGF0Zm9ybUIKIF9fWk5LN1dlYkNvcmUxNkZvbnRQbGF0Zm9y
bURhdGE2Y3RGb250RXYKIF9fWk43V2ViQ29yZTlGbG9hdFJlY3RDMUVSSzZDR1JlY3QKIF9fWk43
V2ViQ29yZTEwRmxvYXRQb2ludEMxRVJLN0NHUG9pbnQKLV9fWk43V2ViQ29yZTlGbG9hdFNpemVD
MUVSSzZDR1NpemUKK19fWk43V2ViQ29yZTEyR3JhcGhpY3NTaXplQzFFUks2Q0dTaXplCiBfX1pO
SzdXZWJDb3JlOUZsb2F0UmVjdGN2NkNHUmVjdEV2CiBfX1pON1dlYkNvcmUxNFNpbXBsZUZvbnRE
YXRhMTdwbGF0Zm9ybUdseXBoSW5pdEV2CiBfX1pON1dlYkNvcmUxNUdseXBoTWV0cmljc01hcElm
RTE4bG9jYXRlUGFnZVNsb3dDYXNlRWoKQEAgLTMyMywxMSArMzIzLDExIEBAIF9fWk43V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0MjBzZXRQbGF0Zm8KIF9fWk5LN1dlYkNvcmU0Rm9udDhkcmF3VGV4
dEVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVp
aQogX19aTks3V2ViQ29yZTRGb250MTRkcmF3U2ltcGxlVGV4dEVQTlNfMTVHcmFwaGljc0NvbnRl
eHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVpaQogX19aTks3V2ViQ29yZTRGb250
MzNnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHRFUktOU183VGV4dFJ1bkVpaVJOU18x
MUdseXBoQnVmZmVyRU5TMF8yMEZvclRleHRFbXBoYXNpc09yTm90RQotX19aTjdXZWJDb3JlMTFH
bHlwaEJ1ZmZlcjNhZGRFdFBLTlNfMTRTaW1wbGVGb250RGF0YUVmUEtOU185RmxvYXRTaXplRQor
X19aTjdXZWJDb3JlMTFHbHlwaEJ1ZmZlcjNhZGRFdFBLTlNfMTRTaW1wbGVGb250RGF0YUVmUEtO
U18xMkdyYXBoaWNzU2l6ZUUKIF9fWk5LN1dlYkNvcmU0Rm9udDE1ZHJhd0dseXBoQnVmZmVyRVBO
U18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzExR2x5cGhCdWZmZXJFUktOU18xMEZsb2F0UG9pbnRF
CiBfX1pOSzdXZWJDb3JlNEZvbnQxMGRyYXdHbHlwaHNFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVBL
TlNfMTRTaW1wbGVGb250RGF0YUVSS05TXzExR2x5cGhCdWZmZXJFaWlSS05TXzEwRmxvYXRQb2lu
dEUKIF9fWk43V2ViQ29yZTRGb250MThzaG91bGRVc2VTbW9vdGhpbmdFdgotX19aTks3V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0OWdldFNoYWRvd0VSTlNfOUZsb2F0U2l6ZUVSZlJOU181Q29sb3JF
Uk5TXzEwQ29sb3JTcGFjZUUKK19fWk5LN1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlnZXRTaGFk
b3dFUk5TXzEyR3JhcGhpY3NTaXplRVJmUk5TXzVDb2xvckVSTlNfMTBDb2xvclNwYWNlRQogX19a
Tks3V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTV0ZXh0RHJhd2luZ01vZGVFdgogX19aTjdXZWJD
b3JlTDIyc2hvd0dseXBoc1dpdGhBZHZhbmNlc0VSS05TXzEwRmxvYXRQb2ludEVQS05TXzE0U2lt
cGxlRm9udERhdGFFUDlDR0NvbnRleHRQS3RQSzZDR1NpemVtCiBfX1pOM1dURjZWZWN0b3JJUGNM
bTBFRTE0ZXhwYW5kQ2FwYWNpdHlFbQpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgX19aTks3V2ViQ29y
ZTEwU2Nyb2xsVmlldzI2cGxhdGZvcm1WaXNpYgogX19aTjdXZWJDb3JlN0ludFJlY3Q5aW50ZXJz
ZWN0RVJLUzBfCiBfX1pON1dlYkNvcmU5RmxvYXRSZWN0QzFFUktOU183SW50UmVjdEUKIF9fWk43
V2ViQ29yZTEwRmxvYXRQb2ludEMxRVJLTlNfOEludFBvaW50RQotX19aTjdXZWJDb3JlOUZsb2F0
U2l6ZUMxRVJLTlNfN0ludFNpemVFCitfX1pON1dlYkNvcmUxMkdyYXBoaWNzU2l6ZUMxRVJLTlNf
N0ludFNpemVFCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0
RQogX19aTjdXZWJDb3JlMTBSZW5kZXJWaWV3NDFyZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29t
cG9zaXRlZExheWVyc0VSS05TXzdJbnRSZWN0RWIKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVy
MjdjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWRFdgpAQCAtNTk0MSw3ICs1OTQxLDcgQEAgX19a
Tks3V2ViQ29yZTE3SFRNTENhbnZhc0VsZW1lbnQxN2NyZWF0ZQogX19aTjdXZWJDb3JlMTFJbWFn
ZUJ1ZmZlckMxRVJLTlNfN0ludFNpemVFTlNfMTBDb2xvclNwYWNlRU5TXzEzUmVuZGVyaW5nTW9k
ZUVSYgogX19aTjdXZWJDb3JlMTFJbWFnZUJ1ZmZlckMyRVJLTlNfN0ludFNpemVFTlNfMTBDb2xv
clNwYWNlRU5TXzEzUmVuZGVyaW5nTW9kZUVSYgogX19aTjdXZWJDb3JlMTVJbWFnZUJ1ZmZlckRh
dGFDMUVSS05TXzdJbnRTaXplRQotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ1c2NhbGVF
UktOU185RmxvYXRTaXplRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ1c2NhbGVFUktO
U18xMkdyYXBoaWNzU2l6ZUUKIF9fWk5LN1dlYkNvcmUxMUltYWdlQnVmZmVyN2NvbnRleHRFdgog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyNnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
RWIKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjhzZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5RU5TXzIwSW50ZXJwb2xhdGlvblF1YWxpdHlFCkBAIC02MDIyLDcgKzYwMjIsNyBAQCBf
X1pON1dlYkNvcmUxNVBsYXRmb3JtQ0FMYXllcjZjcmVhdGVFTlMwCiBfX1pON1dlYkNvcmUxNVBs
YXRmb3JtQ0FMYXllckMyRU5TMF85TGF5ZXJUeXBlRVA3Q0FMYXllclBOU18yMVBsYXRmb3JtQ0FM
YXllckNsaWVudEUKIC1bV2ViTGF5ZXIgYWN0aW9uRm9yS2V5Ol0KIF9fWk43V2ViQ29yZTEzR3Jh
cGhpY3NMYXllcjIxdXBkYXRlRGVidWdJbmRpY2F0b3JzRXYKLV9fWk43V2ViQ29yZTE1R3JhcGhp
Y3NMYXllckNBN3NldFNpemVFUktOU185RmxvYXRTaXplRQorX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0xheWVyQ0E3c2V0U2l6ZUVSS05TXzEyR3JhcGhpY3NTaXplRQogX19aTjdXZWJDb3JlMTVHcmFw
aGljc0xheWVyQ0ExMXNldFBvc2l0aW9uRVJLTlNfMTBGbG9hdFBvaW50RQogX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0xheWVyQ0ExNnNldE1hc2tzVG9Cb3VuZHNFYgogX19aTjdXZWJDb3JlMjFSZW5k
ZXJMYXllckNvbXBvc2l0b3IyM2F0dGFjaFJvb3RQbGF0Zm9ybUxheWVyRU5TMF8xOVJvb3RMYXll
ckF0dGFjaG1lbnRFCkBAIC02MzAwLDcgKzYzMDAsNyBAQCBfX1pON1dlYkNvcmUxNEhUTUxDb2xs
ZWN0aW9uRDBFdgogX19aTks3V2ViQ29yZTI1QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazExZWxl
bWVudFJlY3RFdgogX19aTks3V2ViQ29yZTE1SFRNTEFyZWFFbGVtZW50MTFjb21wdXRlUmVjdEVQ
TlNfMTJSZW5kZXJPYmplY3RFCiBfX1pOSzdXZWJDb3JlMTVIVE1MQXJlYUVsZW1lbnQxMWNvbXB1
dGVQYXRoRVBOU18xMlJlbmRlck9iamVjdEUKLV9fWk43V2ViQ29yZTRQYXRoOXRyYW5zbGF0ZUVS
S05TXzlGbG9hdFNpemVFCitfX1pON1dlYkNvcmU0UGF0aDl0cmFuc2xhdGVFUktOU18xMkdyYXBo
aWNzU2l6ZUUKIF9fWk5LN1dlYkNvcmU0UGF0aDEyYm91bmRpbmdSZWN0RXYKIF9fWk43V2ViQ29y
ZTI4SlNIVE1MU2VsZWN0RWxlbWVudFByb3RvdHlwZUQxRXYKIF9fWk43V2ViQ29yZTExUmVuZGVy
QmxvY2sxM0Zsb2F0V2l0aFJlY3RDMkVQTlNfOVJlbmRlckJveEUKQEAgLTcyMzgsOSArNzIzOCw5
IEBAIF9fWk43V2ViQ29yZTE0UmVuZGVyVGhlbWVNYWMyOHBhaW50TWVkaWEKIF9fWk43V2ViQ29y
ZTE0UmVuZGVyVGhlbWVNYWMyMnBhaW50TWVkaWFSZXdpbmRCdXR0b25FUE5TXzEyUmVuZGVyT2Jq
ZWN0RVJLTlNfOVBhaW50SW5mb0VSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTRSZW5kZXJU
aGVtZU1hYzIwcGFpbnRNZWRpYVBsYXlCdXR0b25FUE5TXzEyUmVuZGVyT2JqZWN0RVJLTlNfOVBh
aW50SW5mb0VSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTNJbmxpbmVUZXh0Qm94MjhhcHBs
eVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0RVBOU18xNUdyYXBoaWNzQ29udGV4dEVQS05TXzEwU2hh
ZG93RGF0YUVSS05TXzlGbG9hdFJlY3RFYmJiCi1fX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4
dDlzZXRTaGFkb3dFUktOU185RmxvYXRTaXplRWZSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VF
Ci1fX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE3c2V0UGxhdGZvcm1TaGFkb3dFUktOU185
RmxvYXRTaXplRWZSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCi1fX1pOSzdXZWJDb3JlOUZs
b2F0U2l6ZWN2NkNHU2l6ZUV2CitfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlzZXRTaGFk
b3dFUktOU18xMkdyYXBoaWNzU2l6ZUVmUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQorX19a
TjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxN3NldFBsYXRmb3JtU2hhZG93RVJLTlNfMTJHcmFw
aGljc1NpemVFZlJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKK19fWk5LN1dlYkNvcmUxMkdy
YXBoaWNzU2l6ZWN2NkNHU2l6ZUV2CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDExY2xl
YXJTaGFkb3dFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxOWNsZWFyUGxhdGZvcm1T
aGFkb3dFdgogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MjBhc3luY0V2ZW50VGltZXJG
aXJlZEVQTlNfNVRpbWVySVMwX0VFCkBAIC05MDQ2LDcgKzkwNDYsNyBAQCBfX1pOSzdXZWJDb3Jl
MTBTdHlsZUltYWdlMTRpc1BlbmRpbmdJbWFnCiBfX1pOSzdXZWJDb3JlMTRSZW5kZXJMaXN0SXRl
bTM2cmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uRXYKIF9fWk5LN1dlYkNvcmUx
NlN0eWxlQ2FjaGVkSW1hZ2U1aW1hZ2VFUE5TXzEyUmVuZGVyT2JqZWN0RVJLTlNfN0ludFNpemVF
CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE0ZHJhd1RpbGVkSW1hZ2VFUE5TXzVJbWFn
ZUVOU18xMENvbG9yU3BhY2VFUktOU183SW50UmVjdEVSS05TXzhJbnRQb2ludEVSS05TXzdJbnRT
aXplRU5TXzE3Q29tcG9zaXRlT3BlcmF0b3JFYgotX19aTjdXZWJDb3JlNUltYWdlOWRyYXdUaWxl
ZEVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTBGbG9hdFBvaW50
RVJLTlNfOUZsb2F0U2l6ZUVOU18xMENvbG9yU3BhY2VFTlNfMTdDb21wb3NpdGVPcGVyYXRvckUK
K19fWk43V2ViQ29yZTVJbWFnZTlkcmF3VGlsZWRFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNf
OUZsb2F0UmVjdEVSS05TXzEwRmxvYXRQb2ludEVSS05TXzEyR3JhcGhpY3NTaXplRU5TXzEwQ29s
b3JTcGFjZUVOU18xN0NvbXBvc2l0ZU9wZXJhdG9yRQogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm0xNXNjYWxlTm9uVW5pZm9ybUVkZAogX19aTjdXZWJDb3JlNUltYWdlMTFkcmF3UGF0dGVy
bkVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTVBZmZpbmVUcmFu
c2Zvcm1FUktOU18xMEZsb2F0UG9pbnRFTlNfMTBDb2xvclNwYWNlRU5TXzE3Q29tcG9zaXRlT3Bl
cmF0b3JFUzVfCiBfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlMjZuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZUV2CkBAIC05MDc1LDcgKzkwNzUsNyBAQCBfX1pON1dlYkNvcmUyNENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDRzCiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMjRDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ1U3RhdGVFTG0xRUUxNXJlc2VydmVDYXBhY2l0eUVtCiBfX1pON1dlYkNvcmUy
NENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDVTdGF0ZUMyRVJLUzFfCiBfX1pON1dlYkNvcmUyNENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDI1c2V0QWxsQXR0cmlidXRlc1RvRGVmYXVsdEV2Ci1fX1pO
N1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE1c2V0TGVnYWN5U2hhZG93RVJLTlNfOUZsb2F0U2l6
ZUVmUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0Nv
bnRleHQxNXNldExlZ2FjeVNoYWRvd0VSS05TXzEyR3JhcGhpY3NTaXplRWZSS05TXzVDb2xvckVO
U18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDljbGVhclJlY3RF
UktOU185RmxvYXRSZWN0RQogX19aTjdXZWJDb3JlMjRDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ3
cmVzdG9yZUV2CiBfX1pON1dlYkNvcmU0UGF0aDl0cmFuc2Zvcm1FUktOU18xNUFmZmluZVRyYW5z
Zm9ybUUKQEAgLTkzMjcsNyArOTMyNyw3IEBAIF9fWk43V2ViQ29yZTI3SlNDYW52YXNHcmFkaWVu
dENvbnN0cnVjdG8KIF9fWk43V2ViQ29yZTU4anNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRQcm90
b3R5cGVGdW5jdGlvbkNyZWF0ZUltYWdlRGF0YUVQTjNKU0M5RXhlY1N0YXRlRQogX19aTjdXZWJD
b3JlMjZKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDE1Y3JlYXRlSW1hZ2VEYXRhRVBOM0pTQzlF
eGVjU3RhdGVFCiBfX1pOSzdXZWJDb3JlMjRDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQxNWNyZWF0
ZUltYWdlRGF0YUVmZlJpCi1fX1pOSzdXZWJDb3JlMTdIVE1MQ2FudmFzRWxlbWVudDIyY29udmVy
dExvZ2ljYWxUb0RldmljZUVSS05TXzlGbG9hdFNpemVFCitfX1pOSzdXZWJDb3JlMTdIVE1MQ2Fu
dmFzRWxlbWVudDIyY29udmVydExvZ2ljYWxUb0RldmljZUVSS05TXzEyR3JhcGhpY3NTaXplRQog
X19aTjdXZWJDb3JlOUltYWdlRGF0YTZjcmVhdGVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29y
ZTE2Q2FudmFzUGl4ZWxBcnJheTZjcmVhdGVFagogX19aTjdXZWJDb3JlMTF0b0ltYWdlRGF0YUVO
M0pTQzdKU1ZhbHVlRQpAQCAtOTc5MSwxNCArOTc5MSwxNCBAQCBfX1pON1dlYkNvcmUxMUxheW91
dFN0YXRlQzFFUE5TXzEyUmVuZGVyCiBfX1pON1dlYkNvcmUxMUxheW91dFN0YXRlQzJFUE5TXzEy
UmVuZGVyT2JqZWN0RQogX19aTjdXZWJDb3JlMTFSZW5kZXJTdHlsZThzZXRSaWdodEVOU182TGVu
Z3RoRQogX19aTks3V2ViQ29yZTEwU2hhZG93RGF0YTE5YWRqdXN0UmVjdEZvclNoYWRvd0VSTlNf
N0ludFJlY3RFaQotX19aTjdXZWJDb3JlMTBTaGFkb3dCbHVyQzFFUktOU185RmxvYXRTaXplRVMz
X1JLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKK19fWk43V2ViQ29yZTEwU2hhZG93Qmx1ckMx
RVJLTlNfMTJHcmFwaGljc1NpemVFUzNfUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19a
TjdXZWJDb3JlMTBTaGFkb3dCbHVyMTRkcmF3UmVjdFNoYWRvd0VQTlNfMTVHcmFwaGljc0NvbnRl
eHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUUKIF9fWk5LN1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDEwY2xpcEJvdW5kc0V2CiBfX1pON1dlYkNvcmUxMFNoYWRvd0Js
dXIyNmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzlGbG9hdFJlY3RFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwU2hhZG93Qmx1cjE2YWRq
dXN0Qmx1clJhZGl1c0VQTlNfMTVHcmFwaGljc0NvbnRleHRFCiBfX1pON1dlYkNvcmUxMFNoYWRv
d0JsdXIyNGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZ0VQTlNfMTVHcmFwaGljc0NvbnRleHRFUktO
U185RmxvYXRSZWN0RVJLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUVSS05TXzdJbnRTaXplRVNDXwog
X19aTjdXZWJDb3JlMTNTY3JhdGNoQnVmZmVyMTZnZXRTY3JhdGNoQnVmZmVyRVJLTlNfN0ludFNp
emVFCi1fX1pOSzdXZWJDb3JlMTNTY3JhdGNoQnVmZmVyMTdtYXRjaGVzTGFzdFNoYWRvd0VSS05T
XzlGbG9hdFNpemVFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRVJLTlNfOUZsb2F0UmVjdEVS
S05TXzE0Um91bmRlZFJlY3Q1UmFkaWlFCitfX1pOSzdXZWJDb3JlMTNTY3JhdGNoQnVmZmVyMTdt
YXRjaGVzTGFzdFNoYWRvd0VSS05TXzEyR3JhcGhpY3NTaXplRVJLTlNfNUNvbG9yRU5TXzEwQ29s
b3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUktOU18xNFJvdW5kZWRSZWN0NVJhZGlpRQogX19aTjdX
ZWJDb3JlMTBTaGFkb3dCbHVyMTZibHVyU2hhZG93QnVmZmVyRVJLTlNfN0ludFNpemVFCiBfX1pO
N1dlYkNvcmUxMFNoYWRvd0JsdXIxNGJsdXJMYXllckltYWdlRVBoUktOU183SW50U2l6ZUVpCiBf
X1pON1dlYkNvcmUxMFNoYWRvd0JsdXIxNWRyYXdMYXllclBpZWNlc0VQTlNfMTVHcmFwaGljc0Nv
bnRleHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUVSS05TXzdJbnRT
aXplRVNDX05TMF8xNVNoYWRvd0RpcmVjdGlvbkUKQEAgLTExOTY0LDcgKzExOTY0LDcgQEAgX19a
TjdXZWJDb3JlMTdtaXNzaW5nUGx1Z2luVGV4dEV2CiBfX1pON1dlYkNvcmUyN0RlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneTE3bWlzc2luZ1BsdWdpblRleHRFdgogX19aTjdXZWJDb3JlMjBSZW5k
ZXJFbWJlZGRlZE9iamVjdDEzcGFpbnRSZXBsYWNlZEVSTlNfOVBhaW50SW5mb0VpaQogX19aTjdX
ZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDI2Z2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnlF
aWlSTlNfOUZsb2F0UmVjdEVSTlNfNFBhdGhFUzJfUk5TXzRGb250RVJOU183VGV4dFJ1bkVSZgot
X19aTjdXZWJDb3JlNFBhdGgxNGFkZFJvdW5kZWRSZWN0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzlG
bG9hdFNpemVFCitfX1pON1dlYkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU185RmxvYXRS
ZWN0RVJLTlNfMTJHcmFwaGljc1NpemVFCiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlOUhUTUxU
b2tlbjlBdHRyaWJ1dGVFTG0xMEVFMTVyZXNlcnZlQ2FwYWNpdHlFbQogX19aTjNXVEYxMVZlY3Rv
ck1vdmVySUxiMEVON1dlYkNvcmU5SFRNTFRva2VuOUF0dHJpYnV0ZUVFNG1vdmVFUEtTM19TNl9Q
UzNfCiBfX1pON1dlYkNvcmU5SFRNTFRva2VuOUF0dHJpYnV0ZUMxRVJLUzFfCkBAIC0xNDI2Nyw3
ICsxNDI2Nyw3IEBAIF9fWk43V2ViQ29yZTE0Um91bmRlZFJlY3Q1UmFkaWk1c2NhbGVFZgogX19a
TjdXZWJDb3JlMTRSb3VuZGVkUmVjdDE5aW5jbHVkZUxvZ2ljYWxFZGdlc0VSS05TMF81UmFkaWlF
YmJiCiBfX1pON1dlYkNvcmUxNFJvdW5kZWRSZWN0NVJhZGlpNmV4cGFuZEVpaWlpCiBfX1pON1dl
YkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU18xNFJvdW5kZWRSZWN0RQotX19aTjdXZWJD
b3JlNFBhdGgxNGFkZFJvdW5kZWRSZWN0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzlGbG9hdFNpemVF
UzZfUzZfUzZfCitfX1pON1dlYkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU185RmxvYXRS
ZWN0RVJLTlNfMTJHcmFwaGljc1NpemVFUzZfUzZfUzZfCiBfX1pON1dlYkNvcmUyMWNyZWF0ZUxp
c3RJdGVtRWxlbWVudEVQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTNIVE1MTElFbGVtZW50
NmNyZWF0ZUVQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMzlqc0RvY3VtZW50UHJvdG90eXBl
RnVuY3Rpb25HZXRTZWxlY3Rpb25FUE4zSlNDOUV4ZWNTdGF0ZUUKQEAgLTE0MzgzLDcgKzE0Mzgz
LDcgQEAgX19aTjNXVEY5SGFzaFRhYmxlSU43V2ViQ29yZTdJbnRTaXplRVN0NAogX19aTjdXZWJD
b3JlMTVHcmFwaGljc0NvbnRleHQyM2ZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlRVJLTlNfN0ludFJl
Y3RFUktOU18xNFJvdW5kZWRSZWN0RVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9fWk43
V2ViQ29yZTEwU2hhZG93Qmx1cjE1ZHJhd0luc2V0U2hhZG93RVBOU18xNUdyYXBoaWNzQ29udGV4
dEVSS05TXzlGbG9hdFJlY3RFUzVfUktOU18xNFJvdW5kZWRSZWN0NVJhZGlpRQogX19aTjdXZWJD
b3JlMTBTaGFkb3dCbHVyMjVkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nRVBOU18xNUdyYXBoaWNz
Q29udGV4dEVSS05TXzlGbG9hdFJlY3RFUzVfUktOU18xNFJvdW5kZWRSZWN0NVJhZGlpRVJLTlNf
N0ludFNpemVFU0NfCi1fX1pOSzdXZWJDb3JlMTNTY3JhdGNoQnVmZmVyMjJtYXRjaGVzTGFzdElu
c2V0U2hhZG93RVJLTlNfOUZsb2F0U2l6ZUVSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFUktO
U185RmxvYXRSZWN0RVNBX1JLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUUKK19fWk5LN1dlYkNvcmUx
M1NjcmF0Y2hCdWZmZXIyMm1hdGNoZXNMYXN0SW5zZXRTaGFkb3dFUktOU18xMkdyYXBoaWNzU2l6
ZUVSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFUktOU185RmxvYXRSZWN0RVNBX1JLTlNfMTRS
b3VuZGVkUmVjdDVSYWRpaUUKIF9fWk43V2ViQ29yZTE0R2VuZXJhdGVkSW1hZ2UxMWRyYXdQYXR0
ZXJuRVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzlGbG9hdFJlY3RFUktOU18xNUFmZmluZVRy
YW5zZm9ybUVSS05TXzEwRmxvYXRQb2ludEVOU18xMENvbG9yU3BhY2VFTlNfMTdDb21wb3NpdGVP
cGVyYXRvckVTNV8KIF9fWk43V2ViQ29yZThHcmFkaWVudDMxYWRqdXN0UGFyYW1ldGVyc0ZvclRp
bGVkRHJhd2luZ0VSTlNfN0ludFNpemVFUk5TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmUxMUlt
YWdlQnVmZmVyMTFkcmF3UGF0dGVybkVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU185RmxvYXRS
ZWN0RVJLTlNfMTVBZmZpbmVUcmFuc2Zvcm1FUktOU18xMEZsb2F0UG9pbnRFTlNfMTBDb2xvclNw
YWNlRU5TXzE3Q29tcG9zaXRlT3BlcmF0b3JFUzVfCkBAIC0xNDM5NCw3ICsxNDM5NCw3IEBAIF9f
Wk4zV1RGOUhhc2hUYWJsZUlQTjdXZWJDb3JlMjBSZW5kZXJCb3gKIF9fWk4zV1RGOUhhc2hUYWJs
ZUlQTjdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdEVTdDRwYWlySVMzX05TXzdIYXNoTWFw
SVBLdk5TMV83SW50U2l6ZUVOU183UHRySGFzaElTN19FRU5TXzEwSGFzaFRyYWl0c0lTN19FRU5T
Ql9JUzhfRUVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTRl9FRU5TOV9JUzNfRUVOU18xNFBh
aXJIYXNoVHJhaXRzSU5TQl9JUzNfRUVOU0JfSVNFX0VFRUVTS19FNnJlaGFzaEVpCiBfX1pTdDE2
X19tZXJnZV9iYWNrd2FyZElQTjdXZWJDb3JlMjBDU1NHcmFkaWVudENvbG9yU3RvcEVTMl9TMl9Q
RmJSS1MxX1M0X0VFVDFfVF9TOF9UMF9TOV9TN19UMl8KIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9i
amVjdDM1Ym9yZGVySW1hZ2VJc0xvYWRlZEFuZENhbkJlUmVuZGVyZWRFdgotX19aTks3V2ViQ29y
ZTIwUmVuZGVyQm94TW9kZWxPYmplY3QyOGJvcmRlck9ic2N1cmVzQmFja2dyb3VuZEVkZ2VFUktO
U185RmxvYXRTaXplRQorX19aTks3V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QyOGJvcmRl
ck9ic2N1cmVzQmFja2dyb3VuZEVkZ2VFUktOU18xMkdyYXBoaWNzU2l6ZUUKIF9fWk4zV1RGOUhh
c2hUYWJsZUlQS3ZTdDRwYWlySVMyX043V2ViQ29yZTdJbnRTaXplRUVOU18xOFBhaXJGaXJzdEV4
dHJhY3RvcklTNl9FRU5TXzdQdHJIYXNoSVMyX0VFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhh
c2hUcmFpdHNJUzJfRUVOU0NfSVM1X0VFRUVTRF9FMTZsb29rdXBGb3JXcml0aW5nRVJLUzJfCiBf
X1pOM1dURjlIYXNoVGFibGVJUEt2U3Q0cGFpcklTMl9ON1dlYkNvcmU3SW50U2l6ZUVFTlNfMThQ
YWlyRmlyc3RFeHRyYWN0b3JJUzZfRUVOU183UHRySGFzaElTMl9FRU5TXzE0UGFpckhhc2hUcmFp
dHNJTlNfMTBIYXNoVHJhaXRzSVMyX0VFTlNDX0lTNV9FRUVFU0RfRTNhZGRJUzJfUzVfTlNfMTdI
YXNoTWFwVHJhbnNsYXRvcklTNl9TRl9TQV9FRUVFUzNfSU5TXzE3SGFzaFRhYmxlSXRlcmF0b3JJ
UzJfUzZfUzhfU0FfU0ZfU0RfRUViRVJLVF9SS1QwXwogX19aTjNXVEY5SGFzaFRhYmxlSVBLdlN0
NHBhaXJJUzJfTjdXZWJDb3JlN0ludFNpemVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM2X0VF
TlNfN1B0ckhhc2hJUzJfRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lTMl9F
RU5TQ19JUzVfRUVFRVNEX0UzYWRkSVMyX1M2X05TXzIySWRlbnRpdHlIYXNoVHJhbnNsYXRvcklT
Ml9TNl9TQV9FRUVFUzNfSU5TXzE3SGFzaFRhYmxlSXRlcmF0b3JJUzJfUzZfUzhfU0FfU0ZfU0Rf
RUViRVJLVF9SS1QwXwpAQCAtMjU5MTEsOCArMjU5MTEsOCBAQCBfX1pON1dlYkNvcmUxMFJlbmRl
clZpZXcyOWNvbXB1dGVQcmVmZXJyCiBfX1pON1dlYkNvcmUyMkNTU1JhZGlhbEdyYWRpZW50VmFs
dWUxNGNyZWF0ZUdyYWRpZW50RVBOU18xMlJlbmRlck9iamVjdEVSS05TXzdJbnRTaXplRQogX19a
TjdXZWJDb3JlMjJDU1NSYWRpYWxHcmFkaWVudFZhbHVlRDBFdgogX19aTjdXZWJDb3JlOUNTU1Bh
cnNlcjE5cGFyc2VSYWRpYWxHcmFkaWVudEVSTjNXVEY2UmVmUHRySU5TXzhDU1NWYWx1ZUVFRU5T
XzE3Q1NTR3JhZGllbnRSZXBlYXRFCi1fX1pON1dlYkNvcmVMMjRkaXN0YW5jZVRvRmFydGhlc3RD
b3JuZXJFUktOU18xMEZsb2F0UG9pbnRFUktOU185RmxvYXRTaXplRVJTMF8KLV9fWk5LN1dlYkNv
cmU5RmxvYXRTaXplMTRkaWFnb25hbExlbmd0aEV2CitfX1pON1dlYkNvcmVMMjRkaXN0YW5jZVRv
RmFydGhlc3RDb3JuZXJFUktOU18xMEZsb2F0UG9pbnRFUktOU18xMkdyYXBoaWNzU2l6ZUVSUzBf
CitfX1pOSzdXZWJDb3JlMTJHcmFwaGljc1NpemUxNGRpYWdvbmFsTGVuZ3RoRXYKIF9fWk5LN1dl
YkNvcmUxNkNTU0dyYWRpZW50VmFsdWUxNmlzTGluZWFyR3JhZGllbnRFdgogX19aTks3V2ViQ29y
ZTIyQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTE2aXNSYWRpYWxHcmFkaWVudEV2CiBfX1pOSzdXZWJD
b3JlMjJDU1NSYWRpYWxHcmFkaWVudFZhbHVlN2Nzc1RleHRFdgpAQCAtMjg2NzEsMTMgKzI4Njcx
LDEzIEBAIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb24KIF9fWk4zSlND
OEJpbmRpbmdzTDIyY2FsbFJ1bnRpbWVDb25zdHJ1Y3RvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk43
V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFaQogX19aTjdXZWJDb3JlTDEwY2FsbFBsdWdpbkVQ
TjNKU0M5RXhlY1N0YXRlRQotX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyMHBhZ2VOdW1iZXJG
b3JFbGVtZW50RVBOU183RWxlbWVudEVSS05TXzlGbG9hdFNpemVFCi1fX1pON1dlYkNvcmU1RnJh
bWUxMXNldFByaW50aW5nRWJSS05TXzlGbG9hdFNpemVFZk5TXzE5QWRqdXN0Vmlld1NpemVPck5v
dEUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjBwYWdlTnVtYmVyRm9yRWxlbWVudEVQTlNf
N0VsZW1lbnRFUktOU18xMkdyYXBoaWNzU2l6ZUUKK19fWk43V2ViQ29yZTVGcmFtZTExc2V0UHJp
bnRpbmdFYlJLTlNfMTJHcmFwaGljc1NpemVFZk5TXzE5QWRqdXN0Vmlld1NpemVPck5vdEUKIF9f
Wk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVzdE1lZGlhVHlwZUZvclByaW50aW5nRWIKLV9fWk43
V2ViQ29yZTlGcmFtZVZpZXcyNGZvcmNlTGF5b3V0Rm9yUGFnaW5hdGlvbkVSS05TXzlGbG9hdFNp
emVFZk5TXzE5QWRqdXN0Vmlld1NpemVPck5vdEUKLV9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0
MzZjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplSW50ZXJuYWxFUktOU185RmxvYXRTaXplRWIK
K19fWk43V2ViQ29yZTlGcmFtZVZpZXcyNGZvcmNlTGF5b3V0Rm9yUGFnaW5hdGlvbkVSS05TXzEy
R3JhcGhpY3NTaXplRWZOU18xOUFkanVzdFZpZXdTaXplT3JOb3RFCitfX1pON1dlYkNvcmUxMlBy
aW50Q29udGV4dDM2Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUludGVybmFsRVJLTlNfMTJH
cmFwaGljc1NpemVFYgogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQ1YmVnaW5FZmYKLV9fWk43
V2ViQ29yZTEyUHJpbnRDb250ZXh0MTNudW1iZXJPZlBhZ2VzRVBOU181RnJhbWVFUktOU185Rmxv
YXRTaXplRQorX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQxM251bWJlck9mUGFnZXNFUE5TXzVG
cmFtZUVSS05TXzEyR3JhcGhpY3NTaXplRQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyNnBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzRVBOU181RnJhbWVFaWlpaWlpaQogX19aTjdXZWJDb3Jl
OERvY3VtZW50MjZwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsc0VpUk5TXzdJbnRTaXplRVJpUzNf
UzNfUzNfCiBfX1pON1dlYkNvcmUxNkNTU1N0eWxlU2VsZWN0b3IxMnN0eWxlRm9yUGFnZUVpCkBA
IC0yOTU5OSw3ICsyOTU5OSw3IEBAIF9fWk43V2ViQ29yZTI2U1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQKIF9fWk43V2ViQ29yZTIwU1ZHVHJhbnNmb3JtRGlzdGFuY2VDMUVSS05TXzEyU1ZHVHJh
bnNmb3JtRVMzXwogX19aTjdXZWJDb3JlMjBTVkdUcmFuc2Zvcm1EaXN0YW5jZUMyRVJLTlNfMTJT
VkdUcmFuc2Zvcm1FUzNfCiBfX1pOSzdXZWJDb3JlMTJTVkdUcmFuc2Zvcm01c2NhbGVFdgotX19a
TjdXZWJDb3JlOUZsb2F0U2l6ZTE1bmFycm93UHJlY2lzaW9uRWRkCitfX1pON1dlYkNvcmUxMkdy
YXBoaWNzU2l6ZTE1bmFycm93UHJlY2lzaW9uRWRkCiBfX1pOSzdXZWJDb3JlMjBTVkdUcmFuc2Zv
cm1EaXN0YW5jZTE0c2NhbGVkRGlzdGFuY2VFZgogX19aTks3V2ViQ29yZTIwU1ZHVHJhbnNmb3Jt
RGlzdGFuY2UxN2FkZFRvU1ZHVHJhbnNmb3JtRVJLTlNfMTJTVkdUcmFuc2Zvcm1FCiBfX1pON1dl
YkNvcmUxNFNWR1BvbHlFbGVtZW50MjZhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcEV2CkBAIC0z
MTk0MCw3ICszMTk0MCw3IEBAIF9fWk5LN1dlYkNvcmU1RnJhbWUxNHNlbGVjdGlvbkltYWdlRWIK
IF9fWk43V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtQzFFUDEwTlNNZW51SXRlbQogX19aTks3V2Vi
Q29yZTE1Q29udGV4dE1lbnVJdGVtN2VuYWJsZWRFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzEy
c2V0TWVkaWFUeXBlRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQy
OGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVFUktOU185RmxvYXRTaXplRWIKK19fWk43V2Vi
Q29yZTEyUHJpbnRDb250ZXh0Mjhjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplRVJLTlNfMTJH
cmFwaGljc1NpemVFYgogX19aTjdXZWJDb3JlMThjb3JyZWN0ZWRUZXh0Q29sb3JFTlNfNUNvbG9y
RVMwXwogX19aTjdXZWJDb3JlN0ludFJlY3Q1c2NhbGVFZgogX19aTjdXZWJDb3JlMjNBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUMxRVJLTlNfMTVQcm90ZWN0aW9uU3BhY2VFUktOU18xMENyZWRlbnRp
YWxFalJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRVJLTlNfMTNSZXNvdXJjZUVycm9yRQpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8JKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTk4NSw3ICs5ODUsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRRdWFkLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcCBcCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBcCkBAIC05OTMsNiArOTkyLDcgQEAgU09V
UkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhaHBpY3NTaXpl
LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAgXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwIFwKQEAgLTE5NzIsNyArMTk3Miw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRR
dWFkLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIFwKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFNpemUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEu
aCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRGYW1pbHkuaCBcCkBAIC0xOTg0LDYgKzE5ODMsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQ2xpZW50LmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6
ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMzRC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oIFwKQEAgLTMwMjAsNyArMzAyMCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9W
SURFTz0xKSB7CiAKICAgICAgICAgU09VUkNFUyArPSBcCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwIFwKLSAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0Zsb2F0U2l6ZUNHLmNwcCBcCisgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc1NpemVDRy5jcHAgXAogICAgICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwIFwKICAgICAgICAgICAgIHBsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAKIApAQCAtMzAz
Miw3ICszMDMyLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKICAgICAg
ICAgICAgIHBsYXRmb3JtL21hYy9TaGFyZWRCdWZmZXJNYWMubW0gXAogICAgICAgICAgICAgcGxh
dGZvcm0vbWFjL0tVUkxNYWMubW0gXAogICAgICAgICAgICAgcGxhdGZvcm0vdGV4dC9tYWMvU3Ry
aW5nTWFjLm1tIFwKLSAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVN
YWMubW0gXAorICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzU2l6ZU1h
Yy5tbSBcCiAgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UmVjdE1hYy5tbSBc
CiAgICAgICAgICAgICBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5t
bSBcCiAgICAgICAgICAgICBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlci5tbSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTQyNSw4ICsxNDI1LDggQEAKICAgICAgICAgICAgIFsn
aW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWNcXC5tbSQnXSwKICAgICAg
ICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hY1xc
Lm1tJCddLAogICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
bG9hdFJlY3RNYWNcXC5tbSQnXSwKLSAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRmxvYXRTaXplTWFjXFwubW0kJ10sCiAgICAgICAgICAgICBbJ2luY2x1ZGUn
LCAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZVRyZWVOb2RlTWFjXFwuY3BwJCddLAor
ICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc1Np
emVNYWNcXC5tbSQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW50UG9pbnRNYWNcXC5tbSQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSW50UmVjdE1hY1xcLm1tJCddLAogICAgICAgICAgICAgWydpbmNs
dWRlJywgJ3BsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlvbnNcXC5tbSQnXSwKQEAgLTE0OTQsNyAr
MTQ5NCw3IEBACiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgWydpbmNsdWRl
JywgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRDR1xcLmNwcCQnXSwKICAgICAgICAg
ICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDR1xcLmNwcCQn
XSwKLSAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNp
emVDR1xcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc1NpemVDR1xcLmNwcCQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHXFwuY3BwJCddLAogICAgICAgICAgICAgWydp
bmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDR1xcLmNwcCQnXSwKICAgICAg
ICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0dcXC5jcHAk
J10sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0MjUsMTQgKzI3NDI1LDYgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXEZsb2F0U2l6ZS5jcHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUK
LQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGbG9hdFNpemUuaCIKLQkJ
CQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXEZvbnQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjc1ODEsNiAr
Mjc1NzMsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzU2l6ZS5jcHAiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xHcmFwaGljc1NpemUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzVHlwZXMuY3BwIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjg0NDgsNyArMjg0NDgsNyBAQAogCQkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjZ1xGbG9hdFNpemVDRy5jcHAiCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXEdyYXBoaWNzU2l6ZUNHLmNwcCIKIAkJ
CQkJCT4KIAkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgogCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzM4
LDcgKzQzMzgsNiBAQAogCQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRp
b25NYXRyaXhDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAgKi87IH07CiAJCUIyNzUzNTU5MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Q0cuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkIw
QjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi87IH07CiAJCUIyNzUzNTVBMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRS
ZWN0Q0cuY3BwICovOyB9OwotCQlCMjc1MzU1QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXpl
Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3
NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1
NUUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdl
Q0cuY3BwICovOyB9OwogCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VD
Ry5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1
MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi87IH07CiAJCUIyNzUz
NTYwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bnRQb2ludENHLmNwcCAqLzsgfTsKQEAgLTQzNTMsOCArNDM1Miw2IEBACiAJCUIyNzUzNTY5MEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2lu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIy
NzUzNTZBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1M0MwQjA1MzgxNDAwMkNFNjRGIC8q
IEZsb2F0UmVjdC5jcHAgKi87IH07CiAJCUIyNzUzNTZCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9h
dFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NzUzNTNEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCMjc1MzU2QzBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyNzUzNTNFMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemUuY3BwICovOyB9Owot
CQlCMjc1MzU2RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzRjBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQjI3NTM1NkUwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTQwMEIwNTM4MTQwMDJDRTY0
RiAvKiBJY29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQjI3NTM1NkYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTQxMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbWFnZS5jcHAgKi87IH07CiAJCUIyNzUzNTcwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1
NDIwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQzNjcsNyArNDM2NCw2IEBACiAJCUIyNzUzNTc3MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTRBMEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5t
bSAqLzsgfTsKIAkJQjI3NTM1NzgwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0QjBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludE1hYy5tbSAqLzsgfTsKIAkJQjI3NTM1NzkwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJl
Y3RNYWMubW0gKi87IH07Ci0JCUIyNzUzNTdBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1
MzU0RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplTWFjLm1tICovOyB9OwogCQlCMjc1MzU3
QjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0RTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VN
YWMubW0gKi87IH07CiAJCUIyNzUzNTdDMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludE1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTRG
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludE1hYy5tbSAqLzsgfTsKIAkJQjI3NTM1N0QwQjA1
MzgxNDAwMkNFNjRGIC8qIEludFJlY3RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdE1h
Yy5tbSAqLzsgfTsKQEAgLTQ3NzcsNiArNDc3MywxMCBAQAogCQlCOERCREI0QzEzMEIwRjhBMDBG
NUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNDgxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVj
dGlvbkNvbW1hbmQuaCAqLzsgfTsKIAkJQjhEQkRCNEQxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjhEQkRCNDkxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwICovOyB9OwogCQlCOERCREI0RTEzMEIwRjhBMDBGNUNEQjEgLyogU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjhEQkRCNEExMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuaCAqLzsgfTsKKwkJQkE0ODIzRDYxM0Q0QzUxOTAwRTUwOThEIC8qIEdyYXBo
aWNzU2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJBNDgyM0Q1MTNENEM1MTkwMEU1MDk4RCAvKiBHcmFwaGljc1NpemVDRy5jcHAgKi87IH07
CisJCUJBNDgyM0Q5MTNENEM1QUYwMEU1MDk4RCAvKiBHcmFwaGljc1NpemUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkE0ODIzRDcxM0Q0QzVBRjAw
RTUwOThEIC8qIEdyYXBoaWNzU2l6ZS5jcHAgKi87IH07CisJCUJBNDgyM0RBMTNENEM1QUYwMEU1
MDk4RCAvKiBHcmFwaGljc1NpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJBNDgyM0Q4MTNENEM1QUYwMEU1MDk4RCAvKiBHcmFwaGljc1NpemUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQTQ4MjNG
RTEzRDREQjQ5MDBFNTA5OEQgLyogR3JhcGhpY3NTaXplTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkE0ODIzRkQxM0Q0REI0OTAwRTUwOThEIC8q
IEdyYXBoaWNzU2l6ZU1hYy5tbSAqLzsgfTsKIAkJQkFDRjI5MDExM0IyQTBENTAwNzgxRjkwIC8q
IExheW91dFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQUNGMjkwMDEzQjJBMEQ1MDA3ODFGOTAgLyogTGF5b3V0VHlwZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzAwRjAwNDBFMEExODU1
MDBGRDA0RTMgLyogRE9NRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLzsgfTsK
IAkJQkMwMEYwMDUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRjBFMEExODU1MDBGRDA0RTMg
LyogRE9NRmlsZS5tbSAqLzsgfTsKQEAgLTEwOTMyLDcgKzEwOTMyLDYgQEAKIAkJQjI3NTM1MkEw
QjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyog
RmxvYXRQb2ludENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
bG9hdFBvaW50Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUyQzBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZsb2F0UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNpemVDRy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNH
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNHLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8q
IEltYWdlU291cmNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlU291cmNlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUz
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW50UG9pbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDk0Nyw4ICsxMDk0Niw2IEBACiAJCUIyNzUzNTNCMEIwNTM4MTQwMDJDRTY0RiAv
KiBGbG9hdFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdFBv
aW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTNDMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZsb2F0UmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTNE
MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZsb2F0UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1
MzUzRTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNpemUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjc1MzUzRjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdFNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjI3NTM1NDAwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEljb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjI3NTM1NDEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNzUzNTQyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwOTYxLDcgKzEwOTU4LDYgQEAKIAkJQjI3NTM1NEEwQjA1MzgxNDAwMkNFNjRGIC8q
IENvbG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENv
bG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0QjBCMDUzODE0
MDAyQ0U2NEYgLyogRmxvYXRQb2ludE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBGbG9hdFBvaW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0TWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0UmVjdE1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI3NTM1NEQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
U2l6ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9h
dFNpemVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTRFMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBJbWFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3
NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFBvaW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdE1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbnRSZWN0TWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEzODYsNiArMTEzODIsMTAgQEAKIAkJQjhE
QkRCNDgxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0U2VsZWN0aW9uQ29tbWFuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0OTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjhEQkRCNEExMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQTQ4MjNENTEzRDRDNTE5
MDBFNTA5OEQgLyogR3JhcGhpY3NTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR3JhcGhpY3NTaXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQTQ4MjNENzEzRDRDNUFGMDBFNTA5OEQgLyogR3JhcGhpY3NTaXplLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzU2l6ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJBNDgyM0Q4MTNENEM1QUYwMEU1MDk4RCAvKiBHcmFwaGlj
c1NpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NTaXplLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJBNDgyM0ZEMTNENERCNDkwMEU1MDk4RCAv
KiBHcmFwaGljc1NpemVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHcmFwaGljc1NpemVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJB
Q0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3ODk5LDEwICsxNzg5OSwxMCBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAy
Q0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCUJBNDgyM0Q1MTNENEM1MTkwMEU1MDk4RCAvKiBHcmFwaGljc1NpemVDRy5jcHAgKi8sCiAJ
CQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8qIENvbG9yQ0cuY3BwICovLAogCQkJCUIyNzUz
NTJCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Q0cuY3BwICovLAogCQkJCUIyNzUzNTJD
MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8sCi0JCQkJQjI3NTM1MkQwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywKIAkJCQlCQzUzQzYwQTBEQTU2Q0Yx
MDAyMUVCNUQgLyogR3JhZGllbnRDRy5jcHAgKi8sCiAJCQkJNkUyMUM2QzExMTI2MzM5OTAwQTdC
RTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwICovLAogCQkJCUIyRUQ5NzcwMEIxRjU1Q0Uw
MDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgKi8sCkBAIC0xNzkzOCw3ICsxNzkzOCw2
IEBACiAJCQkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0LmNwcCAqLywKIAkJCQlCMjc1MzU0QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQ
b2ludE1hYy5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0
TWFjLm1tICovLAotCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVNYWMu
bW0gKi8sCiAJCQkJQjJBRkZDNzQwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSAq
LywKIAkJCQkzN0MyMzYwQTEwOTdFREVEMDBFRjlGNzIgLyogRm9udENvbXBsZXhUZXh0TWFjLmNw
cCAqLywKIAkJCQlCMkFGRkM3NTBEMDBBNUMxMDAzMDA3NEQgLyogRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAgKi8sCkBAIC0xNzk0Nyw2ICsxNzk0Niw3IEBACiAJCQkJQjJBRkZDN0IwRDAwQTVD
MTAwMzAwNzREIC8qIEdseXBoUGFnZVRyZWVOb2RlTWFjLmNwcCAqLywKIAkJCQk0OUZGQkYxQzEx
Qzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi8sCiAJCQkJQjI3N0I0
MDMwQjIyRjM3QzAwMDRCRUM2IC8qIEdyYXBoaWNzQ29udGV4dE1hYy5tbSAqLywKKwkJCQlCQTQ4
MjNGRDEzRDREQjQ5MDBFNTA5OEQgLyogR3JhcGhpY3NTaXplTWFjLm1tICovLAogCQkJCUIyNzUz
NThEMEIwNTNBNjYwMDJDRTY0RiAvKiBJY29uTWFjLm1tICovLAogCQkJCUIyNzUzNTRFMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RjBCMDUzODE0MDAyQ0U2
NEYgLyogSW50UG9pbnRNYWMubW0gKi8sCkBAIC0xNzk5OSw4ICsxNzk5OSw2IEBACiAJCQkJMEZE
NzIzODAwRUM4QkQ5MzAwQ0E1REQ3IC8qIEZsb2F0UXVhZC5oICovLAogCQkJCUIyNzUzNTNDMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3QuY3BwICovLAogCQkJCUIyNzUzNTNEMEIwNTM4MTQw
MDJDRTY0RiAvKiBGbG9hdFJlY3QuaCAqLywKLQkJCQlCMjc1MzUzRTBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplLmNwcCAqLywKLQkJCQlCMjc1MzUzRjBCMDUzODE0MDAyQ0U2NEYgLyogRmxv
YXRTaXplLmggKi8sCiAJCQkJQjJDM0RBNEYwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnQuY3BwICov
LAogCQkJCUIyQzNEQTUwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggKi8sCiAJCQkJQkNCOTJE
NEUxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oICovLApAQCAtMTgwNDIsNiArMTgw
NDAsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJQkE0ODIzRDcxM0Q0QzVBRjAwRTUwOThEIC8qIEdyYXBoaWNzU2l6ZS5jcHAgKi8s
CisJCQkJQkE0ODIzRDgxM0Q0QzVBRjAwRTUwOThEIC8qIEdyYXBoaWNzU2l6ZS5oICovLAogCQkJ
CUIyQTAxNTk0MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLywKIAkJCQlC
MkEwMTU5NTBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oICovLAogCQkJCTc3QTE3
QTdBMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFwaGljc1R5cGVzM0QuaCAqLywKQEAgLTIxMjA5LDcg
KzIxMjA5LDYgQEAKIAkJCQlCMkUyN0NBMDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNE
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ3MjM4MjBFQzhCRDkzMDBDQTVERDcgLyogRmxvYXRR
dWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU2QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxv
YXRSZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlCMjc1MzU2RDBCMDUzODE0MDAyQ0U2NEYgLyog
RmxvYXRTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk5M0JFNjBCMkYyQjFDMDA1MDQ5N0Yg
LyogRm9jdXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjIyODc4NDBCNERCMzIy
MDAwQzM0REYgLyogRm9jdXNEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTYx
MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggaW4gSGVhZGVycyAqLywKQEAgLTIzMTA0LDYgKzIz
MTAzLDcgQEAKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5NDVCRkQ0MTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk2OUIwRjMxM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRl
c3RpbmdUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkE0ODIzREExM0Q0QzVB
RjAwRTUwOThEIC8qIEdyYXBoaWNzU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNDEyNSw5ICsy
NDEyNSw2IEBACiAJCQkJQjI3NTM1NkEwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0
Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NzkwQjA1MzgxNDAwMkNFNjRGIC8qIEZs
b2F0UmVjdE1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTZDMEIwNTM4MTQwMDJDRTY0
RiAvKiBGbG9hdFNpemUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI3NTM1NUIwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTdBMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDk5
M0JFNTBCMkYyQjFDMDA1MDQ5N0YgLyogRm9jdXNDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTYyMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yNTg3NSw2ICsyNTg3Miw5IEBACiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4
RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDVCRkQzMTNDRjgwOTAw
MENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTY5QjBG
MjEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJBNDgyM0Q2MTNENEM1MTkwMEU1MDk4RCAvKiBHcmFwaGljc1NpemVDRy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCQTQ4MjNEOTEzRDRDNUFGMDBFNTA5OEQgLyogR3JhcGhp
Y3NTaXplLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJBNDgyM0ZFMTNENERCNDkwMEU1MDk4RCAv
KiBHcmFwaGljc1NpemVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3
LDcgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudAogICAgIGlmIChp
c0xpbmVhckdyYWRpZW50KCkpCiAgICAgICAgIGdyYWRpZW50RW5kID0gZ3JhZGllbnQtPnAxKCk7
CiAgICAgZWxzZSBpZiAoaXNSYWRpYWxHcmFkaWVudCgpKQotICAgICAgICBncmFkaWVudEVuZCA9
IGdyYWRpZW50U3RhcnQgKyBGbG9hdFNpemUoZ3JhZGllbnQtPmVuZFJhZGl1cygpLCAwKTsKKyAg
ICAgICAgZ3JhZGllbnRFbmQgPSBncmFkaWVudFN0YXJ0ICsgR3JhcGhpY3NTaXplKGdyYWRpZW50
LT5lbmRSYWRpdXMoKSwgMCk7CiAgICAgICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtU3RvcHM7ICsraSkgewogICAgICAgICBjb25zdCBDU1NHcmFkaWVudENvbG9yU3RvcCYgc3Rv
cCA9IG1fc3RvcHNbaV07CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVl
OjphZGRTdG9wcyhHcmFkaWVudAogICAgICAgICAgICAgZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFs
dWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCBsZW5n
dGggPSBzdG9wLm1fcG9zaXRpb24tPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlLCByb290U3R5
bGUsIHN0eWxlLT5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICAgICAgICAgIGlmICghY29tcHV0
ZWRHcmFkaWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUgZ3JhZGll
bnRTaXplKGdyYWRpZW50U3RhcnQgLSBncmFkaWVudEVuZCk7CisgICAgICAgICAgICAgICAgICAg
IEdyYXBoaWNzU2l6ZSBncmFkaWVudFNpemUoZ3JhZGllbnRTdGFydCAtIGdyYWRpZW50RW5kKTsK
ICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRMZW5ndGggPSBncmFkaWVudFNpemUuZGlhZ29u
YWxMZW5ndGgoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc3RvcHNbaV0u
b2Zmc2V0ID0gKGdyYWRpZW50TGVuZ3RoID4gMCkgPyBsZW5ndGggLyBncmFkaWVudExlbmd0aCA6
IDA7CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhH
cmFkaWVudAogICAgICAgICAgICAgLy8gdG8gcmVwZWF0IG91dCB0byB0aGUgY29ybmVycyBvZiB0
aGUgYm94LgogICAgICAgICAgICAgaWYgKGlzUmFkaWFsR3JhZGllbnQoKSkgewogICAgICAgICAg
ICAgICAgIGlmICghY29tcHV0ZWRHcmFkaWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAg
ICBGbG9hdFNpemUgZ3JhZGllbnRTaXplKGdyYWRpZW50U3RhcnQgLSBncmFkaWVudEVuZCk7Cisg
ICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzU2l6ZSBncmFkaWVudFNpemUoZ3JhZGllbnRTdGFy
dCAtIGdyYWRpZW50RW5kKTsKICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRMZW5ndGggPSBn
cmFkaWVudFNpemUuZGlhZ29uYWxMZW5ndGgoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgCkBAIC02NDksMTkgKzY0OSwxOSBAQCBmbG9hdCBDU1NSYWRpYWxHcmFkaWVudFZh
bHVlOjpyZXNvbHZlUmFkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGZsb2F0IGRp
c3RhbmNlVG9DbG9zZXN0Q29ybmVyKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgRmxvYXRQb2ludCYgY29ybmVyKQorc3RhdGljIGZsb2F0IGRpc3RhbmNlVG9DbG9z
ZXN0Q29ybmVyKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSwg
RmxvYXRQb2ludCYgY29ybmVyKQogewogICAgIEZsb2F0UG9pbnQgdG9wTGVmdDsKLSAgICBmbG9h
dCB0b3BMZWZ0RGlzdGFuY2UgPSBGbG9hdFNpemUocCAtIHRvcExlZnQpLmRpYWdvbmFsTGVuZ3Ro
KCk7CisgICAgZmxvYXQgdG9wTGVmdERpc3RhbmNlID0gR3JhcGhpY3NTaXplKHAgLSB0b3BMZWZ0
KS5kaWFnb25hbExlbmd0aCgpOwogCiAgICAgRmxvYXRQb2ludCB0b3BSaWdodChzaXplLndpZHRo
KCksIDApOwotICAgIGZsb2F0IHRvcFJpZ2h0RGlzdGFuY2UgPSBGbG9hdFNpemUocCAtIHRvcFJp
Z2h0KS5kaWFnb25hbExlbmd0aCgpOworICAgIGZsb2F0IHRvcFJpZ2h0RGlzdGFuY2UgPSBHcmFw
aGljc1NpemUocCAtIHRvcFJpZ2h0KS5kaWFnb25hbExlbmd0aCgpOwogCiAgICAgRmxvYXRQb2lu
dCBib3R0b21MZWZ0KDAsIHNpemUuaGVpZ2h0KCkpOwotICAgIGZsb2F0IGJvdHRvbUxlZnREaXN0
YW5jZSA9IEZsb2F0U2l6ZShwIC0gYm90dG9tTGVmdCkuZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBm
bG9hdCBib3R0b21MZWZ0RGlzdGFuY2UgPSBHcmFwaGljc1NpemUocCAtIGJvdHRvbUxlZnQpLmRp
YWdvbmFsTGVuZ3RoKCk7CiAKICAgICBGbG9hdFBvaW50IGJvdHRvbVJpZ2h0KHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZmxvYXQgYm90dG9tUmlnaHREaXN0YW5jZSA9IEZsb2F0
U2l6ZShwIC0gYm90dG9tUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgYm90dG9t
UmlnaHREaXN0YW5jZSA9IEdyYXBoaWNzU2l6ZShwIC0gYm90dG9tUmlnaHQpLmRpYWdvbmFsTGVu
Z3RoKCk7CiAKICAgICBjb3JuZXIgPSB0b3BMZWZ0OwogICAgIGZsb2F0IG1pbkRpc3RhbmNlID0g
dG9wTGVmdERpc3RhbmNlOwpAQCAtNjgyLDE5ICs2ODIsMTkgQEAgc3RhdGljIGZsb2F0IGRpc3Rh
bmNlVG9DbG9zZXN0Q29ybmVyKGNvbgogICAgIHJldHVybiBtaW5EaXN0YW5jZTsKIH0KIAotc3Rh
dGljIGZsb2F0IGRpc3RhbmNlVG9GYXJ0aGVzdENvcm5lcihjb25zdCBGbG9hdFBvaW50JiBwLCBj
b25zdCBGbG9hdFNpemUmIHNpemUsIEZsb2F0UG9pbnQmIGNvcm5lcikKK3N0YXRpYyBmbG9hdCBk
aXN0YW5jZVRvRmFydGhlc3RDb3JuZXIoY29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3QgR3JhcGhp
Y3NTaXplJiBzaXplLCBGbG9hdFBvaW50JiBjb3JuZXIpCiB7CiAgICAgRmxvYXRQb2ludCB0b3BM
ZWZ0OwotICAgIGZsb2F0IHRvcExlZnREaXN0YW5jZSA9IEZsb2F0U2l6ZShwIC0gdG9wTGVmdCku
ZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBmbG9hdCB0b3BMZWZ0RGlzdGFuY2UgPSBHcmFwaGljc1Np
emUocCAtIHRvcExlZnQpLmRpYWdvbmFsTGVuZ3RoKCk7CiAKICAgICBGbG9hdFBvaW50IHRvcFJp
Z2h0KHNpemUud2lkdGgoKSwgMCk7Ci0gICAgZmxvYXQgdG9wUmlnaHREaXN0YW5jZSA9IEZsb2F0
U2l6ZShwIC0gdG9wUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgdG9wUmlnaHRE
aXN0YW5jZSA9IEdyYXBoaWNzU2l6ZShwIC0gdG9wUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CiAK
ICAgICBGbG9hdFBvaW50IGJvdHRvbUxlZnQoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZmxvYXQg
Ym90dG9tTGVmdERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSBib3R0b21MZWZ0KS5kaWFnb25hbExl
bmd0aCgpOworICAgIGZsb2F0IGJvdHRvbUxlZnREaXN0YW5jZSA9IEdyYXBoaWNzU2l6ZShwIC0g
Ym90dG9tTGVmdCkuZGlhZ29uYWxMZW5ndGgoKTsKIAogICAgIEZsb2F0UG9pbnQgYm90dG9tUmln
aHQoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBmbG9hdCBib3R0b21SaWdodERp
c3RhbmNlID0gRmxvYXRTaXplKHAgLSBib3R0b21SaWdodCkuZGlhZ29uYWxMZW5ndGgoKTsKKyAg
ICBmbG9hdCBib3R0b21SaWdodERpc3RhbmNlID0gR3JhcGhpY3NTaXplKHAgLSBib3R0b21SaWdo
dCkuZGlhZ29uYWxMZW5ndGgoKTsKIAogICAgIGNvcm5lciA9IHRvcExlZnQ7CiAgICAgZmxvYXQg
bWF4RGlzdGFuY2UgPSB0b3BMZWZ0RGlzdGFuY2U7CkBAIC03MTcsNyArNzE3LDcgQEAgc3RhdGlj
IGZsb2F0IGRpc3RhbmNlVG9GYXJ0aGVzdENvcm5lcihjbwogCiAvLyBDb21wdXRlIGhvcml6b250
YWwgcmFkaXVzIG9mIGVsbGlwc2Ugd2l0aCBjZW50ZXIgYXQgMCwwIHdoaWNoIHBhc3NlcyB0aHJv
dWdoIHAsIGFuZCBoYXMKIC8vIHdpZHRoL2hlaWdodCBnaXZlbiBieSBhc3BlY3RSYXRpby4KLXN0
YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRhbEVsbGlwc2VSYWRpdXMoY29uc3QgRmxvYXRTaXpl
JiBwLCBmbG9hdCBhc3BlY3RSYXRpbykKK3N0YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRhbEVs
bGlwc2VSYWRpdXMoY29uc3QgR3JhcGhpY3NTaXplJiBwLCBmbG9hdCBhc3BlY3RSYXRpbykKIHsK
ICAgICAvLyB4XjIvYV4yICsgeV4yL2JeMiA9IDEKICAgICAvLyBhL2IgPSBhc3BlY3RSYXRpbywg
YiA9IGEvYXNwZWN0UmF0aW8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDcgQEAgSW50UmVj
dCBIVE1MQ2FudmFzRWxlbWVudDo6Y29udmVydExvZ2ljYQogICAgIHJldHVybiBJbnRSZWN0KElu
dFBvaW50KGxlZnQsIHRvcCksIGNvbnZlcnRUb1ZhbGlkRGV2aWNlU2l6ZShyaWdodCAtIGxlZnQs
IGJvdHRvbSAtIHRvcCkpOwogfQogCi1JbnRTaXplIEhUTUxDYW52YXNFbGVtZW50Ojpjb252ZXJ0
TG9naWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpIGNvbnN0CitJbnRT
aXplIEhUTUxDYW52YXNFbGVtZW50Ojpjb252ZXJ0TG9naWNhbFRvRGV2aWNlKGNvbnN0IEdyYXBo
aWNzU2l6ZSYgbG9naWNhbFNpemUpIGNvbnN0CiB7CiAgICAgLy8gUHJldmVudCBvdmVyZmxvdyBi
eSBlbnN1cmluZyB0aGUgcmVjdCdzIGJvdW5kcyBzdGF5IHdpdGhpbiBpbnRlZ2VyLWV4cHJlc3Np
YmxlIHJhbmdlCiAgICAgZmxvYXQgd2lkdGggPSBjbGFtcFRvSW50ZWdlcihjZWlsZihsb2dpY2Fs
U2l6ZS53aWR0aCgpICogbV9wYWdlU2NhbGVGYWN0b3IpKTsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2
b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlCiAKICAgICBtX2hhc0NyZWF0
ZWRJbWFnZUJ1ZmZlciA9IHRydWU7CiAKLSAgICBGbG9hdFNpemUgdW5zY2FsZWRTaXplKHdpZHRo
KCksIGhlaWdodCgpKTsKKyAgICBHcmFwaGljc1NpemUgdW5zY2FsZWRTaXplKHdpZHRoKCksIGhl
aWdodCgpKTsKICAgICBJbnRTaXplIHNpemUgPSBjb252ZXJ0TG9naWNhbFRvRGV2aWNlKHVuc2Nh
bGVkU2l6ZSk7CiAgICAgaWYgKCFzaXplLndpZHRoKCkgfHwgIXNpemUuaGVpZ2h0KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50Ojpj
cmVhdGVJbWFnZUJ1ZmZlCiAgICAgLy8gd2hlcmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIHJldHVy
bnMgMCwgaG93ZXZlciB3ZSBjb3VsZCBzdGlsbCBiZSBsb3cgb24gbWVtb3J5LgogICAgIGlmICgh
bV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIG1faW1hZ2VCdWZmZXItPmNvbnRl
eHQoKS0+c2NhbGUoRmxvYXRTaXplKHNpemUud2lkdGgoKSAvIHVuc2NhbGVkU2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpIC8gdW5zY2FsZWRTaXplLmhlaWdodCgpKSk7CisgICAgbV9pbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLT5zY2FsZShHcmFwaGljc1NpemUoc2l6ZS53aWR0aCgpIC8gdW5zY2Fs
ZWRTaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkgLyB1bnNjYWxlZFNpemUuaGVpZ2h0KCkpKTsK
ICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KHRydWUpOwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShEZWZhdWx0SW50ZXJwb2xhdGlvblF1YWxpdHkpOwogCkBAIC00ODcsNyArNDg3
LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y2xlYXJDb3BpZWRJbWFnZQogQWZmaW5lVHJh
bnNmb3JtIEhUTUxDYW52YXNFbGVtZW50OjpiYXNlVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBB
U1NFUlQobV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpOwotICAgIEZsb2F0U2l6ZSB1bnNjYWxlZFNp
emUod2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIEdyYXBoaWNzU2l6ZSB1bnNjYWxlZFNpemUod2lk
dGgoKSwgaGVpZ2h0KCkpOwogICAgIEludFNpemUgc2l6ZSA9IGNvbnZlcnRMb2dpY2FsVG9EZXZp
Y2UodW5zY2FsZWRTaXplKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgIGlm
IChzaXplLndpZHRoKCkgJiYgc2l6ZS5oZWlnaHQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJQcmVzZW50YXRpb25Db3B5KCk7CiAKICAgICBJbnRS
ZWN0IGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7Ci0gICAg
SW50U2l6ZSBjb252ZXJ0TG9naWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0Owor
ICAgIEludFNpemUgY29udmVydExvZ2ljYWxUb0RldmljZShjb25zdCBHcmFwaGljc1NpemUmKSBj
b25zdDsKICAgICBJbnRTaXplIGNvbnZlcnRUb1ZhbGlkRGV2aWNlU2l6ZShmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KSBjb25zdDsKIAogICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
bigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cmVzdG9yZSgpCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0QWxsQXR0cmli
dXRlc1RvRGVmYXVsdCgpCiB7CiAgICAgc3RhdGUoKS5tX2dsb2JhbEFscGhhID0gMTsKLSAgICBz
dGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKCk7CisgICAgc3RhdGUoKS5tX3NoYWRv
d09mZnNldCA9IEdyYXBoaWNzU2l6ZSgpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gMDsK
ICAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgc3Rh
dGUoKS5tX2dsb2JhbENvbXBvc2l0ZSA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CkBAIC0zNTQsNyAr
MzU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEFsbEF0dAogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC0+c2V0TGVnYWN5U2hh
ZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhHcmFwaGljc1NpemUoKSwgMCwgQ29s
b3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LT5zZXRB
bHBoYSgxKTsKICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlT3Zlcik7CiB9CkBAIC01OTEsNyArNTkxLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNjYWxlKGZsbwogICAgIH0KIAogICAgIHN0YXRlKCkubV90cmFuc2Zvcm0gPSBuZXdU
cmFuc2Zvcm07Ci0gICAgYy0+c2NhbGUoRmxvYXRTaXplKHN4LCBzeSkpOworICAgIGMtPnNjYWxl
KEdyYXBoaWNzU2l6ZShzeCwgc3kpKTsKICAgICBtX3BhdGgudHJhbnNmb3JtKEFmZmluZVRyYW5z
Zm9ybSgpLnNjYWxlTm9uVW5pZm9ybSgxLjAgLyBzeCwgMS4wIC8gc3kpKTsKIH0KIApAQCAtMTEw
OCw3ICsxMTA4LDcgQEAgc3RhdGljIGlubGluZSBDR1NpemUgYWRqdXN0ZWRTaGFkb3dTaXplKAog
CiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIpCiB7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9
IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0g
R3JhcGhpY3NTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0g
Ymx1cjsKICAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAg
ICAgYXBwbHlTaGFkb3coKTsKQEAgLTExMTksMTQgKzExMTksMTQgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgIGlmICghcGFyc2VDb2xvck9yQ3VycmVudENv
bG9yKHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3IsIGNhbnZhcygpKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKKyAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gR3JhcGhpY3NTaXplKHdpZHRoLCBo
ZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKICAgICBhcHBseVNoYWRv
dygpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCkKIHsKLSAg
ICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOworICAg
IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBHcmFwaGljc1NpemUod2lkdGgsIGhlaWdodCk7CiAg
ICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwogICAgIHN0YXRlKCkubV9zaGFkb3dDb2xv
ciA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWws
IDEuMGYpOwogCkBAIC0xMTM0LDcgKzExMzQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBjLT5z
ZXRMZWdhY3lTaGFkb3coRmxvYXRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRv
d0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Yy0+c2V0TGVnYWN5U2hhZG93KEdyYXBoaWNzU2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCku
bV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0
IGFscGhhKQpAQCAtMTE0NSwxOSArMTE0NSwxOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93CiAgICAgICAgIHJldHVybjsKIAogICAgIHN0YXRlKCkubV9zaGFkb3dD
b2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEpOwotICAgIHN0YXRlKCku
bV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgc3RhdGUoKS5t
X3NoYWRvd09mZnNldCA9IEdyYXBoaWNzU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBzdGF0ZSgp
Lm1fc2hhZG93Qmx1ciA9IGJsdXI7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5n
Q29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYy0+c2V0TGVn
YWN5U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVy
LCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGMtPnNl
dExlZ2FjeVNoYWRvdyhHcmFwaGljc1NpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hh
ZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0K
IAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQog
ewotICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7
CisgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEdyYXBoaWNzU2l6ZSh3aWR0aCwgaGVpZ2h0
KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7CiAgICAgc3RhdGUoKS5tX3NoYWRv
d0NvbG9yID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlM
ZXZlbCwgYWxwaGEpOwogCkBAIC0xMTY1LDEyICsxMTY1LDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTaGFkb3cKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGMtPnNldExlZ2FjeVNoYWRvdyhGbG9hdFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgp
Lm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBjLT5zZXRMZWdhY3lTaGFkb3coR3JhcGhpY3NTaXplKHdpZHRoLCAtaGVpZ2h0KSwg
c3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3co
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQgZywg
ZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRT
aXplKHdpZHRoLCBoZWlnaHQpOworICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBHcmFwaGlj
c1NpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwog
ICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIs
IGEpOwogCkBAIC0xMTc4LDEyICsxMTc4LDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3cKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGMtPnNl
dExlZ2FjeVNoYWRvdyhGbG9hdFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93
Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBj
LT5zZXRMZWdhY3lTaGFkb3coR3JhcGhpY3NTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5t
X3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwg
ZmxvYXQgaywgZmxvYXQgYSkKIHsKLSAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRT
aXplKHdpZHRoLCBoZWlnaHQpOworICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBHcmFwaGlj
c1NpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwog
ICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBRnJvbUNNWUtBKGMsIG0sIHksIGss
IGEpOwogCkBAIC0xMTk4LDEzICsxMTk4LDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3cKICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoZGMtPnBsYXRm
b3JtQ29udGV4dCgpLCBhZGp1c3RlZFNoYWRvd1NpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBz
aGFkb3dDb2xvcik7CiAgICAgQ0dDb2xvclJlbGVhc2Uoc2hhZG93Q29sb3IpOwogI2Vsc2UKLSAg
ICBkYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIGJsdXIsIHN0
YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgZGMtPnNldExl
Z2FjeVNoYWRvdyhHcmFwaGljc1NpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBzdGF0ZSgpLm1f
c2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogI2VuZGlmCiB9CiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGVhclNoYWRvdygpCiB7Ci0gICAgc3RhdGUoKS5tX3No
YWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOworICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBH
cmFwaGljc1NpemUoKTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IDA7CiAgICAgc3RhdGUo
KS5tX3NoYWRvd0NvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50OwogICAgIGFwcGx5U2hhZG93KCk7
CkBAIC0xMjE4LDcgKzEyMTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBw
bHlTaGFkCiAKICAgICBmbG9hdCB3aWR0aCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQud2lkdGgo
KTsKICAgICBmbG9hdCBoZWlnaHQgPSBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpOwot
ICAgIGMtPnNldExlZ2FjeVNoYWRvdyhGbG9hdFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgp
Lm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBjLT5zZXRMZWdhY3lTaGFkb3coR3JhcGhpY3NTaXplKHdpZHRoLCAtaGVpZ2h0KSwg
c3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiB9CiAKIHN0YXRpYyBJbnRTaXplIHNpemUoSFRNTEltYWdlRWxlbWVudCogaW1h
Z2UpCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZHJhd0ltYWdlCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsK
ICAgICBjLT5jbGlwKGRzdFJlY3QpOwogICAgIGMtPnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0
UmVjdC55KCkpOwotICAgIGMtPnNjYWxlKEZsb2F0U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNS
ZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAg
Yy0+c2NhbGUoR3JhcGhpY3NTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKICAgICBjLT50cmFuc2xhdGUo
LXNyY1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOwogICAgIHZpZGVvLT5wYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChjLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUodmlkZW8pKSk7CiAgICAgc3Rh
dGVTYXZlci5yZXN0b3JlKCk7CkBAIC0xNjc3LDcgKzE2NzcsNyBAQCBQYXNzUmVmUHRyPEltYWdl
RGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29uCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IEZsb2F0U2l6ZSB1bnNjYWxlZFNpemUoZmFicyhzdyksIGZhYnMoc2gpKTsKKyAgICBHcmFwaGlj
c1NpemUgdW5zY2FsZWRTaXplKGZhYnMoc3cpLCBmYWJzKHNoKSk7CiAgICAgSW50U2l6ZSBzY2Fs
ZWRTaXplID0gY2FudmFzKCktPmNvbnZlcnRMb2dpY2FsVG9EZXZpY2UodW5zY2FsZWRTaXplKTsK
ICAgICBpZiAoc2NhbGVkU2l6ZS53aWR0aCgpIDwgMSkKICAgICAgICAgc2NhbGVkU2l6ZS5zZXRX
aWR0aCgxKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVk
ZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVk
ZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiRm9u
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJQYXRoLmgiCkBAIC0y
NDEsNyArMjQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTGluZUNhcCBtX2xpbmVDYXA7CiAgICAg
ICAgIExpbmVKb2luIG1fbGluZUpvaW47CiAgICAgICAgIGZsb2F0IG1fbWl0ZXJMaW1pdDsKLSAg
ICAgICAgRmxvYXRTaXplIG1fc2hhZG93T2Zmc2V0OworICAgICAgICBHcmFwaGljc1NpemUgbV9z
aGFkb3dPZmZzZXQ7CiAgICAgICAgIGZsb2F0IG1fc2hhZG93Qmx1cjsKICAgICAgICAgUkdCQTMy
IG1fc2hhZG93Q29sb3I7CiAgICAgICAgIGZsb2F0IG1fZ2xvYmFsQWxwaGE7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3Miw3
ICszMjcyLDcgQEAgRnJhbWUqIGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJhbWUsIAogICAg
IC8vIGFkanVzdCBmb3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgd2luZG93IHNpemUgYW5k
IHRoZSBwYWdlIHNpemUuCiAKICAgICBGbG9hdFJlY3Qgd2luZG93UmVjdCA9IHBhZ2UtPmNocm9t
ZSgpLT53aW5kb3dSZWN0KCk7Ci0gICAgRmxvYXRTaXplIHBhZ2VTaXplID0gcGFnZS0+Y2hyb21l
KCktPnBhZ2VSZWN0KCkuc2l6ZSgpOworICAgIEdyYXBoaWNzU2l6ZSBwYWdlU2l6ZSA9IHBhZ2Ut
PmNocm9tZSgpLT5wYWdlUmVjdCgpLnNpemUoKTsKICAgICBpZiAoZmVhdHVyZXMueFNldCkKICAg
ICAgICAgd2luZG93UmVjdC5zZXRYKGZlYXR1cmVzLngpOwogICAgIGlmIChmZWF0dXJlcy55U2V0
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDMs
NyArMTQ0Myw3IEBAIHZvaWQgRE9NV2luZG93OjpyZXNpemVCeShmbG9hdCB4LCBmbG9hdCAKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGZyID0gcGFnZS0+Y2hyb21lKCktPndpbmRv
d1JlY3QoKTsKLSAgICBGbG9hdFNpemUgZGVzdCA9IGZyLnNpemUoKSArIEZsb2F0U2l6ZSh4LCB5
KTsKKyAgICBHcmFwaGljc1NpemUgZGVzdCA9IGZyLnNpemUoKSArIEdyYXBoaWNzU2l6ZSh4LCB5
KTsKICAgICBGbG9hdFJlY3QgdXBkYXRlKGZyLmxvY2F0aW9uKCksIGRlc3QpOwogICAgIGFkanVz
dFdpbmRvd1JlY3Qoc2NyZWVuQXZhaWxhYmxlUmVjdChwYWdlLT5tYWluRnJhbWUoKS0+dmlldygp
KSwgZnIsIHVwZGF0ZSk7CiAgICAgcGFnZS0+Y2hyb21lKCktPnNldFdpbmRvd1JlY3QoZnIpOwpA
QCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2l6ZVRvKGZsb2F0IHdpZHRo
LCBmbAogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJvbWUo
KS0+d2luZG93UmVjdCgpOwotICAgIEZsb2F0U2l6ZSBkZXN0ID0gRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQpOworICAgIEdyYXBoaWNzU2l6ZSBkZXN0ID0gR3JhcGhpY3NTaXplKHdpZHRoLCBoZWln
aHQpOwogICAgIEZsb2F0UmVjdCB1cGRhdGUoZnIubG9jYXRpb24oKSwgZGVzdCk7CiAgICAgYWRq
dXN0V2luZG93UmVjdChzY3JlZW5BdmFpbGFibGVSZWN0KHBhZ2UtPm1haW5GcmFtZSgpLT52aWV3
KCkpLCBmciwgdXBkYXRlKTsKICAgICBwYWdlLT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdChmcik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDcgKzU0OCw3IEBAIENv
bG9yIEZyYW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcigKICAgICByZXR1cm4gdmlldygp
LT5iYXNlQmFja2dyb3VuZENvbG9yKCkuYmxlbmQoaHRtbEJhY2tncm91bmRDb2xvcikuYmxlbmQo
Ym9keUJhY2tncm91bmRDb2xvcik7CiB9CiAKLXZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wg
cHJpbnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtS
YXRpbywgQWRqdXN0Vmlld1NpemVPck5vdCBzaG91bGRBZGp1c3RWaWV3U2l6ZSkKK3ZvaWQgRnJh
bWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNp
emUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywgQWRqdXN0Vmlld1NpemVPck5vdCBzaG91bGRB
ZGp1c3RWaWV3U2l6ZSkKIHsKICAgICAvLyBJbiBzZXR0aW5nIHByaW50aW5nLCB3ZSBzaG91bGQg
bm90IHZhbGlkYXRlIHJlc291cmNlcyBhbHJlYWR5IGNhY2hlZCBmb3IgdGhlIGRvY3VtZW50Lgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3MDQK
QEAgLTU3MSwxMSArNTcxLDExIEBAIHZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRp
bmcsIGMKICAgICAgICAgY2hpbGQtPnNldFByaW50aW5nKHByaW50aW5nLCBJbnRTaXplKCksIDAs
IHNob3VsZEFkanVzdFZpZXdTaXplKTsKIH0KIAotRmxvYXRTaXplIEZyYW1lOjpyZXNpemVQYWdl
UmVjdHNLZWVwaW5nUmF0aW8oY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbFNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgZXhwZWN0ZWRTaXplKQorR3JhcGhpY3NTaXplIEZyYW1lOjpyZXNpemVQYWdlUmVj
dHNLZWVwaW5nUmF0aW8oY29uc3QgR3JhcGhpY3NTaXplJiBvcmlnaW5hbFNpemUsIGNvbnN0IEdy
YXBoaWNzU2l6ZSYgZXhwZWN0ZWRTaXplKQogewotICAgIEZsb2F0U2l6ZSByZXN1bHRTaXplOwor
ICAgIEdyYXBoaWNzU2l6ZSByZXN1bHRTaXplOwogICAgIGlmICghY29udGVudFJlbmRlcmVyKCkp
Ci0gICAgICAgIHJldHVybiBGbG9hdFNpemUoKTsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzU2l6
ZSgpOwogCiAgICAgaWYgKGNvbnRlbnRSZW5kZXJlcigpLT5zdHlsZSgpLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpKSB7CiAgICAgICAgIGZsb2F0IHJhdGlvID0gb3JpZ2luYWxTaXplLmhlaWdo
dCgpIC8gb3JpZ2luYWxTaXplLndpZHRoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lv
biA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQ3LDggKzE0Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTZXR0aW5n
cyogc2V0dGluZ3MoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKIAotICAgICAgICB2b2lkIHNldFBy
aW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemUsIGZsb2F0IG1h
eGltdW1TaHJpbmtSYXRpbywgQWRqdXN0Vmlld1NpemVPck5vdCk7Ci0gICAgICAgIEZsb2F0U2l6
ZSByZXNpemVQYWdlUmVjdHNLZWVwaW5nUmF0aW8oY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgZXhwZWN0ZWRTaXplKTsKKyAgICAgICAgdm9pZCBzZXRQcmlu
dGluZyhib29sIHByaW50aW5nLCBjb25zdCBHcmFwaGljc1NpemUmIHBhZ2VTaXplLCBmbG9hdCBt
YXhpbXVtU2hyaW5rUmF0aW8sIEFkanVzdFZpZXdTaXplT3JOb3QpOworICAgICAgICBHcmFwaGlj
c1NpemUgcmVzaXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvKGNvbnN0IEdyYXBoaWNzU2l6ZSYgb3Jp
Z2luYWxTaXplLCBjb25zdCBHcmFwaGljc1NpemUmIGV4cGVjdGVkU2l6ZSk7CiAKICAgICAgICAg
Ym9vbCBpblZpZXdTb3VyY2VNb2RlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0SW5WaWV3U291
cmNlTW9kZShib29sID0gdHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShy
ZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYxMCw3ICsyNjEwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmZvcmNlTGF5
b3V0KGJvb2wgYWxsb3dTdQogICAgIGxheW91dChhbGxvd1N1YnRyZWUpOwogfQogCi12b2lkIEZy
YW1lVmlldzo6Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNp
emUsIGZsb2F0IG1heGltdW1TaHJpbmtGYWN0b3IsIEFkanVzdFZpZXdTaXplT3JOb3Qgc2hvdWxk
QWRqdXN0Vmlld1NpemUpCit2b2lkIEZyYW1lVmlldzo6Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9u
KGNvbnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtGYWN0b3Is
IEFkanVzdFZpZXdTaXplT3JOb3Qgc2hvdWxkQWRqdXN0Vmlld1NpemUpCiB7CiAgICAgLy8gRHVt
cGluZyBleHRlcm5hbFJlcHJlc2VudGF0aW9uKG1fZnJhbWUtPnJlbmRlcmVyKCkpLmFzY2lpKCkg
aXMgYSBnb29kIHRyaWNrIHRvIHNlZQogICAgIC8vIHRoZSBzdGF0ZSBvZiB0aGluZ3MgYmVmb3Jl
IGFuZCBhZnRlciB0aGUgbGF5b3V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlz
aW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9y
OwogY2xhc3MgRXZlbnQ7Ci1jbGFzcyBGbG9hdFNpemU7CitjbGFzcyBHcmFwaGljc1NpemU7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lQWN0aW9uU2NoZWR1bGVyOwogY2xhc3MgSW50UmVjdDsK
QEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1Zpc3VhbGx5Tm9uRW1w
dHkoKSB7IG1faXNWaXN1YWxseU5vbkVtcHR5ID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBmb3JjZUxh
eW91dChib29sIGFsbG93U3VidHJlZSA9IGZhbHNlKTsKLSAgICB2b2lkIGZvcmNlTGF5b3V0Rm9y
UGFnaW5hdGlvbihjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5r
RmFjdG9yLCBBZGp1c3RWaWV3U2l6ZU9yTm90KTsKKyAgICB2b2lkIGZvcmNlTGF5b3V0Rm9yUGFn
aW5hdGlvbihjb25zdCBHcmFwaGljc1NpemUmIHBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5r
RmFjdG9yLCBBZGp1c3RWaWV3U2l6ZU9yTm90KTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBpcyByZXRhaW5lZCBiZWNhdXNlIG9mIGVtYmVkZGVkIFdlYlZpZXdzIGluIEFwcEtpdC4gIFdo
ZW4gYSBXZWJWaWV3IGlzIGVtYmVkZGVkIGluc2lkZQogICAgIC8vIHNvbWUgZW5jbG9zaW5nIHZp
ZXcgd2l0aCBhdXRvLXBhZ2luYXRpb24sIG5vIGNhbGwgaGFwcGVucyB0byByZXNpemUgdGhlIHZp
ZXcuICBUaGUgbmV3IHBhZ2luYXRpb24gbW9kZWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUHJpbnRD
b250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKGNvbnMKIAogICAgIFJlbmRlclZpZXcqIHZpZXcgPSB0
b1JlbmRlclZpZXcobV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSk7CiAgICAgY29uc3Qg
SW50UmVjdCYgZG9jdW1lbnRSZWN0ID0gdmlldy0+ZG9jdW1lbnRSZWN0KCk7Ci0gICAgRmxvYXRT
aXplIHBhZ2VTaXplID0gbV9mcmFtZS0+cmVzaXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvKEZsb2F0
U2l6ZShwcmludFJlY3Qud2lkdGgoKSwgcHJpbnRSZWN0LmhlaWdodCgpKSwgRmxvYXRTaXplKGRv
Y3VtZW50UmVjdC53aWR0aCgpLCBkb2N1bWVudFJlY3QuaGVpZ2h0KCkpKTsKKyAgICBHcmFwaGlj
c1NpemUgcGFnZVNpemUgPSBtX2ZyYW1lLT5yZXNpemVQYWdlUmVjdHNLZWVwaW5nUmF0aW8oR3Jh
cGhpY3NTaXplKHByaW50UmVjdC53aWR0aCgpLCBwcmludFJlY3QuaGVpZ2h0KCkpLCBHcmFwaGlj
c1NpemUoZG9jdW1lbnRSZWN0LndpZHRoKCksIGRvY3VtZW50UmVjdC5oZWlnaHQoKSkpOwogICAg
IGZsb2F0IHBhZ2VXaWR0aCA9IHBhZ2VTaXplLndpZHRoKCk7CiAgICAgZmxvYXQgcGFnZUhlaWdo
dCA9IHBhZ2VTaXplLmhlaWdodCgpOwogCkBAIC04MiwxNiArODIsMTYgQEAgdm9pZCBQcmludENv
bnRleHQ6OmNvbXB1dGVQYWdlUmVjdHMoY29ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUludGVybmFsKEZsb2F0U2l6ZShwYWdlV2lk
dGggLyB1c2VyU2NhbGVGYWN0b3IsIHBhZ2VIZWlnaHQgLyB1c2VyU2NhbGVGYWN0b3IpLCBhbGxv
d0hvcml6b250YWxUaWxpbmcpOworICAgIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRl
cm5hbChHcmFwaGljc1NpemUocGFnZVdpZHRoIC8gdXNlclNjYWxlRmFjdG9yLCBwYWdlSGVpZ2h0
IC8gdXNlclNjYWxlRmFjdG9yKSwgYWxsb3dIb3Jpem9udGFsVGlsaW5nKTsKIH0KIAotdm9pZCBQ
cmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoY29uc3QgRmxvYXRTaXpl
JiBwYWdlU2l6ZUluUGl4ZWxzLCBib29sIGFsbG93SG9yaXpvbnRhbFRpbGluZykKK3ZvaWQgUHJp
bnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKGNvbnN0IEdyYXBoaWNzU2l6
ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxvd0hvcml6b250YWxUaWxpbmcpCiB7CiAgICAg
bV9wYWdlUmVjdHMuY2xlYXIoKTsKICAgICBjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplSW50
ZXJuYWwocGFnZVNpemVJblBpeGVscywgYWxsb3dIb3Jpem9udGFsVGlsaW5nKTsKIH0KIAotdm9p
ZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbChjb25z
dCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wgYWxsb3dJbmxpbmVEaXJlY3Rpb25U
aWxpbmcpCit2b2lkIFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUlu
dGVybmFsKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxvd0lu
bGluZURpcmVjdGlvblRpbGluZykKIHsKICAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCkgfHwg
IW1fZnJhbWUtPnZpZXcoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTY1LDEzICsxNjUsMTMgQEAgdm9pZCBQcmludENvbnRleHQ6OmJl
Z2luKGZsb2F0IHdpZHRoLCBmbAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcyB0byBhZGp1c3QgcHJpbnRpbmcgcGFyYW1ldGVycyB3aXRob3V0IGdvaW5n
IGJhY2sgdG8gc2NyZWVuIG1vZGUuCiAgICAgbV9pc1ByaW50aW5nID0gdHJ1ZTsKIAotICAgIEZs
b2F0U2l6ZSBtaW5MYXlvdXRTaXplID0gbV9mcmFtZS0+cmVzaXplUGFnZVJlY3RzS2VlcGluZ1Jh
dGlvKEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgRmxvYXRTaXplKHdpZHRoICogcHJpbnRpbmdN
aW5pbXVtU2hyaW5rRmFjdG9yLCBoZWlnaHQgKiBwcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3Ip
KTsKKyAgICBHcmFwaGljc1NpemUgbWluTGF5b3V0U2l6ZSA9IG1fZnJhbWUtPnJlc2l6ZVBhZ2VS
ZWN0c0tlZXBpbmdSYXRpbyhHcmFwaGljc1NpemUod2lkdGgsIGhlaWdodCksIEdyYXBoaWNzU2l6
ZSh3aWR0aCAqIHByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciwgaGVpZ2h0ICogcHJpbnRpbmdN
aW5pbXVtU2hyaW5rRmFjdG9yKSk7CiAKICAgICAvLyBUaGlzIGNoYW5nZXMgbGF5b3V0LCBzbyBj
YWxsZXJzIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBkb24ndCBwYWludCB0byBzY3JlZW4g
d2hpbGUgaW4gcHJpbnRpbmcgbW9kZS4KICAgICBtX2ZyYW1lLT5zZXRQcmludGluZyh0cnVlLCBt
aW5MYXlvdXRTaXplLCBwcmludGluZ01heGltdW1TaHJpbmtGYWN0b3IgLyBwcmludGluZ01pbmlt
dW1TaHJpbmtGYWN0b3IsIEFkanVzdFZpZXdTaXplKTsKIH0KIAotZmxvYXQgUHJpbnRDb250ZXh0
Ojpjb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3IoY29uc3QgRmxvYXRTaXplJiBhdmFpbGFibGVQ
YXBlclNpemUpCitmbG9hdCBQcmludENvbnRleHQ6OmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3Rv
cihjb25zdCBHcmFwaGljc1NpemUmIGF2YWlsYWJsZVBhcGVyU2l6ZSkKIHsKICAgICBpZiAoIW1f
ZnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIDE7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBQcmludENvbnRleHQ6OnNwb29sUGFnZShHcmFwaGljc0NvbgogICAgIGZsb2F0IHNjYWxlID0g
d2lkdGggLyBwYWdlUmVjdC53aWR0aCgpOwogCiAgICAgY3R4LnNhdmUoKTsKLSAgICBjdHguc2Nh
bGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOworICAgIGN0eC5zY2FsZShHcmFwaGljc1NpemUo
c2NhbGUsIHNjYWxlKSk7CiAgICAgY3R4LnRyYW5zbGF0ZSgtcGFnZVJlY3QueCgpLCAtcGFnZVJl
Y3QueSgpKTsKICAgICBjdHguY2xpcChwYWdlUmVjdCk7CiAgICAgbV9mcmFtZS0+dmlldygpLT5w
YWludENvbnRlbnRzKCZjdHgsIHBhZ2VSZWN0KTsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFBy
aW50Q29udGV4dDo6ZW5kKCkKIHsKICAgICBBU1NFUlQobV9pc1ByaW50aW5nKTsKICAgICBtX2lz
UHJpbnRpbmcgPSBmYWxzZTsKLSAgICBtX2ZyYW1lLT5zZXRQcmludGluZyhmYWxzZSwgRmxvYXRT
aXplKCksIDAsIEFkanVzdFZpZXdTaXplKTsKKyAgICBtX2ZyYW1lLT5zZXRQcmludGluZyhmYWxz
ZSwgR3JhcGhpY3NTaXplKCksIDAsIEFkanVzdFZpZXdTaXplKTsKIH0KIAogc3RhdGljIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBlbmNsb3NpbmdCb3hNb2RlbE9iamVjdChSZW5kZXJPYmplY3QqIG9i
amVjdCkKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgUmVuZGVyQm94TW9kZWxPYmplY3QqIGVu
Y2xvc2luZ0JvCiAgICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3Qob2JqZWN0KTsKIH0K
IAotaW50IFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKQoraW50IFByaW50Q29udGV4dDo6
cGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgR3JhcGhpY3NTaXpl
JiBwYWdlU2l6ZUluUGl4ZWxzKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyBu
b3QgZnJlZWQgZHVyaW5nIHRoZSBsYXlvdXQuCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnRS
ZWYoZWxlbWVudCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgaW50IFByaW50Q29udGV4dDo6cGFnZU51
bWJlckZvckVsZW1lbnQoRQogICAgIEZsb2F0UmVjdCBwYWdlUmVjdChGbG9hdFBvaW50KDAsIDAp
LCBwYWdlU2l6ZUluUGl4ZWxzKTsKICAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1l
KTsKICAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qud2lkdGgoKSwgcGFnZVJlY3QuaGVp
Z2h0KCkpOwotICAgIEZsb2F0U2l6ZSBzY2FsZWRQYWdlU2l6ZSA9IHBhZ2VTaXplSW5QaXhlbHM7
CisgICAgR3JhcGhpY3NTaXplIHNjYWxlZFBhZ2VTaXplID0gcGFnZVNpemVJblBpeGVsczsKICAg
ICBzY2FsZWRQYWdlU2l6ZS5zY2FsZShmcmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKS53aWR0
aCgpIC8gcGFnZVJlY3Qud2lkdGgoKSk7CiAgICAgcHJpbnRDb250ZXh0LmNvbXB1dGVQYWdlUmVj
dHNXaXRoUGFnZVNpemUoc2NhbGVkUGFnZVNpemUsIGZhbHNlKTsKIApAQCAtMjk5LDcgKzI5OSw3
IEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VTaXplQW5kTWFyZ2luc0kKICAgICAgICAgICAg
U3RyaW5nOjpudW1iZXIobWFyZ2luVG9wKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1hcmdpblJp
Z2h0KSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1hcmdpbkJvdHRvbSkgKyAnICcgKyBTdHJpbmc6
Om51bWJlcihtYXJnaW5MZWZ0KTsKIH0KIAotaW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdl
cyhGcmFtZSogZnJhbWUsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKK2ludCBQ
cmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoRnJhbWUqIGZyYW1lLCBjb25zdCBHcmFwaGljc1Np
emUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7CiAgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dCgpOwogCkBAIC0zMDcsMTMgKzMwNywxMyBAQCBpbnQgUHJpbnRDb250ZXh0OjpudW1iZXJP
ZlBhZ2VzKEZyYW1lKiBmCiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFtZSk7CiAg
ICAgcHJpbnRDb250ZXh0LmJlZ2luKHBhZ2VSZWN0LndpZHRoKCksIHBhZ2VSZWN0LmhlaWdodCgp
KTsKICAgICAvLyBBY2NvdW50IGZvciBzaHJpbmstdG8tZml0LgotICAgIEZsb2F0U2l6ZSBzY2Fs
ZWRQYWdlU2l6ZSA9IHBhZ2VTaXplSW5QaXhlbHM7CisgICAgR3JhcGhpY3NTaXplIHNjYWxlZFBh
Z2VTaXplID0gcGFnZVNpemVJblBpeGVsczsKICAgICBzY2FsZWRQYWdlU2l6ZS5zY2FsZShmcmFt
ZS0+dmlldygpLT5jb250ZW50c1NpemUoKS53aWR0aCgpIC8gcGFnZVJlY3Qud2lkdGgoKSk7CiAg
ICAgcHJpbnRDb250ZXh0LmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoc2NhbGVkUGFnZVNp
emUsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpbnRDb250ZXh0LnBhZ2VDb3VudCgpOwogfQogCi12
b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1lKiBmcmFt
ZSwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgcGFn
ZVNpemVJblBpeGVscykKK3ZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5k
YXJpZXMoRnJhbWUqIGZyYW1lLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgR3JhcGhpY3NTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKQogewogICAgIGlmICghZnJhbWUtPmRv
Y3VtZW50KCkgfHwgIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJl
cigpKQogICAgICAgICByZXR1cm47CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBQcmludENvbnRl
eHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bgogCiAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsK
ICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIHRvdGFsSGVpZ2h0KTsKLSAgICBncmFw
aGljc0NvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LnNjYWxlKEdyYXBoaWNzU2l6ZSgxLCAtMSkpOwogCiAgICAgaW50IGN1cnJlbnRIZWlnaHQgPSAw
OwogICAgIGZvciAoc2l6ZV90IHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IHBhZ2VSZWN0cy5z
aXplKCk7IHBhZ2VJbmRleCsrKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgJ
KHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBGbG9hdFNp
emU7CitjbGFzcyBHcmFwaGljc1NpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJ
bnRSZWN0OwogCkBAIC00MywxOCArNDMsMTggQEAgcHVibGljOgogICAgIC8vIEJyZWFrIHVwIGEg
cGFnZSBpbnRvIHJlY3RzIHdpdGhvdXQgcmVsYXlvdXQuCiAgICAgLy8gRklYTUU6IFRoaXMgbWVh
bnMgdGhhdCBDU1MgcGFnZSBicmVha3Mgd29uJ3QgYmUgb24gcGFnZSBib3VuZGFyeSBpZiB0aGUg
c2l6ZSBpcyBkaWZmZXJlbnQgdGhhbiB3aGF0IHdhcyBwYXNzZWQgdG8gYmVnaW4oKS4gVGhhdCdz
IHByb2JhYmx5IG5vdCBhbHdheXMgZGVzaXJhYmxlLgogICAgIC8vIEZJWE1FOiBIZWFkZXIgYW5k
IGZvb3RlciBoZWlnaHQgc2hvdWxkIGJlIGFwcGxpZWQgYmVmb3JlIGxheW91dCwgbm90IGFmdGVy
LgotICAgIC8vIEZJWE1FOiBUaGUgcHJpbnRSZWN0IGFyZ3VtZW50IGlzIG9ubHkgdXNlZCB0byBk
ZXRlcm1pbmUgcGFnZSBhc3BlY3QgcmF0aW8sIGl0IHdvdWxkIGJlIGJldHRlciB0byBwYXNzIGEg
RmxvYXRTaXplIHdpdGggcGFnZSBkaW1lbnNpb25zIGluc3RlYWQuCisgICAgLy8gRklYTUU6IFRo
ZSBwcmludFJlY3QgYXJndW1lbnQgaXMgb25seSB1c2VkIHRvIGRldGVybWluZSBwYWdlIGFzcGVj
dCByYXRpbywgaXQgd291bGQgYmUgYmV0dGVyIHRvIHBhc3MgYSBHcmFwaGljc1NpemUgd2l0aCBw
YWdlIGRpbWVuc2lvbnMgaW5zdGVhZC4KICAgICB2b2lkIGNvbXB1dGVQYWdlUmVjdHMoY29uc3Qg
RmxvYXRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVp
Z2h0LCBmbG9hdCB1c2VyU2NhbGVGYWN0b3IsIGZsb2F0JiBvdXRQYWdlSGVpZ2h0LCBib29sIGFs
bG93SG9yaXpvbnRhbFRpbGluZyA9IGZhbHNlKTsKIAogICAgIC8vIERlcHJlY2F0ZWQuIFBhZ2Ug
c2l6ZSBjb21wdXRhdGlvbiBpcyBhbHJlYWR5IGluIHRoaXMgY2xhc3MsIGNsaWVudHMgc2hvdWxk
bid0IGJlIGNvcHlpbmcgaXQuCi0gICAgdm9pZCBjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXpl
KGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxvd0hvcml6b250YWxU
aWxpbmcpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShjb25zdCBHcmFw
aGljc1NpemUmIHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wgYWxsb3dIb3Jpem9udGFsVGlsaW5nKTsK
IAogICAgIC8vIFRoZXNlIGFyZSBvbmx5IHZhbGlkIGFmdGVyIHBhZ2UgcmVjdHMgYXJlIGNvbXB1
dGVkLgogICAgIHNpemVfdCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VSZWN0cy5z
aXplKCk7IH0KICAgICBjb25zdCBJbnRSZWN0JiBwYWdlUmVjdChzaXplX3QgcGFnZU51bWJlcikg
Y29uc3QgeyByZXR1cm4gbV9wYWdlUmVjdHNbcGFnZU51bWJlcl07IH0KICAgICBjb25zdCBWZWN0
b3I8SW50UmVjdD4mIHBhZ2VSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJlY3RzOyB9CiAK
LSAgICBmbG9hdCBjb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3IoY29uc3QgRmxvYXRTaXplJiBh
dmFpbGFibGVQYXBlclNpemUpOworICAgIGZsb2F0IGNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3Rv
cihjb25zdCBHcmFwaGljc1NpemUmIGF2YWlsYWJsZVBhcGVyU2l6ZSk7CiAKICAgICAvLyBFbnRl
ciBwcmludCBtb2RlLCB1cGRhdGluZyBsYXlvdXQgZm9yIG5ldyBwYWdlIHNpemUuCiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGFwcGx5IG5ldyBw
cmludCBvcHRpb25zIHdpdGhvdXQgZ29pbmcgYmFjayB0byBzY3JlZW4gbW9kZS4KQEAgLTY5LDIy
ICs2OSwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmQoKTsKIAogICAgIC8vIFVzZWQgYnkgbGF5
b3V0IHRlc3RzLgotICAgIHN0YXRpYyBpbnQgcGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCos
IGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7IC8vIFJldHVybnMgLTEgaWYgcGFn
ZSBpc24ndCBmb3VuZC4KKyAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1l
bnQqLCBjb25zdCBHcmFwaGljc1NpemUmIHBhZ2VTaXplSW5QaXhlbHMpOyAvLyBSZXR1cm5zIC0x
IGlmIHBhZ2UgaXNuJ3QgZm91bmQuCiAgICAgc3RhdGljIFN0cmluZyBwYWdlUHJvcGVydHkoRnJh
bWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKICAg
ICBzdGF0aWMgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1i
ZXIpOwogICAgIHN0YXRpYyBTdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoRnJhbWUq
IGZyYW1lLCBpbnQgcGFnZU51bWJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFyZ2lu
VG9wLCBpbnQgbWFyZ2luUmlnaHQsIGludCBtYXJnaW5Cb3R0b20sIGludCBtYXJnaW5MZWZ0KTsK
LSAgICBzdGF0aWMgaW50IG51bWJlck9mUGFnZXMoRnJhbWUqLCBjb25zdCBGbG9hdFNpemUmIHBh
Z2VTaXplSW5QaXhlbHMpOworICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhGcmFtZSosIGNv
bnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNpemVJblBpeGVscyk7CiAgICAgLy8gRHJhdyBhbGwgcGFn
ZXMgaW50byBhIGdyYXBoaWNzIGNvbnRleHQgd2l0aCBsaW5lcyB3aGljaCBtZWFuIHBhZ2UgYm91
bmRhcmllcy4KICAgICAvLyBUaGUgaGVpZ2h0IG9mIHRoZSBncmFwaGljcyBjb250ZXh0IHNob3Vs
ZCBiZQogICAgIC8vIChwYWdlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICsgMSkgKiBudW1iZXItb2Yt
cGFnZXMgLSAxCi0gICAgc3RhdGljIHZvaWQgc3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZy
YW1lKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxz
KTsKKyAgICBzdGF0aWMgdm9pZCBzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoRnJhbWUqLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBHcmFwaGljc1NpemUmIHBhZ2VTaXplSW5QaXhlbHMpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVmVjdG9yPEludFJlY3Q+IG1f
cGFnZVJlY3RzOwogCiBwcml2YXRlOgotICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdl
U2l6ZUludGVybmFsKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxv
d0hvcml6b250YWxUaWxpbmcpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6
ZUludGVybmFsKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxv
d0hvcml6b250YWxUaWxpbmcpOwogCiAgICAgLy8gVXNlZCB0byBwcmV2ZW50IG1pc3VzZXMgb2Yg
YmVnaW4oKSBhbmQgZW5kKCkgKGUuZy4sIGNhbGwgZW5kIHdpdGhvdXQgYmVnaW4pLgogICAgIGJv
b2wgbV9pc1ByaW50aW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3Bw
CShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJ
bWFnZVRvTWF4U2l6ZShEcmFnSQogICAgIH0KICAgICAKICAgICBpZiAoc3JjU2l6ZSA9PSBvcmln
aW5hbFNpemUpCi0gICAgICAgIHJldHVybiByZXNpemVSYXRpbyA+IDAuMGYgPyBzY2FsZURyYWdJ
bWFnZShpbWFnZSwgRmxvYXRTaXplKHJlc2l6ZVJhdGlvLCByZXNpemVSYXRpbykpIDogaW1hZ2U7
CisgICAgICAgIHJldHVybiByZXNpemVSYXRpbyA+IDAuMGYgPyBzY2FsZURyYWdJbWFnZShpbWFn
ZSwgR3JhcGhpY3NTaXplKHJlc2l6ZVJhdGlvLCByZXNpemVSYXRpbykpIDogaW1hZ2U7CiAgICAg
CiAgICAgLy8gVGhlIGltYWdlIHdhcyBzY2FsZWQgaW4gdGhlIHdlYnBhZ2Ugc28gYXQgbWluaW11
bSB3ZSBtdXN0IGFjY291bnQgZm9yIHRoYXQgc2NhbGluZwogICAgIGZsb2F0IHNjYWxleCA9IHNy
Y1NpemUud2lkdGgoKSAvIChmbG9hdClvcmlnaW5hbFNpemUud2lkdGgoKTsKQEAgLTYyLDcgKzYy
LDcgQEAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSQogICAgICAgICBz
Y2FsZXkgKj0gcmVzaXplUmF0aW87CiAgICAgfQogICAgIAotICAgIHJldHVybiBzY2FsZURyYWdJ
bWFnZShpbWFnZSwgRmxvYXRTaXplKHNjYWxleCwgc2NhbGV5KSk7CisgICAgcmV0dXJuIHNjYWxl
RHJhZ0ltYWdlKGltYWdlLCBHcmFwaGljc1NpemUoc2NhbGV4LCBzY2FsZXkpKTsKIH0KICAgICAK
IERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgJKHJldmlzaW9uIDkxMjAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDggQEAKICNpZm5kZWYgRHJhZ0ltYWdlX2gKICNkZWZpbmUgRHJhZ0ltYWdlX2gKIAor
I2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy90aGV5IHNo
b3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gIEFzIGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhv
ZHMgZG9uJ3QgZ3VhcmFudGVlCiAgICAgLy90aGUgaW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwg
YmUgdmFsaWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY2FsbGVkCiAgICAgRHJhZ0ltYWdlUmVmIGZp
dERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNy
Y1NpemUsIGNvbnN0IEludFNpemUmIHNpemUpOwotICAgIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJ
bWFnZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSk7CisgICAgRHJhZ0ltYWdlUmVmIHNj
YWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiwgR3JhcGhpY3NTaXplIHNjYWxlKTsKICAgICBEcmFn
SW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwg
ZmxvYXQgZGVsdGEpOwogICAgIAogICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UoSW1hZ2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
V2hlZWxFdmVudC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIGNs
YXNzIEJNZXNzYWdlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRmxvYXRQb2lu
dDsKLSAgICBjbGFzcyBGbG9hdFNpemU7CisgICAgY2xhc3MgR3JhcGhpY3NTaXplOwogCiAgICAg
Ly8gV2hlZWwgZXZlbnRzIGNvbWUgaW4gdHdvIGZsYXZvcnM6CiAgICAgLy8gVGhlIFNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50IGlzIGEgZmluZS1ncmFpbmVkIGV2ZW50IHRoYXQgc3BlY2lmaWVzIHRo
ZSBwcmVjaXNlIG51bWJlciBvZiBwaXhlbHMgdG8gc2Nyb2xsLiAgSXQgaXMgc2VudCBkaXJlY3Rs
eSBieSBNYWNCb29rIHRvdWNocGFkcyBvbiBPUyBYLApAQCAtMTg5LDcgKzE4OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUGxhdGZvcm1XaGVl
bEV2ZW50KEhXTkQsIFdQQVJBTSwgTFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwotICAgICAg
ICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwgY29uc3QgRmxvYXRTaXplJiBkZWx0YSwgY29uc3Qg
RmxvYXRQb2ludCYgbG9jYXRpb24pOworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwg
Y29uc3QgR3JhcGhpY3NTaXplJiBkZWx0YSwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24pOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShXWCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuZHJvaWQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAJKHJldmlzaW9uIDkx
MjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9UZW1wb3JhcnlMaW5rU3R1
YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgY29uc3QgQ3Vyc29yJiBu
b3RBbGxvd2VkQ3Vyc29yKCkKICAgICByZXR1cm4gZHVtbXlDdXJzb3I7CiB9CiAKLXZvaWQqIHNj
YWxlRHJhZ0ltYWdlKHZvaWQqLCBGbG9hdFNpemUpCit2b2lkKiBzY2FsZURyYWdJbWFnZSh2b2lk
KiwgR3JhcGhpY3NTaXplKQogewogICAgIHJldHVybiAwOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAkocmV2aXNpb24gOTEyMDApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYgRmxvYXRQb2ludF9oCiAjZGVmaW5lIEZs
b2F0UG9pbnRfaAogCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NT
aXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgogCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgbV94ICs9IGEud2lkdGgoKTsK
ICAgICAgICAgbV95ICs9IGEuaGVpZ2h0KCk7CiAgICAgfQotICAgIHZvaWQgbW92ZShjb25zdCBG
bG9hdFNpemUmIGEpCisgICAgdm9pZCBtb3ZlKGNvbnN0IEdyYXBoaWNzU2l6ZSYgYSkKICAgICB7
CiAgICAgICAgIG1feCArPSBhLndpZHRoKCk7CiAgICAgICAgIG1feSArPSBhLmhlaWdodCgpOwpA
QCAtMTc0LDcgKzE3NCw3IEBAIHByaXZhdGU6CiB9OwogCiAKLWlubGluZSBGbG9hdFBvaW50JiBv
cGVyYXRvcis9KEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKK2lubGluZSBGbG9h
dFBvaW50JiBvcGVyYXRvcis9KEZsb2F0UG9pbnQmIGEsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgYikK
IHsKICAgICBhLm1vdmUoYi53aWR0aCgpLCBiLmhlaWdodCgpKTsKICAgICByZXR1cm4gYTsKQEAg
LTE4NiwxMyArMTg2LDEzIEBAIGlubGluZSBGbG9hdFBvaW50JiBvcGVyYXRvcis9KEZsb2F0UG9p
bnQKICAgICByZXR1cm4gYTsKIH0KIAotaW5saW5lIEZsb2F0UG9pbnQmIG9wZXJhdG9yLT0oRmxv
YXRQb2ludCYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQoraW5saW5lIEZsb2F0UG9pbnQmIG9wZXJh
dG9yLT0oRmxvYXRQb2ludCYgYSwgY29uc3QgR3JhcGhpY3NTaXplJiBiKQogewogICAgIGEubW92
ZSgtYi53aWR0aCgpLCAtYi5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBG
bG9hdFBvaW50IG9wZXJhdG9yKyhjb25zdCBGbG9hdFBvaW50JiBhLCBjb25zdCBGbG9hdFNpemUm
IGIpCitpbmxpbmUgRmxvYXRQb2ludCBvcGVyYXRvcisoY29uc3QgRmxvYXRQb2ludCYgYSwgY29u
c3QgR3JhcGhpY3NTaXplJiBiKQogewogICAgIHJldHVybiBGbG9hdFBvaW50KGEueCgpICsgYi53
aWR0aCgpLCBhLnkoKSArIGIuaGVpZ2h0KCkpOwogfQpAQCAtMjAyLDEyICsyMDIsMTIgQEAgaW5s
aW5lIEZsb2F0UG9pbnQgb3BlcmF0b3IrKGNvbnN0IEZsb2F0UAogICAgIHJldHVybiBGbG9hdFBv
aW50KGEueCgpICsgYi54KCksIGEueSgpICsgYi55KCkpOwogfQogCi1pbmxpbmUgRmxvYXRTaXpl
IG9wZXJhdG9yLShjb25zdCBGbG9hdFBvaW50JiBhLCBjb25zdCBGbG9hdFBvaW50JiBiKQoraW5s
aW5lIEdyYXBoaWNzU2l6ZSBvcGVyYXRvci0oY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxv
YXRQb2ludCYgYikKIHsKLSAgICByZXR1cm4gRmxvYXRTaXplKGEueCgpIC0gYi54KCksIGEueSgp
IC0gYi55KCkpOworICAgIHJldHVybiBHcmFwaGljc1NpemUoYS54KCkgLSBiLngoKSwgYS55KCkg
LSBiLnkoKSk7CiB9CiAKLWlubGluZSBGbG9hdFBvaW50IG9wZXJhdG9yLShjb25zdCBGbG9hdFBv
aW50JiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCitpbmxpbmUgRmxvYXRQb2ludCBvcGVyYXRvci0o
Y29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgR3JhcGhpY3NTaXplJiBiKQogewogICAgIHJldHVy
biBGbG9hdFBvaW50KGEueCgpIC0gYi53aWR0aCgpLCBhLnkoKSAtIGIuaGVpZ2h0KCkpOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3Bw
CShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UXVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGlubGlu
ZSBmbG9hdCBtYXg0KGZsb2F0IGEsIGZsb2F0IAogICAgIHJldHVybiBtYXgobWF4KGEsIGIpLCBt
YXgoYywgZCkpOwogfQogCi1pbmxpbmUgZmxvYXQgZG90KGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29u
c3QgRmxvYXRTaXplJiBiKQoraW5saW5lIGZsb2F0IGRvdChjb25zdCBHcmFwaGljc1NpemUmIGEs
IGNvbnN0IEdyYXBoaWNzU2l6ZSYgYikKIHsKICAgICByZXR1cm4gYS53aWR0aCgpICogYi53aWR0
aCgpICsgYS5oZWlnaHQoKSAqIGIuaGVpZ2h0KCk7CiB9CkBAIC01NCw5ICs1NCw5IEBAIGlubGlu
ZSBmbG9hdCBkb3QoY29uc3QgRmxvYXRTaXplJiBhLCBjb24KIGlubGluZSBib29sIGlzUG9pbnRJ
blRyaWFuZ2xlKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0IEZsb2F0UG9pbnQmIHQxLCBjb25z
dCBGbG9hdFBvaW50JiB0MiwgY29uc3QgRmxvYXRQb2ludCYgdDMpCiB7CiAgICAgLy8gQ29tcHV0
ZSB2ZWN0b3JzICAgICAgICAKLSAgICBGbG9hdFNpemUgdjAgPSB0MyAtIHQxOwotICAgIEZsb2F0
U2l6ZSB2MSA9IHQyIC0gdDE7Ci0gICAgRmxvYXRTaXplIHYyID0gcCAtIHQxOworICAgIEdyYXBo
aWNzU2l6ZSB2MCA9IHQzIC0gdDE7CisgICAgR3JhcGhpY3NTaXplIHYxID0gdDIgLSB0MTsKKyAg
ICBHcmFwaGljc1NpemUgdjIgPSBwIC0gdDE7CiAgICAgCiAgICAgLy8gQ29tcHV0ZSBkb3QgcHJv
ZHVjdHMKICAgICBmbG9hdCBkb3QwMCA9IGRvdCh2MCwgdjApOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmgJKHJldmlzaW9uIDkxMjAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZW5jbG9zaW5nSW50
UmVjdChib3VuZGluZ0JveCgpKTsKICAgICB9CiAKLSAgICB2b2lkIG1vdmUoY29uc3QgRmxvYXRT
aXplJiBvZmZzZXQpCisgICAgdm9pZCBtb3ZlKGNvbnN0IEdyYXBoaWNzU2l6ZSYgb2Zmc2V0KQog
ICAgIHsKICAgICAgICAgbV9wMSArPSBvZmZzZXQ7CiAgICAgICAgIG1fcDIgKz0gb2Zmc2V0OwpA
QCAtMTI1LDEzICsxMjUsMTMgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fcDQ7CiB9Owog
Ci1pbmxpbmUgRmxvYXRRdWFkJiBvcGVyYXRvcis9KEZsb2F0UXVhZCYgYSwgY29uc3QgRmxvYXRT
aXplJiBiKQoraW5saW5lIEZsb2F0UXVhZCYgb3BlcmF0b3IrPShGbG9hdFF1YWQmIGEsIGNvbnN0
IEdyYXBoaWNzU2l6ZSYgYikKIHsKICAgICBhLm1vdmUoYik7CiAgICAgcmV0dXJuIGE7CiB9CiAK
LWlubGluZSBGbG9hdFF1YWQmIG9wZXJhdG9yLT0oRmxvYXRRdWFkJiBhLCBjb25zdCBGbG9hdFNp
emUmIGIpCitpbmxpbmUgRmxvYXRRdWFkJiBvcGVyYXRvci09KEZsb2F0UXVhZCYgYSwgY29uc3Qg
R3JhcGhpY3NTaXplJiBiKQogewogICAgIGEubW92ZSgtYi53aWR0aCgpLCAtYi5oZWlnaHQoKSk7
CiAgICAgcmV0dXJuIGE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJlY3QuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFJlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTkgKzc1LDE5IEBA
IGNsYXNzIEludFBvaW50OwogY2xhc3MgRmxvYXRSZWN0IHsKIHB1YmxpYzoKICAgICBGbG9hdFJl
Y3QoKSB7IH0KLSAgICBGbG9hdFJlY3QoY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24sIGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICBGbG9hdFJlY3QoY29uc3QgRmxvYXRQb2ludCYgbG9jYXRp
b24sIGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkKICAgICAgICAgOiBtX2xvY2F0aW9uKGxvY2F0
aW9uKSwgbV9zaXplKHNpemUpIHsgfQogICAgIEZsb2F0UmVjdChmbG9hdCB4LCBmbG9hdCB5LCBm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQotICAgICAgICA6IG1fbG9jYXRpb24oRmxvYXRQb2lu
dCh4LCB5KSksIG1fc2l6ZShGbG9hdFNpemUod2lkdGgsIGhlaWdodCkpIHsgfQorICAgICAgICA6
IG1fbG9jYXRpb24oRmxvYXRQb2ludCh4LCB5KSksIG1fc2l6ZShHcmFwaGljc1NpemUod2lkdGgs
IGhlaWdodCkpIHsgfQogICAgIEZsb2F0UmVjdChjb25zdCBJbnRSZWN0Jik7CiAKICAgICBzdGF0
aWMgRmxvYXRSZWN0IG5hcnJvd1ByZWNpc2lvbihkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB3
aWR0aCwgZG91YmxlIGhlaWdodCk7CiAKICAgICBGbG9hdFBvaW50IGxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhdGlvbjsgfQotICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CisgICAgR3JhcGhpY3NTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KIAogICAgIHZvaWQgc2V0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24p
IHsgbV9sb2NhdGlvbiA9IGxvY2F0aW9uOyB9Ci0gICAgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEdy
YXBoaWNzU2l6ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CiAKICAgICBmbG9hdCB4KCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhdGlvbi54KCk7IH0KICAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1
cm4gbV9sb2NhdGlvbi55KCk7IH0KQEAgLTEwNSwxMyArMTA1LDEzIEBAIHB1YmxpYzoKIAogICAg
IEZsb2F0UG9pbnQgY2VudGVyKCkgY29uc3QgeyByZXR1cm4gRmxvYXRQb2ludCh4KCkgKyB3aWR0
aCgpIC8gMiwgeSgpICsgaGVpZ2h0KCkgLyAyKTsgfQogCi0gICAgdm9pZCBtb3ZlKGNvbnN0IEZs
b2F0U2l6ZSYgZGVsdGEpIHsgbV9sb2NhdGlvbiArPSBkZWx0YTsgfSAKKyAgICB2b2lkIG1vdmUo
Y29uc3QgR3JhcGhpY3NTaXplJiBkZWx0YSkgeyBtX2xvY2F0aW9uICs9IGRlbHRhOyB9IAogICAg
IHZvaWQgbW92ZUJ5KGNvbnN0IEZsb2F0UG9pbnQmIGRlbHRhKSB7IG1fbG9jYXRpb24ubW92ZShk
ZWx0YS54KCksIGRlbHRhLnkoKSk7IH0KICAgICB2b2lkIG1vdmUoZmxvYXQgZHgsIGZsb2F0IGR5
KSB7IG1fbG9jYXRpb24ubW92ZShkeCwgZHkpOyB9CiAKLSAgICB2b2lkIGV4cGFuZChjb25zdCBG
bG9hdFNpemUmIHNpemUpIHsgbV9zaXplICs9IHNpemU7IH0KKyAgICB2b2lkIGV4cGFuZChjb25z
dCBHcmFwaGljc1NpemUmIHNpemUpIHsgbV9zaXplICs9IHNpemU7IH0KICAgICB2b2lkIGV4cGFu
ZChmbG9hdCBkdywgZmxvYXQgZGgpIHsgbV9zaXplLmV4cGFuZChkdywgZGgpOyB9Ci0gICAgdm9p
ZCBjb250cmFjdChjb25zdCBGbG9hdFNpemUmIHNpemUpIHsgbV9zaXplIC09IHNpemU7IH0KKyAg
ICB2b2lkIGNvbnRyYWN0KGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkgeyBtX3NpemUgLT0gc2l6
ZTsgfQogICAgIHZvaWQgY29udHJhY3QoZmxvYXQgZHcsIGZsb2F0IGRoKSB7IG1fc2l6ZS5leHBh
bmQoLWR3LCAtZGgpOyB9CiAKICAgICB2b2lkIHNoaWZ0WEVkZ2VUbyhmbG9hdCBlZGdlKQpAQCAt
MjE3LDcgKzIxNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fbG9j
YXRpb247Ci0gICAgRmxvYXRTaXplIG1fc2l6ZTsKKyAgICBHcmFwaGljc1NpemUgbV9zaXplOwog
CiAgICAgdm9pZCBzZXRMb2NhdGlvbkFuZFNpemVGcm9tRWRnZXMoZmxvYXQgbGVmdCwgZmxvYXQg
dG9wLCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcAkocmV2aXNpb24gOTEyMDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDUgTm9raWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCi0KLSNpbmNsdWRlICJGbG9hdENv
bnZlcnNpb24uaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSA8bWF0aC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZsb2F0U2l6ZTo6RmxvYXRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpIDogbV93aWR0aChzaXplLndpZHRoKCkpLCBtX2hlaWdodChzaXplLmhlaWdodCgpKQot
ewotfQotCi1mbG9hdCBGbG9hdFNpemU6OmRpYWdvbmFsTGVuZ3RoKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gc3FydGYoZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkpOwotfQotCi1GbG9hdFNpemUgRmxv
YXRTaXplOjpuYXJyb3dQcmVjaXNpb24oZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0KQotewot
ICAgIHJldHVybiBGbG9hdFNpemUobmFycm93UHJlY2lzaW9uVG9GbG9hdCh3aWR0aCksIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQoaGVpZ2h0KSk7Ci19Ci0KLX0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDE3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA1IE5va2lhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICAgICAgICAgICAgICAgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRmxvYXRTaXplX2gK
LSNkZWZpbmUgRmxvYXRTaXplX2gKLQotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSA8
d3RmL01hdGhFeHRyYXMuaD4KLQotI2lmIFVTRShDRykgfHwgKFBMQVRGT1JNKFdYKSAmJiBPUyhE
QVJXSU4pKSB8fCBVU0UoU0tJQV9PTl9NQUNfQ0hST01JVU0pCi10eXBlZGVmIHN0cnVjdCBDR1Np
emUgQ0dTaXplOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9STShDSFJP
TUlVTSkgJiYgT1MoREFSV0lOKSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRLSVQpKQotI2lm
ZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCi10eXBlZGVmIHN0
cnVjdCBDR1NpemUgTlNTaXplOwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IF9OU1NpemUgTlNTaXpl
OwotI2VuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnRTaXpl
OwotCi1jbGFzcyBGbG9hdFNpemUgewotcHVibGljOgotICAgIEZsb2F0U2l6ZSgpIDogbV93aWR0
aCgwKSwgbV9oZWlnaHQoMCkgeyB9Ci0gICAgRmxvYXRTaXplKGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQpIDogbV93aWR0aCh3aWR0aCksIG1faGVpZ2h0KGhlaWdodCkgeyB9Ci0gICAgRmxvYXRT
aXplKGNvbnN0IEludFNpemUmKTsKLQotICAgIHN0YXRpYyBGbG9hdFNpemUgbmFycm93UHJlY2lz
aW9uKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7Ci0KLSAgICBmbG9hdCB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLSAgICBmbG9hdCBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX2hlaWdodDsgfQotCi0gICAgdm9pZCBzZXRXaWR0aChmbG9hdCB3aWR0aCkgeyBtX3dpZHRo
ID0gd2lkdGg7IH0KLSAgICB2b2lkIHNldEhlaWdodChmbG9hdCBoZWlnaHQpIHsgbV9oZWlnaHQg
PSBoZWlnaHQ7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGgg
PD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9Ci0KLSAgICBmbG9hdCBhc3BlY3RSYXRpbygpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGggLyBtX2hlaWdodDsgfQotCi0gICAgdm9pZCBleHBhbmQoZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCkKLSAgICB7Ci0gICAgICAgIG1fd2lkdGggKz0gd2lkdGg7Ci0g
ICAgICAgIG1faGVpZ2h0ICs9IGhlaWdodDsKLSAgICB9Ci0KLSAgICB2b2lkIHNjYWxlKGZsb2F0
IHMpIHsgc2NhbGUocywgcyk7IH0KLQotICAgIHZvaWQgc2NhbGUoZmxvYXQgc2NhbGVYLCBmbG9h
dCBzY2FsZVkpCi0gICAgewotICAgICAgICBtX3dpZHRoICo9IHNjYWxlWDsKLSAgICAgICAgbV9o
ZWlnaHQgKj0gc2NhbGVZOwotICAgIH0KLQotICAgIEZsb2F0U2l6ZSBleHBhbmRlZFRvKGNvbnN0
IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gRmxvYXRTaXpl
KG1fd2lkdGggPiBvdGhlci5tX3dpZHRoID8gbV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCi0gICAg
ICAgICAgICBtX2hlaWdodCA+IG90aGVyLm1faGVpZ2h0ID8gbV9oZWlnaHQgOiBvdGhlci5tX2hl
aWdodCk7Ci0gICAgfQotCi0gICAgRmxvYXRTaXplIHNocnVua1RvKGNvbnN0IEZsb2F0U2l6ZSYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgIHJldHVybiBGbG9hdFNpemUobV93aWR0aCA8IG90
aGVyLm1fd2lkdGggPyBtX3dpZHRoIDogb3RoZXIubV93aWR0aCwKLSAgICAgICAgICAgbV9oZWln
aHQgPCBvdGhlci5tX2hlaWdodCA/IG1faGVpZ2h0IDogb3RoZXIubV9oZWlnaHQpOwotICAgIH0K
LQotICAgIGZsb2F0IGRpYWdvbmFsTGVuZ3RoKCkgY29uc3Q7Ci0gICAgZmxvYXQgZGlhZ29uYWxM
ZW5ndGhTcXVhcmVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3dpZHRoICogbV93
aWR0aCArIG1faGVpZ2h0ICogbV9oZWlnaHQ7Ci0gICAgfQotCi0gICAgRmxvYXRTaXplIHRyYW5z
cG9zZWRTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBGbG9hdFNpemUobV9oZWln
aHQsIG1fd2lkdGgpOwotICAgIH0KLQotI2lmIFVTRShDRykgfHwgKFBMQVRGT1JNKFdYKSAmJiBP
UyhEQVJXSU4pKSB8fCBVU0UoU0tJQV9PTl9NQUNfQ0hST01JVU0pCi0gICAgZXhwbGljaXQgRmxv
YXRTaXplKGNvbnN0IENHU2l6ZSYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2Ug
aXQncyBsb3NzeQotICAgIG9wZXJhdG9yIENHU2l6ZSgpIGNvbnN0OwotI2VuZGlmCi0KLSNpZiAo
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9N
RVRSWV9UWVBFUykpIFwKLSAgICAgICAgfHwgKFBMQVRGT1JNKENIUk9NSVVNKSAmJiBPUyhEQVJX
SU4pKSB8fCAoUExBVEZPUk0oUVQpICYmIFVTRShRVEtJVCkpCi0gICAgZXhwbGljaXQgRmxvYXRT
aXplKGNvbnN0IE5TU2l6ZSAmKTsgLy8gZG9uJ3QgZG8gdGhpcyBpbXBsaWNpdGx5IHNpbmNlIGl0
J3MgbG9zc3kKLSAgICBvcGVyYXRvciBOU1NpemUoKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRl
OgotICAgIGZsb2F0IG1fd2lkdGgsIG1faGVpZ2h0OwotfTsKLQotaW5saW5lIEZsb2F0U2l6ZSYg
b3BlcmF0b3IrPShGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKLXsKLSAgICBhLnNl
dFdpZHRoKGEud2lkdGgoKSArIGIud2lkdGgoKSk7Ci0gICAgYS5zZXRIZWlnaHQoYS5oZWlnaHQo
KSArIGIuaGVpZ2h0KCkpOwotICAgIHJldHVybiBhOwotfQotCi1pbmxpbmUgRmxvYXRTaXplJiBv
cGVyYXRvci09KEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQotewotICAgIGEuc2V0
V2lkdGgoYS53aWR0aCgpIC0gYi53aWR0aCgpKTsKLSAgICBhLnNldEhlaWdodChhLmhlaWdodCgp
IC0gYi5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIGE7Ci19Ci0KLWlubGluZSBGbG9hdFNpemUgb3Bl
cmF0b3IrKGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQotewotICAgIHJl
dHVybiBGbG9hdFNpemUoYS53aWR0aCgpICsgYi53aWR0aCgpLCBhLmhlaWdodCgpICsgYi5oZWln
aHQoKSk7Ci19Ci0KLWlubGluZSBGbG9hdFNpemUgb3BlcmF0b3ItKGNvbnN0IEZsb2F0U2l6ZSYg
YSwgY29uc3QgRmxvYXRTaXplJiBiKQotewotICAgIHJldHVybiBGbG9hdFNpemUoYS53aWR0aCgp
IC0gYi53aWR0aCgpLCBhLmhlaWdodCgpIC0gYi5oZWlnaHQoKSk7Ci19Ci0KLWlubGluZSBGbG9h
dFNpemUgb3BlcmF0b3ItKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICByZXR1cm4gRmxv
YXRTaXplKC1zaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKLX0KLQotaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKLXsKLSAg
ICByZXR1cm4gYS53aWR0aCgpID09IGIud2lkdGgoKSAmJiBhLmhlaWdodCgpID09IGIuaGVpZ2h0
KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgRmxvYXRTaXplJiBhLCBjb25z
dCBGbG9hdFNpemUmIGIpCi17Ci0gICAgcmV0dXJuIGEud2lkdGgoKSAhPSBiLndpZHRoKCkgfHwg
YS5oZWlnaHQoKSAhPSBiLmhlaWdodCgpOwotfQotCi1pbmxpbmUgSW50U2l6ZSByb3VuZGVkSW50
U2l6ZShjb25zdCBGbG9hdFNpemUmIHApCi17Ci0gICAgcmV0dXJuIEludFNpemUoc3RhdGljX2Nh
c3Q8aW50Pihyb3VuZGYocC53aWR0aCgpKSksIHN0YXRpY19jYXN0PGludD4ocm91bmRmKHAuaGVp
Z2h0KCkpKSk7Ci19Ci0KLWlubGluZSBJbnRTaXplIGV4cGFuZGVkSW50U2l6ZShjb25zdCBGbG9h
dFNpemUmIHApCi17Ci0gICAgcmV0dXJuIEludFNpemUoY2xhbXBUb0ludGVnZXIoY2VpbGYocC53
aWR0aCgpKSksIGNsYW1wVG9JbnRlZ2VyKGNlaWxmKHAuaGVpZ2h0KCkpKSk7Ci19Ci0KLWlubGlu
ZSBJbnRQb2ludCBmbG9vcmVkSW50UG9pbnQoY29uc3QgRmxvYXRTaXplJiBwKQotewotICAgIHJl
dHVybiBJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHAud2lkdGgoKSksIHN0YXRpY19jYXN0PGlu
dD4ocC5oZWlnaHQoKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBGbG9hdFNpemVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dEZhc3RQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250RmFzdFBhdGguY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
MCw3ICszODAsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaEJ1ZmZlcihHcmFwaGljc0NvbnRlCiB7
ICAgCiAgICAgLy8gRHJhdyBlYWNoIGNvbnRpZ3VvdXMgcnVuIG9mIGdseXBocyB0aGF0IHVzZSB0
aGUgc2FtZSBmb250IGRhdGEuCiAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhID0g
Z2x5cGhCdWZmZXIuZm9udERhdGFBdCgwKTsKLSAgICBGbG9hdFNpemUgb2Zmc2V0ID0gZ2x5cGhC
dWZmZXIub2Zmc2V0QXQoMCk7CisgICAgR3JhcGhpY3NTaXplIG9mZnNldCA9IGdseXBoQnVmZmVy
Lm9mZnNldEF0KDApOwogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChwb2ludCk7CiAgICAgZmxv
YXQgbmV4dFggPSBzdGFydFBvaW50LngoKTsKICAgICBpbnQgbGFzdEZyb20gPSAwOwpAQCAtMzkw
LDcgKzM5MCw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBoQnVmZmVyKEdyYXBoaWNzQ29udGUKICNl
bmRpZgogICAgIHdoaWxlIChuZXh0R2x5cGggPCBnbHlwaEJ1ZmZlci5zaXplKCkpIHsKICAgICAg
ICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG5leHRGb250RGF0YSA9IGdseXBoQnVmZmVyLmZvbnRE
YXRhQXQobmV4dEdseXBoKTsKLSAgICAgICAgRmxvYXRTaXplIG5leHRPZmZzZXQgPSBnbHlwaEJ1
ZmZlci5vZmZzZXRBdChuZXh0R2x5cGgpOworICAgICAgICBHcmFwaGljc1NpemUgbmV4dE9mZnNl
dCA9IGdseXBoQnVmZmVyLm9mZnNldEF0KG5leHRHbHlwaCk7CiAKICAgICAgICAgaWYgKG5leHRG
b250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0ICE9IG9mZnNldCkgewogI2lmIEVOQUJM
RShTVkdfRk9OVFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5l
cmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCB2b2lkIEdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
CiAgICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsKICAgICBjb250ZXh0LT50cmFuc2xhdGUoZHN0
UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBpZiAoZHN0UmVjdC5zaXplKCkgIT0gc3JjUmVj
dC5zaXplKCkpCi0gICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShkc3RSZWN0LndpZHRo
KCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgp
KSk7CisgICAgICAgIGNvbnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6ZShkc3RSZWN0LndpZHRoKCkg
LyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7
CiAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1zcmNSZWN0LngoKSwgLXNyY1JlY3QueSgpKTsKICAg
ICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX3NpemUpLCAqbV9n
ZW5lcmF0b3IuZ2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2x5cGhCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaEJ1ZmZlci5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDcgQEAKICNpZm5kZWYgR2x5cGhCdWZmZXJfaAogI2RlZmluZSBHbHlwaEJ1ZmZlcl9oCiAK
LSNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHcmFwaGljc1NpemUuaCIKICNpbmNs
dWRlICJHbHlwaC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWRlZiB3Y2hhcl90IEdseXBoQnVmZmVy
R2x5cGg7CiB0eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7CiAjZW5kaWYKIAotLy8gQ0cg
dXNlcyBDR1NpemUgaW5zdGVhZCBvZiBGbG9hdFNpemUgc28gdGhhdCB0aGUgcmVzdWx0IG9mIGFk
dmFuY2VzKCkKKy8vIENHIHVzZXMgQ0dTaXplIGluc3RlYWQgb2YgR3JhcGhpY3NTaXplIHNvIHRo
YXQgdGhlIHJlc3VsdCBvZiBhZHZhbmNlcygpCiAvLyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRv
IENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMgaW4gRm9udE1hYy5tbQogI2lmIFVTRShD
RykgfHwgKFBMQVRGT1JNKFdYKSAmJiBPUyhEQVJXSU4pKSB8fCBVU0UoU0tJQV9PTl9NQUNfQ0hS
T01JVU0pCiB0eXBlZGVmIENHU2l6ZSBHbHlwaEJ1ZmZlckFkdmFuY2U7CkBAIC02OSw3ICs2OSw3
IEBAIHR5cGVkZWYgQ0dTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsKIC8vIHNvIHdlIGNhbiBzYXZl
IG1lbW9yeSBzcGFjZSBvbiBlbWJlZGRlZCBkZXZpY2VzIGJ5IHN0b3Jpbmcgb25seSB0aGUgd2lk
dGgKIHR5cGVkZWYgZmxvYXQgR2x5cGhCdWZmZXJBZHZhbmNlOwogI2Vsc2UKLXR5cGVkZWYgRmxv
YXRTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsKK3R5cGVkZWYgR3JhcGhpY3NTaXplIEdseXBoQnVm
ZmVyQWR2YW5jZTsKICNlbmRpZgogCiBjbGFzcyBHbHlwaEJ1ZmZlciB7CkBAIC0xMDksNyArMTA5
LDcgQEAgcHVibGljOgogICAgICAgICBtX2FkdmFuY2VzW2luZGV4Ml0gPSBzOwogCiAjaWYgUExB
VEZPUk0oV0lOKQotICAgICAgICBGbG9hdFNpemUgb2Zmc2V0ID0gbV9vZmZzZXRzW2luZGV4MV07
CisgICAgICAgIEdyYXBoaWNzU2l6ZSBvZmZzZXQgPSBtX29mZnNldHNbaW5kZXgxXTsKICAgICAg
ICAgbV9vZmZzZXRzW2luZGV4MV0gPSBtX29mZnNldHNbaW5kZXgyXTsKICAgICAgICAgbV9vZmZz
ZXRzW2luZGV4Ml0gPSBvZmZzZXQ7CiAjZW5kaWYKQEAgLTEzNSwxNyArMTM1LDE3IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIH0KIAotICAgIEZsb2F0U2l6ZSBvZmZzZXRBdChpbnQgaW5kZXgpIGNv
bnN0CisgICAgR3JhcGhpY3NTaXplIG9mZnNldEF0KGludCBpbmRleCkgY29uc3QKICAgICB7CiAj
aWYgUExBVEZPUk0oV0lOKQogICAgICAgICByZXR1cm4gbV9vZmZzZXRzW2luZGV4XTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgICAgIHJldHVybiBGbG9hdFNpemUo
KTsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzU2l6ZSgpOwogI2VuZGlmCiAgICAgfQogCi0gICAg
dm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBmbG9hdCB3
aWR0aCwgY29uc3QgRmxvYXRTaXplKiBvZmZzZXQgPSAwKQorICAgIHZvaWQgYWRkKEdseXBoIGds
eXBoLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgZmxvYXQgd2lkdGgsIGNvbnN0IEdyYXBo
aWNzU2l6ZSogb2Zmc2V0ID0gMCkKICAgICB7CiAgICAgICAgIG1fZm9udERhdGEuYXBwZW5kKGZv
bnQpOwogCkBAIC0xNjMsMTQgKzE2MywxNCBAQCBwdWJsaWM6CiAjZWxpZiBPUyhXSU5DRSkKICAg
ICAgICAgbV9hZHZhbmNlcy5hcHBlbmQod2lkdGgpOwogI2Vsc2UKLSAgICAgICAgbV9hZHZhbmNl
cy5hcHBlbmQoRmxvYXRTaXplKHdpZHRoLCAwKSk7CisgICAgICAgIG1fYWR2YW5jZXMuYXBwZW5k
KEdyYXBoaWNzU2l6ZSh3aWR0aCwgMCkpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgICAgIGlmIChvZmZzZXQpCiAgICAgICAgICAgICBtX29mZnNldHMuYXBwZW5kKCpvZmZzZXQp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX29mZnNldHMuYXBwZW5kKEZsb2F0U2l6ZSgp
KTsKKyAgICAgICAgICAgIG1fb2Zmc2V0cy5hcHBlbmQoR3JhcGhpY3NTaXplKCkpOwogI2Vsc2UK
ICAgICAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiAjZW5kaWYKQEAgLTIwMSw3ICsyMDEsNyBA
QCBwdWJsaWM6CiAjZWxpZiBPUyhXSU5DRSkKICAgICAgICAgbGFzdEFkdmFuY2UgKz0gd2lkdGg7
CiAjZWxzZQotICAgICAgICBsYXN0QWR2YW5jZSArPSBGbG9hdFNpemUod2lkdGgsIDApOworICAg
ICAgICBsYXN0QWR2YW5jZSArPSBHcmFwaGljc1NpemUod2lkdGgsIDApOwogI2VuZGlmCiAgICAg
fQogCkBAIC0yMTAsNyArMjEwLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8R2x5cGhCdWZmZXJH
bHlwaCwgMjA0OD4gbV9nbHlwaHM7CiAgICAgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZSwgMjA0
OD4gbV9hZHZhbmNlczsKICNpZiBQTEFURk9STShXSU4pCi0gICAgVmVjdG9yPEZsb2F0U2l6ZSwg
MjA0OD4gbV9vZmZzZXRzOworICAgIFZlY3RvcjxHcmFwaGljc1NpemUsIDIwNDg+IG1fb2Zmc2V0
czsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tl
Q29sb3IoY29uCiAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBv
ZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBHcmFwaGljc1NpemUm
IG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9zdGF0
ZS5zaGFkb3dCbHVyID0gYmx1cjsKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsCiAgICAgc2V0UGxhdGZvcm1TaGFkb3cob2Zmc2V0LCBi
bHVyLCBjb2xvciwgY29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRM
ZWdhY3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENv
bG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldExlZ2FjeVNoYWRvdyhjb25zdCBHcmFwaGljc1NpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwg
Y29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgbV9zdGF0
ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsK
QEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TGVnYWN5U2hhZG93
KGNvCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdygpCiB7Ci0gICAgbV9zdGF0
ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoKTsKKyAgICBtX3N0YXRlLnNoYWRvd09mZnNldCA9
IEdyYXBoaWNzU2l6ZSgpOwogICAgIG1fc3RhdGUuc2hhZG93Qmx1ciA9IDA7CiAgICAgbV9zdGF0
ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlID0g
Q29sb3JTcGFjZURldmljZVJHQjsKQEAgLTE3MCw3ICsxNzAsNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dDo6aGFzU2hhZG93KCkgY29uc3QKICAgICAgICAgICAgJiYgKG1fc3RhdGUuc2hhZG93Qmx1
ciB8fCBtX3N0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0
LmhlaWdodCgpKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNp
emUmIG9mZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSkgY29uc3QKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3coR3JhcGhpY3NTaXpl
JiBvZmZzZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UpIGNvbnN0CiB7CiAgICAgb2Zmc2V0ID0gbV9zdGF0ZS5zaGFkb3dPZmZzZXQ7CiAgICAgYmx1
ciA9IG1fc3RhdGUuc2hhZG93Qmx1cjsKQEAgLTQ1NywxMCArNDU3LDEwIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGkKICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgcHJldmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBJbnRlcnBvbGF0aW9uTG93CiAgICAg
ICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbk5vbmUpOwotICAg
ICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNp
emUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNo
KSksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9h
dFJlY3QoZGVzdC5sb2NhdGlvbigpLCBHcmFwaGljc1NpemUodHcsIHRoKSksIEZsb2F0UmVjdChz
cmMubG9jYXRpb24oKSwgR3JhcGhpY3NTaXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwg
b3ApOwogICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJw
b2xhdGlvblF1YWxpdHkpOwogICAgIH0gZWxzZQotICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBG
bG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChz
cmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwgb3Ap
OworICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBH
cmFwaGljc1NpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgR3JhcGhpY3NT
aXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGJvb2wgdXNlTG93
UXVhbGl0eVNjYWxlKQpAQCAtNTQxLDEwICs1NDEsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZUJ1ZmZlcihJbQogICAgICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBwcmV2aW91
c0ludGVycG9sYXRpb25RdWFsaXR5ID0gaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpOwogICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIEludGVycG9sYXRpb25Mb3cKICAgICAgICAgc2V0SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9uZSk7Ci0gICAgICAgIGltYWdl
LT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwg
RmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0
c3csIHRzaCkpLCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAgICAgICAgaW1hZ2UtPmRyYXco
dGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBHcmFwaGlj
c1NpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgR3JhcGhpY3NTaXplKHRz
dywgdHNoKSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAgICAgICBzZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIH0gZWxz
ZQotICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9yU3BhY2UsIEZsb2F0UmVjdChk
ZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxvYXRSZWN0KHNyYy5sb2NhdGlv
bigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAg
ICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0KGRlc3QubG9j
YXRpb24oKSwgR3JhcGhpY3NTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0aW9uKCks
IEdyYXBoaWNzU2l6ZSh0c3csIHRzaCkpLCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KIAog
I2lmICFQTEFURk9STShRVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODQsNyArMTg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8
R3JhZGllbnQ+IGZpbGxHcmFkaWVudDsKICAgICAgICAgUmVmUHRyPFBhdHRlcm4+IGZpbGxQYXR0
ZXJuOwogCi0gICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisgICAgICAgIEdyYXBoaWNz
U2l6ZSBzaGFkb3dPZmZzZXQ7CiAKICAgICAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzOwogICAg
ICAgICBmbG9hdCBzaGFkb3dCbHVyOwpAQCAtMzcxLDEyICszNzEsMTIgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAKICAgICAgICAg
Ym9vbCBoYXNTaGFkb3coKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgRmxv
YXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAgICAg
dm9pZCBzZXRTaGFkb3coY29uc3QgR3JhcGhpY3NTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29s
b3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgLy8gTGVnYWN5IHNoYWRvdyBibHVyIHJhZGl1cyBp
cyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Via2l0LWJveC1zaGFkb3cuCiAgICAgICAgIC8vIEl0
IGhhcyBkaWZmZXJlbnQgdHJlYXRtZW50IG9mIHJhZGlpID4gOHB4LgotICAgICAgICB2b2lkIHNl
dExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYs
IENvbG9yU3BhY2UpOworICAgICAgICB2b2lkIHNldExlZ2FjeVNoYWRvdyhjb25zdCBHcmFwaGlj
c1NpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogCi0gICAgICAg
IGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29sb3ImLCBDb2xvclNwYWNlJikg
Y29uc3Q7CisgICAgICAgIGJvb2wgZ2V0U2hhZG93KEdyYXBoaWNzU2l6ZSYsIGZsb2F0JiwgQ29s
b3ImLCBDb2xvclNwYWNlJikgY29uc3Q7CiAgICAgICAgIHZvaWQgY2xlYXJTaGFkb3coKTsKIAog
ICAgICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEludFJlY3Q+JiwgaW50IHdp
ZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOwpAQCAtNDAwLDkgKzQwMCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjYW52YXNDbGlwKGNvbnN0IFBhdGgmKTsKICAg
ICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKTsKIAotICAgICAgICB2b2lkIHNjYWxlKGNv
bnN0IEZsb2F0U2l6ZSYpOworICAgICAgICB2b2lkIHNjYWxlKGNvbnN0IEdyYXBoaWNzU2l6ZSYp
OwogICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucyk7Ci0gICAgICAgIHZv
aWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgeyB0cmFuc2xhdGUoc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKTsgfQorICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBHcmFw
aGljc1NpemUmIHNpemUpIHsgdHJhbnNsYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7
IH0KICAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CiAKICAgICAgICAg
dm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBJbnRSZWN0Jik7CkBAIC00Nzks
NyArNDc5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKFdYKQogICAgICAg
ICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIG9mIGEgYnVnIHdoZXJlYnkgZ2V0dGluZyBhbiBI
REMgZnJvbSBhIEdESSsgY29udGV4dAogICAgICAgICAvLyBsb3NlcyB0aGUgc2NhbGUgb3BlcmF0
aW9ucyBhcHBsaWVkIHRvIHRoZSBjb250ZXh0LgotICAgICAgICBGbG9hdFNpemUgY3VycmVudFNj
YWxlKCk7IAorICAgICAgICBHcmFwaGljc1NpemUgY3VycmVudFNjYWxlKCk7IAogICAgICAgICBi
b29sIGluVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlm
CiAKQEAgLTUzOCw3ICs1MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQg
c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCk7CiAgICAgICAgIHZvaWQgc2V0UGxhdGZv
cm1TaG91bGRTbW9vdGhGb250cyhib29sKTsKIAotICAgICAgICB2b2lkIHNldFBsYXRmb3JtU2hh
ZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFj
ZSk7CisgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3QgR3JhcGhpY3NTaXplJiwg
ZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBjbGVh
clBsYXRmb3JtU2hhZG93KCk7CiAKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgotI2luY2x1ZGUgIkZsb2F0U2l6
ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJD
bGllbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKQEAgLTI0Miw4ICsyNDIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgcCkgeyBtX2FuY2hvclBvaW50ID0gcDsg
fQogCiAgICAgLy8gVGhlIHNpemUgb2YgdGhlIGxheWVyLgotICAgIGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRTaXpl
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CisgICAgY29uc3QgR3Jh
cGhpY3NTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdmlydHVhbCB2
b2lkIHNldFNpemUoY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKSB7IG1fc2l6ZSA9IHNpemU7IH0K
IAogICAgIC8vIFRoZSBib3VuZE9yaWdpbiBhZmZlY3RzIHRoZSBvZmZzZXQgYXQgd2hpY2ggY29u
dGVudCBpcyByZW5kZXJlZCwgYW5kIHN1YmxheWVycyBhcmUgcG9zaXRpb25lZC4KICAgICBjb25z
dCBGbG9hdFBvaW50JiBib3VuZHNPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2JvdW5kc09yaWdp
bjsgfQpAQCAtNDA3LDcgKzQwNyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBQb3NpdGlvbiBpcyBy
ZWxhdGl2ZSB0byB0aGUgcGFyZW50IEdyYXBoaWNzTGF5ZXIKICAgICBGbG9hdFBvaW50IG1fcG9z
aXRpb247CiAgICAgRmxvYXRQb2ludDNEIG1fYW5jaG9yUG9pbnQ7Ci0gICAgRmxvYXRTaXplIG1f
c2l6ZTsKKyAgICBHcmFwaGljc1NpemUgbV9zaXplOwogICAgIEZsb2F0UG9pbnQgbV9ib3VuZHNP
cmlnaW47CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NTaXplLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
U2l6ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCisKKyNp
bmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSA8bWF0aC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzU2l6ZTo6R3JhcGhp
Y3NTaXplKGNvbnN0IEludFNpemUmIHNpemUpIDogbV93aWR0aChzaXplLndpZHRoKCkpLCBtX2hl
aWdodChzaXplLmhlaWdodCgpKQoreworfQorCitHcmFwaGljc1VuaXQgR3JhcGhpY3NTaXplOjpk
aWFnb25hbExlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNxcnRmKGRpYWdvbmFsTGVuZ3Ro
U3F1YXJlZCgpKTsKK30KKworR3JhcGhpY3NTaXplIEdyYXBoaWNzU2l6ZTo6bmFycm93UHJlY2lz
aW9uKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkKK3sKKyAgICByZXR1cm4gR3JhcGhpY3NT
aXplKG5hcnJvd1ByZWNpc2lvblRvR3JhcGhpY3NVbml0KHdpZHRoKSwgbmFycm93UHJlY2lzaW9u
VG9HcmFwaGljc1VuaXQoaGVpZ2h0KSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NTaXplLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA1IE5va2lhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAgICAgICAgICAgICAgMjAwOCBF
cmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR3JhcGhpY3NTaXpl
X2gKKyNkZWZpbmUgR3JhcGhpY3NTaXplX2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworI2lmIFVTRShDRykgfHwgKFBMQVRGT1JNKFdYKSAm
JiBPUyhEQVJXSU4pKSB8fCBVU0UoU0tJQV9PTl9NQUNfQ0hST01JVU0pCit0eXBlZGVmIHN0cnVj
dCBDR1NpemUgQ0dTaXplOworI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpIHx8IChQTEFURk9S
TShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkgfHwgKFBMQVRGT1JNKFFUKSAmJiBVU0UoUVRLSVQp
KQorI2lmZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCit0eXBl
ZGVmIHN0cnVjdCBDR1NpemUgTlNTaXplOworI2Vsc2UKK3R5cGVkZWYgc3RydWN0IF9OU1NpemUg
TlNTaXplOworI2VuZGlmCisjZW5kaWYKKworLy8gRklYTUU6IFdpbGwgbW92ZSB0aGlzIHRvIENH
RmxvYXQgb25jZSB0aGUgY29udmVyc2lvbiBpcyBmaW5pc2hlZC4gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NDEzCit0eXBlZGVmIGZsb2F0IEdyYXBoaWNzVW5pdDsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRTaXplOworCitjbGFzcyBHcmFwaGlj
c1NpemUgeworcHVibGljOgorICAgIEdyYXBoaWNzU2l6ZSgpIDogbV93aWR0aCgwKSwgbV9oZWln
aHQoMCkgeyB9CisgICAgR3JhcGhpY3NTaXplKEdyYXBoaWNzVW5pdCB3aWR0aCwgR3JhcGhpY3NV
bml0IGhlaWdodCkgOiBtX3dpZHRoKHdpZHRoKSwgbV9oZWlnaHQoaGVpZ2h0KSB7IH0KKyAgICBH
cmFwaGljc1NpemUoY29uc3QgSW50U2l6ZSYpOworCisgICAgc3RhdGljIEdyYXBoaWNzU2l6ZSBu
YXJyb3dQcmVjaXNpb24oZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0KTsKKworICAgIEdyYXBo
aWNzVW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KKyAgICBHcmFwaGljc1Vu
aXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KKworICAgIHZvaWQgc2V0V2lk
dGgoR3JhcGhpY3NVbml0IHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0aDsgfQorICAgIHZvaWQgc2V0
SGVpZ2h0KEdyYXBoaWNzVW5pdCBoZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KKworICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8
PSAwOyB9CisKKyAgICBHcmFwaGljc1VuaXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBt
X3dpZHRoIC8gbV9oZWlnaHQ7IH0KKworICAgIHZvaWQgZXhwYW5kKEdyYXBoaWNzVW5pdCB3aWR0
aCwgR3JhcGhpY3NVbml0IGhlaWdodCkKKyAgICB7CisgICAgICAgIG1fd2lkdGggKz0gd2lkdGg7
CisgICAgICAgIG1faGVpZ2h0ICs9IGhlaWdodDsKKyAgICB9CisKKyAgICB2b2lkIHNjYWxlKEdy
YXBoaWNzVW5pdCBzKSB7IHNjYWxlKHMsIHMpOyB9CisKKyAgICB2b2lkIHNjYWxlKEdyYXBoaWNz
VW5pdCBzY2FsZVgsIEdyYXBoaWNzVW5pdCBzY2FsZVkpCisgICAgeworICAgICAgICBtX3dpZHRo
ICo9IHNjYWxlWDsKKyAgICAgICAgbV9oZWlnaHQgKj0gc2NhbGVZOworICAgIH0KKworICAgIEdy
YXBoaWNzU2l6ZSBleHBhbmRlZFRvKGNvbnN0IEdyYXBoaWNzU2l6ZSYgb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NTaXplKG1fd2lkdGggPiBvdGhlci5tX3dpZHRo
ID8gbV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCisgICAgICAgICAgICBtX2hlaWdodCA+IG90aGVy
Lm1faGVpZ2h0ID8gbV9oZWlnaHQgOiBvdGhlci5tX2hlaWdodCk7CisgICAgfQorCisgICAgR3Jh
cGhpY3NTaXplIHNocnVua1RvKGNvbnN0IEdyYXBoaWNzU2l6ZSYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgIHJldHVybiBHcmFwaGljc1NpemUobV93aWR0aCA8IG90aGVyLm1fd2lkdGggPyBt
X3dpZHRoIDogb3RoZXIubV93aWR0aCwKKyAgICAgICAgICAgbV9oZWlnaHQgPCBvdGhlci5tX2hl
aWdodCA/IG1faGVpZ2h0IDogb3RoZXIubV9oZWlnaHQpOworICAgIH0KKworICAgIEdyYXBoaWNz
VW5pdCBkaWFnb25hbExlbmd0aCgpIGNvbnN0OworICAgIEdyYXBoaWNzVW5pdCBkaWFnb25hbExl
bmd0aFNxdWFyZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fd2lkdGggKiBtX3dp
ZHRoICsgbV9oZWlnaHQgKiBtX2hlaWdodDsKKyAgICB9CisKKyAgICBHcmFwaGljc1NpemUgdHJh
bnNwb3NlZFNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzU2l6ZSht
X2hlaWdodCwgbV93aWR0aCk7CisgICAgfQorCisjaWYgVVNFKENHKSB8fCAoUExBVEZPUk0oV1gp
ICYmIE9TKERBUldJTikpIHx8IFVTRShTS0lBX09OX01BQ19DSFJPTUlVTSkKKyAgICBleHBsaWNp
dCBHcmFwaGljc1NpemUoY29uc3QgQ0dTaXplJik7IC8vIGRvbid0IGRvIHRoaXMgaW1wbGljaXRs
eSBzaW5jZSBpdCdzIGxvc3N5CisgICAgb3BlcmF0b3IgQ0dTaXplKCkgY29uc3Q7CisjZW5kaWYK
KworI2lmIChQTEFURk9STShNQUMpICYmICFkZWZpbmVkKE5TR0VPTUVUUllfVFlQRVNfU0FNRV9B
U19DR0dFT01FVFJZX1RZUEVTKSkgXAorICAgICAgICB8fCAoUExBVEZPUk0oQ0hST01JVU0pICYm
IE9TKERBUldJTikpIHx8IChQTEFURk9STShRVCkgJiYgVVNFKFFUS0lUKSkKKyAgICBleHBsaWNp
dCBHcmFwaGljc1NpemUoY29uc3QgTlNTaXplICYpOyAvLyBkb24ndCBkbyB0aGlzIGltcGxpY2l0
bHkgc2luY2UgaXQncyBsb3NzeQorICAgIG9wZXJhdG9yIE5TU2l6ZSgpIGNvbnN0OworI2VuZGlm
CisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NVbml0IG1fd2lkdGgsIG1faGVpZ2h0OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK0dyYXBoaWNzVW5pdCBuYXJyb3dQcmVjaXNpb25Ub0dyYXBo
aWNzVW5pdChUKTsKKyAgICAKK3RlbXBsYXRlPD4KK2lubGluZSBHcmFwaGljc1VuaXQgbmFycm93
UHJlY2lzaW9uVG9HcmFwaGljc1VuaXQoZG91YmxlIG51bWJlcikKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NVbml0PihudW1iZXIpOworfQorCitpbmxpbmUgR3JhcGhpY3NTaXpl
JiBvcGVyYXRvcis9KEdyYXBoaWNzU2l6ZSYgYSwgY29uc3QgR3JhcGhpY3NTaXplJiBiKQorewor
ICAgIGEuc2V0V2lkdGgoYS53aWR0aCgpICsgYi53aWR0aCgpKTsKKyAgICBhLnNldEhlaWdodChh
LmhlaWdodCgpICsgYi5oZWlnaHQoKSk7CisgICAgcmV0dXJuIGE7Cit9CisKK2lubGluZSBHcmFw
aGljc1NpemUmIG9wZXJhdG9yLT0oR3JhcGhpY3NTaXplJiBhLCBjb25zdCBHcmFwaGljc1NpemUm
IGIpCit7CisgICAgYS5zZXRXaWR0aChhLndpZHRoKCkgLSBiLndpZHRoKCkpOworICAgIGEuc2V0
SGVpZ2h0KGEuaGVpZ2h0KCkgLSBiLmhlaWdodCgpKTsKKyAgICByZXR1cm4gYTsKK30KKworaW5s
aW5lIEdyYXBoaWNzU2l6ZSBvcGVyYXRvcisoY29uc3QgR3JhcGhpY3NTaXplJiBhLCBjb25zdCBH
cmFwaGljc1NpemUmIGIpCit7CisgICAgcmV0dXJuIEdyYXBoaWNzU2l6ZShhLndpZHRoKCkgKyBi
LndpZHRoKCksIGEuaGVpZ2h0KCkgKyBiLmhlaWdodCgpKTsKK30KKworaW5saW5lIEdyYXBoaWNz
U2l6ZSBvcGVyYXRvci0oY29uc3QgR3JhcGhpY3NTaXplJiBhLCBjb25zdCBHcmFwaGljc1NpemUm
IGIpCit7CisgICAgcmV0dXJuIEdyYXBoaWNzU2l6ZShhLndpZHRoKCkgLSBiLndpZHRoKCksIGEu
aGVpZ2h0KCkgLSBiLmhlaWdodCgpKTsKK30KKworaW5saW5lIEdyYXBoaWNzU2l6ZSBvcGVyYXRv
ci0oY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKQoreworICAgIHJldHVybiBHcmFwaGljc1NpemUo
LXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEdyYXBoaWNzU2l6ZSYgYSwgY29uc3QgR3JhcGhpY3NTaXplJiBiKQoreworICAg
IHJldHVybiBhLndpZHRoKCkgPT0gYi53aWR0aCgpICYmIGEuaGVpZ2h0KCkgPT0gYi5oZWlnaHQo
KTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBHcmFwaGljc1NpemUmIGEsIGNv
bnN0IEdyYXBoaWNzU2l6ZSYgYikKK3sKKyAgICByZXR1cm4gYS53aWR0aCgpICE9IGIud2lkdGgo
KSB8fCBhLmhlaWdodCgpICE9IGIuaGVpZ2h0KCk7Cit9CisKK2lubGluZSBJbnRTaXplIHJvdW5k
ZWRJbnRTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcCkKK3sKKyAgICByZXR1cm4gSW50U2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihwLndpZHRoKCkpKSwgc3RhdGljX2Nhc3Q8aW50Pihyb3Vu
ZGYocC5oZWlnaHQoKSkpKTsKK30KKworaW5saW5lIEludFNpemUgZXhwYW5kZWRJbnRTaXplKGNv
bnN0IEdyYXBoaWNzU2l6ZSYgcCkKK3sKKyAgICByZXR1cm4gSW50U2l6ZShjbGFtcFRvSW50ZWdl
cihjZWlsZihwLndpZHRoKCkpKSwgY2xhbXBUb0ludGVnZXIoY2VpbGYocC5oZWlnaHQoKSkpKTsK
K30KKworaW5saW5lIEludFBvaW50IGZsb29yZWRJbnRQb2ludChjb25zdCBHcmFwaGljc1NpemUm
IHApCit7CisgICAgcmV0dXJuIEludFBvaW50KHN0YXRpY19jYXN0PGludD4ocC53aWR0aCgpKSwg
c3RhdGljX2Nhc3Q8aW50PihwLmhlaWdodCgpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEdyYXBoaWNzU2l6ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNyAr
ODcsNyBAQCB2b2lkIEltYWdlOjpmaWxsV2l0aFNvbGlkQ29sb3IoR3JhcGhpY3NDCiAgICAgY3R4
dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0b3IpOwogfQogCi1zdGF0aWMg
aW5saW5lIEZsb2F0U2l6ZSBjYWxjdWxhdGVQYXR0ZXJuU2NhbGUoY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwg
SW1hZ2U6OlRpbGVSdWxlIHZSdWxlKQorc3RhdGljIGlubGluZSBHcmFwaGljc1NpemUgY2FsY3Vs
YXRlUGF0dGVyblNjYWxlKGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSkK
IHsKICAgICBmbG9hdCBzY2FsZVggPSAxLjBmLCBzY2FsZVkgPSAxLjBmOwogICAgIApAQCAtMTAx
LDExICsxMDEsMTEgQEAgc3RhdGljIGlubGluZSBGbG9hdFNpemUgY2FsY3VsYXRlUGF0dGVybgog
ICAgIGlmICh2UnVsZSA9PSBJbWFnZTo6UmVwZWF0VGlsZSkKICAgICAgICAgc2NhbGVZID0gc2Nh
bGVYOwogICAgIAotICAgIHJldHVybiBGbG9hdFNpemUoc2NhbGVYLCBzY2FsZVkpOworICAgIHJl
dHVybiBHcmFwaGljc1NpemUoc2NhbGVYLCBzY2FsZVkpOwogfQogCiAKLXZvaWQgSW1hZ2U6OmRy
YXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlZFRpbGVT
aXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2
b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2ludCwgY29uc3QgR3JhcGhpY3NT
aXplJiBzY2FsZWRUaWxlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0
ZU9wZXJhdG9yIG9wKQogeyAgICAKICAgICBpZiAobWF5RmlsbFdpdGhTb2xpZENvbG9yKCkpIHsK
ICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RSZWN0LCBzb2xpZENvbG9yKCks
IHN0eWxlQ29sb3JTcGFjZSwgb3ApOwpAQCAtMTE3LDEzICsxMTcsMTMgQEAgdm9pZCBJbWFnZTo6
ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogYwogICAgIEFTU0VSVCghaXNCaXRtYXBJbWFnZSgp
IHx8IHN0YXRpY19jYXN0PEJpdG1hcEltYWdlKj4odGhpcyktPm5vdFNvbGlkQ29sb3IoKSk7CiAj
ZW5kaWYKIAotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNUaWxlU2l6ZSA9IHNpemUoKTsKKyAgICBH
cmFwaGljc1NpemUgaW50cmluc2ljVGlsZVNpemUgPSBzaXplKCk7CiAgICAgaWYgKGhhc1JlbGF0
aXZlV2lkdGgoKSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUuc2V0V2lkdGgoc2NhbGVkVGls
ZVNpemUud2lkdGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVpZ2h0KCkpCiAgICAgICAgIGlu
dHJpbnNpY1RpbGVTaXplLnNldEhlaWdodChzY2FsZWRUaWxlU2l6ZS5oZWlnaHQoKSk7CiAKLSAg
ICBGbG9hdFNpemUgc2NhbGUoc2NhbGVkVGlsZVNpemUud2lkdGgoKSAvIGludHJpbnNpY1RpbGVT
aXplLndpZHRoKCksCisgICAgR3JhcGhpY3NTaXplIHNjYWxlKHNjYWxlZFRpbGVTaXplLndpZHRo
KCkgLyBpbnRyaW5zaWNUaWxlU2l6ZS53aWR0aCgpLAogICAgICAgICAgICAgICAgICAgICBzY2Fs
ZWRUaWxlU2l6ZS5oZWlnaHQoKSAvIGludHJpbnNpY1RpbGVTaXplLmhlaWdodCgpKTsKIAogICAg
IEZsb2F0UmVjdCBvbmVUaWxlUmVjdDsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIEltYWdlOjpk
cmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjCiAgICAgaWYgKHZSdWxlID09IFJvdW5kVGlsZSkK
ICAgICAgICAgdlJ1bGUgPSBSZXBlYXRUaWxlOwogCi0gICAgRmxvYXRTaXplIHNjYWxlID0gY2Fs
Y3VsYXRlUGF0dGVyblNjYWxlKGRzdFJlY3QsIHNyY1JlY3QsIGhSdWxlLCB2UnVsZSk7CisgICAg
R3JhcGhpY3NTaXplIHNjYWxlID0gY2FsY3VsYXRlUGF0dGVyblNjYWxlKGRzdFJlY3QsIHNyY1Jl
Y3QsIGhSdWxlLCB2UnVsZSk7CiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0g
PSBBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2NhbGUud2lkdGgoKSwgc2NhbGUu
aGVpZ2h0KCkpOwogCiAgICAgLy8gV2Ugd2FudCB0byBjb25zdHJ1Y3QgdGhlIHBoYXNlIHN1Y2gg
dGhhdCB0aGUgcGF0dGVybiBpcyBjZW50ZXJlZCAod2hlbiBzdHJldGNoIGlzIG5vdApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lvbiA5MTIwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBv
aW50OwogY2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgRmxvYXRTaXplOworY2xhc3MgR3JhcGhpY3NT
aXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0
dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKSB7IH0KICNlbmRpZgogICAgIHZp
cnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IpID0gMDsKLSAgICB2b2lkIGRyYXdUaWxlZChHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50
LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwg
Q29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZvaWQgZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQb2ludCYgc3JjUG9pbnQsIGNv
bnN0IEdyYXBoaWNzU2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBD
b21wb3NpdGVPcGVyYXRvcik7CiAgICAgdm9pZCBkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIFRpbGVS
dWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENv
bXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIC8vIFN1cHBvcnRpbmcgdGlsZWQgZHJhd2luZwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAJKHJldmlzaW9uIDkx
MjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk3LDEzICs5NywxMyBAQCB2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNv
bnN0IFJvdW5kZWRSCiAgICAgYWRkUm91bmRlZFJlY3Qoci5yZWN0KCksIHIucmFkaWkoKS50b3BM
ZWZ0KCksIHIucmFkaWkoKS50b3BSaWdodCgpLCByLnJhZGlpKCkuYm90dG9tTGVmdCgpLCByLnJh
ZGlpKCkuYm90dG9tUmlnaHQoKSk7CiB9CiAKLXZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHJvdW5kaW5nUmFkaWkpCit2b2lk
IFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgR3JhcGhp
Y3NTaXplJiByb3VuZGluZ1JhZGlpKQogewogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRmxvYXRTaXplIHJhZGl1cyhyb3VuZGluZ1JhZGlpKTsKLSAgICBG
bG9hdFNpemUgaGFsZlNpemUocmVjdC53aWR0aCgpIC8gMiwgcmVjdC5oZWlnaHQoKSAvIDIpOwor
ICAgIEdyYXBoaWNzU2l6ZSByYWRpdXMocm91bmRpbmdSYWRpaSk7CisgICAgR3JhcGhpY3NTaXpl
IGhhbGZTaXplKHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QuaGVpZ2h0KCkgLyAyKTsKIAogICAgIC8v
IElmIHJ4IGlzIGdyZWF0ZXIgdGhhbiBoYWxmIG9mIHRoZSB3aWR0aCBvZiB0aGUgcmVjdGFuZ2xl
CiAgICAgLy8gdGhlbiBzZXQgcnggdG8gaGFsZiBvZiB0aGUgd2lkdGggKHJlcXVpcmVkIGluIFNW
RyBzcGVjKQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29u
c3QgRmxvYXRSZWMKICAgICBhZGRCZXppZXJzRm9yUm91bmRlZFJlY3QocmVjdCwgcmFkaXVzLCBy
YWRpdXMsIHJhZGl1cywgcmFkaXVzKTsKIH0KIAotdm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29u
c3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0
UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKQordm9pZCBQYXRoOjph
ZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEdyYXBoaWNzU2l6ZSYg
dG9wTGVmdFJhZGl1cywgY29uc3QgR3JhcGhpY3NTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3Qg
R3JhcGhpY3NTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBHcmFwaGljc1NpemUmIGJvdHRv
bVJpZ2h0UmFkaXVzKQogewogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgUGF0aDo6YWRkUm91bmRlZFJlY3QoY29uc3QgRmxv
YXRSZWMKIC8vIFRoaXMgaXMgMS1rYXBwYSwgd2hlcmUga2FwcGEgPSA0ICogKHNxcnQoMikgLSAx
KSAvIDMKIHN0YXRpYyBjb25zdCBmbG9hdCBnQ2lyY2xlQ29udHJvbFBvaW50ID0gMC40NDc3MTVm
OwogCi12b2lkIFBhdGg6OmFkZEJlemllcnNGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0
b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBG
bG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKQordm9pZCBQYXRoOjphZGRCZXppZXJzRm9yUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBHcmFwaGljc1NpemUmIHRvcExl
ZnRSYWRpdXMsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEdyYXBo
aWNzU2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgR3JhcGhpY3NTaXplJiBib3R0b21SaWdo
dFJhZGl1cykKIHsKICAgICBtb3ZlVG8oRmxvYXRQb2ludChyZWN0LngoKSArIHRvcExlZnRSYWRp
dXMud2lkdGgoKSwgcmVjdC55KCkpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGguaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKICAgICBjbGFzcyBGbG9h
dFBvaW50OwogICAgIGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFzcyBGbG9hdFNpemU7CisgICAg
Y2xhc3MgR3JhcGhpY3NTaXplOwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKICAgICBjbGFz
cyBTdHJva2VTdHlsZUFwcGxpZXI7CiAKQEAgLTEzMiwxMSArMTMyLDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBhZGRBcmMoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHJh
ZGl1cywgZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUsIGJvb2wgYW50aWNsb2Nrd2lz
ZSk7CiAgICAgICAgIHZvaWQgYWRkUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICAgICAgdm9p
ZCBhZGRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwotICAgICAgICB2b2lkIGFkZFJvdW5kZWRS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgcm91bmRpbmdSYWRpaSk7Ci0g
ICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRT
aXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tUmln
aHRSYWRpdXMpOworICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEdyYXBoaWNzU2l6ZSYgcm91bmRpbmdSYWRpaSk7CisgICAgICAgIHZvaWQgYWRkUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgR3JhcGhpY3NTaXplJiB0b3BMZWZ0UmFk
aXVzLCBjb25zdCBHcmFwaGljc1NpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBHcmFwaGljc1Np
emUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgYm90dG9tUmlnaHRSYWRp
dXMpOwogICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSZWN0Jik7CiAK
LSAgICAgICAgdm9pZCB0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJik7CisgICAgICAgIHZvaWQg
dHJhbnNsYXRlKGNvbnN0IEdyYXBoaWNzU2l6ZSYpOwogCiAgICAgICAgIFBsYXRmb3JtUGF0aFB0
ciBwbGF0Zm9ybVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7IH0KIApAQCAtMTQ0LDcgKzE0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB0cmFuc2Zvcm0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGFkZEJlemll
cnNGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHRvcExl
ZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6
ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21SaWdodFJhZGl1cyk7
CisgICAgICAgIHZvaWQgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEdyYXBoaWNzU2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgR3JhcGhpY3NTaXplJiB0
b3BSaWdodFJhZGl1cywgY29uc3QgR3JhcGhpY3NTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25z
dCBHcmFwaGljc1NpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsKIAogICAgICAgICBQbGF0Zm9ybVBh
dGhQdHIgbV9wYXRoOwogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAJKHJldmlzaW9uIDkxMjAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgUGF0aFRyYXZlcnNh
bFN0YXRlOjpwcm9jZXNzU2VnbWVudCgKICAgICAgICAgbV9zdWNjZXNzID0gdHJ1ZTsKICAgICAg
ICAgCiAgICAgaWYgKChtX2FjdGlvbiA9PSBUcmF2ZXJzYWxQb2ludEF0TGVuZ3RoIHx8IG1fYWN0
aW9uID09IFRyYXZlcnNhbE5vcm1hbEFuZ2xlQXRMZW5ndGgpICYmIG1fdG90YWxMZW5ndGggPj0g
bV9kZXNpcmVkTGVuZ3RoKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBjaGFuZ2UgPSBtX2N1cnJlbnQg
LSBtX3ByZXZpb3VzOworICAgICAgICBHcmFwaGljc1NpemUgY2hhbmdlID0gbV9jdXJyZW50IC0g
bV9wcmV2aW91czsKICAgICAgICAgZmxvYXQgc2xvcGUgPSBhdGFuMmYoY2hhbmdlLmhlaWdodCgp
LCBjaGFuZ2Uud2lkdGgoKSk7CiAgICAgICAgIGlmIChtX2FjdGlvbiA9PSBUcmF2ZXJzYWxQb2lu
dEF0TGVuZ3RoKSB7CiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBtX2Rlc2lyZWRMZW5ndGgg
LSBtX3RvdGFsTGVuZ3RoOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcg
KzgzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKICAg
ICB9CiAKLSAgICB2b2lkIHNldExhc3RTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRp
dXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCisgICAg
dm9pZCBzZXRMYXN0U2hhZG93VmFsdWVzKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcmFkaXVzLCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBz
aGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQogICAgIHsKICAgICAg
ICAgbV9sYXN0V2FzSW5zZXQgPSBmYWxzZTsKICAgICAgICAgbV9sYXN0UmFkaXVzID0gcmFkaXVz
OwpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7
CiAgICAgfQogCi0gICAgdm9pZCBzZXRMYXN0SW5zZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRT
aXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25z
dCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQorICAgIHZvaWQgc2V0TGFzdEluc2V0U2hhZG93
VmFsdWVzKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZHMsIGNvbnN0IEZsb2F0
UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKICAgICB7
CiAgICAgICAgIG1fbGFzdFdhc0luc2V0ID0gdHJ1ZTsKICAgICAgICAgbV9sYXN0SW5zZXRCb3Vu
ZHMgPSBib3VuZHM7CkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGFz
dFJhZGlpID0gcmFkaWk7CiAgICAgfQogICAgIAotICAgIGJvb2wgbWF0Y2hlc0xhc3RTaGFkb3co
Y29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0
OjpSYWRpaSYgcmFkaWkpIGNvbnN0CisgICAgYm9vbCBtYXRjaGVzTGFzdFNoYWRvdyhjb25zdCBH
cmFwaGljc1NpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJh
ZGlpJiByYWRpaSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX2xhc3RXYXNJbnNldCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIG1fbGFzdFJhZGl1cyA9PSBy
YWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0Q29sb3JTcGFjZSA9PSBjb2xv
clNwYWNlICYmIHNoYWRvd1JlY3QgPT0gbV9sYXN0U2hhZG93UmVjdCAmJiByYWRpaSA9PSBtX2xh
c3RSYWRpaTsKICAgICB9CiAKLSAgICBib29sIG1hdGNoZXNMYXN0SW5zZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0
LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKSBjb25zdAorICAgIGJvb2wgbWF0Y2hl
c0xhc3RJbnNldFNoYWRvdyhjb25zdCBHcmFwaGljc1NpemUmIHJhZGl1cywgY29uc3QgQ29sb3Im
IGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRzLCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFk
aWkpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1fbGFzdFdhc0luc2V0KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
bGVhclNjcmF0Y2hCdWZmZXIoKQogICAgIHsKICAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IG51bGxw
dHI7Ci0gICAgICAgIG1fbGFzdFJhZGl1cyA9IEZsb2F0U2l6ZSgpOworICAgICAgICBtX2xhc3RS
YWRpdXMgPSBHcmFwaGljc1NpemUoKTsKICAgICB9CiAKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+
IG1faW1hZ2VCdWZmZXI7CkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBSb3VuZGVk
UmVjdDo6UmFkaWkgbV9sYXN0UmFkaWk7CiAgICAgQ29sb3IgbV9sYXN0Q29sb3I7CiAgICAgQ29s
b3JTcGFjZSBtX2xhc3RDb2xvclNwYWNlOwotICAgIEZsb2F0U2l6ZSBtX2xhc3RSYWRpdXM7Cisg
ICAgR3JhcGhpY3NTaXplIG1fbGFzdFJhZGl1czsKICAgICBib29sIG1fbGFzdFdhc0luc2V0Owog
ICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTE2OCw3ICsxNjgsNyBAQCBTY3JhdGNoQnVm
ZmVyJiBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKQogCiBzdGF0aWMgY29uc3QgaW50IHRlbXBsYXRl
U2lkZUxlbmd0aCA9IDE7CiAKLVNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXpl
JiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IsIENv
bG9yU3BhY2UgY29sb3JTcGFjZSkKK1NoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgR3JhcGhp
Y3NTaXplJiByYWRpdXMsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYg
Y29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3IoY29sb3IpCiAgICAg
LCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKICAgICAsIG1fYmx1clJhZGl1cyhyYWRpdXMpCkBA
IC0xODYsNyArMTg2LDcgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1cigpCiB7CiB9CiAKLXZvaWQg
U2hhZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIGJvb2wgaWdub3JlVHJhbnNmb3JtcykKK3ZvaWQgU2hhZG93Qmx1cjo6c2V0U2hhZG93
VmFsdWVzKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcmFkaXVzLCBjb25zdCBHcmFwaGljc1NpemUmIG9m
ZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGJvb2wgaWdu
b3JlVHJhbnNmb3JtcykKIHsKICAgICBtX2JsdXJSYWRpdXMgPSByYWRpdXM7CiAgICAgbV9vZmZz
ZXQgPSBvZmZzZXQ7CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpzZXRTaGFk
b3dWYWx1ZXMoY29uc3QgRgogdm9pZCBTaGFkb3dCbHVyOjp1cGRhdGVTaGFkb3dCbHVyVmFsdWVz
KCkKIHsKICAgICAvLyBMaW1pdCBibHVyIHJhZGl1cyB0byAxMjggdG8gYXZvaWQgbG90cyBvZiB2
ZXJ5IGV4cGVuc2l2ZSBibHVycmluZy4KLSAgICBtX2JsdXJSYWRpdXMgPSBtX2JsdXJSYWRpdXMu
c2hydW5rVG8oRmxvYXRTaXplKDEyOCwgMTI4KSk7CisgICAgbV9ibHVyUmFkaXVzID0gbV9ibHVy
UmFkaXVzLnNocnVua1RvKEdyYXBoaWNzU2l6ZSgxMjgsIDEyOCkpOwogCiAgICAgLy8gVGhlIHR5
cGUgb2Ygc2hhZG93IGlzIGRlY2lkZWQgYnkgdGhlIGJsdXIgcmFkaXVzLCBzaGFkb3cgb2Zmc2V0
LCBhbmQgc2hhZG93IGNvbG9yLgogICAgIGlmICghbV9jb2xvci5pc1ZhbGlkKCkgfHwgIW1fY29s
b3IuYWxwaGEoKSkgewpAQCAtMjY0LDggKzI2NCw4IEBAIHZvaWQgU2hhZG93Qmx1cjo6Y2xlYXIo
KQogewogICAgIG1fdHlwZSA9IE5vU2hhZG93OwogICAgIG1fY29sb3IgPSBDb2xvcigpOwotICAg
IG1fYmx1clJhZGl1cyA9IEZsb2F0U2l6ZSgpOwotICAgIG1fb2Zmc2V0ID0gRmxvYXRTaXplKCk7
CisgICAgbV9ibHVyUmFkaXVzID0gR3JhcGhpY3NTaXplKCk7CisgICAgbV9vZmZzZXQgPSBHcmFw
aGljc1NpemUoKTsKIH0KIAogdm9pZCBTaGFkb3dCbHVyOjpibHVyTGF5ZXJJbWFnZSh1bnNpZ25l
ZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUsIGludCByb3dTdHJpZGUpCkBA
IC0zNjgsMTIgKzM2OCwxMiBAQCB2b2lkIFNoYWRvd0JsdXI6OmFkanVzdEJsdXJSYWRpdXMoR3Jh
cGhpCiAgICAgY29uc3QgRmxvYXRRdWFkIHRyYW5zZm9ybWVkVW5pdFF1YWQgPSB0cmFuc2Zvcm0u
bWFwUXVhZCh1bml0UXVhZCk7CiAKICAgICAvLyBDYWxjdWxhdGUgWCBheGlzIHNjYWxlIGZhY3Rv
ci4KLSAgICBjb25zdCBGbG9hdFNpemUgeFVuaXRDaGFuZ2UgPSB0cmFuc2Zvcm1lZFVuaXRRdWFk
LnAyKCkgLSB0cmFuc2Zvcm1lZFVuaXRRdWFkLnAxKCk7CisgICAgY29uc3QgR3JhcGhpY3NTaXpl
IHhVbml0Q2hhbmdlID0gdHJhbnNmb3JtZWRVbml0UXVhZC5wMigpIC0gdHJhbnNmb3JtZWRVbml0
UXVhZC5wMSgpOwogICAgIGNvbnN0IGZsb2F0IHhBeGlzU2NhbGUgPSBzcXJ0Zih4VW5pdENoYW5n
ZS53aWR0aCgpICogeFVuaXRDaGFuZ2Uud2lkdGgoKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICArIHhVbml0Q2hhbmdlLmhlaWdodCgpICogeFVuaXRDaGFuZ2UuaGVpZ2h0KCkp
OwogCiAgICAgLy8gQ2FsY3VsYXRlIFkgYXhpcyBzY2FsZSBmYWN0b3IuCi0gICAgY29uc3QgRmxv
YXRTaXplIHlVbml0Q2hhbmdlID0gdHJhbnNmb3JtZWRVbml0UXVhZC5wMygpIC0gdHJhbnNmb3Jt
ZWRVbml0UXVhZC5wMSgpOworICAgIGNvbnN0IEdyYXBoaWNzU2l6ZSB5VW5pdENoYW5nZSA9IHRy
YW5zZm9ybWVkVW5pdFF1YWQucDMoKSAtIHRyYW5zZm9ybWVkVW5pdFF1YWQucDEoKTsKICAgICBj
b25zdCBmbG9hdCB5QXhpc1NjYWxlID0gc3FydGYoeVVuaXRDaGFuZ2Uud2lkdGgoKSAqIHlVbml0
Q2hhbmdlLndpZHRoKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyB5VW5p
dENoYW5nZS5oZWlnaHQoKSAqIHlVbml0Q2hhbmdlLmhlaWdodCgpKTsKIApAQCAtNDQ1LDEzICs0
NDUsMTMgQEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaQogICAgIG1f
bGF5ZXJTaXplID0gbGF5ZXJSZWN0LnNpemUoKTsKIAogICAgIGNvbnN0IEZsb2F0UG9pbnQgdW5j
bGlwcGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVjdC54KCksIHVu
Y2xpcHBlZExheWVyUmVjdC55KCkpOwotICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlwcGVkT3V0ID0g
dW5jbGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVyT3JpZ2luOworICAgIGNvbnN0IEdyYXBoaWNz
U2l6ZSBjbGlwcGVkT3V0ID0gdW5jbGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVyT3JpZ2luOwog
CiAgICAgLy8gU2V0IHRoZSBvcmlnaW4gYXMgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2Ny
YXRjaCBpbWFnZSwgb3IsIGluIGNhc2UgdGhlcmUncyBhIGNsaXBwZWQKICAgICAvLyBvdXQgcmVn
aW9uLCBzZXQgdGhlIG9yaWdpbiBhY2NvcmRpbmdseSB0byB0aGUgZnVsbCBib3VuZGluZyByZWN0
J3MgdG9wLWxlZnQgY29ybmVyLgogICAgIGZsb2F0IHRyYW5zbGF0aW9uWCA9IC1zaGFkb3dlZFJl
Y3QueCgpICsgaW5mbGF0aW9uLndpZHRoKCkgLSBmYWJzZihjbGlwcGVkT3V0LndpZHRoKCkpOwog
ICAgIGZsb2F0IHRyYW5zbGF0aW9uWSA9IC1zaGFkb3dlZFJlY3QueSgpICsgaW5mbGF0aW9uLmhl
aWdodCgpIC0gZmFic2YoY2xpcHBlZE91dC5oZWlnaHQoKSk7Ci0gICAgbV9sYXllckNvbnRleHRU
cmFuc2xhdGlvbiA9IEZsb2F0U2l6ZSh0cmFuc2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7CisgICAg
bV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiA9IEdyYXBoaWNzU2l6ZSh0cmFuc2xhdGlvblgsIHRy
YW5zbGF0aW9uWSk7CiAKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChsYXllclJlY3QpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
aAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIEJsdXJTaGFkb3cKICAgICB9OwogCi0gICAgU2hhZG93Qmx1cihjb25zdCBGbG9hdFNp
emUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiwgQ29sb3JT
cGFjZSk7CisgICAgU2hhZG93Qmx1cihjb25zdCBHcmFwaGljc1NpemUmIHJhZGl1cywgY29uc3Qg
R3JhcGhpY3NTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAgICAgU2hh
ZG93Qmx1cigpOwogCi0gICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSwgYm9vbCBpZ25vcmVU
cmFuc2Zvcm1zID0gZmFsc2UpOworICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEdyYXBo
aWNzU2l6ZSYsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Us
IGJvb2wgaWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKIAogICAgIHZvaWQgc2V0U2hhZG93c0ln
bm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVUcmFuc2Zvcm1zKSB7IG1fc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1zOyB9CiAgICAgYm9vbCBzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KQEAg
LTEwMiwxNSArMTAyLDE1IEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBtX2NvbG9yOwogICAgIENv
bG9yU3BhY2UgbV9jb2xvclNwYWNlOwotICAgIEZsb2F0U2l6ZSBtX2JsdXJSYWRpdXM7Ci0gICAg
RmxvYXRTaXplIG1fb2Zmc2V0OworICAgIEdyYXBoaWNzU2l6ZSBtX2JsdXJSYWRpdXM7CisgICAg
R3JhcGhpY3NTaXplIG1fb2Zmc2V0OwogCiAgICAgSW1hZ2VCdWZmZXIqIG1fbGF5ZXJJbWFnZTsg
Ly8gQnVmZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkgc2hhZG93IHdpbGwgYmUgZHJhd24gdG8u
CiAKICAgICBGbG9hdFJlY3QgbV9zb3VyY2VSZWN0OyAvLyBTdWItcmVjdCBvZiBtX2xheWVySW1h
Z2UgdGhhdCBjb250YWlucyB0aGUgc2hhZG93IHBpeGVscy4KICAgICBGbG9hdFBvaW50IG1fbGF5
ZXJPcmlnaW47IC8vIFRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgKHBvc3NpYmx5IGNsaXBwZWQpIGJv
dW5kaW5nIHJlY3QgdG8gZHJhdyB0aGUgc2hhZG93IHRvLgotICAgIEZsb2F0U2l6ZSBtX2xheWVy
U2l6ZTsgLy8gU2l6ZSBvZiBtX2xheWVySW1hZ2UgcGl4ZWxzIHRoYXQgbmVlZCBibHVycmluZy4K
LSAgICBGbG9hdFNpemUgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbjsgLy8gVHJhbnNsYXRpb24g
dG8gYXBwbHkgdG8gbV9sYXllckNvbnRleHQgZm9yIHRoZSBzaGFkb3cgdG8gYmUgY29ycmVjdGx5
IGNsaXBwZWQuCisgICAgR3JhcGhpY3NTaXplIG1fbGF5ZXJTaXplOyAvLyBTaXplIG9mIG1fbGF5
ZXJJbWFnZSBwaXhlbHMgdGhhdCBuZWVkIGJsdXJyaW5nLgorICAgIEdyYXBoaWNzU2l6ZSBtX2xh
eWVyQ29udGV4dFRyYW5zbGF0aW9uOyAvLyBUcmFuc2xhdGlvbiB0byBhcHBseSB0byBtX2xheWVy
Q29udGV4dCBmb3IgdGhlIHNoYWRvdyB0byBiZSBjb3JyZWN0bHkgY2xpcHBlZC4KIAogICAgIGJv
b2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCShyZXZpc2lvbiA5MTIw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
NyBAQAogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCi0jaW5jbHVk
ZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CkBAIC0yNTEsNyArMjUxLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2Fz
c2V0VVJMOwogICAgIE1lZGlhUGxheWVyOjpQcmVsb2FkIG1fcHJlbG9hZDsKLSAgICBGbG9hdFNp
emUgbV9zY2FsZUZhY3RvcjsKKyAgICBHcmFwaGljc1NpemUgbV9zY2FsZUZhY3RvcjsKIAogICAg
IEludFNpemUgbV9jYWNoZWROYXR1cmFsU2l6ZTsKICAgICBtdXRhYmxlIGZsb2F0IG1fY2FjaGVk
TWF4VGltZUxvYWRlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsNyArNjA3LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOgogICAgIGlmIChpbWFn
ZSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOwogICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUocmVjdC54KCksIHJlY3QueSgpICsgcmVj
dC5oZWlnaHQoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4w
ZikpOworICAgICAgICBjb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoMS4wZiwgLTEuMGYpKTsK
ICAgICAgICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0
aW9uTG93KTsKICAgICAgICAgSW50UmVjdCBwYWludFJlY3QoSW50UG9pbnQoMCwgMCksIEludFNp
emUocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7CiAgICAgICAgIENHQ29udGV4dERyYXdJ
bWFnZShjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBwYWludFJl
Y3Qud2lkdGgoKSwgcGFpbnRSZWN0LmhlaWdodCgpKSwgaW1hZ2UuZ2V0KCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xh
eWVyQ0EuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Miw3ICsz
OTIsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0QW5jaG9yUG9pbnQoY29uCiAgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEdlb21ldHJ5Q2hhbmdlZCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6
ZSA9PSBtX3NpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMDYsMTUgKzEwMDYsMTUgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUdlb21ldHJ5KGZsbwogewogICAgIEZsb2F0UG9pbnQg
c2NhbGVkUG9zaXRpb247CiAgICAgRmxvYXRQb2ludDNEIHNjYWxlZEFuY2hvclBvaW50OwotICAg
IEZsb2F0U2l6ZSBzY2FsZWRTaXplOwotICAgIEZsb2F0U2l6ZSBwaXhlbEFsaWdubWVudE9mZnNl
dDsKKyAgICBHcmFwaGljc1NpemUgc2NhbGVkU2l6ZTsKKyAgICBHcmFwaGljc1NpemUgcGl4ZWxB
bGlnbm1lbnRPZmZzZXQ7CiAgICAgY29tcHV0ZVBpeGVsQWxpZ25tZW50KHBhZ2VTY2FsZUZhY3Rv
ciwgcG9zaXRpb25SZWxhdGl2ZVRvQmFzZSwgc2NhbGVkUG9zaXRpb24sIHNjYWxlZFNpemUsIHNj
YWxlZEFuY2hvclBvaW50LCBwaXhlbEFsaWdubWVudE9mZnNldCk7CiAKICAgICBib29sIG5lZWRU
aWxlZExheWVyID0gcmVxdWlyZXNUaWxlZExheWVyKHBhZ2VTY2FsZUZhY3Rvciwgc2NhbGVkU2l6
ZSk7CiAgICAgaWYgKG5lZWRUaWxlZExheWVyICE9IG1fdXNpbmdUaWxlZExheWVyKQogICAgICAg
ICBzd2FwRnJvbU9yVG9UaWxlZExheWVyKG5lZWRUaWxlZExheWVyLCBwYWdlU2NhbGVGYWN0b3Is
IHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UpOwogCi0gICAgRmxvYXRTaXplIHVzZWRTaXplID0gbV91
c2luZ1RpbGVkTGF5ZXIgPyBjb25zdHJhaW5lZFNpemUoKSA6IHNjYWxlZFNpemU7CisgICAgR3Jh
cGhpY3NTaXplIHVzZWRTaXplID0gbV91c2luZ1RpbGVkTGF5ZXIgPyBjb25zdHJhaW5lZFNpemUo
KSA6IHNjYWxlZFNpemU7CiAgICAgRmxvYXRSZWN0IGFkanVzdGVkQm91bmRzKG1fYm91bmRzT3Jp
Z2luIC0gcGl4ZWxBbGlnbm1lbnRPZmZzZXQsIHVzZWRTaXplKTsKIAogICAgIC8vIFVwZGF0ZSBw
b3NpdGlvbi4KQEAgLTIwMTgsOSArMjAxOCw5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRE
ZWJ1Z0JvcmRlcihjb24KICAgICB9CiB9CiAKLUZsb2F0U2l6ZSBHcmFwaGljc0xheWVyQ0E6OmNv
bnN0cmFpbmVkU2l6ZSgpIGNvbnN0CitHcmFwaGljc1NpemUgR3JhcGhpY3NMYXllckNBOjpjb25z
dHJhaW5lZFNpemUoKSBjb25zdAogewotICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNpemUgPSBt
X3NpemU7CisgICAgR3JhcGhpY3NTaXplIGNvbnN0cmFpbmVkU2l6ZSA9IG1fc2l6ZTsKICNpZiBk
ZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpIHx8IGRlZmluZWQoQlVJTERJTkdfT05fU05PV19M
RU9QQVJEKQogICAgIGZsb2F0IHRpbGVDb2x1bW5zID0gY2VpbGYobV9zaXplLndpZHRoKCkgLyBr
VGlsZWRMYXllclRpbGVTaXplKTsKICAgICBmbG9hdCB0aWxlUm93cyA9IGNlaWxmKG1fc2l6ZS5o
ZWlnaHQoKSAvIGtUaWxlZExheWVyVGlsZVNpemUpOwpAQCAtMjA0Miw3ICsyMDQyLDcgQEAgRmxv
YXRTaXplIEdyYXBoaWNzTGF5ZXJDQTo6Y29uc3RyYWluZWRTaQogICAgIHJldHVybiBjb25zdHJh
aW5lZFNpemU7CiB9CiAKLWJvb2wgR3JhcGhpY3NMYXllckNBOjpyZXF1aXJlc1RpbGVkTGF5ZXIo
ZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Citib29s
IEdyYXBoaWNzTGF5ZXJDQTo6cmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
ciwgY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKSBjb25zdAogewogICAgIGlmICghbV9kcmF3c0Nv
bnRlbnQgfHwgIW1fYWxsb3dUaWxlZExheWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NDE5LDEzICsyNDE5LDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ludGVncmFsKGZsb2F0IHZh
bHUKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ0E6OmNvbXB1dGVQaXhlbEFsaWdubWVudChmbG9h
dCBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uUmVsYXRpdmVUb0Jh
c2UsCi0gICAgRmxvYXRQb2ludCYgcG9zaXRpb24sIEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRQb2lu
dDNEJiBhbmNob3JQb2ludCwgRmxvYXRTaXplJiBhbGlnbm1lbnRPZmZzZXQpIGNvbnN0CisgICAg
RmxvYXRQb2ludCYgcG9zaXRpb24sIEdyYXBoaWNzU2l6ZSYgc2l6ZSwgRmxvYXRQb2ludDNEJiBh
bmNob3JQb2ludCwgR3JhcGhpY3NTaXplJiBhbGlnbm1lbnRPZmZzZXQpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX21haW50YWluc1BpeGVsQWxpZ25tZW50IHx8IGlzSW50ZWdyYWwocGFnZVNjYWxlRmFj
dG9yKSB8fCAhbV9kcmF3c0NvbnRlbnQgfHwgbV9tYXNrc1RvQm91bmRzKSB7CiAgICAgICAgIHBv
c2l0aW9uID0gbV9wb3NpdGlvbjsKICAgICAgICAgc2l6ZSA9IG1fc2l6ZTsKICAgICAgICAgYW5j
aG9yUG9pbnQgPSBtX2FuY2hvclBvaW50OwotICAgICAgICBhbGlnbm1lbnRPZmZzZXQgPSBGbG9h
dFNpemUoKTsKKyAgICAgICAgYWxpZ25tZW50T2Zmc2V0ID0gR3JhcGhpY3NTaXplKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaAkocmV2aXNpb24gOTEyMDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBH
cmFwaGljc1NpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Qm91bmRzT3JpZ2luKGNvbnN0IEZs
b2F0UG9pbnQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKQEAgLTE4Niw5ICsxODYsOSBAQCBwcml2YXRlOgogCiAgICAgRmxv
YXRQb2ludCBjb21wdXRlUG9zaXRpb25SZWxhdGl2ZVRvQmFzZShmbG9hdCYgcGFnZVNjYWxlKSBj
b25zdDsKIAotICAgIEZsb2F0U2l6ZSBjb25zdHJhaW5lZFNpemUoKSBjb25zdDsKKyAgICBHcmFw
aGljc1NpemUgY29uc3RyYWluZWRTaXplKCkgY29uc3Q7CiAKLSAgICBib29sIHJlcXVpcmVzVGls
ZWRMYXllcihmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0Owor
ICAgIGJvb2wgcmVxdWlyZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3Qg
R3JhcGhpY3NTaXplJikgY29uc3Q7CiAgICAgdm9pZCBzd2FwRnJvbU9yVG9UaWxlZExheWVyKGJv
b2wgdXNlVGlsZWRMYXllciwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBGbG9hdFBvaW50
JiBwb3NpdGlvblJlbGF0aXZlVG9CYXNlKTsKIAogICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNP
cmllbnRhdGlvbiBkZWZhdWx0Q29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0OwpAQCAtMjAwLDcg
KzIwMCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVy
KEdyYXBoaWNzTGF5ZXIqKTsKIAogICAgIHZvaWQgY29tcHV0ZVBpeGVsQWxpZ25tZW50KGZsb2F0
IHBpeGVsQWxpZ25tZW50U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uUmVsYXRpdmVU
b0Jhc2UsCi0gICAgICAgIEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBGbG9hdFNpemUmLCBGbG9hdFBv
aW50M0QmIGFuY2hvclBvaW50LCBGbG9hdFNpemUmIGFsaWdubWVudE9mZnNldCkgY29uc3Q7Cisg
ICAgICAgIEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBHcmFwaGljc1NpemUmLCBGbG9hdFBvaW50M0Qm
IGFuY2hvclBvaW50LCBHcmFwaGljc1NpemUmIGFsaWdubWVudE9mZnNldCkgY29uc3Q7CiAKICAg
ICAvLyBVc2VkIHRvIHRyYWNrIHRoZSBwYXRoIGRvd24gdGhlIHRyZWUgZm9yIHJlcGxpY2EgbGF5
ZXJzLgogICAgIHN0cnVjdCBSZXBsaWNhU3RhdGUgewpAQCAtNDAzLDcgKzQwMyw3IEBAIHByaXZh
dGU6CiAgICAgQW5pbWF0aW9uc01hcCBtX3J1bm5pbmdBbmltYXRpb25zOwogCiAgICAgVmVjdG9y
PEZsb2F0UmVjdD4gbV9kaXJ0eVJlY3RzOwotICAgIEZsb2F0U2l6ZSBtX3BpeGVsQWxpZ25tZW50
T2Zmc2V0OworICAgIEdyYXBoaWNzU2l6ZSBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0OwogICAgIAog
ICAgIExheWVyQ2hhbmdlRmxhZ3MgbV91bmNvbW1pdHRlZENoYW5nZXM7CiB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNw
cAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9GbG9hdFNpemVDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNSBOb2tpYS4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0gCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmxvYXRTaXpl
LmgiCi0KLSNpZiBVU0UoQ0cpIHx8IFVTRShTS0lBX09OX01BQ19DSFJPTUlVTSkgfHwgKFBMQVRG
T1JNKFFUKSAmJiBVU0UoUVRLSVQpKQotCi0jaW5jbHVkZSA8QXBwbGljYXRpb25TZXJ2aWNlcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRmxvYXRTaXpl
OjpGbG9hdFNpemUoY29uc3QgQ0dTaXplJiBzKSA6IG1fd2lkdGgocy53aWR0aCksIG1faGVpZ2h0
KHMuaGVpZ2h0KQotewotfQotCi1GbG9hdFNpemU6Om9wZXJhdG9yIENHU2l6ZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIENHU2l6ZU1ha2UobV93aWR0aCwgbV9oZWlnaHQpOwotfQotCi19Ci0KLSNl
bmRpZiAvLyBVU0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiA5MTIwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI5LDcgKzMyOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzdHJva2VBcmMoY29uc3QgSW4KICAgICBmbG9hdCByZXZlcnNlU2NhbGVGYWN0b3IgPSB3
IC8gaDsKIAogICAgIGlmICh3ICE9IGgpCi0gICAgICAgIHNjYWxlKEZsb2F0U2l6ZSgxLCBzY2Fs
ZUZhY3RvcikpOworICAgICAgICBzY2FsZShHcmFwaGljc1NpemUoMSwgc2NhbGVGYWN0b3IpKTsK
IAogICAgIGZsb2F0IGhSYWRpdXMgPSB3IC8gMjsKICAgICBmbG9hdCB2UmFkaXVzID0gaCAvIDI7
CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25z
dCBJbgogICAgIENHQ29udGV4dEFkZEFyYyhjb250ZXh0LCB4ICsgaFJhZGl1cywgKHkgKyB2UmFk
aXVzKSAqIHJldmVyc2VTY2FsZUZhY3RvciwgaFJhZGl1cywgc3RhcnQsIGVuZCwgdHJ1ZSk7CiAK
ICAgICBpZiAodyAhPSBoKQotICAgICAgICBzY2FsZShGbG9hdFNpemUoMSwgcmV2ZXJzZVNjYWxl
RmFjdG9yKSk7CisgICAgICAgIHNjYWxlKEdyYXBoaWNzU2l6ZSgxLCByZXZlcnNlU2NhbGVGYWN0
b3IpKTsKIAogICAgIGZsb2F0IHdpZHRoID0gc3Ryb2tlVGhpY2tuZXNzKCk7CiAgICAgaW50IHBh
dFdpZHRoID0gMDsKQEAgLTcwMiw3ICs3MDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QoY29uc3QgRmxvCiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAg
ICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dT
aXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KEZsb2F0
U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3Rh
dGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIFNoYWRv
d0JsdXIgY29udGV4dFNoYWRvdyhHcmFwaGljc1NpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1ciks
IG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRv
d0NvbG9yU3BhY2UpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMs
IHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsKICAgICB9CiAKQEAgLTczMSw3ICs3MzEsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAgICAgIENHQ29u
dGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhD
b2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hh
ZG93Qmx1ciBjb250ZXh0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwg
bV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93
Q29sb3JTcGFjZSk7CisgICAgICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhHcmFwaGljc1Np
emUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRl
LnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBjb250ZXh0
U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJlY3QsIFJvdW5kZWRSZWN0OjpSYWRpaSgpKTsK
ICAgICB9CiAKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJv
dW5kZWRSZWN0KGNvCiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CiAgICAg
ICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgQ0dTaXpl
WmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KEZsb2F0U2l6
ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUu
c2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFjZSk7CisgICAgICAgIFNoYWRvd0Js
dXIgY29udGV4dFNoYWRvdyhHcmFwaGljc1NpemUoc2hhZG93Qmx1ciwgc2hhZG93Qmx1ciksIG1f
c3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd0Nv
bG9yU3BhY2UpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdSZWN0U2hhZG93KHRoaXMsIHJl
Y3QsIFJvdW5kZWRSZWN0OjpSYWRpaSh0b3BMZWZ0LCB0b3BSaWdodCwgYm90dG9tTGVmdCwgYm90
dG9tUmlnaHQpKTsKICAgICB9CiAKQEAgLTgxNyw3ICs4MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlCiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29u
dGV4dCk7CiAgICAgICAgIENHQ29udGV4dFNldFNoYWRvd1dpdGhDb2xvcihwbGF0Zm9ybUNvbnRl
eHQoKSwgQ0dTaXplWmVybywgMCwgMCk7CiAKLSAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hh
ZG93KEZsb2F0U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dPZmZz
ZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFjZSk7CisgICAg
ICAgIFNoYWRvd0JsdXIgY29udGV4dFNoYWRvdyhHcmFwaGljc1NpemUoc2hhZG93Qmx1ciwgc2hh
ZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0
YXRlLnNoYWRvd0NvbG9yU3BhY2UpOwogICAgICAgICBjb250ZXh0U2hhZG93LmRyYXdJbnNldFNo
YWRvdyh0aGlzLCByZWN0LCByb3VuZGVkSG9sZVJlY3QucmVjdCgpLCByb3VuZGVkSG9sZVJlY3Qu
cmFkaWkoKSk7CiAgICAgfQogCkBAIC05MTUsNyArOTE1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmVuZFRyYW5zcGFyZW5jeUxheQogICAgIHJlc3RvcmUoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBHcmFwaGljc1NpemUmIG9m
ZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTEyNCw3ICsxMTI0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQoY29uc3QgUGF0
aAogICAgIENHQ29udGV4dEVPQ2xpcChwbGF0Zm9ybUNvbnRleHQoKSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2NhbGUoY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
Ry5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZs
dXNoKCkge30KICAgICB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0Jikge30KICAgICB2b2lkIGNs
aXAoY29uc3QgUGF0aCYpIHt9Ci0gICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKSB7fQor
ICAgIHZvaWQgc2NhbGUoY29uc3QgR3JhcGhpY3NTaXplJikgeyB9CiAgICAgdm9pZCByb3RhdGUo
ZmxvYXQpIHt9CiAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQsIGZsb2F0KSB7fQogICAgIHZvaWQg
Y29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpIHt9CkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZsdXNoKCk7CiAgICAgdm9pZCBjbGlwKGNvbnN0IEZsb2F0UmVjdCYp
OwogICAgIHZvaWQgY2xpcChjb25zdCBQYXRoJik7Ci0gICAgdm9pZCBzY2FsZShjb25zdCBGbG9h
dFNpemUmKTsKKyAgICB2b2lkIHNjYWxlKGNvbnN0IEdyYXBoaWNzU2l6ZSYpOwogICAgIHZvaWQg
cm90YXRlKGZsb2F0KTsKICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCwgZmxvYXQpOwogICAgIHZv
aWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NTaXplQ0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzU2l6ZUNHLmNwcAko
cmV2aXNpb24gOTEyMDApCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0Zsb2F0U2l6ZUNHLmNwcDo5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzU2l6ZUNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1IE5va2lhLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKyAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJG
bG9hdFNpemUuaCIKKworI2lmIFVTRShDRykgfHwgVVNFKFNLSUFfT05fTUFDX0NIUk9NSVVNKSB8
fCAoUExBVEZPUk0oUVQpICYmIFVTRShRVEtJVCkpCisKKyNpbmNsdWRlIDxBcHBsaWNhdGlvblNl
cnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitG
bG9hdFNpemU6OkZsb2F0U2l6ZShjb25zdCBDR1NpemUmIHMpIDogbV93aWR0aChzLndpZHRoKSwg
bV9oZWlnaHQocy5oZWlnaHQpCit7Cit9CisKK0Zsb2F0U2l6ZTo6b3BlcmF0b3IgQ0dTaXplKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gQ0dTaXplTWFrZShtX3dpZHRoLCBtX2hlaWdodCk7Cit9CisK
K30KKworI2VuZGlmIC8vIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0dyYXBoaWNzU2l6ZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc1NpemVDRy5jcHAJKHJldmlzaW9uIDkxMjAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NTaXplQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAgKi8KICAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHcmFwaGljc1NpemUu
aCIKIAogI2lmIFVTRShDRykgfHwgVVNFKFNLSUFfT05fTUFDX0NIUk9NSVVNKSB8fCAoUExBVEZP
Uk0oUVQpICYmIFVTRShRVEtJVCkpCiAKQEAgLTMzLDExICszMywxMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUZsb2F0U2l6ZTo6RmxvYXRTaXplKGNvbnN0IENHU2l6ZSYgcykgOiBtX3dp
ZHRoKHMud2lkdGgpLCBtX2hlaWdodChzLmhlaWdodCkKK0dyYXBoaWNzU2l6ZTo6R3JhcGhpY3NT
aXplKGNvbnN0IENHU2l6ZSYgcykgOiBtX3dpZHRoKHMud2lkdGgpLCBtX2hlaWdodChzLmhlaWdo
dCkKIHsKIH0KIAotRmxvYXRTaXplOjpvcGVyYXRvciBDR1NpemUoKSBjb25zdAorR3JhcGhpY3NT
aXplOjpvcGVyYXRvciBDR1NpemUoKSBjb25zdAogewogICAgIHJldHVybiBDR1NpemVNYWtlKG1f
d2lkdGgsIG1faGVpZ2h0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTgsNyArMTU4LDcgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVy
KGNvbnN0IEludFNpemUmIAogICAgICAgICByZXR1cm47CiAKICAgICBtX2NvbnRleHQ9IGFkb3B0
UHRyKG5ldyBHcmFwaGljc0NvbnRleHQoY2dDb250ZXh0LmdldCgpKSk7Ci0gICAgbV9jb250ZXh0
LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBtX2NvbnRleHQtPnNjYWxlKEdyYXBoaWNz
U2l6ZSgxLCAtMSkpOwogICAgIG1fY29udGV4dC0+dHJhbnNsYXRlKDAsIC1zaXplLmhlaWdodCgp
KTsKICAgICBzdWNjZXNzID0gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQqIAogICAgIC8vIElmIHRoZSBzb3VyY2UgcmVjdCBpcyBhIHN1YnBvcnRpb24gb2YgdGhlIGlt
YWdlLCB0aGVuIHdlIGNvbXB1dGUgYW4gaW5mbGF0ZWQgZGVzdGluYXRpb24gcmVjdCB0aGF0IHdp
bGwgaG9sZCB0aGUgZW50aXJlIGltYWdlCiAgICAgLy8gYW5kIHRoZW4gc2V0IGEgY2xpcCB0byB0
aGUgcG9ydGlvbiB0aGF0IHdlIHdhbnQgdG8gZGlzcGxheS4KICAgICBGbG9hdFJlY3QgYWRqdXN0
ZWREZXN0UmVjdCA9IGRlc3RSZWN0OwotICAgIEZsb2F0U2l6ZSBzZWxmU2l6ZSA9IGN1cnJlbnRG
cmFtZVNpemUoKTsKKyAgICBHcmFwaGljc1NpemUgc2VsZlNpemUgPSBjdXJyZW50RnJhbWVTaXpl
KCk7CiAgICAgaWYgKHNyY1JlY3Quc2l6ZSgpICE9IHNlbGZTaXplKSB7CiAgICAgICAgIENHSW50
ZXJwb2xhdGlvblF1YWxpdHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBDR0NvbnRleHRHZXRJbnRl
cnBvbGF0aW9uUXVhbGl0eShjb250ZXh0KTsKICAgICAgICAgLy8gV2hlbiB0aGUgaW1hZ2UgaXMg
c2NhbGVkIHVzaW5nIGhpZ2gtcXVhbGl0eSBpbnRlcnBvbGF0aW9uLCB3ZSBjcmVhdGUgYSB0ZW1w
b3JhcnkgQ0dJbWFnZQpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiAKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0TG9jYXRpb24oRmxvYXRQb2ludChkZXN0UmVjdC54
KCkgLSBzcmNSZWN0LngoKSAvIHhTY2FsZSwgZGVzdFJlY3QueSgpIC0gc3JjUmVjdC55KCkgLyB5
U2NhbGUpKTsKLSAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0U2l6ZShGbG9hdFNpemUo
c2VsZlNpemUud2lkdGgoKSAvIHhTY2FsZSwgc2VsZlNpemUuaGVpZ2h0KCkgLyB5U2NhbGUpKTsK
KyAgICAgICAgICAgIGFkanVzdGVkRGVzdFJlY3Quc2V0U2l6ZShHcmFwaGljc1NpemUoc2VsZlNp
emUud2lkdGgoKSAvIHhTY2FsZSwgc2VsZlNpemUuaGVpZ2h0KCkgLyB5U2NhbGUpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICghZGVzdFJlY3QuY29udGFpbnMoYWRqdXN0ZWREZXN0UmVjdCkp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5j
cHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGF0aENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIGJvb2wgUGF0
aDo6c3Ryb2tlQ29udGFpbnMoU3Ryb2tlU3R5bGVBcHAKICAgICByZXR1cm4gaGl0U3VjY2VzczsK
IH0KIAotdm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQordm9pZCBQ
YXRoOjp0cmFuc2xhdGUoY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKQogewogICAgIENHQWZmaW5l
VHJhbnNmb3JtIHRyYW5zbGF0aW9uID0gQ0dBZmZpbmVUcmFuc2Zvcm1NYWtlKDEsIDAsIDAsIDEs
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAgICAgQ0dNdXRhYmxlUGF0aFJlZiBuZXdQ
YXRoID0gQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmgJ
KHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbnZvbHZlTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpZiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRl
ICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NTaXplLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGlu
ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAJKHJl
dmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURyb3BTaGFkb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw4ICs4OCw4IEBAIHZvaWQg
RkVEcm9wU2hhZG93OjphcHBseSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZpbHRlciogZmls
dGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgRmxvYXRTaXplIGJsdXJSYWRpdXMoZmlsdGVyLT5h
cHBseUhvcml6b250YWxTY2FsZShtX3N0ZFgpLCBmaWx0ZXItPmFwcGx5VmVydGljYWxTY2FsZSht
X3N0ZFkpKTsKLSAgICBGbG9hdFNpemUgb2Zmc2V0KGZpbHRlci0+YXBwbHlIb3Jpem9udGFsU2Nh
bGUobV9keCksIGZpbHRlci0+YXBwbHlWZXJ0aWNhbFNjYWxlKG1fZHkpKTsKKyAgICBHcmFwaGlj
c1NpemUgYmx1clJhZGl1cyhmaWx0ZXItPmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fc3RkWCksIGZp
bHRlci0+YXBwbHlWZXJ0aWNhbFNjYWxlKG1fc3RkWSkpOworICAgIEdyYXBoaWNzU2l6ZSBvZmZz
ZXQoZmlsdGVyLT5hcHBseUhvcml6b250YWxTY2FsZShtX2R4KSwgZmlsdGVyLT5hcHBseVZlcnRp
Y2FsU2NhbGUobV9keSkpOwogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5n
UmVnaW9uT2ZJbnB1dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBGbG9hdFJl
Y3QgZHJhd2luZ1JlZ2lvbldpdGhPZmZzZXQoZHJhd2luZ1JlZ2lvbik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgJKHJldmlz
aW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKEZJ
TFRFUlMpCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKIAogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShQYXNzT3duUHRyPEltYWdlQnVmZmVy
PiBzb3VyY2VJbWFnZSkgeyBtX3NvdXJjZUltYWdlID0gc291cmNlSW1hZ2U7IH0KICAgICAgICAg
SW1hZ2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsg
fQogCi0gICAgICAgIEZsb2F0U2l6ZSBmaWx0ZXJSZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9maWx0ZXJSZXNvbHV0aW9uOyB9Ci0gICAgICAgIHZvaWQgc2V0RmlsdGVyUmVzb2x1dGlvbihj
b25zdCBGbG9hdFNpemUmIGZpbHRlclJlc29sdXRpb24pIHsgbV9maWx0ZXJSZXNvbHV0aW9uID0g
ZmlsdGVyUmVzb2x1dGlvbjsgfQorICAgICAgICBHcmFwaGljc1NpemUgZmlsdGVyUmVzb2x1dGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVzb2x1dGlvbjsgfQorICAgICAgICB2b2lkIHNl
dEZpbHRlclJlc29sdXRpb24oY29uc3QgR3JhcGhpY3NTaXplJiBmaWx0ZXJSZXNvbHV0aW9uKSB7
IG1fZmlsdGVyUmVzb2x1dGlvbiA9IGZpbHRlclJlc29sdXRpb247IH0KIAogICAgICAgICB2aXJ0
dWFsIGZsb2F0IGFwcGx5SG9yaXpvbnRhbFNjYWxlKGZsb2F0IHZhbHVlKSBjb25zdCB7IHJldHVy
biB2YWx1ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbi53aWR0aCgpOyB9CiAgICAgICAgIHZpcnR1YWwg
ZmxvYXQgYXBwbHlWZXJ0aWNhbFNjYWxlKGZsb2F0IHZhbHVlKSBjb25zdCB7IHJldHVybiB2YWx1
ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbi5oZWlnaHQoKTsgfQpAQCAtNTgsNyArNTgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBPd25QdHI8SW1hZ2VCdWZm
ZXI+IG1fc291cmNlSW1hZ2U7Ci0gICAgICAgIEZsb2F0U2l6ZSBtX2ZpbHRlclJlc29sdXRpb247
CisgICAgICAgIEdyYXBoaWNzU2l6ZSBtX2ZpbHRlclJlc29sdXRpb247CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21wbGV4VGV4dENvbnRyb2xsZXIuaCIK
IAotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2lu
Y2x1ZGUgIkZvbnQuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUg
IlRleHRSdW4uaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
bG9hdFNpemVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0Zsb2F0U2l6ZU1hYy5tbQkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUgTm9raWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotIAotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNp
Zm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKLQotRmxvYXRT
aXplOjpGbG9hdFNpemUoY29uc3QgTlNTaXplJiBzKSA6IG1fd2lkdGgocy53aWR0aCksIG1faGVp
Z2h0KHMuaGVpZ2h0KQotewotfQotCi1GbG9hdFNpemU6Om9wZXJhdG9yIE5TU2l6ZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIE5TTWFrZVNpemUobV93aWR0aCwgbV9oZWlnaHQpOwotfQotCi0jZW5k
aWYKLQotfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0ZvbnRNYWMubW0JKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBA
QCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjCiAgICAgICAgIENHQ29u
dGV4dFNldEZvbnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLm1fc2l6ZSk7CiAKIAotICAg
IEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisgICAgR3JhcGhpY3NTaXplIHNoYWRvd09mZnNldDsK
ICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIENvbG9y
U3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9HcmFwaGljc1NpemVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzU2l6ZU1hYy5tbQkocmV2aXNpb24gOTEy
MDApCShmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVN
YWMubW06OTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3Jh
cGhpY3NTaXplTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworIAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1F
X0FTX0NHR0VPTUVUUllfVFlQRVMKKworRmxvYXRTaXplOjpGbG9hdFNpemUoY29uc3QgTlNTaXpl
JiBzKSA6IG1fd2lkdGgocy53aWR0aCksIG1faGVpZ2h0KHMuaGVpZ2h0KQoreworfQorCitGbG9h
dFNpemU6Om9wZXJhdG9yIE5TU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE5TTWFrZVNpemUo
bV93aWR0aCwgbV9oZWlnaHQpOworfQorCisjZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzU2l6ZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NTaXplTWFjLm1t
CShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc1NpemVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDE3ICsyNSwxNyBAQAog
ICovCiAgCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5j
bHVkZSAiR3JhcGhpY3NTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmbmRlZiBO
U0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogCi1GbG9hdFNpemU6OkZs
b2F0U2l6ZShjb25zdCBOU1NpemUmIHMpIDogbV93aWR0aChzLndpZHRoKSwgbV9oZWlnaHQocy5o
ZWlnaHQpCitHcmFwaGljc1NpemU6OkdyYXBoaWNzU2l6ZShjb25zdCBOU1NpemUmIHMpIDogbV93
aWR0aChzLndpZHRoKSwgbV9oZWlnaHQocy5oZWlnaHQpCiB7CiB9CiAKLUZsb2F0U2l6ZTo6b3Bl
cmF0b3IgTlNTaXplKCkgY29uc3QKK0dyYXBoaWNzU2l6ZTo6b3BlcmF0b3IgTlNTaXplKCkgY29u
c3QKIHsKICAgICByZXR1cm4gTlNNYWtlU2l6ZShtX3dpZHRoLCBtX2hlaWdodCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisj
aW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CiAKICNpZmRlZiBfX09CSkNfXwpAQCAtMjAwLDcgKzIwMCw3IEBAIHBy
aXZhdGU6CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKICAg
ICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgSW50UmVjdCBtX3Jl
Y3Q7Ci0gICAgRmxvYXRTaXplIG1fc2NhbGVGYWN0b3I7CisgICAgR3JhcGhpY3NTaXplIG1fc2Nh
bGVGYWN0b3I7CiAgICAgdW5zaWduZWQgbV9lbmFibGVkVHJhY2tDb3VudDsKICAgICB1bnNpZ25l
ZCBtX3RvdGFsVHJhY2tDb3VudDsKICAgICBmbG9hdCBtX3JlcG9ydGVkRHVyYXRpb247CkBAIC0y
MjAsNyArMjIwLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV90aW1lU3RhcnRlZFBsYXlpbmc7
CiAgICAgZG91YmxlIG1fdGltZVN0b3BwZWRQbGF5aW5nOwogI2VuZGlmCi0gICAgbXV0YWJsZSBG
bG9hdFNpemUgbV9jYWNoZWROYXR1cmFsU2l6ZTsKKyAgICBtdXRhYmxlIEdyYXBoaWNzU2l6ZSBt
X2NhY2hlZE5hdHVyYWxTaXplOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5tbQkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTgy
Niw3ICs4MjYsNyBAQCBJbnRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpuYXR1cmFsCiAg
ICAgLy8gICAgZGltZW5zaW9ucywgYXNwZWN0IHJhdGlvLCBjbGVhbiBhcGVydHVyZSwgcmVzb2x1
dGlvbiwgYW5kIHNvIGZvcnRoLCBhcyBkZWZpbmVkIGZvciB0aGUgCiAgICAgLy8gICAgZm9ybWF0
IHVzZWQgYnkgdGhlIHJlc291cmNlCiAgICAgCi0gICAgRmxvYXRTaXplIG5hdHVyYWxTaXplKFtb
bV9xdE1vdmllLmdldCgpIGF0dHJpYnV0ZUZvcktleTpRVE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1
dGVdIHNpemVWYWx1ZV0pOworICAgIEdyYXBoaWNzU2l6ZSBuYXR1cmFsU2l6ZShbW21fcXRNb3Zp
ZS5nZXQoKSBhdHRyaWJ1dGVGb3JLZXk6UVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRlXSBzaXpl
VmFsdWVdKTsKICAgICBpZiAobmF0dXJhbFNpemUuaXNFbXB0eSgpICYmIG1faXNTdHJlYW1pbmcp
IHsKICAgICAgICAgLy8gSFRUUCBMaXZlIFN0cmVhbXMgd2lsbCBvY2Nhc2lvbmFsbHkgcmV0dXJu
IHswLDB9IG5hdHVyYWwgc2l6ZXMgd2hpbGUgc2NydWJiaW5nLgogICAgICAgICAvLyBXb3JrIGFy
b3VuZCB0aGlzIHByb2JsZW0gKDxyZGFyOi8vcHJvYmxlbS85MDc4NTYzPikgYnkgcmV0dXJuaW5n
IHRoZSBsYXN0IHZhbGlkIApAQCAtMTMwNiw3ICsxMzA2LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6cGFpbnQoR3JhcAogICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBzZXREZWxh
eUNhbGxiYWNrczpZRVNdOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICBO
U0dyYXBoaWNzQ29udGV4dCogbmV3Q29udGV4dDsKLSAgICBGbG9hdFNpemUgc2NhbGVGYWN0b3Io
MS4wZiwgLTEuMGYpOworICAgIEdyYXBoaWNzU2l6ZSBzY2FsZUZhY3RvcigxLjBmLCAtMS4wZik7
CiAgICAgSW50UmVjdCBwYWludFJlY3QoSW50UG9pbnQoMCwgMCksIEludFNpemUoci53aWR0aCgp
LCByLmhlaWdodCgpKSk7CiAKICNpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUS0lUKQpAQCAtMTM3
MSw3ICsxMzcxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3JhcAog
ICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBTdHJpbmc6OmZvcm1hdCgiJTEuMmYiLCBmcmFtZVJh
dGUpOwogICAgICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0
Lmxlbmd0aCgpKTsKICAgICAgICAgICAgIGNvbnN0IENvbG9yIGNvbG9yKDI1NSwgMCwgMCk7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsgICAgCisg
ICAgICAgICAgICBjb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoMS4wZiwgLTEuMGYpKTsgICAg
CiAgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGVUb1VzZS0+
Y29sb3JTcGFjZSgpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlk
U3Ryb2tlKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgZGVsZXRlRHJhZ0ltYWdl
KFJldGFpblB0cjxOU0ltYWdlPikKICAgICAvLyBkZWxldGUgaXQuIEl0IHdpbGwgYmUgcmVsZWFz
ZWQgd2hlbiBpdCBmYWxscyBvdXQgb2Ygc2NvcGUuCiB9CiAKLVJldGFpblB0cjxOU0ltYWdlPiBz
Y2FsZURyYWdJbWFnZShSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2UsIEZsb2F0U2l6ZSBzY2FsZSkK
K1JldGFpblB0cjxOU0ltYWdlPiBzY2FsZURyYWdJbWFnZShSZXRhaW5QdHI8TlNJbWFnZT4gaW1h
Z2UsIEdyYXBoaWNzU2l6ZSBzY2FsZSkKIHsKICAgICBOU1NpemUgb3JpZ2luYWxTaXplID0gW2lt
YWdlLmdldCgpIHNpemVdOwogICAgIE5TU2l6ZSBuZXdTaXplID0gTlNNYWtlU2l6ZSgob3JpZ2lu
YWxTaXplLndpZHRoICogc2NhbGUud2lkdGgoKSksIChvcmlnaW5hbFNpemUuaGVpZ2h0ICogc2Nh
bGUuaGVpZ2h0KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxB
bmltYXRvck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICsz
MCw3IEBACiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgot
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1
ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CkBAIC0xNTIsMTUgKzE1MiwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9k
aWRDdW11bGF0aXZlSG9yaXpvbnRhbFNjcm9sbEV2ZXJTd2l0Y2hUb09wcG9zaXRlRGlyZWN0aW9u
T2ZQaW47CiAgICAgCiAgICAgQ0ZUaW1lSW50ZXJ2YWwgbV9sYXN0TW9tZW50dW1TY3JvbGxUaW1l
c3RhbXA7Ci0gICAgRmxvYXRTaXplIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YTsKLSAgICBGbG9hdFNp
emUgbV9zdHJldGNoU2Nyb2xsRm9yY2U7Ci0gICAgRmxvYXRTaXplIG1fbW9tZW50dW1WZWxvY2l0
eTsKKyAgICBHcmFwaGljc1NpemUgbV9vdmVyZmxvd1Njcm9sbERlbHRhOworICAgIEdyYXBoaWNz
U2l6ZSBtX3N0cmV0Y2hTY3JvbGxGb3JjZTsKKyAgICBHcmFwaGljc1NpemUgbV9tb21lbnR1bVZl
bG9jaXR5OwogCiAgICAgLy8gUnViYmVyIGJhbmQgc3RhdGUuCiAgICAgQ0ZUaW1lSW50ZXJ2YWwg
bV9zdGFydFRpbWU7Ci0gICAgRmxvYXRTaXplIG1fc3RhcnRTdHJldGNoOworICAgIEdyYXBoaWNz
U2l6ZSBtX3N0YXJ0U3RyZXRjaDsKICAgICBGbG9hdFBvaW50IG1fb3JpZ09yaWdpbjsKLSAgICBG
bG9hdFNpemUgbV9vcmlnVmVsb2NpdHk7CisgICAgR3JhcGhpY3NTaXplIG1fb3JpZ1ZlbG9jaXR5
OwogICAgIFRpbWVyPFNjcm9sbEFuaW1hdG9yTWFjPiBtX3NuYXBSdWJiZXJCYW5kVGltZXI7CiAj
ZW5kaWYKICAgICBib29sIG1fZHJhd2luZ0ludG9MYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHJldmlzaW9uIDkxMjAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC04NjUsNyArODY1LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6
aGFuZGxlR2VzdHVyZUV2ZQogCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpwaW5uZWRJbkRpcmVj
dGlvbihmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSkKIHsKLSAgICBGbG9hdFNpemUgbGltaXRE
ZWx0YTsKKyAgICBHcmFwaGljc1NpemUgbGltaXREZWx0YTsKICAgICBpZiAoZmFic2YoZGVsdGFZ
KSA+PSBmYWJzZihkZWx0YVgpKSB7CiAgICAgICAgIGlmIChkZWx0YVkgPCAwKSB7CiAgICAgICAg
ICAgICAvLyBXZSBhcmUgdHJ5aW5nIHRvIHNjcm9sbCB1cC4gIE1ha2Ugc3VyZSB3ZSBhcmUgbm90
IHBpbm5lZCB0byB0aGUgdG9wCkBAIC05MzMsNyArOTMzLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRv
ck1hYzo6c21vb3RoU2Nyb2xsV2l0aAogICAgIGZsb2F0IGRlbHRhWSA9IG1fb3ZlcmZsb3dTY3Jv
bGxEZWx0YS5oZWlnaHQoKTsKIAogICAgIC8vIFJlc2V0IG92ZXJmbG93IHZhbHVlcyBiZWNhdXNl
IHdlIG1heSBkZWNpZGUgdG8gcmVtb3ZlIGRlbHRhIGF0IHZhcmlvdXMgcG9pbnRzIGFuZCBwdXQg
aXQgaW50byBvdmVyZmxvdy4KLSAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEgPSBGbG9hdFNpemUo
KTsKKyAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEgPSBHcmFwaGljc1NpemUoKTsKIAogICAgIGZs
b2F0IGV2ZW50Q29hbGVzY2VkRGVsdGFYID0gLXdoZWVsRXZlbnQuZGVsdGFYKCk7CiAgICAgZmxv
YXQgZXZlbnRDb2FsZXNjZWREZWx0YVkgPSAtd2hlZWxFdmVudC5kZWx0YVkoKTsKQEAgLTk3MCw3
ICs5NzAsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpzbW9vdGhTY3JvbGxXaXRoCiAgICAg
ICAgICAgICBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCA9IHdoZWVsRXZlbnQudGltZXN0
YW1wKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2xhc3RNb21lbnR1bVNjcm9s
bFRpbWVzdGFtcCA9IHdoZWVsRXZlbnQudGltZXN0YW1wKCk7Ci0gICAgICAgICAgICBtX21vbWVu
dHVtVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsKKyAgICAgICAgICAgIG1fbW9tZW50dW1WZWxvY2l0
eSA9IEdyYXBoaWNzU2l6ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzVmVydGljYWxs
eVN0cmV0Y2hlZCkgewpAQCAtMTA2MCw3ICsxMDYwLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1h
Yzo6c21vb3RoU2Nyb2xsV2l0aAogICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xsRm9yY2Uuc2V0
V2lkdGgobV9zdHJldGNoU2Nyb2xsRm9yY2Uud2lkdGgoKSArIGRlbHRhWCk7CiAgICAgICAgICAg
ICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRIZWlnaHQobV9zdHJldGNoU2Nyb2xsRm9yY2UuaGVp
Z2h0KCkgKyBkZWx0YVkpOwogCi0gICAgICAgICAgICBGbG9hdFNpemUgZGFtcGVkRGVsdGEoY2Vp
bGYoZWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKG1fc3RyZXRjaFNjcm9sbEZvcmNlLndpZHRo
KCkpKSwgY2VpbGYoZWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKG1fc3RyZXRjaFNjcm9sbEZv
cmNlLmhlaWdodCgpKSkpOworICAgICAgICAgICAgR3JhcGhpY3NTaXplIGRhbXBlZERlbHRhKGNl
aWxmKGVsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YShtX3N0cmV0Y2hTY3JvbGxGb3JjZS53aWR0
aCgpKSksIGNlaWxmKGVsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YShtX3N0cmV0Y2hTY3JvbGxG
b3JjZS5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgb3JpZ09yaWdpbiA9ICht
X3Njcm9sbGFibGVBcmVhLT52aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpICsgbV9zY3Jv
bGxhYmxlQXJlYS0+c2Nyb2xsT3JpZ2luKCkpIC0gc3RyZXRjaEFtb3VudDsKICAgICAgICAgICAg
IEZsb2F0UG9pbnQgbmV3T3JpZ2luID0gb3JpZ09yaWdpbiArIGRhbXBlZERlbHRhOwogCkBAIC0x
MDg4LDcgKzEwODgsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpiZWdpblNjcm9sbEdlc3R1
CiAgICAgbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICBtX2lnbm9yZU1v
bWVudHVtU2Nyb2xscyA9IGZhbHNlOwogICAgIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1w
ID0gMDsKLSAgICBtX21vbWVudHVtVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsKKyAgICBtX21vbWVu
dHVtVmVsb2NpdHkgPSBHcmFwaGljc1NpemUoKTsKICAgICBtX3Njcm9sbGVySW5pdGlhbGx5UGlu
bmVkT25MZWZ0ID0gbV9zY3JvbGxhYmxlQXJlYS0+aXNIb3Jpem9udGFsU2Nyb2xsZXJQaW5uZWRU
b01pbmltdW1Qb3NpdGlvbigpOwogICAgIG1fc2Nyb2xsZXJJbml0aWFsbHlQaW5uZWRPblJpZ2h0
ID0gbV9zY3JvbGxhYmxlQXJlYS0+aXNIb3Jpem9udGFsU2Nyb2xsZXJQaW5uZWRUb01heGltdW1Q
b3NpdGlvbigpOwogICAgIG1fY3VtdWxhdGl2ZUhvcml6b250YWxTY3JvbGwgPSAwOwpAQCAtMTA5
OCw3ICsxMDk4LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6YmVnaW5TY3JvbGxHZXN0dQog
ICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldFdpZHRoKHJlYm91bmREZWx0YUZvckVsYXN0aWNE
ZWx0YShzdHJldGNoQW1vdW50LndpZHRoKCkpKTsKICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5z
ZXRIZWlnaHQocmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKHN0cmV0Y2hBbW91bnQuaGVpZ2h0
KCkpKTsKIAotICAgIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YSA9IEZsb2F0U2l6ZSgpOworICAgIG1f
b3ZlcmZsb3dTY3JvbGxEZWx0YSA9IEdyYXBoaWNzU2l6ZSgpOwogICAgIAogICAgIGlmIChtX3Nu
YXBSdWJiZXJCYW5kVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9zbmFwUnViYmVyQmFuZFRp
bWVyLnN0b3AoKTsKQEAgLTExMTUsNyArMTExNSw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6
OnNuYXBSdWJiZXJCYW5kKCkKIHsKICAgICBDRlRpbWVJbnRlcnZhbCB0aW1lRGVsdGEgPSBbW05T
UHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0gLSBtX2xhc3RNb21lbnR1bVNj
cm9sbFRpbWVzdGFtcDsKICAgICBpZiAobV9sYXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXAgJiYg
dGltZURlbHRhID49IHNjcm9sbFZlbG9jaXR5WmVyb2luZ1RpbWVvdXQpCi0gICAgICAgIG1fbW9t
ZW50dW1WZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworICAgICAgICBtX21vbWVudHVtVmVsb2NpdHkg
PSBHcmFwaGljc1NpemUoKTsKIAogICAgIG1faW5TY3JvbGxHZXN0dXJlID0gZmFsc2U7CiAKQEAg
LTExMjMsOSArMTEyMyw5IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNuYXBSdWJiZXJCYW5k
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zdGFydFRpbWUgPSBbTlNEYXRlIHRpbWVJbnRl
cnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV07Ci0gICAgbV9zdGFydFN0cmV0Y2ggPSBGbG9hdFNpemUo
KTsKKyAgICBtX3N0YXJ0U3RyZXRjaCA9IEdyYXBoaWNzU2l6ZSgpOwogICAgIG1fb3JpZ09yaWdp
biA9IEZsb2F0UG9pbnQoKTsKLSAgICBtX29yaWdWZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworICAg
IG1fb3JpZ1ZlbG9jaXR5ID0gR3JhcGhpY3NTaXplKCk7CiAKICAgICBtX3NuYXBSdWJiZXJCYW5k
VGltZXIuc3RhcnRSZXBlYXRpbmcoMS4wLzYwLjApOwogfQpAQCAtMTE0OSwxNSArMTE0OSwxNSBA
QCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpzbmFwUnViYmVyQmFuZFRpCiAgICAgaWYgKCFtX21v
bWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyB8fCBtX2lnbm9yZU1vbWVudHVtU2Nyb2xscykgewogICAg
ICAgICBDRlRpbWVJbnRlcnZhbCB0aW1lRGVsdGEgPSBbTlNEYXRlIHRpbWVJbnRlcnZhbFNpbmNl
UmVmZXJlbmNlRGF0ZV0gLSBtX3N0YXJ0VGltZTsKIAotICAgICAgICBpZiAobV9zdGFydFN0cmV0
Y2ggPT0gRmxvYXRTaXplKCkpIHsKKyAgICAgICAgaWYgKG1fc3RhcnRTdHJldGNoID09IEdyYXBo
aWNzU2l6ZSgpKSB7CiAgICAgICAgICAgICBtX3N0YXJ0U3RyZXRjaCA9IG1fc2Nyb2xsYWJsZUFy
ZWEtPm92ZXJoYW5nQW1vdW50KCk7Ci0gICAgICAgICAgICBpZiAobV9zdGFydFN0cmV0Y2ggPT0g
RmxvYXRTaXplKCkpIHsgICAgCisgICAgICAgICAgICBpZiAobV9zdGFydFN0cmV0Y2ggPT0gR3Jh
cGhpY3NTaXplKCkpIHsgICAgCiAgICAgICAgICAgICAgICAgbV9zbmFwUnViYmVyQmFuZFRpbWVy
LnN0b3AoKTsKLSAgICAgICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZSA9IEZsb2F0U2l6
ZSgpOworICAgICAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlID0gR3JhcGhpY3NTaXpl
KCk7CiAgICAgICAgICAgICAgICAgbV9zdGFydFRpbWUgPSAwOwotICAgICAgICAgICAgICAgIG1f
c3RhcnRTdHJldGNoID0gRmxvYXRTaXplKCk7CisgICAgICAgICAgICAgICAgbV9zdGFydFN0cmV0
Y2ggPSBHcmFwaGljc1NpemUoKTsKICAgICAgICAgICAgICAgICBtX29yaWdPcmlnaW4gPSBGbG9h
dFBvaW50KCk7Ci0gICAgICAgICAgICAgICAgbV9vcmlnVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsK
KyAgICAgICAgICAgICAgICBtX29yaWdWZWxvY2l0eSA9IEdyYXBoaWNzU2l6ZSgpOwogCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTE5Miw3ICsxMTkyLDcgQEAg
dm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c25hcFJ1YmJlckJhbmRUaQogICAgICAgICAgICAgaW1t
ZWRpYXRlU2Nyb2xsVG9Qb2ludChuZXdPcmlnaW4pOwogICAgICAgICAgICAgbV9zY3JvbGxhYmxl
QXJlYS0+c2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7CiAKLSAgICAg
ICAgICAgIEZsb2F0U2l6ZSBuZXdTdHJldGNoID0gbV9zY3JvbGxhYmxlQXJlYS0+b3ZlcmhhbmdB
bW91bnQoKTsKKyAgICAgICAgICAgIEdyYXBoaWNzU2l6ZSBuZXdTdHJldGNoID0gbV9zY3JvbGxh
YmxlQXJlYS0+b3ZlcmhhbmdBbW91bnQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9z
dHJldGNoU2Nyb2xsRm9yY2Uuc2V0V2lkdGgocmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKG5l
d1N0cmV0Y2gud2lkdGgoKSkpOwogICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xsRm9yY2Uuc2V0
SGVpZ2h0KHJlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YShuZXdTdHJldGNoLmhlaWdodCgpKSk7
CkBAIC0xMjAyLDE2ICsxMjAyLDE2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNuYXBSdWJi
ZXJCYW5kVGkKICAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPmRpZENvbXBsZXRlUnViYmVy
QmFuZChyb3VuZGVkSW50U2l6ZShtX3N0YXJ0U3RyZXRjaCkpOwogCiAgICAgICAgICAgICBtX3Nu
YXBSdWJiZXJCYW5kVGltZXIuc3RvcCgpOwotICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xsRm9y
Y2UgPSBGbG9hdFNpemUoKTsKKyAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlID0gR3Jh
cGhpY3NTaXplKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fc3RhcnRUaW1lID0gMDsK
LSAgICAgICAgICAgIG1fc3RhcnRTdHJldGNoID0gRmxvYXRTaXplKCk7CisgICAgICAgICAgICBt
X3N0YXJ0U3RyZXRjaCA9IEdyYXBoaWNzU2l6ZSgpOwogICAgICAgICAgICAgbV9vcmlnT3JpZ2lu
ID0gRmxvYXRQb2ludCgpOwotICAgICAgICAgICAgbV9vcmlnVmVsb2NpdHkgPSBGbG9hdFNpemUo
KTsKKyAgICAgICAgICAgIG1fb3JpZ1ZlbG9jaXR5ID0gR3JhcGhpY3NTaXplKCk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBtX3N0YXJ0VGltZSA9IFtOU0RhdGUgdGltZUludGVy
dmFsU2luY2VSZWZlcmVuY2VEYXRlXTsKLSAgICAgICAgbV9zdGFydFN0cmV0Y2ggPSBGbG9hdFNp
emUoKTsKKyAgICAgICAgbV9zdGFydFN0cmV0Y2ggPSBHcmFwaGljc1NpemUoKTsKICAgICB9CiB9
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHJl
dmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNyArMjcyLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRDaGVj
a2JveChDb250cm9sU3RhdGVzIAogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0
ZWRSZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldEhl
aWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgY29udGV4
dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOwotICAgICAg
ICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rvciwgem9vbUZhY3RvcikpOworICAg
ICAgICBjb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoem9vbUZhY3Rvciwgem9vbUZhY3Rvcikp
OwogICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRl
ZFJlY3QueSgpKTsKICAgICB9CiAgICAgCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRSYWRpbyhDb250cm9sU3RhdGVzIHN0YQogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lk
dGgoaW5mbGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgaW5mbGF0ZWRS
ZWN0LnNldEhlaWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKICAgICAg
ICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkp
OwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rvciwgem9vbUZhY3Rv
cikpOworICAgICAgICBjb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoem9vbUZhY3Rvciwgem9v
bUZhY3RvcikpOwogICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCks
IC1pbmZsYXRlZFJlY3QueSgpKTsKICAgICB9CiAgICAgCkBAIC00NjYsNyArNDY2LDcgQEAgc3Rh
dGljIHZvaWQgcGFpbnRCdXR0b24oQ29udHJvbFBhcnQgcGFydAogICAgICAgICAgICAgaW5mbGF0
ZWRSZWN0LnNldFdpZHRoKGluZmxhdGVkUmVjdC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAgICAg
ICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpv
b21GYWN0b3IpOwogICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGluZmxhdGVkUmVjdC54
KCksIGluZmxhdGVkUmVjdC55KCkpOwotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRT
aXplKHpvb21GYWN0b3IsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjYWxl
KEdyYXBoaWNzU2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CiAgICAgICAgICAgICBjb250
ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAg
ICAgICAgfQogICAgIH0gCkBAIC01MzMsNyArNTMzLDcgQEAgc3RhdGljIHZvaWQgcGFpbnRTdGVw
cGVyKENvbnRyb2xTdGF0ZXMgcwogICAgICAgICByZWN0LnNldFdpZHRoKHJlY3Qud2lkdGgoKSAv
IHpvb21GYWN0b3IpOwogICAgICAgICByZWN0LnNldEhlaWdodChyZWN0LmhlaWdodCgpIC8gem9v
bUZhY3Rvcik7CiAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkp
OwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rvciwgem9vbUZhY3Rv
cikpOworICAgICAgICBjb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoem9vbUZhY3Rvciwgem9v
bUZhY3RvcikpOwogICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55
KCkpOwogICAgIH0KICAgICBDR1JlY3QgYm91bmRzKHJlY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVCb3guaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBw
dWJsaWM6CiAKICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbCgp
ID8gbG9naWNhbFdpZHRoKCkgOiBsb2dpY2FsSGVpZ2h0KCk7IH0KICAgICBmbG9hdCBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxIZWlnaHQoKSA6IGxvZ2lj
YWxXaWR0aCgpOyB9Ci0gICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXpl
KHdpZHRoKCksIGhlaWdodCgpKTsgfQorICAgIEdyYXBoaWNzU2l6ZSBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gSW50U2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7IH0KICAgICBmbG9hdCByaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGxlZnQoKSArIHdpZHRoKCk7IH0KICAgICBmbG9hdCBib3R0b20oKSBjb25z
dCB7IHJldHVybiB0b3AoKSArIGhlaWdodCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEs
MTUgKzM2MSwxNSBAQCBib29sIElubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1GbG9hdFNpemUgSW5saW5lVGV4dEJveDo6YXBwbHlTaGFk
b3dUb0dyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNoYWRv
d0RhdGEqIHNoYWRvdywgY29uc3QgRmxvYXRSZWN0JiB0ZXh0UmVjdCwgYm9vbCBzdHJva2VkLCBi
b29sIG9wYXF1ZSwgYm9vbCBob3Jpem9udGFsKQorR3JhcGhpY3NTaXplIElubGluZVRleHRCb3g6
OmFwcGx5U2hhZG93VG9HcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZsb2F0UmVjdCYgdGV4dFJlY3QsIGJvb2wg
c3Ryb2tlZCwgYm9vbCBvcGFxdWUsIGJvb2wgaG9yaXpvbnRhbCkKIHsKICAgICBpZiAoIXNoYWRv
dykKLSAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOworICAgICAgICByZXR1cm4gR3JhcGhpY3NT
aXplKCk7CiAKLSAgICBGbG9hdFNpemUgZXh0cmFPZmZzZXQ7CisgICAgR3JhcGhpY3NTaXplIGV4
dHJhT2Zmc2V0OwogICAgIGludCBzaGFkb3dYID0gaG9yaXpvbnRhbCA/IHNoYWRvdy0+eCgpIDog
c2hhZG93LT55KCk7CiAgICAgaW50IHNoYWRvd1kgPSBob3Jpem9udGFsID8gc2hhZG93LT55KCkg
OiAtc2hhZG93LT54KCk7Ci0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldChzaGFkb3dYLCBzaGFk
b3dZKTsKKyAgICBHcmFwaGljc1NpemUgc2hhZG93T2Zmc2V0KHNoYWRvd1gsIHNoYWRvd1kpOwog
ICAgIGludCBzaGFkb3dCbHVyID0gc2hhZG93LT5ibHVyKCk7CiAgICAgY29uc3QgQ29sb3ImIHNo
YWRvd0NvbG9yID0gc2hhZG93LT5jb2xvcigpOwogCkBAIC0zODAsNyArMzgwLDcgQEAgRmxvYXRT
aXplIElubGluZVRleHRCb3g6OmFwcGx5U2hhZG93VG9HcgogICAgICAgICBjb250ZXh0LT5zYXZl
KCk7CiAgICAgICAgIGNvbnRleHQtPmNsaXAoc2hhZG93UmVjdCk7CiAKLSAgICAgICAgZXh0cmFP
ZmZzZXQgPSBGbG9hdFNpemUoMCwgMiAqIHRleHRSZWN0LmhlaWdodCgpICsgbWF4KDAuMGYsIHNo
YWRvd09mZnNldC5oZWlnaHQoKSkgKyBzaGFkb3dCbHVyKTsKKyAgICAgICAgZXh0cmFPZmZzZXQg
PSBHcmFwaGljc1NpemUoMCwgMiAqIHRleHRSZWN0LmhlaWdodCgpICsgbWF4KDAuMGYsIHNoYWRv
d09mZnNldC5oZWlnaHQoKSkgKyBzaGFkb3dCbHVyKTsKICAgICAgICAgc2hhZG93T2Zmc2V0IC09
IGV4dHJhT2Zmc2V0OwogICAgIH0KIApAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGgKICAgICBpbnQgc2VsSGVpZ2h0ID0gc2VsZWN0aW9u
SGVpZ2h0KCk7CiAgICAgRmxvYXRQb2ludCBsb2NhbE9yaWdpbihib3hPcmlnaW4ueCgpLCBib3hP
cmlnaW4ueSgpIC0gZGVsdGFZKTsKIAotICAgIEZsb2F0UmVjdCBjbGlwUmVjdChsb2NhbE9yaWdp
biwgRmxvYXRTaXplKG1fbG9naWNhbFdpZHRoLCBzZWxIZWlnaHQpKTsKKyAgICBGbG9hdFJlY3Qg
Y2xpcFJlY3QobG9jYWxPcmlnaW4sIEdyYXBoaWNzU2l6ZShtX2xvZ2ljYWxXaWR0aCwgc2VsSGVp
Z2h0KSk7CiAgICAgZmxvYXQgbWF4WCA9IGZsb29yZihjbGlwUmVjdC5tYXhYKCkpOwogICAgIGNs
aXBSZWN0LnNldFgoZmxvb3JmKGNsaXBSZWN0LngoKSkpOwogICAgIGNsaXBSZWN0LnNldFdpZHRo
KG1heFggLSBjbGlwUmVjdC54KCkpOwpAQCAtOTA1LDkgKzkwNSw5IEBAIHZvaWQgSW5saW5lVGV4
dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXAKICAgICBib29sIHNldENsaXAgPSBmYWxzZTsKICAg
ICBpbnQgZXh0cmFPZmZzZXQgPSAwOwogICAgIGlmICghbGluZXNBcmVPcGFxdWUgJiYgc2hhZG93
ICYmIHNoYWRvdy0+bmV4dCgpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBjbGlwUmVjdChsb2NhbE9y
aWdpbiwgRmxvYXRTaXplKHdpZHRoLCBiYXNlbGluZSArIDIpKTsKKyAgICAgICAgRmxvYXRSZWN0
IGNsaXBSZWN0KGxvY2FsT3JpZ2luLCBHcmFwaGljc1NpemUod2lkdGgsIGJhc2VsaW5lICsgMikp
OwogICAgICAgICBmb3IgKGNvbnN0IFNoYWRvd0RhdGEqIHMgPSBzaGFkb3c7IHM7IHMgPSBzLT5u
ZXh0KCkpIHsKLSAgICAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KGxvY2FsT3JpZ2luLCBG
bG9hdFNpemUod2lkdGgsIGJhc2VsaW5lICsgMikpOworICAgICAgICAgICAgRmxvYXRSZWN0IHNo
YWRvd1JlY3QobG9jYWxPcmlnaW4sIEdyYXBoaWNzU2l6ZSh3aWR0aCwgYmFzZWxpbmUgKyAyKSk7
CiAgICAgICAgICAgICBzaGFkb3dSZWN0LmluZmxhdGUocy0+Ymx1cigpKTsKICAgICAgICAgICAg
IGludCBzaGFkb3dYID0gaXNIb3Jpem9udGFsKCkgPyBzLT54KCkgOiBzLT55KCk7CiAgICAgICAg
ICAgICBpbnQgc2hhZG93WSA9IGlzSG9yaXpvbnRhbCgpID8gcy0+eSgpIDogLXMtPngoKTsKQEAg
LTkzNCw3ICs5MzQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFw
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbnQgc2hhZG93WCA9IGlzSG9yaXpvbnRhbCgp
ID8gc2hhZG93LT54KCkgOiBzaGFkb3ctPnkoKTsKICAgICAgICAgICAgIGludCBzaGFkb3dZID0g
aXNIb3Jpem9udGFsKCkgPyBzaGFkb3ctPnkoKSA6IC1zaGFkb3ctPngoKTsKLSAgICAgICAgICAg
IGNvbnRleHQtPnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93WCwgc2hhZG93WSAtIGV4dHJhT2Zm
c2V0KSwgc2hhZG93LT5ibHVyKCksIHNoYWRvdy0+Y29sb3IoKSwgY29sb3JTcGFjZSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coR3JhcGhpY3NTaXplKHNoYWRvd1gsIHNoYWRvd1kg
LSBleHRyYU9mZnNldCksIHNoYWRvdy0+Ymx1cigpLCBzaGFkb3ctPmNvbG9yKCksIGNvbG9yU3Bh
Y2UpOwogICAgICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHNoYWRvdyA9
IHNoYWRvdy0+bmV4dCgpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBA
IHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zQ2FyZXRPZmZzZXQoaW50IG9mZnNldCkgY29uc3Q7
IC8vIGZhbHNlIGZvciBvZmZzZXQgYWZ0ZXIgbGluZSBicmVhawogCiAgICAgLy8gTmVlZHMgdG8g
YmUgcHVibGljLCBzbyB0aGUgc3RhdGljIHBhaW50VGV4dFdpdGhTaGFkb3dzKCkgZnVuY3Rpb24g
Y2FuIHVzZSBpdC4KLSAgICBzdGF0aWMgRmxvYXRTaXplIGFwcGx5U2hhZG93VG9HcmFwaGljc0Nv
bnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZsb2F0UmVj
dCYgdGV4dFJlY3QsIGJvb2wgc3Ryb2tlZCwgYm9vbCBvcGFxdWUsIGJvb2wgaG9yaXpvbnRhbCk7
CisgICAgc3RhdGljIEdyYXBoaWNzU2l6ZSBhcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IFNoYWRvd0RhdGEqLCBjb25zdCBGbG9hdFJlY3QmIHRleHRS
ZWN0LCBib29sIHN0cm9rZWQsIGJvb2wgb3BhcXVlLCBib29sIGhvcml6b250YWwpOwogCiBwcml2
YXRlOgogICAgIElubGluZVRleHRCb3gqIG1fcHJldlRleHRCb3g7IC8vIFRoZSBwcmV2aW91cyBi
b3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVjdApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0xheW91dFR5cGVzLmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcgQEAg
aW5saW5lIExheW91dFBvaW50IGZsb29yZWRMYXlvdXRQb2ludChjbwogICAgIHJldHVybiBmbG9v
cmVkSW50UG9pbnQocCk7CiB9CiAKLWlubGluZSBMYXlvdXRQb2ludCBmbG9vcmVkTGF5b3V0UG9p
bnQoY29uc3QgRmxvYXRTaXplJiBzKQoraW5saW5lIExheW91dFBvaW50IGZsb29yZWRMYXlvdXRQ
b2ludChjb25zdCBHcmFwaGljc1NpemUmIHMpCiB7CiAgICAgcmV0dXJuIGZsb29yZWRJbnRQb2lu
dChzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZp
c2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MTcsNyArODE3LDcgQEAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNl
IFJlbmRlckJveDo6ZGV0ZQogICAgICAgICByZXR1cm4gQmFja2dyb3VuZEJsZWVkTm9uZTsKIAog
ICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0LT5nZXRDVE0oKTsKLSAgICBGbG9hdFNp
emUgY29udGV4dFNjYWxpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS54U2NhbGUoKSksIHN0YXRp
Y19jYXN0PGZsb2F0PihjdG0ueVNjYWxlKCkpKTsKKyAgICBHcmFwaGljc1NpemUgY29udGV4dFNj
YWxpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS54U2NhbGUoKSksIHN0YXRpY19jYXN0PGZsb2F0
PihjdG0ueVNjYWxlKCkpKTsKICAgICBpZiAoYm9yZGVyT2JzY3VyZXNCYWNrZ3JvdW5kRWRnZShj
b250ZXh0U2NhbGluZykpCiAgICAgICAgIHJldHVybiBCYWNrZ3JvdW5kQmxlZWRTaHJpbmtCYWNr
Z3JvdW5kOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwNiw3ICs0MDYsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT3ZlcmZs
b3cqIGhhc1JlbmRlck92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdy5nZXQoKTsg
fQogCiAgICAgdmlydHVhbCBib29sIG5lZWRzUHJlZmVycmVkV2lkdGhzUmVjYWxjdWxhdGlvbigp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlv
bihGbG9hdFNpemUmIC8qIGludHJpbnNpY1JhdGlvICovLCBib29sJiAvKiBpc1BlcmNlbnRhZ2VJ
bnRyaW5zaWNTaXplICovKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJp
bnNpY1JhdGlvSW5mb3JtYXRpb24oR3JhcGhpY3NTaXplJiAvKiBpbnRyaW5zaWNSYXRpbyAqLywg
Ym9vbCYgLyogaXNQZXJjZW50YWdlSW50cmluc2ljU2l6ZSAqLykgY29uc3QgeyB9CiAKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlz
aW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDcgKzU4Myw3IEBAIHN0YXRpYyBJbnRSZWN0
IGJhY2tncm91bmRSZWN0QWRqdXN0ZWRGb3IKICAgICBJbnRSZWN0IGFkanVzdGVkUmVjdCA9IGJv
cmRlclJlY3Q7CiAgICAgLy8gV2UgbmVlZCB0byBzaHJpbmsgdGhlIGJvcmRlciBieSBvbmUgZGV2
aWNlIHBpeGVsIG9uIGVhY2ggc2lkZS4KICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gY29udGV4
dC0+Z2V0Q1RNKCk7Ci0gICAgRmxvYXRTaXplIGNvbnRleHRTY2FsZShzdGF0aWNfY2FzdDxmbG9h
dD4oY3RtLnhTY2FsZSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS55U2NhbGUoKSkpOworICAg
IEdyYXBoaWNzU2l6ZSBjb250ZXh0U2NhbGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS54U2NhbGUo
KSksIHN0YXRpY19jYXN0PGZsb2F0PihjdG0ueVNjYWxlKCkpKTsKICAgICBhZGp1c3RlZFJlY3Qu
aW5mbGF0ZVgoLWNlaWxmKDEgLyBjb250ZXh0U2NhbGUud2lkdGgoKSkpOwogICAgIGFkanVzdGVk
UmVjdC5pbmZsYXRlWSgtY2VpbGYoMSAvIGNvbnRleHRTY2FsZS5oZWlnaHQoKSkpOwogICAgIHJl
dHVybiBhZGp1c3RlZFJlY3Q7CkBAIC0yMTI5LDcgKzIxMjksNyBAQCB2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpnZXRCb3JkZXJFZGdlCiAgICAgICAgICFob3Jpem9udGFsIHx8IGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UpOwogfQogCi1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3JkZXJP
YnNjdXJlc0JhY2tncm91bmRFZGdlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxlKSBjb25z
dAorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym9yZGVyT2JzY3VyZXNCYWNrZ3JvdW5kRWRn
ZShjb25zdCBHcmFwaGljc1NpemUmIGNvbnRleHRTY2FsZSkgY29uc3QKIHsKICAgICBCb3JkZXJF
ZGdlIGVkZ2VzWzRdOwogICAgIGdldEJvcmRlckVkZ2VJbmZvKGVkZ2VzKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCShyZXZpc2lv
biA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAg
dm9pZCBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIqLCBj
b25zdCBJbnRSZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5Jik7CiAgICAg
dm9pZCBnZXRCb3JkZXJFZGdlSW5mbyhjbGFzcyBCb3JkZXJFZGdlW10sIGJvb2wgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVl
KSBjb25zdDsKLSAgICBib29sIGJvcmRlck9ic2N1cmVzQmFja2dyb3VuZEVkZ2UoY29uc3QgRmxv
YXRTaXplJiBjb250ZXh0U2NhbGUpIGNvbnN0OworICAgIGJvb2wgYm9yZGVyT2JzY3VyZXNCYWNr
Z3JvdW5kRWRnZShjb25zdCBHcmFwaGljc1NpemUmIGNvbnRleHRTY2FsZSkgY29uc3Q7CiAKICAg
ICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCosIEltYWdlKiwg
Y29uc3Qgdm9pZCosIGNvbnN0IEludFNpemUmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAkocmV2aXNpb24gOTEyMDApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBQYXRoIFJlbmRlckRldGFpbHNNYXJrZXI6Omdl
dFBhdGgoY29uc3QgCiB7CiAgICAgUGF0aCByZXN1bHQgPSBnZXRDYW5vbmljYWxQYXRoKCk7CiAg
ICAgcmVzdWx0LnRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZShsb2dpY2FsSGVpZ2h0
KCkpKTsKLSAgICByZXN1bHQudHJhbnNsYXRlKEZsb2F0U2l6ZShvcmlnaW4ueCgpLCBvcmlnaW4u
eSgpKSk7CisgICAgcmVzdWx0LnRyYW5zbGF0ZShHcmFwaGljc1NpemUob3JpZ2luLngoKSwgb3Jp
Z2luLnkoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24gOTEy
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTIgKzIwMCwxMiBAQCBib29sIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpnZXRSZXBsYWNlbWVuCiAgICAgcnVuID0gVGV4dFJ1bihtX3JlcGxhY2VtZW50VGV4
dCk7CiAgICAgdGV4dFdpZHRoID0gZm9udC53aWR0aChydW4pOwogICAgIAotICAgIHJlcGxhY2Vt
ZW50VGV4dFJlY3Quc2V0U2l6ZShGbG9hdFNpemUodGV4dFdpZHRoICsgcmVwbGFjZW1lbnRUZXh0
Um91bmRlZFJlY3RMZWZ0UmlnaHRUZXh0TWFyZ2luICogMiwgcmVwbGFjZW1lbnRUZXh0Um91bmRl
ZFJlY3RIZWlnaHQpKTsKKyAgICByZXBsYWNlbWVudFRleHRSZWN0LnNldFNpemUoR3JhcGhpY3NT
aXplKHRleHRXaWR0aCArIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0TGVmdFJpZ2h0VGV4dE1h
cmdpbiAqIDIsIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0SGVpZ2h0KSk7CiAgICAgZmxvYXQg
eCA9IChjb250ZW50UmVjdC5zaXplKCkud2lkdGgoKSAvIDIgLSByZXBsYWNlbWVudFRleHRSZWN0
LnNpemUoKS53aWR0aCgpIC8gMikgKyBjb250ZW50UmVjdC5sb2NhdGlvbigpLngoKTsKICAgICBm
bG9hdCB5ID0gKGNvbnRlbnRSZWN0LnNpemUoKS5oZWlnaHQoKSAvIDIgLSByZXBsYWNlbWVudFRl
eHRSZWN0LnNpemUoKS5oZWlnaHQoKSAvIDIpICsgY29udGVudFJlY3QubG9jYXRpb24oKS55KCk7
CiAgICAgcmVwbGFjZW1lbnRUZXh0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KHgsIHkpKTsK
ICAgICAKLSAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlcGxhY2VtZW50VGV4dFJlY3QsIEZsb2F0
U2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cywgcmVwbGFjZW1lbnRUZXh0Um91
bmRlZFJlY3RSYWRpdXMpKTsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlcGxhY2VtZW50VGV4
dFJlY3QsIEdyYXBoaWNzU2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cywgcmVw
bGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNiw4ICs0MTYsOCBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMCiAgICAgaWYgKG9sZE9mZnNldEZyb21S
ZW5kZXJlciAhPSBtX2dyYXBoaWNzTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpKQogICAgICAg
ICBtX2dyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIAotICAgIEZsb2F0U2l6
ZSBvbGRTaXplID0gbV9ncmFwaGljc0xheWVyLT5zaXplKCk7Ci0gICAgRmxvYXRTaXplIG5ld1Np
emUgPSByZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLnNpemUoKTsKKyAgICBHcmFwaGljc1NpemUg
b2xkU2l6ZSA9IG1fZ3JhcGhpY3NMYXllci0+c2l6ZSgpOworICAgIEdyYXBoaWNzU2l6ZSBuZXdT
aXplID0gcmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcy5zaXplKCk7CiAgICAgaWYgKG9sZFNpemUg
IT0gbmV3U2l6ZSkgewogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldFNpemUobmV3U2l6ZSk7
CiAgICAgICAgIC8vIEEgYm91bmRzIGNoYW5nZSB3aWxsIGFsbW9zdCBhbHdheXMgcmVxdWlyZSBy
ZWRpc3BsYXkuIFVzdWFsbHkgdGhhdCByZWRpc3BsYXkKQEAgLTQ4MCwxMiArNDgwLDEyIEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0wKIAogICAgIGlmIChtX2ZvcmVn
cm91bmRMYXllcikgewogICAgICAgICBGbG9hdFBvaW50IGZvcmVncm91bmRQb3NpdGlvbjsKLSAg
ICAgICAgRmxvYXRTaXplIGZvcmVncm91bmRTaXplID0gbmV3U2l6ZTsKKyAgICAgICAgR3JhcGhp
Y3NTaXplIGZvcmVncm91bmRTaXplID0gbmV3U2l6ZTsKICAgICAgICAgSW50U2l6ZSBmb3JlZ3Jv
dW5kT2Zmc2V0ID0gbV9ncmFwaGljc0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAgICAg
ICAgaWYgKG1fY2xpcHBpbmdMYXllcikgewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGNs
aXBwaW5nIGxheWVyICh3aGljaCBjbGlwcyBkZXNjZW5kYW50cyksIHRoZW4gdGhlIGZvcmVncm91
bmQgbGF5ZXIgaXMgYSBjaGlsZCBvZiBpdCwKICAgICAgICAgICAgIC8vIHNvIHRoYXQgaXQgZ2V0
cyBjb3JyZWN0bHkgc29ydGVkIHdpdGggY2hpbGRyZW4uIEluIHRoYXQgY2FzZSwgcG9zaXRpb24g
cmVsYXRpdmUgdG8gdGhlIGNsaXBwaW5nIGxheWVyLgotICAgICAgICAgICAgZm9yZWdyb3VuZFNp
emUgPSBGbG9hdFNpemUoY2xpcHBpbmdCb3guc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvcmVncm91
bmRTaXplID0gR3JhcGhpY3NTaXplKGNsaXBwaW5nQm94LnNpemUoKSk7CiAgICAgICAgICAgICBm
b3JlZ3JvdW5kT2Zmc2V0ID0gY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIEludFBvaW50KCk7CiAg
ICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
NTYsNyArMTY1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290TGEK
ICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0TmFtZSgiY29u
dGVudCByb290Iik7CiAjZW5kaWYKLSAgICAgICAgbV9yb290Q29udGVudExheWVyLT5zZXRTaXpl
KEZsb2F0U2l6ZShtX3JlbmRlclZpZXctPm1heFhMYXlvdXRPdmVyZmxvdygpLCBtX3JlbmRlclZp
ZXctPm1heFlMYXlvdXRPdmVyZmxvdygpKSk7CisgICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+
c2V0U2l6ZShHcmFwaGljc1NpemUobV9yZW5kZXJWaWV3LT5tYXhYTGF5b3V0T3ZlcmZsb3coKSwg
bV9yZW5kZXJWaWV3LT5tYXhZTGF5b3V0T3ZlcmZsb3coKSkpOwogICAgICAgICBtX3Jvb3RDb250
ZW50TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoKSk7CiAKICAgICAgICAgLy8gTmVlZCB0
byBjbGlwIHRvIHByZXZlbnQgdHJhbnNmb3JtZWQgY29udGVudCBzaG93aW5nIG91dHNpZGUgdGhp
cyBmcmFtZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJv
bHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YUNvbnRyb2xzLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcg
QEAgc3RhdGljIEZsb2F0UmVjdCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1cwogICAgICAgICB1bnpv
b21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAg
ICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21M
ZXZlbCk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0
LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwogICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29t
ZWRSZWN0LnkoKSk7CiAgICAgfQogICAgIHJldHVybiB1bnpvb21lZFJlY3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHJldmlzaW9uIDkxMjAw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjI5LDcgKzIyOSw3IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6OmNv
bXB1dGVSZXBsYWMKIAogICAgIC8vIDEwLjMuMiBJbmxpbmUsIHJlcGxhY2VkIGVsZW1lbnRzOiBo
dHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjaW5saW5lLXJlcGxhY2VkLXdp
ZHRoCiAgICAgYm9vbCBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplID0gZmFsc2U7Ci0gICAgRmxv
YXRTaXplIGludHJpbnNpY1JhdGlvOworICAgIEdyYXBoaWNzU2l6ZSBpbnRyaW5zaWNSYXRpbzsK
ICAgICBpZiAoY29udGVudFJlbmRlcmVyKSB7CiAgICAgICAgIGNvbnRlbnRSZW5kZXJlci0+Y29t
cHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oaW50cmluc2ljUmF0aW8sIGlzUGVyY2VudGFn
ZUludHJpbnNpY1NpemUpOwogICAgICAgICBjb250ZW50UmVuZGVyU3R5bGUgPSBjb250ZW50UmVu
ZGVyZXItPnN0eWxlKCk7CkBAIC0zMjYsNyArMzI2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJSZXBs
YWNlZDo6Y29tcHV0ZVJlcGxhYwogCiAgICAgLy8gMTAuNi4yIElubGluZSwgcmVwbGFjZWQgZWxl
bWVudHM6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNpbmxpbmUtcmVw
bGFjZWQtaGVpZ2h0CiAgICAgYm9vbCBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplID0gZmFsc2U7
Ci0gICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOworICAgIEdyYXBoaWNzU2l6ZSBpbnRyaW5z
aWNSYXRpbzsKICAgICBpZiAoY29udGVudFJlbmRlcmVyKSB7CiAgICAgICAgIGNvbnRlbnRSZW5k
ZXJlci0+Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oaW50cmluc2ljUmF0aW8sIGlz
UGVyY2VudGFnZUludHJpbnNpY1NpemUpOwogICAgICAgICBjb250ZW50UmVuZGVyU3R5bGUgPSBj
b250ZW50UmVuZGVyZXItPnN0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTUwLDcgKzU1MCw3
IEBAIEZsb2F0UmVjdCBSZW5kZXJUaGVtZU1hYzo6Y29udmVydFRvUGFpbnQKICAgICBGbG9hdFJl
Y3QgcGFydFJlY3QoaW5wdXRSZWN0KTsKICAgICAKICAgICAvLyBDb21wdXRlIGFuIG9mZnNldCBi
ZXR3ZWVuIHRoZSBwYXJ0IHJlbmRlcmVyIGFuZCB0aGUgaW5wdXQgcmVuZGVyZXIKLSAgICBGbG9h
dFNpemUgb2Zmc2V0RnJvbUlucHV0UmVuZGVyZXI7CisgICAgR3JhcGhpY3NTaXplIG9mZnNldEZy
b21JbnB1dFJlbmRlcmVyOwogICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJ0
UmVuZGVyZXI7CiAgICAgd2hpbGUgKHJlbmRlcmVyICYmIHJlbmRlcmVyICE9IGlucHV0UmVuZGVy
ZXIpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBjb250YWluaW5nUmVuZGVyZXIgPSByZW5kZXJl
ci0+Y29udGFpbmVyKCk7CkBAIC03OTMsNyArNzkzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRNZW51TGlzdChSZW5kZQogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0
ZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVp
Z2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7
Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6
b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6
ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJh
bnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CiAgICAgfQogCkBA
IC05NTQsNyArOTU0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0JhcihS
ZQogCiAgICAgaWYgKCFyZW5kZXJQcm9ncmVzcy0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpKSB7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoMiAqIHJlY3Qu
eCgpICsgcmVjdC53aWR0aCgpLCAwKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSgtMSwgMSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoR3Jh
cGhpY3NTaXplKC0xLCAxKSk7CiAgICAgfQogICAgIAogICAgIHBhaW50SW5mby5jb250ZXh0LT5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIHJl
Y3QubG9jYXRpb24oKSk7CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludFNsaWRlclRodW1iKFJlCiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpv
b21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRI
ZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgp
KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWws
IHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoR3JhcGhpY3NT
aXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50
cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAg
ICAgCkBAIC0xMzYyLDEyICsxMzYyLDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2xp
ZGVyVGh1bWIoUmUKICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vOTQyMTc4
MT4uCiAgICAgaWYgKCFvLT52aWV3KCktPmZyYW1lVmlldygpLT5kb2N1bWVudFZpZXcoKSkgewog
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKDAsIHVuem9vbWVkUmVjdC55KCkp
OwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoMSwgLTEpKTsKICAg
ICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgwLCAtKHVuem9vbWVkUmVjdC55KCkg
KyB1bnpvb21lZFJlY3QuaGVpZ2h0KCkpKTsKICAgICB9CiAjZWxpZiBQTEFURk9STShDSFJPTUlV
TSkKICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKDAsIHVuem9vbWVkUmVjdC55KCkp
OwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICBw
YWludEluZm8uY29udGV4dC0+c2NhbGUoR3JhcGhpY3NTaXplKDEsIC0xKSk7CiAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgwLCAtKHVuem9vbWVkUmVjdC55KCkgKyB1bnpvb21lZFJl
Y3QuaGVpZ2h0KCkpKTsKICNlbmRpZgogICAgIApAQCAtMTM5NCw3ICsxMzk0LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZChSZQogICAgICAgICB1bnpvb21lZFJlY3Qu
c2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1bnpv
b21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7CiAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwgdW56
b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNj
YWxlKEdyYXBoaWNzU2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwogICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0Lnko
KSk7CiAgICAgfQogCkBAIC0xNTA0LDcgKzE1MDQsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFNlYXJjaEZpZWxkQ2FuCiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpvb21l
ZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRIZWln
aHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgpKTsK
LSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWwsIHpv
b21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoR3JhcGhpY3NTaXpl
KHpvb21MZXZlbCwgem9vbUxldmVsKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFu
c2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAKQEAg
LTE2MTUsNyArMTYxNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRS
ZXMKICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgpIC8g
em9vbUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJlY3Qu
aGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNs
YXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOwotICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CisgICAg
ICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoem9vbUxldmVsLCB6b29t
TGV2ZWwpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtdW56b29tZWRS
ZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0KIApAQCAtMTcxOSw3ICsxNzE5LDcg
QEAgc3RhdGljIEZsb2F0UmVjdCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1cwogICAgICAgICB1bnpv
b21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAg
ICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21M
ZXZlbCk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0
LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwogICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29t
ZWRSZWN0LnkoKSk7CiAgICAgfQogICAgIHJldHVybiB1bnpvb21lZFJlY3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCShyZXZpc2lvbiA5
MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGMKICAgICByZXR1cm4gdHMgPDwgIikiOwogfQogCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGbG9hdFNpemUmIHMpCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc1NpemUmIHMpCiB7
CiAgICAgdHMgPDwgIndpZHRoPSI7CiAgICAgaWYgKGhhc0ZyYWN0aW9ucyhzLndpZHRoKCkpKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oCShyZXZp
c2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRQb2ludDsKLWNsYXNzIEZsb2F0U2l6ZTsKK2Ns
YXNzIEdyYXBoaWNzU2l6ZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJ
bnRSZWN0OwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZVJlbmRlck9iamVjdChU
ZXh0U3RyZWFtCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBJbnRQ
b2ludCYpOwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgSW50UmVj
dCYpOwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmxvYXRQb2lu
dCYpOwotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmxvYXRTaXpl
Jik7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGljc1Np
emUmKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZlY3RvcjxJdGVtPiYgdmVjdG9yKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYs
NyBAQCB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmxheW91dCgpCiAKICAgICAvLyBDYWNo
ZSB2aWV3cG9ydCBib3VuZGFyaWVzCiAgICAgRmxvYXRQb2ludCB2aWV3cG9ydExvY2F0aW9uKGZv
cmVpZ24tPngoKS52YWx1ZShmb3JlaWduKSwgZm9yZWlnbi0+eSgpLnZhbHVlKGZvcmVpZ24pKTsK
LSAgICBtX3ZpZXdwb3J0ID0gRmxvYXRSZWN0KHZpZXdwb3J0TG9jYXRpb24sIEZsb2F0U2l6ZShm
b3JlaWduLT53aWR0aCgpLnZhbHVlKGZvcmVpZ24pLCBmb3JlaWduLT5oZWlnaHQoKS52YWx1ZShm
b3JlaWduKSkpOworICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3Qodmlld3BvcnRMb2NhdGlvbiwg
R3JhcGhpY3NTaXplKGZvcmVpZ24tPndpZHRoKCkudmFsdWUoZm9yZWlnbiksIGZvcmVpZ24tPmhl
aWdodCgpLnZhbHVlKGZvcmVpZ24pKSk7CiAgICAgaWYgKCF1cGRhdGVDYWNoZWRCb3VuZGFyaWVz
SW5QYXJlbnRzKQogICAgICAgICB1cGRhdGVDYWNoZWRCb3VuZGFyaWVzSW5QYXJlbnRzID0gb2xk
Vmlld3BvcnQgIT0gbV92aWV3cG9ydDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlzaW9u
IDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBQYXNzUmVmUHRy
PFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1JlCiAgICAgcmV0dXJuIGJ1aWxkZXIucmVsZWFz
ZSgpOwogfQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpmaXRzSW5NYXhpbXVtSW1h
Z2VTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRTaXplJiBzY2FsZSkKK2Jvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpdHNJbk1heGltdW1JbWFnZVNpemUoY29uc3QgR3JhcGhp
Y3NTaXplJiBzaXplLCBHcmFwaGljc1NpemUmIHNjYWxlKQogewogICAgIGJvb2wgbWF0Y2hlc0Zp
bHRlclNpemUgPSB0cnVlOwogICAgIGlmIChzaXplLndpZHRoKCkgPiBrTWF4RmlsdGVyU2l6ZSkg
ewpAQCAtMTkwLDcgKzE5MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5
UmVzb3UKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgc2NhbGUgZmFjdG9yIGZvciB0aGUgdXNlIG9m
IGZpbHRlclJlcy4KICAgICAvLyBBbHNvIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvZmls
dGVycy5odG1sI0ZpbHRlckVmZmVjdHNSZWdpb24KLSAgICBGbG9hdFNpemUgc2NhbGUoMSwgMSk7
CisgICAgR3JhcGhpY3NTaXplIHNjYWxlKDEsIDEpOwogICAgIGlmIChmaWx0ZXJFbGVtZW50LT5o
YXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIpKSB7CiAgICAgICAgIHNjYWxlLnNl
dFdpZHRoKGZpbHRlckVsZW1lbnQtPmZpbHRlclJlc1goKSAvIGFic29sdXRlRmlsdGVyQm91bmRh
cmllcy53aWR0aCgpKTsKICAgICAgICAgc2NhbGUuc2V0SGVpZ2h0KGZpbHRlckVsZW1lbnQtPmZp
bHRlclJlc1koKSAvIGFic29sdXRlRmlsdGVyQm91bmRhcmllcy5oZWlnaHQoKSk7CkBAIC0zMTYs
NyArMzE2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UgogICAg
ICAgICBpZiAocmVzdWx0SW1hZ2UpIHsKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShm
aWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwogCi0gICAg
ICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEtPmZpbHRlci0+
ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRl
clJlc29sdXRpb24oKS5oZWlnaHQoKSkpOworICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoR3Jh
cGhpY3NTaXplKDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0
aCgpLCAxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAobGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgp
KTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihyZXN1bHRJbWFnZSwgb2Jq
ZWN0LT5zdHlsZSgpLT5jb2xvclNwYWNlKCksIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0
KCkpOwogICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0
ZXJSZXNvbHV0aW9uKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAkocmV2aXNpb24gOTEyMDApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IEZpbHRlckRhdGEgewogICAgIEdy
YXBoaWNzQ29udGV4dCogc2F2ZWRDb250ZXh0OwogICAgIEFmZmluZVRyYW5zZm9ybSBzaGVhckZy
ZWVBYnNvbHV0ZVRyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgYm91bmRhcmllczsKLSAgICBGbG9h
dFNpemUgc2NhbGU7CisgICAgR3JhcGhpY3NTaXplIHNjYWxlOwogICAgIGJvb2wgYnVpbGRlZCA6
IDE7CiAgICAgYm9vbCBtYXJrZWRGb3JSZW1vdmFsIDogMTsKIH07CkBAIC04Nyw3ICs4Nyw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3VyY2VUeXBl
OwogCiBwcml2YXRlOgotICAgIGJvb2wgZml0c0luTWF4aW11bUltYWdlU2l6ZShjb25zdCBGbG9h
dFNpemUmLCBGbG9hdFNpemUmKTsKKyAgICBib29sIGZpdHNJbk1heGltdW1JbWFnZVNpemUoY29u
c3QgR3JhcGhpY3NTaXplJiwgR3JhcGhpY3NTaXplJik7CiAKICAgICBIYXNoTWFwPFJlbmRlck9i
amVjdCosIEZpbHRlckRhdGEqPiBtX2ZpbHRlcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGkKICAgICBlZmZlY3QtPnNldEZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihzdWJyZWdp
b24pOwogCiAgICAgRmxvYXRSZWN0IGFic29sdXRlU3VicmVnaW9uID0gZmlsdGVyLT5tYXBMb2Nh
bFJlY3RUb0Fic29sdXRlUmVjdChzdWJyZWdpb24pOwotICAgIEZsb2F0U2l6ZSBmaWx0ZXJSZXNv
bHV0aW9uID0gZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCk7CisgICAgR3JhcGhpY3NTaXplIGZp
bHRlclJlc29sdXRpb24gPSBmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKTsKICAgICBhYnNvbHV0
ZVN1YnJlZ2lvbi5zY2FsZShmaWx0ZXJSZXNvbHV0aW9uLndpZHRoKCksIGZpbHRlclJlc29sdXRp
b24uaGVpZ2h0KCkpOwogCiAgICAgLy8gRkVJbWFnZSBuZWVkcyB0aGUgdW5jbGlwcGVkIHN1YnJl
Z2lvbiBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcyB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjYsNyArMjY2LDcgQEAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVz
b3VyYwogICAgIEFTU0VSVCh0aWxlSW1hZ2VDb250ZXh0KTsKIAogICAgIC8vIFRoZSBpbWFnZSBi
dWZmZXIgcmVwcmVzZW50cyB0aGUgZmluYWwgcmVuZGVyZWQgc2l6ZSwgc28gdGhlIGNvbnRlbnQg
aGFzIHRvIGJlIHNjYWxlZCAodG8gYXZvaWQgcGl4ZWxhdGlvbikuCi0gICAgdGlsZUltYWdlQ29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKGFic29sdXRlVGlsZUJvdW5kYXJpZXMud2lkdGgoKSAvIHRp
bGVCb3VuZGFyaWVzLndpZHRoKCksCisgICAgdGlsZUltYWdlQ29udGV4dC0+c2NhbGUoR3JhcGhp
Y3NTaXplKGFic29sdXRlVGlsZUJvdW5kYXJpZXMud2lkdGgoKSAvIHRpbGVCb3VuZGFyaWVzLndp
ZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic29sdXRlVGls
ZUJvdW5kYXJpZXMuaGVpZ2h0KCkgLyB0aWxlQm91bmRhcmllcy5oZWlnaHQoKSkpOwogCiAgICAg
Ly8gQXBwbHkgdGlsZSBpbWFnZSB0cmFuc2Zvcm1hdGlvbnMuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDkxMjAwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBSZW5kZXJTVkdSb290Ojp+UmVuZGVyU1ZHUm9vdCgp
CiB7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3Jt
YXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQZXJjZW50YWdlSW50cmlu
c2ljU2l6ZSkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGlv
SW5mb3JtYXRpb24oR3JhcGhpY3NTaXplJiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQZXJjZW50
YWdlSW50cmluc2ljU2l6ZSkgY29uc3QKIHsKICAgICAvLyBTcGVjOiBodHRwOi8vZGV2LnczLm9y
Zy9TVkcvcHJvZmlsZXMvMS4xRjIvcHVibGlzaC9jb29yZHMuaHRtbCNJbnRyaW5zaWNTaXppbmcK
ICAgICAvLyBUaGUgaW50cmluc2ljIGFzcGVjdCByYXRpbyBvZiB0aGUgdmlld3BvcnQgb2YgU1ZH
IGNvbnRlbnQgaXMgbmVjZXNzYXJ5IGZvciBleGFtcGxlLCB3aGVuIGluY2x1ZGluZwpAQCAtNzYs
NyArNzYsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNSYXRpCiAgICAg
Ly8g4oCYd2lkdGjigJkgYW5kIOKAmGhlaWdodOKAmSBhdHRyaWJ1dGVzIGFmdGVyIHJlc29sdmlu
ZyBib3RoIHZhbHVlcyB0byB1c2VyIHVuaXRzLgogICAgIGlzUGVyY2VudGFnZUludHJpbnNpY1Np
emUgPSBmYWxzZTsKICAgICBpZiAoc3R5bGUoKS0+d2lkdGgoKS5pc0ZpeGVkKCkgJiYgc3R5bGUo
KS0+aGVpZ2h0KCkuaXNGaXhlZCgpKSB7Ci0gICAgICAgIGludHJpbnNpY1JhdGlvID0gRmxvYXRT
aXplKHdpZHRoKCksIGhlaWdodCgpKTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBHcmFwaGlj
c1NpemUod2lkdGgoKSwgaGVpZ2h0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05
MCw3ICs5MCw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGkKICAg
ICAvLyBhY2NvdW50IGZvciBjZXJ0YWluIGNhc2VzIG9mIHRoZSBpbnRyaW5zaWMgd2lkdGgvaGVp
Z2h0IGNhbGN1bGF0aW9uIGluIFJlbmRlclBhcnQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0
aC9IZWlnaHQuCiAgICAgaWYgKGludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiBzdHlsZSgpLT53
aWR0aCgpLmlzUGVyY2VudCgpICYmIHN0eWxlKCktPmhlaWdodCgpLmlzUGVyY2VudCgpKSB7CiAg
ICAgICAgIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUgPSB0cnVlOwotICAgICAgICBpbnRyaW5z
aWNSYXRpbyA9IEZsb2F0U2l6ZShzdHlsZSgpLT53aWR0aCgpLnBlcmNlbnQoKSwgc3R5bGUoKS0+
aGVpZ2h0KCkucGVyY2VudCgpKTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBHcmFwaGljc1Np
emUoc3R5bGUoKS0+d2lkdGgoKS5wZXJjZW50KCksIHN0eWxlKCktPmhlaWdodCgpLnBlcmNlbnQo
KSk7CiAgICAgfQogfQogCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290Ojpj
YWxjVmlld3BvcnQoKQogICAgIGlmICghc3ZnLT5oYXNTZXRDb250YWluZXJTaXplKCkpIHsKICAg
ICAgICAgLy8gSW4gdGhlIG5vcm1hbCBjYXNlIG9mIDxzdmc+IGJlaW5nIHN0YW5kLWFsb25lIG9y
IGluIGEgQ1NTQm94TW9kZWwgb2JqZWN0IHdlIHVzZQogICAgICAgICAvLyBSZW5kZXJCb3g6Ondp
ZHRoKCkvaGVpZ2h0KCkgKHdoaWNoIHB1bGxzIGRhdGEgZnJvbSBSZW5kZXJTdHlsZSkKLSAgICAg
ICAgbV92aWV3cG9ydFNpemUgPSBGbG9hdFNpemUod2lkdGgoKSwgaGVpZ2h0KCkpOworICAgICAg
ICBtX3ZpZXdwb3J0U2l6ZSA9IEdyYXBoaWNzU2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIFJlbmRlclNWR1Jv
b3Q6OmNhbGNWaWV3cG9ydCgpCiAgICAgLy8gRklYTUU6IENoZWNrIGhvdyBTVkdJbWFnZSArIHpv
b21pbmcgaXMgc3VwcG9zZWQgdG8gYmUgaGFuZGxlZD8KICAgICBTVkdMZW5ndGggd2lkdGggPSBz
dmctPndpZHRoKCk7CiAgICAgU1ZHTGVuZ3RoIGhlaWdodCA9IHN2Zy0+aGVpZ2h0KCk7Ci0gICAg
bV92aWV3cG9ydFNpemUgPSBGbG9hdFNpemUod2lkdGgudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBl
UGVyY2VudGFnZSA/IHN2Zy0+cmVsYXRpdmVXaWR0aFZhbHVlKCkgOiB3aWR0aC52YWx1ZShzdmcp
LAorICAgIG1fdmlld3BvcnRTaXplID0gR3JhcGhpY3NTaXplKHdpZHRoLnVuaXRUeXBlKCkgPT0g
TGVuZ3RoVHlwZVBlcmNlbnRhZ2UgPyBzdmctPnJlbGF0aXZlV2lkdGhWYWx1ZSgpIDogd2lkdGgu
dmFsdWUoc3ZnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQudW5pdFR5
cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSA/IHN2Zy0+cmVsYXRpdmVIZWlnaHRWYWx1ZSgp
IDogaGVpZ2h0LnZhbHVlKHN2ZykpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NyArMzksNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyU1ZHUm9vdChTVkdTdHlsZWRF
bGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUm9vdCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIGNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2lj
UmF0aW8sIGJvb2wmIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihHcmFwaGljc1NpemUmIGlu
dHJpbnNpY1JhdGlvLCBib29sJiBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplKSBjb25zdDsKICAg
ICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4g
Jm1fY2hpbGRyZW47IH0KICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyBy
ZXR1cm4gJm1fY2hpbGRyZW47IH0KIApAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIEFm
ZmluZVRyYW5zZm9ybSBsb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtKCkgY29uc3Q7CiAKICAgICBS
ZW5kZXJPYmplY3RDaGlsZExpc3QgbV9jaGlsZHJlbjsKLSAgICBGbG9hdFNpemUgbV92aWV3cG9y
dFNpemU7CisgICAgR3JhcGhpY3NTaXplIG1fdmlld3BvcnRTaXplOwogICAgIEZsb2F0UmVjdCBt
X29iamVjdEJvdW5kaW5nQm94OwogICAgIEZsb2F0UmVjdCBtX3N0cm9rZUJvdW5kaW5nQm94Owog
ICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3VuZGluZ0JveDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5l
cjo6Y2EKICAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmdUYWcpIHx8ICFz
dGF0aWNfY2FzdDxTVkdHRWxlbWVudCo+KGVsZW1lbnQpLT5pc1NoYWRvd1RyZWVDb250YWluZXJF
bGVtZW50KCkpCiAgICAgICAgIHJldHVybiBuZWVkc1VwZGF0ZTsKIAotICAgIEZsb2F0U2l6ZSB0
cmFuc2xhdGlvbiA9IHN0YXRpY19jYXN0PFNWR1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50Kj4o
ZWxlbWVudCktPmNvbnRhaW5lclRyYW5zbGF0aW9uKCk7CisgICAgR3JhcGhpY3NTaXplIHRyYW5z
bGF0aW9uID0gc3RhdGljX2Nhc3Q8U1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQqPihlbGVt
ZW50KS0+Y29udGFpbmVyVHJhbnNsYXRpb24oKTsKICAgICBpZiAoIXRyYW5zbGF0aW9uLndpZHRo
KCkgJiYgIXRyYW5zbGF0aW9uLmhlaWdodCgpKQogICAgICAgICByZXR1cm4gbmVlZHNVcGRhdGU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW1hZ2VCdWZmZXJUb29s
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFn
ZUJ1ZmZlclRvb2xzLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3
ICs2Nyw3IEBAIGJvb2wgU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWYKICAgICBB
U1NFUlQoaW1hZ2VDb250ZXh0KTsKIAogICAgIC8vIENvbXBlbnNhdGUgcm91bmRpbmcgZWZmZWN0
cywgYXMgdGhlIGFic29sdXRlIHRhcmdldCByZWN0IGlzIHVzaW5nIGZsb2F0aW5nLXBvaW50IG51
bWJlcnMgYW5kIHRoZSBpbWFnZSBidWZmZXIgc2l6ZSBpcyBpbnRlZ2VyLgotICAgIGltYWdlQ29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKHVuY2xhbXBlZEltYWdlU2l6ZS53aWR0aCgpIC8gYWJzb2x1
dGVUYXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZEltYWdlU2l6ZS5oZWlnaHQoKSAvIGFic29s
dXRlVGFyZ2V0UmVjdC5oZWlnaHQoKSkpOworICAgIGltYWdlQ29udGV4dC0+c2NhbGUoR3JhcGhp
Y3NTaXplKHVuY2xhbXBlZEltYWdlU2l6ZS53aWR0aCgpIC8gYWJzb2x1dGVUYXJnZXRSZWN0Lndp
ZHRoKCksIHVuY2xhbXBlZEltYWdlU2l6ZS5oZWlnaHQoKSAvIGFic29sdXRlVGFyZ2V0UmVjdC5o
ZWlnaHQoKSkpOwogCiAgICAgaW1hZ2VCdWZmZXIgPSBpbWFnZS5yZWxlYXNlKCk7CiAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBTVkdJbWFnZUJ1ZmZlclRvb2xzOjpj
bGlwVG9JbWFnZUJ1ZgogICAgICAgICBpbWFnZUJ1ZmZlci5jbGVhcigpOwogfQogCi1JbnRTaXpl
IFNWR0ltYWdlQnVmZmVyVG9vbHM6OnJvdW5kZWRJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRT
aXplJiBzaXplKQorSW50U2l6ZSBTVkdJbWFnZUJ1ZmZlclRvb2xzOjpyb3VuZGVkSW1hZ2VCdWZm
ZXJTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gSW50U2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoc2l6ZS53aWR0aCgpKSksIHN0YXRpY19jYXN0PGludD4o
bHJvdW5kZihzaXplLmhlaWdodCgpKSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgJKHJldmlzaW9uIDkxMjAwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBGbG9hdFNpemU7Citj
bGFzcyBHcmFwaGljc1NpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5kZXJP
YmplY3Q7CiAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgY2Fs
Y3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdFNWR0Nvb3JkaW5hdGVTeXN0ZW0oY29uc3Qg
UmVuZGVyT2JqZWN0KiwgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAg
c3RhdGljIEZsb2F0UmVjdCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0Rm9yUmVuZGVyZXIoY29u
c3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3QpOwot
ICAgIHN0YXRpYyBJbnRTaXplIHJvdW5kZWRJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXpl
Jik7CisgICAgc3RhdGljIEludFNpemUgcm91bmRlZEltYWdlQnVmZmVyU2l6ZShjb25zdCBHcmFw
aGljc1NpemUmKTsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUJ1ZmZlclRvb2xzKCkgeyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJv
eC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdJbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3IEBAIHZv
aWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2kKICAgICBkZWNvcmF0aW9uT3Jp
Z2luLm1vdmUoMCwgLXNjYWxlZEZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgKyBwb3NpdGlvbk9m
ZnNldEZvckRlY29yYXRpb24oZGVjb3JhdGlvbiwgc2NhbGVkRm9udE1ldHJpY3MsIHRoaWNrbmVz
cykpOwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUmVjdChGbG9hdFJlY3QoZGVjb3Jh
dGlvbk9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCB0aGlja25lc3MpKSk7CisgICAgcGF0aC5hZGRS
ZWN0KEZsb2F0UmVjdChkZWNvcmF0aW9uT3JpZ2luLCBHcmFwaGljc1NpemUod2lkdGgsIHRoaWNr
bmVzcykpKTsKIAogICAgIGlmIChhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCBzY2Fs
aW5nRmFjdG9yLCBkZWNvcmF0aW9uUmVuZGVyZXIsIGRlY29yYXRpb25TdHlsZSkpCiAgICAgICAg
IHJlbGVhc2VQYWludGluZ1Jlc291cmNlKGNvbnRleHQsICZwYXRoKTsKQEAgLTYxNiw3ICs2MTYs
NyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkCiAgICAgY29uc3Qg
U2hhZG93RGF0YSogc2hhZG93ID0gc3R5bGUtPnRleHRTaGFkb3coKTsKIAogICAgIEZsb2F0UG9p
bnQgdGV4dE9yaWdpbihmcmFnbWVudC54LCBmcmFnbWVudC55KTsKLSAgICBGbG9hdFNpemUgdGV4
dFNpemUoZnJhZ21lbnQud2lkdGgsIGZyYWdtZW50LmhlaWdodCk7CisgICAgR3JhcGhpY3NTaXpl
IHRleHRTaXplKGZyYWdtZW50LndpZHRoLCBmcmFnbWVudC5oZWlnaHQpOwogCiAgICAgaWYgKHNj
YWxpbmdGYWN0b3IgIT0gMSkgewogICAgICAgICB0ZXh0T3JpZ2luLnNjYWxlKHNjYWxpbmdGYWN0
b3IsIHNjYWxpbmdGYWN0b3IpOwpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgU1ZHSW5saW5lVGV4
dEJveDo6cGFpbnRUZXh0V2l0aFNoYWQKICAgICAgICAgaWYgKCFwcmVwYXJlR3JhcGhpY3NDb250
ZXh0Rm9yVGV4dFBhaW50aW5nKGNvbnRleHQsIHNjYWxpbmdGYWN0b3IsIHRleHRSdW4sIHN0eWxl
KSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIEZsb2F0U2l6ZSBleHRyYU9mZnNldDsK
KyAgICAgICAgR3JhcGhpY3NTaXplIGV4dHJhT2Zmc2V0OwogICAgICAgICBpZiAoc2hhZG93KQog
ICAgICAgICAgICAgZXh0cmFPZmZzZXQgPSBhcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KGNv
bnRleHQsIHNoYWRvdywgc2hhZG93UmVjdCwgZmFsc2UgLyogc3Ryb2tlZCAqLywgdHJ1ZSAvKiBv
cGFxdWUgKi8sIHRydWUgLyogaG9yaXpvbnRhbCAqLyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IGN1cnJlbnRBbmdsZSgpIGNv
bnN0CiAgICAgewotICAgICAgICBGbG9hdFNpemUgaW5zbG9wZUNoYW5nZSA9IG1faW5zbG9wZVBv
aW50c1sxXSAtIG1faW5zbG9wZVBvaW50c1swXTsKLSAgICAgICAgRmxvYXRTaXplIG91dHNsb3Bl
Q2hhbmdlID0gbV9vdXRzbG9wZVBvaW50c1sxXSAtIG1fb3V0c2xvcGVQb2ludHNbMF07CisgICAg
ICAgIEdyYXBoaWNzU2l6ZSBpbnNsb3BlQ2hhbmdlID0gbV9pbnNsb3BlUG9pbnRzWzFdIC0gbV9p
bnNsb3BlUG9pbnRzWzBdOworICAgICAgICBHcmFwaGljc1NpemUgb3V0c2xvcGVDaGFuZ2UgPSBt
X291dHNsb3BlUG9pbnRzWzFdIC0gbV9vdXRzbG9wZVBvaW50c1swXTsKIAogICAgICAgICBkb3Vi
bGUgaW5zbG9wZSA9IHJhZDJkZWcoYXRhbjIoaW5zbG9wZUNoYW5nZS5oZWlnaHQoKSwgaW5zbG9w
ZUNoYW5nZS53aWR0aCgpKSk7CiAgICAgICAgIGRvdWJsZSBvdXRzbG9wZSA9IHJhZDJkZWcoYXRh
bjIob3V0c2xvcGVDaGFuZ2UuaGVpZ2h0KCksIG91dHNsb3BlQ2hhbmdlLndpZHRoKCkpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFz
VGV4dC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyVHJlZUFzVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFz
cyBGbG9hdFNpemU7CitjbGFzcyBHcmFwaGljc1NpemU7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmVu
ZGVyQmxvY2s7CiBjbGFzcyBSZW5kZXJJbWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5jcHAJKHJldmlzaW9u
IDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxl
bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSAiU1ZH
U2hhZG93VHJlZUVsZW1lbnRzLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUg
IkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHVXNlRWxlbWVu
dC5oIgpAQCAtNDIsOSArNDIsOSBAQCBQYXNzUmVmUHRyPFNWR1NoYWRvd1RyZWVDb250YWluZXJF
bGVtZW50CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxl
bWVudChkb2N1bWVudCkpOwogfQogCi1GbG9hdFNpemUgU1ZHU2hhZG93VHJlZUNvbnRhaW5lckVs
ZW1lbnQ6OmNvbnRhaW5lclRyYW5zbGF0aW9uKCkgY29uc3QKK0dyYXBoaWNzU2l6ZSBTVkdTaGFk
b3dUcmVlQ29udGFpbmVyRWxlbWVudDo6Y29udGFpbmVyVHJhbnNsYXRpb24oKSBjb25zdAogewot
ICAgIHJldHVybiBGbG9hdFNpemUobV94T2Zmc2V0LnZhbHVlKHRoaXMpLCBtX3lPZmZzZXQudmFs
dWUodGhpcykpOworICAgIHJldHVybiBHcmFwaGljc1NpemUobV94T2Zmc2V0LnZhbHVlKHRoaXMp
LCBtX3lPZmZzZXQudmFsdWUodGhpcykpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFNWR1No
YWRvd1RyZWVDb250YWluZXJFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
U2hhZG93VHJlZUVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxNCArMjYsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBGbG9hdFNpemU7CitjbGFzcyBHcmFwaGljc1NpemU7CiBjbGFzcyBTVkdVc2VFbGVtZW50Owog
CiBjbGFzcyBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBTVkdHRWxlbWVu
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHU2hhZG93VHJlZUNvbnRhaW5l
ckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCi0gICAgRmxvYXRTaXplIGNvbnRhaW5lclRy
YW5zbGF0aW9uKCkgY29uc3Q7CisgICAgR3JhcGhpY3NTaXplIGNvbnRhaW5lclRyYW5zbGF0aW9u
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250YWluZXJPZmZzZXQoY29uc3QgU1ZHTGVuZ3RoJiB4
LCBjb25zdCBTVkdMZW5ndGgmIHkpCiAgICAgewogICAgICAgICBtX3hPZmZzZXQgPSB4OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVy
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgY2FsY3VsYXRlR2x5cGhCb3VuZGFyCiAgICAgfQogCiAgICAgU1ZHVGV4dE1ldHJpY3MgbWV0
cmljcyA9IFNWR1RleHRNZXRyaWNzOjptZWFzdXJlQ2hhcmFjdGVyUmFuZ2UocXVlcnlEYXRhLT50
ZXh0UmVuZGVyZXIsIGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCArIHN0YXJ0UG9zaXRpb24sIDEp
OwotICAgIGV4dGVudC5zZXRTaXplKEZsb2F0U2l6ZShtZXRyaWNzLndpZHRoKCksIG1ldHJpY3Mu
aGVpZ2h0KCkpKTsKKyAgICBleHRlbnQuc2V0U2l6ZShHcmFwaGljc1NpemUobWV0cmljcy53aWR0
aCgpLCBtZXRyaWNzLmhlaWdodCgpKSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gZnJhZ21lbnRU
cmFuc2Zvcm07CiAgICAgZnJhZ21lbnQuYnVpbGRGcmFnbWVudFRyYW5zZm9ybShmcmFnbWVudFRy
YW5zZm9ybSwgU1ZHVGV4dEZyYWdtZW50OjpUcmFuc2Zvcm1JZ25vcmluZ1RleHRMZW5ndGgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9u
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBGbG9hdFNpemUgZGlmZiA9IG1fdG9Qb2ludCAtIG1fZnJvbVBvaW50Owor
ICAgIEdyYXBoaWNzU2l6ZSBkaWZmID0gbV90b1BvaW50IC0gbV9mcm9tUG9pbnQ7CiAgICAgdHJh
bnNmb3JtLT50cmFuc2xhdGUoZGlmZi53aWR0aCgpICogcGVyY2VudGFnZSArIG1fZnJvbVBvaW50
LngoKSwgZGlmZi5oZWlnaHQoKSAqIHBlcmNlbnRhZ2UgKyBtX2Zyb21Qb2ludC55KCkpOwogfQog
ICAgIApAQCAtMjcxLDcgKzI3MSw3IEBAIGZsb2F0IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpj
YWxjdWxhdGUKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICghcGFyc2VQb2ludCh0b1N0cmlu
ZywgdG8pKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgRmxvYXRTaXplIGRpZmYgPSB0byAtIGZy
b207CisgICAgR3JhcGhpY3NTaXplIGRpZmYgPSB0byAtIGZyb207CiAgICAgcmV0dXJuIHNxcnRm
KGRpZmYud2lkdGgoKSAqIGRpZmYud2lkdGgoKSArIGRpZmYuaGVpZ2h0KCkgKiBkaWZmLmhlaWdo
dCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0
ZToKICAgICB9OwogICAgIFJvdGF0ZU1vZGUgcm90YXRlTW9kZSgpIGNvbnN0OwogCi0gICAgRmxv
YXRTaXplIG1fYW5pbWF0ZWRUcmFuc2xhdGlvbjsKKyAgICBHcmFwaGljc1NpemUgbV9hbmltYXRl
ZFRyYW5zbGF0aW9uOwogICAgIGZsb2F0IG1fYW5pbWF0ZWRBbmdsZTsKIAogICAgIC8vIE5vdGU6
IHdlIGRvIG5vdCBzdXBwb3J0IHBlcmNlbnRhZ2UgdmFsdWVzIGZvciB0by9mcm9tIGNvb3JkcyBh
cyB0aGUgc3BlYyBpbXBsaWVzIHdlIHNob3VsZCAob3BlcmEgZG9lc24ndCBlaXRoZXIpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5j
cHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDEzICsyNTcsMTMgQEAgZmxv
YXQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bAogICAgIGlmICghdG8uaXNWYWxp
ZCgpIHx8IGZyb20udHlwZSgpICE9IHRvLnR5cGUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAg
IGlmICh0by50eXBlKCkgPT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFURSkg
ewotICAgICAgICBGbG9hdFNpemUgZGlmZiA9IHRvLnRyYW5zbGF0ZSgpIC0gZnJvbS50cmFuc2xh
dGUoKTsKKyAgICAgICAgR3JhcGhpY3NTaXplIGRpZmYgPSB0by50cmFuc2xhdGUoKSAtIGZyb20u
dHJhbnNsYXRlKCk7CiAgICAgICAgIHJldHVybiBzcXJ0ZihkaWZmLndpZHRoKCkgKiBkaWZmLndp
ZHRoKCkgKyBkaWZmLmhlaWdodCgpICogZGlmZi5oZWlnaHQoKSk7CiAgICAgfQogICAgIGlmICh0
by50eXBlKCkgPT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1JPVEFURSkKICAgICAgICAg
cmV0dXJuIGZhYnNmKHRvLmFuZ2xlKCkgLSBmcm9tLmFuZ2xlKCkpOwogICAgIGlmICh0by50eXBl
KCkgPT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1NDQUxFKSB7Ci0gICAgICAgIEZsb2F0
U2l6ZSBkaWZmID0gdG8uc2NhbGUoKSAtIGZyb20uc2NhbGUoKTsKKyAgICAgICAgR3JhcGhpY3NT
aXplIGRpZmYgPSB0by5zY2FsZSgpIC0gZnJvbS5zY2FsZSgpOwogICAgICAgICByZXR1cm4gc3Fy
dGYoZGlmZi53aWR0aCgpICogZGlmZi53aWR0aCgpICsgZGlmZi5oZWlnaHQoKSAqIGRpZmYuaGVp
Z2h0KCkpOwogICAgIH0KICAgICByZXR1cm4gLTE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhQYXJzZXIuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgU1ZH
UGF0aFBhcnNlcjo6Y2xlYW51cCgpCiAvLyBTZWUgYWxzbyBTVkcgaW1wbGVtZW50YXRpb24gbm90
ZXM6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pbXBsbm90ZS5odG1sI0FyY0NvbnZlcnNpb25F
bmRwb2ludFRvQ2VudGVyCiBib29sIFNWR1BhdGhQYXJzZXI6OmRlY29tcG9zZUFyY1RvQ3ViaWMo
ZmxvYXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwgRmxvYXRQb2ludCYgcG9pbnQxLCBGbG9h
dFBvaW50JiBwb2ludDIsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZykKIHsKLSAg
ICBGbG9hdFNpemUgbWlkUG9pbnREaXN0YW5jZSA9IHBvaW50MSAtIHBvaW50MjsKKyAgICBHcmFw
aGljc1NpemUgbWlkUG9pbnREaXN0YW5jZSA9IHBvaW50MSAtIHBvaW50MjsKICAgICBtaWRQb2lu
dERpc3RhbmNlLnNjYWxlKDAuNWYpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBvaW50VHJhbnNm
b3JtOwpAQCAtNDI5LDcgKzQyOSw3IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6ZGVjb21wb3NlQXJj
VG9DdWJpYygKIAogICAgIHBvaW50MSA9IHBvaW50VHJhbnNmb3JtLm1hcFBvaW50KHBvaW50MSk7
CiAgICAgcG9pbnQyID0gcG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQyKTsKLSAgICBGbG9h
dFNpemUgZGVsdGEgPSBwb2ludDIgLSBwb2ludDE7CisgICAgR3JhcGhpY3NTaXplIGRlbHRhID0g
cG9pbnQyIC0gcG9pbnQxOwogCiAgICAgZmxvYXQgZCA9IGRlbHRhLndpZHRoKCkgKiBkZWx0YS53
aWR0aCgpICsgZGVsdGEuaGVpZ2h0KCkgKiBkZWx0YS5oZWlnaHQoKTsKICAgICBmbG9hdCBzY2Fs
ZUZhY3RvclNxdWFyZWQgPSBzdGQ6Om1heCgxIC8gZCAtIDAuMjVmLCAwLmYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAkocmV2aXNpb24g
OTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBiYWlsT3V0OgogCiB2b2lkIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW86OnRyYW5zZm9ybVJlY3QoRmxvYXRSZWN0JiBkZXN0UmVjdCwgRmxv
YXRSZWN0JiBzcmNSZWN0KQogewotICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBzcmNSZWN0LnNp
emUoKTsKKyAgICBHcmFwaGljc1NpemUgaW1hZ2VTaXplID0gc3JjUmVjdC5zaXplKCk7CiAgICAg
ZmxvYXQgb3JpZ0Rlc3RXaWR0aCA9IGRlc3RSZWN0LndpZHRoKCk7CiAgICAgZmxvYXQgb3JpZ0Rl
c3RIZWlnaHQgPSBkZXN0UmVjdC5oZWlnaHQoKTsKICAgICBzd2l0Y2ggKG1fbWVldE9yU2xpY2Up
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gOTEy
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YShQ
YXRoJiBwYQogICAgICAgICAgICAgcnhWYWx1ZSA9IHJ5VmFsdWU7CiAgICAgICAgIGVsc2UgaWYg
KCFoYXNSeSkKICAgICAgICAgICAgIHJ5VmFsdWUgPSByeFZhbHVlOwotICAgICAgICBwYXRoLmFk
ZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZShyeFZhbHVlLCByeVZhbHVlKSk7CisgICAgICAg
IHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgR3JhcGhpY3NTaXplKHJ4VmFsdWUsIHJ5VmFsdWUp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBGbG9hdFJlY3Qg
U1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQoKSBjb25zCiAgICAgaWYgKCFpc091dGVybW9zdFNWRygp
KQogICAgICAgICB2aWV3UmVjdGFuZ2xlLnNldExvY2F0aW9uKEZsb2F0UG9pbnQoeCgpLnZhbHVl
KHRoaXMpLCB5KCkudmFsdWUodGhpcykpKTsKIAotICAgIHZpZXdSZWN0YW5nbGUuc2V0U2l6ZShG
bG9hdFNpemUod2lkdGgoKS52YWx1ZSh0aGlzKSwgaGVpZ2h0KCkudmFsdWUodGhpcykpKTsgICAg
CisgICAgdmlld1JlY3RhbmdsZS5zZXRTaXplKEdyYXBoaWNzU2l6ZSh3aWR0aCgpLnZhbHVlKHRo
aXMpLCBoZWlnaHQoKS52YWx1ZSh0aGlzKSkpOyAgICAKICAgICByZXR1cm4gdmlld0JveFRvVmll
d1RyYW5zZm9ybSh2aWV3UmVjdGFuZ2xlLndpZHRoKCksIHZpZXdSZWN0YW5nbGUuaGVpZ2h0KCkp
Lm1hcFJlY3Qodmlld1JlY3RhbmdsZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm0uY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRlICJG
bG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiRmxv
YXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiU1ZHQW5nbGUu
aCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KQEAgLTkzLDkgKzkzLDkgQEAgdm9pZCBTVkdUcmFuc2Zvcm06OnNldFNjYWxlKGZsb2F0IHN4
LCBmbAogICAgIG1fbWF0cml4LnNjYWxlTm9uVW5pZm9ybShzeCwgc3kpOwogfQogCi1GbG9hdFNp
emUgU1ZHVHJhbnNmb3JtOjpzY2FsZSgpIGNvbnN0CitHcmFwaGljc1NpemUgU1ZHVHJhbnNmb3Jt
OjpzY2FsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lzaW9u
KG1fbWF0cml4LmEoKSwgbV9tYXRyaXguZCgpKTsKKyAgICByZXR1cm4gR3JhcGhpY3NTaXplOjpu
YXJyb3dQcmVjaXNpb24obV9tYXRyaXguYSgpLCBtX21hdHJpeC5kKCkpOwogfQogCiB2b2lkIFNW
R1RyYW5zZm9ybTo6c2V0Um90YXRlKGZsb2F0IGFuZ2xlLCBmbG9hdCBjeCwgZmxvYXQgY3kpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEdy
YXBoaWNzU2l6ZTsKIAogY2xhc3MgU1ZHVHJhbnNmb3JtIHsKIHB1YmxpYzoKQEAgLTYzLDcgKzYz
LDcgQEAgcHVibGljOgogICAgIAogICAgIC8vIEludGVybmFsIHVzZSBvbmx5IChhbmltYXRpb24g
c3lzdGVtKQogICAgIEZsb2F0UG9pbnQgdHJhbnNsYXRlKCkgY29uc3Q7Ci0gICAgRmxvYXRTaXpl
IHNjYWxlKCkgY29uc3Q7CisgICAgR3JhcGhpY3NTaXplIHNjYWxlKCkgY29uc3Q7CiAKICAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gU1ZHX1RSQU5TRk9STV9VTktO
T1dOOyB9CiAgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcAkocmV2aXNpb24gOTEyMDApCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAKICNpbmNsdWRlIDxt
YXRoLmg+CkBAIC02MiwxNCArNjIsMTQgQEAgU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OlNWR1RyYW5z
Zm9ybURpc3RhbgogICAgICAgICAvLyBGSVhNRTogbmVlZCB0byBiZSBhYmxlIHRvIHN1YnRyYWN0
IHRvIG1hdHJpY2VzCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZH
X1RSQU5TRk9STV9ST1RBVEU6IHsKLSAgICAgICAgRmxvYXRTaXplIGNlbnRlckRpc3RhbmNlID0g
dG9TVkdUcmFuc2Zvcm0ucm90YXRpb25DZW50ZXIoKSAtIGZyb21TVkdUcmFuc2Zvcm0ucm90YXRp
b25DZW50ZXIoKTsKKyAgICAgICAgR3JhcGhpY3NTaXplIGNlbnRlckRpc3RhbmNlID0gdG9TVkdU
cmFuc2Zvcm0ucm90YXRpb25DZW50ZXIoKSAtIGZyb21TVkdUcmFuc2Zvcm0ucm90YXRpb25DZW50
ZXIoKTsKICAgICAgICAgbV9hbmdsZSA9IHRvU1ZHVHJhbnNmb3JtLmFuZ2xlKCkgLSBmcm9tU1ZH
VHJhbnNmb3JtLmFuZ2xlKCk7CiAgICAgICAgIG1fY3ggPSBjZW50ZXJEaXN0YW5jZS53aWR0aCgp
OwogICAgICAgICBtX2N5ID0gY2VudGVyRGlzdGFuY2UuaGVpZ2h0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVFJBTlNMQVRF
OiB7Ci0gICAgICAgIEZsb2F0U2l6ZSB0cmFuc2xhdGlvbkRpc3RhbmNlID0gdG9TVkdUcmFuc2Zv
cm0udHJhbnNsYXRlKCkgLSBmcm9tU1ZHVHJhbnNmb3JtLnRyYW5zbGF0ZSgpOworICAgICAgICBH
cmFwaGljc1NpemUgdHJhbnNsYXRpb25EaXN0YW5jZSA9IHRvU1ZHVHJhbnNmb3JtLnRyYW5zbGF0
ZSgpIC0gZnJvbVNWR1RyYW5zZm9ybS50cmFuc2xhdGUoKTsKICAgICAgICAgbV90cmFuc2Zvcm0u
dHJhbnNsYXRlKHRyYW5zbGF0aW9uRGlzdGFuY2Uud2lkdGgoKSwgdHJhbnNsYXRpb25EaXN0YW5j
ZS5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzUsNyArMTM1LDcgQEAg
U1ZHVHJhbnNmb3JtIFNWR1RyYW5zZm9ybURpc3RhbmNlOjphZGRTVgogICAgICAgICByZXR1cm4g
dHJhbnNmb3JtOwogICAgIH0KICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9T
Q0FMRTogewotICAgICAgICBGbG9hdFNpemUgc2NhbGUgPSBmaXJzdC5zY2FsZSgpICsgc2Vjb25k
LnNjYWxlKCk7CisgICAgICAgIEdyYXBoaWNzU2l6ZSBzY2FsZSA9IGZpcnN0LnNjYWxlKCkgKyBz
ZWNvbmQuc2NhbGUoKTsKICAgICAgICAgdHJhbnNmb3JtLnNldFNjYWxlKHNjYWxlLndpZHRoKCks
IHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybTsKICAgICB9CkBAIC0y
MDUsMTMgKzIwNSwxMyBAQCBTVkdUcmFuc2Zvcm0gU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFkZFRv
CiAgICAgICAgIHJldHVybiBTVkdUcmFuc2Zvcm0odHJhbnNmb3JtLm1hdHJpeCgpICogbV90cmFu
c2Zvcm0pOwogICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFURTog
ewogICAgICAgICBGbG9hdFBvaW50IHRyYW5zbGF0aW9uID0gdHJhbnNmb3JtLnRyYW5zbGF0ZSgp
OwotICAgICAgICB0cmFuc2xhdGlvbiArPSBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihtX3Ry
YW5zZm9ybS5lKCksIG1fdHJhbnNmb3JtLmYoKSk7CisgICAgICAgIHRyYW5zbGF0aW9uICs9IEdy
YXBoaWNzU2l6ZTo6bmFycm93UHJlY2lzaW9uKG1fdHJhbnNmb3JtLmUoKSwgbV90cmFuc2Zvcm0u
ZigpKTsKICAgICAgICAgbmV3VHJhbnNmb3JtLnNldFRyYW5zbGF0ZSh0cmFuc2xhdGlvbi54KCks
IHRyYW5zbGF0aW9uLnkoKSk7CiAgICAgICAgIHJldHVybiBuZXdUcmFuc2Zvcm07CiAgICAgfQog
ICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1NDQUxFOiB7Ci0gICAgICAgIEZs
b2F0U2l6ZSBzY2FsZSA9IHRyYW5zZm9ybS5zY2FsZSgpOwotICAgICAgICBzY2FsZSArPSBGbG9h
dFNpemU6Om5hcnJvd1ByZWNpc2lvbihtX3RyYW5zZm9ybS5hKCksIG1fdHJhbnNmb3JtLmQoKSk7
CisgICAgICAgIEdyYXBoaWNzU2l6ZSBzY2FsZSA9IHRyYW5zZm9ybS5zY2FsZSgpOworICAgICAg
ICBzY2FsZSArPSBHcmFwaGljc1NpemU6Om5hcnJvd1ByZWNpc2lvbihtX3RyYW5zZm9ybS5hKCks
IG1fdHJhbnNmb3JtLmQoKSk7CiAgICAgICAgIG5ld1RyYW5zZm9ybS5zZXRTY2FsZShzY2FsZS53
aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybiBuZXdUcmFuc2Zvcm07CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gOTEy
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRvQ2xpcFBhdGgoUGF0
aCYgcGF0CiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJl
cG9ydEVycm9yKCJOb3QgYWxsb3dlZCB0byB1c2UgaW5kaXJlY3QgcmVmZXJlbmNlIGluIDxjbGlw
LXBhdGg+Iik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihuKS0+dG9DbGlwUGF0aChwYXRoKTsKLSAgICAgICAg
ICAgIHBhdGgudHJhbnNsYXRlKEZsb2F0U2l6ZSh4KCkudmFsdWUodGhpcyksIHkoKS52YWx1ZSh0
aGlzKSkpOworICAgICAgICAgICAgcGF0aC50cmFuc2xhdGUoR3JhcGhpY3NTaXplKHgoKS52YWx1
ZSh0aGlzKSwgeSgpLnZhbHVlKHRoaXMpKSk7CiAgICAgICAgICAgICBwYXRoLnRyYW5zZm9ybShh
bmltYXRlZExvY2FsVHJhbnNmb3JtKCkpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4OSwxMSArMTg5LDExIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBj
b24KICAgICBpZiAoY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlcikKICAgICAgICAg
Y29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKIAotICAgIEZsb2F0U2l6ZSBzY2Fs
ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBz
cmNSZWN0LmhlaWdodCgpKTsKKyAgICBHcmFwaGljc1NpemUgc2NhbGUoZHN0UmVjdC53aWR0aCgp
IC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKSk7
CiAgICAgCiAgICAgLy8gV2UgY2FuIG9ubHkgZHJhdyB0aGUgZW50aXJlIGZyYW1lLCBjbGlwcGVk
IHRvIHRoZSByZWN0IHdlIHdhbnQuIFNvIGNvbXB1dGUgd2hlcmUgdGhlIHRvcCBsZWZ0CiAgICAg
Ly8gb2YgdGhlIGltYWdlIHdvdWxkIGJlIGlmIHdlIHdlcmUgZHJhd2luZyB3aXRob3V0IGNsaXBw
aW5nLCBhbmQgdHJhbnNsYXRlIGFjY29yZGluZ2x5LgotICAgIEZsb2F0U2l6ZSB0b3BMZWZ0T2Zm
c2V0KHNyY1JlY3QubG9jYXRpb24oKS54KCkgKiBzY2FsZS53aWR0aCgpLCBzcmNSZWN0LmxvY2F0
aW9uKCkueSgpICogc2NhbGUuaGVpZ2h0KCkpOworICAgIEdyYXBoaWNzU2l6ZSB0b3BMZWZ0T2Zm
c2V0KHNyY1JlY3QubG9jYXRpb24oKS54KCkgKiBzY2FsZS53aWR0aCgpLCBzcmNSZWN0LmxvY2F0
aW9uKCkueSgpICogc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZsb2F0UG9pbnQgZGVzdE9mZnNldCA9
IGRzdFJlY3QubG9jYXRpb24oKSAtIHRvcExlZnRPZmZzZXQ7CiAKICAgICBjb250ZXh0LT50cmFu
c2xhdGUoZGVzdE9mZnNldC54KCksIGRlc3RPZmZzZXQueSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCShyZXZpc2lvbiA5MTIw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5j
bHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAi
RmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA5MTIxMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDExLTA3LTE4ICBMZXZpIFdlaW50cmF1YiAgPGxldml3
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgRmxvYXRTaXplIHRvIEdyYXBoaWNzU2l6
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3NTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWlu
ZyBGbG9hdFNpemUgdG8gR3JhcGhpY3NTaXplIGluIGFudGljaXBhdGlvbiBvZiBhbGxvd2luZyBw
b3J0cyB0byB1c2UgNjQgYml0CisgICAgICAgIGZsb2F0cyBpZiB0aGV5IHNvIGNob29zZS4KKwor
ICAgICAgICBObyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorCisgICAgICAgICog
Q2hhbmdlTG9nLTIwMTEtMDItMTY6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBD
Ojo6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJFdmVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2
ZW50OjpkZWx0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OndoZWVsVGlja3Mp
OgorICAgICAgICAqIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmg6CisgICAgICAgICogU2hhcmVk
L1dlYldoZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpXZWJX
aGVlbEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6Cisg
ICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJl
ZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9xdC9XZWJFdmVudEZh
Y3RvcnlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2Vi
V2hlZWxFdmVudCk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJFdmVudEZhY3RvcnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
cGF0aFdpdGhSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRJbmRpY2F0b3I6OmRy
YXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpUaWxlZERyYXdpbmdBcmVhUHJveHk6OnNldEtlZXBBbmRDb3ZlckFyZWFN
dWx0aXBsaWVycyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkRHJhd2luZ0FyZWFQcm94eTo6cGFp
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6VGlsZWREcmF3aW5nQXJlYVByb3h5OjpnZXRLZWVwQW5kQ292ZXJBcmVhTXVs
dGlwbGllcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpjb2FsZXNjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpu
dW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNldFhCdXR0b25F
dmVudEZpZWxkc0J5V2ViV2hlZWxFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdyYXBo
aWNzTGF5ZXI6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6
c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmlu
ZEluZGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpkcmF3UmVjdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdEluRG9jdW1lbnRDb29yZGluYXRlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3RUb1BERik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvY2EvTGF5
ZXJUcmVlSG9zdENBLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjpzaXpl
RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvVGlsZWREcmF3aW5n
QXJlYVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGlsZWREcmF3aW5nQXJlYTo6cGFpbnRJbnRv
Qml0bWFwKToKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5vcmRlcjoKKwogMjAxMS0wNy0xOCAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRpbWVyIHNjaGVk
dWxpbmcgc2hvdWxkIGJlIGJhc2VkIG9mZiB0aGUgbW9ub3RvbmljIGNsb2NrCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNp
b24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTQgKzg0LDE0IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxGbG9hdFJlY3Q+OjpkZWNvZGUoQXIKIH0KIAogCi12b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRT
aXplPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRTaXplJiBm
bG9hdFNpemUpCit2b2lkIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NTaXplPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgR3JhcGhpY3NTaXplJiBmbG9hdFNpemUpCiB7Ci0g
ICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFNpemU+OjplbmNvZGUoZW5jb2RlciwgZmxvYXRT
aXplKTsKKyAgICBTaW1wbGVBcmd1bWVudENvZGVyPEdyYXBoaWNzU2l6ZT46OmVuY29kZShlbmNv
ZGVyLCBmbG9hdFNpemUpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRTaXplPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgRmxvYXRTaXplJiBmbG9hdFNpemUpCitib29s
IEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NTaXplPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgR3JhcGhpY3NTaXplJiBmbG9hdFNpemUpCiB7Ci0gICAgcmV0dXJuIFNpbXBsZUFyZ3Vt
ZW50Q29kZXI8RmxvYXRTaXplPjo6ZGVjb2RlKGRlY29kZXIsIGZsb2F0U2l6ZSk7CisgICAgcmV0
dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8R3JhcGhpY3NTaXplPjo6ZGVjb2RlKGRlY29kZXIsIGZs
b2F0U2l6ZSk7CiB9CiAKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERhdGFiYXNlRGV0YWlsczsKICAgICBj
bGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFzcyBGbG9hdFNp
emU7CisgICAgY2xhc3MgR3JhcGhpY3NTaXplOwogICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiAg
ICAgY2xhc3MgSW50UG9pbnQ7CiAgICAgY2xhc3MgSW50UmVjdDsKQEAgLTkxLDkgKzkxLDkgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogICAgIHN0YXRpYyBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKIH07CiAKLXRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmxvYXRTaXplPiB7Ci0gICAg
c3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3Jl
OjpGbG9hdFNpemUmKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
R3JhcGhpY3NTaXplPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rlcios
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU2l6ZSYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpHcmFwaGljc1NpemUmKTsKIH07CiAKIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW50UG9pbnQ+IHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJFdmVudC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAvLyBGSVhN
RTogV2Ugc2hvdWxkIHByb2JhYmx5IG1vdmUgdG8gbWFrZWluZyB0aGUgV2ViQ29yZS9QbGF0Zm9y
bUZvb0V2ZW50cyB0cml2aWFsIGNsYXNzZXMgc28gdGhhdAogLy8gd2UgY2FuIHVzZSB0aGVtIGFz
IHRoZSBldmVudCB0eXBlLgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzU2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTc3LDE1ICsxNzcsMTUg
QEAgcHVibGljOgogCiAgICAgV2ViV2hlZWxFdmVudCgpIHsgfQogCi0gICAgV2ViV2hlZWxFdmVu
dChUeXBlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBkZWx0
YSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB3aGVlbFRpY2tzLCBHcmFudWxhcml0eSwgTW9k
aWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBXZWJXaGVlbEV2ZW50KFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1NpemUmIGRlbHRhLCBjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc1NpemUmIHdoZWVsVGlja3MsIEdyYW51bGFyaXR5LCBNb2RpZmllcnMs
IGRvdWJsZSB0aW1lc3RhbXApOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBXZWJXaGVlbEV2ZW50
KFR5cGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRlbHRh
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHdoZWVsVGlja3MsIEdyYW51bGFyaXR5LCBQaGFz
ZSBwaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSxib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMsIE1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgV2ViV2hlZWxFdmVudChUeXBl
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTaXplJiBkZWx0YSwg
Y29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTaXplJiB3aGVlbFRpY2tzLCBHcmFudWxhcml0eSwgUGhh
c2UgcGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2UsYm9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVs
dGFzLCBNb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOwogI2VuZGlmCiAKICAgICBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0K
ICAgICBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KLSAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUgZGVs
dGEoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplIHdoZWVsVGlja3MoKSBjb25zdCB7IHJldHVybiBtX3doZWVsVGlja3M7IH0KKyAgICBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc1NpemUgZGVsdGEoKSBjb25zdCB7IHJldHVybiBtX2RlbHRhOyB9
CisgICAgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTaXplIHdoZWVsVGlja3MoKSBjb25zdCB7IHJl
dHVybiBtX3doZWVsVGlja3M7IH0KICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEdyYW51bGFyaXR5PihtX2dyYW51bGFyaXR5KTsgfQogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBQaGFzZSBwaGFzZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PFBoYXNlPihtX3BoYXNlKTsgfQpAQCAtMjAxLDggKzIwMSw4IEBAIHByaXZhdGU6CiAKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBtX3Bvc2l0aW9uOwogICAgIFdlYkNvcmU6OkludFBvaW50IG1f
Z2xvYmFsUG9zaXRpb247Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fZGVsdGE7Ci0gICAgV2Vi
Q29yZTo6RmxvYXRTaXplIG1fd2hlZWxUaWNrczsKKyAgICBXZWJDb3JlOjpHcmFwaGljc1NpemUg
bV9kZWx0YTsKKyAgICBXZWJDb3JlOjpHcmFwaGljc1NpemUgbV93aGVlbFRpY2tzOwogICAgIHVp
bnQzMl90IG1fZ3JhbnVsYXJpdHk7IC8vIEdyYW51bGFyaXR5CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHVpbnQzMl90IG1fcGhhc2U7IC8vIFBoYXNlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViTGF5ZXJUcmVlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJMYXllclRyZWVJbmZvLmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkxheWVyVHJlZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rl
ci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKIApAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3QgV2ViTGF5
ZXJJbmZvIHsKIAogICAgIEZsb2F0UG9pbnQgcG9zOwogICAgIEZsb2F0UG9pbnQzRCBhbmNob3JQ
b2ludDsKLSAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICBHcmFwaGljc1NpemUgc2l6ZTsKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
Y2hpbGRyZW5UcmFuc2Zvcm07CiAgICAgSW50UmVjdCBjb250ZW50c1JlY3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7ICAgIAogCi1XZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgY29uc3Qg
SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0
IEZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgR3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHksIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCitX
ZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgSW50UG9pbnQmIHBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNvbnN0IEdyYXBoaWNzU2l6
ZSYgZGVsdGEsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgd2hlZWxUaWNrcywgR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHksIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCiAgICAgOiBX
ZWJFdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCkKICAgICAsIG1fcG9zaXRpb24ocG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQpAQCAtNDksNyAr
NDksNyBAQCBXZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgCiB9CiAKICNp
ZiBQTEFURk9STShNQUMpCi1XZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwg
Y29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgd2hlZWxUaWNrcywgR3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHksIFBoYXNlIHBoYXNlLCBQaGFzZSBtb21lbnR1bVBoYXNlLCBi
b29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMsIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJs
ZSB0aW1lc3RhbXApCitXZWJXaGVlbEV2ZW50OjpXZWJXaGVlbEV2ZW50KFR5cGUgdHlwZSwgY29u
c3QgSW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGNv
bnN0IEdyYXBoaWNzU2l6ZSYgZGVsdGEsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgd2hlZWxUaWNrcywg
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFBoYXNlIHBoYXNlLCBQaGFzZSBtb21lbnR1bVBoYXNl
LCBib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMsIE1vZGlmaWVycyBtb2RpZmllcnMsIGRv
dWJsZSB0aW1lc3RhbXApCiAgICAgOiBXZWJFdmVudCh0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFt
cCkKICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGds
b2JhbFBvc2l0aW9uKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2VmbC9XZWJFdmVudEZh
Y3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZl
bnRGYWN0b3J5LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
ZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw4ICsxNTAsOCBA
QCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViCiAgICAgcmV0dXJuIFdl
YldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLAogICAgICAgICAgICAgICAgICAgICAgICAgIElu
dFBvaW50KGV2ZW50LT5jYW52YXMueCAtIHBvc2l0aW9uLT54LCBldmVudC0+Y2FudmFzLnkgLSBw
b3NpdGlvbi0+eSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9pbnQoZXZlbnQtPmNh
bnZhcy54LCBldmVudC0+Y2FudmFzLnkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0
U2l6ZShkZWx0YVgsIGRlbHRhWSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXpl
KHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSksCisgICAgICAgICAgICAgICAgICAgICAgICAgR3Jh
cGhpY3NTaXplKGRlbHRhWCwgZGVsdGFZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHcmFw
aGljc1NpemUod2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJXaGVlbEV2ZW50OjpTY3JvbGxCeVBpeGVsV2hlZWxFdmVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RpZmllcnNGb3JFdmVudChldmVudC0+bW9kaWZpZXJzKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBldmVudC0+dGltZXN0YW1wKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAJKHJldmlzaW9uIDkxMjAwKQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzksMTkgKzEzOSwxOSBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViCiAgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7CiAg
ICAgZ2RrX2V2ZW50X2dldF9yb290X2Nvb3JkcyhldmVudCwgJnhSb290LCAmeVJvb3QpOwogCi0g
ICAgRmxvYXRTaXplIHdoZWVsVGlja3M7CisgICAgR3JhcGhpY3NTaXplIHdoZWVsVGlja3M7CiAg
ICAgc3dpdGNoIChldmVudC0+c2Nyb2xsLmRpcmVjdGlvbikgewogICAgIGNhc2UgR0RLX1NDUk9M
TF9VUDoKLSAgICAgICAgd2hlZWxUaWNrcyA9IEZsb2F0U2l6ZSgwLCAxKTsKKyAgICAgICAgd2hl
ZWxUaWNrcyA9IEdyYXBoaWNzU2l6ZSgwLCAxKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBH
REtfU0NST0xMX0RPV046Ci0gICAgICAgIHdoZWVsVGlja3MgPSBGbG9hdFNpemUoMCwgLTEpOwor
ICAgICAgICB3aGVlbFRpY2tzID0gR3JhcGhpY3NTaXplKDAsIC0xKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBHREtfU0NST0xMX0xFRlQ6Ci0gICAgICAgIHdoZWVsVGlja3MgPSBGbG9hdFNp
emUoMSwgMCk7CisgICAgICAgIHdoZWVsVGlja3MgPSBHcmFwaGljc1NpemUoMSwgMCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgR0RLX1NDUk9MTF9SSUdIVDoKLSAgICAgICAgd2hlZWxUaWNr
cyA9IEZsb2F0U2l6ZSgtMSwgMCk7CisgICAgICAgIHdoZWVsVGlja3MgPSBHcmFwaGljc1NpemUo
LTEsIDApOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFj
dG9yeTo6Y3JlYXRlV2ViCiAgICAgLy8gRklYTUU6IFtHVEtdIEFkZCBhIHNldHRpbmcgdG8gY2hh
bmdlIHRoZSBwaXhlbHMgcGVyIGxpbmUgdXNlZCBmb3Igc2Nyb2xsaW5nCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0ODI2CiAgICAgZmxvYXQgc3RlcCA9
IHN0YXRpY19jYXN0PGZsb2F0PihTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCkpOwotICAg
IEZsb2F0U2l6ZSBkZWx0YSh3aGVlbFRpY2tzLndpZHRoKCkgKiBzdGVwLCB3aGVlbFRpY2tzLmhl
aWdodCgpICogc3RlcCk7CisgICAgR3JhcGhpY3NTaXplIGRlbHRhKHdoZWVsVGlja3Mud2lkdGgo
KSAqIHN0ZXAsIHdoZWVsVGlja3MuaGVpZ2h0KCkgKiBzdGVwKTsKIAogICAgIHJldHVybiBXZWJX
aGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQ
b2ludCh4LCB5KSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0
b3J5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRG
YWN0b3J5Lm1tCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
V2ViRXZlbnRGYWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCBX
ZWJXaGVlbEV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViCiAgICAgV2ViRXZlbnQ6Ok1v
ZGlmaWVycyBtb2RpZmllcnMgICAgICAgICAgID0gbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpOwog
ICAgIGRvdWJsZSB0aW1lc3RhbXAgICAgICAgICAgICAgICAgICAgICAgICA9IFtldmVudCB0aW1l
c3RhbXBdOwogICAgIAotICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwg
SW50UG9pbnQocG9zaXRpb24pLCBJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIEZsb2F0U2l6ZShk
ZWx0YVgsIGRlbHRhWSksIEZsb2F0U2l6ZSh3aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1kpLCBncmFu
dWxhcml0eSwgcGhhc2UsIG1vbWVudHVtUGhhc2UsIGhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMs
IG1vZGlmaWVycywgdGltZXN0YW1wKTsKKyAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVu
dDo6V2hlZWwsIEludFBvaW50KHBvc2l0aW9uKSwgSW50UG9pbnQoZ2xvYmFsUG9zaXRpb24pLCBH
cmFwaGljc1NpemUoZGVsdGFYLCBkZWx0YVkpLCBHcmFwaGljc1NpemUod2hlZWxUaWNrc1gsIHdo
ZWVsVGlja3NZKSwgZ3JhbnVsYXJpdHksIHBoYXNlLCBtb21lbnR1bVBoYXNlLCBoYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzLCBtb2RpZmllcnMsIHRpbWVzdGFtcCk7CiB9CiAKIFdlYktleWJvYXJk
RXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KE5TRXZlbnQgKmV2
ZW50LCBOU1ZpZXcgKikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVudEZh
Y3RvcnlRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL3F0L1dlYkV2
ZW50RmFjdG9yeVF0LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvcXQvV2ViRXZlbnRGYWN0b3J5UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4
LDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYgogICAgIGRlbHRh
WCAqPSAoZnVsbFRpY2spID8gUUFwcGxpY2F0aW9uOjp3aGVlbFNjcm9sbExpbmVzKCkgKiBjRGVm
YXVsdFF0U2Nyb2xsU3RlcCA6IDE7CiAgICAgZGVsdGFZICo9IChmdWxsVGljaykgPyBRQXBwbGlj
YXRpb246OndoZWVsU2Nyb2xsTGluZXMoKSAqIGNEZWZhdWx0UXRTY3JvbGxTdGVwIDogMTsKIAot
ICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgZS0+cG9zKCkudG9Qb2lu
dCgpLCBlLT5zY3JlZW5Qb3MoKSwgRmxvYXRTaXplKGRlbHRhWCwgZGVsdGFZKSwgRmxvYXRTaXpl
KHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSksIGdyYW51bGFyaXR5LCBtb2RpZmllcnMsIHRpbWVz
dGFtcCk7CisgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBlLT5wb3Mo
KS50b1BvaW50KCksIGUtPnNjcmVlblBvcygpLCBHcmFwaGljc1NpemUoZGVsdGFYLCBkZWx0YVkp
LCBHcmFwaGljc1NpemUod2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwgZ3JhbnVsYXJpdHksIG1v
ZGlmaWVycywgdGltZXN0YW1wKTsKIH0KIAogV2ViS2V5Ym9hcmRFdmVudCBXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoUUtleUV2ZW50KiBldmVudCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC93aW4vV2ViRXZlbnRGYWN0b3J5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvd2luL1dlYkV2ZW50RmFjdG9yeS5jcHAJKHJldmlzaW9uIDkx
MjAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL3dpbi9XZWJFdmVudEZhY3RvcnkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NDAsNyArNDQwLDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYldoZWVs
RXZlbnQoV2ViRXZlbnQ6OldoZWVsLCBwb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIEZsb2F0U2l6
ZShkZWx0YVgsIGRlbHRhWSksIEZsb2F0U2l6ZSh3aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1kpLCBn
cmFudWxhcml0eSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApOworICAgIHJldHVybiBXZWJXaGVlbEV2
ZW50KFdlYkV2ZW50OjpXaGVlbCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBHcmFwaGljc1Np
emUoZGVsdGFYLCBkZWx0YVkpLCBHcmFwaGljc1NpemUod2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZ
KSwgZ3JhbnVsYXJpdHksIG1vZGlmaWVycywgdGltZXN0YW1wKTsKIH0KIAogV2ViS2V5Ym9hcmRF
dmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoSFdORCBod25kLCBV
SU5UIG1lc3NhZ2UsIFdQQVJBTSB3cGFyYW0sIExQQVJBTSBscGFyYW0pCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0ZpbmRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM4LDcgKzEzOCw3IEBAIHN0YXRpYyBDb2xvciBncmFkaWVudERhcmtDb2xvcigpCiBz
dGF0aWMgUGF0aCBwYXRoV2l0aFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcGF0aFJlY3Qs
IGZsb2F0IHJhZGl1cykKIHsKICAgICBQYXRoIHBhdGg7Ci0gICAgcGF0aC5hZGRSb3VuZGVkUmVj
dChwYXRoUmVjdCwgRmxvYXRTaXplKHJhZGl1cywgcmFkaXVzKSk7CisgICAgcGF0aC5hZGRSb3Vu
ZGVkUmVjdChwYXRoUmVjdCwgR3JhcGhpY3NTaXplKHJhZGl1cywgcmFkaXVzKSk7CiAKICAgICBy
ZXR1cm4gcGF0aDsKIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIEZpbmRJbmRpY2F0b3I6OmRy
YXcoR3JhcGhpY3NDb250ZXh0CiAKICAgICAgICAgewogICAgICAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0gICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dP
ZmZzZXRZKSwgc2hhZG93Qmx1clJhZGl1cywgc2hhZG93Q29sb3IoKSwgQ29sb3JTcGFjZVNSR0Ip
OworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRvdyhHcmFwaGljc1NpemUoc2hh
ZG93T2Zmc2V0WCwgc2hhZG93T2Zmc2V0WSksIHNoYWRvd0JsdXJSYWRpdXMsIHNoYWRvd0NvbG9y
KCksIENvbG9yU3BhY2VTUkdCKTsKICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxs
Q29sb3IobGlnaHRCb3JkZXJDb2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAg
ICAgIGdyYXBoaWNzQ29udGV4dC5maWxsUGF0aChwYXRoV2l0aFJvdW5kZWRSZWN0KG91dGVyUGF0
aFJlY3QsIGNvcm5lclJhZGl1cykpOwogICAgICAgICB9CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9p
ZCBGaW5kSW5kaWNhdG9yOjpkcmF3KEdyYXBoaWNzQ29udGV4dAogCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRl
eHQpOwotICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZShGbG9hdFNpemUocm91
bmRmKGxlZnRCb3JkZXJUaGlja25lc3MpLCByb3VuZGYodG9wQm9yZGVyVGhpY2tuZXNzKSkpOwor
ICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZShHcmFwaGljc1NpemUocm91bmRm
KGxlZnRCb3JkZXJUaGlja25lc3MpLCByb3VuZGYodG9wQm9yZGVyVGhpY2tuZXNzKSkpOwogICAg
ICAgICAgICAgbV9jb250ZW50SW1hZ2UtPnBhaW50KGdyYXBoaWNzQ29udGV4dCwgbV9jb250ZW50
SW1hZ2VTY2FsZUZhY3RvciwgSW50UG9pbnQoMCwgMCksIG1fY29udGVudEltYWdlLT5ib3VuZHMo
KSk7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGls
ZWREcmF3aW5nQXJlYVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgVGlsZWREcmF3aW5nQXJlYVByb3h5OjpzZXRU
aWxlQ3JlYXQKICAgICBtX3RpbGVDcmVhdGlvbkRlbGF5ID0gZGVsYXk7CiB9CiAKLXZvaWQgVGls
ZWREcmF3aW5nQXJlYVByb3h5OjpzZXRLZWVwQW5kQ292ZXJBcmVhTXVsdGlwbGllcnMoY29uc3Qg
RmxvYXRTaXplJiBrZWVwTXVsdGlwbGllciwgY29uc3QgRmxvYXRTaXplJiBjb3Zlck11bHRpcGxp
ZXIpCit2b2lkIFRpbGVkRHJhd2luZ0FyZWFQcm94eTo6c2V0S2VlcEFuZENvdmVyQXJlYU11bHRp
cGxpZXJzKGNvbnN0IEdyYXBoaWNzU2l6ZSYga2VlcE11bHRpcGxpZXIsIGNvbnN0IEdyYXBoaWNz
U2l6ZSYgY292ZXJNdWx0aXBsaWVyKQogewogICAgIG1fa2VlcEFyZWFNdWx0aXBsaWVyID0ga2Vl
cE11bHRpcGxpZXI7CiAgICAgbV9jb3ZlckFyZWFNdWx0aXBsaWVyID0gY292ZXJNdWx0aXBsaWVy
OwpAQCAtMjcwLDcgKzI3MCw3IEBAIGJvb2wgVGlsZWREcmF3aW5nQXJlYVByb3h5OjpwYWludChj
b25zdCAKIAogICAgIC8vIEFzc3VtZXMgdGhlIGJhY2tpbmcgc3RvcmUgaXMgcGFpbnRlZCB3aXRo
IHRoZSBzY2FsZSB0cmFuc2Zvcm0gYXBwbGllZC4KICAgICAvLyBTaW5jZSB0aWxlIGNvbnRlbnQg
aXMgYWxyZWFkeSBzY2FsZWQsIGZpcnN0IHJldmVydCB0aGUgc2NhbGluZyBmcm9tIHRoZSBwYWlu
dGVyLgotICAgIGdjLnNjYWxlKEZsb2F0U2l6ZSgxIC8gbV9jb250ZW50c1NjYWxlLCAxIC8gbV9j
b250ZW50c1NjYWxlKSk7CisgICAgZ2Muc2NhbGUoR3JhcGhpY3NTaXplKDEgLyBtX2NvbnRlbnRz
U2NhbGUsIDEgLyBtX2NvbnRlbnRzU2NhbGUpKTsKIAogICAgIEludFJlY3QgZGlydHlSZWN0ID0g
bWFwRnJvbUNvbnRlbnRzKHJlY3QpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
VGlsZWREcmF3aW5nQXJlYVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1RpbGVkRHJhd2luZ0FyZWFQcm94eS5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtODUsMTIgKzg1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRpbGVDcmVhdGlvbkRl
bGF5KGRvdWJsZSBkZWxheSk7CiAKICAgICAvLyBUaWxlZCBhcmUgZHJvcHBlZCBvdXRzaWRlIHRo
ZSBrZWVwIGFyZWEsIGFuZCBjcmVhdGVkIGZvciBjb3ZlciBhcmVhLiBUaGUgdmFsdWVzIGEgcmVs
YXRpdmUgdG8gdGhlIHZpZXdwb3J0IHNpemUuCi0gICAgdm9pZCBnZXRLZWVwQW5kQ292ZXJBcmVh
TXVsdGlwbGllcnMoV2ViQ29yZTo6RmxvYXRTaXplJiBrZWVwTXVsdGlwbGllciwgV2ViQ29yZTo6
RmxvYXRTaXplJiBjb3Zlck11bHRpcGxpZXIpCisgICAgdm9pZCBnZXRLZWVwQW5kQ292ZXJBcmVh
TXVsdGlwbGllcnMoV2ViQ29yZTo6R3JhcGhpY3NTaXplJiBrZWVwTXVsdGlwbGllciwgV2ViQ29y
ZTo6R3JhcGhpY3NTaXplJiBjb3Zlck11bHRpcGxpZXIpCiAgICAgewogICAgICAgICBrZWVwTXVs
dGlwbGllciA9IG1fa2VlcEFyZWFNdWx0aXBsaWVyOwogICAgICAgICBjb3Zlck11bHRpcGxpZXIg
PSBtX2NvdmVyQXJlYU11bHRpcGxpZXI7CiAgICAgfQotICAgIHZvaWQgc2V0S2VlcEFuZENvdmVy
QXJlYU11bHRpcGxpZXJzKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYga2VlcE11bHRpcGxpZXIs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgY292ZXJNdWx0aXBsaWVyKTsKKyAgICB2b2lkIHNl
dEtlZXBBbmRDb3ZlckFyZWFNdWx0aXBsaWVycyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc1NpemUm
IGtlZXBNdWx0aXBsaWVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1NpemUmIGNvdmVyTXVsdGlw
bGllcik7CiAKICAgICB2b2lkIHRpbGVCdWZmZXJVcGRhdGVDb21wbGV0ZSgpOwogCkBAIC0xNjQs
OCArMTY0LDggQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6OkludFNpemUgbV90aWxlU2l6ZTsK
ICAgICBkb3VibGUgbV90aWxlQ3JlYXRpb25EZWxheTsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUg
bV9rZWVwQXJlYU11bHRpcGxpZXI7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fY292ZXJBcmVh
TXVsdGlwbGllcjsKKyAgICBXZWJDb3JlOjpHcmFwaGljc1NpemUgbV9rZWVwQXJlYU11bHRpcGxp
ZXI7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NTaXplIG1fY292ZXJBcmVhTXVsdGlwbGllcjsKIAog
ICAgIFdlYkNvcmU6OkludFJlY3QgbV92aXNpYmxlQ29udGVudFJlY3Q7CiAgICAgZmxvYXQgbV9j
b250ZW50c1NjYWxlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OTUsOCArMjY5NSw4IEBAIHN0YXRpYyBX
ZWJXaGVlbEV2ZW50IGNvYWxlc2NlKGNvbnN0IFdlYlcKIHsKICAgICBBU1NFUlQoY2FuQ29hbGVz
Y2UoYSwgYikpOwogCi0gICAgRmxvYXRTaXplIG1lcmdlZERlbHRhID0gYS5kZWx0YSgpICsgYi5k
ZWx0YSgpOwotICAgIEZsb2F0U2l6ZSBtZXJnZWRXaGVlbFRpY2tzID0gYS53aGVlbFRpY2tzKCkg
KyBiLndoZWVsVGlja3MoKTsKKyAgICBHcmFwaGljc1NpemUgbWVyZ2VkRGVsdGEgPSBhLmRlbHRh
KCkgKyBiLmRlbHRhKCk7CisgICAgR3JhcGhpY3NTaXplIG1lcmdlZFdoZWVsVGlja3MgPSBhLndo
ZWVsVGlja3MoKSArIGIud2hlZWxUaWNrcygpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJl
dHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgYi5wb3NpdGlvbigpLCBiLmdsb2Jh
bFBvc2l0aW9uKCksIG1lcmdlZERlbHRhLCBtZXJnZWRXaGVlbFRpY2tzLCBiLmdyYW51bGFyaXR5
KCksIGIucGhhc2UoKSwgYi5tb21lbnR1bVBoYXNlKCksIGIuaGFzUHJlY2lzZVNjcm9sbGluZ0Rl
bHRhcygpLCBiLm1vZGlmaWVycygpLCBiLnRpbWVzdGFtcCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGUuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMs
NyArMTkzLDcgQEAgaW50IEluamVjdGVkQnVuZGxlOjpudW1iZXJPZlBhZ2VzKFdlYkZyYQogICAg
IGlmICghcGFnZUhlaWdodEluUGl4ZWxzKQogICAgICAgICBwYWdlSGVpZ2h0SW5QaXhlbHMgPSBj
b3JlRnJhbWUtPnZpZXcoKS0+aGVpZ2h0KCk7CiAKLSAgICByZXR1cm4gUHJpbnRDb250ZXh0Ojpu
dW1iZXJPZlBhZ2VzKGNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdl
SGVpZ2h0SW5QaXhlbHMpKTsKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2Vz
KGNvcmVGcmFtZSwgR3JhcGhpY3NTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5Q
aXhlbHMpKTsKIH0KIAogaW50IEluamVjdGVkQnVuZGxlOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGlkLCBkb3VibGUgcGFnZVdpZHRoSW5Q
aXhlbHMsIGRvdWJsZSBwYWdlSGVpZ2h0SW5QaXhlbHMpCkBAIC0yMTEsNyArMjExLDcgQEAgaW50
IEluamVjdGVkQnVuZGxlOjpwYWdlTnVtYmVyRm9yRWxlbWVudAogICAgIGlmICghcGFnZUhlaWdo
dEluUGl4ZWxzKQogICAgICAgICBwYWdlSGVpZ2h0SW5QaXhlbHMgPSBjb3JlRnJhbWUtPnZpZXco
KS0+aGVpZ2h0KCk7CiAKLSAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxl
bWVudChlbGVtZW50LCBGbG9hdFNpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBp
eGVscykpOworICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVs
ZW1lbnQsIEdyYXBoaWNzU2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxz
KSk7CiB9CiAKIFN0cmluZyBJbmplY3RlZEJ1bmRsZTo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhl
bHMoV2ViRnJhbWUqIGZyYW1lLCBpbnQgcGFnZUluZGV4LCBpbnQgd2lkdGgsIGludCBoZWlnaHQs
IGludCBtYXJnaW5Ub3AsIGludCBtYXJnaW5SaWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1h
cmdpbkxlZnQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAko
cmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUveDExL05ldHNjYXBlUGx1Z2luWDExLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc4LDcg
KzM3OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRYQnV0dG9uRXZlbnRGaWVsZHMKICAgICBz
ZXRDb21tb25Nb3VzZUV2ZW50RmllbGRzKHhCdXR0b24sIHdlYkV2ZW50LCBwbHVnaW5Mb2NhdGlv
bik7CiAKICAgICB4QnV0dG9uLnR5cGUgPSBCdXR0b25QcmVzczsKLSAgICBGbG9hdFNpemUgdGlj
a3MgPSB3ZWJFdmVudC53aGVlbFRpY2tzKCk7CisgICAgR3JhcGhpY3NTaXplIHRpY2tzID0gd2Vi
RXZlbnQud2hlZWxUaWNrcygpOwogICAgIGlmICh0aWNrcy5oZWlnaHQoKSkgewogICAgICAgICBp
ZiAodGlja3MuaGVpZ2h0KCkgPiAwKQogICAgICAgICAgICAgeEJ1dHRvbi5idXR0b24gPSA0OyAv
LyB1cApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJH
cmFwaGljc0xheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFdlYkdyYXBoaWNz
TGF5ZXI6OnNldEFuY2hvclBvaW50KGNvCiAgICAgbm90aWZ5Q2hhbmdlKCk7CiB9CiAKLXZvaWQg
V2ViR3JhcGhpY3NMYXllcjo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIFdl
YkdyYXBoaWNzTGF5ZXI6OnNldFNpemUoY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKQogewogICAg
IGlmICh0aGlzLT5zaXplKCkgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzgzLDcgKzM4
Myw3IEBAIHZvaWQgV2ViR3JhcGhpY3NMYXllcjo6c3luY0NvbXBvc2l0aW5nU3QKICAgICBtX2xh
eWVySW5mby5wb3MgPSBwb3NpdGlvbigpOwogICAgIG1fbGF5ZXJJbmZvLnByZXNlcnZlczNEID0g
cHJlc2VydmVzM0QoKTsKICAgICBtX2xheWVySW5mby5yZXBsaWNhID0gdG9XZWJMYXllcklEKHJl
cGxpY2FMYXllcigpKTsKLSAgICBtX2xheWVySW5mby5zaXplID0gRmxvYXRTaXplKHNpemUoKS53
aWR0aCgpICogbV9jb250ZW50U2NhbGUsIHNpemUoKS5oZWlnaHQoKSAqIG1fY29udGVudFNjYWxl
KTsKKyAgICBtX2xheWVySW5mby5zaXplID0gR3JhcGhpY3NTaXplKHNpemUoKS53aWR0aCgpICog
bV9jb250ZW50U2NhbGUsIHNpemUoKS5oZWlnaHQoKSAqIG1fY29udGVudFNjYWxlKTsKICAgICBt
X2xheWVySW5mby50cmFuc2Zvcm0gPSB0cmFuc2Zvcm0oKTsKICAgICBtX2NvbnRlbnROZWVkc0Rp
c3BsYXkgPSBmYWxzZTsKICAgICBtX2xheWVySW5mby5jaGlsZHJlbi5jbGVhcigpOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJHcmFwaGljc0xheWVyLmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgp
OwogICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogICAgIHZvaWQgc2V0
QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7Ci0gICAgdm9pZCBzZXRTaXplKGNvbnN0
IEZsb2F0U2l6ZSYpOworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBHcmFwaGljc1NpemUmKTsKICAg
ICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAgIHZv
aWQgc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAg
ICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAJKHJldmlzaW9uIDkx
MjAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0NCw3ICs2NDQsNyBAQCB2b2lkIERyYXdpbmdBcmVh
SW1wbDo6ZGlzcGxheShVcGRhdGVJbmZvCiAgICAgbV9zY3JvbGxPZmZzZXQgPSBJbnRTaXplKCk7
CiAKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQgPSBjcmVhdGVH
cmFwaGljc0NvbnRleHQoYml0bWFwLmdldCgpKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZShtX3dlYlBhZ2UtPnVzZXJTcGFjZVNjYWxlRmFjdG9yKCksIG1fd2ViUGFnZS0+
dXNlclNwYWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoR3Jh
cGhpY3NTaXplKG1fd2ViUGFnZS0+dXNlclNwYWNlU2NhbGVGYWN0b3IoKSwgbV93ZWJQYWdlLT51
c2VyU3BhY2VTY2FsZUZhY3RvcigpKSk7CiAKICAgICB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3Vu
ZHMgPSBib3VuZHM7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODUsNyArMTg1LDcgQEAgYm9vbCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZElu
ZGljYXRvcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgT3duUHRyPEdyYXBoaWNz
Q29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gZmluZEluZGljYXRvclRleHRCYWNraW5nU3RvcmUt
PmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwotICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoRmxv
YXRTaXplKG1fd2ViUGFnZS0+dXNlclNwYWNlU2NhbGVGYWN0b3IoKSwgbV93ZWJQYWdlLT51c2Vy
U3BhY2VTY2FsZUZhY3RvcigpKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShHcmFwaGlj
c1NpemUobV93ZWJQYWdlLT51c2VyU3BhY2VTY2FsZUZhY3RvcigpLCBtX3dlYlBhZ2UtPnVzZXJT
cGFjZVNjYWxlRmFjdG9yKCkpKTsKIAogICAgIEludFJlY3QgcGFpbnRSZWN0ID0gc2VsZWN0aW9u
UmVjdDsKICAgICBwYWludFJlY3QubW92ZShzZWxlY3RlZEZyYW1lLT52aWV3KCktPmZyYW1lUmVj
dCgpLngoKSwgc2VsZWN0ZWRGcmFtZS0+dmlldygpLT5mcmFtZVJlY3QoKS55KCkpOwpAQCAtMzE2
LDcgKzMxNiw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmRyYXdSZWN0KFBhZ2VPdmVybGEKICAg
ICB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGlj
c0NvbnRleHQpOwogCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXpl
KHNoYWRvd09mZnNldFgsIHNoYWRvd09mZnNldFkpLCBzaGFkb3dCbHVyUmFkaXVzLCBob2xlU2hh
ZG93Q29sb3IoZnJhY3Rpb25GYWRlZEluKSwgQ29sb3JTcGFjZVNSR0IpOworICAgICAgICBncmFw
aGljc0NvbnRleHQuc2V0U2hhZG93KEdyYXBoaWNzU2l6ZShzaGFkb3dPZmZzZXRYLCBzaGFkb3dP
ZmZzZXRZKSwgc2hhZG93Qmx1clJhZGl1cywgaG9sZVNoYWRvd0NvbG9yKGZyYWN0aW9uRmFkZWRJ
biksIENvbG9yU3BhY2VTUkdCKTsKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZpbGxDb2xv
cihob2xlRmlsbENvbG9yKGZyYWN0aW9uRmFkZWRJbiksIENvbG9yU3BhY2VTUkdCKTsKIAogICAg
ICAgICAvLyBEcmF3IHdoaXRlIGZyYW1lcyBhcm91bmQgdGhlIGhvbGVzLgpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gOTEy
MDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkxNCw3ICs5MTQsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBXZWJQ
YWdlOjpzY2FsZWRTbmFwCiAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7CiAgICAgCiAgICAg
aWYgKHNjYWxlKQotICAgICAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShzY2Fs
ZUZhY3Rvciwgc2NhbGVGYWN0b3IpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShH
cmFwaGljc1NpemUoc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9yKSk7CiAgICAgCiAgICAgZ3JhcGhp
Y3NDb250ZXh0LT50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55KCkpOwogICAgIGZyYW1lVmll
dy0+cGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQuZ2V0KCksIHJlY3QpOwpAQCAtMjMwOSw3
ICsyMzA5LDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aQogCiAg
ICAgaWYgKG1fcHJpbnRDb250ZXh0KSB7CiAgICAgICAgIHJlc3VsdFBhZ2VSZWN0cyA9IG1fcHJp
bnRDb250ZXh0LT5wYWdlUmVjdHMoKTsKLSAgICAgICAgcmVzdWx0VG90YWxTY2FsZUZhY3RvckZv
clByaW50aW5nID0gbV9wcmludENvbnRleHQtPmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3RvcihG
bG9hdFNpemUocHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyV2lkdGgsIHByaW50SW5mby5hdmFpbGFi
bGVQYXBlckhlaWdodCkpICogcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yOworICAgICAg
ICByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcgPSBtX3ByaW50Q29udGV4dC0+Y29t
cHV0ZUF1dG9tYXRpY1NjYWxlRmFjdG9yKEdyYXBoaWNzU2l6ZShwcmludEluZm8uYXZhaWxhYmxl
UGFwZXJXaWR0aCwgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0KSkgKiBwcmludEluZm8u
cGFnZVNldHVwU2NhbGVGYWN0b3I7CiAgICAgfQogCiAgICAgLy8gSWYgd2UncmUgYXNrZWQgdG8g
cHJpbnQsIHdlIHNob3VsZCBhY3R1YWxseSBwcmludCBhdCBsZWFzdCBhIGJsYW5rIHBhZ2UuCkBA
IC0yMzQwLDcgKzIzNDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9QREYodWludDY0X3Qg
ZnJhCiAgICAgICAgIENHUERGQ29udGV4dEJlZ2luUGFnZShjb250ZXh0LmdldCgpLCBwYWdlSW5m
by5nZXQoKSk7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGN0eChjb250ZXh0LmdldCgpKTsK
LSAgICAgICAgY3R4LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAgICBjdHguc2NhbGUo
R3JhcGhpY3NTaXplKDEsIC0xKSk7CiAgICAgICAgIGN0eC50cmFuc2xhdGUoMCwgLXJlY3QuaGVp
Z2h0KCkpOwogICAgICAgICBtX3ByaW50Q29udGV4dC0+c3Bvb2xSZWN0KGN0eCwgcmVjdCk7CiAK
QEAgLTIzNzYsNyArMjM3Niw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYodWludDY0
X3QgZnIKICAgICAgICAgICAgIENHUERGQ29udGV4dEJlZ2luUGFnZShjb250ZXh0LmdldCgpLCBw
YWdlSW5mby5nZXQoKSk7CiAKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjdHgoY29udGV4
dC5nZXQoKSk7Ci0gICAgICAgICAgICBjdHguc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAg
ICAgICAgICBjdHguc2NhbGUoR3JhcGhpY3NTaXplKDEsIC0xKSk7CiAgICAgICAgICAgICBjdHgu
dHJhbnNsYXRlKDAsIC1tX3ByaW50Q29udGV4dC0+cGFnZVJlY3QocGFnZSkuaGVpZ2h0KCkpOwog
ICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUGFnZShjdHgsIHBhZ2UsIG1fcHJpbnRD
b250ZXh0LT5wYWdlUmVjdChwYWdlKS53aWR0aCgpKTsKIApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2NhL0xheWVyVHJlZUhvc3RDQS5jcHAJ
KHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2Nh
L0xheWVyVHJlZUhvc3RDQS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCB2
b2lkIExheWVyVHJlZUhvc3RDQTo6c2l6ZURpZENoYW5nZShjb25zCiAKICAgICAvLyBJZiB0aGUg
bmV3U2l6ZSBleHBvc2VzIG5ldyBhcmVhcyBvZiB0aGUgbm9uLWNvbXBvc2l0ZWQgY29udGVudCBh
IHNldE5lZWRzRGlzcGxheSBpcyBuZWVkZWQKICAgICAvLyBmb3IgdGhvc2UgbmV3bHkgZXhwb3Nl
ZCBhcmVhcy4KLSAgICBGbG9hdFNpemUgb2xkU2l6ZSA9IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRM
YXllci0+c2l6ZSgpOworICAgIEdyYXBoaWNzU2l6ZSBvbGRTaXplID0gbV9ub25Db21wb3NpdGVk
Q29udGVudExheWVyLT5zaXplKCk7CiAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5z
ZXRTaXplKG5ld1NpemUpOwogCiAgICAgaWYgKG5ld1NpemUud2lkdGgoKSA+IG9sZFNpemUud2lk
dGgoKSkgewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1RpbGVk
RHJhd2luZ0FyZWFRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL3F0L1RpbGVkRHJhd2luZ0FyZWFRdC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1RpbGVkRHJhd2luZ0FyZWFRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBUaWxlZERyYXdpbmdBcmVh
OjpwYWludEludG9CaXRtYXAoUwogewogICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+IGdyYXBo
aWNzQ29udGV4dChiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpKTsKICAgICBncmFwaGlj
c0NvbnRleHQtPnRyYW5zbGF0ZSgtdGlsZVJlY3QueCgpLCAtdGlsZVJlY3QueSgpKTsKLSAgICBn
cmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShzY2FsZSwgc2NhbGUpKTsKKyAgICBncmFw
aGljc0NvbnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6ZShzY2FsZSwgc2NhbGUpKTsKICAgICBJbnRS
ZWN0IGNvbnRlbnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QodGlsZVJlY3QueCgp
IC8gc2NhbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbGVSZWN0LnkoKSAvIHNjYWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpIC8gc2NhbGUsCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMTQ3OSw3ICsxNDc5LDcg
QEAgX1dLUGFnZUhhc0hvcml6b250YWxTY3JvbGxiYXIKIF9fWk42V2ViS2l0MTlOYXRpdmVXZWJX
aGVlbEV2ZW50QzFFUDdOU0V2ZW50UDZOU1ZpZXcKIF9fWk42V2ViS2l0MTVXZWJFdmVudEZhY3Rv
cnkxOWNyZWF0ZVdlYldoZWVsRXZlbnRFUDdOU0V2ZW50UDZOU1ZpZXcKIF9XS0dldFdoZWVsRXZl
bnREZWx0YXMKLV9fWk42V2ViS2l0MTNXZWJXaGVlbEV2ZW50QzFFTlNfOFdlYkV2ZW50NFR5cGVF
UktON1dlYkNvcmU4SW50UG9pbnRFUzZfUktOUzNfOUZsb2F0U2l6ZUVTOV9OUzBfMTFHcmFudWxh
cml0eUVOUzBfNVBoYXNlRVNCX2JOUzFfOU1vZGlmaWVyc0VkCitfX1pONldlYktpdDEzV2ViV2hl
ZWxFdmVudEMxRU5TXzhXZWJFdmVudDRUeXBlRVJLTjdXZWJDb3JlOEludFBvaW50RVM2X1JLTlMz
XzlHcmFwaGljc1NpemVFUzlfTlMwXzExR3JhbnVsYXJpdHlFTlMwXzVQaGFzZUVTQl9iTlMxXzlN
b2RpZmllcnNFZAogX19aTjZXZWJLaXQxMldlYlBhZ2VQcm94eTE2aGFuZGxlV2hlZWxFdmVudEVS
S05TXzE5TmF0aXZlV2ViV2hlZWxFdmVudEUKIF9fWk4zV1RGNlZlY3RvcklONldlYktpdDE5TmF0
aXZlV2ViV2hlZWxFdmVudEVMbTBFRTE0ZXhwYW5kQ2FwYWNpdHlFbVBLUzJfCiBfX1pOM1dURjZW
ZWN0b3JJTjZXZWJLaXQxOU5hdGl2ZVdlYldoZWVsRXZlbnRFTG0wRUUxNXJlc2VydmVDYXBhY2l0
eUVtCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTEyMTEpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI1IEBACisyMDExLTA3LTE4ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZW5hbWUgRmxvYXRTaXplIHRvIEdyYXBoaWNzU2l6ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWluZyBGbG9hdFNpemUgdG8g
R3JhcGhpY3NTaXplIGluIGFudGljaXBhdGlvbiBvZiBhbGxvd2luZyBwb3J0cyB0byB1c2UgNjQg
Yml0CisgICAgICAgIGZsb2F0cyBpZiB0aGV5IHNvIGNob29zZS4KKworICAgICAgICBObyB0ZXN0
cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorCisgICAgICAgICogc3JjL1dlYkZyYW1lSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZVByaW50Q29udGV4dDo6c3Bvb2xQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQp
OgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyk6CisgICAgICAgICogdGVzdHMvRHJhZ0lt
YWdlVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9U
cmFuc3BhcmVuY3lXaW5UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEx
LTA3LTE4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VGltZXIgc2NoZWR1bGluZyBzaG91bGQgYmUgYmFzZWQgb2ZmIHRoZSBtb25vdG9uaWMgY2xvY2sK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNyArMzU1LDcgQEAgcHVibGljOgogCiAgICAgICAg
IGN0eC5zYXZlKCk7CiAjaWYgT1MoVU5JWCkgJiYgIU9TKERBUldJTikKLSAgICAgICAgY3R4LnNj
YWxlKFdlYkNvcmU6OkZsb2F0U2l6ZShzY2FsZSwgc2NhbGUpKTsKKyAgICAgICAgY3R4LnNjYWxl
KFdlYkNvcmU6OkdyYXBoaWNzU2l6ZShzY2FsZSwgc2NhbGUpKTsKICNlbmRpZgogICAgICAgICBj
dHgudHJhbnNsYXRlKHN0YXRpY19jYXN0PGZsb2F0PigtcGFnZVJlY3QueCgpKSwKICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oLXBhZ2VSZWN0LnkoKSkpOwpAQCAtMTc4
Nyw3ICsxNzg3LDcgQEAgaW50IFdlYkZyYW1lSW1wbDo6cGFnZU51bWJlckZvckVsZW1lbnRCeQog
ICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgRmxvYXRTaXplIHBh
Z2VTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpOworICAgIEdyYXBo
aWNzU2l6ZSBwYWdlU2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKTsK
ICAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChlbGVtZW50LCBw
YWdlU2l6ZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk0LDcgKzEwOTQsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpkb1BpeGVsUmVhZGJhY2tUb0NhbnZhCiAgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKHBpeGVsQXJyYXkuZ2V0KCksIHJlY3Quc2l6ZSgp
LCBJbnRSZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKSwgSW50UG9pbnQoKSk7CiAgICAgICAg
IGdjLnNhdmUoKTsKICAgICAgICAgZ2MudHJhbnNsYXRlKEludFNpemUoMCwgYml0bWFwSGVpZ2h0
KSk7Ci0gICAgICAgIGdjLnNjYWxlKEZsb2F0U2l6ZSgxLjBmLCAtMS4wZikpOworICAgICAgICBn
Yy5zY2FsZShHcmFwaGljc1NpemUoMS4wZiwgLTEuMGYpKTsKICAgICAgICAgLy8gVXNlIGludmVy
dFJlY3QgaW4gbmV4dCBsaW5lLCBzbyB0aGF0IHRyYW5zZm9ybSBhYm92ZSBpbnZlcnRzIGl0IGJh
Y2sgdG8KICAgICAgICAgLy8gZGVzaXJlZCBkZXN0aW5hdGlvbiByZWN0LgogICAgICAgICBnYy5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGlu
dmVydFJlY3QubG9jYXRpb24oKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0RyYWdJbWFnZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1
LDcgKzEwNSw3IEBAIFRFU1QoRHJhZ0ltYWdlVGVzdCwgTnVsbEhhbmRsaW5nKQogCiAgICAgZGVs
ZXRlRHJhZ0ltYWdlKDApOwogICAgIEVYUEVDVF9UUlVFKGRyYWdJbWFnZVNpemUoMCkuaXNaZXJv
KCkpOwotICAgIEVYUEVDVF9GQUxTRShzY2FsZURyYWdJbWFnZSgwLCBGbG9hdFNpemUoMC41LCAw
LjUpKSk7CisgICAgRVhQRUNUX0ZBTFNFKHNjYWxlRHJhZ0ltYWdlKDAsIEdyYXBoaWNzU2l6ZSgw
LjUsIDAuNSkpKTsKICAgICBFWFBFQ1RfRkFMU0UoZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9u
KDAsIDAuNSkpOwogICAgIEVYUEVDVF9GQUxTRShjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoMCkp
OwogICAgIEVYUEVDVF9GQUxTRShjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2UoMCkp
OwpAQCAtMTE3LDcgKzExNyw3IEBAIFRFU1QoRHJhZ0ltYWdlVGVzdCwgTm9uTnVsbEhhbmRsaW5n
KQogICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UgPSBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2Uo
dGVzdEltYWdlLmdldCgpKTsKICAgICBBU1NFUlRfVFJVRShkcmFnSW1hZ2UpOwogCi0gICAgZHJh
Z0ltYWdlID0gc2NhbGVEcmFnSW1hZ2UoZHJhZ0ltYWdlLCBGbG9hdFNpemUoMC41LCAwLjUpKTsK
KyAgICBkcmFnSW1hZ2UgPSBzY2FsZURyYWdJbWFnZShkcmFnSW1hZ2UsIEdyYXBoaWNzU2l6ZSgw
LjUsIDAuNSkpOwogICAgIEFTU0VSVF9UUlVFKGRyYWdJbWFnZSk7CiAgICAgSW50U2l6ZSBzaXpl
ID0gZHJhZ0ltYWdlU2l6ZShkcmFnSW1hZ2UpOwogICAgIEVYUEVDVF9FUSgxLCBzaXplLndpZHRo
KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmFuc3BhcmVuY3lXaW5U
ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RyYW5z
cGFyZW5jeVdpblRlc3QuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVHJhbnNwYXJlbmN5V2luVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OSw3ICsxMTksNyBAQCBURVNUKFRyYW5zcGFyZW5jeVdpbiwgTm9MYXllcikKIAogICAgIC8vIFNj
YWxlVHJhbnNmb3JtCiAgICAgc3JjLT5jb250ZXh0KCktPnNhdmUoKTsKLSAgICBzcmMtPmNvbnRl
eHQoKS0+c2NhbGUoRmxvYXRTaXplKDIuMCwgMC41KSk7CisgICAgc3JjLT5jb250ZXh0KCktPnNj
YWxlKEdyYXBoaWNzU2l6ZSgyLjAsIDAuNSkpOwogICAgIHsKICAgICAgICAgVHJhbnNwYXJlbmN5
V2luIGhlbHBlcjsKICAgICAgICAgaGVscGVyLmluaXQoc3JjLT5jb250ZXh0KCksCkBAIC0xNzEs
NyArMTcxLDcgQEAgVEVTVChUcmFuc3BhcmVuY3lXaW4sIFdoaXRlTGF5ZXIpCiAKICAgICAvLyBT
Y2FsZVRyYW5zZm9ybQogICAgIHNyYy0+Y29udGV4dCgpLT5zYXZlKCk7Ci0gICAgc3JjLT5jb250
ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgyLjAsIDAuNSkpOworICAgIHNyYy0+Y29udGV4dCgpLT5z
Y2FsZShHcmFwaGljc1NpemUoMi4wLCAwLjUpKTsKICAgICB7CiAgICAgICAgIFRyYW5zcGFyZW5j
eVdpbiBoZWxwZXI7CiAgICAgICAgIGhlbHBlci5pbml0KHNyYy0+Y29udGV4dCgpLApAQCAtMjU5
LDcgKzI1OSw3IEBAIFRFU1QoVHJhbnNwYXJlbmN5V2luLCBPcGFxdWVDb21wb3NpdGVMYXkKIAog
ICAgIC8vIFNjYWxlVHJhbnNmb3JtCiAgICAgc3JjLT5jb250ZXh0KCktPnNhdmUoKTsKLSAgICBz
cmMtPmNvbnRleHQoKS0+c2NhbGUoRmxvYXRTaXplKDIuMCwgMC41KSk7CisgICAgc3JjLT5jb250
ZXh0KCktPnNjYWxlKEdyYXBoaWNzU2l6ZSgyLjAsIDAuNSkpOwogICAgIHsKICAgICAgICAgVHJh
bnNwYXJlbmN5V2luIGhlbHBlcjsKICAgICAgICAgaGVscGVyLmluaXQoc3JjLT5jb250ZXh0KCks
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTIxMSkKKysrIFNvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTA3LTE4
ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUg
RmxvYXRTaXplIHRvIEdyYXBoaWNzU2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWluZyBGbG9hdFNpemUgdG8gR3JhcGhpY3NTaXplIGluIGFu
dGljaXBhdGlvbiBvZiBhbGxvd2luZyBwb3J0cyB0byB1c2UgNjQgYml0CisgICAgICAgIGZsb2F0
cyBpZiB0aGV5IHNvIGNob29zZS4KKworICAgICAgICBObyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0
eSBjaGFuZ2VzLgorCisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKGV3a192
aWV3X3BhaW50X2NvbnRleHRfc2NhbGUpOgorCiAyMDExLTA3LTE1ICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogTW91c2UgY3Vyc29yIGRvZXNu
4oCZdCBoaWRlIHdoZW4gZnVsbCBzY3JlZW4gdmlkZW8gSFVEIGhpZGVzCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMwOCw3ICszMzA4LDcgQEAg
dm9pZCBld2tfdmlld19wYWludF9jb250ZXh0X3NjYWxlKEV3a19WaQogewogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKGN0eHQpOwogCi0gICAgY3R4dC0+Z2MtPnNjYWxlKFdlYkNvcmU6
OkZsb2F0U2l6ZShzY2FsZV94LCBzY2FsZV95KSk7CisgICAgY3R4dC0+Z2MtPnNjYWxlKFdlYkNv
cmU6OkdyYXBoaWNzU2l6ZShzY2FsZV94LCBzY2FsZV95KSk7CiB9CiAKIC8qKgpJbmRleDogU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkocmV2aXNpb24gOTEyMTEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wNy0xOCAgTGV2aSBXZWlu
dHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIEZsb2F0U2l6ZSB0
byBHcmFwaGljc1NpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVuYW1pbmcgRmxvYXRTaXplIHRvIEdyYXBoaWNzU2l6ZSBpbiBhbnRpY2lwYXRpb24g
b2YgYWxsb3dpbmcgcG9ydHMgdG8gdXNlIDY0IGJpdAorICAgICAgICBmbG9hdHMgaWYgdGhleSBz
byBjaG9vc2UuCisKKyAgICAgICAgTm8gdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhZ2VOdW1iZXJGb3JFbGVtZW50
QnlJZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6Om51bWJlck9mUGFnZXNG
b3JGcmFtZSk6CisKIDIwMTEtMDctMTUgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OOiBNb3VzZSBjdXJzb3IgZG9lc27igJl0IGhpZGUgd2hlbiBm
dWxsIHNjcmVlbiB2aWRlbyBIVUQgaGlkZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNw
cAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTYsNyArMjU2
LDcgQEAgaW50IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cGFnZU51bWJlcgogICAgIEVsZW1l
bnQqIGNvcmVFbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZChB
dG9taWNTdHJpbmcoaWQpKTsKICAgICBpZiAoIWNvcmVFbGVtZW50KQogICAgICAgICByZXR1cm4g
LTE7Ci0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoY29yZUVs
ZW1lbnQsIEZsb2F0U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKKyAgICByZXR1cm4gUHJp
bnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChjb3JlRWxlbWVudCwgR3JhcGhpY3NTaXpl
KHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOwogfQogCiAvKioKQEAgLTI3NSw3ICsyNzUsNyBAQCBp
bnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZlBhCiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHJldHVybiBQcmludENvbnRleHQ6Om51bWJl
ck9mUGFnZXMoY29yZUZyYW1lLCBGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7Cisg
ICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhjb3JlRnJhbWUsIEdyYXBoaWNz
U2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKIH0KIAogLyoqCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5MTIxMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDExLTA3LTE4ICBMZXZpIFdlaW50cmF1YiAg
PGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgRmxvYXRTaXplIHRvIEdyYXBo
aWNzU2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjQ3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW5hbWluZyBGbG9hdFNpemUgdG8gR3JhcGhpY3NTaXplIGluIGFudGljaXBhdGlvbiBvZiBhbGxv
d2luZyBwb3J0cyB0byB1c2UgNjQgYml0CisgICAgICAgIGZsb2F0cyBpZiB0aGV5IHNvIGNob29z
ZS4KKworICAgICAgICBObyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorCisgICAg
ICAgICogTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgcGFn
ZU51bWJlckZvckVsZW1lbnQ6ZWxlbWVudDpwYWdlV2lkdGhJblBpeGVsczpdKToKKyAgICAgICAg
KC1bV2ViRnJhbWUgbnVtYmVyT2ZQYWdlczpwYWdlV2lkdGhJblBpeGVsczpdKToKKyAgICAgICAg
KC1bV2ViRnJhbWUgcHJpbnRUb0NHQ29udGV4dDpjZ0NvbnRleHQ6cGFnZVdpZHRoSW5QaXhlbHM6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X2NvbXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRTY2FsZUZhY3RvcjpwYWdlU2l6ZTpdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfYmVn
aW5QcmludE1vZGVXaXRoUGFnZVdpZHRoOmhlaWdodDpzaHJpbmtUb0ZpdDpdKToKKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgX2JlZ2luU2NyZWVuUGFnaW5hdGlvbk1vZGVXaXRoUGFnZVNpemU6c2hy
aW5rVG9GaXQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGxheW91dFRvTWluaW11bVBhZ2VX
aWR0aDpoZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFkanVzdGluZ1ZpZXdTaXplOl0pOgorCiAy
MDExLTA3LTE4ICBQcmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBQYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY3NApJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1tCShyZXZp
c2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3Mu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI3NSwxMiArMjc1LDEyIEBAIC0gKE5TU3RyaW5nICopY291
bnRlclZhbHVlRm9yRWxlbWVudDooRE8KIAogLSAoaW50KXBhZ2VOdW1iZXJGb3JFbGVtZW50OihE
T01FbGVtZW50KillbGVtZW50OihmbG9hdClwYWdlV2lkdGhJblBpeGVsczooZmxvYXQpcGFnZUhl
aWdodEluUGl4ZWxzCiB7Ci0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVs
ZW1lbnQoY29yZShlbGVtZW50KSwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVp
Z2h0SW5QaXhlbHMpKTsKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxl
bWVudChjb3JlKGVsZW1lbnQpLCBHcmFwaGljc1NpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VI
ZWlnaHRJblBpeGVscykpOwogfQogCiAtIChpbnQpbnVtYmVyT2ZQYWdlczooZmxvYXQpcGFnZVdp
ZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWlnaHRJblBpeGVscwogewotICAgIHJldHVybiBQcmlu
dENvbnRleHQ6Om51bWJlck9mUGFnZXMoX3ByaXZhdGUtPmNvcmVGcmFtZSwgRmxvYXRTaXplKHBh
Z2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKKyAgICByZXR1cm4gUHJpbnRD
b250ZXh0OjpudW1iZXJPZlBhZ2VzKF9wcml2YXRlLT5jb3JlRnJhbWUsIEdyYXBoaWNzU2l6ZShw
YWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CiB9CiAKIC0gKE5TU3RyaW5n
ICopcGFnZVByb3BlcnR5Oihjb25zdCBjaGFyICopcHJvcGVydHlOYW1lOihpbnQpcGFnZU51bWJl
cgpAQCAtMzA1LDcgKzMwNSw3IEBAIC0gKHZvaWQpcHJpbnRUb0NHQ29udGV4dDooQ0dDb250ZXh0
UmVmKWMKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29u
dGV4dChjZ0NvbnRleHQpOwotICAgIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3Vu
ZGFyaWVzKGNvcmVGcmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBGbG9hdFNpemUocGFnZVdpZHRoSW5Q
aXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOworICAgIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQ
YWdlc1dpdGhCb3VuZGFyaWVzKGNvcmVGcmFtZSwgZ3JhcGhpY3NDb250ZXh0LCBHcmFwaGljc1Np
emUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwogfQogCiBAZW5kCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDkxMjAwKQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTM0OCw3ICsxMzQ4LDcgQEAgLSAoTlNBcnJheSAqKV9jb21wdXRlUGFnZVJlY3RzV2l0aFBy
aW50UwogICAgIGZsb2F0IHByaW50SGVpZ2h0ID0gcm9vdC0+c3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IHBhZ2VTaXplLmhlaWdodCA6IGRvY3VtZW50UmVjdC5oZWlnaHQoKSAv
IHByaW50U2NhbGVGYWN0b3I7CiAKICAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KF9wcml2
YXRlLT5jb3JlRnJhbWUpOwotICAgIHByaW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBh
Z2VTaXplKEZsb2F0U2l6ZShwcmludFdpZHRoLCBwcmludEhlaWdodCksIHRydWUpOworICAgIHBy
aW50Q29udGV4dC5jb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKEdyYXBoaWNzU2l6ZShwcmlu
dFdpZHRoLCBwcmludEhlaWdodCksIHRydWUpOwogICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYg
cGFnZVJlY3RzID0gcHJpbnRDb250ZXh0LnBhZ2VSZWN0cygpOwogCiAgICAgc2l6ZV90IHNpemUg
PSBwYWdlUmVjdHMuc2l6ZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNDcsMTMgKzIxNDcsMTMgQEAgLSAo
Qk9PTClfYmVnaW5QcmludE1vZGVXaXRoUGFnZVdpZHRoOihmbAogCiAgICAgZmxvYXQgcGFnZUxv
Z2ljYWxXaWR0aCA9IGlzSG9yaXpvbnRhbCA/IHBhZ2VXaWR0aCA6IHBhZ2VIZWlnaHQ7CiAgICAg
ZmxvYXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSBpc0hvcml6b250YWwgPyBwYWdlSGVpZ2h0IDogcGFn
ZVdpZHRoOwotICAgIEZsb2F0U2l6ZSBtaW5MYXlvdXRTaXplKHBhZ2VMb2dpY2FsV2lkdGgsIHBh
Z2VMb2dpY2FsSGVpZ2h0KTsKKyAgICBHcmFwaGljc1NpemUgbWluTGF5b3V0U2l6ZShwYWdlTG9n
aWNhbFdpZHRoLCBwYWdlTG9naWNhbEhlaWdodCk7CiAgICAgZmxvYXQgbWF4aW11bVNocmlua1Jh
dGlvID0gMTsKIAogICAgIC8vIElmIHdlIGFyZSBhIGZyYW1lc2V0IGp1c3QgcHJpbnQgd2l0aCB0
aGUgbGF5b3V0IHdlIGhhdmUgb25zY3JlZW4sIG90aGVyd2lzZSByZWxheW91dAogICAgIC8vIGFj
Y29yZGluZyB0byB0aGUgcGFnZSB3aWR0aC4KICAgICBpZiAoc2hyaW5rVG9GaXQgJiYgKCFmcmFt
ZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKSkpIHsKLSAg
ICAgICAgbWluTGF5b3V0U2l6ZSA9IGZyYW1lLT5yZXNpemVQYWdlUmVjdHNLZWVwaW5nUmF0aW8o
RmxvYXRTaXplKHBhZ2VMb2dpY2FsV2lkdGgsIHBhZ2VMb2dpY2FsSGVpZ2h0KSwgRmxvYXRTaXpl
KHBhZ2VMb2dpY2FsV2lkdGggKiBfV2ViSFRNTFZpZXdQcmludGluZ01pbmltdW1TaHJpbmtGYWN0
b3IsIHBhZ2VMb2dpY2FsSGVpZ2h0ICogX1dlYkhUTUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5r
RmFjdG9yKSk7CisgICAgICAgIG1pbkxheW91dFNpemUgPSBmcmFtZS0+cmVzaXplUGFnZVJlY3Rz
S2VlcGluZ1JhdGlvKEdyYXBoaWNzU2l6ZShwYWdlTG9naWNhbFdpZHRoLCBwYWdlTG9naWNhbEhl
aWdodCksIEdyYXBoaWNzU2l6ZShwYWdlTG9naWNhbFdpZHRoICogX1dlYkhUTUxWaWV3UHJpbnRp
bmdNaW5pbXVtU2hyaW5rRmFjdG9yLCBwYWdlTG9naWNhbEhlaWdodCAqIF9XZWJIVE1MVmlld1By
aW50aW5nTWluaW11bVNocmlua0ZhY3RvcikpOwogICAgICAgICBtYXhpbXVtU2hyaW5rUmF0aW8g
PSBfV2ViSFRNTFZpZXdQcmludGluZ01heGltdW1TaHJpbmtGYWN0b3IgLyBfV2ViSFRNTFZpZXdQ
cmludGluZ01pbmltdW1TaHJpbmtGYWN0b3I7CiAgICAgfQogCkBAIC0yMTgzLDEzICsyMTgzLDEz
IEBAIC0gKEJPT0wpX2JlZ2luU2NyZWVuUGFnaW5hdGlvbk1vZGVXaXRoUGEKIAogICAgIGZsb2F0
IHBhZ2VMb2dpY2FsV2lkdGggPSBpc0hvcml6b250YWwgPyBwYWdlU2l6ZS53aWR0aCA6IHBhZ2VT
aXplLmhlaWdodDsKICAgICBmbG9hdCBwYWdlTG9naWNhbEhlaWdodCA9IGlzSG9yaXpvbnRhbCA/
IHBhZ2VTaXplLmhlaWdodCA6IHBhZ2VTaXplLndpZHRoOwotICAgIEZsb2F0U2l6ZSBtaW5MYXlv
dXRTaXplKHBhZ2VMb2dpY2FsV2lkdGgsIHBhZ2VMb2dpY2FsSGVpZ2h0KTsKKyAgICBHcmFwaGlj
c1NpemUgbWluTGF5b3V0U2l6ZShwYWdlTG9naWNhbFdpZHRoLCBwYWdlTG9naWNhbEhlaWdodCk7
CiAgICAgZmxvYXQgbWF4aW11bVNocmlua1JhdGlvID0gMTsKIAogICAgIC8vIElmIHdlIGFyZSBh
IGZyYW1lc2V0IGp1c3QgcHJpbnQgd2l0aCB0aGUgbGF5b3V0IHdlIGhhdmUgb25zY3JlZW4sIG90
aGVyd2lzZSByZWxheW91dAogICAgIC8vIGFjY29yZGluZyB0byB0aGUgcGFnZSB3aWR0aC4KICAg
ICBpZiAoc2hyaW5rVG9GaXQgJiYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPmRvY3Vt
ZW50KCktPmlzRnJhbWVTZXQoKSkpIHsKLSAgICAgICAgbWluTGF5b3V0U2l6ZSA9IGZyYW1lLT5y
ZXNpemVQYWdlUmVjdHNLZWVwaW5nUmF0aW8oRmxvYXRTaXplKHBhZ2VMb2dpY2FsV2lkdGgsIHBh
Z2VMb2dpY2FsSGVpZ2h0KSwgRmxvYXRTaXplKHBhZ2VMb2dpY2FsV2lkdGggKiBfV2ViSFRNTFZp
ZXdQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3IsIHBhZ2VMb2dpY2FsSGVpZ2h0ICogX1dlYkhU
TUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yKSk7CisgICAgICAgIG1pbkxheW91dFNp
emUgPSBmcmFtZS0+cmVzaXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvKEdyYXBoaWNzU2l6ZShwYWdl
TG9naWNhbFdpZHRoLCBwYWdlTG9naWNhbEhlaWdodCksIEdyYXBoaWNzU2l6ZShwYWdlTG9naWNh
bFdpZHRoICogX1dlYkhUTUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yLCBwYWdlTG9n
aWNhbEhlaWdodCAqIF9XZWJIVE1MVmlld1ByaW50aW5nTWluaW11bVNocmlua0ZhY3RvcikpOwog
ICAgICAgICBtYXhpbXVtU2hyaW5rUmF0aW8gPSBfV2ViSFRNTFZpZXdQcmludGluZ01heGltdW1T
aHJpbmtGYWN0b3IgLyBfV2ViSFRNTFZpZXdQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3I7CiAg
ICAgfQogCkBAIC0zMDIyLDkgKzMwMjIsOSBAQCAtICh2b2lkKWxheW91dFRvTWluaW11bVBhZ2VX
aWR0aDooZmxvYXQpCiAKICAgICBpZiAoRnJhbWVWaWV3KiBjb3JlVmlldyA9IGNvcmVGcmFtZS0+
dmlldygpKSB7CiAgICAgICAgIGlmIChtaW5QYWdlTG9naWNhbFdpZHRoID4gMC4wKSB7Ci0gICAg
ICAgICAgICBGbG9hdFNpemUgcGFnZVNpemUobWluUGFnZUxvZ2ljYWxXaWR0aCwgbWluUGFnZUxv
Z2ljYWxIZWlnaHQpOworICAgICAgICAgICAgR3JhcGhpY3NTaXplIHBhZ2VTaXplKG1pblBhZ2VM
b2dpY2FsV2lkdGgsIG1pblBhZ2VMb2dpY2FsSGVpZ2h0KTsKICAgICAgICAgICAgIGlmIChjb3Jl
RnJhbWUtPmRvY3VtZW50KCkgJiYgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkg
JiYgIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5zdHlsZSgpLT5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICAgICAgICAgIHBhZ2VTaXplID0gRmxvYXRTaXpl
KG1pblBhZ2VMb2dpY2FsSGVpZ2h0LCBtaW5QYWdlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgICAg
ICAgICBwYWdlU2l6ZSA9IEdyYXBoaWNzU2l6ZShtaW5QYWdlTG9naWNhbEhlaWdodCwgbWluUGFn
ZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICBjb3JlVmlldy0+Zm9yY2VMYXlvdXRGb3JQYWdp
bmF0aW9uKHBhZ2VTaXplLCBtYXhpbXVtU2hyaW5rUmF0aW8sIGFkanVzdFZpZXdTaXplID8gQWRq
dXN0Vmlld1NpemUgOiBEb05vdEFkanVzdFZpZXdTaXplKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGNvcmVWaWV3LT5mb3JjZUxheW91dCghYWRqdXN0Vmlld1NpemUpOwpJbmRleDog
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMjExKQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMS0wNy0xOCAgTGV2aSBXZWlu
dHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIEZsb2F0U2l6ZSB0
byBHcmFwaGljc1NpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVuYW1pbmcgRmxvYXRTaXplIHRvIEdyYXBoaWNzU2l6ZSBpbiBhbnRpY2lwYXRpb24g
b2YgYWxsb3dpbmcgcG9ydHMgdG8gdXNlIDY0IGJpdAorICAgICAgICBmbG9hdHMgaWYgdGhleSBz
byBjaG9vc2UuCisKKyAgICAgICAgTm8gdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4K
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
OmR5bmFtaWNQcm9wZXJ0eUNoYW5nZUV2ZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpudW1iZXJPZlBhZ2VzKToKKwogMjAxMS0wNy0xOCAgSHVpIEh1YW5nICA8aHVp
LjIuaHVhbmdAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gQ29tcGlsaW5nIGVycm9yIGluIFNv
dXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcCB3aXRo
IFF0IDQuNyBvciBvbGRlcgpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNp
b24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMjMsMjEgKzEyMjMsMjEgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmR5bmFt
aWNQcm9wZXJ0eUNoYQogICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQ
cml2YXRlOjpjb3JlKHEtPm1haW5GcmFtZSgpKTsKICAgICAgICAgaWYgKCFmcmFtZS0+dGlsZWRC
YWNraW5nU3RvcmUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgRmxvYXRTaXplIGtl
ZXBNdWx0aXBsaWVyOwotICAgICAgICBGbG9hdFNpemUgY292ZXJNdWx0aXBsaWVyOworICAgICAg
ICBHcmFwaGljc1NpemUga2VlcE11bHRpcGxpZXI7CisgICAgICAgIEdyYXBoaWNzU2l6ZSBjb3Zl
ck11bHRpcGxpZXI7CiAgICAgICAgIGZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpLT5nZXRLZWVw
QW5kQ292ZXJBcmVhTXVsdGlwbGllcnMoa2VlcE11bHRpcGxpZXIsIGNvdmVyTXVsdGlwbGllcik7
CiAgICAgICAgIFFTaXplRiBxU2l6ZSA9IHEtPnByb3BlcnR5KCJfcV9UaWxlZEJhY2tpbmdTdG9y
ZUtlZXBBcmVhTXVsdGlwbGllciIpLnRvU2l6ZUYoKTsKLSAgICAgICAga2VlcE11bHRpcGxpZXIg
PSBGbG9hdFNpemUocVNpemUud2lkdGgoKSwgcVNpemUuaGVpZ2h0KCkpOworICAgICAgICBrZWVw
TXVsdGlwbGllciA9IEdyYXBoaWNzU2l6ZShxU2l6ZS53aWR0aCgpLCBxU2l6ZS5oZWlnaHQoKSk7
CiAgICAgICAgIGZyYW1lLT50aWxlZEJhY2tpbmdTdG9yZSgpLT5zZXRLZWVwQW5kQ292ZXJBcmVh
TXVsdGlwbGllcnMoa2VlcE11bHRpcGxpZXIsIGNvdmVyTXVsdGlwbGllcik7CiAgICAgfSBlbHNl
IGlmIChldmVudC0+cHJvcGVydHlOYW1lKCkgPT0gIl9xX1RpbGVkQmFja2luZ1N0b3JlQ292ZXJB
cmVhTXVsdGlwbGllciIpIHsKICAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gUVdlYkZy
YW1lUHJpdmF0ZTo6Y29yZShxLT5tYWluRnJhbWUoKSk7CiAgICAgICAgIGlmICghZnJhbWUtPnRp
bGVkQmFja2luZ1N0b3JlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEZsb2F0U2l6
ZSBrZWVwTXVsdGlwbGllcjsKLSAgICAgICAgRmxvYXRTaXplIGNvdmVyTXVsdGlwbGllcjsKKyAg
ICAgICAgR3JhcGhpY3NTaXplIGtlZXBNdWx0aXBsaWVyOworICAgICAgICBHcmFwaGljc1NpemUg
Y292ZXJNdWx0aXBsaWVyOwogICAgICAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+Z2V0
S2VlcEFuZENvdmVyQXJlYU11bHRpcGxpZXJzKGtlZXBNdWx0aXBsaWVyLCBjb3Zlck11bHRpcGxp
ZXIpOwogICAgICAgICBRU2l6ZUYgcVNpemUgPSBxLT5wcm9wZXJ0eSgiX3FfVGlsZWRCYWNraW5n
U3RvcmVDb3ZlckFyZWFNdWx0aXBsaWVyIikudG9TaXplRigpOwotICAgICAgICBjb3Zlck11bHRp
cGxpZXIgPSBGbG9hdFNpemUocVNpemUud2lkdGgoKSwgcVNpemUuaGVpZ2h0KCkpOworICAgICAg
ICBjb3Zlck11bHRpcGxpZXIgPSBHcmFwaGljc1NpemUocVNpemUud2lkdGgoKSwgcVNpemUuaGVp
Z2h0KCkpOwogICAgICAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+c2V0S2VlcEFuZENv
dmVyQXJlYU11bHRpcGxpZXJzKGtlZXBNdWx0aXBsaWVyLCBjb3Zlck11bHRpcGxpZXIpOwogICAg
IH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDkxMjAwKQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMSw3ICs0MzEsNyBAQCBpbnQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnBhZ2VOdW1iZXJGCiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1
cm4gLTE7CiAKLSAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChl
bGVtZW50LCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCkpOworICAgIHJldHVybiBQcmludENvbnRl
eHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQsIEdyYXBoaWNzU2l6ZSh3aWR0aCwgaGVp
Z2h0KSk7CiB9CiAKIGludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQYWdlcyhR
V2ViRnJhbWUqIGZyYW1lLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQpAQCAtNDQwLDcgKzQ0
MCw3IEBAIGludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bnVtYmVyT2ZQYWcKICAgICBpZiAo
IWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgcmV0dXJuIFByaW50Q29udGV4
dDo6bnVtYmVyT2ZQYWdlcyhjb3JlRnJhbWUsIEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Cisg
ICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhjb3JlRnJhbWUsIEdyYXBoaWNz
U2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKIC8vIFN1c3BlbmQgYWN0aXZlIERPTSBvYmplY3Rz
IGluIHRoaXMgZnJhbWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA5MTIxMSkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1
IEBACisyMDExLTA3LTE4ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZW5hbWUgRmxvYXRTaXplIHRvIEdyYXBoaWNzU2l6ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3NTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWluZyBGbG9hdFNpemUgdG8gR3Jh
cGhpY3NTaXplIGluIGFudGljaXBhdGlvbiBvZiBhbGxvd2luZyBwb3J0cyB0byB1c2UgNjQgYml0
CisgICAgICAgIGZsb2F0cyBpZiB0aGV5IHNvIGNob29zZS4KKworICAgICAgICBObyB0ZXN0cywg
bm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorCisgICAgICAgICogRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpMYXllckNs
aWVudDo6cGxhdGZvcm1DQUxheWVyTGF5b3V0U3VibGF5ZXJzT2ZMYXllcik6CisgICAgICAgICog
V2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJ
ZCk6CisgICAgICAgIChXZWJGcmFtZTo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAgIChXZWJGcmFt
ZTo6c2V0UHJpbnRpbmcpOgorICAgICAgICAoV2ViRnJhbWU6OnNldEluUHJpbnRpbmdNb2RlKToK
KyAgICAgICAgKiBXZWJLaXRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJEcmF3VGV4dCk6CisK
IDIwMTEtMDctMTYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGNvZGUgdG8gYXR0ZW1wdCB0byBhbGlnbiBjb21wb3NpdGluZyBsYXllcnMgdG8g
cGl4ZWwgYm91bmRhcmllcyB3aGVuIHBhZ2Ugc2NhbGUgY2hhbmdlcwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDkx
MjAwKQorKysgU291cmNlL1dlYktpdC93aW4vRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OkxheWVyQ2xpCiAKICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBsYXllci0+
Ym91bmRzKCk7CiAKLSAgICBGbG9hdFNpemUgdmlkZW9TaXplID0gbWVkaWFFbGVtZW50LT5wbGF5
ZXIoKS0+bmF0dXJhbFNpemUoKTsKKyAgICBHcmFwaGljc1NpemUgdmlkZW9TaXplID0gbWVkaWFF
bGVtZW50LT5wbGF5ZXIoKS0+bmF0dXJhbFNpemUoKTsKICAgICBmbG9hdCBzY2FsZUZhY3RvcjsK
ICAgICBpZiAodmlkZW9TaXplLmFzcGVjdFJhdGlvKCkgPiBsYXllckJvdW5kcy5zaXplKCkuYXNw
ZWN0UmF0aW8oKSkKICAgICAgICAgc2NhbGVGYWN0b3IgPSBsYXllckJvdW5kcy53aWR0aCgpIC8g
dmlkZW9TaXplLndpZHRoKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA5
MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTI3LDcgKzkyNyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnBh
Z2UKICAgICBFbGVtZW50KiBlbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVt
ZW50QnlJZChjb3JlSWQpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKLSAgICAqcmVzdWx0ID0gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChlbGVt
ZW50LCBGbG9hdFNpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwor
ICAgICpyZXN1bHQgPSBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGVsZW1lbnQs
IEdyYXBoaWNzU2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTk0Myw3ICs5NDMsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkZyYW1lOjpudW1iCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICAqcmVzdWx0ID0gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2Vz
KGNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhl
bHMpKTsKKyAgICAqcmVzdWx0ID0gUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKGNvcmVGcmFt
ZSwgR3JhcGhpY3NTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMjAxNCw3ICsyMDE0LDcgQEAgdm9pZCBXZWJGcmFt
ZTo6c2V0UHJpbnRpbmcoYm9vbCBwcmludGluZwogewogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKHRoaXMpOwogICAgIEFTU0VSVChjb3JlRnJhbWUpOwotICAgIGNvcmVGcmFtZS0+c2V0UHJp
bnRpbmcocHJpbnRpbmcsIEZsb2F0U2l6ZShtaW5QYWdlV2lkdGgsIG1pblBhZ2VIZWlnaHQpLCBt
YXhpbXVtU2hyaW5rUmF0aW8sIGFkanVzdFZpZXdTaXplID8gQWRqdXN0Vmlld1NpemUgOiBEb05v
dEFkanVzdFZpZXdTaXplKTsKKyAgICBjb3JlRnJhbWUtPnNldFByaW50aW5nKHByaW50aW5nLCBH
cmFwaGljc1NpemUobWluUGFnZVdpZHRoLCBtaW5QYWdlSGVpZ2h0KSwgbWF4aW11bVNocmlua1Jh
dGlvLCBhZGp1c3RWaWV3U2l6ZSA/IEFkanVzdFZpZXdTaXplIDogRG9Ob3RBZGp1c3RWaWV3U2l6
ZSk7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNldEluUHJpbnRp
bmdNb2RlKCAKQEAgLTIwMzIsNyArMjAzMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRnJhbWU6OnNldEkKIAogICAgIC8vIElmIHdlIGFyZSBhIGZyYW1lc2V0IGp1c3QgcHJpbnQg
d2l0aCB0aGUgbGF5b3V0IHdlIGhhdmUgb25zY3JlZW4sIG90aGVyd2lzZSByZWxheW91dAogICAg
IC8vIGFjY29yZGluZyB0byB0aGUgcGFwZXIgc2l6ZQotICAgIEZsb2F0U2l6ZSBtaW5MYXlvdXRT
aXplKDAuMCwgMC4wKTsKKyAgICBHcmFwaGljc1NpemUgbWluTGF5b3V0U2l6ZSgwLjAsIDAuMCk7
CiAgICAgaWYgKG1faW5QcmludGluZ01vZGUgJiYgIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+aXNG
cmFtZVNldCgpKSB7CiAgICAgICAgIGlmICghcHJpbnREQykgewogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0yMDQ2LDcgKzIwNDYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkZyYW1lOjpzZXRJCiAgICAgICAgIGludCBwYXBlclZlcnRpY2FsUGl4ZWxzUGVy
SW5jaCA9IDo6R2V0RGV2aWNlQ2FwcyhwcmludERDLCBMT0dQSVhFTFNZKTsKICAgICAgICAgaW50
IHBhcGVySGVpZ2h0ID0gcHJpbnRSZWN0LmhlaWdodCgpICogZGVzaXJlZFBpeGVsc1BlckluY2gg
LyBwYXBlclZlcnRpY2FsUGl4ZWxzUGVySW5jaDsKICAgICAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUodGhpcyk7Ci0gICAgICAgIG1pbkxheW91dFNpemUgPSBjb3JlRnJhbWUtPnJlc2l6ZVBh
Z2VSZWN0c0tlZXBpbmdSYXRpbyhGbG9hdFNpemUocGFwZXJXaWR0aCwgcGFwZXJIZWlnaHQpLCBG
bG9hdFNpemUocGFwZXJXaWR0aCAqIFByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciwgcGFwZXJI
ZWlnaHQgKiBQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3IpKTsKKyAgICAgICAgbWluTGF5b3V0
U2l6ZSA9IGNvcmVGcmFtZS0+cmVzaXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvKEdyYXBoaWNzU2l6
ZShwYXBlcldpZHRoLCBwYXBlckhlaWdodCksIEdyYXBoaWNzU2l6ZShwYXBlcldpZHRoICogUHJp
bnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yLCBwYXBlckhlaWdodCAqIFByaW50aW5nTWluaW11bVNo
cmlua0ZhY3RvcikpOwogICAgIH0KIAogICAgIHNldFByaW50aW5nKG1faW5QcmludGluZ01vZGUs
IG1pbkxheW91dFNpemUud2lkdGgoKSwgbWluTGF5b3V0U2l6ZS5oZWlnaHQoKSwgUHJpbnRpbmdN
YXhpbXVtU2hyaW5rRmFjdG9yIC8gUHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yLCB0cnVlKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAJKHJldmlzaW9uIDkxMjAwKQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyogaW5m
bwogICAgICAgICAvLyBTZXQgc2hhZG93IHNldHRpbmcKICAgICAgICAgaWYgKGluZm8tPnN0cnVj
dFNpemUgPT0gc2l6ZW9mKFdlYlRleHRSZW5kZXJJbmZvKSAmJgogICAgICAgICAgICAgKGluZm8t
PnNoYWRvd09mZnNldC5jeCB8fCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kgfHwgaW5mby0+c2hhZG93
Qmx1ciB8fCBpbmZvLT5zaGFkb3dDb2xvcikpCi0gICAgICAgICAgICBjb250ZXh0LnNldFNoYWRv
dyhGbG9hdFNpemUoaW5mby0+c2hhZG93T2Zmc2V0LmN4LCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kp
LCBpbmZvLT5zaGFkb3dCbHVyLCBpbmZvLT5zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhHcmFwaGljc1NpemUoaW5mby0+c2hh
ZG93T2Zmc2V0LmN4LCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kpLCBpbmZvLT5zaGFkb3dCbHVyLCBp
bmZvLT5zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAKICAgICAgICAgV2ViQ29y
ZURyYXdUZXh0QXRQb2ludChjb250ZXh0LCBkcmF3U3RyaW5nLCBpbmZvLT5wdCwgbWFrZUZvbnQo
KihpbmZvLT5kZXNjcmlwdGlvbikpLCBpbmZvLT5jb2xvciwgaW5mby0+dW5kZXJsaW5lZEluZGV4
KTsKICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101214</attachid>
            <date>2011-07-18 15:07:05 -0700</date>
            <delta_ts>2011-07-27 12:30:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64754-20110718150704.patch</filename>
            <type>text/plain</type>
            <size>375089</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMjExKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzI4IEBACisyMDExLTA3LTE4ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgRmxvYXRTaXpl
IHRvIEdyYXBoaWNzU2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjQ3NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW5hbWluZyBGbG9hdFNpemUgdG8gR3JhcGhpY3NTaXplIGluIGFudGljaXBhdGlv
biBvZiBhbGxvd2luZyBwb3J0cyB0byB1c2UgNjQgYml0CisgICAgICAgIGZsb2F0cyBpZiB0aGV5
IHNvIGNob29zZS4KKworICAgICAgICBObyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2Vz
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9X
ZWJDb3JlLmd5cDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5v
cmRlcjoKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzdGFu
Y2VUb0Nsb3Nlc3RDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzdGFuY2VUb0ZhcnRoZXN0
Q29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6Omhvcml6b250YWxFbGxpcHNlUmFkaXVzKToKKyAg
ICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDYW52YXNFbGVtZW50Ojpjb252ZXJ0TG9naWNhbFRvRGV2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6YmFzZVRyYW5zZm9ybSk6CisgICAgICAgICogaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldEFsbEF0dHJpYnV0ZXNUb0RlZmF1bHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzY2FsZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6YXBwbHlTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVJbWFnZURhdGEpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIHBh
Z2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cmVzaXplQnkp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpyZXNpemVUbyk6CisgICAgICAgICogcGFn
ZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0UHJpbnRpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlc2l6ZVBhZ2VSZWN0c0tlZXBpbmdSYXRpbyk6CisgICAg
ICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uKToKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvUHJpbnRDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzV2l0aFBh
Z2VTaXplSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0OjpiZWdpbik6
CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZh
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OnNwb29sUGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQcmlu
dENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50
Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6
OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyk6CisgICAgICAgICogcGFnZS9QcmludENvbnRl
eHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Zml0RHJhZ0ltYWdlVG9NYXhTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVicy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2lu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDo6bW92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcis9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yLT0pOgorICAgICAg
ICAoV2ViQ29yZTo6b3BlcmF0b3IrKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yLSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmRvdCk6CisgICAgICAgIChXZWJDb3JlOjppc1BvaW50SW5UcmlhbmdsZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpGbG9h
dFF1YWQ6Om1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrPSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvci09KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJl
Y3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVjdDo6RmxvYXRSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0UmVjdDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFJlY3Q6
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRSZWN0Ojptb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0UmVjdDo6ZXhwYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UmVj
dDo6Y29udHJhY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmg6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJhdGVk
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6c3dhcCk6CisgICAgICAgIChXZWJDb3Jl
OjpHbHlwaEJ1ZmZlcjo6b2Zmc2V0QXQpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhCdWZmZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaEJ1ZmZlcjo6ZXhwYW5kTGFzdEFkdmFuY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Z2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OnNldFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTaXplOjpHcmFwaGljc1NpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTaXplOjpkaWFnb25hbExlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc1NpemU6Om5hcnJvd1ByZWNpc2lvbik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NTaXplLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NTaXplOjpHcmFwaGljc1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NT
aXplOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1NpemU6OmhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1NpemU6OnNldFdpZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzU2l6ZTo6c2V0SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
U2l6ZTo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc1NpemU6OmFzcGVjdFJh
dGlvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU2l6ZTo6ZXhwYW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzU2l6ZTo6c2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NTaXplOjpleHBhbmRlZFRvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzU2l6ZTo6c2hy
dW5rVG8pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTaXplOjpkaWFnb25hbExlbmd0aFNx
dWFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NTaXplOjp0cmFuc3Bvc2VkU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpuYXJyb3dQcmVjaXNpb25Ub0dyYXBoaWNzVW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvcis9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yLT0p
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yLSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRlZEludFNpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmZsb29yZWRJ
bnRQb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y2FsY3VsYXRlUGF0dGVyblNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlOjpkcmF3VGlsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXRoOjphZGRSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXRoOjphZGRCZXppZXJz
Rm9yUm91bmRlZFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGF0aFRyYXZlcnNhbFN0YXRlOjpwcm9jZXNzU2VnbWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JhdGNoQnVmZmVyOjpzZXRMYXN0U2hhZG93VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmF0Y2hCdWZmZXI6OnNldExhc3RJbnNldFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JhdGNoQnVmZmVyOjptYXRjaGVzTGFzdFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JhdGNoQnVmZmVyOjptYXRjaGVzTGFzdEluc2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmF0Y2hCdWZmZXI6OmNsZWFyU2NyYXRjaEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dCbHVyOjpTaGFkb3dCbHVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OnNl
dFNoYWRvd1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjp1cGRhdGVTaGFk
b3dCbHVyVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmFkanVzdEJsdXJSYWRpdXMpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1JlY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUdl
b21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y29uc3RyYWluZWRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6cmVxdWlyZXNUaWxlZExh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y29tcHV0ZVBpeGVsQWxp
Z25tZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6c2NhbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzU2l6ZUNHLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NTaXplOjpHcmFwaGljc1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NTaXplOjpvcGVyYXRvciBDR1NpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Oklt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0aDo6dHJhbnNs
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRy
aXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OmFwcGx5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyOjpmaWx0ZXJSZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0Rmls
dGVyUmVzb2x1dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Zsb2F0
U2l6ZU1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9u
dE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc1NpemVNYWMubW06IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVNYWMubW0uCisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc1NpemU6OkdyYXBoaWNzU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc1NpemU6Om9wZXJhdG9yIE5TU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om5hdHVyYWxTaXplKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL0RyYWdJbWFnZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlRHJhZ0ltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxBbmltYXRvck1hYzo6cGlubmVkSW5EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JNYWM6OnNtb290aFNjcm9sbFdpdGhFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YmVnaW5TY3JvbGxHZXN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzbmFwUnViYmVyQmFuZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRvck1hYzo6c25hcFJ1YmJlckJhbmRUaW1lckZpcmVkKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwYWludENo
ZWNrYm94KToKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50UmFkaW8pOgorICAgICAgICAoV2ViQ29y
ZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTdGVwcGVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6
OnNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OmFwcGx5U2hhZG93VG9HcmFwaGljc0NvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRUeXBl
cy5oOgorICAgICAgICAoV2ViQ29yZTo6Zmxvb3JlZExheW91dFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6ZGV0
ZXJtaW5lQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbnRyaW5zaWNS
YXRpb0luZm9ybWF0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZFJlY3RBZGp1c3RlZEZvckJsZWVk
QXZvaWRhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3Jk
ZXJPYnNjdXJlc0JhY2tncm91bmRFZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJEZXRhaWxzTWFya2VyOjpnZXRQYXRoKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OmdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5zdXJlUm9vdExheWVyKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRVbnpvb21lZFJlY3RBbmRBZGp1c3RDdXJyZW50Q29udGV4dCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyUmVwbGFjZWQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWlnaHQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
TWFjOjpjb252ZXJ0VG9QYWludGluZ1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVNYWM6OnBhaW50TWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50U2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50
U2VhcmNoRmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFVu
em9vbWVkUmVjdEFuZEFkanVzdEN1cnJlbnRDb250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OmZpdHNJbk1heGltdW1JbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmls
dGVyUHJpbWl0aXZlU3VicmVnaW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJ
bnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jv
b3Q6OmNhbGNWaWV3cG9ydCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWlu
ZXI6OmNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R0ltYWdlQnVmZmVyVG9vbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VCdWZmZXJU
b29sczo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VCdWZm
ZXJUb29sczo6cm91bmRlZEltYWdlQnVmZmVyU2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbldpdGhTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbmxpbmVUZXh0Qm94
OjpwYWludFRleHRXaXRoU2hhZG93cyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdNYXJr
ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJEYXRhOjpjdXJyZW50QW5nbGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50Ojpjb250YWluZXJUcmFuc2xhdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1RleHRRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWxjdWxhdGVHbHlwaEJvdW5kYXJpZXMpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVu
dDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6
Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OmRlY29tcG9zZUFyY1RvQ3ViaWMpOgorICAg
ICAgICAqIHN2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnRyYW5zZm9ybVJlY3QpOgorICAgICAgICAqIHN2Zy9T
VkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6dG9Q
YXRoRGF0YSk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQpOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zv
cm0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtOjpzY2FsZSk6CisgICAgICAg
ICogc3ZnL1NWR1RyYW5zZm9ybS5oOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5j
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZTo6U1ZHVHJhbnNm
b3JtRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFk
ZFNWR1RyYW5zZm9ybXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2U6
OmFkZFRvU1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50Ojp0b0NsaXBQYXRoKToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRy
YXcpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgorCiAyMDEx
LTA3LTE4ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY2lm
eSBhIGNhc2NhZGUgbGlzdCBjb25zaXN0aW5nIG9mIHRoZSBsYXN0IHJlc29ydCBmb250IGZvciBD
b3JlIFRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYxLDcgKzEw
NjEsNiBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQ
b2ludDNELmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmNwcApA
QCAtMTA3NCw2ICsxMDczLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50LmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcAorICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0ODUsOCArMjQ4NSw2IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEJhc2VsaW5lLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5oIFwKQEAgLTI1MjMsNiArMjUyMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1R5cGVzM0QuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBj
b3B5KQpAQCAtMjY1LDE0ICsyNjUsMTQgQEAgX19aTjdXZWJDb3JlMTJJY29uRGF0YWJhc2VDMUV2
CiBfX1pON1dlYkNvcmUxMkpTRE9NV3JhcHBlcjM0dmlydHVhbEZ1bmN0aW9uVG9QcmV2ZW50V2Vh
a1Z0YWJsZUV2CiBfX1pON1dlYkNvcmUxMlBvcHVwTWVudU1hY0MxRVBOU18xNVBvcHVwTWVudUNs
aWVudEUKIF9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTJwYWdlUHJvcGVydHlFUE5TXzVGcmFt
ZUVQS2NpCi1fX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDEzbnVtYmVyT2ZQYWdlc0VQTlNfNUZy
YW1lRVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MTNudW1iZXJP
ZlBhZ2VzRVBOU181RnJhbWVFUktOU18xMkdyYXBoaWNzU2l6ZUUKIF9fWk43V2ViQ29yZTEyUHJp
bnRDb250ZXh0MTZjb21wdXRlUGFnZVJlY3RzRVJLTlNfOUZsb2F0UmVjdEVmZmZSZmIKIF9fWk43
V2ViQ29yZTEyUHJpbnRDb250ZXh0MTZpc1BhZ2VCb3hWaXNpYmxlRVBOU181RnJhbWVFaQotX19a
TjdXZWJDb3JlMTJQcmludENvbnRleHQyMHBhZ2VOdW1iZXJGb3JFbGVtZW50RVBOU183RWxlbWVu
dEVSS05TXzlGbG9hdFNpemVFCitfX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZU51bWJl
ckZvckVsZW1lbnRFUE5TXzdFbGVtZW50RVJLTlNfMTJHcmFwaGljc1NpemVFCiBfX1pON1dlYkNv
cmUxMlByaW50Q29udGV4dDI2cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHNFUE5TXzVGcmFtZUVp
aWlpaWlpCi1fX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDI3Y29tcHV0ZUF1dG9tYXRpY1NjYWxl
RmFjdG9yRVJLTlNfOUZsb2F0U2l6ZUUKLV9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjdzcG9v
bEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXNFUE5TXzVGcmFtZUVSTlNfMTVHcmFwaGljc0NvbnRleHRF
UktOU185RmxvYXRTaXplRQotX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyOGNvbXB1dGVQYWdl
UmVjdHNXaXRoUGFnZVNpemVFUktOU185RmxvYXRTaXplRWIKK19fWk43V2ViQ29yZTEyUHJpbnRD
b250ZXh0Mjdjb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3JFUktOU18xMkdyYXBoaWNzU2l6ZUUK
K19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjdzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXNF
UE5TXzVGcmFtZUVSTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU18xMkdyYXBoaWNzU2l6ZUUKK19f
Wk43V2ViQ29yZTEyUHJpbnRDb250ZXh0Mjhjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplRVJL
TlNfMTJHcmFwaGljc1NpemVFYgogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQzZW5kRXYKIF9f
Wk43V2ViQ29yZTEyUHJpbnRDb250ZXh0NWJlZ2luRWZmCiBfX1pON1dlYkNvcmUxMlByaW50Q29u
dGV4dDlzcG9vbFBhZ2VFUk5TXzE1R3JhcGhpY3NDb250ZXh0RWlmCkBAIC00MTAsMTQgKzQxMCwx
NCBAQCBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDRjbGlwRVJLTlNfCiBfX1pON1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDRjbGlwRVJLTlNfN0ludFJlY3RFCiBfX1pON1dlYkNvcmUxNUdy
YXBoaWNzQ29udGV4dDRjbGlwRVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTE1R3JhcGhp
Y3NDb250ZXh0NHNhdmVFdgotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ1c2NhbGVFUktO
U185RmxvYXRTaXplRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ1c2NhbGVFUktOU18x
MkdyYXBoaWNzU2l6ZUUKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0N3Jlc3RvcmVFdgog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ4ZmlsbFBhdGhFUktOU180UGF0aEUKIF9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OGZpbGxSZWN0RVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43
V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0OGZpbGxSZWN0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzVD
b2xvckVOU18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDljbGVh
clJlY3RFUktOU185RmxvYXRSZWN0RQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5ZHJh
d0ltYWdlRVBOU181SW1hZ2VFTlNfMTBDb2xvclNwYWNlRVJLTlNfOEludFBvaW50RU5TXzE3Q29t
cG9zaXRlT3BlcmF0b3JFCi1fX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlzZXRTaGFkb3dF
UktOU185RmxvYXRTaXplRWZSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCitfX1pON1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDlzZXRTaGFkb3dFUktOU18xMkdyYXBoaWNzU2l6ZUVmUktOU181
Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ5dHJh
bnNsYXRlRWZmCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dEMxRVA5Q0dDb250ZXh0CiBf
X1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dEQxRXYKQEAgLTcxNSw3ICs3MTUsNyBAQCBfX1pO
N1dlYkNvcmU0UGFnZTlnb0ZvcndhcmRFdgogX19aTjdXZWJDb3JlNFBhZ2U5aW5pdEdyb3VwRXYK
IF9fWk43V2ViQ29yZTRQYWdlQzFFUk5TMF8xMVBhZ2VDbGllbnRzRQogX19aTjdXZWJDb3JlNFBh
Z2VEMUV2Ci1fX1pON1dlYkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU185RmxvYXRSZWN0
RVJLTlNfOUZsb2F0U2l6ZUUKK19fWk43V2ViQ29yZTRQYXRoMTRhZGRSb3VuZGVkUmVjdEVSS05T
XzlGbG9hdFJlY3RFUktOU18xMkdyYXBoaWNzU2l6ZUUKIF9fWk43V2ViQ29yZTRQYXRoQzFFdgog
X19aTjdXZWJDb3JlNFBhdGhEMUV2CiBfX1pON1dlYkNvcmU0Y29yZUVQMjBOU1VSTFByb3RlY3Rp
b25TcGFjZQpAQCAtNzMzLDcgKzczMyw3IEBAIF9fWk43V2ViQ29yZTVGcmFtZTE3c2V0VGV4dFpv
b21GYWN0b3JFZgogX19aTjdXZWJDb3JlNUZyYW1lMjN2aXNpYmxlUG9zaXRpb25Gb3JQb2ludEVS
S05TXzhJbnRQb2ludEUKIF9fWk43V2ViQ29yZTVGcmFtZTI1bWF0Y2hMYWJlbHNBZ2FpbnN0RWxl
bWVudEVQN05TQXJyYXlQTlNfN0VsZW1lbnRFCiBfX1pON1dlYkNvcmU1RnJhbWUyNXNldFBhZ2VB
bmRUZXh0Wm9vbUZhY3RvcnNFZmYKLV9fWk43V2ViQ29yZTVGcmFtZTI3cmVzaXplUGFnZVJlY3Rz
S2VlcGluZ1JhdGlvRVJLTlNfOUZsb2F0U2l6ZUVTM18KK19fWk43V2ViQ29yZTVGcmFtZTI3cmVz
aXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvRVJLTlNfMTJHcmFwaGljc1NpemVFUzNfCiBfX1pON1dl
YkNvcmU1RnJhbWUyOHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnRFUDdOU0FycmF5UE5TXzdF
bGVtZW50RVBtUGIKIF9fWk43V2ViQ29yZTVGcmFtZTZjcmVhdGVFUE5TXzRQYWdlRVBOU18yMUhU
TUxGcmFtZU93bmVyRWxlbWVudEVQTlNfMTdGcmFtZUxvYWRlckNsaWVudEUKIF9fWk43V2ViQ29y
ZTVGcmFtZTdzZXRWaWV3RU4zV1RGMTBQYXNzUmVmUHRySU5TXzlGcmFtZVZpZXdFRUUKQEAgLTkz
MCw3ICs5MzAsNyBAQCBfX1pON1dlYkNvcmU5RE9NV2luZG93MzBkaXNwYXRjaEFsbFBlbmRpCiBf
X1pON1dlYkNvcmU5RE9NV2luZG93MzZkaXNwYXRjaEFsbFBlbmRpbmdCZWZvcmVVbmxvYWRFdmVu
dHNFdgogX19aTjdXZWJDb3JlOUZsb2F0UmVjdEMxRVJLN19OU1JlY3QKIF9fWk43V2ViQ29yZTlG
bG9hdFJlY3RDMUVSS05TXzdJbnRSZWN0RQotX19aTjdXZWJDb3JlOUZsb2F0U2l6ZUMxRVJLTlNf
N0ludFNpemVFCitfX1pON1dlYkNvcmUxMkdyYXBoaWNzU2l6ZUMxRVJLTlNfN0ludFNpemVFCiBf
X1pON1dlYkNvcmU5Rm9udENhY2hlMTNmb250RGF0YUNvdW50RXYKIF9fWk43V2ViQ29yZTlGb250
Q2FjaGUyMWluYWN0aXZlRm9udERhdGFDb3VudEV2CiBfX1pON1dlYkNvcmU5Rm9udENhY2hlMjFw
dXJnZUluYWN0aXZlRm9udERhdGFFaQpAQCAtOTUyLDcgKzk1Miw3IEBAIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcyMGVudGVyQ29tcG9zaXRpbmcKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNo
RGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dy
b3VuZENvbG9yRVJLTlNfNUNvbG9yRQogX19aTjdXZWJDb3JlOUZyYW1lVmlldzIzdXBkYXRlQ2Fu
SGF2ZVNjcm9sbGJhcnNFdgotX19aTjdXZWJDb3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQ
YWdpbmF0aW9uRVJLTlNfOUZsb2F0U2l6ZUVmTlNfMTlBZGp1c3RWaWV3U2l6ZU9yTm90RQorX19a
TjdXZWJDb3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uRVJLTlNfMTJHcmFw
aGljc1NpemVFZk5TXzE5QWRqdXN0Vmlld1NpemVPck5vdEUKIF9fWk43V2ViQ29yZTlGcmFtZVZp
ZXcyNmFkanVzdFBhZ2VIZWlnaHREZXByZWNhdGVkRVBmZmZmCiBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3MjlzZXRTaG91bGRVcGRhdGVXaGlsZU9mZnNjcmVlbkViCiBfX1pON1dlYkNvcmU5RnJhbWVW
aWV3Mzd1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlRXYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC04MTUsNyArODE1LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVj
dC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9Gb250QmFzZWxpbmUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhY2hlLmgnLApAQCAtODQxLDYgKzg0MCw3IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzU2l6ZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMz
RC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JY29uLmgnLApAQCAtMzk1MCw3
ICszOTUwLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0Qu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwJywKLSAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9Gb250LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhY2hlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEuY3Bw
JywKQEAgLTM5NjcsNiArMzk2Niw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NT
aXplLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwJywKQEAgLTQwNTIsMTIgKzQw
NTIsMTIgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRQb2ludENHLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRSZWN0Q0cuY3BwJywKLSAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNpemVDRy5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYWRpZW50Q0cuY3BwJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVD
Ry5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc1NpemVDRy5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckRhdGFDRy5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwJywKQEAg
LTQzMjUsNyArNDMyNSw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Zsb2F0UG9pbnRNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9GbG9hdFJlY3RNYWMubW0nLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9GbG9hdFNpemVNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250Q2FjaGVNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Gb250Q29tcGxleFRleHRNYWMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAnLApAQCAtNDMzNCw2ICs0MzMzLDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR2x5cGhQYWdlVHJlZU5vZGVNYWMu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0
M0RNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0Nv
bnRleHRNYWMubW0nLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c1NpemVNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFj
Lm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0nLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQb2ludE1hYy5tbScsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4OSw3IEBAIF9fWk5LN1dlYkNv
cmUxNFNpbXBsZUZvbnREYXRhMjJwbGF0Zm9ybUIKIF9fWk5LN1dlYkNvcmUxNkZvbnRQbGF0Zm9y
bURhdGE2Y3RGb250RXYKIF9fWk43V2ViQ29yZTlGbG9hdFJlY3RDMUVSSzZDR1JlY3QKIF9fWk43
V2ViQ29yZTEwRmxvYXRQb2ludEMxRVJLN0NHUG9pbnQKLV9fWk43V2ViQ29yZTlGbG9hdFNpemVD
MUVSSzZDR1NpemUKK19fWk43V2ViQ29yZTEyR3JhcGhpY3NTaXplQzFFUks2Q0dTaXplCiBfX1pO
SzdXZWJDb3JlOUZsb2F0UmVjdGN2NkNHUmVjdEV2CiBfX1pON1dlYkNvcmUxNFNpbXBsZUZvbnRE
YXRhMTdwbGF0Zm9ybUdseXBoSW5pdEV2CiBfX1pON1dlYkNvcmUxNUdseXBoTWV0cmljc01hcElm
RTE4bG9jYXRlUGFnZVNsb3dDYXNlRWoKQEAgLTMyMywxMSArMzIzLDExIEBAIF9fWk43V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0MjBzZXRQbGF0Zm8KIF9fWk5LN1dlYkNvcmU0Rm9udDhkcmF3VGV4
dEVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVp
aQogX19aTks3V2ViQ29yZTRGb250MTRkcmF3U2ltcGxlVGV4dEVQTlNfMTVHcmFwaGljc0NvbnRl
eHRFUktOU183VGV4dFJ1bkVSS05TXzEwRmxvYXRQb2ludEVpaQogX19aTks3V2ViQ29yZTRGb250
MzNnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHRFUktOU183VGV4dFJ1bkVpaVJOU18x
MUdseXBoQnVmZmVyRU5TMF8yMEZvclRleHRFbXBoYXNpc09yTm90RQotX19aTjdXZWJDb3JlMTFH
bHlwaEJ1ZmZlcjNhZGRFdFBLTlNfMTRTaW1wbGVGb250RGF0YUVmUEtOU185RmxvYXRTaXplRQor
X19aTjdXZWJDb3JlMTFHbHlwaEJ1ZmZlcjNhZGRFdFBLTlNfMTRTaW1wbGVGb250RGF0YUVmUEtO
U18xMkdyYXBoaWNzU2l6ZUUKIF9fWk5LN1dlYkNvcmU0Rm9udDE1ZHJhd0dseXBoQnVmZmVyRVBO
U18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzExR2x5cGhCdWZmZXJFUktOU18xMEZsb2F0UG9pbnRF
CiBfX1pOSzdXZWJDb3JlNEZvbnQxMGRyYXdHbHlwaHNFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVBL
TlNfMTRTaW1wbGVGb250RGF0YUVSS05TXzExR2x5cGhCdWZmZXJFaWlSS05TXzEwRmxvYXRQb2lu
dEUKIF9fWk43V2ViQ29yZTRGb250MThzaG91bGRVc2VTbW9vdGhpbmdFdgotX19aTks3V2ViQ29y
ZTE1R3JhcGhpY3NDb250ZXh0OWdldFNoYWRvd0VSTlNfOUZsb2F0U2l6ZUVSZlJOU181Q29sb3JF
Uk5TXzEwQ29sb3JTcGFjZUUKK19fWk5LN1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlnZXRTaGFk
b3dFUk5TXzEyR3JhcGhpY3NTaXplRVJmUk5TXzVDb2xvckVSTlNfMTBDb2xvclNwYWNlRQogX19a
Tks3V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MTV0ZXh0RHJhd2luZ01vZGVFdgogX19aTjdXZWJD
b3JlTDIyc2hvd0dseXBoc1dpdGhBZHZhbmNlc0VSS05TXzEwRmxvYXRQb2ludEVQS05TXzE0U2lt
cGxlRm9udERhdGFFUDlDR0NvbnRleHRQS3RQSzZDR1NpemVtCiBfX1pOM1dURjZWZWN0b3JJUGNM
bTBFRTE0ZXhwYW5kQ2FwYWNpdHlFbQpAQCAtMTU2Niw3ICsxNTY2LDcgQEAgX19aTks3V2ViQ29y
ZTEwU2Nyb2xsVmlldzI2cGxhdGZvcm1WaXNpYgogX19aTjdXZWJDb3JlN0ludFJlY3Q5aW50ZXJz
ZWN0RVJLUzBfCiBfX1pON1dlYkNvcmU5RmxvYXRSZWN0QzFFUktOU183SW50UmVjdEUKIF9fWk43
V2ViQ29yZTEwRmxvYXRQb2ludEMxRVJLTlNfOEludFBvaW50RQotX19aTjdXZWJDb3JlOUZsb2F0
U2l6ZUMxRVJLTlNfN0ludFNpemVFCitfX1pON1dlYkNvcmUxMkdyYXBoaWNzU2l6ZUMxRVJLTlNf
N0ludFNpemVFCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0
RQogX19aTjdXZWJDb3JlMTBSZW5kZXJWaWV3NDFyZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29t
cG9zaXRlZExheWVyc0VSS05TXzdJbnRSZWN0RWIKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVy
MjdjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWRFdgpAQCAtNTk0MSw3ICs1OTQxLDcgQEAgX19a
Tks3V2ViQ29yZTE3SFRNTENhbnZhc0VsZW1lbnQxN2NyZWF0ZQogX19aTjdXZWJDb3JlMTFJbWFn
ZUJ1ZmZlckMxRVJLTlNfN0ludFNpemVFTlNfMTBDb2xvclNwYWNlRU5TXzEzUmVuZGVyaW5nTW9k
ZUVSYgogX19aTjdXZWJDb3JlMTFJbWFnZUJ1ZmZlckMyRVJLTlNfN0ludFNpemVFTlNfMTBDb2xv
clNwYWNlRU5TXzEzUmVuZGVyaW5nTW9kZUVSYgogX19aTjdXZWJDb3JlMTVJbWFnZUJ1ZmZlckRh
dGFDMUVSS05TXzdJbnRTaXplRQotX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ1c2NhbGVF
UktOU185RmxvYXRTaXplRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQ1c2NhbGVFUktO
U18xMkdyYXBoaWNzU2l6ZUUKIF9fWk5LN1dlYkNvcmUxMUltYWdlQnVmZmVyN2NvbnRleHRFdgog
X19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQyNnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
RWIKIF9fWk43V2ViQ29yZTE1R3JhcGhpY3NDb250ZXh0MjhzZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5RU5TXzIwSW50ZXJwb2xhdGlvblF1YWxpdHlFCkBAIC02MDIyLDcgKzYwMjIsNyBAQCBf
X1pON1dlYkNvcmUxNVBsYXRmb3JtQ0FMYXllcjZjcmVhdGVFTlMwCiBfX1pON1dlYkNvcmUxNVBs
YXRmb3JtQ0FMYXllckMyRU5TMF85TGF5ZXJUeXBlRVA3Q0FMYXllclBOU18yMVBsYXRmb3JtQ0FM
YXllckNsaWVudEUKIC1bV2ViTGF5ZXIgYWN0aW9uRm9yS2V5Ol0KIF9fWk43V2ViQ29yZTEzR3Jh
cGhpY3NMYXllcjIxdXBkYXRlRGVidWdJbmRpY2F0b3JzRXYKLV9fWk43V2ViQ29yZTE1R3JhcGhp
Y3NMYXllckNBN3NldFNpemVFUktOU185RmxvYXRTaXplRQorX19aTjdXZWJDb3JlMTVHcmFwaGlj
c0xheWVyQ0E3c2V0U2l6ZUVSS05TXzEyR3JhcGhpY3NTaXplRQogX19aTjdXZWJDb3JlMTVHcmFw
aGljc0xheWVyQ0ExMXNldFBvc2l0aW9uRVJLTlNfMTBGbG9hdFBvaW50RQogX19aTjdXZWJDb3Jl
MTVHcmFwaGljc0xheWVyQ0ExNnNldE1hc2tzVG9Cb3VuZHNFYgogX19aTjdXZWJDb3JlMjFSZW5k
ZXJMYXllckNvbXBvc2l0b3IyM2F0dGFjaFJvb3RQbGF0Zm9ybUxheWVyRU5TMF8xOVJvb3RMYXll
ckF0dGFjaG1lbnRFCkBAIC02MzAwLDcgKzYzMDAsNyBAQCBfX1pON1dlYkNvcmUxNEhUTUxDb2xs
ZWN0aW9uRDBFdgogX19aTks3V2ViQ29yZTI1QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazExZWxl
bWVudFJlY3RFdgogX19aTks3V2ViQ29yZTE1SFRNTEFyZWFFbGVtZW50MTFjb21wdXRlUmVjdEVQ
TlNfMTJSZW5kZXJPYmplY3RFCiBfX1pOSzdXZWJDb3JlMTVIVE1MQXJlYUVsZW1lbnQxMWNvbXB1
dGVQYXRoRVBOU18xMlJlbmRlck9iamVjdEUKLV9fWk43V2ViQ29yZTRQYXRoOXRyYW5zbGF0ZUVS
S05TXzlGbG9hdFNpemVFCitfX1pON1dlYkNvcmU0UGF0aDl0cmFuc2xhdGVFUktOU18xMkdyYXBo
aWNzU2l6ZUUKIF9fWk5LN1dlYkNvcmU0UGF0aDEyYm91bmRpbmdSZWN0RXYKIF9fWk43V2ViQ29y
ZTI4SlNIVE1MU2VsZWN0RWxlbWVudFByb3RvdHlwZUQxRXYKIF9fWk43V2ViQ29yZTExUmVuZGVy
QmxvY2sxM0Zsb2F0V2l0aFJlY3RDMkVQTlNfOVJlbmRlckJveEUKQEAgLTcyMzgsOSArNzIzOCw5
IEBAIF9fWk43V2ViQ29yZTE0UmVuZGVyVGhlbWVNYWMyOHBhaW50TWVkaWEKIF9fWk43V2ViQ29y
ZTE0UmVuZGVyVGhlbWVNYWMyMnBhaW50TWVkaWFSZXdpbmRCdXR0b25FUE5TXzEyUmVuZGVyT2Jq
ZWN0RVJLTlNfOVBhaW50SW5mb0VSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTRSZW5kZXJU
aGVtZU1hYzIwcGFpbnRNZWRpYVBsYXlCdXR0b25FUE5TXzEyUmVuZGVyT2JqZWN0RVJLTlNfOVBh
aW50SW5mb0VSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlMTNJbmxpbmVUZXh0Qm94MjhhcHBs
eVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0RVBOU18xNUdyYXBoaWNzQ29udGV4dEVQS05TXzEwU2hh
ZG93RGF0YUVSS05TXzlGbG9hdFJlY3RFYmJiCi1fX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4
dDlzZXRTaGFkb3dFUktOU185RmxvYXRTaXplRWZSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VF
Ci1fX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE3c2V0UGxhdGZvcm1TaGFkb3dFUktOU185
RmxvYXRTaXplRWZSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFCi1fX1pOSzdXZWJDb3JlOUZs
b2F0U2l6ZWN2NkNHU2l6ZUV2CitfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDlzZXRTaGFk
b3dFUktOU18xMkdyYXBoaWNzU2l6ZUVmUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQorX19a
TjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxN3NldFBsYXRmb3JtU2hhZG93RVJLTlNfMTJHcmFw
aGljc1NpemVFZlJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKK19fWk5LN1dlYkNvcmUxMkdy
YXBoaWNzU2l6ZWN2NkNHU2l6ZUV2CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDExY2xl
YXJTaGFkb3dFdgogX19aTjdXZWJDb3JlMTVHcmFwaGljc0NvbnRleHQxOWNsZWFyUGxhdGZvcm1T
aGFkb3dFdgogX19aTjdXZWJDb3JlMTZIVE1MTWVkaWFFbGVtZW50MjBhc3luY0V2ZW50VGltZXJG
aXJlZEVQTlNfNVRpbWVySVMwX0VFCkBAIC05MDQ2LDcgKzkwNDYsNyBAQCBfX1pOSzdXZWJDb3Jl
MTBTdHlsZUltYWdlMTRpc1BlbmRpbmdJbWFnCiBfX1pOSzdXZWJDb3JlMTRSZW5kZXJMaXN0SXRl
bTM2cmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uRXYKIF9fWk5LN1dlYkNvcmUx
NlN0eWxlQ2FjaGVkSW1hZ2U1aW1hZ2VFUE5TXzEyUmVuZGVyT2JqZWN0RVJLTlNfN0ludFNpemVF
CiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE0ZHJhd1RpbGVkSW1hZ2VFUE5TXzVJbWFn
ZUVOU18xMENvbG9yU3BhY2VFUktOU183SW50UmVjdEVSS05TXzhJbnRQb2ludEVSS05TXzdJbnRT
aXplRU5TXzE3Q29tcG9zaXRlT3BlcmF0b3JFYgotX19aTjdXZWJDb3JlNUltYWdlOWRyYXdUaWxl
ZEVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTBGbG9hdFBvaW50
RVJLTlNfOUZsb2F0U2l6ZUVOU18xMENvbG9yU3BhY2VFTlNfMTdDb21wb3NpdGVPcGVyYXRvckUK
K19fWk43V2ViQ29yZTVJbWFnZTlkcmF3VGlsZWRFUE5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNf
OUZsb2F0UmVjdEVSS05TXzEwRmxvYXRQb2ludEVSS05TXzEyR3JhcGhpY3NTaXplRU5TXzEwQ29s
b3JTcGFjZUVOU18xN0NvbXBvc2l0ZU9wZXJhdG9yRQogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm0xNXNjYWxlTm9uVW5pZm9ybUVkZAogX19aTjdXZWJDb3JlNUltYWdlMTFkcmF3UGF0dGVy
bkVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTVBZmZpbmVUcmFu
c2Zvcm1FUktOU18xMEZsb2F0UG9pbnRFTlNfMTBDb2xvclNwYWNlRU5TXzE3Q29tcG9zaXRlT3Bl
cmF0b3JFUzVfCiBfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlMjZuYXRpdmVJbWFnZUZvckN1cnJl
bnRGcmFtZUV2CkBAIC05MDc1LDcgKzkwNzUsNyBAQCBfX1pON1dlYkNvcmUyNENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDRzCiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlMjRDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ1U3RhdGVFTG0xRUUxNXJlc2VydmVDYXBhY2l0eUVtCiBfX1pON1dlYkNvcmUy
NENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDVTdGF0ZUMyRVJLUzFfCiBfX1pON1dlYkNvcmUyNENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDI1c2V0QWxsQXR0cmlidXRlc1RvRGVmYXVsdEV2Ci1fX1pO
N1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDE1c2V0TGVnYWN5U2hhZG93RVJLTlNfOUZsb2F0U2l6
ZUVmUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQorX19aTjdXZWJDb3JlMTVHcmFwaGljc0Nv
bnRleHQxNXNldExlZ2FjeVNoYWRvd0VSS05TXzEyR3JhcGhpY3NTaXplRWZSS05TXzVDb2xvckVO
U18xMENvbG9yU3BhY2VFCiBfX1pON1dlYkNvcmUxNUdyYXBoaWNzQ29udGV4dDljbGVhclJlY3RF
UktOU185RmxvYXRSZWN0RQogX19aTjdXZWJDb3JlMjRDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ3
cmVzdG9yZUV2CiBfX1pON1dlYkNvcmU0UGF0aDl0cmFuc2Zvcm1FUktOU18xNUFmZmluZVRyYW5z
Zm9ybUUKQEAgLTkzMjcsNyArOTMyNyw3IEBAIF9fWk43V2ViQ29yZTI3SlNDYW52YXNHcmFkaWVu
dENvbnN0cnVjdG8KIF9fWk43V2ViQ29yZTU4anNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRQcm90
b3R5cGVGdW5jdGlvbkNyZWF0ZUltYWdlRGF0YUVQTjNKU0M5RXhlY1N0YXRlRQogX19aTjdXZWJD
b3JlMjZKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDE1Y3JlYXRlSW1hZ2VEYXRhRVBOM0pTQzlF
eGVjU3RhdGVFCiBfX1pOSzdXZWJDb3JlMjRDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQxNWNyZWF0
ZUltYWdlRGF0YUVmZlJpCi1fX1pOSzdXZWJDb3JlMTdIVE1MQ2FudmFzRWxlbWVudDIyY29udmVy
dExvZ2ljYWxUb0RldmljZUVSS05TXzlGbG9hdFNpemVFCitfX1pOSzdXZWJDb3JlMTdIVE1MQ2Fu
dmFzRWxlbWVudDIyY29udmVydExvZ2ljYWxUb0RldmljZUVSS05TXzEyR3JhcGhpY3NTaXplRQog
X19aTjdXZWJDb3JlOUltYWdlRGF0YTZjcmVhdGVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29y
ZTE2Q2FudmFzUGl4ZWxBcnJheTZjcmVhdGVFagogX19aTjdXZWJDb3JlMTF0b0ltYWdlRGF0YUVO
M0pTQzdKU1ZhbHVlRQpAQCAtOTc5MSwxNCArOTc5MSwxNCBAQCBfX1pON1dlYkNvcmUxMUxheW91
dFN0YXRlQzFFUE5TXzEyUmVuZGVyCiBfX1pON1dlYkNvcmUxMUxheW91dFN0YXRlQzJFUE5TXzEy
UmVuZGVyT2JqZWN0RQogX19aTjdXZWJDb3JlMTFSZW5kZXJTdHlsZThzZXRSaWdodEVOU182TGVu
Z3RoRQogX19aTks3V2ViQ29yZTEwU2hhZG93RGF0YTE5YWRqdXN0UmVjdEZvclNoYWRvd0VSTlNf
N0ludFJlY3RFaQotX19aTjdXZWJDb3JlMTBTaGFkb3dCbHVyQzFFUktOU185RmxvYXRTaXplRVMz
X1JLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKK19fWk43V2ViQ29yZTEwU2hhZG93Qmx1ckMx
RVJLTlNfMTJHcmFwaGljc1NpemVFUzNfUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRQogX19a
TjdXZWJDb3JlMTBTaGFkb3dCbHVyMTRkcmF3UmVjdFNoYWRvd0VQTlNfMTVHcmFwaGljc0NvbnRl
eHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUUKIF9fWk5LN1dlYkNv
cmUxNUdyYXBoaWNzQ29udGV4dDEwY2xpcEJvdW5kc0V2CiBfX1pON1dlYkNvcmUxMFNoYWRvd0Js
dXIyNmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0RVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05T
XzlGbG9hdFJlY3RFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTEwU2hhZG93Qmx1cjE2YWRq
dXN0Qmx1clJhZGl1c0VQTlNfMTVHcmFwaGljc0NvbnRleHRFCiBfX1pON1dlYkNvcmUxMFNoYWRv
d0JsdXIyNGRyYXdSZWN0U2hhZG93V2l0aFRpbGluZ0VQTlNfMTVHcmFwaGljc0NvbnRleHRFUktO
U185RmxvYXRSZWN0RVJLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUVSS05TXzdJbnRTaXplRVNDXwog
X19aTjdXZWJDb3JlMTNTY3JhdGNoQnVmZmVyMTZnZXRTY3JhdGNoQnVmZmVyRVJLTlNfN0ludFNp
emVFCi1fX1pOSzdXZWJDb3JlMTNTY3JhdGNoQnVmZmVyMTdtYXRjaGVzTGFzdFNoYWRvd0VSS05T
XzlGbG9hdFNpemVFUktOU181Q29sb3JFTlNfMTBDb2xvclNwYWNlRVJLTlNfOUZsb2F0UmVjdEVS
S05TXzE0Um91bmRlZFJlY3Q1UmFkaWlFCitfX1pOSzdXZWJDb3JlMTNTY3JhdGNoQnVmZmVyMTdt
YXRjaGVzTGFzdFNoYWRvd0VSS05TXzEyR3JhcGhpY3NTaXplRVJLTlNfNUNvbG9yRU5TXzEwQ29s
b3JTcGFjZUVSS05TXzlGbG9hdFJlY3RFUktOU18xNFJvdW5kZWRSZWN0NVJhZGlpRQogX19aTjdX
ZWJDb3JlMTBTaGFkb3dCbHVyMTZibHVyU2hhZG93QnVmZmVyRVJLTlNfN0ludFNpemVFCiBfX1pO
N1dlYkNvcmUxMFNoYWRvd0JsdXIxNGJsdXJMYXllckltYWdlRVBoUktOU183SW50U2l6ZUVpCiBf
X1pON1dlYkNvcmUxMFNoYWRvd0JsdXIxNWRyYXdMYXllclBpZWNlc0VQTlNfMTVHcmFwaGljc0Nv
bnRleHRFUktOU185RmxvYXRSZWN0RVJLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUVSS05TXzdJbnRT
aXplRVNDX05TMF8xNVNoYWRvd0RpcmVjdGlvbkUKQEAgLTExOTY0LDcgKzExOTY0LDcgQEAgX19a
TjdXZWJDb3JlMTdtaXNzaW5nUGx1Z2luVGV4dEV2CiBfX1pON1dlYkNvcmUyN0RlZmF1bHRMb2Nh
bGl6YXRpb25TdHJhdGVneTE3bWlzc2luZ1BsdWdpblRleHRFdgogX19aTjdXZWJDb3JlMjBSZW5k
ZXJFbWJlZGRlZE9iamVjdDEzcGFpbnRSZXBsYWNlZEVSTlNfOVBhaW50SW5mb0VpaQogX19aTjdX
ZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDI2Z2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnlF
aWlSTlNfOUZsb2F0UmVjdEVSTlNfNFBhdGhFUzJfUk5TXzRGb250RVJOU183VGV4dFJ1bkVSZgot
X19aTjdXZWJDb3JlNFBhdGgxNGFkZFJvdW5kZWRSZWN0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzlG
bG9hdFNpemVFCitfX1pON1dlYkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU185RmxvYXRS
ZWN0RVJLTlNfMTJHcmFwaGljc1NpemVFCiBfX1pOM1dURjZWZWN0b3JJTjdXZWJDb3JlOUhUTUxU
b2tlbjlBdHRyaWJ1dGVFTG0xMEVFMTVyZXNlcnZlQ2FwYWNpdHlFbQogX19aTjNXVEYxMVZlY3Rv
ck1vdmVySUxiMEVON1dlYkNvcmU5SFRNTFRva2VuOUF0dHJpYnV0ZUVFNG1vdmVFUEtTM19TNl9Q
UzNfCiBfX1pON1dlYkNvcmU5SFRNTFRva2VuOUF0dHJpYnV0ZUMxRVJLUzFfCkBAIC0xNDI2Nyw3
ICsxNDI2Nyw3IEBAIF9fWk43V2ViQ29yZTE0Um91bmRlZFJlY3Q1UmFkaWk1c2NhbGVFZgogX19a
TjdXZWJDb3JlMTRSb3VuZGVkUmVjdDE5aW5jbHVkZUxvZ2ljYWxFZGdlc0VSS05TMF81UmFkaWlF
YmJiCiBfX1pON1dlYkNvcmUxNFJvdW5kZWRSZWN0NVJhZGlpNmV4cGFuZEVpaWlpCiBfX1pON1dl
YkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU18xNFJvdW5kZWRSZWN0RQotX19aTjdXZWJD
b3JlNFBhdGgxNGFkZFJvdW5kZWRSZWN0RVJLTlNfOUZsb2F0UmVjdEVSS05TXzlGbG9hdFNpemVF
UzZfUzZfUzZfCitfX1pON1dlYkNvcmU0UGF0aDE0YWRkUm91bmRlZFJlY3RFUktOU185RmxvYXRS
ZWN0RVJLTlNfMTJHcmFwaGljc1NpemVFUzZfUzZfUzZfCiBfX1pON1dlYkNvcmUyMWNyZWF0ZUxp
c3RJdGVtRWxlbWVudEVQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMTNIVE1MTElFbGVtZW50
NmNyZWF0ZUVQTlNfOERvY3VtZW50RQogX19aTjdXZWJDb3JlMzlqc0RvY3VtZW50UHJvdG90eXBl
RnVuY3Rpb25HZXRTZWxlY3Rpb25FUE4zSlNDOUV4ZWNTdGF0ZUUKQEAgLTE0MzgzLDcgKzE0Mzgz
LDcgQEAgX19aTjNXVEY5SGFzaFRhYmxlSU43V2ViQ29yZTdJbnRTaXplRVN0NAogX19aTjdXZWJD
b3JlMTVHcmFwaGljc0NvbnRleHQyM2ZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlRVJLTlNfN0ludFJl
Y3RFUktOU18xNFJvdW5kZWRSZWN0RVJLTlNfNUNvbG9yRU5TXzEwQ29sb3JTcGFjZUUKIF9fWk43
V2ViQ29yZTEwU2hhZG93Qmx1cjE1ZHJhd0luc2V0U2hhZG93RVBOU18xNUdyYXBoaWNzQ29udGV4
dEVSS05TXzlGbG9hdFJlY3RFUzVfUktOU18xNFJvdW5kZWRSZWN0NVJhZGlpRQogX19aTjdXZWJD
b3JlMTBTaGFkb3dCbHVyMjVkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nRVBOU18xNUdyYXBoaWNz
Q29udGV4dEVSS05TXzlGbG9hdFJlY3RFUzVfUktOU18xNFJvdW5kZWRSZWN0NVJhZGlpRVJLTlNf
N0ludFNpemVFU0NfCi1fX1pOSzdXZWJDb3JlMTNTY3JhdGNoQnVmZmVyMjJtYXRjaGVzTGFzdElu
c2V0U2hhZG93RVJLTlNfOUZsb2F0U2l6ZUVSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFUktO
U185RmxvYXRSZWN0RVNBX1JLTlNfMTRSb3VuZGVkUmVjdDVSYWRpaUUKK19fWk5LN1dlYkNvcmUx
M1NjcmF0Y2hCdWZmZXIyMm1hdGNoZXNMYXN0SW5zZXRTaGFkb3dFUktOU18xMkdyYXBoaWNzU2l6
ZUVSS05TXzVDb2xvckVOU18xMENvbG9yU3BhY2VFUktOU185RmxvYXRSZWN0RVNBX1JLTlNfMTRS
b3VuZGVkUmVjdDVSYWRpaUUKIF9fWk43V2ViQ29yZTE0R2VuZXJhdGVkSW1hZ2UxMWRyYXdQYXR0
ZXJuRVBOU18xNUdyYXBoaWNzQ29udGV4dEVSS05TXzlGbG9hdFJlY3RFUktOU18xNUFmZmluZVRy
YW5zZm9ybUVSS05TXzEwRmxvYXRQb2ludEVOU18xMENvbG9yU3BhY2VFTlNfMTdDb21wb3NpdGVP
cGVyYXRvckVTNV8KIF9fWk43V2ViQ29yZThHcmFkaWVudDMxYWRqdXN0UGFyYW1ldGVyc0ZvclRp
bGVkRHJhd2luZ0VSTlNfN0ludFNpemVFUk5TXzlGbG9hdFJlY3RFCiBfX1pON1dlYkNvcmUxMUlt
YWdlQnVmZmVyMTFkcmF3UGF0dGVybkVQTlNfMTVHcmFwaGljc0NvbnRleHRFUktOU185RmxvYXRS
ZWN0RVJLTlNfMTVBZmZpbmVUcmFuc2Zvcm1FUktOU18xMEZsb2F0UG9pbnRFTlNfMTBDb2xvclNw
YWNlRU5TXzE3Q29tcG9zaXRlT3BlcmF0b3JFUzVfCkBAIC0xNDM5NCw3ICsxNDM5NCw3IEBAIF9f
Wk4zV1RGOUhhc2hUYWJsZUlQTjdXZWJDb3JlMjBSZW5kZXJCb3gKIF9fWk4zV1RGOUhhc2hUYWJs
ZUlQTjdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdEVTdDRwYWlySVMzX05TXzdIYXNoTWFw
SVBLdk5TMV83SW50U2l6ZUVOU183UHRySGFzaElTN19FRU5TXzEwSGFzaFRyYWl0c0lTN19FRU5T
Ql9JUzhfRUVFRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTRl9FRU5TOV9JUzNfRUVOU18xNFBh
aXJIYXNoVHJhaXRzSU5TQl9JUzNfRUVOU0JfSVNFX0VFRUVTS19FNnJlaGFzaEVpCiBfX1pTdDE2
X19tZXJnZV9iYWNrd2FyZElQTjdXZWJDb3JlMjBDU1NHcmFkaWVudENvbG9yU3RvcEVTMl9TMl9Q
RmJSS1MxX1M0X0VFVDFfVF9TOF9UMF9TOV9TN19UMl8KIF9fWk5LN1dlYkNvcmUxMlJlbmRlck9i
amVjdDM1Ym9yZGVySW1hZ2VJc0xvYWRlZEFuZENhbkJlUmVuZGVyZWRFdgotX19aTks3V2ViQ29y
ZTIwUmVuZGVyQm94TW9kZWxPYmplY3QyOGJvcmRlck9ic2N1cmVzQmFja2dyb3VuZEVkZ2VFUktO
U185RmxvYXRTaXplRQorX19aTks3V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QyOGJvcmRl
ck9ic2N1cmVzQmFja2dyb3VuZEVkZ2VFUktOU18xMkdyYXBoaWNzU2l6ZUUKIF9fWk4zV1RGOUhh
c2hUYWJsZUlQS3ZTdDRwYWlySVMyX043V2ViQ29yZTdJbnRTaXplRUVOU18xOFBhaXJGaXJzdEV4
dHJhY3RvcklTNl9FRU5TXzdQdHJIYXNoSVMyX0VFTlNfMTRQYWlySGFzaFRyYWl0c0lOU18xMEhh
c2hUcmFpdHNJUzJfRUVOU0NfSVM1X0VFRUVTRF9FMTZsb29rdXBGb3JXcml0aW5nRVJLUzJfCiBf
X1pOM1dURjlIYXNoVGFibGVJUEt2U3Q0cGFpcklTMl9ON1dlYkNvcmU3SW50U2l6ZUVFTlNfMThQ
YWlyRmlyc3RFeHRyYWN0b3JJUzZfRUVOU183UHRySGFzaElTMl9FRU5TXzE0UGFpckhhc2hUcmFp
dHNJTlNfMTBIYXNoVHJhaXRzSVMyX0VFTlNDX0lTNV9FRUVFU0RfRTNhZGRJUzJfUzVfTlNfMTdI
YXNoTWFwVHJhbnNsYXRvcklTNl9TRl9TQV9FRUVFUzNfSU5TXzE3SGFzaFRhYmxlSXRlcmF0b3JJ
UzJfUzZfUzhfU0FfU0ZfU0RfRUViRVJLVF9SS1QwXwogX19aTjNXVEY5SGFzaFRhYmxlSVBLdlN0
NHBhaXJJUzJfTjdXZWJDb3JlN0ludFNpemVFRU5TXzE4UGFpckZpcnN0RXh0cmFjdG9ySVM2X0VF
TlNfN1B0ckhhc2hJUzJfRUVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lTMl9F
RU5TQ19JUzVfRUVFRVNEX0UzYWRkSVMyX1M2X05TXzIySWRlbnRpdHlIYXNoVHJhbnNsYXRvcklT
Ml9TNl9TQV9FRUVFUzNfSU5TXzE3SGFzaFRhYmxlSXRlcmF0b3JJUzJfUzZfUzhfU0FfU0ZfU0Rf
RUViRVJLVF9SS1QwXwpAQCAtMjU5MTEsOCArMjU5MTEsOCBAQCBfX1pON1dlYkNvcmUxMFJlbmRl
clZpZXcyOWNvbXB1dGVQcmVmZXJyCiBfX1pON1dlYkNvcmUyMkNTU1JhZGlhbEdyYWRpZW50VmFs
dWUxNGNyZWF0ZUdyYWRpZW50RVBOU18xMlJlbmRlck9iamVjdEVSS05TXzdJbnRTaXplRQogX19a
TjdXZWJDb3JlMjJDU1NSYWRpYWxHcmFkaWVudFZhbHVlRDBFdgogX19aTjdXZWJDb3JlOUNTU1Bh
cnNlcjE5cGFyc2VSYWRpYWxHcmFkaWVudEVSTjNXVEY2UmVmUHRySU5TXzhDU1NWYWx1ZUVFRU5T
XzE3Q1NTR3JhZGllbnRSZXBlYXRFCi1fX1pON1dlYkNvcmVMMjRkaXN0YW5jZVRvRmFydGhlc3RD
b3JuZXJFUktOU18xMEZsb2F0UG9pbnRFUktOU185RmxvYXRTaXplRVJTMF8KLV9fWk5LN1dlYkNv
cmU5RmxvYXRTaXplMTRkaWFnb25hbExlbmd0aEV2CitfX1pON1dlYkNvcmVMMjRkaXN0YW5jZVRv
RmFydGhlc3RDb3JuZXJFUktOU18xMEZsb2F0UG9pbnRFUktOU18xMkdyYXBoaWNzU2l6ZUVSUzBf
CitfX1pOSzdXZWJDb3JlMTJHcmFwaGljc1NpemUxNGRpYWdvbmFsTGVuZ3RoRXYKIF9fWk5LN1dl
YkNvcmUxNkNTU0dyYWRpZW50VmFsdWUxNmlzTGluZWFyR3JhZGllbnRFdgogX19aTks3V2ViQ29y
ZTIyQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTE2aXNSYWRpYWxHcmFkaWVudEV2CiBfX1pOSzdXZWJD
b3JlMjJDU1NSYWRpYWxHcmFkaWVudFZhbHVlN2Nzc1RleHRFdgpAQCAtMjg2NzEsMTMgKzI4Njcx
LDEzIEBAIF9fWk4zSlNDOEJpbmRpbmdzMTNSdW50aW1lT2JqZWN0MTZnZXRDb24KIF9fWk4zSlND
OEJpbmRpbmdzTDIyY2FsbFJ1bnRpbWVDb25zdHJ1Y3RvckVQTlNfOUV4ZWNTdGF0ZUUKIF9fWk43
V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFaQogX19aTjdXZWJDb3JlTDEwY2FsbFBsdWdpbkVQ
TjNKU0M5RXhlY1N0YXRlRQotX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyMHBhZ2VOdW1iZXJG
b3JFbGVtZW50RVBOU183RWxlbWVudEVSS05TXzlGbG9hdFNpemVFCi1fX1pON1dlYkNvcmU1RnJh
bWUxMXNldFByaW50aW5nRWJSS05TXzlGbG9hdFNpemVFZk5TXzE5QWRqdXN0Vmlld1NpemVPck5v
dEUKK19fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0MjBwYWdlTnVtYmVyRm9yRWxlbWVudEVQTlNf
N0VsZW1lbnRFUktOU18xMkdyYXBoaWNzU2l6ZUUKK19fWk43V2ViQ29yZTVGcmFtZTExc2V0UHJp
bnRpbmdFYlJLTlNfMTJHcmFwaGljc1NpemVFZk5TXzE5QWRqdXN0Vmlld1NpemVPck5vdEUKIF9f
Wk43V2ViQ29yZTlGcmFtZVZpZXcyNmFkanVzdE1lZGlhVHlwZUZvclByaW50aW5nRWIKLV9fWk43
V2ViQ29yZTlGcmFtZVZpZXcyNGZvcmNlTGF5b3V0Rm9yUGFnaW5hdGlvbkVSS05TXzlGbG9hdFNp
emVFZk5TXzE5QWRqdXN0Vmlld1NpemVPck5vdEUKLV9fWk43V2ViQ29yZTEyUHJpbnRDb250ZXh0
MzZjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplSW50ZXJuYWxFUktOU185RmxvYXRTaXplRWIK
K19fWk43V2ViQ29yZTlGcmFtZVZpZXcyNGZvcmNlTGF5b3V0Rm9yUGFnaW5hdGlvbkVSS05TXzEy
R3JhcGhpY3NTaXplRWZOU18xOUFkanVzdFZpZXdTaXplT3JOb3RFCitfX1pON1dlYkNvcmUxMlBy
aW50Q29udGV4dDM2Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUludGVybmFsRVJLTlNfMTJH
cmFwaGljc1NpemVFYgogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQ1YmVnaW5FZmYKLV9fWk43
V2ViQ29yZTEyUHJpbnRDb250ZXh0MTNudW1iZXJPZlBhZ2VzRVBOU181RnJhbWVFUktOU185Rmxv
YXRTaXplRQorX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQxM251bWJlck9mUGFnZXNFUE5TXzVG
cmFtZUVSS05TXzEyR3JhcGhpY3NTaXplRQogX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQyNnBh
Z2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzRVBOU181RnJhbWVFaWlpaWlpaQogX19aTjdXZWJDb3Jl
OERvY3VtZW50MjZwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsc0VpUk5TXzdJbnRTaXplRVJpUzNf
UzNfUzNfCiBfX1pON1dlYkNvcmUxNkNTU1N0eWxlU2VsZWN0b3IxMnN0eWxlRm9yUGFnZUVpCkBA
IC0yOTU5OSw3ICsyOTU5OSw3IEBAIF9fWk43V2ViQ29yZTI2U1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQKIF9fWk43V2ViQ29yZTIwU1ZHVHJhbnNmb3JtRGlzdGFuY2VDMUVSS05TXzEyU1ZHVHJh
bnNmb3JtRVMzXwogX19aTjdXZWJDb3JlMjBTVkdUcmFuc2Zvcm1EaXN0YW5jZUMyRVJLTlNfMTJT
VkdUcmFuc2Zvcm1FUzNfCiBfX1pOSzdXZWJDb3JlMTJTVkdUcmFuc2Zvcm01c2NhbGVFdgotX19a
TjdXZWJDb3JlOUZsb2F0U2l6ZTE1bmFycm93UHJlY2lzaW9uRWRkCitfX1pON1dlYkNvcmUxMkdy
YXBoaWNzU2l6ZTE1bmFycm93UHJlY2lzaW9uRWRkCiBfX1pOSzdXZWJDb3JlMjBTVkdUcmFuc2Zv
cm1EaXN0YW5jZTE0c2NhbGVkRGlzdGFuY2VFZgogX19aTks3V2ViQ29yZTIwU1ZHVHJhbnNmb3Jt
RGlzdGFuY2UxN2FkZFRvU1ZHVHJhbnNmb3JtRVJLTlNfMTJTVkdUcmFuc2Zvcm1FCiBfX1pON1dl
YkNvcmUxNFNWR1BvbHlFbGVtZW50MjZhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcEV2CkBAIC0z
MTk0MCw3ICszMTk0MCw3IEBAIF9fWk5LN1dlYkNvcmU1RnJhbWUxNHNlbGVjdGlvbkltYWdlRWIK
IF9fWk43V2ViQ29yZTE1Q29udGV4dE1lbnVJdGVtQzFFUDEwTlNNZW51SXRlbQogX19aTks3V2Vi
Q29yZTE1Q29udGV4dE1lbnVJdGVtN2VuYWJsZWRFdgogX19aTjdXZWJDb3JlOUZyYW1lVmlldzEy
c2V0TWVkaWFUeXBlRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTJQcmludENvbnRleHQy
OGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVFUktOU185RmxvYXRTaXplRWIKK19fWk43V2Vi
Q29yZTEyUHJpbnRDb250ZXh0Mjhjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplRVJLTlNfMTJH
cmFwaGljc1NpemVFYgogX19aTjdXZWJDb3JlMThjb3JyZWN0ZWRUZXh0Q29sb3JFTlNfNUNvbG9y
RVMwXwogX19aTjdXZWJDb3JlN0ludFJlY3Q1c2NhbGVFZgogX19aTjdXZWJDb3JlMjNBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUMxRVJLTlNfMTVQcm90ZWN0aW9uU3BhY2VFUktOU18xMENyZWRlbnRp
YWxFalJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRVJLTlNfMTNSZXNvdXJjZUVycm9yRQpJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8JKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTk4NSw3ICs5ODUsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRRdWFkLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcCBcCi0g
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udERhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBcCkBAIC05OTMsNiArOTkyLDcgQEAgU09V
UkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhaHBpY3NTaXpl
LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAgXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwIFwKQEAgLTE5NzIsNyArMTk3Miw2IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRR
dWFkLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5oIFwKLSAgICBwbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFNpemUuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEu
aCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRGYW1pbHkuaCBcCkBAIC0xOTg0LDYgKzE5ODMsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0xheWVyQ2xpZW50LmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6
ZS5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMzRC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oIFwKQEAgLTMwMjAsNyArMzAyMCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9W
SURFTz0xKSB7CiAKICAgICAgICAgU09VUkNFUyArPSBcCiAgICAgICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbnRSZWN0Q0cuY3BwIFwKLSAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0Zsb2F0U2l6ZUNHLmNwcCBcCisgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc1NpemVDRy5jcHAgXAogICAgICAgICAgICAgcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwIFwKICAgICAgICAgICAgIHBsYXRmb3JtL2NmL0tVUkxDRk5ldC5jcHAKIApAQCAtMzAz
Miw3ICszMDMyLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPPTEpIHsKICAgICAg
ICAgICAgIHBsYXRmb3JtL21hYy9TaGFyZWRCdWZmZXJNYWMubW0gXAogICAgICAgICAgICAgcGxh
dGZvcm0vbWFjL0tVUkxNYWMubW0gXAogICAgICAgICAgICAgcGxhdGZvcm0vdGV4dC9tYWMvU3Ry
aW5nTWFjLm1tIFwKLSAgICAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVN
YWMubW0gXAorICAgICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzU2l6ZU1h
Yy5tbSBcCiAgICAgICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UmVjdE1hYy5tbSBc
CiAgICAgICAgICAgICBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlci5t
bSBcCiAgICAgICAgICAgICBwbGF0Zm9ybS9tYWMvV2ViVmlkZW9GdWxsc2NyZWVuSFVEV2luZG93
Q29udHJvbGxlci5tbSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTQyNSw4ICsxNDI1LDggQEAKICAgICAgICAgICAgIFsn
aW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWNcXC5tbSQnXSwKICAgICAg
ICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRQb2ludE1hY1xc
Lm1tJCddLAogICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
bG9hdFJlY3RNYWNcXC5tbSQnXSwKLSAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvRmxvYXRTaXplTWFjXFwubW0kJ10sCiAgICAgICAgICAgICBbJ2luY2x1ZGUn
LCAncGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dseXBoUGFnZVRyZWVOb2RlTWFjXFwuY3BwJCddLAor
ICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc1Np
emVNYWNcXC5tbSQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW50UG9pbnRNYWNcXC5tbSQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSW50UmVjdE1hY1xcLm1tJCddLAogICAgICAgICAgICAgWydpbmNs
dWRlJywgJ3BsYXRmb3JtL21hYy9CbG9ja0V4Y2VwdGlvbnNcXC5tbSQnXSwKQEAgLTE0OTQsNyAr
MTQ5NCw3IEBACiAgICAgICAgICAgJ3NvdXJjZXMvJzogWwogICAgICAgICAgICAgWydpbmNsdWRl
JywgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0UG9pbnRDR1xcLmNwcCQnXSwKICAgICAgICAg
ICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFJlY3RDR1xcLmNwcCQn
XSwKLSAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9GbG9hdFNp
emVDR1xcLmNwcCQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc1NpemVDR1xcLmNwcCQnXSwKICAgICAgICAgICAgIFsnaW5jbHVkZScsICdw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHXFwuY3BwJCddLAogICAgICAgICAgICAgWydp
bmNsdWRlJywgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDR1xcLmNwcCQnXSwKICAgICAg
ICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0dcXC5jcHAk
J10sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjc0MjUsMTQgKzI3NDI1LDYgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXEZsb2F0U2l6ZS5jcHAiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUK
LQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xGbG9hdFNpemUuaCIKLQkJ
CQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXEZvbnQuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjc1ODEsNiAr
Mjc1NzMsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzU2l6ZS5jcHAiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xHcmFwaGljc1NpemUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXEdyYXBoaWNzVHlwZXMuY3BwIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMjg0NDgsNyArMjg0NDgsNyBAQAogCQkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQotCQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xjZ1xGbG9hdFNpemVDRy5jcHAiCisJCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGNnXEdyYXBoaWNzU2l6ZUNHLmNwcCIKIAkJ
CQkJCT4KIAkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgogCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MzM4
LDcgKzQzMzgsNiBAQAogCQlCMjc1MzU1ODBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRp
b25NYXRyaXhDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAgKi87IH07CiAJCUIyNzUzNTU5MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Q0cuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MkIw
QjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRDRy5jcHAgKi87IH07CiAJCUIyNzUzNTVBMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUyQzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRS
ZWN0Q0cuY3BwICovOyB9OwotCQlCMjc1MzU1QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXpl
Q0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3
NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLzsgfTsKIAkJQjI3NTM1
NUUwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdl
Q0cuY3BwICovOyB9OwogCQlCMjc1MzU1RjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VD
Ry5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1
MzUzMTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2VDRy5jcHAgKi87IH07CiAJCUIyNzUz
NTYwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTMyMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bnRQb2ludENHLmNwcCAqLzsgfTsKQEAgLTQzNTMsOCArNDM1Miw2IEBACiAJCUIyNzUzNTY5MEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzQjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2lu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIy
NzUzNTZBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1M0MwQjA1MzgxNDAwMkNFNjRGIC8q
IEZsb2F0UmVjdC5jcHAgKi87IH07CiAJCUIyNzUzNTZCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9h
dFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NzUzNTNEMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCMjc1MzU2QzBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyNzUzNTNFMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemUuY3BwICovOyB9Owot
CQlCMjc1MzU2RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzUzRjBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQjI3NTM1NkUwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTQwMEIwNTM4MTQwMDJDRTY0
RiAvKiBJY29uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQjI3NTM1NkYwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTQxMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbWFnZS5jcHAgKi87IH07CiAJCUIyNzUzNTcwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1
NDIwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQzNjcsNyArNDM2NCw2IEBACiAJCUIyNzUzNTc3MEIw
NTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTRBMEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xvck1hYy5t
bSAqLzsgfTsKIAkJQjI3NTM1NzgwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnRNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0QjBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludE1hYy5tbSAqLzsgfTsKIAkJQjI3NTM1NzkwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTRDMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJl
Y3RNYWMubW0gKi87IH07Ci0JCUIyNzUzNTdBMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1
MzU0RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplTWFjLm1tICovOyB9OwogCQlCMjc1MzU3
QjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0RTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VN
YWMubW0gKi87IH07CiAJCUIyNzUzNTdDMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludE1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTRG
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludE1hYy5tbSAqLzsgfTsKIAkJQjI3NTM1N0QwQjA1
MzgxNDAwMkNFNjRGIC8qIEludFJlY3RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdE1h
Yy5tbSAqLzsgfTsKQEAgLTQ3NzcsNiArNDc3MywxMCBAQAogCQlCOERCREI0QzEzMEIwRjhBMDBG
NUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjhEQkRCNDgxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVj
dGlvbkNvbW1hbmQuaCAqLzsgfTsKIAkJQjhEQkRCNEQxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjhEQkRCNDkxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuY3BwICovOyB9OwogCQlCOERCREI0RTEzMEIwRjhBMDBGNUNEQjEgLyogU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjhEQkRCNEExMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuaCAqLzsgfTsKKwkJQkE0ODIzRDYxM0Q0QzUxOTAwRTUwOThEIC8qIEdyYXBo
aWNzU2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJBNDgyM0Q1MTNENEM1MTkwMEU1MDk4RCAvKiBHcmFwaGljc1NpemVDRy5jcHAgKi87IH07
CisJCUJBNDgyM0Q5MTNENEM1QUYwMEU1MDk4RCAvKiBHcmFwaGljc1NpemUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkE0ODIzRDcxM0Q0QzVBRjAw
RTUwOThEIC8qIEdyYXBoaWNzU2l6ZS5jcHAgKi87IH07CisJCUJBNDgyM0RBMTNENEM1QUYwMEU1
MDk4RCAvKiBHcmFwaGljc1NpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJBNDgyM0Q4MTNENEM1QUYwMEU1MDk4RCAvKiBHcmFwaGljc1NpemUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQTQ4MjNG
RTEzRDREQjQ5MDBFNTA5OEQgLyogR3JhcGhpY3NTaXplTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkE0ODIzRkQxM0Q0REI0OTAwRTUwOThEIC8q
IEdyYXBoaWNzU2l6ZU1hYy5tbSAqLzsgfTsKIAkJQkFDRjI5MDExM0IyQTBENTAwNzgxRjkwIC8q
IExheW91dFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQUNGMjkwMDEzQjJBMEQ1MDA3ODFGOTAgLyogTGF5b3V0VHlwZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzAwRjAwNDBFMEExODU1
MDBGRDA0RTMgLyogRE9NRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLzsgfTsK
IAkJQkMwMEYwMDUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRjBFMEExODU1MDBGRDA0RTMg
LyogRE9NRmlsZS5tbSAqLzsgfTsKQEAgLTEwOTMyLDcgKzEwOTMyLDYgQEAKIAkJQjI3NTM1MkEw
QjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUyQjBCMDUzODE0MDAyQ0U2NEYgLyog
RmxvYXRQb2ludENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
bG9hdFBvaW50Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUyQzBC
MDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZsb2F0UmVjdENHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQjI3NTM1MkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNpemVDRy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTMwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZUNH
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUNHLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1MzEwQjA1MzgxNDAwMkNFNjRGIC8q
IEltYWdlU291cmNlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlU291cmNlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzUz
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW50UG9pbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDk0Nyw4ICsxMDk0Niw2IEBACiAJCUIyNzUzNTNCMEIwNTM4MTQwMDJDRTY0RiAv
KiBGbG9hdFBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdFBv
aW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTNDMEIwNTM4MTQwMDJD
RTY0RiAvKiBGbG9hdFJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZsb2F0UmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTNE
MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZsb2F0UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjc1
MzUzRTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFNpemUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjc1MzUzRjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdFNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjI3NTM1NDAwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEljb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjI3NTM1NDEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNzUzNTQyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwOTYxLDcgKzEwOTU4LDYgQEAKIAkJQjI3NTM1NEEwQjA1MzgxNDAwMkNFNjRGIC8q
IENvbG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENv
bG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0QjBCMDUzODE0
MDAyQ0U2NEYgLyogRmxvYXRQb2ludE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBGbG9hdFBvaW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0TWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZsb2F0UmVjdE1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI3NTM1NEQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
U2l6ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGbG9h
dFNpemVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTRFMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBJbWFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3
NTM1NEYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludFBvaW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMjc1MzU1MDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdE1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbnRSZWN0TWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEzODYsNiArMTEzODIsMTAgQEAKIAkJQjhE
QkRCNDgxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0U2VsZWN0aW9uQ29tbWFuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0OTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjhEQkRCNEExMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQTQ4MjNENTEzRDRDNTE5
MDBFNTA5OEQgLyogR3JhcGhpY3NTaXplQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR3JhcGhpY3NTaXplQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQTQ4MjNENzEzRDRDNUFGMDBFNTA5OEQgLyogR3JhcGhpY3NTaXplLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzU2l6ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJBNDgyM0Q4MTNENEM1QUYwMEU1MDk4RCAvKiBHcmFwaGlj
c1NpemUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhpY3NTaXplLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJBNDgyM0ZEMTNENERCNDkwMEU1MDk4RCAv
KiBHcmFwaGljc1NpemVNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHcmFwaGljc1NpemVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJB
Q0YyOTAwMTNCMkEwRDUwMDc4MUY5MCAvKiBMYXlvdXRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMYXlvdXRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3ODk5LDEwICsxNzg5OSwxMCBAQAogCQlCMjc1MzUyOTBCMDUzODE0MDAy
Q0U2NEYgLyogY2cgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCUJBNDgyM0Q1MTNENEM1MTkwMEU1MDk4RCAvKiBHcmFwaGljc1NpemVDRy5jcHAgKi8sCiAJ
CQkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8qIENvbG9yQ0cuY3BwICovLAogCQkJCUIyNzUz
NTJCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Q0cuY3BwICovLAogCQkJCUIyNzUzNTJD
MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RDRy5jcHAgKi8sCi0JCQkJQjI3NTM1MkQwQjA1
MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCAqLywKIAkJCQlCQzUzQzYwQTBEQTU2Q0Yx
MDAyMUVCNUQgLyogR3JhZGllbnRDRy5jcHAgKi8sCiAJCQkJNkUyMUM2QzExMTI2MzM5OTAwQTdC
RTAyIC8qIEdyYXBoaWNzQ29udGV4dDNEQ0cuY3BwICovLAogCQkJCUIyRUQ5NzcwMEIxRjU1Q0Uw
MDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgKi8sCkBAIC0xNzkzOCw3ICsxNzkzOCw2
IEBACiAJCQkJMzdDMjM4MjAxMDk4Qzg0MjAwRUY5RjcyIC8qIENvbXBsZXhUZXh0Q29udHJvbGxl
ckNvcmVUZXh0LmNwcCAqLywKIAkJCQlCMjc1MzU0QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQ
b2ludE1hYy5tbSAqLywKIAkJCQlCMjc1MzU0QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0
TWFjLm1tICovLAotCQkJCUIyNzUzNTREMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVNYWMu
bW0gKi8sCiAJCQkJQjJBRkZDNzQwRDAwQTVDMTAwMzAwNzREIC8qIEZvbnRDYWNoZU1hYy5tbSAq
LywKIAkJCQkzN0MyMzYwQTEwOTdFREVEMDBFRjlGNzIgLyogRm9udENvbXBsZXhUZXh0TWFjLmNw
cCAqLywKIAkJCQlCMkFGRkM3NTBEMDBBNUMxMDAzMDA3NEQgLyogRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAgKi8sCkBAIC0xNzk0Nyw2ICsxNzk0Niw3IEBACiAJCQkJQjJBRkZDN0IwRDAwQTVD
MTAwMzAwNzREIC8qIEdseXBoUGFnZVRyZWVOb2RlTWFjLmNwcCAqLywKIAkJCQk0OUZGQkYxQzEx
Qzg1NTBFMDA2QTcxMTggLyogR3JhcGhpY3NDb250ZXh0M0RNYWMubW0gKi8sCiAJCQkJQjI3N0I0
MDMwQjIyRjM3QzAwMDRCRUM2IC8qIEdyYXBoaWNzQ29udGV4dE1hYy5tbSAqLywKKwkJCQlCQTQ4
MjNGRDEzRDREQjQ5MDBFNTA5OEQgLyogR3JhcGhpY3NTaXplTWFjLm1tICovLAogCQkJCUIyNzUz
NThEMEIwNTNBNjYwMDJDRTY0RiAvKiBJY29uTWFjLm1tICovLAogCQkJCUIyNzUzNTRFMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RjBCMDUzODE0MDAyQ0U2
NEYgLyogSW50UG9pbnRNYWMubW0gKi8sCkBAIC0xNzk5OSw4ICsxNzk5OSw2IEBACiAJCQkJMEZE
NzIzODAwRUM4QkQ5MzAwQ0E1REQ3IC8qIEZsb2F0UXVhZC5oICovLAogCQkJCUIyNzUzNTNDMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3QuY3BwICovLAogCQkJCUIyNzUzNTNEMEIwNTM4MTQw
MDJDRTY0RiAvKiBGbG9hdFJlY3QuaCAqLywKLQkJCQlCMjc1MzUzRTBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplLmNwcCAqLywKLQkJCQlCMjc1MzUzRjBCMDUzODE0MDAyQ0U2NEYgLyogRmxv
YXRTaXplLmggKi8sCiAJCQkJQjJDM0RBNEYwRDAwNkNENjAwRUY2RjI2IC8qIEZvbnQuY3BwICov
LAogCQkJCUIyQzNEQTUwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggKi8sCiAJCQkJQkNCOTJE
NEUxMjkzNTUwQjAwQzgzODdGIC8qIEZvbnRCYXNlbGluZS5oICovLApAQCAtMTgwNDIsNiArMTgw
NDAsOCBAQAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyLmNw
cCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5oICov
LAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ2xpZW50Lmgg
Ki8sCisJCQkJQkE0ODIzRDcxM0Q0QzVBRjAwRTUwOThEIC8qIEdyYXBoaWNzU2l6ZS5jcHAgKi8s
CisJCQkJQkE0ODIzRDgxM0Q0QzVBRjAwRTUwOThEIC8qIEdyYXBoaWNzU2l6ZS5oICovLAogCQkJ
CUIyQTAxNTk0MEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFwaGljc1R5cGVzLmNwcCAqLywKIAkJCQlC
MkEwMTU5NTBBRjZDRDUzMDA2QkNFMEUgLyogR3JhcGhpY3NUeXBlcy5oICovLAogCQkJCTc3QTE3
QTdBMTJGMjg5MEIwMDRFMDJGNiAvKiBHcmFwaGljc1R5cGVzM0QuaCAqLywKQEAgLTIxMjA5LDcg
KzIxMjA5LDYgQEAKIAkJCQlCMkUyN0NBMDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNE
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ3MjM4MjBFQzhCRDkzMDBDQTVERDcgLyogRmxvYXRR
dWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU2QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxv
YXRSZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlCMjc1MzU2RDBCMDUzODE0MDAyQ0U2NEYgLyog
RmxvYXRTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk5M0JFNjBCMkYyQjFDMDA1MDQ5N0Yg
LyogRm9jdXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNjIyODc4NDBCNERCMzIy
MDAwQzM0REYgLyogRm9jdXNEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTYx
MEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmggaW4gSGVhZGVycyAqLywKQEAgLTIzMTA0LDYgKzIz
MTAzLDcgQEAKIAkJCQlGRDUzNzM1MzEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ5NDVCRkQ0MTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk2OUIwRjMxM0QwQjMzRjAwREYzNTIxIC8qIEhpdFRl
c3RpbmdUcmFuc2Zvcm1TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkE0ODIzREExM0Q0QzVB
RjAwRTUwOThEIC8qIEdyYXBoaWNzU2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNDEyNSw5ICsy
NDEyNSw2IEBACiAJCQkJQjI3NTM1NkEwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU1QTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0
Q0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NzkwQjA1MzgxNDAwMkNFNjRGIC8qIEZs
b2F0UmVjdE1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTZDMEIwNTM4MTQwMDJDRTY0
RiAvKiBGbG9hdFNpemUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI3NTM1NUIwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0U2l6ZUNHLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNzUzNTdBMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFNpemVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDk5
M0JFNTBCMkYyQjFDMDA1MDQ5N0YgLyogRm9jdXNDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTYwMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyQzNEQTYyMEQwMDZDRDYwMEVGNkYyNiAvKiBGb250Q2FjaGUuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC0yNTg3NSw2ICsyNTg3Miw5IEBACiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4
RENFIC8qIFplcm9Qb2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDVCRkQzMTNDRjgwOTAw
MENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTY5QjBG
MjEzRDBCMzNGMDBERjM1MjEgLyogSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUJBNDgyM0Q2MTNENEM1MTkwMEU1MDk4RCAvKiBHcmFwaGljc1NpemVDRy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCQTQ4MjNEOTEzRDRDNUFGMDBFNTA5OEQgLyogR3JhcGhp
Y3NTaXplLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJBNDgyM0ZFMTNENERCNDkwMEU1MDk4RCAv
KiBHcmFwaGljc1NpemVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3
LDcgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudAogICAgIGlmIChp
c0xpbmVhckdyYWRpZW50KCkpCiAgICAgICAgIGdyYWRpZW50RW5kID0gZ3JhZGllbnQtPnAxKCk7
CiAgICAgZWxzZSBpZiAoaXNSYWRpYWxHcmFkaWVudCgpKQotICAgICAgICBncmFkaWVudEVuZCA9
IGdyYWRpZW50U3RhcnQgKyBGbG9hdFNpemUoZ3JhZGllbnQtPmVuZFJhZGl1cygpLCAwKTsKKyAg
ICAgICAgZ3JhZGllbnRFbmQgPSBncmFkaWVudFN0YXJ0ICsgR3JhcGhpY3NTaXplKGdyYWRpZW50
LT5lbmRSYWRpdXMoKSwgMCk7CiAgICAgICAgIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtU3RvcHM7ICsraSkgewogICAgICAgICBjb25zdCBDU1NHcmFkaWVudENvbG9yU3RvcCYgc3Rv
cCA9IG1fc3RvcHNbaV07CkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVl
OjphZGRTdG9wcyhHcmFkaWVudAogICAgICAgICAgICAgZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFs
dWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKICAgICAgICAgICAgICAgICBmbG9hdCBsZW5n
dGggPSBzdG9wLm1fcG9zaXRpb24tPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlLCByb290U3R5
bGUsIHN0eWxlLT5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICAgICAgICAgIGlmICghY29tcHV0
ZWRHcmFkaWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBGbG9hdFNpemUgZ3JhZGll
bnRTaXplKGdyYWRpZW50U3RhcnQgLSBncmFkaWVudEVuZCk7CisgICAgICAgICAgICAgICAgICAg
IEdyYXBoaWNzU2l6ZSBncmFkaWVudFNpemUoZ3JhZGllbnRTdGFydCAtIGdyYWRpZW50RW5kKTsK
ICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRMZW5ndGggPSBncmFkaWVudFNpemUuZGlhZ29u
YWxMZW5ndGgoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgc3RvcHNbaV0u
b2Zmc2V0ID0gKGdyYWRpZW50TGVuZ3RoID4gMCkgPyBsZW5ndGggLyBncmFkaWVudExlbmd0aCA6
IDA7CkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhH
cmFkaWVudAogICAgICAgICAgICAgLy8gdG8gcmVwZWF0IG91dCB0byB0aGUgY29ybmVycyBvZiB0
aGUgYm94LgogICAgICAgICAgICAgaWYgKGlzUmFkaWFsR3JhZGllbnQoKSkgewogICAgICAgICAg
ICAgICAgIGlmICghY29tcHV0ZWRHcmFkaWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAg
ICBGbG9hdFNpemUgZ3JhZGllbnRTaXplKGdyYWRpZW50U3RhcnQgLSBncmFkaWVudEVuZCk7Cisg
ICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzU2l6ZSBncmFkaWVudFNpemUoZ3JhZGllbnRTdGFy
dCAtIGdyYWRpZW50RW5kKTsKICAgICAgICAgICAgICAgICAgICAgZ3JhZGllbnRMZW5ndGggPSBn
cmFkaWVudFNpemUuZGlhZ29uYWxMZW5ndGgoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgCkBAIC02NDksMTkgKzY0OSwxOSBAQCBmbG9hdCBDU1NSYWRpYWxHcmFkaWVudFZh
bHVlOjpyZXNvbHZlUmFkCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGZsb2F0IGRp
c3RhbmNlVG9DbG9zZXN0Q29ybmVyKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgRmxvYXRQb2ludCYgY29ybmVyKQorc3RhdGljIGZsb2F0IGRpc3RhbmNlVG9DbG9z
ZXN0Q29ybmVyKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSwg
RmxvYXRQb2ludCYgY29ybmVyKQogewogICAgIEZsb2F0UG9pbnQgdG9wTGVmdDsKLSAgICBmbG9h
dCB0b3BMZWZ0RGlzdGFuY2UgPSBGbG9hdFNpemUocCAtIHRvcExlZnQpLmRpYWdvbmFsTGVuZ3Ro
KCk7CisgICAgZmxvYXQgdG9wTGVmdERpc3RhbmNlID0gR3JhcGhpY3NTaXplKHAgLSB0b3BMZWZ0
KS5kaWFnb25hbExlbmd0aCgpOwogCiAgICAgRmxvYXRQb2ludCB0b3BSaWdodChzaXplLndpZHRo
KCksIDApOwotICAgIGZsb2F0IHRvcFJpZ2h0RGlzdGFuY2UgPSBGbG9hdFNpemUocCAtIHRvcFJp
Z2h0KS5kaWFnb25hbExlbmd0aCgpOworICAgIGZsb2F0IHRvcFJpZ2h0RGlzdGFuY2UgPSBHcmFw
aGljc1NpemUocCAtIHRvcFJpZ2h0KS5kaWFnb25hbExlbmd0aCgpOwogCiAgICAgRmxvYXRQb2lu
dCBib3R0b21MZWZ0KDAsIHNpemUuaGVpZ2h0KCkpOwotICAgIGZsb2F0IGJvdHRvbUxlZnREaXN0
YW5jZSA9IEZsb2F0U2l6ZShwIC0gYm90dG9tTGVmdCkuZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBm
bG9hdCBib3R0b21MZWZ0RGlzdGFuY2UgPSBHcmFwaGljc1NpemUocCAtIGJvdHRvbUxlZnQpLmRp
YWdvbmFsTGVuZ3RoKCk7CiAKICAgICBGbG9hdFBvaW50IGJvdHRvbVJpZ2h0KHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZmxvYXQgYm90dG9tUmlnaHREaXN0YW5jZSA9IEZsb2F0
U2l6ZShwIC0gYm90dG9tUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgYm90dG9t
UmlnaHREaXN0YW5jZSA9IEdyYXBoaWNzU2l6ZShwIC0gYm90dG9tUmlnaHQpLmRpYWdvbmFsTGVu
Z3RoKCk7CiAKICAgICBjb3JuZXIgPSB0b3BMZWZ0OwogICAgIGZsb2F0IG1pbkRpc3RhbmNlID0g
dG9wTGVmdERpc3RhbmNlOwpAQCAtNjgyLDE5ICs2ODIsMTkgQEAgc3RhdGljIGZsb2F0IGRpc3Rh
bmNlVG9DbG9zZXN0Q29ybmVyKGNvbgogICAgIHJldHVybiBtaW5EaXN0YW5jZTsKIH0KIAotc3Rh
dGljIGZsb2F0IGRpc3RhbmNlVG9GYXJ0aGVzdENvcm5lcihjb25zdCBGbG9hdFBvaW50JiBwLCBj
b25zdCBGbG9hdFNpemUmIHNpemUsIEZsb2F0UG9pbnQmIGNvcm5lcikKK3N0YXRpYyBmbG9hdCBk
aXN0YW5jZVRvRmFydGhlc3RDb3JuZXIoY29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3QgR3JhcGhp
Y3NTaXplJiBzaXplLCBGbG9hdFBvaW50JiBjb3JuZXIpCiB7CiAgICAgRmxvYXRQb2ludCB0b3BM
ZWZ0OwotICAgIGZsb2F0IHRvcExlZnREaXN0YW5jZSA9IEZsb2F0U2l6ZShwIC0gdG9wTGVmdCku
ZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBmbG9hdCB0b3BMZWZ0RGlzdGFuY2UgPSBHcmFwaGljc1Np
emUocCAtIHRvcExlZnQpLmRpYWdvbmFsTGVuZ3RoKCk7CiAKICAgICBGbG9hdFBvaW50IHRvcFJp
Z2h0KHNpemUud2lkdGgoKSwgMCk7Ci0gICAgZmxvYXQgdG9wUmlnaHREaXN0YW5jZSA9IEZsb2F0
U2l6ZShwIC0gdG9wUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgdG9wUmlnaHRE
aXN0YW5jZSA9IEdyYXBoaWNzU2l6ZShwIC0gdG9wUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CiAK
ICAgICBGbG9hdFBvaW50IGJvdHRvbUxlZnQoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZmxvYXQg
Ym90dG9tTGVmdERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSBib3R0b21MZWZ0KS5kaWFnb25hbExl
bmd0aCgpOworICAgIGZsb2F0IGJvdHRvbUxlZnREaXN0YW5jZSA9IEdyYXBoaWNzU2l6ZShwIC0g
Ym90dG9tTGVmdCkuZGlhZ29uYWxMZW5ndGgoKTsKIAogICAgIEZsb2F0UG9pbnQgYm90dG9tUmln
aHQoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBmbG9hdCBib3R0b21SaWdodERp
c3RhbmNlID0gRmxvYXRTaXplKHAgLSBib3R0b21SaWdodCkuZGlhZ29uYWxMZW5ndGgoKTsKKyAg
ICBmbG9hdCBib3R0b21SaWdodERpc3RhbmNlID0gR3JhcGhpY3NTaXplKHAgLSBib3R0b21SaWdo
dCkuZGlhZ29uYWxMZW5ndGgoKTsKIAogICAgIGNvcm5lciA9IHRvcExlZnQ7CiAgICAgZmxvYXQg
bWF4RGlzdGFuY2UgPSB0b3BMZWZ0RGlzdGFuY2U7CkBAIC03MTcsNyArNzE3LDcgQEAgc3RhdGlj
IGZsb2F0IGRpc3RhbmNlVG9GYXJ0aGVzdENvcm5lcihjbwogCiAvLyBDb21wdXRlIGhvcml6b250
YWwgcmFkaXVzIG9mIGVsbGlwc2Ugd2l0aCBjZW50ZXIgYXQgMCwwIHdoaWNoIHBhc3NlcyB0aHJv
dWdoIHAsIGFuZCBoYXMKIC8vIHdpZHRoL2hlaWdodCBnaXZlbiBieSBhc3BlY3RSYXRpby4KLXN0
YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRhbEVsbGlwc2VSYWRpdXMoY29uc3QgRmxvYXRTaXpl
JiBwLCBmbG9hdCBhc3BlY3RSYXRpbykKK3N0YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRhbEVs
bGlwc2VSYWRpdXMoY29uc3QgR3JhcGhpY3NTaXplJiBwLCBmbG9hdCBhc3BlY3RSYXRpbykKIHsK
ICAgICAvLyB4XjIvYV4yICsgeV4yL2JeMiA9IDEKICAgICAvLyBhL2IgPSBhc3BlY3RSYXRpbywg
YiA9IGEvYXNwZWN0UmF0aW8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENh
bnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODIsNyArMzgyLDcgQEAgSW50UmVj
dCBIVE1MQ2FudmFzRWxlbWVudDo6Y29udmVydExvZ2ljYQogICAgIHJldHVybiBJbnRSZWN0KElu
dFBvaW50KGxlZnQsIHRvcCksIGNvbnZlcnRUb1ZhbGlkRGV2aWNlU2l6ZShyaWdodCAtIGxlZnQs
IGJvdHRvbSAtIHRvcCkpOwogfQogCi1JbnRTaXplIEhUTUxDYW52YXNFbGVtZW50Ojpjb252ZXJ0
TG9naWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUpIGNvbnN0CitJbnRT
aXplIEhUTUxDYW52YXNFbGVtZW50Ojpjb252ZXJ0TG9naWNhbFRvRGV2aWNlKGNvbnN0IEdyYXBo
aWNzU2l6ZSYgbG9naWNhbFNpemUpIGNvbnN0CiB7CiAgICAgLy8gUHJldmVudCBvdmVyZmxvdyBi
eSBlbnN1cmluZyB0aGUgcmVjdCdzIGJvdW5kcyBzdGF5IHdpdGhpbiBpbnRlZ2VyLWV4cHJlc3Np
YmxlIHJhbmdlCiAgICAgZmxvYXQgd2lkdGggPSBjbGFtcFRvSW50ZWdlcihjZWlsZihsb2dpY2Fs
U2l6ZS53aWR0aCgpICogbV9wYWdlU2NhbGVGYWN0b3IpKTsKQEAgLTQyMiw3ICs0MjIsNyBAQCB2
b2lkIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlCiAKICAgICBtX2hhc0NyZWF0
ZWRJbWFnZUJ1ZmZlciA9IHRydWU7CiAKLSAgICBGbG9hdFNpemUgdW5zY2FsZWRTaXplKHdpZHRo
KCksIGhlaWdodCgpKTsKKyAgICBHcmFwaGljc1NpemUgdW5zY2FsZWRTaXplKHdpZHRoKCksIGhl
aWdodCgpKTsKICAgICBJbnRTaXplIHNpemUgPSBjb252ZXJ0TG9naWNhbFRvRGV2aWNlKHVuc2Nh
bGVkU2l6ZSk7CiAgICAgaWYgKCFzaXplLndpZHRoKCkgfHwgIXNpemUuaGVpZ2h0KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIEhUTUxDYW52YXNFbGVtZW50Ojpj
cmVhdGVJbWFnZUJ1ZmZlCiAgICAgLy8gd2hlcmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZSgpIHJldHVy
bnMgMCwgaG93ZXZlciB3ZSBjb3VsZCBzdGlsbCBiZSBsb3cgb24gbWVtb3J5LgogICAgIGlmICgh
bV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIG1faW1hZ2VCdWZmZXItPmNvbnRl
eHQoKS0+c2NhbGUoRmxvYXRTaXplKHNpemUud2lkdGgoKSAvIHVuc2NhbGVkU2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpIC8gdW5zY2FsZWRTaXplLmhlaWdodCgpKSk7CisgICAgbV9pbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLT5zY2FsZShHcmFwaGljc1NpemUoc2l6ZS53aWR0aCgpIC8gdW5zY2Fs
ZWRTaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkgLyB1bnNjYWxlZFNpemUuaGVpZ2h0KCkpKTsK
ICAgICBtX2ltYWdlQnVmZmVyLT5jb250ZXh0KCktPnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KHRydWUpOwogICAgIG1faW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+c2V0SW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eShEZWZhdWx0SW50ZXJwb2xhdGlvblF1YWxpdHkpOwogCkBAIC00ODcsNyArNDg3
LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y2xlYXJDb3BpZWRJbWFnZQogQWZmaW5lVHJh
bnNmb3JtIEhUTUxDYW52YXNFbGVtZW50OjpiYXNlVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBB
U1NFUlQobV9oYXNDcmVhdGVkSW1hZ2VCdWZmZXIpOwotICAgIEZsb2F0U2l6ZSB1bnNjYWxlZFNp
emUod2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIEdyYXBoaWNzU2l6ZSB1bnNjYWxlZFNpemUod2lk
dGgoKSwgaGVpZ2h0KCkpOwogICAgIEludFNpemUgc2l6ZSA9IGNvbnZlcnRMb2dpY2FsVG9EZXZp
Y2UodW5zY2FsZWRTaXplKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgIGlm
IChzaXplLndpZHRoKCkgJiYgc2l6ZS5oZWlnaHQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJQcmVzZW50YXRpb25Db3B5KCk7CiAKICAgICBJbnRS
ZWN0IGNvbnZlcnRMb2dpY2FsVG9EZXZpY2UoY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7Ci0gICAg
SW50U2l6ZSBjb252ZXJ0TG9naWNhbFRvRGV2aWNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0Owor
ICAgIEludFNpemUgY29udmVydExvZ2ljYWxUb0RldmljZShjb25zdCBHcmFwaGljc1NpemUmKSBj
b25zdDsKICAgICBJbnRTaXplIGNvbnZlcnRUb1ZhbGlkRGV2aWNlU2l6ZShmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0KSBjb25zdDsKIAogICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
bigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0NSw3ICszNDUsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cmVzdG9yZSgpCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0QWxsQXR0cmli
dXRlc1RvRGVmYXVsdCgpCiB7CiAgICAgc3RhdGUoKS5tX2dsb2JhbEFscGhhID0gMTsKLSAgICBz
dGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKCk7CisgICAgc3RhdGUoKS5tX3NoYWRv
d09mZnNldCA9IEdyYXBoaWNzU2l6ZSgpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gMDsK
ICAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAgICAgc3Rh
dGUoKS5tX2dsb2JhbENvbXBvc2l0ZSA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CkBAIC0zNTQsNyAr
MzU0LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldEFsbEF0dAogICAgIGlm
ICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29udGV4dC0+c2V0TGVnYWN5U2hh
ZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgIGNvbnRleHQtPnNldExlZ2FjeVNoYWRvdyhHcmFwaGljc1NpemUoKSwgMCwgQ29s
b3I6OnRyYW5zcGFyZW50LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICBjb250ZXh0LT5zZXRB
bHBoYSgxKTsKICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291
cmNlT3Zlcik7CiB9CkBAIC01OTEsNyArNTkxLDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OnNjYWxlKGZsbwogICAgIH0KIAogICAgIHN0YXRlKCkubV90cmFuc2Zvcm0gPSBuZXdU
cmFuc2Zvcm07Ci0gICAgYy0+c2NhbGUoRmxvYXRTaXplKHN4LCBzeSkpOworICAgIGMtPnNjYWxl
KEdyYXBoaWNzU2l6ZShzeCwgc3kpKTsKICAgICBtX3BhdGgudHJhbnNmb3JtKEFmZmluZVRyYW5z
Zm9ybSgpLnNjYWxlTm9uVW5pZm9ybSgxLjAgLyBzeCwgMS4wIC8gc3kpKTsKIH0KIApAQCAtMTEw
OCw3ICsxMTA4LDcgQEAgc3RhdGljIGlubGluZSBDR1NpemUgYWRqdXN0ZWRTaGFkb3dTaXplKAog
CiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIpCiB7Ci0gICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9
IEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0g
R3JhcGhpY3NTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0g
Ymx1cjsKICAgICBzdGF0ZSgpLm1fc2hhZG93Q29sb3IgPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CiAg
ICAgYXBwbHlTaGFkb3coKTsKQEAgLTExMTksMTQgKzExMTksMTQgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdwogICAgIGlmICghcGFyc2VDb2xvck9yQ3VycmVudENv
bG9yKHN0YXRlKCkubV9zaGFkb3dDb2xvciwgY29sb3IsIGNhbnZhcygpKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSh3aWR0aCwgaGVp
Z2h0KTsKKyAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gR3JhcGhpY3NTaXplKHdpZHRoLCBo
ZWlnaHQpOwogICAgIHN0YXRlKCkubV9zaGFkb3dCbHVyID0gYmx1cjsKICAgICBhcHBseVNoYWRv
dygpOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCkKIHsKLSAg
ICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOworICAg
IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBHcmFwaGljc1NpemUod2lkdGgsIGhlaWdodCk7CiAg
ICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwogICAgIHN0YXRlKCkubV9zaGFkb3dDb2xv
ciA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWws
IDEuMGYpOwogCkBAIC0xMTM0LDcgKzExMzQsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93CiAgICAgaWYgKCFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBjLT5z
ZXRMZWdhY3lTaGFkb3coRmxvYXRTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5tX3NoYWRv
d0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
Yy0+c2V0TGVnYWN5U2hhZG93KEdyYXBoaWNzU2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCku
bV9zaGFkb3dCbHVyLCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGNvbnN0IFN0cmluZyYgY29sb3IsIGZsb2F0
IGFscGhhKQpAQCAtMTE0NSwxOSArMTE0NSwxOSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6c2V0U2hhZG93CiAgICAgICAgIHJldHVybjsKIAogICAgIHN0YXRlKCkubV9zaGFkb3dD
b2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEocmdiYSwgYWxwaGEpOwotICAgIHN0YXRlKCku
bV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgc3RhdGUoKS5t
X3NoYWRvd09mZnNldCA9IEdyYXBoaWNzU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICBzdGF0ZSgp
Lm1fc2hhZG93Qmx1ciA9IGJsdXI7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5n
Q29udGV4dCgpOwogICAgIGlmICghYykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYy0+c2V0TGVn
YWN5U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIHN0YXRlKCkubV9zaGFkb3dCbHVy
LCBzdGF0ZSgpLm1fc2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGMtPnNl
dExlZ2FjeVNoYWRvdyhHcmFwaGljc1NpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hh
ZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0K
IAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKQog
ewotICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdodCk7
CisgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNldCA9IEdyYXBoaWNzU2l6ZSh3aWR0aCwgaGVpZ2h0
KTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7CiAgICAgc3RhdGUoKS5tX3NoYWRv
d0NvbG9yID0gbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlM
ZXZlbCwgYWxwaGEpOwogCkBAIC0xMTY1LDEyICsxMTY1LDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpzZXRTaGFkb3cKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGMtPnNldExlZ2FjeVNoYWRvdyhGbG9hdFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgp
Lm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBjLT5zZXRMZWdhY3lTaGFkb3coR3JhcGhpY3NTaXplKHdpZHRoLCAtaGVpZ2h0KSwg
c3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3co
ZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQgZywg
ZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRT
aXplKHdpZHRoLCBoZWlnaHQpOworICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBHcmFwaGlj
c1NpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwog
ICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIs
IGEpOwogCkBAIC0xMTc4LDEyICsxMTc4LDEyIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3cKICAgICBpZiAoIWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGMtPnNl
dExlZ2FjeVNoYWRvdyhGbG9hdFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgpLm1fc2hhZG93
Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBj
LT5zZXRMZWdhY3lTaGFkb3coR3JhcGhpY3NTaXplKHdpZHRoLCAtaGVpZ2h0KSwgc3RhdGUoKS5t
X3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7
CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lk
dGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwg
ZmxvYXQgaywgZmxvYXQgYSkKIHsKLSAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0ID0gRmxvYXRT
aXplKHdpZHRoLCBoZWlnaHQpOworICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBHcmFwaGlj
c1NpemUod2lkdGgsIGhlaWdodCk7CiAgICAgc3RhdGUoKS5tX3NoYWRvd0JsdXIgPSBibHVyOwog
ICAgIHN0YXRlKCkubV9zaGFkb3dDb2xvciA9IG1ha2VSR0JBRnJvbUNNWUtBKGMsIG0sIHksIGss
IGEpOwogCkBAIC0xMTk4LDEzICsxMTk4LDEzIEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3cKICAgICBDR0NvbnRleHRTZXRTaGFkb3dXaXRoQ29sb3IoZGMtPnBsYXRm
b3JtQ29udGV4dCgpLCBhZGp1c3RlZFNoYWRvd1NpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBz
aGFkb3dDb2xvcik7CiAgICAgQ0dDb2xvclJlbGVhc2Uoc2hhZG93Q29sb3IpOwogI2Vsc2UKLSAg
ICBkYy0+c2V0TGVnYWN5U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgLWhlaWdodCksIGJsdXIsIHN0
YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgZGMtPnNldExl
Z2FjeVNoYWRvdyhHcmFwaGljc1NpemUod2lkdGgsIC1oZWlnaHQpLCBibHVyLCBzdGF0ZSgpLm1f
c2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogI2VuZGlmCiB9CiAKIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGVhclNoYWRvdygpCiB7Ci0gICAgc3RhdGUoKS5tX3No
YWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOworICAgIHN0YXRlKCkubV9zaGFkb3dPZmZzZXQgPSBH
cmFwaGljc1NpemUoKTsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IDA7CiAgICAgc3RhdGUo
KS5tX3NoYWRvd0NvbG9yID0gQ29sb3I6OnRyYW5zcGFyZW50OwogICAgIGFwcGx5U2hhZG93KCk7
CkBAIC0xMjE4LDcgKzEyMTgsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YXBw
bHlTaGFkCiAKICAgICBmbG9hdCB3aWR0aCA9IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQud2lkdGgo
KTsKICAgICBmbG9hdCBoZWlnaHQgPSBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LmhlaWdodCgpOwot
ICAgIGMtPnNldExlZ2FjeVNoYWRvdyhGbG9hdFNpemUod2lkdGgsIC1oZWlnaHQpLCBzdGF0ZSgp
Lm1fc2hhZG93Qmx1ciwgc3RhdGUoKS5tX3NoYWRvd0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKKyAgICBjLT5zZXRMZWdhY3lTaGFkb3coR3JhcGhpY3NTaXplKHdpZHRoLCAtaGVpZ2h0KSwg
c3RhdGUoKS5tX3NoYWRvd0JsdXIsIHN0YXRlKCkubV9zaGFkb3dDb2xvciwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiB9CiAKIHN0YXRpYyBJbnRTaXplIHNpemUoSFRNTEltYWdlRWxlbWVudCogaW1h
Z2UpCkBAIC0xNDY3LDcgKzE0NjcsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZHJhd0ltYWdlCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpjKTsK
ICAgICBjLT5jbGlwKGRzdFJlY3QpOwogICAgIGMtPnRyYW5zbGF0ZShkc3RSZWN0LngoKSwgZHN0
UmVjdC55KCkpOwotICAgIGMtPnNjYWxlKEZsb2F0U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNS
ZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAg
Yy0+c2NhbGUoR3JhcGhpY3NTaXplKGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKSwg
ZHN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCkpKTsKICAgICBjLT50cmFuc2xhdGUo
LXNyY1JlY3QueCgpLCAtc3JjUmVjdC55KCkpOwogICAgIHZpZGVvLT5wYWludEN1cnJlbnRGcmFt
ZUluQ29udGV4dChjLCBJbnRSZWN0KEludFBvaW50KCksIHNpemUodmlkZW8pKSk7CiAgICAgc3Rh
dGVTYXZlci5yZXN0b3JlKCk7CkBAIC0xNjc3LDcgKzE2NzcsNyBAQCBQYXNzUmVmUHRyPEltYWdl
RGF0YT4gQ2FudmFzUmVuZGVyaW5nQ29uCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IEZsb2F0U2l6ZSB1bnNjYWxlZFNpemUoZmFicyhzdyksIGZhYnMoc2gpKTsKKyAgICBHcmFwaGlj
c1NpemUgdW5zY2FsZWRTaXplKGZhYnMoc3cpLCBmYWJzKHNoKSk7CiAgICAgSW50U2l6ZSBzY2Fs
ZWRTaXplID0gY2FudmFzKCktPmNvbnZlcnRMb2dpY2FsVG9EZXZpY2UodW5zY2FsZWRTaXplKTsK
ICAgICBpZiAoc2NhbGVkU2l6ZS53aWR0aCgpIDwgMSkKICAgICAgICAgc2NhbGVkU2l6ZS5zZXRX
aWR0aCgxKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVk
ZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVk
ZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiRm9u
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJQYXRoLmgiCkBAIC0y
NDEsNyArMjQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTGluZUNhcCBtX2xpbmVDYXA7CiAgICAg
ICAgIExpbmVKb2luIG1fbGluZUpvaW47CiAgICAgICAgIGZsb2F0IG1fbWl0ZXJMaW1pdDsKLSAg
ICAgICAgRmxvYXRTaXplIG1fc2hhZG93T2Zmc2V0OworICAgICAgICBHcmFwaGljc1NpemUgbV9z
aGFkb3dPZmZzZXQ7CiAgICAgICAgIGZsb2F0IG1fc2hhZG93Qmx1cjsKICAgICAgICAgUkdCQTMy
IG1fc2hhZG93Q29sb3I7CiAgICAgICAgIGZsb2F0IG1fZ2xvYmFsQWxwaGE7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3Miw3
ICszMjcyLDcgQEAgRnJhbWUqIGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJhbWUsIAogICAg
IC8vIGFkanVzdCBmb3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgd2luZG93IHNpemUgYW5k
IHRoZSBwYWdlIHNpemUuCiAKICAgICBGbG9hdFJlY3Qgd2luZG93UmVjdCA9IHBhZ2UtPmNocm9t
ZSgpLT53aW5kb3dSZWN0KCk7Ci0gICAgRmxvYXRTaXplIHBhZ2VTaXplID0gcGFnZS0+Y2hyb21l
KCktPnBhZ2VSZWN0KCkuc2l6ZSgpOworICAgIEdyYXBoaWNzU2l6ZSBwYWdlU2l6ZSA9IHBhZ2Ut
PmNocm9tZSgpLT5wYWdlUmVjdCgpLnNpemUoKTsKICAgICBpZiAoZmVhdHVyZXMueFNldCkKICAg
ICAgICAgd2luZG93UmVjdC5zZXRYKGZlYXR1cmVzLngpOwogICAgIGlmIChmZWF0dXJlcy55U2V0
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDMs
NyArMTQ0Myw3IEBAIHZvaWQgRE9NV2luZG93OjpyZXNpemVCeShmbG9hdCB4LCBmbG9hdCAKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRSZWN0IGZyID0gcGFnZS0+Y2hyb21lKCktPndpbmRv
d1JlY3QoKTsKLSAgICBGbG9hdFNpemUgZGVzdCA9IGZyLnNpemUoKSArIEZsb2F0U2l6ZSh4LCB5
KTsKKyAgICBHcmFwaGljc1NpemUgZGVzdCA9IGZyLnNpemUoKSArIEdyYXBoaWNzU2l6ZSh4LCB5
KTsKICAgICBGbG9hdFJlY3QgdXBkYXRlKGZyLmxvY2F0aW9uKCksIGRlc3QpOwogICAgIGFkanVz
dFdpbmRvd1JlY3Qoc2NyZWVuQXZhaWxhYmxlUmVjdChwYWdlLT5tYWluRnJhbWUoKS0+dmlldygp
KSwgZnIsIHVwZGF0ZSk7CiAgICAgcGFnZS0+Y2hyb21lKCktPnNldFdpbmRvd1JlY3QoZnIpOwpA
QCAtMTQ2Miw3ICsxNDYyLDcgQEAgdm9pZCBET01XaW5kb3c6OnJlc2l6ZVRvKGZsb2F0IHdpZHRo
LCBmbAogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJvbWUo
KS0+d2luZG93UmVjdCgpOwotICAgIEZsb2F0U2l6ZSBkZXN0ID0gRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQpOworICAgIEdyYXBoaWNzU2l6ZSBkZXN0ID0gR3JhcGhpY3NTaXplKHdpZHRoLCBoZWln
aHQpOwogICAgIEZsb2F0UmVjdCB1cGRhdGUoZnIubG9jYXRpb24oKSwgZGVzdCk7CiAgICAgYWRq
dXN0V2luZG93UmVjdChzY3JlZW5BdmFpbGFibGVSZWN0KHBhZ2UtPm1haW5GcmFtZSgpLT52aWV3
KCkpLCBmciwgdXBkYXRlKTsKICAgICBwYWdlLT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdChmcik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDcgKzU0OCw3IEBAIENv
bG9yIEZyYW1lOjpnZXREb2N1bWVudEJhY2tncm91bmRDb2xvcigKICAgICByZXR1cm4gdmlldygp
LT5iYXNlQmFja2dyb3VuZENvbG9yKCkuYmxlbmQoaHRtbEJhY2tncm91bmRDb2xvcikuYmxlbmQo
Ym9keUJhY2tncm91bmRDb2xvcik7CiB9CiAKLXZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wg
cHJpbnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtS
YXRpbywgQWRqdXN0Vmlld1NpemVPck5vdCBzaG91bGRBZGp1c3RWaWV3U2l6ZSkKK3ZvaWQgRnJh
bWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNp
emUsIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbywgQWRqdXN0Vmlld1NpemVPck5vdCBzaG91bGRB
ZGp1c3RWaWV3U2l6ZSkKIHsKICAgICAvLyBJbiBzZXR0aW5nIHByaW50aW5nLCB3ZSBzaG91bGQg
bm90IHZhbGlkYXRlIHJlc291cmNlcyBhbHJlYWR5IGNhY2hlZCBmb3IgdGhlIGRvY3VtZW50Lgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3MDQK
QEAgLTU3MSwxMSArNTcxLDExIEBAIHZvaWQgRnJhbWU6OnNldFByaW50aW5nKGJvb2wgcHJpbnRp
bmcsIGMKICAgICAgICAgY2hpbGQtPnNldFByaW50aW5nKHByaW50aW5nLCBJbnRTaXplKCksIDAs
IHNob3VsZEFkanVzdFZpZXdTaXplKTsKIH0KIAotRmxvYXRTaXplIEZyYW1lOjpyZXNpemVQYWdl
UmVjdHNLZWVwaW5nUmF0aW8oY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbFNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgZXhwZWN0ZWRTaXplKQorR3JhcGhpY3NTaXplIEZyYW1lOjpyZXNpemVQYWdlUmVj
dHNLZWVwaW5nUmF0aW8oY29uc3QgR3JhcGhpY3NTaXplJiBvcmlnaW5hbFNpemUsIGNvbnN0IEdy
YXBoaWNzU2l6ZSYgZXhwZWN0ZWRTaXplKQogewotICAgIEZsb2F0U2l6ZSByZXN1bHRTaXplOwor
ICAgIEdyYXBoaWNzU2l6ZSByZXN1bHRTaXplOwogICAgIGlmICghY29udGVudFJlbmRlcmVyKCkp
Ci0gICAgICAgIHJldHVybiBGbG9hdFNpemUoKTsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzU2l6
ZSgpOwogCiAgICAgaWYgKGNvbnRlbnRSZW5kZXJlcigpLT5zdHlsZSgpLT5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpKSB7CiAgICAgICAgIGZsb2F0IHJhdGlvID0gb3JpZ2luYWxTaXplLmhlaWdo
dCgpIC8gb3JpZ2luYWxTaXplLndpZHRoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lv
biA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQ3LDggKzE0Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTZXR0aW5n
cyogc2V0dGluZ3MoKSBjb25zdDsgLy8gY2FuIGJlIE5VTEwKIAotICAgICAgICB2b2lkIHNldFBy
aW50aW5nKGJvb2wgcHJpbnRpbmcsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemUsIGZsb2F0IG1h
eGltdW1TaHJpbmtSYXRpbywgQWRqdXN0Vmlld1NpemVPck5vdCk7Ci0gICAgICAgIEZsb2F0U2l6
ZSByZXNpemVQYWdlUmVjdHNLZWVwaW5nUmF0aW8oY29uc3QgRmxvYXRTaXplJiBvcmlnaW5hbFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgZXhwZWN0ZWRTaXplKTsKKyAgICAgICAgdm9pZCBzZXRQcmlu
dGluZyhib29sIHByaW50aW5nLCBjb25zdCBHcmFwaGljc1NpemUmIHBhZ2VTaXplLCBmbG9hdCBt
YXhpbXVtU2hyaW5rUmF0aW8sIEFkanVzdFZpZXdTaXplT3JOb3QpOworICAgICAgICBHcmFwaGlj
c1NpemUgcmVzaXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvKGNvbnN0IEdyYXBoaWNzU2l6ZSYgb3Jp
Z2luYWxTaXplLCBjb25zdCBHcmFwaGljc1NpemUmIGV4cGVjdGVkU2l6ZSk7CiAKICAgICAgICAg
Ym9vbCBpblZpZXdTb3VyY2VNb2RlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0SW5WaWV3U291
cmNlTW9kZShib29sID0gdHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShy
ZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjYxMCw3ICsyNjEwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmZvcmNlTGF5
b3V0KGJvb2wgYWxsb3dTdQogICAgIGxheW91dChhbGxvd1N1YnRyZWUpOwogfQogCi12b2lkIEZy
YW1lVmlldzo6Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNp
emUsIGZsb2F0IG1heGltdW1TaHJpbmtGYWN0b3IsIEFkanVzdFZpZXdTaXplT3JOb3Qgc2hvdWxk
QWRqdXN0Vmlld1NpemUpCit2b2lkIEZyYW1lVmlldzo6Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9u
KGNvbnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNpemUsIGZsb2F0IG1heGltdW1TaHJpbmtGYWN0b3Is
IEFkanVzdFZpZXdTaXplT3JOb3Qgc2hvdWxkQWRqdXN0Vmlld1NpemUpCiB7CiAgICAgLy8gRHVt
cGluZyBleHRlcm5hbFJlcHJlc2VudGF0aW9uKG1fZnJhbWUtPnJlbmRlcmVyKCkpLmFzY2lpKCkg
aXMgYSBnb29kIHRyaWNrIHRvIHNlZQogICAgIC8vIHRoZSBzdGF0ZSBvZiB0aGluZ3MgYmVmb3Jl
IGFuZCBhZnRlciB0aGUgbGF5b3V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlz
aW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9y
OwogY2xhc3MgRXZlbnQ7Ci1jbGFzcyBGbG9hdFNpemU7CitjbGFzcyBHcmFwaGljc1NpemU7CiBj
bGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lQWN0aW9uU2NoZWR1bGVyOwogY2xhc3MgSW50UmVjdDsK
QEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1Zpc3VhbGx5Tm9uRW1w
dHkoKSB7IG1faXNWaXN1YWxseU5vbkVtcHR5ID0gdHJ1ZTsgfQogCiAgICAgdm9pZCBmb3JjZUxh
eW91dChib29sIGFsbG93U3VidHJlZSA9IGZhbHNlKTsKLSAgICB2b2lkIGZvcmNlTGF5b3V0Rm9y
UGFnaW5hdGlvbihjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5r
RmFjdG9yLCBBZGp1c3RWaWV3U2l6ZU9yTm90KTsKKyAgICB2b2lkIGZvcmNlTGF5b3V0Rm9yUGFn
aW5hdGlvbihjb25zdCBHcmFwaGljc1NpemUmIHBhZ2VTaXplLCBmbG9hdCBtYXhpbXVtU2hyaW5r
RmFjdG9yLCBBZGp1c3RWaWV3U2l6ZU9yTm90KTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBpcyByZXRhaW5lZCBiZWNhdXNlIG9mIGVtYmVkZGVkIFdlYlZpZXdzIGluIEFwcEtpdC4gIFdo
ZW4gYSBXZWJWaWV3IGlzIGVtYmVkZGVkIGluc2lkZQogICAgIC8vIHNvbWUgZW5jbG9zaW5nIHZp
ZXcgd2l0aCBhdXRvLXBhZ2luYXRpb24sIG5vIGNhbGwgaGFwcGVucyB0byByZXNpemUgdGhlIHZp
ZXcuICBUaGUgbmV3IHBhZ2luYXRpb24gbW9kZWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UHJpbnRDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgUHJpbnRD
b250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKGNvbnMKIAogICAgIFJlbmRlclZpZXcqIHZpZXcgPSB0
b1JlbmRlclZpZXcobV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSk7CiAgICAgY29uc3Qg
SW50UmVjdCYgZG9jdW1lbnRSZWN0ID0gdmlldy0+ZG9jdW1lbnRSZWN0KCk7Ci0gICAgRmxvYXRT
aXplIHBhZ2VTaXplID0gbV9mcmFtZS0+cmVzaXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvKEZsb2F0
U2l6ZShwcmludFJlY3Qud2lkdGgoKSwgcHJpbnRSZWN0LmhlaWdodCgpKSwgRmxvYXRTaXplKGRv
Y3VtZW50UmVjdC53aWR0aCgpLCBkb2N1bWVudFJlY3QuaGVpZ2h0KCkpKTsKKyAgICBHcmFwaGlj
c1NpemUgcGFnZVNpemUgPSBtX2ZyYW1lLT5yZXNpemVQYWdlUmVjdHNLZWVwaW5nUmF0aW8oR3Jh
cGhpY3NTaXplKHByaW50UmVjdC53aWR0aCgpLCBwcmludFJlY3QuaGVpZ2h0KCkpLCBHcmFwaGlj
c1NpemUoZG9jdW1lbnRSZWN0LndpZHRoKCksIGRvY3VtZW50UmVjdC5oZWlnaHQoKSkpOwogICAg
IGZsb2F0IHBhZ2VXaWR0aCA9IHBhZ2VTaXplLndpZHRoKCk7CiAgICAgZmxvYXQgcGFnZUhlaWdo
dCA9IHBhZ2VTaXplLmhlaWdodCgpOwogCkBAIC04MiwxNiArODIsMTYgQEAgdm9pZCBQcmludENv
bnRleHQ6OmNvbXB1dGVQYWdlUmVjdHMoY29ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUludGVybmFsKEZsb2F0U2l6ZShwYWdlV2lk
dGggLyB1c2VyU2NhbGVGYWN0b3IsIHBhZ2VIZWlnaHQgLyB1c2VyU2NhbGVGYWN0b3IpLCBhbGxv
d0hvcml6b250YWxUaWxpbmcpOworICAgIGNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRl
cm5hbChHcmFwaGljc1NpemUocGFnZVdpZHRoIC8gdXNlclNjYWxlRmFjdG9yLCBwYWdlSGVpZ2h0
IC8gdXNlclNjYWxlRmFjdG9yKSwgYWxsb3dIb3Jpem9udGFsVGlsaW5nKTsKIH0KIAotdm9pZCBQ
cmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoY29uc3QgRmxvYXRTaXpl
JiBwYWdlU2l6ZUluUGl4ZWxzLCBib29sIGFsbG93SG9yaXpvbnRhbFRpbGluZykKK3ZvaWQgUHJp
bnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplKGNvbnN0IEdyYXBoaWNzU2l6
ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxvd0hvcml6b250YWxUaWxpbmcpCiB7CiAgICAg
bV9wYWdlUmVjdHMuY2xlYXIoKTsKICAgICBjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXplSW50
ZXJuYWwocGFnZVNpemVJblBpeGVscywgYWxsb3dIb3Jpem9udGFsVGlsaW5nKTsKIH0KIAotdm9p
ZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbChjb25z
dCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wgYWxsb3dJbmxpbmVEaXJlY3Rpb25U
aWxpbmcpCit2b2lkIFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUlu
dGVybmFsKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxvd0lu
bGluZURpcmVjdGlvblRpbGluZykKIHsKICAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50KCkgfHwg
IW1fZnJhbWUtPnZpZXcoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTY1LDEzICsxNjUsMTMgQEAgdm9pZCBQcmludENvbnRleHQ6OmJl
Z2luKGZsb2F0IHdpZHRoLCBmbAogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcyB0byBhZGp1c3QgcHJpbnRpbmcgcGFyYW1ldGVycyB3aXRob3V0IGdvaW5n
IGJhY2sgdG8gc2NyZWVuIG1vZGUuCiAgICAgbV9pc1ByaW50aW5nID0gdHJ1ZTsKIAotICAgIEZs
b2F0U2l6ZSBtaW5MYXlvdXRTaXplID0gbV9mcmFtZS0+cmVzaXplUGFnZVJlY3RzS2VlcGluZ1Jh
dGlvKEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgRmxvYXRTaXplKHdpZHRoICogcHJpbnRpbmdN
aW5pbXVtU2hyaW5rRmFjdG9yLCBoZWlnaHQgKiBwcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3Ip
KTsKKyAgICBHcmFwaGljc1NpemUgbWluTGF5b3V0U2l6ZSA9IG1fZnJhbWUtPnJlc2l6ZVBhZ2VS
ZWN0c0tlZXBpbmdSYXRpbyhHcmFwaGljc1NpemUod2lkdGgsIGhlaWdodCksIEdyYXBoaWNzU2l6
ZSh3aWR0aCAqIHByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciwgaGVpZ2h0ICogcHJpbnRpbmdN
aW5pbXVtU2hyaW5rRmFjdG9yKSk7CiAKICAgICAvLyBUaGlzIGNoYW5nZXMgbGF5b3V0LCBzbyBj
YWxsZXJzIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBkb24ndCBwYWludCB0byBzY3JlZW4g
d2hpbGUgaW4gcHJpbnRpbmcgbW9kZS4KICAgICBtX2ZyYW1lLT5zZXRQcmludGluZyh0cnVlLCBt
aW5MYXlvdXRTaXplLCBwcmludGluZ01heGltdW1TaHJpbmtGYWN0b3IgLyBwcmludGluZ01pbmlt
dW1TaHJpbmtGYWN0b3IsIEFkanVzdFZpZXdTaXplKTsKIH0KIAotZmxvYXQgUHJpbnRDb250ZXh0
Ojpjb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3IoY29uc3QgRmxvYXRTaXplJiBhdmFpbGFibGVQ
YXBlclNpemUpCitmbG9hdCBQcmludENvbnRleHQ6OmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3Rv
cihjb25zdCBHcmFwaGljc1NpemUmIGF2YWlsYWJsZVBhcGVyU2l6ZSkKIHsKICAgICBpZiAoIW1f
ZnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIDE7CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBQcmludENvbnRleHQ6OnNwb29sUGFnZShHcmFwaGljc0NvbgogICAgIGZsb2F0IHNjYWxlID0g
d2lkdGggLyBwYWdlUmVjdC53aWR0aCgpOwogCiAgICAgY3R4LnNhdmUoKTsKLSAgICBjdHguc2Nh
bGUoRmxvYXRTaXplKHNjYWxlLCBzY2FsZSkpOworICAgIGN0eC5zY2FsZShHcmFwaGljc1NpemUo
c2NhbGUsIHNjYWxlKSk7CiAgICAgY3R4LnRyYW5zbGF0ZSgtcGFnZVJlY3QueCgpLCAtcGFnZVJl
Y3QueSgpKTsKICAgICBjdHguY2xpcChwYWdlUmVjdCk7CiAgICAgbV9mcmFtZS0+dmlldygpLT5w
YWludENvbnRlbnRzKCZjdHgsIHBhZ2VSZWN0KTsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFBy
aW50Q29udGV4dDo6ZW5kKCkKIHsKICAgICBBU1NFUlQobV9pc1ByaW50aW5nKTsKICAgICBtX2lz
UHJpbnRpbmcgPSBmYWxzZTsKLSAgICBtX2ZyYW1lLT5zZXRQcmludGluZyhmYWxzZSwgRmxvYXRT
aXplKCksIDAsIEFkanVzdFZpZXdTaXplKTsKKyAgICBtX2ZyYW1lLT5zZXRQcmludGluZyhmYWxz
ZSwgR3JhcGhpY3NTaXplKCksIDAsIEFkanVzdFZpZXdTaXplKTsKIH0KIAogc3RhdGljIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBlbmNsb3NpbmdCb3hNb2RlbE9iamVjdChSZW5kZXJPYmplY3QqIG9i
amVjdCkKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgUmVuZGVyQm94TW9kZWxPYmplY3QqIGVu
Y2xvc2luZ0JvCiAgICAgcmV0dXJuIHRvUmVuZGVyQm94TW9kZWxPYmplY3Qob2JqZWN0KTsKIH0K
IAotaW50IFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKQoraW50IFByaW50Q29udGV4dDo6
cGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgY29uc3QgR3JhcGhpY3NTaXpl
JiBwYWdlU2l6ZUluUGl4ZWxzKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyBu
b3QgZnJlZWQgZHVyaW5nIHRoZSBsYXlvdXQuCiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnRS
ZWYoZWxlbWVudCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgaW50IFByaW50Q29udGV4dDo6cGFnZU51
bWJlckZvckVsZW1lbnQoRQogICAgIEZsb2F0UmVjdCBwYWdlUmVjdChGbG9hdFBvaW50KDAsIDAp
LCBwYWdlU2l6ZUluUGl4ZWxzKTsKICAgICBQcmludENvbnRleHQgcHJpbnRDb250ZXh0KGZyYW1l
KTsKICAgICBwcmludENvbnRleHQuYmVnaW4ocGFnZVJlY3Qud2lkdGgoKSwgcGFnZVJlY3QuaGVp
Z2h0KCkpOwotICAgIEZsb2F0U2l6ZSBzY2FsZWRQYWdlU2l6ZSA9IHBhZ2VTaXplSW5QaXhlbHM7
CisgICAgR3JhcGhpY3NTaXplIHNjYWxlZFBhZ2VTaXplID0gcGFnZVNpemVJblBpeGVsczsKICAg
ICBzY2FsZWRQYWdlU2l6ZS5zY2FsZShmcmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKS53aWR0
aCgpIC8gcGFnZVJlY3Qud2lkdGgoKSk7CiAgICAgcHJpbnRDb250ZXh0LmNvbXB1dGVQYWdlUmVj
dHNXaXRoUGFnZVNpemUoc2NhbGVkUGFnZVNpemUsIGZhbHNlKTsKIApAQCAtMjk5LDcgKzI5OSw3
IEBAIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VTaXplQW5kTWFyZ2luc0kKICAgICAgICAgICAg
U3RyaW5nOjpudW1iZXIobWFyZ2luVG9wKSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1hcmdpblJp
Z2h0KSArICcgJyArIFN0cmluZzo6bnVtYmVyKG1hcmdpbkJvdHRvbSkgKyAnICcgKyBTdHJpbmc6
Om51bWJlcihtYXJnaW5MZWZ0KTsKIH0KIAotaW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdl
cyhGcmFtZSogZnJhbWUsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKK2ludCBQ
cmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoRnJhbWUqIGZyYW1lLCBjb25zdCBHcmFwaGljc1Np
emUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7CiAgICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dCgpOwogCkBAIC0zMDcsMTMgKzMwNywxMyBAQCBpbnQgUHJpbnRDb250ZXh0OjpudW1iZXJP
ZlBhZ2VzKEZyYW1lKiBmCiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFtZSk7CiAg
ICAgcHJpbnRDb250ZXh0LmJlZ2luKHBhZ2VSZWN0LndpZHRoKCksIHBhZ2VSZWN0LmhlaWdodCgp
KTsKICAgICAvLyBBY2NvdW50IGZvciBzaHJpbmstdG8tZml0LgotICAgIEZsb2F0U2l6ZSBzY2Fs
ZWRQYWdlU2l6ZSA9IHBhZ2VTaXplSW5QaXhlbHM7CisgICAgR3JhcGhpY3NTaXplIHNjYWxlZFBh
Z2VTaXplID0gcGFnZVNpemVJblBpeGVsczsKICAgICBzY2FsZWRQYWdlU2l6ZS5zY2FsZShmcmFt
ZS0+dmlldygpLT5jb250ZW50c1NpemUoKS53aWR0aCgpIC8gcGFnZVJlY3Qud2lkdGgoKSk7CiAg
ICAgcHJpbnRDb250ZXh0LmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemUoc2NhbGVkUGFnZVNp
emUsIGZhbHNlKTsKICAgICByZXR1cm4gcHJpbnRDb250ZXh0LnBhZ2VDb3VudCgpOwogfQogCi12
b2lkIFByaW50Q29udGV4dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1lKiBmcmFt
ZSwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgcGFn
ZVNpemVJblBpeGVscykKK3ZvaWQgUHJpbnRDb250ZXh0OjpzcG9vbEFsbFBhZ2VzV2l0aEJvdW5k
YXJpZXMoRnJhbWUqIGZyYW1lLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgR3JhcGhpY3NTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKQogewogICAgIGlmICghZnJhbWUtPmRv
Y3VtZW50KCkgfHwgIWZyYW1lLT52aWV3KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJl
cigpKQogICAgICAgICByZXR1cm47CkBAIC0zMzYsNyArMzM2LDcgQEAgdm9pZCBQcmludENvbnRl
eHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bgogCiAgICAgZ3JhcGhpY3NDb250ZXh0LnNhdmUoKTsK
ICAgICBncmFwaGljc0NvbnRleHQudHJhbnNsYXRlKDAsIHRvdGFsSGVpZ2h0KTsKLSAgICBncmFw
aGljc0NvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgZ3JhcGhpY3NDb250ZXh0
LnNjYWxlKEdyYXBoaWNzU2l6ZSgxLCAtMSkpOwogCiAgICAgaW50IGN1cnJlbnRIZWlnaHQgPSAw
OwogICAgIGZvciAoc2l6ZV90IHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IHBhZ2VSZWN0cy5z
aXplKCk7IHBhZ2VJbmRleCsrKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmgJ
KHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBGbG9hdFNp
emU7CitjbGFzcyBHcmFwaGljc1NpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBJ
bnRSZWN0OwogCkBAIC00MywxOCArNDMsMTggQEAgcHVibGljOgogICAgIC8vIEJyZWFrIHVwIGEg
cGFnZSBpbnRvIHJlY3RzIHdpdGhvdXQgcmVsYXlvdXQuCiAgICAgLy8gRklYTUU6IFRoaXMgbWVh
bnMgdGhhdCBDU1MgcGFnZSBicmVha3Mgd29uJ3QgYmUgb24gcGFnZSBib3VuZGFyeSBpZiB0aGUg
c2l6ZSBpcyBkaWZmZXJlbnQgdGhhbiB3aGF0IHdhcyBwYXNzZWQgdG8gYmVnaW4oKS4gVGhhdCdz
IHByb2JhYmx5IG5vdCBhbHdheXMgZGVzaXJhYmxlLgogICAgIC8vIEZJWE1FOiBIZWFkZXIgYW5k
IGZvb3RlciBoZWlnaHQgc2hvdWxkIGJlIGFwcGxpZWQgYmVmb3JlIGxheW91dCwgbm90IGFmdGVy
LgotICAgIC8vIEZJWE1FOiBUaGUgcHJpbnRSZWN0IGFyZ3VtZW50IGlzIG9ubHkgdXNlZCB0byBk
ZXRlcm1pbmUgcGFnZSBhc3BlY3QgcmF0aW8sIGl0IHdvdWxkIGJlIGJldHRlciB0byBwYXNzIGEg
RmxvYXRTaXplIHdpdGggcGFnZSBkaW1lbnNpb25zIGluc3RlYWQuCisgICAgLy8gRklYTUU6IFRo
ZSBwcmludFJlY3QgYXJndW1lbnQgaXMgb25seSB1c2VkIHRvIGRldGVybWluZSBwYWdlIGFzcGVj
dCByYXRpbywgaXQgd291bGQgYmUgYmV0dGVyIHRvIHBhc3MgYSBHcmFwaGljc1NpemUgd2l0aCBw
YWdlIGRpbWVuc2lvbnMgaW5zdGVhZC4KICAgICB2b2lkIGNvbXB1dGVQYWdlUmVjdHMoY29uc3Qg
RmxvYXRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWdodCwgZmxvYXQgZm9vdGVySGVp
Z2h0LCBmbG9hdCB1c2VyU2NhbGVGYWN0b3IsIGZsb2F0JiBvdXRQYWdlSGVpZ2h0LCBib29sIGFs
bG93SG9yaXpvbnRhbFRpbGluZyA9IGZhbHNlKTsKIAogICAgIC8vIERlcHJlY2F0ZWQuIFBhZ2Ug
c2l6ZSBjb21wdXRhdGlvbiBpcyBhbHJlYWR5IGluIHRoaXMgY2xhc3MsIGNsaWVudHMgc2hvdWxk
bid0IGJlIGNvcHlpbmcgaXQuCi0gICAgdm9pZCBjb21wdXRlUGFnZVJlY3RzV2l0aFBhZ2VTaXpl
KGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxvd0hvcml6b250YWxU
aWxpbmcpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShjb25zdCBHcmFw
aGljc1NpemUmIHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wgYWxsb3dIb3Jpem9udGFsVGlsaW5nKTsK
IAogICAgIC8vIFRoZXNlIGFyZSBvbmx5IHZhbGlkIGFmdGVyIHBhZ2UgcmVjdHMgYXJlIGNvbXB1
dGVkLgogICAgIHNpemVfdCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VSZWN0cy5z
aXplKCk7IH0KICAgICBjb25zdCBJbnRSZWN0JiBwYWdlUmVjdChzaXplX3QgcGFnZU51bWJlcikg
Y29uc3QgeyByZXR1cm4gbV9wYWdlUmVjdHNbcGFnZU51bWJlcl07IH0KICAgICBjb25zdCBWZWN0
b3I8SW50UmVjdD4mIHBhZ2VSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVJlY3RzOyB9CiAK
LSAgICBmbG9hdCBjb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3IoY29uc3QgRmxvYXRTaXplJiBh
dmFpbGFibGVQYXBlclNpemUpOworICAgIGZsb2F0IGNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3Rv
cihjb25zdCBHcmFwaGljc1NpemUmIGF2YWlsYWJsZVBhcGVyU2l6ZSk7CiAKICAgICAvLyBFbnRl
ciBwcmludCBtb2RlLCB1cGRhdGluZyBsYXlvdXQgZm9yIG5ldyBwYWdlIHNpemUuCiAgICAgLy8g
VGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGFwcGx5IG5ldyBw
cmludCBvcHRpb25zIHdpdGhvdXQgZ29pbmcgYmFjayB0byBzY3JlZW4gbW9kZS4KQEAgLTY5LDIy
ICs2OSwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmQoKTsKIAogICAgIC8vIFVzZWQgYnkgbGF5
b3V0IHRlc3RzLgotICAgIHN0YXRpYyBpbnQgcGFnZU51bWJlckZvckVsZW1lbnQoRWxlbWVudCos
IGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscyk7IC8vIFJldHVybnMgLTEgaWYgcGFn
ZSBpc24ndCBmb3VuZC4KKyAgICBzdGF0aWMgaW50IHBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1l
bnQqLCBjb25zdCBHcmFwaGljc1NpemUmIHBhZ2VTaXplSW5QaXhlbHMpOyAvLyBSZXR1cm5zIC0x
IGlmIHBhZ2UgaXNuJ3QgZm91bmQuCiAgICAgc3RhdGljIFN0cmluZyBwYWdlUHJvcGVydHkoRnJh
bWUqIGZyYW1lLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYWdlTnVtYmVyKTsKICAg
ICBzdGF0aWMgYm9vbCBpc1BhZ2VCb3hWaXNpYmxlKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1i
ZXIpOwogICAgIHN0YXRpYyBTdHJpbmcgcGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoRnJhbWUq
IGZyYW1lLCBpbnQgcGFnZU51bWJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFyZ2lu
VG9wLCBpbnQgbWFyZ2luUmlnaHQsIGludCBtYXJnaW5Cb3R0b20sIGludCBtYXJnaW5MZWZ0KTsK
LSAgICBzdGF0aWMgaW50IG51bWJlck9mUGFnZXMoRnJhbWUqLCBjb25zdCBGbG9hdFNpemUmIHBh
Z2VTaXplSW5QaXhlbHMpOworICAgIHN0YXRpYyBpbnQgbnVtYmVyT2ZQYWdlcyhGcmFtZSosIGNv
bnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNpemVJblBpeGVscyk7CiAgICAgLy8gRHJhdyBhbGwgcGFn
ZXMgaW50byBhIGdyYXBoaWNzIGNvbnRleHQgd2l0aCBsaW5lcyB3aGljaCBtZWFuIHBhZ2UgYm91
bmRhcmllcy4KICAgICAvLyBUaGUgaGVpZ2h0IG9mIHRoZSBncmFwaGljcyBjb250ZXh0IHNob3Vs
ZCBiZQogICAgIC8vIChwYWdlU2l6ZUluUGl4ZWxzLmhlaWdodCgpICsgMSkgKiBudW1iZXItb2Yt
cGFnZXMgLSAxCi0gICAgc3RhdGljIHZvaWQgc3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZy
YW1lKiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxz
KTsKKyAgICBzdGF0aWMgdm9pZCBzcG9vbEFsbFBhZ2VzV2l0aEJvdW5kYXJpZXMoRnJhbWUqLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBHcmFwaGljc1NpemUmIHBhZ2VTaXplSW5QaXhlbHMpOwog
CiBwcm90ZWN0ZWQ6CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgVmVjdG9yPEludFJlY3Q+IG1f
cGFnZVJlY3RzOwogCiBwcml2YXRlOgotICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdl
U2l6ZUludGVybmFsKGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxv
d0hvcml6b250YWxUaWxpbmcpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6
ZUludGVybmFsKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcGFnZVNpemVJblBpeGVscywgYm9vbCBhbGxv
d0hvcml6b250YWxUaWxpbmcpOwogCiAgICAgLy8gVXNlZCB0byBwcmV2ZW50IG1pc3VzZXMgb2Yg
YmVnaW4oKSBhbmQgZW5kKCkgKGUuZy4sIGNhbGwgZW5kIHdpdGhvdXQgYmVnaW4pLgogICAgIGJv
b2wgbV9pc1ByaW50aW5nOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3Bw
CShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJ
bWFnZVRvTWF4U2l6ZShEcmFnSQogICAgIH0KICAgICAKICAgICBpZiAoc3JjU2l6ZSA9PSBvcmln
aW5hbFNpemUpCi0gICAgICAgIHJldHVybiByZXNpemVSYXRpbyA+IDAuMGYgPyBzY2FsZURyYWdJ
bWFnZShpbWFnZSwgRmxvYXRTaXplKHJlc2l6ZVJhdGlvLCByZXNpemVSYXRpbykpIDogaW1hZ2U7
CisgICAgICAgIHJldHVybiByZXNpemVSYXRpbyA+IDAuMGYgPyBzY2FsZURyYWdJbWFnZShpbWFn
ZSwgR3JhcGhpY3NTaXplKHJlc2l6ZVJhdGlvLCByZXNpemVSYXRpbykpIDogaW1hZ2U7CiAgICAg
CiAgICAgLy8gVGhlIGltYWdlIHdhcyBzY2FsZWQgaW4gdGhlIHdlYnBhZ2Ugc28gYXQgbWluaW11
bSB3ZSBtdXN0IGFjY291bnQgZm9yIHRoYXQgc2NhbGluZwogICAgIGZsb2F0IHNjYWxleCA9IHNy
Y1NpemUud2lkdGgoKSAvIChmbG9hdClvcmlnaW5hbFNpemUud2lkdGgoKTsKQEAgLTYyLDcgKzYy
LDcgQEAgRHJhZ0ltYWdlUmVmIGZpdERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSQogICAgICAgICBz
Y2FsZXkgKj0gcmVzaXplUmF0aW87CiAgICAgfQogICAgIAotICAgIHJldHVybiBzY2FsZURyYWdJ
bWFnZShpbWFnZSwgRmxvYXRTaXplKHNjYWxleCwgc2NhbGV5KSk7CisgICAgcmV0dXJuIHNjYWxl
RHJhZ0ltYWdlKGltYWdlLCBHcmFwaGljc1NpemUoc2NhbGV4LCBzY2FsZXkpKTsKIH0KICAgICAK
IERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgJKHJldmlzaW9uIDkxMjAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDggQEAKICNpZm5kZWYgRHJhZ0ltYWdlX2gKICNkZWZpbmUgRHJhZ0ltYWdlX2gKIAor
I2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy90aGV5IHNo
b3VsZCByZWxlYXNlIHRoZSBpbnB1dCBpbWFnZS4gIEFzIGEgY29yb2xsYXJ5IHRoZXNlIG1ldGhv
ZHMgZG9uJ3QgZ3VhcmFudGVlCiAgICAgLy90aGUgaW5wdXQgaW1hZ2UgcmVmIHdpbGwgc3RpbGwg
YmUgdmFsaWQgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gY2FsbGVkCiAgICAgRHJhZ0ltYWdlUmVmIGZp
dERyYWdJbWFnZVRvTWF4U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNy
Y1NpemUsIGNvbnN0IEludFNpemUmIHNpemUpOwotICAgIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJ
bWFnZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6ZSBzY2FsZSk7CisgICAgRHJhZ0ltYWdlUmVmIHNj
YWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiwgR3JhcGhpY3NTaXplIHNjYWxlKTsKICAgICBEcmFn
SW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwg
ZmxvYXQgZGVsdGEpOwogICAgIAogICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9t
SW1hZ2UoSW1hZ2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hl
ZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
V2hlZWxFdmVudC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtV2hlZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIGNs
YXNzIEJNZXNzYWdlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRmxvYXRQb2lu
dDsKLSAgICBjbGFzcyBGbG9hdFNpemU7CisgICAgY2xhc3MgR3JhcGhpY3NTaXplOwogCiAgICAg
Ly8gV2hlZWwgZXZlbnRzIGNvbWUgaW4gdHdvIGZsYXZvcnM6CiAgICAgLy8gVGhlIFNjcm9sbEJ5
UGl4ZWxXaGVlbEV2ZW50IGlzIGEgZmluZS1ncmFpbmVkIGV2ZW50IHRoYXQgc3BlY2lmaWVzIHRo
ZSBwcmVjaXNlIG51bWJlciBvZiBwaXhlbHMgdG8gc2Nyb2xsLiAgSXQgaXMgc2VudCBkaXJlY3Rs
eSBieSBNYWNCb29rIHRvdWNocGFkcyBvbiBPUyBYLApAQCAtMTg5LDcgKzE4OSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICAgICAgUGxhdGZvcm1XaGVl
bEV2ZW50KEhXTkQsIFdQQVJBTSwgTFBBUkFNLCBib29sIGlzTW91c2VIV2hlZWwpOwotICAgICAg
ICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwgY29uc3QgRmxvYXRTaXplJiBkZWx0YSwgY29uc3Qg
RmxvYXRQb2ludCYgbG9jYXRpb24pOworICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCwg
Y29uc3QgR3JhcGhpY3NTaXplJiBkZWx0YSwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24pOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShXWCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuZHJvaWQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmRyb2lkL1RlbXBvcmFyeUxpbmtTdHVicy5jcHAJKHJldmlzaW9uIDkx
MjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5kcm9pZC9UZW1wb3JhcnlMaW5rU3R1
YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgY29uc3QgQ3Vyc29yJiBu
b3RBbGxvd2VkQ3Vyc29yKCkKICAgICByZXR1cm4gZHVtbXlDdXJzb3I7CiB9CiAKLXZvaWQqIHNj
YWxlRHJhZ0ltYWdlKHZvaWQqLCBGbG9hdFNpemUpCit2b2lkKiBzY2FsZURyYWdJbWFnZSh2b2lk
KiwgR3JhcGhpY3NTaXplKQogewogICAgIHJldHVybiAwOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1NYWMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNocm9taXVtTWFj
LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9EcmFnSW1hZ2VDaHJvbWl1bU1hYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcg
QEAgdm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlKQogICAgIENHSW1hZ2VS
ZWxlYXNlKGltYWdlKTsKIH0KIAotRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFn
ZVJlZiBpbWFnZSwgRmxvYXRTaXplIHNjYWxlKQorRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdl
KERyYWdJbWFnZVJlZiBpbWFnZSwgR3JhcGhpY3NTaXplIHNjYWxlKQogewogICAgIGlmICghaW1h
Z2UpCiAgICAgICAgIHJldHVybiAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vRHJhZ0ltYWdlQ2hyb21pdW1Ta2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9EcmFnSW1hZ2VDaHJvbWl1bVNraWEuY3BwCShyZXZpc2lv
biA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0RyYWdJbWFnZUNo
cm9taXVtU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBkZWxl
dGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlKQogICAgIGRlbGV0ZSBpbWFnZTsKIH0KIAot
RHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgRmxvYXRTaXpl
IHNjYWxlKQorRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwg
R3JhcGhpY3NTaXplIHNjYWxlKQogewogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiAw
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JD
aHJvbWl1bU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgU2Nyb2xsQW5pbWF0b3JD
aHJvbWl1bU1hY19oCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiRmxvYXRT
aXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgog
I2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyT3ZlcmxheVV0
aWxpdGllc0Nocm9taXVtTWFjLmgiCkBAIC0xNDgsMTUgKzE0OCwxNSBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9kaWRDdW11bGF0aXZlSG9yaXpvbnRhbFNjcm9sbEV2ZXJTd2l0Y2hUb09wcG9zaXRl
RGlyZWN0aW9uT2ZQaW47CiAKICAgICBDRlRpbWVJbnRlcnZhbCBtX2xhc3RNb21lbnR1bVNjcm9s
bFRpbWVzdGFtcDsKLSAgICBGbG9hdFNpemUgbV9vdmVyZmxvd1Njcm9sbERlbHRhOwotICAgIEZs
b2F0U2l6ZSBtX3N0cmV0Y2hTY3JvbGxGb3JjZTsKLSAgICBGbG9hdFNpemUgbV9tb21lbnR1bVZl
bG9jaXR5OworICAgIEdyYXBoaWNzU2l6ZSBtX292ZXJmbG93U2Nyb2xsRGVsdGE7CisgICAgR3Jh
cGhpY3NTaXplIG1fc3RyZXRjaFNjcm9sbEZvcmNlOworICAgIEdyYXBoaWNzU2l6ZSBtX21vbWVu
dHVtVmVsb2NpdHk7CiAKICAgICAvLyBSdWJiZXIgYmFuZCBzdGF0ZS4KICAgICBDRlRpbWVJbnRl
cnZhbCBtX3N0YXJ0VGltZTsKLSAgICBGbG9hdFNpemUgbV9zdGFydFN0cmV0Y2g7CisgICAgR3Jh
cGhpY3NTaXplIG1fc3RhcnRTdHJldGNoOwogICAgIEZsb2F0UG9pbnQgbV9vcmlnT3JpZ2luOwot
ICAgIEZsb2F0U2l6ZSBtX29yaWdWZWxvY2l0eTsKKyAgICBHcmFwaGljc1NpemUgbV9vcmlnVmVs
b2NpdHk7CiAgICAgVGltZXI8U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYz4gbV9zbmFwUnViYmVy
QmFuZFRpbWVyOwogI2VuZGlmCiAgICAgYm9vbCBtX2RyYXdpbmdJbnRvTGF5ZXI7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bEFuaW1hdG9yQ2hyb21pdW1NYWMubW0JKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtODU2LDcgKzg1Niw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1h
Yzo6aGFuZGxlR2UKIAogYm9vbCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpwaW5uZWRJbkRp
cmVjdGlvbihmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSkKIHsKLSAgICBGbG9hdFNpemUgbGlt
aXREZWx0YTsKKyAgICBHcmFwaGljc1NpemUgbGltaXREZWx0YTsKICAgICBpZiAoZmFic2YoZGVs
dGFZKSA+PSBmYWJzZihkZWx0YVgpKSB7CiAgICAgICAgIGlmIChkZWx0YVkgPCAwKSB7CiAgICAg
ICAgICAgICAvLyBXZSBhcmUgdHJ5aW5nIHRvIHNjcm9sbCB1cC4gIE1ha2Ugc3VyZSB3ZSBhcmUg
bm90IHBpbm5lZCB0byB0aGUgdG9wCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBTY3JvbGxBbmlt
YXRvckNocm9taXVtTWFjOjpzbW9vdGhTYwogICAgIGZsb2F0IGRlbHRhWSA9IG1fb3ZlcmZsb3dT
Y3JvbGxEZWx0YS5oZWlnaHQoKTsKIAogICAgIC8vIFJlc2V0IG92ZXJmbG93IHZhbHVlcyBiZWNh
dXNlIHdlIG1heSBkZWNpZGUgdG8gcmVtb3ZlIGRlbHRhIGF0IHZhcmlvdXMgcG9pbnRzIGFuZCBw
dXQgaXQgaW50byBvdmVyZmxvdy4KLSAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEgPSBGbG9hdFNp
emUoKTsKKyAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEgPSBHcmFwaGljc1NpemUoKTsKIAogICAg
IGZsb2F0IGV2ZW50Q29hbGVzY2VkRGVsdGFYID0gLXdoZWVsRXZlbnQuZGVsdGFYKCk7CiAgICAg
ZmxvYXQgZXZlbnRDb2FsZXNjZWREZWx0YVkgPSAtd2hlZWxFdmVudC5kZWx0YVkoKTsKQEAgLTk2
MSw3ICs5NjEsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNtb290aFNjCiAg
ICAgICAgICAgICBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCA9IHdoZWVsRXZlbnQudGlt
ZXN0YW1wKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2xhc3RNb21lbnR1bVNj
cm9sbFRpbWVzdGFtcCA9IHdoZWVsRXZlbnQudGltZXN0YW1wKCk7Ci0gICAgICAgICAgICBtX21v
bWVudHVtVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsKKyAgICAgICAgICAgIG1fbW9tZW50dW1WZWxv
Y2l0eSA9IEdyYXBoaWNzU2l6ZSgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzVmVydGlj
YWxseVN0cmV0Y2hlZCkgewpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBTY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjOjpzbW9vdGhTYwogICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xsRm9yY2Uu
c2V0V2lkdGgobV9zdHJldGNoU2Nyb2xsRm9yY2Uud2lkdGgoKSArIGRlbHRhWCk7CiAgICAgICAg
ICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRIZWlnaHQobV9zdHJldGNoU2Nyb2xsRm9yY2Uu
aGVpZ2h0KCkgKyBkZWx0YVkpOwogCi0gICAgICAgICAgICBGbG9hdFNpemUgZGFtcGVkRGVsdGEo
Y2VpbGYoZWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKG1fc3RyZXRjaFNjcm9sbEZvcmNlLndp
ZHRoKCkpKSwgY2VpbGYoZWxhc3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKG1fc3RyZXRjaFNjcm9s
bEZvcmNlLmhlaWdodCgpKSkpOworICAgICAgICAgICAgR3JhcGhpY3NTaXplIGRhbXBlZERlbHRh
KGNlaWxmKGVsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YShtX3N0cmV0Y2hTY3JvbGxGb3JjZS53
aWR0aCgpKSksIGNlaWxmKGVsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0YShtX3N0cmV0Y2hTY3Jv
bGxGb3JjZS5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgb3JpZ09yaWdpbiA9
IChtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpICsgbV9z
Y3JvbGxhYmxlQXJlYS0+c2Nyb2xsT3JpZ2luKCkpIC0gc3RyZXRjaEFtb3VudDsKICAgICAgICAg
ICAgIEZsb2F0UG9pbnQgbmV3T3JpZ2luID0gb3JpZ09yaWdpbiArIGRhbXBlZERlbHRhOwogCkBA
IC0xMDc5LDcgKzEwNzksNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmJlZ2lu
U2NyCiAgICAgbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKICAgICBtX2lnbm9y
ZU1vbWVudHVtU2Nyb2xscyA9IGZhbHNlOwogICAgIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0
YW1wID0gMDsKLSAgICBtX21vbWVudHVtVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsKKyAgICBtX21v
bWVudHVtVmVsb2NpdHkgPSBHcmFwaGljc1NpemUoKTsKICAgICBtX3Njcm9sbGVySW5pdGlhbGx5
UGlubmVkT25MZWZ0ID0gbV9zY3JvbGxhYmxlQXJlYS0+aXNIb3Jpem9udGFsU2Nyb2xsZXJQaW5u
ZWRUb01pbmltdW1Qb3NpdGlvbigpOwogICAgIG1fc2Nyb2xsZXJJbml0aWFsbHlQaW5uZWRPblJp
Z2h0ID0gbV9zY3JvbGxhYmxlQXJlYS0+aXNIb3Jpem9udGFsU2Nyb2xsZXJQaW5uZWRUb01heGlt
dW1Qb3NpdGlvbigpOwogICAgIG1fY3VtdWxhdGl2ZUhvcml6b250YWxTY3JvbGwgPSAwOwpAQCAt
MTA4OSw3ICsxMDg5LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpiZWdpblNj
cgogICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldFdpZHRoKHJlYm91bmREZWx0YUZvckVsYXN0
aWNEZWx0YShzdHJldGNoQW1vdW50LndpZHRoKCkpKTsKICAgICBtX3N0cmV0Y2hTY3JvbGxGb3Jj
ZS5zZXRIZWlnaHQocmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKHN0cmV0Y2hBbW91bnQuaGVp
Z2h0KCkpKTsKIAotICAgIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YSA9IEZsb2F0U2l6ZSgpOworICAg
IG1fb3ZlcmZsb3dTY3JvbGxEZWx0YSA9IEdyYXBoaWNzU2l6ZSgpOwogICAgIAogICAgIGlmICht
X3NuYXBSdWJiZXJCYW5kVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9zbmFwUnViYmVyQmFu
ZFRpbWVyLnN0b3AoKTsKQEAgLTExMDYsNyArMTEwNiw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JD
aHJvbWl1bU1hYzo6c25hcFJ1YmIKIHsKICAgICBDRlRpbWVJbnRlcnZhbCB0aW1lRGVsdGEgPSBb
W05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0gLSBtX2xhc3RNb21lbnR1
bVNjcm9sbFRpbWVzdGFtcDsKICAgICBpZiAobV9sYXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXAg
JiYgdGltZURlbHRhID49IHNjcm9sbFZlbG9jaXR5WmVyb2luZ1RpbWVvdXQpCi0gICAgICAgIG1f
bW9tZW50dW1WZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworICAgICAgICBtX21vbWVudHVtVmVsb2Np
dHkgPSBHcmFwaGljc1NpemUoKTsKIAogICAgIG1faW5TY3JvbGxHZXN0dXJlID0gZmFsc2U7CiAK
QEAgLTExMTQsOSArMTExNCw5IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6c25h
cFJ1YmIKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zdGFydFRpbWUgPSBbTlNEYXRlIHRpbWVJ
bnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV07Ci0gICAgbV9zdGFydFN0cmV0Y2ggPSBGbG9hdFNp
emUoKTsKKyAgICBtX3N0YXJ0U3RyZXRjaCA9IEdyYXBoaWNzU2l6ZSgpOwogICAgIG1fb3JpZ09y
aWdpbiA9IEZsb2F0UG9pbnQoKTsKLSAgICBtX29yaWdWZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOwor
ICAgIG1fb3JpZ1ZlbG9jaXR5ID0gR3JhcGhpY3NTaXplKCk7CiAKICAgICBtX3NuYXBSdWJiZXJC
YW5kVGltZXIuc3RhcnRSZXBlYXRpbmcoMS4wLzYwLjApOwogfQpAQCAtMTE0MCwxNSArMTE0MCwx
NSBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNuYXBSdWJiCiAgICAgaWYgKCFt
X21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyB8fCBtX2lnbm9yZU1vbWVudHVtU2Nyb2xscykgewog
ICAgICAgICBDRlRpbWVJbnRlcnZhbCB0aW1lRGVsdGEgPSBbTlNEYXRlIHRpbWVJbnRlcnZhbFNp
bmNlUmVmZXJlbmNlRGF0ZV0gLSBtX3N0YXJ0VGltZTsKIAotICAgICAgICBpZiAobV9zdGFydFN0
cmV0Y2ggPT0gRmxvYXRTaXplKCkpIHsKKyAgICAgICAgaWYgKG1fc3RhcnRTdHJldGNoID09IEdy
YXBoaWNzU2l6ZSgpKSB7CiAgICAgICAgICAgICBtX3N0YXJ0U3RyZXRjaCA9IG1fc2Nyb2xsYWJs
ZUFyZWEtPm92ZXJoYW5nQW1vdW50KCk7Ci0gICAgICAgICAgICBpZiAobV9zdGFydFN0cmV0Y2gg
PT0gRmxvYXRTaXplKCkpIHsgICAgCisgICAgICAgICAgICBpZiAobV9zdGFydFN0cmV0Y2ggPT0g
R3JhcGhpY3NTaXplKCkpIHsgICAgCiAgICAgICAgICAgICAgICAgbV9zbmFwUnViYmVyQmFuZFRp
bWVyLnN0b3AoKTsKLSAgICAgICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZSA9IEZsb2F0
U2l6ZSgpOworICAgICAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlID0gR3JhcGhpY3NT
aXplKCk7CiAgICAgICAgICAgICAgICAgbV9zdGFydFRpbWUgPSAwOwotICAgICAgICAgICAgICAg
IG1fc3RhcnRTdHJldGNoID0gRmxvYXRTaXplKCk7CisgICAgICAgICAgICAgICAgbV9zdGFydFN0
cmV0Y2ggPSBHcmFwaGljc1NpemUoKTsKICAgICAgICAgICAgICAgICBtX29yaWdPcmlnaW4gPSBG
bG9hdFBvaW50KCk7Ci0gICAgICAgICAgICAgICAgbV9vcmlnVmVsb2NpdHkgPSBGbG9hdFNpemUo
KTsKKyAgICAgICAgICAgICAgICBtX29yaWdWZWxvY2l0eSA9IEdyYXBoaWNzU2l6ZSgpOwogCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTE4Myw3ICsxMTgzLDcg
QEAgdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpzbmFwUnViYgogICAgICAgICAgICAg
aW1tZWRpYXRlU2Nyb2xsVG9Qb2ludChuZXdPcmlnaW4pOwogICAgICAgICAgICAgbV9zY3JvbGxh
YmxlQXJlYS0+c2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7CiAKLSAg
ICAgICAgICAgIEZsb2F0U2l6ZSBuZXdTdHJldGNoID0gbV9zY3JvbGxhYmxlQXJlYS0+b3Zlcmhh
bmdBbW91bnQoKTsKKyAgICAgICAgICAgIEdyYXBoaWNzU2l6ZSBuZXdTdHJldGNoID0gbV9zY3Jv
bGxhYmxlQXJlYS0+b3ZlcmhhbmdBbW91bnQoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
bV9zdHJldGNoU2Nyb2xsRm9yY2Uuc2V0V2lkdGgocmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRh
KG5ld1N0cmV0Y2gud2lkdGgoKSkpOwogICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xsRm9yY2Uu
c2V0SGVpZ2h0KHJlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YShuZXdTdHJldGNoLmhlaWdodCgp
KSk7CkBAIC0xMTkzLDE2ICsxMTkzLDE2IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1h
Yzo6c25hcFJ1YmIKICAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPmRpZENvbXBsZXRlUnVi
YmVyQmFuZChyb3VuZGVkSW50U2l6ZShtX3N0YXJ0U3RyZXRjaCkpOwogCiAgICAgICAgICAgICBt
X3NuYXBSdWJiZXJCYW5kVGltZXIuc3RvcCgpOwotICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xs
Rm9yY2UgPSBGbG9hdFNpemUoKTsKKyAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlID0g
R3JhcGhpY3NTaXplKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fc3RhcnRUaW1lID0g
MDsKLSAgICAgICAgICAgIG1fc3RhcnRTdHJldGNoID0gRmxvYXRTaXplKCk7CisgICAgICAgICAg
ICBtX3N0YXJ0U3RyZXRjaCA9IEdyYXBoaWNzU2l6ZSgpOwogICAgICAgICAgICAgbV9vcmlnT3Jp
Z2luID0gRmxvYXRQb2ludCgpOwotICAgICAgICAgICAgbV9vcmlnVmVsb2NpdHkgPSBGbG9hdFNp
emUoKTsKKyAgICAgICAgICAgIG1fb3JpZ1ZlbG9jaXR5ID0gR3JhcGhpY3NTaXplKCk7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBtX3N0YXJ0VGltZSA9IFtOU0RhdGUgdGltZUlu
dGVydmFsU2luY2VSZWZlcmVuY2VEYXRlXTsKLSAgICAgICAgbV9zdGFydFN0cmV0Y2ggPSBGbG9h
dFNpemUoKTsKKyAgICAgICAgbV9zdGFydFN0cmV0Y2ggPSBHcmFwaGljc1NpemUoKTsKICAgICB9
CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RoZW1l
Q2hyb21pdW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vVGhlbWVDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UaGVtZUNocm9taXVtTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTUsNyArMzk1LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRDaGVja2JveChDb250cm9sU3Rh
dGVzIAogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5mbGF0ZWRSZWN0LndpZHRoKCkg
LyB6b29tRmFjdG9yKTsKICAgICAgICAgaW5mbGF0ZWRSZWN0LnNldEhlaWdodChpbmZsYXRlZFJl
Y3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKGlu
ZmxhdGVkUmVjdC54KCksIGluZmxhdGVkUmVjdC55KCkpOwotICAgICAgICBjb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoem9vbUZhY3Rvciwgem9vbUZhY3RvcikpOworICAgICAgICBjb250ZXh0LT5z
Y2FsZShHcmFwaGljc1NpemUoem9vbUZhY3Rvciwgem9vbUZhY3RvcikpOwogICAgICAgICBjb250
ZXh0LT50cmFuc2xhdGUoLWluZmxhdGVkUmVjdC54KCksIC1pbmZsYXRlZFJlY3QueSgpKTsKICAg
ICB9CiAKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRyb2xT
dGF0ZXMgc3RhCiAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJlY3Qud2lk
dGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxh
dGVkUmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICBjb250ZXh0LT50cmFuc2xh
dGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRleHQt
PnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CisgICAgICAgIGNvbnRl
eHQtPnNjYWxlKEdyYXBoaWNzU2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CiAgICAgICAg
IGNvbnRleHQtPnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkp
OwogICAgIH0KIApAQCAtNTg5LDcgKzU4OSw3IEBAIHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENv
bnRyb2xQYXJ0IHBhcnQKICAgICAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRl
ZFJlY3Qud2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICAgICAgaW5mbGF0ZWRSZWN0LnNl
dEhlaWdodChpbmZsYXRlZFJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgICAg
IGNvbnRleHQtPnRyYW5zbGF0ZShpbmZsYXRlZFJlY3QueCgpLCBpbmZsYXRlZFJlY3QueSgpKTsK
LSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFj
dG9yKSk7CisgICAgICAgICAgICBjb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoem9vbUZhY3Rv
ciwgem9vbUZhY3RvcikpOwogICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1pbmZsYXRl
ZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC02NDYs
NyArNjQ2LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRTdGVwcGVyKENvbnRyb2xTdGF0ZXMgcwogICAg
ICAgICByZWN0LnNldFdpZHRoKHJlY3Qud2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICBy
ZWN0LnNldEhlaWdodChyZWN0LmhlaWdodCgpIC8gem9vbUZhY3Rvcik7CiAgICAgICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZShyZWN0LngoKSwgcmVjdC55KCkpOwotICAgICAgICBjb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoem9vbUZhY3Rvciwgem9vbUZhY3RvcikpOworICAgICAgICBjb250ZXh0LT5z
Y2FsZShHcmFwaGljc1NpemUoem9vbUZhY3Rvciwgem9vbUZhY3RvcikpOwogICAgICAgICBjb250
ZXh0LT50cmFuc2xhdGUoLXJlY3QueCgpLCAtcmVjdC55KCkpOwogICAgIH0KICAgICBDR1JlY3Qg
Ym91bmRzKHJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdJbWFn
ZUVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0RyYWdJ
bWFnZUVmbC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL0RyYWdJbWFnZUVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgdm9p
ZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLURyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIEZsb2F0
U2l6ZSkKK0RyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIEdy
YXBoaWNzU2l6ZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBpbWFnZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRTaGFkb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRleHRT
aGFkb3cuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbnRleHRTaGFkb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBA
IENvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coKQogewogfQogCi1Db250ZXh0U2hhZG93OjpD
b250ZXh0U2hhZG93KGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgcmFkaXVzLCBjb25zdCBGbG9h
dFNpemUmIG9mZnNldCkKK0NvbnRleHRTaGFkb3c6OkNvbnRleHRTaGFkb3coY29uc3QgQ29sb3Im
IGNvbG9yLCBmbG9hdCByYWRpdXMsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgb2Zmc2V0KQogICAgIDog
bV9jb2xvcihjb2xvcikKICAgICAsIG1fYmx1ckRpc3RhbmNlKHJvdW5kKHJhZGl1cykpCiAgICAg
LCBtX29mZnNldChvZmZzZXQpCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgQ29udGV4dFNoYWRvdzo6
Y2xlYXIoKQogICAgIG1fdHlwZSA9IE5vU2hhZG93OwogICAgIG1fY29sb3IgPSBDb2xvcigpOwog
ICAgIG1fYmx1ckRpc3RhbmNlID0gMDsKLSAgICBtX29mZnNldCA9IEZsb2F0U2l6ZSgpOworICAg
IG1fb2Zmc2V0ID0gR3JhcGhpY3NTaXplKCk7CiB9CiAKIGJvb2wgQ29udGV4dFNoYWRvdzo6bXVz
dFVzZUNvbnRleHRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQpAQCAtMTkyLDEyICsx
OTIsMTIgQEAgdm9pZCBDb250ZXh0U2hhZG93OjphZGp1c3RCbHVyRGlzdGFuY2UoRwogICAgIGNv
bnN0IEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFVuaXRRdWFkID0gdHJhbnNmb3JtLm1hcFF1YWQodW5p
dFF1YWQpOwogCiAgICAgLy8gQ2FsY3VsYXRlIFggYXhpcyBzY2FsZSBmYWN0b3IuCi0gICAgY29u
c3QgRmxvYXRTaXplIHhVbml0Q2hhbmdlID0gdHJhbnNmb3JtZWRVbml0UXVhZC5wMigpIC0gdHJh
bnNmb3JtZWRVbml0UXVhZC5wMSgpOworICAgIGNvbnN0IEdyYXBoaWNzU2l6ZSB4VW5pdENoYW5n
ZSA9IHRyYW5zZm9ybWVkVW5pdFF1YWQucDIoKSAtIHRyYW5zZm9ybWVkVW5pdFF1YWQucDEoKTsK
ICAgICBjb25zdCBmbG9hdCB4QXhpc1NjYWxlID0gc3FydGYoeFVuaXRDaGFuZ2Uud2lkdGgoKSAq
IHhVbml0Q2hhbmdlLndpZHRoKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KyB4VW5pdENoYW5nZS5oZWlnaHQoKSAqIHhVbml0Q2hhbmdlLmhlaWdodCgpKTsKIAogICAgIC8v
IENhbGN1bGF0ZSBZIGF4aXMgc2NhbGUgZmFjdG9yLgotICAgIGNvbnN0IEZsb2F0U2l6ZSB5VW5p
dENoYW5nZSA9IHRyYW5zZm9ybWVkVW5pdFF1YWQucDMoKSAtIHRyYW5zZm9ybWVkVW5pdFF1YWQu
cDEoKTsKKyAgICBjb25zdCBHcmFwaGljc1NpemUgeVVuaXRDaGFuZ2UgPSB0cmFuc2Zvcm1lZFVu
aXRRdWFkLnAzKCkgLSB0cmFuc2Zvcm1lZFVuaXRRdWFkLnAxKCk7CiAgICAgY29uc3QgZmxvYXQg
eUF4aXNTY2FsZSA9IHNxcnRmKHlVbml0Q2hhbmdlLndpZHRoKCkgKiB5VW5pdENoYW5nZS53aWR0
aCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgeVVuaXRDaGFuZ2UuaGVp
Z2h0KCkgKiB5VW5pdENoYW5nZS5oZWlnaHQoKSk7CiAKQEAgLTI1Miw3ICsyNTIsNyBAQCBJbnRS
ZWN0IENvbnRleHRTaGFkb3c6OmNhbGN1bGF0ZUxheWVyQm91CiAgICAgbV9sYXllck9yaWdpbiA9
IEZsb2F0UG9pbnQobGF5ZXJGbG9hdFJlY3QueCgpLCBsYXllckZsb2F0UmVjdC55KCkpOwogCiAg
ICAgY29uc3QgRmxvYXRQb2ludCBtX3VuY2xpcHBlZExheWVyT3JpZ2luID0gRmxvYXRQb2ludCh1
bmNsaXBwZWRMYXllclJlY3QueCgpLCB1bmNsaXBwZWRMYXllclJlY3QueSgpKTsKLSAgICBjb25z
dCBGbG9hdFNpemUgY2xpcHBlZE91dCA9IG1fdW5jbGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVy
T3JpZ2luOworICAgIGNvbnN0IEdyYXBoaWNzU2l6ZSBjbGlwcGVkT3V0ID0gbV91bmNsaXBwZWRM
YXllck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47CiAKICAgICAvLyBTZXQgdGhlIG9yaWdpbiBhcyB0
aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLCBvciwgaW4gY2FzZSB0aGVy
ZSdzIGEgY2xpcHBlZAogICAgIC8vIG91dCByZWdpb24sIHNldCB0aGUgb3JpZ2luIGFjY29yZGlu
Z2x5IHRvIHRoZSBmdWxsIGJvdW5kaW5nIHJlY3QncyB0b3AtbGVmdCBjb3JuZXIuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db250ZXh0U2hhZG93LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29udGV4dFNoYWRvdy5oCShy
ZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbnRl
eHRTaGFkb3cuaAkod29ya2luZyBjb3B5KQpAQCAtODAsMTAgKzgwLDEwIEBAIHB1YmxpYzoKIAog
ICAgIENvbG9yIG1fY29sb3I7CiAgICAgaW50IG1fYmx1ckRpc3RhbmNlOwotICAgIEZsb2F0U2l6
ZSBtX29mZnNldDsKKyAgICBHcmFwaGljc1NpemUgbV9vZmZzZXQ7CiAKICAgICBDb250ZXh0U2hh
ZG93KCk7Ci0gICAgQ29udGV4dFNoYWRvdyhjb25zdCBDb2xvciYsIGZsb2F0IHJhZGl1cywgY29u
c3QgRmxvYXRTaXplJiBvZmZzZXQpOworICAgIENvbnRleHRTaGFkb3coY29uc3QgQ29sb3ImLCBm
bG9hdCByYWRpdXMsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgb2Zmc2V0KTsKIAogICAgIGJvb2wgbXVz
dFVzZUNvbnRleHRTaGFkb3coR3JhcGhpY3NDb250ZXh0Kik7CiAgICAgdm9pZCBjbGVhcigpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAko
cmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYgRmxvYXRQ
b2ludF9oCiAjZGVmaW5lIEZsb2F0UG9pbnRfaAogCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCisj
aW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV94ICs9IGEud2lkdGgoKTsKICAgICAgICAgbV95ICs9IGEuaGVpZ2h0KCk7CiAgICAgfQotICAg
IHZvaWQgbW92ZShjb25zdCBGbG9hdFNpemUmIGEpCisgICAgdm9pZCBtb3ZlKGNvbnN0IEdyYXBo
aWNzU2l6ZSYgYSkKICAgICB7CiAgICAgICAgIG1feCArPSBhLndpZHRoKCk7CiAgICAgICAgIG1f
eSArPSBhLmhlaWdodCgpOwpAQCAtMTc0LDcgKzE3NCw3IEBAIHByaXZhdGU6CiB9OwogCiAKLWlu
bGluZSBGbG9hdFBvaW50JiBvcGVyYXRvcis9KEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0U2l6
ZSYgYikKK2lubGluZSBGbG9hdFBvaW50JiBvcGVyYXRvcis9KEZsb2F0UG9pbnQmIGEsIGNvbnN0
IEdyYXBoaWNzU2l6ZSYgYikKIHsKICAgICBhLm1vdmUoYi53aWR0aCgpLCBiLmhlaWdodCgpKTsK
ICAgICByZXR1cm4gYTsKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGlubGluZSBGbG9hdFBvaW50JiBv
cGVyYXRvcis9KEZsb2F0UG9pbnQKICAgICByZXR1cm4gYTsKIH0KIAotaW5saW5lIEZsb2F0UG9p
bnQmIG9wZXJhdG9yLT0oRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQoraW5saW5l
IEZsb2F0UG9pbnQmIG9wZXJhdG9yLT0oRmxvYXRQb2ludCYgYSwgY29uc3QgR3JhcGhpY3NTaXpl
JiBiKQogewogICAgIGEubW92ZSgtYi53aWR0aCgpLCAtYi5oZWlnaHQoKSk7CiAgICAgcmV0dXJu
IGE7CiB9CiAKLWlubGluZSBGbG9hdFBvaW50IG9wZXJhdG9yKyhjb25zdCBGbG9hdFBvaW50JiBh
LCBjb25zdCBGbG9hdFNpemUmIGIpCitpbmxpbmUgRmxvYXRQb2ludCBvcGVyYXRvcisoY29uc3Qg
RmxvYXRQb2ludCYgYSwgY29uc3QgR3JhcGhpY3NTaXplJiBiKQogewogICAgIHJldHVybiBGbG9h
dFBvaW50KGEueCgpICsgYi53aWR0aCgpLCBhLnkoKSArIGIuaGVpZ2h0KCkpOwogfQpAQCAtMjAy
LDEyICsyMDIsMTIgQEAgaW5saW5lIEZsb2F0UG9pbnQgb3BlcmF0b3IrKGNvbnN0IEZsb2F0UAog
ICAgIHJldHVybiBGbG9hdFBvaW50KGEueCgpICsgYi54KCksIGEueSgpICsgYi55KCkpOwogfQog
Ci1pbmxpbmUgRmxvYXRTaXplIG9wZXJhdG9yLShjb25zdCBGbG9hdFBvaW50JiBhLCBjb25zdCBG
bG9hdFBvaW50JiBiKQoraW5saW5lIEdyYXBoaWNzU2l6ZSBvcGVyYXRvci0oY29uc3QgRmxvYXRQ
b2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKIHsKLSAgICByZXR1cm4gRmxvYXRTaXplKGEu
eCgpIC0gYi54KCksIGEueSgpIC0gYi55KCkpOworICAgIHJldHVybiBHcmFwaGljc1NpemUoYS54
KCkgLSBiLngoKSwgYS55KCkgLSBiLnkoKSk7CiB9CiAKLWlubGluZSBGbG9hdFBvaW50IG9wZXJh
dG9yLShjb25zdCBGbG9hdFBvaW50JiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCitpbmxpbmUgRmxv
YXRQb2ludCBvcGVyYXRvci0oY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgR3JhcGhpY3NTaXpl
JiBiKQogewogICAgIHJldHVybiBGbG9hdFBvaW50KGEueCgpIC0gYi53aWR0aCgpLCBhLnkoKSAt
IGIuaGVpZ2h0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRRdWFkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFF1YWQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIGlubGluZSBmbG9hdCBtYXg0KGZsb2F0IGEsIGZsb2F0IAogICAgIHJldHVy
biBtYXgobWF4KGEsIGIpLCBtYXgoYywgZCkpOwogfQogCi1pbmxpbmUgZmxvYXQgZG90KGNvbnN0
IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQoraW5saW5lIGZsb2F0IGRvdChjb25z
dCBHcmFwaGljc1NpemUmIGEsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgYikKIHsKICAgICByZXR1cm4g
YS53aWR0aCgpICogYi53aWR0aCgpICsgYS5oZWlnaHQoKSAqIGIuaGVpZ2h0KCk7CiB9CkBAIC01
NCw5ICs1NCw5IEBAIGlubGluZSBmbG9hdCBkb3QoY29uc3QgRmxvYXRTaXplJiBhLCBjb24KIGlu
bGluZSBib29sIGlzUG9pbnRJblRyaWFuZ2xlKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0IEZs
b2F0UG9pbnQmIHQxLCBjb25zdCBGbG9hdFBvaW50JiB0MiwgY29uc3QgRmxvYXRQb2ludCYgdDMp
CiB7CiAgICAgLy8gQ29tcHV0ZSB2ZWN0b3JzICAgICAgICAKLSAgICBGbG9hdFNpemUgdjAgPSB0
MyAtIHQxOwotICAgIEZsb2F0U2l6ZSB2MSA9IHQyIC0gdDE7Ci0gICAgRmxvYXRTaXplIHYyID0g
cCAtIHQxOworICAgIEdyYXBoaWNzU2l6ZSB2MCA9IHQzIC0gdDE7CisgICAgR3JhcGhpY3NTaXpl
IHYxID0gdDIgLSB0MTsKKyAgICBHcmFwaGljc1NpemUgdjIgPSBwIC0gdDE7CiAgICAgCiAgICAg
Ly8gQ29tcHV0ZSBkb3QgcHJvZHVjdHMKICAgICBmbG9hdCBkb3QwMCA9IGRvdCh2MCwgdjApOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmgJKHJl
dmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRR
dWFkLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ0JveCgpKTsKICAgICB9CiAKLSAgICB2b2lk
IG1vdmUoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCisgICAgdm9pZCBtb3ZlKGNvbnN0IEdyYXBo
aWNzU2l6ZSYgb2Zmc2V0KQogICAgIHsKICAgICAgICAgbV9wMSArPSBvZmZzZXQ7CiAgICAgICAg
IG1fcDIgKz0gb2Zmc2V0OwpAQCAtMTI1LDEzICsxMjUsMTMgQEAgcHJpdmF0ZToKICAgICBGbG9h
dFBvaW50IG1fcDQ7CiB9OwogCi1pbmxpbmUgRmxvYXRRdWFkJiBvcGVyYXRvcis9KEZsb2F0UXVh
ZCYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQoraW5saW5lIEZsb2F0UXVhZCYgb3BlcmF0b3IrPShG
bG9hdFF1YWQmIGEsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgYikKIHsKICAgICBhLm1vdmUoYik7CiAg
ICAgcmV0dXJuIGE7CiB9CiAKLWlubGluZSBGbG9hdFF1YWQmIG9wZXJhdG9yLT0oRmxvYXRRdWFk
JiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCitpbmxpbmUgRmxvYXRRdWFkJiBvcGVyYXRvci09KEZs
b2F0UXVhZCYgYSwgY29uc3QgR3JhcGhpY3NTaXplJiBiKQogewogICAgIGEubW92ZSgtYi53aWR0
aCgpLCAtYi5oZWlnaHQoKSk7CiAgICAgcmV0dXJuIGE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNzUsMTkgKzc1LDE5IEBAIGNsYXNzIEludFBvaW50OwogY2xhc3MgRmxvYXRSZWN0IHsKIHB1
YmxpYzoKICAgICBGbG9hdFJlY3QoKSB7IH0KLSAgICBGbG9hdFJlY3QoY29uc3QgRmxvYXRQb2lu
dCYgbG9jYXRpb24sIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKKyAgICBGbG9hdFJlY3QoY29uc3Qg
RmxvYXRQb2ludCYgbG9jYXRpb24sIGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkKICAgICAgICAg
OiBtX2xvY2F0aW9uKGxvY2F0aW9uKSwgbV9zaXplKHNpemUpIHsgfQogICAgIEZsb2F0UmVjdChm
bG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KQotICAgICAgICA6IG1f
bG9jYXRpb24oRmxvYXRQb2ludCh4LCB5KSksIG1fc2l6ZShGbG9hdFNpemUod2lkdGgsIGhlaWdo
dCkpIHsgfQorICAgICAgICA6IG1fbG9jYXRpb24oRmxvYXRQb2ludCh4LCB5KSksIG1fc2l6ZShH
cmFwaGljc1NpemUod2lkdGgsIGhlaWdodCkpIHsgfQogICAgIEZsb2F0UmVjdChjb25zdCBJbnRS
ZWN0Jik7CiAKICAgICBzdGF0aWMgRmxvYXRSZWN0IG5hcnJvd1ByZWNpc2lvbihkb3VibGUgeCwg
ZG91YmxlIHksIGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7CiAKICAgICBGbG9hdFBvaW50
IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbjsgfQotICAgIEZsb2F0U2l6ZSBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgR3JhcGhpY3NTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KIAogICAgIHZvaWQgc2V0TG9jYXRpb24oY29uc3QgRmxv
YXRQb2ludCYgbG9jYXRpb24pIHsgbV9sb2NhdGlvbiA9IGxvY2F0aW9uOyB9Ci0gICAgdm9pZCBz
ZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CisgICAgdm9p
ZCBzZXRTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXplOyB9CiAK
ICAgICBmbG9hdCB4KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi54KCk7IH0KICAgICBmbG9h
dCB5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbi55KCk7IH0KQEAgLTEwNSwxMyArMTA1LDEz
IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UG9pbnQgY2VudGVyKCkgY29uc3QgeyByZXR1cm4gRmxv
YXRQb2ludCh4KCkgKyB3aWR0aCgpIC8gMiwgeSgpICsgaGVpZ2h0KCkgLyAyKTsgfQogCi0gICAg
dm9pZCBtb3ZlKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIHsgbV9sb2NhdGlvbiArPSBkZWx0YTsg
fSAKKyAgICB2b2lkIG1vdmUoY29uc3QgR3JhcGhpY3NTaXplJiBkZWx0YSkgeyBtX2xvY2F0aW9u
ICs9IGRlbHRhOyB9IAogICAgIHZvaWQgbW92ZUJ5KGNvbnN0IEZsb2F0UG9pbnQmIGRlbHRhKSB7
IG1fbG9jYXRpb24ubW92ZShkZWx0YS54KCksIGRlbHRhLnkoKSk7IH0KICAgICB2b2lkIG1vdmUo
ZmxvYXQgZHgsIGZsb2F0IGR5KSB7IG1fbG9jYXRpb24ubW92ZShkeCwgZHkpOyB9CiAKLSAgICB2
b2lkIGV4cGFuZChjb25zdCBGbG9hdFNpemUmIHNpemUpIHsgbV9zaXplICs9IHNpemU7IH0KKyAg
ICB2b2lkIGV4cGFuZChjb25zdCBHcmFwaGljc1NpemUmIHNpemUpIHsgbV9zaXplICs9IHNpemU7
IH0KICAgICB2b2lkIGV4cGFuZChmbG9hdCBkdywgZmxvYXQgZGgpIHsgbV9zaXplLmV4cGFuZChk
dywgZGgpOyB9Ci0gICAgdm9pZCBjb250cmFjdChjb25zdCBGbG9hdFNpemUmIHNpemUpIHsgbV9z
aXplIC09IHNpemU7IH0KKyAgICB2b2lkIGNvbnRyYWN0KGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6
ZSkgeyBtX3NpemUgLT0gc2l6ZTsgfQogICAgIHZvaWQgY29udHJhY3QoZmxvYXQgZHcsIGZsb2F0
IGRoKSB7IG1fc2l6ZS5leHBhbmQoLWR3LCAtZGgpOyB9CiAKICAgICB2b2lkIHNoaWZ0WEVkZ2VU
byhmbG9hdCBlZGdlKQpAQCAtMjE3LDcgKzIxNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBGbG9hdFBvaW50IG1fbG9jYXRpb247Ci0gICAgRmxvYXRTaXplIG1fc2l6ZTsKKyAgICBHcmFw
aGljc1NpemUgbV9zaXplOwogCiAgICAgdm9pZCBzZXRMb2NhdGlvbkFuZFNpemVGcm9tRWRnZXMo
ZmxvYXQgbGVmdCwgZmxvYXQgdG9wLCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tKQogICAgIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNw
cAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFNpemUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCi0K
LSNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5j
bHVkZSA8bWF0aC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZsb2F0U2l6ZTo6RmxvYXRT
aXplKGNvbnN0IEludFNpemUmIHNpemUpIDogbV93aWR0aChzaXplLndpZHRoKCkpLCBtX2hlaWdo
dChzaXplLmhlaWdodCgpKQotewotfQotCi1mbG9hdCBGbG9hdFNpemU6OmRpYWdvbmFsTGVuZ3Ro
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3FydGYoZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkpOwot
fQotCi1GbG9hdFNpemUgRmxvYXRTaXplOjpuYXJyb3dQcmVjaXNpb24oZG91YmxlIHdpZHRoLCBk
b3VibGUgaGVpZ2h0KQotewotICAgIHJldHVybiBGbG9hdFNpemUobmFycm93UHJlY2lzaW9uVG9G
bG9hdCh3aWR0aCksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoaGVpZ2h0KSk7Ci19Ci0KLX0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCShyZXZp
c2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDA1IE5va2lhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICAg
ICAgICAgICAgICAgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgRmxvYXRTaXplX2gKLSNkZWZpbmUgRmxvYXRTaXplX2gKLQotI2luY2x1ZGUgIkludFBv
aW50LmgiCi0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLQotI2lmIFVTRShDRykgfHwgKFBM
QVRGT1JNKFdYKSAmJiBPUyhEQVJXSU4pKSB8fCBVU0UoU0tJQV9PTl9NQUNfQ0hST01JVU0pCi10
eXBlZGVmIHN0cnVjdCBDR1NpemUgQ0dTaXplOwotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMp
IHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkgfHwgKFBMQVRGT1JNKFFUKSAm
JiBVU0UoUVRLSVQpKQotI2lmZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZ
X1RZUEVTCi10eXBlZGVmIHN0cnVjdCBDR1NpemUgTlNTaXplOwotI2Vsc2UKLXR5cGVkZWYgc3Ry
dWN0IF9OU1NpemUgTlNTaXplOwotI2VuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBJbnRTaXplOwotCi1jbGFzcyBGbG9hdFNpemUgewotcHVibGljOgotICAgIEZs
b2F0U2l6ZSgpIDogbV93aWR0aCgwKSwgbV9oZWlnaHQoMCkgeyB9Ci0gICAgRmxvYXRTaXplKGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIDogbV93aWR0aCh3aWR0aCksIG1faGVpZ2h0KGhlaWdo
dCkgeyB9Ci0gICAgRmxvYXRTaXplKGNvbnN0IEludFNpemUmKTsKLQotICAgIHN0YXRpYyBGbG9h
dFNpemUgbmFycm93UHJlY2lzaW9uKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7Ci0KLSAg
ICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KLSAgICBmbG9hdCBoZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotCi0gICAgdm9pZCBzZXRXaWR0aChmbG9h
dCB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KLSAgICB2b2lkIHNldEhlaWdodChmbG9hdCBo
ZWlnaHQpIHsgbV9oZWlnaHQgPSBoZWlnaHQ7IH0KLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9Ci0KLSAgICBmbG9hdCBh
c3BlY3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGggLyBtX2hlaWdodDsgfQotCi0gICAg
dm9pZCBleHBhbmQoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKLSAgICB7Ci0gICAgICAgIG1f
d2lkdGggKz0gd2lkdGg7Ci0gICAgICAgIG1faGVpZ2h0ICs9IGhlaWdodDsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNjYWxlKGZsb2F0IHMpIHsgc2NhbGUocywgcyk7IH0KLQotICAgIHZvaWQgc2NhbGUo
ZmxvYXQgc2NhbGVYLCBmbG9hdCBzY2FsZVkpCi0gICAgewotICAgICAgICBtX3dpZHRoICo9IHNj
YWxlWDsKLSAgICAgICAgbV9oZWlnaHQgKj0gc2NhbGVZOwotICAgIH0KLQotICAgIEZsb2F0U2l6
ZSBleHBhbmRlZFRvKGNvbnN0IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gRmxvYXRTaXplKG1fd2lkdGggPiBvdGhlci5tX3dpZHRoID8gbV93aWR0aCA6IG90
aGVyLm1fd2lkdGgsCi0gICAgICAgICAgICBtX2hlaWdodCA+IG90aGVyLm1faGVpZ2h0ID8gbV9o
ZWlnaHQgOiBvdGhlci5tX2hlaWdodCk7Ci0gICAgfQotCi0gICAgRmxvYXRTaXplIHNocnVua1Rv
KGNvbnN0IEZsb2F0U2l6ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgIHJldHVybiBGbG9h
dFNpemUobV93aWR0aCA8IG90aGVyLm1fd2lkdGggPyBtX3dpZHRoIDogb3RoZXIubV93aWR0aCwK
LSAgICAgICAgICAgbV9oZWlnaHQgPCBvdGhlci5tX2hlaWdodCA/IG1faGVpZ2h0IDogb3RoZXIu
bV9oZWlnaHQpOwotICAgIH0KLQotICAgIGZsb2F0IGRpYWdvbmFsTGVuZ3RoKCkgY29uc3Q7Ci0g
ICAgZmxvYXQgZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3dpZHRoICogbV93aWR0aCArIG1faGVpZ2h0ICogbV9oZWlnaHQ7Ci0gICAgfQotCi0g
ICAgRmxvYXRTaXplIHRyYW5zcG9zZWRTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBGbG9hdFNpemUobV9oZWlnaHQsIG1fd2lkdGgpOwotICAgIH0KLQotI2lmIFVTRShDRykgfHwg
KFBMQVRGT1JNKFdYKSAmJiBPUyhEQVJXSU4pKSB8fCBVU0UoU0tJQV9PTl9NQUNfQ0hST01JVU0p
Ci0gICAgZXhwbGljaXQgRmxvYXRTaXplKGNvbnN0IENHU2l6ZSYpOyAvLyBkb24ndCBkbyB0aGlz
IGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQotICAgIG9wZXJhdG9yIENHU2l6ZSgpIGNvbnN0
OwotI2VuZGlmCi0KLSNpZiAoUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZ
UEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUykpIFwKLSAgICAgICAgfHwgKFBMQVRGT1JNKENI
Uk9NSVVNKSAmJiBPUyhEQVJXSU4pKSB8fCAoUExBVEZPUk0oUVQpICYmIFVTRShRVEtJVCkpCi0g
ICAgZXhwbGljaXQgRmxvYXRTaXplKGNvbnN0IE5TU2l6ZSAmKTsgLy8gZG9uJ3QgZG8gdGhpcyBp
bXBsaWNpdGx5IHNpbmNlIGl0J3MgbG9zc3kKLSAgICBvcGVyYXRvciBOU1NpemUoKSBjb25zdDsK
LSNlbmRpZgotCi1wcml2YXRlOgotICAgIGZsb2F0IG1fd2lkdGgsIG1faGVpZ2h0OwotfTsKLQot
aW5saW5lIEZsb2F0U2l6ZSYgb3BlcmF0b3IrPShGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0U2l6
ZSYgYikKLXsKLSAgICBhLnNldFdpZHRoKGEud2lkdGgoKSArIGIud2lkdGgoKSk7Ci0gICAgYS5z
ZXRIZWlnaHQoYS5oZWlnaHQoKSArIGIuaGVpZ2h0KCkpOwotICAgIHJldHVybiBhOwotfQotCi1p
bmxpbmUgRmxvYXRTaXplJiBvcGVyYXRvci09KEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXpl
JiBiKQotewotICAgIGEuc2V0V2lkdGgoYS53aWR0aCgpIC0gYi53aWR0aCgpKTsKLSAgICBhLnNl
dEhlaWdodChhLmhlaWdodCgpIC0gYi5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIGE7Ci19Ci0KLWlu
bGluZSBGbG9hdFNpemUgb3BlcmF0b3IrKGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRT
aXplJiBiKQotewotICAgIHJldHVybiBGbG9hdFNpemUoYS53aWR0aCgpICsgYi53aWR0aCgpLCBh
LmhlaWdodCgpICsgYi5oZWlnaHQoKSk7Ci19Ci0KLWlubGluZSBGbG9hdFNpemUgb3BlcmF0b3It
KGNvbnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQotewotICAgIHJldHVybiBG
bG9hdFNpemUoYS53aWR0aCgpIC0gYi53aWR0aCgpLCBhLmhlaWdodCgpIC0gYi5oZWlnaHQoKSk7
Ci19Ci0KLWlubGluZSBGbG9hdFNpemUgb3BlcmF0b3ItKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkK
LXsKLSAgICByZXR1cm4gRmxvYXRTaXplKC1zaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsK
LX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IEZs
b2F0U2l6ZSYgYikKLXsKLSAgICByZXR1cm4gYS53aWR0aCgpID09IGIud2lkdGgoKSAmJiBhLmhl
aWdodCgpID09IGIuaGVpZ2h0KCk7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3Qg
RmxvYXRTaXplJiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCi17Ci0gICAgcmV0dXJuIGEud2lkdGgo
KSAhPSBiLndpZHRoKCkgfHwgYS5oZWlnaHQoKSAhPSBiLmhlaWdodCgpOwotfQotCi1pbmxpbmUg
SW50U2l6ZSByb3VuZGVkSW50U2l6ZShjb25zdCBGbG9hdFNpemUmIHApCi17Ci0gICAgcmV0dXJu
IEludFNpemUoc3RhdGljX2Nhc3Q8aW50Pihyb3VuZGYocC53aWR0aCgpKSksIHN0YXRpY19jYXN0
PGludD4ocm91bmRmKHAuaGVpZ2h0KCkpKSk7Ci19Ci0KLWlubGluZSBJbnRTaXplIGV4cGFuZGVk
SW50U2l6ZShjb25zdCBGbG9hdFNpemUmIHApCi17Ci0gICAgcmV0dXJuIEludFNpemUoY2xhbXBU
b0ludGVnZXIoY2VpbGYocC53aWR0aCgpKSksIGNsYW1wVG9JbnRlZ2VyKGNlaWxmKHAuaGVpZ2h0
KCkpKSk7Ci19Ci0KLWlubGluZSBJbnRQb2ludCBmbG9vcmVkSW50UG9pbnQoY29uc3QgRmxvYXRT
aXplJiBwKQotewotICAgIHJldHVybiBJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHAud2lkdGgo
KSksIHN0YXRpY19jYXN0PGludD4ocC5oZWlnaHQoKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBGbG9hdFNpemVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwCShyZXZpc2lvbiA5MTIwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaEJ1ZmZl
cihHcmFwaGljc0NvbnRlCiB7ICAgCiAgICAgLy8gRHJhdyBlYWNoIGNvbnRpZ3VvdXMgcnVuIG9m
IGdseXBocyB0aGF0IHVzZSB0aGUgc2FtZSBmb250IGRhdGEuCiAgICAgY29uc3QgU2ltcGxlRm9u
dERhdGEqIGZvbnREYXRhID0gZ2x5cGhCdWZmZXIuZm9udERhdGFBdCgwKTsKLSAgICBGbG9hdFNp
emUgb2Zmc2V0ID0gZ2x5cGhCdWZmZXIub2Zmc2V0QXQoMCk7CisgICAgR3JhcGhpY3NTaXplIG9m
ZnNldCA9IGdseXBoQnVmZmVyLm9mZnNldEF0KDApOwogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2lu
dChwb2ludCk7CiAgICAgZmxvYXQgbmV4dFggPSBzdGFydFBvaW50LngoKTsKICAgICBpbnQgbGFz
dEZyb20gPSAwOwpAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBoQnVmZmVy
KEdyYXBoaWNzQ29udGUKICNlbmRpZgogICAgIHdoaWxlIChuZXh0R2x5cGggPCBnbHlwaEJ1ZmZl
ci5zaXplKCkpIHsKICAgICAgICAgY29uc3QgU2ltcGxlRm9udERhdGEqIG5leHRGb250RGF0YSA9
IGdseXBoQnVmZmVyLmZvbnREYXRhQXQobmV4dEdseXBoKTsKLSAgICAgICAgRmxvYXRTaXplIG5l
eHRPZmZzZXQgPSBnbHlwaEJ1ZmZlci5vZmZzZXRBdChuZXh0R2x5cGgpOworICAgICAgICBHcmFw
aGljc1NpemUgbmV4dE9mZnNldCA9IGdseXBoQnVmZmVyLm9mZnNldEF0KG5leHRHbHlwaCk7CiAK
ICAgICAgICAgaWYgKG5leHRGb250RGF0YSAhPSBmb250RGF0YSB8fCBuZXh0T2Zmc2V0ICE9IG9m
ZnNldCkgewogI2lmIEVOQUJMRShTVkdfRk9OVFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiA5MTIw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCB2b2lkIEdlbmVyYXRlZEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4CiAgICAgY29udGV4dC0+Y2xpcChkc3RSZWN0KTsKICAgICBjb250
ZXh0LT50cmFuc2xhdGUoZHN0UmVjdC54KCksIGRzdFJlY3QueSgpKTsKICAgICBpZiAoZHN0UmVj
dC5zaXplKCkgIT0gc3JjUmVjdC5zaXplKCkpCi0gICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0
U2l6ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkg
LyBzcmNSZWN0LmhlaWdodCgpKSk7CisgICAgICAgIGNvbnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6
ZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkgLyBz
cmNSZWN0LmhlaWdodCgpKSk7CiAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1zcmNSZWN0LngoKSwg
LXNyY1JlY3QueSgpKTsKICAgICBjb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBtX3NpemUpLCAqbV9nZW5lcmF0b3IuZ2V0KCkpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaEJ1ZmZlci5oCShyZXZpc2lvbiA5MTIwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpZm5kZWYgR2x5cGhCdWZmZXJfaAogI2RlZmlu
ZSBHbHlwaEJ1ZmZlcl9oCiAKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHcmFw
aGljc1NpemUuaCIKICNpbmNsdWRlICJHbHlwaC5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJh
bS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWRlZiB3
Y2hhcl90IEdseXBoQnVmZmVyR2x5cGg7CiB0eXBlZGVmIEdseXBoIEdseXBoQnVmZmVyR2x5cGg7
CiAjZW5kaWYKIAotLy8gQ0cgdXNlcyBDR1NpemUgaW5zdGVhZCBvZiBGbG9hdFNpemUgc28gdGhh
dCB0aGUgcmVzdWx0IG9mIGFkdmFuY2VzKCkKKy8vIENHIHVzZXMgQ0dTaXplIGluc3RlYWQgb2Yg
R3JhcGhpY3NTaXplIHNvIHRoYXQgdGhlIHJlc3VsdCBvZiBhZHZhbmNlcygpCiAvLyBjYW4gYmUg
cGFzc2VkIGRpcmVjdGx5IHRvIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMgaW4gRm9u
dE1hYy5tbQogI2lmIFVTRShDRykgfHwgKFBMQVRGT1JNKFdYKSAmJiBPUyhEQVJXSU4pKSB8fCBV
U0UoU0tJQV9PTl9NQUNfQ0hST01JVU0pCiB0eXBlZGVmIENHU2l6ZSBHbHlwaEJ1ZmZlckFkdmFu
Y2U7CkBAIC02OSw3ICs2OSw3IEBAIHR5cGVkZWYgQ0dTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsK
IC8vIHNvIHdlIGNhbiBzYXZlIG1lbW9yeSBzcGFjZSBvbiBlbWJlZGRlZCBkZXZpY2VzIGJ5IHN0
b3Jpbmcgb25seSB0aGUgd2lkdGgKIHR5cGVkZWYgZmxvYXQgR2x5cGhCdWZmZXJBZHZhbmNlOwog
I2Vsc2UKLXR5cGVkZWYgRmxvYXRTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsKK3R5cGVkZWYgR3Jh
cGhpY3NTaXplIEdseXBoQnVmZmVyQWR2YW5jZTsKICNlbmRpZgogCiBjbGFzcyBHbHlwaEJ1ZmZl
ciB7CkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgICAgICBtX2FkdmFuY2VzW2luZGV4
Ml0gPSBzOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgICAgICBGbG9hdFNpemUgb2Zmc2V0ID0g
bV9vZmZzZXRzW2luZGV4MV07CisgICAgICAgIEdyYXBoaWNzU2l6ZSBvZmZzZXQgPSBtX29mZnNl
dHNbaW5kZXgxXTsKICAgICAgICAgbV9vZmZzZXRzW2luZGV4MV0gPSBtX29mZnNldHNbaW5kZXgy
XTsKICAgICAgICAgbV9vZmZzZXRzW2luZGV4Ml0gPSBvZmZzZXQ7CiAjZW5kaWYKQEAgLTEzNSwx
NyArMTM1LDE3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIEZsb2F0U2l6ZSBvZmZz
ZXRBdChpbnQgaW5kZXgpIGNvbnN0CisgICAgR3JhcGhpY3NTaXplIG9mZnNldEF0KGludCBpbmRl
eCkgY29uc3QKICAgICB7CiAjaWYgUExBVEZPUk0oV0lOKQogICAgICAgICByZXR1cm4gbV9vZmZz
ZXRzW2luZGV4XTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgICAg
IHJldHVybiBGbG9hdFNpemUoKTsKKyAgICAgICAgcmV0dXJuIEdyYXBoaWNzU2l6ZSgpOwogI2Vu
ZGlmCiAgICAgfQogCi0gICAgdm9pZCBhZGQoR2x5cGggZ2x5cGgsIGNvbnN0IFNpbXBsZUZvbnRE
YXRhKiBmb250LCBmbG9hdCB3aWR0aCwgY29uc3QgRmxvYXRTaXplKiBvZmZzZXQgPSAwKQorICAg
IHZvaWQgYWRkKEdseXBoIGdseXBoLCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgZmxvYXQg
d2lkdGgsIGNvbnN0IEdyYXBoaWNzU2l6ZSogb2Zmc2V0ID0gMCkKICAgICB7CiAgICAgICAgIG1f
Zm9udERhdGEuYXBwZW5kKGZvbnQpOwogCkBAIC0xNjMsMTQgKzE2MywxNCBAQCBwdWJsaWM6CiAj
ZWxpZiBPUyhXSU5DRSkKICAgICAgICAgbV9hZHZhbmNlcy5hcHBlbmQod2lkdGgpOwogI2Vsc2UK
LSAgICAgICAgbV9hZHZhbmNlcy5hcHBlbmQoRmxvYXRTaXplKHdpZHRoLCAwKSk7CisgICAgICAg
IG1fYWR2YW5jZXMuYXBwZW5kKEdyYXBoaWNzU2l6ZSh3aWR0aCwgMCkpOwogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgICAgIGlmIChvZmZzZXQpCiAgICAgICAgICAgICBtX29mZnNl
dHMuYXBwZW5kKCpvZmZzZXQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX29mZnNldHMu
YXBwZW5kKEZsb2F0U2l6ZSgpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0cy5hcHBlbmQoR3JhcGhp
Y3NTaXplKCkpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7CiAjZW5kaWYK
QEAgLTIwMSw3ICsyMDEsNyBAQCBwdWJsaWM6CiAjZWxpZiBPUyhXSU5DRSkKICAgICAgICAgbGFz
dEFkdmFuY2UgKz0gd2lkdGg7CiAjZWxzZQotICAgICAgICBsYXN0QWR2YW5jZSArPSBGbG9hdFNp
emUod2lkdGgsIDApOworICAgICAgICBsYXN0QWR2YW5jZSArPSBHcmFwaGljc1NpemUod2lkdGgs
IDApOwogI2VuZGlmCiAgICAgfQogCkBAIC0yMTAsNyArMjEwLDcgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8R2x5cGhCdWZmZXJHbHlwaCwgMjA0OD4gbV9nbHlwaHM7CiAgICAgVmVjdG9yPEdseXBo
QnVmZmVyQWR2YW5jZSwgMjA0OD4gbV9hZHZhbmNlczsKICNpZiBQTEFURk9STShXSU4pCi0gICAg
VmVjdG9yPEZsb2F0U2l6ZSwgMjA0OD4gbV9vZmZzZXRzOworICAgIFZlY3RvcjxHcmFwaGljc1Np
emUsIDIwNDg+IG1fb2Zmc2V0czsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lv
biA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0U3Ryb2tlQ29sb3IoY29uCiAgICAgc2V0UGxhdGZvcm1TdHJva2VDb2xvcihj
b2xvciwgY29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3co
Y29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhj
b25zdCBHcmFwaGljc1NpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBv
ZmZzZXQ7CiAgICAgbV9zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKQEAgLTE0Myw3ICsxNDMsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KGNvbnN0IEZsCiAgICAgc2V0UGxhdGZv
cm1TaGFkb3cob2Zmc2V0LCBibHVyLCBjb2xvciwgY29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRMZWdhY3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZs
b2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBHcmFwaGljc1NpemUmIG9m
ZnNldCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9zdGF0ZS5z
aGFkb3dCbHVyID0gYmx1cjsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0TGVnYWN5U2hhZG93KGNvCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRv
dygpCiB7Ci0gICAgbV9zdGF0ZS5zaGFkb3dPZmZzZXQgPSBGbG9hdFNpemUoKTsKKyAgICBtX3N0
YXRlLnNoYWRvd09mZnNldCA9IEdyYXBoaWNzU2l6ZSgpOwogICAgIG1fc3RhdGUuc2hhZG93Qmx1
ciA9IDA7CiAgICAgbV9zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7CiAgICAgbV9zdGF0ZS5z
aGFkb3dDb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKQEAgLTE3MCw3ICsxNzAsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDo6aGFzU2hhZG93KCkgY29uc3QKICAgICAgICAgICAgJiYg
KG1fc3RhdGUuc2hhZG93Qmx1ciB8fCBtX3N0YXRlLnNoYWRvd09mZnNldC53aWR0aCgpIHx8IG1f
c3RhdGUuc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6
OmdldFNoYWRvdyhGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QKK2Jvb2wgR3JhcGhpY3NDb250ZXh0OjpnZXRT
aGFkb3coR3JhcGhpY3NTaXplJiBvZmZzZXQsIGZsb2F0JiBibHVyLCBDb2xvciYgY29sb3IsIENv
bG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNvbnN0CiB7CiAgICAgb2Zmc2V0ID0gbV9zdGF0ZS5zaGFk
b3dPZmZzZXQ7CiAgICAgYmx1ciA9IG1fc3RhdGUuc2hhZG93Qmx1cjsKQEAgLTQ1NywxMCArNDU3
LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UqIGkKICAgICAgICAg
SW50ZXJwb2xhdGlvblF1YWxpdHkgcHJldmlvdXNJbnRlcnBvbGF0aW9uUXVhbGl0eSA9IGltYWdl
SW50ZXJwb2xhdGlvblF1YWxpdHkoKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBJbnRl
cnBvbGF0aW9uTG93CiAgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJw
b2xhdGlvbk5vbmUpOwotICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3QoZGVzdC5s
b2NhdGlvbigpLCBGbG9hdFNpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwg
RmxvYXRTaXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBpbWFn
ZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBHcmFwaGljc1NpemUodHcs
IHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgR3JhcGhpY3NTaXplKHRzdywgdHNoKSks
IHN0eWxlQ29sb3JTcGFjZSwgb3ApOwogICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIH0gZWxzZQotICAgICAgICBp
bWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3QoZGVzdC5sb2NhdGlvbigpLCBGbG9hdFNpemUodHcs
IHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24oKSwgRmxvYXRTaXplKHRzdywgdHNoKSksIHN0
eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBGbG9hdFJlY3Qo
ZGVzdC5sb2NhdGlvbigpLCBHcmFwaGljc1NpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9j
YXRpb24oKSwgR3JhcGhpY3NTaXplKHRzdywgdHNoKSksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50
UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQ29tcG9zaXRlT3BlcmF0
b3Igb3AsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKQpAQCAtNTQxLDEwICs1NDEsMTAgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbQogICAgICAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBwcmV2aW91c0ludGVycG9sYXRpb25RdWFsaXR5ID0gaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSgpOwogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGJlIEludGVycG9sYXRpb25M
b3cKICAgICAgICAgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBvbGF0aW9uTm9u
ZSk7Ci0gICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwgRmxvYXRSZWN0
KGRlc3QubG9jYXRpb24oKSwgRmxvYXRTaXplKHR3LCB0aCkpLCBGbG9hdFJlY3Qoc3JjLmxvY2F0
aW9uKCksIEZsb2F0U2l6ZSh0c3csIHRzaCkpLCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKKyAg
ICAgICAgaW1hZ2UtPmRyYXcodGhpcywgc3R5bGVDb2xvclNwYWNlLCBGbG9hdFJlY3QoZGVzdC5s
b2NhdGlvbigpLCBHcmFwaGljc1NpemUodHcsIHRoKSksIEZsb2F0UmVjdChzcmMubG9jYXRpb24o
KSwgR3JhcGhpY3NTaXplKHRzdywgdHNoKSksIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogICAg
ICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHByZXZpb3VzSW50ZXJwb2xhdGlvblF1
YWxpdHkpOwogICAgIH0gZWxzZQotICAgICAgICBpbWFnZS0+ZHJhdyh0aGlzLCBzdHlsZUNvbG9y
U3BhY2UsIEZsb2F0UmVjdChkZXN0LmxvY2F0aW9uKCksIEZsb2F0U2l6ZSh0dywgdGgpKSwgRmxv
YXRSZWN0KHNyYy5sb2NhdGlvbigpLCBGbG9hdFNpemUodHN3LCB0c2gpKSwgb3AsIHVzZUxvd1F1
YWxpdHlTY2FsZSk7CisgICAgICAgIGltYWdlLT5kcmF3KHRoaXMsIHN0eWxlQ29sb3JTcGFjZSwg
RmxvYXRSZWN0KGRlc3QubG9jYXRpb24oKSwgR3JhcGhpY3NTaXplKHR3LCB0aCkpLCBGbG9hdFJl
Y3Qoc3JjLmxvY2F0aW9uKCksIEdyYXBoaWNzU2l6ZSh0c3csIHRzaCkpLCBvcCwgdXNlTG93UXVh
bGl0eVNjYWxlKTsKIH0KIAogI2lmICFQTEFURk9STShRVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiA5
MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGZpbGxHcmFkaWVudDsKICAgICAgICAgUmVmUHRy
PFBhdHRlcm4+IGZpbGxQYXR0ZXJuOwogCi0gICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7
CisgICAgICAgIEdyYXBoaWNzU2l6ZSBzaGFkb3dPZmZzZXQ7CiAKICAgICAgICAgZmxvYXQgc3Ry
b2tlVGhpY2tuZXNzOwogICAgICAgICBmbG9hdCBzaGFkb3dCbHVyOwpAQCAtMzcxLDEyICszNzEs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGVuZFRyYW5zcGFyZW5jeUxh
eWVyKCk7CiAKICAgICAgICAgYm9vbCBoYXNTaGFkb3coKSBjb25zdDsKLSAgICAgICAgdm9pZCBz
ZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xv
clNwYWNlKTsKKyAgICAgICAgdm9pZCBzZXRTaGFkb3coY29uc3QgR3JhcGhpY3NTaXplJiwgZmxv
YXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgLy8gTGVnYWN5IHNo
YWRvdyBibHVyIHJhZGl1cyBpcyB1c2VkIGZvciBjYW52YXMsIGFuZCAtd2Via2l0LWJveC1zaGFk
b3cuCiAgICAgICAgIC8vIEl0IGhhcyBkaWZmZXJlbnQgdHJlYXRtZW50IG9mIHJhZGlpID4gOHB4
LgotICAgICAgICB2b2lkIHNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBi
bHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICB2b2lkIHNldExlZ2FjeVNo
YWRvdyhjb25zdCBHcmFwaGljc1NpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9y
U3BhY2UpOwogCi0gICAgICAgIGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIGZsb2F0JiwgQ29s
b3ImLCBDb2xvclNwYWNlJikgY29uc3Q7CisgICAgICAgIGJvb2wgZ2V0U2hhZG93KEdyYXBoaWNz
U2l6ZSYsIGZsb2F0JiwgQ29sb3ImLCBDb2xvclNwYWNlJikgY29uc3Q7CiAgICAgICAgIHZvaWQg
Y2xlYXJTaGFkb3coKTsKIAogICAgICAgICB2b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9y
PEludFJlY3Q+JiwgaW50IHdpZHRoLCBpbnQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOwpAQCAtNDAw
LDkgKzQwMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBjYW52YXNDbGlw
KGNvbnN0IFBhdGgmKTsKICAgICAgICAgdm9pZCBjbGlwT3V0KGNvbnN0IFBhdGgmKTsKIAotICAg
ICAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgICAgICB2b2lkIHNjYWxlKGNv
bnN0IEdyYXBoaWNzU2l6ZSYpOwogICAgICAgICB2b2lkIHJvdGF0ZShmbG9hdCBhbmdsZUluUmFk
aWFucyk7Ci0gICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgeyB0
cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsgfQorICAgICAgICB2b2lkIHRy
YW5zbGF0ZShjb25zdCBHcmFwaGljc1NpemUmIHNpemUpIHsgdHJhbnNsYXRlKHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7IH0KICAgICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxv
YXQgeSk7CiAKICAgICAgICAgdm9pZCBzZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBJ
bnRSZWN0Jik7CkBAIC00NzksNyArNDc5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIFBM
QVRGT1JNKFdYKQogICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIG9mIGEgYnVnIHdo
ZXJlYnkgZ2V0dGluZyBhbiBIREMgZnJvbSBhIEdESSsgY29udGV4dAogICAgICAgICAvLyBsb3Nl
cyB0aGUgc2NhbGUgb3BlcmF0aW9ucyBhcHBsaWVkIHRvIHRoZSBjb250ZXh0LgotICAgICAgICBG
bG9hdFNpemUgY3VycmVudFNjYWxlKCk7IAorICAgICAgICBHcmFwaGljc1NpemUgY3VycmVudFNj
YWxlKCk7IAogICAgICAgICBib29sIGluVHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogI2VuZGlmCiAKQEAgLTUzOCw3ICs1MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMoYm9vbCk7CiAgICAg
ICAgIHZvaWQgc2V0UGxhdGZvcm1TaG91bGRTbW9vdGhGb250cyhib29sKTsKIAotICAgICAgICB2
b2lkIHNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0
IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1TaGFkb3coY29u
c3QgR3JhcGhpY3NTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsK
ICAgICAgICAgdm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKICAgICAgICAgdm9pZCBzZXRQ
bGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvcik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZp
c2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkNvbG9y
LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgot
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKQEAgLTI0Miw4ICsyNDIsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgcCkgeyBt
X2FuY2hvclBvaW50ID0gcDsgfQogCiAgICAgLy8gVGhlIHNpemUgb2YgdGhlIGxheWVyLgotICAg
IGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgeyBtX3NpemUgPSBzaXpl
OyB9CisgICAgY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKSB7
IG1fc2l6ZSA9IHNpemU7IH0KIAogICAgIC8vIFRoZSBib3VuZE9yaWdpbiBhZmZlY3RzIHRoZSBv
ZmZzZXQgYXQgd2hpY2ggY29udGVudCBpcyByZW5kZXJlZCwgYW5kIHN1YmxheWVycyBhcmUgcG9z
aXRpb25lZC4KICAgICBjb25zdCBGbG9hdFBvaW50JiBib3VuZHNPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBtX2JvdW5kc09yaWdpbjsgfQpAQCAtNDA3LDcgKzQwNyw3IEBAIHByb3RlY3RlZDoKICAg
ICAvLyBQb3NpdGlvbiBpcyByZWxhdGl2ZSB0byB0aGUgcGFyZW50IEdyYXBoaWNzTGF5ZXIKICAg
ICBGbG9hdFBvaW50IG1fcG9zaXRpb247CiAgICAgRmxvYXRQb2ludDNEIG1fYW5jaG9yUG9pbnQ7
Ci0gICAgRmxvYXRTaXplIG1fc2l6ZTsKKyAgICBHcmFwaGljc1NpemUgbV9zaXplOwogICAgIEZs
b2F0UG9pbnQgbV9ib3VuZHNPcmlnaW47CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3Ry
YW5zZm9ybTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
U2l6ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NTaXplLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NTaXplLmgiCisKKyNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJJ
bnRTaXplLmgiCisjaW5jbHVkZSA8bWF0aC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dy
YXBoaWNzU2l6ZTo6R3JhcGhpY3NTaXplKGNvbnN0IEludFNpemUmIHNpemUpIDogbV93aWR0aChz
aXplLndpZHRoKCkpLCBtX2hlaWdodChzaXplLmhlaWdodCgpKQoreworfQorCitHcmFwaGljc1Vu
aXQgR3JhcGhpY3NTaXplOjpkaWFnb25hbExlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNx
cnRmKGRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpKTsKK30KKworR3JhcGhpY3NTaXplIEdyYXBoaWNz
U2l6ZTo6bmFycm93UHJlY2lzaW9uKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkKK3sKKyAg
ICByZXR1cm4gR3JhcGhpY3NTaXplKG5hcnJvd1ByZWNpc2lvblRvR3JhcGhpY3NVbml0KHdpZHRo
KSwgbmFycm93UHJlY2lzaW9uVG9HcmFwaGljc1VuaXQoaGVpZ2h0KSk7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzU2l6ZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NT
aXplLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA1IE5va2lhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICAg
ICAgICAgICAgICAgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgR3JhcGhpY3NTaXplX2gKKyNkZWZpbmUgR3JhcGhpY3NTaXplX2gKKworI2luY2x1ZGUg
IkludFBvaW50LmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworI2lmIFVTRShDRykg
fHwgKFBMQVRGT1JNKFdYKSAmJiBPUyhEQVJXSU4pKSB8fCBVU0UoU0tJQV9PTl9NQUNfQ0hST01J
VU0pCit0eXBlZGVmIHN0cnVjdCBDR1NpemUgQ0dTaXplOworI2VuZGlmCisKKyNpZiBQTEFURk9S
TShNQUMpIHx8IChQTEFURk9STShDSFJPTUlVTSkgJiYgT1MoREFSV0lOKSkgfHwgKFBMQVRGT1JN
KFFUKSAmJiBVU0UoUVRLSVQpKQorI2lmZGVmIE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dF
T01FVFJZX1RZUEVTCit0eXBlZGVmIHN0cnVjdCBDR1NpemUgTlNTaXplOworI2Vsc2UKK3R5cGVk
ZWYgc3RydWN0IF9OU1NpemUgTlNTaXplOworI2VuZGlmCisjZW5kaWYKKworLy8gRklYTUU6IFdp
bGwgbW92ZSB0aGlzIHRvIENHRmxvYXQgb25jZSB0aGUgY29udmVyc2lvbiBpcyBmaW5pc2hlZC4g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NDEzCit0eXBlZGVmIGZs
b2F0IEdyYXBoaWNzVW5pdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnRTaXpl
OworCitjbGFzcyBHcmFwaGljc1NpemUgeworcHVibGljOgorICAgIEdyYXBoaWNzU2l6ZSgpIDog
bV93aWR0aCgwKSwgbV9oZWlnaHQoMCkgeyB9CisgICAgR3JhcGhpY3NTaXplKEdyYXBoaWNzVW5p
dCB3aWR0aCwgR3JhcGhpY3NVbml0IGhlaWdodCkgOiBtX3dpZHRoKHdpZHRoKSwgbV9oZWlnaHQo
aGVpZ2h0KSB7IH0KKyAgICBHcmFwaGljc1NpemUoY29uc3QgSW50U2l6ZSYpOworCisgICAgc3Rh
dGljIEdyYXBoaWNzU2l6ZSBuYXJyb3dQcmVjaXNpb24oZG91YmxlIHdpZHRoLCBkb3VibGUgaGVp
Z2h0KTsKKworICAgIEdyYXBoaWNzVW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7
IH0KKyAgICBHcmFwaGljc1VuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0K
KworICAgIHZvaWQgc2V0V2lkdGgoR3JhcGhpY3NVbml0IHdpZHRoKSB7IG1fd2lkdGggPSB3aWR0
aDsgfQorICAgIHZvaWQgc2V0SGVpZ2h0KEdyYXBoaWNzVW5pdCBoZWlnaHQpIHsgbV9oZWlnaHQg
PSBoZWlnaHQ7IH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGgg
PD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9CisKKyAgICBHcmFwaGljc1VuaXQgYXNwZWN0UmF0aW8o
KSBjb25zdCB7IHJldHVybiBtX3dpZHRoIC8gbV9oZWlnaHQ7IH0KKworICAgIHZvaWQgZXhwYW5k
KEdyYXBoaWNzVW5pdCB3aWR0aCwgR3JhcGhpY3NVbml0IGhlaWdodCkKKyAgICB7CisgICAgICAg
IG1fd2lkdGggKz0gd2lkdGg7CisgICAgICAgIG1faGVpZ2h0ICs9IGhlaWdodDsKKyAgICB9CisK
KyAgICB2b2lkIHNjYWxlKEdyYXBoaWNzVW5pdCBzKSB7IHNjYWxlKHMsIHMpOyB9CisKKyAgICB2
b2lkIHNjYWxlKEdyYXBoaWNzVW5pdCBzY2FsZVgsIEdyYXBoaWNzVW5pdCBzY2FsZVkpCisgICAg
eworICAgICAgICBtX3dpZHRoICo9IHNjYWxlWDsKKyAgICAgICAgbV9oZWlnaHQgKj0gc2NhbGVZ
OworICAgIH0KKworICAgIEdyYXBoaWNzU2l6ZSBleHBhbmRlZFRvKGNvbnN0IEdyYXBoaWNzU2l6
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gR3JhcGhpY3NTaXplKG1fd2lk
dGggPiBvdGhlci5tX3dpZHRoID8gbV93aWR0aCA6IG90aGVyLm1fd2lkdGgsCisgICAgICAgICAg
ICBtX2hlaWdodCA+IG90aGVyLm1faGVpZ2h0ID8gbV9oZWlnaHQgOiBvdGhlci5tX2hlaWdodCk7
CisgICAgfQorCisgICAgR3JhcGhpY3NTaXplIHNocnVua1RvKGNvbnN0IEdyYXBoaWNzU2l6ZSYg
b3RoZXIpIGNvbnN0CisgICAgeworICAgICAgIHJldHVybiBHcmFwaGljc1NpemUobV93aWR0aCA8
IG90aGVyLm1fd2lkdGggPyBtX3dpZHRoIDogb3RoZXIubV93aWR0aCwKKyAgICAgICAgICAgbV9o
ZWlnaHQgPCBvdGhlci5tX2hlaWdodCA/IG1faGVpZ2h0IDogb3RoZXIubV9oZWlnaHQpOworICAg
IH0KKworICAgIEdyYXBoaWNzVW5pdCBkaWFnb25hbExlbmd0aCgpIGNvbnN0OworICAgIEdyYXBo
aWNzVW5pdCBkaWFnb25hbExlbmd0aFNxdWFyZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fd2lkdGggKiBtX3dpZHRoICsgbV9oZWlnaHQgKiBtX2hlaWdodDsKKyAgICB9CisKKyAg
ICBHcmFwaGljc1NpemUgdHJhbnNwb3NlZFNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIEdyYXBoaWNzU2l6ZShtX2hlaWdodCwgbV93aWR0aCk7CisgICAgfQorCisjaWYgVVNFKENH
KSB8fCAoUExBVEZPUk0oV1gpICYmIE9TKERBUldJTikpIHx8IFVTRShTS0lBX09OX01BQ19DSFJP
TUlVTSkKKyAgICBleHBsaWNpdCBHcmFwaGljc1NpemUoY29uc3QgQ0dTaXplJik7IC8vIGRvbid0
IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5CisgICAgb3BlcmF0b3IgQ0dTaXpl
KCkgY29uc3Q7CisjZW5kaWYKKworI2lmIChQTEFURk9STShNQUMpICYmICFkZWZpbmVkKE5TR0VP
TUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTKSkgXAorICAgICAgICB8fCAoUExB
VEZPUk0oQ0hST01JVU0pICYmIE9TKERBUldJTikpIHx8IChQTEFURk9STShRVCkgJiYgVVNFKFFU
S0lUKSkKKyAgICBleHBsaWNpdCBHcmFwaGljc1NpemUoY29uc3QgTlNTaXplICYpOyAvLyBkb24n
dCBkbyB0aGlzIGltcGxpY2l0bHkgc2luY2UgaXQncyBsb3NzeQorICAgIG9wZXJhdG9yIE5TU2l6
ZSgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgR3JhcGhpY3NVbml0IG1fd2lkdGgs
IG1faGVpZ2h0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK0dyYXBoaWNzVW5pdCBuYXJy
b3dQcmVjaXNpb25Ub0dyYXBoaWNzVW5pdChUKTsKKyAgICAKK3RlbXBsYXRlPD4KK2lubGluZSBH
cmFwaGljc1VuaXQgbmFycm93UHJlY2lzaW9uVG9HcmFwaGljc1VuaXQoZG91YmxlIG51bWJlcikK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R3JhcGhpY3NVbml0PihudW1iZXIpOworfQorCitp
bmxpbmUgR3JhcGhpY3NTaXplJiBvcGVyYXRvcis9KEdyYXBoaWNzU2l6ZSYgYSwgY29uc3QgR3Jh
cGhpY3NTaXplJiBiKQoreworICAgIGEuc2V0V2lkdGgoYS53aWR0aCgpICsgYi53aWR0aCgpKTsK
KyAgICBhLnNldEhlaWdodChhLmhlaWdodCgpICsgYi5oZWlnaHQoKSk7CisgICAgcmV0dXJuIGE7
Cit9CisKK2lubGluZSBHcmFwaGljc1NpemUmIG9wZXJhdG9yLT0oR3JhcGhpY3NTaXplJiBhLCBj
b25zdCBHcmFwaGljc1NpemUmIGIpCit7CisgICAgYS5zZXRXaWR0aChhLndpZHRoKCkgLSBiLndp
ZHRoKCkpOworICAgIGEuc2V0SGVpZ2h0KGEuaGVpZ2h0KCkgLSBiLmhlaWdodCgpKTsKKyAgICBy
ZXR1cm4gYTsKK30KKworaW5saW5lIEdyYXBoaWNzU2l6ZSBvcGVyYXRvcisoY29uc3QgR3JhcGhp
Y3NTaXplJiBhLCBjb25zdCBHcmFwaGljc1NpemUmIGIpCit7CisgICAgcmV0dXJuIEdyYXBoaWNz
U2l6ZShhLndpZHRoKCkgKyBiLndpZHRoKCksIGEuaGVpZ2h0KCkgKyBiLmhlaWdodCgpKTsKK30K
KworaW5saW5lIEdyYXBoaWNzU2l6ZSBvcGVyYXRvci0oY29uc3QgR3JhcGhpY3NTaXplJiBhLCBj
b25zdCBHcmFwaGljc1NpemUmIGIpCit7CisgICAgcmV0dXJuIEdyYXBoaWNzU2l6ZShhLndpZHRo
KCkgLSBiLndpZHRoKCksIGEuaGVpZ2h0KCkgLSBiLmhlaWdodCgpKTsKK30KKworaW5saW5lIEdy
YXBoaWNzU2l6ZSBvcGVyYXRvci0oY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKQoreworICAgIHJl
dHVybiBHcmFwaGljc1NpemUoLXNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOworfQorCitp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyYXBoaWNzU2l6ZSYgYSwgY29uc3QgR3JhcGhp
Y3NTaXplJiBiKQoreworICAgIHJldHVybiBhLndpZHRoKCkgPT0gYi53aWR0aCgpICYmIGEuaGVp
Z2h0KCkgPT0gYi5oZWlnaHQoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBH
cmFwaGljc1NpemUmIGEsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgYikKK3sKKyAgICByZXR1cm4gYS53
aWR0aCgpICE9IGIud2lkdGgoKSB8fCBhLmhlaWdodCgpICE9IGIuaGVpZ2h0KCk7Cit9CisKK2lu
bGluZSBJbnRTaXplIHJvdW5kZWRJbnRTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcCkKK3sKKyAg
ICByZXR1cm4gSW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kZihwLndpZHRoKCkpKSwgc3Rh
dGljX2Nhc3Q8aW50Pihyb3VuZGYocC5oZWlnaHQoKSkpKTsKK30KKworaW5saW5lIEludFNpemUg
ZXhwYW5kZWRJbnRTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcCkKK3sKKyAgICByZXR1cm4gSW50
U2l6ZShjbGFtcFRvSW50ZWdlcihjZWlsZihwLndpZHRoKCkpKSwgY2xhbXBUb0ludGVnZXIoY2Vp
bGYocC5oZWlnaHQoKSkpKTsKK30KKworaW5saW5lIEludFBvaW50IGZsb29yZWRJbnRQb2ludChj
b25zdCBHcmFwaGljc1NpemUmIHApCit7CisgICAgcmV0dXJuIEludFBvaW50KHN0YXRpY19jYXN0
PGludD4ocC53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50PihwLmhlaWdodCgpKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdyYXBoaWNzU2l6ZV9oCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCShyZXZpc2lvbiA5MTIw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCB2b2lkIEltYWdlOjpmaWxsV2l0aFNvbGlkQ29sb3Io
R3JhcGhpY3NDCiAgICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHByZXZpb3VzT3BlcmF0
b3IpOwogfQogCi1zdGF0aWMgaW5saW5lIEZsb2F0U2l6ZSBjYWxjdWxhdGVQYXR0ZXJuU2NhbGUo
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIEltYWdl
OjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlKQorc3RhdGljIGlubGluZSBH
cmFwaGljc1NpemUgY2FsY3VsYXRlUGF0dGVyblNjYWxlKGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdl
OjpUaWxlUnVsZSB2UnVsZSkKIHsKICAgICBmbG9hdCBzY2FsZVggPSAxLjBmLCBzY2FsZVkgPSAx
LjBmOwogICAgIApAQCAtMTAxLDExICsxMDEsMTEgQEAgc3RhdGljIGlubGluZSBGbG9hdFNpemUg
Y2FsY3VsYXRlUGF0dGVybgogICAgIGlmICh2UnVsZSA9PSBJbWFnZTo6UmVwZWF0VGlsZSkKICAg
ICAgICAgc2NhbGVZID0gc2NhbGVYOwogICAgIAotICAgIHJldHVybiBGbG9hdFNpemUoc2NhbGVY
LCBzY2FsZVkpOworICAgIHJldHVybiBHcmFwaGljc1NpemUoc2NhbGVYLCBzY2FsZVkpOwogfQog
CiAKLXZvaWQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9h
dFNpemUmIHNjYWxlZFRpbGVTaXplLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3ApCit2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBj
dHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFBvaW50JiBzcmNQb2lu
dCwgY29uc3QgR3JhcGhpY3NTaXplJiBzY2FsZWRUaWxlU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNv
bG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQogeyAgICAKICAgICBpZiAobWF5RmlsbFdp
dGhTb2xpZENvbG9yKCkpIHsKICAgICAgICAgZmlsbFdpdGhTb2xpZENvbG9yKGN0eHQsIGRlc3RS
ZWN0LCBzb2xpZENvbG9yKCksIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwpAQCAtMTE3LDEzICsxMTcs
MTMgQEAgdm9pZCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWNzQ29udGV4dCogYwogICAgIEFTU0VS
VCghaXNCaXRtYXBJbWFnZSgpIHx8IHN0YXRpY19jYXN0PEJpdG1hcEltYWdlKj4odGhpcyktPm5v
dFNvbGlkQ29sb3IoKSk7CiAjZW5kaWYKIAotICAgIEZsb2F0U2l6ZSBpbnRyaW5zaWNUaWxlU2l6
ZSA9IHNpemUoKTsKKyAgICBHcmFwaGljc1NpemUgaW50cmluc2ljVGlsZVNpemUgPSBzaXplKCk7
CiAgICAgaWYgKGhhc1JlbGF0aXZlV2lkdGgoKSkKICAgICAgICAgaW50cmluc2ljVGlsZVNpemUu
c2V0V2lkdGgoc2NhbGVkVGlsZVNpemUud2lkdGgoKSk7CiAgICAgaWYgKGhhc1JlbGF0aXZlSGVp
Z2h0KCkpCiAgICAgICAgIGludHJpbnNpY1RpbGVTaXplLnNldEhlaWdodChzY2FsZWRUaWxlU2l6
ZS5oZWlnaHQoKSk7CiAKLSAgICBGbG9hdFNpemUgc2NhbGUoc2NhbGVkVGlsZVNpemUud2lkdGgo
KSAvIGludHJpbnNpY1RpbGVTaXplLndpZHRoKCksCisgICAgR3JhcGhpY3NTaXplIHNjYWxlKHNj
YWxlZFRpbGVTaXplLndpZHRoKCkgLyBpbnRyaW5zaWNUaWxlU2l6ZS53aWR0aCgpLAogICAgICAg
ICAgICAgICAgICAgICBzY2FsZWRUaWxlU2l6ZS5oZWlnaHQoKSAvIGludHJpbnNpY1RpbGVTaXpl
LmhlaWdodCgpKTsKIAogICAgIEZsb2F0UmVjdCBvbmVUaWxlUmVjdDsKQEAgLTE2Myw3ICsxNjMs
NyBAQCB2b2lkIEltYWdlOjpkcmF3VGlsZWQoR3JhcGhpY3NDb250ZXh0KiBjCiAgICAgaWYgKHZS
dWxlID09IFJvdW5kVGlsZSkKICAgICAgICAgdlJ1bGUgPSBSZXBlYXRUaWxlOwogCi0gICAgRmxv
YXRTaXplIHNjYWxlID0gY2FsY3VsYXRlUGF0dGVyblNjYWxlKGRzdFJlY3QsIHNyY1JlY3QsIGhS
dWxlLCB2UnVsZSk7CisgICAgR3JhcGhpY3NTaXplIHNjYWxlID0gY2FsY3VsYXRlUGF0dGVyblNj
YWxlKGRzdFJlY3QsIHNyY1JlY3QsIGhSdWxlLCB2UnVsZSk7CiAgICAgQWZmaW5lVHJhbnNmb3Jt
IHBhdHRlcm5UcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZU5vblVuaWZvcm0oc2Nh
bGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogCiAgICAgLy8gV2Ugd2FudCB0byBjb25zdHJ1
Y3QgdGhlIHBoYXNlIHN1Y2ggdGhhdCB0aGUgcGF0dGVybiBpcyBjZW50ZXJlZCAod2hlbiBzdHJl
dGNoIGlzIG5vdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5o
CShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRSZWN0OwotY2xhc3MgRmxvYXRTaXpl
OworY2xhc3MgR3JhcGhpY3NTaXplOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgU2hh
cmVkQnVmZmVyOwogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYg
c3JjU2l6ZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKSB7
IH0KICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpID0gMDsKLSAgICB2b2lkIGRyYXdU
aWxlZChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UG9pbnQmIHNyY1BvaW50LCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBDb2xvclNwYWNl
IHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3IpOworICAgIHZvaWQgZHJhd1RpbGVk
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgc3JjUG9pbnQsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgdGlsZVNpemUsIENvbG9yU3BhY2Ug
c3R5bGVDb2xvclNwYWNlLCBDb21wb3NpdGVPcGVyYXRvcik7CiAgICAgdm9pZCBkcmF3VGlsZWQo
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIFRpbGVSdWxlIGhSdWxlLCBUaWxlUnVsZSB2UnVsZSwgQ29sb3JTcGFjZSBz
dHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yKTsKIAogICAgIC8vIFN1cHBvcnRpbmcg
dGlsZWQgZHJhd2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDEzICs5NywxMyBAQCB2b2lkIFBhdGg6
OmFkZFJvdW5kZWRSZWN0KGNvbnN0IFJvdW5kZWRSCiAgICAgYWRkUm91bmRlZFJlY3Qoci5yZWN0
KCksIHIucmFkaWkoKS50b3BMZWZ0KCksIHIucmFkaWkoKS50b3BSaWdodCgpLCByLnJhZGlpKCku
Ym90dG9tTGVmdCgpLCByLnJhZGlpKCkuYm90dG9tUmlnaHQoKSk7CiB9CiAKLXZvaWQgUGF0aDo6
YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHJv
dW5kaW5nUmFkaWkpCit2b2lkIFBhdGg6OmFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgR3JhcGhpY3NTaXplJiByb3VuZGluZ1JhZGlpKQogewogICAgIGlmIChyZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRTaXplIHJhZGl1cyhyb3Vu
ZGluZ1JhZGlpKTsKLSAgICBGbG9hdFNpemUgaGFsZlNpemUocmVjdC53aWR0aCgpIC8gMiwgcmVj
dC5oZWlnaHQoKSAvIDIpOworICAgIEdyYXBoaWNzU2l6ZSByYWRpdXMocm91bmRpbmdSYWRpaSk7
CisgICAgR3JhcGhpY3NTaXplIGhhbGZTaXplKHJlY3Qud2lkdGgoKSAvIDIsIHJlY3QuaGVpZ2h0
KCkgLyAyKTsKIAogICAgIC8vIElmIHJ4IGlzIGdyZWF0ZXIgdGhhbiBoYWxmIG9mIHRoZSB3aWR0
aCBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgLy8gdGhlbiBzZXQgcnggdG8gaGFsZiBvZiB0aGUgd2lk
dGggKHJlcXVpcmVkIGluIFNWRyBzcGVjKQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgUGF0aDo6
YWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWMKICAgICBhZGRCZXppZXJzRm9yUm91bmRlZFJl
Y3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHJhZGl1cywgcmFkaXVzKTsKIH0KIAotdm9pZCBQYXRo
OjphZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYg
dG9wTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxv
YXRTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFk
aXVzKQordm9pZCBQYXRoOjphZGRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IEdyYXBoaWNzU2l6ZSYgdG9wTGVmdFJhZGl1cywgY29uc3QgR3JhcGhpY3NTaXplJiB0b3BS
aWdodFJhZGl1cywgY29uc3QgR3JhcGhpY3NTaXplJiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBH
cmFwaGljc1NpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKQogewogICAgIGlmIChyZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgUGF0aDo6YWRkUm91
bmRlZFJlY3QoY29uc3QgRmxvYXRSZWMKIC8vIFRoaXMgaXMgMS1rYXBwYSwgd2hlcmUga2FwcGEg
PSA0ICogKHNxcnQoMikgLSAxKSAvIDMKIHN0YXRpYyBjb25zdCBmbG9hdCBnQ2lyY2xlQ29udHJv
bFBvaW50ID0gMC40NDc3MTVmOwogCi12b2lkIFBhdGg6OmFkZEJlemllcnNGb3JSb3VuZGVkUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wTGVmdFJhZGl1cywg
Y29uc3QgRmxvYXRTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBib3R0b21M
ZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKQordm9pZCBQYXRo
OjphZGRCZXppZXJzRm9yUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBH
cmFwaGljc1NpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgdG9wUmlnaHRS
YWRpdXMsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgR3JhcGhp
Y3NTaXplJiBib3R0b21SaWdodFJhZGl1cykKIHsKICAgICBtb3ZlVG8oRmxvYXRQb2ludChyZWN0
LngoKSArIHRvcExlZnRSYWRpdXMud2lkdGgoKSwgcmVjdC55KCkpKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDcgKzc4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEFmZmluZVRyYW5zZm9y
bTsKICAgICBjbGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFz
cyBGbG9hdFNpemU7CisgICAgY2xhc3MgR3JhcGhpY3NTaXplOwogICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKICAgICBjbGFzcyBTdHJva2VTdHlsZUFwcGxpZXI7CiAKQEAgLTEzMiwxMSArMTMy
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhZGRBcmMoY29uc3QgRmxv
YXRQb2ludCYsIGZsb2F0IHJhZGl1cywgZmxvYXQgc3RhcnRBbmdsZSwgZmxvYXQgZW5kQW5nbGUs
IGJvb2wgYW50aWNsb2Nrd2lzZSk7CiAgICAgICAgIHZvaWQgYWRkUmVjdChjb25zdCBGbG9hdFJl
Y3QmKTsKICAgICAgICAgdm9pZCBhZGRFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwotICAgICAg
ICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYg
cm91bmRpbmdSYWRpaSk7Ci0gICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHRv
cFJpZ2h0UmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpOworICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgcm91bmRpbmdSYWRpaSk7Cisg
ICAgICAgIHZvaWQgYWRkUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgR3JhcGhp
Y3NTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBHcmFwaGljc1NpemUmIHRvcFJpZ2h0UmFkaXVz
LCBjb25zdCBHcmFwaGljc1NpemUmIGJvdHRvbUxlZnRSYWRpdXMsIGNvbnN0IEdyYXBoaWNzU2l6
ZSYgYm90dG9tUmlnaHRSYWRpdXMpOwogICAgICAgICB2b2lkIGFkZFJvdW5kZWRSZWN0KGNvbnN0
IFJvdW5kZWRSZWN0Jik7CiAKLSAgICAgICAgdm9pZCB0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXpl
Jik7CisgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEdyYXBoaWNzU2l6ZSYpOwogCiAgICAg
ICAgIFBsYXRmb3JtUGF0aFB0ciBwbGF0Zm9ybVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BhdGg7
IH0KIApAQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCB0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2b2lkIGFkZEJlemllcnNGb3JSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgdG9wUmlnaHRSYWRp
dXMsIGNvbnN0IEZsb2F0U2l6ZSYgYm90dG9tTGVmdFJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBi
b3R0b21SaWdodFJhZGl1cyk7CisgICAgICAgIHZvaWQgYWRkQmV6aWVyc0ZvclJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgdG9wTGVmdFJhZGl1cywgY29u
c3QgR3JhcGhpY3NTaXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgR3JhcGhpY3NTaXplJiBib3R0
b21MZWZ0UmFkaXVzLCBjb25zdCBHcmFwaGljc1NpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKTsKIAog
ICAgICAgICBQbGF0Zm9ybVBhdGhQdHIgbV9wYXRoOwogICAgIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5j
cHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGF0aFRyYXZlcnNhbFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3IEBA
IHZvaWQgUGF0aFRyYXZlcnNhbFN0YXRlOjpwcm9jZXNzU2VnbWVudCgKICAgICAgICAgbV9zdWNj
ZXNzID0gdHJ1ZTsKICAgICAgICAgCiAgICAgaWYgKChtX2FjdGlvbiA9PSBUcmF2ZXJzYWxQb2lu
dEF0TGVuZ3RoIHx8IG1fYWN0aW9uID09IFRyYXZlcnNhbE5vcm1hbEFuZ2xlQXRMZW5ndGgpICYm
IG1fdG90YWxMZW5ndGggPj0gbV9kZXNpcmVkTGVuZ3RoKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSBj
aGFuZ2UgPSBtX2N1cnJlbnQgLSBtX3ByZXZpb3VzOworICAgICAgICBHcmFwaGljc1NpemUgY2hh
bmdlID0gbV9jdXJyZW50IC0gbV9wcmV2aW91czsKICAgICAgICAgZmxvYXQgc2xvcGUgPSBhdGFu
MmYoY2hhbmdlLmhlaWdodCgpLCBjaGFuZ2Uud2lkdGgoKSk7CiAgICAgICAgIGlmIChtX2FjdGlv
biA9PSBUcmF2ZXJzYWxQb2ludEF0TGVuZ3RoKSB7CiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQg
PSBtX2Rlc2lyZWRMZW5ndGggLSBtX3RvdGFsTGVuZ3RoOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDkxMjAwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbWFn
ZUJ1ZmZlci5nZXQoKTsKICAgICB9CiAKLSAgICB2b2lkIHNldExhc3RTaGFkb3dWYWx1ZXMoY29u
c3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpS
YWRpaSYgcmFkaWkpCisgICAgdm9pZCBzZXRMYXN0U2hhZG93VmFsdWVzKGNvbnN0IEdyYXBoaWNz
U2l6ZSYgcmFkaXVzLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Y29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJh
ZGlpKQogICAgIHsKICAgICAgICAgbV9sYXN0V2FzSW5zZXQgPSBmYWxzZTsKICAgICAgICAgbV9s
YXN0UmFkaXVzID0gcmFkaXVzOwpAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
bGFzdFJhZGlpID0gcmFkaWk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRMYXN0SW5zZXRTaGFkb3dW
YWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxvYXRSZWN0
JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKQorICAgIHZvaWQg
c2V0TGFzdEluc2V0U2hhZG93VmFsdWVzKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcmFkaXVzLCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZHMsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJh
ZGlpJiByYWRpaSkKICAgICB7CiAgICAgICAgIG1fbGFzdFdhc0luc2V0ID0gdHJ1ZTsKICAgICAg
ICAgbV9sYXN0SW5zZXRCb3VuZHMgPSBib3VuZHM7CkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBwdWJs
aWM6CiAgICAgICAgIG1fbGFzdFJhZGlpID0gcmFkaWk7CiAgICAgfQogICAgIAotICAgIGJvb2wg
bWF0Y2hlc0xhc3RTaGFkb3coY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBj
b2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3Qs
IGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpIGNvbnN0CisgICAgYm9vbCBtYXRjaGVz
TGFzdFNoYWRvdyhjb25zdCBHcmFwaGljc1NpemUmIHJhZGl1cywgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgY29u
c3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICht
X2xhc3RXYXNJbnNldCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJu
IG1fbGFzdFJhZGl1cyA9PSByYWRpdXMgJiYgbV9sYXN0Q29sb3IgPT0gY29sb3IgJiYgbV9sYXN0
Q29sb3JTcGFjZSA9PSBjb2xvclNwYWNlICYmIHNoYWRvd1JlY3QgPT0gbV9sYXN0U2hhZG93UmVj
dCAmJiByYWRpaSA9PSBtX2xhc3RSYWRpaTsKICAgICB9CiAKLSAgICBib29sIG1hdGNoZXNMYXN0
SW5zZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IENvbG9yJiBjb2xvciwg
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kcywgY29uc3QgRmxv
YXRSZWN0JiBzaGFkb3dSZWN0LCBjb25zdCBSb3VuZGVkUmVjdDo6UmFkaWkmIHJhZGlpKSBjb25z
dAorICAgIGJvb2wgbWF0Y2hlc0xhc3RJbnNldFNoYWRvdyhjb25zdCBHcmFwaGljc1NpemUmIHJh
ZGl1cywgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRzLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGNvbnN0IFJvdW5k
ZWRSZWN0OjpSYWRpaSYgcmFkaWkpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIW1fbGFzdFdh
c0luc2V0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbGVhclNjcmF0Y2hCdWZmZXIoKQogICAgIHsKICAgICAgICAgbV9p
bWFnZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgIG1fbGFzdFJhZGl1cyA9IEZsb2F0U2l6ZSgp
OworICAgICAgICBtX2xhc3RSYWRpdXMgPSBHcmFwaGljc1NpemUoKTsKICAgICB9CiAKICAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CkBAIC0xNTIsNyArMTUyLDcgQEAgcHJp
dmF0ZToKICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgbV9sYXN0UmFkaWk7CiAgICAgQ29sb3IgbV9s
YXN0Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBtX2xhc3RDb2xvclNwYWNlOwotICAgIEZsb2F0U2l6
ZSBtX2xhc3RSYWRpdXM7CisgICAgR3JhcGhpY3NTaXplIG1fbGFzdFJhZGl1czsKICAgICBib29s
IG1fbGFzdFdhc0luc2V0OwogICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTE2OCw3ICsx
NjgsNyBAQCBTY3JhdGNoQnVmZmVyJiBTY3JhdGNoQnVmZmVyOjpzaGFyZWQoKQogCiBzdGF0aWMg
Y29uc3QgaW50IHRlbXBsYXRlU2lkZUxlbmd0aCA9IDE7CiAKLVNoYWRvd0JsdXI6OlNoYWRvd0Js
dXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBjb25z
dCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK1NoYWRvd0JsdXI6OlNoYWRv
d0JsdXIoY29uc3QgR3JhcGhpY3NTaXplJiByYWRpdXMsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgb2Zm
c2V0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKICAgICA6IG1f
Y29sb3IoY29sb3IpCiAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKICAgICAsIG1fYmx1
clJhZGl1cyhyYWRpdXMpCkBAIC0xODYsNyArMTg2LDcgQEAgU2hhZG93Qmx1cjo6U2hhZG93Qmx1
cigpCiB7CiB9CiAKLXZvaWQgU2hhZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0
U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9y
LCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGJvb2wgaWdub3JlVHJhbnNmb3JtcykKK3ZvaWQgU2hh
ZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcmFkaXVzLCBjb25z
dCBHcmFwaGljc1NpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNv
bG9yU3BhY2UsIGJvb2wgaWdub3JlVHJhbnNmb3JtcykKIHsKICAgICBtX2JsdXJSYWRpdXMgPSBy
YWRpdXM7CiAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBT
aGFkb3dCbHVyOjpzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRgogdm9pZCBTaGFkb3dCbHVyOjp1cGRh
dGVTaGFkb3dCbHVyVmFsdWVzKCkKIHsKICAgICAvLyBMaW1pdCBibHVyIHJhZGl1cyB0byAxMjgg
dG8gYXZvaWQgbG90cyBvZiB2ZXJ5IGV4cGVuc2l2ZSBibHVycmluZy4KLSAgICBtX2JsdXJSYWRp
dXMgPSBtX2JsdXJSYWRpdXMuc2hydW5rVG8oRmxvYXRTaXplKDEyOCwgMTI4KSk7CisgICAgbV9i
bHVyUmFkaXVzID0gbV9ibHVyUmFkaXVzLnNocnVua1RvKEdyYXBoaWNzU2l6ZSgxMjgsIDEyOCkp
OwogCiAgICAgLy8gVGhlIHR5cGUgb2Ygc2hhZG93IGlzIGRlY2lkZWQgYnkgdGhlIGJsdXIgcmFk
aXVzLCBzaGFkb3cgb2Zmc2V0LCBhbmQgc2hhZG93IGNvbG9yLgogICAgIGlmICghbV9jb2xvci5p
c1ZhbGlkKCkgfHwgIW1fY29sb3IuYWxwaGEoKSkgewpAQCAtMjY0LDggKzI2NCw4IEBAIHZvaWQg
U2hhZG93Qmx1cjo6Y2xlYXIoKQogewogICAgIG1fdHlwZSA9IE5vU2hhZG93OwogICAgIG1fY29s
b3IgPSBDb2xvcigpOwotICAgIG1fYmx1clJhZGl1cyA9IEZsb2F0U2l6ZSgpOwotICAgIG1fb2Zm
c2V0ID0gRmxvYXRTaXplKCk7CisgICAgbV9ibHVyUmFkaXVzID0gR3JhcGhpY3NTaXplKCk7Cisg
ICAgbV9vZmZzZXQgPSBHcmFwaGljc1NpemUoKTsKIH0KIAogdm9pZCBTaGFkb3dCbHVyOjpibHVy
TGF5ZXJJbWFnZSh1bnNpZ25lZCBjaGFyKiBpbWFnZURhdGEsIGNvbnN0IEludFNpemUmIHNpemUs
IGludCByb3dTdHJpZGUpCkBAIC0zNjgsMTIgKzM2OCwxMiBAQCB2b2lkIFNoYWRvd0JsdXI6OmFk
anVzdEJsdXJSYWRpdXMoR3JhcGhpCiAgICAgY29uc3QgRmxvYXRRdWFkIHRyYW5zZm9ybWVkVW5p
dFF1YWQgPSB0cmFuc2Zvcm0ubWFwUXVhZCh1bml0UXVhZCk7CiAKICAgICAvLyBDYWxjdWxhdGUg
WCBheGlzIHNjYWxlIGZhY3Rvci4KLSAgICBjb25zdCBGbG9hdFNpemUgeFVuaXRDaGFuZ2UgPSB0
cmFuc2Zvcm1lZFVuaXRRdWFkLnAyKCkgLSB0cmFuc2Zvcm1lZFVuaXRRdWFkLnAxKCk7CisgICAg
Y29uc3QgR3JhcGhpY3NTaXplIHhVbml0Q2hhbmdlID0gdHJhbnNmb3JtZWRVbml0UXVhZC5wMigp
IC0gdHJhbnNmb3JtZWRVbml0UXVhZC5wMSgpOwogICAgIGNvbnN0IGZsb2F0IHhBeGlzU2NhbGUg
PSBzcXJ0Zih4VW5pdENoYW5nZS53aWR0aCgpICogeFVuaXRDaGFuZ2Uud2lkdGgoKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHhVbml0Q2hhbmdlLmhlaWdodCgpICogeFVu
aXRDaGFuZ2UuaGVpZ2h0KCkpOwogCiAgICAgLy8gQ2FsY3VsYXRlIFkgYXhpcyBzY2FsZSBmYWN0
b3IuCi0gICAgY29uc3QgRmxvYXRTaXplIHlVbml0Q2hhbmdlID0gdHJhbnNmb3JtZWRVbml0UXVh
ZC5wMygpIC0gdHJhbnNmb3JtZWRVbml0UXVhZC5wMSgpOworICAgIGNvbnN0IEdyYXBoaWNzU2l6
ZSB5VW5pdENoYW5nZSA9IHRyYW5zZm9ybWVkVW5pdFF1YWQucDMoKSAtIHRyYW5zZm9ybWVkVW5p
dFF1YWQucDEoKTsKICAgICBjb25zdCBmbG9hdCB5QXhpc1NjYWxlID0gc3FydGYoeVVuaXRDaGFu
Z2Uud2lkdGgoKSAqIHlVbml0Q2hhbmdlLndpZHRoKCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKyB5VW5pdENoYW5nZS5oZWlnaHQoKSAqIHlVbml0Q2hhbmdlLmhlaWdodCgp
KTsKIApAQCAtNDQ1LDEzICs0NDUsMTMgQEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVM
YXllckJvdW5kaQogICAgIG1fbGF5ZXJTaXplID0gbGF5ZXJSZWN0LnNpemUoKTsKIAogICAgIGNv
bnN0IEZsb2F0UG9pbnQgdW5jbGlwcGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBl
ZExheWVyUmVjdC54KCksIHVuY2xpcHBlZExheWVyUmVjdC55KCkpOwotICAgIGNvbnN0IEZsb2F0
U2l6ZSBjbGlwcGVkT3V0ID0gdW5jbGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVyT3JpZ2luOwor
ICAgIGNvbnN0IEdyYXBoaWNzU2l6ZSBjbGlwcGVkT3V0ID0gdW5jbGlwcGVkTGF5ZXJPcmlnaW4g
LSBtX2xheWVyT3JpZ2luOwogCiAgICAgLy8gU2V0IHRoZSBvcmlnaW4gYXMgdGhlIHRvcCBsZWZ0
IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZSwgb3IsIGluIGNhc2UgdGhlcmUncyBhIGNsaXBw
ZWQKICAgICAvLyBvdXQgcmVnaW9uLCBzZXQgdGhlIG9yaWdpbiBhY2NvcmRpbmdseSB0byB0aGUg
ZnVsbCBib3VuZGluZyByZWN0J3MgdG9wLWxlZnQgY29ybmVyLgogICAgIGZsb2F0IHRyYW5zbGF0
aW9uWCA9IC1zaGFkb3dlZFJlY3QueCgpICsgaW5mbGF0aW9uLndpZHRoKCkgLSBmYWJzZihjbGlw
cGVkT3V0LndpZHRoKCkpOwogICAgIGZsb2F0IHRyYW5zbGF0aW9uWSA9IC1zaGFkb3dlZFJlY3Qu
eSgpICsgaW5mbGF0aW9uLmhlaWdodCgpIC0gZmFic2YoY2xpcHBlZE91dC5oZWlnaHQoKSk7Ci0g
ICAgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiA9IEZsb2F0U2l6ZSh0cmFuc2xhdGlvblgsIHRy
YW5zbGF0aW9uWSk7CisgICAgbV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiA9IEdyYXBoaWNzU2l6
ZSh0cmFuc2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7CiAKICAgICByZXR1cm4gZW5jbG9zaW5nSW50
UmVjdChsYXllclJlY3QpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1
MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIEJsdXJTaGFkb3cKICAgICB9OwogCi0gICAgU2hhZG93
Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNv
bnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgU2hhZG93Qmx1cihjb25zdCBHcmFwaGljc1Np
emUmIHJhZGl1cywgY29uc3QgR3JhcGhpY3NTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiwgQ29s
b3JTcGFjZSk7CiAgICAgU2hhZG93Qmx1cigpOwogCi0gICAgdm9pZCBzZXRTaGFkb3dWYWx1ZXMo
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiAsIGNvbnN0IENvbG9yJiwgQ29sb3JT
cGFjZSwgYm9vbCBpZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOworICAgIHZvaWQgc2V0U2hhZG93
VmFsdWVzKGNvbnN0IEdyYXBoaWNzU2l6ZSYsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgLCBjb25zdCBD
b2xvciYsIENvbG9yU3BhY2UsIGJvb2wgaWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKIAogICAg
IHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBpZ25vcmVUcmFuc2Zvcm1zKSB7
IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSBpZ25vcmVUcmFuc2Zvcm1zOyB9CiAgICAgYm9v
bCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM7IH0KQEAgLTEwMiwxNSArMTAyLDE1IEBAIHByaXZhdGU6CiAKICAgICBDb2xv
ciBtX2NvbG9yOwogICAgIENvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwotICAgIEZsb2F0U2l6ZSBt
X2JsdXJSYWRpdXM7Ci0gICAgRmxvYXRTaXplIG1fb2Zmc2V0OworICAgIEdyYXBoaWNzU2l6ZSBt
X2JsdXJSYWRpdXM7CisgICAgR3JhcGhpY3NTaXplIG1fb2Zmc2V0OwogCiAgICAgSW1hZ2VCdWZm
ZXIqIG1fbGF5ZXJJbWFnZTsgLy8gQnVmZmVyIHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkgc2hhZG93
IHdpbGwgYmUgZHJhd24gdG8uCiAKICAgICBGbG9hdFJlY3QgbV9zb3VyY2VSZWN0OyAvLyBTdWIt
cmVjdCBvZiBtX2xheWVySW1hZ2UgdGhhdCBjb250YWlucyB0aGUgc2hhZG93IHBpeGVscy4KICAg
ICBGbG9hdFBvaW50IG1fbGF5ZXJPcmlnaW47IC8vIFRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgKHBv
c3NpYmx5IGNsaXBwZWQpIGJvdW5kaW5nIHJlY3QgdG8gZHJhdyB0aGUgc2hhZG93IHRvLgotICAg
IEZsb2F0U2l6ZSBtX2xheWVyU2l6ZTsgLy8gU2l6ZSBvZiBtX2xheWVySW1hZ2UgcGl4ZWxzIHRo
YXQgbmVlZCBibHVycmluZy4KLSAgICBGbG9hdFNpemUgbV9sYXllckNvbnRleHRUcmFuc2xhdGlv
bjsgLy8gVHJhbnNsYXRpb24gdG8gYXBwbHkgdG8gbV9sYXllckNvbnRleHQgZm9yIHRoZSBzaGFk
b3cgdG8gYmUgY29ycmVjdGx5IGNsaXBwZWQuCisgICAgR3JhcGhpY3NTaXplIG1fbGF5ZXJTaXpl
OyAvLyBTaXplIG9mIG1fbGF5ZXJJbWFnZSBwaXhlbHMgdGhhdCBuZWVkIGJsdXJyaW5nLgorICAg
IEdyYXBoaWNzU2l6ZSBtX2xheWVyQ29udGV4dFRyYW5zbGF0aW9uOyAvLyBUcmFuc2xhdGlvbiB0
byBhcHBseSB0byBtX2xheWVyQ29udGV4dCBmb3IgdGhlIHNoYWRvdyB0byBiZSBjb3JyZWN0bHkg
Y2xpcHBlZC4KIAogICAgIGJvb2wgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNr
aW5nU3RvcmUuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyAr
NjksNyBAQCB2b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpzZXRUaWxlQ3JlYXRpb25ECiAgICAgbV90
aWxlQ3JlYXRpb25EZWxheSA9IGRlbGF5OwogfQogCi12b2lkIFRpbGVkQmFja2luZ1N0b3JlOjpz
ZXRLZWVwQW5kQ292ZXJBcmVhTXVsdGlwbGllcnMoY29uc3QgRmxvYXRTaXplJiBrZWVwTXVsdGlw
bGllciwgY29uc3QgRmxvYXRTaXplJiBjb3Zlck11bHRpcGxpZXIpCit2b2lkIFRpbGVkQmFja2lu
Z1N0b3JlOjpzZXRLZWVwQW5kQ292ZXJBcmVhTXVsdGlwbGllcnMoY29uc3QgR3JhcGhpY3NTaXpl
JiBrZWVwTXVsdGlwbGllciwgY29uc3QgR3JhcGhpY3NTaXplJiBjb3Zlck11bHRpcGxpZXIpCiB7
CiAgICAgbV9rZWVwQXJlYU11bHRpcGxpZXIgPSBrZWVwTXVsdGlwbGllcjsKICAgICBtX2NvdmVy
QXJlYU11bHRpcGxpZXIgPSBjb3Zlck11bHRpcGxpZXI7CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9p
ZCBUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnQoR3JhcGhpY3NDbwogICAgIAogICAgIC8vIEFzc3Vt
ZXMgdGhlIGJhY2tpbmcgc3RvcmUgaXMgcGFpbnRlZCB3aXRoIHRoZSBzY2FsZSB0cmFuc2Zvcm0g
YXBwbGllZC4KICAgICAvLyBTaW5jZSB0aWxlIGNvbnRlbnQgaXMgYWxyZWFkeSBzY2FsZWQsIGZp
cnN0IHJldmVydCB0aGUgc2NhbGluZyBmcm9tIHRoZSBwYWludGVyLgotICAgIGNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSgxLmYgLyBtX2NvbnRlbnRzU2NhbGUsIDEuZiAvIG1fY29udGVudHNTY2Fs
ZSkpOworICAgIGNvbnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6ZSgxLmYgLyBtX2NvbnRlbnRzU2Nh
bGUsIDEuZiAvIG1fY29udGVudHNTY2FsZSkpOwogICAgIAogICAgIEludFJlY3QgZGlydHlSZWN0
ID0gbWFwRnJvbUNvbnRlbnRzKHJlY3QpOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVGlsZWRCYWNraW5nU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UaWxlZEJhY2tpbmdTdG9yZS5oCShyZXZpc2lvbiA5
MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RpbGVkQmFja2luZ1N0
b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQogCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CiAjaW5jbHVkZSAiVGlsZS5oIgpAQCAtNjAsMTIgKzYwLDEyIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFRpbGVDcmVhdGlvbkRlbGF5KGRvdWJsZSBkZWxheSk7CiAgICAgCiAgICAgLy8gVGlsZWQg
YXJlIGRyb3BwZWQgb3V0c2lkZSB0aGUga2VlcCBhcmVhLCBhbmQgY3JlYXRlZCBmb3IgY292ZXIg
YXJlYS4gVGhlIHZhbHVlcyBhIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydCBzaXplLgotICAgIHZv
aWQgZ2V0S2VlcEFuZENvdmVyQXJlYU11bHRpcGxpZXJzKEZsb2F0U2l6ZSYga2VlcE11bHRpcGxp
ZXIsIEZsb2F0U2l6ZSYgY292ZXJNdWx0aXBsaWVyKQorICAgIHZvaWQgZ2V0S2VlcEFuZENvdmVy
QXJlYU11bHRpcGxpZXJzKEdyYXBoaWNzU2l6ZSYga2VlcE11bHRpcGxpZXIsIEdyYXBoaWNzU2l6
ZSYgY292ZXJNdWx0aXBsaWVyKQogICAgIHsKICAgICAgICAga2VlcE11bHRpcGxpZXIgPSBtX2tl
ZXBBcmVhTXVsdGlwbGllcjsKICAgICAgICAgY292ZXJNdWx0aXBsaWVyID0gbV9jb3ZlckFyZWFN
dWx0aXBsaWVyOwogICAgIH0KLSAgICB2b2lkIHNldEtlZXBBbmRDb3ZlckFyZWFNdWx0aXBsaWVy
cyhjb25zdCBGbG9hdFNpemUmIGtlZXBNdWx0aXBsaWVyLCBjb25zdCBGbG9hdFNpemUmIGNvdmVy
TXVsdGlwbGllcik7ICAgIAorICAgIHZvaWQgc2V0S2VlcEFuZENvdmVyQXJlYU11bHRpcGxpZXJz
KGNvbnN0IEdyYXBoaWNzU2l6ZSYga2VlcE11bHRpcGxpZXIsIGNvbnN0IEdyYXBoaWNzU2l6ZSYg
Y292ZXJNdWx0aXBsaWVyKTsgICAgCiAKIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFRpbGVCdWZm
ZXJVcGRhdGVUaW1lcigpOwpAQCAtMTEwLDggKzExMCw4IEBAIHByaXZhdGU6CiAKICAgICBJbnRT
aXplIG1fdGlsZVNpemU7CiAgICAgZG91YmxlIG1fdGlsZUNyZWF0aW9uRGVsYXk7Ci0gICAgRmxv
YXRTaXplIG1fa2VlcEFyZWFNdWx0aXBsaWVyOwotICAgIEZsb2F0U2l6ZSBtX2NvdmVyQXJlYU11
bHRpcGxpZXI7CisgICAgR3JhcGhpY3NTaXplIG1fa2VlcEFyZWFNdWx0aXBsaWVyOworICAgIEdy
YXBoaWNzU2l6ZSBtX2NvdmVyQXJlYU11bHRpcGxpZXI7CiAgICAgCiAgICAgSW50UmVjdCBtX3By
ZXZpb3VzVmlzaWJsZVJlY3Q7CiAgICAgZmxvYXQgbV9jb250ZW50c1NjYWxlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAko
cmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElP
TikKIAotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMjUxLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAKICAg
ICBTdHJpbmcgbV9hc3NldFVSTDsKICAgICBNZWRpYVBsYXllcjo6UHJlbG9hZCBtX3ByZWxvYWQ7
Ci0gICAgRmxvYXRTaXplIG1fc2NhbGVGYWN0b3I7CisgICAgR3JhcGhpY3NTaXplIG1fc2NhbGVG
YWN0b3I7CiAKICAgICBJbnRTaXplIG1fY2FjaGVkTmF0dXJhbFNpemU7CiAgICAgbXV0YWJsZSBm
bG9hdCBtX2NhY2hlZE1heFRpbWVMb2FkZWQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24g
OTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NjA3LDcgKzYwNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzoK
ICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0
ZVNhdmVyKCpjb250ZXh0KTsKICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCBy
ZWN0LnkoKSArIHJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoMS4wZiwgLTEuMGYpKTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoR3JhcGhpY3NTaXplKDEu
MGYsIC0xLjBmKSk7CiAgICAgICAgIGNvbnRleHQtPnNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvbkxvdyk7CiAgICAgICAgIEludFJlY3QgcGFpbnRSZWN0KEludFBvaW50
KDAsIDApLCBJbnRTaXplKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwogICAgICAgICBD
R0NvbnRleHREcmF3SW1hZ2UoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIENHUmVjdE1ha2Uo
MCwgMCwgcGFpbnRSZWN0LndpZHRoKCksIHBhaW50UmVjdC5oZWlnaHQoKSksIGltYWdlLmdldCgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5
ZXJDQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTIsNyArMzkyLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNldEFuY2hvclBvaW50
KGNvbgogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZChHZW9tZXRyeUNoYW5nZWQpOwogfQog
Ci12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2
b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0U2l6ZShjb25zdCBHcmFwaGljc1NpemUmIHNpemUpCiB7
CiAgICAgaWYgKHNpemUgPT0gbV9zaXplKQogICAgICAgICByZXR1cm47CkBAIC0xMDA2LDE1ICsx
MDA2LDE1IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVHZW9tZXRyeShmbG8KIHsKICAg
ICBGbG9hdFBvaW50IHNjYWxlZFBvc2l0aW9uOwogICAgIEZsb2F0UG9pbnQzRCBzY2FsZWRBbmNo
b3JQb2ludDsKLSAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZTsKLSAgICBGbG9hdFNpemUgcGl4ZWxB
bGlnbm1lbnRPZmZzZXQ7CisgICAgR3JhcGhpY3NTaXplIHNjYWxlZFNpemU7CisgICAgR3JhcGhp
Y3NTaXplIHBpeGVsQWxpZ25tZW50T2Zmc2V0OwogICAgIGNvbXB1dGVQaXhlbEFsaWdubWVudChw
YWdlU2NhbGVGYWN0b3IsIHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UsIHNjYWxlZFBvc2l0aW9uLCBz
Y2FsZWRTaXplLCBzY2FsZWRBbmNob3JQb2ludCwgcGl4ZWxBbGlnbm1lbnRPZmZzZXQpOwogCiAg
ICAgYm9vbCBuZWVkVGlsZWRMYXllciA9IHJlcXVpcmVzVGlsZWRMYXllcihwYWdlU2NhbGVGYWN0
b3IsIHNjYWxlZFNpemUpOwogICAgIGlmIChuZWVkVGlsZWRMYXllciAhPSBtX3VzaW5nVGlsZWRM
YXllcikKICAgICAgICAgc3dhcEZyb21PclRvVGlsZWRMYXllcihuZWVkVGlsZWRMYXllciwgcGFn
ZVNjYWxlRmFjdG9yLCBwb3NpdGlvblJlbGF0aXZlVG9CYXNlKTsKIAotICAgIEZsb2F0U2l6ZSB1
c2VkU2l6ZSA9IG1fdXNpbmdUaWxlZExheWVyID8gY29uc3RyYWluZWRTaXplKCkgOiBzY2FsZWRT
aXplOworICAgIEdyYXBoaWNzU2l6ZSB1c2VkU2l6ZSA9IG1fdXNpbmdUaWxlZExheWVyID8gY29u
c3RyYWluZWRTaXplKCkgOiBzY2FsZWRTaXplOwogICAgIEZsb2F0UmVjdCBhZGp1c3RlZEJvdW5k
cyhtX2JvdW5kc09yaWdpbiAtIHBpeGVsQWxpZ25tZW50T2Zmc2V0LCB1c2VkU2l6ZSk7CiAKICAg
ICAvLyBVcGRhdGUgcG9zaXRpb24uCkBAIC0yMDE4LDkgKzIwMTgsOSBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJDQTo6c2V0RGVidWdCb3JkZXIoY29uCiAgICAgfQogfQogCi1GbG9hdFNpemUgR3JhcGhp
Y3NMYXllckNBOjpjb25zdHJhaW5lZFNpemUoKSBjb25zdAorR3JhcGhpY3NTaXplIEdyYXBoaWNz
TGF5ZXJDQTo6Y29uc3RyYWluZWRTaXplKCkgY29uc3QKIHsKLSAgICBGbG9hdFNpemUgY29uc3Ry
YWluZWRTaXplID0gbV9zaXplOworICAgIEdyYXBoaWNzU2l6ZSBjb25zdHJhaW5lZFNpemUgPSBt
X3NpemU7CiAjaWYgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSB8fCBkZWZpbmVkKEJVSUxE
SU5HX09OX1NOT1dfTEVPUEFSRCkKICAgICBmbG9hdCB0aWxlQ29sdW1ucyA9IGNlaWxmKG1fc2l6
ZS53aWR0aCgpIC8ga1RpbGVkTGF5ZXJUaWxlU2l6ZSk7CiAgICAgZmxvYXQgdGlsZVJvd3MgPSBj
ZWlsZihtX3NpemUuaGVpZ2h0KCkgLyBrVGlsZWRMYXllclRpbGVTaXplKTsKQEAgLTIwNDIsNyAr
MjA0Miw3IEBAIEZsb2F0U2l6ZSBHcmFwaGljc0xheWVyQ0E6OmNvbnN0cmFpbmVkU2kKICAgICBy
ZXR1cm4gY29uc3RyYWluZWRTaXplOwogfQogCi1ib29sIEdyYXBoaWNzTGF5ZXJDQTo6cmVxdWly
ZXNUaWxlZExheWVyKGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRTaXplJiBzaXpl
KSBjb25zdAorYm9vbCBHcmFwaGljc0xheWVyQ0E6OnJlcXVpcmVzVGlsZWRMYXllcihmbG9hdCBw
YWdlU2NhbGVGYWN0b3IsIGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkgY29uc3QKIHsKICAgICBp
ZiAoIW1fZHJhd3NDb250ZW50IHx8ICFtX2FsbG93VGlsZWRMYXllcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjQxOSwxMyArMjQxOSwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNJbnRl
Z3JhbChmbG9hdCB2YWx1CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNBOjpjb21wdXRlUGl4ZWxB
bGlnbm1lbnQoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
blJlbGF0aXZlVG9CYXNlLAotICAgIEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBGbG9hdFNpemUmIHNp
emUsIEZsb2F0UG9pbnQzRCYgYW5jaG9yUG9pbnQsIEZsb2F0U2l6ZSYgYWxpZ25tZW50T2Zmc2V0
KSBjb25zdAorICAgIEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBHcmFwaGljc1NpemUmIHNpemUsIEZs
b2F0UG9pbnQzRCYgYW5jaG9yUG9pbnQsIEdyYXBoaWNzU2l6ZSYgYWxpZ25tZW50T2Zmc2V0KSBj
b25zdAogewogICAgIGlmICghbV9tYWludGFpbnNQaXhlbEFsaWdubWVudCB8fCBpc0ludGVncmFs
KHBhZ2VTY2FsZUZhY3RvcikgfHwgIW1fZHJhd3NDb250ZW50IHx8IG1fbWFza3NUb0JvdW5kcykg
ewogICAgICAgICBwb3NpdGlvbiA9IG1fcG9zaXRpb247CiAgICAgICAgIHNpemUgPSBtX3NpemU7
CiAgICAgICAgIGFuY2hvclBvaW50ID0gbV9hbmNob3JQb2ludDsKLSAgICAgICAgYWxpZ25tZW50
T2Zmc2V0ID0gRmxvYXRTaXplKCk7CisgICAgICAgIGFsaWdubWVudE9mZnNldCA9IEdyYXBoaWNz
U2l6ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgJKHJl
dmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNpemUoY29uc3QgR3JhcGhpY3NTaXplJik7CiAgICAgdmlydHVhbCB2b2lkIHNldEJvdW5kc09y
aWdpbihjb25zdCBGbG9hdFBvaW50Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CkBAIC0xODYsOSArMTg2LDkgQEAgcHJpdmF0
ZToKIAogICAgIEZsb2F0UG9pbnQgY29tcHV0ZVBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UoZmxvYXQm
IHBhZ2VTY2FsZSkgY29uc3Q7CiAKLSAgICBGbG9hdFNpemUgY29uc3RyYWluZWRTaXplKCkgY29u
c3Q7CisgICAgR3JhcGhpY3NTaXplIGNvbnN0cmFpbmVkU2l6ZSgpIGNvbnN0OwogCi0gICAgYm9v
bCByZXF1aXJlc1RpbGVkTGF5ZXIoZmxvYXQgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBGbG9hdFNp
emUmKSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzVGlsZWRMYXllcihmbG9hdCBwYWdlU2NhbGVG
YWN0b3IsIGNvbnN0IEdyYXBoaWNzU2l6ZSYpIGNvbnN0OwogICAgIHZvaWQgc3dhcEZyb21PclRv
VGlsZWRMYXllcihib29sIHVzZVRpbGVkTGF5ZXIsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb25SZWxhdGl2ZVRvQmFzZSk7CiAKICAgICBDb21wb3NpdGlu
Z0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gZGVmYXVsdENvbnRlbnRzT3JpZW50YXRpb24oKSBjb25z
dDsKQEAgLTIwMCw3ICsyMDAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBs
aWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKik7CiAKICAgICB2b2lkIGNvbXB1dGVQaXhlbEFs
aWdubWVudChmbG9hdCBwaXhlbEFsaWdubWVudFNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBwb3Np
dGlvblJlbGF0aXZlVG9CYXNlLAotICAgICAgICBGbG9hdFBvaW50JiBwb3NpdGlvbiwgRmxvYXRT
aXplJiwgRmxvYXRQb2ludDNEJiBhbmNob3JQb2ludCwgRmxvYXRTaXplJiBhbGlnbm1lbnRPZmZz
ZXQpIGNvbnN0OworICAgICAgICBGbG9hdFBvaW50JiBwb3NpdGlvbiwgR3JhcGhpY3NTaXplJiwg
RmxvYXRQb2ludDNEJiBhbmNob3JQb2ludCwgR3JhcGhpY3NTaXplJiBhbGlnbm1lbnRPZmZzZXQp
IGNvbnN0OwogCiAgICAgLy8gVXNlZCB0byB0cmFjayB0aGUgcGF0aCBkb3duIHRoZSB0cmVlIGZv
ciByZXBsaWNhIGxheWVycy4KICAgICBzdHJ1Y3QgUmVwbGljYVN0YXRlIHsKQEAgLTQwMyw3ICs0
MDMsNyBAQCBwcml2YXRlOgogICAgIEFuaW1hdGlvbnNNYXAgbV9ydW5uaW5nQW5pbWF0aW9uczsK
IAogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IG1fZGlydHlSZWN0czsKLSAgICBGbG9hdFNpemUgbV9w
aXhlbEFsaWdubWVudE9mZnNldDsKKyAgICBHcmFwaGljc1NpemUgbV9waXhlbEFsaWdubWVudE9m
ZnNldDsKICAgICAKICAgICBMYXllckNoYW5nZUZsYWdzIG1fdW5jb21taXR0ZWRDaGFuZ2VzOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHJldmlzaW9uIDkxMjAwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsOCArMjk2LDggQEAgc3RhdGljIHZvaWQg
ZHJhd0xpbmVPbkNhaXJvQ29udGV4dChHcmFwaAogICAgIGlmIChwYXR0ZXJuV2lkdGgpIHsKICAg
ICAgICAgLy8gRG8gYSByZWN0IGZpbGwgb2Ygb3VyIGVuZHBvaW50cy4gIFRoaXMgZW5zdXJlcyB3
ZSBhbHdheXMgaGF2ZSB0aGUKICAgICAgICAgLy8gYXBwZWFyYW5jZSBvZiBiZWluZyBhIGJvcmRl
ci4gIFdlIHRoZW4gZHJhdyB0aGUgYWN0dWFsIGRvdHRlZC9kYXNoZWQgbGluZS4KLSAgICAgICAg
RmxvYXRSZWN0IGZpcnN0UmVjdChwb2ludDFPblBpeGVsQm91bmRhcmllcywgRmxvYXRTaXplKHN0
cm9rZVRoaWNrbmVzcywgc3Ryb2tlVGhpY2tuZXNzKSk7Ci0gICAgICAgIEZsb2F0UmVjdCBzZWNv
bmRSZWN0KHBvaW50Mk9uUGl4ZWxCb3VuZGFyaWVzLCBGbG9hdFNpemUoc3Ryb2tlVGhpY2tuZXNz
LCBzdHJva2VUaGlja25lc3MpKTsKKyAgICAgICAgRmxvYXRSZWN0IGZpcnN0UmVjdChwb2ludDFP
blBpeGVsQm91bmRhcmllcywgR3JhcGhpY3NTaXplKHN0cm9rZVRoaWNrbmVzcywgc3Ryb2tlVGhp
Y2tuZXNzKSk7CisgICAgICAgIEZsb2F0UmVjdCBzZWNvbmRSZWN0KHBvaW50Mk9uUGl4ZWxCb3Vu
ZGFyaWVzLCBHcmFwaGljc1NpemUoc3Ryb2tlVGhpY2tuZXNzLCBzdHJva2VUaGlja25lc3MpKTsK
ICAgICAgICAgaWYgKGlzVmVydGljYWxMaW5lKSB7CiAgICAgICAgICAgICBmaXJzdFJlY3QubW92
ZSgtc3Ryb2tlVGhpY2tuZXNzIC8gMiwgLXN0cm9rZVRoaWNrbmVzcyk7CiAgICAgICAgICAgICBz
ZWNvbmRSZWN0Lm1vdmUoLXN0cm9rZVRoaWNrbmVzcyAvIDIsIDApOwpAQCAtNjE5LDcgKzYxOSw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnMKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcmVjdENvdW50OyArK2kpIHsKICAgICAgICAgaWYgKGkgPiAwKQog
ICAgICAgICAgICAgcGF0aC5jbGVhcigpOwotICAgICAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJl
Y3RzW2ldLCBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpKTsKKyAgICAgICAgcGF0aC5hZGRSb3Vu
ZGVkUmVjdChyZWN0c1tpXSwgR3JhcGhpY3NTaXplKHJhZGl1cywgcmFkaXVzKSk7CiAgICAgICAg
IGFwcGVuZFdlYkNvcmVQYXRoVG9DYWlyb0NvbnRleHQoY3IsIHBhdGgpOwogICAgIH0KICNlbmRp
ZgpAQCAtNjUzLDcgKzY1Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRl
eHQoY28KIAogICAgIC8vIFRoaXMgYnVtcGluZyBvZiA8MSBzdHJva2UgdGhpY2tuZXNzZXMgbWF0
Y2hlcyB0aGUgb25lIGluIGRyYXdMaW5lT25DYWlyb0NvbnRleHQuCiAgICAgRmxvYXRQb2ludCBl
bmRQb2ludChvcmlnaW4gKyBJbnRTaXplKHdpZHRoLCAwKSk7Ci0gICAgRmxvYXRSZWN0IGxpbmVF
eHRlbnRzKG9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCBzdHJva2VUaGlja25lc3MoKSkpOworICAg
IEZsb2F0UmVjdCBsaW5lRXh0ZW50cyhvcmlnaW4sIEdyYXBoaWNzU2l6ZSh3aWR0aCwgc3Ryb2tl
VGhpY2tuZXNzKCkpKTsKIAogICAgIENvbnRleHRTaGFkb3cqIHNoYWRvdyA9IGNvbnRleHRTaGFk
b3coKTsKICAgICBBU1NFUlQoc2hhZG93KTsKQEAgLTg0MywxNiArODQzLDE2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjphZGRJbm5lclJvdW5kZWRSZWMKICAgICBjYWlyb19zZXRfZmlsbF9ydWxl
KGNyLCBzYXZlZEZpbGxSdWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQgYmx1ciwgQ29sb3IgY29uc3Qm
IGNvbG9yLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hh
ZG93KEdyYXBoaWNzU2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQgYmx1ciwgQ29sb3IgY29uc3QmIGNv
bG9yLCBDb2xvclNwYWNlKQogewogICAgIC8vIENhaXJvIGRvZXNuJ3Qgc3VwcG9ydCBzaGFkb3dz
IG5hdGl2ZWx5LCB0aGV5IGFyZSBkcmF3biBtYW51YWxseSBpbiB0aGUgZHJhdyogZnVuY3Rpb25z
CiAgICAgaWYgKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgLy8g
TWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3MgY29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBD
YW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgIC8vIFdlIGZsaXAgdGhlIGhlaWdodCBzaW5j
ZSBDRyBhbmQgSFRNTDUgQ2FudmFzIGhhdmUgb3Bwb3NpdGUgWSBheGlzCi0gICAgICAgIG1fc3Rh
dGUuc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkp
OwotICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFkb3coY29sb3IsIGJsdXIsIEZs
b2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKSk7CisgICAgICAgIG1fc3RhdGUu
c2hhZG93T2Zmc2V0ID0gR3JhcGhpY3NTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkp
OworICAgICAgICBtX2RhdGEtPnNoYWRvdyA9IENvbnRleHRTaGFkb3coY29sb3IsIGJsdXIsIEdy
YXBoaWNzU2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKSk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIG1fZGF0YS0+c2hhZG93ID0gQ29udGV4dFNoYWRvdyhjb2xvciwgYmx1ciwgRmxvYXRT
aXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkpOworICAgICAgICBtX2RhdGEtPnNoYWRv
dyA9IENvbnRleHRTaGFkb3coY29sb3IsIGJsdXIsIEdyYXBoaWNzU2l6ZShzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpKTsKIAogICAgIG1fZGF0YS0+c2hhZG93LnNldFNoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwogfQpAQCAtMTAzMCw3
ICsxMDMwLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJvdGF0ZShmbG9hdCByYWRpYQogICAg
IG1fZGF0YS0+cm90YXRlKHJhZGlhbnMpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2Nh
bGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxlKGNv
bnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBs
YXRmb3JtUHJpdmF0ZUNhaXJvLmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fp
cm8uaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBm
bHVzaCgpOwogICAgIHZvaWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIGNsaXAo
Y29uc3QgUGF0aCYpOwotICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7CisgICAgdm9p
ZCBzY2FsZShjb25zdCBHcmFwaGljc1NpemUmKTsKICAgICB2b2lkIHJvdGF0ZShmbG9hdCk7CiAg
ICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQsIGZsb2F0KTsKICAgICB2b2lkIGNvbmNhdENUTShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKQEAgLTg4LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Zmx1c2goKSB7fQogICAgIHZvaWQgY2xpcChjb25zdCBGbG9hdFJlY3QmKSB7fQogICAgIHZvaWQg
Y2xpcChjb25zdCBQYXRoJikge30KLSAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpIHt9
CisgICAgdm9pZCBzY2FsZShjb25zdCBHcmFwaGljc1NpemUmKSB7IH0KICAgICB2b2lkIHJvdGF0
ZShmbG9hdCkge30KICAgICB2b2lkIHRyYW5zbGF0ZShmbG9hdCwgZmxvYXQpIHt9CiAgICAgdm9p
ZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJikge30KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdGhDYWlyby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0aENhaXJvLmNwcAkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Q
YXRoQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIEZsb2F0UG9pbnQg
UGF0aDo6Y3VycmVudFBvaW50KCkgY29uc3QgCiAgICAgcmV0dXJuIEZsb2F0UG9pbnQoeCwgeSk7
CiB9CiAKLXZvaWQgUGF0aDo6dHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYgcCkKK3ZvaWQgUGF0
aDo6dHJhbnNsYXRlKGNvbnN0IEdyYXBoaWNzU2l6ZSYgcCkKIHsKICAgICBjYWlyb190KiBjciA9
IHBsYXRmb3JtUGF0aCgpLT5jb250ZXh0KCk7CiAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCAtcC53
aWR0aCgpLCAtcC5oZWlnaHQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9GbG9hdFNpemVDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Zsb2F0U2l6ZUNHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDA1IE5va2lhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLSAKLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKLQotI2lmIFVTRShDRykgfHwgVVNF
KFNLSUFfT05fTUFDX0NIUk9NSVVNKSB8fCAoUExBVEZPUk0oUVQpICYmIFVTRShRVEtJVCkpCi0K
LSNpbmNsdWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1GbG9hdFNpemU6OkZsb2F0U2l6ZShjb25zdCBDR1NpemUm
IHMpIDogbV93aWR0aChzLndpZHRoKSwgbV9oZWlnaHQocy5oZWlnaHQpCi17Ci19Ci0KLUZsb2F0
U2l6ZTo6b3BlcmF0b3IgQ0dTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ0dTaXplTWFrZSht
X3dpZHRoLCBtX2hlaWdodCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGlj
c0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjksNyArMzI5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbgog
ICAgIGZsb2F0IHJldmVyc2VTY2FsZUZhY3RvciA9IHcgLyBoOwogCiAgICAgaWYgKHcgIT0gaCkK
LSAgICAgICAgc2NhbGUoRmxvYXRTaXplKDEsIHNjYWxlRmFjdG9yKSk7CisgICAgICAgIHNjYWxl
KEdyYXBoaWNzU2l6ZSgxLCBzY2FsZUZhY3RvcikpOwogCiAgICAgZmxvYXQgaFJhZGl1cyA9IHcg
LyAyOwogICAgIGZsb2F0IHZSYWRpdXMgPSBoIC8gMjsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQXJjKGNvbnN0IEluCiAgICAgQ0dDb250ZXh0QWRkQXJj
KGNvbnRleHQsIHggKyBoUmFkaXVzLCAoeSArIHZSYWRpdXMpICogcmV2ZXJzZVNjYWxlRmFjdG9y
LCBoUmFkaXVzLCBzdGFydCwgZW5kLCB0cnVlKTsKIAogICAgIGlmICh3ICE9IGgpCi0gICAgICAg
IHNjYWxlKEZsb2F0U2l6ZSgxLCByZXZlcnNlU2NhbGVGYWN0b3IpKTsKKyAgICAgICAgc2NhbGUo
R3JhcGhpY3NTaXplKDEsIHJldmVyc2VTY2FsZUZhY3RvcikpOwogCiAgICAgZmxvYXQgd2lkdGgg
PSBzdHJva2VUaGlja25lc3MoKTsKICAgICBpbnQgcGF0V2lkdGggPSAwOwpAQCAtNzAyLDcgKzcw
Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG8KICAgICAgICAg
Q0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93
V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAg
ICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0Js
dXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5z
aGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KEdyYXBo
aWNzU2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1f
c3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFjZSk7CiAgICAgICAgIGNv
bnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlp
KCkpOwogICAgIH0KIApAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdChjb25zdCBGbG8KICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsK
ICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBD
R1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coRmxv
YXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9z
dGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgU2hh
ZG93Qmx1ciBjb250ZXh0U2hhZG93KEdyYXBoaWNzU2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVy
KSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hh
ZG93Q29sb3JTcGFjZSk7CiAgICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhp
cywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKCkpOwogICAgIH0KIApAQCAtNzY0LDcgKzc2NCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY28KICAgICAgICAgQ0dD
b250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0U2V0U2hhZG93V2l0
aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsKIAotICAgICAgICBT
aGFkb3dCbHVyIGNvbnRleHRTaGFkb3coRmxvYXRTaXplKHNoYWRvd0JsdXIsIHNoYWRvd0JsdXIp
LCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFk
b3dDb2xvclNwYWNlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hhZG93KEdyYXBoaWNz
U2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQsIG1fc3Rh
dGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFjZSk7CiAgICAgICAgIGNvbnRl
eHRTaGFkb3cuZHJhd1JlY3RTaGFkb3codGhpcywgcmVjdCwgUm91bmRlZFJlY3Q6OlJhZGlpKHRv
cExlZnQsIHRvcFJpZ2h0LCBib3R0b21MZWZ0LCBib3R0b21SaWdodCkpOwogICAgIH0KIApAQCAt
ODE3LDcgKzgxNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUK
ICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0
U2V0U2hhZG93V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBDR1NpemVaZXJvLCAwLCAwKTsK
IAotICAgICAgICBTaGFkb3dCbHVyIGNvbnRleHRTaGFkb3coRmxvYXRTaXplKHNoYWRvd0JsdXIs
IHNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwg
bV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgU2hhZG93Qmx1ciBjb250ZXh0U2hh
ZG93KEdyYXBoaWNzU2l6ZShzaGFkb3dCbHVyLCBzaGFkb3dCbHVyKSwgbV9zdGF0ZS5zaGFkb3dP
ZmZzZXQsIG1fc3RhdGUuc2hhZG93Q29sb3IsIG1fc3RhdGUuc2hhZG93Q29sb3JTcGFjZSk7CiAg
ICAgICAgIGNvbnRleHRTaGFkb3cuZHJhd0luc2V0U2hhZG93KHRoaXMsIHJlY3QsIHJvdW5kZWRI
b2xlUmVjdC5yZWN0KCksIHJvdW5kZWRIb2xlUmVjdC5yYWRpaSgpKTsKICAgICB9CiAKQEAgLTkx
NSw3ICs5MTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kVHJhbnNwYXJlbmN5TGF5CiAg
ICAgcmVzdG9yZSgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFk
b3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xv
ciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRm
b3JtU2hhZG93KGNvbnN0IEdyYXBoaWNzU2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTI0LDcgKzExMjQsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBQYXRoCiAgICAgQ0dDb250ZXh0RU9DbGlwKHBs
YXRmb3JtQ29udGV4dCgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzY2FsZShjb25zdCBHcmFw
aGljc1NpemUmIHNpemUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5o
CShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmx1c2goKSB7fQogICAgIHZvaWQgY2xpcChj
b25zdCBGbG9hdFJlY3QmKSB7fQogICAgIHZvaWQgY2xpcChjb25zdCBQYXRoJikge30KLSAgICB2
b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpIHt9CisgICAgdm9pZCBzY2FsZShjb25zdCBHcmFw
aGljc1NpemUmKSB7IH0KICAgICB2b2lkIHJvdGF0ZShmbG9hdCkge30KICAgICB2b2lkIHRyYW5z
bGF0ZShmbG9hdCwgZmxvYXQpIHt9CiAgICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJikge30KQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZmx1c2goKTsK
ICAgICB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBjbGlwKGNvbnN0IFBh
dGgmKTsKLSAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIHZvaWQgc2NhbGUo
Y29uc3QgR3JhcGhpY3NTaXplJik7CiAgICAgdm9pZCByb3RhdGUoZmxvYXQpOwogICAgIHZvaWQg
dHJhbnNsYXRlKGZsb2F0LCBmbG9hdCk7CiAgICAgdm9pZCBjb25jYXRDVE0oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc1NpemVDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NTaXplQ0cuY3BwCShyZXZpc2lvbiA5MTIwMCkJKGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvRmxvYXRTaXplQ0cuY3BwOjkxMjAwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NTaXplQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDUgTm9raWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworIAor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorCisjaWYgVVNFKENH
KSB8fCBVU0UoU0tJQV9PTl9NQUNfQ0hST01JVU0pIHx8IChQTEFURk9STShRVCkgJiYgVVNFKFFU
S0lUKSkKKworI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNl
cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Zsb2F0U2l6ZTo6RmxvYXRTaXplKGNvbnN0
IENHU2l6ZSYgcykgOiBtX3dpZHRoKHMud2lkdGgpLCBtX2hlaWdodChzLmhlaWdodCkKK3sKK30K
KworRmxvYXRTaXplOjpvcGVyYXRvciBDR1NpemUoKSBjb25zdAoreworICAgIHJldHVybiBDR1Np
emVNYWtlKG1fd2lkdGgsIG1faGVpZ2h0KTsKK30KKworfQorCisjZW5kaWYgLy8gVVNFKENHKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NTaXplQ0cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzU2l6ZUNHLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc1NpemVDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDcgKzI1LDcgQEAKICAqLwogIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogCiAjaWYgVVNFKENHKSB8fCBVU0Uo
U0tJQV9PTl9NQUNfQ0hST01JVU0pIHx8IChQTEFURk9STShRVCkgJiYgVVNFKFFUS0lUKSkKIApA
QCAtMzMsMTEgKzMzLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRmxvYXRTaXplOjpG
bG9hdFNpemUoY29uc3QgQ0dTaXplJiBzKSA6IG1fd2lkdGgocy53aWR0aCksIG1faGVpZ2h0KHMu
aGVpZ2h0KQorR3JhcGhpY3NTaXplOjpHcmFwaGljc1NpemUoY29uc3QgQ0dTaXplJiBzKSA6IG1f
d2lkdGgocy53aWR0aCksIG1faGVpZ2h0KHMuaGVpZ2h0KQogewogfQogCi1GbG9hdFNpemU6Om9w
ZXJhdG9yIENHU2l6ZSgpIGNvbnN0CitHcmFwaGljc1NpemU6Om9wZXJhdG9yIENHU2l6ZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIENHU2l6ZU1ha2UobV93aWR0aCwgbV9oZWlnaHQpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsx
NTgsNyBAQCBJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIoY29uc3QgSW50U2l6ZSYgCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fY29udGV4dD0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dChj
Z0NvbnRleHQuZ2V0KCkpKTsKLSAgICBtX2NvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkp
OworICAgIG1fY29udGV4dC0+c2NhbGUoR3JhcGhpY3NTaXplKDEsIC0xKSk7CiAgICAgbV9jb250
ZXh0LT50cmFuc2xhdGUoMCwgLXNpemUuaGVpZ2h0KCkpOwogICAgIHN1Y2Nlc3MgPSB0cnVlOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VD
Ry5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lk
IEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAgICAgLy8gSWYgdGhlIHNvdXJj
ZSByZWN0IGlzIGEgc3VicG9ydGlvbiBvZiB0aGUgaW1hZ2UsIHRoZW4gd2UgY29tcHV0ZSBhbiBp
bmZsYXRlZCBkZXN0aW5hdGlvbiByZWN0IHRoYXQgd2lsbCBob2xkIHRoZSBlbnRpcmUgaW1hZ2UK
ICAgICAvLyBhbmQgdGhlbiBzZXQgYSBjbGlwIHRvIHRoZSBwb3J0aW9uIHRoYXQgd2Ugd2FudCB0
byBkaXNwbGF5LgogICAgIEZsb2F0UmVjdCBhZGp1c3RlZERlc3RSZWN0ID0gZGVzdFJlY3Q7Ci0g
ICAgRmxvYXRTaXplIHNlbGZTaXplID0gY3VycmVudEZyYW1lU2l6ZSgpOworICAgIEdyYXBoaWNz
U2l6ZSBzZWxmU2l6ZSA9IGN1cnJlbnRGcmFtZVNpemUoKTsKICAgICBpZiAoc3JjUmVjdC5zaXpl
KCkgIT0gc2VsZlNpemUpIHsKICAgICAgICAgQ0dJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBv
bGF0aW9uUXVhbGl0eSA9IENHQ29udGV4dEdldEludGVycG9sYXRpb25RdWFsaXR5KGNvbnRleHQp
OwogICAgICAgICAvLyBXaGVuIHRoZSBpbWFnZSBpcyBzY2FsZWQgdXNpbmcgaGlnaC1xdWFsaXR5
IGludGVycG9sYXRpb24sIHdlIGNyZWF0ZSBhIHRlbXBvcmFyeSBDR0ltYWdlCkBAIC0yMzgsNyAr
MjM4LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIAogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5z
ZXRMb2NhdGlvbihGbG9hdFBvaW50KGRlc3RSZWN0LngoKSAtIHNyY1JlY3QueCgpIC8geFNjYWxl
LCBkZXN0UmVjdC55KCkgLSBzcmNSZWN0LnkoKSAvIHlTY2FsZSkpOwotICAgICAgICAgICAgYWRq
dXN0ZWREZXN0UmVjdC5zZXRTaXplKEZsb2F0U2l6ZShzZWxmU2l6ZS53aWR0aCgpIC8geFNjYWxl
LCBzZWxmU2l6ZS5oZWlnaHQoKSAvIHlTY2FsZSkpOworICAgICAgICAgICAgYWRqdXN0ZWREZXN0
UmVjdC5zZXRTaXplKEdyYXBoaWNzU2l6ZShzZWxmU2l6ZS53aWR0aCgpIC8geFNjYWxlLCBzZWxm
U2l6ZS5oZWlnaHQoKSAvIHlTY2FsZSkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFkZXN0
UmVjdC5jb250YWlucyhhZGp1c3RlZERlc3RSZWN0KSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgYm9vbCBQYXRoOjpzdHJva2VDb250YWlucyhTdHJva2VT
dHlsZUFwcAogICAgIHJldHVybiBoaXRTdWNjZXNzOwogfQogCi12b2lkIFBhdGg6OnRyYW5zbGF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIFBhdGg6OnRyYW5zbGF0ZShjb25zdCBHcmFw
aGljc1NpemUmIHNpemUpCiB7CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNsYXRpb24gPSBD
R0FmZmluZVRyYW5zZm9ybU1ha2UoMSwgMCwgMCwgMSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKTsKICAgICBDR011dGFibGVQYXRoUmVmIG5ld1BhdGggPSBDR1BhdGhDcmVhdGVNdXRhYmxl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250
Q2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIGJvb2wgVHJhbnNwYXJlbmN5
QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXcKIAogICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIg
c2hhZG93IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCiAgICAgLy8g
YXJlIG9wYXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKKyAgICBHcmFwaGljc1NpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0Js
dXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNw
YWNlOwpAQCAtNTA4LDcgKzUwOCw3IEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBo
aWNzQ29udGUKIAogICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93IGFuZCBib3Ro
IHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCiAgICAgLy8gYXJlIG9wYXF1ZSwgaGFu
ZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICBHcmFw
aGljc1NpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Ig
c2hhZG93Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0QW5jaG9yUG9pCiAgICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKIH0K
IAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBz
aXplKQordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFNpemUoY29uc3QgR3JhcGhpY3NT
aXplJiBzaXplKQogewogICAgIGlmIChzaXplID09IG1fc2l6ZSkKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgJKHJldmlzaW9uIDkxMjAwKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJik7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIHNldFNp
emUoY29uc3QgR3JhcGhpY3NTaXplJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnVwZGF0ZVByb3BlcgogICAgICAgICBGbG9hdFBvaW50IHN1cmZhY2VDZW50ZXIgPSByZW5kZXJT
dXJmYWNlLT5jb250ZW50UmVjdENlbnRlcigpOwogCiAgICAgICAgIC8vIFJlc3RyaWN0IHRoZSBS
ZW5kZXJTdXJmYWNlIHNpemUgdG8gdGhlIHBvcnRpb24gdGhhdCdzIHZpc2libGUuCi0gICAgICAg
IEZsb2F0U2l6ZSBjZW50ZXJPZmZzZXREdWVUb0NsaXBwaW5nOworICAgICAgICBHcmFwaGljc1Np
emUgY2VudGVyT2Zmc2V0RHVlVG9DbGlwcGluZzsKIAogICAgICAgICAvLyBEb24ndCBjbGlwIGlm
IHRoZSBsYXllciBpcyByZWZsZWN0ZWQgYXMgdGhlIHJlZmxlY3Rpb24gc2hvdWxkbid0IGJlCiAg
ICAgICAgIC8vIGNsaXBwZWQuCkBAIC0xMDY1LDEwICsxMDY1LDEwIEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3TGF5ZXIoQ0MKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21i
aW5lZERyYXdNYXRyaXggPSAobGF5ZXItPnRhcmdldFJlbmRlclN1cmZhY2UoKSA/IGxheWVyLT50
YXJnZXRSZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm0oKS5tdWx0aXBseShsYXllci0+ZHJh
d1RyYW5zZm9ybSgpKSA6IGxheWVyLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIAogICAgIGlmICgh
bGF5ZXItPmRvdWJsZVNpZGVkKCkpIHsKLSAgICAgICAgRmxvYXRSZWN0IGxheWVyUmVjdChGbG9h
dFBvaW50KDAsIDApLCBGbG9hdFNpemUobGF5ZXItPmJvdW5kcygpKSk7CisgICAgICAgIEZsb2F0
UmVjdCBsYXllclJlY3QoRmxvYXRQb2ludCgwLCAwKSwgR3JhcGhpY3NTaXplKGxheWVyLT5ib3Vu
ZHMoKSkpOwogICAgICAgICBGbG9hdFF1YWQgbWFwcGVkTGF5ZXIgPSBjb21iaW5lZERyYXdNYXRy
aXgubWFwUXVhZChGbG9hdFF1YWQobGF5ZXJSZWN0KSk7Ci0gICAgICAgIEZsb2F0U2l6ZSBob3Jp
em9udGFsRGlyID0gbWFwcGVkTGF5ZXIucDIoKSAtIG1hcHBlZExheWVyLnAxKCk7Ci0gICAgICAg
IEZsb2F0U2l6ZSB2ZXJ0aWNhbERpciA9IG1hcHBlZExheWVyLnA0KCkgLSBtYXBwZWRMYXllci5w
MSgpOworICAgICAgICBHcmFwaGljc1NpemUgaG9yaXpvbnRhbERpciA9IG1hcHBlZExheWVyLnAy
KCkgLSBtYXBwZWRMYXllci5wMSgpOworICAgICAgICBHcmFwaGljc1NpemUgdmVydGljYWxEaXIg
PSBtYXBwZWRMYXllci5wNCgpIC0gbWFwcGVkTGF5ZXIucDEoKTsKICAgICAgICAgRmxvYXRQb2lu
dDNEIHhBeGlzKGhvcml6b250YWxEaXIud2lkdGgoKSwgaG9yaXpvbnRhbERpci5oZWlnaHQoKSwg
MCk7CiAgICAgICAgIEZsb2F0UG9pbnQzRCB5QXhpcyh2ZXJ0aWNhbERpci53aWR0aCgpLCB2ZXJ0
aWNhbERpci5oZWlnaHQoKSwgMCk7CiAgICAgICAgIEZsb2F0UG9pbnQzRCB6QXhpcyA9IHhBeGlz
LmNyb3NzKHlBeGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5LDcg
QEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0bwogICAgIGlmIChmcmFt
ZS0+c3VyZmFjZVR5cGUoKSA9PSBWaWRlb0ZyYW1lQ2hyb21pdW06OlR5cGVUZXh0dXJlKSB7CiAg
ICAgICAgIHJlbGVhc2VDdXJyZW50RnJhbWUoKTsKICAgICAgICAgc2F2ZUN1cnJlbnRGcmFtZShm
cmFtZSk7Ci0gICAgICAgIG1fZGlydHlSZWN0LnNldFNpemUoRmxvYXRTaXplKCkpOworICAgICAg
ICBtX2RpcnR5UmVjdC5zZXRTaXplKEdyYXBoaWNzU2l6ZSgpKTsKICAgICAgICAgbV9jb250ZW50
c0RpcnR5ID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNTEsNyArMTUxLDcg
QEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0bwogICAgICAgICB1cGRh
dGVUZXh0dXJlKGNvbnRleHQsIHRleHR1cmUuaWQsIHRleHR1cmUuc2l6ZSwgdGV4dHVyZUZvcm1h
dCwgZnJhbWUtPmRhdGEocGxhbmUpKTsKICAgICB9CiAKLSAgICBtX2RpcnR5UmVjdC5zZXRTaXpl
KEZsb2F0U2l6ZSgpKTsKKyAgICBtX2RpcnR5UmVjdC5zZXRTaXplKEdyYXBoaWNzU2l6ZSgpKTsK
ICAgICBtX2NvbnRlbnRzRGlydHkgPSBmYWxzZTsKIAogICAgIG1fcHJvdmlkZXItPnB1dEN1cnJl
bnRGcmFtZShmcmFtZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcAkocmV2aXNp
b24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyU29ydGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTIgKzc1LDEyIEBAIHN0
YXRpYyBib29sIHBvaW50SW5UcmlhbmdsZShjb25zdCBGbG9hdFAKICAgICByZXR1cm4gKHUgPiAw
LjBmKSAmJiAodiA+IDAuMGYpICYmICh1ICsgdiA8IDEuMGYpOwogfQogCi1pbmxpbmUgc3RhdGlj
IGZsb2F0IHBlcnBQcm9kdWN0KGNvbnN0IEZsb2F0U2l6ZSYgdSwgY29uc3QgRmxvYXRTaXplJiB2
KQoraW5saW5lIHN0YXRpYyBmbG9hdCBwZXJwUHJvZHVjdChjb25zdCBHcmFwaGljc1NpemUmIHUs
IGNvbnN0IEdyYXBoaWNzU2l6ZSYgdikKIHsKICAgICByZXR1cm4gdS53aWR0aCgpICogdi5oZWln
aHQoKSAtIHUuaGVpZ2h0KCkgKiB2LndpZHRoKCk7CiB9CiAKLWlubGluZSBzdGF0aWMgZmxvYXQg
aW5uZXJQcm9kdWN0KGNvbnN0IEZsb2F0U2l6ZSYgdSwgY29uc3QgRmxvYXRTaXplJiB2KQoraW5s
aW5lIHN0YXRpYyBmbG9hdCBpbm5lclByb2R1Y3QoY29uc3QgR3JhcGhpY3NTaXplJiB1LCBjb25z
dCBHcmFwaGljc1NpemUmIHYpCiB7CiAgICAgcmV0dXJuIHUud2lkdGgoKSAqIHYud2lkdGgoKSAr
IHUuaGVpZ2h0KCkgKiB2LmhlaWdodCgpOwogfQpAQCAtOTksOSArOTksOSBAQCBpbmxpbmUgc3Rh
dGljIGJvb2wgcG9pbnRJbkNvbGluZWFyRWRnZShjCiAvLyBwb2ludCBvZiBpbnRlcnNlY3Rpb24g
aWYgdGhleSBkbyBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogc3RhdGljIGJvb2wgZWRnZUVkZ2VUZXN0
KGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIsIGNvbnN0IEZsb2F0UG9p
bnQmIGMsIGNvbnN0IEZsb2F0UG9pbnQmIGQsIEZsb2F0UG9pbnQmIHIpCiB7Ci0gICAgRmxvYXRT
aXplIHUgPSBiIC0gYTsKLSAgICBGbG9hdFNpemUgdiA9IGQgLSBjOwotICAgIEZsb2F0U2l6ZSB3
ID0gYSAtIGM7CisgICAgR3JhcGhpY3NTaXplIHUgPSBiIC0gYTsKKyAgICBHcmFwaGljc1NpemUg
diA9IGQgLSBjOworICAgIEdyYXBoaWNzU2l6ZSB3ID0gYSAtIGM7CiAKICAgICBmbG9hdCBkZW5v
bSA9IHBlcnBQcm9kdWN0KHUsIHYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaAkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29udm9sdmVNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lm
IEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZs
b2F0UG9pbnQuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHcmFwaGljc1Np
emUuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAkocmV2aXNp
b24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RHJvcFNoYWRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDggKzg4LDggQEAgdm9pZCBGRURy
b3BTaGFkb3c6OmFwcGx5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmlsdGVyKiBmaWx0ZXIg
PSB0aGlzLT5maWx0ZXIoKTsKLSAgICBGbG9hdFNpemUgYmx1clJhZGl1cyhmaWx0ZXItPmFwcGx5
SG9yaXpvbnRhbFNjYWxlKG1fc3RkWCksIGZpbHRlci0+YXBwbHlWZXJ0aWNhbFNjYWxlKG1fc3Rk
WSkpOwotICAgIEZsb2F0U2l6ZSBvZmZzZXQoZmlsdGVyLT5hcHBseUhvcml6b250YWxTY2FsZSht
X2R4KSwgZmlsdGVyLT5hcHBseVZlcnRpY2FsU2NhbGUobV9keSkpOworICAgIEdyYXBoaWNzU2l6
ZSBibHVyUmFkaXVzKGZpbHRlci0+YXBwbHlIb3Jpem9udGFsU2NhbGUobV9zdGRYKSwgZmlsdGVy
LT5hcHBseVZlcnRpY2FsU2NhbGUobV9zdGRZKSk7CisgICAgR3JhcGhpY3NTaXplIG9mZnNldChm
aWx0ZXItPmFwcGx5SG9yaXpvbnRhbFNjYWxlKG1fZHgpLCBmaWx0ZXItPmFwcGx5VmVydGljYWxT
Y2FsZShtX2R5KSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdp
b25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIEZsb2F0UmVjdCBk
cmF3aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3aW5nUmVnaW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAkocmV2aXNpb24g
OTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoRklMVEVS
UykKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNs
dWRlICJHcmFwaGljc1NpemUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTQxLDggKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2b2lkIHNldFNvdXJjZUltYWdlKFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IHNv
dXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBzb3VyY2VJbWFnZTsgfQogICAgICAgICBJbWFn
ZUJ1ZmZlciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdldCgpOyB9CiAK
LSAgICAgICAgRmxvYXRTaXplIGZpbHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Zp
bHRlclJlc29sdXRpb247IH0KLSAgICAgICAgdm9pZCBzZXRGaWx0ZXJSZXNvbHV0aW9uKGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyUmVzb2x1dGlvbikgeyBtX2ZpbHRlclJlc29sdXRpb24gPSBmaWx0
ZXJSZXNvbHV0aW9uOyB9CisgICAgICAgIEdyYXBoaWNzU2l6ZSBmaWx0ZXJSZXNvbHV0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZXNvbHV0aW9uOyB9CisgICAgICAgIHZvaWQgc2V0Rmls
dGVyUmVzb2x1dGlvbihjb25zdCBHcmFwaGljc1NpemUmIGZpbHRlclJlc29sdXRpb24pIHsgbV9m
aWx0ZXJSZXNvbHV0aW9uID0gZmlsdGVyUmVzb2x1dGlvbjsgfQogCiAgICAgICAgIHZpcnR1YWwg
ZmxvYXQgYXBwbHlIb3Jpem9udGFsU2NhbGUoZmxvYXQgdmFsdWUpIGNvbnN0IHsgcmV0dXJuIHZh
bHVlICogbV9maWx0ZXJSZXNvbHV0aW9uLndpZHRoKCk7IH0KICAgICAgICAgdmlydHVhbCBmbG9h
dCBhcHBseVZlcnRpY2FsU2NhbGUoZmxvYXQgdmFsdWUpIGNvbnN0IHsgcmV0dXJuIHZhbHVlICog
bV9maWx0ZXJSZXNvbHV0aW9uLmhlaWdodCgpOyB9CkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
bV9zb3VyY2VJbWFnZTsKLSAgICAgICAgRmxvYXRTaXplIG1fZmlsdGVyUmVzb2x1dGlvbjsKKyAg
ICAgICAgR3JhcGhpY3NTaXplIG1fZmlsdGVyUmVzb2x1dGlvbjsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvTG9vcEJsaW5uTWF0aFV0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5uTWF0aFV0aWxzLmNwcAkocmV2aXNpb24gOTEy
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5uTWF0
aFV0aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBpbnQgb3JpZW50YXRp
b24oY29uc3QgRmxvYXRQb2ludCYgcDEsCiAgICAgcmV0dXJuIChjcm9zc1Byb2R1Y3QgPCAwLjBm
KSA/IC0xIDogKChjcm9zc1Byb2R1Y3QgPiAwLjBmKSA/IDEgOiAwKTsKIH0KIAotYm9vbCBlZGdl
RWRnZVRlc3QoY29uc3QgRmxvYXRTaXplJiB2MERlbHRhLAorYm9vbCBlZGdlRWRnZVRlc3QoY29u
c3QgR3JhcGhpY3NTaXplJiB2MERlbHRhLAogICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYgdjAsCiAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiB1MCwKICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHUxKQpAQCAtODQsNyArODQsNyBAQCBib29s
IGVkZ2VBZ2FpbnN0VHJpYW5nbGVFZGdlcyhjb25zdCBGbG9hCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiB1MSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHUyKQogewotICAgIEZsb2F0U2l6ZSBkZWx0YSA9IHYx
IC0gdjA7CisgICAgR3JhcGhpY3NTaXplIGRlbHRhID0gdjEgLSB2MDsKICAgICAvLyBUZXN0IGVk
Z2UgdTAsIHUxIGFnYWluc3QgdjAsIHYxLgogICAgIGlmIChlZGdlRWRnZVRlc3QoZGVsdGEsIHYw
LCB1MCwgdTEpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU3MCw3ICs1NzAsNyBAQCBpbnQg
bnVtWFJheUNyb3NzaW5nc0ZvckN1YmljKGNvbnN0IFhSYXkmCiAgKiBpbiAiR3JhcGhpY3MgR2Vt
cyBJViIsIEFjYWRlbWljIFByZXNzLCAxOTk0CiAgKi8KIAotc3RhdGljIGlubGluZSBpbnQgY29u
dmV4Q29tcGFyZShjb25zdCBGbG9hdFNpemUmIGRlbHRhKQorc3RhdGljIGlubGluZSBpbnQgY29u
dmV4Q29tcGFyZShjb25zdCBHcmFwaGljc1NpemUmIGRlbHRhKQogewogICAgIHJldHVybiAoZGVs
dGEud2lkdGgoKSA+IDApID8gLTEgOiAvKiB4IGNvb3JkIGRpZmYsIHNlY29uZCBwdCA+IGZpcnN0
IHB0ICovCiAgICAgICAgICAgIChkZWx0YS53aWR0aCgpIDwgMCkgPyAgMSA6IC8qIHggY29vcmQg
ZGlmZiwgc2Vjb25kIHB0IDwgZmlyc3QgcHQgKi8KQEAgLTU3OSwxMiArNTc5LDEyIEBAIHN0YXRp
YyBpbmxpbmUgaW50IGNvbnZleENvbXBhcmUoY29uc3QgRmwKICAgICAgICAgICAgMDsgLyogc2Vj
b25kIHB0IGVxdWFscyBmaXJzdCBwb2ludCAqLwogfQogCi1zdGF0aWMgaW5saW5lIGZsb2F0IGNv
bnZleENyb3NzKGNvbnN0IEZsb2F0U2l6ZSYgcCwgY29uc3QgRmxvYXRTaXplJiBxKQorc3RhdGlj
IGlubGluZSBmbG9hdCBjb252ZXhDcm9zcyhjb25zdCBHcmFwaGljc1NpemUmIHAsIGNvbnN0IEdy
YXBoaWNzU2l6ZSYgcSkKIHsKICAgICByZXR1cm4gcC53aWR0aCgpICogcS5oZWlnaHQoKSAtIHAu
aGVpZ2h0KCkgKiBxLndpZHRoKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjb252ZXhDaGVj
a1RyaXBsZShjb25zdCBGbG9hdFNpemUmIGRjdXIsIGNvbnN0IEZsb2F0U2l6ZSYgZHByZXYsIGlu
dCogY3VyRGlyLCBpbnQqIGRpckNoYW5nZXMsIGludCogYW5nbGVTaWduKQorc3RhdGljIGlubGlu
ZSBib29sIGNvbnZleENoZWNrVHJpcGxlKGNvbnN0IEdyYXBoaWNzU2l6ZSYgZGN1ciwgY29uc3Qg
R3JhcGhpY3NTaXplJiBkcHJldiwgaW50KiBjdXJEaXIsIGludCogZGlyQ2hhbmdlcywgaW50KiBh
bmdsZVNpZ24pCiB7CiAgICAgaW50IHRoaXNEaXIgPSBjb252ZXhDb21wYXJlKGRjdXIpOwogICAg
IGlmICh0aGlzRGlyID09IC0qY3VyRGlyKQpAQCAtNjA3LDcgKzYwNyw3IEBAIGJvb2wgaXNDb252
ZXgoY29uc3QgRmxvYXRQb2ludCogdmVydGljZXMKIHsKICAgICBpbnQgZGlyQ2hhbmdlcyA9IDAs
IGFuZ2xlU2lnbiA9IDA7CiAgICAgRmxvYXRQb2ludCBzZWNvbmQsIHRoaXJkOwotICAgIEZsb2F0
U2l6ZSBkcHJldiwgZGN1cjsKKyAgICBHcmFwaGljc1NpemUgZHByZXYsIGRjdXI7CiAKICAgICAv
KiBHZXQgZGlmZmVyZW50IHBvaW50LCByZXR1cm4gaWYgbGVzcyB0aGFuIDMgZGlmZiBwb2ludHMu
ICovCiAgICAgaWYgKG5WZXJ0aWNlcyA8IDMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYWlrdS9HcmFwaGljc0NvbnRleHRIYWlrdS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvR3JhcGhpY3NDb250ZXh0SGFp
a3UuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2hhaWt1L0dyYXBoaWNzQ29udGV4dEhhaWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEx
LDcgKzQxMSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUoZmxvYXQgcmFkaWEKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2NhbGUoY29u
c3QgRmxvYXRTaXplJiBzaXplKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxlKGNvbnN0IEdy
YXBoaWNzU2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFy
UGxhdGZvcm1TaGFkbwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhGbG9hdFNpemUgY29uc3QmLCBmbG9hdCwgQ29sb3Ig
Y29uc3QmLCBDb2xvclNwYWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hh
ZG93KEdyYXBoaWNzU2l6ZSBjb25zdCYsIGZsb2F0LCBDb2xvciBjb25zdCYsIENvbG9yU3BhY2Up
CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2hhaWt1L1BhdGhIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFpa3UvUGF0aEhhaWt1LmNwcAkocmV2aXNpb24gOTEy
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYWlrdS9QYXRoSGFpa3Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIGJvb2wgUGF0aDo6Y29udGFpbnMo
Y29uc3QgRmxvYXRQb2ludCYgcG8KICAgICByZXR1cm4gbV9wYXRoLT5Db250YWlucyhwb2ludCk7
CiB9CiAKLXZvaWQgUGF0aDo6dHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3ZvaWQg
UGF0aDo6dHJhbnNsYXRlKGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21wbGV4VGV4dENvbnRyb2xsZXIuaCIKIAotI2lu
Y2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1ZGUg
IkZvbnQuaCIKICNpbmNsdWRlICJUZXh0QnJlYWtJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRS
dW4uaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNp
emVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0Zsb2F0U2l6ZU1hYy5tbQkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvRmxvYXRTaXplTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9r
aWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotIAotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZm5kZWYg
TlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMKLQotRmxvYXRTaXplOjpG
bG9hdFNpemUoY29uc3QgTlNTaXplJiBzKSA6IG1fd2lkdGgocy53aWR0aCksIG1faGVpZ2h0KHMu
aGVpZ2h0KQotewotfQotCi1GbG9hdFNpemU6Om9wZXJhdG9yIE5TU2l6ZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIE5TTWFrZVNpemUobV93aWR0aCwgbV9oZWlnaHQpOwotfQotCi0jZW5kaWYKLQot
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRN
YWMubW0JKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ZvbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lk
IEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjCiAgICAgICAgIENHQ29udGV4dFNl
dEZvbnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLm1fc2l6ZSk7CiAKIAotICAgIEZsb2F0
U2l6ZSBzaGFkb3dPZmZzZXQ7CisgICAgR3JhcGhpY3NTaXplIHNoYWRvd09mZnNldDsKICAgICBm
bG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIENvbG9yU3BhY2Ug
c2hhZG93Q29sb3JTcGFjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9HcmFwaGljc1NpemVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzU2l6ZU1hYy5tbQkocmV2aXNpb24gOTEyMDApCShm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9GbG9hdFNpemVNYWMubW06
OTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NT
aXplTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgTm9raWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworIAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZm5kZWYgTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NH
R0VPTUVUUllfVFlQRVMKKworRmxvYXRTaXplOjpGbG9hdFNpemUoY29uc3QgTlNTaXplJiBzKSA6
IG1fd2lkdGgocy53aWR0aCksIG1faGVpZ2h0KHMuaGVpZ2h0KQoreworfQorCitGbG9hdFNpemU6
Om9wZXJhdG9yIE5TU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE5TTWFrZVNpemUobV93aWR0
aCwgbV9oZWlnaHQpOworfQorCisjZW5kaWYKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzU2l6ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NTaXplTWFjLm1tCShyZXZp
c2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFw
aGljc1NpemVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDE3ICsyNSwxNyBAQAogICovCiAg
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NTaXplLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmbmRlZiBOU0dFT01F
VFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9NRVRSWV9UWVBFUwogCi1GbG9hdFNpemU6OkZsb2F0U2l6
ZShjb25zdCBOU1NpemUmIHMpIDogbV93aWR0aChzLndpZHRoKSwgbV9oZWlnaHQocy5oZWlnaHQp
CitHcmFwaGljc1NpemU6OkdyYXBoaWNzU2l6ZShjb25zdCBOU1NpemUmIHMpIDogbV93aWR0aChz
LndpZHRoKSwgbV9oZWlnaHQocy5oZWlnaHQpCiB7CiB9CiAKLUZsb2F0U2l6ZTo6b3BlcmF0b3Ig
TlNTaXplKCkgY29uc3QKK0dyYXBoaWNzU2l6ZTo6b3BlcmF0b3IgTlNTaXplKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gTlNNYWtlU2l6ZShtX3dpZHRoLCBtX2hlaWdodCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFZJREVPKQogCisjaW5jbHVk
ZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+CiAKICNpZmRlZiBfX09CSkNfXwpAQCAtMjAwLDcgKzIwMCw3IEBAIHByaXZhdGU6
CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKICAgICBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CiAgICAgSW50UmVjdCBtX3JlY3Q7Ci0g
ICAgRmxvYXRTaXplIG1fc2NhbGVGYWN0b3I7CisgICAgR3JhcGhpY3NTaXplIG1fc2NhbGVGYWN0
b3I7CiAgICAgdW5zaWduZWQgbV9lbmFibGVkVHJhY2tDb3VudDsKICAgICB1bnNpZ25lZCBtX3Rv
dGFsVHJhY2tDb3VudDsKICAgICBmbG9hdCBtX3JlcG9ydGVkRHVyYXRpb247CkBAIC0yMjAsNyAr
MjIwLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV90aW1lU3RhcnRlZFBsYXlpbmc7CiAgICAg
ZG91YmxlIG1fdGltZVN0b3BwZWRQbGF5aW5nOwogI2VuZGlmCi0gICAgbXV0YWJsZSBGbG9hdFNp
emUgbV9jYWNoZWROYXR1cmFsU2l6ZTsKKyAgICBtdXRhYmxlIEdyYXBoaWNzU2l6ZSBtX2NhY2hl
ZE5hdHVyYWxTaXplOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bQkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTgyNiw3ICs4
MjYsNyBAQCBJbnRTaXplIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpuYXR1cmFsCiAgICAgLy8g
ICAgZGltZW5zaW9ucywgYXNwZWN0IHJhdGlvLCBjbGVhbiBhcGVydHVyZSwgcmVzb2x1dGlvbiwg
YW5kIHNvIGZvcnRoLCBhcyBkZWZpbmVkIGZvciB0aGUgCiAgICAgLy8gICAgZm9ybWF0IHVzZWQg
YnkgdGhlIHJlc291cmNlCiAgICAgCi0gICAgRmxvYXRTaXplIG5hdHVyYWxTaXplKFtbbV9xdE1v
dmllLmdldCgpIGF0dHJpYnV0ZUZvcktleTpRVE1vdmllTmF0dXJhbFNpemVBdHRyaWJ1dGVdIHNp
emVWYWx1ZV0pOworICAgIEdyYXBoaWNzU2l6ZSBuYXR1cmFsU2l6ZShbW21fcXRNb3ZpZS5nZXQo
KSBhdHRyaWJ1dGVGb3JLZXk6UVRNb3ZpZU5hdHVyYWxTaXplQXR0cmlidXRlXSBzaXplVmFsdWVd
KTsKICAgICBpZiAobmF0dXJhbFNpemUuaXNFbXB0eSgpICYmIG1faXNTdHJlYW1pbmcpIHsKICAg
ICAgICAgLy8gSFRUUCBMaXZlIFN0cmVhbXMgd2lsbCBvY2Nhc2lvbmFsbHkgcmV0dXJuIHswLDB9
IG5hdHVyYWwgc2l6ZXMgd2hpbGUgc2NydWJiaW5nLgogICAgICAgICAvLyBXb3JrIGFyb3VuZCB0
aGlzIHByb2JsZW0gKDxyZGFyOi8vcHJvYmxlbS85MDc4NTYzPikgYnkgcmV0dXJuaW5nIHRoZSBs
YXN0IHZhbGlkIApAQCAtMTMwNiw3ICsxMzA2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6cGFpbnQoR3JhcAogICAgIFttX29iamNPYnNlcnZlci5nZXQoKSBzZXREZWxheUNhbGxi
YWNrczpZRVNdOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICBOU0dyYXBo
aWNzQ29udGV4dCogbmV3Q29udGV4dDsKLSAgICBGbG9hdFNpemUgc2NhbGVGYWN0b3IoMS4wZiwg
LTEuMGYpOworICAgIEdyYXBoaWNzU2l6ZSBzY2FsZUZhY3RvcigxLjBmLCAtMS4wZik7CiAgICAg
SW50UmVjdCBwYWludFJlY3QoSW50UG9pbnQoMCwgMCksIEludFNpemUoci53aWR0aCgpLCByLmhl
aWdodCgpKSk7CiAKICNpZiBQTEFURk9STShRVCkgJiYgVVNFKFFUS0lUKQpAQCAtMTM3MSw3ICsx
MzcxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3JhcAogICAgICAg
ICAgICAgU3RyaW5nIHRleHQgPSBTdHJpbmc6OmZvcm1hdCgiJTEuMmYiLCBmcmFtZVJhdGUpOwog
ICAgICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0
aCgpKTsKICAgICAgICAgICAgIGNvbnN0IENvbG9yIGNvbG9yKDI1NSwgMCwgMCk7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsgICAgCisgICAgICAg
ICAgICBjb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoMS4wZiwgLTEuMGYpKTsgICAgCiAgICAg
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihjb2xvciwgc3R5bGVUb1VzZS0+Y29sb3JT
cGFjZSgpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ryb2tl
KTsKICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9UZXh0dXJlTWFwcGVyR0wuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzMsNyArMjMzLDcgQEAgcHVibGljOgogICAgIH5CaXRtYXBUZXh0dXJlR0woKSB7
IGRlc3Ryb3koKTsgfQogICAgIHZpcnR1YWwgdWludDMyX3QgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CiAgICAgaW5saW5lIGJvb2wgaXNPcGFxdWUoKSBjb25zdCB7IHJldHVybiBtX29wYXF1
ZTsgfQotICAgIGlubGluZSBGbG9hdFNpemUgcmVsYXRpdmVTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9yZWxhdGl2ZVNpemU7IH0KKyAgICBpbmxpbmUgR3JhcGhpY3NTaXplIHJlbGF0aXZlU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRpdmVTaXplOyB9CiAgICAgdm9pZCBzZXRUZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXJHTCogdGV4bWFwKSB7IG1fdGV4dHVyZU1hcHBlciA9IHRleG1hcDsg
fQogCiAgICAgdm9pZCBwYWNrKCkKQEAgLTI2MCw3ICsyNjAsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIEdMdWludCBtX2lkOwogICAgIEltYWdlVUlEIG1faW1hZ2VVSUQ7Ci0gICAgRmxvYXRT
aXplIG1fcmVsYXRpdmVTaXplOworICAgIEdyYXBoaWNzU2l6ZSBtX3JlbGF0aXZlU2l6ZTsKICAg
ICBib29sIG1fb3BhcXVlOwogICAgIEludFNpemUgbV90ZXh0dXJlU2l6ZTsKICAgICBSZWZQdHI8
UkdCQTMyUHJlbXVsdGltcGxpZWRCdWZmZXI+IG1fYnVmZmVyOwpAQCAtNDIwLDcgKzQyMCw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShjb25zdCAKICAgICBkcmF3VGV4dHVy
ZSh0ZXh0dXJlR0wuaWQoKSwgdGV4dHVyZUdMLmlzT3BhcXVlKCksIHRleHR1cmVHTC5yZWxhdGl2
ZVNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCBmYWxzZSk7CiB9CiAK
LXZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBib29s
IG9wYXF1ZSwgY29uc3QgRmxvYXRTaXplJiByZWxhdGl2ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCwg
ZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIGJvb2wgZmxp
cCkKK3ZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBi
b29sIG9wYXF1ZSwgY29uc3QgR3JhcGhpY3NTaXplJiByZWxhdGl2ZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01h
dHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIGJv
b2wgZmxpcCkKIHsKICAgICBUZXh0dXJlTWFwcGVyR0xEYXRhOjpHbG9iYWxHTERhdGE6OlNoYWRl
clByb2dyYW1JbmRleCBwcm9ncmFtOwogICAgIGlmIChtYXNrVGV4dHVyZSkKQEAgLTUxMSw3ICs1
MTEsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmVHTDo6cmVzZXQoY29uc3QgSW50U2l6CiAgICAgICAg
IEdMX0NNRChnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgbV90ZXh0dXJl
U2l6ZS53aWR0aCgpLCBtX3RleHR1cmVTaXplLmhlaWdodCgpLCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCAwKSkKICAgICB9CiAgICAgbV9hY3R1YWxTaXplID0gbmV3U2l6ZTsKLSAgICBt
X3JlbGF0aXZlU2l6ZSA9IEZsb2F0U2l6ZShmbG9hdChuZXdTaXplLndpZHRoKCkpIC8gbV90ZXh0
dXJlU2l6ZS53aWR0aCgpLCBmbG9hdChuZXdTaXplLmhlaWdodCgpKSAvIG1fdGV4dHVyZVNpemUu
aGVpZ2h0KCkpOworICAgIG1fcmVsYXRpdmVTaXplID0gR3JhcGhpY3NTaXplKGZsb2F0KG5ld1Np
emUud2lkdGgoKSkgLyBtX3RleHR1cmVTaXplLndpZHRoKCksIGZsb2F0KG5ld1NpemUuaGVpZ2h0
KCkpIC8gbV90ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7CiAgICAgbV9vcGFxdWUgPSBvcGFxdWU7CiAg
ICAgbV9zdXJmYWNlTmVlZHNSZXNldCA9IHRydWU7CiB9CkBAIC02MjAsNyArNjIwLDcgQEAgdm9p
ZCBCaXRtYXBUZXh0dXJlR0w6OmRlc3Ryb3koKQogICAgIG1fZmJvID0gMDsKICAgICBtX2lkID0g
MDsKICAgICBtX3RleHR1cmVTaXplID0gSW50U2l6ZSgpOwotICAgIG1fcmVsYXRpdmVTaXplID0g
RmxvYXRTaXplKDEsIDEpOworICAgIG1fcmVsYXRpdmVTaXplID0gR3JhcGhpY3NTaXplKDEsIDEp
OwogfQogCiBib29sIEJpdG1hcFRleHR1cmVHTDo6aXNWYWxpZCgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1
cmVNYXBwZXJHTC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
NyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyByZWltcHMgZnJvbSBUZXh0dXJlTWFwcGVyCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIGNv
bnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1Rl
eHR1cmUodWludDMyX3QgdGV4dHVyZSwgYm9vbCBvcGFxdWUsIGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0
eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUsIGJvb2wgZmxpcCk7CisgICAgdmly
dHVhbCB2b2lkIGRyYXdUZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGJvb2wgb3BhcXVlLCBjb25z
dCBHcmFwaGljc1NpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEJpdG1hcFRleHR1cmUqIG1hc2tUZXh0dXJlLCBi
b29sIGZsaXApOwogICAgIHZpcnR1YWwgdm9pZCBiaW5kU3VyZmFjZShCaXRtYXBUZXh0dXJlKiBz
dXJmYWNlKTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGVuZENsaXAoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9HcmFwaGljc0Nv
bnRleHRPcGVuVkcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW52Zy9HcmFwaGljc0NvbnRleHRPcGVuVkcuY3BwCShyZXZpc2lvbiA5MTIwMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9HcmFwaGljc0NvbnRl
eHRPcGVuVkcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsNyArMjY1LDcgQEAgRmxvYXRSZWN0
IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZQogICAgIHJldHVybiBGbG9hdFJlY3QoZW5j
bG9zaW5nSW50UmVjdChtX2RhdGEtPnRyYW5zZm9ybWF0aW9uKCkubWFwUmVjdChyZWN0KSkpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBH
cmFwaGljc1NpemUmIHNpemUsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91
dChjb25zdCBQYXRoCiAgICAgbV9kYXRhLT5jbGlwUGF0aChwYXRoLCBQYWludGVyT3BlblZHOjpT
dWJ0cmFjdENsaXAsIG1fc3RhdGUuZmlsbFJ1bGUpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzY2FsZUZhY3RvcnMpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2NhbGUoY29uc3QgR3JhcGhpY3NTaXplJiBzY2FsZUZhY3RvcnMpCiB7CiAgICAgaWYg
KHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhaW50ZXJPcGVuVkcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVyT3BlblZH
LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVudmcvUGFpbnRlck9wZW5WRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4MSw3ICs2ODEs
NyBAQCB2b2lkIFBhaW50ZXJPcGVuVkc6OnNldEFudGlhbGlhc2luZ0VuYWJsCiAgICAgICAgIHZn
U2V0aShWR19SRU5ERVJJTkdfUVVBTElUWSwgVkdfUkVOREVSSU5HX1FVQUxJVFlfTk9OQU5USUFM
SUFTRUQpOwogfQogCi12b2lkIFBhaW50ZXJPcGVuVkc6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYg
c2NhbGVGYWN0b3JzKQordm9pZCBQYWludGVyT3BlblZHOjpzY2FsZShjb25zdCBHcmFwaGljc1Np
emUmIHNjYWxlRmFjdG9ycykKIHsKICAgICBBU1NFUlQobV9zdGF0ZSk7CiAgICAgbV9zdXJmYWNl
LT5tYWtlQ3VycmVudCgpOwpAQCAtODc0LDEwICs4NzQsMTAgQEAgdm9pZCBQYWludGVyT3BlblZH
OjpkcmF3Um91bmRlZFJlY3QoY29ucwogICAgIEFTU0VSVF9WR19OT19FUlJPUigpOwogCiAgICAg
Ly8gY2xhbXAgY29ybmVyIGFyYyBzaXplcwotICAgIEZsb2F0U2l6ZSBjbGFtcGVkVG9wTGVmdCA9
IEZsb2F0U2l6ZSh0b3BMZWZ0KS5zaHJ1bmtUbyhyZWN0LnNpemUoKSkuZXhwYW5kZWRUbyhGbG9h
dFNpemUoKSk7Ci0gICAgRmxvYXRTaXplIGNsYW1wZWRUb3BSaWdodCA9IEZsb2F0U2l6ZSh0b3BS
aWdodCkuc2hydW5rVG8ocmVjdC5zaXplKCkpLmV4cGFuZGVkVG8oRmxvYXRTaXplKCkpOwotICAg
IEZsb2F0U2l6ZSBjbGFtcGVkQm90dG9tTGVmdCA9IEZsb2F0U2l6ZShib3R0b21MZWZ0KS5zaHJ1
bmtUbyhyZWN0LnNpemUoKSkuZXhwYW5kZWRUbyhGbG9hdFNpemUoKSk7Ci0gICAgRmxvYXRTaXpl
IGNsYW1wZWRCb3R0b21SaWdodCA9IEZsb2F0U2l6ZShib3R0b21SaWdodCkuc2hydW5rVG8ocmVj
dC5zaXplKCkpLmV4cGFuZGVkVG8oRmxvYXRTaXplKCkpOworICAgIEdyYXBoaWNzU2l6ZSBjbGFt
cGVkVG9wTGVmdCA9IEdyYXBoaWNzU2l6ZSh0b3BMZWZ0KS5zaHJ1bmtUbyhyZWN0LnNpemUoKSku
ZXhwYW5kZWRUbyhHcmFwaGljc1NpemUoKSk7CisgICAgR3JhcGhpY3NTaXplIGNsYW1wZWRUb3BS
aWdodCA9IEdyYXBoaWNzU2l6ZSh0b3BSaWdodCkuc2hydW5rVG8ocmVjdC5zaXplKCkpLmV4cGFu
ZGVkVG8oR3JhcGhpY3NTaXplKCkpOworICAgIEdyYXBoaWNzU2l6ZSBjbGFtcGVkQm90dG9tTGVm
dCA9IEdyYXBoaWNzU2l6ZShib3R0b21MZWZ0KS5zaHJ1bmtUbyhyZWN0LnNpemUoKSkuZXhwYW5k
ZWRUbyhHcmFwaGljc1NpemUoKSk7CisgICAgR3JhcGhpY3NTaXplIGNsYW1wZWRCb3R0b21SaWdo
dCA9IEdyYXBoaWNzU2l6ZShib3R0b21SaWdodCkuc2hydW5rVG8ocmVjdC5zaXplKCkpLmV4cGFu
ZGVkVG8oR3JhcGhpY3NTaXplKCkpOwogCiAgICAgLy8gQXMgT3BlblZHJ3MgY29vcmRpbmF0ZSBz
eXN0ZW0gaXMgZmxpcHBlZCBpbiBjb21wYXJpc29uIHRvIFdlYktpdCdzLAogICAgIC8vIHdlIGhh
dmUgdG8gc3BlY2lmeSB0aGUgb3Bwb3NpdGUgdmFsdWUgZm9yIHRoZSAiY2xvY2t3aXNlIiB2YWx1
ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYWludGVy
T3BlblZHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbnZnL1BhaW50ZXJPcGVuVkcuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvUGFpbnRlck9wZW5WRy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJhd1RleHQoVkdGb250LCBW
ZWN0b3I8Vkd1aW50PiYgY2hhcmFjdGVycywgVkdmbG9hdCogYWRqdXN0bWVudHNYLCBWR2Zsb2F0
KiBhZGp1c3RtZW50c1ksIGNvbnN0IEZsb2F0UG9pbnQmKTsKICNlbmRpZgogCi0gICAgdm9pZCBz
Y2FsZShjb25zdCBGbG9hdFNpemUmIHNjYWxlRmFjdG9ycyk7CisgICAgdm9pZCBzY2FsZShjb25z
dCBHcmFwaGljc1NpemUmIHNjYWxlRmFjdG9ycyk7CiAgICAgdm9pZCByb3RhdGUoZmxvYXQgcmFk
aWFucyk7CiAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgZHgsIGZsb2F0IGR5KTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL1BhdGhPcGVuVkcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9QYXRo
T3BlblZHLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVudmcvUGF0aE9wZW5WRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsx
NDgsNyBAQCBib29sIFBhdGg6OnN0cm9rZUNvbnRhaW5zKFN0cm9rZVN0eWxlQXBwCiAgICAgcmV0
dXJuIChjb25zdF9jYXN0PFBhdGgqPih0aGlzKSktPnN0cm9rZUJvdW5kaW5nUmVjdCgpLmNvbnRh
aW5zKHBvaW50KTsKIH0KIAotdm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJiBz
aXplKQordm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKQogewog
ICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1hdGlvbjsKICAgICB0cmFuc2Zvcm1hdGlvbi50
cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKQEAgLTE2Niw3ICsxNjYsNyBA
QCBGbG9hdFJlY3QgUGF0aDo6Ym91bmRpbmdSZWN0KCkgY29uc3QKICAgICB2Z1BhdGhCb3VuZHMo
bV9wYXRoLT52Z1BhdGgoKSwgJm1pblgsICZtaW5ZLCAmd2lkdGgsICZoZWlnaHQpOwogICAgIEFT
U0VSVF9WR19OT19FUlJPUigpOwogCi0gICAgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KG1p
blgsIG1pblkpLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCkpOworICAgIHJldHVybiBGbG9hdFJl
Y3QoRmxvYXRQb2ludChtaW5YLCBtaW5ZKSwgR3JhcGhpY3NTaXplKHdpZHRoLCBoZWlnaHQpKTsK
IH0KIAogRmxvYXRSZWN0IFBhdGg6OnN0cm9rZUJvdW5kaW5nUmVjdChTdHJva2VTdHlsZUFwcGxp
ZXIqIGFwcGxpZXIpIGNvbnN0CkBAIC0yMzYsOCArMjM2LDggQEAgdm9pZCBQYXRoOjphZGRBcmNU
byhjb25zdCBGbG9hdFBvaW50JiBwbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRmxv
YXRTaXplIHYwMSA9IHBvaW50MCAtIHBvaW50MTsKLSAgICBGbG9hdFNpemUgdjIxID0gcG9pbnQy
IC0gcG9pbnQxOworICAgIEdyYXBoaWNzU2l6ZSB2MDEgPSBwb2ludDAgLSBwb2ludDE7CisgICAg
R3JhcGhpY3NTaXplIHYyMSA9IHBvaW50MiAtIHBvaW50MTsKIAogICAgIC8vIHNpbihBIC0gQikg
PSBzaW4oQSkgKiBjb3MoQikgLSBzaW4oQikgKiBjb3MoQSkKICAgICBkb3VibGUgY3Jvc3MgPSB2
MDEud2lkdGgoKSAqIHYyMS5oZWlnaHQoKSAtIHYwMS5oZWlnaHQoKSAqIHYyMS53aWR0aCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnBhaW50VG9UCiB7CiAgICAgaWYgKHRleHR1cmVNYXBwZXItPmlzT3BlbkdMQmFja2VkKCkp
IHsKICAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1
cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwotICAgICAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1
cmUobV90ZXh0dXJlLCAhbV9hdHRycy5hbHBoYSwgRmxvYXRTaXplKDEsIDEpLCB0YXJnZXRSZWN0
LCBtYXRyaXgsIG9wYWNpdHksIG1hc2ssIHRydWUgLyogZmxpcCAqLyk7CisgICAgICAgIHRleG1h
cEdMLT5kcmF3VGV4dHVyZShtX3RleHR1cmUsICFtX2F0dHJzLmFscGhhLCBHcmFwaGljc1NpemUo
MSwgMSksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzaywgdHJ1ZSAvKiBmbGlwICov
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhCiAKICAgICBtX2RhdGEtPnAoKS0+
cmVzdG9yZSgpOwogCi0gICAgbV9kYXRhLT5zaGFkb3ctPnNldFNoYWRvd1ZhbHVlcyhGbG9hdFNp
emUobV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRv
d09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dDb2xvclNwYWNlLCBt
X3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICBtX2RhdGEtPnNoYWRvdy0+c2V0
U2hhZG93VmFsdWVzKEdyYXBoaWNzU2l6ZShtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hh
ZG93Qmx1ciksIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRlLnNoYWRvd0NvbG9yLCBtX3N0
YXRlLnNoYWRvd0NvbG9yU3BhY2UsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpOwog
fQogCiAvLyBEcmF3cyBhIGZpbGxlZCByZWN0YW5nbGUgd2l0aCBhIHN0cm9rZWQgYm9yZGVyLgpA
QCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQo
Y28KICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gb3JpZ2lu
OwotICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQgPSBvcmlnaW4gKyBGbG9hdFNpemUod2lkdGgsIDAp
OworICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQgPSBvcmlnaW4gKyBHcmFwaGljc1NpemUod2lkdGgs
IDApOwogCiAgICAgLy8gSWYgcGFpbnRlbmdpbmUgdHlwZSBpcyBYMTEgdG8gYXZvaWQgYXJ0aWZh
Y3RzCiAgICAgLy8gbGlrZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyMjQ4CkBAIC05NTIsNyArOTUyLDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6
cm91bmRUb0RldmljZQogICAgIHJldHVybiBGbG9hdFJlY3Qocm91bmRlZE9yaWdpbiwgcm91bmRl
ZExvd2VyUmlnaHQgLSByb3VuZGVkT3JpZ2luKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgR3JhcGhpY3NTaXplJiBzaXplLCBmbG9hdCBi
bHVyLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKIHsKICAgICAv
LyBRdCBkb2Vzbid0IHN1cHBvcnQgc2hhZG93cyBuYXRpdmVseSwgdGhleSBhcmUgZHJhd24gbWFu
dWFsbHkgaW4gdGhlIGRyYXcqCiAgICAgLy8gZnVuY3Rpb25zCkBAIC05NjAsMTAgKzk2MCwxMCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coCiAgICAgaWYgKG1fc3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgLy8gTWVhbmluZyB0aGF0IHRo
aXMgZ3JhcGhpY3MgY29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJpbmdD
b250ZXh0CiAgICAgICAgIC8vIFdlIGZsaXAgdGhlIGhlaWdodCBzaW5jZSBDRyBhbmQgSFRNTDUg
Q2FudmFzIGhhdmUgb3Bwb3NpdGUgWSBheGlzCi0gICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0
ID0gRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOworICAgICAgICBtX3N0
YXRlLnNoYWRvd09mZnNldCA9IEdyYXBoaWNzU2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdo
dCgpKTsKICAgICB9CiAKLSAgICBtX2RhdGEtPnNoYWRvdy0+c2V0U2hhZG93VmFsdWVzKEZsb2F0
U2l6ZShtX3N0YXRlLnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciksIG1fc3RhdGUuc2hh
ZG93T2Zmc2V0LCBjb2xvciwgY29sb3JTcGFjZSwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7CisgICAgbV9kYXRhLT5zaGFkb3ctPnNldFNoYWRvd1ZhbHVlcyhHcmFwaGljc1NpemUo
bV9zdGF0ZS5zaGFkb3dCbHVyLCBtX3N0YXRlLnNoYWRvd0JsdXIpLCBtX3N0YXRlLnNoYWRvd09m
ZnNldCwgY29sb3IsIGNvbG9yU3BhY2UsIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJQbGF0Zm9ybVNoYWRvdygpCkBAIC0x
MTg0LDcgKzExODQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cm90YXRlKGZsb2F0IHJhZGlh
CiAgICAgbV9kYXRhLT5wKCktPnJvdGF0ZShyYWQyZGVnKHFyZWFsKHJhZGlhbnMpKSk7CiB9CiAK
LXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHMpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2NhbGUoY29uc3QgR3JhcGhpY3NTaXplJiBzKQogewogICAgIGlmIChw
YWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAko
cmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0xheWVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsNyArMjgwLDcgQEAgcHVi
bGljOgogICAgICAgICBHcmFwaGljc0xheWVyKiBtYXNrTGF5ZXI7CiAgICAgICAgIEZsb2F0UG9p
bnQgcG9zOwogICAgICAgICBGbG9hdFBvaW50M0QgYW5jaG9yUG9pbnQ7Ci0gICAgICAgIEZsb2F0
U2l6ZSBzaXplOworICAgICAgICBHcmFwaGljc1NpemUgc2l6ZTsKICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGls
ZHJlblRyYW5zZm9ybTsKICAgICAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yOwpAQCAtMTA5OCw3
ICsxMDk4LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyUXQ6OnNldEFuY2hvclBvaW50KGNvbgogCiAv
KiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCi12b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0
U2l6ZShjb25zdCBGbG9hdFNpemUmIHZhbHVlKQordm9pZCBHcmFwaGljc0xheWVyUXQ6OnNldFNp
emUoY29uc3QgR3JhcGhpY3NTaXplJiB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gc2l6ZSgp
KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0xheWVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuaAkocmV2aXNpb24gOTEyMDApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBsYXllcik7CiAgICAgdmlydHVhbCB2b2lkIHNldFBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHApOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBbmNob3JQ
b2ludChjb25zdCBGbG9hdFBvaW50M0QmIHApOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSk7CisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgR3Jh
cGhpY3NTaXplJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENoaWxkcmVuVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJl
c2VydmVzM0QoYm9vbCBiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L1BhdGhRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvUGF0aFF0LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9QYXRoUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyAr
MTQyLDcgQEAgYm9vbCBQYXRoOjpzdHJva2VDb250YWlucyhTdHJva2VTdHlsZUFwcAogICAgIHJl
dHVybiBzdHJva2UuY3JlYXRlU3Ryb2tlKG1fcGF0aCkuY29udGFpbnMocG9pbnQpOwogfQogCi12
b2lkIFBhdGg6OnRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIFBhdGg6OnRy
YW5zbGF0ZShjb25zdCBHcmFwaGljc1NpemUmIHNpemUpCiB7CiAgICAgUVRyYW5zZm9ybSBtYXRy
aXg7CiAgICAgbWF0cml4LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGlsZVF0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UaWxlUXQuY3Bw
CShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L1RpbGVRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBWZWN0b3I8SW50
UmVjdD4gVGlsZTo6dXBkYXRlQmFja0J1ZmZlcigpCiAgICAgICAgIEludFJlY3QgcmVjdCA9IGRp
cnR5UmVjdHNbbl07CiAgICAgICAgIHVwZGF0ZWRSZWN0cy5hcHBlbmQocmVjdCk7CiAgICAgICAg
IGNvbnRleHQuY2xpcChGbG9hdFJlY3QocmVjdCkpOwotICAgICAgICBjb250ZXh0LnNjYWxlKEZs
b2F0U2l6ZShtX2JhY2tpbmdTdG9yZS0+bV9jb250ZW50c1NjYWxlLCBtX2JhY2tpbmdTdG9yZS0+
bV9jb250ZW50c1NjYWxlKSk7CisgICAgICAgIGNvbnRleHQuc2NhbGUoR3JhcGhpY3NTaXplKG1f
YmFja2luZ1N0b3JlLT5tX2NvbnRlbnRzU2NhbGUsIG1fYmFja2luZ1N0b3JlLT5tX2NvbnRlbnRz
U2NhbGUpKTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUtPm1fY2xpZW50LT50aWxlZEJhY2tpbmdT
dG9yZVBhaW50KCZjb250ZXh0LCBtX2JhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyhyZWN0KSk7
CiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRl
eHRTa2lhLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
OTIsNyArNTkyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKGNvbnN0IEludAog
ICAgIC8vIFdlIGtub3cgdGhlc2UgYXJlIHZlcnRpY2FsIG9yIGhvcml6b250YWwgbGluZXMsIHNv
IHRoZSBsZW5ndGggd2lsbCBqdXN0CiAgICAgLy8gYmUgdGhlIHN1bSBvZiB0aGUgZGlzcGxhY2Vt
ZW50IGNvbXBvbmVudCB2ZWN0b3JzIGdpdmUgb3IgdGFrZSAxIC0KICAgICAvLyBwcm9iYWJseSB3
b3J0aCB0aGUgc3BlZWQgdXAgb2Ygbm8gc3F1YXJlIHJvb3QsIHdoaWNoIGFsc28gd29uJ3QgYmUg
ZXhhY3QuCi0gICAgRmxvYXRTaXplIGRpc3AgPSBwMiAtIHAxOworICAgIEdyYXBoaWNzU2l6ZSBk
aXNwID0gcDIgLSBwMTsKICAgICBpbnQgbGVuZ3RoID0gU2tTY2FsYXJSb3VuZChkaXNwLndpZHRo
KCkgKyBkaXNwLmhlaWdodCgpKTsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZv
clN0cm9raW5nKCZwYWludCwgMCwgbGVuZ3RoKTsKIApAQCAtODcxLDcgKzg3MSw3IEBAIEZsb2F0
UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2UKICAgICByZXR1cm4gcmVjdDsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpzY2FsZShjb25zdCBHcmFwaGljc1NpemUmIHNpemUpCiB7CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTg4LDcgKzk4
OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUZpbGxDb2wKICAgICBwbGF0
Zm9ybUNvbnRleHQoKS0+c2V0RmlsbENvbG9yKGNvbG9yLnJnYigpKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBHcmFwaGljc1NpemUm
IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgYmx1
ckZsb2F0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENv
bG9yJiBjb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xv
clNwYWNlIGNvbG9yU3BhY2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ltYWdlU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgUmVzYW1wbGluZ01vZGUgY29tcHV0ZVJlc2Ft
cGxpbmdNCiB7CiAgICAgaWYgKHBsYXRmb3JtQ29udGV4dC0+aGFzSW1hZ2VSZXNhbXBsaW5nSGlu
dCgpKSB7CiAgICAgICAgIEludFNpemUgc3JjU2l6ZTsKLSAgICAgICAgRmxvYXRTaXplIGRzdFNp
emU7CisgICAgICAgIEdyYXBoaWNzU2l6ZSBkc3RTaXplOwogICAgICAgICBwbGF0Zm9ybUNvbnRl
eHQtPmdldEltYWdlUmVzYW1wbGluZ0hpbnQoJnNyY1NpemUsICZkc3RTaXplKTsKICAgICAgICAg
c3JjV2lkdGggPSBzcmNTaXplLndpZHRoKCk7CiAgICAgICAgIHNyY0hlaWdodCA9IHNyY1NpemUu
aGVpZ2h0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bh
dGhTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BhdGhTa2lhLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1BhdGhTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcs
NyArODcsNyBAQCBib29sIFBhdGg6OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmIHBvCiAgICAg
ICBydWxlID09IFJVTEVfTk9OWkVSTyA/IFNrUGF0aDo6a1dpbmRpbmdfRmlsbFR5cGUgOiBTa1Bh
dGg6OmtFdmVuT2RkX0ZpbGxUeXBlKTsKIH0KIAotdm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3Qg
RmxvYXRTaXplJiBzaXplKQordm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3QgR3JhcGhpY3NTaXpl
JiBzaXplKQogewogICAgIG1fcGF0aC0+b2Zmc2V0KFdlYkNvcmVGbG9hdFRvU2tTY2FsYXIoc2l6
ZS53aWR0aCgpKSwgV2ViQ29yZUZsb2F0VG9Ta1NjYWxhcihzaXplLmhlaWdodCgpKSk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTgwLDEzICs1ODAsMTMgQEAgYm9vbCBQbGF0Zm9ybUNvbnRleHRT
a2lhOjppc05hdGl2ZUZvbnRSZQogI2VuZGlmCiB9CiAKLXZvaWQgUGxhdGZvcm1Db250ZXh0U2tp
YTo6Z2V0SW1hZ2VSZXNhbXBsaW5nSGludChJbnRTaXplKiBzcmNTaXplLCBGbG9hdFNpemUqIGRz
dFNpemUpIGNvbnN0Cit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmdldEltYWdlUmVzYW1wbGlu
Z0hpbnQoSW50U2l6ZSogc3JjU2l6ZSwgR3JhcGhpY3NTaXplKiBkc3RTaXplKSBjb25zdAogewog
ICAgICpzcmNTaXplID0gbV9pbWFnZVJlc2FtcGxpbmdIaW50U3JjU2l6ZTsKICAgICAqZHN0U2l6
ZSA9IG1faW1hZ2VSZXNhbXBsaW5nSGludERzdFNpemU7CiB9CiAKLXZvaWQgUGxhdGZvcm1Db250
ZXh0U2tpYTo6c2V0SW1hZ2VSZXNhbXBsaW5nSGludChjb25zdCBJbnRTaXplJiBzcmNTaXplLCBj
b25zdCBGbG9hdFNpemUmIGRzdFNpemUpCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldElt
YWdlUmVzYW1wbGluZ0hpbnQoY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgR3JhcGhpY3NT
aXplJiBkc3RTaXplKQogewogICAgIG1faW1hZ2VSZXNhbXBsaW5nSGludFNyY1NpemUgPSBzcmNT
aXplOwogICAgIG1faW1hZ2VSZXNhbXBsaW5nSGludERzdFNpemUgPSBkc3RTaXplOwpAQCAtNTk1
LDcgKzU5NSw3IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0SW1hZ2VSZXNhbXAKIHZv
aWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6Y2xlYXJJbWFnZVJlc2FtcGxpbmdIaW50KCkKIHsKICAg
ICBtX2ltYWdlUmVzYW1wbGluZ0hpbnRTcmNTaXplID0gSW50U2l6ZSgpOwotICAgIG1faW1hZ2VS
ZXNhbXBsaW5nSGludERzdFNpemUgPSBGbG9hdFNpemUoKTsKKyAgICBtX2ltYWdlUmVzYW1wbGlu
Z0hpbnREc3RTaXplID0gR3JhcGhpY3NTaXplKCk7CiB9CiAKIGJvb2wgUGxhdGZvcm1Db250ZXh0
U2tpYTo6aGFzSW1hZ2VSZXNhbXBsaW5nSGludCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDgg
KzE3Miw4IEBAIHB1YmxpYzoKICAgICAvLyB0ZXh0IGRyYXdpbmcgQVBJcy4KICAgICBib29sIGlz
TmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKTsKIAotICAgIHZvaWQgZ2V0SW1hZ2VSZXNhbXBs
aW5nSGludChJbnRTaXplKiBzcmNTaXplLCBGbG9hdFNpemUqIGRzdFNpemUpIGNvbnN0OwotICAg
IHZvaWQgc2V0SW1hZ2VSZXNhbXBsaW5nSGludChjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25z
dCBGbG9hdFNpemUmIGRzdFNpemUpOworICAgIHZvaWQgZ2V0SW1hZ2VSZXNhbXBsaW5nSGludChJ
bnRTaXplKiBzcmNTaXplLCBHcmFwaGljc1NpemUqIGRzdFNpemUpIGNvbnN0OworICAgIHZvaWQg
c2V0SW1hZ2VSZXNhbXBsaW5nSGludChjb25zdCBJbnRTaXplJiBzcmNTaXplLCBjb25zdCBHcmFw
aGljc1NpemUmIGRzdFNpemUpOwogICAgIHZvaWQgY2xlYXJJbWFnZVJlc2FtcGxpbmdIaW50KCk7
CiAgICAgYm9vbCBoYXNJbWFnZVJlc2FtcGxpbmdIaW50KCkgY29uc3Q7CiAKQEAgLTIwNyw3ICsy
MDcsNyBAQCBwcml2YXRlOgogICAgIC8vIFN0b3JlcyBpbWFnZSBzaXplcyBmb3IgYSBoaW50IHRv
IGNvbXB1dGUgaW1hZ2UgcmVzYW1wbGluZyBtb2Rlcy4KICAgICAvLyBWYWx1ZXMgYXJlIHVzZWQg
aW4gSW1hZ2VTa2lhLmNwcAogICAgIEludFNpemUgbV9pbWFnZVJlc2FtcGxpbmdIaW50U3JjU2l6
ZTsKLSAgICBGbG9hdFNpemUgbV9pbWFnZVJlc2FtcGxpbmdIaW50RHN0U2l6ZTsKKyAgICBHcmFw
aGljc1NpemUgbV9pbWFnZVJlc2FtcGxpbmdIaW50RHN0U2l6ZTsKICAgICBib29sIG1fcHJpbnRp
bmc7CiAgICAgYm9vbCBtX2RyYXdpbmdUb0ltYWdlQnVmZmVyOwogICAgIEdyYXBoaWNzQ29udGV4
dDNEKiBtX2dwdUNvbnRleHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1NraWFGb250V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wg
d2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCkK
IHsKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OworICAgIEdyYXBoaWNzU2l6ZSBzaGFkb3dP
ZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAg
ICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OnNldEFuY2gKIAogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwot
dm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUm
IHZhbHVlKQordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2l6ZShjb25zdCBH
cmFwaGljc1NpemUmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSA9PSBzaXplKCkpCiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCShy
ZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1
OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza0xheWVyKEdyYXBoaWNzTGF5
ZXIqIGxheWVyKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2lu
dCYgcCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQz
RCYgcCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBHcmFwaGljc1NpemUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2hpbGRyZW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sIGIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJO
b2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpj
b21wdXRlVGlsZXMoKQogICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHRpbGVzVG9BZGQ7CiAgICAgVmVj
dG9yPGludD4gdGlsZXNUb1JlbW92ZTsKICAgICBjb25zdCBpbnQgVGlsZUVyYXNlVGhyZXNob2xk
ID0gNjsKLSAgICBGbG9hdFNpemUgc2l6ZSA9IGNvbnRlbnRTaXplKCk7CisgICAgR3JhcGhpY3NT
aXplIHNpemUgPSBjb250ZW50U2l6ZSgpOwogICAgIEZsb2F0UmVjdCBjb250ZW50UmVjdCgwLCAw
LCBzaXplLndpZHRoKCkgKiBtX3N0YXRlLmNvbnRlbnRTY2FsZSwgc2l6ZS5oZWlnaHQoKSAqIG1f
c3RhdGUuY29udGVudFNjYWxlKTsKIAogICAgIGZvciAoZmxvYXQgeSA9IDA7IHkgPCBjb250ZW50
UmVjdC5oZWlnaHQoKTsgeSArPSBnVGlsZURpbWVuc2lvbikgewpAQCAtMzMxLDcgKzMzMSw3IEBA
IHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OnJlbmRlckNvbnRlbnQoVGUKICAgICAgICAgICAgIGNv
bnRleHQuc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCkpOwogICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0RHJhd2lu
Z01vZGUodGV4dHVyZU1hcHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOwogICAgICAgICAgICAgY29u
dGV4dC50cmFuc2xhdGUob2Zmc2V0LngoKSwgb2Zmc2V0LnkoKSk7Ci0gICAgICAgICAgICBjb250
ZXh0LnNjYWxlKEZsb2F0U2l6ZShtX3N0YXRlLmNvbnRlbnRTY2FsZSwgbV9zdGF0ZS5jb250ZW50
U2NhbGUpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2NhbGUoR3JhcGhpY3NTaXplKG1fc3RhdGUu
Y29udGVudFNjYWxlLCBtX3N0YXRlLmNvbnRlbnRTY2FsZSkpOwogICAgICAgICAgICAgRmxvYXRS
ZWN0IHNjYWxlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0KTsKICAgICAgICAgICAgIHNjYWxlZENv
bnRlbnRSZWN0LnNjYWxlKDEuMCAvIG1fc3RhdGUuY29udGVudFNjYWxlKTsKICAgICAgICAgICAg
IGlmIChtX2N1cnJlbnRDb250ZW50LmNvbnRlbnRUeXBlID09IERpcmVjdEltYWdlQ29udGVudFR5
cGUpCkBAIC02MTcsOSArNjE3LDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6c3luY0NvbXBv
c2l0aW5nUwogICAgIH0KIAogICAgIGlmIChjaGFuZ2VNYXNrICYgKFNpemVDaGFuZ2UgfCBDb250
ZW50c1JlY3RDaGFuZ2UpKSB7Ci0gICAgICAgIEZsb2F0U2l6ZSB3YW50ZWRTaXplKGdyYXBoaWNz
TGF5ZXItPnNpemUoKS53aWR0aCgpLCBncmFwaGljc0xheWVyLT5zaXplKCkuaGVpZ2h0KCkpOwor
ICAgICAgICBHcmFwaGljc1NpemUgd2FudGVkU2l6ZShncmFwaGljc0xheWVyLT5zaXplKCkud2lk
dGgoKSwgZ3JhcGhpY3NMYXllci0+c2l6ZSgpLmhlaWdodCgpKTsKICAgICAgICAgaWYgKHdhbnRl
ZFNpemUuaXNFbXB0eSgpICYmIHBlbmRpbmdDb250ZW50LmNvbnRlbnRUeXBlID09IEhUTUxDb250
ZW50VHlwZSkKLSAgICAgICAgICAgIHdhbnRlZFNpemUgPSBGbG9hdFNpemUoZ3JhcGhpY3NMYXll
ci0+Y29udGVudHNSZWN0KCkud2lkdGgoKSwgZ3JhcGhpY3NMYXllci0+Y29udGVudHNSZWN0KCku
aGVpZ2h0KCkpOworICAgICAgICAgICAgd2FudGVkU2l6ZSA9IEdyYXBoaWNzU2l6ZShncmFwaGlj
c0xheWVyLT5jb250ZW50c1JlY3QoKS53aWR0aCgpLCBncmFwaGljc0xheWVyLT5jb250ZW50c1Jl
Y3QoKS5oZWlnaHQoKSk7CiAKICAgICAgICAgaWYgKHdhbnRlZFNpemUgIT0gbV9zaXplKQogICAg
ICAgICAgICAgbV90aWxlcy5jbGVhcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgJKHJl
dmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw3ICsyMDYsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpOwogICAgIH0KIAotICAgIEZsb2F0U2l6ZSBjb250ZW50U2l6ZSgpIGNv
bnN0CisgICAgR3JhcGhpY3NTaXplIGNvbnRlbnRTaXplKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2N1cnJlbnRDb250ZW50LmNvbnRlbnRUeXBlID09IERpcmVjdEltYWdlQ29udGVu
dFR5cGUgJiYgbV9jdXJyZW50Q29udGVudC5pbWFnZSA/IG1fY3VycmVudENvbnRlbnQuaW1hZ2Ut
PnNpemUoKSA6IG1fc2l6ZTsKICAgICB9CkBAIC0yMjMsMTQgKzIyMywxNCBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxUZXh0dXJlTWFwcGVyTm9kZSo+IG1fY2hpbGRyZW47CiAgICAgVGV4dHVyZU1h
cHBlck5vZGUqIG1fcGFyZW50OwogICAgIFRleHR1cmVNYXBwZXJOb2RlKiBtX2VmZmVjdFRhcmdl
dDsKLSAgICBGbG9hdFNpemUgbV9zaXplOworICAgIEdyYXBoaWNzU2l6ZSBtX3NpemU7CiAgICAg
ZmxvYXQgbV9vcGFjaXR5OwogICAgIFN0cmluZyBtX25hbWU7CiAKICAgICBzdHJ1Y3QgU3RhdGUg
ewogICAgICAgICBGbG9hdFBvaW50IHBvczsKICAgICAgICAgRmxvYXRQb2ludDNEIGFuY2hvclBv
aW50OwotICAgICAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICAgICAgR3JhcGhpY3NTaXplIHNpemU7
CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggY2hpbGRyZW5UcmFuc2Zvcm07CiAgICAgICAgIGZsb2F0IG9wYWNpdHk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dENHV2luLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udENHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3
IEBAIHN0YXRpYyB2b2lkIGRyYXdHRElHbHlwaHMoR3JhcGhpY3NDb250ZXgKIAogICAgICAgICBk
cmF3SW50b0JpdG1hcCA9IGZpbGxDb2xvci5hbHBoYSgpICE9IDI1NSB8fCBncmFwaGljc0NvbnRl
eHQtPmluVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAgICAgICAgaWYgKCFkcmF3SW50b0JpdG1hcCkg
ewotICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldDsKKyAgICAgICAgICAgIEdyYXBoaWNzU2l6
ZSBvZmZzZXQ7CiAgICAgICAgICAgICBmbG9hdCBibHVyOwogICAgICAgICAgICAgQ29sb3IgY29s
b3I7CiAgICAgICAgICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CkBAIC0xOTksNyAr
MTk5LDcgQEAgc3RhdGljIHZvaWQgZHJhd0dESUdseXBocyhHcmFwaGljc0NvbnRleAogICAgIFNl
dFRleHRBbGlnbihoZGMsIFRBX0xFRlQgfCBUQV9CQVNFTElORSk7CiAKICAgICAvLyBVbmlzY3Jp
YmUgZ2l2ZXMgdXMgb2Zmc2V0cyB0byBoZWxwIHJlZmluZSB0aGUgcG9zaXRpb25pbmcgb2YgY29t
YmluaW5nIGdseXBocy4KLSAgICBGbG9hdFNpemUgdHJhbnNsYXRpb24gPSBnbHlwaEJ1ZmZlci5v
ZmZzZXRBdChmcm9tKTsKKyAgICBHcmFwaGljc1NpemUgdHJhbnNsYXRpb24gPSBnbHlwaEJ1ZmZl
ci5vZmZzZXRBdChmcm9tKTsKICAgICBpZiAodHJhbnNsYXRpb24ud2lkdGgoKSB8fCB0cmFuc2xh
dGlvbi5oZWlnaHQoKSkgewogICAgICAgICBYRk9STSB4Zm9ybTsKICAgICAgICAgeGZvcm0uZU0x
MSA9IDEuMDsKQEAgLTM1MCwxMiArMzUwLDEyIEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqIGcKICAgICBDR0NvbnRleHRTZXRUZXh0TWF0cml4KGNnQ29udGV4dCwgbWF0
cml4KTsKIAogICAgIC8vIFVuaXNjcmliZSBnaXZlcyB1cyBvZmZzZXRzIHRvIGhlbHAgcmVmaW5l
IHRoZSBwb3NpdGlvbmluZyBvZiBjb21iaW5pbmcgZ2x5cGhzLgotICAgIEZsb2F0U2l6ZSB0cmFu
c2xhdGlvbiA9IGdseXBoQnVmZmVyLm9mZnNldEF0KGZyb20pOworICAgIEdyYXBoaWNzU2l6ZSB0
cmFuc2xhdGlvbiA9IGdseXBoQnVmZmVyLm9mZnNldEF0KGZyb20pOwogCiAgICAgQ0dDb250ZXh0
U2V0Rm9udFNpemUoY2dDb250ZXh0LCBwbGF0Zm9ybURhdGEuc2l6ZSgpKTsKICAgICB3a1NldENH
Q29udGV4dEZvbnRSZW5kZXJpbmdTdHlsZShjZ0NvbnRleHQsIGZvbnQtPmlzU3lzdGVtRm9udCgp
LCBmYWxzZSwgZm9udC0+cGxhdGZvcm1EYXRhKCkudXNlR0RJKCkpOwogCi0gICAgRmxvYXRTaXpl
IHNoYWRvd09mZnNldDsKKyAgICBHcmFwaGljc1NpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0
IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgQ29sb3JTcGFjZSBzaGFk
b3dDb2xvclNwYWNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dFdpbi5jcHAJKHJldmlzaW9uIDkxMjAw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4
dFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZTo6Y2xpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU6OnNjYWxlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOjpzY2FsZShjb25z
dCBHcmFwaGljc1NpemUmIHNpemUpCiB7CiAgICAgaWYgKCFtX2hkYykKICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzTGF5
ZXJDQUNGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NMYXllckNBQ0YuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0xheWVyQ0FDRi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQUNGOjpzZXRB
bmNob3JQb2ludChjCiAgICAgdXBkYXRlQW5jaG9yUG9pbnQoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQ0FDRjo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIEdyYXBoaWNz
TGF5ZXJDQUNGOjpzZXRTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAo
c2l6ZSA9PSBtX3NpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDQUNGOjpzZXREZWJ1Z0JvcmRlcihjCiAgICAgfQogfQogCi1ib29sIEdy
YXBoaWNzTGF5ZXJDQUNGOjpyZXF1aXJlc1RpbGVkTGF5ZXIoY29uc3QgRmxvYXRTaXplJiBzaXpl
KSBjb25zdAorYm9vbCBHcmFwaGljc0xheWVyQ0FDRjo6cmVxdWlyZXNUaWxlZExheWVyKGNvbnN0
IEdyYXBoaWNzU2l6ZSYgc2l6ZSkgY29uc3QKIHsKICAgICBpZiAoIW1fZHJhd3NDb250ZW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vR3JhcGhpY3NMYXllckNBQ0YuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXllckNBQ0YuaAkocmV2aXNpb24gOTEy
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NMYXll
ckNBQ0YuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgaW5Qb2ludCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgaW5Qb2ludCk7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJiBpblNpemUpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgaW5TaXplKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsK
IApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFdLQ0FDRkxheWVyKiBob3N0TGF5ZXJG
b3JTdWJsYXllcnMoKSBjb25zdDsKICAgICBXS0NBQ0ZMYXllciogbGF5ZXJGb3JTdXBlcmxheWVy
KCkgY29uc3Q7CiAKLSAgICBib29sIHJlcXVpcmVzVGlsZWRMYXllcihjb25zdCBGbG9hdFNpemUm
KSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzVGlsZWRMYXllcihjb25zdCBHcmFwaGljc1NpemUm
KSBjb25zdDsKICAgICB2b2lkIHN3YXBGcm9tT3JUb1RpbGVkTGF5ZXIoYm9vbCB1c2VUaWxlZExh
eWVyKTsKIAogICAgIENvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBkZWZhdWx0Q29u
dGVudHNPcmllbnRhdGlvbigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAkocmV2aXNpb24gOTEyMDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMSAr
MTE2LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ28KICAgICBB
U1NFUlQobV9wYXJlbnQpOwogICAgIEFTU0VSVChtX3BhcmVudC0+bV90cmFuc2Zvcm1MYXllciA9
PSBsYXllcik7CiAKLSAgICBGbG9hdFNpemUgcGFyZW50U2l6ZSA9IGxheWVyLT5ib3VuZHMoKS5z
aXplKCk7Ci0gICAgRmxvYXRTaXplIG5hdHVyYWxTaXplID0gbV9wYXJlbnQtPm5hdHVyYWxTaXpl
KCk7CisgICAgR3JhcGhpY3NTaXplIHBhcmVudFNpemUgPSBsYXllci0+Ym91bmRzKCkuc2l6ZSgp
OworICAgIEdyYXBoaWNzU2l6ZSBuYXR1cmFsU2l6ZSA9IG1fcGFyZW50LT5uYXR1cmFsU2l6ZSgp
OwogCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSByYXRpbyBvZiB0aGVzZSB0d28gc2l6ZXMgYW5kIHVz
ZSB0aGF0IHJhdGlvIHRvIHNjYWxlIHRoZSBxdFZpZGVvTGF5ZXI6Ci0gICAgRmxvYXRTaXplIHJh
dGlvKHBhcmVudFNpemUud2lkdGgoKSAvIG5hdHVyYWxTaXplLndpZHRoKCksIHBhcmVudFNpemUu
aGVpZ2h0KCkgLyBuYXR1cmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgR3JhcGhpY3NTaXplIHJhdGlv
KHBhcmVudFNpemUud2lkdGgoKSAvIG5hdHVyYWxTaXplLndpZHRoKCksIHBhcmVudFNpemUuaGVp
Z2h0KCkgLyBuYXR1cmFsU2l6ZS5oZWlnaHQoKSk7CiAKICAgICBpbnQgdmlkZW9XaWR0aCA9IDA7
CiAgICAgaW50IHZpZGVvSGVpZ2h0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9VbmlzY3JpYmVDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vVW5pc2NyaWJlQ29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L1VuaXNjcmliZUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcg
QEAgYm9vbCBVbmlzY3JpYmVDb250cm9sbGVyOjpzaGFwZUFuZFBsYWNlSQogICAgICAgICAvLyBh
cyB3ZWxsLCBzbyB0aGF0IHdoZW4gdGhlIHRpbWUgY29tZXMgdG8gZHJhdyB0aG9zZSBnbHlwaHMs
IHdlIGNhbiBhcHBseSB0aGUgYXBwcm9wcmlhdGUKICAgICAgICAgLy8gdHJhbnNsYXRpb24uCiAg
ICAgICAgIGlmIChnbHlwaEJ1ZmZlcikgewotICAgICAgICAgICAgRmxvYXRTaXplIHNpemUob2Zm
c2V0WCwgLW9mZnNldFkpOworICAgICAgICAgICAgR3JhcGhpY3NTaXplIHNpemUob2Zmc2V0WCwg
LW9mZnNldFkpOwogICAgICAgICAgICAgZ2x5cGhCdWZmZXItPmFkZChnbHlwaCwgZm9udERhdGEs
IGFkdmFuY2UsICZzaXplKTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5DRS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0
V2luQ0UuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgbV90cmFuc2Zvcm0udHJhbnNsYXRlKHgs
IHkpOwogICAgIH0KIAotICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQorICAg
IHZvaWQgc2NhbGUoY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKQogICAgIHsKICAgICAgICAgbV90
cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAg
ICAgfQpAQCAtMjM2LDExICsyMzYsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV90cmFu
c2Zvcm0ubWFwUG9pbnQocG9pbnQpOwogICAgIH0KIAotICAgIEZsb2F0U2l6ZSBtYXBTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKKyAgICBHcmFwaGljc1NpemUgbWFwU2l6ZShjb25z
dCBHcmFwaGljc1NpemUmIHNpemUpIGNvbnN0CiAgICAgewogICAgICAgICBkb3VibGUgdywgaDsK
ICAgICAgICAgbV90cmFuc2Zvcm0ubWFwKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgdywg
aCk7Ci0gICAgICAgIHJldHVybiBGbG9hdFNpemUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHcpLCBzdGF0
aWNfY2FzdDxmbG9hdD4oaCkpOworICAgICAgICByZXR1cm4gR3JhcGhpY3NTaXplKHN0YXRpY19j
YXN0PGZsb2F0Pih3KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGgpKTsKICAgICB9CiAKICAgICB2b2lk
IHNhdmUoKQpAQCAtNTEyLDggKzUxMiw4IEBAIFRyYW5zcGFyZW50TGF5ZXJEQzo6VHJhbnNwYXJl
bnRMYXllckRDKEcKICAgICAgICAgICAgIHRvcFJpZ2h0ID0gbV9kYXRhLT5tX3RyYW5zZm9ybS5t
YXBQb2ludCh0b3BSaWdodCk7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGJvdHRvbUxlZnQocmVj
dEJlZm9yZVRyYW5zZm9ybS0+eCgpLCByZWN0QmVmb3JlVHJhbnNmb3JtLT5tYXhZKCkgLSAxKTsK
ICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBtX2RhdGEtPm1fdHJhbnNmb3JtLm1hcFBvaW50KGJv
dHRvbUxlZnQpOwotICAgICAgICAgICAgRmxvYXRTaXplIHNpZGVUb3AgPSB0b3BSaWdodCAtIHRv
cExlZnQ7Ci0gICAgICAgICAgICBGbG9hdFNpemUgc2lkZUxlZnQgPSBib3R0b21MZWZ0IC0gdG9w
TGVmdDsKKyAgICAgICAgICAgIEdyYXBoaWNzU2l6ZSBzaWRlVG9wID0gdG9wUmlnaHQgLSB0b3BM
ZWZ0OworICAgICAgICAgICAgR3JhcGhpY3NTaXplIHNpZGVMZWZ0ID0gYm90dG9tTGVmdCAtIHRv
cExlZnQ7CiAgICAgICAgICAgICBmbG9hdCB3aWR0aCA9IF9oeXBvdChzaWRlVG9wLndpZHRoKCkg
KyAxLCBzaWRlVG9wLmhlaWdodCgpICsgMSk7CiAgICAgICAgICAgICBmbG9hdCBoZWlnaHQgPSBf
aHlwb3Qoc2lkZUxlZnQud2lkdGgoKSArIDEsIHNpZGVMZWZ0LmhlaWdodCgpICsgMSk7CiAKQEAg
LTEwMjgsNyArMTAyOCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHQo
Y28KIAogICAgIFN0cm9rZVN0eWxlIG9sZFN0eWxlID0gc3Ryb2tlU3R5bGUoKTsKICAgICBzZXRT
dHJva2VTdHlsZShTb2xpZFN0cm9rZSk7Ci0gICAgZHJhd0xpbmUocm91bmRlZEludFBvaW50KG9y
aWdpbiksIHJvdW5kZWRJbnRQb2ludChvcmlnaW4gKyBGbG9hdFNpemUod2lkdGgsIDApKSk7Cisg
ICAgZHJhd0xpbmUocm91bmRlZEludFBvaW50KG9yaWdpbiksIHJvdW5kZWRJbnRQb2ludChvcmln
aW4gKyBHcmFwaGljc1NpemUod2lkdGgsIDApKSk7CiAgICAgc2V0U3Ryb2tlU3R5bGUob2xkU3R5
bGUpOwogfQogCkBAIC0xMTU5LDcgKzExNTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cm90
YXRlKGZsb2F0IHJhZGlhCiAgICAgbV9kYXRhLT5yb3RhdGUocmFkaWFucyk7CiB9CiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2NhbGUoY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKQogewogICAgIG1fZGF0
YS0+c2NhbGUoc2l6ZSk7CiB9CkBAIC0xMjE0LDcgKzEyMTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvCiAgICAgaWYgKCFtX2RhdGEtPm1fZGMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CisgICAgR3JhcGhpY3NTaXpl
IHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyID0gMDsKICAgICBDb2xvciBzaGFk
b3dDb2xvcjsKICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CkBAIC0xMjI3LDEwICsx
MjI3LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUm91bmRlZFJlY3QoY28KICAgICBk
c3RSZWN0LmluZmxhdGUoc3RhYmxlUm91bmQoc2hhZG93Qmx1cikpOwogICAgIGRzdFJlY3QgPSBt
X2RhdGEtPm1hcFJlY3QoZHN0UmVjdCk7CiAgIAotICAgIEZsb2F0U2l6ZSBuZXdUb3BMZWZ0KG1f
ZGF0YS0+bWFwU2l6ZSh0b3BMZWZ0KSk7Ci0gICAgRmxvYXRTaXplIG5ld1RvcFJpZ2h0KG1fZGF0
YS0+bWFwU2l6ZSh0b3BSaWdodCkpOwotICAgIEZsb2F0U2l6ZSBuZXdCb3R0b21MZWZ0KG1fZGF0
YS0+bWFwU2l6ZShib3R0b21MZWZ0KSk7Ci0gICAgRmxvYXRTaXplIG5ld0JvdHRvbVJpZ2h0KG1f
ZGF0YS0+bWFwU2l6ZShib3R0b21SaWdodCkpOworICAgIEdyYXBoaWNzU2l6ZSBuZXdUb3BMZWZ0
KG1fZGF0YS0+bWFwU2l6ZSh0b3BMZWZ0KSk7CisgICAgR3JhcGhpY3NTaXplIG5ld1RvcFJpZ2h0
KG1fZGF0YS0+bWFwU2l6ZSh0b3BSaWdodCkpOworICAgIEdyYXBoaWNzU2l6ZSBuZXdCb3R0b21M
ZWZ0KG1fZGF0YS0+bWFwU2l6ZShib3R0b21MZWZ0KSk7CisgICAgR3JhcGhpY3NTaXplIG5ld0Jv
dHRvbVJpZ2h0KG1fZGF0YS0+bWFwU2l6ZShib3R0b21SaWdodCkpOwogCiAgICAgVHJhbnNwYXJl
bnRMYXllckRDIHRyYW5zcGFyZW50RGMobV9kYXRhLCBkc3RSZWN0LCAmZmlsbFJlY3QpOwogICAg
IEhEQyBkYyA9IHRyYW5zcGFyZW50RGMuaGRjKCk7CkBAIC0xNDU2LDcgKzE0NTYsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAgICAgaW50IHkgPSByZWN0Lnko
KTsKICAgICBpbnQgd2lkdGggPSByZWN0LndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHJlY3Qu
aGVpZ2h0KCk7Ci0gICAgRmxvYXRTaXplIGQgPSBncmFkaWVudC0+cDEoKSAtIGdyYWRpZW50LT5w
MCgpOworICAgIEdyYXBoaWNzU2l6ZSBkID0gZ3JhZGllbnQtPnAxKCkgLSBncmFkaWVudC0+cDAo
KTsKICAgICBib29sIHZlcnRpY2FsID0gZmFicyhkLmhlaWdodCgpKSA+IGZhYnMoZC53aWR0aCgp
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVN0b3BzOyArK2kpIHsKICAgICAgICAg
Y29uc3QgR3JhZGllbnQ6OkNvbG9yU3RvcCYgc3RvcCA9IHN0b3BzW2ldOwpAQCAtMTUwNCw3ICsx
NTA0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsbwogICAgIHJl
c3RvcmVQbGF0Zm9ybVN0YXRlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCwgY29uc3QgQ29sb3ImLCBDb2xvclNw
YWNlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEdyYXBo
aWNzU2l6ZSYsIGZsb2F0LCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KQEAgLTE1NTQsNyArMTU1NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3VGV4dChjb25zdCBGb24KICAgICAgICAgewogICAgICAgICAgICAgR3JhcGhpY3NDb250
ZXh0IGdjKDApOwogICAgICAgICAgICAgZ2Muc2V0Qml0bWFwKGJtcCk7Ci0gICAgICAgICAgICBn
Yy5zY2FsZShGbG9hdFNpemUobV9kYXRhLT5tX3RyYW5zZm9ybS5hKCksIG1fZGF0YS0+bV90cmFu
c2Zvcm0uZCgpKSk7CisgICAgICAgICAgICBnYy5zY2FsZShHcmFwaGljc1NpemUobV9kYXRhLT5t
X3RyYW5zZm9ybS5hKCksIG1fZGF0YS0+bV90cmFuc2Zvcm0uZCgpKSk7CiAgICAgICAgICAgICBm
b250LmRyYXdUZXh0KCZnYywgcnVuLCBJbnRQb2ludCgwLCBmb250LmZvbnRNZXRyaWNzKCkuYXNj
ZW50KCkpLCBmcm9tLCB0byk7CiAgICAgICAgIH0KICAgICAgICAgdW5zaWduZWQga2V5MTsKQEAg
LTE2MzIsNyArMTYzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBT
aW0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7
CisgICAgR3JhcGhpY3NTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyID0g
MDsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3Bh
Y2U7CkBAIC0xODU0LDcgKzE4NTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpdG1h
cFBhdHRlcm4oCiAgICAgICAgIHJldHVybjsKICAgICB0clJlY3QubW92ZSh0cmFuc3BhcmVudERD
LnRvU2hpZnQoKSk7CiAgICAgRmxvYXRSZWN0IG1vdmVkRHN0UmVjdCA9IG1fZGF0YS0+bV90cmFu
c2Zvcm0uaW52ZXJzZSgpLm1hcFJlY3QoRmxvYXRSZWN0KHRyUmVjdCkpOwotICAgIEZsb2F0U2l6
ZSBtb3ZlZChtb3ZlZERzdFJlY3QubG9jYXRpb24oKSAtIGRlc3RSZWN0SW4ubG9jYXRpb24oKSk7
CisgICAgR3JhcGhpY3NTaXplIG1vdmVkKG1vdmVkRHN0UmVjdC5sb2NhdGlvbigpIC0gZGVzdFJl
Y3RJbi5sb2NhdGlvbigpKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gbV9kYXRh
LT5tX3RyYW5zZm9ybTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG1vdmVkLndpZHRoKCksIG1v
dmVkLmhlaWdodCgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luY2UvUGF0aFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW5jZS9QYXRoV2luQ0UuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL1BhdGhXaW5DRS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDcgKzU4LDcgQEAgYm9vbCBQYXRoOjpjb250YWlucyhjb25zdCBGbG9hdFBv
aW50JiBwbwogICAgIHJldHVybiBtX3BhdGgtPmNvbnRhaW5zKHBvaW50LCBydWxlKTsKIH0KIAot
dm9pZCBQYXRoOjp0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQordm9pZCBQYXRoOjp0
cmFuc2xhdGUoY29uc3QgR3JhcGhpY3NTaXplJiBzaXplKQogewogICAgIG1fcGF0aC0+dHJhbnNs
YXRlKHNpemUpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
Y2UvUGxhdGZvcm1QYXRoV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL1BsYXRmb3JtUGF0aFdpbkNFLmNwcAkocmV2aXNpb24gOTEy
MDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9QbGF0Zm9ybVBh
dGhXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgdm9p
ZCBpbmZsYXRlUmVjdFRvQ29udGFpblBvaW50KEZsCiAgICAgaWYgKHIuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHIuc2V0WCh4KTsKICAgICAgICAgci5zZXRZKHkpOwotICAgICAgICByLnNldFNpemUo
RmxvYXRTaXplKDEsIDEpKTsKKyAgICAgICAgci5zZXRTaXplKEdyYXBoaWNzU2l6ZSgxLCAxKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHggPCByLngoKSkgewpAQCAtMzEwLDcg
KzMxMCw3IEBAIGludCBQbGF0Zm9ybVBhdGhFbGVtZW50OjpudW1Qb2ludHMoKSBjb24KICAgICB9
CiB9CiAKLXZvaWQgUGF0aFBvbHlnb246Om1vdmUoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCit2
b2lkIFBhdGhQb2x5Z29uOjptb3ZlKGNvbnN0IEdyYXBoaWNzU2l6ZSYgb2Zmc2V0KQogewogICAg
IGZvciAoVmVjdG9yPFBhdGhQb2ludD46Oml0ZXJhdG9yIGkgPSBiZWdpbigpOyBpIDwgZW5kKCk7
ICsraSkKICAgICAgICAgaS0+bW92ZShvZmZzZXQpOwpAQCAtMzk1LDcgKzM5NSw3IEBAIGJvb2wg
UGF0aFBvbHlnb246OmNvbnRhaW5zKGNvbnN0IEZsb2F0UG8KICAgICByZXR1cm4gaW50ZXJzZWN0
ZWQgJiAxOwogfQogCi12b2lkIFBsYXRmb3JtUGF0aEVsZW1lbnQ6Om1vdmUoY29uc3QgRmxvYXRT
aXplJiBvZmZzZXQpCit2b2lkIFBsYXRmb3JtUGF0aEVsZW1lbnQ6Om1vdmUoY29uc3QgR3JhcGhp
Y3NTaXplJiBvZmZzZXQpCiB7CiAgICAgaW50IG4gPSBudW1Db250cm9sUG9pbnRzKCk7CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpCkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBQbGF0
Zm9ybVBhdGg6OmZpbGxQYXRoKEhEQyBkYywgY29ucwogICAgIFNlbGVjdE9iamVjdChkYywgb2xk
UGVuKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVBhdGg6OnRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUm
IHNpemUpCit2b2lkIFBsYXRmb3JtUGF0aDo6dHJhbnNsYXRlKGNvbnN0IEdyYXBoaWNzU2l6ZSYg
c2l6ZSkKIHsKICAgICBmb3IgKFBsYXRmb3JtUGF0aEVsZW1lbnRzOjppdGVyYXRvciBpdChtX2Vs
ZW1lbnRzLmJlZ2luKCkpOyBpdCAhPSBtX2VsZW1lbnRzLmVuZCgpOyArK2l0KQogICAgICAgICBp
dC0+bW92ZShzaXplKTsKQEAgLTc1MCw3ICs3NTAsNyBAQCB2b2lkIFBsYXRmb3JtUGF0aDo6YWRk
UmVjdChjb25zdCBGbG9hdFJlCiAKIHZvaWQgUGxhdGZvcm1QYXRoOjphZGRFbGxpcHNlKGNvbnN0
IEZsb2F0UmVjdCYgcikKIHsKLSAgICBGbG9hdFNpemUgcmFkaXVzKHIud2lkdGgoKSAqIDAuNSwg
ci5oZWlnaHQoKSAqIDAuNSk7CisgICAgR3JhcGhpY3NTaXplIHJhZGl1cyhyLndpZHRoKCkgKiAw
LjUsIHIuaGVpZ2h0KCkgKiAwLjUpOwogICAgIGFkZEVsbGlwc2Uoci5sb2NhdGlvbigpICsgcmFk
aXVzLCByYWRpdXMud2lkdGgoKSwgcmFkaXVzLmhlaWdodCgpLCAwLCAwLCB0cnVlKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvUGxhdGZvcm1QYXRo
V2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9QbGF0Zm9ybVBhdGhXaW5DRS5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL1BsYXRmb3JtUGF0aFdpbkNFLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
bV95ID0geTsKICAgICAgICAgfTsKICAgICAgICAgb3BlcmF0b3IgRmxvYXRQb2ludCgpIGNvbnN0
IHsgcmV0dXJuIEZsb2F0UG9pbnQobV94LCBtX3kpOyB9Ci0gICAgICAgIHZvaWQgbW92ZShjb25z
dCBGbG9hdFNpemUmIG9mZnNldCkKKyAgICAgICAgdm9pZCBtb3ZlKGNvbnN0IEdyYXBoaWNzU2l6
ZSYgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBtX3ggKz0gb2Zmc2V0LndpZHRoKCk7
CiAgICAgICAgICAgICBtX3kgKz0gb2Zmc2V0LmhlaWdodCgpOwpAQCAtNTUsNyArNTUsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBQYXRoUG9seWdvbjogcHVi
bGljIFZlY3RvcjxQYXRoUG9pbnQ+IHsKLSAgICAgICAgdm9pZCBtb3ZlKGNvbnN0IEZsb2F0U2l6
ZSYgb2Zmc2V0KTsKKyAgICAgICAgdm9pZCBtb3ZlKGNvbnN0IEdyYXBoaWNzU2l6ZSYgb2Zmc2V0
KTsKICAgICAgICAgdm9pZCB0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0KTsKICAg
ICAgICAgYm9vbCBjb250YWlucyhjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3Q7CiAgICAg
fTsKQEAgLTExNyw3ICsxMTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0
IFBhdGhQb2ludCYgcG9pbnRBdChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5tX3Bv
aW50c1tpbmRleF07IH0KICAgICAgICAgaW50IG51bVBvaW50cygpIGNvbnN0OwogICAgICAgICBp
bnQgbnVtQ29udHJvbFBvaW50cygpIGNvbnN0OwotICAgICAgICB2b2lkIG1vdmUoY29uc3QgRmxv
YXRTaXplJiBvZmZzZXQpOworICAgICAgICB2b2lkIG1vdmUoY29uc3QgR3JhcGhpY3NTaXplJiBv
ZmZzZXQpOwogICAgICAgICB2b2lkIHRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHQp
OwogICAgICAgICBQYXRoRWxlbWVudFR5cGUgdHlwZSgpIGNvbnN0OwogICAgICAgICBQbGFmb3Jt
UGF0aEVsZW1lbnRUeXBlIHBsYXRmb3JtVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpA
QCAtMTUyLDcgKzE1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBjb25zdCBG
bG9hdFJlY3QmIGJvdW5kaW5nUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRpbmdSZWN0OyB9
CiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFdpbmRSdWxl
IHJ1bGUpIGNvbnN0OwotICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFNpemUmIHNp
emUpOworICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBHcmFwaGljc1NpemUmKTsKICAgICAg
ICAgdm9pZCB0cmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0KTsKIAogICAgICAgICB2
b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93eC9GbG9hdFJlY3RXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvRmxvYXRSZWN0V3guY3BwCShyZXZpc2lvbiA5MTIw
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0Zsb2F0UmVjdFd4LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
aWYgVVNFKFdYR0MpCiBGbG9hdFJlY3Q6OkZsb2F0UmVjdChjb25zdCB3eFJlY3QyRERvdWJsZSYg
cikKICAgICA6IG1fbG9jYXRpb24oRmxvYXRQb2ludChyLm1feCwgci5tX3kpKQotICAgICwgbV9z
aXplKEZsb2F0U2l6ZShyLm1fd2lkdGgsIHIubV9oZWlnaHQpKQorICAgICwgbV9zaXplKEdyYXBo
aWNzU2l6ZShyLm1fd2lkdGgsIHIubV9oZWlnaHQpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9HcmFwaGljc0NvbnRleHRXeC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvR3JhcGhpY3NDb250ZXh0
V3guY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3d4L0dyYXBoaWNzQ29udGV4dFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzEx
Miw3IEBAIHB1YmxpYzoKICAgICB3eFdpbmRvd0RDKiBjb250ZXh0OwogI2VuZGlmCiAgICAgaW50
IG1zd0RDU3RhdGVJRDsKLSAgICBGbG9hdFNpemUgY3VycmVudFNjYWxlOworICAgIEdyYXBoaWNz
U2l6ZSBjdXJyZW50U2NhbGU7CiAgICAgd3hSZWdpb24gZ3RrQ3VycmVudENsaXBSZ247CiAgICAg
d3hSZWdpb24gZ3RrUGFpbnRDbGlwUmduOwogfTsKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvCiAgICAgICAgIHJldHVybjsKIAogICAg
IHNhdmUoKTsKLSAgICBGbG9hdFBvaW50IGVuZFBvaW50ID0gb3JpZ2luICsgRmxvYXRTaXplKHdp
ZHRoLCAwKTsKKyAgICBGbG9hdFBvaW50IGVuZFBvaW50ID0gb3JpZ2luICsgR3JhcGhpY3NTaXpl
KHdpZHRoLCAwKTsKICAgICBtX2RhdGEtPmNvbnRleHQtPlNldFBlbih3eFBlbihzdHJva2VDb2xv
cigpLCBzdHJva2VUaGlja25lc3MoKSwgd3hTT0xJRCkpOwogICAgIG1fZGF0YS0+Y29udGV4dC0+
RHJhd0xpbmUob3JpZ2luLngoKSwgb3JpZ2luLnkoKSwgZW5kUG9pbnQueCgpLCBlbmRQb2ludC55
KCkpOwogICAgIHJlc3RvcmUoKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6cm90YXRlKGZsb2F0IGFuZ2xlCiAjZW5kaWYKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OnNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpIAordm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNjYWxlKGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2NhbGUpIAogewogI2lmIFVTRShXWEdDKQogICAg
IGlmIChtX2RhdGEtPmNvbnRleHQpIHsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2NhbGUoY29uc3QgRmxvYXRTCiAjZW5kaWYKIH0KIAotRmxvYXRTaXplIEdyYXBo
aWNzQ29udGV4dDo6Y3VycmVudFNjYWxlKCkKK0dyYXBoaWNzU2l6ZSBHcmFwaGljc0NvbnRleHQ6
OmN1cnJlbnRTY2FsZSgpCiB7CiAgICAgcmV0dXJuIG1fZGF0YS0+Y3VycmVudFNjYWxlOwogfQpA
QCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBG
bG8KICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZv
cm1TaGFkb3coRmxvYXRTaXplIGNvbnN0JiwgZmxvYXQsIENvbG9yIGNvbnN0JiwgQ29sb3JTcGFj
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhHcmFwaGljc1NpemUg
Y29uc3QmLCBmbG9hdCwgQ29sb3IgY29uc3QmLCBDb2xvclNwYWNlKQogeyAKICAgICBub3RJbXBs
ZW1lbnRlZCgpOyAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4
L0ltYWdlV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3d4L0ltYWdlV3guY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTEg
KzEyNSwxMSBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogCiAgICAg
ZmxvYXQgc2NhbGVZID0gc3JjLmhlaWdodCgpIC8gZHN0LmhlaWdodCgpOwogCiAgICAgRmxvYXRS
ZWN0IGFkanVzdGVkRGVzdFJlY3QgPSBkc3Q7Ci0gICAgRmxvYXRTaXplIHNlbGZTaXplID0gY3Vy
cmVudEZyYW1lU2l6ZSgpOworICAgIEdyYXBoaWNzU2l6ZSBzZWxmU2l6ZSA9IGN1cnJlbnRGcmFt
ZVNpemUoKTsKICAgICAKICAgICBpZiAoc3JjLnNpemUoKSAhPSBzZWxmU2l6ZSkgewogICAgICAg
ICBhZGp1c3RlZERlc3RSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoZHN0LngoKSAtIHNyYy54
KCkgLyBzY2FsZVgsIGRzdC55KCkgLSBzcmMueSgpIC8gc2NhbGVZKSk7Ci0gICAgICAgIGFkanVz
dGVkRGVzdFJlY3Quc2V0U2l6ZShGbG9hdFNpemUoc2VsZlNpemUud2lkdGgoKSAvIHNjYWxlWCwg
c2VsZlNpemUuaGVpZ2h0KCkgLyBzY2FsZVkpKTsKKyAgICAgICAgYWRqdXN0ZWREZXN0UmVjdC5z
ZXRTaXplKEdyYXBoaWNzU2l6ZShzZWxmU2l6ZS53aWR0aCgpIC8gc2NhbGVYLCBzZWxmU2l6ZS5o
ZWlnaHQoKSAvIHNjYWxlWSkpOwogICAgIH0KIAogICAgIGdjLT5DbGlwKGRzdC54KCksIGRzdC55
KCksIGRzdC53aWR0aCgpLCBkc3QuaGVpZ2h0KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd3gvUGF0aFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9QYXRoV3guY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L1BhdGhXeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg5LDcgKzg5LDcgQEAgYm9vbCBQYXRoOjpjb250YWlucyhjb25zdCBGbG9hdFBvaW50
JiBwbwogICAgIHJldHVybiBmYWxzZTsgCiB9CiAKLXZvaWQgUGF0aDo6dHJhbnNsYXRlKGNvbnN0
IEZsb2F0U2l6ZSYpCit2b2lkIFBhdGg6OnRyYW5zbGF0ZShjb25zdCBHcmFwaGljc1NpemUmKQog
eyAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgdm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlKQogICAg
ICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koaW1hZ2UpOwogfQogCi1EcmFnSW1hZ2VSZWYgc2Nh
bGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlLCBGbG9hdFNpemUgc2NhbGUpCitEcmFnSW1h
Z2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlLCBHcmFwaGljc1NpemUgc2Nh
bGUpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIDA7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9EcmFnSW1hZ2VIYWlrdS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaGFpa3UvRHJhZ0ltYWdlSGFpa3UuY3BwCShyZXZpc2lv
biA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2hhaWt1L0RyYWdJbWFnZUhhaWt1
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIGRlbGV0ZURyYWdJbWFn
ZShEcmFnSW1hZ2VSZWYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotRHJhZ0ltYWdlUmVm
IHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgRmxvYXRTaXplKQorRHJhZ0ltYWdl
UmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgR3JhcGhpY3NTaXplKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGltYWdlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdJbWFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBkZWxldGVEcmFnSW1hZ2UoUmV0YWluUHRyPE5TSW1h
Z2U+KQogICAgIC8vIGRlbGV0ZSBpdC4gSXQgd2lsbCBiZSByZWxlYXNlZCB3aGVuIGl0IGZhbGxz
IG91dCBvZiBzY29wZS4KIH0KIAotUmV0YWluUHRyPE5TSW1hZ2U+IHNjYWxlRHJhZ0ltYWdlKFJl
dGFpblB0cjxOU0ltYWdlPiBpbWFnZSwgRmxvYXRTaXplIHNjYWxlKQorUmV0YWluUHRyPE5TSW1h
Z2U+IHNjYWxlRHJhZ0ltYWdlKFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZSwgR3JhcGhpY3NTaXpl
IHNjYWxlKQogewogICAgIE5TU2l6ZSBvcmlnaW5hbFNpemUgPSBbaW1hZ2UuZ2V0KCkgc2l6ZV07
CiAgICAgTlNTaXplIG5ld1NpemUgPSBOU01ha2VTaXplKChvcmlnaW5hbFNpemUud2lkdGggKiBz
Y2FsZS53aWR0aCgpKSwgKG9yaWdpbmFsU2l6ZS5oZWlnaHQgKiBzY2FsZS5oZWlnaHQoKSkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
LmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiRmxvYXRT
aXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0
b3IuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAg
LTE1MiwxNSArMTUyLDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RpZEN1bXVsYXRpdmVIb3Jp
em9udGFsU2Nyb2xsRXZlclN3aXRjaFRvT3Bwb3NpdGVEaXJlY3Rpb25PZlBpbjsKICAgICAKICAg
ICBDRlRpbWVJbnRlcnZhbCBtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcDsKLSAgICBGbG9h
dFNpemUgbV9vdmVyZmxvd1Njcm9sbERlbHRhOwotICAgIEZsb2F0U2l6ZSBtX3N0cmV0Y2hTY3Jv
bGxGb3JjZTsKLSAgICBGbG9hdFNpemUgbV9tb21lbnR1bVZlbG9jaXR5OworICAgIEdyYXBoaWNz
U2l6ZSBtX292ZXJmbG93U2Nyb2xsRGVsdGE7CisgICAgR3JhcGhpY3NTaXplIG1fc3RyZXRjaFNj
cm9sbEZvcmNlOworICAgIEdyYXBoaWNzU2l6ZSBtX21vbWVudHVtVmVsb2NpdHk7CiAKICAgICAv
LyBSdWJiZXIgYmFuZCBzdGF0ZS4KICAgICBDRlRpbWVJbnRlcnZhbCBtX3N0YXJ0VGltZTsKLSAg
ICBGbG9hdFNpemUgbV9zdGFydFN0cmV0Y2g7CisgICAgR3JhcGhpY3NTaXplIG1fc3RhcnRTdHJl
dGNoOwogICAgIEZsb2F0UG9pbnQgbV9vcmlnT3JpZ2luOwotICAgIEZsb2F0U2l6ZSBtX29yaWdW
ZWxvY2l0eTsKKyAgICBHcmFwaGljc1NpemUgbV9vcmlnVmVsb2NpdHk7CiAgICAgVGltZXI8U2Ny
b2xsQW5pbWF0b3JNYWM+IG1fc25hcFJ1YmJlckJhbmRUaW1lcjsKICNlbmRpZgogICAgIGJvb2wg
bV9kcmF3aW5nSW50b0xheWVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbEFuaW1hdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTg2NSw3ICs4NjUsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpoYW5kbGVHZXN0dXJlRXZl
CiAKIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnBpbm5lZEluRGlyZWN0aW9uKGZsb2F0IGRlbHRh
WCwgZmxvYXQgZGVsdGFZKQogewotICAgIEZsb2F0U2l6ZSBsaW1pdERlbHRhOworICAgIEdyYXBo
aWNzU2l6ZSBsaW1pdERlbHRhOwogICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRh
WCkpIHsKICAgICAgICAgaWYgKGRlbHRhWSA8IDApIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSB0
cnlpbmcgdG8gc2Nyb2xsIHVwLiAgTWFrZSBzdXJlIHdlIGFyZSBub3QgcGlubmVkIHRvIHRoZSB0
b3AKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpzbW9vdGhTY3Jv
bGxXaXRoCiAgICAgZmxvYXQgZGVsdGFZID0gbV9vdmVyZmxvd1Njcm9sbERlbHRhLmhlaWdodCgp
OwogCiAgICAgLy8gUmVzZXQgb3ZlcmZsb3cgdmFsdWVzIGJlY2F1c2Ugd2UgbWF5IGRlY2lkZSB0
byByZW1vdmUgZGVsdGEgYXQgdmFyaW91cyBwb2ludHMgYW5kIHB1dCBpdCBpbnRvIG92ZXJmbG93
LgotICAgIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YSA9IEZsb2F0U2l6ZSgpOworICAgIG1fb3ZlcmZs
b3dTY3JvbGxEZWx0YSA9IEdyYXBoaWNzU2l6ZSgpOwogCiAgICAgZmxvYXQgZXZlbnRDb2FsZXNj
ZWREZWx0YVggPSAtd2hlZWxFdmVudC5kZWx0YVgoKTsKICAgICBmbG9hdCBldmVudENvYWxlc2Nl
ZERlbHRhWSA9IC13aGVlbEV2ZW50LmRlbHRhWSgpOwpAQCAtOTcwLDcgKzk3MCw3IEBAIHZvaWQg
U2Nyb2xsQW5pbWF0b3JNYWM6OnNtb290aFNjcm9sbFdpdGgKICAgICAgICAgICAgIG1fbGFzdE1v
bWVudHVtU2Nyb2xsVGltZXN0YW1wID0gd2hlZWxFdmVudC50aW1lc3RhbXAoKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wID0gd2hl
ZWxFdmVudC50aW1lc3RhbXAoKTsKLSAgICAgICAgICAgIG1fbW9tZW50dW1WZWxvY2l0eSA9IEZs
b2F0U2l6ZSgpOworICAgICAgICAgICAgbV9tb21lbnR1bVZlbG9jaXR5ID0gR3JhcGhpY3NTaXpl
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNWZXJ0aWNhbGx5U3RyZXRjaGVkKSB7CkBA
IC0xMDYwLDcgKzEwNjAsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpzbW9vdGhTY3JvbGxX
aXRoCiAgICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRXaWR0aChtX3N0cmV0Y2hT
Y3JvbGxGb3JjZS53aWR0aCgpICsgZGVsdGFYKTsKICAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9s
bEZvcmNlLnNldEhlaWdodChtX3N0cmV0Y2hTY3JvbGxGb3JjZS5oZWlnaHQoKSArIGRlbHRhWSk7
CiAKLSAgICAgICAgICAgIEZsb2F0U2l6ZSBkYW1wZWREZWx0YShjZWlsZihlbGFzdGljRGVsdGFG
b3JSZWJvdW5kRGVsdGEobV9zdHJldGNoU2Nyb2xsRm9yY2Uud2lkdGgoKSkpLCBjZWlsZihlbGFz
dGljRGVsdGFGb3JSZWJvdW5kRGVsdGEobV9zdHJldGNoU2Nyb2xsRm9yY2UuaGVpZ2h0KCkpKSk7
CisgICAgICAgICAgICBHcmFwaGljc1NpemUgZGFtcGVkRGVsdGEoY2VpbGYoZWxhc3RpY0RlbHRh
Rm9yUmVib3VuZERlbHRhKG1fc3RyZXRjaFNjcm9sbEZvcmNlLndpZHRoKCkpKSwgY2VpbGYoZWxh
c3RpY0RlbHRhRm9yUmVib3VuZERlbHRhKG1fc3RyZXRjaFNjcm9sbEZvcmNlLmhlaWdodCgpKSkp
OwogICAgICAgICAgICAgRmxvYXRQb2ludCBvcmlnT3JpZ2luID0gKG1fc2Nyb2xsYWJsZUFyZWEt
PnZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgKyBtX3Njcm9sbGFibGVBcmVhLT5zY3Jv
bGxPcmlnaW4oKSkgLSBzdHJldGNoQW1vdW50OwogICAgICAgICAgICAgRmxvYXRQb2ludCBuZXdP
cmlnaW4gPSBvcmlnT3JpZ2luICsgZGFtcGVkRGVsdGE7CiAKQEAgLTEwODgsNyArMTA4OCw3IEBA
IHZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmJlZ2luU2Nyb2xsR2VzdHUKICAgICBtX21vbWVudHVt
U2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwogICAgIG1faWdub3JlTW9tZW50dW1TY3JvbGxzID0g
ZmFsc2U7CiAgICAgbV9sYXN0TW9tZW50dW1TY3JvbGxUaW1lc3RhbXAgPSAwOwotICAgIG1fbW9t
ZW50dW1WZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworICAgIG1fbW9tZW50dW1WZWxvY2l0eSA9IEdy
YXBoaWNzU2l6ZSgpOwogICAgIG1fc2Nyb2xsZXJJbml0aWFsbHlQaW5uZWRPbkxlZnQgPSBtX3Nj
cm9sbGFibGVBcmVhLT5pc0hvcml6b250YWxTY3JvbGxlclBpbm5lZFRvTWluaW11bVBvc2l0aW9u
KCk7CiAgICAgbV9zY3JvbGxlckluaXRpYWxseVBpbm5lZE9uUmlnaHQgPSBtX3Njcm9sbGFibGVB
cmVhLT5pc0hvcml6b250YWxTY3JvbGxlclBpbm5lZFRvTWF4aW11bVBvc2l0aW9uKCk7CiAgICAg
bV9jdW11bGF0aXZlSG9yaXpvbnRhbFNjcm9sbCA9IDA7CkBAIC0xMDk4LDcgKzEwOTgsNyBAQCB2
b2lkIFNjcm9sbEFuaW1hdG9yTWFjOjpiZWdpblNjcm9sbEdlc3R1CiAgICAgbV9zdHJldGNoU2Ny
b2xsRm9yY2Uuc2V0V2lkdGgocmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKHN0cmV0Y2hBbW91
bnQud2lkdGgoKSkpOwogICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldEhlaWdodChyZWJvdW5k
RGVsdGFGb3JFbGFzdGljRGVsdGEoc3RyZXRjaEFtb3VudC5oZWlnaHQoKSkpOwogCi0gICAgbV9v
dmVyZmxvd1Njcm9sbERlbHRhID0gRmxvYXRTaXplKCk7CisgICAgbV9vdmVyZmxvd1Njcm9sbERl
bHRhID0gR3JhcGhpY3NTaXplKCk7CiAgICAgCiAgICAgaWYgKG1fc25hcFJ1YmJlckJhbmRUaW1l
ci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3NuYXBSdWJiZXJCYW5kVGltZXIuc3RvcCgpOwpAQCAt
MTExNSw3ICsxMTE1LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c25hcFJ1YmJlckJhbmQo
KQogewogICAgIENGVGltZUludGVydmFsIHRpbWVEZWx0YSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9j
ZXNzSW5mb10gc3lzdGVtVXB0aW1lXSAtIG1fbGFzdE1vbWVudHVtU2Nyb2xsVGltZXN0YW1wOwog
ICAgIGlmIChtX2xhc3RNb21lbnR1bVNjcm9sbFRpbWVzdGFtcCAmJiB0aW1lRGVsdGEgPj0gc2Ny
b2xsVmVsb2NpdHlaZXJvaW5nVGltZW91dCkKLSAgICAgICAgbV9tb21lbnR1bVZlbG9jaXR5ID0g
RmxvYXRTaXplKCk7CisgICAgICAgIG1fbW9tZW50dW1WZWxvY2l0eSA9IEdyYXBoaWNzU2l6ZSgp
OwogCiAgICAgbV9pblNjcm9sbEdlc3R1cmUgPSBmYWxzZTsKIApAQCAtMTEyMyw5ICsxMTIzLDkg
QEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c25hcFJ1YmJlckJhbmQoKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX3N0YXJ0VGltZSA9IFtOU0RhdGUgdGltZUludGVydmFsU2luY2VSZWZlcmVu
Y2VEYXRlXTsKLSAgICBtX3N0YXJ0U3RyZXRjaCA9IEZsb2F0U2l6ZSgpOworICAgIG1fc3RhcnRT
dHJldGNoID0gR3JhcGhpY3NTaXplKCk7CiAgICAgbV9vcmlnT3JpZ2luID0gRmxvYXRQb2ludCgp
OwotICAgIG1fb3JpZ1ZlbG9jaXR5ID0gRmxvYXRTaXplKCk7CisgICAgbV9vcmlnVmVsb2NpdHkg
PSBHcmFwaGljc1NpemUoKTsKIAogICAgIG1fc25hcFJ1YmJlckJhbmRUaW1lci5zdGFydFJlcGVh
dGluZygxLjAvNjAuMCk7CiB9CkBAIC0xMTQ5LDE1ICsxMTQ5LDE1IEBAIHZvaWQgU2Nyb2xsQW5p
bWF0b3JNYWM6OnNuYXBSdWJiZXJCYW5kVGkKICAgICBpZiAoIW1fbW9tZW50dW1TY3JvbGxJblBy
b2dyZXNzIHx8IG1faWdub3JlTW9tZW50dW1TY3JvbGxzKSB7CiAgICAgICAgIENGVGltZUludGVy
dmFsIHRpbWVEZWx0YSA9IFtOU0RhdGUgdGltZUludGVydmFsU2luY2VSZWZlcmVuY2VEYXRlXSAt
IG1fc3RhcnRUaW1lOwogCi0gICAgICAgIGlmIChtX3N0YXJ0U3RyZXRjaCA9PSBGbG9hdFNpemUo
KSkgeworICAgICAgICBpZiAobV9zdGFydFN0cmV0Y2ggPT0gR3JhcGhpY3NTaXplKCkpIHsKICAg
ICAgICAgICAgIG1fc3RhcnRTdHJldGNoID0gbV9zY3JvbGxhYmxlQXJlYS0+b3ZlcmhhbmdBbW91
bnQoKTsKLSAgICAgICAgICAgIGlmIChtX3N0YXJ0U3RyZXRjaCA9PSBGbG9hdFNpemUoKSkgeyAg
ICAKKyAgICAgICAgICAgIGlmIChtX3N0YXJ0U3RyZXRjaCA9PSBHcmFwaGljc1NpemUoKSkgeyAg
ICAKICAgICAgICAgICAgICAgICBtX3NuYXBSdWJiZXJCYW5kVGltZXIuc3RvcCgpOwotICAgICAg
ICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlID0gRmxvYXRTaXplKCk7CisgICAgICAgICAg
ICAgICAgbV9zdHJldGNoU2Nyb2xsRm9yY2UgPSBHcmFwaGljc1NpemUoKTsKICAgICAgICAgICAg
ICAgICBtX3N0YXJ0VGltZSA9IDA7Ci0gICAgICAgICAgICAgICAgbV9zdGFydFN0cmV0Y2ggPSBG
bG9hdFNpemUoKTsKKyAgICAgICAgICAgICAgICBtX3N0YXJ0U3RyZXRjaCA9IEdyYXBoaWNzU2l6
ZSgpOwogICAgICAgICAgICAgICAgIG1fb3JpZ09yaWdpbiA9IEZsb2F0UG9pbnQoKTsKLSAgICAg
ICAgICAgICAgICBtX29yaWdWZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworICAgICAgICAgICAgICAg
IG1fb3JpZ1ZlbG9jaXR5ID0gR3JhcGhpY3NTaXplKCk7CiAKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CkBAIC0xMTkyLDcgKzExOTIsNyBAQCB2b2lkIFNjcm9sbEFuaW1h
dG9yTWFjOjpzbmFwUnViYmVyQmFuZFRpCiAgICAgICAgICAgICBpbW1lZGlhdGVTY3JvbGxUb1Bv
aW50KG5ld09yaWdpbik7CiAgICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT5zZXRDb25zdHJh
aW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSh0cnVlKTsKIAotICAgICAgICAgICAgRmxvYXRTaXpl
IG5ld1N0cmV0Y2ggPSBtX3Njcm9sbGFibGVBcmVhLT5vdmVyaGFuZ0Ftb3VudCgpOworICAgICAg
ICAgICAgR3JhcGhpY3NTaXplIG5ld1N0cmV0Y2ggPSBtX3Njcm9sbGFibGVBcmVhLT5vdmVyaGFu
Z0Ftb3VudCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxGb3Jj
ZS5zZXRXaWR0aChyZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEobmV3U3RyZXRjaC53aWR0aCgp
KSk7CiAgICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRIZWlnaHQocmVib3VuZERl
bHRhRm9yRWxhc3RpY0RlbHRhKG5ld1N0cmV0Y2guaGVpZ2h0KCkpKTsKQEAgLTEyMDIsMTYgKzEy
MDIsMTYgQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6c25hcFJ1YmJlckJhbmRUaQogICAgICAg
ICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+ZGlkQ29tcGxldGVSdWJiZXJCYW5kKHJvdW5kZWRJbnRT
aXplKG1fc3RhcnRTdHJldGNoKSk7CiAKICAgICAgICAgICAgIG1fc25hcFJ1YmJlckJhbmRUaW1l
ci5zdG9wKCk7Ci0gICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZSA9IEZsb2F0U2l6ZSgp
OworICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xsRm9yY2UgPSBHcmFwaGljc1NpemUoKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9zdGFydFRpbWUgPSAwOwotICAgICAgICAgICAgbV9z
dGFydFN0cmV0Y2ggPSBGbG9hdFNpemUoKTsKKyAgICAgICAgICAgIG1fc3RhcnRTdHJldGNoID0g
R3JhcGhpY3NTaXplKCk7CiAgICAgICAgICAgICBtX29yaWdPcmlnaW4gPSBGbG9hdFBvaW50KCk7
Ci0gICAgICAgICAgICBtX29yaWdWZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworICAgICAgICAgICAg
bV9vcmlnVmVsb2NpdHkgPSBHcmFwaGljc1NpemUoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fc3RhcnRUaW1lID0gW05TRGF0ZSB0aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5j
ZURhdGVdOwotICAgICAgICBtX3N0YXJ0U3RyZXRjaCA9IEZsb2F0U2l6ZSgpOworICAgICAgICBt
X3N0YXJ0U3RyZXRjaCA9IEdyYXBoaWNzU2l6ZSgpOwogICAgIH0KIH0KICNlbmRpZgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gOTEyMDApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI3Miw3ICsyNzIsNyBAQCBzdGF0aWMgdm9pZCBwYWludENoZWNrYm94KENvbnRyb2xTdGF0
ZXMgCiAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJlY3Qud2lkdGgoKSAv
IHpvb21GYWN0b3IpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVj
dC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoaW5m
bGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CisgICAgICAgIGNvbnRleHQtPnNj
YWxlKEdyYXBoaWNzU2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CiAgICAgICAgIGNvbnRl
eHQtPnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOwogICAg
IH0KICAgICAKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMgdm9pZCBwYWludFJhZGlvKENvbnRy
b2xTdGF0ZXMgc3RhCiAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJlY3Qu
d2lkdGgoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGlu
ZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwogICAgICAgICBjb250ZXh0LT50cmFu
c2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CisgICAgICAgIGNv
bnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CiAgICAg
ICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55
KCkpOwogICAgIH0KICAgICAKQEAgLTQ2Niw3ICs0NjYsNyBAQCBzdGF0aWMgdm9pZCBwYWludEJ1
dHRvbihDb250cm9sUGFydCBwYXJ0CiAgICAgICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgo
aW5mbGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKICAgICAgICAgICAgIGluZmxhdGVk
UmVjdC5zZXRIZWlnaHQoaW5mbGF0ZWRSZWN0LmhlaWdodCgpIC8gem9vbUZhY3Rvcik7CiAgICAg
ICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0
LnkoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUZhY3Rvciwg
em9vbUZhY3RvcikpOworICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoR3JhcGhpY3NTaXplKHpv
b21GYWN0b3IsIHpvb21GYWN0b3IpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgt
aW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOwogICAgICAgICB9CiAgICAgfSAK
QEAgLTUzMyw3ICs1MzMsNyBAQCBzdGF0aWMgdm9pZCBwYWludFN0ZXBwZXIoQ29udHJvbFN0YXRl
cyBzCiAgICAgICAgIHJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC8gem9vbUZhY3Rvcik7CiAg
ICAgICAgIHJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKICAgICAg
ICAgY29udGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRl
eHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CisgICAgICAgIGNv
bnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7CiAgICAg
ICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7CiAgICAgfQogICAg
IENHUmVjdCBib3VuZHMocmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9E
cmFnSW1hZ2VRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
RHJhZ0ltYWdlUXQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L0RyYWdJbWFnZVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCB2
b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UpCiAgICAgZGVsZXRlIGltYWdl
OwogfQogCi1EcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlLCBG
bG9hdFNpemUgc2NhbGUpCitEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVm
IGltYWdlLCBHcmFwaGljc1NpemUgc2NhbGUpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAg
cmV0dXJuIDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ0dX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1h
Z2VDR1dpbi5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZUNHV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBz
dGF0aWMgQ0dDb250ZXh0UmVmIGNyZWF0ZUNnQ29udGV4dEZyb21CCiAgICAgcmV0dXJuIGJpdG1h
cENvbnRleHQ7CiB9CiAKLURyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYg
aW1hZ2UsIEZsb2F0U2l6ZSBzY2FsZSkKK0RyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFn
SW1hZ2VSZWYgaW1hZ2UsIEdyYXBoaWNzU2l6ZSBzY2FsZSkKIHsKICAgICAvLyBGSVhNRTogZHVl
IHRvIHRoZSB3YXkgZHJhZyBpbWFnZXMgYXJlIGRvbmUgb24gd2luZG93cyB3ZSBuZWVkIAogICAg
IC8vIHRvIHByZXByb2Nlc3MgdGhlIGFscGhhIGNoYW5uZWwgPHJkYXI6Ly9wcm9ibGVtLzUwMTU5
NDY+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnSW1hZ2VD
YWlyb1dpbi5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3
IEBAIHN0YXRpYyBjYWlyb19zdXJmYWNlX3QqIGNyZWF0ZUNhaXJvQ29udGUKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibVdpZHRoQnl0ZXMpOwog
fQogCi1EcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlLCBGbG9h
dFNpemUgc2NhbGUpCitEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGlt
YWdlLCBHcmFwaGljc1NpemUgc2NhbGUpCiB7CiAgICAgLy8gRklYTUU6IGR1ZSB0byB0aGUgd2F5
IGRyYWcgaW1hZ2VzIGFyZSBkb25lIG9uIHdpbmRvd3Mgd2UgbmVlZCAKICAgICAvLyB0byBwcmVw
cm9jZXNzIHRoZSBhbHBoYSBjaGFubmVsIDxyZGFyOi8vcHJvYmxlbS81MDE1OTQ2PgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1doZWVsRXZlbnRXaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaGVlbEV2ZW50V2luLmNwcAkocmV2aXNp
b24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2hlZWxFdmVudFdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVdo
ZWVsRXZlbnQuaCIKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJGbG9hdFNp
emUuaCIKKyNpbmNsdWRlICJHcmFwaGljc1NpemUuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAj
aW5jbHVkZSA8d2luZG93c3guaD4KIApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgaW50IHZlcnRp
Y2FsU2Nyb2xsTGluZXMoKQogICAgIHJldHVybiBzY3JvbGxMaW5lczsKIH0KIAotUGxhdGZvcm1X
aGVlbEV2ZW50OjpQbGF0Zm9ybVdoZWVsRXZlbnQoSFdORCBoV25kLCBjb25zdCBGbG9hdFNpemUm
IGRlbHRhLCBjb25zdCBGbG9hdFBvaW50JiBsb2NhdGlvbikKK1BsYXRmb3JtV2hlZWxFdmVudDo6
UGxhdGZvcm1XaGVlbEV2ZW50KEhXTkQgaFduZCwgY29uc3QgR3JhcGhpY3NTaXplJiBkZWx0YSwg
Y29uc3QgRmxvYXRQb2ludCYgbG9jYXRpb24pCiAgICAgOiBtX2lzQWNjZXB0ZWQoZmFsc2UpCiAg
ICAgLCBtX3NoaWZ0S2V5KGZhbHNlKQogICAgICwgbV9jdHJsS2V5KGZhbHNlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvRHJhZ0ltYWdlV2luQ0UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0RyYWdJbWFnZVdpbkNFLmNwcAkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9EcmFnSW1hZ2VX
aW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBkZWxldGVEcmFn
SW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlKQogICAgICAgICA6OkRlbGV0ZU9iamVjdChpbWFnZSk7
CiB9CiAKLURyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEZsb2F0U2l6
ZSkKK0RyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYsIEdyYXBoaWNzU2l6
ZSkKIHsKICAgICByZXR1cm4gMDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4
L0RyYWdJbWFnZVd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
eC9EcmFnSW1hZ2VXeC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd3gvRHJhZ0ltYWdlV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHcmFwaGlj
c1NpemUuaCIKICNpbmNsdWRlICJJbWFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
MCw3ICs0MCw3IEBAIHZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZikKIHsKIH0KIAot
RHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgRmxvYXRTaXpl
KQorRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgR3JhcGhp
Y3NTaXplKQogewogICAgIHJldHVybiBpbWFnZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L3d4Y29kZS9tYWMvY2FyYm9uL25vbi1rZXJuZWQtZHJhd2luZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL21hYy9jYXJib24vbm9u
LWtlcm5lZC1kcmF3aW5nLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93eC93eGNvZGUvbWFjL2NhcmJvbi9ub24ta2VybmVkLWRyYXdpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1
ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiU2ltcGxlRm9udERhdGEuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L3d4
Y29kZS93aW4vbm9uLWtlcm5lZC1kcmF3aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93eC93eGNvZGUvd2luL25vbi1rZXJuZWQtZHJhd2luZy5jcHAJKHJldmlz
aW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvd3hjb2RlL3dpbi9ub24t
a2VybmVkLWRyYXdpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOCArMTA2LDggQEAgdm9p
ZCBkcmF3VGV4dFdpdGhTcGFjaW5nKEdyYXBoaWNzQ29udGV4dAogCiAgICAgLy8gaWYgdGhlIGNv
bnRleHQgaGFzIGJlZW4gc2NhbGVkLCB3ZSBtdXN0IG1hbnVhbGx5IHJlLWFwcGx5IHRoYXQgc2Nh
bGUKICAgICAvLyB0byB0aGUgSERDLgotICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGdyYXBoaWNzQ29u
dGV4dC0+Y3VycmVudFNjYWxlKCk7Ci0gICAgaWYgKHNjYWxlICE9IEZsb2F0U2l6ZSgxLjAsIDEu
MCkpIHsKKyAgICBHcmFwaGljc1NpemUgc2NhbGUgPSBncmFwaGljc0NvbnRleHQtPmN1cnJlbnRT
Y2FsZSgpOworICAgIGlmIChzY2FsZSAhPSBHcmFwaGljc1NpemUoMS4wLCAxLjApKSB7CiAgICAg
ICAgIFNldEdyYXBoaWNzTW9kZShoZGMsIEdNX0FEVkFOQ0VEKTsKICAgICAgICAgWEZPUk0geEZv
cm07CiAgICAgICAgIHhGb3JtLmVNMTEgPSBzY2FsZS53aWR0aCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVCb3guaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBA
QCBwdWJsaWM6CiAKICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRh
bCgpID8gbG9naWNhbFdpZHRoKCkgOiBsb2dpY2FsSGVpZ2h0KCk7IH0KICAgICBmbG9hdCBoZWln
aHQoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxIZWlnaHQoKSA6IGxv
Z2ljYWxXaWR0aCgpOyB9Ci0gICAgRmxvYXRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBJbnRT
aXplKHdpZHRoKCksIGhlaWdodCgpKTsgfQorICAgIEdyYXBoaWNzU2l6ZSBzaXplKCkgY29uc3Qg
eyByZXR1cm4gSW50U2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7IH0KICAgICBmbG9hdCByaWdodCgp
IGNvbnN0IHsgcmV0dXJuIGxlZnQoKSArIHdpZHRoKCk7IH0KICAgICBmbG9hdCBib3R0b20oKSBj
b25zdCB7IHJldHVybiB0b3AoKSArIGhlaWdodCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjEsMTUgKzM2MSwxNSBAQCBib29sIElubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhp
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1GbG9hdFNpemUgSW5saW5lVGV4dEJveDo6YXBwbHlT
aGFkb3dUb0dyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNo
YWRvd0RhdGEqIHNoYWRvdywgY29uc3QgRmxvYXRSZWN0JiB0ZXh0UmVjdCwgYm9vbCBzdHJva2Vk
LCBib29sIG9wYXF1ZSwgYm9vbCBob3Jpem9udGFsKQorR3JhcGhpY3NTaXplIElubGluZVRleHRC
b3g6OmFwcGx5U2hhZG93VG9HcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZsb2F0UmVjdCYgdGV4dFJlY3QsIGJv
b2wgc3Ryb2tlZCwgYm9vbCBvcGFxdWUsIGJvb2wgaG9yaXpvbnRhbCkKIHsKICAgICBpZiAoIXNo
YWRvdykKLSAgICAgICAgcmV0dXJuIEZsb2F0U2l6ZSgpOworICAgICAgICByZXR1cm4gR3JhcGhp
Y3NTaXplKCk7CiAKLSAgICBGbG9hdFNpemUgZXh0cmFPZmZzZXQ7CisgICAgR3JhcGhpY3NTaXpl
IGV4dHJhT2Zmc2V0OwogICAgIGludCBzaGFkb3dYID0gaG9yaXpvbnRhbCA/IHNoYWRvdy0+eCgp
IDogc2hhZG93LT55KCk7CiAgICAgaW50IHNoYWRvd1kgPSBob3Jpem9udGFsID8gc2hhZG93LT55
KCkgOiAtc2hhZG93LT54KCk7Ci0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldChzaGFkb3dYLCBz
aGFkb3dZKTsKKyAgICBHcmFwaGljc1NpemUgc2hhZG93T2Zmc2V0KHNoYWRvd1gsIHNoYWRvd1kp
OwogICAgIGludCBzaGFkb3dCbHVyID0gc2hhZG93LT5ibHVyKCk7CiAgICAgY29uc3QgQ29sb3Im
IHNoYWRvd0NvbG9yID0gc2hhZG93LT5jb2xvcigpOwogCkBAIC0zODAsNyArMzgwLDcgQEAgRmxv
YXRTaXplIElubGluZVRleHRCb3g6OmFwcGx5U2hhZG93VG9HcgogICAgICAgICBjb250ZXh0LT5z
YXZlKCk7CiAgICAgICAgIGNvbnRleHQtPmNsaXAoc2hhZG93UmVjdCk7CiAKLSAgICAgICAgZXh0
cmFPZmZzZXQgPSBGbG9hdFNpemUoMCwgMiAqIHRleHRSZWN0LmhlaWdodCgpICsgbWF4KDAuMGYs
IHNoYWRvd09mZnNldC5oZWlnaHQoKSkgKyBzaGFkb3dCbHVyKTsKKyAgICAgICAgZXh0cmFPZmZz
ZXQgPSBHcmFwaGljc1NpemUoMCwgMiAqIHRleHRSZWN0LmhlaWdodCgpICsgbWF4KDAuMGYsIHNo
YWRvd09mZnNldC5oZWlnaHQoKSkgKyBzaGFkb3dCbHVyKTsKICAgICAgICAgc2hhZG93T2Zmc2V0
IC09IGV4dHJhT2Zmc2V0OwogICAgIH0KIApAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnRTZWxlY3Rpb24oR3JhcGgKICAgICBpbnQgc2VsSGVpZ2h0ID0gc2VsZWN0
aW9uSGVpZ2h0KCk7CiAgICAgRmxvYXRQb2ludCBsb2NhbE9yaWdpbihib3hPcmlnaW4ueCgpLCBi
b3hPcmlnaW4ueSgpIC0gZGVsdGFZKTsKIAotICAgIEZsb2F0UmVjdCBjbGlwUmVjdChsb2NhbE9y
aWdpbiwgRmxvYXRTaXplKG1fbG9naWNhbFdpZHRoLCBzZWxIZWlnaHQpKTsKKyAgICBGbG9hdFJl
Y3QgY2xpcFJlY3QobG9jYWxPcmlnaW4sIEdyYXBoaWNzU2l6ZShtX2xvZ2ljYWxXaWR0aCwgc2Vs
SGVpZ2h0KSk7CiAgICAgZmxvYXQgbWF4WCA9IGZsb29yZihjbGlwUmVjdC5tYXhYKCkpOwogICAg
IGNsaXBSZWN0LnNldFgoZmxvb3JmKGNsaXBSZWN0LngoKSkpOwogICAgIGNsaXBSZWN0LnNldFdp
ZHRoKG1heFggLSBjbGlwUmVjdC54KCkpOwpAQCAtOTA1LDkgKzkwNSw5IEBAIHZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXAKICAgICBib29sIHNldENsaXAgPSBmYWxzZTsK
ICAgICBpbnQgZXh0cmFPZmZzZXQgPSAwOwogICAgIGlmICghbGluZXNBcmVPcGFxdWUgJiYgc2hh
ZG93ICYmIHNoYWRvdy0+bmV4dCgpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBjbGlwUmVjdChsb2Nh
bE9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCBiYXNlbGluZSArIDIpKTsKKyAgICAgICAgRmxvYXRS
ZWN0IGNsaXBSZWN0KGxvY2FsT3JpZ2luLCBHcmFwaGljc1NpemUod2lkdGgsIGJhc2VsaW5lICsg
MikpOwogICAgICAgICBmb3IgKGNvbnN0IFNoYWRvd0RhdGEqIHMgPSBzaGFkb3c7IHM7IHMgPSBz
LT5uZXh0KCkpIHsKLSAgICAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KGxvY2FsT3JpZ2lu
LCBGbG9hdFNpemUod2lkdGgsIGJhc2VsaW5lICsgMikpOworICAgICAgICAgICAgRmxvYXRSZWN0
IHNoYWRvd1JlY3QobG9jYWxPcmlnaW4sIEdyYXBoaWNzU2l6ZSh3aWR0aCwgYmFzZWxpbmUgKyAy
KSk7CiAgICAgICAgICAgICBzaGFkb3dSZWN0LmluZmxhdGUocy0+Ymx1cigpKTsKICAgICAgICAg
ICAgIGludCBzaGFkb3dYID0gaXNIb3Jpem9udGFsKCkgPyBzLT54KCkgOiBzLT55KCk7CiAgICAg
ICAgICAgICBpbnQgc2hhZG93WSA9IGlzSG9yaXpvbnRhbCgpID8gcy0+eSgpIDogLXMtPngoKTsK
QEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihH
cmFwCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbnQgc2hhZG93WCA9IGlzSG9yaXpvbnRh
bCgpID8gc2hhZG93LT54KCkgOiBzaGFkb3ctPnkoKTsKICAgICAgICAgICAgIGludCBzaGFkb3dZ
ID0gaXNIb3Jpem9udGFsKCkgPyBzaGFkb3ctPnkoKSA6IC1zaGFkb3ctPngoKTsKLSAgICAgICAg
ICAgIGNvbnRleHQtPnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93WCwgc2hhZG93WSAtIGV4dHJh
T2Zmc2V0KSwgc2hhZG93LT5ibHVyKCksIHNoYWRvdy0+Y29sb3IoKSwgY29sb3JTcGFjZSk7Cisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coR3JhcGhpY3NTaXplKHNoYWRvd1gsIHNoYWRv
d1kgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+Ymx1cigpLCBzaGFkb3ctPmNvbG9yKCksIGNvbG9y
U3BhY2UpOwogICAgICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHNoYWRv
dyA9IHNoYWRvdy0+bmV4dCgpOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3
IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zQ2FyZXRPZmZzZXQoaW50IG9mZnNldCkgY29u
c3Q7IC8vIGZhbHNlIGZvciBvZmZzZXQgYWZ0ZXIgbGluZSBicmVhawogCiAgICAgLy8gTmVlZHMg
dG8gYmUgcHVibGljLCBzbyB0aGUgc3RhdGljIHBhaW50VGV4dFdpdGhTaGFkb3dzKCkgZnVuY3Rp
b24gY2FuIHVzZSBpdC4KLSAgICBzdGF0aWMgRmxvYXRTaXplIGFwcGx5U2hhZG93VG9HcmFwaGlj
c0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZsb2F0
UmVjdCYgdGV4dFJlY3QsIGJvb2wgc3Ryb2tlZCwgYm9vbCBvcGFxdWUsIGJvb2wgaG9yaXpvbnRh
bCk7CisgICAgc3RhdGljIEdyYXBoaWNzU2l6ZSBhcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0
KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFNoYWRvd0RhdGEqLCBjb25zdCBGbG9hdFJlY3QmIHRl
eHRSZWN0LCBib29sIHN0cm9rZWQsIGJvb2wgb3BhcXVlLCBib29sIGhvcml6b250YWwpOwogCiBw
cml2YXRlOgogICAgIElubGluZVRleHRCb3gqIG1fcHJldlRleHRCb3g7IC8vIFRoZSBwcmV2aW91
cyBib3ggdGhhdCBhbHNvIHVzZXMgb3VyIFJlbmRlck9iamVjdApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xheW91dFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDcg
QEAgaW5saW5lIExheW91dFBvaW50IGZsb29yZWRMYXlvdXRQb2ludChjbwogICAgIHJldHVybiBm
bG9vcmVkSW50UG9pbnQocCk7CiB9CiAKLWlubGluZSBMYXlvdXRQb2ludCBmbG9vcmVkTGF5b3V0
UG9pbnQoY29uc3QgRmxvYXRTaXplJiBzKQoraW5saW5lIExheW91dFBvaW50IGZsb29yZWRMYXlv
dXRQb2ludChjb25zdCBHcmFwaGljc1NpemUmIHMpCiB7CiAgICAgcmV0dXJuIGZsb29yZWRJbnRQ
b2ludChzKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShy
ZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MTcsNyArODE3LDcgQEAgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlIFJlbmRlckJveDo6ZGV0ZQogICAgICAgICByZXR1cm4gQmFja2dyb3VuZEJsZWVkTm9uZTsK
IAogICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBjb250ZXh0LT5nZXRDVE0oKTsKLSAgICBGbG9h
dFNpemUgY29udGV4dFNjYWxpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS54U2NhbGUoKSksIHN0
YXRpY19jYXN0PGZsb2F0PihjdG0ueVNjYWxlKCkpKTsKKyAgICBHcmFwaGljc1NpemUgY29udGV4
dFNjYWxpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS54U2NhbGUoKSksIHN0YXRpY19jYXN0PGZs
b2F0PihjdG0ueVNjYWxlKCkpKTsKICAgICBpZiAoYm9yZGVyT2JzY3VyZXNCYWNrZ3JvdW5kRWRn
ZShjb250ZXh0U2NhbGluZykpCiAgICAgICAgIHJldHVybiBCYWNrZ3JvdW5kQmxlZWRTaHJpbmtC
YWNrZ3JvdW5kOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAko
cmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQwNiw3ICs0MDYsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT3Zl
cmZsb3cqIGhhc1JlbmRlck92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdy5nZXQo
KTsgfQogCiAgICAgdmlydHVhbCBib29sIG5lZWRzUHJlZmVycmVkV2lkdGhzUmVjYWxjdWxhdGlv
bigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1h
dGlvbihGbG9hdFNpemUmIC8qIGludHJpbnNpY1JhdGlvICovLCBib29sJiAvKiBpc1BlcmNlbnRh
Z2VJbnRyaW5zaWNTaXplICovKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUlu
dHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oR3JhcGhpY3NTaXplJiAvKiBpbnRyaW5zaWNSYXRpbyAq
LywgYm9vbCYgLyogaXNQZXJjZW50YWdlSW50cmluc2ljU2l6ZSAqLykgY29uc3QgeyB9CiAKIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJl
dmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgzLDcgKzU4Myw3IEBAIHN0YXRpYyBJbnRS
ZWN0IGJhY2tncm91bmRSZWN0QWRqdXN0ZWRGb3IKICAgICBJbnRSZWN0IGFkanVzdGVkUmVjdCA9
IGJvcmRlclJlY3Q7CiAgICAgLy8gV2UgbmVlZCB0byBzaHJpbmsgdGhlIGJvcmRlciBieSBvbmUg
ZGV2aWNlIHBpeGVsIG9uIGVhY2ggc2lkZS4KICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gY29u
dGV4dC0+Z2V0Q1RNKCk7Ci0gICAgRmxvYXRTaXplIGNvbnRleHRTY2FsZShzdGF0aWNfY2FzdDxm
bG9hdD4oY3RtLnhTY2FsZSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS55U2NhbGUoKSkpOwor
ICAgIEdyYXBoaWNzU2l6ZSBjb250ZXh0U2NhbGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGN0bS54U2Nh
bGUoKSksIHN0YXRpY19jYXN0PGZsb2F0PihjdG0ueVNjYWxlKCkpKTsKICAgICBhZGp1c3RlZFJl
Y3QuaW5mbGF0ZVgoLWNlaWxmKDEgLyBjb250ZXh0U2NhbGUud2lkdGgoKSkpOwogICAgIGFkanVz
dGVkUmVjdC5pbmZsYXRlWSgtY2VpbGYoMSAvIGNvbnRleHRTY2FsZS5oZWlnaHQoKSkpOwogICAg
IHJldHVybiBhZGp1c3RlZFJlY3Q7CkBAIC0yMTI5LDcgKzIxMjksNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpnZXRCb3JkZXJFZGdlCiAgICAgICAgICFob3Jpem9udGFsIHx8IGluY2x1
ZGVMb2dpY2FsTGVmdEVkZ2UpOwogfQogCi1ib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpib3Jk
ZXJPYnNjdXJlc0JhY2tncm91bmRFZGdlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGV4dFNjYWxlKSBj
b25zdAorYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Ym9yZGVyT2JzY3VyZXNCYWNrZ3JvdW5k
RWRnZShjb25zdCBHcmFwaGljc1NpemUmIGNvbnRleHRTY2FsZSkgY29uc3QKIHsKICAgICBCb3Jk
ZXJFZGdlIGVkZ2VzWzRdOwogICAgIGdldEJvcmRlckVkZ2VJbmZvKGVkZ2VzKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCShyZXZp
c2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIq
LCBjb25zdCBJbnRSZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5Jik7CiAg
ICAgdm9pZCBnZXRCb3JkZXJFZGdlSW5mbyhjbGFzcyBCb3JkZXJFZGdlW10sIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0
cnVlKSBjb25zdDsKLSAgICBib29sIGJvcmRlck9ic2N1cmVzQmFja2dyb3VuZEVkZ2UoY29uc3Qg
RmxvYXRTaXplJiBjb250ZXh0U2NhbGUpIGNvbnN0OworICAgIGJvb2wgYm9yZGVyT2JzY3VyZXNC
YWNrZ3JvdW5kRWRnZShjb25zdCBHcmFwaGljc1NpemUmIGNvbnRleHRTY2FsZSkgY29uc3Q7CiAK
ICAgICBib29sIHNob3VsZFBhaW50QXRMb3dRdWFsaXR5KEdyYXBoaWNzQ29udGV4dCosIEltYWdl
KiwgY29uc3Qgdm9pZCosIGNvbnN0IEludFNpemUmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXRhaWxzTWFya2VyLmNwcAkocmV2aXNpb24gOTEyMDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBQYXRoIFJlbmRlckRldGFpbHNNYXJrZXI6
OmdldFBhdGgoY29uc3QgCiB7CiAgICAgUGF0aCByZXN1bHQgPSBnZXRDYW5vbmljYWxQYXRoKCk7
CiAgICAgcmVzdWx0LnRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0oKS5zY2FsZShsb2dpY2FsSGVp
Z2h0KCkpKTsKLSAgICByZXN1bHQudHJhbnNsYXRlKEZsb2F0U2l6ZShvcmlnaW4ueCgpLCBvcmln
aW4ueSgpKSk7CisgICAgcmVzdWx0LnRyYW5zbGF0ZShHcmFwaGljc1NpemUob3JpZ2luLngoKSwg
b3JpZ2luLnkoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkocmV2aXNpb24g
OTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsMTIgKzIwMCwxMiBAQCBib29sIFJlbmRlckVtYmVk
ZGVkT2JqZWN0OjpnZXRSZXBsYWNlbWVuCiAgICAgcnVuID0gVGV4dFJ1bihtX3JlcGxhY2VtZW50
VGV4dCk7CiAgICAgdGV4dFdpZHRoID0gZm9udC53aWR0aChydW4pOwogICAgIAotICAgIHJlcGxh
Y2VtZW50VGV4dFJlY3Quc2V0U2l6ZShGbG9hdFNpemUodGV4dFdpZHRoICsgcmVwbGFjZW1lbnRU
ZXh0Um91bmRlZFJlY3RMZWZ0UmlnaHRUZXh0TWFyZ2luICogMiwgcmVwbGFjZW1lbnRUZXh0Um91
bmRlZFJlY3RIZWlnaHQpKTsKKyAgICByZXBsYWNlbWVudFRleHRSZWN0LnNldFNpemUoR3JhcGhp
Y3NTaXplKHRleHRXaWR0aCArIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0TGVmdFJpZ2h0VGV4
dE1hcmdpbiAqIDIsIHJlcGxhY2VtZW50VGV4dFJvdW5kZWRSZWN0SGVpZ2h0KSk7CiAgICAgZmxv
YXQgeCA9IChjb250ZW50UmVjdC5zaXplKCkud2lkdGgoKSAvIDIgLSByZXBsYWNlbWVudFRleHRS
ZWN0LnNpemUoKS53aWR0aCgpIC8gMikgKyBjb250ZW50UmVjdC5sb2NhdGlvbigpLngoKTsKICAg
ICBmbG9hdCB5ID0gKGNvbnRlbnRSZWN0LnNpemUoKS5oZWlnaHQoKSAvIDIgLSByZXBsYWNlbWVu
dFRleHRSZWN0LnNpemUoKS5oZWlnaHQoKSAvIDIpICsgY29udGVudFJlY3QubG9jYXRpb24oKS55
KCk7CiAgICAgcmVwbGFjZW1lbnRUZXh0UmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KHgsIHkp
KTsKICAgICAKLSAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlcGxhY2VtZW50VGV4dFJlY3QsIEZs
b2F0U2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cywgcmVwbGFjZW1lbnRUZXh0
Um91bmRlZFJlY3RSYWRpdXMpKTsKKyAgICBwYXRoLmFkZFJvdW5kZWRSZWN0KHJlcGxhY2VtZW50
VGV4dFJlY3QsIEdyYXBoaWNzU2l6ZShyZXBsYWNlbWVudFRleHRSb3VuZGVkUmVjdFJhZGl1cywg
cmVwbGFjZW1lbnRUZXh0Um91bmRlZFJlY3RSYWRpdXMpKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNiw4ICs0MTYsOCBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMCiAgICAgaWYgKG9sZE9mZnNldEZy
b21SZW5kZXJlciAhPSBtX2dyYXBoaWNzTGF5ZXItPm9mZnNldEZyb21SZW5kZXJlcigpKQogICAg
ICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogICAgIAotICAgIEZsb2F0
U2l6ZSBvbGRTaXplID0gbV9ncmFwaGljc0xheWVyLT5zaXplKCk7Ci0gICAgRmxvYXRTaXplIG5l
d1NpemUgPSByZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLnNpemUoKTsKKyAgICBHcmFwaGljc1Np
emUgb2xkU2l6ZSA9IG1fZ3JhcGhpY3NMYXllci0+c2l6ZSgpOworICAgIEdyYXBoaWNzU2l6ZSBu
ZXdTaXplID0gcmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcy5zaXplKCk7CiAgICAgaWYgKG9sZFNp
emUgIT0gbmV3U2l6ZSkgewogICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldFNpemUobmV3U2l6
ZSk7CiAgICAgICAgIC8vIEEgYm91bmRzIGNoYW5nZSB3aWxsIGFsbW9zdCBhbHdheXMgcmVxdWly
ZSByZWRpc3BsYXkuIFVzdWFsbHkgdGhhdCByZWRpc3BsYXkKQEAgLTQ4MCwxMiArNDgwLDEyIEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0wKIAogICAgIGlmIChtX2Zv
cmVncm91bmRMYXllcikgewogICAgICAgICBGbG9hdFBvaW50IGZvcmVncm91bmRQb3NpdGlvbjsK
LSAgICAgICAgRmxvYXRTaXplIGZvcmVncm91bmRTaXplID0gbmV3U2l6ZTsKKyAgICAgICAgR3Jh
cGhpY3NTaXplIGZvcmVncm91bmRTaXplID0gbmV3U2l6ZTsKICAgICAgICAgSW50U2l6ZSBmb3Jl
Z3JvdW5kT2Zmc2V0ID0gbV9ncmFwaGljc0xheWVyLT5vZmZzZXRGcm9tUmVuZGVyZXIoKTsKICAg
ICAgICAgaWYgKG1fY2xpcHBpbmdMYXllcikgewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBh
IGNsaXBwaW5nIGxheWVyICh3aGljaCBjbGlwcyBkZXNjZW5kYW50cyksIHRoZW4gdGhlIGZvcmVn
cm91bmQgbGF5ZXIgaXMgYSBjaGlsZCBvZiBpdCwKICAgICAgICAgICAgIC8vIHNvIHRoYXQgaXQg
Z2V0cyBjb3JyZWN0bHkgc29ydGVkIHdpdGggY2hpbGRyZW4uIEluIHRoYXQgY2FzZSwgcG9zaXRp
b24gcmVsYXRpdmUgdG8gdGhlIGNsaXBwaW5nIGxheWVyLgotICAgICAgICAgICAgZm9yZWdyb3Vu
ZFNpemUgPSBGbG9hdFNpemUoY2xpcHBpbmdCb3guc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvcmVn
cm91bmRTaXplID0gR3JhcGhpY3NTaXplKGNsaXBwaW5nQm94LnNpemUoKSk7CiAgICAgICAgICAg
ICBmb3JlZ3JvdW5kT2Zmc2V0ID0gY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIEludFBvaW50KCk7
CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2NTYsNyArMTY1Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290
TGEKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0TmFtZSgi
Y29udGVudCByb290Iik7CiAjZW5kaWYKLSAgICAgICAgbV9yb290Q29udGVudExheWVyLT5zZXRT
aXplKEZsb2F0U2l6ZShtX3JlbmRlclZpZXctPm1heFhMYXlvdXRPdmVyZmxvdygpLCBtX3JlbmRl
clZpZXctPm1heFlMYXlvdXRPdmVyZmxvdygpKSk7CisgICAgICAgIG1fcm9vdENvbnRlbnRMYXll
ci0+c2V0U2l6ZShHcmFwaGljc1NpemUobV9yZW5kZXJWaWV3LT5tYXhYTGF5b3V0T3ZlcmZsb3co
KSwgbV9yZW5kZXJWaWV3LT5tYXhZTGF5b3V0T3ZlcmZsb3coKSkpOwogICAgICAgICBtX3Jvb3RD
b250ZW50TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoKSk7CiAKICAgICAgICAgLy8gTmVl
ZCB0byBjbGlwIHRvIHByZXZlbnQgdHJhbnNmb3JtZWQgY29udGVudCBzaG93aW5nIG91dHNpZGUg
dGhpcyBmcmFtZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29u
dHJvbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZWRpYUNvbnRyb2xzLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVkaWFDb250cm9scy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5
LDcgQEAgc3RhdGljIEZsb2F0UmVjdCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1cwogICAgICAgICB1
bnpvb21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwog
ICAgICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpv
b21MZXZlbCk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRS
ZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwogICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56
b29tZWRSZWN0LnkoKSk7CiAgICAgfQogICAgIHJldHVybiB1bnpvb21lZFJlY3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHJldmlzaW9uIDkx
MjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjI5LDcgKzIyOSw3IEBAIExheW91dFVuaXQgUmVuZGVyUmVwbGFjZWQ6
OmNvbXB1dGVSZXBsYWMKIAogICAgIC8vIDEwLjMuMiBJbmxpbmUsIHJlcGxhY2VkIGVsZW1lbnRz
OiBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjaW5saW5lLXJlcGxhY2Vk
LXdpZHRoCiAgICAgYm9vbCBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplID0gZmFsc2U7Ci0gICAg
RmxvYXRTaXplIGludHJpbnNpY1JhdGlvOworICAgIEdyYXBoaWNzU2l6ZSBpbnRyaW5zaWNSYXRp
bzsKICAgICBpZiAoY29udGVudFJlbmRlcmVyKSB7CiAgICAgICAgIGNvbnRlbnRSZW5kZXJlci0+
Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oaW50cmluc2ljUmF0aW8sIGlzUGVyY2Vu
dGFnZUludHJpbnNpY1NpemUpOwogICAgICAgICBjb250ZW50UmVuZGVyU3R5bGUgPSBjb250ZW50
UmVuZGVyZXItPnN0eWxlKCk7CkBAIC0zMjYsNyArMzI2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJS
ZXBsYWNlZDo6Y29tcHV0ZVJlcGxhYwogCiAgICAgLy8gMTAuNi4yIElubGluZSwgcmVwbGFjZWQg
ZWxlbWVudHM6IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNpbmxpbmUt
cmVwbGFjZWQtaGVpZ2h0CiAgICAgYm9vbCBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplID0gZmFs
c2U7Ci0gICAgRmxvYXRTaXplIGludHJpbnNpY1JhdGlvOworICAgIEdyYXBoaWNzU2l6ZSBpbnRy
aW5zaWNSYXRpbzsKICAgICBpZiAoY29udGVudFJlbmRlcmVyKSB7CiAgICAgICAgIGNvbnRlbnRS
ZW5kZXJlci0+Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24oaW50cmluc2ljUmF0aW8s
IGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUpOwogICAgICAgICBjb250ZW50UmVuZGVyU3R5bGUg
PSBjb250ZW50UmVuZGVyZXItPnN0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTUwLDcgKzU1
MCw3IEBAIEZsb2F0UmVjdCBSZW5kZXJUaGVtZU1hYzo6Y29udmVydFRvUGFpbnQKICAgICBGbG9h
dFJlY3QgcGFydFJlY3QoaW5wdXRSZWN0KTsKICAgICAKICAgICAvLyBDb21wdXRlIGFuIG9mZnNl
dCBiZXR3ZWVuIHRoZSBwYXJ0IHJlbmRlcmVyIGFuZCB0aGUgaW5wdXQgcmVuZGVyZXIKLSAgICBG
bG9hdFNpemUgb2Zmc2V0RnJvbUlucHV0UmVuZGVyZXI7CisgICAgR3JhcGhpY3NTaXplIG9mZnNl
dEZyb21JbnB1dFJlbmRlcmVyOwogICAgIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBw
YXJ0UmVuZGVyZXI7CiAgICAgd2hpbGUgKHJlbmRlcmVyICYmIHJlbmRlcmVyICE9IGlucHV0UmVu
ZGVyZXIpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBjb250YWluaW5nUmVuZGVyZXIgPSByZW5k
ZXJlci0+Y29udGFpbmVyKCk7CkBAIC03OTMsNyArNzkzLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRNZW51TGlzdChSZW5kZQogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0V2lkdGgoaW5m
bGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICBpbmZsYXRlZFJlY3Quc2V0
SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0Lnko
KSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9vbUxldmVs
LCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEdyYXBoaWNz
U2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+
dHJhbnNsYXRlKC1pbmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7CiAgICAgfQog
CkBAIC05NTQsNyArOTU0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jh
cihSZQogCiAgICAgaWYgKCFyZW5kZXJQcm9ncmVzcy0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKSB7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUoMiAqIHJl
Y3QueCgpICsgcmVjdC53aWR0aCgpLCAwKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSgtMSwgMSkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUo
R3JhcGhpY3NTaXplKC0xLCAxKSk7CiAgICAgfQogICAgIAogICAgIHBhaW50SW5mby5jb250ZXh0
LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0Is
IHJlY3QubG9jYXRpb24oKSk7CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBib29sIFJlbmRlclRoZW1l
TWFjOjpwYWludFNsaWRlclRodW1iKFJlCiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1
bnpvb21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5z
ZXRIZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3Qu
eSgpKTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2
ZWwsIHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoR3JhcGhp
Y3NTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT50cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9
CiAgICAgCkBAIC0xMzYyLDEyICsxMzYyLDEyIEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50
U2xpZGVyVGh1bWIoUmUKICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vOTQy
MTc4MT4uCiAgICAgaWYgKCFvLT52aWV3KCktPmZyYW1lVmlldygpLT5kb2N1bWVudFZpZXcoKSkg
ewogICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKDAsIHVuem9vbWVkUmVjdC55
KCkpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7
CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoMSwgLTEpKTsK
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgwLCAtKHVuem9vbWVkUmVjdC55
KCkgKyB1bnpvb21lZFJlY3QuaGVpZ2h0KCkpKTsKICAgICB9CiAjZWxpZiBQTEFURk9STShDSFJP
TUlVTSkKICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKDAsIHVuem9vbWVkUmVjdC55
KCkpOwotICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAg
ICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoR3JhcGhpY3NTaXplKDEsIC0xKSk7CiAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgwLCAtKHVuem9vbWVkUmVjdC55KCkgKyB1bnpvb21l
ZFJlY3QuaGVpZ2h0KCkpKTsKICNlbmRpZgogICAgIApAQCAtMTM5NCw3ICsxMzk0LDcgQEAgYm9v
bCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZChSZQogICAgICAgICB1bnpvb21lZFJl
Y3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwogICAgICAgICB1
bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpvb21MZXZlbCk7
CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRSZWN0LngoKSwg
dW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShGbG9h
dFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PnNjYWxlKEdyYXBoaWNzU2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwogICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56b29tZWRSZWN0
LnkoKSk7CiAgICAgfQogCkBAIC0xNTA0LDcgKzE1MDQsNyBAQCBib29sIFJlbmRlclRoZW1lTWFj
OjpwYWludFNlYXJjaEZpZWxkQ2FuCiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRXaWR0aCh1bnpv
b21lZFJlY3Qud2lkdGgoKSAvIHpvb21MZXZlbCk7CiAgICAgICAgIHVuem9vbWVkUmVjdC5zZXRI
ZWlnaHQodW56b29tZWRSZWN0LmhlaWdodCgpIC8gem9vbUxldmVsKTsKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh1bnpvb21lZFJlY3QueCgpLCB1bnpvb21lZFJlY3QueSgp
KTsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29tTGV2ZWws
IHpvb21MZXZlbCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2NhbGUoR3JhcGhpY3NT
aXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50
cmFuc2xhdGUoLXVuem9vbWVkUmVjdC54KCksIC11bnpvb21lZFJlY3QueSgpKTsKICAgICB9CiAK
QEAgLTE2MTUsNyArMTYxNSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmll
bGRSZXMKICAgICAgICAgdW56b29tZWRSZWN0LnNldFdpZHRoKHVuem9vbWVkUmVjdC53aWR0aCgp
IC8gem9vbUxldmVsKTsKICAgICAgICAgdW56b29tZWRSZWN0LnNldEhlaWdodCh1bnpvb21lZFJl
Y3QuaGVpZ2h0KCkgLyB6b29tTGV2ZWwpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+dHJh
bnNsYXRlKHVuem9vbWVkUmVjdC54KCksIHVuem9vbWVkUmVjdC55KCkpOwotICAgICAgICBwYWlu
dEluZm8uY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHpvb21MZXZlbCwgem9vbUxldmVsKSk7Cisg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoem9vbUxldmVsLCB6
b29tTGV2ZWwpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSgtdW56b29t
ZWRSZWN0LngoKSwgLXVuem9vbWVkUmVjdC55KCkpOwogICAgIH0KIApAQCAtMTcxOSw3ICsxNzE5
LDcgQEAgc3RhdGljIEZsb2F0UmVjdCBnZXRVbnpvb21lZFJlY3RBbmRBZGp1cwogICAgICAgICB1
bnpvb21lZFJlY3Quc2V0V2lkdGgodW56b29tZWRSZWN0LndpZHRoKCkgLyB6b29tTGV2ZWwpOwog
ICAgICAgICB1bnpvb21lZFJlY3Quc2V0SGVpZ2h0KHVuem9vbWVkUmVjdC5oZWlnaHQoKSAvIHpv
b21MZXZlbCk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUodW56b29tZWRS
ZWN0LngoKSwgdW56b29tZWRSZWN0LnkoKSk7Ci0gICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5z
Y2FsZShGbG9hdFNpemUoem9vbUxldmVsLCB6b29tTGV2ZWwpKTsKKyAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNjYWxlKEdyYXBoaWNzU2l6ZSh6b29tTGV2ZWwsIHpvb21MZXZlbCkpOwogICAg
ICAgICBwYWludEluZm8uY29udGV4dC0+dHJhbnNsYXRlKC11bnpvb21lZFJlY3QueCgpLCAtdW56
b29tZWRSZWN0LnkoKSk7CiAgICAgfQogICAgIHJldHVybiB1bnpvb21lZFJlY3Q7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCShyZXZpc2lv
biA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGMKICAgICByZXR1cm4gdHMgPDwgIikiOwogfQogCi1UZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGbG9hdFNpemUmIHMpCitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBHcmFwaGljc1NpemUmIHMp
CiB7CiAgICAgdHMgPDwgIndpZHRoPSI7CiAgICAgaWYgKGhhc0ZyYWN0aW9ucyhzLndpZHRoKCkp
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5oCShy
ZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmxvYXRQb2ludDsKLWNsYXNzIEZsb2F0U2l6ZTsK
K2NsYXNzIEdyYXBoaWNzU2l6ZTsKIGNsYXNzIEZyYW1lOwogY2xhc3MgSW50UG9pbnQ7CiBjbGFz
cyBJbnRSZWN0OwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZVJlbmRlck9iamVj
dChUZXh0U3RyZWFtCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBJ
bnRQb2ludCYpOwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgSW50
UmVjdCYpOwogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmxvYXRQ
b2ludCYpOwotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRmxvYXRT
aXplJik7CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBHcmFwaGlj
c1NpemUmKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZlY3RvcjxJdGVtPiYgdmVjdG9yKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25P
YmplY3QuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsx
MTYsNyBAQCB2b2lkIFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q6OmxheW91dCgpCiAKICAgICAvLyBD
YWNoZSB2aWV3cG9ydCBib3VuZGFyaWVzCiAgICAgRmxvYXRQb2ludCB2aWV3cG9ydExvY2F0aW9u
KGZvcmVpZ24tPngoKS52YWx1ZShmb3JlaWduKSwgZm9yZWlnbi0+eSgpLnZhbHVlKGZvcmVpZ24p
KTsKLSAgICBtX3ZpZXdwb3J0ID0gRmxvYXRSZWN0KHZpZXdwb3J0TG9jYXRpb24sIEZsb2F0U2l6
ZShmb3JlaWduLT53aWR0aCgpLnZhbHVlKGZvcmVpZ24pLCBmb3JlaWduLT5oZWlnaHQoKS52YWx1
ZShmb3JlaWduKSkpOworICAgIG1fdmlld3BvcnQgPSBGbG9hdFJlY3Qodmlld3BvcnRMb2NhdGlv
biwgR3JhcGhpY3NTaXplKGZvcmVpZ24tPndpZHRoKCkudmFsdWUoZm9yZWlnbiksIGZvcmVpZ24t
PmhlaWdodCgpLnZhbHVlKGZvcmVpZ24pKSk7CiAgICAgaWYgKCF1cGRhdGVDYWNoZWRCb3VuZGFy
aWVzSW5QYXJlbnRzKQogICAgICAgICB1cGRhdGVDYWNoZWRCb3VuZGFyaWVzSW5QYXJlbnRzID0g
b2xkVmlld3BvcnQgIT0gbV92aWV3cG9ydDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlz
aW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBQYXNzUmVm
UHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlclNWR1JlCiAgICAgcmV0dXJuIGJ1aWxkZXIucmVs
ZWFzZSgpOwogfQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpmaXRzSW5NYXhpbXVt
SW1hZ2VTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRTaXplJiBzY2FsZSkKK2Jvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpdHNJbk1heGltdW1JbWFnZVNpemUoY29uc3QgR3Jh
cGhpY3NTaXplJiBzaXplLCBHcmFwaGljc1NpemUmIHNjYWxlKQogewogICAgIGJvb2wgbWF0Y2hl
c0ZpbHRlclNpemUgPSB0cnVlOwogICAgIGlmIChzaXplLndpZHRoKCkgPiBrTWF4RmlsdGVyU2l6
ZSkgewpAQCAtMTkwLDcgKzE5MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFw
cGx5UmVzb3UKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgc2NhbGUgZmFjdG9yIGZvciB0aGUgdXNl
IG9mIGZpbHRlclJlcy4KICAgICAvLyBBbHNvIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcv
ZmlsdGVycy5odG1sI0ZpbHRlckVmZmVjdHNSZWdpb24KLSAgICBGbG9hdFNpemUgc2NhbGUoMSwg
MSk7CisgICAgR3JhcGhpY3NTaXplIHNjYWxlKDEsIDEpOwogICAgIGlmIChmaWx0ZXJFbGVtZW50
LT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIpKSB7CiAgICAgICAgIHNjYWxl
LnNldFdpZHRoKGZpbHRlckVsZW1lbnQtPmZpbHRlclJlc1goKSAvIGFic29sdXRlRmlsdGVyQm91
bmRhcmllcy53aWR0aCgpKTsKICAgICAgICAgc2NhbGUuc2V0SGVpZ2h0KGZpbHRlckVsZW1lbnQt
PmZpbHRlclJlc1koKSAvIGFic29sdXRlRmlsdGVyQm91bmRhcmllcy5oZWlnaHQoKSk7CkBAIC0z
MTYsNyArMzE2LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5Ugog
ICAgICAgICBpZiAocmVzdWx0SW1hZ2UpIHsKICAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENU
TShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpOwogCi0g
ICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEtPmZpbHRl
ci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZp
bHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOworICAgICAgICAgICAgY29udGV4dC0+c2NhbGUo
R3JhcGhpY3NTaXplKDEgLyBmaWx0ZXJEYXRhLT5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53
aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS0+ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0
KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAobGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVj
dCgpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcihyZXN1bHRJbWFnZSwg
b2JqZWN0LT5zdHlsZSgpLT5jb2xvclNwYWNlKCksIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRS
ZWN0KCkpOwogICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0YS0+ZmlsdGVyLT5m
aWx0ZXJSZXNvbHV0aW9uKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAkocmV2aXNpb24gOTEyMDApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgc3RydWN0IEZpbHRlckRhdGEgewogICAg
IEdyYXBoaWNzQ29udGV4dCogc2F2ZWRDb250ZXh0OwogICAgIEFmZmluZVRyYW5zZm9ybSBzaGVh
ckZyZWVBYnNvbHV0ZVRyYW5zZm9ybTsKICAgICBGbG9hdFJlY3QgYm91bmRhcmllczsKLSAgICBG
bG9hdFNpemUgc2NhbGU7CisgICAgR3JhcGhpY3NTaXplIHNjYWxlOwogICAgIGJvb2wgYnVpbGRl
ZCA6IDE7CiAgICAgYm9vbCBtYXJrZWRGb3JSZW1vdmFsIDogMTsKIH07CkBAIC04Nyw3ICs4Nyw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHNfcmVzb3VyY2VU
eXBlOwogCiBwcml2YXRlOgotICAgIGJvb2wgZml0c0luTWF4aW11bUltYWdlU2l6ZShjb25zdCBG
bG9hdFNpemUmLCBGbG9hdFNpemUmKTsKKyAgICBib29sIGZpdHNJbk1heGltdW1JbWFnZVNpemUo
Y29uc3QgR3JhcGhpY3NTaXplJiwgR3JhcGhpY3NTaXplJik7CiAKICAgICBIYXNoTWFwPFJlbmRl
ck9iamVjdCosIEZpbHRlckRhdGEqPiBtX2ZpbHRlcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGkKICAgICBlZmZlY3QtPnNldEZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihzdWJy
ZWdpb24pOwogCiAgICAgRmxvYXRSZWN0IGFic29sdXRlU3VicmVnaW9uID0gZmlsdGVyLT5tYXBM
b2NhbFJlY3RUb0Fic29sdXRlUmVjdChzdWJyZWdpb24pOwotICAgIEZsb2F0U2l6ZSBmaWx0ZXJS
ZXNvbHV0aW9uID0gZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCk7CisgICAgR3JhcGhpY3NTaXpl
IGZpbHRlclJlc29sdXRpb24gPSBmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKTsKICAgICBhYnNv
bHV0ZVN1YnJlZ2lvbi5zY2FsZShmaWx0ZXJSZXNvbHV0aW9uLndpZHRoKCksIGZpbHRlclJlc29s
dXRpb24uaGVpZ2h0KCkpOwogCiAgICAgLy8gRkVJbWFnZSBuZWVkcyB0aGUgdW5jbGlwcGVkIHN1
YnJlZ2lvbiBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcyB0byBkZXRlcm1pbmUgdGhlIGNvcnJlY3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjYsNyArMjY2LDcgQEAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZH
UmVzb3VyYwogICAgIEFTU0VSVCh0aWxlSW1hZ2VDb250ZXh0KTsKIAogICAgIC8vIFRoZSBpbWFn
ZSBidWZmZXIgcmVwcmVzZW50cyB0aGUgZmluYWwgcmVuZGVyZWQgc2l6ZSwgc28gdGhlIGNvbnRl
bnQgaGFzIHRvIGJlIHNjYWxlZCAodG8gYXZvaWQgcGl4ZWxhdGlvbikuCi0gICAgdGlsZUltYWdl
Q29udGV4dC0+c2NhbGUoRmxvYXRTaXplKGFic29sdXRlVGlsZUJvdW5kYXJpZXMud2lkdGgoKSAv
IHRpbGVCb3VuZGFyaWVzLndpZHRoKCksCisgICAgdGlsZUltYWdlQ29udGV4dC0+c2NhbGUoR3Jh
cGhpY3NTaXplKGFic29sdXRlVGlsZUJvdW5kYXJpZXMud2lkdGgoKSAvIHRpbGVCb3VuZGFyaWVz
LndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic29sdXRl
VGlsZUJvdW5kYXJpZXMuaGVpZ2h0KCkgLyB0aWxlQm91bmRhcmllcy5oZWlnaHQoKSkpOwogCiAg
ICAgLy8gQXBwbHkgdGlsZSBpbWFnZSB0cmFuc2Zvcm1hdGlvbnMuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDkxMjAw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBSZW5kZXJTVkdSb290Ojp+UmVuZGVyU1ZHUm9v
dCgpCiB7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5m
b3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQZXJjZW50YWdlSW50
cmluc2ljU2l6ZSkgY29uc3QKK3ZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1Jh
dGlvSW5mb3JtYXRpb24oR3JhcGhpY3NTaXplJiBpbnRyaW5zaWNSYXRpbywgYm9vbCYgaXNQZXJj
ZW50YWdlSW50cmluc2ljU2l6ZSkgY29uc3QKIHsKICAgICAvLyBTcGVjOiBodHRwOi8vZGV2Lncz
Lm9yZy9TVkcvcHJvZmlsZXMvMS4xRjIvcHVibGlzaC9jb29yZHMuaHRtbCNJbnRyaW5zaWNTaXpp
bmcKICAgICAvLyBUaGUgaW50cmluc2ljIGFzcGVjdCByYXRpbyBvZiB0aGUgdmlld3BvcnQgb2Yg
U1ZHIGNvbnRlbnQgaXMgbmVjZXNzYXJ5IGZvciBleGFtcGxlLCB3aGVuIGluY2x1ZGluZwpAQCAt
NzYsNyArNzYsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNSYXRpCiAg
ICAgLy8g4oCYd2lkdGjigJkgYW5kIOKAmGhlaWdodOKAmSBhdHRyaWJ1dGVzIGFmdGVyIHJlc29s
dmluZyBib3RoIHZhbHVlcyB0byB1c2VyIHVuaXRzLgogICAgIGlzUGVyY2VudGFnZUludHJpbnNp
Y1NpemUgPSBmYWxzZTsKICAgICBpZiAoc3R5bGUoKS0+d2lkdGgoKS5pc0ZpeGVkKCkgJiYgc3R5
bGUoKS0+aGVpZ2h0KCkuaXNGaXhlZCgpKSB7Ci0gICAgICAgIGludHJpbnNpY1JhdGlvID0gRmxv
YXRTaXplKHdpZHRoKCksIGhlaWdodCgpKTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBHcmFw
aGljc1NpemUod2lkdGgoKSwgaGVpZ2h0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC05MCw3ICs5MCw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGkK
ICAgICAvLyBhY2NvdW50IGZvciBjZXJ0YWluIGNhc2VzIG9mIHRoZSBpbnRyaW5zaWMgd2lkdGgv
aGVpZ2h0IGNhbGN1bGF0aW9uIGluIFJlbmRlclBhcnQ6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxX
aWR0aC9IZWlnaHQuCiAgICAgaWYgKGludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSAmJiBzdHlsZSgp
LT53aWR0aCgpLmlzUGVyY2VudCgpICYmIHN0eWxlKCktPmhlaWdodCgpLmlzUGVyY2VudCgpKSB7
CiAgICAgICAgIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUgPSB0cnVlOwotICAgICAgICBpbnRy
aW5zaWNSYXRpbyA9IEZsb2F0U2l6ZShzdHlsZSgpLT53aWR0aCgpLnBlcmNlbnQoKSwgc3R5bGUo
KS0+aGVpZ2h0KCkucGVyY2VudCgpKTsKKyAgICAgICAgaW50cmluc2ljUmF0aW8gPSBHcmFwaGlj
c1NpemUoc3R5bGUoKS0+d2lkdGgoKS5wZXJjZW50KCksIHN0eWxlKCktPmhlaWdodCgpLnBlcmNl
bnQoKSk7CiAgICAgfQogfQogCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290
OjpjYWxjVmlld3BvcnQoKQogICAgIGlmICghc3ZnLT5oYXNTZXRDb250YWluZXJTaXplKCkpIHsK
ICAgICAgICAgLy8gSW4gdGhlIG5vcm1hbCBjYXNlIG9mIDxzdmc+IGJlaW5nIHN0YW5kLWFsb25l
IG9yIGluIGEgQ1NTQm94TW9kZWwgb2JqZWN0IHdlIHVzZQogICAgICAgICAvLyBSZW5kZXJCb3g6
OndpZHRoKCkvaGVpZ2h0KCkgKHdoaWNoIHB1bGxzIGRhdGEgZnJvbSBSZW5kZXJTdHlsZSkKLSAg
ICAgICAgbV92aWV3cG9ydFNpemUgPSBGbG9hdFNpemUod2lkdGgoKSwgaGVpZ2h0KCkpOworICAg
ICAgICBtX3ZpZXdwb3J0U2l6ZSA9IEdyYXBoaWNzU2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lkIFJlbmRlclNW
R1Jvb3Q6OmNhbGNWaWV3cG9ydCgpCiAgICAgLy8gRklYTUU6IENoZWNrIGhvdyBTVkdJbWFnZSAr
IHpvb21pbmcgaXMgc3VwcG9zZWQgdG8gYmUgaGFuZGxlZD8KICAgICBTVkdMZW5ndGggd2lkdGgg
PSBzdmctPndpZHRoKCk7CiAgICAgU1ZHTGVuZ3RoIGhlaWdodCA9IHN2Zy0+aGVpZ2h0KCk7Ci0g
ICAgbV92aWV3cG9ydFNpemUgPSBGbG9hdFNpemUod2lkdGgudW5pdFR5cGUoKSA9PSBMZW5ndGhU
eXBlUGVyY2VudGFnZSA/IHN2Zy0+cmVsYXRpdmVXaWR0aFZhbHVlKCkgOiB3aWR0aC52YWx1ZShz
dmcpLAorICAgIG1fdmlld3BvcnRTaXplID0gR3JhcGhpY3NTaXplKHdpZHRoLnVuaXRUeXBlKCkg
PT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgPyBzdmctPnJlbGF0aXZlV2lkdGhWYWx1ZSgpIDogd2lk
dGgudmFsdWUoc3ZnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQudW5p
dFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSA/IHN2Zy0+cmVsYXRpdmVIZWlnaHRWYWx1
ZSgpIDogaGVpZ2h0LnZhbHVlKHN2ZykpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyU1ZHUm9vdChTVkdTdHls
ZWRFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUm9vdCgpOwogCi0gICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmlu
c2ljUmF0aW8sIGJvb2wmIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihHcmFwaGljc1NpemUm
IGludHJpbnNpY1JhdGlvLCBib29sJiBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNTaXplKSBjb25zdDsK
ICAgICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgY29uc3QgeyByZXR1
cm4gJm1fY2hpbGRyZW47IH0KICAgICBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkg
eyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIApAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogICAg
IEFmZmluZVRyYW5zZm9ybSBsb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtKCkgY29uc3Q7CiAKICAg
ICBSZW5kZXJPYmplY3RDaGlsZExpc3QgbV9jaGlsZHJlbjsKLSAgICBGbG9hdFNpemUgbV92aWV3
cG9ydFNpemU7CisgICAgR3JhcGhpY3NTaXplIG1fdmlld3BvcnRTaXplOwogICAgIEZsb2F0UmVj
dCBtX29iamVjdEJvdW5kaW5nQm94OwogICAgIEZsb2F0UmVjdCBtX3N0cm9rZUJvdW5kaW5nQm94
OwogICAgIEZsb2F0UmVjdCBtX3JlcGFpbnRCb3VuZGluZ0JveDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lcjo6Y2EKICAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmdUYWcpIHx8
ICFzdGF0aWNfY2FzdDxTVkdHRWxlbWVudCo+KGVsZW1lbnQpLT5pc1NoYWRvd1RyZWVDb250YWlu
ZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBuZWVkc1VwZGF0ZTsKIAotICAgIEZsb2F0U2l6
ZSB0cmFuc2xhdGlvbiA9IHN0YXRpY19jYXN0PFNWR1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50
Kj4oZWxlbWVudCktPmNvbnRhaW5lclRyYW5zbGF0aW9uKCk7CisgICAgR3JhcGhpY3NTaXplIHRy
YW5zbGF0aW9uID0gc3RhdGljX2Nhc3Q8U1ZHU2hhZG93VHJlZUNvbnRhaW5lckVsZW1lbnQqPihl
bGVtZW50KS0+Y29udGFpbmVyVHJhbnNsYXRpb24oKTsKICAgICBpZiAoIXRyYW5zbGF0aW9uLndp
ZHRoKCkgJiYgIXRyYW5zbGF0aW9uLmhlaWdodCgpKQogICAgICAgICByZXR1cm4gbmVlZHNVcGRh
dGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW1hZ2VCdWZmZXJU
b29scy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJ
bWFnZUJ1ZmZlclRvb2xzLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0ltYWdlQnVmZmVyVG9vbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw3ICs2Nyw3IEBAIGJvb2wgU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWYKICAg
ICBBU1NFUlQoaW1hZ2VDb250ZXh0KTsKIAogICAgIC8vIENvbXBlbnNhdGUgcm91bmRpbmcgZWZm
ZWN0cywgYXMgdGhlIGFic29sdXRlIHRhcmdldCByZWN0IGlzIHVzaW5nIGZsb2F0aW5nLXBvaW50
IG51bWJlcnMgYW5kIHRoZSBpbWFnZSBidWZmZXIgc2l6ZSBpcyBpbnRlZ2VyLgotICAgIGltYWdl
Q29udGV4dC0+c2NhbGUoRmxvYXRTaXplKHVuY2xhbXBlZEltYWdlU2l6ZS53aWR0aCgpIC8gYWJz
b2x1dGVUYXJnZXRSZWN0LndpZHRoKCksIHVuY2xhbXBlZEltYWdlU2l6ZS5oZWlnaHQoKSAvIGFi
c29sdXRlVGFyZ2V0UmVjdC5oZWlnaHQoKSkpOworICAgIGltYWdlQ29udGV4dC0+c2NhbGUoR3Jh
cGhpY3NTaXplKHVuY2xhbXBlZEltYWdlU2l6ZS53aWR0aCgpIC8gYWJzb2x1dGVUYXJnZXRSZWN0
LndpZHRoKCksIHVuY2xhbXBlZEltYWdlU2l6ZS5oZWlnaHQoKSAvIGFic29sdXRlVGFyZ2V0UmVj
dC5oZWlnaHQoKSkpOwogCiAgICAgaW1hZ2VCdWZmZXIgPSBpbWFnZS5yZWxlYXNlKCk7CiAgICAg
cmV0dXJuIHRydWU7CkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBTVkdJbWFnZUJ1ZmZlclRvb2xz
OjpjbGlwVG9JbWFnZUJ1ZgogICAgICAgICBpbWFnZUJ1ZmZlci5jbGVhcigpOwogfQogCi1JbnRT
aXplIFNWR0ltYWdlQnVmZmVyVG9vbHM6OnJvdW5kZWRJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxv
YXRTaXplJiBzaXplKQorSW50U2l6ZSBTVkdJbWFnZUJ1ZmZlclRvb2xzOjpyb3VuZGVkSW1hZ2VC
dWZmZXJTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkKIHsKICAgICByZXR1cm4gSW50U2l6
ZShzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoc2l6ZS53aWR0aCgpKSksIHN0YXRpY19jYXN0PGlu
dD4obHJvdW5kZihzaXplLmhlaWdodCgpKSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgJKHJldmlzaW9uIDkxMjAw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBGbG9hdFNpemU7
CitjbGFzcyBHcmFwaGljc1NpemU7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBSZW5k
ZXJPYmplY3Q7CiAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdFNWR0Nvb3JkaW5hdGVTeXN0ZW0oY29u
c3QgUmVuZGVyT2JqZWN0KiwgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAg
ICAgc3RhdGljIEZsb2F0UmVjdCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0Rm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRhcmdldFJlY3Qp
OwotICAgIHN0YXRpYyBJbnRTaXplIHJvdW5kZWRJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRT
aXplJik7CisgICAgc3RhdGljIEludFNpemUgcm91bmRlZEltYWdlQnVmZmVyU2l6ZShjb25zdCBH
cmFwaGljc1NpemUmKTsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUJ1ZmZlclRvb2xzKCkgeyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4
dEJveC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw3IEBA
IHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uV2kKICAgICBkZWNvcmF0aW9u
T3JpZ2luLm1vdmUoMCwgLXNjYWxlZEZvbnRNZXRyaWNzLmZsb2F0QXNjZW50KCkgKyBwb3NpdGlv
bk9mZnNldEZvckRlY29yYXRpb24oZGVjb3JhdGlvbiwgc2NhbGVkRm9udE1ldHJpY3MsIHRoaWNr
bmVzcykpOwogCiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUmVjdChGbG9hdFJlY3QoZGVj
b3JhdGlvbk9yaWdpbiwgRmxvYXRTaXplKHdpZHRoLCB0aGlja25lc3MpKSk7CisgICAgcGF0aC5h
ZGRSZWN0KEZsb2F0UmVjdChkZWNvcmF0aW9uT3JpZ2luLCBHcmFwaGljc1NpemUod2lkdGgsIHRo
aWNrbmVzcykpKTsKIAogICAgIGlmIChhY3F1aXJlUGFpbnRpbmdSZXNvdXJjZShjb250ZXh0LCBz
Y2FsaW5nRmFjdG9yLCBkZWNvcmF0aW9uUmVuZGVyZXIsIGRlY29yYXRpb25TdHlsZSkpCiAgICAg
ICAgIHJlbGVhc2VQYWludGluZ1Jlc291cmNlKGNvbnRleHQsICZwYXRoKTsKQEAgLTYxNiw3ICs2
MTYsNyBAQCB2b2lkIFNWR0lubGluZVRleHRCb3g6OnBhaW50VGV4dFdpdGhTaGFkCiAgICAgY29u
c3QgU2hhZG93RGF0YSogc2hhZG93ID0gc3R5bGUtPnRleHRTaGFkb3coKTsKIAogICAgIEZsb2F0
UG9pbnQgdGV4dE9yaWdpbihmcmFnbWVudC54LCBmcmFnbWVudC55KTsKLSAgICBGbG9hdFNpemUg
dGV4dFNpemUoZnJhZ21lbnQud2lkdGgsIGZyYWdtZW50LmhlaWdodCk7CisgICAgR3JhcGhpY3NT
aXplIHRleHRTaXplKGZyYWdtZW50LndpZHRoLCBmcmFnbWVudC5oZWlnaHQpOwogCiAgICAgaWYg
KHNjYWxpbmdGYWN0b3IgIT0gMSkgewogICAgICAgICB0ZXh0T3JpZ2luLnNjYWxlKHNjYWxpbmdG
YWN0b3IsIHNjYWxpbmdGYWN0b3IpOwpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgU1ZHSW5saW5l
VGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWQKICAgICAgICAgaWYgKCFwcmVwYXJlR3JhcGhpY3ND
b250ZXh0Rm9yVGV4dFBhaW50aW5nKGNvbnRleHQsIHNjYWxpbmdGYWN0b3IsIHRleHRSdW4sIHN0
eWxlKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIEZsb2F0U2l6ZSBleHRyYU9mZnNl
dDsKKyAgICAgICAgR3JhcGhpY3NTaXplIGV4dHJhT2Zmc2V0OwogICAgICAgICBpZiAoc2hhZG93
KQogICAgICAgICAgICAgZXh0cmFPZmZzZXQgPSBhcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0
KGNvbnRleHQsIHNoYWRvdywgc2hhZG93UmVjdCwgZmFsc2UgLyogc3Ryb2tlZCAqLywgdHJ1ZSAv
KiBvcGFxdWUgKi8sIHRydWUgLyogaG9yaXpvbnRhbCAqLyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw4ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IGN1cnJlbnRBbmdsZSgp
IGNvbnN0CiAgICAgewotICAgICAgICBGbG9hdFNpemUgaW5zbG9wZUNoYW5nZSA9IG1faW5zbG9w
ZVBvaW50c1sxXSAtIG1faW5zbG9wZVBvaW50c1swXTsKLSAgICAgICAgRmxvYXRTaXplIG91dHNs
b3BlQ2hhbmdlID0gbV9vdXRzbG9wZVBvaW50c1sxXSAtIG1fb3V0c2xvcGVQb2ludHNbMF07Cisg
ICAgICAgIEdyYXBoaWNzU2l6ZSBpbnNsb3BlQ2hhbmdlID0gbV9pbnNsb3BlUG9pbnRzWzFdIC0g
bV9pbnNsb3BlUG9pbnRzWzBdOworICAgICAgICBHcmFwaGljc1NpemUgb3V0c2xvcGVDaGFuZ2Ug
PSBtX291dHNsb3BlUG9pbnRzWzFdIC0gbV9vdXRzbG9wZVBvaW50c1swXTsKIAogICAgICAgICBk
b3VibGUgaW5zbG9wZSA9IHJhZDJkZWcoYXRhbjIoaW5zbG9wZUNoYW5nZS5oZWlnaHQoKSwgaW5z
bG9wZUNoYW5nZS53aWR0aCgpKSk7CiAgICAgICAgIGRvdWJsZSBvdXRzbG9wZSA9IHJhZDJkZWco
YXRhbjIob3V0c2xvcGVDaGFuZ2UuaGVpZ2h0KCksIG91dHNsb3BlQ2hhbmdlLndpZHRoKCkpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CiBjbGFzcyBGbG9hdFJlY3Q7Ci1j
bGFzcyBGbG9hdFNpemU7CitjbGFzcyBHcmFwaGljc1NpemU7CiBjbGFzcyBOb2RlOwogY2xhc3Mg
UmVuZGVyQmxvY2s7CiBjbGFzcyBSZW5kZXJJbWFnZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5jcHAJKHJldmlz
aW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVl
RWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSAi
U1ZHU2hhZG93VHJlZUVsZW1lbnRzLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU2l6ZS5oIgogI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHVXNlRWxl
bWVudC5oIgpAQCAtNDIsOSArNDIsOSBAQCBQYXNzUmVmUHRyPFNWR1NoYWRvd1RyZWVDb250YWlu
ZXJFbGVtZW50CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdTaGFkb3dUcmVlQ29udGFpbmVy
RWxlbWVudChkb2N1bWVudCkpOwogfQogCi1GbG9hdFNpemUgU1ZHU2hhZG93VHJlZUNvbnRhaW5l
ckVsZW1lbnQ6OmNvbnRhaW5lclRyYW5zbGF0aW9uKCkgY29uc3QKK0dyYXBoaWNzU2l6ZSBTVkdT
aGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudDo6Y29udGFpbmVyVHJhbnNsYXRpb24oKSBjb25zdAog
ewotICAgIHJldHVybiBGbG9hdFNpemUobV94T2Zmc2V0LnZhbHVlKHRoaXMpLCBtX3lPZmZzZXQu
dmFsdWUodGhpcykpOworICAgIHJldHVybiBHcmFwaGljc1NpemUobV94T2Zmc2V0LnZhbHVlKHRo
aXMpLCBtX3lPZmZzZXQudmFsdWUodGhpcykpOwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IFNW
R1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRl
c0FuZENoaWxkcmVuKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHU2hhZG93VHJlZUVsZW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuaAkocmV2aXNpb24gOTEyMDApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBGbG9hdFNpemU7CitjbGFzcyBHcmFwaGljc1NpemU7CiBjbGFzcyBTVkdVc2VFbGVtZW50
OwogCiBjbGFzcyBTVkdTaGFkb3dUcmVlQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBTVkdHRWxl
bWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHU2hhZG93VHJlZUNvbnRh
aW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCopOwogCi0gICAgRmxvYXRTaXplIGNvbnRhaW5l
clRyYW5zbGF0aW9uKCkgY29uc3Q7CisgICAgR3JhcGhpY3NTaXplIGNvbnRhaW5lclRyYW5zbGF0
aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250YWluZXJPZmZzZXQoY29uc3QgU1ZHTGVuZ3Ro
JiB4LCBjb25zdCBTVkdMZW5ndGgmIHkpCiAgICAgewogICAgICAgICBtX3hPZmZzZXQgPSB4OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UXVlcnkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFF1ZXJ5LmNwcAko
cmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRR
dWVyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgY2FsY3VsYXRlR2x5cGhCb3VuZGFyCiAgICAgfQogCiAgICAgU1ZHVGV4dE1ldHJpY3Mg
bWV0cmljcyA9IFNWR1RleHRNZXRyaWNzOjptZWFzdXJlQ2hhcmFjdGVyUmFuZ2UocXVlcnlEYXRh
LT50ZXh0UmVuZGVyZXIsIGZyYWdtZW50LmNoYXJhY3Rlck9mZnNldCArIHN0YXJ0UG9zaXRpb24s
IDEpOwotICAgIGV4dGVudC5zZXRTaXplKEZsb2F0U2l6ZShtZXRyaWNzLndpZHRoKCksIG1ldHJp
Y3MuaGVpZ2h0KCkpKTsKKyAgICBleHRlbnQuc2V0U2l6ZShHcmFwaGljc1NpemUobWV0cmljcy53
aWR0aCgpLCBtZXRyaWNzLmhlaWdodCgpKSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gZnJhZ21l
bnRUcmFuc2Zvcm07CiAgICAgZnJhZ21lbnQuYnVpbGRGcmFnbWVudFRyYW5zZm9ybShmcmFnbWVu
dFRyYW5zZm9ybSwgU1ZHVGV4dEZyYWdtZW50OjpUcmFuc2Zvcm1JZ25vcmluZ1RleHRMZW5ndGgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNW
R0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBCiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBGbG9hdFNpemUgZGlmZiA9IG1fdG9Qb2ludCAtIG1fZnJvbVBvaW50
OworICAgIEdyYXBoaWNzU2l6ZSBkaWZmID0gbV90b1BvaW50IC0gbV9mcm9tUG9pbnQ7CiAgICAg
dHJhbnNmb3JtLT50cmFuc2xhdGUoZGlmZi53aWR0aCgpICogcGVyY2VudGFnZSArIG1fZnJvbVBv
aW50LngoKSwgZGlmZi5oZWlnaHQoKSAqIHBlcmNlbnRhZ2UgKyBtX2Zyb21Qb2ludC55KCkpOwog
fQogICAgIApAQCAtMjcxLDcgKzI3MSw3IEBAIGZsb2F0IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
OjpjYWxjdWxhdGUKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICghcGFyc2VQb2ludCh0b1N0
cmluZywgdG8pKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgRmxvYXRTaXplIGRpZmYgPSB0byAt
IGZyb207CisgICAgR3JhcGhpY3NTaXplIGRpZmYgPSB0byAtIGZyb207CiAgICAgcmV0dXJuIHNx
cnRmKGRpZmYud2lkdGgoKSAqIGRpZmYud2lkdGgoKSArIGRpZmYuaGVpZ2h0KCkgKiBkaWZmLmhl
aWdodCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmgJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHJp
dmF0ZToKICAgICB9OwogICAgIFJvdGF0ZU1vZGUgcm90YXRlTW9kZSgpIGNvbnN0OwogCi0gICAg
RmxvYXRTaXplIG1fYW5pbWF0ZWRUcmFuc2xhdGlvbjsKKyAgICBHcmFwaGljc1NpemUgbV9hbmlt
YXRlZFRyYW5zbGF0aW9uOwogICAgIGZsb2F0IG1fYW5pbWF0ZWRBbmdsZTsKIAogICAgIC8vIE5v
dGU6IHdlIGRvIG5vdCBzdXBwb3J0IHBlcmNlbnRhZ2UgdmFsdWVzIGZvciB0by9mcm9tIGNvb3Jk
cyBhcyB0aGUgc3BlYyBpbXBsaWVzIHdlIHNob3VsZCAob3BlcmEgZG9lc24ndCBlaXRoZXIpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVU
cmFuc2Zvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDEzICsyNTcsMTMgQEAg
ZmxvYXQgU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OmNhbGN1bAogICAgIGlmICghdG8uaXNW
YWxpZCgpIHx8IGZyb20udHlwZSgpICE9IHRvLnR5cGUoKSkKICAgICAgICAgcmV0dXJuIC0xOwog
ICAgIGlmICh0by50eXBlKCkgPT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFU
RSkgewotICAgICAgICBGbG9hdFNpemUgZGlmZiA9IHRvLnRyYW5zbGF0ZSgpIC0gZnJvbS50cmFu
c2xhdGUoKTsKKyAgICAgICAgR3JhcGhpY3NTaXplIGRpZmYgPSB0by50cmFuc2xhdGUoKSAtIGZy
b20udHJhbnNsYXRlKCk7CiAgICAgICAgIHJldHVybiBzcXJ0ZihkaWZmLndpZHRoKCkgKiBkaWZm
LndpZHRoKCkgKyBkaWZmLmhlaWdodCgpICogZGlmZi5oZWlnaHQoKSk7CiAgICAgfQogICAgIGlm
ICh0by50eXBlKCkgPT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1JPVEFURSkKICAgICAg
ICAgcmV0dXJuIGZhYnNmKHRvLmFuZ2xlKCkgLSBmcm9tLmFuZ2xlKCkpOwogICAgIGlmICh0by50
eXBlKCkgPT0gU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1NDQUxFKSB7Ci0gICAgICAgIEZs
b2F0U2l6ZSBkaWZmID0gdG8uc2NhbGUoKSAtIGZyb20uc2NhbGUoKTsKKyAgICAgICAgR3JhcGhp
Y3NTaXplIGRpZmYgPSB0by5zY2FsZSgpIC0gZnJvbS5zY2FsZSgpOwogICAgICAgICByZXR1cm4g
c3FydGYoZGlmZi53aWR0aCgpICogZGlmZi53aWR0aCgpICsgZGlmZi5oZWlnaHQoKSAqIGRpZmYu
aGVpZ2h0KCkpOwogICAgIH0KICAgICByZXR1cm4gLTE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhQYXJzZXIuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQg
U1ZHUGF0aFBhcnNlcjo6Y2xlYW51cCgpCiAvLyBTZWUgYWxzbyBTVkcgaW1wbGVtZW50YXRpb24g
bm90ZXM6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pbXBsbm90ZS5odG1sI0FyY0NvbnZlcnNp
b25FbmRwb2ludFRvQ2VudGVyCiBib29sIFNWR1BhdGhQYXJzZXI6OmRlY29tcG9zZUFyY1RvQ3Vi
aWMoZmxvYXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwgRmxvYXRQb2ludCYgcG9pbnQxLCBG
bG9hdFBvaW50JiBwb2ludDIsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZykKIHsK
LSAgICBGbG9hdFNpemUgbWlkUG9pbnREaXN0YW5jZSA9IHBvaW50MSAtIHBvaW50MjsKKyAgICBH
cmFwaGljc1NpemUgbWlkUG9pbnREaXN0YW5jZSA9IHBvaW50MSAtIHBvaW50MjsKICAgICBtaWRQ
b2ludERpc3RhbmNlLnNjYWxlKDAuNWYpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBvaW50VHJh
bnNmb3JtOwpAQCAtNDI5LDcgKzQyOSw3IEBAIGJvb2wgU1ZHUGF0aFBhcnNlcjo6ZGVjb21wb3Nl
QXJjVG9DdWJpYygKIAogICAgIHBvaW50MSA9IHBvaW50VHJhbnNmb3JtLm1hcFBvaW50KHBvaW50
MSk7CiAgICAgcG9pbnQyID0gcG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQyKTsKLSAgICBG
bG9hdFNpemUgZGVsdGEgPSBwb2ludDIgLSBwb2ludDE7CisgICAgR3JhcGhpY3NTaXplIGRlbHRh
ID0gcG9pbnQyIC0gcG9pbnQxOwogCiAgICAgZmxvYXQgZCA9IGRlbHRhLndpZHRoKCkgKiBkZWx0
YS53aWR0aCgpICsgZGVsdGEuaGVpZ2h0KCkgKiBkZWx0YS5oZWlnaHQoKTsKICAgICBmbG9hdCBz
Y2FsZUZhY3RvclNxdWFyZWQgPSBzdGQ6Om1heCgxIC8gZCAtIDAuMjVmLCAwLmYpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAkocmV2aXNp
b24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBiYWlsT3V0OgogCiB2b2lkIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OnRyYW5zZm9ybVJlY3QoRmxvYXRSZWN0JiBkZXN0UmVjdCwg
RmxvYXRSZWN0JiBzcmNSZWN0KQogewotICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBzcmNSZWN0
LnNpemUoKTsKKyAgICBHcmFwaGljc1NpemUgaW1hZ2VTaXplID0gc3JjUmVjdC5zaXplKCk7CiAg
ICAgZmxvYXQgb3JpZ0Rlc3RXaWR0aCA9IGRlc3RSZWN0LndpZHRoKCk7CiAgICAgZmxvYXQgb3Jp
Z0Rlc3RIZWlnaHQgPSBkZXN0UmVjdC5oZWlnaHQoKTsKICAgICBzd2l0Y2ggKG1fbWVldE9yU2xp
Y2UpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24g
OTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0
YShQYXRoJiBwYQogICAgICAgICAgICAgcnhWYWx1ZSA9IHJ5VmFsdWU7CiAgICAgICAgIGVsc2Ug
aWYgKCFoYXNSeSkKICAgICAgICAgICAgIHJ5VmFsdWUgPSByeFZhbHVlOwotICAgICAgICBwYXRo
LmFkZFJvdW5kZWRSZWN0KHJlY3QsIEZsb2F0U2l6ZShyeFZhbHVlLCByeVZhbHVlKSk7CisgICAg
ICAgIHBhdGguYWRkUm91bmRlZFJlY3QocmVjdCwgR3JhcGhpY3NTaXplKHJ4VmFsdWUsIHJ5VmFs
dWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw3ICsxNDgsNyBAQCBGbG9hdFJl
Y3QgU1ZHU1ZHRWxlbWVudDo6dmlld3BvcnQoKSBjb25zCiAgICAgaWYgKCFpc091dGVybW9zdFNW
RygpKQogICAgICAgICB2aWV3UmVjdGFuZ2xlLnNldExvY2F0aW9uKEZsb2F0UG9pbnQoeCgpLnZh
bHVlKHRoaXMpLCB5KCkudmFsdWUodGhpcykpKTsKIAotICAgIHZpZXdSZWN0YW5nbGUuc2V0U2l6
ZShGbG9hdFNpemUod2lkdGgoKS52YWx1ZSh0aGlzKSwgaGVpZ2h0KCkudmFsdWUodGhpcykpKTsg
ICAgCisgICAgdmlld1JlY3RhbmdsZS5zZXRTaXplKEdyYXBoaWNzU2l6ZSh3aWR0aCgpLnZhbHVl
KHRoaXMpLCBoZWlnaHQoKS52YWx1ZSh0aGlzKSkpOyAgICAKICAgICByZXR1cm4gdmlld0JveFRv
Vmlld1RyYW5zZm9ybSh2aWV3UmVjdGFuZ2xlLndpZHRoKCksIHZpZXdSZWN0YW5nbGUuaGVpZ2h0
KCkpLm1hcFJlY3Qodmlld1JlY3RhbmdsZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
cmFuc2Zvcm0uY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
cmFuc2Zvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAi
RmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiU1ZHQW5n
bGUuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KQEAgLTkzLDkgKzkzLDkgQEAgdm9pZCBTVkdUcmFuc2Zvcm06OnNldFNjYWxlKGZsb2F0
IHN4LCBmbAogICAgIG1fbWF0cml4LnNjYWxlTm9uVW5pZm9ybShzeCwgc3kpOwogfQogCi1GbG9h
dFNpemUgU1ZHVHJhbnNmb3JtOjpzY2FsZSgpIGNvbnN0CitHcmFwaGljc1NpemUgU1ZHVHJhbnNm
b3JtOjpzY2FsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEZsb2F0U2l6ZTo6bmFycm93UHJlY2lz
aW9uKG1fbWF0cml4LmEoKSwgbV9tYXRyaXguZCgpKTsKKyAgICByZXR1cm4gR3JhcGhpY3NTaXpl
OjpuYXJyb3dQcmVjaXNpb24obV9tYXRyaXguYSgpLCBtX21hdHJpeC5kKCkpOwogfQogCiB2b2lk
IFNWR1RyYW5zZm9ybTo6c2V0Um90YXRlKGZsb2F0IGFuZ2xlLCBmbG9hdCBjeCwgZmxvYXQgY3kp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZsb2F0U2l6ZTsKK2NsYXNz
IEdyYXBoaWNzU2l6ZTsKIAogY2xhc3MgU1ZHVHJhbnNmb3JtIHsKIHB1YmxpYzoKQEAgLTYzLDcg
KzYzLDcgQEAgcHVibGljOgogICAgIAogICAgIC8vIEludGVybmFsIHVzZSBvbmx5IChhbmltYXRp
b24gc3lzdGVtKQogICAgIEZsb2F0UG9pbnQgdHJhbnNsYXRlKCkgY29uc3Q7Ci0gICAgRmxvYXRT
aXplIHNjYWxlKCkgY29uc3Q7CisgICAgR3JhcGhpY3NTaXplIHNjYWxlKCkgY29uc3Q7CiAKICAg
ICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgIT0gU1ZHX1RSQU5TRk9STV9V
TktOT1dOOyB9CiAgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcAkocmV2aXNpb24gOTEyMDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NTaXplLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtLmgiCiAKICNpbmNsdWRl
IDxtYXRoLmg+CkBAIC02MiwxNCArNjIsMTQgQEAgU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OlNWR1Ry
YW5zZm9ybURpc3RhbgogICAgICAgICAvLyBGSVhNRTogbmVlZCB0byBiZSBhYmxlIHRvIHN1YnRy
YWN0IHRvIG1hdHJpY2VzCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6
U1ZHX1RSQU5TRk9STV9ST1RBVEU6IHsKLSAgICAgICAgRmxvYXRTaXplIGNlbnRlckRpc3RhbmNl
ID0gdG9TVkdUcmFuc2Zvcm0ucm90YXRpb25DZW50ZXIoKSAtIGZyb21TVkdUcmFuc2Zvcm0ucm90
YXRpb25DZW50ZXIoKTsKKyAgICAgICAgR3JhcGhpY3NTaXplIGNlbnRlckRpc3RhbmNlID0gdG9T
VkdUcmFuc2Zvcm0ucm90YXRpb25DZW50ZXIoKSAtIGZyb21TVkdUcmFuc2Zvcm0ucm90YXRpb25D
ZW50ZXIoKTsKICAgICAgICAgbV9hbmdsZSA9IHRvU1ZHVHJhbnNmb3JtLmFuZ2xlKCkgLSBmcm9t
U1ZHVHJhbnNmb3JtLmFuZ2xlKCk7CiAgICAgICAgIG1fY3ggPSBjZW50ZXJEaXN0YW5jZS53aWR0
aCgpOwogICAgICAgICBtX2N5ID0gY2VudGVyRGlzdGFuY2UuaGVpZ2h0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVFJBTlNM
QVRFOiB7Ci0gICAgICAgIEZsb2F0U2l6ZSB0cmFuc2xhdGlvbkRpc3RhbmNlID0gdG9TVkdUcmFu
c2Zvcm0udHJhbnNsYXRlKCkgLSBmcm9tU1ZHVHJhbnNmb3JtLnRyYW5zbGF0ZSgpOworICAgICAg
ICBHcmFwaGljc1NpemUgdHJhbnNsYXRpb25EaXN0YW5jZSA9IHRvU1ZHVHJhbnNmb3JtLnRyYW5z
bGF0ZSgpIC0gZnJvbVNWR1RyYW5zZm9ybS50cmFuc2xhdGUoKTsKICAgICAgICAgbV90cmFuc2Zv
cm0udHJhbnNsYXRlKHRyYW5zbGF0aW9uRGlzdGFuY2Uud2lkdGgoKSwgdHJhbnNsYXRpb25EaXN0
YW5jZS5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzUsNyArMTM1LDcg
QEAgU1ZHVHJhbnNmb3JtIFNWR1RyYW5zZm9ybURpc3RhbmNlOjphZGRTVgogICAgICAgICByZXR1
cm4gdHJhbnNmb3JtOwogICAgIH0KICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9S
TV9TQ0FMRTogewotICAgICAgICBGbG9hdFNpemUgc2NhbGUgPSBmaXJzdC5zY2FsZSgpICsgc2Vj
b25kLnNjYWxlKCk7CisgICAgICAgIEdyYXBoaWNzU2l6ZSBzY2FsZSA9IGZpcnN0LnNjYWxlKCkg
KyBzZWNvbmQuc2NhbGUoKTsKICAgICAgICAgdHJhbnNmb3JtLnNldFNjYWxlKHNjYWxlLndpZHRo
KCksIHNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybTsKICAgICB9CkBA
IC0yMDUsMTMgKzIwNSwxMyBAQCBTVkdUcmFuc2Zvcm0gU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OmFk
ZFRvCiAgICAgICAgIHJldHVybiBTVkdUcmFuc2Zvcm0odHJhbnNmb3JtLm1hdHJpeCgpICogbV90
cmFuc2Zvcm0pOwogICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFU
RTogewogICAgICAgICBGbG9hdFBvaW50IHRyYW5zbGF0aW9uID0gdHJhbnNmb3JtLnRyYW5zbGF0
ZSgpOwotICAgICAgICB0cmFuc2xhdGlvbiArPSBGbG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbiht
X3RyYW5zZm9ybS5lKCksIG1fdHJhbnNmb3JtLmYoKSk7CisgICAgICAgIHRyYW5zbGF0aW9uICs9
IEdyYXBoaWNzU2l6ZTo6bmFycm93UHJlY2lzaW9uKG1fdHJhbnNmb3JtLmUoKSwgbV90cmFuc2Zv
cm0uZigpKTsKICAgICAgICAgbmV3VHJhbnNmb3JtLnNldFRyYW5zbGF0ZSh0cmFuc2xhdGlvbi54
KCksIHRyYW5zbGF0aW9uLnkoKSk7CiAgICAgICAgIHJldHVybiBuZXdUcmFuc2Zvcm07CiAgICAg
fQogICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1NDQUxFOiB7Ci0gICAgICAg
IEZsb2F0U2l6ZSBzY2FsZSA9IHRyYW5zZm9ybS5zY2FsZSgpOwotICAgICAgICBzY2FsZSArPSBG
bG9hdFNpemU6Om5hcnJvd1ByZWNpc2lvbihtX3RyYW5zZm9ybS5hKCksIG1fdHJhbnNmb3JtLmQo
KSk7CisgICAgICAgIEdyYXBoaWNzU2l6ZSBzY2FsZSA9IHRyYW5zZm9ybS5zY2FsZSgpOworICAg
ICAgICBzY2FsZSArPSBHcmFwaGljc1NpemU6Om5hcnJvd1ByZWNpc2lvbihtX3RyYW5zZm9ybS5h
KCksIG1fdHJhbnNmb3JtLmQoKSk7CiAgICAgICAgIG5ld1RyYW5zZm9ybS5zZXRTY2FsZShzY2Fs
ZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybiBuZXdUcmFuc2Zvcm07
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24g
OTEyMDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRvQ2xpcFBhdGgo
UGF0aCYgcGF0CiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkt
PnJlcG9ydEVycm9yKCJOb3QgYWxsb3dlZCB0byB1c2UgaW5kaXJlY3QgcmVmZXJlbmNlIGluIDxj
bGlwLXBhdGg+Iik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihuKS0+dG9DbGlwUGF0aChwYXRoKTsKLSAgICAg
ICAgICAgIHBhdGgudHJhbnNsYXRlKEZsb2F0U2l6ZSh4KCkudmFsdWUodGhpcyksIHkoKS52YWx1
ZSh0aGlzKSkpOworICAgICAgICAgICAgcGF0aC50cmFuc2xhdGUoR3JhcGhpY3NTaXplKHgoKS52
YWx1ZSh0aGlzKSwgeSgpLnZhbHVlKHRoaXMpKSk7CiAgICAgICAgICAgICBwYXRoLnRyYW5zZm9y
bShhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkpOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4OSwxMSArMTg5LDExIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0
KiBjb24KICAgICBpZiAoY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlcikKICAgICAg
ICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKIAotICAgIEZsb2F0U2l6ZSBz
Y2FsZShkc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkg
LyBzcmNSZWN0LmhlaWdodCgpKTsKKyAgICBHcmFwaGljc1NpemUgc2NhbGUoZHN0UmVjdC53aWR0
aCgpIC8gc3JjUmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQo
KSk7CiAgICAgCiAgICAgLy8gV2UgY2FuIG9ubHkgZHJhdyB0aGUgZW50aXJlIGZyYW1lLCBjbGlw
cGVkIHRvIHRoZSByZWN0IHdlIHdhbnQuIFNvIGNvbXB1dGUgd2hlcmUgdGhlIHRvcCBsZWZ0CiAg
ICAgLy8gb2YgdGhlIGltYWdlIHdvdWxkIGJlIGlmIHdlIHdlcmUgZHJhd2luZyB3aXRob3V0IGNs
aXBwaW5nLCBhbmQgdHJhbnNsYXRlIGFjY29yZGluZ2x5LgotICAgIEZsb2F0U2l6ZSB0b3BMZWZ0
T2Zmc2V0KHNyY1JlY3QubG9jYXRpb24oKS54KCkgKiBzY2FsZS53aWR0aCgpLCBzcmNSZWN0Lmxv
Y2F0aW9uKCkueSgpICogc2NhbGUuaGVpZ2h0KCkpOworICAgIEdyYXBoaWNzU2l6ZSB0b3BMZWZ0
T2Zmc2V0KHNyY1JlY3QubG9jYXRpb24oKS54KCkgKiBzY2FsZS53aWR0aCgpLCBzcmNSZWN0Lmxv
Y2F0aW9uKCkueSgpICogc2NhbGUuaGVpZ2h0KCkpOwogICAgIEZsb2F0UG9pbnQgZGVzdE9mZnNl
dCA9IGRzdFJlY3QubG9jYXRpb24oKSAtIHRvcExlZnRPZmZzZXQ7CiAKICAgICBjb250ZXh0LT50
cmFuc2xhdGUoZGVzdE9mZnNldC54KCksIGRlc3RPZmZzZXQueSgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCShyZXZpc2lvbiA5
MTIwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0jaW5jbHVk
ZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NTaXplLmgiCiAKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5MTIxMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBACisyMDExLTA3LTE4ICBMZXZpIFdlaW50cmF1YiAgPGxl
dml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgRmxvYXRTaXplIHRvIEdyYXBoaWNz
U2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3
NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5h
bWluZyBGbG9hdFNpemUgdG8gR3JhcGhpY3NTaXplIGluIGFudGljaXBhdGlvbiBvZiBhbGxvd2lu
ZyBwb3J0cyB0byB1c2UgNjQgYml0CisgICAgICAgIGZsb2F0cyBpZiB0aGV5IHNvIGNob29zZS4K
KworICAgICAgICBObyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2VzLgorCisgICAgICAg
ICogQ2hhbmdlTG9nLTIwMTEtMDItMTY6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3Jl
SVBDOjo6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJFdmVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVl
bEV2ZW50OjpkZWx0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYldoZWVsRXZlbnQ6OndoZWVsVGlj
a3MpOgorICAgICAgICAqIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmg6CisgICAgICAgICogU2hh
cmVkL1dlYldoZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJXaGVlbEV2ZW50OjpX
ZWJXaGVlbEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudCk6
CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNo
YXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9xdC9XZWJFdmVu
dEZhY3RvcnlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3JlYXRl
V2ViV2hlZWxFdmVudCk6CisgICAgICAgICogU2hhcmVkL3dpbi9XZWJFdmVudEZhY3RvcnkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cGF0aFdpdGhSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRJbmRpY2F0b3I6
OmRyYXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpUaWxlZERyYXdpbmdBcmVhUHJveHk6OnNldEtlZXBBbmRDb3ZlckFy
ZWFNdWx0aXBsaWVycyk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkRHJhd2luZ0FyZWFQcm94eTo6
cGFpbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaDoKKyAg
ICAgICAgKFdlYktpdDo6VGlsZWREcmF3aW5nQXJlYVByb3h5OjpnZXRLZWVwQW5kQ292ZXJBcmVh
TXVsdGlwbGllcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0Ojpjb2FsZXNjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnBhZ2VO
dW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNldFhCdXR0
b25FdmVudEZpZWxkc0J5V2ViV2hlZWxFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdy
YXBoaWNzTGF5ZXI6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXll
cjo6c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJh
d2luZ0FyZWFJbXBsOjpkaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6dXBkYXRl
RmluZEluZGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpkcmF3UmVj
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzY2FsZWRTbmFwc2hvdEluRG9jdW1lbnRDb29yZGluYXRlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1JlY3RUb1BERik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvY2Ev
TGF5ZXJUcmVlSG9zdENBLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdENBOjpz
aXplRGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvVGlsZWREcmF3
aW5nQXJlYVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGlsZWREcmF3aW5nQXJlYTo6cGFpbnRJ
bnRvQml0bWFwKToKKyAgICAgICAgKiBtYWMvV2ViS2l0Mi5vcmRlcjoKKwogMjAxMS0wNy0xOCAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRpbWVyIHNj
aGVkdWxpbmcgc2hvdWxkIGJlIGJhc2VkIG9mZiB0aGUgbW9ub3RvbmljIGNsb2NrCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2
aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTQgKzg0LDE0IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxGbG9hdFJlY3Q+OjpkZWNvZGUoQXIKIH0KIAogCi12b2lkIEFyZ3VtZW50Q29kZXI8Rmxv
YXRTaXplPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRTaXpl
JiBmbG9hdFNpemUpCit2b2lkIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NTaXplPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgR3JhcGhpY3NTaXplJiBmbG9hdFNpemUpCiB7
Ci0gICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFNpemU+OjplbmNvZGUoZW5jb2RlciwgZmxv
YXRTaXplKTsKKyAgICBTaW1wbGVBcmd1bWVudENvZGVyPEdyYXBoaWNzU2l6ZT46OmVuY29kZShl
bmNvZGVyLCBmbG9hdFNpemUpOwogfQogCi1ib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRTaXplPjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgRmxvYXRTaXplJiBmbG9hdFNpemUpCiti
b29sIEFyZ3VtZW50Q29kZXI8R3JhcGhpY3NTaXplPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgR3JhcGhpY3NTaXplJiBmbG9hdFNpemUpCiB7Ci0gICAgcmV0dXJuIFNpbXBsZUFy
Z3VtZW50Q29kZXI8RmxvYXRTaXplPjo6ZGVjb2RlKGRlY29kZXIsIGZsb2F0U2l6ZSk7CisgICAg
cmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8R3JhcGhpY3NTaXplPjo6ZGVjb2RlKGRlY29kZXIs
IGZsb2F0U2l6ZSk7CiB9CiAKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERhdGFiYXNlRGV0YWlsczsKICAg
ICBjbGFzcyBGbG9hdFBvaW50OwogICAgIGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFzcyBGbG9h
dFNpemU7CisgICAgY2xhc3MgR3JhcGhpY3NTaXplOwogICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7
CiAgICAgY2xhc3MgSW50UG9pbnQ7CiAgICAgY2xhc3MgSW50UmVjdDsKQEAgLTkxLDkgKzkxLDkg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogICAgIHN0YXRpYyBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKIH07CiAK
LXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmxvYXRTaXplPiB7Ci0g
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJD
b3JlOjpGbG9hdFNpemUmKTsKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6R3JhcGhpY3NTaXplPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU2l6ZSYpOworICAgIHN0YXRpYyBib29sIGRlY29k
ZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpHcmFwaGljc1NpemUmKTsKIH07CiAKIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SW50UG9pbnQ+IHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJFdmVudC5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAvLyBG
SVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IG1vdmUgdG8gbWFrZWluZyB0aGUgV2ViQ29yZS9QbGF0
Zm9ybUZvb0V2ZW50cyB0cml2aWFsIGNsYXNzZXMgc28gdGhhdAogLy8gd2UgY2FuIHVzZSB0aGVt
IGFzIHRoZSBldmVudCB0eXBlLgogCi0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9p
bnQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTc3LDE1ICsxNzcs
MTUgQEAgcHVibGljOgogCiAgICAgV2ViV2hlZWxFdmVudCgpIHsgfQogCi0gICAgV2ViV2hlZWxF
dmVudChUeXBlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBk
ZWx0YSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiB3aGVlbFRpY2tzLCBHcmFudWxhcml0eSwg
TW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKKyAgICBXZWJXaGVlbEV2ZW50KFR5cGUsIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1NpemUmIGRlbHRhLCBjb25z
dCBXZWJDb3JlOjpHcmFwaGljc1NpemUmIHdoZWVsVGlja3MsIEdyYW51bGFyaXR5LCBNb2RpZmll
cnMsIGRvdWJsZSB0aW1lc3RhbXApOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBXZWJXaGVlbEV2
ZW50KFR5cGUsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGRl
bHRhLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHdoZWVsVGlja3MsIEdyYW51bGFyaXR5LCBQ
aGFzZSBwaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSxib29sIGhhc1ByZWNpc2VTY3JvbGxpbmdE
ZWx0YXMsIE1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCk7CisgICAgV2ViV2hlZWxFdmVudChU
eXBlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTaXplJiBkZWx0
YSwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTaXplJiB3aGVlbFRpY2tzLCBHcmFudWxhcml0eSwg
UGhhc2UsIFBoYXNlIG1vbWVudHVtUGhhc2UsIGJvb2wgaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRh
cywgTW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKICNlbmRpZgogCiAgICAgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAg
ICAgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2dsb2JhbFBvc2l0aW9uOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplIGRlbHRh
KCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YTsgfQotICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSB3aGVlbFRpY2tzKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbFRpY2tzOyB9CisgICAgY29uc3Qg
V2ViQ29yZTo6R3JhcGhpY3NTaXplIGRlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9kZWx0YTsgfQor
ICAgIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU2l6ZSB3aGVlbFRpY2tzKCkgY29uc3QgeyByZXR1
cm4gbV93aGVlbFRpY2tzOyB9CiAgICAgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxHcmFudWxhcml0eT4obV9ncmFudWxhcml0eSk7IH0KICNpZiBQ
TEFURk9STShNQUMpCiAgICAgUGhhc2UgcGhhc2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxQaGFzZT4obV9waGFzZSk7IH0KQEAgLTIwMSw4ICsyMDEsOCBAQCBwcml2YXRlOgogCiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgbV9wb3NpdGlvbjsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX2ds
b2JhbFBvc2l0aW9uOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2RlbHRhOwotICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBtX3doZWVsVGlja3M7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NTaXplIG1f
ZGVsdGE7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NTaXplIG1fd2hlZWxUaWNrczsKICAgICB1aW50
MzJfdCBtX2dyYW51bGFyaXR5OyAvLyBHcmFudWxhcml0eQogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICB1aW50MzJfdCBtX3BoYXNlOyAvLyBQaGFzZQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkxheWVyVHJlZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViTGF5ZXJUcmVlSW5mby5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJMYXllclRyZWVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
ICNpbmNsdWRlICJBcmd1bWVudERlY29kZXIuaCIKICNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIu
aCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNs
dWRlICJHcmFwaGljc1NpemUuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAKQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0IFdlYkxheWVy
SW5mbyB7CiAKICAgICBGbG9hdFBvaW50IHBvczsKICAgICBGbG9hdFBvaW50M0QgYW5jaG9yUG9p
bnQ7Ci0gICAgRmxvYXRTaXplIHNpemU7CisgICAgR3JhcGhpY3NTaXplIHNpemU7CiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNo
aWxkcmVuVHJhbnNmb3JtOwogICAgIEludFJlY3QgY29udGVudHNSZWN0OwpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYldoZWVsRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDcgKzMzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
eyAgICAKIAotV2ViV2hlZWxFdmVudDo6V2ViV2hlZWxFdmVudChUeXBlIHR5cGUsIGNvbnN0IElu
dFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBG
bG9hdFNpemUmIGRlbHRhLCBjb25zdCBGbG9hdFNpemUmIHdoZWVsVGlja3MsIEdyYW51bGFyaXR5
IGdyYW51bGFyaXR5LCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQorV2Vi
V2hlZWxFdmVudDo6V2ViV2hlZWxFdmVudChUeXBlIHR5cGUsIGNvbnN0IEludFBvaW50JiBwb3Np
dGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25zdCBHcmFwaGljc1NpemUm
IGRlbHRhLCBjb25zdCBHcmFwaGljc1NpemUmIHdoZWVsVGlja3MsIEdyYW51bGFyaXR5IGdyYW51
bGFyaXR5LCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQogICAgIDogV2Vi
RXZlbnQodHlwZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApCiAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0
aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKQEAgLTQ5LDcgKzQ5
LDcgQEAgV2ViV2hlZWxFdmVudDo6V2ViV2hlZWxFdmVudChUeXBlIHR5cGUsIAogfQogCiAjaWYg
UExBVEZPUk0oTUFDKQotV2ViV2hlZWxFdmVudDo6V2ViV2hlZWxFdmVudChUeXBlIHR5cGUsIGNv
bnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBj
b25zdCBGbG9hdFNpemUmIGRlbHRhLCBjb25zdCBGbG9hdFNpemUmIHdoZWVsVGlja3MsIEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5LCBQaGFzZSBwaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSwgYm9v
bCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzLCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUg
dGltZXN0YW1wKQorV2ViV2hlZWxFdmVudDo6V2ViV2hlZWxFdmVudChUeXBlIHR5cGUsIGNvbnN0
IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBjb25z
dCBHcmFwaGljc1NpemUmIGRlbHRhLCBjb25zdCBHcmFwaGljc1NpemUmIHdoZWVsVGlja3MsIEdy
YW51bGFyaXR5IGdyYW51bGFyaXR5LCBQaGFzZSBwaGFzZSwgUGhhc2UgbW9tZW50dW1QaGFzZSwg
Ym9vbCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzLCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3Vi
bGUgdGltZXN0YW1wKQogICAgIDogV2ViRXZlbnQodHlwZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXAp
CiAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9i
YWxQb3NpdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0
b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZWZsL1dlYkV2ZW50
RmFjdG9yeS5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL2Vm
bC9XZWJFdmVudEZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsOCArMTUwLDggQEAg
V2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYgogICAgIHJldHVybiBXZWJX
aGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRQ
b2ludChldmVudC0+Y2FudmFzLnggLSBwb3NpdGlvbi0+eCwgZXZlbnQtPmNhbnZhcy55IC0gcG9z
aXRpb24tPnkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KGV2ZW50LT5jYW52
YXMueCwgZXZlbnQtPmNhbnZhcy55KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFNp
emUoZGVsdGFYLCBkZWx0YVkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSh3
aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1kpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBo
aWNzU2l6ZShkZWx0YVgsIGRlbHRhWSksCisgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhp
Y3NTaXplKHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViV2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQtPm1vZGlmaWVycyksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXZlbnQtPnRpbWVzdGFtcCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM5LDE5ICsxMzksMTkgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6
OmNyZWF0ZVdlYgogICAgIGdka19ldmVudF9nZXRfY29vcmRzKGV2ZW50LCAmeCwgJnkpOwogICAg
IGdka19ldmVudF9nZXRfcm9vdF9jb29yZHMoZXZlbnQsICZ4Um9vdCwgJnlSb290KTsKIAotICAg
IEZsb2F0U2l6ZSB3aGVlbFRpY2tzOworICAgIEdyYXBoaWNzU2l6ZSB3aGVlbFRpY2tzOwogICAg
IHN3aXRjaCAoZXZlbnQtPnNjcm9sbC5kaXJlY3Rpb24pIHsKICAgICBjYXNlIEdES19TQ1JPTExf
VVA6Ci0gICAgICAgIHdoZWVsVGlja3MgPSBGbG9hdFNpemUoMCwgMSk7CisgICAgICAgIHdoZWVs
VGlja3MgPSBHcmFwaGljc1NpemUoMCwgMSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR0RL
X1NDUk9MTF9ET1dOOgotICAgICAgICB3aGVlbFRpY2tzID0gRmxvYXRTaXplKDAsIC0xKTsKKyAg
ICAgICAgd2hlZWxUaWNrcyA9IEdyYXBoaWNzU2l6ZSgwLCAtMSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgR0RLX1NDUk9MTF9MRUZUOgotICAgICAgICB3aGVlbFRpY2tzID0gRmxvYXRTaXpl
KDEsIDApOworICAgICAgICB3aGVlbFRpY2tzID0gR3JhcGhpY3NTaXplKDEsIDApOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEdES19TQ1JPTExfUklHSFQ6Ci0gICAgICAgIHdoZWVsVGlja3Mg
PSBGbG9hdFNpemUoLTEsIDApOworICAgICAgICB3aGVlbFRpY2tzID0gR3JhcGhpY3NTaXplKC0x
LCAwKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rv
cnk6OmNyZWF0ZVdlYgogICAgIC8vIEZJWE1FOiBbR1RLXSBBZGQgYSBzZXR0aW5nIHRvIGNoYW5n
ZSB0aGUgcGl4ZWxzIHBlciBsaW5lIHVzZWQgZm9yIHNjcm9sbGluZwogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDgyNgogICAgIGZsb2F0IHN0ZXAgPSBz
dGF0aWNfY2FzdDxmbG9hdD4oU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpKTsKLSAgICBG
bG9hdFNpemUgZGVsdGEod2hlZWxUaWNrcy53aWR0aCgpICogc3RlcCwgd2hlZWxUaWNrcy5oZWln
aHQoKSAqIHN0ZXApOworICAgIEdyYXBoaWNzU2l6ZSBkZWx0YSh3aGVlbFRpY2tzLndpZHRoKCkg
KiBzdGVwLCB3aGVlbFRpY2tzLmhlaWdodCgpICogc3RlcCk7CiAKICAgICByZXR1cm4gV2ViV2hl
ZWxFdmVudChXZWJFdmVudDo6V2hlZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UG9p
bnQoeCwgeSksCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9y
eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50RmFj
dG9yeS5tbQkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dl
YkV2ZW50RmFjdG9yeS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgV2Vi
V2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYgogICAgIFdlYkV2ZW50OjpNb2Rp
ZmllcnMgbW9kaWZpZXJzICAgICAgICAgICA9IG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50KTsKICAg
ICBkb3VibGUgdGltZXN0YW1wICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgdGltZXN0
YW1wXTsKICAgICAKLSAgICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIElu
dFBvaW50KHBvc2l0aW9uKSwgSW50UG9pbnQoZ2xvYmFsUG9zaXRpb24pLCBGbG9hdFNpemUoZGVs
dGFYLCBkZWx0YVkpLCBGbG9hdFNpemUod2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwgZ3JhbnVs
YXJpdHksIHBoYXNlLCBtb21lbnR1bVBoYXNlLCBoYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzLCBt
b2RpZmllcnMsIHRpbWVzdGFtcCk7CisgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoV2ViRXZlbnQ6
OldoZWVsLCBJbnRQb2ludChwb3NpdGlvbiksIEludFBvaW50KGdsb2JhbFBvc2l0aW9uKSwgR3Jh
cGhpY3NTaXplKGRlbHRhWCwgZGVsdGFZKSwgR3JhcGhpY3NTaXplKHdoZWVsVGlja3NYLCB3aGVl
bFRpY2tzWSksIGdyYW51bGFyaXR5LCBwaGFzZSwgbW9tZW50dW1QaGFzZSwgaGFzUHJlY2lzZVNj
cm9sbGluZ0RlbHRhcywgbW9kaWZpZXJzLCB0aW1lc3RhbXApOwogfQogCiBXZWJLZXlib2FyZEV2
ZW50IFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpldmVu
dCwgTlNWaWV3ICopCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvV2ViRXZlbnRGYWN0
b3J5UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9xdC9XZWJFdmVu
dEZhY3RvcnlRdC5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L3F0L1dlYkV2ZW50RmFjdG9yeVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3
IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWIKICAgICBkZWx0YVgg
Kj0gKGZ1bGxUaWNrKSA/IFFBcHBsaWNhdGlvbjo6d2hlZWxTY3JvbGxMaW5lcygpICogY0RlZmF1
bHRRdFNjcm9sbFN0ZXAgOiAxOwogICAgIGRlbHRhWSAqPSAoZnVsbFRpY2spID8gUUFwcGxpY2F0
aW9uOjp3aGVlbFNjcm9sbExpbmVzKCkgKiBjRGVmYXVsdFF0U2Nyb2xsU3RlcCA6IDE7CiAKLSAg
ICByZXR1cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGUtPnBvcygpLnRvUG9pbnQo
KSwgZS0+c2NyZWVuUG9zKCksIEZsb2F0U2l6ZShkZWx0YVgsIGRlbHRhWSksIEZsb2F0U2l6ZSh3
aGVlbFRpY2tzWCwgd2hlZWxUaWNrc1kpLCBncmFudWxhcml0eSwgbW9kaWZpZXJzLCB0aW1lc3Rh
bXApOworICAgIHJldHVybiBXZWJXaGVlbEV2ZW50KFdlYkV2ZW50OjpXaGVlbCwgZS0+cG9zKCku
dG9Qb2ludCgpLCBlLT5zY3JlZW5Qb3MoKSwgR3JhcGhpY3NTaXplKGRlbHRhWCwgZGVsdGFZKSwg
R3JhcGhpY3NTaXplKHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSksIGdyYW51bGFyaXR5LCBtb2Rp
ZmllcnMsIHRpbWVzdGFtcCk7CiB9CiAKIFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KFFLZXlFdmVudCogZXZlbnQpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvd2luL1dlYkV2ZW50RmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL3dpbi9XZWJFdmVudEZhY3RvcnkuY3BwCShyZXZpc2lvbiA5MTIw
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC93aW4vV2ViRXZlbnRGYWN0b3J5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQwLDcgKzQ0MCw3IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0
b3J5OjpjcmVhdGVXZWIKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXZWJXaGVlbEV2
ZW50KFdlYkV2ZW50OjpXaGVlbCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBGbG9hdFNpemUo
ZGVsdGFYLCBkZWx0YVkpLCBGbG9hdFNpemUod2hlZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwgZ3Jh
bnVsYXJpdHksIG1vZGlmaWVycywgdGltZXN0YW1wKTsKKyAgICByZXR1cm4gV2ViV2hlZWxFdmVu
dChXZWJFdmVudDo6V2hlZWwsIHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgR3JhcGhpY3NTaXpl
KGRlbHRhWCwgZGVsdGFZKSwgR3JhcGhpY3NTaXplKHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSks
IGdyYW51bGFyaXR5LCBtb2RpZmllcnMsIHRpbWVzdGFtcCk7CiB9CiAKIFdlYktleWJvYXJkRXZl
bnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KEhXTkQgaHduZCwgVUlO
VCBtZXNzYWdlLCBXUEFSQU0gd3BhcmFtLCBMUEFSQU0gbHBhcmFtKQpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0ZpbmRJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9GaW5kSW5kaWNhdG9yLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzOCw3ICsxMzgsNyBAQCBzdGF0aWMgQ29sb3IgZ3JhZGllbnREYXJrQ29sb3IoKQogc3Rh
dGljIFBhdGggcGF0aFdpdGhSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHBhdGhSZWN0LCBm
bG9hdCByYWRpdXMpCiB7CiAgICAgUGF0aCBwYXRoOwotICAgIHBhdGguYWRkUm91bmRlZFJlY3Qo
cGF0aFJlY3QsIEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1cykpOworICAgIHBhdGguYWRkUm91bmRl
ZFJlY3QocGF0aFJlY3QsIEdyYXBoaWNzU2l6ZShyYWRpdXMsIHJhZGl1cykpOwogCiAgICAgcmV0
dXJuIHBhdGg7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBGaW5kSW5kaWNhdG9yOjpkcmF3
KEdyYXBoaWNzQ29udGV4dAogCiAgICAgICAgIHsKICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4
dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwotICAgICAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldFNoYWRvdyhGbG9hdFNpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zm
c2V0WSksIHNoYWRvd0JsdXJSYWRpdXMsIHNoYWRvd0NvbG9yKCksIENvbG9yU3BhY2VTUkdCKTsK
KyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3coR3JhcGhpY3NTaXplKHNoYWRv
d09mZnNldFgsIHNoYWRvd09mZnNldFkpLCBzaGFkb3dCbHVyUmFkaXVzLCBzaGFkb3dDb2xvcigp
LCBDb2xvclNwYWNlU1JHQik7CiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0RmlsbENv
bG9yKGxpZ2h0Qm9yZGVyQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQuZmlsbFBhdGgocGF0aFdpdGhSb3VuZGVkUmVjdChvdXRlclBhdGhS
ZWN0LCBjb3JuZXJSYWRpdXMpKTsKICAgICAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQg
RmluZEluZGljYXRvcjo6ZHJhdyhHcmFwaGljc0NvbnRleHQKIAogICAgICAgICB7CiAgICAgICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0
KTsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoRmxvYXRTaXplKHJvdW5k
ZihsZWZ0Qm9yZGVyVGhpY2tuZXNzKSwgcm91bmRmKHRvcEJvcmRlclRoaWNrbmVzcykpKTsKKyAg
ICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC50cmFuc2xhdGUoR3JhcGhpY3NTaXplKHJvdW5kZihs
ZWZ0Qm9yZGVyVGhpY2tuZXNzKSwgcm91bmRmKHRvcEJvcmRlclRoaWNrbmVzcykpKTsKICAgICAg
ICAgICAgIG1fY29udGVudEltYWdlLT5wYWludChncmFwaGljc0NvbnRleHQsIG1fY29udGVudElt
YWdlU2NhbGVGYWN0b3IsIEludFBvaW50KDAsIDApLCBtX2NvbnRlbnRJbWFnZS0+Ym91bmRzKCkp
OwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1RpbGVk
RHJhd2luZ0FyZWFQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1RpbGVkRHJhd2luZ0FyZWFQcm94eS5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1RpbGVkRHJhd2luZ0FyZWFQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFRpbGVkRHJhd2luZ0FyZWFQcm94eTo6c2V0VGls
ZUNyZWF0CiAgICAgbV90aWxlQ3JlYXRpb25EZWxheSA9IGRlbGF5OwogfQogCi12b2lkIFRpbGVk
RHJhd2luZ0FyZWFQcm94eTo6c2V0S2VlcEFuZENvdmVyQXJlYU11bHRpcGxpZXJzKGNvbnN0IEZs
b2F0U2l6ZSYga2VlcE11bHRpcGxpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgY292ZXJNdWx0aXBsaWVy
KQordm9pZCBUaWxlZERyYXdpbmdBcmVhUHJveHk6OnNldEtlZXBBbmRDb3ZlckFyZWFNdWx0aXBs
aWVycyhjb25zdCBHcmFwaGljc1NpemUmIGtlZXBNdWx0aXBsaWVyLCBjb25zdCBHcmFwaGljc1Np
emUmIGNvdmVyTXVsdGlwbGllcikKIHsKICAgICBtX2tlZXBBcmVhTXVsdGlwbGllciA9IGtlZXBN
dWx0aXBsaWVyOwogICAgIG1fY292ZXJBcmVhTXVsdGlwbGllciA9IGNvdmVyTXVsdGlwbGllcjsK
QEAgLTI3MCw3ICsyNzAsNyBAQCBib29sIFRpbGVkRHJhd2luZ0FyZWFQcm94eTo6cGFpbnQoY29u
c3QgCiAKICAgICAvLyBBc3N1bWVzIHRoZSBiYWNraW5nIHN0b3JlIGlzIHBhaW50ZWQgd2l0aCB0
aGUgc2NhbGUgdHJhbnNmb3JtIGFwcGxpZWQuCiAgICAgLy8gU2luY2UgdGlsZSBjb250ZW50IGlz
IGFscmVhZHkgc2NhbGVkLCBmaXJzdCByZXZlcnQgdGhlIHNjYWxpbmcgZnJvbSB0aGUgcGFpbnRl
ci4KLSAgICBnYy5zY2FsZShGbG9hdFNpemUoMSAvIG1fY29udGVudHNTY2FsZSwgMSAvIG1fY29u
dGVudHNTY2FsZSkpOworICAgIGdjLnNjYWxlKEdyYXBoaWNzU2l6ZSgxIC8gbV9jb250ZW50c1Nj
YWxlLCAxIC8gbV9jb250ZW50c1NjYWxlKSk7CiAKICAgICBJbnRSZWN0IGRpcnR5UmVjdCA9IG1h
cEZyb21Db250ZW50cyhyZWN0KTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Rp
bGVkRHJhd2luZ0FyZWFQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuaAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTg1LDEyICs4NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUaWxlQ3JlYXRpb25EZWxh
eShkb3VibGUgZGVsYXkpOwogCiAgICAgLy8gVGlsZWQgYXJlIGRyb3BwZWQgb3V0c2lkZSB0aGUg
a2VlcCBhcmVhLCBhbmQgY3JlYXRlZCBmb3IgY292ZXIgYXJlYS4gVGhlIHZhbHVlcyBhIHJlbGF0
aXZlIHRvIHRoZSB2aWV3cG9ydCBzaXplLgotICAgIHZvaWQgZ2V0S2VlcEFuZENvdmVyQXJlYU11
bHRpcGxpZXJzKFdlYkNvcmU6OkZsb2F0U2l6ZSYga2VlcE11bHRpcGxpZXIsIFdlYkNvcmU6OkZs
b2F0U2l6ZSYgY292ZXJNdWx0aXBsaWVyKQorICAgIHZvaWQgZ2V0S2VlcEFuZENvdmVyQXJlYU11
bHRpcGxpZXJzKFdlYkNvcmU6OkdyYXBoaWNzU2l6ZSYga2VlcE11bHRpcGxpZXIsIFdlYkNvcmU6
OkdyYXBoaWNzU2l6ZSYgY292ZXJNdWx0aXBsaWVyKQogICAgIHsKICAgICAgICAga2VlcE11bHRp
cGxpZXIgPSBtX2tlZXBBcmVhTXVsdGlwbGllcjsKICAgICAgICAgY292ZXJNdWx0aXBsaWVyID0g
bV9jb3ZlckFyZWFNdWx0aXBsaWVyOwogICAgIH0KLSAgICB2b2lkIHNldEtlZXBBbmRDb3ZlckFy
ZWFNdWx0aXBsaWVycyhjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGtlZXBNdWx0aXBsaWVyLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGNvdmVyTXVsdGlwbGllcik7CisgICAgdm9pZCBzZXRL
ZWVwQW5kQ292ZXJBcmVhTXVsdGlwbGllcnMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTaXplJiBr
ZWVwTXVsdGlwbGllciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTaXplJiBjb3Zlck11bHRpcGxp
ZXIpOwogCiAgICAgdm9pZCB0aWxlQnVmZmVyVXBkYXRlQ29tcGxldGUoKTsKIApAQCAtMTY0LDgg
KzE2NCw4IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fdGlsZVNpemU7CiAg
ICAgZG91YmxlIG1fdGlsZUNyZWF0aW9uRGVsYXk7Ci0gICAgV2ViQ29yZTo6RmxvYXRTaXplIG1f
a2VlcEFyZWFNdWx0aXBsaWVyOwotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBtX2NvdmVyQXJlYU11
bHRpcGxpZXI7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NTaXplIG1fa2VlcEFyZWFNdWx0aXBsaWVy
OworICAgIFdlYkNvcmU6OkdyYXBoaWNzU2l6ZSBtX2NvdmVyQXJlYU11bHRpcGxpZXI7CiAKICAg
ICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNvbnRlbnRSZWN0OwogICAgIGZsb2F0IG1fY29u
dGVudHNTY2FsZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjk1LDggKzI2OTUsOCBAQCBzdGF0aWMgV2Vi
V2hlZWxFdmVudCBjb2FsZXNjZShjb25zdCBXZWJXCiB7CiAgICAgQVNTRVJUKGNhbkNvYWxlc2Nl
KGEsIGIpKTsKIAotICAgIEZsb2F0U2l6ZSBtZXJnZWREZWx0YSA9IGEuZGVsdGEoKSArIGIuZGVs
dGEoKTsKLSAgICBGbG9hdFNpemUgbWVyZ2VkV2hlZWxUaWNrcyA9IGEud2hlZWxUaWNrcygpICsg
Yi53aGVlbFRpY2tzKCk7CisgICAgR3JhcGhpY3NTaXplIG1lcmdlZERlbHRhID0gYS5kZWx0YSgp
ICsgYi5kZWx0YSgpOworICAgIEdyYXBoaWNzU2l6ZSBtZXJnZWRXaGVlbFRpY2tzID0gYS53aGVl
bFRpY2tzKCkgKyBiLndoZWVsVGlja3MoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICByZXR1
cm4gV2ViV2hlZWxFdmVudChXZWJFdmVudDo6V2hlZWwsIGIucG9zaXRpb24oKSwgYi5nbG9iYWxQ
b3NpdGlvbigpLCBtZXJnZWREZWx0YSwgbWVyZ2VkV2hlZWxUaWNrcywgYi5ncmFudWxhcml0eSgp
LCBiLnBoYXNlKCksIGIubW9tZW50dW1QaGFzZSgpLCBiLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0
YXMoKSwgYi5tb2RpZmllcnMoKSwgYi50aW1lc3RhbXAoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcg
KzE5Myw3IEBAIGludCBJbmplY3RlZEJ1bmRsZTo6bnVtYmVyT2ZQYWdlcyhXZWJGcmEKICAgICBp
ZiAoIXBhZ2VIZWlnaHRJblBpeGVscykKICAgICAgICAgcGFnZUhlaWdodEluUGl4ZWxzID0gY29y
ZUZyYW1lLT52aWV3KCktPmhlaWdodCgpOwogCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVt
YmVyT2ZQYWdlcyhjb3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhl
aWdodEluUGl4ZWxzKSk7CisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhj
b3JlRnJhbWUsIEdyYXBoaWNzU2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4
ZWxzKSk7CiB9CiAKIGludCBJbmplY3RlZEJ1bmRsZTo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlk
KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBpZCwgZG91YmxlIHBhZ2VXaWR0aEluUGl4
ZWxzLCBkb3VibGUgcGFnZUhlaWdodEluUGl4ZWxzKQpAQCAtMjExLDcgKzIxMSw3IEBAIGludCBJ
bmplY3RlZEJ1bmRsZTo6cGFnZU51bWJlckZvckVsZW1lbnQKICAgICBpZiAoIXBhZ2VIZWlnaHRJ
blBpeGVscykKICAgICAgICAgcGFnZUhlaWdodEluUGl4ZWxzID0gY29yZUZyYW1lLT52aWV3KCkt
PmhlaWdodCgpOwogCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1l
bnQoZWxlbWVudCwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhl
bHMpKTsKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChlbGVt
ZW50LCBHcmFwaGljc1NpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykp
OwogfQogCiBTdHJpbmcgSW5qZWN0ZWRCdW5kbGU6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxz
KFdlYkZyYW1lKiBmcmFtZSwgaW50IHBhZ2VJbmRleCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBp
bnQgbWFyZ2luVG9wLCBpbnQgbWFyZ2luUmlnaHQsIGludCBtYXJnaW5Cb3R0b20sIGludCBtYXJn
aW5MZWZ0KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAJKHJl
dmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OCw3ICsz
NzgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0WEJ1dHRvbkV2ZW50RmllbGRzCiAgICAgc2V0
Q29tbW9uTW91c2VFdmVudEZpZWxkcyh4QnV0dG9uLCB3ZWJFdmVudCwgcGx1Z2luTG9jYXRpb24p
OwogCiAgICAgeEJ1dHRvbi50eXBlID0gQnV0dG9uUHJlc3M7Ci0gICAgRmxvYXRTaXplIHRpY2tz
ID0gd2ViRXZlbnQud2hlZWxUaWNrcygpOworICAgIEdyYXBoaWNzU2l6ZSB0aWNrcyA9IHdlYkV2
ZW50LndoZWVsVGlja3MoKTsKICAgICBpZiAodGlja3MuaGVpZ2h0KCkpIHsKICAgICAgICAgaWYg
KHRpY2tzLmhlaWdodCgpID4gMCkKICAgICAgICAgICAgIHhCdXR0b24uYnV0dG9uID0gNDsgLy8g
dXAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3Jh
cGhpY3NMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVyLmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBXZWJHcmFwaGljc0xh
eWVyOjpzZXRBbmNob3JQb2ludChjbwogICAgIG5vdGlmeUNoYW5nZSgpOwogfQogCi12b2lkIFdl
YkdyYXBoaWNzTGF5ZXI6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQordm9pZCBXZWJH
cmFwaGljc0xheWVyOjpzZXRTaXplKGNvbnN0IEdyYXBoaWNzU2l6ZSYgc2l6ZSkKIHsKICAgICBp
ZiAodGhpcy0+c2l6ZSgpID09IHNpemUpCiAgICAgICAgIHJldHVybjsKQEAgLTM4Myw3ICszODMs
NyBAQCB2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21wb3NpdGluZ1N0CiAgICAgbV9sYXll
ckluZm8ucG9zID0gcG9zaXRpb24oKTsKICAgICBtX2xheWVySW5mby5wcmVzZXJ2ZXMzRCA9IHBy
ZXNlcnZlczNEKCk7CiAgICAgbV9sYXllckluZm8ucmVwbGljYSA9IHRvV2ViTGF5ZXJJRChyZXBs
aWNhTGF5ZXIoKSk7Ci0gICAgbV9sYXllckluZm8uc2l6ZSA9IEZsb2F0U2l6ZShzaXplKCkud2lk
dGgoKSAqIG1fY29udGVudFNjYWxlLCBzaXplKCkuaGVpZ2h0KCkgKiBtX2NvbnRlbnRTY2FsZSk7
CisgICAgbV9sYXllckluZm8uc2l6ZSA9IEdyYXBoaWNzU2l6ZShzaXplKCkud2lkdGgoKSAqIG1f
Y29udGVudFNjYWxlLCBzaXplKCkuaGVpZ2h0KCkgKiBtX2NvbnRlbnRTY2FsZSk7CiAgICAgbV9s
YXllckluZm8udHJhbnNmb3JtID0gdHJhbnNmb3JtKCk7CiAgICAgbV9jb250ZW50TmVlZHNEaXNw
bGF5ID0gZmFsc2U7CiAgICAgbV9sYXllckluZm8uY2hpbGRyZW4uY2xlYXIoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsK
ICAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICB2b2lkIHNldEFu
Y2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYpOwotICAgIHZvaWQgc2V0U2l6ZShjb25zdCBG
bG9hdFNpemUmKTsKKyAgICB2b2lkIHNldFNpemUoY29uc3QgR3JhcGhpY3NTaXplJik7CiAgICAg
dm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAgICB2b2lk
IHNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAg
dm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCShyZXZpc2lvbiA5MTIw
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDQsNyArNjQ0LDcgQEAgdm9pZCBEcmF3aW5nQXJlYUlt
cGw6OmRpc3BsYXkoVXBkYXRlSW5mbwogICAgIG1fc2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSgpOwog
CiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3JhcGhpY3NDb250ZXh0ID0gY3JlYXRlR3Jh
cGhpY3NDb250ZXh0KGJpdG1hcC5nZXQoKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShG
bG9hdFNpemUobV93ZWJQYWdlLT51c2VyU3BhY2VTY2FsZUZhY3RvcigpLCBtX3dlYlBhZ2UtPnVz
ZXJTcGFjZVNjYWxlRmFjdG9yKCkpKTsKKyAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEdyYXBo
aWNzU2l6ZShtX3dlYlBhZ2UtPnVzZXJTcGFjZVNjYWxlRmFjdG9yKCksIG1fd2ViUGFnZS0+dXNl
clNwYWNlU2NhbGVGYWN0b3IoKSkpOwogCiAgICAgdXBkYXRlSW5mby51cGRhdGVSZWN0Qm91bmRz
ID0gYm91bmRzOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTg1LDcgKzE4NSw3IEBAIGJvb2wgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRJbmRp
Y2F0b3IKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIE93blB0cjxHcmFwaGljc0Nv
bnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IGZpbmRJbmRpY2F0b3JUZXh0QmFja2luZ1N0b3JlLT5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKLSAgICBncmFwaGljc0NvbnRleHQtPnNjYWxlKEZsb2F0
U2l6ZShtX3dlYlBhZ2UtPnVzZXJTcGFjZVNjYWxlRmFjdG9yKCksIG1fd2ViUGFnZS0+dXNlclNw
YWNlU2NhbGVGYWN0b3IoKSkpOworICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoR3JhcGhpY3NT
aXplKG1fd2ViUGFnZS0+dXNlclNwYWNlU2NhbGVGYWN0b3IoKSwgbV93ZWJQYWdlLT51c2VyU3Bh
Y2VTY2FsZUZhY3RvcigpKSk7CiAKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IHNlbGVjdGlvblJl
Y3Q7CiAgICAgcGFpbnRSZWN0Lm1vdmUoc2VsZWN0ZWRGcmFtZS0+dmlldygpLT5mcmFtZVJlY3Qo
KS54KCksIHNlbGVjdGVkRnJhbWUtPnZpZXcoKS0+ZnJhbWVSZWN0KCkueSgpKTsKQEAgLTMxNiw3
ICszMTYsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpkcmF3UmVjdChQYWdlT3ZlcmxhCiAgICAg
ewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3ND
b250ZXh0KTsKIAotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6ZShz
aGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZKSwgc2hhZG93Qmx1clJhZGl1cywgaG9sZVNoYWRv
d0NvbG9yKGZyYWN0aW9uRmFkZWRJbiksIENvbG9yU3BhY2VTUkdCKTsKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LnNldFNoYWRvdyhHcmFwaGljc1NpemUoc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zm
c2V0WSksIHNoYWRvd0JsdXJSYWRpdXMsIGhvbGVTaGFkb3dDb2xvcihmcmFjdGlvbkZhZGVkSW4p
LCBDb2xvclNwYWNlU1JHQik7CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3Io
aG9sZUZpbGxDb2xvcihmcmFjdGlvbkZhZGVkSW4pLCBDb2xvclNwYWNlU1JHQik7CiAKICAgICAg
ICAgLy8gRHJhdyB3aGl0ZSBmcmFtZXMgYXJvdW5kIHRoZSBob2xlcy4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDkxMjAw
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MTQsNyArOTE0LDcgQEAgUGFzc1JlZlB0cjxXZWJJbWFnZT4gV2ViUGFn
ZTo6c2NhbGVkU25hcAogICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOwogICAgIAogICAgIGlm
IChzY2FsZSkKLSAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoc2NhbGVG
YWN0b3IsIHNjYWxlRmFjdG9yKSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2NhbGUoR3Jh
cGhpY3NTaXplKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3RvcikpOwogICAgIAogICAgIGdyYXBoaWNz
Q29udGV4dC0+dHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKICAgICBmcmFtZVZpZXct
PnBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LmdldCgpLCByZWN0KTsKQEAgLTIzMDksNyAr
MjMwOSw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWkKIAogICAg
IGlmIChtX3ByaW50Q29udGV4dCkgewogICAgICAgICByZXN1bHRQYWdlUmVjdHMgPSBtX3ByaW50
Q29udGV4dC0+cGFnZVJlY3RzKCk7Ci0gICAgICAgIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQ
cmludGluZyA9IG1fcHJpbnRDb250ZXh0LT5jb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3IoRmxv
YXRTaXplKHByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoLCBwcmludEluZm8uYXZhaWxhYmxl
UGFwZXJIZWlnaHQpKSAqIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvcjsKKyAgICAgICAg
cmVzdWx0VG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nID0gbV9wcmludENvbnRleHQtPmNvbXB1
dGVBdXRvbWF0aWNTY2FsZUZhY3RvcihHcmFwaGljc1NpemUocHJpbnRJbmZvLmF2YWlsYWJsZVBh
cGVyV2lkdGgsIHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCkpICogcHJpbnRJbmZvLnBh
Z2VTZXR1cFNjYWxlRmFjdG9yOwogICAgIH0KIAogICAgIC8vIElmIHdlJ3JlIGFza2VkIHRvIHBy
aW50LCB3ZSBzaG91bGQgYWN0dWFsbHkgcHJpbnQgYXQgbGVhc3QgYSBibGFuayBwYWdlLgpAQCAt
MjM0MCw3ICsyMzQwLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRvUERGKHVpbnQ2NF90IGZy
YQogICAgICAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UoY29udGV4dC5nZXQoKSwgcGFnZUluZm8u
Z2V0KCkpOwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjdHgoY29udGV4dC5nZXQoKSk7Ci0g
ICAgICAgIGN0eC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgY3R4LnNjYWxlKEdy
YXBoaWNzU2l6ZSgxLCAtMSkpOwogICAgICAgICBjdHgudHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdo
dCgpKTsKICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdChjdHgsIHJlY3QpOwogCkBA
IC0yMzc2LDcgKzIzNzYsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKHVpbnQ2NF90
IGZyCiAgICAgICAgICAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UoY29udGV4dC5nZXQoKSwgcGFn
ZUluZm8uZ2V0KCkpOwogCiAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQgY3R4KGNvbnRleHQu
Z2V0KCkpOwotICAgICAgICAgICAgY3R4LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgICAg
ICAgICAgY3R4LnNjYWxlKEdyYXBoaWNzU2l6ZSgxLCAtMSkpOwogICAgICAgICAgICAgY3R4LnRy
YW5zbGF0ZSgwLCAtbV9wcmludENvbnRleHQtPnBhZ2VSZWN0KHBhZ2UpLmhlaWdodCgpKTsKICAg
ICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFBhZ2UoY3R4LCBwYWdlLCBtX3ByaW50Q29u
dGV4dC0+cGFnZVJlY3QocGFnZSkud2lkdGgoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS9MYXllclRyZWVIb3N0Q0EuY3BwCShy
ZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9jYS9M
YXllclRyZWVIb3N0Q0EuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9p
ZCBMYXllclRyZWVIb3N0Q0E6OnNpemVEaWRDaGFuZ2UoY29ucwogCiAgICAgLy8gSWYgdGhlIG5l
d1NpemUgZXhwb3NlcyBuZXcgYXJlYXMgb2YgdGhlIG5vbi1jb21wb3NpdGVkIGNvbnRlbnQgYSBz
ZXROZWVkc0Rpc3BsYXkgaXMgbmVlZGVkCiAgICAgLy8gZm9yIHRob3NlIG5ld2x5IGV4cG9zZWQg
YXJlYXMuCi0gICAgRmxvYXRTaXplIG9sZFNpemUgPSBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5
ZXItPnNpemUoKTsKKyAgICBHcmFwaGljc1NpemUgb2xkU2l6ZSA9IG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRMYXllci0+c2l6ZSgpOwogICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0
U2l6ZShuZXdTaXplKTsKIAogICAgIGlmIChuZXdTaXplLndpZHRoKCkgPiBvbGRTaXplLndpZHRo
KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9UaWxlZERy
YXdpbmdBcmVhUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9xdC9UaWxlZERyYXdpbmdBcmVhUXQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9UaWxlZERyYXdpbmdBcmVhUXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgVGlsZWREcmF3aW5nQXJlYTo6
cGFpbnRJbnRvQml0bWFwKFMKIHsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0PiBncmFwaGlj
c0NvbnRleHQoYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKSk7CiAgICAgZ3JhcGhpY3ND
b250ZXh0LT50cmFuc2xhdGUoLXRpbGVSZWN0LngoKSwgLXRpbGVSZWN0LnkoKSk7Ci0gICAgZ3Jh
cGhpY3NDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoc2NhbGUsIHNjYWxlKSk7CisgICAgZ3JhcGhp
Y3NDb250ZXh0LT5zY2FsZShHcmFwaGljc1NpemUoc2NhbGUsIHNjYWxlKSk7CiAgICAgSW50UmVj
dCBjb250ZW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KHRpbGVSZWN0LngoKSAv
IHNjYWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aWxlUmVjdC55KCkgLyBzY2FsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSAvIHNjYWxlLApJbmRleDog
U291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvbWFjL1dlYktpdDIub3JkZXIJKHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktp
dDIvbWFjL1dlYktpdDIub3JkZXIJKHdvcmtpbmcgY29weSkKQEAgLTE0NzksNyArMTQ3OSw3IEBA
IF9XS1BhZ2VIYXNIb3Jpem9udGFsU2Nyb2xsYmFyCiBfX1pONldlYktpdDE5TmF0aXZlV2ViV2hl
ZWxFdmVudEMxRVA3TlNFdmVudFA2TlNWaWV3CiBfX1pONldlYktpdDE1V2ViRXZlbnRGYWN0b3J5
MTljcmVhdGVXZWJXaGVlbEV2ZW50RVA3TlNFdmVudFA2TlNWaWV3CiBfV0tHZXRXaGVlbEV2ZW50
RGVsdGFzCi1fX1pONldlYktpdDEzV2ViV2hlZWxFdmVudEMxRU5TXzhXZWJFdmVudDRUeXBlRVJL
TjdXZWJDb3JlOEludFBvaW50RVM2X1JLTlMzXzlGbG9hdFNpemVFUzlfTlMwXzExR3JhbnVsYXJp
dHlFTlMwXzVQaGFzZUVTQl9iTlMxXzlNb2RpZmllcnNFZAorX19aTjZXZWJLaXQxM1dlYldoZWVs
RXZlbnRDMUVOU184V2ViRXZlbnQ0VHlwZUVSS043V2ViQ29yZThJbnRQb2ludEVTNl9SS05TM185
R3JhcGhpY3NTaXplRVM5X05TMF8xMUdyYW51bGFyaXR5RU5TMF81UGhhc2VFU0JfYk5TMV85TW9k
aWZpZXJzRWQKIF9fWk42V2ViS2l0MTJXZWJQYWdlUHJveHkxNmhhbmRsZVdoZWVsRXZlbnRFUktO
U18xOU5hdGl2ZVdlYldoZWVsRXZlbnRFCiBfX1pOM1dURjZWZWN0b3JJTjZXZWJLaXQxOU5hdGl2
ZVdlYldoZWVsRXZlbnRFTG0wRUUxNGV4cGFuZENhcGFjaXR5RW1QS1MyXwogX19aTjNXVEY2VmVj
dG9ySU42V2ViS2l0MTlOYXRpdmVXZWJXaGVlbEV2ZW50RUxtMEVFMTVyZXNlcnZlQ2FwYWNpdHlF
bQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMjExKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
NSBAQAorMjAxMS0wNy0xOCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmVuYW1lIEZsb2F0U2l6ZSB0byBHcmFwaGljc1NpemUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzU0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1pbmcgRmxvYXRTaXplIHRvIEdy
YXBoaWNzU2l6ZSBpbiBhbnRpY2lwYXRpb24gb2YgYWxsb3dpbmcgcG9ydHMgdG8gdXNlIDY0IGJp
dAorICAgICAgICBmbG9hdHMgaWYgdGhleSBzbyBjaG9vc2UuCisKKyAgICAgICAgTm8gdGVzdHMs
IG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4KKworICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVQcmludENvbnRleHQ6OnNwb29sUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToK
KyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMpOgorICAgICAgICAqIHRlc3RzL0RyYWdJbWFn
ZVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvVHJh
bnNwYXJlbmN5V2luVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMS0w
Ny0xOCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRp
bWVyIHNjaGVkdWxpbmcgc2hvdWxkIGJlIGJhc2VkIG9mZiB0aGUgbW9ub3RvbmljIGNsb2NrCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlz
aW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDcgKzM1NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBj
dHguc2F2ZSgpOwogI2lmIE9TKFVOSVgpICYmICFPUyhEQVJXSU4pCi0gICAgICAgIGN0eC5zY2Fs
ZShXZWJDb3JlOjpGbG9hdFNpemUoc2NhbGUsIHNjYWxlKSk7CisgICAgICAgIGN0eC5zY2FsZShX
ZWJDb3JlOjpHcmFwaGljc1NpemUoc2NhbGUsIHNjYWxlKSk7CiAjZW5kaWYKICAgICAgICAgY3R4
LnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxmbG9hdD4oLXBhZ2VSZWN0LngoKSksCiAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KC1wYWdlUmVjdC55KCkpKTsKQEAgLTE3ODcs
NyArMTc4Nyw3IEBAIGludCBXZWJGcmFtZUltcGw6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnkKICAg
ICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIEZsb2F0U2l6ZSBwYWdl
U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKTsKKyAgICBHcmFwaGlj
c1NpemUgcGFnZVNpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscyk7CiAg
ICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVudCwgcGFn
ZVNpemUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5NCw3ICsxMDk0LDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6ZG9QaXhlbFJlYWRiYWNrVG9DYW52YQogICAgICAgICBpbWFnZUJ1ZmZlci0+
cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YShwaXhlbEFycmF5LmdldCgpLCByZWN0LnNpemUoKSwg
SW50UmVjdChJbnRQb2ludCgpLCByZWN0LnNpemUoKSksIEludFBvaW50KCkpOwogICAgICAgICBn
Yy5zYXZlKCk7CiAgICAgICAgIGdjLnRyYW5zbGF0ZShJbnRTaXplKDAsIGJpdG1hcEhlaWdodCkp
OwotICAgICAgICBnYy5zY2FsZShGbG9hdFNpemUoMS4wZiwgLTEuMGYpKTsKKyAgICAgICAgZ2Mu
c2NhbGUoR3JhcGhpY3NTaXplKDEuMGYsIC0xLjBmKSk7CiAgICAgICAgIC8vIFVzZSBpbnZlcnRS
ZWN0IGluIG5leHQgbGluZSwgc28gdGhhdCB0cmFuc2Zvcm0gYWJvdmUgaW52ZXJ0cyBpdCBiYWNr
IHRvCiAgICAgICAgIC8vIGRlc2lyZWQgZGVzdGluYXRpb24gcmVjdC4KICAgICAgICAgZ2MuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBpbnZl
cnRSZWN0LmxvY2F0aW9uKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9E
cmFnSW1hZ2VUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0RyYWdJbWFnZVRlc3QuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvRHJhZ0ltYWdlVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw3
ICsxMDUsNyBAQCBURVNUKERyYWdJbWFnZVRlc3QsIE51bGxIYW5kbGluZykKIAogICAgIGRlbGV0
ZURyYWdJbWFnZSgwKTsKICAgICBFWFBFQ1RfVFJVRShkcmFnSW1hZ2VTaXplKDApLmlzWmVybygp
KTsKLSAgICBFWFBFQ1RfRkFMU0Uoc2NhbGVEcmFnSW1hZ2UoMCwgRmxvYXRTaXplKDAuNSwgMC41
KSkpOworICAgIEVYUEVDVF9GQUxTRShzY2FsZURyYWdJbWFnZSgwLCBHcmFwaGljc1NpemUoMC41
LCAwLjUpKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbigw
LCAwLjUpKTsKICAgICBFWFBFQ1RfRkFMU0UoY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKDApKTsK
ICAgICBFWFBFQ1RfRkFMU0UoY3JlYXRlRHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlKDApKTsK
QEAgLTExNyw3ICsxMTcsNyBAQCBURVNUKERyYWdJbWFnZVRlc3QsIE5vbk51bGxIYW5kbGluZykK
ICAgICBEcmFnSW1hZ2VSZWYgZHJhZ0ltYWdlID0gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKHRl
c3RJbWFnZS5nZXQoKSk7CiAgICAgQVNTRVJUX1RSVUUoZHJhZ0ltYWdlKTsKIAotICAgIGRyYWdJ
bWFnZSA9IHNjYWxlRHJhZ0ltYWdlKGRyYWdJbWFnZSwgRmxvYXRTaXplKDAuNSwgMC41KSk7Cisg
ICAgZHJhZ0ltYWdlID0gc2NhbGVEcmFnSW1hZ2UoZHJhZ0ltYWdlLCBHcmFwaGljc1NpemUoMC41
LCAwLjUpKTsKICAgICBBU1NFUlRfVFJVRShkcmFnSW1hZ2UpOwogICAgIEludFNpemUgc2l6ZSA9
IGRyYWdJbWFnZVNpemUoZHJhZ0ltYWdlKTsKICAgICBFWFBFQ1RfRVEoMSwgc2l6ZS53aWR0aCgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVHJhbnNwYXJlbmN5V2luVGVz
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UcmFuc3Bh
cmVuY3lXaW5UZXN0LmNwcAkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RyYW5zcGFyZW5jeVdpblRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
NyArMTE5LDcgQEAgVEVTVChUcmFuc3BhcmVuY3lXaW4sIE5vTGF5ZXIpCiAKICAgICAvLyBTY2Fs
ZVRyYW5zZm9ybQogICAgIHNyYy0+Y29udGV4dCgpLT5zYXZlKCk7Ci0gICAgc3JjLT5jb250ZXh0
KCktPnNjYWxlKEZsb2F0U2l6ZSgyLjAsIDAuNSkpOworICAgIHNyYy0+Y29udGV4dCgpLT5zY2Fs
ZShHcmFwaGljc1NpemUoMi4wLCAwLjUpKTsKICAgICB7CiAgICAgICAgIFRyYW5zcGFyZW5jeVdp
biBoZWxwZXI7CiAgICAgICAgIGhlbHBlci5pbml0KHNyYy0+Y29udGV4dCgpLApAQCAtMTcxLDcg
KzE3MSw3IEBAIFRFU1QoVHJhbnNwYXJlbmN5V2luLCBXaGl0ZUxheWVyKQogCiAgICAgLy8gU2Nh
bGVUcmFuc2Zvcm0KICAgICBzcmMtPmNvbnRleHQoKS0+c2F2ZSgpOwotICAgIHNyYy0+Y29udGV4
dCgpLT5zY2FsZShGbG9hdFNpemUoMi4wLCAwLjUpKTsKKyAgICBzcmMtPmNvbnRleHQoKS0+c2Nh
bGUoR3JhcGhpY3NTaXplKDIuMCwgMC41KSk7CiAgICAgewogICAgICAgICBUcmFuc3BhcmVuY3lX
aW4gaGVscGVyOwogICAgICAgICBoZWxwZXIuaW5pdChzcmMtPmNvbnRleHQoKSwKQEAgLTI1OSw3
ICsyNTksNyBAQCBURVNUKFRyYW5zcGFyZW5jeVdpbiwgT3BhcXVlQ29tcG9zaXRlTGF5CiAKICAg
ICAvLyBTY2FsZVRyYW5zZm9ybQogICAgIHNyYy0+Y29udGV4dCgpLT5zYXZlKCk7Ci0gICAgc3Jj
LT5jb250ZXh0KCktPnNjYWxlKEZsb2F0U2l6ZSgyLjAsIDAuNSkpOworICAgIHNyYy0+Y29udGV4
dCgpLT5zY2FsZShHcmFwaGljc1NpemUoMi4wLCAwLjUpKTsKICAgICB7CiAgICAgICAgIFRyYW5z
cGFyZW5jeVdpbiBoZWxwZXI7CiAgICAgICAgIGhlbHBlci5pbml0KHNyYy0+Y29udGV4dCgpLApJ
bmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gOTEyMTEpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wNy0xOCAg
TGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIEZs
b2F0U2l6ZSB0byBHcmFwaGljc1NpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY0NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVuYW1pbmcgRmxvYXRTaXplIHRvIEdyYXBoaWNzU2l6ZSBpbiBhbnRp
Y2lwYXRpb24gb2YgYWxsb3dpbmcgcG9ydHMgdG8gdXNlIDY0IGJpdAorICAgICAgICBmbG9hdHMg
aWYgdGhleSBzbyBjaG9vc2UuCisKKyAgICAgICAgTm8gdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkg
Y2hhbmdlcy4KKworICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmll
d19wYWludF9jb250ZXh0X3NjYWxlKToKKwogMjAxMS0wNy0xNSAgRGFuIEJlcm5zdGVpbiAgPG1p
dHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IE1vdXNlIGN1cnNvciBkb2VzbuKA
mXQgaGlkZSB3aGVuIGZ1bGwgc2NyZWVuIHZpZGVvIEhVRCBoaWRlcwpJbmRleDogU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMDgsNyArMzMwOCw3IEBAIHZv
aWQgZXdrX3ZpZXdfcGFpbnRfY29udGV4dF9zY2FsZShFd2tfVmkKIHsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihjdHh0KTsKIAotICAgIGN0eHQtPmdjLT5zY2FsZShXZWJDb3JlOjpG
bG9hdFNpemUoc2NhbGVfeCwgc2NhbGVfeSkpOworICAgIGN0eHQtPmdjLT5zY2FsZShXZWJDb3Jl
OjpHcmFwaGljc1NpemUoc2NhbGVfeCwgc2NhbGVfeSkpOwogfQogCiAvKioKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHJldmlzaW9uIDkxMjExKQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDctMTggIExldmkgV2VpbnRy
YXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmFtZSBGbG9hdFNpemUgdG8g
R3JhcGhpY3NTaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDc1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmFtaW5nIEZsb2F0U2l6ZSB0byBHcmFwaGljc1NpemUgaW4gYW50aWNpcGF0aW9uIG9m
IGFsbG93aW5nIHBvcnRzIHRvIHVzZSA2NCBiaXQKKyAgICAgICAgZmxvYXRzIGlmIHRoZXkgc28g
Y2hvb3NlLgorCisgICAgICAgIE5vIHRlc3RzLCBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZXMuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5
SWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpudW1iZXJPZlBhZ2VzRm9y
RnJhbWUpOgorCiAyMDExLTA3LTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTjogTW91c2UgY3Vyc29yIGRvZXNu4oCZdCBoaWRlIHdoZW4gZnVs
bCBzY3JlZW4gdmlkZW8gSFVEIGhpZGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJ
KHJldmlzaW9uIDkxMjAwKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcgKzI1Niw3
IEBAIGludCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnBhZ2VOdW1iZXIKICAgICBFbGVtZW50
KiBjb3JlRWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoQXRv
bWljU3RyaW5nKGlkKSk7CiAgICAgaWYgKCFjb3JlRWxlbWVudCkKICAgICAgICAgcmV0dXJuIC0x
OwotICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KGNvcmVFbGVt
ZW50LCBGbG9hdFNpemUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7CisgICAgcmV0dXJuIFByaW50
Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoY29yZUVsZW1lbnQsIEdyYXBoaWNzU2l6ZShw
YWdlV2lkdGgsIHBhZ2VIZWlnaHQpKTsKIH0KIAogLyoqCkBAIC0yNzUsNyArMjc1LDcgQEAgaW50
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6bnVtYmVyT2ZQYQogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICByZXR1cm4gUHJpbnRDb250ZXh0OjpudW1iZXJP
ZlBhZ2VzKGNvcmVGcmFtZSwgRmxvYXRTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOworICAg
IHJldHVybiBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoY29yZUZyYW1lLCBHcmFwaGljc1Np
emUocGFnZVdpZHRoLCBwYWdlSGVpZ2h0KSk7CiB9CiAKIC8qKgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTEyMTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wNy0xOCAgTGV2aSBXZWludHJhdWIgIDxs
ZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIEZsb2F0U2l6ZSB0byBHcmFwaGlj
c1NpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1pbmcgRmxvYXRTaXplIHRvIEdyYXBoaWNzU2l6ZSBpbiBhbnRpY2lwYXRpb24gb2YgYWxsb3dp
bmcgcG9ydHMgdG8gdXNlIDY0IGJpdAorICAgICAgICBmbG9hdHMgaWYgdGhleSBzbyBjaG9vc2Uu
CisKKyAgICAgICAgTm8gdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4KKworICAgICAg
ICAqIE1pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW06CisgICAgICAgICgtW1dlYkZyYW1lIHBhZ2VO
dW1iZXJGb3JFbGVtZW50OmVsZW1lbnQ6cGFnZVdpZHRoSW5QaXhlbHM6XSk6CisgICAgICAgICgt
W1dlYkZyYW1lIG51bWJlck9mUGFnZXM6cGFnZVdpZHRoSW5QaXhlbHM6XSk6CisgICAgICAgICgt
W1dlYkZyYW1lIHByaW50VG9DR0NvbnRleHQ6Y2dDb250ZXh0OnBhZ2VXaWR0aEluUGl4ZWxzOl0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9j
b21wdXRlUGFnZVJlY3RzV2l0aFByaW50U2NhbGVGYWN0b3I6cGFnZVNpemU6XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2JlZ2lu
UHJpbnRNb2RlV2l0aFBhZ2VXaWR0aDpoZWlnaHQ6c2hyaW5rVG9GaXQ6XSk6CisgICAgICAgICgt
W1dlYkhUTUxWaWV3IF9iZWdpblNjcmVlblBhZ2luYXRpb25Nb2RlV2l0aFBhZ2VTaXplOnNocmlu
a1RvRml0Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBsYXlvdXRUb01pbmltdW1QYWdlV2lk
dGg6aGVpZ2h0Om1heGltdW1TaHJpbmtSYXRpbzphZGp1c3RpbmdWaWV3U2l6ZTpdKToKKwogMjAx
MS0wNy0xOCAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAKICAgICAgICAg
UGFydCBvZiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM2NzQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViQ29yZVN0YXRpc3RpY3MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJDb3JlU3RhdGlzdGljcy5tbQkocmV2aXNp
b24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYkNvcmVTdGF0aXN0aWNzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsMTIgKzI3NSwxMiBAQCAtIChOU1N0cmluZyAqKWNvdW50
ZXJWYWx1ZUZvckVsZW1lbnQ6KERPCiAKIC0gKGludClwYWdlTnVtYmVyRm9yRWxlbWVudDooRE9N
RWxlbWVudCopZWxlbWVudDooZmxvYXQpcGFnZVdpZHRoSW5QaXhlbHM6KGZsb2F0KXBhZ2VIZWln
aHRJblBpeGVscwogewotICAgIHJldHVybiBQcmludENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVt
ZW50KGNvcmUoZWxlbWVudCksIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdo
dEluUGl4ZWxzKSk7CisgICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1l
bnQoY29yZShlbGVtZW50KSwgR3JhcGhpY3NTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVp
Z2h0SW5QaXhlbHMpKTsKIH0KIAogLSAoaW50KW51bWJlck9mUGFnZXM6KGZsb2F0KXBhZ2VXaWR0
aEluUGl4ZWxzOihmbG9hdClwYWdlSGVpZ2h0SW5QaXhlbHMKIHsKLSAgICByZXR1cm4gUHJpbnRD
b250ZXh0OjpudW1iZXJPZlBhZ2VzKF9wcml2YXRlLT5jb3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdl
V2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CisgICAgcmV0dXJuIFByaW50Q29u
dGV4dDo6bnVtYmVyT2ZQYWdlcyhfcHJpdmF0ZS0+Y29yZUZyYW1lLCBHcmFwaGljc1NpemUocGFn
ZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwogfQogCiAtIChOU1N0cmluZyAq
KXBhZ2VQcm9wZXJ0eTooY29uc3QgY2hhciAqKXByb3BlcnR5TmFtZTooaW50KXBhZ2VOdW1iZXIK
QEAgLTMwNSw3ICszMDUsNyBAQCAtICh2b2lkKXByaW50VG9DR0NvbnRleHQ6KENHQ29udGV4dFJl
ZiljCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRl
eHQoY2dDb250ZXh0KTsKLSAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRh
cmllcyhjb3JlRnJhbWUsIGdyYXBoaWNzQ29udGV4dCwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4
ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKKyAgICBQcmludENvbnRleHQ6OnNwb29sQWxsUGFn
ZXNXaXRoQm91bmRhcmllcyhjb3JlRnJhbWUsIGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NTaXpl
KHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKIH0KIAogQGVuZApJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEzNDgsNyArMTM0OCw3IEBAIC0gKE5TQXJyYXkgKilfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmlu
dFMKICAgICBmbG9hdCBwcmludEhlaWdodCA9IHJvb3QtPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkgPyBwYWdlU2l6ZS5oZWlnaHQgOiBkb2N1bWVudFJlY3QuaGVpZ2h0KCkgLyBw
cmludFNjYWxlRmFjdG9yOwogCiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChfcHJpdmF0
ZS0+Y29yZUZyYW1lKTsKLSAgICBwcmludENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdl
U2l6ZShGbG9hdFNpemUocHJpbnRXaWR0aCwgcHJpbnRIZWlnaHQpLCB0cnVlKTsKKyAgICBwcmlu
dENvbnRleHQuY29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZShHcmFwaGljc1NpemUocHJpbnRX
aWR0aCwgcHJpbnRIZWlnaHQpLCB0cnVlKTsKICAgICBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHBh
Z2VSZWN0cyA9IHByaW50Q29udGV4dC5wYWdlUmVjdHMoKTsKIAogICAgIHNpemVfdCBzaXplID0g
cGFnZVJlY3RzLnNpemUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQkocmV2aXNpb24gOTEyMDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQ3LDEzICsyMTQ3LDEzIEBAIC0gKEJP
T0wpX2JlZ2luUHJpbnRNb2RlV2l0aFBhZ2VXaWR0aDooZmwKIAogICAgIGZsb2F0IHBhZ2VMb2dp
Y2FsV2lkdGggPSBpc0hvcml6b250YWwgPyBwYWdlV2lkdGggOiBwYWdlSGVpZ2h0OwogICAgIGZs
b2F0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gaXNIb3Jpem9udGFsID8gcGFnZUhlaWdodCA6IHBhZ2VX
aWR0aDsKLSAgICBGbG9hdFNpemUgbWluTGF5b3V0U2l6ZShwYWdlTG9naWNhbFdpZHRoLCBwYWdl
TG9naWNhbEhlaWdodCk7CisgICAgR3JhcGhpY3NTaXplIG1pbkxheW91dFNpemUocGFnZUxvZ2lj
YWxXaWR0aCwgcGFnZUxvZ2ljYWxIZWlnaHQpOwogICAgIGZsb2F0IG1heGltdW1TaHJpbmtSYXRp
byA9IDE7CiAKICAgICAvLyBJZiB3ZSBhcmUgYSBmcmFtZXNldCBqdXN0IHByaW50IHdpdGggdGhl
IGxheW91dCB3ZSBoYXZlIG9uc2NyZWVuLCBvdGhlcndpc2UgcmVsYXlvdXQKICAgICAvLyBhY2Nv
cmRpbmcgdG8gdGhlIHBhZ2Ugd2lkdGguCiAgICAgaWYgKHNocmlua1RvRml0ICYmICghZnJhbWUt
PmRvY3VtZW50KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5pc0ZyYW1lU2V0KCkpKSB7Ci0gICAg
ICAgIG1pbkxheW91dFNpemUgPSBmcmFtZS0+cmVzaXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvKEZs
b2F0U2l6ZShwYWdlTG9naWNhbFdpZHRoLCBwYWdlTG9naWNhbEhlaWdodCksIEZsb2F0U2l6ZShw
YWdlTG9naWNhbFdpZHRoICogX1dlYkhUTUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9y
LCBwYWdlTG9naWNhbEhlaWdodCAqIF9XZWJIVE1MVmlld1ByaW50aW5nTWluaW11bVNocmlua0Zh
Y3RvcikpOworICAgICAgICBtaW5MYXlvdXRTaXplID0gZnJhbWUtPnJlc2l6ZVBhZ2VSZWN0c0tl
ZXBpbmdSYXRpbyhHcmFwaGljc1NpemUocGFnZUxvZ2ljYWxXaWR0aCwgcGFnZUxvZ2ljYWxIZWln
aHQpLCBHcmFwaGljc1NpemUocGFnZUxvZ2ljYWxXaWR0aCAqIF9XZWJIVE1MVmlld1ByaW50aW5n
TWluaW11bVNocmlua0ZhY3RvciwgcGFnZUxvZ2ljYWxIZWlnaHQgKiBfV2ViSFRNTFZpZXdQcmlu
dGluZ01pbmltdW1TaHJpbmtGYWN0b3IpKTsKICAgICAgICAgbWF4aW11bVNocmlua1JhdGlvID0g
X1dlYkhUTUxWaWV3UHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFjdG9yIC8gX1dlYkhUTUxWaWV3UHJp
bnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yOwogICAgIH0KIApAQCAtMjE4MywxMyArMjE4MywxMyBA
QCAtIChCT09MKV9iZWdpblNjcmVlblBhZ2luYXRpb25Nb2RlV2l0aFBhCiAKICAgICBmbG9hdCBw
YWdlTG9naWNhbFdpZHRoID0gaXNIb3Jpem9udGFsID8gcGFnZVNpemUud2lkdGggOiBwYWdlU2l6
ZS5oZWlnaHQ7CiAgICAgZmxvYXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSBpc0hvcml6b250YWwgPyBw
YWdlU2l6ZS5oZWlnaHQgOiBwYWdlU2l6ZS53aWR0aDsKLSAgICBGbG9hdFNpemUgbWluTGF5b3V0
U2l6ZShwYWdlTG9naWNhbFdpZHRoLCBwYWdlTG9naWNhbEhlaWdodCk7CisgICAgR3JhcGhpY3NT
aXplIG1pbkxheW91dFNpemUocGFnZUxvZ2ljYWxXaWR0aCwgcGFnZUxvZ2ljYWxIZWlnaHQpOwog
ICAgIGZsb2F0IG1heGltdW1TaHJpbmtSYXRpbyA9IDE7CiAKICAgICAvLyBJZiB3ZSBhcmUgYSBm
cmFtZXNldCBqdXN0IHByaW50IHdpdGggdGhlIGxheW91dCB3ZSBoYXZlIG9uc2NyZWVuLCBvdGhl
cndpc2UgcmVsYXlvdXQKICAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIHBhZ2Ugd2lkdGguCiAgICAg
aWYgKHNocmlua1RvRml0ICYmICghZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZyYW1lLT5kb2N1bWVu
dCgpLT5pc0ZyYW1lU2V0KCkpKSB7Ci0gICAgICAgIG1pbkxheW91dFNpemUgPSBmcmFtZS0+cmVz
aXplUGFnZVJlY3RzS2VlcGluZ1JhdGlvKEZsb2F0U2l6ZShwYWdlTG9naWNhbFdpZHRoLCBwYWdl
TG9naWNhbEhlaWdodCksIEZsb2F0U2l6ZShwYWdlTG9naWNhbFdpZHRoICogX1dlYkhUTUxWaWV3
UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yLCBwYWdlTG9naWNhbEhlaWdodCAqIF9XZWJIVE1M
Vmlld1ByaW50aW5nTWluaW11bVNocmlua0ZhY3RvcikpOworICAgICAgICBtaW5MYXlvdXRTaXpl
ID0gZnJhbWUtPnJlc2l6ZVBhZ2VSZWN0c0tlZXBpbmdSYXRpbyhHcmFwaGljc1NpemUocGFnZUxv
Z2ljYWxXaWR0aCwgcGFnZUxvZ2ljYWxIZWlnaHQpLCBHcmFwaGljc1NpemUocGFnZUxvZ2ljYWxX
aWR0aCAqIF9XZWJIVE1MVmlld1ByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciwgcGFnZUxvZ2lj
YWxIZWlnaHQgKiBfV2ViSFRNTFZpZXdQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3IpKTsKICAg
ICAgICAgbWF4aW11bVNocmlua1JhdGlvID0gX1dlYkhUTUxWaWV3UHJpbnRpbmdNYXhpbXVtU2hy
aW5rRmFjdG9yIC8gX1dlYkhUTUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yOwogICAg
IH0KIApAQCAtMzAyMiw5ICszMDIyLDkgQEAgLSAodm9pZClsYXlvdXRUb01pbmltdW1QYWdlV2lk
dGg6KGZsb2F0KQogCiAgICAgaWYgKEZyYW1lVmlldyogY29yZVZpZXcgPSBjb3JlRnJhbWUtPnZp
ZXcoKSkgewogICAgICAgICBpZiAobWluUGFnZUxvZ2ljYWxXaWR0aCA+IDAuMCkgewotICAgICAg
ICAgICAgRmxvYXRTaXplIHBhZ2VTaXplKG1pblBhZ2VMb2dpY2FsV2lkdGgsIG1pblBhZ2VMb2dp
Y2FsSGVpZ2h0KTsKKyAgICAgICAgICAgIEdyYXBoaWNzU2l6ZSBwYWdlU2l6ZShtaW5QYWdlTG9n
aWNhbFdpZHRoLCBtaW5QYWdlTG9naWNhbEhlaWdodCk7CiAgICAgICAgICAgICBpZiAoY29yZUZy
YW1lLT5kb2N1bWVudCgpICYmIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpICYm
ICFjb3JlRnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKS0+c3R5bGUoKS0+aXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgICAgICBwYWdlU2l6ZSA9IEZsb2F0U2l6ZSht
aW5QYWdlTG9naWNhbEhlaWdodCwgbWluUGFnZUxvZ2ljYWxXaWR0aCk7CisgICAgICAgICAgICAg
ICAgcGFnZVNpemUgPSBHcmFwaGljc1NpemUobWluUGFnZUxvZ2ljYWxIZWlnaHQsIG1pblBhZ2VM
b2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgY29yZVZpZXctPmZvcmNlTGF5b3V0Rm9yUGFnaW5h
dGlvbihwYWdlU2l6ZSwgbWF4aW11bVNocmlua1JhdGlvLCBhZGp1c3RWaWV3U2l6ZSA/IEFkanVz
dFZpZXdTaXplIDogRG9Ob3RBZGp1c3RWaWV3U2l6ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBjb3JlVmlldy0+Zm9yY2VMYXlvdXQoIWFkanVzdFZpZXdTaXplKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiA5MTIxMSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDctMTggIExldmkgV2VpbnRy
YXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlbmFtZSBGbG9hdFNpemUgdG8g
R3JhcGhpY3NTaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NDc1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmFtaW5nIEZsb2F0U2l6ZSB0byBHcmFwaGljc1NpemUgaW4gYW50aWNpcGF0aW9uIG9m
IGFsbG93aW5nIHBvcnRzIHRvIHVzZSA2NCBiaXQKKyAgICAgICAgZmxvYXRzIGlmIHRoZXkgc28g
Y2hvb3NlLgorCisgICAgICAgIE5vIHRlc3RzLCBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZXMuCisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpk
eW5hbWljUHJvcGVydHlDaGFuZ2VFdmVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50QnlJZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6bnVtYmVyT2ZQYWdlcyk6CisKIDIwMTEtMDctMTggIEh1aSBIdWFuZyAgPGh1aS4y
Lmh1YW5nQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIENvbXBpbGluZyBlcnJvciBpbiBTb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L3RzdF9xd2ViZWxlbWVudC5jcHAgd2l0aCBR
dCA0Ljcgb3Igb2xkZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9u
IDkxMjAwKQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjIzLDIxICsxMjIzLDIxIEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjpkeW5hbWlj
UHJvcGVydHlDaGEKICAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJp
dmF0ZTo6Y29yZShxLT5tYWluRnJhbWUoKSk7CiAgICAgICAgIGlmICghZnJhbWUtPnRpbGVkQmFj
a2luZ1N0b3JlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEZsb2F0U2l6ZSBrZWVw
TXVsdGlwbGllcjsKLSAgICAgICAgRmxvYXRTaXplIGNvdmVyTXVsdGlwbGllcjsKKyAgICAgICAg
R3JhcGhpY3NTaXplIGtlZXBNdWx0aXBsaWVyOworICAgICAgICBHcmFwaGljc1NpemUgY292ZXJN
dWx0aXBsaWVyOwogICAgICAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+Z2V0S2VlcEFu
ZENvdmVyQXJlYU11bHRpcGxpZXJzKGtlZXBNdWx0aXBsaWVyLCBjb3Zlck11bHRpcGxpZXIpOwog
ICAgICAgICBRU2l6ZUYgcVNpemUgPSBxLT5wcm9wZXJ0eSgiX3FfVGlsZWRCYWNraW5nU3RvcmVL
ZWVwQXJlYU11bHRpcGxpZXIiKS50b1NpemVGKCk7Ci0gICAgICAgIGtlZXBNdWx0aXBsaWVyID0g
RmxvYXRTaXplKHFTaXplLndpZHRoKCksIHFTaXplLmhlaWdodCgpKTsKKyAgICAgICAga2VlcE11
bHRpcGxpZXIgPSBHcmFwaGljc1NpemUocVNpemUud2lkdGgoKSwgcVNpemUuaGVpZ2h0KCkpOwog
ICAgICAgICBmcmFtZS0+dGlsZWRCYWNraW5nU3RvcmUoKS0+c2V0S2VlcEFuZENvdmVyQXJlYU11
bHRpcGxpZXJzKGtlZXBNdWx0aXBsaWVyLCBjb3Zlck11bHRpcGxpZXIpOwogICAgIH0gZWxzZSBp
ZiAoZXZlbnQtPnByb3BlcnR5TmFtZSgpID09ICJfcV9UaWxlZEJhY2tpbmdTdG9yZUNvdmVyQXJl
YU11bHRpcGxpZXIiKSB7CiAgICAgICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IFFXZWJGcmFt
ZVByaXZhdGU6OmNvcmUocS0+bWFpbkZyYW1lKCkpOwogICAgICAgICBpZiAoIWZyYW1lLT50aWxl
ZEJhY2tpbmdTdG9yZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBGbG9hdFNpemUg
a2VlcE11bHRpcGxpZXI7Ci0gICAgICAgIEZsb2F0U2l6ZSBjb3Zlck11bHRpcGxpZXI7CisgICAg
ICAgIEdyYXBoaWNzU2l6ZSBrZWVwTXVsdGlwbGllcjsKKyAgICAgICAgR3JhcGhpY3NTaXplIGNv
dmVyTXVsdGlwbGllcjsKICAgICAgICAgZnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCktPmdldEtl
ZXBBbmRDb3ZlckFyZWFNdWx0aXBsaWVycyhrZWVwTXVsdGlwbGllciwgY292ZXJNdWx0aXBsaWVy
KTsKICAgICAgICAgUVNpemVGIHFTaXplID0gcS0+cHJvcGVydHkoIl9xX1RpbGVkQmFja2luZ1N0
b3JlQ292ZXJBcmVhTXVsdGlwbGllciIpLnRvU2l6ZUYoKTsKLSAgICAgICAgY292ZXJNdWx0aXBs
aWVyID0gRmxvYXRTaXplKHFTaXplLndpZHRoKCksIHFTaXplLmhlaWdodCgpKTsKKyAgICAgICAg
Y292ZXJNdWx0aXBsaWVyID0gR3JhcGhpY3NTaXplKHFTaXplLndpZHRoKCksIHFTaXplLmhlaWdo
dCgpKTsKICAgICAgICAgZnJhbWUtPnRpbGVkQmFja2luZ1N0b3JlKCktPnNldEtlZXBBbmRDb3Zl
ckFyZWFNdWx0aXBsaWVycyhrZWVwTXVsdGlwbGllciwgY292ZXJNdWx0aXBsaWVyKTsKICAgICB9
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzEsNyArNDMxLDcgQEAgaW50IER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpwYWdlTnVtYmVyRgogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJu
IC0xOwogCi0gICAgcmV0dXJuIFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxl
bWVudCwgRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICByZXR1cm4gUHJpbnRDb250ZXh0
OjpwYWdlTnVtYmVyRm9yRWxlbWVudChlbGVtZW50LCBHcmFwaGljc1NpemUod2lkdGgsIGhlaWdo
dCkpOwogfQogCiBpbnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om51bWJlck9mUGFnZXMoUVdl
YkZyYW1lKiBmcmFtZSwgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKQEAgLTQ0MCw3ICs0NDAs
NyBAQCBpbnQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om51bWJlck9mUGFnCiAgICAgaWYgKCFj
b3JlRnJhbWUpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIHJldHVybiBQcmludENvbnRleHQ6
Om51bWJlck9mUGFnZXMoY29yZUZyYW1lLCBGbG9hdFNpemUod2lkdGgsIGhlaWdodCkpOworICAg
IHJldHVybiBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoY29yZUZyYW1lLCBHcmFwaGljc1Np
emUod2lkdGgsIGhlaWdodCkpOwogfQogCiAvLyBTdXNwZW5kIGFjdGl2ZSBET00gb2JqZWN0cyBp
biB0aGlzIGZyYW1lLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gOTEyMTEpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBA
QAorMjAxMS0wNy0xOCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmVuYW1lIEZsb2F0U2l6ZSB0byBHcmFwaGljc1NpemUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzU0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1pbmcgRmxvYXRTaXplIHRvIEdyYXBo
aWNzU2l6ZSBpbiBhbnRpY2lwYXRpb24gb2YgYWxsb3dpbmcgcG9ydHMgdG8gdXNlIDY0IGJpdAor
ICAgICAgICBmbG9hdHMgaWYgdGhleSBzbyBjaG9vc2UuCisKKyAgICAgICAgTm8gdGVzdHMsIG5v
IGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4KKworICAgICAgICAqIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6TGF5ZXJDbGll
bnQ6OnBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIpOgorICAgICAgICAqIFdl
YkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQp
OgorICAgICAgICAoV2ViRnJhbWU6Om51bWJlck9mUGFnZXMpOgorICAgICAgICAoV2ViRnJhbWU6
OnNldFByaW50aW5nKToKKyAgICAgICAgKFdlYkZyYW1lOjpzZXRJblByaW50aW5nTW9kZSk6Cisg
ICAgICAgICogV2ViS2l0R3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViRHJhd1RleHQpOgorCiAy
MDExLTA3LTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBjb2RlIHRvIGF0dGVtcHQgdG8gYWxpZ24gY29tcG9zaXRpbmcgbGF5ZXJzIHRvIHBp
eGVsIGJvdW5kYXJpZXMgd2hlbiBwYWdlIHNjYWxlIGNoYW5nZXMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5MTIw
MCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpMYXllckNsaQogCiAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gbGF5ZXItPmJv
dW5kcygpOwogCi0gICAgRmxvYXRTaXplIHZpZGVvU2l6ZSA9IG1lZGlhRWxlbWVudC0+cGxheWVy
KCktPm5hdHVyYWxTaXplKCk7CisgICAgR3JhcGhpY3NTaXplIHZpZGVvU2l6ZSA9IG1lZGlhRWxl
bWVudC0+cGxheWVyKCktPm5hdHVyYWxTaXplKCk7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3I7CiAg
ICAgaWYgKHZpZGVvU2l6ZS5hc3BlY3RSYXRpbygpID4gbGF5ZXJCb3VuZHMuc2l6ZSgpLmFzcGVj
dFJhdGlvKCkpCiAgICAgICAgIHNjYWxlRmFjdG9yID0gbGF5ZXJCb3VuZHMud2lkdGgoKSAvIHZp
ZGVvU2l6ZS53aWR0aCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gOTEy
MDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkyNyw3ICs5MjcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpwYWdl
CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVu
dEJ5SWQoY29yZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
Ci0gICAgKnJlc3VsdCA9IFByaW50Q29udGV4dDo6cGFnZU51bWJlckZvckVsZW1lbnQoZWxlbWVu
dCwgRmxvYXRTaXplKHBhZ2VXaWR0aEluUGl4ZWxzLCBwYWdlSGVpZ2h0SW5QaXhlbHMpKTsKKyAg
ICAqcmVzdWx0ID0gUHJpbnRDb250ZXh0OjpwYWdlTnVtYmVyRm9yRWxlbWVudChlbGVtZW50LCBH
cmFwaGljc1NpemUocGFnZVdpZHRoSW5QaXhlbHMsIHBhZ2VIZWlnaHRJblBpeGVscykpOwogICAg
IHJldHVybiBTX09LOwogfQogCkBAIC05NDMsNyArOTQzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJGcmFtZTo6bnVtYgogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgKnJlc3VsdCA9IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhj
b3JlRnJhbWUsIEZsb2F0U2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxz
KSk7CisgICAgKnJlc3VsdCA9IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhjb3JlRnJhbWUs
IEdyYXBoaWNzU2l6ZShwYWdlV2lkdGhJblBpeGVscywgcGFnZUhlaWdodEluUGl4ZWxzKSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTIwMTQsNyArMjAxNCw3IEBAIHZvaWQgV2ViRnJhbWU6
OnNldFByaW50aW5nKGJvb2wgcHJpbnRpbmcKIHsKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29y
ZSh0aGlzKTsKICAgICBBU1NFUlQoY29yZUZyYW1lKTsKLSAgICBjb3JlRnJhbWUtPnNldFByaW50
aW5nKHByaW50aW5nLCBGbG9hdFNpemUobWluUGFnZVdpZHRoLCBtaW5QYWdlSGVpZ2h0KSwgbWF4
aW11bVNocmlua1JhdGlvLCBhZGp1c3RWaWV3U2l6ZSA/IEFkanVzdFZpZXdTaXplIDogRG9Ob3RB
ZGp1c3RWaWV3U2l6ZSk7CisgICAgY29yZUZyYW1lLT5zZXRQcmludGluZyhwcmludGluZywgR3Jh
cGhpY3NTaXplKG1pblBhZ2VXaWR0aCwgbWluUGFnZUhlaWdodCksIG1heGltdW1TaHJpbmtSYXRp
bywgYWRqdXN0Vmlld1NpemUgPyBBZGp1c3RWaWV3U2l6ZSA6IERvTm90QWRqdXN0Vmlld1NpemUp
OwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzZXRJblByaW50aW5n
TW9kZSggCkBAIC0yMDMyLDcgKzIwMzIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkZyYW1lOjpzZXRJCiAKICAgICAvLyBJZiB3ZSBhcmUgYSBmcmFtZXNldCBqdXN0IHByaW50IHdp
dGggdGhlIGxheW91dCB3ZSBoYXZlIG9uc2NyZWVuLCBvdGhlcndpc2UgcmVsYXlvdXQKICAgICAv
LyBhY2NvcmRpbmcgdG8gdGhlIHBhcGVyIHNpemUKLSAgICBGbG9hdFNpemUgbWluTGF5b3V0U2l6
ZSgwLjAsIDAuMCk7CisgICAgR3JhcGhpY3NTaXplIG1pbkxheW91dFNpemUoMC4wLCAwLjApOwog
ICAgIGlmIChtX2luUHJpbnRpbmdNb2RlICYmICFjb3JlRnJhbWUtPmRvY3VtZW50KCktPmlzRnJh
bWVTZXQoKSkgewogICAgICAgICBpZiAoIXByaW50REMpIHsKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMjA0Niw3ICsyMDQ2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJGcmFtZTo6c2V0SQogICAgICAgICBpbnQgcGFwZXJWZXJ0aWNhbFBpeGVsc1Blcklu
Y2ggPSA6OkdldERldmljZUNhcHMocHJpbnREQywgTE9HUElYRUxTWSk7CiAgICAgICAgIGludCBw
YXBlckhlaWdodCA9IHByaW50UmVjdC5oZWlnaHQoKSAqIGRlc2lyZWRQaXhlbHNQZXJJbmNoIC8g
cGFwZXJWZXJ0aWNhbFBpeGVsc1BlckluY2g7CiAgICAgICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKHRoaXMpOwotICAgICAgICBtaW5MYXlvdXRTaXplID0gY29yZUZyYW1lLT5yZXNpemVQYWdl
UmVjdHNLZWVwaW5nUmF0aW8oRmxvYXRTaXplKHBhcGVyV2lkdGgsIHBhcGVySGVpZ2h0KSwgRmxv
YXRTaXplKHBhcGVyV2lkdGggKiBQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3IsIHBhcGVySGVp
Z2h0ICogUHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yKSk7CisgICAgICAgIG1pbkxheW91dFNp
emUgPSBjb3JlRnJhbWUtPnJlc2l6ZVBhZ2VSZWN0c0tlZXBpbmdSYXRpbyhHcmFwaGljc1NpemUo
cGFwZXJXaWR0aCwgcGFwZXJIZWlnaHQpLCBHcmFwaGljc1NpemUocGFwZXJXaWR0aCAqIFByaW50
aW5nTWluaW11bVNocmlua0ZhY3RvciwgcGFwZXJIZWlnaHQgKiBQcmludGluZ01pbmltdW1TaHJp
bmtGYWN0b3IpKTsKICAgICB9CiAKICAgICBzZXRQcmludGluZyhtX2luUHJpbnRpbmdNb2RlLCBt
aW5MYXlvdXRTaXplLndpZHRoKCksIG1pbkxheW91dFNpemUuaGVpZ2h0KCksIFByaW50aW5nTWF4
aW11bVNocmlua0ZhY3RvciAvIFByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciwgdHJ1ZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3BwCShyZXZpc2lvbiA5MTIwMCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgV2ViRHJhd1RleHQoV2ViVGV4dFJlbmRlckluZm8qIGluZm8K
ICAgICAgICAgLy8gU2V0IHNoYWRvdyBzZXR0aW5nCiAgICAgICAgIGlmIChpbmZvLT5zdHJ1Y3RT
aXplID09IHNpemVvZihXZWJUZXh0UmVuZGVySW5mbykgJiYKICAgICAgICAgICAgIChpbmZvLT5z
aGFkb3dPZmZzZXQuY3ggfHwgaW5mby0+c2hhZG93T2Zmc2V0LmN5IHx8IGluZm8tPnNoYWRvd0Js
dXIgfHwgaW5mby0+c2hhZG93Q29sb3IpKQotICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3co
RmxvYXRTaXplKGluZm8tPnNoYWRvd09mZnNldC5jeCwgaW5mby0+c2hhZG93T2Zmc2V0LmN5KSwg
aW5mby0+c2hhZG93Qmx1ciwgaW5mby0+c2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coR3JhcGhpY3NTaXplKGluZm8tPnNoYWRv
d09mZnNldC5jeCwgaW5mby0+c2hhZG93T2Zmc2V0LmN5KSwgaW5mby0+c2hhZG93Qmx1ciwgaW5m
by0+c2hhZG93Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCiAgICAgICAgIFdlYkNvcmVE
cmF3VGV4dEF0UG9pbnQoY29udGV4dCwgZHJhd1N0cmluZywgaW5mby0+cHQsIG1ha2VGb250KCoo
aW5mby0+ZGVzY3JpcHRpb24pKSwgaW5mby0+Y29sb3IsIGluZm8tPnVuZGVybGluZWRJbmRleCk7
CiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwo=
</data>
<flag name="review"
          id="96056"
          type_id="1"
          status="-"
          setter="leviw"
    />
          </attachment>
      

    </bug>

</bugzilla>