<?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>112751</bug_id>
          
          <creation_ts>2013-03-19 15:49:58 -0700</creation_ts>
          <short_desc>[chromium] move WebThemeEngine implementations to TestRunner library</short_desc>
          <delta_ts>2013-03-20 23:19:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          <dependson>112788</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dpranke</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>858821</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-19 15:49:58 -0700</bug_when>
    <thetext>[chromium] move WebThemeEngine implementations to TestRunner library</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858822</commentid>
    <comment_count>1</comment_count>
      <attachid>193940</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-19 15:50:34 -0700</bug_when>
    <thetext>Created attachment 193940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858825</commentid>
    <comment_count>2</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-19 15:52:31 -0700</bug_when>
    <thetext>For some reason this doesn&apos;t compile on Windows:


57&gt;E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\DumpRenderTree\chromium\TestRunner\src\WebThemeControlDRTWin.cpp(280): error C3861: &apos;failedAssertion&apos;: identifier not found
57&gt;E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\DumpRenderTree\chromium\TestRunner\src\WebThemeControlDRTWin.cpp(313): error C3861: &apos;failedAssertion&apos;: identifier not found
57&gt;E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\DumpRenderTree\chromium\TestRunner\src\WebThemeControlDRTWin.cpp(318): error C3861: &apos;failedAssertion&apos;: identifier not found
57&gt;E:\b\build\slave\win_layout\build\src\third_party\WebKit\Tools\DumpRenderTree\chromium\TestRunner\src\WebThemeControlDRTWin.cpp(484): error C3861: &apos;failedAssertion&apos;: identifier not found

These are WEBKIT_ASSERT_NOT_REACHED() calls which is defined in WebCommon.h included by TestCommon.h included by WebThemeControlDRTWin.cpp

So given that the macro expands, and it&apos;s also working in the other files that use it, I have no idea what&apos;s going on :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858826</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 15:52:32 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858827</commentid>
    <comment_count>4</comment_count>
      <attachid>193940</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 15:54:00 -0700</bug_when>
    <thetext>Comment on attachment 193940
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=193940&amp;action=review

&gt; Tools/DumpRenderTree/DumpRenderTree.gypi:93
&gt; +            &apos;chromium/TestRunner/src/WebThemeControlDRTWin.cpp&apos;,
&gt; +            &apos;chromium/TestRunner/src/WebThemeControlDRTWin.h&apos;,

The suffix DRT doesn&apos;t really make sense inside TestRunner....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858829</commentid>
    <comment_count>5</comment_count>
      <attachid>193940</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 15:54:55 -0700</bug_when>
    <thetext>Comment on attachment 193940
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=193940&amp;action=review

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebThemeControlDRTWin.cpp:41
&gt; +#include &quot;skia/ext/skia_utils_win.h&quot;

Do we need to add a dependency on skia to the TestRunner GYP declarations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858831</commentid>
    <comment_count>6</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-19 15:56:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 193940 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193940&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/src/WebThemeControlDRTWin.cpp:41
&gt; &gt; +#include &quot;skia/ext/skia_utils_win.h&quot;
&gt; 
&gt; Do we need to add a dependency on skia to the TestRunner GYP declarations?

It&apos;s already there for the platform canvas in WebTestProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858839</commentid>
    <comment_count>7</comment_count>
      <attachid>193946</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-19 16:05:36 -0700</bug_when>
    <thetext>Created attachment 193946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858840</commentid>
    <comment_count>8</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-19 16:06:36 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 193940 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193940&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/DumpRenderTree.gypi:93
&gt; &gt; +            &apos;chromium/TestRunner/src/WebThemeControlDRTWin.cpp&apos;,
&gt; &gt; +            &apos;chromium/TestRunner/src/WebThemeControlDRTWin.h&apos;,
&gt; 
&gt; The suffix DRT doesn&apos;t really make sense inside TestRunner....

Renamed WebTheme(.*)DRT(.*) to WebTestTheme$1$2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858891</commentid>
    <comment_count>9</comment_count>
      <attachid>193946</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-19 17:22:11 -0700</bug_when>
    <thetext>Comment on attachment 193946
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=193946&amp;action=review

rs=me

&gt; Tools/DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:90
&gt; +    std::auto_ptr&lt;WebKit::WebThemeEngine&gt; m_themeEngine;

Isn&apos;t this the bad case for auto_ptr?  Rather than forward declaring WebThemeEngine, we should probably #include it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858909</commentid>
    <comment_count>10</comment_count>
      <attachid>193955</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-19 17:41:38 -0700</bug_when>
    <thetext>Created attachment 193955
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858910</commentid>
    <comment_count>11</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-19 17:42:06 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 193946 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193946&amp;action=review
&gt; 
&gt; rs=me
&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:90
&gt; &gt; +    std::auto_ptr&lt;WebKit::WebThemeEngine&gt; m_themeEngine;
&gt; 
&gt; Isn&apos;t this the bad case for auto_ptr?  Rather than forward declaring WebThemeEngine, we should probably #include it.

done

I also figured out the reason for the compile failure, it was missing a using namespace WebKit...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858973</commentid>
    <comment_count>12</comment_count>
      <attachid>193955</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 19:01:14 -0700</bug_when>
    <thetext>Comment on attachment 193955
Patch for landing

Clearing flags on attachment: 193955

Committed r146290: &lt;http://trac.webkit.org/changeset/146290&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858974</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 19:01:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858981</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-03-19 19:13:02 -0700</bug_when>
    <thetext>This broke the Chromium Mac build:
http://build.webkit.org/builders/Chromium%20Mac%20Release/builds/58149

Rolling it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858985</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-03-19 19:14:49 -0700</bug_when>
    <thetext>Reverted r146290 for reason:

Broke Chromium Mac build.

Committed r146293: &lt;http://trac.webkit.org/changeset/146293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859003</commentid>
    <comment_count>16</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2013-03-19 20:02:20 -0700</bug_when>
    <thetext>FYI, this broke the Windows build too:
http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win%20Builder/builds/37214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859078</commentid>
    <comment_count>17</comment_count>
      <attachid>193987</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-19 22:33:18 -0700</bug_when>
    <thetext>Created attachment 193987
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859090</commentid>
    <comment_count>18</comment_count>
      <attachid>193987</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 23:01:50 -0700</bug_when>
    <thetext>Comment on attachment 193987
Patch for landing

Clearing flags on attachment: 193987

Committed r146304: &lt;http://trac.webkit.org/changeset/146304&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859091</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-19 23:01:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859249</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 04:37:12 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 112788</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860026</commentid>
    <comment_count>21</comment_count>
      <attachid>194183</attachid>
    <who name="">jochen</who>
    <bug_when>2013-03-20 22:13:05 -0700</bug_when>
    <thetext>Created attachment 194183
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860058</commentid>
    <comment_count>22</comment_count>
      <attachid>194183</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 23:19:15 -0700</bug_when>
    <thetext>Comment on attachment 194183
Patch for landing

Clearing flags on attachment: 194183

Committed r146439: &lt;http://trac.webkit.org/changeset/146439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860059</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-20 23:19:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193940</attachid>
            <date>2013-03-19 15:50:34 -0700</date>
            <delta_ts>2013-03-19 16:05:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112751-20130319234624.patch</filename>
            <type>text/plain</type>
            <size>154220</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTgwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODQ4ZTNlY2FlNWQ4NTMyZjdjYTM3NTc0ZGNiOTEyNjI4
NmQzOTJiNC4uZWY4ZjdjODQ2NDBhYTBiOGEwNWUwMzU4ZjcyNGYwOTIzNzRiYWVlYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4
IEBACisyMDEzLTAzLTE5ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBXZWJUaGVtZUVuZ2luZSBpbXBsZW1lbnRhdGlvbnMg
dG8gVGVzdFJ1bm5lciBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTI3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVu
ZGVyVHJlZS5neXA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
aToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHA6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJmYWNlczo6dGhlbWVFbmdpbmUpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdEludGVyZmFjZXM6OnRoZW1lRW5naW5lKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRoZW1lQ29udHJvbERSVFdpbi5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwLgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGhlbWVDb250cm9sRFJUV2luOjpXZWJUaGVtZUNvbnRyb2xEUlRXaW4pOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUaGVtZUNv
bnRyb2xEUlRXaW46On5XZWJUaGVtZUNvbnRyb2xEUlRXaW4pOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGhlbWVDb250cm9sRFJUV2luOjpib3gpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGhlbWVDb250cm9sRFJUV2luOjpsaW5lKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRoZW1lQ29udHJvbERSVFdpbjo6dHJpYW5nbGUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGhlbWVDb250cm9sRFJUV2luOjpyb3VuZFJlY3QpOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGhlbWVDb250cm9sRFJUV2luOjpvdmFsKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRoZW1lQ29udHJvbERSVFdpbjo6Y2lyY2xlKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRoZW1lQ29udHJvbERSVFdpbjo6bmVzdGVkQm94ZXMpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGhlbWVDb250cm9sRFJUV2luOjptYXJrU3RhdGUpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6V2ViVGhlbWVDb250cm9sRFJUV2luOjpkcmF3KToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRoZW1lQ29udHJvbERSVFdpbjo6ZHJhd1RleHRGaWVsZCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmRyYXdQcm9ncmVzc0Jhcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGhl
bWVDb250cm9sRFJUV2luLmg6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uaC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgor
ICAgICAgICAoV2ViVGhlbWVDb250cm9sRFJUV2luKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUaGVtZUVuZ2luZURSVE1hYy5oOiBSZW5hbWVk
IGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMu
aC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGhlbWVFbmdpbmVEUlRN
YWMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRoZW1lRW5naW5lRFJUTWFjLm1tOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0uCisgICAgICAgICgrW0Zha2VBY3RpdmVX
aW5kb3cgYWx3YXlzQWN0aXZlV2luZG93XSk6CisgICAgICAgICgrW0Zha2VBY3RpdmVXaW5kb3cg
YWx3YXlzSW5hY3RpdmVXaW5kb3ddKToKKyAgICAgICAgKC1bRmFrZUFjdGl2ZVdpbmRvdyBpbml0
V2l0aEFjdGl2ZUNvbnRyb2xzOl0pOgorICAgICAgICAoLVtGYWtlQWN0aXZlV2luZG93IF9oYXNB
Y3RpdmVDb250cm9sc10pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGhlbWVFbmdpbmVE
UlRNYWM6OnBhaW50U2Nyb2xsYmFyVGh1bWIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6Cisg
ICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUaGVtZUVuZ2luZURSVE1hYzo6cGFpbnRISVRoZW1l
U2Nyb2xsYmFyVGh1bWIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGhlbWVFbmdpbmVE
UlRNYWM6OnBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUaGVtZUVuZ2luZURSVFdpbi5jcHA6
IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2lu
ZURSVFdpbi5jcHAuCisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUaGVtZUVuZ2luZURSVFdp
bjo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRNZW51TGlzdCk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRTY3JvbGxiYXJBcnJv
dyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRT
Y3JvbGxiYXJUaHVtYik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUaGVtZUVuZ2luZURS
VFdpbjo6cGFpbnRTY3JvbGxiYXJUcmFjayk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJU
aGVtZUVuZ2luZURSVFdpbjo6cGFpbnRTcGluQnV0dG9uKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludFRleHRGaWVsZCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRUcmFja2Jhcik6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRQcm9ncmVzc0Jhcik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUaGVtZUVuZ2luZURSVFdpbjo6Z2V0U2l6ZSk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGhl
bWVFbmdpbmVEUlRXaW4uaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmguCisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAg
ICAgICAgKFdlYlRoZW1lRW5naW5lRFJUV2luKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlRoZW1lRW5naW5lRFJUV2luOjpXZWJUaGVtZUVuZ2luZURSVFdpbik6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxs
Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbE1hYy5tbToKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcDoKKyAgICAgICAgKHBsYXRmb3Jt
SW5pdCk6CisKIDIwMTMtMDMtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgU3R5bGUgdHdlZWtzIHRvIGRlZmF1bHQuY3NzLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJl
ZS5neXAKaW5kZXggMjFiMTAzMGFhMWJiN2E5Nzc2ZjNkZGRiOGFlYjY1NWFiM2VjMTJlYy4uYmRj
ZTNkODBkMGE4MWRlZGZjMjliYjlmNzNhNDg3ZmViZTFhZDg4YSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUu
Z3lwCkBAIC0xNTQsNiArMTU0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAnPChzb3Vy
Y2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0aycsCiAgICAgICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgWydPUyE9IndpbiInLCB7
CisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFsnZXhjbHVkZScsICdXaW5cXC5jcHAkJ10sCisgICAgICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgIyBEaXNhYmxl
IGM0MjY3IHdhcm5pbmdzIHVudGlsIHdlIGZpeCBzaXplX3QgdG8gaW50IHRydW5jYXRpb25zLiAK
ICAgICAgICAgICAgICdtc3ZzX2Rpc2FibGVkX3dhcm5pbmdzJzogWyA0MjY3LCBdLApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggY2Q0NzU1YWEzYzkzZTVjMzU0
ZmJkZDAyMzFiNjRiMWUxNGNkZmU0MS4uNGIxMjE2NzU3MDAxNWIzMzQzN2M2MDMwOTg4NGIzYTYz
ZWEwNjI2NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
Z3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0y
NiwxMiArMjYsNiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RTaGVsbFN0dWIuY3BwJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0U2hlbGxYMTEuY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVt
ZUNvbnRyb2xEUlRXaW4uY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVtZUNvbnRy
b2xEUlRXaW4uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMu
bW0nLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLmgnLAotICAg
ICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmNwcCcsCi0gICAgICAgICAg
ICAnY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5o
JywKICAgICAgICAgXSwKQEAgLTk1LDYgKzg5LDEyIEBACiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGhlbWVDb250cm9sRFJUV2luLmNwcCcsCisgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGhlbWVDb250cm9sRFJUV2luLmgnLAorICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRoZW1lRW5naW5lRFJUTWFjLm1tJywK
KyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUaGVtZUVuZ2luZURSVE1h
Yy5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUaGVtZUVuZ2lu
ZURSVFdpbi5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRo
ZW1lRW5naW5lRFJUV2luLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgnLAogICAgICAgICBdLApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2Vi
VGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKaW5kZXggNDUyYzE0OTFlNWFhYjgzOTYxYjJl
NjE2NDM4MjMwN2Y2N2RiZjJhOC4uYThiZmY4MGZjMzU0OTQ1OGNjMDg3YTA3ZTFmODQ5N2FhNzg4
OWIzYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCkBAIC00MCw2ICs0
MCw3IEBAIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyOwogY2xhc3MgV2ViTWVkaWFTdHJlYW1D
ZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7CitjbGFzcyBXZWJUaGVtZUVuZ2luZTsK
IGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlZpZXc7CiB9CkBAIC02NCw2ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbmZpZ3VyZUZvclRlc3RXaXRoVVJMKGNvbnN0IFdlYktpdDo6V2ViVVJM
JiwgYm9vbCBnZW5lcmF0ZVBpeGVscyk7CiAKICAgICBXZWJUZXN0UnVubmVyKiB0ZXN0UnVubmVy
KCk7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZSogdGhlbWVFbmdpbmUoKTsKIAogICAgIFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXIqIGNyZWF0ZU1lZGlhU3RyZWFtQ2VudGVyKFdlYktp
dDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQqKTsKICAgICBXZWJLaXQ6OldlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlciogY3JlYXRlV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKFdlYktp
dDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Kik7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5jcHAKaW5kZXggNGQ4YTAwYzk2Y2ZjOWFjYjNkMGM3MzZjMjM2ZjE2ZGE3OWY2MjNj
NC4uZWZkNjg2NGE5NDc5YTJhZjJjNzAwODM1NGMwNjIyNDE5ZWM3MzMyYSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFj
ZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RJbnRlcmZhY2VzLmNwcApAQCAtNDMsNiArNDMsMTIgQEAKICNpbmNsdWRlIDxwdWJsaWMv
V2ViVVJMLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogCisjaWYgZGVmaW5lZChXSU4zMikKKyNpbmNs
dWRlICJXZWJUaGVtZUVuZ2luZURSVFdpbi5oIgorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisj
aW5jbHVkZSAiV2ViVGhlbWVFbmdpbmVEUlRNYWMuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMjE1LDQgKzIyMSwxOSBAQCBj
b25zdCB2ZWN0b3I8V2ViVGVzdFByb3h5QmFzZSo+JiBUZXN0SW50ZXJmYWNlczo6d2luZG93TGlz
dCgpCiAgICAgcmV0dXJuIG1fd2luZG93TGlzdDsKIH0KIAorV2ViVGhlbWVFbmdpbmUqIFRlc3RJ
bnRlcmZhY2VzOjp0aGVtZUVuZ2luZSgpCit7CisjaWYgZGVmaW5lZChVU0VfREVGQVVMVF9SRU5E
RVJfVEhFTUUpIHx8ICEoZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfX0FQUExFX18pKQorICAg
IHJldHVybiAwOworI2VsaWYgZGVmaW5lZChXSU4zMikKKyAgICBpZiAobV90aGVtZUVuZ2luZS5n
ZXQoKSkKKyAgICAgICAgbV90aGVtZUVuZ2luZS5yZXNldChuZXcgV2ViVGhlbWVFbmdpbmVEUlRX
aW4oKSk7CisgICAgcmV0dXJuIG1fdGhlbWVFbmdpbmUuZ2V0KCk7CisjZWxpZiBkZWZpbmVkKF9f
QVBQTEVfXykKKyAgICBpZiAobV90aGVtZUVuZ2luZS5nZXQoKSkKKyAgICAgICAgbV90aGVtZUVu
Z2luZS5yZXNldChuZXcgV2ViVGhlbWVFbmdpbmVEUlRNYWMoKSk7CisgICAgcmV0dXJuIG1fdGhl
bWVFbmdpbmUuZ2V0KCk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgK
aW5kZXggYjZiMzAxYTc5MGMzNGRjMTI4OGEwNWJlZTllMzY0ZWFiY2ZlMTI5ZC4uN2Y4OTUzYTg0
YjRjMWYxNjU1ZDM1YTkzYWVmZDdhZDA1ZDdlZDZjYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNl
cy5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJh
bWU7CitjbGFzcyBXZWJUaGVtZUVuZ2luZTsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlZpZXc7
CiB9CkBAIC03Miw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICBXZWJUZXN0RGVsZWdhdGUqIGRlbGVn
YXRlKCk7CiAgICAgV2ViVGVzdFByb3h5QmFzZSogcHJveHkoKTsKICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxXZWJUZXN0UHJveHlCYXNlKj4mIHdpbmRvd0xpc3QoKTsKKyAgICBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lKiB0aGVtZUVuZ2luZSgpOwogCiBwcml2YXRlOgogICAgIHN0ZDo6YXV0b19wdHI8
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CkBAIC04
NCw2ICs4Niw5IEBAIHByaXZhdGU6CiAgICAgV2ViVGVzdFByb3h5QmFzZSogbV9wcm94eTsKIAog
ICAgIHN0ZDo6dmVjdG9yPFdlYlRlc3RQcm94eUJhc2UqPiBtX3dpbmRvd0xpc3Q7CisjaWYgIWRl
ZmluZWQoVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FKSAmJiAoZGVmaW5lZChXSU4zMikgfHwgZGVm
aW5lZChfX0FQUExFX18pKQorICAgIHN0ZDo6YXV0b19wdHI8V2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZT4gbV90aGVtZUVuZ2luZTsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdElu
dGVyZmFjZXMuY3BwCmluZGV4IDJhMTc2ZDc2MzlhOTMwNTg5NDAyMDVhYzJmMDU4MzhkNGE2MmY2
MzIuLmMyZGJkMTY5YmNmZGZhMjlmMDQ0ZWM3NDNhMDFkMjcyNjE3YTMyZmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRl
cmZhY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTg0LDYgKzg0LDExIEBAIFdlYlRlc3RSdW5u
ZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkKICAgICByZXR1cm4gbV9pbnRlcmZh
Y2VzLT50ZXN0UnVubmVyKCk7CiB9CiAKK1dlYlRoZW1lRW5naW5lKiBXZWJUZXN0SW50ZXJmYWNl
czo6dGhlbWVFbmdpbmUoKQoreworICAgIHJldHVybiBtX2ludGVyZmFjZXMtPnRoZW1lRW5naW5l
KCk7Cit9CisKIFRlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50ZXJmYWNlczo6dGVzdEludGVyZmFj
ZXMoKQogewogICAgIHJldHVybiBtX2ludGVyZmFjZXMuZ2V0KCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUaGVtZUNvbnRyb2xE
UlRXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
V2ViVGhlbWVDb250cm9sRFJUV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NjU5MzU2NTNkNzk0OTI2NjUy
YTFmYmMyNjZiZWI3MjJkYWZmNjM3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGhlbWVDb250cm9sRFJUV2luLmNwcApA
QCAtMCwwICsxLDQ5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgc2ltcGxlIGdlbmVyaWMg
dmVyc2lvbiBvZiB0aGUgV2ViVGhlbWVFbmdpbmUsCisvLyB3aGljaCBpcyB1c2VkIHRvIGRyYXcg
YWxsIHRoZSBuYXRpdmUgY29udHJvbHMgb24gYSB3ZWIgcGFnZS4gV2UgdXNlIHRoaXMKKy8vIGZp
bGUgd2hlbiBydW5uaW5nIGluIGxheW91dCB0ZXN0IG1vZGUgaW4gb3JkZXIgdG8gcmVtb3ZlIGFu
eQorLy8gcGxhdGZvcm0tc3BlY2lmaWMgcmVuZGVyaW5nIGRpZmZlcmVuY2VzIGR1ZSB0byB0aGVt
ZXMsIGNvbG9ycywgZXRjLgorLy8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YlRoZW1lQ29udHJvbERSVFdpbi5oIgorCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgorI2luY2x1
ZGUgInNraWEvZXh0L3NraWFfdXRpbHNfd2luLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tp
YS9pbmNsdWRlL2NvcmUvU2tDYW52YXMuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2lu
Y2x1ZGUvY29yZS9Ta1BhaW50LmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRl
L2NvcmUvU2tQYXRoLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUv
U2tSZWN0LmgiCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7
CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworbmFtZXNwYWNlIHsKKworY29uc3QgU2tD
b2xvciBlZGdlQ29sb3IgICAgID0gU0tfQ29sb3JCTEFDSzsKK2NvbnN0IFNrQ29sb3IgcmVhZE9u
bHlDb2xvciA9IFNrQ29sb3JTZXRSR0IoMHhlOSwgMHhjMiwgMHhhNik7Citjb25zdCBTa0NvbG9y
IGZnQ29sb3IgICAgICAgPSBTS19Db2xvckJMQUNLOworY29uc3QgU2tDb2xvciBiZ0NvbG9yc1td
ICAgID0geworICAgIFNLX0NvbG9yQkxBQ0ssIC8vIFVua25vd24KKyAgICBTa0NvbG9yU2V0UkdC
KDB4YzksIDB4YzksIDB4YzkpLCAvLyBEaXNhYmxlZAorICAgIFNrQ29sb3JTZXRSR0IoMHhmMywg
MHhlMCwgMHhkMCksIC8vIFJlYWRvbmx5CisgICAgU2tDb2xvclNldFJHQigweDg5LCAweGM0LCAw
eGZmKSwgLy8gTm9ybWFsCisgICAgU2tDb2xvclNldFJHQigweDQzLCAweGY5LCAweGZmKSwgLy8g
SG90CisgICAgU2tDb2xvclNldFJHQigweDIwLCAweGY2LCAweGNjKSwgLy8gRm9jdXNlZAorICAg
IFNrQ29sb3JTZXRSR0IoMHgwMCwgMHhmMywgMHhhYyksIC8vIEhvdmVyCisgICAgU2tDb2xvclNl
dFJHQigweGE5LCAweGZmLCAweDEyKSwgLy8gUHJlc3NlZAorICAgIFNrQ29sb3JTZXRSR0IoMHhj
YywgMHhjYywgMHhjYykgLy8gSW5kZXRlcm1pbmF0ZQorfTsKKworU2tJUmVjdCB2YWxpZGF0ZShj
b25zdCBTa0lSZWN0JiByZWN0LCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUpCit7
CisgICAgc3dpdGNoIChjdHlwZSkgeworICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUV2luOjpV
bmNoZWNrZWRCb3hUeXBlOgorICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2Vk
Qm94VHlwZToKKyAgICBjYXNlIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2VkUmFkaW9U
eXBlOgorICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkUmFkaW9UeXBlOiB7
CisgICAgICAgIFNrSVJlY3QgcmV0dmFsID0gcmVjdDsKKworICAgICAgICAvLyBUaGUgbWF4aW11
bSB3aWR0aCBhbmQgaGVpZ2h0IGlzIDEzLgorICAgICAgICAvLyBDZW50ZXIgdGhlIHNxdWFyZSBp
biB0aGUgcGFzc2VkIHJlY3RhbmdsZS4KKyAgICAgICAgY29uc3QgaW50IG1heENvbnRyb2xTaXpl
ID0gMTM7CisgICAgICAgIGludCBjb250cm9sU2l6ZSA9IHN0ZDo6bWluKHJlY3Qud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRyb2xTaXplID0gc3RkOjptaW4oY29udHJvbFNp
emUsIG1heENvbnRyb2xTaXplKTsKKworICAgICAgICByZXR2YWwuZkxlZnQgICA9IHJlY3QuZkxl
ZnQgKyAocmVjdC53aWR0aCgpIC8gMikgLSAoY29udHJvbFNpemUgLyAyKTsKKyAgICAgICAgcmV0
dmFsLmZSaWdodCAgPSByZXR2YWwuZkxlZnQgKyBjb250cm9sU2l6ZSAtIDE7CisgICAgICAgIHJl
dHZhbC5mVG9wICAgID0gcmVjdC5mVG9wICsgKHJlY3QuaGVpZ2h0KCkgLyAyKSAtIChjb250cm9s
U2l6ZSAvIDIpOworICAgICAgICByZXR2YWwuZkJvdHRvbSA9IHJldHZhbC5mVG9wICsgY29udHJv
bFNpemUgLSAxOworCisgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgfQorCisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIHJlY3Q7CisgICAgfQorfQorCit9CisKK1dlYlRoZW1lQ29udHJv
bERSVFdpbjo6V2ViVGhlbWVDb250cm9sRFJUV2luKFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IFNr
SVJlY3QmIGlyZWN0LCBUeXBlIGN0eXBlLCBTdGF0ZSBjc3RhdGUpCisgICAgOiBtX2NhbnZhcyhj
YW52YXMpCisgICAgLCBtX2lyZWN0KHZhbGlkYXRlKGlyZWN0LCBjdHlwZSkpCisgICAgLCBtX3R5
cGUoY3R5cGUpCisgICAgLCBtX3N0YXRlKGNzdGF0ZSkKKyAgICAsIG1fbGVmdChtX2lyZWN0LmZM
ZWZ0KQorICAgICwgbV9yaWdodChtX2lyZWN0LmZSaWdodCkKKyAgICAsIG1fdG9wKG1faXJlY3Qu
ZlRvcCkKKyAgICAsIG1fYm90dG9tKG1faXJlY3QuZkJvdHRvbSkKKyAgICAsIG1faGVpZ2h0KG1f
aXJlY3QuaGVpZ2h0KCkpCisgICAgLCBtX3dpZHRoKG1faXJlY3Qud2lkdGgoKSkKKyAgICAsIG1f
ZWRnZUNvbG9yKGVkZ2VDb2xvcikKKyAgICAsIG1fYmdDb2xvcihiZ0NvbG9yc1tjc3RhdGVdKQor
ICAgICwgbV9mZ0NvbG9yKGZnQ29sb3IpCit7Cit9CisKK1dlYlRoZW1lQ29udHJvbERSVFdpbjo6
fldlYlRoZW1lQ29udHJvbERSVFdpbigpCit7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJU
V2luOjpib3goY29uc3QgU2tJUmVjdCYgcmVjdCwgU2tDb2xvciBmaWxsQ29sb3IpCit7CisgICAg
U2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxl
KTsKKyAgICBwYWludC5zZXRDb2xvcihmaWxsQ29sb3IpOworICAgIG1fY2FudmFzLT5kcmF3SVJl
Y3QocmVjdCwgcGFpbnQpOworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAg
IHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5k
cmF3SVJlY3QocmVjdCwgcGFpbnQpOworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
bGluZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIFNrQ29sb3IgY29sb3IpCit7Cisg
ICAgU2tQYWludCBwYWludDsKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgbV9jYW52
YXMtPmRyYXdMaW5lKFNrSW50VG9TY2FsYXIoeDApLCBTa0ludFRvU2NhbGFyKHkwKSwgU2tJbnRU
b1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEpLCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGhl
bWVDb250cm9sRFJUV2luOjp0cmlhbmdsZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEs
IGludCB4MiwgaW50IHkyLCBTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUGF0aCBwYXRoOworICAg
IFNrUGFpbnQgcGFpbnQ7CisKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQu
c2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIHBhdGguaW5jUmVzZXJ2ZSg0KTsK
KyAgICBwYXRoLm1vdmVUbyhTa0ludFRvU2NhbGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCkpOwor
ICAgIHBhdGgubGluZVRvKFNrSW50VG9TY2FsYXIoeDEpLCBTa0ludFRvU2NhbGFyKHkxKSk7Cisg
ICAgcGF0aC5saW5lVG8oU2tJbnRUb1NjYWxhcih4MiksIFNrSW50VG9TY2FsYXIoeTIpKTsKKyAg
ICBwYXRoLmNsb3NlKCk7CisgICAgbV9jYW52YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsKKwor
ICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1Bh
aW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQp
OworfQorCit2b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6cm91bmRSZWN0KFNrQ29sb3IgY29s
b3IpCit7CisgICAgU2tSZWN0IHJlY3Q7CisgICAgU2tTY2FsYXIgcmFkaXVzID0gU2tJbnRUb1Nj
YWxhcig1KTsKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcmVjdC5zZXQobV9pcmVjdCk7Cisg
ICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtG
aWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd1JvdW5kUmVjdChyZWN0LCByYWRpdXMsIHJh
ZGl1cywgcGFpbnQpOworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBh
aW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3
Um91bmRSZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGhl
bWVDb250cm9sRFJUV2luOjpvdmFsKFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tSZWN0IHJlY3Q7
CisgICAgU2tQYWludCBwYWludDsKKworICAgIHJlY3Quc2V0KG1faXJlY3QpOworICAgIHBhaW50
LnNldENvbG9yKGNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHls
ZSk7CisgICAgbV9jYW52YXMtPmRyYXdPdmFsKHJlY3QsIHBhaW50KTsKKworICAgIHBhaW50LnNl
dENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tl
X1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd092YWwocmVjdCwgcGFpbnQpOworfQorCit2b2lk
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Y2lyY2xlKFNrU2NhbGFyIHJhZGl1cywgU2tDb2xvciBj
b2xvcikKK3sKKyAgICBTa1NjYWxhciBjeSA9IFNrSW50VG9TY2FsYXIobV90b3AgICsgbV9oZWln
aHQgLyAyKTsKKyAgICBTa1NjYWxhciBjeCA9IFNrSW50VG9TY2FsYXIobV9sZWZ0ICsgbV93aWR0
aCAvIDIpOworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7
CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFz
LT5kcmF3Q2lyY2xlKGN4LCBjeSwgcmFkaXVzLCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xv
cihtX2VkZ2VDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHls
ZSk7CisgICAgbV9jYW52YXMtPmRyYXdDaXJjbGUoY3gsIGN5LCByYWRpdXMsIHBhaW50KTsKK30K
Kwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Om5lc3RlZEJveGVzKGludCBpbmRlbnRMZWZ0
LCBpbnQgaW5kZW50VG9wLCBpbnQgaW5kZW50UmlnaHQsIGludCBpbmRlbnRCb3R0b20sIFNrQ29s
b3Igb3V0ZXJDb2xvciwgU2tDb2xvciBpbm5lckNvbG9yKQoreworICAgIFNrSVJlY3QgbGlyZWN0
OworICAgIGJveChtX2lyZWN0LCBvdXRlckNvbG9yKTsKKyAgICBsaXJlY3Quc2V0KG1faXJlY3Qu
ZkxlZnQgKyBpbmRlbnRMZWZ0LCBtX2lyZWN0LmZUb3AgKyBpbmRlbnRUb3AsIG1faXJlY3QuZlJp
Z2h0IC0gaW5kZW50UmlnaHQsIG1faXJlY3QuZkJvdHRvbSAtIGluZGVudEJvdHRvbSk7CisgICAg
Ym94KGxpcmVjdCwgaW5uZXJDb2xvcik7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2lu
OjptYXJrU3RhdGUoKQoreworICAgIC8vIFRoZSBob3Jpem9udGFsIGxpbmVzIGluIGEgcmVhZCBv
bmx5IGNvbnRyb2wgYXJlIHNwYWNlZCBieSB0aGlzIGFtb3VudC4KKyAgICBjb25zdCBpbnQgcmVh
ZE9ubHlMaW5lT2Zmc2V0ID0gNTsKKworICAgIC8vIFRoZSBsZW5ndGggb2YgYSB0cmlhbmdsZSBz
aWRlIGZvciB0aGUgY29ybmVyIG1hcmtzLgorICAgIGNvbnN0IGludCB0cmlhbmdsZVNpemUgPSA1
OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBVbmtub3duU3RhdGU6CisgICAg
Y2FzZSBEaXNhYmxlZFN0YXRlOgorICAgIGNhc2UgTm9ybWFsU3RhdGU6CisgICAgY2FzZSBJbmRl
dGVybWluYXRlU3RhdGU6CisgICAgICAgIC8vIERvbid0IHZpc3VhbGx5IG1hcmsgdGhlc2Ugc3Rh
dGVzIChjb2xvciBpcyBlbm91Z2gpLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWRPbmx5
U3RhdGU6CisgICAgICAgIC8vIERyYXdpbmcgbGluZXMgYWNyb3NzIHRoZSBjb250cm9sLgorICAg
ICAgICBmb3IgKGludCBpID0gbV90b3AgKyByZWFkT25seUxpbmVPZmZzZXQ7IGkgPCBtX2JvdHRv
bTsgaSArPSByZWFkT25seUxpbmVPZmZzZXQpCisgICAgICAgICAgICBsaW5lKG1fbGVmdCArIDEs
IGksIG1fcmlnaHQgLSAxLCBpLCByZWFkT25seUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIEhvdFN0YXRlOgorICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIHVwcGVy
IGxlZnQgY29ybmVyIG9mIHRoZSBjb250cm9sLgorICAgICAgICB0cmlhbmdsZShtX2xlZnQsIG1f
dG9wLCBtX2xlZnQgKyB0cmlhbmdsZVNpemUsIG1fdG9wLCBtX2xlZnQsIG1fdG9wICsgdHJpYW5n
bGVTaXplLCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIb3ZlclN0
YXRlOgorICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIHVwcGVyIHJpZ2h0IGNvcm5l
ciBvZiB0aGUgY29udHJvbC4KKyAgICAgICAgdHJpYW5nbGUobV9yaWdodCwgbV90b3AsIG1fcmln
aHQsIG1fdG9wICsgdHJpYW5nbGVTaXplLCBtX3JpZ2h0IC0gdHJpYW5nbGVTaXplLCBtX3RvcCwg
bV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRm9jdXNlZFN0YXRlOgor
ICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIGJvdHRvbSByaWdodCBjb3JuZXIgb2Yg
dGhlIGNvbnRyb2wuCisgICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQsIG1fYm90dG9tLCBtX3JpZ2h0
IC0gdHJpYW5nbGVTaXplLCBtX2JvdHRvbSwgbV9yaWdodCwgbV9ib3R0b20gLSB0cmlhbmdsZVNp
emUsIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFByZXNzZWRTdGF0
ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSBib3R0b20gbGVmdCBjb3JuZXIg
b2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRyaWFuZ2xlKG1fbGVmdCwgbV9ib3R0b20sIG1fbGVm
dCwgbV9ib3R0b20gLSB0cmlhbmdsZVNpemUsIG1fbGVmdCArIHRyaWFuZ2xlU2l6ZSwgbV9ib3R0
b20sIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAg
ICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kwordm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmRyYXcoKQoreworICAgIGludCBoYWxmV2lk
dGggPSBtX3dpZHRoIC8gMjsKKyAgICBpbnQgaGFsZkhlaWdodCA9IG1faGVpZ2h0IC8gMjsKKyAg
ICBpbnQgcXVhcnRlcldpZHRoID0gbV93aWR0aCAvIDQ7CisgICAgaW50IHF1YXJ0ZXJIZWlnaHQg
PSBtX2hlaWdodCAvIDQ7CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3IgdGhlIGNoZWNrIGlu
IGEgY2hlY2tib3ggb3IgcmFkaW8gYnV0dG9uLgorICAgIGNvbnN0IGludCBjaGVja0luZGVudCA9
IDM7CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3Igc2hvcnQgYW5kIGxvbmcgc2lkZXMgb2Yg
dGhlIHNjcm9sbGJhciBub3RjaGVzLgorICAgIGNvbnN0IGludCBub3RjaExvbmdPZmZzZXQgPSAx
OworICAgIGNvbnN0IGludCBub3RjaFNob3J0T2Zmc2V0ID0gNDsKKyAgICBjb25zdCBpbnQgbm9P
ZmZzZXQgPSAwOworCisgICAgLy8gSW5kZW50IGFtb3VudHMgZm9yIHRoZSBzaG9ydCBhbmQgbG9u
ZyBzaWRlcyBvZiBhIHNjcm9sbCB0aHVtYiBib3guCisgICAgY29uc3QgaW50IHRodW1iTG9uZ0lu
ZGVudCA9IDA7CisgICAgY29uc3QgaW50IHRodW1iU2hvcnRJbmRlbnQgPSAyOworCisgICAgLy8g
SW5kZW50cyBmb3IgdGhlIGNyb3NzaGF0Y2ggb24gYSBzY3JvbGwgZ3JpcC4KKyAgICBjb25zdCBp
bnQgZ3JpcExvbmdJbmRlbnQgPSAzOworICAgIGNvbnN0IGludCBncmlwU2hvcnRJbmRlbnQgPSA1
OworCisgICAgLy8gSW5kZW50cyBmb3IgdGhlIHRoZSBzbGlkZXIgdHJhY2suCisgICAgY29uc3Qg
aW50IHNsaWRlckluZGVudCA9IDI7CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2Ug
VW5rbm93blR5cGU6CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFRleHRGaWVsZFR5cGU6CisgICAgICAgIC8vIFdlIHJlbmRl
ciB0aGlzIGJ5IGhhbmQgb3V0c2lkZSBvZiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQdXNoQnV0
dG9uVHlwZToKKyAgICAgICAgLy8gcHVzaCBidXR0b25zIHJlbmRlciBhcyBhIHJvdW5kZWQgcmVj
dGFuZ2xlCisgICAgICAgIHJvdW5kUmVjdChtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgVW5jaGVja2VkQm94VHlwZToKKyAgICAgICAgLy8gVW5jaGVja2VkIGJveGVzIGFy
ZSBzaW1wbHkgcGxhaW4gYm94ZXMuCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ2hlY2tlZEJveFR5cGU6CisgICAgICAgIG5lc3Rl
ZEJveGVzKGNoZWNrSW5kZW50LCBjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIGNoZWNrSW5kZW50
LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJbmRl
dGVybWluYXRlQ2hlY2tib3hUeXBlOgorICAgICAgICAvLyBJbmRldGVybWluYXRlIGNoZWNrYm94
IGlzIGEgYm94IGNvbnRhaW5pbmcgJy0nLgorICAgICAgICBuZXN0ZWRCb3hlcyhjaGVja0luZGVu
dCwgaGFsZkhlaWdodCwgY2hlY2tJbmRlbnQsIGhhbGZIZWlnaHQsIG1fYmdDb2xvciwgbV9mZ0Nv
bG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFVuY2hlY2tlZFJhZGlvVHlwZToKKyAg
ICAgICAgY2lyY2xlKFNrSW50VG9TY2FsYXIoaGFsZkhlaWdodCksIG1fYmdDb2xvcik7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBDaGVja2VkUmFkaW9UeXBlOgorICAgICAgICBjaXJjbGUo
U2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0KSwgbV9iZ0NvbG9yKTsKKyAgICAgICAgY2lyY2xlKFNr
SW50VG9TY2FsYXIoaGFsZkhlaWdodCAtIGNoZWNrSW5kZW50KSwgbV9mZ0NvbG9yKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEhvcml6b250YWxTY3JvbGxUcmFja0JhY2tUeXBlOiB7Cisg
ICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSBsZWZ0LgorICAgICAgICBp
bnQgbG9uZ09mZnNldCA9IGhhbGZIZWlnaHQgLSBub3RjaExvbmdPZmZzZXQ7CisgICAgICAgIGlu
dCBzaG9ydE9mZnNldCA9IG1fd2lkdGggLSBub3RjaFNob3J0T2Zmc2V0OworICAgICAgICBuZXN0
ZWRCb3hlcyhub09mZnNldCwgbG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIG1f
YmdDb2xvciwgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNl
IEhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOiB7CisgICAgICAgIC8vIERyYXcgYSBi
b3ggd2l0aCBhIG5vdGNoIGF0IHRoZSByaWdodC4KKyAgICAgICAgaW50IGxvbmdPZmZzZXQgID0g
aGFsZkhlaWdodCAtIG5vdGNoTG9uZ09mZnNldDsKKyAgICAgICAgaW50IHNob3J0T2Zmc2V0ID0g
bV93aWR0aCAtIG5vdGNoU2hvcnRPZmZzZXQ7CisgICAgICAgIG5lc3RlZEJveGVzKHNob3J0T2Zm
c2V0LCBsb25nT2Zmc2V0LCBub09mZnNldCwgbG9uZ09mZnNldCwgbV9iZ0NvbG9yLCBtX2ZnQ29s
b3IpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsVHJh
Y2tCYWNrVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUg
dG9wLgorICAgICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmV2lkdGggLSBub3RjaExvbmdPZmZz
ZXQ7CisgICAgICAgIGludCBzaG9ydE9mZnNldCA9IG1faGVpZ2h0IC0gbm90Y2hTaG9ydE9mZnNl
dDsKKyAgICAgICAgbmVzdGVkQm94ZXMobG9uZ09mZnNldCwgbm9PZmZzZXQsIGxvbmdPZmZzZXQs
IHNob3J0T2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGNhc2UgVmVydGljYWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOiB7CisgICAgICAg
IC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSBib3R0b20uCisgICAgICAgIGludCBs
b25nT2Zmc2V0ICA9IGhhbGZXaWR0aCAtIG5vdGNoTG9uZ09mZnNldDsKKyAgICAgICAgaW50IHNo
b3J0T2Zmc2V0ID0gbV9oZWlnaHQgLSBub3RjaFNob3J0T2Zmc2V0OworICAgICAgICBuZXN0ZWRC
b3hlcyhsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbm9PZmZzZXQsIG1fYmdD
b2xvciwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBIb3Jp
em9udGFsU2Nyb2xsVGh1bWJUeXBlOgorICAgICAgICAvLyBEcmF3IGEgbmFycm93ZXIgYm94IG9u
IHRvcCBvZiB0aGUgb3V0c2lkZSBib3guCisgICAgICAgIG5lc3RlZEJveGVzKHRodW1iTG9uZ0lu
ZGVudCwgdGh1bWJTaG9ydEluZGVudCwgdGh1bWJMb25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50
LCBtX2JnQ29sb3IsIG1fYmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBWZXJ0
aWNhbFNjcm9sbFRodW1iVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIHNob3J0ZXIgYm94IG9uIHRv
cCBvZiB0aGUgb3V0c2lkZSBib3guCisgICAgICAgIG5lc3RlZEJveGVzKHRodW1iU2hvcnRJbmRl
bnQsIHRodW1iTG9uZ0luZGVudCwgdGh1bWJTaG9ydEluZGVudCwgdGh1bWJMb25nSW5kZW50LCBt
X2JnQ29sb3IsIG1fYmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIb3Jpem9u
dGFsU2xpZGVyVGh1bWJUeXBlOgorICAgIGNhc2UgVmVydGljYWxTbGlkZXJUaHVtYlR5cGU6Cisg
ICAgICAgIC8vIFNsaWRlciB0aHVtYnMgYXJlIG92YWxzLgorICAgICAgICBvdmFsKG1fYmdDb2xv
cik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsR3JpcFR5cGU6
IHsKKyAgICAgICAgLy8gRHJhdyBhIGhvcml6b250YWwgY3Jvc3NoYXRjaCBmb3IgdGhlIGdyaXAu
CisgICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZldpZHRoIC0gZ3JpcExvbmdJbmRlbnQ7Cisg
ICAgICAgIGxpbmUobV9sZWZ0ICsgZ3JpcExvbmdJbmRlbnQsIG1fdG9wICsgaGFsZkhlaWdodCwg
bV9yaWdodCAtIGdyaXBMb25nSW5kZW50LCBtX3RvcCArIGhhbGZIZWlnaHQsIG1fZmdDb2xvcik7
CisgICAgICAgIGxpbmUobV9sZWZ0ICsgbG9uZ09mZnNldCwgbV90b3AgKyBncmlwU2hvcnRJbmRl
bnQsIG1fbGVmdCArIGxvbmdPZmZzZXQsIG1fYm90dG9tIC0gZ3JpcFNob3J0SW5kZW50LCBtX2Zn
Q29sb3IpOworICAgICAgICBsaW5lKG1fcmlnaHQgLSBsb25nT2Zmc2V0LCBtX3RvcCArIGdyaXBT
aG9ydEluZGVudCwgbV9yaWdodCAtIGxvbmdPZmZzZXQsIG1fYm90dG9tIC0gZ3JpcFNob3J0SW5k
ZW50LCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFZlcnRp
Y2FsU2Nyb2xsR3JpcFR5cGU6IHsKKyAgICAgICAgLy8gRHJhdyBhIHZlcnRpY2FsIGNyb3NzaGF0
Y2ggZm9yIHRoZSBncmlwLgorICAgICAgICBpbnQgbG9uZ09mZnNldCA9IGhhbGZIZWlnaHQgLSBn
cmlwTG9uZ0luZGVudDsKKyAgICAgICAgbGluZShtX2xlZnQgKyBoYWxmV2lkdGgsIG1fdG9wICsg
Z3JpcExvbmdJbmRlbnQsIG1fbGVmdCArIGhhbGZXaWR0aCwgbV9ib3R0b20gLSBncmlwTG9uZ0lu
ZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgbGluZShtX2xlZnQgKyBncmlwU2hvcnRJbmRlbnQs
IG1fdG9wICsgbG9uZ09mZnNldCwgbV9yaWdodCAtIGdyaXBTaG9ydEluZGVudCwgbV90b3AgKyBs
b25nT2Zmc2V0LCBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCArIGdyaXBTaG9ydElu
ZGVudCwgbV9ib3R0b20gLSBsb25nT2Zmc2V0LCBtX3JpZ2h0IC0gZ3JpcFNob3J0SW5kZW50LCBt
X2JvdHRvbSAtIGxvbmdPZmZzZXQsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgTGVmdEFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhIGxlZnQgYXJyb3cg
aW5zaWRlIGEgYm94LgorICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAg
dHJpYW5nbGUobV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AgKyBxdWFydGVySGVpZ2h0LCBt
X3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fbGVmdCAr
IHF1YXJ0ZXJXaWR0aCwgbV90b3AgKyBoYWxmSGVpZ2h0LCBtX2ZnQ29sb3IpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgUmlnaHRBcnJvd1R5cGU6CisgICAgICAgIC8vIERyYXcgYSBsZWZ0
IGFycm93IGluc2lkZSBhIGJveC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7Cisg
ICAgICAgIHRyaWFuZ2xlKG1fbGVmdCArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgKyBxdWFydGVySGVp
Z2h0LCBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCArIGhhbGZIZWlnaHQsIG1fbGVmdCAr
IHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29sb3IpOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgVXBBcnJvd1R5cGU6CisgICAgICAgIC8vIERyYXcgYW4g
dXAgYXJyb3cgaW5zaWRlIGEgYm94LgorICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsK
KyAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICsgcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0
ZXJIZWlnaHQsIG1fbGVmdCArIGhhbGZXaWR0aCwgbV90b3AgKyBxdWFydGVySGVpZ2h0LCBtX3Jp
Z2h0IC0gcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBEb3duQXJyb3dUeXBlOgorICAgICAgICAvLyBE
cmF3IGEgZG93biBhcnJvdyBpbnNpZGUgYSBib3guCisgICAgICAgIGJveChtX2lyZWN0LCBtX2Jn
Q29sb3IpOworICAgICAgICB0cmlhbmdsZShtX2xlZnQgKyBxdWFydGVyV2lkdGgsIG1fdG9wICsg
cXVhcnRlckhlaWdodCwgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AgKyBxdWFydGVySGVp
Z2h0LCBtX2xlZnQgKyBoYWxmV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9mZ0Nv
bG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhvcml6b250YWxTbGlkZXJUcmFja1R5
cGU6IHsKKyAgICAgICAgLy8gRHJhdyBhIG5hcnJvdyByZWN0IGZvciB0aGUgdHJhY2sgcGx1cyBi
b3ggaGF0Y2hlcyBvbiB0aGUgZW5kcy4KKyAgICAgICAgU2tJUmVjdCBsaXJlY3Q7CisgICAgICAg
IGxpcmVjdCA9IG1faXJlY3Q7CisgICAgICAgIGxpcmVjdC5pbnNldChub09mZnNldCwgaGFsZkhl
aWdodCAtIHNsaWRlckluZGVudCk7CisgICAgICAgIGJveChsaXJlY3QsIG1fYmdDb2xvcik7Cisg
ICAgICAgIGxpbmUobV9sZWZ0LCAgbV90b3AsIG1fbGVmdCwgIG1fYm90dG9tLCBtX2VkZ2VDb2xv
cik7CisgICAgICAgIGxpbmUobV9yaWdodCwgbV90b3AsIG1fcmlnaHQsIG1fYm90dG9tLCBtX2Vk
Z2VDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVmVydGljYWxTbGlk
ZXJUcmFja1R5cGU6IHsKKyAgICAgICAgLy8gRHJhdyBhIG5hcnJvdyByZWN0IGZvciB0aGUgdHJh
Y2sgcGx1cyBib3ggaGF0Y2hlcyBvbiB0aGUgZW5kcy4KKyAgICAgICAgU2tJUmVjdCBsaXJlY3Q7
CisgICAgICAgIGxpcmVjdCA9IG1faXJlY3Q7CisgICAgICAgIGxpcmVjdC5pbnNldChoYWxmV2lk
dGggLSBzbGlkZXJJbmRlbnQsIG5vT2Zmc2V0KTsKKyAgICAgICAgYm94KGxpcmVjdCwgbV9iZ0Nv
bG9yKTsKKyAgICAgICAgbGluZShtX2xlZnQsIG1fdG9wLCBtX3JpZ2h0LCBtX3RvcCwgbV9lZGdl
Q29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCwgbV9ib3R0b20sIG1fcmlnaHQsIG1fYm90dG9t
LCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRHJvcERv
d25CdXR0b25UeXBlOgorICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBiaWcgZG93biBhcnJv
dyBvbiB0b3AuCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlh
bmdsZShtX2xlZnQgKyBxdWFydGVyV2lkdGgsIG1fdG9wLCBtX3JpZ2h0IC0gcXVhcnRlcldpZHRo
LCBtX3RvcCwgbV9sZWZ0ICsgaGFsZldpZHRoLCBtX2JvdHRvbSwgbV9mZ0NvbG9yKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIG1hcmtTdGF0ZSgpOworfQorCisv
LyBCZWNhdXNlIHJlbmRlcmluZyBhIHRleHQgZmllbGQgaXMgZGVwZW5kZW50IG9uIGlucHV0Cisv
LyBwYXJhbWV0ZXJzIHRoZSBvdGhlciBjb250cm9scyBkb24ndCBoYXZlLCB3ZSByZW5kZXIgaXQg
ZGlyZWN0bHkKKy8vIHJhdGhlciB0aGFuIHRyeWluZyB0byBvdmVyY29tcGxpY2F0ZSBkcmF3KCkg
ZnVydGhlci4KK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpkcmF3VGV4dEZpZWxkKGJvb2wg
ZHJhd0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJlYSwgU2tDb2xvciBjb2xvcikKK3sKKyAgICBT
a1BhaW50IHBhaW50OworCisgICAgaWYgKGZpbGxDb250ZW50QXJlYSkgeworICAgICAgICBwYWlu
dC5zZXRDb2xvcihjb2xvcik7CisgICAgICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxs
X1N0eWxlKTsKKyAgICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7Cisg
ICAgfQorICAgIGlmIChkcmF3RWRnZXMpIHsKKyAgICAgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdl
Q29sb3IpOworICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsK
KyAgICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7CisgICAgfQorCisg
ICAgbWFya1N0YXRlKCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpkcmF3UHJv
Z3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3QpCit7CisgICAgU2tQYWludCBwYWludDsK
KworICAgIHBhaW50LnNldENvbG9yKG1fYmdDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQ
YWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFp
bnQpOworCisgICAgLy8gRW11bGF0ZSBjbGlwcGluZworICAgIFNrSVJlY3QgdG9maWxsOworICAg
IHRvZmlsbC5pbnRlcnNlY3QobV9pcmVjdCwgZmlsbFJlY3QpOworICAgIHBhaW50LnNldENvbG9y
KG1fZmdDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwor
ICAgIG1fY2FudmFzLT5kcmF3SVJlY3QodG9maWxsLCBwYWludCk7CisKKyAgICBtYXJrU3RhdGUo
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGhlbWVDb250cm9sRFJUV2luLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZTJiNmE0N2ExNDg0MzZiZmEzNDFjZDIwN2YwMjM0YjgxOTI1NmFlCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGhlbWVDb250cm9sRFJUV2luLmgKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBXZWJUaGVtZUNvbnRyb2xE
UlRXaW4gaW1wbGVtZW50cyB0aGUgZ2VuZXJpYyByZW5kZXJpbmcgb2YgY29udHJvbHMKKy8vIG5l
ZWRlZCBieSBXZWJUaGVtZUVuZ2luZURSVFdpbi4gU2VlIHRoZSBjb21tZW50cyBpbiB0aGF0IGNs
YXNzCisvLyBoZWFkZXIgZmlsZSBmb3Igd2h5IHRoaXMgY2xhc3MgaXMgbmVlZGVkIGFuZCB1c2Vk
LgorLy8KKy8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGdlbmVyaWMgc2V0IG9mIHdpZGdldHMg
dXNpbmcgU2tpYS4gVGhlIHdpZGdldHMKKy8vIGFyZSBvcHRpbWl6ZWQgZm9yIHRlc3RhYmlsaXR5
LCBub3QgYSBwbGVhc2luZyBhcHBlYXJhbmNlLgorLy8KKworI2lmbmRlZiBXZWJUaGVtZUNvbnRy
b2xEUlRXaW5faAorI2RlZmluZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW5faAorCisjaW5jbHVkZSAi
dGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvci5oIgorI2luY2x1ZGUgInRoaXJk
X3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgorCisvLyBTa2lhIGZvcndhcmQgZGVj
bGFyYXRpb25zCitjbGFzcyBTa0NhbnZhczsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewor
CitjbGFzcyBXZWJUaGVtZUNvbnRyb2xEUlRXaW4geworcHVibGljOgorICAgIC8vIFRoaXMgbGlz
dCBvZiBzdGF0ZXMgbW9zdGx5IG1pcnJvcnMgdGhlIGxpc3QgaW4gV2ViQ29yZS9wbGF0Zm9ybS9U
aGVtZVR5cGVzLmgKKyAgICAvLyBidXQgaXMgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IHNpbmNlIHRo
YXQgaXNuJ3QgcHVibGljIGFuZCBhbHNvIHRvIG1pbmltaXplCisgICAgLy8gZGVwZW5kZW5jaWVz
LgorICAgIC8vIE5vdGUgdGhhdCB0aGUgV2ViS2l0IFRoZW1lVHlwZXMgc2VlbSB0byBpbXBseSB0
aGF0IGEgY29udHJvbCBjYW4gYmUKKyAgICAvLyBpbiBtdWx0aXBsZSBzdGF0ZXMgc2ltdWx0YW5l
b3VzbHkgYnV0IFdlYlRoZW1lRW5naW5lIG9ubHkgYWxsb3dzIGZvcgorICAgIC8vIGEgc2luZ2xl
IHN0YXRlIGF0IGEgdGltZS4KKyAgICAvLworICAgIC8vIFNvbWUgZGVmaW5pdGlvbnMgZm9yIHRo
ZSB2YXJpb3VzIHN0YXRlczoKKyAgICAvLyAgIERpc2FibGVkIC0gaW5kaWNhdGVzIHRoYXQgYSBj
b250cm9sIGNhbid0IGJlIG1vZGlmaWVkIG9yIHNlbGVjdGVkCisgICAgLy8gICAgICAgICAgICAg
IChjb3JyZXNwb25kcyB0byBIVE1MICdkaXNhYmxlZCcgYXR0cmlidXRlKQorICAgIC8vICAgUmVh
ZE9ubHkgLSBpbmRpY2F0ZXMgdGhhdCBhIGNvbnRyb2wgY2FuJ3QgYmUgbW9kaWZpZWQgYnV0IGNh
biBiZQorICAgIC8vICAgICAgICAgICAgICBzZWxlY3RlZAorICAgIC8vICAgTm9ybWFsICAgLSB0
aGUgbm9ybWFsIHN0YXRlIG9mIGNvbnRyb2wgb24gdGhlIHBhZ2Ugd2hlbiBpdCBpc24ndAorICAg
IC8vICAgICAgICAgICAgICBmb2N1c2VkIG9yIG90aGVyd2lzZSBhY3RpdmUKKyAgICAvLyAgIEhv
dCAgICAgIC0gd2hlbiB0aGUgbW91c2UgaXMgaG92ZXJpbmcgb3ZlciBhIHBhcnQgb2YgdGhlIGNv
bnRyb2wsCisgICAgLy8gICAgICAgICAgICAgIGFsbCB0aGUgb3RoZXIgcGFydHMgYXJlIGNvbnNp
ZGVyZWQgImhvdCIKKyAgICAvLyAgIEhvdmVyICAgIC0gd2hlbiB0aGUgbW91c2UgaXMgZGlyZWN0
bHkgb3ZlciBhIGNvbnRyb2wgKHRoZSBDU1MKKyAgICAvLyAgICAgICAgICAgICAgIDpob3ZlciBw
c2V1ZG8tY2xhc3MpCisgICAgLy8gICBGb2N1c2VkICAtIHdoZW4gdGhlIGNvbnRyb2wgaGFzIHRo
ZSBrZXlib2FyZCBmb2N1cworICAgIC8vICAgUHJlc3NlZCAgLSB3aGVuIHRoZSBjb250cm9sIGlz
IGJlaW5nIHRyaWdnZXJlZCAoYnkgYSBtb3VzZWRvd24gb3IKKyAgICAvLyAgICAgICAgICAgICAg
YSBrZXkgZXZlbnQpLgorICAgIC8vICAgSW5kZXRlcm1pbmF0ZSAtIHdoZW4gc2V0IHRvIGluZGV0
ZXJtaW5hdGUgKG9ubHkgZm9yIHByb2dyZXNzIGJhcikKKyAgICBlbnVtIFN0YXRlIHsKKyAgICAg
ICAgVW5rbm93blN0YXRlID0gMCwKKyAgICAgICAgRGlzYWJsZWRTdGF0ZSwKKyAgICAgICAgUmVh
ZE9ubHlTdGF0ZSwKKyAgICAgICAgTm9ybWFsU3RhdGUsCisgICAgICAgIEhvdFN0YXRlLAorICAg
ICAgICBIb3ZlclN0YXRlLAorICAgICAgICBGb2N1c2VkU3RhdGUsCisgICAgICAgIFByZXNzZWRT
dGF0ZSwKKyAgICAgICAgSW5kZXRlcm1pbmF0ZVN0YXRlCisgICAgfTsKKworICAgIC8vIFRoaXMg
bGlzdCBvZiB0eXBlcyBtb3N0bHkgbWlycm9ycyB0aGUgbGlzdCBpbgorICAgIC8vIFdlYkNvcmUv
cGxhdGZvcm0vVGhlbWVUeXBlcy5oIGJ1dCBpcyBtYWludGFpbmVkCisgICAgLy8gc2VwYXJhdGVs
eSBzaW5jZSB0aGF0IGlzbid0IHB1YmxpYyBhbmQgYWxzbyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNp
ZXMuCisgICAgLy8KKyAgICAvLyBOb3RlIHRoYXQgd2hhdCB0aGUgdXNlciBtaWdodCB0aGluayBv
ZiBhcyBhIHNpbmdsZSBjb250cm9sIGNhbiBiZQorICAgIC8vIG1hZGUgdXAgb2YgbXVsdGlwbGUg
cGFydHMuIEZvciBleGFtcGxlLCBhIHNpbmdsZSBzY3JvbGwgYmFyIGNvbnRhaW5zCisgICAgLy8g
c2l4IGNsaWNrYWJsZSBwYXJ0cyAtIHR3byBhcnJvd3MsIHRoZSAidGh1bWIiIGluZGljYXRpbmcg
dGhlIGN1cnJlbnQKKyAgICAvLyBwb3NpdGlvbiBvbiB0aGUgYmFyLCB0aGUgb3RoZXIgdHdvIHBh
cnRzIG9mIHRoZSBiYXIgKGJlZm9yZSBhbmQgYWZ0ZXIKKyAgICAvLyB0aGUgdGh1bWIpIGFuZCB0
aGUgImdyaXBwZXIiIG9uIHRoZSB0aHVtYiBpdHNlbGYuCisgICAgLy8KKyAgICBlbnVtIFR5cGUg
eworICAgICAgICBVbmtub3duVHlwZSA9IDAsCisgICAgICAgIFRleHRGaWVsZFR5cGUsCisgICAg
ICAgIFB1c2hCdXR0b25UeXBlLAorICAgICAgICBVbmNoZWNrZWRCb3hUeXBlLAorICAgICAgICBD
aGVja2VkQm94VHlwZSwKKyAgICAgICAgSW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZSwKKyAgICAg
ICAgVW5jaGVja2VkUmFkaW9UeXBlLAorICAgICAgICBDaGVja2VkUmFkaW9UeXBlLAorICAgICAg
ICBIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNjcm9s
bFRyYWNrRm9yd2FyZFR5cGUsCisgICAgICAgIEhvcml6b250YWxTY3JvbGxUaHVtYlR5cGUsCisg
ICAgICAgIEhvcml6b250YWxTY3JvbGxHcmlwVHlwZSwKKyAgICAgICAgVmVydGljYWxTY3JvbGxU
cmFja0JhY2tUeXBlLAorICAgICAgICBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGUsCisg
ICAgICAgIFZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlLAorICAgICAgICBWZXJ0aWNhbFNjcm9sbEdy
aXBUeXBlLAorICAgICAgICBMZWZ0QXJyb3dUeXBlLAorICAgICAgICBSaWdodEFycm93VHlwZSwK
KyAgICAgICAgVXBBcnJvd1R5cGUsCisgICAgICAgIERvd25BcnJvd1R5cGUsCisgICAgICAgIEhv
cml6b250YWxTbGlkZXJUcmFja1R5cGUsCisgICAgICAgIEhvcml6b250YWxTbGlkZXJUaHVtYlR5
cGUsCisgICAgICAgIFZlcnRpY2FsU2xpZGVyVHJhY2tUeXBlLAorICAgICAgICBWZXJ0aWNhbFNs
aWRlclRodW1iVHlwZSwKKyAgICAgICAgRHJvcERvd25CdXR0b25UeXBlLAorICAgICAgICBQcm9n
cmVzc0JhclR5cGUKKyAgICB9OworCisgICAgLy8gQ29uc3RydWN0cyBhIGNvbnRyb2wgb2YgdGhl
IGdpdmVuIHNpemUsIHR5cGUgYW5kIHN0YXRlIHRvIGRyYXcKKyAgICAvLyBvbiB0byB0aGUgZ2l2
ZW4gY2FudmFzLgorICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbihTa0NhbnZhcyosIGNvbnN0IFNr
SVJlY3QmLCBUeXBlLCBTdGF0ZSk7CisgICAgfldlYlRoZW1lQ29udHJvbERSVFdpbigpOworCisg
ICAgLy8gRHJhd3MgdGhlIGNvbnRyb2wuCisgICAgdm9pZCBkcmF3KCk7CisKKyAgICAvLyBVc2Ug
dGhpcyBmb3IgVGV4dEZpZWxkIGNvbnRyb2xzIGluc3RlYWQsIGJlY2F1c2UgdGhlIGxvZ2ljCisg
ICAgLy8gZm9yIGRyYXdpbmcgdGhlbSBpcyBkZXBlbmRlbnQgb24gd2hhdCBXZWJLaXQgdGVsbHMg
dXMgdG8gZG8uCisgICAgLy8gSWYgZHJhd0VkZ2VzIGlzIHRydWUsIGRyYXcgYW4gZWRnZSBhcm91
bmQgdGhlIGNvbnRyb2wuIElmCisgICAgLy8gZmlsbENvbnRlbnRBcmVhIGlzIHRydWUsIGZpbGwg
dGhlIGNvbnRlbnQgYXJlYSB3aXRoIHRoZSBnaXZlbiBjb2xvci4KKyAgICB2b2lkIGRyYXdUZXh0
RmllbGQoYm9vbCBkcmF3RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yKTsKKwor
ICAgIC8vIFVzZSB0aGlzIGZvciBkcmF3aW5nIFByb2dyZXNzQmFyIGNvbnRyb2xzIGluc3RlYWQs
IHNpbmNlIHdlCisgICAgLy8gbmVlZCB0byBrbm93IHRoZSByZWN0IHRvIGZpbGwgaW5zaWRlIHRo
ZSBiYXIuCisgICAgdm9pZCBkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3Qp
OworCitwcml2YXRlOgorICAgIC8vIERyYXdzIGEgYm94IG9mIHNpemUgc3BlY2lmaWVkIGJ5IGly
ZWN0LCBmaWxsZWQgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuCisgICAgLy8gVGhlIGJveCB3aWxsIGhh
dmUgYSBib3JkZXIgZHJhd24gaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGJv
eChjb25zdCBTa0lSZWN0JiBpcmVjdCwgU2tDb2xvcik7CisKKworICAgIC8vIERyYXdzIGEgdHJp
YW5nbGUgb2Ygc2l6ZSBzcGVjaWZpZWQgYnkgdGhlIHRocmVlIHBhaXJzIG9mIGNvb3JkaW5hdGVz
LAorICAgIC8vIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4gVGhlIGJveCB3aWxsIGhhdmUg
YW4gZWRnZSBkcmF3biBpbiB0aGUKKyAgICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9p
ZCB0cmlhbmdsZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHky
LCBTa0NvbG9yKTsKKworICAgIC8vIERyYXdzIGEgcmVjdGFuZ2xlIHRoZSBzaXplIG9mIHRoZSBj
b250cm9sIHdpdGggcm91bmRlZCBjb3JuZXJzLCBmaWxsZWQKKyAgICAvLyB3aXRoIHRoZSBzcGVj
aWZpZWQgY29sb3IgKGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3Ip
LgorICAgIHZvaWQgcm91bmRSZWN0KFNrQ29sb3IpOworCisgICAgLy8gRHJhd3MgYW4gb3ZhbCB0
aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvcgor
ICAgIC8vIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAg
dm9pZCBvdmFsKFNrQ29sb3IpOworCisgICAgLy8gRHJhd3MgYSBjaXJjbGUgY2VudGVyZWQgaW4g
dGhlIGNvbnRyb2wgd2l0aCB0aGUgc3BlY2lmaWVkIHJhZGl1cywKKyAgICAvLyBmaWxsZWQgd2l0
aCB0aGUgc3BlY2lmaWVkIGNvbG9yLCBhbmQgd2l0aCBhIGJvcmRlciBkcmF3IGluIHRoZQorICAg
IC8vIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGNpcmNsZShTa1NjYWxhciByYWRpdXMs
IFNrQ29sb3IpOworCisgICAgLy8gRHJhd3MgYSBib3ggdGhlIHNpemUgb2YgdGhlIGNvbnRyb2ws
IGZpbGxlZCB3aXRoIHRoZSBvdXRlckNvbG9yIGFuZAorICAgIC8vIHdpdGggYSBib3JkZXIgaW4g
dGhlIGRlZmF1bHQgZWRnZSBjb2xvciwgYW5kIHRoZW4gZHJhd3MgYW5vdGhlciBib3gKKyAgICAv
LyBpbmRlbnRlZCBvbiBhbGwgZm91ciBzaWRlcyBieSB0aGUgc3BlY2lmaWVkIGFtb3VudHMsIGZp
bGxlZCB3aXRoIHRoZQorICAgIC8vIGlubmVyIGNvbG9yIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRo
ZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCBuZXN0ZWRCb3hlcyhpbnQgaW5kZW50TGVm
dCwgaW50IGluZGVudFRvcCwgaW50IGluZGVudFJpZ2h0LCBpbnQgaW5kZW50Qm90dG9tLCBTa0Nv
bG9yIG91dGVyQ29sb3IsIFNrQ29sb3IgaW5uZXJDb2xvcik7CisKKyAgICAvLyBEcmF3cyBhIGxp
bmUgYmV0d2VlbiB0aGUgdHdvIHBvaW50cyBpbiB0aGUgZ2l2ZW4gY29sb3IuCisgICAgdm9pZCBs
aW5lKGludCB4MCwgaW50IHkwLCBpbnQgeDEsIGludCB5MSwgU2tDb2xvcik7CisKKyAgICAvLyBE
cmF3cyBhIGRpc3RpbmN0aXZlIG1hcmsgb24gdGhlIGNvbnRyb2wgZm9yIGVhY2ggc3RhdGUsIHNv
IHRoYXQgdGhlCisgICAgLy8gc3RhdGUgb2YgdGhlIGNvbnRyb2wgY2FuIGJlIGRldGVybWluZWQg
d2l0aG91dCBuZWVkaW5nIHRvIGtub3cgd2hpY2gKKyAgICAvLyBjb2xvciBpcyB3aGljaC4KKyAg
ICB2b2lkIG1hcmtTdGF0ZSgpOworCisgICAgU2tDYW52YXMqIG1fY2FudmFzOworICAgIGNvbnN0
IFNrSVJlY3QgbV9pcmVjdDsKKyAgICBjb25zdCBUeXBlIG1fdHlwZTsKKyAgICBjb25zdCBTdGF0
ZSBtX3N0YXRlOworICAgIGNvbnN0IFNrQ29sb3IgbV9lZGdlQ29sb3I7CisgICAgY29uc3QgU2tD
b2xvciBtX2JnQ29sb3I7CisgICAgY29uc3QgU2tDb2xvciBtX2ZnQ29sb3I7CisKKyAgICAvLyBU
aGUgZm9sbG93aW5nIGFyZSBjb252ZW5pZW5jZSBhY2Nlc3NvcnMgZm9yIG1faXJlY3QuCisgICAg
Y29uc3QgaW50IG1fbGVmdDsKKyAgICBjb25zdCBpbnQgbV9yaWdodDsKKyAgICBjb25zdCBpbnQg
bV90b3A7CisgICAgY29uc3QgaW50IG1fYm90dG9tOworICAgIGNvbnN0IGludCBtX3dpZHRoOwor
ICAgIGNvbnN0IGludCBtX2hlaWdodDsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlRoZW1lQ29u
dHJvbERSVFdpbl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJUaGVtZUVuZ2luZURSVE1hYy5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGhlbWVFbmdpbmVEUlRNYWMuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iNmRlZjQxODU3MDdiYWQ0YWFjMjU5ZDA2YWU0ODNkYjgzNTY1MzRlCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGhlbWVFbmdpbmVEUlRNYWMuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgaW1wbGVtZW50cyB0aGUgV2ViVGhl
bWVFbmdpbmUgQVBJIGluIHN1Y2ggYSB3YXkgdGhhdCB3ZSBtYXRjaCB0aGUgTWFjCisvLyBwb3J0
IHJlbmRlcmluZyBtb3JlIHRoYW4gdXN1YWwgQ2hyb21pdW0gcGF0aCwgdGh1cyBhbGxvd2luZyB1
cyB0byBzaGFyZQorLy8gbW9yZSBwaXhlbCBiYXNlbGluZXMuCisKKyNpZm5kZWYgV2ViVGhlbWVF
bmdpbmVEUlRNYWNfaAorI2RlZmluZSBXZWJUaGVtZUVuZ2luZURSVE1hY19oCisKKyNpbmNsdWRl
IDxwdWJsaWMvbWFjL1dlYlRoZW1lRW5naW5lLmg+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVy
IHsKKworY2xhc3MgV2ViVGhlbWVFbmdpbmVEUlRNYWMgOiBwdWJsaWMgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIo
CisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwKKyAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U3RhdGUsCisgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlNpemUsCisgICAg
ICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlNjcm9sbGJhckluZm8mKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRISVRoZW1lU2Nyb2xsYmFyVGh1bWIoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwK
KyAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUsCisgICAgICAgIFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OlNpemUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYsCisg
ICAgICAgIGNvbnN0IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhckluZm8mKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnROU1Njcm9sbGVyU2Nyb2xsYmFyVGh1bWIoCisgICAgICAgIFdl
YktpdDo6V2ViQ2FudmFzKiwKKyAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGUs
CisgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlNpemUsCisgICAgICAgIGNvbnN0IFdl
YktpdDo6V2ViUmVjdCYsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlNj
cm9sbGJhckluZm8mKTsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlRoZW1lRW5naW5lRFJUTWFj
X2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRoZW1lRW5naW5lRFJUTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI2
MjhiNzg2Y2ZkYzA0NzRkY2MzNDg1OGU2OTZlNTczYmY4MDQ4MQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRoZW1lRW5n
aW5lRFJUTWFjLm1tCkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJU
TWFjLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ2FudmFzLmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYlJlY3QuaD4KKyNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX21hYy5oIgorI2ltcG9y
dCA8QXBwS2l0L05TQWZmaW5lVHJhbnNmb3JtLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNHcmFwaGlj
c0NvbnRleHQuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU1Njcm9sbGVyLmg+CisjaW1wb3J0IDxBcHBL
aXQvTlNXaW5kb3cuaD4KKyNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+CisKK3VzaW5nIFdlYktp
dDo6V2ViQ2FudmFzOwordXNpbmcgV2ViS2l0OjpXZWJSZWN0OwordXNpbmcgV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTsKKworLy8gV2UgY2FuJ3QgZGlyZWN0bHkgdGVsbCB0aGUgTlNTY3JvbGxlciB0
byBkcmF3IGl0c2VsZiBhcyBhY3RpdmUgb3IgaW5hY3RpdmUsCisvLyBpbnN0ZWFkIHdlIGhhdmUg
dG8gbWFrZSBpdCBhIGNoaWxkIG9mIGFuIChpbilhY3RpdmUgd2luZG93LiBUaGlzIGNsYXNzIGxl
dHMKKy8vIHVzIGZha2UgdGhhdCBwYXJlbnQgd2luZG93LgorQGludGVyZmFjZSBGYWtlQWN0aXZl
V2luZG93IDogTlNXaW5kb3cgeworQHByaXZhdGUKKyAgICBCT09MIGhhc0FjdGl2ZUNvbnRyb2xz
OworfQorKyAoTlNXaW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRvdzsKKysgKE5TV2luZG93KilhbHdh
eXNJbmFjdGl2ZVdpbmRvdzsKKy0gKGlkKWluaXRXaXRoQWN0aXZlQ29udHJvbHM6KEJPT0wpX2hh
c0FjdGl2ZUNvbnRyb2xzOworLSAoQk9PTClfaGFzQWN0aXZlQ29udHJvbHM7CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBGYWtlQWN0aXZlV2luZG93CisKK3N0YXRpYyBOU1dpbmRvdyogYWx3YXlz
QWN0aXZlV2luZG93ID0gbmlsOworc3RhdGljIE5TV2luZG93KiBhbHdheXNJbmFjdGl2ZVdpbmRv
dyA9IG5pbDsKKworKyAoTlNXaW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRvdworeworICAgIGlmIChh
bHdheXNBY3RpdmVXaW5kb3cgPT0gbmlsKQorICAgICAgICBhbHdheXNBY3RpdmVXaW5kb3cgPSBb
W3NlbGYgYWxsb2NdIGluaXRXaXRoQWN0aXZlQ29udHJvbHM6WUVTXTsKKyAgICByZXR1cm4gYWx3
YXlzQWN0aXZlV2luZG93OworfQorCisrIChOU1dpbmRvdyopYWx3YXlzSW5hY3RpdmVXaW5kb3cK
K3sKKyAgICBpZiAoYWx3YXlzSW5hY3RpdmVXaW5kb3cgPT0gbmlsKQorICAgICAgICBhbHdheXNJ
bmFjdGl2ZVdpbmRvdyA9IFtbc2VsZiBhbGxvY10gaW5pdFdpdGhBY3RpdmVDb250cm9sczpOT107
CisgICAgcmV0dXJuIGFsd2F5c0luYWN0aXZlV2luZG93OworfQorCistIChpZClpbml0V2l0aEFj
dGl2ZUNvbnRyb2xzOihCT09MKV9oYXNBY3RpdmVDb250cm9scworeworICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CisgICAgaGFzQWN0aXZlQ29udHJvbHMgPSBfaGFzQWN0aXZlQ29udHJvbHM7Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKEJPT0wpX2hhc0FjdGl2ZUNvbnRyb2xzCit7CisgICAg
cmV0dXJuIGhhc0FjdGl2ZUNvbnRyb2xzOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJUZXN0
UnVubmVyIHsKKworbmFtZXNwYWNlIHsKKworVGhlbWVUcmFja0VuYWJsZVN0YXRlIHN0YXRlVG9I
SUVuYWJsZVN0YXRlKFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBzd2l0Y2gg
KHN0YXRlKSB7CisgICAgY2FzZSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDoKKyAgICAg
ICAgcmV0dXJuIGtUaGVtZVRyYWNrRGlzYWJsZWQ7CisgICAgY2FzZSBXZWJUaGVtZUVuZ2luZTo6
U3RhdGVJbmFjdGl2ZToKKyAgICAgICAgcmV0dXJuIGtUaGVtZVRyYWNrSW5hY3RpdmU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGtUaGVtZVRyYWNrQWN0aXZlOworICAgIH0KK30KKwor
fQorCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUTWFjOjpwYWludFNjcm9sbGJhclRodW1iKAorICAg
IFdlYkNhbnZhcyogY2FudmFzLAorICAgIFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSwKKyAg
ICBXZWJUaGVtZUVuZ2luZTo6U2l6ZSBzaXplLAorICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCisg
ICAgY29uc3QgV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhckluZm8mIHNjcm9sbGJhckluZm8pCit7
CisgICAgLy8gVG8gbWF0Y2ggdGhlIE1hYyBwb3J0LCB3ZSBzdGlsbCB1c2UgSElUaGVtZSBmb3Ig
aW5uZXIgc2Nyb2xsYmFycy4KKyAgICBpZiAoc2Nyb2xsYmFySW5mby5wYXJlbnQgPT0gV2ViVGhl
bWVFbmdpbmU6OlNjcm9sbGJhclBhcmVudFJlbmRlckxheWVyKQorICAgICAgICBwYWludEhJVGhl
bWVTY3JvbGxiYXJUaHVtYihjYW52YXMsIHN0YXRlLCBzaXplLCByZWN0LCBzY3JvbGxiYXJJbmZv
KTsKKyAgICBlbHNlCisgICAgICAgIHBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRodW1iKGNhbnZh
cywgc3RhdGUsIHNpemUsIHJlY3QsIHNjcm9sbGJhckluZm8pOworfQorCisvLyBEdXBsaWNhdGVk
IGZyb20gd2Via2l0L2dsdWUvd2VidGhlbWVlbmdpbmVfaW1wbF9tYWMuY2MgaW4gdGhlIGRvd25z
dHJlYW0KKy8vIENocm9taXVtIFdlYlRoZW1lRW5naW5lIGltcGxlbWVudGF0aW9uLgordm9pZCBX
ZWJUaGVtZUVuZ2luZURSVE1hYzo6cGFpbnRISVRoZW1lU2Nyb2xsYmFyVGh1bWIoCisgICAgV2Vi
Q2FudmFzKiBjYW52YXMsCisgICAgV2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlLAorICAgIFdl
YlRoZW1lRW5naW5lOjpTaXplIHNpemUsCisgICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKKyAgICBj
b25zdCBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYgc2Nyb2xsYmFySW5mbykKK3sKKyAg
ICBISVRoZW1lVHJhY2tEcmF3SW5mbyB0cmFja0luZm87CisgICAgdHJhY2tJbmZvLnZlcnNpb24g
PSAwOworICAgIHRyYWNrSW5mby5raW5kID0gc2l6ZSA9PSBXZWJUaGVtZUVuZ2luZTo6U2l6ZVJl
Z3VsYXIgPyBrVGhlbWVNZWRpdW1TY3JvbGxCYXIgOiBrVGhlbWVTbWFsbFNjcm9sbEJhcjsKKyAg
ICB0cmFja0luZm8uYm91bmRzID0gQ0dSZWN0TWFrZShyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0
aCwgcmVjdC5oZWlnaHQpOworICAgIHRyYWNrSW5mby5taW4gPSAwOworICAgIHRyYWNrSW5mby5t
YXggPSBzY3JvbGxiYXJJbmZvLm1heFZhbHVlOworICAgIHRyYWNrSW5mby52YWx1ZSA9IHNjcm9s
bGJhckluZm8uY3VycmVudFZhbHVlOworICAgIHRyYWNrSW5mby50cmFja0luZm8uc2Nyb2xsYmFy
LnZpZXdzaXplID0gc2Nyb2xsYmFySW5mby52aXNpYmxlU2l6ZTsKKyAgICB0cmFja0luZm8uYXR0
cmlidXRlcyA9IDA7CisgICAgaWYgKHNjcm9sbGJhckluZm8ub3JpZW50YXRpb24gPT0gV2ViVGhl
bWVFbmdpbmU6OlNjcm9sbGJhck9yaWVudGF0aW9uSG9yaXpvbnRhbCkKKyAgICAgICAgdHJhY2tJ
bmZvLmF0dHJpYnV0ZXMgfD0ga1RoZW1lVHJhY2tIb3Jpem9udGFsOworCisgICAgdHJhY2tJbmZv
LmVuYWJsZVN0YXRlID0gc3RhdGVUb0hJRW5hYmxlU3RhdGUoc3RhdGUpOworCisgICAgdHJhY2tJ
bmZvLnRyYWNrSW5mby5zY3JvbGxiYXIucHJlc3NTdGF0ZSA9CisgICAgICAgIHN0YXRlID09IFdl
YlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQgPyBrVGhlbWVUaHVtYlByZXNzZWQgOiAwOworICAg
IHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IChrVGhlbWVUcmFja1Nob3dUaHVtYiB8IGtUaGVtZVRy
YWNrSGlkZVRyYWNrKTsKKyAgICBnZng6OlNraWFCaXRMb2NrZXIgYml0TG9ja2VyKGNhbnZhcyk7
CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGJpdExvY2tlci5jZ0NvbnRleHQoKTsKKyAg
ICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFja0luZm8sIDAsIGNnQ29udGV4dCwga0hJVGhlbWVPcmll
bnRhdGlvbk5vcm1hbCk7Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlRNYWM6OnBhaW50TlNT
Y3JvbGxlclNjcm9sbGJhclRodW1iKAorICAgIFdlYkNhbnZhcyogY2FudmFzLAorICAgIFdlYlRo
ZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSwKKyAgICBXZWJUaGVtZUVuZ2luZTo6U2l6ZSBzaXplLAor
ICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCisgICAgY29uc3QgV2ViVGhlbWVFbmdpbmU6OlNjcm9s
bGJhckluZm8mIHNjcm9sbGJhckluZm8pCit7CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVH
cmFwaGljc1N0YXRlXTsKKyAgICBOU1Njcm9sbGVyKiBzY3JvbGxlciA9IFtbTlNTY3JvbGxlciBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRo
LCByZWN0LmhlaWdodCldOworICAgIFtzY3JvbGxlciBzZXRFbmFibGVkOnN0YXRlICE9IFdlYlRo
ZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkXTsKKyAgICBpZiAoc3RhdGUgPT0gV2ViVGhlbWVFbmdp
bmU6OlN0YXRlSW5hY3RpdmUpCisgICAgICAgIFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzSW5h
Y3RpdmVXaW5kb3ddIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnNjcm9sbGVyXTsKKyAgICBlbHNl
CisgICAgICAgIFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzQWN0aXZlV2luZG93XSBjb250ZW50
Vmlld10gYWRkU3VidmlldzpzY3JvbGxlcl07CisKKyAgICBbc2Nyb2xsZXIgc2V0Q29udHJvbFNp
emU6c2l6ZSA9PSBXZWJUaGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBOU1JlZ3VsYXJDb250cm9s
U2l6ZSA6IE5TU21hbGxDb250cm9sU2l6ZV07CisKKyAgICBkb3VibGUgdmFsdWUgPSBkb3VibGUo
c2Nyb2xsYmFySW5mby5jdXJyZW50VmFsdWUpIC8gZG91YmxlKHNjcm9sbGJhckluZm8ubWF4VmFs
dWUpOworICAgIFtzY3JvbGxlciBzZXREb3VibGVWYWx1ZTogdmFsdWVdOworCisgICAgZmxvYXQg
a25vYlByb3BvcnRpb24gPSBmbG9hdChzY3JvbGxiYXJJbmZvLnZpc2libGVTaXplKSAvIGZsb2F0
KHNjcm9sbGJhckluZm8udG90YWxTaXplKTsKKyAgICBbc2Nyb2xsZXIgc2V0S25vYlByb3BvcnRp
b246IGtub2JQcm9wb3J0aW9uXTsKKworICAgIGdmeDo6U2tpYUJpdExvY2tlciBiaXRMb2NrZXIo
Y2FudmFzKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gYml0TG9ja2VyLmNnQ29udGV4
dCgpOworICAgIE5TR3JhcGhpY3NDb250ZXh0KiBuc0dyYXBoaWNzQ29udGV4dCA9IFtOU0dyYXBo
aWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNnQ29udGV4dCBmbGlw
cGVkOllFU107CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om5zR3Jh
cGhpY3NDb250ZXh0XTsKKworICAgIC8vIERlc3BpdGUgcGFzc2luZyBpbiBmcmFtZVJlY3QoKSB0
byB0aGUgc2Nyb2xsZXIsIGl0IGFsd2F5cyBkcmF3cyBhdCAoMCwgMCkuCisgICAgLy8gRm9yY2Ug
aXQgdG8gZHJhdyBpbiB0aGUgcmlnaHQgbG9jYXRpb24gYnkgdHJhbnNsYXRpbmcgdGhlIHdob2xl
IGdyYXBoaWNzCisgICAgLy8gY29udGV4dC4KKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29u
dGV4dCk7CisgICAgTlNBZmZpbmVUcmFuc2Zvcm0gKnRyYW5zZm9ybSA9IFtOU0FmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm1dOworICAgIFt0cmFuc2Zvcm0gdHJhbnNsYXRlWEJ5OnJlY3QueCB5Qnk6
cmVjdC55XTsKKyAgICBbdHJhbnNmb3JtIGNvbmNhdF07CisKKyAgICBbc2Nyb2xsZXIgZHJhd0tu
b2JdOworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIFtzY3Jv
bGxlciByZWxlYXNlXTsKKworICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NT
dGF0ZV07Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlRoZW1lRW5naW5lRFJUV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRoZW1lRW5naW5lRFJUV2luLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41YWUyYTE4MDcwODE0YWVkNGVkN2FkM2NmZTNhNjQwYTdhZmY5ZTEzCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwCkBAIC0wLDAgKzEsNzQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJUV2luLmgiCisKKyNpbmNsdWRlICJU
ZXN0Q29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVGhlbWVDb250cm9sRFJUV2luLmgiCisjaW5jbHVk
ZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tSZWN0LmgiCisjaW5jbHVkZSA8cHVi
bGljL1dlYlJlY3QuaD4KKworLy8gQWx0aG91Z2ggYWxsIHRoaXMgY29kZSBpcyBnZW5lcmljLCB3
ZSBpbmNsdWRlIHRoZXNlIGhlYWRlcnMKKy8vIHRvIHB1bGwgaW4gdGhlIFdpbmRvd3MgI2RlZmlu
ZXMgZm9yIHRoZSBwYXJ0cyBhbmQgc3RhdGVzIG9mCisvLyB0aGUgY29udHJvbHMuCisjaW5jbHVk
ZSA8dnNzdHlsZS5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCituYW1lc3BhY2UgeworCisvLyBX
ZSBkZWZpbmUgdGhpcyBmb3IgY2xhcml0eSwgYWx0aG91Z2ggdGhlcmUgcmVhbGx5IHNob3VsZCBi
ZSBhIERGQ1NfTk9STUFMIGluIHdpbnVzZXIuaC4KK2NvbnN0IGludCBkZmNzTm9ybWFsID0gMHgw
MDAwOworCitTa0lSZWN0IHdlYlJlY3RUb1NrSVJlY3QoY29uc3QgV2ViUmVjdCYgd2ViUmVjdCkK
K3sKKyAgICBTa0lSZWN0IGlyZWN0OworICAgIGlyZWN0LnNldCh3ZWJSZWN0LngsIHdlYlJlY3Qu
eSwgd2ViUmVjdC54ICsgd2ViUmVjdC53aWR0aCAtIDEsIHdlYlJlY3QueSArIHdlYlJlY3QuaGVp
Z2h0IC0gMSk7CisgICAgcmV0dXJuIGlyZWN0OworfQorCit2b2lkIGRyYXdDb250cm9sKFdlYkNh
bnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0LCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlR5cGUgY3R5cGUsIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlKQoreworICAg
IFdlYlRoZW1lQ29udHJvbERSVFdpbiBjb250cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChy
ZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJvbC5kcmF3KCk7Cit9CisKK3ZvaWQgZHJh
d1RleHRGaWVsZChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCwgV2ViVGhl
bWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlLCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRl
IGNzdGF0ZSwgYm9vbCBkcmF3RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBXZWJDb2xvciBj
b2xvcikKK3sKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW4gY29udHJvbChjYW52YXMsIHdlYlJl
Y3RUb1NrSVJlY3QocmVjdCksIGN0eXBlLCBjc3RhdGUpOworICAgIGNvbnRyb2wuZHJhd1RleHRG
aWVsZChkcmF3RWRnZXMsIGZpbGxDb250ZW50QXJlYSwgY29sb3IpOworfQorCit2b2lkIGRyYXdQ
cm9ncmVzc0JhcihXZWJDYW52YXMqIGNhbnZhcywgV2ViVGhlbWVDb250cm9sRFJUV2luOjpUeXBl
IGN0eXBlLCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSwgY29uc3QgV2ViUmVj
dCYgYmFyUmVjdCwgY29uc3QgV2ViUmVjdCYgZmlsbFJlY3QpCit7CisgICAgV2ViVGhlbWVDb250
cm9sRFJUV2luIGNvbnRyb2woY2FudmFzLCB3ZWJSZWN0VG9Ta0lSZWN0KGJhclJlY3QpLCBjdHlw
ZSwgY3N0YXRlKTsKKyAgICBjb250cm9sLmRyYXdQcm9ncmVzc0Jhcih3ZWJSZWN0VG9Ta0lSZWN0
KGZpbGxSZWN0KSk7Cit9CisKK30KKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRC
dXR0b24oV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2lj
U3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlwZTsKKyAgICBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6VW5rbm93blN0YXRlOworCisgICAgaWYgKHBhcnQgPT0gQlBfQ0hFQ0tCT1gpIHsKKyAgICAg
ICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIENCU19VTkNIRUNLRUROT1JNQUw6Cisg
ICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAg
ICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRCb3hUeXBl
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0
ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFREhPVDoK
KyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNI
RUNLIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpVbmNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
Q0JTX1VOQ0hFQ0tFRFBSRVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfUFVTSEVEKSk7CisgICAgICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2VkQm94VHlwZTsKKyAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VERElTQUJMRUQ6CisgICAg
ICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8
IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpVbmNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBDQlNfQ0hFQ0tFRE5PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEKSk7CisgICAgICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZEJveFR5cGU7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFREhPVDoKKyAgICAgICAgICAg
IFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19D
SEVDS0VEIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUV2luOjpDaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6SG90U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IENCU19DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19QVVNIRUQpKTsK
KyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkQm94VHlw
ZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0
YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRERJU0FC
TEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVU
VE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZEJveFR5cGU7CisgICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19NSVhFRE5PUk1BTDoKKyAgICAgICAgICAg
IC8vIENsYXNzaWMgdGhlbWUgY2FuJ3QgcmVwcmVzZW50IG1peGVkIHN0YXRlIGNoZWNrYm94LiBX
ZSBhc3N1bWUKKyAgICAgICAgICAgIC8vIGl0J3MgZXF1aXZhbGVudCB0byB1bmNoZWNrZWQuCisg
ICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTkNIRUNL
KTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpJbmRldGVybWlu
YXRlQ2hlY2tib3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JT
X01JWEVESE9UOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGU7CisgICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBDQlNfTUlYRURQUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lU
X0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX1BVU0hFRCkp
OworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkluZGV0ZXJtaW5h
dGVDaGVja2JveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JT
X01JWEVERElTQUJMRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOworICAg
ICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChCUF9SQURJT0JVVFRPTiA9PSBwYXJ0KSB7CisgICAgICAgIHN3aXRjaCAo
c3RhdGUpIHsKKyAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VETk9STUFMOgorICAgICAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19CVVRUT05SQURJTyk7CisgICAgICAg
ICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2VkUmFkaW9UeXBlOwor
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFREhPVDoKKyAg
ICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElP
IHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBS
QlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFRERJU0FCTEVEOgorICAg
ICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8g
fCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6VW5jaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBSQlNfQ0hFQ0tFRE5PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xh
c3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEKSk7CisgICAgICAg
ICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKKyAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVDS0VESE9UOgorICAgICAg
ICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBE
RkNTX0NIRUNLRUQgfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBSQlNfQ0hFQ0tFRFBSRVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfUFVT
SEVEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tl
ZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfQ0hF
Q0tFRERJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0g
KERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0lOQUNUSVZFKSk7CisgICAg
ICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsK
KyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0
ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAoQlBfUFVTSEJVVFRPTiA9PSBwYXJ0KSB7CisgICAgICAgIHN3aXRj
aCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBQQlNfTk9STUFMOgorICAgICAgICAgICAgV0VCS0lU
X0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19CVVRUT05QVVNIKTsKKyAgICAgICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFBCU19IT1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19IT1QpKTsKKyAgICAg
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFBCU19QUkVTU0VEOgorICAgICAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8IERGQ1NfUFVT
SEVEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1
dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlBy
ZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUEJTX0RJU0FC
TEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVU
VE9OUFVTSCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgUEJTX0RFRkFVTFRFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfQlVUVE9OUFVTSCk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkZvY3VzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJl
Y3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWlu
dE1lbnVMaXN0KFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xh
c3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blR5cGU7Cisg
ICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OlVua25vd25TdGF0ZTsKKworICAgIGlmIChDUF9EUk9QRE9XTkJVVFRPTiA9PSBwYXJ0
KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEcm9wRG93bkJ1dHRv
blR5cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBDQlhTX05PUk1B
TDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfTUVOVUFS
Uk9XKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFs
U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCWFNfSE9UOgorICAg
ICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwg
REZDU19IT1QpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
SG92ZXJTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19QUkVT
U0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVO
VUFSUk9XIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBDQlhTX0RJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlCisg
ICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIGRyYXdDb250cm9sKGNh
bnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlRX
aW46OnBhaW50U2Nyb2xsYmFyQXJyb3coV2ViQ2FudmFzKiBjYW52YXMsIGludCBzdGF0ZSwgaW50
IGNsYXNzaWNTdGF0ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBl
OworICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpVbmtub3duU3RhdGU7CisKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2Fz
ZSBBQlNfVVBOT1JNQUw6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERG
Q1NfU0NST0xMVVApOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBB
cnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFs
U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfRE9XTk5PUk1BTDoKKyAgICAg
ICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExET1dOKTsKKyAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7CisgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBBQlNfTEVGVE5PUk1BTDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChj
bGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExMRUZUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBB
QlNfUklHSFROT1JNQUw6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERG
Q1NfU0NST0xMUklHSFQpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
UmlnaHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBIT1Q6CisgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19I
T1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBl
OworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0RPV05IT1Q6CisgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX0hPVCkpOworICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RG93bkFycm93VHlwZTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIEFCU19MRUZUSE9UOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBBQlNfUklHSFRIT1Q6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX1NDUk9MTFJJR0hUIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX1VQ
SE9WRVI6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xM
VVApOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7
CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG92ZXJTdGF0ZTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19ET1dOSE9WRVI6CisgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMRE9XTik7CisgICAgICAgIGN0eXBlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBBQlNfTEVGVEhPVkVSOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBERkNTX1NDUk9MTExFRlQpOworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6TGVmdEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpIb3ZlclN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX1JJR0hUSE9WRVI6
CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMUklHSFQp
OworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UmlnaHRBcnJvd1R5cGU7
CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG92ZXJTdGF0ZTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19VUFBSRVNTRUQ6CisgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19QVVNIRUQgfCBERkNT
X0ZMQVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dU
eXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0
ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19ET1dOUFJFU1NFRDoKKyAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfUFVT
SEVEIHwgREZDU19GTEFUKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19MRUZUUFJFU1NF
RDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVG
VCB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFC
U19SSUdIVFBSRVNTRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX1NDUk9MTFJJR0hUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKKyAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOworICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIEFCU19VUERJU0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBBQlNfRE9XTkRJU0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RG93bkFycm93VHlwZTsKKyAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgQUJTX0xFRlRESVNBQkxFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChj
bGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVERJU0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfSU5BQ1RJVkUpKTsK
KyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOwor
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Cisg
ICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkcmF3Q29udHJvbChjYW52
YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUV2lu
OjpwYWludFNjcm9sbGJhclRodW1iKFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwgaW50IHN0
YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5r
bm93blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKKworICAgIHN3aXRjaCAocGFydCkgewor
ICAgIGNhc2UgU0JQX1RIVU1CQlROSE9SWjoKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46Okhvcml6b250YWxTY3JvbGxUaHVtYlR5cGU7CisgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBTQlBfVEhVTUJCVE5WRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6VmVydGljYWxTY3JvbGxUaHVtYlR5cGU7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBTQlBfR1JJUFBFUkhPUlo6CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpIb3Jpem9udGFsU2Nyb2xsR3JpcFR5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBTQlBfR1JJUFBFUlZFUlQ6CisgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpWZXJ0aWNhbFNjcm9sbEdyaXBUeXBlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6
CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgU0NSQlNfTk9STUFMOgorICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIFNDUkJTX0hPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2lj
U3RhdGUgPT0gREZDU19IT1QpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OkhvdFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfSE9WRVI6Cisg
ICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBTQ1JCU19QUkVTU0VEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JC
U19ESVNBQkxFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlz
IHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIGJyZWFrOworCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3Rh
dGUpOworfQorCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludFNjcm9sbGJhclRyYWNr
KFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRl
LCBjb25zdCBXZWJSZWN0JiByZWN0LCBjb25zdCBXZWJSZWN0JiBhbGlnblJlY3QpCit7CisgICAg
V2ViVGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpVbmtub3duVHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOworCisgICAgc3dpdGNoIChwYXJ0
KSB7CisgICAgY2FzZSBTQlBfVVBQRVJUUkFDS0hPUlo6CisgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIFNCUF9MT1dFUlRSQUNLSE9SWjoKKyAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tWRVJUOgorICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTY3JvbGxUcmFja0JhY2tUeXBl
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX0xPV0VSVFJBQ0tWRVJUOgorICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTY3JvbGxUcmFja0Zvcndh
cmRUeXBlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgIGNhc2UgU0NSQlNfTk9STUFMOgorICAgICAgICBXRUJLSVRfQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFND
UkJTX0hPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNo
b3VsZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBTQ1JCU19IT1ZFUjoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZj
c05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG92ZXJT
dGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX1BSRVNTRUQ6CisgICAgICAg
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVu
IGluIHByYWN0aWNlLgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfRElTQUJMRUQ6
CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOwor
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Cisg
ICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkcmF3Q29udHJvbChjYW52
YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRoZW1lRW5naW5lRFJUV2lu
OjpwYWludFNwaW5CdXR0b24oV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUs
IGludCBjbGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGhlbWVD
b250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3du
VHlwZTsKKyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOworCisgICAgaWYgKHBhcnQgPT0gU1BOUF9VUCkg
eworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7Cisg
ICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBVUFNfTk9STUFMOgorICAgICAg
ICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExVUCk7CisgICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVVBTX0RJU0FCTEVEOgorICAgICAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0lOQUNU
SVZFKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2Fi
bGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVUFNfUFJFU1NFRDoK
KyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQ
IHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVVBT
X0hPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1ND
Uk9MTFVQIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChwYXJ0ID09IFNQTlBfRE9XTikgeworICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6RG93bkFycm93VHlwZTsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkg
eworICAgICAgICBjYXNlIEROU19OT1JNQUw6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOworICAgICAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEROU19ESVNBQkxFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBETlNfUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJ
VF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX1BVU0hFRCkp
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3Rh
dGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBETlNfSE9UOgorICAgICAgICAg
ICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1Nf
SE9UKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVy
U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgZHJhd0NvbnRyb2woY2FudmFz
LCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6
cGFpbnRUZXh0RmllbGQoV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGlu
dCBjbGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QsIFdlYkNvbG9yIGNvbG9yLCBib29s
IGZpbGxDb250ZW50QXJlYSwgYm9vbCBkcmF3RWRnZXMpCit7CisgICAgV2ViVGhlbWVDb250cm9s
RFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlwZTsK
KyAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6VW5rbm93blN0YXRlOworCisgICAgV0VCS0lUX0FTU0VSVChFUF9FRElUVEVYVCA9
PSBwYXJ0KTsKKyAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VGV4dEZpZWxkVHlw
ZTsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEVUU19OT1JNQUw6CisgICAgICAg
IFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgRVRTX0hPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUg
PT0gREZDU19IT1QpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhv
dFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVRTX0RJU0FCTEVEOgorICAgICAg
ICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgRVRTX1NFTEVDVEVEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVRT
X0ZPQ1VTRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3Jt
YWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkZvY3VzZWRTdGF0
ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19SRUFET05MWToKKyAgICAgICAgV0VC
S0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UmVhZE9ubHlTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdUZXh0RmllbGQoY2FudmFzLCByZWN0LCBjdHlw
ZSwgY3N0YXRlLCBkcmF3RWRnZXMsIGZpbGxDb250ZW50QXJlYSwgY29sb3IpOworfQorCit2b2lk
IFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludFRyYWNrYmFyKFdlYkNhbnZhcyogY2FudmFzLCBp
bnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0
KQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6VW5rbm93blR5cGU7CisgICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0
ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKKworICAgIGlm
IChUS1BfVEhVTUJCT1RUT00gPT0gcGFydCkgeworICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6SG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZTsKKyAgICAgICAgc3dpdGNoIChz
dGF0ZSkgeworICAgICAgICBjYXNlIFRVU19OT1JNQUw6CisgICAgICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIFRVU19IT1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNf
RElTQUJMRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X0lOQUNUSVZFKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVFVTX1BS
RVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BV
U0hFRCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNz
ZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAoVEtQX1RIVU1CVkVSVCA9PSBwYXJ0KSB7CisgICAgICAg
IGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpWZXJ0aWNhbFNsaWRlclRodW1iVHlwZTsK
KyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFRVU19OT1JNQUw6CisgICAg
ICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRVU19IT1Q6CisgICAgICAgICAgICBXRUJL
SVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBUVVNfRElTQUJMRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgVFVTX1BSRVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLID09IHBh
cnQpIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxT
bGlkZXJUcmFja1R5cGU7CisgICAgICAgIFdFQktJVF9BU1NFUlQoc3RhdGUgPT0gVFJTX05PUk1B
TCk7CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwor
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOworICAg
IH0gZWxzZSBpZiAoVEtQX1RSQUNLVkVSVCA9PSBwYXJ0KSB7CisgICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpWZXJ0aWNhbFNsaWRlclRyYWNrVHlwZTsKKyAgICAgICAgV0VC
S0lUX0FTU0VSVChzdGF0ZSA9PSBUUlZTX05PUk1BTCk7CisgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOworICAgIH0gZWxzZQorICAgICAgICBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBl
LCBjc3RhdGUpOworfQorCisKK3ZvaWQgV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50UHJvZ3Jl
c3NCYXIoV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBi
YXJSZWN0LCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIHZhbHVlUmVjdCwgYm9vbCBkZXRlcm1pbmF0
ZSwgZG91YmxlKQoreworICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6UHJvZ3Jlc3NCYXJUeXBlOworICAgIFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6U3RhdGUgY3N0YXRlID0gZGV0ZXJtaW5hdGUgPyBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46Ok5vcm1hbFN0YXRlIDogV2ViVGhlbWVDb250cm9sRFJUV2luOjpJbmRldGVybWluYXRlU3Rh
dGU7CisgICAgZHJhd1Byb2dyZXNzQmFyKGNhbnZhcywgY3R5cGUsIGNzdGF0ZSwgYmFyUmVjdCwg
dmFsdWVSZWN0KTsKK30KKworCitXZWJLaXQ6OldlYlNpemUgV2ViVGhlbWVFbmdpbmVEUlRXaW46
OmdldFNpemUoaW50IHBhcnQpCit7CisgICAgcmV0dXJuIFdlYktpdDo6V2ViU2l6ZSgpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUaGVtZUVuZ2luZURSVFdpbi5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGhlbWVFbmdpbmVEUlRXaW4uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDZm
MzBlYWI5OGZkYmJmYzk2MzllYTYxNmY4M2YzM2U4OGRhZmViCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGhlbWVFbmdp
bmVEUlRXaW4uaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgaW1wbGVtZW50cyB0aGUgV2ViVGhl
bWVFbmdpbmUgQVBJIHVzZWQgYnkgdGhlIFdpbmRvd3MgdmVyc2lvbiBvZgorLy8gQ2hyb21pdW0g
dG8gcmVuZGVyIG5hdGl2ZSBmb3JtIGNvbnRyb2xzIGxpa2UgY2hlY2tib3hlcywgcmFkaW8gYnV0
dG9ucywKKy8vIGFuZCBzY3JvbGwgYmFycy4KKy8vIFRoZSBub3JtYWwgaW1wbGVtZW50YXRpb24g
KG5hdGl2ZV90aGVtZSkgcmVuZGVycyB0aGUgY29udHJvbHMgdXNpbmcgZWl0aGVyCisvLyB0aGUg
VVhUaGVtZSB0aGVtaW5nIGVuZ2luZSBwcmVzZW50IGluIFhQLCBWaXN0YSwgYW5kIFdpbiA3LCBv
ciB0aGUgImNsYXNzaWMiCisvLyB0aGVtZSB1c2VkIGlmIHRoYXQgdGhlbWUgaXMgc2VsZWN0ZWQg
aW4gdGhlIERlc2t0b3Agc2V0dGluZ3MuCisvLyBVbmZvcnR1bmF0ZWx5LCBib3RoIG9mIHRoZXNl
IHRoZW1lcyByZW5kZXIgY29udHJvbHMgZGlmZmVyZW50bHkgb24gdGhlCisvLyBkaWZmZXJlbnQg
dmVyc2lvbnMgb2YgV2luZG93cy4KKy8vCisvLyBJbiBvcmRlciB0byBlbnN1cmUgbWF4aW11bSBj
b25zaXN0ZW5jeSBvZiBiYXNlbGluZXMgYWNyb3NzIHRoZSBkaWZmZXJlbnQKKy8vIFdpbmRvd3Mg
dmVyc2lvbnMsIHdlIHByb3ZpZGUgYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIERSVCBoZXJl
CisvLyBpbnN0ZWFkLiBUaGVzZSBjb250cm9scyBhcmUgYWN0dWFsbHkgcGxhdGZvcm0taW5kZXBl
bmRlbnQgKHRoZXkncmUgcmVuZGVyZWQKKy8vIHVzaW5nIFNraWEpIGFuZCBjb3VsZCBiZSB1c2Vk
IG9uIExpbnV4IGFuZCB0aGUgTWFjIGFzIHdlbGwsIHNob3VsZCB3ZQorLy8gY2hvb3NlIHRvIGRv
IHNvIGF0IHNvbWUgcG9pbnQuCisvLworCisjaWZuZGVmIFdlYlRoZW1lRW5naW5lRFJUV2luX2gK
KyNkZWZpbmUgV2ViVGhlbWVFbmdpbmVEUlRXaW5faAorCisjaW5jbHVkZSA8cHVibGljL3dpbi9X
ZWJUaGVtZUVuZ2luZS5oPgorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIFdl
YlRoZW1lRW5naW5lRFJUV2luIDogcHVibGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUgeworcHVi
bGljOgorICAgIFdlYlRoZW1lRW5naW5lRFJUV2luKCkgeyB9CisKKyAgICAvLyBXZWJUaGVtZUVu
Z2luZSBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbigKKyAgICAgICAgV2Vi
S2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAor
ICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE1lbnVMaXN0KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3Rh
dGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwor
CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQXJyb3coCisgICAgICAgIFdlYktpdDo6
V2ViQ2FudmFzKiwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBX
ZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRodW1i
KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAgdmly
dHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVHJhY2soCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFz
KiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3Qg
V2ViS2l0OjpXZWJSZWN0JiwgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBhbGlnblJlY3QpOworCisg
ICAgdmlydHVhbCB2b2lkIHBhaW50U3BpbkJ1dHRvbigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52
YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25z
dCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFRleHRGaWVsZCgK
KyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xh
c3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLCBXZWJLaXQ6OldlYkNv
bG9yLCBib29sIGZpbGxDb250ZW50QXJlYSwKKyAgICAgICAgYm9vbCBkcmF3RWRnZXMpOworCisg
ICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tiYXIoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFz
KiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3Qg
V2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQcm9ncmVzc0JhcigK
KyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGJhclJl
Y3QsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgdmFsdWVSZWN0LAorICAgICAgICBi
b29sIGRldGVybWluYXRlLCBkb3VibGUgdGltZSk7CisKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
U2l6ZSBnZXRTaXplKGludCBwYXJ0KTsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlRoZW1lRW5n
aW5lRFJUV2luX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3Bw
CmluZGV4IDRlMjEwMzE3MTRlMzkwOGIzYmUzYTYyNjhhMjNmYTZmNzg2NmJlMDUuLjljMjRhNThk
NDYyNDQ5NTIxOGVkYjJjM2M3YWFjNWVlNzMyNGRjZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApAQCAtMTQwLDYgKzE0MCwxMSBAQCB2b2lkIFRlc3RT
aGVsbDo6aW5pdGlhbGl6ZShNb2NrUGxhdGZvcm0qIHBsYXRmb3JtU3VwcG9ydCkKICNpZiBFTkFC
TEUoTElOS19QUkVSRU5ERVIpCiAgICAgbV9wcmVyZW5kZXJpbmdTdXBwb3J0ID0gYWRvcHRQdHIo
bmV3IE1vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0KCkpOwogI2VuZGlmCisjaWYgIWRlZmluZWQo
VVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FKSAmJiAoT1MoV0lORE9XUykgfHwgT1MoTUFDX09TX1gp
KQorICAgIC8vIFNldCB0aGVtZSBlbmdpbmUuCisgICAgd2Via2l0X3N1cHBvcnQ6OlNldFRoZW1l
RW5naW5lKG1fdGVzdEludGVyZmFjZXMtPnRoZW1lRW5naW5lKCkpOworI2VuZGlmCisKIAogICAg
IFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5oCmluZGV4IDAyZGExZmMyZTk1ZWE2ODY1MTk1NTJlZjcwOGRjYzk1MzE4
NDJmNDguLjZlOTg5MDNiNmQ2MTE3MTYyZjFlMTM4MTMzZmUyYTQwNDg4NTFhMGYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNs
YXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlRo
cmVhZDsKIGNsYXNzIFdlYlZpZXc7CitjbGFzcyBXZWJUaGVtZUVuZ2luZTsKIGNsYXNzIFdlYlVS
TDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1t
CmluZGV4IGQ3OWE4YzgzNTY3Y2YxYTdkNWNhZjVkMDk4ZWYwYWQ0YzRhMTc1YzQuLjUzZWRlNTY2
NjliMjg0MTgzOTM3NzU2ODY2MDM3YWQwMDgwOGJmMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxNYWMubW0KQEAgLTMxLDEyICszMSw5IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJUZXN0U2hlbGwuaCIKLSNpbmNsdWRlICJXZWJUaGVt
ZUVuZ2luZURSVE1hYy5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0
LmgiCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0Lmg+CiAKLXN0YXRpYyBXZWJUaGVtZUVuZ2luZURS
VE1hYyB0aGVtZUVuZ2luZTsKLQogLy8gQSBjbGFzcyB0byBiZSB0aGUgdGFyZ2V0L3NlbGVjdG9y
IG9mIHRoZSAid2F0Y2hkb2ciIHRocmVhZCB0aGF0IGVuc3VyZXMKIC8vIHBhZ2VzIHRpbWVvdXQg
aWYgdGhleSB0YWtlIHRvbyBsb25nIGFuZCB0ZWxscyB0aGUgdGVzdCBoYXJuZXNzIHZpYSBzdGRv
dXQuCiBAaW50ZXJmYWNlIFdhdGNoRG9nVGFyZ2V0IDogTlNPYmplY3QgewpAQCAtMTI5LDcgKzEy
Niw2IEBAIHZvaWQgVGVzdFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKIAogdm9pZCBwbGF0Zm9y
bUluaXQoaW50KiwgY2hhcioqKikKIHsKLSAgICB3ZWJraXRfc3VwcG9ydDo6U2V0VGhlbWVFbmdp
bmUoJnRoZW1lRW5naW5lKTsKIH0KIAogdm9pZCBvcGVuU3RhcnR1cERpYWxvZygpCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcAppbmRleCAzYTQ2Y2Zi
NzFiYmY2MTU5NzU3Yjk5MDU5MjVmY2Y1NTgwMGE1ZTRmLi4yNTE2NDFlZDNlMjBjYmRmNmM5ZTBl
YjM5MjA1OWQyNTg0YmRkZGUwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGxXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbFdpbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJUZXN0U2hlbGwuaCIKIAotI2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJUV2lu
LmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKICNpbmNsdWRl
IDxmY250bC5oPgogI2luY2x1ZGUgPGlvLmg+CkBAIC00OCwxMSArNDcsNiBAQAogI2RlZmluZSBO
T05DTElFTlRNRVRSSUNTX1NJWkVfUFJFX1ZJU1RBIFwKICAgICBTSVpFT0ZfU1RSVUNUX1dJVEhf
U1BFQ0lGSUVEX0xBU1RfTUVNQkVSKE5PTkNMSUVOVE1FVFJJQ1MsIGxmTWVzc2FnZUZvbnQpCiAK
LSNpZm5kZWYgVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FCi0vLyBUaGVtZSBlbmdpbmUKLXN0YXRp
YyBXZWJUaGVtZUVuZ2luZURSVFdpbiB0aGVtZUVuZ2luZTsKLSNlbmRpZgotCiAvLyBUaHJlYWQg
bWFpbiB0byBydW4gZm9yIHRoZSB0aHJlYWQgd2hpY2gganVzdCB0ZXN0cyBmb3IgdGltZW91dC4K
IHVuc2lnbmVkIGludCBfX3N0ZGNhbGwgd2F0Y2hEb2dUaHJlYWQodm9pZCogYXJnKQogewpAQCAt
MTIwLDExICsxMTQsNiBAQCB2b2lkIHBsYXRmb3JtSW5pdChpbnQqLCBjaGFyKioqKQogICAgIF9z
ZXRtb2RlKF9maWxlbm8oc3Rkb3V0KSwgX09fQklOQVJZKTsKICAgICBfc2V0bW9kZShfZmlsZW5v
KHN0ZGVyciksIF9PX0JJTkFSWSk7CiAKLSNpZm5kZWYgVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1F
Ci0gICAgLy8gU2V0IHRoZW1lIGVuZ2luZS4KLSAgICB3ZWJraXRfc3VwcG9ydDo6U2V0VGhlbWVF
bmdpbmUoJnRoZW1lRW5naW5lKTsKLSNlbmRpZgotCiAgICAgLy8gTG9hZCBBaGVtIGZvbnQuCiAg
ICAgLy8gQUhFTV9fX18uVFRGIGlzIGNvcGllZCB0byB0aGUgZGlyZWN0b3J5IG9mIER1bXBSZW5k
ZXJUcmVlLmV4ZSBieSBXZWJLaXQuZ3lwLgogICAgIFdDSEFSIHBhdGhbX01BWF9QQVRIXTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERS
VFdpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xE
UlRXaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjMTQzMWQ4NGI1NDY3MGQy
YzlkNjllMDIwM2YxMDk2Mjc3MTg1MTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29u
dHJvbERSVFdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MjkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIFRoaXMgZmls
ZSBpbXBsZW1lbnRzIGEgc2ltcGxlIGdlbmVyaWMgdmVyc2lvbiBvZiB0aGUgV2ViVGhlbWVFbmdp
bmUsCi0vLyB3aGljaCBpcyB1c2VkIHRvIGRyYXcgYWxsIHRoZSBuYXRpdmUgY29udHJvbHMgb24g
YSB3ZWIgcGFnZS4gV2UgdXNlIHRoaXMKLS8vIGZpbGUgd2hlbiBydW5uaW5nIGluIGxheW91dCB0
ZXN0IG1vZGUgaW4gb3JkZXIgdG8gcmVtb3ZlIGFueQotLy8gcGxhdGZvcm0tc3BlY2lmaWMgcmVu
ZGVyaW5nIGRpZmZlcmVuY2VzIGR1ZSB0byB0aGVtZXMsIGNvbG9ycywgZXRjLgotLy8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlRoZW1lQ29udHJvbERSVFdpbi5oIgotCi0j
aW5jbHVkZSAic2tpYS9leHQvc2tpYV91dGlsc193aW4uaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0
eS9za2lhL2luY2x1ZGUvY29yZS9Ta0NhbnZhcy5oIgotI2luY2x1ZGUgInRoaXJkX3BhcnR5L3Nr
aWEvaW5jbHVkZS9jb3JlL1NrUGFpbnQuaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2lu
Y2x1ZGUvY29yZS9Ta1BhdGguaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUv
Y29yZS9Ta1JlY3QuaCIKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1zdGF0aWMgY29uc3QgU2tDb2xv
ciBlZGdlQ29sb3IgICAgID0gU0tfQ29sb3JCTEFDSzsKLXN0YXRpYyBjb25zdCBTa0NvbG9yIHJl
YWRPbmx5Q29sb3IgPSBTa0NvbG9yU2V0UkdCKDB4ZTksIDB4YzIsIDB4YTYpOwotc3RhdGljIGNv
bnN0IFNrQ29sb3IgZmdDb2xvciAgICAgICA9IFNLX0NvbG9yQkxBQ0s7Ci1zdGF0aWMgY29uc3Qg
U2tDb2xvciBiZ0NvbG9yc1tdICAgID0gewotICAgIFNLX0NvbG9yQkxBQ0ssICAgICAgICAgICAg
ICAgICAgIC8vIFVua25vd24KLSAgICBTa0NvbG9yU2V0UkdCKDB4YzksIDB4YzksIDB4YzkpLCAv
LyBEaXNhYmxlZAotICAgIFNrQ29sb3JTZXRSR0IoMHhmMywgMHhlMCwgMHhkMCksIC8vIFJlYWRv
bmx5Ci0gICAgU2tDb2xvclNldFJHQigweDg5LCAweGM0LCAweGZmKSwgLy8gTm9ybWFsCi0gICAg
U2tDb2xvclNldFJHQigweDQzLCAweGY5LCAweGZmKSwgLy8gSG90Ci0gICAgU2tDb2xvclNldFJH
QigweDIwLCAweGY2LCAweGNjKSwgLy8gRm9jdXNlZAotICAgIFNrQ29sb3JTZXRSR0IoMHgwMCwg
MHhmMywgMHhhYyksIC8vIEhvdmVyCi0gICAgU2tDb2xvclNldFJHQigweGE5LCAweGZmLCAweDEy
KSwgLy8gUHJlc3NlZAotICAgIFNrQ29sb3JTZXRSR0IoMHhjYywgMHhjYywgMHhjYykgIC8vIElu
ZGV0ZXJtaW5hdGUKLX07Ci0KLXN0YXRpYyBTa0lSZWN0IHZhbGlkYXRlKGNvbnN0IFNrSVJlY3Qm
IHJlY3QsIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSkKLXsKLSAgICBzd2l0Y2gg
KGN0eXBlKSB7Ci0gICAgY2FzZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5
cGU6Ci0gICAgY2FzZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRCb3hUeXBlOgotICAg
IGNhc2UgV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU6Ci0gICAgY2Fz
ZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU6IHsKLSAgICAgICAgU2tJ
UmVjdCByZXR2YWwgPSByZWN0OwotCi0gICAgICAgIC8vIFRoZSBtYXhpbXVtIHdpZHRoIGFuZCBo
ZWlnaHQgaXMgMTMuCi0gICAgICAgIC8vIENlbnRlciB0aGUgc3F1YXJlIGluIHRoZSBwYXNzZWQg
cmVjdGFuZ2xlLgotICAgICAgICBjb25zdCBpbnQgbWF4Q29udHJvbFNpemUgPSAxMzsKLSAgICAg
ICAgaW50IGNvbnRyb2xTaXplID0gc3RkOjptaW4ocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp
KTsKLSAgICAgICAgY29udHJvbFNpemUgPSBzdGQ6Om1pbihjb250cm9sU2l6ZSwgbWF4Q29udHJv
bFNpemUpOwotCi0gICAgICAgIHJldHZhbC5mTGVmdCAgID0gcmVjdC5mTGVmdCArIChyZWN0Lndp
ZHRoKCkgLyAyKSAtIChjb250cm9sU2l6ZSAvIDIpOwotICAgICAgICByZXR2YWwuZlJpZ2h0ICA9
IHJldHZhbC5mTGVmdCArIGNvbnRyb2xTaXplIC0gMTsKLSAgICAgICAgcmV0dmFsLmZUb3AgICAg
PSByZWN0LmZUb3AgKyAocmVjdC5oZWlnaHQoKSAvIDIpIC0gKGNvbnRyb2xTaXplIC8gMik7Ci0g
ICAgICAgIHJldHZhbC5mQm90dG9tID0gcmV0dmFsLmZUb3AgKyBjb250cm9sU2l6ZSAtIDE7Ci0K
LSAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gcmVjdDsKLSAgICB9Ci19Ci0KLS8vIFdlYlRoZW1lQ29udHJvbERSVFdpbgotCi1XZWJU
aGVtZUNvbnRyb2xEUlRXaW46OldlYlRoZW1lQ29udHJvbERSVFdpbihTa0NhbnZhcyogY2FudmFz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2tJ
UmVjdCYgaXJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUeXBlIGN0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3RhdGUgY3N0YXRlKQotICAgIDogbV9jYW52YXMoY2FudmFzKQotICAgICwgbV9pcmVjdCh2
YWxpZGF0ZShpcmVjdCwgY3R5cGUpKQotICAgICwgbV90eXBlKGN0eXBlKQotICAgICwgbV9zdGF0
ZShjc3RhdGUpCi0gICAgLCBtX2xlZnQobV9pcmVjdC5mTGVmdCkKLSAgICAsIG1fcmlnaHQobV9p
cmVjdC5mUmlnaHQpCi0gICAgLCBtX3RvcChtX2lyZWN0LmZUb3ApCi0gICAgLCBtX2JvdHRvbSht
X2lyZWN0LmZCb3R0b20pCi0gICAgLCBtX2hlaWdodChtX2lyZWN0LmhlaWdodCgpKQotICAgICwg
bV93aWR0aChtX2lyZWN0LndpZHRoKCkpCi0gICAgLCBtX2VkZ2VDb2xvcihlZGdlQ29sb3IpCi0g
ICAgLCBtX2JnQ29sb3IoYmdDb2xvcnNbY3N0YXRlXSkKLSAgICAsIG1fZmdDb2xvcihmZ0NvbG9y
KQotewotfQotCi1XZWJUaGVtZUNvbnRyb2xEUlRXaW46On5XZWJUaGVtZUNvbnRyb2xEUlRXaW4o
KQotewotfQotCi12b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Ym94KGNvbnN0IFNrSVJlY3Qm
IHJlY3QsIFNrQ29sb3IgZmlsbENvbG9yKQotewotICAgIFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICBw
YWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgcGFpbnQuc2V0Q29sb3Io
ZmlsbENvbG9yKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKLQotICAg
IHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50
OjprU3Ryb2tlX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsK
LX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmxpbmUoaW50IHgwLCBpbnQgeTAsIGlu
dCB4MSwgaW50IHkxLCBTa0NvbG9yIGNvbG9yKQotewotICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAg
cGFpbnQuc2V0Q29sb3IoY29sb3IpOwotICAgIG1fY2FudmFzLT5kcmF3TGluZShTa0ludFRvU2Nh
bGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCksCi0gICAgICAgICAgICAgICAgICAgICAgIFNrSW50
VG9TY2FsYXIoeDEpLCBTa0ludFRvU2NhbGFyKHkxKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
cGFpbnQpOwotfQotCi12b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6dHJpYW5nbGUoaW50IHgw
LCBpbnQgeTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgxLCBp
bnQgeTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgyLCBpbnQg
eTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBjb2xvcikK
LXsKLSAgICBTa1BhdGggcGF0aDsKLSAgICBTa1BhaW50IHBhaW50OwotCi0gICAgcGFpbnQuc2V0
Q29sb3IoY29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsK
LSAgICBwYXRoLmluY1Jlc2VydmUoNCk7Ci0gICAgcGF0aC5tb3ZlVG8oU2tJbnRUb1NjYWxhcih4
MCksIFNrSW50VG9TY2FsYXIoeTApKTsKLSAgICBwYXRoLmxpbmVUbyhTa0ludFRvU2NhbGFyKHgx
KSwgU2tJbnRUb1NjYWxhcih5MSkpOwotICAgIHBhdGgubGluZVRvKFNrSW50VG9TY2FsYXIoeDIp
LCBTa0ludFRvU2NhbGFyKHkyKSk7Ci0gICAgcGF0aC5jbG9zZSgpOwotICAgIG1fY2FudmFzLT5k
cmF3UGF0aChwYXRoLCBwYWludCk7Ci0KLSAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7
Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgbV9jYW52
YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OnJvdW5kUmVjdChTa0NvbG9yIGNvbG9yKQotewotICAgIFNrUmVjdCByZWN0OwotICAgIFNr
U2NhbGFyIHJhZGl1cyA9IFNrSW50VG9TY2FsYXIoNSk7Ci0gICAgU2tQYWludCBwYWludDsKLQot
ICAgIHJlY3Quc2V0KG1faXJlY3QpOwotICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBw
YWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdS
b3VuZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHBhaW50KTsKLQotICAgIHBhaW50LnNldENv
bG9yKG1fZWRnZUNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0
eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd1JvdW5kUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywg
cGFpbnQpOwotfQotCi12b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6b3ZhbChTa0NvbG9yIGNv
bG9yKQotewotICAgIFNrUmVjdCByZWN0OwotICAgIFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICByZWN0
LnNldChtX2lyZWN0KTsKLSAgICBwYWludC5zZXRDb2xvcihjb2xvcik7Ci0gICAgcGFpbnQuc2V0
U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3T3ZhbChyZWN0
LCBwYWludCk7Ci0KLSAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgcGFpbnQu
c2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdPdmFs
KHJlY3QsIHBhaW50KTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmNpcmNsZShT
a1NjYWxhciByYWRpdXMsIFNrQ29sb3IgY29sb3IpCi17Ci0gICAgU2tTY2FsYXIgY3kgPSBTa0lu
dFRvU2NhbGFyKG1fdG9wICArIG1faGVpZ2h0IC8gMik7Ci0gICAgU2tTY2FsYXIgY3ggPSBTa0lu
dFRvU2NhbGFyKG1fbGVmdCArIG1fd2lkdGggLyAyKTsKLSAgICBTa1BhaW50IHBhaW50OwotCi0g
ICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtG
aWxsX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFp
bnQpOwotCi0gICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOwotICAgIHBhaW50LnNldFN0
eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3Q2lyY2xlKGN4
LCBjeSwgcmFkaXVzLCBwYWludCk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpu
ZXN0ZWRCb3hlcyhpbnQgaW5kZW50TGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZW50VG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbmRlbnRSaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZW50Qm90dG9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNrQ29sb3Igb3V0ZXJDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTa0NvbG9yIGlubmVyQ29sb3IpCi17Ci0gICAgU2tJUmVjdCBsaXJl
Y3Q7Ci0gICAgYm94KG1faXJlY3QsIG91dGVyQ29sb3IpOwotICAgIGxpcmVjdC5zZXQobV9pcmVj
dC5mTGVmdCArIGluZGVudExlZnQsCi0gICAgICAgICAgICAgICBtX2lyZWN0LmZUb3AgKyBpbmRl
bnRUb3AsCi0gICAgICAgICAgICAgICBtX2lyZWN0LmZSaWdodCAtIGluZGVudFJpZ2h0LAotICAg
ICAgICAgICAgICAgbV9pcmVjdC5mQm90dG9tIC0gaW5kZW50Qm90dG9tKTsKLSAgICBib3gobGly
ZWN0LCBpbm5lckNvbG9yKTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Om1hcmtT
dGF0ZSgpCi17Ci0gICAgLy8gVGhlIGhvcml6b250YWwgbGluZXMgaW4gYSByZWFkIG9ubHkgY29u
dHJvbCBhcmUgc3BhY2VkIGJ5IHRoaXMgYW1vdW50LgotICAgIGNvbnN0IGludCByZWFkT25seUxp
bmVPZmZzZXQgPSA1OwotCi0gICAgLy8gVGhlIGxlbmd0aCBvZiBhIHRyaWFuZ2xlIHNpZGUgZm9y
IHRoZSBjb3JuZXIgbWFya3MuCi0gICAgY29uc3QgaW50IHRyaWFuZ2xlU2l6ZSA9IDU7Ci0KLSAg
ICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBjYXNlIFVua25vd25TdGF0ZToKLSAgICBjYXNlIERp
c2FibGVkU3RhdGU6Ci0gICAgY2FzZSBOb3JtYWxTdGF0ZToKLSAgICBjYXNlIEluZGV0ZXJtaW5h
dGVTdGF0ZToKLSAgICAgICAgLy8gRG9uJ3QgdmlzdWFsbHkgbWFyayB0aGVzZSBzdGF0ZXMgKGNv
bG9yIGlzIGVub3VnaCkuCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhZE9ubHlTdGF0ZToK
LSAgICAgICAgLy8gRHJhd2luZyBsaW5lcyBhY3Jvc3MgdGhlIGNvbnRyb2wuCi0gICAgICAgIGZv
ciAoaW50IGkgPSBtX3RvcCArIHJlYWRPbmx5TGluZU9mZnNldDsgaSA8IG1fYm90dG9tOyBpICs9
IHJlYWRPbmx5TGluZU9mZnNldCkKLSAgICAgICAgICAgIGxpbmUobV9sZWZ0ICsgMSwgaSwgbV9y
aWdodCAtIDEsIGksIHJlYWRPbmx5Q29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
SG90U3RhdGU6Ci0gICAgICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgdXBwZXIgbGVmdCBj
b3JuZXIgb2YgdGhlIGNvbnRyb2wuCi0gICAgICAgIHRyaWFuZ2xlKG1fbGVmdCwgICAgICAgICAg
ICAgICAgIG1fdG9wLAotICAgICAgICAgICAgICAgICBtX2xlZnQgKyB0cmlhbmdsZVNpemUsICBt
X3RvcCwKLSAgICAgICAgICAgICAgICAgbV9sZWZ0LCAgICAgICAgICAgICAgICAgbV90b3AgKyB0
cmlhbmdsZVNpemUsICAgIG1fZWRnZUNvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IEhvdmVyU3RhdGU6Ci0gICAgICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgdXBwZXIgcmln
aHQgY29ybmVyIG9mIHRoZSBjb250cm9sLgotICAgICAgICB0cmlhbmdsZShtX3JpZ2h0LCAgICAg
ICAgICAgICAgICBtX3RvcCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCwgICAgICAgICAgICAg
ICAgbV90b3AgKyB0cmlhbmdsZVNpemUsCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQgLSB0cmlh
bmdsZVNpemUsIG1fdG9wLCAgICAgICAgICAgICAgICAgICBtX2VkZ2VDb2xvcik7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBGb2N1c2VkU3RhdGU6Ci0gICAgICAgIC8vIERyYXcgYSB0cmlh
bmdsZSBpbiB0aGUgYm90dG9tIHJpZ2h0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KLSAgICAgICAg
dHJpYW5nbGUobV9yaWdodCwgICAgICAgICAgICAgICAgbV9ib3R0b20sCi0gICAgICAgICAgICAg
ICAgIG1fcmlnaHQgLSB0cmlhbmdsZVNpemUsIG1fYm90dG9tLAotICAgICAgICAgICAgICAgICBt
X3JpZ2h0LCAgICAgICAgICAgICAgICBtX2JvdHRvbSAtIHRyaWFuZ2xlU2l6ZSwgbV9lZGdlQ29s
b3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgUHJlc3NlZFN0YXRlOgotICAgICAgICAv
LyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIGJvdHRvbSBsZWZ0IGNvcm5lciBvZiB0aGUgY29udHJv
bC4KLSAgICAgICAgdHJpYW5nbGUobV9sZWZ0LCAgICAgICAgICAgICAgICAgbV9ib3R0b20sCi0g
ICAgICAgICAgICAgICAgIG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fYm90dG9tIC0gdHJpYW5n
bGVTaXplLAotICAgICAgICAgICAgICAgICBtX2xlZnQgKyB0cmlhbmdsZVNpemUsICBtX2JvdHRv
bSwgICAgICAgICAgICAgICAgbV9lZGdlQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBDUkFTSCgpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpk
cmF3KCkKLXsKLSAgICBpbnQgaGFsZldpZHRoID0gbV93aWR0aCAvIDI7Ci0gICAgaW50IGhhbGZI
ZWlnaHQgPSBtX2hlaWdodCAvIDI7Ci0gICAgaW50IHF1YXJ0ZXJXaWR0aCA9IG1fd2lkdGggLyA0
OwotICAgIGludCBxdWFydGVySGVpZ2h0ID0gbV9oZWlnaHQgLyA0OwotCi0gICAgLy8gSW5kZW50
IGFtb3VudHMgZm9yIHRoZSBjaGVjayBpbiBhIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbi4KLSAg
ICBjb25zdCBpbnQgY2hlY2tJbmRlbnQgPSAzOwotCi0gICAgLy8gSW5kZW50IGFtb3VudHMgZm9y
IHNob3J0IGFuZCBsb25nIHNpZGVzIG9mIHRoZSBzY3JvbGxiYXIgbm90Y2hlcy4KLSAgICBjb25z
dCBpbnQgbm90Y2hMb25nT2Zmc2V0ID0gMTsKLSAgICBjb25zdCBpbnQgbm90Y2hTaG9ydE9mZnNl
dCA9IDQ7Ci0gICAgY29uc3QgaW50IG5vT2Zmc2V0ID0gMDsKLQotICAgIC8vIEluZGVudCBhbW91
bnRzIGZvciB0aGUgc2hvcnQgYW5kIGxvbmcgc2lkZXMgb2YgYSBzY3JvbGwgdGh1bWIgYm94Lgot
ICAgIGNvbnN0IGludCB0aHVtYkxvbmdJbmRlbnQgPSAwOwotICAgIGNvbnN0IGludCB0aHVtYlNo
b3J0SW5kZW50ID0gMjsKLQotICAgIC8vIEluZGVudHMgZm9yIHRoZSBjcm9zc2hhdGNoIG9uIGEg
c2Nyb2xsIGdyaXAuCi0gICAgY29uc3QgaW50IGdyaXBMb25nSW5kZW50ID0gMzsKLSAgICBjb25z
dCBpbnQgZ3JpcFNob3J0SW5kZW50ID0gNTsKLQotICAgIC8vIEluZGVudHMgZm9yIHRoZSB0aGUg
c2xpZGVyIHRyYWNrLgotICAgIGNvbnN0IGludCBzbGlkZXJJbmRlbnQgPSAyOwotCi0gICAgc3dp
dGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFVua25vd25UeXBlOgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IFRleHRGaWVsZFR5cGU6Ci0gICAgICAgIC8vIFdlIHJlbmRlciB0aGlzIGJ5IGhhbmQgb3V0c2lk
ZSBvZiB0aGlzIGZ1bmN0aW9uLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgQ1JBU0goKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFB1c2hCdXR0b25UeXBlOgot
ICAgICAgICAvLyBwdXNoIGJ1dHRvbnMgcmVuZGVyIGFzIGEgcm91bmRlZCByZWN0YW5nbGUKLSAg
ICAgICAgcm91bmRSZWN0KG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBV
bmNoZWNrZWRCb3hUeXBlOgotICAgICAgICAvLyBVbmNoZWNrZWQgYm94ZXMgYXJlIHNpbXBseSBw
bGFpbiBib3hlcy4KLSAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBDaGVja2VkQm94VHlwZToKLSAgICAgICAgbmVzdGVkQm94ZXMoY2hl
Y2tJbmRlbnQsIGNoZWNrSW5kZW50LCBjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIG1fYmdDb2xv
ciwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEluZGV0ZXJtaW5hdGVD
aGVja2JveFR5cGU6Ci0gICAgICAgIC8vIEluZGV0ZXJtaW5hdGUgY2hlY2tib3ggaXMgYSBib3gg
Y29udGFpbmluZyAnLScuCi0gICAgICAgIG5lc3RlZEJveGVzKGNoZWNrSW5kZW50LCBoYWxmSGVp
Z2h0LCBjaGVja0luZGVudCwgaGFsZkhlaWdodCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgVW5jaGVja2VkUmFkaW9UeXBlOgotICAgICAgICBjaXJj
bGUoU2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0KSwgbV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIENoZWNrZWRSYWRpb1R5cGU6Ci0gICAgICAgIGNpcmNsZShTa0ludFRvU2Nh
bGFyKGhhbGZIZWlnaHQpLCBtX2JnQ29sb3IpOwotICAgICAgICBjaXJjbGUoU2tJbnRUb1NjYWxh
cihoYWxmSGVpZ2h0IC0gY2hlY2tJbmRlbnQpLCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFja1R5cGU6IHsKLSAgICAgICAgLy8g
RHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIGxlZnQuCi0gICAgICAgIGludCBsb25nT2Zm
c2V0ID0gaGFsZkhlaWdodCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAgICAgaW50IHNob3J0T2Zm
c2V0ID0gbV93aWR0aCAtIG5vdGNoU2hvcnRPZmZzZXQ7Ci0gICAgICAgIG5lc3RlZEJveGVzKG5v
T2Zmc2V0LCBsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbV9iZ0NvbG9yLCBt
X2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgSG9yaXpvbnRh
bFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEg
bm90Y2ggYXQgdGhlIHJpZ2h0LgotICAgICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmSGVpZ2h0
IC0gbm90Y2hMb25nT2Zmc2V0OwotICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX3dpZHRoIC0g
bm90Y2hTaG9ydE9mZnNldDsKLSAgICAgICAgbmVzdGVkQm94ZXMoc2hvcnRPZmZzZXQsIGxvbmdP
ZmZzZXQsIG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgVmVydGljYWxTY3JvbGxUcmFja0JhY2tUeXBl
OiB7Ci0gICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSB0b3AuCi0gICAg
ICAgIGludCBsb25nT2Zmc2V0ICA9IGhhbGZXaWR0aCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAg
ICAgaW50IHNob3J0T2Zmc2V0ID0gbV9oZWlnaHQgLSBub3RjaFNob3J0T2Zmc2V0OwotICAgICAg
ICBuZXN0ZWRCb3hlcyhsb25nT2Zmc2V0LCBub09mZnNldCwgbG9uZ09mZnNldCwgc2hvcnRPZmZz
ZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
Y2FzZSBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBh
IGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIGJvdHRvbS4KLSAgICAgICAgaW50IGxvbmdPZmZzZXQg
ID0gaGFsZldpZHRoIC0gbm90Y2hMb25nT2Zmc2V0OwotICAgICAgICBpbnQgc2hvcnRPZmZzZXQg
PSBtX2hlaWdodCAtIG5vdGNoU2hvcnRPZmZzZXQ7Ci0gICAgICAgIG5lc3RlZEJveGVzKGxvbmdP
ZmZzZXQsIHNob3J0T2Zmc2V0LCBsb25nT2Zmc2V0LCBub09mZnNldCwgbV9iZ0NvbG9yLCBtX2Zn
Q29sb3IpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIEhvcml6b250YWxTY3Jv
bGxUaHVtYlR5cGU6Ci0gICAgICAgIC8vIERyYXcgYSBuYXJyb3dlciBib3ggb24gdG9wIG9mIHRo
ZSBvdXRzaWRlIGJveC4KLSAgICAgICAgbmVzdGVkQm94ZXModGh1bWJMb25nSW5kZW50LCB0aHVt
YlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIG1fYmdDb2xv
ciwgbV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFZlcnRpY2FsU2Nyb2xs
VGh1bWJUeXBlOgotICAgICAgICAvLyBEcmF3IGEgc2hvcnRlciBib3ggb24gdG9wIG9mIHRoZSBv
dXRzaWRlIGJveC4KLSAgICAgICAgbmVzdGVkQm94ZXModGh1bWJTaG9ydEluZGVudCwgdGh1bWJM
b25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIG1fYmdDb2xvciwg
bV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvcml6b250YWxTbGlkZXJU
aHVtYlR5cGU6Ci0gICAgY2FzZSBWZXJ0aWNhbFNsaWRlclRodW1iVHlwZToKLSAgICAgICAgLy8g
U2xpZGVyIHRodW1icyBhcmUgb3ZhbHMuCi0gICAgICAgIG92YWwobV9iZ0NvbG9yKTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvcml6b250YWxTY3JvbGxHcmlwVHlwZTogewotICAgICAg
ICAvLyBEcmF3IGEgaG9yaXpvbnRhbCBjcm9zc2hhdGNoIGZvciB0aGUgZ3JpcC4KLSAgICAgICAg
aW50IGxvbmdPZmZzZXQgPSBoYWxmV2lkdGggLSBncmlwTG9uZ0luZGVudDsKLSAgICAgICAgbGlu
ZShtX2xlZnQgICsgZ3JpcExvbmdJbmRlbnQsIG1fdG9wICAgICsgaGFsZkhlaWdodCwKLSAgICAg
ICAgICAgICBtX3JpZ2h0IC0gZ3JpcExvbmdJbmRlbnQsIG1fdG9wICAgICsgaGFsZkhlaWdodCwg
ICAgICBtX2ZnQ29sb3IpOwotICAgICAgICBsaW5lKG1fbGVmdCAgKyBsb25nT2Zmc2V0LCAgICAg
bV90b3AgICAgKyBncmlwU2hvcnRJbmRlbnQsCi0gICAgICAgICAgICAgbV9sZWZ0ICArIGxvbmdP
ZmZzZXQsICAgICBtX2JvdHRvbSAtIGdyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKLSAgICAg
ICAgbGluZShtX3JpZ2h0IC0gbG9uZ09mZnNldCwgICAgIG1fdG9wICAgICsgZ3JpcFNob3J0SW5k
ZW50LAotICAgICAgICAgICAgIG1fcmlnaHQgLSBsb25nT2Zmc2V0LCAgICAgbV9ib3R0b20gLSBn
cmlwU2hvcnRJbmRlbnQsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IGNhc2UgVmVydGljYWxTY3JvbGxHcmlwVHlwZTogewotICAgICAgICAvLyBEcmF3IGEgdmVydGlj
YWwgY3Jvc3NoYXRjaCBmb3IgdGhlIGdyaXAuCi0gICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFs
ZkhlaWdodCAtIGdyaXBMb25nSW5kZW50OwotICAgICAgICBsaW5lKG1fbGVmdCAgKyBoYWxmV2lk
dGgsICAgICAgIG1fdG9wICAgICsgZ3JpcExvbmdJbmRlbnQsCi0gICAgICAgICAgICAgbV9sZWZ0
ICArIGhhbGZXaWR0aCwgICAgICAgbV9ib3R0b20gLSBncmlwTG9uZ0luZGVudCwgbV9mZ0NvbG9y
KTsKLSAgICAgICAgbGluZShtX2xlZnQgICsgZ3JpcFNob3J0SW5kZW50LCBtX3RvcCAgICArIGxv
bmdPZmZzZXQsCi0gICAgICAgICAgICAgbV9yaWdodCAtIGdyaXBTaG9ydEluZGVudCwgbV90b3Ag
ICAgKyBsb25nT2Zmc2V0LCAgICAgbV9mZ0NvbG9yKTsKLSAgICAgICAgbGluZShtX2xlZnQgICsg
Z3JpcFNob3J0SW5kZW50LCBtX2JvdHRvbSAtIGxvbmdPZmZzZXQsCi0gICAgICAgICAgICAgbV9y
aWdodCAtIGdyaXBTaG9ydEluZGVudCwgbV9ib3R0b20gLSBsb25nT2Zmc2V0LCAgICAgbV9mZ0Nv
bG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBMZWZ0QXJyb3dUeXBlOgot
ICAgICAgICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNpZGUgYSBib3guCi0gICAgICAgIGJveCht
X2lyZWN0LCBtX2JnQ29sb3IpOwotICAgICAgICB0cmlhbmdsZShtX3JpZ2h0IC0gcXVhcnRlcldp
ZHRoLCBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQg
LSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwKLSAgICAgICAgICAgICAg
ICAgbV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBoYWxmSGVpZ2h0LCAgICBtX2Zn
Q29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgUmlnaHRBcnJvd1R5cGU6Ci0gICAg
ICAgIC8vIERyYXcgYSBsZWZ0IGFycm93IGluc2lkZSBhIGJveC4KLSAgICAgICAgYm94KG1faXJl
Y3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIHRyaWFuZ2xlKG1fbGVmdCAgKyBxdWFydGVyV2lkdGgs
IG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1
YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBoYWxmSGVpZ2h0LAotICAgICAgICAgICAgICAgICBtX2xl
ZnQgICsgcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBVcEFycm93VHlwZToKLSAgICAgICAgLy8gRHJh
dyBhbiB1cCBhcnJvdyBpbnNpZGUgYSBib3guCi0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29s
b3IpOwotICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAt
IHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAg
IG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1
YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29sb3IpOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgRG93bkFycm93VHlwZToKLSAgICAgICAgLy8gRHJhdyBhIGRv
d24gYXJyb3cgaW5zaWRlIGEgYm94LgotICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsK
LSAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFy
dGVySGVpZ2h0LAotICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3Rv
cCAgICArIHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lk
dGgsICAgIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIEhvcml6b250YWxTbGlkZXJUcmFja1R5cGU6IHsKLSAgICAgICAgLy8g
RHJhdyBhIG5hcnJvdyByZWN0IGZvciB0aGUgdHJhY2sgcGx1cyBib3ggaGF0Y2hlcyBvbiB0aGUg
ZW5kcy4KLSAgICAgICAgU2tJUmVjdCBsaXJlY3Q7Ci0gICAgICAgIGxpcmVjdCA9IG1faXJlY3Q7
Ci0gICAgICAgIGxpcmVjdC5pbnNldChub09mZnNldCwgaGFsZkhlaWdodCAtIHNsaWRlckluZGVu
dCk7Ci0gICAgICAgIGJveChsaXJlY3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIGxpbmUobV9sZWZ0
LCAgbV90b3AsIG1fbGVmdCwgIG1fYm90dG9tLCBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGxpbmUo
bV9yaWdodCwgbV90b3AsIG1fcmlnaHQsIG1fYm90dG9tLCBtX2VkZ2VDb2xvcik7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgVmVydGljYWxTbGlkZXJUcmFja1R5cGU6IHsKLSAg
ICAgICAgLy8gRHJhdyBhIG5hcnJvdyByZWN0IGZvciB0aGUgdHJhY2sgcGx1cyBib3ggaGF0Y2hl
cyBvbiB0aGUgZW5kcy4KLSAgICAgICAgU2tJUmVjdCBsaXJlY3Q7Ci0gICAgICAgIGxpcmVjdCA9
IG1faXJlY3Q7Ci0gICAgICAgIGxpcmVjdC5pbnNldChoYWxmV2lkdGggLSBzbGlkZXJJbmRlbnQs
IG5vT2Zmc2V0KTsKLSAgICAgICAgYm94KGxpcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgbGlu
ZShtX2xlZnQsIG1fdG9wLCBtX3JpZ2h0LCBtX3RvcCwgbV9lZGdlQ29sb3IpOwotICAgICAgICBs
aW5lKG1fbGVmdCwgbV9ib3R0b20sIG1fcmlnaHQsIG1fYm90dG9tLCBtX2VkZ2VDb2xvcik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgRHJvcERvd25CdXR0b25UeXBlOgotICAg
ICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBiaWcgZG93biBhcnJvdyBvbiB0b3AuCi0gICAgICAg
IGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwotICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsgcXVh
cnRlcldpZHRoLCBtX3RvcCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0
aCwgbV90b3AsCi0gICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fYm90
dG9tLCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBDUkFTSCgpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0KLSAgICBtYXJrU3RhdGUoKTsKLX0KLQotLy8gQmVjYXVzZSByZW5kZXJpbmcgYSB0
ZXh0IGZpZWxkIGlzIGRlcGVuZGVudCBvbiBpbnB1dAotLy8gcGFyYW1ldGVycyB0aGUgb3RoZXIg
Y29udHJvbHMgZG9uJ3QgaGF2ZSwgd2UgcmVuZGVyIGl0IGRpcmVjdGx5Ci0vLyByYXRoZXIgdGhh
biB0cnlpbmcgdG8gb3ZlcmNvbXBsaWNhdGUgZHJhdygpIGZ1cnRoZXIuCi12b2lkIFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6ZHJhd1RleHRGaWVsZChib29sIGRyYXdFZGdlcywgYm9vbCBmaWxsQ29u
dGVudEFyZWEsIFNrQ29sb3IgY29sb3IpCi17Ci0gICAgU2tQYWludCBwYWludDsKLQotICAgIGlm
IChmaWxsQ29udGVudEFyZWEpIHsKLSAgICAgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwotICAg
ICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgICAgIG1fY2Fu
dmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFpbnQpOwotICAgIH0KLSAgICBpZiAoZHJhd0VkZ2Vz
KSB7Ci0gICAgICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKLSAgICAgICAgcGFpbnQu
c2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgICAgIG1fY2FudmFzLT5kcmF3
SVJlY3QobV9pcmVjdCwgcGFpbnQpOwotICAgIH0KLQotICAgIG1hcmtTdGF0ZSgpOwotfQotCi12
b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6ZHJhd1Byb2dyZXNzQmFyKGNvbnN0IFNrSVJlY3Qm
IGZpbGxSZWN0KQotewotICAgIFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICBwYWludC5zZXRDb2xvciht
X2JnQ29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAg
ICBtX2NhbnZhcy0+ZHJhd0lSZWN0KG1faXJlY3QsIHBhaW50KTsKLQotICAgIC8vIEVtdWxhdGUg
Y2xpcHBpbmcKLSAgICBTa0lSZWN0IHRvZmlsbDsKLSAgICB0b2ZpbGwuaW50ZXJzZWN0KG1faXJl
Y3QsIGZpbGxSZWN0KTsKLSAgICBwYWludC5zZXRDb2xvcihtX2ZnQ29sb3IpOwotICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0
KHRvZmlsbCwgcGFpbnQpOwotCi0gICAgbWFya1N0YXRlKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNzMxYWIzOTYwODZmM2E5ZWRiMjY3NTA0ZTcwNGE2
YzEwMTc4ZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIFdlYlRoZW1lQ29udHJvbERSVFdpbiBpbXBs
ZW1lbnRzIHRoZSBnZW5lcmljIHJlbmRlcmluZyBvZiBjb250cm9scwotLy8gbmVlZGVkIGJ5IFdl
YlRoZW1lRW5naW5lRFJUV2luLiBTZWUgdGhlIGNvbW1lbnRzIGluIHRoYXQgY2xhc3MKLS8vIGhl
YWRlciBmaWxlIGZvciB3aHkgdGhpcyBjbGFzcyBpcyBuZWVkZWQgYW5kIHVzZWQuCi0vLwotLy8g
VGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgZ2VuZXJpYyBzZXQgb2Ygd2lkZ2V0cyB1c2luZyBTa2lh
LiBUaGUgd2lkZ2V0cwotLy8gYXJlIG9wdGltaXplZCBmb3IgdGVzdGFiaWxpdHksIG5vdCBhIHBs
ZWFzaW5nIGFwcGVhcmFuY2UuCi0vLwotCi0jaWZuZGVmIFdlYlRoZW1lQ29udHJvbERSVFdpbl9o
Ci0jZGVmaW5lIFdlYlRoZW1lQ29udHJvbERSVFdpbl9oCi0KLSNpbmNsdWRlICJ0aGlyZF9wYXJ0
eS9za2lhL2luY2x1ZGUvY29yZS9Ta0NvbG9yLmgiCi0jaW5jbHVkZSAidGhpcmRfcGFydHkvc2tp
YS9pbmNsdWRlL2NvcmUvU2tSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0K
LS8vIFNraWEgZm9yd2FyZCBkZWNsYXJhdGlvbnMKLWNsYXNzIFNrQ2FudmFzOwotCi1jbGFzcyBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlRoZW1l
Q29udHJvbERSVFdpbik7Ci1wdWJsaWM6Ci0gICAgLy8gVGhpcyBsaXN0IG9mIHN0YXRlcyBtb3N0
bHkgbWlycm9ycyB0aGUgbGlzdCBpbiBXZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAotICAg
IC8vIGJ1dCBpcyBtYWludGFpbmVkIHNlcGFyYXRlbHkgc2luY2UgdGhhdCBpc24ndCBwdWJsaWMg
YW5kIGFsc28gdG8gbWluaW1pemUKLSAgICAvLyBkZXBlbmRlbmNpZXMuCi0gICAgLy8gTm90ZSB0
aGF0IHRoZSBXZWJLaXQgVGhlbWVUeXBlcyBzZWVtIHRvIGltcGx5IHRoYXQgYSBjb250cm9sIGNh
biBiZQotICAgIC8vIGluIG11bHRpcGxlIHN0YXRlcyBzaW11bHRhbmVvdXNseSBidXQgV2ViVGhl
bWVFbmdpbmUgb25seSBhbGxvd3MgZm9yCi0gICAgLy8gYSBzaW5nbGUgc3RhdGUgYXQgYSB0aW1l
LgotICAgIC8vCi0gICAgLy8gU29tZSBkZWZpbml0aW9ucyBmb3IgdGhlIHZhcmlvdXMgc3RhdGVz
OgotICAgIC8vICAgRGlzYWJsZWQgLSBpbmRpY2F0ZXMgdGhhdCBhIGNvbnRyb2wgY2FuJ3QgYmUg
bW9kaWZpZWQgb3Igc2VsZWN0ZWQKLSAgICAvLyAgICAgICAgICAgICAgKGNvcnJlc3BvbmRzIHRv
IEhUTUwgJ2Rpc2FibGVkJyBhdHRyaWJ1dGUpCi0gICAgLy8gICBSZWFkT25seSAtIGluZGljYXRl
cyB0aGF0IGEgY29udHJvbCBjYW4ndCBiZSBtb2RpZmllZCBidXQgY2FuIGJlCi0gICAgLy8gICAg
ICAgICAgICAgIHNlbGVjdGVkCi0gICAgLy8gICBOb3JtYWwgICAtIHRoZSBub3JtYWwgc3RhdGUg
b2YgY29udHJvbCBvbiB0aGUgcGFnZSB3aGVuIGl0IGlzbid0Ci0gICAgLy8gICAgICAgICAgICAg
IGZvY3VzZWQgb3Igb3RoZXJ3aXNlIGFjdGl2ZQotICAgIC8vICAgSG90ICAgICAgLSB3aGVuIHRo
ZSBtb3VzZSBpcyBob3ZlcmluZyBvdmVyIGEgcGFydCBvZiB0aGUgY29udHJvbCwKLSAgICAvLyAg
ICAgICAgICAgICAgYWxsIHRoZSBvdGhlciBwYXJ0cyBhcmUgY29uc2lkZXJlZCAiaG90IgotICAg
IC8vICAgSG92ZXIgICAgLSB3aGVuIHRoZSBtb3VzZSBpcyBkaXJlY3RseSBvdmVyIGEgY29udHJv
bCAodGhlIENTUwotICAgIC8vICAgICAgICAgICAgICAgOmhvdmVyIHBzZXVkby1jbGFzcykKLSAg
ICAvLyAgIEZvY3VzZWQgIC0gd2hlbiB0aGUgY29udHJvbCBoYXMgdGhlIGtleWJvYXJkIGZvY3Vz
Ci0gICAgLy8gICBQcmVzc2VkICAtIHdoZW4gdGhlIGNvbnRyb2wgaXMgYmVpbmcgdHJpZ2dlcmVk
IChieSBhIG1vdXNlZG93biBvcgotICAgIC8vICAgICAgICAgICAgICBhIGtleSBldmVudCkuCi0g
ICAgLy8gICBJbmRldGVybWluYXRlIC0gd2hlbiBzZXQgdG8gaW5kZXRlcm1pbmF0ZSAob25seSBm
b3IgcHJvZ3Jlc3MgYmFyKQotICAgIGVudW0gU3RhdGUgewotICAgICAgICBVbmtub3duU3RhdGUg
PSAwLAotICAgICAgICBEaXNhYmxlZFN0YXRlLAotICAgICAgICBSZWFkT25seVN0YXRlLAotICAg
ICAgICBOb3JtYWxTdGF0ZSwKLSAgICAgICAgSG90U3RhdGUsCi0gICAgICAgIEhvdmVyU3RhdGUs
Ci0gICAgICAgIEZvY3VzZWRTdGF0ZSwKLSAgICAgICAgUHJlc3NlZFN0YXRlLAotICAgICAgICBJ
bmRldGVybWluYXRlU3RhdGUKLSAgICB9OwotCi0gICAgLy8gVGhpcyBsaXN0IG9mIHR5cGVzIG1v
c3RseSBtaXJyb3JzIHRoZSBsaXN0IGluCi0gICAgLy8gV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5
cGVzLmggYnV0IGlzIG1haW50YWluZWQKLSAgICAvLyBzZXBhcmF0ZWx5IHNpbmNlIHRoYXQgaXNu
J3QgcHVibGljIGFuZCBhbHNvIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcy4KLSAgICAvLwotICAg
IC8vIE5vdGUgdGhhdCB3aGF0IHRoZSB1c2VyIG1pZ2h0IHRoaW5rIG9mIGFzIGEgc2luZ2xlIGNv
bnRyb2wgY2FuIGJlCi0gICAgLy8gbWFkZSB1cCBvZiBtdWx0aXBsZSBwYXJ0cy4gRm9yIGV4YW1w
bGUsIGEgc2luZ2xlIHNjcm9sbCBiYXIgY29udGFpbnMKLSAgICAvLyBzaXggY2xpY2thYmxlIHBh
cnRzIC0gdHdvIGFycm93cywgdGhlICJ0aHVtYiIgaW5kaWNhdGluZyB0aGUgY3VycmVudAotICAg
IC8vIHBvc2l0aW9uIG9uIHRoZSBiYXIsIHRoZSBvdGhlciB0d28gcGFydHMgb2YgdGhlIGJhciAo
YmVmb3JlIGFuZCBhZnRlcgotICAgIC8vIHRoZSB0aHVtYikgYW5kIHRoZSAiZ3JpcHBlciIgb24g
dGhlIHRodW1iIGl0c2VsZi4KLSAgICAvLwotICAgIGVudW0gVHlwZSB7Ci0gICAgICAgIFVua25v
d25UeXBlID0gMCwKLSAgICAgICAgVGV4dEZpZWxkVHlwZSwKLSAgICAgICAgUHVzaEJ1dHRvblR5
cGUsCi0gICAgICAgIFVuY2hlY2tlZEJveFR5cGUsCi0gICAgICAgIENoZWNrZWRCb3hUeXBlLAot
ICAgICAgICBJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlLAotICAgICAgICBVbmNoZWNrZWRSYWRp
b1R5cGUsCi0gICAgICAgIENoZWNrZWRSYWRpb1R5cGUsCi0gICAgICAgIEhvcml6b250YWxTY3Jv
bGxUcmFja0JhY2tUeXBlLAotICAgICAgICBIb3Jpem9udGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlw
ZSwKLSAgICAgICAgSG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZSwKLSAgICAgICAgSG9yaXpvbnRh
bFNjcm9sbEdyaXBUeXBlLAotICAgICAgICBWZXJ0aWNhbFNjcm9sbFRyYWNrQmFja1R5cGUsCi0g
ICAgICAgIFZlcnRpY2FsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZSwKLSAgICAgICAgVmVydGljYWxT
Y3JvbGxUaHVtYlR5cGUsCi0gICAgICAgIFZlcnRpY2FsU2Nyb2xsR3JpcFR5cGUsCi0gICAgICAg
IExlZnRBcnJvd1R5cGUsCi0gICAgICAgIFJpZ2h0QXJyb3dUeXBlLAotICAgICAgICBVcEFycm93
VHlwZSwKLSAgICAgICAgRG93bkFycm93VHlwZSwKLSAgICAgICAgSG9yaXpvbnRhbFNsaWRlclRy
YWNrVHlwZSwKLSAgICAgICAgSG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZSwKLSAgICAgICAgVmVy
dGljYWxTbGlkZXJUcmFja1R5cGUsCi0gICAgICAgIFZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlLAot
ICAgICAgICBEcm9wRG93bkJ1dHRvblR5cGUsCi0gICAgICAgIFByb2dyZXNzQmFyVHlwZQotICAg
IH07Ci0KLSAgICAvLyBDb25zdHJ1Y3RzIGEgY29udHJvbCBvZiB0aGUgZ2l2ZW4gc2l6ZSwgdHlw
ZSBhbmQgc3RhdGUgdG8gZHJhdwotICAgIC8vIG9uIHRvIHRoZSBnaXZlbiBjYW52YXMuCi0gICAg
V2ViVGhlbWVDb250cm9sRFJUV2luKFNrQ2FudmFzKiwgY29uc3QgU2tJUmVjdCYsIFR5cGUsIFN0
YXRlKTsKLSAgICB+V2ViVGhlbWVDb250cm9sRFJUV2luKCk7Ci0KLSAgICAvLyBEcmF3cyB0aGUg
Y29udHJvbC4KLSAgICB2b2lkIGRyYXcoKTsKLQotICAgIC8vIFVzZSB0aGlzIGZvciBUZXh0Rmll
bGQgY29udHJvbHMgaW5zdGVhZCwgYmVjYXVzZSB0aGUgbG9naWMKLSAgICAvLyBmb3IgZHJhd2lu
ZyB0aGVtIGlzIGRlcGVuZGVudCBvbiB3aGF0IFdlYktpdCB0ZWxscyB1cyB0byBkby4KLSAgICAv
LyBJZiBkcmF3RWRnZXMgaXMgdHJ1ZSwgZHJhdyBhbiBlZGdlIGFyb3VuZCB0aGUgY29udHJvbC4g
SWYKLSAgICAvLyBmaWxsQ29udGVudEFyZWEgaXMgdHJ1ZSwgZmlsbCB0aGUgY29udGVudCBhcmVh
IHdpdGggdGhlIGdpdmVuIGNvbG9yLgotICAgIHZvaWQgZHJhd1RleHRGaWVsZChib29sIGRyYXdF
ZGdlcywgYm9vbCBmaWxsQ29udGVudEFyZWEsIFNrQ29sb3IpOwotCi0gICAgLy8gVXNlIHRoaXMg
Zm9yIGRyYXdpbmcgUHJvZ3Jlc3NCYXIgY29udHJvbHMgaW5zdGVhZCwgc2luY2Ugd2UKLSAgICAv
LyBuZWVkIHRvIGtub3cgdGhlIHJlY3QgdG8gZmlsbCBpbnNpZGUgdGhlIGJhci4KLSAgICB2b2lk
IGRyYXdQcm9ncmVzc0Jhcihjb25zdCBTa0lSZWN0JiBmaWxsUmVjdCk7Ci0KLXByaXZhdGU6Ci0g
ICAgLy8gRHJhd3MgYSBib3ggb2Ygc2l6ZSBzcGVjaWZpZWQgYnkgaXJlY3QsIGZpbGxlZCB3aXRo
IHRoZSBnaXZlbiBjb2xvci4KLSAgICAvLyBUaGUgYm94IHdpbGwgaGF2ZSBhIGJvcmRlciBkcmF3
biBpbiB0aGUgZGVmYXVsdCBlZGdlIGNvbG9yLgotICAgIHZvaWQgYm94KGNvbnN0IFNrSVJlY3Qm
IGlyZWN0LCBTa0NvbG9yKTsKLQotCi0gICAgLy8gRHJhd3MgYSB0cmlhbmdsZSBvZiBzaXplIHNw
ZWNpZmllZCBieSB0aGUgdGhyZWUgcGFpcnMgb2YgY29vcmRpbmF0ZXMsCi0gICAgLy8gZmlsbGVk
IHdpdGggdGhlIGdpdmVuIGNvbG9yLiBUaGUgYm94IHdpbGwgaGF2ZSBhbiBlZGdlIGRyYXduIGlu
IHRoZQotICAgIC8vIGRlZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lkIHRyaWFuZ2xlKGludCB4
MCwgaW50IHkwLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsIFNrQ29sb3IpOwotCi0g
ICAgLy8gRHJhd3MgYSByZWN0YW5nbGUgdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wgd2l0aCByb3Vu
ZGVkIGNvcm5lcnMsIGZpbGxlZAotICAgIC8vIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvciAoYW5k
IHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvcikuCi0gICAgdm9pZCByb3Vu
ZFJlY3QoU2tDb2xvcik7Ci0KLSAgICAvLyBEcmF3cyBhbiBvdmFsIHRoZSBzaXplIG9mIHRoZSBj
b250cm9sLCBmaWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yCi0gICAgLy8gYW5kIHdpdGgg
YSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lkIG92YWwoU2tDb2xv
cik7Ci0KLSAgICAvLyBEcmF3cyBhIGNpcmNsZSBjZW50ZXJlZCBpbiB0aGUgY29udHJvbCB3aXRo
IHRoZSBzcGVjaWZpZWQgcmFkaXVzLAotICAgIC8vIGZpbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQg
Y29sb3IsIGFuZCB3aXRoIGEgYm9yZGVyIGRyYXcgaW4gdGhlCi0gICAgLy8gZGVmYXVsdCBlZGdl
IGNvbG9yLgotICAgIHZvaWQgY2lyY2xlKFNrU2NhbGFyIHJhZGl1cywgU2tDb2xvcik7Ci0KLSAg
ICAvLyBEcmF3cyBhIGJveCB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhl
IG91dGVyQ29sb3IgYW5kCi0gICAgLy8gd2l0aCBhIGJvcmRlciBpbiB0aGUgZGVmYXVsdCBlZGdl
IGNvbG9yLCBhbmQgdGhlbiBkcmF3cyBhbm90aGVyIGJveAotICAgIC8vIGluZGVudGVkIG9uIGFs
bCBmb3VyIHNpZGVzIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50cywgZmlsbGVkIHdpdGggdGhlCi0g
ICAgLy8gaW5uZXIgY29sb3IgYW5kIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBj
b2xvci4KLSAgICB2b2lkIG5lc3RlZEJveGVzKGludCBpbmRlbnRMZWZ0LAotICAgICAgICAgICAg
ICAgICAgICAgaW50IGluZGVudFRvcCwKLSAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRS
aWdodCwKLSAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRCb3R0b20sCi0gICAgICAgICAg
ICAgICAgICAgICBTa0NvbG9yIG91dGVyQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICBTa0Nv
bG9yIGlubmVyQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYSBsaW5lIGJldHdlZW4gdGhlIHR3byBw
b2ludHMgaW4gdGhlIGdpdmVuIGNvbG9yLgotICAgIHZvaWQgbGluZShpbnQgeDAsIGludCB5MCwg
aW50IHgxLCBpbnQgeTEsIFNrQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYSBkaXN0aW5jdGl2ZSBt
YXJrIG9uIHRoZSBjb250cm9sIGZvciBlYWNoIHN0YXRlLCBzbyB0aGF0IHRoZQotICAgIC8vIHN0
YXRlIG9mIHRoZSBjb250cm9sIGNhbiBiZSBkZXRlcm1pbmVkIHdpdGhvdXQgbmVlZGluZyB0byBr
bm93IHdoaWNoCi0gICAgLy8gY29sb3IgaXMgd2hpY2guCi0gICAgdm9pZCBtYXJrU3RhdGUoKTsK
LQotICAgIFNrQ2FudmFzKiBtX2NhbnZhczsKLSAgICBjb25zdCBTa0lSZWN0IG1faXJlY3Q7Ci0g
ICAgY29uc3QgVHlwZSBtX3R5cGU7Ci0gICAgY29uc3QgU3RhdGUgbV9zdGF0ZTsKLSAgICBjb25z
dCBTa0NvbG9yIG1fZWRnZUNvbG9yOwotICAgIGNvbnN0IFNrQ29sb3IgbV9iZ0NvbG9yOwotICAg
IGNvbnN0IFNrQ29sb3IgbV9mZ0NvbG9yOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgY29u
dmVuaWVuY2UgYWNjZXNzb3JzIGZvciBtX2lyZWN0LgotICAgIGNvbnN0IGludCBtX2xlZnQ7Ci0g
ICAgY29uc3QgaW50IG1fcmlnaHQ7Ci0gICAgY29uc3QgaW50IG1fdG9wOwotICAgIGNvbnN0IGlu
dCBtX2JvdHRvbTsKLSAgICBjb25zdCBpbnQgbV93aWR0aDsKLSAgICBjb25zdCBpbnQgbV9oZWln
aHQ7Ci19OwotCi0jZW5kaWYgLy8gV2ViVGhlbWVDb250cm9sRFJUV2luX2gKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTBmZTY2Yzk1MjdmMDFhNTQzMTA2Nzk1MmViZWYy
OTQ5MDkxNGFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLS8vIFRoaXMgaW1wbGVtZW50cyB0aGUgV2ViVGhlbWVFbmdpbmUg
QVBJIGluIHN1Y2ggYSB3YXkgdGhhdCB3ZSBtYXRjaCB0aGUgTWFjCi0vLyBwb3J0IHJlbmRlcmlu
ZyBtb3JlIHRoYW4gdXN1YWwgQ2hyb21pdW0gcGF0aCwgdGh1cyBhbGxvd2luZyB1cyB0byBzaGFy
ZQotLy8gbW9yZSBwaXhlbCBiYXNlbGluZXMuCi0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVEUlRN
YWNfaAotI2RlZmluZSBXZWJUaGVtZUVuZ2luZURSVE1hY19oCi0KLSNpbmNsdWRlIDxwdWJsaWMv
bWFjL1dlYlRoZW1lRW5naW5lLmg+Ci0KLWNsYXNzIFdlYlRoZW1lRW5naW5lRFJUTWFjIDogcHVi
bGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhclRodW1iKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCi0gICAgICAg
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpTaXplLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAotICAgICAgICBj
b25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7Ci0KLXByaXZhdGU6
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKAotICAgICAgICBX
ZWJLaXQ6OldlYkNhbnZhcyosCi0gICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRl
LAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAotICAgICAgICBjb25zdCBX
ZWJLaXQ6OldlYlJlY3QmLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpT
Y3JvbGxiYXJJbmZvJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50TlNTY3JvbGxlclNjcm9sbGJh
clRodW1iKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCi0gICAgICAgIFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmU6OlN0YXRlLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXpl
LAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAotICAgICAgICBjb25zdCBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7Ci19OwotCi0jZW5kaWYgLy8gV2ViVGhl
bWVFbmdpbmVEUlRNYWNfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTY2ZGJhY2E4MTI2N2M2MzI2YWMxOTE5NGE2NDkzM2Q5ZDIxZGFiYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgot
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0g
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJUTWFjLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMv
V2ViQ2FudmFzLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNpbmNsdWRlICJza2lh
L2V4dC9za2lhX3V0aWxzX21hYy5oIgotI2ltcG9ydCA8QXBwS2l0L05TQWZmaW5lVHJhbnNmb3Jt
Lmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNHcmFwaGljc0NvbnRleHQuaD4KLSNpbXBvcnQgPEFwcEtp
dC9OU1Njcm9sbGVyLmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNXaW5kb3cuaD4KLSNpbmNsdWRlIDxD
YXJib24vQ2FyYm9uLmg+Ci0KLXVzaW5nIFdlYktpdDo6V2ViQ2FudmFzOwotdXNpbmcgV2ViS2l0
OjpXZWJSZWN0OwotdXNpbmcgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTsKLQotLy8gV2UgY2FuJ3Qg
ZGlyZWN0bHkgdGVsbCB0aGUgTlNTY3JvbGxlciB0byBkcmF3IGl0c2VsZiBhcyBhY3RpdmUgb3Ig
aW5hY3RpdmUsCi0vLyBpbnN0ZWFkIHdlIGhhdmUgdG8gbWFrZSBpdCBhIGNoaWxkIG9mIGFuIChp
bilhY3RpdmUgd2luZG93LiBUaGlzIGNsYXNzIGxldHMKLS8vIHVzIGZha2UgdGhhdCBwYXJlbnQg
d2luZG93LgotQGludGVyZmFjZSBGYWtlQWN0aXZlV2luZG93IDogTlNXaW5kb3cgewotQHByaXZh
dGUKLSAgICBCT09MIGhhc0FjdGl2ZUNvbnRyb2xzOwotfQotKyAoTlNXaW5kb3cqKWFsd2F5c0Fj
dGl2ZVdpbmRvdzsKLSsgKE5TV2luZG93KilhbHdheXNJbmFjdGl2ZVdpbmRvdzsKLS0gKGlkKWlu
aXRXaXRoQWN0aXZlQ29udHJvbHM6KEJPT0wpX2hhc0FjdGl2ZUNvbnRyb2xzOwotLSAoQk9PTClf
aGFzQWN0aXZlQ29udHJvbHM7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBGYWtlQWN0aXZlV2lu
ZG93Ci0KLXN0YXRpYyBOU1dpbmRvdyogYWx3YXlzQWN0aXZlV2luZG93ID0gbmlsOwotc3RhdGlj
IE5TV2luZG93KiBhbHdheXNJbmFjdGl2ZVdpbmRvdyA9IG5pbDsKLQotKyAoTlNXaW5kb3cqKWFs
d2F5c0FjdGl2ZVdpbmRvdwotewotICAgIGlmIChhbHdheXNBY3RpdmVXaW5kb3cgPT0gbmlsKQot
ICAgICAgICBhbHdheXNBY3RpdmVXaW5kb3cgPSBbW3NlbGYgYWxsb2NdIGluaXRXaXRoQWN0aXZl
Q29udHJvbHM6WUVTXTsKLSAgICByZXR1cm4gYWx3YXlzQWN0aXZlV2luZG93OwotfQotCi0rIChO
U1dpbmRvdyopYWx3YXlzSW5hY3RpdmVXaW5kb3cKLXsKLSAgICBpZiAoYWx3YXlzSW5hY3RpdmVX
aW5kb3cgPT0gbmlsKQotICAgICAgICBhbHdheXNJbmFjdGl2ZVdpbmRvdyA9IFtbc2VsZiBhbGxv
Y10gaW5pdFdpdGhBY3RpdmVDb250cm9sczpOT107Ci0gICAgcmV0dXJuIGFsd2F5c0luYWN0aXZl
V2luZG93OwotfQotCi0tIChpZClpbml0V2l0aEFjdGl2ZUNvbnRyb2xzOihCT09MKV9oYXNBY3Rp
dmVDb250cm9scwotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaGFzQWN0aXZlQ29u
dHJvbHMgPSBfaGFzQWN0aXZlQ29udHJvbHM7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEJP
T0wpX2hhc0FjdGl2ZUNvbnRyb2xzCi17Ci0gICAgcmV0dXJuIGhhc0FjdGl2ZUNvbnRyb2xzOwot
fQotCi1AZW5kCi0KLXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRNYWM6OnBhaW50U2Nyb2xsYmFyVGh1
bWIoCi0gICAgV2ViQ2FudmFzKiBjYW52YXMsCi0gICAgV2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0
YXRlLAotICAgIFdlYlRoZW1lRW5naW5lOjpTaXplIHNpemUsCi0gICAgY29uc3QgV2ViUmVjdCYg
cmVjdCwKLSAgICBjb25zdCBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYgc2Nyb2xsYmFy
SW5mbykKLXsKLSAgICAvLyBUbyBtYXRjaCB0aGUgTWFjIHBvcnQsIHdlIHN0aWxsIHVzZSBISVRo
ZW1lIGZvciBpbm5lciBzY3JvbGxiYXJzLgotICAgIGlmIChzY3JvbGxiYXJJbmZvLnBhcmVudCA9
PSBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFyUGFyZW50UmVuZGVyTGF5ZXIpCi0gICAgICAgIHBh
aW50SElUaGVtZVNjcm9sbGJhclRodW1iKGNhbnZhcywgc3RhdGUsIHNpemUsIHJlY3QsIHNjcm9s
bGJhckluZm8pOwotICAgIGVsc2UKLSAgICAgICAgcGFpbnROU1Njcm9sbGVyU2Nyb2xsYmFyVGh1
bWIoY2FudmFzLCBzdGF0ZSwgc2l6ZSwgcmVjdCwgc2Nyb2xsYmFySW5mbyk7Ci19Ci0KLXN0YXRp
YyBUaGVtZVRyYWNrRW5hYmxlU3RhdGUgc3RhdGVUb0hJRW5hYmxlU3RhdGUoV2ViVGhlbWVFbmdp
bmU6OlN0YXRlIHN0YXRlKQotewotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFdlYlRo
ZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOgotICAgICAgICByZXR1cm4ga1RoZW1lVHJhY2tEaXNh
YmxlZDsKLSAgICBjYXNlIFdlYlRoZW1lRW5naW5lOjpTdGF0ZUluYWN0aXZlOgotICAgICAgICBy
ZXR1cm4ga1RoZW1lVHJhY2tJbmFjdGl2ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
a1RoZW1lVHJhY2tBY3RpdmU7Ci0gICAgfQotfQotCi0vLyBEdXBsaWNhdGVkIGZyb20gd2Via2l0
L2dsdWUvd2VidGhlbWVlbmdpbmVfaW1wbF9tYWMuY2MgaW4gdGhlIGRvd25zdHJlYW0KLS8vIENo
cm9taXVtIFdlYlRoZW1lRW5naW5lIGltcGxlbWVudGF0aW9uLgotdm9pZCBXZWJUaGVtZUVuZ2lu
ZURSVE1hYzo6cGFpbnRISVRoZW1lU2Nyb2xsYmFyVGh1bWIoCi0gICAgV2ViQ2FudmFzKiBjYW52
YXMsCi0gICAgV2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlLAotICAgIFdlYlRoZW1lRW5naW5l
OjpTaXplIHNpemUsCi0gICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICBjb25zdCBXZWJUaGVt
ZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYgc2Nyb2xsYmFySW5mbykKLXsKLSAgICBISVRoZW1lVHJh
Y2tEcmF3SW5mbyB0cmFja0luZm87Ci0gICAgdHJhY2tJbmZvLnZlcnNpb24gPSAwOwotICAgIHRy
YWNrSW5mby5raW5kID0gc2l6ZSA9PSBXZWJUaGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBrVGhl
bWVNZWRpdW1TY3JvbGxCYXIgOiBrVGhlbWVTbWFsbFNjcm9sbEJhcjsKLSAgICB0cmFja0luZm8u
Ym91bmRzID0gQ0dSZWN0TWFrZShyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWln
aHQpOwotICAgIHRyYWNrSW5mby5taW4gPSAwOwotICAgIHRyYWNrSW5mby5tYXggPSBzY3JvbGxi
YXJJbmZvLm1heFZhbHVlOwotICAgIHRyYWNrSW5mby52YWx1ZSA9IHNjcm9sbGJhckluZm8uY3Vy
cmVudFZhbHVlOwotICAgIHRyYWNrSW5mby50cmFja0luZm8uc2Nyb2xsYmFyLnZpZXdzaXplID0g
c2Nyb2xsYmFySW5mby52aXNpYmxlU2l6ZTsKLSAgICB0cmFja0luZm8uYXR0cmlidXRlcyA9IDA7
Ci0gICAgaWYgKHNjcm9sbGJhckluZm8ub3JpZW50YXRpb24gPT0gV2ViVGhlbWVFbmdpbmU6OlNj
cm9sbGJhck9yaWVudGF0aW9uSG9yaXpvbnRhbCkKLSAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0
ZXMgfD0ga1RoZW1lVHJhY2tIb3Jpem9udGFsOwotCi0gICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRl
ID0gc3RhdGVUb0hJRW5hYmxlU3RhdGUoc3RhdGUpOwotCi0gICAgdHJhY2tJbmZvLnRyYWNrSW5m
by5zY3JvbGxiYXIucHJlc3NTdGF0ZSA9Ci0gICAgICAgIHN0YXRlID09IFdlYlRoZW1lRW5naW5l
OjpTdGF0ZVByZXNzZWQgPyBrVGhlbWVUaHVtYlByZXNzZWQgOiAwOwotICAgIHRyYWNrSW5mby5h
dHRyaWJ1dGVzIHw9IChrVGhlbWVUcmFja1Nob3dUaHVtYiB8IGtUaGVtZVRyYWNrSGlkZVRyYWNr
KTsKLSAgICBnZng6OlNraWFCaXRMb2NrZXIgYml0TG9ja2VyKGNhbnZhcyk7Ci0gICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IGJpdExvY2tlci5jZ0NvbnRleHQoKTsKLSAgICBISVRoZW1lRHJh
d1RyYWNrKCZ0cmFja0luZm8sIDAsIGNnQ29udGV4dCwga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1h
bCk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRNYWM6OnBhaW50TlNTY3JvbGxlclNjcm9s
bGJhclRodW1iKAotICAgIFdlYkNhbnZhcyogY2FudmFzLAotICAgIFdlYlRoZW1lRW5naW5lOjpT
dGF0ZSBzdGF0ZSwKLSAgICBXZWJUaGVtZUVuZ2luZTo6U2l6ZSBzaXplLAotICAgIGNvbnN0IFdl
YlJlY3QmIHJlY3QsCi0gICAgY29uc3QgV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhckluZm8mIHNj
cm9sbGJhckluZm8pCi17Ci0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRl
XTsKLSAgICBOU1Njcm9sbGVyKiBzY3JvbGxlciA9IFtbTlNTY3JvbGxlciBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdo
dCldOwotICAgIFtzY3JvbGxlciBzZXRFbmFibGVkOnN0YXRlICE9IFdlYlRoZW1lRW5naW5lOjpT
dGF0ZURpc2FibGVkXTsKLSAgICBpZiAoc3RhdGUgPT0gV2ViVGhlbWVFbmdpbmU6OlN0YXRlSW5h
Y3RpdmUpCi0gICAgICAgIFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzSW5hY3RpdmVXaW5kb3dd
IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnNjcm9sbGVyXTsKLSAgICBlbHNlCi0gICAgICAgIFtb
W0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzQWN0aXZlV2luZG93XSBjb250ZW50Vmlld10gYWRkU3Vi
dmlldzpzY3JvbGxlcl07Ci0KLSAgICBbc2Nyb2xsZXIgc2V0Q29udHJvbFNpemU6c2l6ZSA9PSBX
ZWJUaGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBOU1JlZ3VsYXJDb250cm9sU2l6ZSA6IE5TU21h
bGxDb250cm9sU2l6ZV07Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBkb3VibGUoc2Nyb2xsYmFySW5m
by5jdXJyZW50VmFsdWUpIC8gZG91YmxlKHNjcm9sbGJhckluZm8ubWF4VmFsdWUpOwotICAgIFtz
Y3JvbGxlciBzZXREb3VibGVWYWx1ZTogdmFsdWVdOwotCi0gICAgZmxvYXQga25vYlByb3BvcnRp
b24gPSBmbG9hdChzY3JvbGxiYXJJbmZvLnZpc2libGVTaXplKSAvIGZsb2F0KHNjcm9sbGJhcklu
Zm8udG90YWxTaXplKTsKLSAgICBbc2Nyb2xsZXIgc2V0S25vYlByb3BvcnRpb246IGtub2JQcm9w
b3J0aW9uXTsKLQotICAgIGdmeDo6U2tpYUJpdExvY2tlciBiaXRMb2NrZXIoY2FudmFzKTsKLSAg
ICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gYml0TG9ja2VyLmNnQ29udGV4dCgpOwotICAgIE5T
R3JhcGhpY3NDb250ZXh0KiBuc0dyYXBoaWNzQ29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBn
cmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNnQ29udGV4dCBmbGlwcGVkOllFU107Ci0g
ICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om5zR3JhcGhpY3NDb250ZXh0
XTsKLQotICAgIC8vIERlc3BpdGUgcGFzc2luZyBpbiBmcmFtZVJlY3QoKSB0byB0aGUgc2Nyb2xs
ZXIsIGl0IGFsd2F5cyBkcmF3cyBhdCAoMCwgMCkuCi0gICAgLy8gRm9yY2UgaXQgdG8gZHJhdyBp
biB0aGUgcmlnaHQgbG9jYXRpb24gYnkgdHJhbnNsYXRpbmcgdGhlIHdob2xlIGdyYXBoaWNzCi0g
ICAgLy8gY29udGV4dC4KLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0gICAg
TlNBZmZpbmVUcmFuc2Zvcm0gKnRyYW5zZm9ybSA9IFtOU0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zv
cm1dOwotICAgIFt0cmFuc2Zvcm0gdHJhbnNsYXRlWEJ5OnJlY3QueCB5Qnk6cmVjdC55XTsKLSAg
ICBbdHJhbnNmb3JtIGNvbmNhdF07Ci0KLSAgICBbc2Nyb2xsZXIgZHJhd0tub2JdOwotICAgIENH
Q29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKLQotICAgIFtzY3JvbGxlciByZWxlYXNl
XTsKLQotICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07Ci19CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURS
VFdpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURS
VFdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE1MGM0OTAyNTFjMjM0Y2Jm
MTFjMzZmYmNmZjY0OTM5ZGE4MGIwNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdp
bmVEUlRXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViVGhlbWVFbmdpbmVEUlRXaW4uaCIKLQotI2luY2x1ZGUgIldl
YlRoZW1lQ29udHJvbERSVFdpbi5oIgotI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVk
ZS9jb3JlL1NrUmVjdC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0KLS8vIEFsdGhv
dWdoIGFsbCB0aGlzIGNvZGUgaXMgZ2VuZXJpYywgd2UgaW5jbHVkZSB0aGVzZSBoZWFkZXJzCi0v
LyB0byBwdWxsIGluIHRoZSBXaW5kb3dzICNkZWZpbmVzIGZvciB0aGUgcGFydHMgYW5kIHN0YXRl
cyBvZgotLy8gdGhlIGNvbnRyb2xzLgotI2luY2x1ZGUgPHZzc3R5bGUuaD4KLSNpbmNsdWRlIDx3
aW5kb3dzLmg+Ci0KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCi0vLyBXZSBkZWZpbmUgdGhpcyBmb3IgY2xhcml0eSwgYWx0aG91Z2ggdGhl
cmUgcmVhbGx5IHNob3VsZCBiZSBhIERGQ1NfTk9STUFMIGluIHdpbnVzZXIuaC4KLXN0YXRpYyBj
b25zdCBpbnQgZGZjc05vcm1hbCA9IDB4MDAwMDsKLQotc3RhdGljIFNrSVJlY3Qgd2ViUmVjdFRv
U2tJUmVjdChjb25zdCBXZWJSZWN0JiB3ZWJSZWN0KQotewotICAgIFNrSVJlY3QgaXJlY3Q7Ci0g
ICAgaXJlY3Quc2V0KHdlYlJlY3QueCwgd2ViUmVjdC55LCB3ZWJSZWN0LnggKyB3ZWJSZWN0Lndp
ZHRoIC0gMSwgd2ViUmVjdC55ICsgd2ViUmVjdC5oZWlnaHQgLSAxKTsKLSAgICByZXR1cm4gaXJl
Y3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIGRyYXdDb250cm9sKFdlYkNhbnZhcyogY2FudmFzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlKQotewotICAg
IFdlYlRoZW1lQ29udHJvbERSVFdpbiBjb250cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChy
ZWN0KSwgY3R5cGUsIGNzdGF0ZSk7Ci0gICAgY29udHJvbC5kcmF3KCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGRyYXdUZXh0RmllbGQoV2ViQ2FudmFzKiBjYW52YXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZHJhd0VkZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGZpbGxDb250ZW50QXJlYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29sb3IgY29s
b3IpCi17Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luIGNvbnRyb2woY2FudmFzLCB3ZWJSZWN0
VG9Ta0lSZWN0KHJlY3QpLCBjdHlwZSwgY3N0YXRlKTsKLSAgICBjb250cm9sLmRyYXdUZXh0Rmll
bGQoZHJhd0VkZ2VzLCBmaWxsQ29udGVudEFyZWEsIGNvbG9yKTsKLX0KLQotc3RhdGljIHZvaWQg
ZHJhd1Byb2dyZXNzQmFyKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBiYXJSZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIGZpbGxSZWN0KQotewotICAgIFdlYlRo
ZW1lQ29udHJvbERSVFdpbiBjb250cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChiYXJSZWN0
KSwgY3R5cGUsIGNzdGF0ZSk7Ci0gICAgY29udHJvbC5kcmF3UHJvZ3Jlc3NCYXIod2ViUmVjdFRv
U2tJUmVjdChmaWxsUmVjdCkpOwotfQotCi0vLyBXZWJUaGVtZUVuZ2luZURSVFdpbgotCi12b2lk
IFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludEJ1dHRvbihXZWJDYW52YXMqIGNhbnZhcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpV
bmtub3duVHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgaWYgKHBhcnQgPT0gQlBf
Q0hFQ0tCT1gpIHsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIENCU19V
TkNIRUNLRUROT1JNQUw6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NO
b3JtYWwpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hl
Y2tlZEJveFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfVU5D
SEVDS0VESE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRU
T05DSEVDSyB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6VW5jaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIENCU19VTkNIRUNLRURQUkVTU0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VERElTQUJMRUQ6Ci0gICAgICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19JTkFD
VElWRSkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hl
Y2tlZEJveFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19D
SEVDS0VETk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19C
VVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgQ0JTX0NIRUNLRURIT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19IT1QpKTsKLSAg
ICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsK
LSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19DSEVDS0VEUFJFU1NFRDoKLSAg
ICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNT
X0NIRUNLRUQgfCBERkNTX1BVU0hFRCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkNoZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIENCU19DSEVDS0VERElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElW
RSkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRC
b3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNh
YmxlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfTUlYRURO
T1JNQUw6Ci0gICAgICAgICAgICAvLyBDbGFzc2ljIHRoZW1lIGNhbid0IHJlcHJlc2VudCBtaXhl
ZCBzdGF0ZSBjaGVja2JveC4gV2UgYXNzdW1lCi0gICAgICAgICAgICAvLyBpdCdzIGVxdWl2YWxl
bnQgdG8gdW5jaGVja2VkLgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X0JVVFRPTkNIRUNLKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgQ0JTX01JWEVESE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKLSAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19NSVhFRFBSRVNTRUQ6Ci0gICAgICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19QVVNIRUQpKTsK
LSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpJbmRldGVybWluYXRl
Q2hlY2tib3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19N
SVhFRERJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19C
VVRUT05DSEVDSyB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOwotICAgICAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKEJQ
X1JBRElPQlVUVE9OID09IHBhcnQpIHsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAg
ICBjYXNlIFJCU19VTkNIRUNLRUROT1JNQUw6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IERGQ1NfQlVUVE9OUkFESU8pOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlVuY2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFJCU19VTkNIRUNLRURIT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19IT1QpKTsKLSAgICAgICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VEUFJFU1NFRDoKLSAgICAgICAg
ICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX1BVU0hF
RCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tl
ZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBSQlNfVU5D
SEVDS0VERElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X0JVVFRPTlJBRElPIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgIGNhc2UgUkJTX0NIRUNLRUROT1JNQUw6Ci0gICAgICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEKSk7Ci0g
ICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZFJhZGlvVHlw
ZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3Rh
dGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFJCU19DSEVDS0VESE9UOgot
ICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERG
Q1NfQ0hFQ0tFRCB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBjYXNlIFJCU19DSEVDS0VEUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX1BVU0hFRCkpOwot
ICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5
cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRT
dGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgUkJTX0NIRUNLRURESVNB
QkxFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFE
SU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBjdHlwZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChCUF9Q
VVNIQlVUVE9OID09IHBhcnQpIHsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBj
YXNlIFBCU19OT1JNQUw6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1Nf
QlVUVE9OUFVTSCk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBQQlNf
SE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNI
IHwgREZDU19IT1QpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpQdXNoQnV0dG9uVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFBCU19Q
UkVTU0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05Q
VVNIIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUV2luOjpQdXNoQnV0dG9uVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBQQlNfRElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX0JVVFRPTlBVU0ggfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIFBCU19ERUZBVUxURUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfQlVUVE9OUFVTSCk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkZvY3VzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotCi0gICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0
YXRlKTsKLX0KLQotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludE1lbnVMaXN0KFdl
YkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgcGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xh
c3NpY1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJSZWN0JiByZWN0KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250
cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25T
dGF0ZTsKLQotICAgIGlmIChDUF9EUk9QRE9XTkJVVFRPTiA9PSBwYXJ0KSB7Ci0gICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEcm9wRG93bkJ1dHRvblR5cGU7Ci0gICAgICAg
IHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBDQlhTX05PUk1BTDoKLSAgICAgICAgICAg
IEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19NRU5VQVJST1cpOwotICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgIGNhc2UgQ0JYU19IT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX01FTlVBUlJPVyB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIENCWFNfUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlhTX0RJU0FCTEVEOgotICAgICAgICAgICAgQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0lOQUNUSVZFKSk7Ci0g
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQ1JB
U0goKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAg
IENSQVNIKCk7Ci0KLSAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUp
OwotfQotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludFNjcm9sbGJhckFycm93KFdl
YkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2ViVGhlbWVD
b250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3du
VHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgc3dpdGNoIChzdGF0ZSkgewotICAg
IGNhc2UgQUJTX1VQTk9STUFMOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1Nf
U0NST0xMVVApOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBBcnJv
d1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3Rh
dGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfRE9XTk5PUk1BTDoKLSAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOwotICAgICAgICBjdHlwZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RG93bkFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIEFCU19MRUZUTk9STUFMOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERG
Q1NfU0NST0xMTEVGVCk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpM
ZWZ0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5v
cm1hbFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX1JJR0hUTk9STUFMOgot
ICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMUklHSFQpOwotICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBBQlNfVVBIT1Q6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hPVCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfRE9X
TkhPVDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwg
REZDU19IT1QpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25B
cnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3Rh
dGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfTEVGVEhPVDoKLSAgICAgICAgQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19IT1QpKTsKLSAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJvd1R5cGU7Ci0gICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBBQlNfUklHSFRIT1Q6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfU0NST0xMUklHSFQgfCBERkNTX0hPVCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBB
QlNfVVBIT1ZFUjoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQ
KTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOwot
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfRE9XTkhPVkVSOgotICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfU0NST0xMRE9XTik7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNf
TEVGVEhPVkVSOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVG
VCk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBl
OwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfUklHSFRIT1ZFUjoKLSAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFJJR0hUKTsKLSAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBBQlNfVVBQUkVTU0VEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1ND
Uk9MTFVQIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IEFCU19ET1dOUFJFU1NFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19T
Q1JPTExET1dOIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKLSAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgQUJTX0xFRlRQUkVTU0VEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX1NDUk9MTExFRlQgfCBERkNTX1BVU0hFRCB8IERGQ1NfRkxBVCkpOwotICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6TGVmdEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBBQlNfUklHSFRQUkVTU0VEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKLSAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIEFCU19VUERJU0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICBjYXNlIEFCU19ET1dORElTQUJMRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIEFCU19MRUZURElTQUJMRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
KERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIEFCU19SSUdIVERJU0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX1NDUk9MTFJJR0hUIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0K
LQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRTY3JvbGxiYXJUaHVtYihXZWJDYW52
YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHBhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAgICBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBl
OwotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpVbmtub3duU3RhdGU7Ci0KLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNl
IFNCUF9USFVNQkJUTkhPUlo6Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
U0JQX1RIVU1CQlROVkVSVDoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQ
X0dSSVBQRVJIT1JaOgotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG9y
aXpvbnRhbFNjcm9sbEdyaXBUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX0dS
SVBQRVJWRVJUOgotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGlj
YWxTY3JvbGxHcmlwVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3dp
dGNoIChzdGF0ZSkgewotICAgIGNhc2UgU0NSQlNfTk9STUFMOgotICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0NSQlNf
SE9UOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKLSAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3RTdGF0ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIFNDUkJTX0hPVkVSOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhv
dmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19QUkVTU0VEOgotICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICBjYXNlIFNDUkJTX0RJU0FCTEVEOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
Ly8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgotICAgICAgICBicmVhazsK
LQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KLSAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3Rh
dGUpOwotfQotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludFNjcm9sbGJhclRyYWNr
KFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgcGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBhbGlnblJl
Y3QpCi17Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpVbmtub3duVHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0
YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAg
c3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBTQlBfVVBQRVJUUkFDS0hPUlo6Ci0gICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlw
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNCUF9MT1dFUlRSQUNLSE9SWjoKLSAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxTY3JvbGxUcmFja0Zv
cndhcmRUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tWRVJU
OgotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTY3JvbGxU
cmFja0JhY2tUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX0xPV0VSVFJBQ0tW
RVJUOgotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTY3Jv
bGxUcmFja0ZvcndhcmRUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBz
d2l0Y2ggKHN0YXRlKSB7Ci0gICAgY2FzZSBTQ1JCU19OT1JNQUw6Ci0gICAgICAgIEFTU0VSVChj
bGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JC
U19IT1Q6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZl
ciBoYXBwZW4gaW4gcHJhY3RpY2UuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19I
T1ZFUjoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgU0NSQlNfUFJFU1NFRDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIFNDUkJTX0RJU0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoK
LSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZHJhd0NvbnRy
b2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotdm9pZCBXZWJUaGVtZUVuZ2lu
ZURSVFdpbjo6cGFpbnRTcGluQnV0dG9uKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0g
ICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpVbmtub3duVHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgaWYgKHBhcnQg
PT0gU1BOUF9VUCkgewotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBB
cnJvd1R5cGU7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBVUFNfTk9S
TUFMOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsK
LSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBVUFNfRElTQUJMRUQ6Ci0gICAgICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19JTkFDVElW
RSkpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxl
ZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVVBTX1BSRVNTRUQ6Ci0g
ICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19Q
VVNIRUQpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJl
c3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVVBTX0hPVDoKLSAg
ICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hP
VCkpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0
YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocGFydCA9PSBT
UE5QX0RPV04pIHsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25B
cnJvd1R5cGU7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBETlNfTk9S
TUFMOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04p
OwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEROU19ESVNBQkxFRDoKLSAgICAg
ICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSU5B
Q1RJVkUpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlz
YWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEROU19QUkVTU0VE
OgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwg
REZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRE5TX0hP
VDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8
IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OkhvdmVyU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwg
Y3R5cGUsIGNzdGF0ZSk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50VGV4
dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHBhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYkNvbG9yIGNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBmaWxsQ29udGVudEFyZWEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRyYXdFZGdlcykKLXsKLSAgICBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25v
d25UeXBlOwotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpVbmtub3duU3RhdGU7Ci0KLSAgICBBU1NFUlQoRVBfRURJVFRFWFQg
PT0gcGFydCk7Ci0gICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlRleHRGaWVsZFR5
cGU7Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgY2FzZSBFVFNfTk9STUFMOgotICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgRVRTX0hPVDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7
Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBFVFNfRElTQUJMRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVU
U19TRUxFQ1RFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7
Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVRTX0ZPQ1VTRUQ6Ci0gICAgICAgIEFTU0VSVChj
bGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6Rm9jdXNlZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVRT
X1JFQURPTkxZOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwot
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJlYWRPbmx5U3RhdGU7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGRyYXdUZXh0RmllbGQoY2FudmFzLCBy
ZWN0LCBjdHlwZSwgY3N0YXRlLCBkcmF3RWRnZXMsIGZpbGxDb250ZW50QXJlYSwgY29sb3IpOwot
fQotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludFRyYWNrYmFyKFdlYkNhbnZhcyog
Y2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFy
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0
JiByZWN0KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQot
ICAgIGlmIChUS1BfVEhVTUJCT1RUT00gPT0gcGFydCkgewotICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZTsKLSAgICAgICAgc3dp
dGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFRVU19OT1JNQUw6Ci0gICAgICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgVFVTX0hPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
REZDU19IT1QpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpI
b3RTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgVFVTX0RJU0FCTEVE
OgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKLSAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgVFVTX1BSRVNTRUQ6Ci0gICAgICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfUFVTSEVEKTsKLSAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFRLUF9U
SFVNQlZFUlQgPT0gcGFydCkgewotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6VmVydGljYWxTbGlkZXJUaHVtYlR5cGU7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAg
ICAgICAgY2FzZSBUVVNfTk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFRVU19I
T1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKLSAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFRVU19ESVNBQkxFRDoKLSAgICAgICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7Ci0gICAgICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIFRVU19QUkVTU0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChUS1BfVFJBQ0sgPT0gcGFydCkgewot
ICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRhbFNsaWRlclRy
YWNrVHlwZTsKLSAgICAgICAgQVNTRVJUKHN0YXRlID09IFRSU19OT1JNQUwpOwotICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNL
VkVSVCA9PSBwYXJ0KSB7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpW
ZXJ0aWNhbFNsaWRlclRyYWNrVHlwZTsKLSAgICAgICAgQVNTRVJUKHN0YXRlID09IFRSVlNfTk9S
TUFMKTsKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICB9IGVs
c2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBkcmF3Q29udHJvbChjYW52
YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOwotfQotCi0KLXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRX
aW46OnBhaW50UHJvZ3Jlc3NCYXIoV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0
JiBiYXJSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJLaXQ6OldlYlJlY3QmIHZhbHVlUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlKQotewotICAgIFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJvZ3Jlc3NCYXJU
eXBlOwotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gZGV0ZXJtaW5h
dGUgPyBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6SW5kZXRlcm1pbmF0ZVN0YXRlOwotICAgIGRyYXdQcm9ncmVzc0JhcihjYW52YXMsIGN0
eXBlLCBjc3RhdGUsIGJhclJlY3QsIHZhbHVlUmVjdCk7Ci19Ci0KLQotV2ViS2l0OjpXZWJTaXpl
IFdlYlRoZW1lRW5naW5lRFJUV2luOjpnZXRTaXplKGludCBwYXJ0KQotewotICAgIHJldHVybiBX
ZWJLaXQ6OldlYlNpemUoKTsKLX0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGE0NDUxNGJiMmEwNzA2ZjYyYmEzYTJmOTI0YWVhZjMwZWE4MTQzN2IuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBXZWJUaGVtZUVuZ2luZSBBUEkgdXNlZCBieSB0
aGUgV2luZG93cyB2ZXJzaW9uIG9mCi0vLyBDaHJvbWl1bSB0byByZW5kZXIgbmF0aXZlIGZvcm0g
Y29udHJvbHMgbGlrZSBjaGVja2JveGVzLCByYWRpbyBidXR0b25zLAotLy8gYW5kIHNjcm9sbCBi
YXJzLgotLy8gVGhlIG5vcm1hbCBpbXBsZW1lbnRhdGlvbiAobmF0aXZlX3RoZW1lKSByZW5kZXJz
IHRoZSBjb250cm9scyB1c2luZyBlaXRoZXIKLS8vIHRoZSBVWFRoZW1lIHRoZW1pbmcgZW5naW5l
IHByZXNlbnQgaW4gWFAsIFZpc3RhLCBhbmQgV2luIDcsIG9yIHRoZSAiY2xhc3NpYyIKLS8vIHRo
ZW1lIHVzZWQgaWYgdGhhdCB0aGVtZSBpcyBzZWxlY3RlZCBpbiB0aGUgRGVza3RvcCBzZXR0aW5n
cy4KLS8vIFVuZm9ydHVuYXRlbHksIGJvdGggb2YgdGhlc2UgdGhlbWVzIHJlbmRlciBjb250cm9s
cyBkaWZmZXJlbnRseSBvbiB0aGUKLS8vIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgot
Ly8KLS8vIEluIG9yZGVyIHRvIGVuc3VyZSBtYXhpbXVtIGNvbnNpc3RlbmN5IG9mIGJhc2VsaW5l
cyBhY3Jvc3MgdGhlIGRpZmZlcmVudAotLy8gV2luZG93cyB2ZXJzaW9ucywgd2UgcHJvdmlkZSBh
IHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBmb3IgRFJUIGhlcmUKLS8vIGluc3RlYWQuIFRoZXNlIGNv
bnRyb2xzIGFyZSBhY3R1YWxseSBwbGF0Zm9ybS1pbmRlcGVuZGVudCAodGhleSdyZSByZW5kZXJl
ZAotLy8gdXNpbmcgU2tpYSkgYW5kIGNvdWxkIGJlIHVzZWQgb24gTGludXggYW5kIHRoZSBNYWMg
YXMgd2VsbCwgc2hvdWxkIHdlCi0vLyBjaG9vc2UgdG8gZG8gc28gYXQgc29tZSBwb2ludC4KLS8v
Ci0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVEUlRXaW5faAotI2RlZmluZSBXZWJUaGVtZUVuZ2lu
ZURSVFdpbl9oCi0KLSNpbmNsdWRlIDxwdWJsaWMvd2luL1dlYlRoZW1lRW5naW5lLmg+Ci0jaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLWNsYXNzIFdlYlRoZW1lRW5naW5lRFJUV2luIDog
cHVibGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdlYlRoZW1lRW5naW5lRFJUV2luKTsKLXB1YmxpYzoKLSAgICBXZWJUaGVtZUVuZ2luZURSVFdp
bigpIHsgfQotCi0gICAgLy8gV2ViVGhlbWVFbmdpbmUgbWV0aG9kczoKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCdXR0b24oCi0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGlu
dCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0
Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNZW51TGlzdCgKLSAgICAgICAgV2ViS2l0OjpX
ZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAg
ICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9s
bGJhckFycm93KAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBzdGF0ZSwgaW50IGNs
YXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUaHVtYigKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMq
LCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBX
ZWJLaXQ6OldlYlJlY3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRyYWNr
KAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYsIGNvbnN0IFdlYktp
dDo6V2ViUmVjdCYgYWxpZ25SZWN0KTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFNwaW5CdXR0
b24oCi0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50
IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUZXh0RmllbGQoCi0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwg
aW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2Vi
S2l0OjpXZWJSZWN0JiwgV2ViS2l0OjpXZWJDb2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsCi0g
ICAgICAgIGJvb2wgZHJhd0VkZ2VzKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrYmFy
KAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwotCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50UHJvZ3Jlc3NCYXIoCi0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwg
Y29uc3QgV2ViS2l0OjpXZWJSZWN0JiBiYXJSZWN0LAotICAgICAgICBjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmIHZhbHVlUmVjdCwKLSAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZSwgZG91YmxlIHRpbWUp
OwotCi0gICAgdmlydHVhbCBXZWJLaXQ6OldlYlNpemUgZ2V0U2l6ZShpbnQgcGFydCk7Ci19Owot
Ci0jZW5kaWYgLy8gV2ViVGhlbWVFbmdpbmVEUlRXaW5faAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193946</attachid>
            <date>2013-03-19 16:05:36 -0700</date>
            <delta_ts>2013-03-19 17:41:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112751-20130320000125.patch</filename>
            <type>text/plain</type>
            <size>154535</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTgwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODQ4ZTNlY2FlNWQ4NTMyZjdjYTM3NTc0ZGNiOTEyNjI4
NmQzOTJiNC4uMDU4OGE0ZjRmMDRjYzBlMGQwYjliOTU2MTQ4Y2M5YjlmOWNhMzNkYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDEzLTAzLTE5ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBXZWJUaGVtZUVuZ2luZSBpbXBsZW1lbnRhdGlvbnMg
dG8gVGVzdFJ1bm5lciBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTI3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVu
ZGVyVHJlZS5neXA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
aToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9X
ZWJUZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHA6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJmYWNlczo6dGhlbWVFbmdpbmUpOgorICAgICAg
ICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdEludGVyZmFjZXM6OnRoZW1lRW5naW5lKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRlc3RUaGVtZUNvbnRyb2xXaW4uY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmNwcC4KKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OldlYlRlc3RUaGVtZUNvbnRyb2xXaW4pOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0
VGhlbWVDb250cm9sV2luOjp+V2ViVGVzdFRoZW1lQ29udHJvbFdpbik6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpib3gpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6bGluZSk6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjp0cmlhbmdsZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpyb3VuZFJlY3QpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6b3ZhbCk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpjaXJjbGUpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6bmVzdGVkQm94ZXMpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6bWFya1N0YXRlKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmRyYXcpOgor
ICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6ZHJhd1RleHRG
aWVsZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpk
cmF3UHJvZ3Jlc3NCYXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5oLgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0VGhlbWVDb250cm9sV2luKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVF
bmdpbmVNYWMuaDogUmVuYW1lZCBmcm9tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlRoZW1lRW5naW5lRFJUTWFjLmguCisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAg
KFdlYlRlc3RUaGVtZUVuZ2luZU1hYyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLm1tOiBSZW5hbWVkIGZyb20g
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0uCisg
ICAgICAgICgrW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzQWN0aXZlV2luZG93XSk6CisgICAgICAg
ICgrW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzSW5hY3RpdmVXaW5kb3ddKToKKyAgICAgICAgKC1b
RmFrZUFjdGl2ZVdpbmRvdyBpbml0V2l0aEFjdGl2ZUNvbnRyb2xzOl0pOgorICAgICAgICAoLVtG
YWtlQWN0aXZlV2luZG93IF9oYXNBY3RpdmVDb250cm9sc10pOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcjo6V2ViVGVzdFRoZW1lRW5naW5lTWFjOjpwYWludFNjcm9sbGJhclRodW1iKToKKyAgICAg
ICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1l
RW5naW5lTWFjOjpwYWludEhJVGhlbWVTY3JvbGxiYXJUaHVtYik6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVNYWM6OnBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRo
dW1iKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9X
ZWJUZXN0VGhlbWVFbmdpbmVXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViVGVzdFJ1
bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBh
aW50TWVudUxpc3QpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lRW5naW5l
V2luOjpwYWludFNjcm9sbGJhckFycm93KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRl
c3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRTY3JvbGxiYXJUaHVtYik6CisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50U2Nyb2xsYmFyVHJhY2spOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWludFNwaW5CdXR0
b24pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWlu
dFRleHRGaWVsZCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVX
aW46OnBhaW50VHJhY2tiYXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1l
RW5naW5lV2luOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6Oldl
YlRlc3RUaGVtZUVuZ2luZVdpbjo6Z2V0U2l6ZSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmg6IFJlbmFtZWQg
ZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5o
LgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0VGhlbWVFbmdpbmVX
aW4pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lRW5naW5lV2luOjpXZWJU
ZXN0VGhlbWVFbmdpbmVXaW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OmluaXRpYWxpemUpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxNYWMubW06CisgICAg
ICAgIChwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbFdpbi5jcHA6CisgICAgICAgIChwbGF0Zm9ybUluaXQpOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmNwcDogUmVtb3ZlZC4KKwog
MjAxMy0wMy0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTdHlsZSB0d2Vla3MgdG8gZGVmYXVsdC5jc3MuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cAppbmRl
eCAyMWIxMDMwYWExYmI3YTk3NzZmM2RkZGI4YWViNjU1YWIzZWMxMmVjLi5iZGNlM2Q4MGQwYTgx
ZGVkZmMyOWJiOWY3M2E0ODdmZWJlMWFkODhhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKQEAgLTE1
NCw2ICsxNTQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICc8KHNvdXJjZV9kaXIpL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvZ3RrJywKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAg
ICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICBbJ09TIT0id2luIicsIHsKKyAgICAgICAg
ICAgICAgICAgICAgJ3NvdXJjZXMvJzogWworICAgICAgICAgICAgICAgICAgICAgICAgWydleGNs
dWRlJywgJ1dpblxcLmNwcCQnXSwKKyAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICB9XSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAjIERpc2FibGUgYzQyNjcgd2Fy
bmluZ3MgdW50aWwgd2UgZml4IHNpemVfdCB0byBpbnQgdHJ1bmNhdGlvbnMuIAogICAgICAgICAg
ICAgJ21zdnNfZGlzYWJsZWRfd2FybmluZ3MnOiBbIDQyNjcsIF0sCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCBjZDQ3NTVhYTNjOTNlNWMzNTRmYmRkMDIzMWI2
NGIxZTE0Y2RmZTQxLi4zMjE1NWRmMWMyNGEzOTYyYTFkYjQ5MDVjMjZiYzAyNjY1MDIwMTFkIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTI2LDEyICsyNiw2
IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNoZWxsU3R1Yi5jcHAnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RTaGVsbFgxMS5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERS
VFdpbi5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5o
JywKLSAgICAgICAgICAgICdjaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5tbScsCi0gICAg
ICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMuaCcsCi0gICAgICAgICAgICAn
Y2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1
bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0LmgnLAogICAgICAg
ICBdLApAQCAtOTUsNiArODksMTIgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUYXNrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
V2ViVGVzdEludGVyZmFjZXMuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0UHJveHkuY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0VGhlbWVDb250cm9sV2luLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5oJywKKyAgICAgICAgICAgICdj
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMubW0nLAorICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5oJywK
KyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVX
aW4uY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhl
bWVFbmdpbmVXaW4uaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VXNlck1lZGlhQ2xpZW50TW9jay5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suaCcsCiAgICAgICAgIF0sCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9w
dWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAppbmRleCA0NTJjMTQ5MWU1YWFiODM5NjFiMmU2MTY0
MzgyMzA3ZjY3ZGJmMmE4Li5hOGJmZjgwZmMzNTQ5NDU4Y2MwODdhMDdlMWY4NDk3YWE3ODg5YjNi
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1
YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKQEAgLTQwLDYgKzQwLDcg
QEAgY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CiBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRl
ckNsaWVudDsKIGNsYXNzIFdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKIGNsYXNzIFdlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKK2NsYXNzIFdlYlRoZW1lRW5naW5lOwogY2xh
c3MgV2ViVVJMOwogY2xhc3MgV2ViVmlldzsKIH0KQEAgLTY0LDYgKzY1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY29uZmlndXJlRm9yVGVzdFdpdGhVUkwoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBi
b29sIGdlbmVyYXRlUGl4ZWxzKTsKIAogICAgIFdlYlRlc3RSdW5uZXIqIHRlc3RSdW5uZXIoKTsK
KyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lKiB0aGVtZUVuZ2luZSgpOwogCiAgICAgV2ViS2l0
OjpXZWJNZWRpYVN0cmVhbUNlbnRlciogY3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIoV2ViS2l0OjpX
ZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCopOwogICAgIFdlYktpdDo6V2ViUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKiBjcmVhdGVXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoV2ViS2l0OjpX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZh
Y2VzLmNwcAppbmRleCA0ZDhhMDBjOTZjZmM5YWNiM2QwYzczNmMyMzZmMTZkYTc5ZjYyM2M0Li4x
OGY3YTViMDc5ZmZmYjkzMzYxNWVkNDQwNDk3ZmY5MDIxNmNlZmMwIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dEludGVyZmFjZXMuY3BwCkBAIC00Myw2ICs0MywxMiBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJV
UkwuaD4KICNpbmNsdWRlIDxzdHJpbmc+CiAKKyNpZiBkZWZpbmVkKFdJTjMyKQorI2luY2x1ZGUg
IldlYlRlc3RUaGVtZUVuZ2luZVdpbi5oIgorI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisjaW5j
bHVkZSAiV2ViVGVzdFRoZW1lRW5naW5lTWFjLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTIxNSw0ICsyMjEsMTkgQEAgY29u
c3QgdmVjdG9yPFdlYlRlc3RQcm94eUJhc2UqPiYgVGVzdEludGVyZmFjZXM6OndpbmRvd0xpc3Qo
KQogICAgIHJldHVybiBtX3dpbmRvd0xpc3Q7CiB9CiAKK1dlYlRoZW1lRW5naW5lKiBUZXN0SW50
ZXJmYWNlczo6dGhlbWVFbmdpbmUoKQoreworI2lmIGRlZmluZWQoVVNFX0RFRkFVTFRfUkVOREVS
X1RIRU1FKSB8fCAhKGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX19BUFBMRV9fKSkKKyAgICBy
ZXR1cm4gMDsKKyNlbGlmIGRlZmluZWQoV0lOMzIpCisgICAgaWYgKG1fdGhlbWVFbmdpbmUuZ2V0
KCkpCisgICAgICAgIG1fdGhlbWVFbmdpbmUucmVzZXQobmV3IFdlYlRlc3RUaGVtZUVuZ2luZVdp
bigpKTsKKyAgICByZXR1cm4gbV90aGVtZUVuZ2luZS5nZXQoKTsKKyNlbGlmIGRlZmluZWQoX19B
UFBMRV9fKQorICAgIGlmIChtX3RoZW1lRW5naW5lLmdldCgpKQorICAgICAgICBtX3RoZW1lRW5n
aW5lLnJlc2V0KG5ldyBXZWJUZXN0VGhlbWVFbmdpbmVNYWMoKSk7CisgICAgcmV0dXJuIG1fdGhl
bWVFbmdpbmUuZ2V0KCk7CisjZW5kaWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgK
aW5kZXggYjZiMzAxYTc5MGMzNGRjMTI4OGEwNWJlZTllMzY0ZWFiY2ZlMTI5ZC4uN2Y4OTUzYTg0
YjRjMWYxNjU1ZDM1YTkzYWVmZDdhZDA1ZDdlZDZjYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNl
cy5oCkBAIC0zNiw2ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViRnJh
bWU7CitjbGFzcyBXZWJUaGVtZUVuZ2luZTsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlZpZXc7
CiB9CkBAIC03Miw2ICs3Myw3IEBAIHB1YmxpYzoKICAgICBXZWJUZXN0RGVsZWdhdGUqIGRlbGVn
YXRlKCk7CiAgICAgV2ViVGVzdFByb3h5QmFzZSogcHJveHkoKTsKICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxXZWJUZXN0UHJveHlCYXNlKj4mIHdpbmRvd0xpc3QoKTsKKyAgICBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lKiB0aGVtZUVuZ2luZSgpOwogCiBwcml2YXRlOgogICAgIHN0ZDo6YXV0b19wdHI8
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7CkBAIC04
NCw2ICs4Niw5IEBAIHByaXZhdGU6CiAgICAgV2ViVGVzdFByb3h5QmFzZSogbV9wcm94eTsKIAog
ICAgIHN0ZDo6dmVjdG9yPFdlYlRlc3RQcm94eUJhc2UqPiBtX3dpbmRvd0xpc3Q7CisjaWYgIWRl
ZmluZWQoVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FKSAmJiAoZGVmaW5lZChXSU4zMikgfHwgZGVm
aW5lZChfX0FQUExFX18pKQorICAgIHN0ZDo6YXV0b19wdHI8V2ViS2l0OjpXZWJUaGVtZUVuZ2lu
ZT4gbV90aGVtZUVuZ2luZTsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdElu
dGVyZmFjZXMuY3BwCmluZGV4IDJhMTc2ZDc2MzlhOTMwNTg5NDAyMDVhYzJmMDU4MzhkNGE2MmY2
MzIuLmMyZGJkMTY5YmNmZGZhMjlmMDQ0ZWM3NDNhMDFkMjcyNjE3YTMyZmQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRl
cmZhY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTg0LDYgKzg0LDExIEBAIFdlYlRlc3RSdW5u
ZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkKICAgICByZXR1cm4gbV9pbnRlcmZh
Y2VzLT50ZXN0UnVubmVyKCk7CiB9CiAKK1dlYlRoZW1lRW5naW5lKiBXZWJUZXN0SW50ZXJmYWNl
czo6dGhlbWVFbmdpbmUoKQoreworICAgIHJldHVybiBtX2ludGVyZmFjZXMtPnRoZW1lRW5naW5l
KCk7Cit9CisKIFRlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50ZXJmYWNlczo6dGVzdEludGVyZmFj
ZXMoKQogewogICAgIHJldHVybiBtX2ludGVyZmFjZXMuZ2V0KCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVDb250
cm9sV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxYWJmMjUyMjg1NjA2MDhi
YThkNjE5YmYwNGY3MWMwMGY1Yzc2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVDb250cm9sV2luLmNw
cApAQCAtMCwwICsxLDQ5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgc2ltcGxlIGdlbmVy
aWMgdmVyc2lvbiBvZiB0aGUgV2ViVGhlbWVFbmdpbmUsCisvLyB3aGljaCBpcyB1c2VkIHRvIGRy
YXcgYWxsIHRoZSBuYXRpdmUgY29udHJvbHMgb24gYSB3ZWIgcGFnZS4gV2UgdXNlIHRoaXMKKy8v
IGZpbGUgd2hlbiBydW5uaW5nIGluIGxheW91dCB0ZXN0IG1vZGUgaW4gb3JkZXIgdG8gcmVtb3Zl
IGFueQorLy8gcGxhdGZvcm0tc3BlY2lmaWMgcmVuZGVyaW5nIGRpZmZlcmVuY2VzIGR1ZSB0byB0
aGVtZXMsIGNvbG9ycywgZXRjLgorLy8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaCIKKworI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKKyNp
bmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX3dpbi5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5
L3NraWEvaW5jbHVkZS9jb3JlL1NrQ2FudmFzLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tp
YS9pbmNsdWRlL2NvcmUvU2tQYWludC5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5j
bHVkZS9jb3JlL1NrUGF0aC5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9j
b3JlL1NrUmVjdC5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCit1c2luZyBuYW1lc3BhY2Ug
c3RkOworCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK25hbWVzcGFjZSB7CisKK2NvbnN0
IFNrQ29sb3IgZWRnZUNvbG9yICAgICA9IFNLX0NvbG9yQkxBQ0s7Citjb25zdCBTa0NvbG9yIHJl
YWRPbmx5Q29sb3IgPSBTa0NvbG9yU2V0UkdCKDB4ZTksIDB4YzIsIDB4YTYpOworY29uc3QgU2tD
b2xvciBmZ0NvbG9yICAgICAgID0gU0tfQ29sb3JCTEFDSzsKK2NvbnN0IFNrQ29sb3IgYmdDb2xv
cnNbXSAgICA9IHsKKyAgICBTS19Db2xvckJMQUNLLCAvLyBVbmtub3duCisgICAgU2tDb2xvclNl
dFJHQigweGM5LCAweGM5LCAweGM5KSwgLy8gRGlzYWJsZWQKKyAgICBTa0NvbG9yU2V0UkdCKDB4
ZjMsIDB4ZTAsIDB4ZDApLCAvLyBSZWFkb25seQorICAgIFNrQ29sb3JTZXRSR0IoMHg4OSwgMHhj
NCwgMHhmZiksIC8vIE5vcm1hbAorICAgIFNrQ29sb3JTZXRSR0IoMHg0MywgMHhmOSwgMHhmZiks
IC8vIEhvdAorICAgIFNrQ29sb3JTZXRSR0IoMHgyMCwgMHhmNiwgMHhjYyksIC8vIEZvY3VzZWQK
KyAgICBTa0NvbG9yU2V0UkdCKDB4MDAsIDB4ZjMsIDB4YWMpLCAvLyBIb3ZlcgorICAgIFNrQ29s
b3JTZXRSR0IoMHhhOSwgMHhmZiwgMHgxMiksIC8vIFByZXNzZWQKKyAgICBTa0NvbG9yU2V0UkdC
KDB4Y2MsIDB4Y2MsIDB4Y2MpIC8vIEluZGV0ZXJtaW5hdGUKK307CisKK1NrSVJlY3QgdmFsaWRh
dGUoY29uc3QgU2tJUmVjdCYgcmVjdCwgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlw
ZSkKK3sKKyAgICBzd2l0Y2ggKGN0eXBlKSB7CisgICAgY2FzZSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpVbmNoZWNrZWRCb3hUeXBlOgorICAgIGNhc2UgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
Q2hlY2tlZEJveFR5cGU6CisgICAgY2FzZSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmNoZWNr
ZWRSYWRpb1R5cGU6CisgICAgY2FzZSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkUmFk
aW9UeXBlOiB7CisgICAgICAgIFNrSVJlY3QgcmV0dmFsID0gcmVjdDsKKworICAgICAgICAvLyBU
aGUgbWF4aW11bSB3aWR0aCBhbmQgaGVpZ2h0IGlzIDEzLgorICAgICAgICAvLyBDZW50ZXIgdGhl
IHNxdWFyZSBpbiB0aGUgcGFzc2VkIHJlY3RhbmdsZS4KKyAgICAgICAgY29uc3QgaW50IG1heENv
bnRyb2xTaXplID0gMTM7CisgICAgICAgIGludCBjb250cm9sU2l6ZSA9IHN0ZDo6bWluKHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRyb2xTaXplID0gc3RkOjptaW4o
Y29udHJvbFNpemUsIG1heENvbnRyb2xTaXplKTsKKworICAgICAgICByZXR2YWwuZkxlZnQgICA9
IHJlY3QuZkxlZnQgKyAocmVjdC53aWR0aCgpIC8gMikgLSAoY29udHJvbFNpemUgLyAyKTsKKyAg
ICAgICAgcmV0dmFsLmZSaWdodCAgPSByZXR2YWwuZkxlZnQgKyBjb250cm9sU2l6ZSAtIDE7Cisg
ICAgICAgIHJldHZhbC5mVG9wICAgID0gcmVjdC5mVG9wICsgKHJlY3QuaGVpZ2h0KCkgLyAyKSAt
IChjb250cm9sU2l6ZSAvIDIpOworICAgICAgICByZXR2YWwuZkJvdHRvbSA9IHJldHZhbC5mVG9w
ICsgY29udHJvbFNpemUgLSAxOworCisgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgfQorCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHJlY3Q7CisgICAgfQorfQorCit9CisKK1dlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OldlYlRlc3RUaGVtZUNvbnRyb2xXaW4oU2tDYW52YXMqIGNhbnZh
cywgY29uc3QgU2tJUmVjdCYgaXJlY3QsIFR5cGUgY3R5cGUsIFN0YXRlIGNzdGF0ZSkKKyAgICA6
IG1fY2FudmFzKGNhbnZhcykKKyAgICAsIG1faXJlY3QodmFsaWRhdGUoaXJlY3QsIGN0eXBlKSkK
KyAgICAsIG1fdHlwZShjdHlwZSkKKyAgICAsIG1fc3RhdGUoY3N0YXRlKQorICAgICwgbV9sZWZ0
KG1faXJlY3QuZkxlZnQpCisgICAgLCBtX3JpZ2h0KG1faXJlY3QuZlJpZ2h0KQorICAgICwgbV90
b3AobV9pcmVjdC5mVG9wKQorICAgICwgbV9ib3R0b20obV9pcmVjdC5mQm90dG9tKQorICAgICwg
bV9oZWlnaHQobV9pcmVjdC5oZWlnaHQoKSkKKyAgICAsIG1fd2lkdGgobV9pcmVjdC53aWR0aCgp
KQorICAgICwgbV9lZGdlQ29sb3IoZWRnZUNvbG9yKQorICAgICwgbV9iZ0NvbG9yKGJnQ29sb3Jz
W2NzdGF0ZV0pCisgICAgLCBtX2ZnQ29sb3IoZmdDb2xvcikKK3sKK30KKworV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6fldlYlRlc3RUaGVtZUNvbnRyb2xXaW4oKQoreworfQorCit2b2lkIFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OmJveChjb25zdCBTa0lSZWN0JiByZWN0LCBTa0NvbG9yIGZpbGxD
b2xvcikKK3sKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWlu
dDo6a0ZpbGxfU3R5bGUpOworICAgIHBhaW50LnNldENvbG9yKGZpbGxDb2xvcik7CisgICAgbV9j
YW52YXMtPmRyYXdJUmVjdChyZWN0LCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2Vk
Z2VDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Cisg
ICAgbV9jYW52YXMtPmRyYXdJUmVjdChyZWN0LCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6bGluZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIFNrQ29s
b3IgY29sb3IpCit7CisgICAgU2tQYWludCBwYWludDsKKyAgICBwYWludC5zZXRDb2xvcihjb2xv
cik7CisgICAgbV9jYW52YXMtPmRyYXdMaW5lKFNrSW50VG9TY2FsYXIoeDApLCBTa0ludFRvU2Nh
bGFyKHkwKSwgU2tJbnRUb1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEpLCBwYWludCk7Cit9
CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6dHJpYW5nbGUoaW50IHgwLCBpbnQgeTAs
IGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgU2tDb2xvciBjb2xvcikKK3sKKyAgICBT
a1BhdGggcGF0aDsKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcGFpbnQuc2V0Q29sb3IoY29s
b3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBwYXRo
LmluY1Jlc2VydmUoNCk7CisgICAgcGF0aC5tb3ZlVG8oU2tJbnRUb1NjYWxhcih4MCksIFNrSW50
VG9TY2FsYXIoeTApKTsKKyAgICBwYXRoLmxpbmVUbyhTa0ludFRvU2NhbGFyKHgxKSwgU2tJbnRU
b1NjYWxhcih5MSkpOworICAgIHBhdGgubGluZVRvKFNrSW50VG9TY2FsYXIoeDIpLCBTa0ludFRv
U2NhbGFyKHkyKSk7CisgICAgcGF0aC5jbG9zZSgpOworICAgIG1fY2FudmFzLT5kcmF3UGF0aChw
YXRoLCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAgcGFp
bnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdQ
YXRoKHBhdGgsIHBhaW50KTsKK30KKwordm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpyb3Vu
ZFJlY3QoU2tDb2xvciBjb2xvcikKK3sKKyAgICBTa1JlY3QgcmVjdDsKKyAgICBTa1NjYWxhciBy
YWRpdXMgPSBTa0ludFRvU2NhbGFyKDUpOworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAgICByZWN0
LnNldChtX2lyZWN0KTsKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQuc2V0
U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Um91bmRSZWN0
KHJlY3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2Vk
Z2VDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Cisg
ICAgbV9jYW52YXMtPmRyYXdSb3VuZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMsIHBhaW50KTsK
K30KKwordm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpvdmFsKFNrQ29sb3IgY29sb3IpCit7
CisgICAgU2tSZWN0IHJlY3Q7CisgICAgU2tQYWludCBwYWludDsKKworICAgIHJlY3Quc2V0KG1f
aXJlY3QpOworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShT
a1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdPdmFsKHJlY3QsIHBhaW50
KTsKKworICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHls
ZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd092YWwocmVjdCwg
cGFpbnQpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmNpcmNsZShTa1NjYWxh
ciByYWRpdXMsIFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tTY2FsYXIgY3kgPSBTa0ludFRvU2Nh
bGFyKG1fdG9wICArIG1faGVpZ2h0IC8gMik7CisgICAgU2tTY2FsYXIgY3ggPSBTa0ludFRvU2Nh
bGFyKG1fbGVmdCArIG1fd2lkdGggLyAyKTsKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcGFp
bnQuc2V0Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0
eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFpbnQpOwor
CisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNr
UGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Q2lyY2xlKGN4LCBjeSwg
cmFkaXVzLCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6bmVzdGVk
Qm94ZXMoaW50IGluZGVudExlZnQsIGludCBpbmRlbnRUb3AsIGludCBpbmRlbnRSaWdodCwgaW50
IGluZGVudEJvdHRvbSwgU2tDb2xvciBvdXRlckNvbG9yLCBTa0NvbG9yIGlubmVyQ29sb3IpCit7
CisgICAgU2tJUmVjdCBsaXJlY3Q7CisgICAgYm94KG1faXJlY3QsIG91dGVyQ29sb3IpOworICAg
IGxpcmVjdC5zZXQobV9pcmVjdC5mTGVmdCArIGluZGVudExlZnQsIG1faXJlY3QuZlRvcCArIGlu
ZGVudFRvcCwgbV9pcmVjdC5mUmlnaHQgLSBpbmRlbnRSaWdodCwgbV9pcmVjdC5mQm90dG9tIC0g
aW5kZW50Qm90dG9tKTsKKyAgICBib3gobGlyZWN0LCBpbm5lckNvbG9yKTsKK30KKwordm9pZCBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjptYXJrU3RhdGUoKQoreworICAgIC8vIFRoZSBob3Jpem9u
dGFsIGxpbmVzIGluIGEgcmVhZCBvbmx5IGNvbnRyb2wgYXJlIHNwYWNlZCBieSB0aGlzIGFtb3Vu
dC4KKyAgICBjb25zdCBpbnQgcmVhZE9ubHlMaW5lT2Zmc2V0ID0gNTsKKworICAgIC8vIFRoZSBs
ZW5ndGggb2YgYSB0cmlhbmdsZSBzaWRlIGZvciB0aGUgY29ybmVyIG1hcmtzLgorICAgIGNvbnN0
IGludCB0cmlhbmdsZVNpemUgPSA1OworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2Fz
ZSBVbmtub3duU3RhdGU6CisgICAgY2FzZSBEaXNhYmxlZFN0YXRlOgorICAgIGNhc2UgTm9ybWFs
U3RhdGU6CisgICAgY2FzZSBJbmRldGVybWluYXRlU3RhdGU6CisgICAgICAgIC8vIERvbid0IHZp
c3VhbGx5IG1hcmsgdGhlc2Ugc3RhdGVzIChjb2xvciBpcyBlbm91Z2gpLgorICAgICAgICBicmVh
azsKKyAgICBjYXNlIFJlYWRPbmx5U3RhdGU6CisgICAgICAgIC8vIERyYXdpbmcgbGluZXMgYWNy
b3NzIHRoZSBjb250cm9sLgorICAgICAgICBmb3IgKGludCBpID0gbV90b3AgKyByZWFkT25seUxp
bmVPZmZzZXQ7IGkgPCBtX2JvdHRvbTsgaSArPSByZWFkT25seUxpbmVPZmZzZXQpCisgICAgICAg
ICAgICBsaW5lKG1fbGVmdCArIDEsIGksIG1fcmlnaHQgLSAxLCBpLCByZWFkT25seUNvbG9yKTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhvdFN0YXRlOgorICAgICAgICAvLyBEcmF3IGEg
dHJpYW5nbGUgaW4gdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBjb250cm9sLgorICAgICAg
ICB0cmlhbmdsZShtX2xlZnQsIG1fdG9wLCBtX2xlZnQgKyB0cmlhbmdsZVNpemUsIG1fdG9wLCBt
X2xlZnQsIG1fdG9wICsgdHJpYW5nbGVTaXplLCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBIb3ZlclN0YXRlOgorICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4g
dGhlIHVwcGVyIHJpZ2h0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KKyAgICAgICAgdHJpYW5nbGUo
bV9yaWdodCwgbV90b3AsIG1fcmlnaHQsIG1fdG9wICsgdHJpYW5nbGVTaXplLCBtX3JpZ2h0IC0g
dHJpYW5nbGVTaXplLCBtX3RvcCwgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgRm9jdXNlZFN0YXRlOgorICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIGJv
dHRvbSByaWdodCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRyaWFuZ2xlKG1fcmln
aHQsIG1fYm90dG9tLCBtX3JpZ2h0IC0gdHJpYW5nbGVTaXplLCBtX2JvdHRvbSwgbV9yaWdodCwg
bV9ib3R0b20gLSB0cmlhbmdsZVNpemUsIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFByZXNzZWRTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRo
ZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRyaWFuZ2xlKG1f
bGVmdCwgbV9ib3R0b20sIG1fbGVmdCwgbV9ib3R0b20gLSB0cmlhbmdsZVNpemUsIG1fbGVmdCAr
IHRyaWFuZ2xlU2l6ZSwgbV9ib3R0b20sIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpkcmF3
KCkKK3sKKyAgICBpbnQgaGFsZldpZHRoID0gbV93aWR0aCAvIDI7CisgICAgaW50IGhhbGZIZWln
aHQgPSBtX2hlaWdodCAvIDI7CisgICAgaW50IHF1YXJ0ZXJXaWR0aCA9IG1fd2lkdGggLyA0Owor
ICAgIGludCBxdWFydGVySGVpZ2h0ID0gbV9oZWlnaHQgLyA0OworCisgICAgLy8gSW5kZW50IGFt
b3VudHMgZm9yIHRoZSBjaGVjayBpbiBhIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbi4KKyAgICBj
b25zdCBpbnQgY2hlY2tJbmRlbnQgPSAzOworCisgICAgLy8gSW5kZW50IGFtb3VudHMgZm9yIHNo
b3J0IGFuZCBsb25nIHNpZGVzIG9mIHRoZSBzY3JvbGxiYXIgbm90Y2hlcy4KKyAgICBjb25zdCBp
bnQgbm90Y2hMb25nT2Zmc2V0ID0gMTsKKyAgICBjb25zdCBpbnQgbm90Y2hTaG9ydE9mZnNldCA9
IDQ7CisgICAgY29uc3QgaW50IG5vT2Zmc2V0ID0gMDsKKworICAgIC8vIEluZGVudCBhbW91bnRz
IGZvciB0aGUgc2hvcnQgYW5kIGxvbmcgc2lkZXMgb2YgYSBzY3JvbGwgdGh1bWIgYm94LgorICAg
IGNvbnN0IGludCB0aHVtYkxvbmdJbmRlbnQgPSAwOworICAgIGNvbnN0IGludCB0aHVtYlNob3J0
SW5kZW50ID0gMjsKKworICAgIC8vIEluZGVudHMgZm9yIHRoZSBjcm9zc2hhdGNoIG9uIGEgc2Ny
b2xsIGdyaXAuCisgICAgY29uc3QgaW50IGdyaXBMb25nSW5kZW50ID0gMzsKKyAgICBjb25zdCBp
bnQgZ3JpcFNob3J0SW5kZW50ID0gNTsKKworICAgIC8vIEluZGVudHMgZm9yIHRoZSB0aGUgc2xp
ZGVyIHRyYWNrLgorICAgIGNvbnN0IGludCBzbGlkZXJJbmRlbnQgPSAyOworCisgICAgc3dpdGNo
IChtX3R5cGUpIHsKKyAgICBjYXNlIFVua25vd25UeXBlOgorICAgICAgICBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUZXh0RmllbGRUeXBl
OgorICAgICAgICAvLyBXZSByZW5kZXIgdGhpcyBieSBoYW5kIG91dHNpZGUgb2YgdGhpcyBmdW5j
dGlvbi4KKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgUHVzaEJ1dHRvblR5cGU6CisgICAgICAgIC8vIHB1c2ggYnV0dG9ucyBy
ZW5kZXIgYXMgYSByb3VuZGVkIHJlY3RhbmdsZQorICAgICAgICByb3VuZFJlY3QobV9iZ0NvbG9y
KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFVuY2hlY2tlZEJveFR5cGU6CisgICAgICAg
IC8vIFVuY2hlY2tlZCBib3hlcyBhcmUgc2ltcGx5IHBsYWluIGJveGVzLgorICAgICAgICBib3go
bV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENoZWNrZWRC
b3hUeXBlOgorICAgICAgICBuZXN0ZWRCb3hlcyhjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIGNo
ZWNrSW5kZW50LCBjaGVja0luZGVudCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgSW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZToKKyAgICAgICAgLy8g
SW5kZXRlcm1pbmF0ZSBjaGVja2JveCBpcyBhIGJveCBjb250YWluaW5nICctJy4KKyAgICAgICAg
bmVzdGVkQm94ZXMoY2hlY2tJbmRlbnQsIGhhbGZIZWlnaHQsIGNoZWNrSW5kZW50LCBoYWxmSGVp
Z2h0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBV
bmNoZWNrZWRSYWRpb1R5cGU6CisgICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWln
aHQpLCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQ2hlY2tlZFJhZGlv
VHlwZToKKyAgICAgICAgY2lyY2xlKFNrSW50VG9TY2FsYXIoaGFsZkhlaWdodCksIG1fYmdDb2xv
cik7CisgICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWlnaHQgLSBjaGVja0luZGVu
dCksIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIb3Jpem9udGFsU2Ny
b2xsVHJhY2tCYWNrVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBh
dCB0aGUgbGVmdC4KKyAgICAgICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmSGVpZ2h0IC0gbm90Y2hM
b25nT2Zmc2V0OworICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX3dpZHRoIC0gbm90Y2hTaG9y
dE9mZnNldDsKKyAgICAgICAgbmVzdGVkQm94ZXMobm9PZmZzZXQsIGxvbmdPZmZzZXQsIHNob3J0
T2Zmc2V0LCBsb25nT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTog
eworICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUgcmlnaHQuCisgICAg
ICAgIGludCBsb25nT2Zmc2V0ICA9IGhhbGZIZWlnaHQgLSBub3RjaExvbmdPZmZzZXQ7CisgICAg
ICAgIGludCBzaG9ydE9mZnNldCA9IG1fd2lkdGggLSBub3RjaFNob3J0T2Zmc2V0OworICAgICAg
ICBuZXN0ZWRCb3hlcyhzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbm9PZmZzZXQsIGxvbmdPZmZz
ZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Y2FzZSBWZXJ0aWNhbFNjcm9sbFRyYWNrQmFja1R5cGU6IHsKKyAgICAgICAgLy8gRHJhdyBhIGJv
eCB3aXRoIGEgbm90Y2ggYXQgdGhlIHRvcC4KKyAgICAgICAgaW50IGxvbmdPZmZzZXQgID0gaGFs
ZldpZHRoIC0gbm90Y2hMb25nT2Zmc2V0OworICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX2hl
aWdodCAtIG5vdGNoU2hvcnRPZmZzZXQ7CisgICAgICAgIG5lc3RlZEJveGVzKGxvbmdPZmZzZXQs
IG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3Ip
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsVHJhY2tG
b3J3YXJkVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUg
Ym90dG9tLgorICAgICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmV2lkdGggLSBub3RjaExvbmdP
ZmZzZXQ7CisgICAgICAgIGludCBzaG9ydE9mZnNldCA9IG1faGVpZ2h0IC0gbm90Y2hTaG9ydE9m
ZnNldDsKKyAgICAgICAgbmVzdGVkQm94ZXMobG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIGxvbmdP
ZmZzZXQsIG5vT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZToKKyAgICAgICAgLy8g
RHJhdyBhIG5hcnJvd2VyIGJveCBvbiB0b3Agb2YgdGhlIG91dHNpZGUgYm94LgorICAgICAgICBu
ZXN0ZWRCb3hlcyh0aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIHRodW1iTG9uZ0lu
ZGVudCwgdGh1bWJTaG9ydEluZGVudCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3IpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgVmVydGljYWxTY3JvbGxUaHVtYlR5cGU6CisgICAgICAgIC8vIERy
YXcgYSBzaG9ydGVyIGJveCBvbiB0b3Agb2YgdGhlIG91dHNpZGUgYm94LgorICAgICAgICBuZXN0
ZWRCb3hlcyh0aHVtYlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRl
bnQsIHRodW1iTG9uZ0luZGVudCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3IpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgSG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZToKKyAgICBjYXNlIFZlcnRp
Y2FsU2xpZGVyVGh1bWJUeXBlOgorICAgICAgICAvLyBTbGlkZXIgdGh1bWJzIGFyZSBvdmFscy4K
KyAgICAgICAgb3ZhbChtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG9y
aXpvbnRhbFNjcm9sbEdyaXBUeXBlOiB7CisgICAgICAgIC8vIERyYXcgYSBob3Jpem9udGFsIGNy
b3NzaGF0Y2ggZm9yIHRoZSBncmlwLgorICAgICAgICBpbnQgbG9uZ09mZnNldCA9IGhhbGZXaWR0
aCAtIGdyaXBMb25nSW5kZW50OworICAgICAgICBsaW5lKG1fbGVmdCArIGdyaXBMb25nSW5kZW50
LCBtX3RvcCArIGhhbGZIZWlnaHQsIG1fcmlnaHQgLSBncmlwTG9uZ0luZGVudCwgbV90b3AgKyBo
YWxmSGVpZ2h0LCBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCArIGxvbmdPZmZzZXQs
IG1fdG9wICsgZ3JpcFNob3J0SW5kZW50LCBtX2xlZnQgKyBsb25nT2Zmc2V0LCBtX2JvdHRvbSAt
IGdyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgbGluZShtX3JpZ2h0IC0gbG9u
Z09mZnNldCwgbV90b3AgKyBncmlwU2hvcnRJbmRlbnQsIG1fcmlnaHQgLSBsb25nT2Zmc2V0LCBt
X2JvdHRvbSAtIGdyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgY2FzZSBWZXJ0aWNhbFNjcm9sbEdyaXBUeXBlOiB7CisgICAgICAgIC8vIERy
YXcgYSB2ZXJ0aWNhbCBjcm9zc2hhdGNoIGZvciB0aGUgZ3JpcC4KKyAgICAgICAgaW50IGxvbmdP
ZmZzZXQgPSBoYWxmSGVpZ2h0IC0gZ3JpcExvbmdJbmRlbnQ7CisgICAgICAgIGxpbmUobV9sZWZ0
ICsgaGFsZldpZHRoLCBtX3RvcCArIGdyaXBMb25nSW5kZW50LCBtX2xlZnQgKyBoYWxmV2lkdGgs
IG1fYm90dG9tIC0gZ3JpcExvbmdJbmRlbnQsIG1fZmdDb2xvcik7CisgICAgICAgIGxpbmUobV9s
ZWZ0ICsgZ3JpcFNob3J0SW5kZW50LCBtX3RvcCArIGxvbmdPZmZzZXQsIG1fcmlnaHQgLSBncmlw
U2hvcnRJbmRlbnQsIG1fdG9wICsgbG9uZ09mZnNldCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgbGlu
ZShtX2xlZnQgKyBncmlwU2hvcnRJbmRlbnQsIG1fYm90dG9tIC0gbG9uZ09mZnNldCwgbV9yaWdo
dCAtIGdyaXBTaG9ydEluZGVudCwgbV9ib3R0b20gLSBsb25nT2Zmc2V0LCBtX2ZnQ29sb3IpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIExlZnRBcnJvd1R5cGU6CisgICAgICAg
IC8vIERyYXcgYSBsZWZ0IGFycm93IGluc2lkZSBhIGJveC4KKyAgICAgICAgYm94KG1faXJlY3Qs
IG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1f
dG9wICsgcXVhcnRlckhlaWdodCwgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBx
dWFydGVySGVpZ2h0LCBtX2xlZnQgKyBxdWFydGVyV2lkdGgsIG1fdG9wICsgaGFsZkhlaWdodCwg
bV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJpZ2h0QXJyb3dUeXBlOgor
ICAgICAgICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNpZGUgYSBib3guCisgICAgICAgIGJveCht
X2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlhbmdsZShtX2xlZnQgKyBxdWFydGVyV2lk
dGgsIG1fdG9wICsgcXVhcnRlckhlaWdodCwgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3Ag
KyBoYWxmSGVpZ2h0LCBtX2xlZnQgKyBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhl
aWdodCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFVwQXJyb3dUeXBl
OgorICAgICAgICAvLyBEcmF3IGFuIHVwIGFycm93IGluc2lkZSBhIGJveC4KKyAgICAgICAgYm94
KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xlKG1fbGVmdCArIHF1YXJ0ZXJX
aWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2xlZnQgKyBoYWxmV2lkdGgsIG1fdG9w
ICsgcXVhcnRlckhlaWdodCwgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFy
dGVySGVpZ2h0LCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRG93bkFy
cm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhIGRvd24gYXJyb3cgaW5zaWRlIGEgYm94LgorICAg
ICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICsg
cXVhcnRlcldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQsIG1fcmlnaHQgLSBxdWFydGVyV2lk
dGgsIG1fdG9wICsgcXVhcnRlckhlaWdodCwgbV9sZWZ0ICsgaGFsZldpZHRoLCBtX2JvdHRvbSAt
IHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBI
b3Jpem9udGFsU2xpZGVyVHJhY2tUeXBlOiB7CisgICAgICAgIC8vIERyYXcgYSBuYXJyb3cgcmVj
dCBmb3IgdGhlIHRyYWNrIHBsdXMgYm94IGhhdGNoZXMgb24gdGhlIGVuZHMuCisgICAgICAgIFNr
SVJlY3QgbGlyZWN0OworICAgICAgICBsaXJlY3QgPSBtX2lyZWN0OworICAgICAgICBsaXJlY3Qu
aW5zZXQobm9PZmZzZXQsIGhhbGZIZWlnaHQgLSBzbGlkZXJJbmRlbnQpOworICAgICAgICBib3go
bGlyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCwgIG1fdG9wLCBtX2xlZnQs
ICBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOworICAgICAgICBsaW5lKG1fcmlnaHQsIG1fdG9wLCBt
X3JpZ2h0LCBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBjYXNlIFZlcnRpY2FsU2xpZGVyVHJhY2tUeXBlOiB7CisgICAgICAgIC8vIERyYXcgYSBu
YXJyb3cgcmVjdCBmb3IgdGhlIHRyYWNrIHBsdXMgYm94IGhhdGNoZXMgb24gdGhlIGVuZHMuCisg
ICAgICAgIFNrSVJlY3QgbGlyZWN0OworICAgICAgICBsaXJlY3QgPSBtX2lyZWN0OworICAgICAg
ICBsaXJlY3QuaW5zZXQoaGFsZldpZHRoIC0gc2xpZGVySW5kZW50LCBub09mZnNldCk7CisgICAg
ICAgIGJveChsaXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIGxpbmUobV9sZWZ0LCBtX3RvcCwg
bV9yaWdodCwgbV90b3AsIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgbGluZShtX2xlZnQsIG1fYm90
dG9tLCBtX3JpZ2h0LCBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBjYXNlIERyb3BEb3duQnV0dG9uVHlwZToKKyAgICAgICAgLy8gRHJhdyBhIGJv
eCB3aXRoIGEgYmlnIGRvd24gYXJyb3cgb24gdG9wLgorICAgICAgICBib3gobV9pcmVjdCwgbV9i
Z0NvbG9yKTsKKyAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICsgcXVhcnRlcldpZHRoLCBtX3RvcCwg
bV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AsIG1fbGVmdCArIGhhbGZXaWR0aCwgbV9ib3R0
b20sIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBtYXJrU3RhdGUoKTsKK30KKworLy8gQmVjYXVzZSByZW5kZXJpbmcgYSB0ZXh0IGZpZWxkIGlz
IGRlcGVuZGVudCBvbiBpbnB1dAorLy8gcGFyYW1ldGVycyB0aGUgb3RoZXIgY29udHJvbHMgZG9u
J3QgaGF2ZSwgd2UgcmVuZGVyIGl0IGRpcmVjdGx5CisvLyByYXRoZXIgdGhhbiB0cnlpbmcgdG8g
b3ZlcmNvbXBsaWNhdGUgZHJhdygpIGZ1cnRoZXIuCit2b2lkIFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OmRyYXdUZXh0RmllbGQoYm9vbCBkcmF3RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBT
a0NvbG9yIGNvbG9yKQoreworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAgICBpZiAoZmlsbENvbnRl
bnRBcmVhKSB7CisgICAgICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAgICAgICAgcGFpbnQu
c2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgICAgICBtX2NhbnZhcy0+ZHJhd0lS
ZWN0KG1faXJlY3QsIHBhaW50KTsKKyAgICB9CisgICAgaWYgKGRyYXdFZGdlcykgeworICAgICAg
ICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAgICAgIHBhaW50LnNldFN0eWxlKFNr
UGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgICAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KG1faXJl
Y3QsIHBhaW50KTsKKyAgICB9CisKKyAgICBtYXJrU3RhdGUoKTsKK30KKwordm9pZCBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3Qp
Cit7CisgICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldENvbG9yKG1fYmdDb2xvcik7
CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFz
LT5kcmF3SVJlY3QobV9pcmVjdCwgcGFpbnQpOworCisgICAgLy8gRW11bGF0ZSBjbGlwcGluZwor
ICAgIFNrSVJlY3QgdG9maWxsOworICAgIHRvZmlsbC5pbnRlcnNlY3QobV9pcmVjdCwgZmlsbFJl
Y3QpOworICAgIHBhaW50LnNldENvbG9yKG1fZmdDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUo
U2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3SVJlY3QodG9maWxsLCBw
YWludCk7CisKKyAgICBtYXJrU3RhdGUoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lQ29udHJvbFdp
bi5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVz
dFRoZW1lQ29udHJvbFdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiYWQxOGUyMGFhOGFiNjM3MTI3NjZmNDQ4
ZDc3MWZhMzI5NDExNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVDb250cm9sV2luLmgKQEAgLTAsMCAr
MSwyMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBXZWJUZXN0VGhlbWVDb250cm9sV2luIGltcGxlbWVudHMgdGhlIGdlbmVyaWMg
cmVuZGVyaW5nIG9mIGNvbnRyb2xzCisvLyBuZWVkZWQgYnkgV2ViVGhlbWVFbmdpbmVEUlRXaW4u
IFNlZSB0aGUgY29tbWVudHMgaW4gdGhhdCBjbGFzcworLy8gaGVhZGVyIGZpbGUgZm9yIHdoeSB0
aGlzIGNsYXNzIGlzIG5lZWRlZCBhbmQgdXNlZC4KKy8vCisvLyBUaGlzIGNsYXNzIGltcGxlbWVu
dHMgYSBnZW5lcmljIHNldCBvZiB3aWRnZXRzIHVzaW5nIFNraWEuIFRoZSB3aWRnZXRzCisvLyBh
cmUgb3B0aW1pemVkIGZvciB0ZXN0YWJpbGl0eSwgbm90IGEgcGxlYXNpbmcgYXBwZWFyYW5jZS4K
Ky8vCisKKyNpZm5kZWYgV2ViVGVzdFRoZW1lQ29udHJvbFdpbl9oCisjZGVmaW5lIFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW5faAorCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2Nv
cmUvU2tDb2xvci5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1Nr
UmVjdC5oIgorCisvLyBTa2lhIGZvcndhcmQgZGVjbGFyYXRpb25zCitjbGFzcyBTa0NhbnZhczsK
KworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBXZWJUZXN0VGhlbWVDb250cm9s
V2luIHsKK3B1YmxpYzoKKyAgICAvLyBUaGlzIGxpc3Qgb2Ygc3RhdGVzIG1vc3RseSBtaXJyb3Jz
IHRoZSBsaXN0IGluIFdlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCisgICAgLy8gYnV0IGlz
IG1haW50YWluZWQgc2VwYXJhdGVseSBzaW5jZSB0aGF0IGlzbid0IHB1YmxpYyBhbmQgYWxzbyB0
byBtaW5pbWl6ZQorICAgIC8vIGRlcGVuZGVuY2llcy4KKyAgICAvLyBOb3RlIHRoYXQgdGhlIFdl
YktpdCBUaGVtZVR5cGVzIHNlZW0gdG8gaW1wbHkgdGhhdCBhIGNvbnRyb2wgY2FuIGJlCisgICAg
Ly8gaW4gbXVsdGlwbGUgc3RhdGVzIHNpbXVsdGFuZW91c2x5IGJ1dCBXZWJUaGVtZUVuZ2luZSBv
bmx5IGFsbG93cyBmb3IKKyAgICAvLyBhIHNpbmdsZSBzdGF0ZSBhdCBhIHRpbWUuCisgICAgLy8K
KyAgICAvLyBTb21lIGRlZmluaXRpb25zIGZvciB0aGUgdmFyaW91cyBzdGF0ZXM6CisgICAgLy8g
ICBEaXNhYmxlZCAtIGluZGljYXRlcyB0aGF0IGEgY29udHJvbCBjYW4ndCBiZSBtb2RpZmllZCBv
ciBzZWxlY3RlZAorICAgIC8vICAgICAgICAgICAgICAoY29ycmVzcG9uZHMgdG8gSFRNTCAnZGlz
YWJsZWQnIGF0dHJpYnV0ZSkKKyAgICAvLyAgIFJlYWRPbmx5IC0gaW5kaWNhdGVzIHRoYXQgYSBj
b250cm9sIGNhbid0IGJlIG1vZGlmaWVkIGJ1dCBjYW4gYmUKKyAgICAvLyAgICAgICAgICAgICAg
c2VsZWN0ZWQKKyAgICAvLyAgIE5vcm1hbCAgIC0gdGhlIG5vcm1hbCBzdGF0ZSBvZiBjb250cm9s
IG9uIHRoZSBwYWdlIHdoZW4gaXQgaXNuJ3QKKyAgICAvLyAgICAgICAgICAgICAgZm9jdXNlZCBv
ciBvdGhlcndpc2UgYWN0aXZlCisgICAgLy8gICBIb3QgICAgICAtIHdoZW4gdGhlIG1vdXNlIGlz
IGhvdmVyaW5nIG92ZXIgYSBwYXJ0IG9mIHRoZSBjb250cm9sLAorICAgIC8vICAgICAgICAgICAg
ICBhbGwgdGhlIG90aGVyIHBhcnRzIGFyZSBjb25zaWRlcmVkICJob3QiCisgICAgLy8gICBIb3Zl
ciAgICAtIHdoZW4gdGhlIG1vdXNlIGlzIGRpcmVjdGx5IG92ZXIgYSBjb250cm9sICh0aGUgQ1NT
CisgICAgLy8gICAgICAgICAgICAgICA6aG92ZXIgcHNldWRvLWNsYXNzKQorICAgIC8vICAgRm9j
dXNlZCAgLSB3aGVuIHRoZSBjb250cm9sIGhhcyB0aGUga2V5Ym9hcmQgZm9jdXMKKyAgICAvLyAg
IFByZXNzZWQgIC0gd2hlbiB0aGUgY29udHJvbCBpcyBiZWluZyB0cmlnZ2VyZWQgKGJ5IGEgbW91
c2Vkb3duIG9yCisgICAgLy8gICAgICAgICAgICAgIGEga2V5IGV2ZW50KS4KKyAgICAvLyAgIElu
ZGV0ZXJtaW5hdGUgLSB3aGVuIHNldCB0byBpbmRldGVybWluYXRlIChvbmx5IGZvciBwcm9ncmVz
cyBiYXIpCisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIFVua25vd25TdGF0ZSA9IDAsCisgICAg
ICAgIERpc2FibGVkU3RhdGUsCisgICAgICAgIFJlYWRPbmx5U3RhdGUsCisgICAgICAgIE5vcm1h
bFN0YXRlLAorICAgICAgICBIb3RTdGF0ZSwKKyAgICAgICAgSG92ZXJTdGF0ZSwKKyAgICAgICAg
Rm9jdXNlZFN0YXRlLAorICAgICAgICBQcmVzc2VkU3RhdGUsCisgICAgICAgIEluZGV0ZXJtaW5h
dGVTdGF0ZQorICAgIH07CisKKyAgICAvLyBUaGlzIGxpc3Qgb2YgdHlwZXMgbW9zdGx5IG1pcnJv
cnMgdGhlIGxpc3QgaW4KKyAgICAvLyBXZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaCBidXQg
aXMgbWFpbnRhaW5lZAorICAgIC8vIHNlcGFyYXRlbHkgc2luY2UgdGhhdCBpc24ndCBwdWJsaWMg
YW5kIGFsc28gdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzLgorICAgIC8vCisgICAgLy8gTm90ZSB0
aGF0IHdoYXQgdGhlIHVzZXIgbWlnaHQgdGhpbmsgb2YgYXMgYSBzaW5nbGUgY29udHJvbCBjYW4g
YmUKKyAgICAvLyBtYWRlIHVwIG9mIG11bHRpcGxlIHBhcnRzLiBGb3IgZXhhbXBsZSwgYSBzaW5n
bGUgc2Nyb2xsIGJhciBjb250YWlucworICAgIC8vIHNpeCBjbGlja2FibGUgcGFydHMgLSB0d28g
YXJyb3dzLCB0aGUgInRodW1iIiBpbmRpY2F0aW5nIHRoZSBjdXJyZW50CisgICAgLy8gcG9zaXRp
b24gb24gdGhlIGJhciwgdGhlIG90aGVyIHR3byBwYXJ0cyBvZiB0aGUgYmFyIChiZWZvcmUgYW5k
IGFmdGVyCisgICAgLy8gdGhlIHRodW1iKSBhbmQgdGhlICJncmlwcGVyIiBvbiB0aGUgdGh1bWIg
aXRzZWxmLgorICAgIC8vCisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVW5rbm93blR5cGUgPSAw
LAorICAgICAgICBUZXh0RmllbGRUeXBlLAorICAgICAgICBQdXNoQnV0dG9uVHlwZSwKKyAgICAg
ICAgVW5jaGVja2VkQm94VHlwZSwKKyAgICAgICAgQ2hlY2tlZEJveFR5cGUsCisgICAgICAgIElu
ZGV0ZXJtaW5hdGVDaGVja2JveFR5cGUsCisgICAgICAgIFVuY2hlY2tlZFJhZGlvVHlwZSwKKyAg
ICAgICAgQ2hlY2tlZFJhZGlvVHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFj
a1R5cGUsCisgICAgICAgIEhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlLAorICAgICAg
ICBIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlLAorICAgICAgICBIb3Jpem9udGFsU2Nyb2xsR3Jp
cFR5cGUsCisgICAgICAgIFZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlwZSwKKyAgICAgICAgVmVy
dGljYWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlLAorICAgICAgICBWZXJ0aWNhbFNjcm9sbFRodW1i
VHlwZSwKKyAgICAgICAgVmVydGljYWxTY3JvbGxHcmlwVHlwZSwKKyAgICAgICAgTGVmdEFycm93
VHlwZSwKKyAgICAgICAgUmlnaHRBcnJvd1R5cGUsCisgICAgICAgIFVwQXJyb3dUeXBlLAorICAg
ICAgICBEb3duQXJyb3dUeXBlLAorICAgICAgICBIb3Jpem9udGFsU2xpZGVyVHJhY2tUeXBlLAor
ICAgICAgICBIb3Jpem9udGFsU2xpZGVyVGh1bWJUeXBlLAorICAgICAgICBWZXJ0aWNhbFNsaWRl
clRyYWNrVHlwZSwKKyAgICAgICAgVmVydGljYWxTbGlkZXJUaHVtYlR5cGUsCisgICAgICAgIERy
b3BEb3duQnV0dG9uVHlwZSwKKyAgICAgICAgUHJvZ3Jlc3NCYXJUeXBlCisgICAgfTsKKworICAg
IC8vIENvbnN0cnVjdHMgYSBjb250cm9sIG9mIHRoZSBnaXZlbiBzaXplLCB0eXBlIGFuZCBzdGF0
ZSB0byBkcmF3CisgICAgLy8gb24gdG8gdGhlIGdpdmVuIGNhbnZhcy4KKyAgICBXZWJUZXN0VGhl
bWVDb250cm9sV2luKFNrQ2FudmFzKiwgY29uc3QgU2tJUmVjdCYsIFR5cGUsIFN0YXRlKTsKKyAg
ICB+V2ViVGVzdFRoZW1lQ29udHJvbFdpbigpOworCisgICAgLy8gRHJhd3MgdGhlIGNvbnRyb2wu
CisgICAgdm9pZCBkcmF3KCk7CisKKyAgICAvLyBVc2UgdGhpcyBmb3IgVGV4dEZpZWxkIGNvbnRy
b2xzIGluc3RlYWQsIGJlY2F1c2UgdGhlIGxvZ2ljCisgICAgLy8gZm9yIGRyYXdpbmcgdGhlbSBp
cyBkZXBlbmRlbnQgb24gd2hhdCBXZWJLaXQgdGVsbHMgdXMgdG8gZG8uCisgICAgLy8gSWYgZHJh
d0VkZ2VzIGlzIHRydWUsIGRyYXcgYW4gZWRnZSBhcm91bmQgdGhlIGNvbnRyb2wuIElmCisgICAg
Ly8gZmlsbENvbnRlbnRBcmVhIGlzIHRydWUsIGZpbGwgdGhlIGNvbnRlbnQgYXJlYSB3aXRoIHRo
ZSBnaXZlbiBjb2xvci4KKyAgICB2b2lkIGRyYXdUZXh0RmllbGQoYm9vbCBkcmF3RWRnZXMsIGJv
b2wgZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yKTsKKworICAgIC8vIFVzZSB0aGlzIGZvciBkcmF3
aW5nIFByb2dyZXNzQmFyIGNvbnRyb2xzIGluc3RlYWQsIHNpbmNlIHdlCisgICAgLy8gbmVlZCB0
byBrbm93IHRoZSByZWN0IHRvIGZpbGwgaW5zaWRlIHRoZSBiYXIuCisgICAgdm9pZCBkcmF3UHJv
Z3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3QpOworCitwcml2YXRlOgorICAgIC8vIERy
YXdzIGEgYm94IG9mIHNpemUgc3BlY2lmaWVkIGJ5IGlyZWN0LCBmaWxsZWQgd2l0aCB0aGUgZ2l2
ZW4gY29sb3IuCisgICAgLy8gVGhlIGJveCB3aWxsIGhhdmUgYSBib3JkZXIgZHJhd24gaW4gdGhl
IGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGJveChjb25zdCBTa0lSZWN0JiBpcmVjdCwg
U2tDb2xvcik7CisKKworICAgIC8vIERyYXdzIGEgdHJpYW5nbGUgb2Ygc2l6ZSBzcGVjaWZpZWQg
YnkgdGhlIHRocmVlIHBhaXJzIG9mIGNvb3JkaW5hdGVzLAorICAgIC8vIGZpbGxlZCB3aXRoIHRo
ZSBnaXZlbiBjb2xvci4gVGhlIGJveCB3aWxsIGhhdmUgYW4gZWRnZSBkcmF3biBpbiB0aGUKKyAg
ICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCB0cmlhbmdsZShpbnQgeDAsIGludCB5
MCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBTa0NvbG9yKTsKKworICAgIC8vIERy
YXdzIGEgcmVjdGFuZ2xlIHRoZSBzaXplIG9mIHRoZSBjb250cm9sIHdpdGggcm91bmRlZCBjb3Ju
ZXJzLCBmaWxsZWQKKyAgICAvLyB3aXRoIHRoZSBzcGVjaWZpZWQgY29sb3IgKGFuZCB3aXRoIGEg
Ym9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IpLgorICAgIHZvaWQgcm91bmRSZWN0KFNr
Q29sb3IpOworCisgICAgLy8gRHJhd3MgYW4gb3ZhbCB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwg
ZmlsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvcgorICAgIC8vIGFuZCB3aXRoIGEgYm9yZGVy
IGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCBvdmFsKFNrQ29sb3IpOworCisg
ICAgLy8gRHJhd3MgYSBjaXJjbGUgY2VudGVyZWQgaW4gdGhlIGNvbnRyb2wgd2l0aCB0aGUgc3Bl
Y2lmaWVkIHJhZGl1cywKKyAgICAvLyBmaWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yLCBh
bmQgd2l0aCBhIGJvcmRlciBkcmF3IGluIHRoZQorICAgIC8vIGRlZmF1bHQgZWRnZSBjb2xvci4K
KyAgICB2b2lkIGNpcmNsZShTa1NjYWxhciByYWRpdXMsIFNrQ29sb3IpOworCisgICAgLy8gRHJh
d3MgYSBib3ggdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wsIGZpbGxlZCB3aXRoIHRoZSBvdXRlckNv
bG9yIGFuZAorICAgIC8vIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvciwg
YW5kIHRoZW4gZHJhd3MgYW5vdGhlciBib3gKKyAgICAvLyBpbmRlbnRlZCBvbiBhbGwgZm91ciBz
aWRlcyBieSB0aGUgc3BlY2lmaWVkIGFtb3VudHMsIGZpbGxlZCB3aXRoIHRoZQorICAgIC8vIGlu
bmVyIGNvbG9yIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisg
ICAgdm9pZCBuZXN0ZWRCb3hlcyhpbnQgaW5kZW50TGVmdCwgaW50IGluZGVudFRvcCwgaW50IGlu
ZGVudFJpZ2h0LCBpbnQgaW5kZW50Qm90dG9tLCBTa0NvbG9yIG91dGVyQ29sb3IsIFNrQ29sb3Ig
aW5uZXJDb2xvcik7CisKKyAgICAvLyBEcmF3cyBhIGxpbmUgYmV0d2VlbiB0aGUgdHdvIHBvaW50
cyBpbiB0aGUgZ2l2ZW4gY29sb3IuCisgICAgdm9pZCBsaW5lKGludCB4MCwgaW50IHkwLCBpbnQg
eDEsIGludCB5MSwgU2tDb2xvcik7CisKKyAgICAvLyBEcmF3cyBhIGRpc3RpbmN0aXZlIG1hcmsg
b24gdGhlIGNvbnRyb2wgZm9yIGVhY2ggc3RhdGUsIHNvIHRoYXQgdGhlCisgICAgLy8gc3RhdGUg
b2YgdGhlIGNvbnRyb2wgY2FuIGJlIGRldGVybWluZWQgd2l0aG91dCBuZWVkaW5nIHRvIGtub3cg
d2hpY2gKKyAgICAvLyBjb2xvciBpcyB3aGljaC4KKyAgICB2b2lkIG1hcmtTdGF0ZSgpOworCisg
ICAgU2tDYW52YXMqIG1fY2FudmFzOworICAgIGNvbnN0IFNrSVJlY3QgbV9pcmVjdDsKKyAgICBj
b25zdCBUeXBlIG1fdHlwZTsKKyAgICBjb25zdCBTdGF0ZSBtX3N0YXRlOworICAgIGNvbnN0IFNr
Q29sb3IgbV9lZGdlQ29sb3I7CisgICAgY29uc3QgU2tDb2xvciBtX2JnQ29sb3I7CisgICAgY29u
c3QgU2tDb2xvciBtX2ZnQ29sb3I7CisKKyAgICAvLyBUaGUgZm9sbG93aW5nIGFyZSBjb252ZW5p
ZW5jZSBhY2Nlc3NvcnMgZm9yIG1faXJlY3QuCisgICAgY29uc3QgaW50IG1fbGVmdDsKKyAgICBj
b25zdCBpbnQgbV9yaWdodDsKKyAgICBjb25zdCBpbnQgbV90b3A7CisgICAgY29uc3QgaW50IG1f
Ym90dG9tOworICAgIGNvbnN0IGludCBtX3dpZHRoOworICAgIGNvbnN0IGludCBtX2hlaWdodDsK
K307CisKK30KKworI2VuZGlmIC8vIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW5faApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRo
ZW1lRW5naW5lTWFjLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGI1MjMyZjc3ZGM2ZTk2
MzRhMDRhZDNhMTcyZjk2ODI3MjNmYTUzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLmgK
QEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIFdlYlRoZW1lRW5naW5lIEFQSSBpbiBzdWNo
IGEgd2F5IHRoYXQgd2UgbWF0Y2ggdGhlIE1hYworLy8gcG9ydCByZW5kZXJpbmcgbW9yZSB0aGFu
IHVzdWFsIENocm9taXVtIHBhdGgsIHRodXMgYWxsb3dpbmcgdXMgdG8gc2hhcmUKKy8vIG1vcmUg
cGl4ZWwgYmFzZWxpbmVzLgorCisjaWZuZGVmIFdlYlRlc3RUaGVtZUVuZ2luZU1hY19oCisjZGVm
aW5lIFdlYlRlc3RUaGVtZUVuZ2luZU1hY19oCisKKyNpbmNsdWRlIDxwdWJsaWMvbWFjL1dlYlRo
ZW1lRW5naW5lLmg+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworY2xhc3MgV2ViVGVz
dFRoZW1lRW5naW5lTWFjIDogcHVibGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUgeworcHVibGlj
OgorICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRodW1iKAorICAgICAgICBXZWJLaXQ6
OldlYkNhbnZhcyosCisgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAorICAg
ICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAorICAgICAgICBjb25zdCBXZWJLaXQ6
OldlYlJlY3QmLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxi
YXJJbmZvJik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBhaW50SElUaGVtZVNjcm9s
bGJhclRodW1iKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCisgICAgICAgIFdlYktpdDo6
V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAorICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpT
aXplLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAorICAgICAgICBjb25zdCBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50TlNTY3JvbGxlclNjcm9sbGJhclRodW1iKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyos
CisgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAorICAgICAgICBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTaXplLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAor
ICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7Cit9
OworCit9CisKKyNlbmRpZiAvLyBXZWJUZXN0VGhlbWVFbmdpbmVNYWNfaApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1l
RW5naW5lTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOWZkNTM4YmIyY2MwNWNk
YjM3ZThmMDFkMDAxMzg1N2U2ZDdjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMubW0K
QEAgLTAsMCArMSwxOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViVGVzdFRoZW1lRW5naW5lTWFjLmgiCisKKyNp
bmNsdWRlIDxwdWJsaWMvV2ViQ2FudmFzLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4K
KyNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX21hYy5oIgorI2ltcG9ydCA8QXBwS2l0L05T
QWZmaW5lVHJhbnNmb3JtLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNHcmFwaGljc0NvbnRleHQuaD4K
KyNpbXBvcnQgPEFwcEtpdC9OU1Njcm9sbGVyLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNXaW5kb3cu
aD4KKyNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+CisKK3VzaW5nIFdlYktpdDo6V2ViQ2FudmFz
OwordXNpbmcgV2ViS2l0OjpXZWJSZWN0OwordXNpbmcgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTsK
KworLy8gV2UgY2FuJ3QgZGlyZWN0bHkgdGVsbCB0aGUgTlNTY3JvbGxlciB0byBkcmF3IGl0c2Vs
ZiBhcyBhY3RpdmUgb3IgaW5hY3RpdmUsCisvLyBpbnN0ZWFkIHdlIGhhdmUgdG8gbWFrZSBpdCBh
IGNoaWxkIG9mIGFuIChpbilhY3RpdmUgd2luZG93LiBUaGlzIGNsYXNzIGxldHMKKy8vIHVzIGZh
a2UgdGhhdCBwYXJlbnQgd2luZG93LgorQGludGVyZmFjZSBGYWtlQWN0aXZlV2luZG93IDogTlNX
aW5kb3cgeworQHByaXZhdGUKKyAgICBCT09MIGhhc0FjdGl2ZUNvbnRyb2xzOworfQorKyAoTlNX
aW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRvdzsKKysgKE5TV2luZG93KilhbHdheXNJbmFjdGl2ZVdp
bmRvdzsKKy0gKGlkKWluaXRXaXRoQWN0aXZlQ29udHJvbHM6KEJPT0wpX2hhc0FjdGl2ZUNvbnRy
b2xzOworLSAoQk9PTClfaGFzQWN0aXZlQ29udHJvbHM7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBGYWtlQWN0aXZlV2luZG93CisKK3N0YXRpYyBOU1dpbmRvdyogYWx3YXlzQWN0aXZlV2luZG93
ID0gbmlsOworc3RhdGljIE5TV2luZG93KiBhbHdheXNJbmFjdGl2ZVdpbmRvdyA9IG5pbDsKKwor
KyAoTlNXaW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRvdworeworICAgIGlmIChhbHdheXNBY3RpdmVX
aW5kb3cgPT0gbmlsKQorICAgICAgICBhbHdheXNBY3RpdmVXaW5kb3cgPSBbW3NlbGYgYWxsb2Nd
IGluaXRXaXRoQWN0aXZlQ29udHJvbHM6WUVTXTsKKyAgICByZXR1cm4gYWx3YXlzQWN0aXZlV2lu
ZG93OworfQorCisrIChOU1dpbmRvdyopYWx3YXlzSW5hY3RpdmVXaW5kb3cKK3sKKyAgICBpZiAo
YWx3YXlzSW5hY3RpdmVXaW5kb3cgPT0gbmlsKQorICAgICAgICBhbHdheXNJbmFjdGl2ZVdpbmRv
dyA9IFtbc2VsZiBhbGxvY10gaW5pdFdpdGhBY3RpdmVDb250cm9sczpOT107CisgICAgcmV0dXJu
IGFsd2F5c0luYWN0aXZlV2luZG93OworfQorCistIChpZClpbml0V2l0aEFjdGl2ZUNvbnRyb2xz
OihCT09MKV9oYXNBY3RpdmVDb250cm9scworeworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Cisg
ICAgaGFzQWN0aXZlQ29udHJvbHMgPSBfaGFzQWN0aXZlQ29udHJvbHM7CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy0gKEJPT0wpX2hhc0FjdGl2ZUNvbnRyb2xzCit7CisgICAgcmV0dXJuIGhhc0Fj
dGl2ZUNvbnRyb2xzOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKwor
bmFtZXNwYWNlIHsKKworVGhlbWVUcmFja0VuYWJsZVN0YXRlIHN0YXRlVG9ISUVuYWJsZVN0YXRl
KFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7Cisg
ICAgY2FzZSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDoKKyAgICAgICAgcmV0dXJuIGtU
aGVtZVRyYWNrRGlzYWJsZWQ7CisgICAgY2FzZSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVJbmFjdGl2
ZToKKyAgICAgICAgcmV0dXJuIGtUaGVtZVRyYWNrSW5hY3RpdmU7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGtUaGVtZVRyYWNrQWN0aXZlOworICAgIH0KK30KKworfQorCit2b2lkIFdl
YlRlc3RUaGVtZUVuZ2luZU1hYzo6cGFpbnRTY3JvbGxiYXJUaHVtYigKKyAgICBXZWJDYW52YXMq
IGNhbnZhcywKKyAgICBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUsCisgICAgV2ViVGhlbWVF
bmdpbmU6OlNpemUgc2l6ZSwKKyAgICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgIGNvbnN0IFdl
YlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBzY3JvbGxiYXJJbmZvKQoreworICAgIC8vIFRv
IG1hdGNoIHRoZSBNYWMgcG9ydCwgd2Ugc3RpbGwgdXNlIEhJVGhlbWUgZm9yIGlubmVyIHNjcm9s
bGJhcnMuCisgICAgaWYgKHNjcm9sbGJhckluZm8ucGFyZW50ID09IFdlYlRoZW1lRW5naW5lOjpT
Y3JvbGxiYXJQYXJlbnRSZW5kZXJMYXllcikKKyAgICAgICAgcGFpbnRISVRoZW1lU2Nyb2xsYmFy
VGh1bWIoY2FudmFzLCBzdGF0ZSwgc2l6ZSwgcmVjdCwgc2Nyb2xsYmFySW5mbyk7CisgICAgZWxz
ZQorICAgICAgICBwYWludE5TU2Nyb2xsZXJTY3JvbGxiYXJUaHVtYihjYW52YXMsIHN0YXRlLCBz
aXplLCByZWN0LCBzY3JvbGxiYXJJbmZvKTsKK30KKworLy8gRHVwbGljYXRlZCBmcm9tIHdlYmtp
dC9nbHVlL3dlYnRoZW1lZW5naW5lX2ltcGxfbWFjLmNjIGluIHRoZSBkb3duc3RyZWFtCisvLyBD
aHJvbWl1bSBXZWJUaGVtZUVuZ2luZSBpbXBsZW1lbnRhdGlvbi4KK3ZvaWQgV2ViVGVzdFRoZW1l
RW5naW5lTWFjOjpwYWludEhJVGhlbWVTY3JvbGxiYXJUaHVtYigKKyAgICBXZWJDYW52YXMqIGNh
bnZhcywKKyAgICBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUsCisgICAgV2ViVGhlbWVFbmdp
bmU6OlNpemUgc2l6ZSwKKyAgICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgIGNvbnN0IFdlYlRo
ZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBzY3JvbGxiYXJJbmZvKQoreworICAgIEhJVGhlbWVU
cmFja0RyYXdJbmZvIHRyYWNrSW5mbzsKKyAgICB0cmFja0luZm8udmVyc2lvbiA9IDA7CisgICAg
dHJhY2tJbmZvLmtpbmQgPSBzaXplID09IFdlYlRoZW1lRW5naW5lOjpTaXplUmVndWxhciA/IGtU
aGVtZU1lZGl1bVNjcm9sbEJhciA6IGtUaGVtZVNtYWxsU2Nyb2xsQmFyOworICAgIHRyYWNrSW5m
by5ib3VuZHMgPSBDR1JlY3RNYWtlKHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0Lmhl
aWdodCk7CisgICAgdHJhY2tJbmZvLm1pbiA9IDA7CisgICAgdHJhY2tJbmZvLm1heCA9IHNjcm9s
bGJhckluZm8ubWF4VmFsdWU7CisgICAgdHJhY2tJbmZvLnZhbHVlID0gc2Nyb2xsYmFySW5mby5j
dXJyZW50VmFsdWU7CisgICAgdHJhY2tJbmZvLnRyYWNrSW5mby5zY3JvbGxiYXIudmlld3NpemUg
PSBzY3JvbGxiYXJJbmZvLnZpc2libGVTaXplOworICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzID0g
MDsKKyAgICBpZiAoc2Nyb2xsYmFySW5mby5vcmllbnRhdGlvbiA9PSBXZWJUaGVtZUVuZ2luZTo6
U2Nyb2xsYmFyT3JpZW50YXRpb25Ib3Jpem9udGFsKQorICAgICAgICB0cmFja0luZm8uYXR0cmli
dXRlcyB8PSBrVGhlbWVUcmFja0hvcml6b250YWw7CisKKyAgICB0cmFja0luZm8uZW5hYmxlU3Rh
dGUgPSBzdGF0ZVRvSElFbmFibGVTdGF0ZShzdGF0ZSk7CisKKyAgICB0cmFja0luZm8udHJhY2tJ
bmZvLnNjcm9sbGJhci5wcmVzc1N0YXRlID0KKyAgICAgICAgc3RhdGUgPT0gV2ViVGhlbWVFbmdp
bmU6OlN0YXRlUHJlc3NlZCA/IGtUaGVtZVRodW1iUHJlc3NlZCA6IDA7CisgICAgdHJhY2tJbmZv
LmF0dHJpYnV0ZXMgfD0gKGtUaGVtZVRyYWNrU2hvd1RodW1iIHwga1RoZW1lVHJhY2tIaWRlVHJh
Y2spOworICAgIGdmeDo6U2tpYUJpdExvY2tlciBiaXRMb2NrZXIoY2FudmFzKTsKKyAgICBDR0Nv
bnRleHRSZWYgY2dDb250ZXh0ID0gYml0TG9ja2VyLmNnQ29udGV4dCgpOworICAgIEhJVGhlbWVE
cmF3VHJhY2soJnRyYWNrSW5mbywgMCwgY2dDb250ZXh0LCBrSElUaGVtZU9yaWVudGF0aW9uTm9y
bWFsKTsKK30KKwordm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVNYWM6OnBhaW50TlNTY3JvbGxlclNj
cm9sbGJhclRodW1iKAorICAgIFdlYkNhbnZhcyogY2FudmFzLAorICAgIFdlYlRoZW1lRW5naW5l
OjpTdGF0ZSBzdGF0ZSwKKyAgICBXZWJUaGVtZUVuZ2luZTo6U2l6ZSBzaXplLAorICAgIGNvbnN0
IFdlYlJlY3QmIHJlY3QsCisgICAgY29uc3QgV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhckluZm8m
IHNjcm9sbGJhckluZm8pCit7CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0
YXRlXTsKKyAgICBOU1Njcm9sbGVyKiBzY3JvbGxlciA9IFtbTlNTY3JvbGxlciBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0Lmhl
aWdodCldOworICAgIFtzY3JvbGxlciBzZXRFbmFibGVkOnN0YXRlICE9IFdlYlRoZW1lRW5naW5l
OjpTdGF0ZURpc2FibGVkXTsKKyAgICBpZiAoc3RhdGUgPT0gV2ViVGhlbWVFbmdpbmU6OlN0YXRl
SW5hY3RpdmUpCisgICAgICAgIFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzSW5hY3RpdmVXaW5k
b3ddIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnNjcm9sbGVyXTsKKyAgICBlbHNlCisgICAgICAg
IFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzQWN0aXZlV2luZG93XSBjb250ZW50Vmlld10gYWRk
U3VidmlldzpzY3JvbGxlcl07CisKKyAgICBbc2Nyb2xsZXIgc2V0Q29udHJvbFNpemU6c2l6ZSA9
PSBXZWJUaGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBOU1JlZ3VsYXJDb250cm9sU2l6ZSA6IE5T
U21hbGxDb250cm9sU2l6ZV07CisKKyAgICBkb3VibGUgdmFsdWUgPSBkb3VibGUoc2Nyb2xsYmFy
SW5mby5jdXJyZW50VmFsdWUpIC8gZG91YmxlKHNjcm9sbGJhckluZm8ubWF4VmFsdWUpOworICAg
IFtzY3JvbGxlciBzZXREb3VibGVWYWx1ZTogdmFsdWVdOworCisgICAgZmxvYXQga25vYlByb3Bv
cnRpb24gPSBmbG9hdChzY3JvbGxiYXJJbmZvLnZpc2libGVTaXplKSAvIGZsb2F0KHNjcm9sbGJh
ckluZm8udG90YWxTaXplKTsKKyAgICBbc2Nyb2xsZXIgc2V0S25vYlByb3BvcnRpb246IGtub2JQ
cm9wb3J0aW9uXTsKKworICAgIGdmeDo6U2tpYUJpdExvY2tlciBiaXRMb2NrZXIoY2FudmFzKTsK
KyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gYml0TG9ja2VyLmNnQ29udGV4dCgpOworICAg
IE5TR3JhcGhpY3NDb250ZXh0KiBuc0dyYXBoaWNzQ29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4
dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNnQ29udGV4dCBmbGlwcGVkOllFU107
CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om5zR3JhcGhpY3NDb250
ZXh0XTsKKworICAgIC8vIERlc3BpdGUgcGFzc2luZyBpbiBmcmFtZVJlY3QoKSB0byB0aGUgc2Ny
b2xsZXIsIGl0IGFsd2F5cyBkcmF3cyBhdCAoMCwgMCkuCisgICAgLy8gRm9yY2UgaXQgdG8gZHJh
dyBpbiB0aGUgcmlnaHQgbG9jYXRpb24gYnkgdHJhbnNsYXRpbmcgdGhlIHdob2xlIGdyYXBoaWNz
CisgICAgLy8gY29udGV4dC4KKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Cisg
ICAgTlNBZmZpbmVUcmFuc2Zvcm0gKnRyYW5zZm9ybSA9IFtOU0FmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm1dOworICAgIFt0cmFuc2Zvcm0gdHJhbnNsYXRlWEJ5OnJlY3QueCB5Qnk6cmVjdC55XTsK
KyAgICBbdHJhbnNmb3JtIGNvbmNhdF07CisKKyAgICBbc2Nyb2xsZXIgZHJhd0tub2JdOworICAg
IENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIFtzY3JvbGxlciByZWxl
YXNlXTsKKworICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07Cit9
CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZVdpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVXaW4uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUwMzM5ZjU1ZGQ2NjFkYTJjNTA5ZjA1ODRkNmY0NDZlODNkZmRlOTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJU
ZXN0VGhlbWVFbmdpbmVXaW4uY3BwCkBAIC0wLDAgKzEsNzQzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYlRlc3RUaGVtZUVuZ2luZVdpbi5oIgorCisjaW5jbHVkZSAiVGVzdENv
bW1vbi5oIgorI2luY2x1ZGUgIldlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaCIKKyNpbmNsdWRlICJ0
aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKyNpbmNsdWRlIDxwdWJsaWMv
V2ViUmVjdC5oPgorCisvLyBBbHRob3VnaCBhbGwgdGhpcyBjb2RlIGlzIGdlbmVyaWMsIHdlIGlu
Y2x1ZGUgdGhlc2UgaGVhZGVycworLy8gdG8gcHVsbCBpbiB0aGUgV2luZG93cyAjZGVmaW5lcyBm
b3IgdGhlIHBhcnRzIGFuZCBzdGF0ZXMgb2YKKy8vIHRoZSBjb250cm9scy4KKyNpbmNsdWRlIDx2
c3N0eWxlLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK25hbWVzcGFjZSB7CisKKy8vIFdlIGRl
ZmluZSB0aGlzIGZvciBjbGFyaXR5LCBhbHRob3VnaCB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIGEg
REZDU19OT1JNQUwgaW4gd2ludXNlci5oLgorY29uc3QgaW50IGRmY3NOb3JtYWwgPSAweDAwMDA7
CisKK1NrSVJlY3Qgd2ViUmVjdFRvU2tJUmVjdChjb25zdCBXZWJSZWN0JiB3ZWJSZWN0KQorewor
ICAgIFNrSVJlY3QgaXJlY3Q7CisgICAgaXJlY3Quc2V0KHdlYlJlY3QueCwgd2ViUmVjdC55LCB3
ZWJSZWN0LnggKyB3ZWJSZWN0LndpZHRoIC0gMSwgd2ViUmVjdC55ICsgd2ViUmVjdC5oZWlnaHQg
LSAxKTsKKyAgICByZXR1cm4gaXJlY3Q7Cit9CisKK3ZvaWQgZHJhd0NvbnRyb2woV2ViQ2FudmFz
KiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QsIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5
cGUgY3R5cGUsIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSkKK3sKKyAgICBX
ZWJUZXN0VGhlbWVDb250cm9sV2luIGNvbnRyb2woY2FudmFzLCB3ZWJSZWN0VG9Ta0lSZWN0KHJl
Y3QpLCBjdHlwZSwgY3N0YXRlKTsKKyAgICBjb250cm9sLmRyYXcoKTsKK30KKwordm9pZCBkcmF3
VGV4dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0LCBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpUeXBlIGN0eXBlLCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0
ZSBjc3RhdGUsIGJvb2wgZHJhd0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJlYSwgV2ViQ29sb3Ig
Y29sb3IpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbiBjb250cm9sKGNhbnZhcywgd2Vi
UmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29udHJvbC5kcmF3VGV4
dEZpZWxkKGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBjb2xvcik7Cit9CisKK3ZvaWQgZHJh
d1Byb2dyZXNzQmFyKFdlYkNhbnZhcyogY2FudmFzLCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpU
eXBlIGN0eXBlLCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUsIGNvbnN0IFdl
YlJlY3QmIGJhclJlY3QsIGNvbnN0IFdlYlJlY3QmIGZpbGxSZWN0KQoreworICAgIFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW4gY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJlY3QoYmFyUmVjdCks
IGN0eXBlLCBjc3RhdGUpOworICAgIGNvbnRyb2wuZHJhd1Byb2dyZXNzQmFyKHdlYlJlY3RUb1Nr
SVJlY3QoZmlsbFJlY3QpKTsKK30KKworfQorCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6
cGFpbnRCdXR0b24oV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25UeXBl
OworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OlVua25vd25TdGF0ZTsKKworICAgIGlmIChwYXJ0ID09IEJQX0NIRUNLQk9Y
KSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VE
Tk9STUFMOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05v
cm1hbCk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVuY2hl
Y2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX1VO
Q0hFQ0tFREhPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX0JVVFRPTkNIRUNLIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19QVVNIRUQpKTsK
KyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkQm94
VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNz
ZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tF
RERJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OlVuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRE5PUk1BTDoKKyAgICAgICAgICAgIFdF
QktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVD
S0VEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNr
ZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19DSEVD
S0VESE9UOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1Nf
QlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRFBSRVNTRUQ6CisgICAgICAgICAgICBX
RUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hF
Q0tFRCB8IERGQ1NfUFVTSEVEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OkNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBDQlNfQ0hFQ0tFRERJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChj
bGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBERkNTX0lO
QUNUSVZFKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkNo
ZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JT
X01JWEVETk9STUFMOgorICAgICAgICAgICAgLy8gQ2xhc3NpYyB0aGVtZSBjYW4ndCByZXByZXNl
bnQgbWl4ZWQgc3RhdGUgY2hlY2tib3guIFdlIGFzc3VtZQorICAgICAgICAgICAgLy8gaXQncyBl
cXVpdmFsZW50IHRvIHVuY2hlY2tlZC4KKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfQlVUVE9OQ0hFQ0spOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOworICAgICAgICAgICAg
Y3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIENCU19NSVhFREhPVDoKKyAgICAgICAgICAgIFdFQktJ
VF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19IT1QpKTsK
KyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SW5kZXRlcm1pbmF0
ZUNoZWNrYm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfTUlY
RURQUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfQlVUVE9OQ0hFQ0sgfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfTUlYRURESVNBQkxFRDoKKyAgICAgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZD
U19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoQlBfUkFESU9C
VVRUT04gPT0gcGFydCkgeworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2Ug
UkJTX1VOQ0hFQ0tFRE5PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0
YXRlID09IERGQ1NfQlVUVE9OUkFESU8pOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFREhPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19IT1QpKTsKKyAgICAg
ICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkUmFkaW9UeXBl
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19VTkNIRUNLRURQUkVTU0VE
OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9O
UkFESU8gfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIFJCU19VTkNIRUNLRURESVNBQkxFRDoKKyAgICAgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19JTkFDVElWRSkp
OworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmNoZWNrZWRS
YWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpE
aXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfQ0hF
Q0tFRE5PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgUkJTX0NIRUNLRURIT1Q6CisgICAgICAgICAgICBXRUJLSVRf
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCB8
IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OkNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJT
X0NIRUNLRURQUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX1BVU0hFRCkpOworICAg
ICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkUmFkaW9UeXBl
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0
YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfQ0hFQ0tFRERJU0FC
TEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVU
VE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBj
dHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdFQktJVF9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChCUF9QVVNIQlVUVE9OID09IHBhcnQpIHsKKyAgICAgICAgc3dpdGNoIChzdGF0
ZSkgeworICAgICAgICBjYXNlIFBCU19OT1JNQUw6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlBVU0gpOworICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBQQlNfSE9UOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChj
bGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8IERGQ1NfSE9UKSk7CisgICAgICAgICAg
ICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlB1c2hCdXR0b25UeXBlOworICAgICAg
ICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIFBCU19QUkVTU0VEOgorICAgICAgICAgICAgV0VC
S0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8IERGQ1NfUFVTSEVE
KSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlB1c2hCdXR0
b25UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJl
c3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQQlNfRElTQUJM
RUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRU
T05QVVNIIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIFBCU19ERUZBVUxURUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlBVU0gpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkZvY3VzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAg
ICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMs
IHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6
cGFpbnRNZW51TGlzdChXZWJDYW52YXMqIGNhbnZhcywgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50
IGNsYXNzaWNTdGF0ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blR5
cGU7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6VW5rbm93blN0YXRlOworCisgICAgaWYgKENQX0RST1BET1dOQlVUVE9O
ID09IHBhcnQpIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEcm9w
RG93bkJ1dHRvblR5cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBD
QlhTX05PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERG
Q1NfTUVOVUFSUk9XKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlhT
X0hPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX01F
TlVBUlJPVyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpIb3ZlclN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBDQlhTX1BSRVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19NRU5VQVJST1cgfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBDQlhTX0RJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19JTkFDVElWRSkpOworICAg
ICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJL
SVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0gZWxzZQorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBk
cmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRl
c3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRTY3JvbGxiYXJBcnJvdyhXZWJDYW52YXMqIGNhbnZhcywg
aW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAg
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3Rh
dGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisKKyAgICBzd2l0Y2gg
KHN0YXRlKSB7CisgICAgY2FzZSBBQlNfVVBOT1JNQUw6CisgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMVVApOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OlVwQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFC
U19ET1dOTk9STUFMOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X1NDUk9MTERPV04pOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRv
d25BcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5v
cm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlROT1JNQUw6Cisg
ICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7Cisg
ICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6TGVmdEFycm93VHlwZTsKKyAg
ICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfUklHSFROT1JNQUw6CisgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMUklHSFQpOworICAgICAgICBjdHlwZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlJpZ2h0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEFCU19VUEhPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hPVCkpOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OlVwQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19E
T1dOSE9UOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JP
TExET1dOIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19MRUZUSE9UOgor
ICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExMRUZUIHwg
REZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpMZWZ0
QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RT
dGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVEhPVDoKKyAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMUklHSFQgfCBERkNTX0hP
VCkpOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlJpZ2h0QXJyb3dU
eXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19VUEhPVkVSOgorICAgICAgICBXRUJLSVRf
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKKyAgICAgICAgY3R5cGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpVcEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIEFCU19ET1dOSE9WRVI6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09
IERGQ1NfU0NST0xMRE9XTik7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6RG93bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6SG92ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19MRUZUSE9WRVI6
CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7
CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6TGVmdEFycm93VHlwZTsK
KyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVEhPVkVSOgorICAgICAgICBXRUJLSVRf
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFJJR0hUKTsKKyAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRl
ID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEFCU19VUFBSRVNTRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKKyAgICAg
ICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVcEFycm93VHlwZTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgQUJTX0RPV05QUkVTU0VEOgorICAgICAgICBXRUJLSVRfQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19QVVNIRUQgfCBERkNTX0ZM
QVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEb3duQXJyb3dU
eXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3Rh
dGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVFBSRVNTRUQ6CisgICAgICAg
IFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTExFRlQgfCBERkNTX1BV
U0hFRCB8IERGQ1NfRkxBVCkpOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVFBS
RVNTRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9M
TFJJR0hUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgQUJTX1VQRElTQUJMRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX1NDUk9MTFVQIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICBjdHlwZSA9IFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OlVwQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgQUJTX0RPV05ESVNBQkxFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgQUJTX0xFRlRESVNBQkxFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAg
Y3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpMZWZ0QXJyb3dUeXBlOworICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgQUJTX1JJR0hURElTQUJMRUQ6CisgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19JTkFDVElWRSkpOwor
ICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlJpZ2h0QXJyb3dUeXBlOwor
ICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOwor
ICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJhd0NvbnRyb2woY2Fu
dmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVX
aW46OnBhaW50U2Nyb2xsYmFyVGh1bWIoV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQg
c3RhdGUsIGludCBjbGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlVua25vd25UeXBlOworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25TdGF0ZTsKKworICAgIHN3aXRjaCAocGFy
dCkgeworICAgIGNhc2UgU0JQX1RIVU1CQlROSE9SWjoKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgU0JQX1RIVU1CQlROVkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpWZXJ0aWNhbFNjcm9sbFRodW1iVHlwZTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIFNCUF9HUklQUEVSSE9SWjoKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpIb3Jpem9udGFsU2Nyb2xsR3JpcFR5cGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBTQlBfR1JJUFBFUlZFUlQ6CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6VmVydGljYWxTY3JvbGxHcmlwVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIFNDUkJTX05P
Uk1BTDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7
CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfSE9UOgorICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NS
QlNfSE9WRVI6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3Jt
YWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3ZlclN0YXRl
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfUFJFU1NFRDoKKyAgICAgICAgV0VC
S0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFNDUkJTX0RJU0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAgICAg
YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVj
dCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWlu
dFNjcm9sbGJhclRyYWNrKFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBp
bnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0LCBjb25zdCBXZWJSZWN0JiBhbGln
blJlY3QpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25UeXBlOworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25TdGF0ZTsK
KworICAgIHN3aXRjaCAocGFydCkgeworICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tIT1JaOgorICAg
ICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Okhvcml6b250YWxTY3JvbGxUcmFj
a0JhY2tUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX0xPV0VSVFJBQ0tIT1Ja
OgorICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Okhvcml6b250YWxTY3Jv
bGxUcmFja0ZvcndhcmRUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX1VQUEVS
VFJBQ0tWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlZlcnRp
Y2FsU2Nyb2xsVHJhY2tCYWNrVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9M
T1dFUlRSQUNLVkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpW
ZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVm
YXVsdDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBTQ1JCU19OT1JNQUw6
CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAg
ICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0hPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19IT1ZFUjoKKyAgICAgICAgV0VCS0lUX0FT
U0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBTQ1JCU19QUkVTU0VEOgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8v
IFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFNDUkJTX0RJU0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisK
K3ZvaWQgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWludFNwaW5CdXR0b24oV2ViQ2FudmFzKiBj
YW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJl
Y3QmIHJlY3QpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25UeXBlOworICAgIFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25TdGF0
ZTsKKworICAgIGlmIChwYXJ0ID09IFNQTlBfVVApIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpVcEFycm93VHlwZTsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgewor
ICAgICAgICBjYXNlIFVQU19OT1JNQUw6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVVBTX0RJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVVBTX1BSRVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfUFVTSEVEKSk7CisgICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVUFNfSE9UOgorICAgICAgICAgICAgV0VC
S0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hPVCkpOwor
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChwYXJ0ID09
IFNQTlBfRE9XTikgeworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRv
d25BcnJvd1R5cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBETlNf
Tk9STUFMOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19T
Q1JPTExET1dOKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE5TX0RJU0FC
TEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NS
T0xMRE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBETlNfUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRE5TX0hPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX0hPVCkpOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBj
c3RhdGUpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRUZXh0RmllbGQo
V2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUs
IGNvbnN0IFdlYlJlY3QmIHJlY3QsIFdlYkNvbG9yIGNvbG9yLCBib29sIGZpbGxDb250ZW50QXJl
YSwgYm9vbCBkcmF3RWRnZXMpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBj
dHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25UeXBlOworICAgIFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVu
a25vd25TdGF0ZTsKKworICAgIFdFQktJVF9BU1NFUlQoRVBfRURJVFRFWFQgPT0gcGFydCk7Cisg
ICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpUZXh0RmllbGRUeXBlOworCisgICAg
c3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgRVRTX05PUk1BTDoKKyAgICAgICAgV0VCS0lUX0FT
U0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgRVRTX0hPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19I
T1QpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19ESVNBQkxFRDoKKyAgICAgICAgV0VCS0lU
X0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7CisgICAgICAgIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBFVFNfU0VMRUNURUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0
YXRlID09IERGQ1NfUFVTSEVEKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVRTX0ZPQ1VT
RUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwor
ICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpGb2N1c2VkU3RhdGU7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfUkVBRE9OTFk6CisgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpSZWFkT25seVN0YXRlOworICAgICAgICBicmVhazsKKworICAg
IGRlZmF1bHQ6CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgZHJhd1RleHRGaWVsZChjYW52YXMsIHJlY3QsIGN0eXBlLCBj
c3RhdGUsIGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBjb2xvcik7Cit9CisKK3ZvaWQgV2Vi
VGVzdFRoZW1lRW5naW5lV2luOjpwYWludFRyYWNrYmFyKFdlYkNhbnZhcyogY2FudmFzLCBpbnQg
cGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0KQor
eworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0
ZSBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisKKyAgICBp
ZiAoVEtQX1RIVU1CQk9UVE9NID09IHBhcnQpIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpIb3Jpem9udGFsU2xpZGVyVGh1bWJUeXBlOworICAgICAgICBzd2l0Y2gg
KHN0YXRlKSB7CisgICAgICAgIGNhc2UgVFVTX05PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIFRVU19IT1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
VFVTX0RJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0g
REZDU19JTkFDVElWRSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBU
VVNfUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERG
Q1NfUFVTSEVEKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoVEtQX1RIVU1CVkVSVCA9PSBwYXJ0KSB7Cisg
ICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VmVydGljYWxTbGlkZXJUaHVt
YlR5cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBUVVNfTk9STUFM
OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7
CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0
ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVFVTX0hPVDoKKyAgICAgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKKyAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNfRElTQUJMRUQ6CisgICAgICAgICAgICBXRUJLSVRf
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFRVU19QUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lUX0FT
U0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19QVVNIRUQpOworICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChUS1Bf
VFJBQ0sgPT0gcGFydCkgeworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
Okhvcml6b250YWxTbGlkZXJUcmFja1R5cGU7CisgICAgICAgIFdFQktJVF9BU1NFUlQoc3RhdGUg
PT0gVFJTX05PUk1BTCk7CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRm
Y3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3Jt
YWxTdGF0ZTsKKyAgICB9IGVsc2UgaWYgKFRLUF9UUkFDS1ZFUlQgPT0gcGFydCkgeworICAgICAg
ICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlZlcnRpY2FsU2xpZGVyVHJhY2tUeXBl
OworICAgICAgICBXRUJLSVRfQVNTRVJUKHN0YXRlID09IFRSVlNfTk9STUFMKTsKKyAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgIH0gZWxzZQorICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBkcmF3Q29udHJvbChjYW52
YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCisKK3ZvaWQgV2ViVGVzdFRoZW1lRW5naW5l
V2luOjpwYWludFByb2dyZXNzQmFyKFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdl
YktpdDo6V2ViUmVjdCYgYmFyUmVjdCwgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiB2YWx1ZVJlY3Qs
IGJvb2wgZGV0ZXJtaW5hdGUsIGRvdWJsZSkKK3sKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJvZ3Jlc3NCYXJUeXBlOwor
ICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9IGRldGVybWluYXRlID8g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGUgOiBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpJbmRldGVybWluYXRlU3RhdGU7CisgICAgZHJhd1Byb2dyZXNzQmFyKGNhbnZhcywgY3R5
cGUsIGNzdGF0ZSwgYmFyUmVjdCwgdmFsdWVSZWN0KTsKK30KKworCitXZWJLaXQ6OldlYlNpemUg
V2ViVGVzdFRoZW1lRW5naW5lV2luOjpnZXRTaXplKGludCBwYXJ0KQoreworICAgIHJldHVybiBX
ZWJLaXQ6OldlYlNpemUoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdp
bmVXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NGEzZWM0MmU5Yjc3YmUxNTFjMjM1NTMyOWI4ZDFkNDA2MGMw
MzljCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvLyBU
aGlzIGltcGxlbWVudHMgdGhlIFdlYlRoZW1lRW5naW5lIEFQSSB1c2VkIGJ5IHRoZSBXaW5kb3dz
IHZlcnNpb24gb2YKKy8vIENocm9taXVtIHRvIHJlbmRlciBuYXRpdmUgZm9ybSBjb250cm9scyBs
aWtlIGNoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsCisvLyBhbmQgc2Nyb2xsIGJhcnMuCisvLyBU
aGUgbm9ybWFsIGltcGxlbWVudGF0aW9uIChuYXRpdmVfdGhlbWUpIHJlbmRlcnMgdGhlIGNvbnRy
b2xzIHVzaW5nIGVpdGhlcgorLy8gdGhlIFVYVGhlbWUgdGhlbWluZyBlbmdpbmUgcHJlc2VudCBp
biBYUCwgVmlzdGEsIGFuZCBXaW4gNywgb3IgdGhlICJjbGFzc2ljIgorLy8gdGhlbWUgdXNlZCBp
ZiB0aGF0IHRoZW1lIGlzIHNlbGVjdGVkIGluIHRoZSBEZXNrdG9wIHNldHRpbmdzLgorLy8gVW5m
b3J0dW5hdGVseSwgYm90aCBvZiB0aGVzZSB0aGVtZXMgcmVuZGVyIGNvbnRyb2xzIGRpZmZlcmVu
dGx5IG9uIHRoZQorLy8gZGlmZmVyZW50IHZlcnNpb25zIG9mIFdpbmRvd3MuCisvLworLy8gSW4g
b3JkZXIgdG8gZW5zdXJlIG1heGltdW0gY29uc2lzdGVuY3kgb2YgYmFzZWxpbmVzIGFjcm9zcyB0
aGUgZGlmZmVyZW50CisvLyBXaW5kb3dzIHZlcnNpb25zLCB3ZSBwcm92aWRlIGEgc2ltcGxlIGlt
cGxlbWVudGF0aW9uIGZvciBEUlQgaGVyZQorLy8gaW5zdGVhZC4gVGhlc2UgY29udHJvbHMgYXJl
IGFjdHVhbGx5IHBsYXRmb3JtLWluZGVwZW5kZW50ICh0aGV5J3JlIHJlbmRlcmVkCisvLyB1c2lu
ZyBTa2lhKSBhbmQgY291bGQgYmUgdXNlZCBvbiBMaW51eCBhbmQgdGhlIE1hYyBhcyB3ZWxsLCBz
aG91bGQgd2UKKy8vIGNob29zZSB0byBkbyBzbyBhdCBzb21lIHBvaW50LgorLy8KKworI2lmbmRl
ZiBXZWJUZXN0VGhlbWVFbmdpbmVXaW5faAorI2RlZmluZSBXZWJUZXN0VGhlbWVFbmdpbmVXaW5f
aAorCisjaW5jbHVkZSA8cHVibGljL3dpbi9XZWJUaGVtZUVuZ2luZS5oPgorCituYW1lc3BhY2Ug
V2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIFdlYlRlc3RUaGVtZUVuZ2luZVdpbiA6IHB1YmxpYyBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lIHsKK3B1YmxpYzoKKyAgICBXZWJUZXN0VGhlbWVFbmdpbmVX
aW4oKSB7IH0KKworICAgIC8vIFdlYlRoZW1lRW5naW5lIG1ldGhvZHM6CisgICAgdmlydHVhbCB2
b2lkIHBhaW50QnV0dG9uKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBp
bnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVj
dCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50TWVudUxpc3QoCisgICAgICAgIFdlYktpdDo6
V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAg
ICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxiYXJBcnJvdygKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAgdmly
dHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFz
KiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3Qg
V2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUcmFj
aygKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQg
Y2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLCBjb25zdCBXZWJL
aXQ6OldlYlJlY3QmIGFsaWduUmVjdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTcGluQnV0
dG9uKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGlu
dCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAg
dmlydHVhbCB2b2lkIHBhaW50VGV4dEZpZWxkKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyos
IGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdl
YktpdDo6V2ViUmVjdCYsIFdlYktpdDo6V2ViQ29sb3IsIGJvb2wgZmlsbENvbnRlbnRBcmVhLAor
ICAgICAgICBib29sIGRyYXdFZGdlcyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja2Jh
cigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQg
Y2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZp
cnR1YWwgdm9pZCBwYWludFByb2dyZXNzQmFyKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyos
IGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgYmFyUmVjdCwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpX
ZWJSZWN0JiB2YWx1ZVJlY3QsCisgICAgICAgIGJvb2wgZGV0ZXJtaW5hdGUsIGRvdWJsZSB0aW1l
KTsKKworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTaXplIGdldFNpemUoaW50IHBhcnQpOworfTsK
KworfQorCisjZW5kaWYgLy8gV2ViVGVzdFRoZW1lRW5naW5lV2luX2gKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCmluZGV4IDRlMjEwMzE3MTRlMzkwOGIzYmUz
YTYyNjhhMjNmYTZmNzg2NmJlMDUuLjljMjRhNThkNDYyNDQ5NTIxOGVkYjJjM2M3YWFjNWVlNzMy
NGRjZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcApA
QCAtMTQwLDYgKzE0MCwxMSBAQCB2b2lkIFRlc3RTaGVsbDo6aW5pdGlhbGl6ZShNb2NrUGxhdGZv
cm0qIHBsYXRmb3JtU3VwcG9ydCkKICNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCiAgICAgbV9w
cmVyZW5kZXJpbmdTdXBwb3J0ID0gYWRvcHRQdHIobmV3IE1vY2tXZWJQcmVyZW5kZXJpbmdTdXBw
b3J0KCkpOwogI2VuZGlmCisjaWYgIWRlZmluZWQoVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FKSAm
JiAoT1MoV0lORE9XUykgfHwgT1MoTUFDX09TX1gpKQorICAgIC8vIFNldCB0aGVtZSBlbmdpbmUu
CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldFRoZW1lRW5naW5lKG1fdGVzdEludGVyZmFjZXMtPnRo
ZW1lRW5naW5lKCkpOworI2VuZGlmCisKIAogICAgIFdURjo6aW5pdGlhbGl6ZVRocmVhZGluZygp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCmluZGV4IDAyZGEx
ZmMyZTk1ZWE2ODY1MTk1NTJlZjcwOGRjYzk1MzE4NDJmNDguLjZlOTg5MDNiNmQ2MTE3MTYyZjFl
MTM4MTMzZmUyYTQwNDg4NTFhMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RTaGVsbC5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7
CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlRocmVhZDsKIGNsYXNzIFdlYlZpZXc7CitjbGFz
cyBXZWJUaGVtZUVuZ2luZTsKIGNsYXNzIFdlYlVSTDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tCmluZGV4IGQ3OWE4YzgzNTY3Y2YxYTdkNWNh
ZjVkMDk4ZWYwYWQ0YzRhMTc1YzQuLjUzZWRlNTY2NjliMjg0MTgzOTM3NzU2ODY2MDM3YWQwMDgw
OGJmMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxNYWMu
bW0KQEAgLTMxLDEyICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpbmNsdWRlICJU
ZXN0U2hlbGwuaCIKLSNpbmNsdWRlICJXZWJUaGVtZUVuZ2luZURSVE1hYy5oIgogI2luY2x1ZGUg
IndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW1wb3J0IDxBcHBLaXQvQXBwS2l0
Lmg+CiAKLXN0YXRpYyBXZWJUaGVtZUVuZ2luZURSVE1hYyB0aGVtZUVuZ2luZTsKLQogLy8gQSBj
bGFzcyB0byBiZSB0aGUgdGFyZ2V0L3NlbGVjdG9yIG9mIHRoZSAid2F0Y2hkb2ciIHRocmVhZCB0
aGF0IGVuc3VyZXMKIC8vIHBhZ2VzIHRpbWVvdXQgaWYgdGhleSB0YWtlIHRvbyBsb25nIGFuZCB0
ZWxscyB0aGUgdGVzdCBoYXJuZXNzIHZpYSBzdGRvdXQuCiBAaW50ZXJmYWNlIFdhdGNoRG9nVGFy
Z2V0IDogTlNPYmplY3QgewpAQCAtMTI5LDcgKzEyNiw2IEBAIHZvaWQgVGVzdFNoZWxsOjp3YWl0
VGVzdEZpbmlzaGVkKCkKIAogdm9pZCBwbGF0Zm9ybUluaXQoaW50KiwgY2hhcioqKikKIHsKLSAg
ICB3ZWJraXRfc3VwcG9ydDo6U2V0VGhlbWVFbmdpbmUoJnRoZW1lRW5naW5lKTsKIH0KIAogdm9p
ZCBvcGVuU3RhcnR1cERpYWxvZygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsV2luLmNwcAppbmRleCAzYTQ2Y2ZiNzFiYmY2MTU5NzU3Yjk5MDU5MjVmY2Y1NTgw
MGE1ZTRmLi4yNTE2NDFlZDNlMjBjYmRmNmM5ZTBlYjM5MjA1OWQyNTg0YmRkZGUwIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAKQEAgLTMxLDcg
KzMxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0U2hlbGwuaCIKIAot
I2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJUV2luLmgiCiAjaW5jbHVkZSAid2Via2l0L3N1cHBv
cnQvd2Via2l0X3N1cHBvcnQuaCIKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGlvLmg+
CkBAIC00OCwxMSArNDcsNiBAQAogI2RlZmluZSBOT05DTElFTlRNRVRSSUNTX1NJWkVfUFJFX1ZJ
U1RBIFwKICAgICBTSVpFT0ZfU1RSVUNUX1dJVEhfU1BFQ0lGSUVEX0xBU1RfTUVNQkVSKE5PTkNM
SUVOVE1FVFJJQ1MsIGxmTWVzc2FnZUZvbnQpCiAKLSNpZm5kZWYgVVNFX0RFRkFVTFRfUkVOREVS
X1RIRU1FCi0vLyBUaGVtZSBlbmdpbmUKLXN0YXRpYyBXZWJUaGVtZUVuZ2luZURSVFdpbiB0aGVt
ZUVuZ2luZTsKLSNlbmRpZgotCiAvLyBUaHJlYWQgbWFpbiB0byBydW4gZm9yIHRoZSB0aHJlYWQg
d2hpY2gganVzdCB0ZXN0cyBmb3IgdGltZW91dC4KIHVuc2lnbmVkIGludCBfX3N0ZGNhbGwgd2F0
Y2hEb2dUaHJlYWQodm9pZCogYXJnKQogewpAQCAtMTIwLDExICsxMTQsNiBAQCB2b2lkIHBsYXRm
b3JtSW5pdChpbnQqLCBjaGFyKioqKQogICAgIF9zZXRtb2RlKF9maWxlbm8oc3Rkb3V0KSwgX09f
QklOQVJZKTsKICAgICBfc2V0bW9kZShfZmlsZW5vKHN0ZGVyciksIF9PX0JJTkFSWSk7CiAKLSNp
Zm5kZWYgVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FCi0gICAgLy8gU2V0IHRoZW1lIGVuZ2luZS4K
LSAgICB3ZWJraXRfc3VwcG9ydDo6U2V0VGhlbWVFbmdpbmUoJnRoZW1lRW5naW5lKTsKLSNlbmRp
ZgotCiAgICAgLy8gTG9hZCBBaGVtIGZvbnQuCiAgICAgLy8gQUhFTV9fX18uVFRGIGlzIGNvcGll
ZCB0byB0aGUgZGlyZWN0b3J5IG9mIER1bXBSZW5kZXJUcmVlLmV4ZSBieSBXZWJLaXQuZ3lwLgog
ICAgIFdDSEFSIHBhdGhbX01BWF9QQVRIXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCBjMTQzMWQ4NGI1NDY3MGQyYzlkNjllMDIwM2YxMDk2Mjc3MTg1MTk4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1MjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLS8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgc2ltcGxlIGdlbmVy
aWMgdmVyc2lvbiBvZiB0aGUgV2ViVGhlbWVFbmdpbmUsCi0vLyB3aGljaCBpcyB1c2VkIHRvIGRy
YXcgYWxsIHRoZSBuYXRpdmUgY29udHJvbHMgb24gYSB3ZWIgcGFnZS4gV2UgdXNlIHRoaXMKLS8v
IGZpbGUgd2hlbiBydW5uaW5nIGluIGxheW91dCB0ZXN0IG1vZGUgaW4gb3JkZXIgdG8gcmVtb3Zl
IGFueQotLy8gcGxhdGZvcm0tc3BlY2lmaWMgcmVuZGVyaW5nIGRpZmZlcmVuY2VzIGR1ZSB0byB0
aGVtZXMsIGNvbG9ycywgZXRjLgotLy8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IldlYlRoZW1lQ29udHJvbERSVFdpbi5oIgotCi0jaW5jbHVkZSAic2tpYS9leHQvc2tpYV91dGls
c193aW4uaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0NhbnZh
cy5oIgotI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUGFpbnQuaCIK
LSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1BhdGguaCIKLSNpbmNs
dWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKLQotI2luY2x1ZGUg
PGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3Bh
Y2Ugc3RkOwotCi1zdGF0aWMgY29uc3QgU2tDb2xvciBlZGdlQ29sb3IgICAgID0gU0tfQ29sb3JC
TEFDSzsKLXN0YXRpYyBjb25zdCBTa0NvbG9yIHJlYWRPbmx5Q29sb3IgPSBTa0NvbG9yU2V0UkdC
KDB4ZTksIDB4YzIsIDB4YTYpOwotc3RhdGljIGNvbnN0IFNrQ29sb3IgZmdDb2xvciAgICAgICA9
IFNLX0NvbG9yQkxBQ0s7Ci1zdGF0aWMgY29uc3QgU2tDb2xvciBiZ0NvbG9yc1tdICAgID0gewot
ICAgIFNLX0NvbG9yQkxBQ0ssICAgICAgICAgICAgICAgICAgIC8vIFVua25vd24KLSAgICBTa0Nv
bG9yU2V0UkdCKDB4YzksIDB4YzksIDB4YzkpLCAvLyBEaXNhYmxlZAotICAgIFNrQ29sb3JTZXRS
R0IoMHhmMywgMHhlMCwgMHhkMCksIC8vIFJlYWRvbmx5Ci0gICAgU2tDb2xvclNldFJHQigweDg5
LCAweGM0LCAweGZmKSwgLy8gTm9ybWFsCi0gICAgU2tDb2xvclNldFJHQigweDQzLCAweGY5LCAw
eGZmKSwgLy8gSG90Ci0gICAgU2tDb2xvclNldFJHQigweDIwLCAweGY2LCAweGNjKSwgLy8gRm9j
dXNlZAotICAgIFNrQ29sb3JTZXRSR0IoMHgwMCwgMHhmMywgMHhhYyksIC8vIEhvdmVyCi0gICAg
U2tDb2xvclNldFJHQigweGE5LCAweGZmLCAweDEyKSwgLy8gUHJlc3NlZAotICAgIFNrQ29sb3JT
ZXRSR0IoMHhjYywgMHhjYywgMHhjYykgIC8vIEluZGV0ZXJtaW5hdGUKLX07Ci0KLXN0YXRpYyBT
a0lSZWN0IHZhbGlkYXRlKGNvbnN0IFNrSVJlY3QmIHJlY3QsIFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6VHlwZSBjdHlwZSkKLXsKLSAgICBzd2l0Y2ggKGN0eXBlKSB7Ci0gICAgY2FzZSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU6Ci0gICAgY2FzZSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OkNoZWNrZWRCb3hUeXBlOgotICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpVbmNoZWNrZWRSYWRpb1R5cGU6Ci0gICAgY2FzZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNo
ZWNrZWRSYWRpb1R5cGU6IHsKLSAgICAgICAgU2tJUmVjdCByZXR2YWwgPSByZWN0OwotCi0gICAg
ICAgIC8vIFRoZSBtYXhpbXVtIHdpZHRoIGFuZCBoZWlnaHQgaXMgMTMuCi0gICAgICAgIC8vIENl
bnRlciB0aGUgc3F1YXJlIGluIHRoZSBwYXNzZWQgcmVjdGFuZ2xlLgotICAgICAgICBjb25zdCBp
bnQgbWF4Q29udHJvbFNpemUgPSAxMzsKLSAgICAgICAgaW50IGNvbnRyb2xTaXplID0gc3RkOjpt
aW4ocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY29udHJvbFNpemUgPSBz
dGQ6Om1pbihjb250cm9sU2l6ZSwgbWF4Q29udHJvbFNpemUpOwotCi0gICAgICAgIHJldHZhbC5m
TGVmdCAgID0gcmVjdC5mTGVmdCArIChyZWN0LndpZHRoKCkgLyAyKSAtIChjb250cm9sU2l6ZSAv
IDIpOwotICAgICAgICByZXR2YWwuZlJpZ2h0ICA9IHJldHZhbC5mTGVmdCArIGNvbnRyb2xTaXpl
IC0gMTsKLSAgICAgICAgcmV0dmFsLmZUb3AgICAgPSByZWN0LmZUb3AgKyAocmVjdC5oZWlnaHQo
KSAvIDIpIC0gKGNvbnRyb2xTaXplIC8gMik7Ci0gICAgICAgIHJldHZhbC5mQm90dG9tID0gcmV0
dmFsLmZUb3AgKyBjb250cm9sU2l6ZSAtIDE7Ci0KLSAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAg
ICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gcmVjdDsKLSAgICB9Ci19Ci0KLS8v
IFdlYlRoZW1lQ29udHJvbERSVFdpbgotCi1XZWJUaGVtZUNvbnRyb2xEUlRXaW46OldlYlRoZW1l
Q29udHJvbERSVFdpbihTa0NhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2tJUmVjdCYgaXJlY3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlIGN0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgY3N0YXRlKQotICAgIDogbV9j
YW52YXMoY2FudmFzKQotICAgICwgbV9pcmVjdCh2YWxpZGF0ZShpcmVjdCwgY3R5cGUpKQotICAg
ICwgbV90eXBlKGN0eXBlKQotICAgICwgbV9zdGF0ZShjc3RhdGUpCi0gICAgLCBtX2xlZnQobV9p
cmVjdC5mTGVmdCkKLSAgICAsIG1fcmlnaHQobV9pcmVjdC5mUmlnaHQpCi0gICAgLCBtX3RvcCht
X2lyZWN0LmZUb3ApCi0gICAgLCBtX2JvdHRvbShtX2lyZWN0LmZCb3R0b20pCi0gICAgLCBtX2hl
aWdodChtX2lyZWN0LmhlaWdodCgpKQotICAgICwgbV93aWR0aChtX2lyZWN0LndpZHRoKCkpCi0g
ICAgLCBtX2VkZ2VDb2xvcihlZGdlQ29sb3IpCi0gICAgLCBtX2JnQ29sb3IoYmdDb2xvcnNbY3N0
YXRlXSkKLSAgICAsIG1fZmdDb2xvcihmZ0NvbG9yKQotewotfQotCi1XZWJUaGVtZUNvbnRyb2xE
UlRXaW46On5XZWJUaGVtZUNvbnRyb2xEUlRXaW4oKQotewotfQotCi12b2lkIFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6Ym94KGNvbnN0IFNrSVJlY3QmIHJlY3QsIFNrQ29sb3IgZmlsbENvbG9yKQot
ewotICAgIFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmls
bF9TdHlsZSk7Ci0gICAgcGFpbnQuc2V0Q29sb3IoZmlsbENvbG9yKTsKLSAgICBtX2NhbnZhcy0+
ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKLQotICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9y
KTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKLSAgICBtX2Nh
bnZhcy0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OmxpbmUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0NvbG9yIGNvbG9y
KQotewotICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwotICAg
IG1fY2FudmFzLT5kcmF3TGluZShTa0ludFRvU2NhbGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIFNrSW50VG9TY2FsYXIoeDEpLCBTa0ludFRvU2NhbGFy
KHkxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgcGFpbnQpOwotfQotCi12b2lkIFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6dHJpYW5nbGUoaW50IHgwLCBpbnQgeTAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHgxLCBpbnQgeTEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHgyLCBpbnQgeTIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2tDb2xvciBjb2xvcikKLXsKLSAgICBTa1BhdGggcGF0aDsKLSAgICBT
a1BhaW50IHBhaW50OwotCi0gICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwotICAgIHBhaW50LnNl
dFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBwYXRoLmluY1Jlc2VydmUoNCk7Ci0g
ICAgcGF0aC5tb3ZlVG8oU2tJbnRUb1NjYWxhcih4MCksIFNrSW50VG9TY2FsYXIoeTApKTsKLSAg
ICBwYXRoLmxpbmVUbyhTa0ludFRvU2NhbGFyKHgxKSwgU2tJbnRUb1NjYWxhcih5MSkpOwotICAg
IHBhdGgubGluZVRvKFNrSW50VG9TY2FsYXIoeDIpLCBTa0ludFRvU2NhbGFyKHkyKSk7Ci0gICAg
cGF0aC5jbG9zZSgpOwotICAgIG1fY2FudmFzLT5kcmF3UGF0aChwYXRoLCBwYWludCk7Ci0KLSAg
ICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWlu
dDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsK
LX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OnJvdW5kUmVjdChTa0NvbG9yIGNvbG9y
KQotewotICAgIFNrUmVjdCByZWN0OwotICAgIFNrU2NhbGFyIHJhZGl1cyA9IFNrSW50VG9TY2Fs
YXIoNSk7Ci0gICAgU2tQYWludCBwYWludDsKLQotICAgIHJlY3Quc2V0KG1faXJlY3QpOwotICAg
IHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmls
bF9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdSb3VuZFJlY3QocmVjdCwgcmFkaXVzLCByYWRp
dXMsIHBhaW50KTsKLQotICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKLSAgICBwYWlu
dC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd1Jv
dW5kUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcGFpbnQpOwotfQotCi12b2lkIFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6b3ZhbChTa0NvbG9yIGNvbG9yKQotewotICAgIFNrUmVjdCByZWN0Owot
ICAgIFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICByZWN0LnNldChtX2lyZWN0KTsKLSAgICBwYWludC5z
ZXRDb2xvcihjb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUp
OwotICAgIG1fY2FudmFzLT5kcmF3T3ZhbChyZWN0LCBwYWludCk7Ci0KLSAgICBwYWludC5zZXRD
b2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9T
dHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdPdmFsKHJlY3QsIHBhaW50KTsKLX0KLQotdm9pZCBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OmNpcmNsZShTa1NjYWxhciByYWRpdXMsIFNrQ29sb3IgY29s
b3IpCi17Ci0gICAgU2tTY2FsYXIgY3kgPSBTa0ludFRvU2NhbGFyKG1fdG9wICArIG1faGVpZ2h0
IC8gMik7Ci0gICAgU2tTY2FsYXIgY3ggPSBTa0ludFRvU2NhbGFyKG1fbGVmdCArIG1fd2lkdGgg
LyAyKTsKLSAgICBTa1BhaW50IHBhaW50OwotCi0gICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwot
ICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+
ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFpbnQpOwotCi0gICAgcGFpbnQuc2V0Q29sb3Io
bV9lZGdlQ29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUp
OwotICAgIG1fY2FudmFzLT5kcmF3Q2lyY2xlKGN4LCBjeSwgcmFkaXVzLCBwYWludCk7Ci19Ci0K
LXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpuZXN0ZWRCb3hlcyhpbnQgaW5kZW50TGVmdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50VG9wLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRSaWdodCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50Qm90dG9t
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrQ29sb3Igb3V0ZXJD
b2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0NvbG9yIGlu
bmVyQ29sb3IpCi17Ci0gICAgU2tJUmVjdCBsaXJlY3Q7Ci0gICAgYm94KG1faXJlY3QsIG91dGVy
Q29sb3IpOwotICAgIGxpcmVjdC5zZXQobV9pcmVjdC5mTGVmdCArIGluZGVudExlZnQsCi0gICAg
ICAgICAgICAgICBtX2lyZWN0LmZUb3AgKyBpbmRlbnRUb3AsCi0gICAgICAgICAgICAgICBtX2ly
ZWN0LmZSaWdodCAtIGluZGVudFJpZ2h0LAotICAgICAgICAgICAgICAgbV9pcmVjdC5mQm90dG9t
IC0gaW5kZW50Qm90dG9tKTsKLSAgICBib3gobGlyZWN0LCBpbm5lckNvbG9yKTsKLX0KLQotdm9p
ZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Om1hcmtTdGF0ZSgpCi17Ci0gICAgLy8gVGhlIGhvcml6
b250YWwgbGluZXMgaW4gYSByZWFkIG9ubHkgY29udHJvbCBhcmUgc3BhY2VkIGJ5IHRoaXMgYW1v
dW50LgotICAgIGNvbnN0IGludCByZWFkT25seUxpbmVPZmZzZXQgPSA1OwotCi0gICAgLy8gVGhl
IGxlbmd0aCBvZiBhIHRyaWFuZ2xlIHNpZGUgZm9yIHRoZSBjb3JuZXIgbWFya3MuCi0gICAgY29u
c3QgaW50IHRyaWFuZ2xlU2l6ZSA9IDU7Ci0KLSAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAgICBj
YXNlIFVua25vd25TdGF0ZToKLSAgICBjYXNlIERpc2FibGVkU3RhdGU6Ci0gICAgY2FzZSBOb3Jt
YWxTdGF0ZToKLSAgICBjYXNlIEluZGV0ZXJtaW5hdGVTdGF0ZToKLSAgICAgICAgLy8gRG9uJ3Qg
dmlzdWFsbHkgbWFyayB0aGVzZSBzdGF0ZXMgKGNvbG9yIGlzIGVub3VnaCkuCi0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUmVhZE9ubHlTdGF0ZToKLSAgICAgICAgLy8gRHJhd2luZyBsaW5lcyBh
Y3Jvc3MgdGhlIGNvbnRyb2wuCi0gICAgICAgIGZvciAoaW50IGkgPSBtX3RvcCArIHJlYWRPbmx5
TGluZU9mZnNldDsgaSA8IG1fYm90dG9tOyBpICs9IHJlYWRPbmx5TGluZU9mZnNldCkKLSAgICAg
ICAgICAgIGxpbmUobV9sZWZ0ICsgMSwgaSwgbV9yaWdodCAtIDEsIGksIHJlYWRPbmx5Q29sb3Ip
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgSG90U3RhdGU6Ci0gICAgICAgIC8vIERyYXcg
YSB0cmlhbmdsZSBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCi0gICAg
ICAgIHRyaWFuZ2xlKG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fdG9wLAotICAgICAgICAgICAg
ICAgICBtX2xlZnQgKyB0cmlhbmdsZVNpemUsICBtX3RvcCwKLSAgICAgICAgICAgICAgICAgbV9s
ZWZ0LCAgICAgICAgICAgICAgICAgbV90b3AgKyB0cmlhbmdsZVNpemUsICAgIG1fZWRnZUNvbG9y
KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvdmVyU3RhdGU6Ci0gICAgICAgIC8vIERy
YXcgYSB0cmlhbmdsZSBpbiB0aGUgdXBwZXIgcmlnaHQgY29ybmVyIG9mIHRoZSBjb250cm9sLgot
ICAgICAgICB0cmlhbmdsZShtX3JpZ2h0LCAgICAgICAgICAgICAgICBtX3RvcCwKLSAgICAgICAg
ICAgICAgICAgbV9yaWdodCwgICAgICAgICAgICAgICAgbV90b3AgKyB0cmlhbmdsZVNpemUsCi0g
ICAgICAgICAgICAgICAgIG1fcmlnaHQgLSB0cmlhbmdsZVNpemUsIG1fdG9wLCAgICAgICAgICAg
ICAgICAgICBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBGb2N1c2Vk
U3RhdGU6Ci0gICAgICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgYm90dG9tIHJpZ2h0IGNv
cm5lciBvZiB0aGUgY29udHJvbC4KLSAgICAgICAgdHJpYW5nbGUobV9yaWdodCwgICAgICAgICAg
ICAgICAgbV9ib3R0b20sCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQgLSB0cmlhbmdsZVNpemUs
IG1fYm90dG9tLAotICAgICAgICAgICAgICAgICBtX3JpZ2h0LCAgICAgICAgICAgICAgICBtX2Jv
dHRvbSAtIHRyaWFuZ2xlU2l6ZSwgbV9lZGdlQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgUHJlc3NlZFN0YXRlOgotICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIGJv
dHRvbSBsZWZ0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KLSAgICAgICAgdHJpYW5nbGUobV9sZWZ0
LCAgICAgICAgICAgICAgICAgbV9ib3R0b20sCi0gICAgICAgICAgICAgICAgIG1fbGVmdCwgICAg
ICAgICAgICAgICAgIG1fYm90dG9tIC0gdHJpYW5nbGVTaXplLAotICAgICAgICAgICAgICAgICBt
X2xlZnQgKyB0cmlhbmdsZVNpemUsICBtX2JvdHRvbSwgICAgICAgICAgICAgICAgbV9lZGdlQ29s
b3IpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICBDUkFTSCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0K
LXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpkcmF3KCkKLXsKLSAgICBpbnQgaGFsZldpZHRo
ID0gbV93aWR0aCAvIDI7Ci0gICAgaW50IGhhbGZIZWlnaHQgPSBtX2hlaWdodCAvIDI7Ci0gICAg
aW50IHF1YXJ0ZXJXaWR0aCA9IG1fd2lkdGggLyA0OwotICAgIGludCBxdWFydGVySGVpZ2h0ID0g
bV9oZWlnaHQgLyA0OwotCi0gICAgLy8gSW5kZW50IGFtb3VudHMgZm9yIHRoZSBjaGVjayBpbiBh
IGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbi4KLSAgICBjb25zdCBpbnQgY2hlY2tJbmRlbnQgPSAz
OwotCi0gICAgLy8gSW5kZW50IGFtb3VudHMgZm9yIHNob3J0IGFuZCBsb25nIHNpZGVzIG9mIHRo
ZSBzY3JvbGxiYXIgbm90Y2hlcy4KLSAgICBjb25zdCBpbnQgbm90Y2hMb25nT2Zmc2V0ID0gMTsK
LSAgICBjb25zdCBpbnQgbm90Y2hTaG9ydE9mZnNldCA9IDQ7Ci0gICAgY29uc3QgaW50IG5vT2Zm
c2V0ID0gMDsKLQotICAgIC8vIEluZGVudCBhbW91bnRzIGZvciB0aGUgc2hvcnQgYW5kIGxvbmcg
c2lkZXMgb2YgYSBzY3JvbGwgdGh1bWIgYm94LgotICAgIGNvbnN0IGludCB0aHVtYkxvbmdJbmRl
bnQgPSAwOwotICAgIGNvbnN0IGludCB0aHVtYlNob3J0SW5kZW50ID0gMjsKLQotICAgIC8vIElu
ZGVudHMgZm9yIHRoZSBjcm9zc2hhdGNoIG9uIGEgc2Nyb2xsIGdyaXAuCi0gICAgY29uc3QgaW50
IGdyaXBMb25nSW5kZW50ID0gMzsKLSAgICBjb25zdCBpbnQgZ3JpcFNob3J0SW5kZW50ID0gNTsK
LQotICAgIC8vIEluZGVudHMgZm9yIHRoZSB0aGUgc2xpZGVyIHRyYWNrLgotICAgIGNvbnN0IGlu
dCBzbGlkZXJJbmRlbnQgPSAyOwotCi0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIFVu
a25vd25UeXBlOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgQ1JBU0go
KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFRleHRGaWVsZFR5cGU6Ci0gICAgICAgIC8v
IFdlIHJlbmRlciB0aGlzIGJ5IGhhbmQgb3V0c2lkZSBvZiB0aGlzIGZ1bmN0aW9uLgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIFB1c2hCdXR0b25UeXBlOgotICAgICAgICAvLyBwdXNoIGJ1dHRvbnMgcmVu
ZGVyIGFzIGEgcm91bmRlZCByZWN0YW5nbGUKLSAgICAgICAgcm91bmRSZWN0KG1fYmdDb2xvcik7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBVbmNoZWNrZWRCb3hUeXBlOgotICAgICAgICAv
LyBVbmNoZWNrZWQgYm94ZXMgYXJlIHNpbXBseSBwbGFpbiBib3hlcy4KLSAgICAgICAgYm94KG1f
aXJlY3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDaGVja2VkQm94
VHlwZToKLSAgICAgICAgbmVzdGVkQm94ZXMoY2hlY2tJbmRlbnQsIGNoZWNrSW5kZW50LCBjaGVj
a0luZGVudCwgY2hlY2tJbmRlbnQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIEluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGU6Ci0gICAgICAgIC8vIElu
ZGV0ZXJtaW5hdGUgY2hlY2tib3ggaXMgYSBib3ggY29udGFpbmluZyAnLScuCi0gICAgICAgIG5l
c3RlZEJveGVzKGNoZWNrSW5kZW50LCBoYWxmSGVpZ2h0LCBjaGVja0luZGVudCwgaGFsZkhlaWdo
dCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgVW5j
aGVja2VkUmFkaW9UeXBlOgotICAgICAgICBjaXJjbGUoU2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0
KSwgbV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENoZWNrZWRSYWRpb1R5
cGU6Ci0gICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWlnaHQpLCBtX2JnQ29sb3Ip
OwotICAgICAgICBjaXJjbGUoU2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0IC0gY2hlY2tJbmRlbnQp
LCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9s
bFRyYWNrQmFja1R5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQg
dGhlIGxlZnQuCi0gICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIG5vdGNoTG9u
Z09mZnNldDsKLSAgICAgICAgaW50IHNob3J0T2Zmc2V0ID0gbV93aWR0aCAtIG5vdGNoU2hvcnRP
ZmZzZXQ7Ci0gICAgICAgIG5lc3RlZEJveGVzKG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBzaG9ydE9m
ZnNldCwgbG9uZ09mZnNldCwgbV9iZ0NvbG9yLCBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsK
LSAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIHJpZ2h0LgotICAgICAg
ICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmSGVpZ2h0IC0gbm90Y2hMb25nT2Zmc2V0OwotICAgICAg
ICBpbnQgc2hvcnRPZmZzZXQgPSBtX3dpZHRoIC0gbm90Y2hTaG9ydE9mZnNldDsKLSAgICAgICAg
bmVzdGVkQm94ZXMoc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBsb25nT2Zmc2V0
LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNh
c2UgVmVydGljYWxTY3JvbGxUcmFja0JhY2tUeXBlOiB7Ci0gICAgICAgIC8vIERyYXcgYSBib3gg
d2l0aCBhIG5vdGNoIGF0IHRoZSB0b3AuCi0gICAgICAgIGludCBsb25nT2Zmc2V0ICA9IGhhbGZX
aWR0aCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAgICAgaW50IHNob3J0T2Zmc2V0ID0gbV9oZWln
aHQgLSBub3RjaFNob3J0T2Zmc2V0OwotICAgICAgICBuZXN0ZWRCb3hlcyhsb25nT2Zmc2V0LCBu
b09mZnNldCwgbG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9y
d2FyZFR5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIGJv
dHRvbS4KLSAgICAgICAgaW50IGxvbmdPZmZzZXQgID0gaGFsZldpZHRoIC0gbm90Y2hMb25nT2Zm
c2V0OwotICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX2hlaWdodCAtIG5vdGNoU2hvcnRPZmZz
ZXQ7Ci0gICAgICAgIG5lc3RlZEJveGVzKGxvbmdPZmZzZXQsIHNob3J0T2Zmc2V0LCBsb25nT2Zm
c2V0LCBub09mZnNldCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICBjYXNlIEhvcml6b250YWxTY3JvbGxUaHVtYlR5cGU6Ci0gICAgICAgIC8vIERy
YXcgYSBuYXJyb3dlciBib3ggb24gdG9wIG9mIHRoZSBvdXRzaWRlIGJveC4KLSAgICAgICAgbmVz
dGVkQm94ZXModGh1bWJMb25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRl
bnQsIHRodW1iU2hvcnRJbmRlbnQsIG1fYmdDb2xvciwgbV9iZ0NvbG9yKTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlOgotICAgICAgICAvLyBEcmF3
IGEgc2hvcnRlciBib3ggb24gdG9wIG9mIHRoZSBvdXRzaWRlIGJveC4KLSAgICAgICAgbmVzdGVk
Qm94ZXModGh1bWJTaG9ydEluZGVudCwgdGh1bWJMb25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50
LCB0aHVtYkxvbmdJbmRlbnQsIG1fYmdDb2xvciwgbV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIEhvcml6b250YWxTbGlkZXJUaHVtYlR5cGU6Ci0gICAgY2FzZSBWZXJ0aWNh
bFNsaWRlclRodW1iVHlwZToKLSAgICAgICAgLy8gU2xpZGVyIHRodW1icyBhcmUgb3ZhbHMuCi0g
ICAgICAgIG92YWwobV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvcml6
b250YWxTY3JvbGxHcmlwVHlwZTogewotICAgICAgICAvLyBEcmF3IGEgaG9yaXpvbnRhbCBjcm9z
c2hhdGNoIGZvciB0aGUgZ3JpcC4KLSAgICAgICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmV2lkdGgg
LSBncmlwTG9uZ0luZGVudDsKLSAgICAgICAgbGluZShtX2xlZnQgICsgZ3JpcExvbmdJbmRlbnQs
IG1fdG9wICAgICsgaGFsZkhlaWdodCwKLSAgICAgICAgICAgICBtX3JpZ2h0IC0gZ3JpcExvbmdJ
bmRlbnQsIG1fdG9wICAgICsgaGFsZkhlaWdodCwgICAgICBtX2ZnQ29sb3IpOwotICAgICAgICBs
aW5lKG1fbGVmdCAgKyBsb25nT2Zmc2V0LCAgICAgbV90b3AgICAgKyBncmlwU2hvcnRJbmRlbnQs
Ci0gICAgICAgICAgICAgbV9sZWZ0ICArIGxvbmdPZmZzZXQsICAgICBtX2JvdHRvbSAtIGdyaXBT
aG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKLSAgICAgICAgbGluZShtX3JpZ2h0IC0gbG9uZ09mZnNl
dCwgICAgIG1fdG9wICAgICsgZ3JpcFNob3J0SW5kZW50LAotICAgICAgICAgICAgIG1fcmlnaHQg
LSBsb25nT2Zmc2V0LCAgICAgbV9ib3R0b20gLSBncmlwU2hvcnRJbmRlbnQsIG1fZmdDb2xvcik7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgVmVydGljYWxTY3JvbGxHcmlwVHlw
ZTogewotICAgICAgICAvLyBEcmF3IGEgdmVydGljYWwgY3Jvc3NoYXRjaCBmb3IgdGhlIGdyaXAu
Ci0gICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIGdyaXBMb25nSW5kZW50Owot
ICAgICAgICBsaW5lKG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgICAgIG1fdG9wICAgICsgZ3JpcExv
bmdJbmRlbnQsCi0gICAgICAgICAgICAgbV9sZWZ0ICArIGhhbGZXaWR0aCwgICAgICAgbV9ib3R0
b20gLSBncmlwTG9uZ0luZGVudCwgbV9mZ0NvbG9yKTsKLSAgICAgICAgbGluZShtX2xlZnQgICsg
Z3JpcFNob3J0SW5kZW50LCBtX3RvcCAgICArIGxvbmdPZmZzZXQsCi0gICAgICAgICAgICAgbV9y
aWdodCAtIGdyaXBTaG9ydEluZGVudCwgbV90b3AgICAgKyBsb25nT2Zmc2V0LCAgICAgbV9mZ0Nv
bG9yKTsKLSAgICAgICAgbGluZShtX2xlZnQgICsgZ3JpcFNob3J0SW5kZW50LCBtX2JvdHRvbSAt
IGxvbmdPZmZzZXQsCi0gICAgICAgICAgICAgbV9yaWdodCAtIGdyaXBTaG9ydEluZGVudCwgbV9i
b3R0b20gLSBsb25nT2Zmc2V0LCAgICAgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgY2FzZSBMZWZ0QXJyb3dUeXBlOgotICAgICAgICAvLyBEcmF3IGEgbGVmdCBhcnJv
dyBpbnNpZGUgYSBib3guCi0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwotICAgICAg
ICB0cmlhbmdsZShtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCAgICArIHF1YXJ0ZXJIZWln
aHQsCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0g
cXVhcnRlckhlaWdodCwKLSAgICAgICAgICAgICAgICAgbV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwg
bV90b3AgICAgKyBoYWxmSGVpZ2h0LCAgICBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLQot
ICAgIGNhc2UgUmlnaHRBcnJvd1R5cGU6Ci0gICAgICAgIC8vIERyYXcgYSBsZWZ0IGFycm93IGlu
c2lkZSBhIGJveC4KLSAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIHRy
aWFuZ2xlKG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwK
LSAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBoYWxm
SGVpZ2h0LAotICAgICAgICAgICAgICAgICBtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX2JvdHRv
bSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBVcEFycm93VHlwZToKLSAgICAgICAgLy8gRHJhdyBhbiB1cCBhcnJvdyBpbnNpZGUgYSBib3gu
Ci0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwotICAgICAgICB0cmlhbmdsZShtX2xl
ZnQgICsgcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAg
ICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwK
LSAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFy
dGVySGVpZ2h0LCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRG93bkFy
cm93VHlwZToKLSAgICAgICAgLy8gRHJhdyBhIGRvd24gYXJyb3cgaW5zaWRlIGEgYm94LgotICAg
ICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICAr
IHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAotICAgICAgICAgICAgICAg
ICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCi0gICAg
ICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fYm90dG9tIC0gcXVhcnRlckhl
aWdodCwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvcml6b250YWxT
bGlkZXJUcmFja1R5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIG5hcnJvdyByZWN0IGZvciB0aGUg
dHJhY2sgcGx1cyBib3ggaGF0Y2hlcyBvbiB0aGUgZW5kcy4KLSAgICAgICAgU2tJUmVjdCBsaXJl
Y3Q7Ci0gICAgICAgIGxpcmVjdCA9IG1faXJlY3Q7Ci0gICAgICAgIGxpcmVjdC5pbnNldChub09m
ZnNldCwgaGFsZkhlaWdodCAtIHNsaWRlckluZGVudCk7Ci0gICAgICAgIGJveChsaXJlY3QsIG1f
YmdDb2xvcik7Ci0gICAgICAgIGxpbmUobV9sZWZ0LCAgbV90b3AsIG1fbGVmdCwgIG1fYm90dG9t
LCBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGxpbmUobV9yaWdodCwgbV90b3AsIG1fcmlnaHQsIG1f
Ym90dG9tLCBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2Ug
VmVydGljYWxTbGlkZXJUcmFja1R5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIG5hcnJvdyByZWN0
IGZvciB0aGUgdHJhY2sgcGx1cyBib3ggaGF0Y2hlcyBvbiB0aGUgZW5kcy4KLSAgICAgICAgU2tJ
UmVjdCBsaXJlY3Q7Ci0gICAgICAgIGxpcmVjdCA9IG1faXJlY3Q7Ci0gICAgICAgIGxpcmVjdC5p
bnNldChoYWxmV2lkdGggLSBzbGlkZXJJbmRlbnQsIG5vT2Zmc2V0KTsKLSAgICAgICAgYm94KGxp
cmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgbGluZShtX2xlZnQsIG1fdG9wLCBtX3JpZ2h0LCBt
X3RvcCwgbV9lZGdlQ29sb3IpOwotICAgICAgICBsaW5lKG1fbGVmdCwgbV9ib3R0b20sIG1fcmln
aHQsIG1fYm90dG9tLCBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IGNhc2UgRHJvcERvd25CdXR0b25UeXBlOgotICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBi
aWcgZG93biBhcnJvdyBvbiB0b3AuCi0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwot
ICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX3RvcCwKLSAgICAgICAg
ICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AsCi0gICAgICAgICAgICAgICAg
IG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fYm90dG9tLCBtX2ZnQ29sb3IpOwotICAgICAgICBi
cmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICBDUkFTSCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBtYXJrU3RhdGUoKTsK
LX0KLQotLy8gQmVjYXVzZSByZW5kZXJpbmcgYSB0ZXh0IGZpZWxkIGlzIGRlcGVuZGVudCBvbiBp
bnB1dAotLy8gcGFyYW1ldGVycyB0aGUgb3RoZXIgY29udHJvbHMgZG9uJ3QgaGF2ZSwgd2UgcmVu
ZGVyIGl0IGRpcmVjdGx5Ci0vLyByYXRoZXIgdGhhbiB0cnlpbmcgdG8gb3ZlcmNvbXBsaWNhdGUg
ZHJhdygpIGZ1cnRoZXIuCi12b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6ZHJhd1RleHRGaWVs
ZChib29sIGRyYXdFZGdlcywgYm9vbCBmaWxsQ29udGVudEFyZWEsIFNrQ29sb3IgY29sb3IpCi17
Ci0gICAgU2tQYWludCBwYWludDsKLQotICAgIGlmIChmaWxsQ29udGVudEFyZWEpIHsKLSAgICAg
ICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwotICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50
OjprRmlsbF9TdHlsZSk7Ci0gICAgICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFp
bnQpOwotICAgIH0KLSAgICBpZiAoZHJhd0VkZ2VzKSB7Ci0gICAgICAgIHBhaW50LnNldENvbG9y
KG1fZWRnZUNvbG9yKTsKLSAgICAgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9T
dHlsZSk7Ci0gICAgICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFpbnQpOwotICAg
IH0KLQotICAgIG1hcmtTdGF0ZSgpOwotfQotCi12b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
ZHJhd1Byb2dyZXNzQmFyKGNvbnN0IFNrSVJlY3QmIGZpbGxSZWN0KQotewotICAgIFNrUGFpbnQg
cGFpbnQ7Ci0KLSAgICBwYWludC5zZXRDb2xvcihtX2JnQ29sb3IpOwotICAgIHBhaW50LnNldFN0
eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KG1faXJl
Y3QsIHBhaW50KTsKLQotICAgIC8vIEVtdWxhdGUgY2xpcHBpbmcKLSAgICBTa0lSZWN0IHRvZmls
bDsKLSAgICB0b2ZpbGwuaW50ZXJzZWN0KG1faXJlY3QsIGZpbGxSZWN0KTsKLSAgICBwYWludC5z
ZXRDb2xvcihtX2ZnQ29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0
eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHRvZmlsbCwgcGFpbnQpOwotCi0gICAgbWFy
a1N0YXRlKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlRoZW1lQ29udHJvbERSVFdpbi5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVGhlbWVDb250cm9sRFJUV2luLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVm
NzMxYWIzOTYwODZmM2E5ZWRiMjY3NTA0ZTcwNGE2YzEwMTc4ZjIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LS8vIFdlYlRoZW1lQ29udHJvbERSVFdpbiBpbXBsZW1lbnRzIHRoZSBnZW5lcmljIHJlbmRlcmlu
ZyBvZiBjb250cm9scwotLy8gbmVlZGVkIGJ5IFdlYlRoZW1lRW5naW5lRFJUV2luLiBTZWUgdGhl
IGNvbW1lbnRzIGluIHRoYXQgY2xhc3MKLS8vIGhlYWRlciBmaWxlIGZvciB3aHkgdGhpcyBjbGFz
cyBpcyBuZWVkZWQgYW5kIHVzZWQuCi0vLwotLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgZ2Vu
ZXJpYyBzZXQgb2Ygd2lkZ2V0cyB1c2luZyBTa2lhLiBUaGUgd2lkZ2V0cwotLy8gYXJlIG9wdGlt
aXplZCBmb3IgdGVzdGFiaWxpdHksIG5vdCBhIHBsZWFzaW5nIGFwcGVhcmFuY2UuCi0vLwotCi0j
aWZuZGVmIFdlYlRoZW1lQ29udHJvbERSVFdpbl9oCi0jZGVmaW5lIFdlYlRoZW1lQ29udHJvbERS
VFdpbl9oCi0KLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0NvbG9y
LmgiCi0jaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tSZWN0LmgiCi0j
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLS8vIFNraWEgZm9yd2FyZCBkZWNsYXJhdGlv
bnMKLWNsYXNzIFNrQ2FudmFzOwotCi1jbGFzcyBXZWJUaGVtZUNvbnRyb2xEUlRXaW4gewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlRoZW1lQ29udHJvbERSVFdpbik7Ci1wdWJsaWM6Ci0g
ICAgLy8gVGhpcyBsaXN0IG9mIHN0YXRlcyBtb3N0bHkgbWlycm9ycyB0aGUgbGlzdCBpbiBXZWJD
b3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAotICAgIC8vIGJ1dCBpcyBtYWludGFpbmVkIHNlcGFy
YXRlbHkgc2luY2UgdGhhdCBpc24ndCBwdWJsaWMgYW5kIGFsc28gdG8gbWluaW1pemUKLSAgICAv
LyBkZXBlbmRlbmNpZXMuCi0gICAgLy8gTm90ZSB0aGF0IHRoZSBXZWJLaXQgVGhlbWVUeXBlcyBz
ZWVtIHRvIGltcGx5IHRoYXQgYSBjb250cm9sIGNhbiBiZQotICAgIC8vIGluIG11bHRpcGxlIHN0
YXRlcyBzaW11bHRhbmVvdXNseSBidXQgV2ViVGhlbWVFbmdpbmUgb25seSBhbGxvd3MgZm9yCi0g
ICAgLy8gYSBzaW5nbGUgc3RhdGUgYXQgYSB0aW1lLgotICAgIC8vCi0gICAgLy8gU29tZSBkZWZp
bml0aW9ucyBmb3IgdGhlIHZhcmlvdXMgc3RhdGVzOgotICAgIC8vICAgRGlzYWJsZWQgLSBpbmRp
Y2F0ZXMgdGhhdCBhIGNvbnRyb2wgY2FuJ3QgYmUgbW9kaWZpZWQgb3Igc2VsZWN0ZWQKLSAgICAv
LyAgICAgICAgICAgICAgKGNvcnJlc3BvbmRzIHRvIEhUTUwgJ2Rpc2FibGVkJyBhdHRyaWJ1dGUp
Ci0gICAgLy8gICBSZWFkT25seSAtIGluZGljYXRlcyB0aGF0IGEgY29udHJvbCBjYW4ndCBiZSBt
b2RpZmllZCBidXQgY2FuIGJlCi0gICAgLy8gICAgICAgICAgICAgIHNlbGVjdGVkCi0gICAgLy8g
ICBOb3JtYWwgICAtIHRoZSBub3JtYWwgc3RhdGUgb2YgY29udHJvbCBvbiB0aGUgcGFnZSB3aGVu
IGl0IGlzbid0Ci0gICAgLy8gICAgICAgICAgICAgIGZvY3VzZWQgb3Igb3RoZXJ3aXNlIGFjdGl2
ZQotICAgIC8vICAgSG90ICAgICAgLSB3aGVuIHRoZSBtb3VzZSBpcyBob3ZlcmluZyBvdmVyIGEg
cGFydCBvZiB0aGUgY29udHJvbCwKLSAgICAvLyAgICAgICAgICAgICAgYWxsIHRoZSBvdGhlciBw
YXJ0cyBhcmUgY29uc2lkZXJlZCAiaG90IgotICAgIC8vICAgSG92ZXIgICAgLSB3aGVuIHRoZSBt
b3VzZSBpcyBkaXJlY3RseSBvdmVyIGEgY29udHJvbCAodGhlIENTUwotICAgIC8vICAgICAgICAg
ICAgICAgOmhvdmVyIHBzZXVkby1jbGFzcykKLSAgICAvLyAgIEZvY3VzZWQgIC0gd2hlbiB0aGUg
Y29udHJvbCBoYXMgdGhlIGtleWJvYXJkIGZvY3VzCi0gICAgLy8gICBQcmVzc2VkICAtIHdoZW4g
dGhlIGNvbnRyb2wgaXMgYmVpbmcgdHJpZ2dlcmVkIChieSBhIG1vdXNlZG93biBvcgotICAgIC8v
ICAgICAgICAgICAgICBhIGtleSBldmVudCkuCi0gICAgLy8gICBJbmRldGVybWluYXRlIC0gd2hl
biBzZXQgdG8gaW5kZXRlcm1pbmF0ZSAob25seSBmb3IgcHJvZ3Jlc3MgYmFyKQotICAgIGVudW0g
U3RhdGUgewotICAgICAgICBVbmtub3duU3RhdGUgPSAwLAotICAgICAgICBEaXNhYmxlZFN0YXRl
LAotICAgICAgICBSZWFkT25seVN0YXRlLAotICAgICAgICBOb3JtYWxTdGF0ZSwKLSAgICAgICAg
SG90U3RhdGUsCi0gICAgICAgIEhvdmVyU3RhdGUsCi0gICAgICAgIEZvY3VzZWRTdGF0ZSwKLSAg
ICAgICAgUHJlc3NlZFN0YXRlLAotICAgICAgICBJbmRldGVybWluYXRlU3RhdGUKLSAgICB9Owot
Ci0gICAgLy8gVGhpcyBsaXN0IG9mIHR5cGVzIG1vc3RseSBtaXJyb3JzIHRoZSBsaXN0IGluCi0g
ICAgLy8gV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmggYnV0IGlzIG1haW50YWluZWQKLSAg
ICAvLyBzZXBhcmF0ZWx5IHNpbmNlIHRoYXQgaXNuJ3QgcHVibGljIGFuZCBhbHNvIHRvIG1pbmlt
aXplIGRlcGVuZGVuY2llcy4KLSAgICAvLwotICAgIC8vIE5vdGUgdGhhdCB3aGF0IHRoZSB1c2Vy
IG1pZ2h0IHRoaW5rIG9mIGFzIGEgc2luZ2xlIGNvbnRyb2wgY2FuIGJlCi0gICAgLy8gbWFkZSB1
cCBvZiBtdWx0aXBsZSBwYXJ0cy4gRm9yIGV4YW1wbGUsIGEgc2luZ2xlIHNjcm9sbCBiYXIgY29u
dGFpbnMKLSAgICAvLyBzaXggY2xpY2thYmxlIHBhcnRzIC0gdHdvIGFycm93cywgdGhlICJ0aHVt
YiIgaW5kaWNhdGluZyB0aGUgY3VycmVudAotICAgIC8vIHBvc2l0aW9uIG9uIHRoZSBiYXIsIHRo
ZSBvdGhlciB0d28gcGFydHMgb2YgdGhlIGJhciAoYmVmb3JlIGFuZCBhZnRlcgotICAgIC8vIHRo
ZSB0aHVtYikgYW5kIHRoZSAiZ3JpcHBlciIgb24gdGhlIHRodW1iIGl0c2VsZi4KLSAgICAvLwot
ICAgIGVudW0gVHlwZSB7Ci0gICAgICAgIFVua25vd25UeXBlID0gMCwKLSAgICAgICAgVGV4dEZp
ZWxkVHlwZSwKLSAgICAgICAgUHVzaEJ1dHRvblR5cGUsCi0gICAgICAgIFVuY2hlY2tlZEJveFR5
cGUsCi0gICAgICAgIENoZWNrZWRCb3hUeXBlLAotICAgICAgICBJbmRldGVybWluYXRlQ2hlY2ti
b3hUeXBlLAotICAgICAgICBVbmNoZWNrZWRSYWRpb1R5cGUsCi0gICAgICAgIENoZWNrZWRSYWRp
b1R5cGUsCi0gICAgICAgIEhvcml6b250YWxTY3JvbGxUcmFja0JhY2tUeXBlLAotICAgICAgICBI
b3Jpem9udGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZSwKLSAgICAgICAgSG9yaXpvbnRhbFNjcm9s
bFRodW1iVHlwZSwKLSAgICAgICAgSG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBlLAotICAgICAgICBW
ZXJ0aWNhbFNjcm9sbFRyYWNrQmFja1R5cGUsCi0gICAgICAgIFZlcnRpY2FsU2Nyb2xsVHJhY2tG
b3J3YXJkVHlwZSwKLSAgICAgICAgVmVydGljYWxTY3JvbGxUaHVtYlR5cGUsCi0gICAgICAgIFZl
cnRpY2FsU2Nyb2xsR3JpcFR5cGUsCi0gICAgICAgIExlZnRBcnJvd1R5cGUsCi0gICAgICAgIFJp
Z2h0QXJyb3dUeXBlLAotICAgICAgICBVcEFycm93VHlwZSwKLSAgICAgICAgRG93bkFycm93VHlw
ZSwKLSAgICAgICAgSG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZSwKLSAgICAgICAgSG9yaXpvbnRh
bFNsaWRlclRodW1iVHlwZSwKLSAgICAgICAgVmVydGljYWxTbGlkZXJUcmFja1R5cGUsCi0gICAg
ICAgIFZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlLAotICAgICAgICBEcm9wRG93bkJ1dHRvblR5cGUs
Ci0gICAgICAgIFByb2dyZXNzQmFyVHlwZQotICAgIH07Ci0KLSAgICAvLyBDb25zdHJ1Y3RzIGEg
Y29udHJvbCBvZiB0aGUgZ2l2ZW4gc2l6ZSwgdHlwZSBhbmQgc3RhdGUgdG8gZHJhdwotICAgIC8v
IG9uIHRvIHRoZSBnaXZlbiBjYW52YXMuCi0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luKFNrQ2Fu
dmFzKiwgY29uc3QgU2tJUmVjdCYsIFR5cGUsIFN0YXRlKTsKLSAgICB+V2ViVGhlbWVDb250cm9s
RFJUV2luKCk7Ci0KLSAgICAvLyBEcmF3cyB0aGUgY29udHJvbC4KLSAgICB2b2lkIGRyYXcoKTsK
LQotICAgIC8vIFVzZSB0aGlzIGZvciBUZXh0RmllbGQgY29udHJvbHMgaW5zdGVhZCwgYmVjYXVz
ZSB0aGUgbG9naWMKLSAgICAvLyBmb3IgZHJhd2luZyB0aGVtIGlzIGRlcGVuZGVudCBvbiB3aGF0
IFdlYktpdCB0ZWxscyB1cyB0byBkby4KLSAgICAvLyBJZiBkcmF3RWRnZXMgaXMgdHJ1ZSwgZHJh
dyBhbiBlZGdlIGFyb3VuZCB0aGUgY29udHJvbC4gSWYKLSAgICAvLyBmaWxsQ29udGVudEFyZWEg
aXMgdHJ1ZSwgZmlsbCB0aGUgY29udGVudCBhcmVhIHdpdGggdGhlIGdpdmVuIGNvbG9yLgotICAg
IHZvaWQgZHJhd1RleHRGaWVsZChib29sIGRyYXdFZGdlcywgYm9vbCBmaWxsQ29udGVudEFyZWEs
IFNrQ29sb3IpOwotCi0gICAgLy8gVXNlIHRoaXMgZm9yIGRyYXdpbmcgUHJvZ3Jlc3NCYXIgY29u
dHJvbHMgaW5zdGVhZCwgc2luY2Ugd2UKLSAgICAvLyBuZWVkIHRvIGtub3cgdGhlIHJlY3QgdG8g
ZmlsbCBpbnNpZGUgdGhlIGJhci4KLSAgICB2b2lkIGRyYXdQcm9ncmVzc0Jhcihjb25zdCBTa0lS
ZWN0JiBmaWxsUmVjdCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRHJhd3MgYSBib3ggb2Ygc2l6ZSBz
cGVjaWZpZWQgYnkgaXJlY3QsIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4KLSAgICAvLyBU
aGUgYm94IHdpbGwgaGF2ZSBhIGJvcmRlciBkcmF3biBpbiB0aGUgZGVmYXVsdCBlZGdlIGNvbG9y
LgotICAgIHZvaWQgYm94KGNvbnN0IFNrSVJlY3QmIGlyZWN0LCBTa0NvbG9yKTsKLQotCi0gICAg
Ly8gRHJhd3MgYSB0cmlhbmdsZSBvZiBzaXplIHNwZWNpZmllZCBieSB0aGUgdGhyZWUgcGFpcnMg
b2YgY29vcmRpbmF0ZXMsCi0gICAgLy8gZmlsbGVkIHdpdGggdGhlIGdpdmVuIGNvbG9yLiBUaGUg
Ym94IHdpbGwgaGF2ZSBhbiBlZGdlIGRyYXduIGluIHRoZQotICAgIC8vIGRlZmF1bHQgZWRnZSBj
b2xvci4KLSAgICB2b2lkIHRyaWFuZ2xlKGludCB4MCwgaW50IHkwLCBpbnQgeDEsIGludCB5MSwg
aW50IHgyLCBpbnQgeTIsIFNrQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYSByZWN0YW5nbGUgdGhl
IHNpemUgb2YgdGhlIGNvbnRyb2wgd2l0aCByb3VuZGVkIGNvcm5lcnMsIGZpbGxlZAotICAgIC8v
IHdpdGggdGhlIHNwZWNpZmllZCBjb2xvciAoYW5kIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1
bHQgZWRnZSBjb2xvcikuCi0gICAgdm9pZCByb3VuZFJlY3QoU2tDb2xvcik7Ci0KLSAgICAvLyBE
cmF3cyBhbiBvdmFsIHRoZSBzaXplIG9mIHRoZSBjb250cm9sLCBmaWxsZWQgd2l0aCB0aGUgc3Bl
Y2lmaWVkIGNvbG9yCi0gICAgLy8gYW5kIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRn
ZSBjb2xvci4KLSAgICB2b2lkIG92YWwoU2tDb2xvcik7Ci0KLSAgICAvLyBEcmF3cyBhIGNpcmNs
ZSBjZW50ZXJlZCBpbiB0aGUgY29udHJvbCB3aXRoIHRoZSBzcGVjaWZpZWQgcmFkaXVzLAotICAg
IC8vIGZpbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgY29sb3IsIGFuZCB3aXRoIGEgYm9yZGVyIGRy
YXcgaW4gdGhlCi0gICAgLy8gZGVmYXVsdCBlZGdlIGNvbG9yLgotICAgIHZvaWQgY2lyY2xlKFNr
U2NhbGFyIHJhZGl1cywgU2tDb2xvcik7Ci0KLSAgICAvLyBEcmF3cyBhIGJveCB0aGUgc2l6ZSBv
ZiB0aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhlIG91dGVyQ29sb3IgYW5kCi0gICAgLy8gd2l0
aCBhIGJvcmRlciBpbiB0aGUgZGVmYXVsdCBlZGdlIGNvbG9yLCBhbmQgdGhlbiBkcmF3cyBhbm90
aGVyIGJveAotICAgIC8vIGluZGVudGVkIG9uIGFsbCBmb3VyIHNpZGVzIGJ5IHRoZSBzcGVjaWZp
ZWQgYW1vdW50cywgZmlsbGVkIHdpdGggdGhlCi0gICAgLy8gaW5uZXIgY29sb3IgYW5kIHdpdGgg
YSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lkIG5lc3RlZEJveGVz
KGludCBpbmRlbnRMZWZ0LAotICAgICAgICAgICAgICAgICAgICAgaW50IGluZGVudFRvcCwKLSAg
ICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRSaWdodCwKLSAgICAgICAgICAgICAgICAgICAg
IGludCBpbmRlbnRCb3R0b20sCi0gICAgICAgICAgICAgICAgICAgICBTa0NvbG9yIG91dGVyQ29s
b3IsCi0gICAgICAgICAgICAgICAgICAgICBTa0NvbG9yIGlubmVyQ29sb3IpOwotCi0gICAgLy8g
RHJhd3MgYSBsaW5lIGJldHdlZW4gdGhlIHR3byBwb2ludHMgaW4gdGhlIGdpdmVuIGNvbG9yLgot
ICAgIHZvaWQgbGluZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIFNrQ29sb3IpOwot
Ci0gICAgLy8gRHJhd3MgYSBkaXN0aW5jdGl2ZSBtYXJrIG9uIHRoZSBjb250cm9sIGZvciBlYWNo
IHN0YXRlLCBzbyB0aGF0IHRoZQotICAgIC8vIHN0YXRlIG9mIHRoZSBjb250cm9sIGNhbiBiZSBk
ZXRlcm1pbmVkIHdpdGhvdXQgbmVlZGluZyB0byBrbm93IHdoaWNoCi0gICAgLy8gY29sb3IgaXMg
d2hpY2guCi0gICAgdm9pZCBtYXJrU3RhdGUoKTsKLQotICAgIFNrQ2FudmFzKiBtX2NhbnZhczsK
LSAgICBjb25zdCBTa0lSZWN0IG1faXJlY3Q7Ci0gICAgY29uc3QgVHlwZSBtX3R5cGU7Ci0gICAg
Y29uc3QgU3RhdGUgbV9zdGF0ZTsKLSAgICBjb25zdCBTa0NvbG9yIG1fZWRnZUNvbG9yOwotICAg
IGNvbnN0IFNrQ29sb3IgbV9iZ0NvbG9yOwotICAgIGNvbnN0IFNrQ29sb3IgbV9mZ0NvbG9yOwot
Ci0gICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgY29udmVuaWVuY2UgYWNjZXNzb3JzIGZvciBtX2ly
ZWN0LgotICAgIGNvbnN0IGludCBtX2xlZnQ7Ci0gICAgY29uc3QgaW50IG1fcmlnaHQ7Ci0gICAg
Y29uc3QgaW50IG1fdG9wOwotICAgIGNvbnN0IGludCBtX2JvdHRvbTsKLSAgICBjb25zdCBpbnQg
bV93aWR0aDsKLSAgICBjb25zdCBpbnQgbV9oZWlnaHQ7Ci19OwotCi0jZW5kaWYgLy8gV2ViVGhl
bWVDb250cm9sRFJUV2luX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
OTBmZTY2Yzk1MjdmMDFhNTQzMTA2Nzk1MmViZWYyOTQ5MDkxNGFkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIFRoaXMg
aW1wbGVtZW50cyB0aGUgV2ViVGhlbWVFbmdpbmUgQVBJIGluIHN1Y2ggYSB3YXkgdGhhdCB3ZSBt
YXRjaCB0aGUgTWFjCi0vLyBwb3J0IHJlbmRlcmluZyBtb3JlIHRoYW4gdXN1YWwgQ2hyb21pdW0g
cGF0aCwgdGh1cyBhbGxvd2luZyB1cyB0byBzaGFyZQotLy8gbW9yZSBwaXhlbCBiYXNlbGluZXMu
Ci0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVEUlRNYWNfaAotI2RlZmluZSBXZWJUaGVtZUVuZ2lu
ZURSVE1hY19oCi0KLSNpbmNsdWRlIDxwdWJsaWMvbWFjL1dlYlRoZW1lRW5naW5lLmg+Ci0KLWNs
YXNzIFdlYlRoZW1lRW5naW5lRFJUTWFjIDogcHVibGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUg
ewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRodW1iKAotICAgICAg
ICBXZWJLaXQ6OldlYkNhbnZhcyosCi0gICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0
YXRlLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAotICAgICAgICBjb25z
dCBXZWJLaXQ6OldlYlJlY3QmLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpTY3JvbGxiYXJJbmZvJik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50SElU
aGVtZVNjcm9sbGJhclRodW1iKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCi0gICAgICAg
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1l
RW5naW5lOjpTaXplLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAotICAgICAgICBj
b25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRodW1iKAotICAgICAgICBXZWJLaXQ6Oldl
YkNhbnZhcyosCi0gICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAotICAgICAg
ICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAotICAgICAgICBjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJ
bmZvJik7Ci19OwotCi0jZW5kaWYgLy8gV2ViVGhlbWVFbmdpbmVEUlRNYWNfaApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0g
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY2ZGJhY2E4MTI2N2M2MzI2YWMxOTE5NGE2
NDkzM2Q5ZDIxZGFiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIldlYlRoZW1lRW5naW5l
RFJUTWFjLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ2FudmFzLmg+Ci0jaW5jbHVkZSA8cHVi
bGljL1dlYlJlY3QuaD4KLSNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX21hYy5oIgotI2lt
cG9ydCA8QXBwS2l0L05TQWZmaW5lVHJhbnNmb3JtLmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNHcmFw
aGljc0NvbnRleHQuaD4KLSNpbXBvcnQgPEFwcEtpdC9OU1Njcm9sbGVyLmg+Ci0jaW1wb3J0IDxB
cHBLaXQvTlNXaW5kb3cuaD4KLSNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+Ci0KLXVzaW5nIFdl
YktpdDo6V2ViQ2FudmFzOwotdXNpbmcgV2ViS2l0OjpXZWJSZWN0OwotdXNpbmcgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTsKLQotLy8gV2UgY2FuJ3QgZGlyZWN0bHkgdGVsbCB0aGUgTlNTY3JvbGxl
ciB0byBkcmF3IGl0c2VsZiBhcyBhY3RpdmUgb3IgaW5hY3RpdmUsCi0vLyBpbnN0ZWFkIHdlIGhh
dmUgdG8gbWFrZSBpdCBhIGNoaWxkIG9mIGFuIChpbilhY3RpdmUgd2luZG93LiBUaGlzIGNsYXNz
IGxldHMKLS8vIHVzIGZha2UgdGhhdCBwYXJlbnQgd2luZG93LgotQGludGVyZmFjZSBGYWtlQWN0
aXZlV2luZG93IDogTlNXaW5kb3cgewotQHByaXZhdGUKLSAgICBCT09MIGhhc0FjdGl2ZUNvbnRy
b2xzOwotfQotKyAoTlNXaW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRvdzsKLSsgKE5TV2luZG93Kilh
bHdheXNJbmFjdGl2ZVdpbmRvdzsKLS0gKGlkKWluaXRXaXRoQWN0aXZlQ29udHJvbHM6KEJPT0wp
X2hhc0FjdGl2ZUNvbnRyb2xzOwotLSAoQk9PTClfaGFzQWN0aXZlQ29udHJvbHM7Ci1AZW5kCi0K
LUBpbXBsZW1lbnRhdGlvbiBGYWtlQWN0aXZlV2luZG93Ci0KLXN0YXRpYyBOU1dpbmRvdyogYWx3
YXlzQWN0aXZlV2luZG93ID0gbmlsOwotc3RhdGljIE5TV2luZG93KiBhbHdheXNJbmFjdGl2ZVdp
bmRvdyA9IG5pbDsKLQotKyAoTlNXaW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRvdwotewotICAgIGlm
IChhbHdheXNBY3RpdmVXaW5kb3cgPT0gbmlsKQotICAgICAgICBhbHdheXNBY3RpdmVXaW5kb3cg
PSBbW3NlbGYgYWxsb2NdIGluaXRXaXRoQWN0aXZlQ29udHJvbHM6WUVTXTsKLSAgICByZXR1cm4g
YWx3YXlzQWN0aXZlV2luZG93OwotfQotCi0rIChOU1dpbmRvdyopYWx3YXlzSW5hY3RpdmVXaW5k
b3cKLXsKLSAgICBpZiAoYWx3YXlzSW5hY3RpdmVXaW5kb3cgPT0gbmlsKQotICAgICAgICBhbHdh
eXNJbmFjdGl2ZVdpbmRvdyA9IFtbc2VsZiBhbGxvY10gaW5pdFdpdGhBY3RpdmVDb250cm9sczpO
T107Ci0gICAgcmV0dXJuIGFsd2F5c0luYWN0aXZlV2luZG93OwotfQotCi0tIChpZClpbml0V2l0
aEFjdGl2ZUNvbnRyb2xzOihCT09MKV9oYXNBY3RpdmVDb250cm9scwotewotICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07Ci0gICAgaGFzQWN0aXZlQ29udHJvbHMgPSBfaGFzQWN0aXZlQ29udHJvbHM7
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEJPT0wpX2hhc0FjdGl2ZUNvbnRyb2xzCi17Ci0g
ICAgcmV0dXJuIGhhc0FjdGl2ZUNvbnRyb2xzOwotfQotCi1AZW5kCi0KLXZvaWQgV2ViVGhlbWVF
bmdpbmVEUlRNYWM6OnBhaW50U2Nyb2xsYmFyVGh1bWIoCi0gICAgV2ViQ2FudmFzKiBjYW52YXMs
Ci0gICAgV2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlLAotICAgIFdlYlRoZW1lRW5naW5lOjpT
aXplIHNpemUsCi0gICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICBjb25zdCBXZWJUaGVtZUVu
Z2luZTo6U2Nyb2xsYmFySW5mbyYgc2Nyb2xsYmFySW5mbykKLXsKLSAgICAvLyBUbyBtYXRjaCB0
aGUgTWFjIHBvcnQsIHdlIHN0aWxsIHVzZSBISVRoZW1lIGZvciBpbm5lciBzY3JvbGxiYXJzLgot
ICAgIGlmIChzY3JvbGxiYXJJbmZvLnBhcmVudCA9PSBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFy
UGFyZW50UmVuZGVyTGF5ZXIpCi0gICAgICAgIHBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKGNh
bnZhcywgc3RhdGUsIHNpemUsIHJlY3QsIHNjcm9sbGJhckluZm8pOwotICAgIGVsc2UKLSAgICAg
ICAgcGFpbnROU1Njcm9sbGVyU2Nyb2xsYmFyVGh1bWIoY2FudmFzLCBzdGF0ZSwgc2l6ZSwgcmVj
dCwgc2Nyb2xsYmFySW5mbyk7Ci19Ci0KLXN0YXRpYyBUaGVtZVRyYWNrRW5hYmxlU3RhdGUgc3Rh
dGVUb0hJRW5hYmxlU3RhdGUoV2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlKQotewotICAgIHN3
aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFdlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkOgot
ICAgICAgICByZXR1cm4ga1RoZW1lVHJhY2tEaXNhYmxlZDsKLSAgICBjYXNlIFdlYlRoZW1lRW5n
aW5lOjpTdGF0ZUluYWN0aXZlOgotICAgICAgICByZXR1cm4ga1RoZW1lVHJhY2tJbmFjdGl2ZTsK
LSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4ga1RoZW1lVHJhY2tBY3RpdmU7Ci0gICAgfQot
fQotCi0vLyBEdXBsaWNhdGVkIGZyb20gd2Via2l0L2dsdWUvd2VidGhlbWVlbmdpbmVfaW1wbF9t
YWMuY2MgaW4gdGhlIGRvd25zdHJlYW0KLS8vIENocm9taXVtIFdlYlRoZW1lRW5naW5lIGltcGxl
bWVudGF0aW9uLgotdm9pZCBXZWJUaGVtZUVuZ2luZURSVE1hYzo6cGFpbnRISVRoZW1lU2Nyb2xs
YmFyVGh1bWIoCi0gICAgV2ViQ2FudmFzKiBjYW52YXMsCi0gICAgV2ViVGhlbWVFbmdpbmU6OlN0
YXRlIHN0YXRlLAotICAgIFdlYlRoZW1lRW5naW5lOjpTaXplIHNpemUsCi0gICAgY29uc3QgV2Vi
UmVjdCYgcmVjdCwKLSAgICBjb25zdCBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYgc2Ny
b2xsYmFySW5mbykKLXsKLSAgICBISVRoZW1lVHJhY2tEcmF3SW5mbyB0cmFja0luZm87Ci0gICAg
dHJhY2tJbmZvLnZlcnNpb24gPSAwOwotICAgIHRyYWNrSW5mby5raW5kID0gc2l6ZSA9PSBXZWJU
aGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBrVGhlbWVNZWRpdW1TY3JvbGxCYXIgOiBrVGhlbWVT
bWFsbFNjcm9sbEJhcjsKLSAgICB0cmFja0luZm8uYm91bmRzID0gQ0dSZWN0TWFrZShyZWN0Lngs
IHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpOwotICAgIHRyYWNrSW5mby5taW4gPSAw
OwotICAgIHRyYWNrSW5mby5tYXggPSBzY3JvbGxiYXJJbmZvLm1heFZhbHVlOwotICAgIHRyYWNr
SW5mby52YWx1ZSA9IHNjcm9sbGJhckluZm8uY3VycmVudFZhbHVlOwotICAgIHRyYWNrSW5mby50
cmFja0luZm8uc2Nyb2xsYmFyLnZpZXdzaXplID0gc2Nyb2xsYmFySW5mby52aXNpYmxlU2l6ZTsK
LSAgICB0cmFja0luZm8uYXR0cmlidXRlcyA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhckluZm8ub3Jp
ZW50YXRpb24gPT0gV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhck9yaWVudGF0aW9uSG9yaXpvbnRh
bCkKLSAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgfD0ga1RoZW1lVHJhY2tIb3Jpem9udGFs
OwotCi0gICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc3RhdGVUb0hJRW5hYmxlU3RhdGUoc3Rh
dGUpOwotCi0gICAgdHJhY2tJbmZvLnRyYWNrSW5mby5zY3JvbGxiYXIucHJlc3NTdGF0ZSA9Ci0g
ICAgICAgIHN0YXRlID09IFdlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQgPyBrVGhlbWVUaHVt
YlByZXNzZWQgOiAwOwotICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IChrVGhlbWVUcmFja1No
b3dUaHVtYiB8IGtUaGVtZVRyYWNrSGlkZVRyYWNrKTsKLSAgICBnZng6OlNraWFCaXRMb2NrZXIg
Yml0TG9ja2VyKGNhbnZhcyk7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGJpdExvY2tl
ci5jZ0NvbnRleHQoKTsKLSAgICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFja0luZm8sIDAsIGNnQ29u
dGV4dCwga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1hbCk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVFbmdp
bmVEUlRNYWM6OnBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRodW1iKAotICAgIFdlYkNhbnZhcyog
Y2FudmFzLAotICAgIFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSwKLSAgICBXZWJUaGVtZUVu
Z2luZTo6U2l6ZSBzaXplLAotICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCi0gICAgY29uc3QgV2Vi
VGhlbWVFbmdpbmU6OlNjcm9sbGJhckluZm8mIHNjcm9sbGJhckluZm8pCi17Ci0gICAgW05TR3Jh
cGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKLSAgICBOU1Njcm9sbGVyKiBzY3JvbGxl
ciA9IFtbTlNTY3JvbGxlciBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KHJlY3QueCwg
cmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCldOwotICAgIFtzY3JvbGxlciBzZXRFbmFi
bGVkOnN0YXRlICE9IFdlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkXTsKLSAgICBpZiAoc3Rh
dGUgPT0gV2ViVGhlbWVFbmdpbmU6OlN0YXRlSW5hY3RpdmUpCi0gICAgICAgIFtbW0Zha2VBY3Rp
dmVXaW5kb3cgYWx3YXlzSW5hY3RpdmVXaW5kb3ddIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnNj
cm9sbGVyXTsKLSAgICBlbHNlCi0gICAgICAgIFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzQWN0
aXZlV2luZG93XSBjb250ZW50Vmlld10gYWRkU3VidmlldzpzY3JvbGxlcl07Ci0KLSAgICBbc2Ny
b2xsZXIgc2V0Q29udHJvbFNpemU6c2l6ZSA9PSBXZWJUaGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIg
PyBOU1JlZ3VsYXJDb250cm9sU2l6ZSA6IE5TU21hbGxDb250cm9sU2l6ZV07Ci0KLSAgICBkb3Vi
bGUgdmFsdWUgPSBkb3VibGUoc2Nyb2xsYmFySW5mby5jdXJyZW50VmFsdWUpIC8gZG91YmxlKHNj
cm9sbGJhckluZm8ubWF4VmFsdWUpOwotICAgIFtzY3JvbGxlciBzZXREb3VibGVWYWx1ZTogdmFs
dWVdOwotCi0gICAgZmxvYXQga25vYlByb3BvcnRpb24gPSBmbG9hdChzY3JvbGxiYXJJbmZvLnZp
c2libGVTaXplKSAvIGZsb2F0KHNjcm9sbGJhckluZm8udG90YWxTaXplKTsKLSAgICBbc2Nyb2xs
ZXIgc2V0S25vYlByb3BvcnRpb246IGtub2JQcm9wb3J0aW9uXTsKLQotICAgIGdmeDo6U2tpYUJp
dExvY2tlciBiaXRMb2NrZXIoY2FudmFzKTsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0g
Yml0TG9ja2VyLmNnQ29udGV4dCgpOwotICAgIE5TR3JhcGhpY3NDb250ZXh0KiBuc0dyYXBoaWNz
Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQ
b3J0OmNnQ29udGV4dCBmbGlwcGVkOllFU107Ci0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1
cnJlbnRDb250ZXh0Om5zR3JhcGhpY3NDb250ZXh0XTsKLQotICAgIC8vIERlc3BpdGUgcGFzc2lu
ZyBpbiBmcmFtZVJlY3QoKSB0byB0aGUgc2Nyb2xsZXIsIGl0IGFsd2F5cyBkcmF3cyBhdCAoMCwg
MCkuCi0gICAgLy8gRm9yY2UgaXQgdG8gZHJhdyBpbiB0aGUgcmlnaHQgbG9jYXRpb24gYnkgdHJh
bnNsYXRpbmcgdGhlIHdob2xlIGdyYXBoaWNzCi0gICAgLy8gY29udGV4dC4KLSAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0gICAgTlNBZmZpbmVUcmFuc2Zvcm0gKnRyYW5zZm9y
bSA9IFtOU0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1dOwotICAgIFt0cmFuc2Zvcm0gdHJhbnNs
YXRlWEJ5OnJlY3QueCB5Qnk6cmVjdC55XTsKLSAgICBbdHJhbnNmb3JtIGNvbmNhdF07Ci0KLSAg
ICBbc2Nyb2xsZXIgZHJhd0tub2JdOwotICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250
ZXh0KTsKLQotICAgIFtzY3JvbGxlciByZWxlYXNlXTsKLQotICAgIFtOU0dyYXBoaWNzQ29udGV4
dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07Ci19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDE1MGM0OTAyNTFjMjM0Y2JmMTFjMzZmYmNmZjY0OTM5ZGE4MGIwNDQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNzkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViVGhlbWVF
bmdpbmVEUlRXaW4uaCIKLQotI2luY2x1ZGUgIldlYlRoZW1lQ29udHJvbERSVFdpbi5oIgotI2lu
Y2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgotI2luY2x1ZGUg
PHB1YmxpYy9XZWJSZWN0Lmg+Ci0KLS8vIEFsdGhvdWdoIGFsbCB0aGlzIGNvZGUgaXMgZ2VuZXJp
Yywgd2UgaW5jbHVkZSB0aGVzZSBoZWFkZXJzCi0vLyB0byBwdWxsIGluIHRoZSBXaW5kb3dzICNk
ZWZpbmVzIGZvciB0aGUgcGFydHMgYW5kIHN0YXRlcyBvZgotLy8gdGhlIGNvbnRyb2xzLgotI2lu
Y2x1ZGUgPHZzc3R5bGUuaD4KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLSNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi0vLyBXZSBkZWZpbmUg
dGhpcyBmb3IgY2xhcml0eSwgYWx0aG91Z2ggdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBhIERGQ1Nf
Tk9STUFMIGluIHdpbnVzZXIuaC4KLXN0YXRpYyBjb25zdCBpbnQgZGZjc05vcm1hbCA9IDB4MDAw
MDsKLQotc3RhdGljIFNrSVJlY3Qgd2ViUmVjdFRvU2tJUmVjdChjb25zdCBXZWJSZWN0JiB3ZWJS
ZWN0KQotewotICAgIFNrSVJlY3QgaXJlY3Q7Ci0gICAgaXJlY3Quc2V0KHdlYlJlY3QueCwgd2Vi
UmVjdC55LCB3ZWJSZWN0LnggKyB3ZWJSZWN0LndpZHRoIC0gMSwgd2ViUmVjdC55ICsgd2ViUmVj
dC5oZWlnaHQgLSAxKTsKLSAgICByZXR1cm4gaXJlY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIGRyYXdD
b250cm9sKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViUmVjdCYgcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6VHlwZSBjdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6U3RhdGUgY3N0YXRlKQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbiBjb250
cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7Ci0gICAg
Y29udHJvbC5kcmF3KCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRyYXdUZXh0RmllbGQoV2ViQ2FudmFz
KiBjYW52YXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBj
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpT
dGF0ZSBjc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZHJhd0VkZ2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZpbGxDb250ZW50QXJlYSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViQ29sb3IgY29sb3IpCi17Ci0gICAgV2ViVGhlbWVDb250cm9s
RFJUV2luIGNvbnRyb2woY2FudmFzLCB3ZWJSZWN0VG9Ta0lSZWN0KHJlY3QpLCBjdHlwZSwgY3N0
YXRlKTsKLSAgICBjb250cm9sLmRyYXdUZXh0RmllbGQoZHJhd0VkZ2VzLCBmaWxsQ29udGVudEFy
ZWEsIGNvbG9yKTsKLX0KLQotc3RhdGljIHZvaWQgZHJhd1Byb2dyZXNzQmFyKFdlYkNhbnZhcyog
Y2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6VHlwZSBjdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OlN0YXRlIGNzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJSZWN0JiBiYXJSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlJlY3QmIGZpbGxSZWN0KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbiBjb250cm9sKGNh
bnZhcywgd2ViUmVjdFRvU2tJUmVjdChiYXJSZWN0KSwgY3R5cGUsIGNzdGF0ZSk7Ci0gICAgY29u
dHJvbC5kcmF3UHJvZ3Jlc3NCYXIod2ViUmVjdFRvU2tJUmVjdChmaWxsUmVjdCkpOwotfQotCi0v
LyBXZWJUaGVtZUVuZ2luZURSVFdpbgotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWlu
dEJ1dHRvbihXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBwYXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlwZTsKLSAgICBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93
blN0YXRlOwotCi0gICAgaWYgKHBhcnQgPT0gQlBfQ0hFQ0tCT1gpIHsKLSAgICAgICAgc3dpdGNo
IChzdGF0ZSkgewotICAgICAgICBjYXNlIENCU19VTkNIRUNLRUROT1JNQUw6Ci0gICAgICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU7Ci0gICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VESE9UOgotICAgICAgICAgICAgQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSE9UKSk7Ci0gICAg
ICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2VkQm94VHlwZTsK
LSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19VTkNIRUNLRURQUkVTU0VEOgot
ICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERG
Q1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
VW5jaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBD
QlNfVU5DSEVDS0VERElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU7Ci0gICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19DSEVDS0VETk9STUFMOgotICAgICAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCkp
OwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRCb3hU
eXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxT
dGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JTX0NIRUNLRURIT1Q6
Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwg
REZDU19DSEVDS0VEIHwgREZDU19IT1QpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBjYXNlIENCU19DSEVDS0VEUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBERkNTX1BVU0hFRCkpOwot
ICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRCb3hUeXBl
OwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3Rh
dGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19DSEVDS0VERElTQUJM
RUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNL
IHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfTUlYRUROT1JNQUw6Ci0gICAgICAgICAgICAvLyBDbGFz
c2ljIHRoZW1lIGNhbid0IHJlcHJlc2VudCBtaXhlZCBzdGF0ZSBjaGVja2JveC4gV2UgYXNzdW1l
Ci0gICAgICAgICAgICAvLyBpdCdzIGVxdWl2YWxlbnQgdG8gdW5jaGVja2VkLgotICAgICAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTkNIRUNLKTsKLSAgICAgICAgICAg
IGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBl
OwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JTX01JWEVESE9UOgotICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1Nf
SE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SW5kZXRl
cm1pbmF0ZUNoZWNrYm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENC
U19NSVhFRFBSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X0JVVFRPTkNIRUNLIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOwotICAgICAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19NSVhFRERJU0FCTEVEOgotICAgICAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSU5BQ1RJVkUp
KTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpJbmRldGVybWlu
YXRlQ2hlY2tib3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKEJQX1JBRElPQlVUVE9OID09IHBhcnQpIHsKLSAg
ICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFJCU19VTkNIRUNLRUROT1JNQUw6
Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfQlVUVE9OUkFESU8pOwot
ICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZFJhZGlv
VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFs
U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFJCU19VTkNIRUNLRURI
T1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElP
IHwgREZDU19IT1QpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpVbmNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBS
QlNfVU5DSEVDS0VEUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
KERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX1BVU0hFRCkpOwotICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VERElTQUJMRUQ6Ci0gICAgICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19JTkFDVElW
RSkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tl
ZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgUkJTX0NI
RUNLRUROT1JNQUw6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JV
VFRPTlJBRElPIHwgREZDU19DSEVDS0VEKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFJCU19DSEVDS0VESE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSE9UKSk7Ci0g
ICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZFJhZGlvVHlw
ZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFJCU19DSEVDS0VEUFJFU1NFRDoK
LSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBE
RkNTX0NIRUNLRUQgfCBERkNTX1BVU0hFRCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgUkJTX0NIRUNLRURESVNBQkxFRDoKLSAgICAgICAgICAgIEFTU0VSVChj
bGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0lO
QUNUSVZFKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hl
Y2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChCUF9QVVNIQlVUVE9OID09IHBhcnQpIHsKLSAgICAg
ICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFBCU19OT1JNQUw6Ci0gICAgICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfQlVUVE9OUFVTSCk7Ci0gICAgICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBQQlNfSE9UOgotICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19IT1QpKTsKLSAgICAgICAgICAg
IGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQdXNoQnV0dG9uVHlwZTsKLSAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFBCU19QUkVTU0VEOgotICAgICAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19QVVNIRUQpKTsKLSAgICAg
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQdXNoQnV0dG9uVHlwZTsKLSAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBQQlNfRElTQUJMRUQ6Ci0gICAgICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlBVU0ggfCBERkNTX0lOQUNU
SVZFKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1
dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRp
c2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFBCU19ERUZB
VUxURUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfQlVUVE9OUFVT
SCk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1dHRv
blR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkZvY3Vz
ZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgZHJhd0Nv
bnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotCi12b2lkIFdlYlRoZW1l
RW5naW5lRFJUV2luOjpwYWludE1lbnVMaXN0KFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAgIFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQotICAgIGlmIChDUF9EUk9QRE9X
TkJVVFRPTiA9PSBwYXJ0KSB7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpEcm9wRG93bkJ1dHRvblR5cGU7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAg
Y2FzZSBDQlhTX05PUk1BTDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZD
U19NRU5VQVJST1cpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JYU19I
T1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX01FTlVBUlJPVyB8
IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OkhvdmVyU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCWFNfUFJF
U1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9X
IHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBD
QlhTX0RJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19N
RU5VQVJST1cgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIENSQVNIKCk7Ci0KLSAgICBkcmF3Q29udHJv
bChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOwotfQotCi12b2lkIFdlYlRoZW1lRW5naW5l
RFJUV2luOjpwYWludFNjcm9sbGJhckFycm93KFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlJlY3QmIHJlY3QpCi17Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRl
OwotCi0gICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgQUJTX1VQTk9STUFMOgotICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMVVApOwotICAgICAgICBjdHlwZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBBQlNfRE9XTk5PUk1BTDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X1NDUk9MTERPV04pOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RG93
bkFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3Jt
YWxTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19MRUZUTk9STUFMOgotICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7Ci0gICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOwotICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgQUJTX1JJR0hUTk9STUFMOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IERGQ1NfU0NST0xMUklHSFQpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfVVBIT1Q6
Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hP
VCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7
Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfRE9XTkhPVDoKLSAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19IT1QpKTsKLSAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBBQlNfTEVGVEhPVDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19T
Q1JPTExMRUZUIHwgREZDU19IT1QpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OkxlZnRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfUklHSFRIT1Q6
Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMUklHSFQgfCBERkNT
X0hPVCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UmlnaHRBcnJv
d1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfVVBIT1ZFUjoKLSAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNf
RE9XTkhPVkVSOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMRE9X
Tik7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBl
OwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfTEVGVEhPVkVSOgotICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBB
QlNfUklHSFRIT1ZFUjoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9M
TFJJR0hUKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJy
b3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3Rh
dGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfVVBQUkVTU0VEOgotICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19QVVNIRUQgfCBERkNT
X0ZMQVQpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dU
eXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19ET1dOUFJFU1NFRDoKLSAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19QVVNIRUQgfCBE
RkNTX0ZMQVQpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25B
cnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3Nl
ZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0xFRlRQUkVTU0VEOgotICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTExFRlQgfCBERkNTX1BVU0hF
RCB8IERGQ1NfRkxBVCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
TGVmdEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQ
cmVzc2VkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfUklHSFRQUkVTU0VE
OgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZD
U19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19VUERJ
U0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwg
REZDU19JTkFDVElWRSkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
VXBBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlz
YWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19ET1dORElTQUJMRUQ6
Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1Nf
SU5BQ1RJVkUpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25B
cnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJs
ZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19MRUZURElTQUJMRUQ6Ci0g
ICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSU5B
Q1RJVkUpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJv
d1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRT
dGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19SSUdIVERJU0FCTEVEOgotICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19JTkFD
VElWRSkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UmlnaHRBcnJv
d1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRT
dGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZHJhd0NvbnRyb2woY2Fu
dmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdp
bjo6cGFpbnRTY3JvbGxiYXJUaHVtYihXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVj
dCYgcmVjdCkKLXsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBlOwotICAgIFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duU3RhdGU7Ci0K
LSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNlIFNCUF9USFVNQkJUTkhPUlo6Ci0gICAgICAg
IGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBl
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX1RIVU1CQlROVkVSVDoKLSAgICAgICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX0dSSVBQRVJIT1JaOgotICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX0dSSVBQRVJWRVJUOgotICAgICAgICBjdHlwZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTY3JvbGxHcmlwVHlwZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgU0NS
QlNfTk9STUFMOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwot
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgU0NSQlNfSE9UOgotICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfSE9UKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpIb3RTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNDUkJTX0hPVkVSOgot
ICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBTQ1JCU19QUkVTU0VEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlBy
ZXNzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNDUkJTX0RJU0FCTEVEOgot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVu
IGluIHByYWN0aWNlLgotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkcmF3Q29u
dHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOwotfQotCi12b2lkIFdlYlRoZW1lRW5n
aW5lRFJUV2luOjpwYWludFNjcm9sbGJhclRyYWNrKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0
YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJSZWN0JiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJSZWN0JiBhbGlnblJlY3QpCi17Ci0gICAgV2ViVGhlbWVDb250cm9s
RFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlwZTsK
LSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2FzZSBT
QlBfVVBQRVJUUkFDS0hPUlo6Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIFNCUF9MT1dFUlRSQUNLSE9SWjoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46Okhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tWRVJUOgotICAgICAgICBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6VmVydGljYWxTY3JvbGxUcmFja0JhY2tUeXBlOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgU0JQX0xPV0VSVFJBQ0tWRVJUOgotICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOwotICAgICAg
ICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgY2FzZSBT
Q1JCU19OT1JNQUw6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7
Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19IT1Q6Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCi0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19IT1ZFUjoKLSAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0NSQlNfUFJF
U1NFRDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVy
IGhhcHBlbiBpbiBwcmFjdGljZS4KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNDUkJTX0RJ
U0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOwot
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0
YXRlKTsKLX0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRTcGluQnV0dG9uKFdl
YkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBwYXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpU
eXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlwZTsKLSAgICBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
VW5rbm93blN0YXRlOwotCi0gICAgaWYgKHBhcnQgPT0gU1BOUF9VUCkgewotICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAgICAgIHN3aXRjaCAo
c3RhdGUpIHsKLSAgICAgICAgY2FzZSBVUFNfTk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBVUFNfRElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX1NDUk9MTFVQIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVVBTX1BSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgVVBTX0hPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgfQotICAgIH0gZWxzZSBpZiAocGFydCA9PSBTUE5QX0RPV04pIHsKLSAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAgICAgIHN3aXRjaCAo
c3RhdGUpIHsKLSAgICAgICAgY2FzZSBETlNfTk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOwotICAgICAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEROU19ESVNBQkxFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEROU19QUkVTU0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRE5TX0hPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Ci19Ci0KLXZvaWQg
V2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50VGV4dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvbG9yIGNv
bG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmaWxs
Q29udGVudEFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGRyYXdFZGdlcykKLXsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBlOwotICAgIFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duU3Rh
dGU7Ci0KLSAgICBBU1NFUlQoRVBfRURJVFRFWFQgPT0gcGFydCk7Ci0gICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlRleHRGaWVsZFR5cGU7Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7
Ci0gICAgY2FzZSBFVFNfTk9STUFMOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRm
Y3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1h
bFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVRTX0hPVDoKLSAgICAgICAgQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFVFNf
RElTQUJMRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7
Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVUU19TRUxFQ1RFRDoKLSAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
RVRTX0ZPQ1VTRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7
Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Rm9jdXNlZFN0YXRlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVRTX1JFQURPTkxZOgotICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlJlYWRPbmx5U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVs
dDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LQotICAgIGRyYXdUZXh0RmllbGQoY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlLCBkcmF3RWRn
ZXMsIGZpbGxDb250ZW50QXJlYSwgY29sb3IpOwotfQotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJU
V2luOjpwYWludFRyYWNrYmFyKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAgIFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blR5
cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQotICAgIGlmIChUS1BfVEhVTUJCT1RUT00gPT0g
cGFydCkgewotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRh
bFNsaWRlclRodW1iVHlwZTsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNl
IFRVU19OT1JNQUw6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3Jt
YWwpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxT
dGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgVFVTX0hPVDoKLSAgICAg
ICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19IT1QpOwotICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3RTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgVFVTX0RJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgVFVTX1BSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IERGQ1NfUFVTSEVEKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFRLUF9USFVNQlZFUlQgPT0gcGFydCkgewotICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTbGlkZXJUaHVtYlR5cGU7
Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBUVVNfTk9STUFMOgotICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFRVU19IT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfSE9UKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNl
IFRVU19ESVNBQkxFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19J
TkFDVElWRSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRp
c2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFRVU19QUkVT
U0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7Ci0g
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBl
bHNlIGlmIChUS1BfVFJBQ0sgPT0gcGFydCkgewotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6SG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZTsKLSAgICAgICAgQVNTRVJUKHN0
YXRlID09IFRSU19OT1JNQUwpOwotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NO
b3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0
YXRlOwotICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLVkVSVCA9PSBwYXJ0KSB7Ci0gICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpWZXJ0aWNhbFNsaWRlclRyYWNrVHlwZTsKLSAg
ICAgICAgQVNTRVJUKHN0YXRlID09IFRSVlNfTk9STUFMKTsKLSAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0KLSAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOwot
fQotCi0KLXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50UHJvZ3Jlc3NCYXIoV2ViS2l0
OjpXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBiYXJSZWN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIHZhbHVl
UmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBk
ZXRlcm1pbmF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlKQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6UHJvZ3Jlc3NCYXJUeXBlOwotICAgIFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6U3RhdGUgY3N0YXRlID0gZGV0ZXJtaW5hdGUgPyBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
Ok5vcm1hbFN0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SW5kZXRlcm1pbmF0ZVN0YXRlOwot
ICAgIGRyYXdQcm9ncmVzc0JhcihjYW52YXMsIGN0eXBlLCBjc3RhdGUsIGJhclJlY3QsIHZhbHVl
UmVjdCk7Ci19Ci0KLQotV2ViS2l0OjpXZWJTaXplIFdlYlRoZW1lRW5naW5lRFJUV2luOjpnZXRT
aXplKGludCBwYXJ0KQotewotICAgIHJldHVybiBXZWJLaXQ6OldlYlNpemUoKTsKLX0KLQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRX
aW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2lu
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NDUxNGJiMmEwNzA2ZjYyYmEzYTJm
OTI0YWVhZjMwZWE4MTQzN2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRX
aW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gVGhpcyBpbXBsZW1lbnRzIHRo
ZSBXZWJUaGVtZUVuZ2luZSBBUEkgdXNlZCBieSB0aGUgV2luZG93cyB2ZXJzaW9uIG9mCi0vLyBD
aHJvbWl1bSB0byByZW5kZXIgbmF0aXZlIGZvcm0gY29udHJvbHMgbGlrZSBjaGVja2JveGVzLCBy
YWRpbyBidXR0b25zLAotLy8gYW5kIHNjcm9sbCBiYXJzLgotLy8gVGhlIG5vcm1hbCBpbXBsZW1l
bnRhdGlvbiAobmF0aXZlX3RoZW1lKSByZW5kZXJzIHRoZSBjb250cm9scyB1c2luZyBlaXRoZXIK
LS8vIHRoZSBVWFRoZW1lIHRoZW1pbmcgZW5naW5lIHByZXNlbnQgaW4gWFAsIFZpc3RhLCBhbmQg
V2luIDcsIG9yIHRoZSAiY2xhc3NpYyIKLS8vIHRoZW1lIHVzZWQgaWYgdGhhdCB0aGVtZSBpcyBz
ZWxlY3RlZCBpbiB0aGUgRGVza3RvcCBzZXR0aW5ncy4KLS8vIFVuZm9ydHVuYXRlbHksIGJvdGgg
b2YgdGhlc2UgdGhlbWVzIHJlbmRlciBjb250cm9scyBkaWZmZXJlbnRseSBvbiB0aGUKLS8vIGRp
ZmZlcmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgotLy8KLS8vIEluIG9yZGVyIHRvIGVuc3VyZSBt
YXhpbXVtIGNvbnNpc3RlbmN5IG9mIGJhc2VsaW5lcyBhY3Jvc3MgdGhlIGRpZmZlcmVudAotLy8g
V2luZG93cyB2ZXJzaW9ucywgd2UgcHJvdmlkZSBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBmb3Ig
RFJUIGhlcmUKLS8vIGluc3RlYWQuIFRoZXNlIGNvbnRyb2xzIGFyZSBhY3R1YWxseSBwbGF0Zm9y
bS1pbmRlcGVuZGVudCAodGhleSdyZSByZW5kZXJlZAotLy8gdXNpbmcgU2tpYSkgYW5kIGNvdWxk
IGJlIHVzZWQgb24gTGludXggYW5kIHRoZSBNYWMgYXMgd2VsbCwgc2hvdWxkIHdlCi0vLyBjaG9v
c2UgdG8gZG8gc28gYXQgc29tZSBwb2ludC4KLS8vCi0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVE
UlRXaW5faAotI2RlZmluZSBXZWJUaGVtZUVuZ2luZURSVFdpbl9oCi0KLSNpbmNsdWRlIDxwdWJs
aWMvd2luL1dlYlRoZW1lRW5naW5lLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0K
LWNsYXNzIFdlYlRoZW1lRW5naW5lRFJUV2luIDogcHVibGljIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlRoZW1lRW5naW5lRFJUV2luKTsKLXB1
YmxpYzoKLSAgICBXZWJUaGVtZUVuZ2luZURSVFdpbigpIHsgfQotCi0gICAgLy8gV2ViVGhlbWVF
bmdpbmUgbWV0aG9kczoKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oCi0gICAgICAgIFdl
YktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwK
LSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRNZW51TGlzdCgKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0
YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsK
LQotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckFycm93KAotICAgICAgICBXZWJLaXQ6
OldlYkNhbnZhcyosIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3Qg
V2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUaHVt
YigKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQg
Y2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRyYWNrKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZh
cyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0
IFdlYktpdDo6V2ViUmVjdCYsIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgYWxpZ25SZWN0KTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNwaW5CdXR0b24oCi0gICAgICAgIFdlYktpdDo6V2ViQ2Fu
dmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29u
c3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUZXh0RmllbGQo
Ci0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNs
YXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwgV2ViS2l0OjpXZWJD
b2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsCi0gICAgICAgIGJvb2wgZHJhd0VkZ2VzKTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrYmFyKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZh
cyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0
IFdlYktpdDo6V2ViUmVjdCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50UHJvZ3Jlc3NCYXIo
Ci0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBiYXJS
ZWN0LAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIHZhbHVlUmVjdCwKLSAgICAgICAg
Ym9vbCBkZXRlcm1pbmF0ZSwgZG91YmxlIHRpbWUpOwotCi0gICAgdmlydHVhbCBXZWJLaXQ6Oldl
YlNpemUgZ2V0U2l6ZShpbnQgcGFydCk7Ci19OwotCi0jZW5kaWYgLy8gV2ViVGhlbWVFbmdpbmVE
UlRXaW5faAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193955</attachid>
            <date>2013-03-19 17:41:38 -0700</date>
            <delta_ts>2013-03-19 22:33:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112751-20130320013728.patch</filename>
            <type>text/plain</type>
            <size>154563</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTgwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODQ4ZTNlY2FlNWQ4NTMyZjdjYTM3NTc0ZGNiOTEyNjI4
NmQzOTJiNC4uMzc5ZGQ5NGVhYTQ1Njg3MTMzYmUxNTY3NjFkNjg5NWQ4Y2VkMzYyMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDEzLTAzLTE5ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBXZWJUaGVtZUVuZ2luZSBpbXBsZW1lbnRhdGlvbnMg
dG8gVGVzdFJ1bm5lciBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTI3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJU
cmVlLmd5cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRl
c3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjp0aGVtZUVuZ2luZSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFRl
c3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0SW50ZXJmYWNlczo6dGhlbWVFbmdpbmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVz
dFRoZW1lQ29udHJvbFdpbi5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwLgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46On5XZWJUZXN0VGhlbWVDb250cm9sV2luKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmJveCk6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpsaW5lKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OnRyaWFuZ2xlKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OnJvdW5kUmVjdCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpvdmFsKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmNpcmNsZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpuZXN0ZWRCb3hlcyk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjptYXJrU3RhdGUpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6ZHJhdyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpkcmF3VGV4dEZpZWxk
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmRyYXdQ
cm9ncmVzc0Jhcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmguCisgICAgICAgIChXZWJU
ZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RUaGVtZUNvbnRyb2xXaW4pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2lu
ZU1hYy5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhl
bWVFbmdpbmVEUlRNYWMuaC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2Vi
VGVzdFRoZW1lRW5naW5lTWFjKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMubW06IFJlbmFtZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5tbS4KKyAgICAg
ICAgKCtbRmFrZUFjdGl2ZVdpbmRvdyBhbHdheXNBY3RpdmVXaW5kb3ddKToKKyAgICAgICAgKCtb
RmFrZUFjdGl2ZVdpbmRvdyBhbHdheXNJbmFjdGl2ZVdpbmRvd10pOgorICAgICAgICAoLVtGYWtl
QWN0aXZlV2luZG93IGluaXRXaXRoQWN0aXZlQ29udHJvbHM6XSk6CisgICAgICAgICgtW0Zha2VB
Y3RpdmVXaW5kb3cgX2hhc0FjdGl2ZUNvbnRyb2xzXSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0VGhlbWVFbmdpbmVNYWM6OnBhaW50U2Nyb2xsYmFyVGh1bWIpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdp
bmVNYWM6OnBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RUaGVtZUVuZ2luZU1hYzo6cGFpbnROU1Njcm9sbGVyU2Nyb2xsYmFyVGh1bWIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRl
c3RUaGVtZUVuZ2luZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2Vi
VGVzdFRoZW1lRW5naW5lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRN
ZW51TGlzdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46
OnBhaW50U2Nyb2xsYmFyQXJyb3cpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRo
ZW1lRW5naW5lV2luOjpwYWludFNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRTY3JvbGxiYXJUcmFjayk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50U3BpbkJ1dHRvbik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50VGV4
dEZpZWxkKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6
cGFpbnRUcmFja2Jhcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdp
bmVXaW46OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dFRoZW1lRW5naW5lV2luOjpnZXRTaXplKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVXaW4uaDogUmVuYW1lZCBmcm9t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmguCisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RUaGVtZUVuZ2luZVdpbik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OldlYlRlc3RU
aGVtZUVuZ2luZVdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbToKKyAgICAgICAg
KHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsV2luLmNwcDoKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwOiBSZW1vdmVkLgorCiAyMDEz
LTAzLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFN0eWxlIHR3ZWVrcyB0byBkZWZhdWx0LmNzcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCmluZGV4IDIx
YjEwMzBhYTFiYjdhOTc3NmYzZGRkYjhhZWI2NTVhYjNlYzEyZWMuLmJkY2UzZDgwZDBhODFkZWRm
YzI5YmI5ZjczYTQ4N2ZlYmUxYWQ4OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cApAQCAtMTU0LDYg
KzE1NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9ndGsnLAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsnT1MhPSJ3aW4iJywgeworICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUn
LCAnV2luXFwuY3BwJCddLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
IH1dLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICMgRGlzYWJsZSBjNDI2NyB3YXJuaW5n
cyB1bnRpbCB3ZSBmaXggc2l6ZV90IHRvIGludCB0cnVuY2F0aW9ucy4gCiAgICAgICAgICAgICAn
bXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsgNDI2NywgXSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IGNkNDc1NWFhM2M5M2U1YzM1NGZiZGQwMjMxYjY0YjFl
MTRjZGZlNDEuLjMyMTU1ZGYxYzI0YTM5NjJhMWRiNDkwNWMyNmJjMDI2NjUwMjAxMWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMjYsMTIgKzI2LDYgQEAK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNo
ZWxsWDExLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2lu
LmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmgnLAot
ICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLm1tJywKLSAgICAgICAg
ICAgICdjaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5oJywKLSAgICAgICAgICAgICdjaHJv
bWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dl
YlRoZW1lRW5naW5lRFJUV2luLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuaCcsCiAgICAgICAgIF0s
CkBAIC05NSw2ICs4OSwxMiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRhc2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJU
ZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RQcm94eS5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVDb250cm9sV2luLmgnLAorICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5tbScsCisgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLmgnLAorICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZVdpbi5j
cHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVu
Z2luZVdpbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJVc2Vy
TWVkaWFDbGllbnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oJywKICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRl
cmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0SW50ZXJmYWNlcy5oCmluZGV4IDQ1MmMxNDkxZTVhYWI4Mzk2MWIyZTYxNjQzODIz
MDdmNjdkYmYyYTguLmE4YmZmODBmYzM1NDk0NThjYzA4N2EwN2UxZjg0OTdhYTc4ODliM2IgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaApAQCAtNDAsNiArNDAsNyBAQCBj
bGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xp
ZW50OwogY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogY2xhc3MgV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OworY2xhc3MgV2ViVGhlbWVFbmdpbmU7CiBjbGFzcyBX
ZWJVUkw7CiBjbGFzcyBXZWJWaWV3OwogfQpAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb25maWd1cmVGb3JUZXN0V2l0aFVSTChjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGJvb2wg
Z2VuZXJhdGVQaXhlbHMpOwogCiAgICAgV2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpOworICAg
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmUqIHRoZW1lRW5naW5lKCk7CiAKICAgICBXZWJLaXQ6Oldl
Yk1lZGlhU3RyZWFtQ2VudGVyKiBjcmVhdGVNZWRpYVN0cmVhbUNlbnRlcihXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtQ2VudGVyQ2xpZW50Kik7CiAgICAgV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIqIGNyZWF0ZVdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihXZWJLaXQ6OldlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMu
Y3BwCmluZGV4IDRkOGEwMGM5NmNmYzlhY2IzZDBjNzM2YzIzNmYxNmRhNzlmNjIzYzQuLjFlOGM3
MzBiZTZkNzJiYzFhODUzMWZjN2Q5MTgwZjVkMDFmNTc2MjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5jcHAKQEAgLTIxNSw0ICsyMTUsMTkgQEAgY29uc3QgdmVjdG9yPFdlYlRlc3RQcm94
eUJhc2UqPiYgVGVzdEludGVyZmFjZXM6OndpbmRvd0xpc3QoKQogICAgIHJldHVybiBtX3dpbmRv
d0xpc3Q7CiB9CiAKK1dlYlRoZW1lRW5naW5lKiBUZXN0SW50ZXJmYWNlczo6dGhlbWVFbmdpbmUo
KQoreworI2lmIGRlZmluZWQoVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FKSB8fCAhKGRlZmluZWQo
V0lOMzIpIHx8IGRlZmluZWQoX19BUFBMRV9fKSkKKyAgICByZXR1cm4gMDsKKyNlbGlmIGRlZmlu
ZWQoV0lOMzIpCisgICAgaWYgKG1fdGhlbWVFbmdpbmUuZ2V0KCkpCisgICAgICAgIG1fdGhlbWVF
bmdpbmUucmVzZXQobmV3IFdlYlRlc3RUaGVtZUVuZ2luZVdpbigpKTsKKyAgICByZXR1cm4gbV90
aGVtZUVuZ2luZS5nZXQoKTsKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIGlmIChtX3Ro
ZW1lRW5naW5lLmdldCgpKQorICAgICAgICBtX3RoZW1lRW5naW5lLnJlc2V0KG5ldyBXZWJUZXN0
VGhlbWVFbmdpbmVNYWMoKSk7CisgICAgcmV0dXJuIG1fdGhlbWVFbmdpbmUuZ2V0KCk7CisjZW5k
aWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKaW5kZXggYjZiMzAxYTc5MGMzNGRj
MTI4OGEwNWJlZTllMzY0ZWFiY2ZlMTI5ZC4uZjkzNjFiNmUxZDFiZmM0MTRkOGRjZmQwMTJhNmJk
ODg3YzJkNzRlNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCkBAIC0zNCw4ICszNCwxNSBA
QAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpZiBkZWZpbmVkKFdJ
TjMyKQorI2luY2x1ZGUgIldlYlRlc3RUaGVtZUVuZ2luZVdpbi5oIgorI2VsaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaW5jbHVkZSAiV2ViVGVzdFRoZW1lRW5naW5lTWFjLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdlYlRoZW1lRW5naW5l
OwogY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViVmlldzsKIH0KQEAgLTcyLDYgKzc5LDcgQEAgcHVi
bGljOgogICAgIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUoKTsKICAgICBXZWJUZXN0UHJveHlC
YXNlKiBwcm94eSgpOwogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFdlYlRlc3RQcm94eUJhc2UqPiYg
d2luZG93TGlzdCgpOworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUqIHRoZW1lRW5naW5lKCk7
CiAKIHByaXZhdGU6CiAgICAgc3RkOjphdXRvX3B0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4g
bV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKQEAgLTg0LDYgKzkyLDEzIEBAIHByaXZhdGU6CiAg
ICAgV2ViVGVzdFByb3h5QmFzZSogbV9wcm94eTsKIAogICAgIHN0ZDo6dmVjdG9yPFdlYlRlc3RQ
cm94eUJhc2UqPiBtX3dpbmRvd0xpc3Q7CisjaWYgIWRlZmluZWQoVVNFX0RFRkFVTFRfUkVOREVS
X1RIRU1FKQorI2lmIGRlZmluZWQoV0lOMzIpCisgICAgc3RkOjphdXRvX3B0cjxXZWJLaXQ6Oldl
YlRlc3RUaGVtZUVuZ2luZVdpbj4gbV90aGVtZUVuZ2luZTsKKyNlbGlmIGRlZmluZWQoX19BUFBM
RV9fKQorICAgIHN0ZDo6YXV0b19wdHI8V2ViS2l0OjpXZWJUZXN0VGhlbWVFbmdpbmVNYWM+IG1f
dGhlbWVFbmdpbmU7CisjZW5kaWYKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVz
dEludGVyZmFjZXMuY3BwCmluZGV4IDJhMTc2ZDc2MzlhOTMwNTg5NDAyMDVhYzJmMDU4MzhkNGE2
MmY2MzIuLmMyZGJkMTY5YmNmZGZhMjlmMDQ0ZWM3NDNhMDFkMjcyNjE3YTMyZmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJ
bnRlcmZhY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTg0LDYgKzg0LDExIEBAIFdlYlRlc3RS
dW5uZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkKICAgICByZXR1cm4gbV9pbnRl
cmZhY2VzLT50ZXN0UnVubmVyKCk7CiB9CiAKK1dlYlRoZW1lRW5naW5lKiBXZWJUZXN0SW50ZXJm
YWNlczo6dGhlbWVFbmdpbmUoKQoreworICAgIHJldHVybiBtX2ludGVyZmFjZXMtPnRoZW1lRW5n
aW5lKCk7Cit9CisKIFRlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50ZXJmYWNlczo6dGVzdEludGVy
ZmFjZXMoKQogewogICAgIHJldHVybiBtX2ludGVyZmFjZXMuZ2V0KCk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVD
b250cm9sV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkYWI4NThmNzJlOWQ3
OTcyZTM3ZDg3NWZiYzk0MzdkZTM0MDlkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVDb250cm9sV2lu
LmNwcApAQCAtMCwwICsxLDQ5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgc2ltcGxlIGdl
bmVyaWMgdmVyc2lvbiBvZiB0aGUgV2ViVGhlbWVFbmdpbmUsCisvLyB3aGljaCBpcyB1c2VkIHRv
IGRyYXcgYWxsIHRoZSBuYXRpdmUgY29udHJvbHMgb24gYSB3ZWIgcGFnZS4gV2UgdXNlIHRoaXMK
Ky8vIGZpbGUgd2hlbiBydW5uaW5nIGluIGxheW91dCB0ZXN0IG1vZGUgaW4gb3JkZXIgdG8gcmVt
b3ZlIGFueQorLy8gcGxhdGZvcm0tc3BlY2lmaWMgcmVuZGVyaW5nIGRpZmZlcmVuY2VzIGR1ZSB0
byB0aGVtZXMsIGNvbG9ycywgZXRjLgorLy8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaCIKKworI2luY2x1ZGUgIlRlc3RDb21tb24uaCIK
KyNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX3dpbi5oIgorI2luY2x1ZGUgInRoaXJkX3Bh
cnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ2FudmFzLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkv
c2tpYS9pbmNsdWRlL2NvcmUvU2tQYWludC5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEv
aW5jbHVkZS9jb3JlL1NrUGF0aC5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVk
ZS9jb3JlL1NrUmVjdC5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5u
ZXIgeworCituYW1lc3BhY2UgeworCitjb25zdCBTa0NvbG9yIGVkZ2VDb2xvciAgICAgPSBTS19D
b2xvckJMQUNLOworY29uc3QgU2tDb2xvciByZWFkT25seUNvbG9yID0gU2tDb2xvclNldFJHQigw
eGU5LCAweGMyLCAweGE2KTsKK2NvbnN0IFNrQ29sb3IgZmdDb2xvciAgICAgICA9IFNLX0NvbG9y
QkxBQ0s7Citjb25zdCBTa0NvbG9yIGJnQ29sb3JzW10gICAgPSB7CisgICAgU0tfQ29sb3JCTEFD
SywgLy8gVW5rbm93bgorICAgIFNrQ29sb3JTZXRSR0IoMHhjOSwgMHhjOSwgMHhjOSksIC8vIERp
c2FibGVkCisgICAgU2tDb2xvclNldFJHQigweGYzLCAweGUwLCAweGQwKSwgLy8gUmVhZG9ubHkK
KyAgICBTa0NvbG9yU2V0UkdCKDB4ODksIDB4YzQsIDB4ZmYpLCAvLyBOb3JtYWwKKyAgICBTa0Nv
bG9yU2V0UkdCKDB4NDMsIDB4ZjksIDB4ZmYpLCAvLyBIb3QKKyAgICBTa0NvbG9yU2V0UkdCKDB4
MjAsIDB4ZjYsIDB4Y2MpLCAvLyBGb2N1c2VkCisgICAgU2tDb2xvclNldFJHQigweDAwLCAweGYz
LCAweGFjKSwgLy8gSG92ZXIKKyAgICBTa0NvbG9yU2V0UkdCKDB4YTksIDB4ZmYsIDB4MTIpLCAv
LyBQcmVzc2VkCisgICAgU2tDb2xvclNldFJHQigweGNjLCAweGNjLCAweGNjKSAvLyBJbmRldGVy
bWluYXRlCit9OworCitTa0lSZWN0IHZhbGlkYXRlKGNvbnN0IFNrSVJlY3QmIHJlY3QsIFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUpCit7CisgICAgc3dpdGNoIChjdHlwZSkgewor
ICAgIGNhc2UgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkQm94VHlwZToKKyAgICBj
YXNlIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRCb3hUeXBlOgorICAgIGNhc2UgV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkUmFkaW9UeXBlOgorICAgIGNhc2UgV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTogeworICAgICAgICBTa0lSZWN0IHJl
dHZhbCA9IHJlY3Q7CisKKyAgICAgICAgLy8gVGhlIG1heGltdW0gd2lkdGggYW5kIGhlaWdodCBp
cyAxMy4KKyAgICAgICAgLy8gQ2VudGVyIHRoZSBzcXVhcmUgaW4gdGhlIHBhc3NlZCByZWN0YW5n
bGUuCisgICAgICAgIGNvbnN0IGludCBtYXhDb250cm9sU2l6ZSA9IDEzOworICAgICAgICBpbnQg
Y29udHJvbFNpemUgPSBzdGQ6Om1pbihyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAg
ICAgICBjb250cm9sU2l6ZSA9IHN0ZDo6bWluKGNvbnRyb2xTaXplLCBtYXhDb250cm9sU2l6ZSk7
CisKKyAgICAgICAgcmV0dmFsLmZMZWZ0ICAgPSByZWN0LmZMZWZ0ICsgKHJlY3Qud2lkdGgoKSAv
IDIpIC0gKGNvbnRyb2xTaXplIC8gMik7CisgICAgICAgIHJldHZhbC5mUmlnaHQgID0gcmV0dmFs
LmZMZWZ0ICsgY29udHJvbFNpemUgLSAxOworICAgICAgICByZXR2YWwuZlRvcCAgICA9IHJlY3Qu
ZlRvcCArIChyZWN0LmhlaWdodCgpIC8gMikgLSAoY29udHJvbFNpemUgLyAyKTsKKyAgICAgICAg
cmV0dmFsLmZCb3R0b20gPSByZXR2YWwuZlRvcCArIGNvbnRyb2xTaXplIC0gMTsKKworICAgICAg
ICByZXR1cm4gcmV0dmFsOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBy
ZWN0OworICAgIH0KK30KKworfQorCitXZWJUZXN0VGhlbWVDb250cm9sV2luOjpXZWJUZXN0VGhl
bWVDb250cm9sV2luKFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IFNrSVJlY3QmIGlyZWN0LCBUeXBl
IGN0eXBlLCBTdGF0ZSBjc3RhdGUpCisgICAgOiBtX2NhbnZhcyhjYW52YXMpCisgICAgLCBtX2ly
ZWN0KHZhbGlkYXRlKGlyZWN0LCBjdHlwZSkpCisgICAgLCBtX3R5cGUoY3R5cGUpCisgICAgLCBt
X3N0YXRlKGNzdGF0ZSkKKyAgICAsIG1fbGVmdChtX2lyZWN0LmZMZWZ0KQorICAgICwgbV9yaWdo
dChtX2lyZWN0LmZSaWdodCkKKyAgICAsIG1fdG9wKG1faXJlY3QuZlRvcCkKKyAgICAsIG1fYm90
dG9tKG1faXJlY3QuZkJvdHRvbSkKKyAgICAsIG1faGVpZ2h0KG1faXJlY3QuaGVpZ2h0KCkpCisg
ICAgLCBtX3dpZHRoKG1faXJlY3Qud2lkdGgoKSkKKyAgICAsIG1fZWRnZUNvbG9yKGVkZ2VDb2xv
cikKKyAgICAsIG1fYmdDb2xvcihiZ0NvbG9yc1tjc3RhdGVdKQorICAgICwgbV9mZ0NvbG9yKGZn
Q29sb3IpCit7Cit9CisKK1dlYlRlc3RUaGVtZUNvbnRyb2xXaW46On5XZWJUZXN0VGhlbWVDb250
cm9sV2luKCkKK3sKK30KKwordm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpib3goY29uc3Qg
U2tJUmVjdCYgcmVjdCwgU2tDb2xvciBmaWxsQ29sb3IpCit7CisgICAgU2tQYWludCBwYWludDsK
KworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBwYWludC5z
ZXRDb2xvcihmaWxsQ29sb3IpOworICAgIG1fY2FudmFzLT5kcmF3SVJlY3QocmVjdCwgcGFpbnQp
OworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxl
KFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3SVJlY3QocmVjdCwg
cGFpbnQpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmxpbmUoaW50IHgwLCBp
bnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUGFpbnQgcGFp
bnQ7CisgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgIG1fY2FudmFzLT5kcmF3TGluZShT
a0ludFRvU2NhbGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCksIFNrSW50VG9TY2FsYXIoeDEpLCBT
a0ludFRvU2NhbGFyKHkxKSwgcGFpbnQpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OnRyaWFuZ2xlKGludCB4MCwgaW50IHkwLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQg
eTIsIFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tQYXRoIHBhdGg7CisgICAgU2tQYWludCBwYWlu
dDsKKworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1Bh
aW50OjprRmlsbF9TdHlsZSk7CisgICAgcGF0aC5pbmNSZXNlcnZlKDQpOworICAgIHBhdGgubW92
ZVRvKFNrSW50VG9TY2FsYXIoeDApLCBTa0ludFRvU2NhbGFyKHkwKSk7CisgICAgcGF0aC5saW5l
VG8oU2tJbnRUb1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEpKTsKKyAgICBwYXRoLmxpbmVU
byhTa0ludFRvU2NhbGFyKHgyKSwgU2tJbnRUb1NjYWxhcih5MikpOworICAgIHBhdGguY2xvc2Uo
KTsKKyAgICBtX2NhbnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQpOworCisgICAgcGFpbnQuc2V0
Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2Vf
U3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3UGF0aChwYXRoLCBwYWludCk7Cit9CisKK3ZvaWQg
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6cm91bmRSZWN0KFNrQ29sb3IgY29sb3IpCit7CisgICAg
U2tSZWN0IHJlY3Q7CisgICAgU2tTY2FsYXIgcmFkaXVzID0gU2tJbnRUb1NjYWxhcig1KTsKKyAg
ICBTa1BhaW50IHBhaW50OworCisgICAgcmVjdC5zZXQobV9pcmVjdCk7CisgICAgcGFpbnQuc2V0
Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsK
KyAgICBtX2NhbnZhcy0+ZHJhd1JvdW5kUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcGFpbnQp
OworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxl
KFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Um91bmRSZWN0KHJl
Y3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6b3ZhbChTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUmVjdCByZWN0OworICAgIFNrUGFp
bnQgcGFpbnQ7CisKKyAgICByZWN0LnNldChtX2lyZWN0KTsKKyAgICBwYWludC5zZXRDb2xvcihj
b2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1f
Y2FudmFzLT5kcmF3T3ZhbChyZWN0LCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2Vk
Z2VDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Cisg
ICAgbV9jYW52YXMtPmRyYXdPdmFsKHJlY3QsIHBhaW50KTsKK30KKwordm9pZCBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpjaXJjbGUoU2tTY2FsYXIgcmFkaXVzLCBTa0NvbG9yIGNvbG9yKQorewor
ICAgIFNrU2NhbGFyIGN5ID0gU2tJbnRUb1NjYWxhcihtX3RvcCAgKyBtX2hlaWdodCAvIDIpOwor
ICAgIFNrU2NhbGFyIGN4ID0gU2tJbnRUb1NjYWxhcihtX2xlZnQgKyBtX3dpZHRoIC8gMik7Cisg
ICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAgICBwYWlu
dC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdDaXJj
bGUoY3gsIGN5LCByYWRpdXMsIHBhaW50KTsKKworICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNv
bG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICBt
X2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFpbnQpOworfQorCit2b2lkIFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46Om5lc3RlZEJveGVzKGludCBpbmRlbnRMZWZ0LCBpbnQgaW5k
ZW50VG9wLCBpbnQgaW5kZW50UmlnaHQsIGludCBpbmRlbnRCb3R0b20sIFNrQ29sb3Igb3V0ZXJD
b2xvciwgU2tDb2xvciBpbm5lckNvbG9yKQoreworICAgIFNrSVJlY3QgbGlyZWN0OworICAgIGJv
eChtX2lyZWN0LCBvdXRlckNvbG9yKTsKKyAgICBsaXJlY3Quc2V0KG1faXJlY3QuZkxlZnQgKyBp
bmRlbnRMZWZ0LCBtX2lyZWN0LmZUb3AgKyBpbmRlbnRUb3AsIG1faXJlY3QuZlJpZ2h0IC0gaW5k
ZW50UmlnaHQsIG1faXJlY3QuZkJvdHRvbSAtIGluZGVudEJvdHRvbSk7CisgICAgYm94KGxpcmVj
dCwgaW5uZXJDb2xvcik7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6bWFya1N0
YXRlKCkKK3sKKyAgICAvLyBUaGUgaG9yaXpvbnRhbCBsaW5lcyBpbiBhIHJlYWQgb25seSBjb250
cm9sIGFyZSBzcGFjZWQgYnkgdGhpcyBhbW91bnQuCisgICAgY29uc3QgaW50IHJlYWRPbmx5TGlu
ZU9mZnNldCA9IDU7CisKKyAgICAvLyBUaGUgbGVuZ3RoIG9mIGEgdHJpYW5nbGUgc2lkZSBmb3Ig
dGhlIGNvcm5lciBtYXJrcy4KKyAgICBjb25zdCBpbnQgdHJpYW5nbGVTaXplID0gNTsKKworICAg
IHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgVW5rbm93blN0YXRlOgorICAgIGNhc2UgRGlz
YWJsZWRTdGF0ZToKKyAgICBjYXNlIE5vcm1hbFN0YXRlOgorICAgIGNhc2UgSW5kZXRlcm1pbmF0
ZVN0YXRlOgorICAgICAgICAvLyBEb24ndCB2aXN1YWxseSBtYXJrIHRoZXNlIHN0YXRlcyAoY29s
b3IgaXMgZW5vdWdoKS4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZWFkT25seVN0YXRlOgor
ICAgICAgICAvLyBEcmF3aW5nIGxpbmVzIGFjcm9zcyB0aGUgY29udHJvbC4KKyAgICAgICAgZm9y
IChpbnQgaSA9IG1fdG9wICsgcmVhZE9ubHlMaW5lT2Zmc2V0OyBpIDwgbV9ib3R0b207IGkgKz0g
cmVhZE9ubHlMaW5lT2Zmc2V0KQorICAgICAgICAgICAgbGluZShtX2xlZnQgKyAxLCBpLCBtX3Jp
Z2h0IC0gMSwgaSwgcmVhZE9ubHlDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBI
b3RTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSB1cHBlciBsZWZ0IGNv
cm5lciBvZiB0aGUgY29udHJvbC4KKyAgICAgICAgdHJpYW5nbGUobV9sZWZ0LCBtX3RvcCwgbV9s
ZWZ0ICsgdHJpYW5nbGVTaXplLCBtX3RvcCwgbV9sZWZ0LCBtX3RvcCArIHRyaWFuZ2xlU2l6ZSwg
bV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG92ZXJTdGF0ZToKKyAg
ICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSB1cHBlciByaWdodCBjb3JuZXIgb2YgdGhl
IGNvbnRyb2wuCisgICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQsIG1fdG9wLCBtX3JpZ2h0LCBtX3Rv
cCArIHRyaWFuZ2xlU2l6ZSwgbV9yaWdodCAtIHRyaWFuZ2xlU2l6ZSwgbV90b3AsIG1fZWRnZUNv
bG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZvY3VzZWRTdGF0ZToKKyAgICAgICAg
Ly8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSBib3R0b20gcmlnaHQgY29ybmVyIG9mIHRoZSBjb250
cm9sLgorICAgICAgICB0cmlhbmdsZShtX3JpZ2h0LCBtX2JvdHRvbSwgbV9yaWdodCAtIHRyaWFu
Z2xlU2l6ZSwgbV9ib3R0b20sIG1fcmlnaHQsIG1fYm90dG9tIC0gdHJpYW5nbGVTaXplLCBtX2Vk
Z2VDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQcmVzc2VkU3RhdGU6CisgICAg
ICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgYm90dG9tIGxlZnQgY29ybmVyIG9mIHRoZSBj
b250cm9sLgorICAgICAgICB0cmlhbmdsZShtX2xlZnQsIG1fYm90dG9tLCBtX2xlZnQsIG1fYm90
dG9tIC0gdHJpYW5nbGVTaXplLCBtX2xlZnQgKyB0cmlhbmdsZVNpemUsIG1fYm90dG9tLCBtX2Vk
Z2VDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQg
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6ZHJhdygpCit7CisgICAgaW50IGhhbGZXaWR0aCA9IG1f
d2lkdGggLyAyOworICAgIGludCBoYWxmSGVpZ2h0ID0gbV9oZWlnaHQgLyAyOworICAgIGludCBx
dWFydGVyV2lkdGggPSBtX3dpZHRoIC8gNDsKKyAgICBpbnQgcXVhcnRlckhlaWdodCA9IG1faGVp
Z2h0IC8gNDsKKworICAgIC8vIEluZGVudCBhbW91bnRzIGZvciB0aGUgY2hlY2sgaW4gYSBjaGVj
a2JveCBvciByYWRpbyBidXR0b24uCisgICAgY29uc3QgaW50IGNoZWNrSW5kZW50ID0gMzsKKwor
ICAgIC8vIEluZGVudCBhbW91bnRzIGZvciBzaG9ydCBhbmQgbG9uZyBzaWRlcyBvZiB0aGUgc2Ny
b2xsYmFyIG5vdGNoZXMuCisgICAgY29uc3QgaW50IG5vdGNoTG9uZ09mZnNldCA9IDE7CisgICAg
Y29uc3QgaW50IG5vdGNoU2hvcnRPZmZzZXQgPSA0OworICAgIGNvbnN0IGludCBub09mZnNldCA9
IDA7CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3IgdGhlIHNob3J0IGFuZCBsb25nIHNpZGVz
IG9mIGEgc2Nyb2xsIHRodW1iIGJveC4KKyAgICBjb25zdCBpbnQgdGh1bWJMb25nSW5kZW50ID0g
MDsKKyAgICBjb25zdCBpbnQgdGh1bWJTaG9ydEluZGVudCA9IDI7CisKKyAgICAvLyBJbmRlbnRz
IGZvciB0aGUgY3Jvc3NoYXRjaCBvbiBhIHNjcm9sbCBncmlwLgorICAgIGNvbnN0IGludCBncmlw
TG9uZ0luZGVudCA9IDM7CisgICAgY29uc3QgaW50IGdyaXBTaG9ydEluZGVudCA9IDU7CisKKyAg
ICAvLyBJbmRlbnRzIGZvciB0aGUgdGhlIHNsaWRlciB0cmFjay4KKyAgICBjb25zdCBpbnQgc2xp
ZGVySW5kZW50ID0gMjsKKworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBVbmtub3du
VHlwZToKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgVGV4dEZpZWxkVHlwZToKKyAgICAgICAgLy8gV2UgcmVuZGVyIHRoaXMg
YnkgaGFuZCBvdXRzaWRlIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgIFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFB1c2hCdXR0b25UeXBl
OgorICAgICAgICAvLyBwdXNoIGJ1dHRvbnMgcmVuZGVyIGFzIGEgcm91bmRlZCByZWN0YW5nbGUK
KyAgICAgICAgcm91bmRSZWN0KG1fYmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBVbmNoZWNrZWRCb3hUeXBlOgorICAgICAgICAvLyBVbmNoZWNrZWQgYm94ZXMgYXJlIHNpbXBs
eSBwbGFpbiBib3hlcy4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBDaGVja2VkQm94VHlwZToKKyAgICAgICAgbmVzdGVkQm94ZXMo
Y2hlY2tJbmRlbnQsIGNoZWNrSW5kZW50LCBjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIG1fYmdD
b2xvciwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEluZGV0ZXJtaW5h
dGVDaGVja2JveFR5cGU6CisgICAgICAgIC8vIEluZGV0ZXJtaW5hdGUgY2hlY2tib3ggaXMgYSBi
b3ggY29udGFpbmluZyAnLScuCisgICAgICAgIG5lc3RlZEJveGVzKGNoZWNrSW5kZW50LCBoYWxm
SGVpZ2h0LCBjaGVja0luZGVudCwgaGFsZkhlaWdodCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgVW5jaGVja2VkUmFkaW9UeXBlOgorICAgICAgICBj
aXJjbGUoU2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0KSwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIENoZWNrZWRSYWRpb1R5cGU6CisgICAgICAgIGNpcmNsZShTa0ludFRv
U2NhbGFyKGhhbGZIZWlnaHQpLCBtX2JnQ29sb3IpOworICAgICAgICBjaXJjbGUoU2tJbnRUb1Nj
YWxhcihoYWxmSGVpZ2h0IC0gY2hlY2tJbmRlbnQpLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFja1R5cGU6IHsKKyAgICAgICAg
Ly8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIGxlZnQuCisgICAgICAgIGludCBsb25n
T2Zmc2V0ID0gaGFsZkhlaWdodCAtIG5vdGNoTG9uZ09mZnNldDsKKyAgICAgICAgaW50IHNob3J0
T2Zmc2V0ID0gbV93aWR0aCAtIG5vdGNoU2hvcnRPZmZzZXQ7CisgICAgICAgIG5lc3RlZEJveGVz
KG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbV9iZ0NvbG9y
LCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgSG9yaXpv
bnRhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsKKyAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRo
IGEgbm90Y2ggYXQgdGhlIHJpZ2h0LgorICAgICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmSGVp
Z2h0IC0gbm90Y2hMb25nT2Zmc2V0OworICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX3dpZHRo
IC0gbm90Y2hTaG9ydE9mZnNldDsKKyAgICAgICAgbmVzdGVkQm94ZXMoc2hvcnRPZmZzZXQsIGxv
bmdPZmZzZXQsIG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVmVydGljYWxTY3JvbGxUcmFja0JhY2tU
eXBlOiB7CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSB0b3AuCisg
ICAgICAgIGludCBsb25nT2Zmc2V0ICA9IGhhbGZXaWR0aCAtIG5vdGNoTG9uZ09mZnNldDsKKyAg
ICAgICAgaW50IHNob3J0T2Zmc2V0ID0gbV9oZWlnaHQgLSBub3RjaFNob3J0T2Zmc2V0OworICAg
ICAgICBuZXN0ZWRCb3hlcyhsb25nT2Zmc2V0LCBub09mZnNldCwgbG9uZ09mZnNldCwgc2hvcnRP
ZmZzZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgY2FzZSBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsKKyAgICAgICAgLy8gRHJh
dyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIGJvdHRvbS4KKyAgICAgICAgaW50IGxvbmdPZmZz
ZXQgID0gaGFsZldpZHRoIC0gbm90Y2hMb25nT2Zmc2V0OworICAgICAgICBpbnQgc2hvcnRPZmZz
ZXQgPSBtX2hlaWdodCAtIG5vdGNoU2hvcnRPZmZzZXQ7CisgICAgICAgIG5lc3RlZEJveGVzKGxv
bmdPZmZzZXQsIHNob3J0T2Zmc2V0LCBsb25nT2Zmc2V0LCBub09mZnNldCwgbV9iZ0NvbG9yLCBt
X2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIEhvcml6b250YWxT
Y3JvbGxUaHVtYlR5cGU6CisgICAgICAgIC8vIERyYXcgYSBuYXJyb3dlciBib3ggb24gdG9wIG9m
IHRoZSBvdXRzaWRlIGJveC4KKyAgICAgICAgbmVzdGVkQm94ZXModGh1bWJMb25nSW5kZW50LCB0
aHVtYlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIG1fYmdD
b2xvciwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFZlcnRpY2FsU2Ny
b2xsVGh1bWJUeXBlOgorICAgICAgICAvLyBEcmF3IGEgc2hvcnRlciBib3ggb24gdG9wIG9mIHRo
ZSBvdXRzaWRlIGJveC4KKyAgICAgICAgbmVzdGVkQm94ZXModGh1bWJTaG9ydEluZGVudCwgdGh1
bWJMb25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIG1fYmdDb2xv
ciwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhvcml6b250YWxTbGlk
ZXJUaHVtYlR5cGU6CisgICAgY2FzZSBWZXJ0aWNhbFNsaWRlclRodW1iVHlwZToKKyAgICAgICAg
Ly8gU2xpZGVyIHRodW1icyBhcmUgb3ZhbHMuCisgICAgICAgIG92YWwobV9iZ0NvbG9yKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhvcml6b250YWxTY3JvbGxHcmlwVHlwZTogeworICAg
ICAgICAvLyBEcmF3IGEgaG9yaXpvbnRhbCBjcm9zc2hhdGNoIGZvciB0aGUgZ3JpcC4KKyAgICAg
ICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmV2lkdGggLSBncmlwTG9uZ0luZGVudDsKKyAgICAgICAg
bGluZShtX2xlZnQgKyBncmlwTG9uZ0luZGVudCwgbV90b3AgKyBoYWxmSGVpZ2h0LCBtX3JpZ2h0
IC0gZ3JpcExvbmdJbmRlbnQsIG1fdG9wICsgaGFsZkhlaWdodCwgbV9mZ0NvbG9yKTsKKyAgICAg
ICAgbGluZShtX2xlZnQgKyBsb25nT2Zmc2V0LCBtX3RvcCArIGdyaXBTaG9ydEluZGVudCwgbV9s
ZWZ0ICsgbG9uZ09mZnNldCwgbV9ib3R0b20gLSBncmlwU2hvcnRJbmRlbnQsIG1fZmdDb2xvcik7
CisgICAgICAgIGxpbmUobV9yaWdodCAtIGxvbmdPZmZzZXQsIG1fdG9wICsgZ3JpcFNob3J0SW5k
ZW50LCBtX3JpZ2h0IC0gbG9uZ09mZnNldCwgbV9ib3R0b20gLSBncmlwU2hvcnRJbmRlbnQsIG1f
ZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVmVydGljYWxTY3Jv
bGxHcmlwVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgdmVydGljYWwgY3Jvc3NoYXRjaCBmb3Ig
dGhlIGdyaXAuCisgICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIGdyaXBMb25n
SW5kZW50OworICAgICAgICBsaW5lKG1fbGVmdCArIGhhbGZXaWR0aCwgbV90b3AgKyBncmlwTG9u
Z0luZGVudCwgbV9sZWZ0ICsgaGFsZldpZHRoLCBtX2JvdHRvbSAtIGdyaXBMb25nSW5kZW50LCBt
X2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCArIGdyaXBTaG9ydEluZGVudCwgbV90b3Ag
KyBsb25nT2Zmc2V0LCBtX3JpZ2h0IC0gZ3JpcFNob3J0SW5kZW50LCBtX3RvcCArIGxvbmdPZmZz
ZXQsIG1fZmdDb2xvcik7CisgICAgICAgIGxpbmUobV9sZWZ0ICsgZ3JpcFNob3J0SW5kZW50LCBt
X2JvdHRvbSAtIGxvbmdPZmZzZXQsIG1fcmlnaHQgLSBncmlwU2hvcnRJbmRlbnQsIG1fYm90dG9t
IC0gbG9uZ09mZnNldCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Y2FzZSBMZWZ0QXJyb3dUeXBlOgorICAgICAgICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNpZGUg
YSBib3guCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlhbmds
ZShtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQsIG1fcmlnaHQg
LSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9sZWZ0ICsgcXVhcnRl
cldpZHRoLCBtX3RvcCArIGhhbGZIZWlnaHQsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBSaWdodEFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhIGxlZnQgYXJyb3cg
aW5zaWRlIGEgYm94LgorICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAg
dHJpYW5nbGUobV9sZWZ0ICsgcXVhcnRlcldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQsIG1f
cmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fdG9wICsgaGFsZkhlaWdodCwgbV9sZWZ0ICsgcXVhcnRl
cldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBVcEFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhbiB1cCBhcnJv
dyBpbnNpZGUgYSBib3guCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAg
ICB0cmlhbmdsZShtX2xlZnQgKyBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdo
dCwgbV9sZWZ0ICsgaGFsZldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQsIG1fcmlnaHQgLSBx
dWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9mZ0NvbG9yKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIERvd25BcnJvd1R5cGU6CisgICAgICAgIC8vIERyYXcgYSBk
b3duIGFycm93IGluc2lkZSBhIGJveC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7
CisgICAgICAgIHRyaWFuZ2xlKG1fbGVmdCArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgKyBxdWFydGVy
SGVpZ2h0LCBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQsIG1f
bGVmdCArIGhhbGZXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29sb3IpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZTogewor
ICAgICAgICAvLyBEcmF3IGEgbmFycm93IHJlY3QgZm9yIHRoZSB0cmFjayBwbHVzIGJveCBoYXRj
aGVzIG9uIHRoZSBlbmRzLgorICAgICAgICBTa0lSZWN0IGxpcmVjdDsKKyAgICAgICAgbGlyZWN0
ID0gbV9pcmVjdDsKKyAgICAgICAgbGlyZWN0Lmluc2V0KG5vT2Zmc2V0LCBoYWxmSGVpZ2h0IC0g
c2xpZGVySW5kZW50KTsKKyAgICAgICAgYm94KGxpcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAg
bGluZShtX2xlZnQsICBtX3RvcCwgbV9sZWZ0LCAgbV9ib3R0b20sIG1fZWRnZUNvbG9yKTsKKyAg
ICAgICAgbGluZShtX3JpZ2h0LCBtX3RvcCwgbV9yaWdodCwgbV9ib3R0b20sIG1fZWRnZUNvbG9y
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBWZXJ0aWNhbFNsaWRlclRyYWNr
VHlwZTogeworICAgICAgICAvLyBEcmF3IGEgbmFycm93IHJlY3QgZm9yIHRoZSB0cmFjayBwbHVz
IGJveCBoYXRjaGVzIG9uIHRoZSBlbmRzLgorICAgICAgICBTa0lSZWN0IGxpcmVjdDsKKyAgICAg
ICAgbGlyZWN0ID0gbV9pcmVjdDsKKyAgICAgICAgbGlyZWN0Lmluc2V0KGhhbGZXaWR0aCAtIHNs
aWRlckluZGVudCwgbm9PZmZzZXQpOworICAgICAgICBib3gobGlyZWN0LCBtX2JnQ29sb3IpOwor
ICAgICAgICBsaW5lKG1fbGVmdCwgbV90b3AsIG1fcmlnaHQsIG1fdG9wLCBtX2VkZ2VDb2xvcik7
CisgICAgICAgIGxpbmUobV9sZWZ0LCBtX2JvdHRvbSwgbV9yaWdodCwgbV9ib3R0b20sIG1fZWRn
ZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBEcm9wRG93bkJ1dHRv
blR5cGU6CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIGJpZyBkb3duIGFycm93IG9uIHRv
cC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xlKG1f
bGVmdCArIHF1YXJ0ZXJXaWR0aCwgbV90b3AsIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fdG9w
LCBtX2xlZnQgKyBoYWxmV2lkdGgsIG1fYm90dG9tLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVh
azsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbWFya1N0YXRlKCk7Cit9CisKKy8vIEJlY2F1
c2UgcmVuZGVyaW5nIGEgdGV4dCBmaWVsZCBpcyBkZXBlbmRlbnQgb24gaW5wdXQKKy8vIHBhcmFt
ZXRlcnMgdGhlIG90aGVyIGNvbnRyb2xzIGRvbid0IGhhdmUsIHdlIHJlbmRlciBpdCBkaXJlY3Rs
eQorLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIG92ZXJjb21wbGljYXRlIGRyYXcoKSBmdXJ0aGVy
Lgordm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpkcmF3VGV4dEZpZWxkKGJvb2wgZHJhd0Vk
Z2VzLCBib29sIGZpbGxDb250ZW50QXJlYSwgU2tDb2xvciBjb2xvcikKK3sKKyAgICBTa1BhaW50
IHBhaW50OworCisgICAgaWYgKGZpbGxDb250ZW50QXJlYSkgeworICAgICAgICBwYWludC5zZXRD
b2xvcihjb2xvcik7CisgICAgICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxl
KTsKKyAgICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7CisgICAgfQor
ICAgIGlmIChkcmF3RWRnZXMpIHsKKyAgICAgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3Ip
OworICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICAg
ICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7CisgICAgfQorCisgICAgbWFy
a1N0YXRlKCk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6ZHJhd1Byb2dyZXNz
QmFyKGNvbnN0IFNrSVJlY3QmIGZpbGxSZWN0KQoreworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAg
ICBwYWludC5zZXRDb2xvcihtX2JnQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6
OmtGaWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KG1faXJlY3QsIHBhaW50KTsK
KworICAgIC8vIEVtdWxhdGUgY2xpcHBpbmcKKyAgICBTa0lSZWN0IHRvZmlsbDsKKyAgICB0b2Zp
bGwuaW50ZXJzZWN0KG1faXJlY3QsIGZpbGxSZWN0KTsKKyAgICBwYWludC5zZXRDb2xvcihtX2Zn
Q29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBt
X2NhbnZhcy0+ZHJhd0lSZWN0KHRvZmlsbCwgcGFpbnQpOworCisgICAgbWFya1N0YXRlKCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43YmFkMThlMjBhYThhYjYzNzEyNzY2ZjQ0OGQ3NzFmYTMyOTQxMTRkCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVz
dFRoZW1lQ29udHJvbFdpbi5oCkBAIC0wLDAgKzEsMjAwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbiBpbXBsZW1lbnRzIHRoZSBnZW5lcmljIHJlbmRlcmluZyBvZiBjb250cm9scworLy8gbmVl
ZGVkIGJ5IFdlYlRoZW1lRW5naW5lRFJUV2luLiBTZWUgdGhlIGNvbW1lbnRzIGluIHRoYXQgY2xh
c3MKKy8vIGhlYWRlciBmaWxlIGZvciB3aHkgdGhpcyBjbGFzcyBpcyBuZWVkZWQgYW5kIHVzZWQu
CisvLworLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgZ2VuZXJpYyBzZXQgb2Ygd2lkZ2V0cyB1
c2luZyBTa2lhLiBUaGUgd2lkZ2V0cworLy8gYXJlIG9wdGltaXplZCBmb3IgdGVzdGFiaWxpdHks
IG5vdCBhIHBsZWFzaW5nIGFwcGVhcmFuY2UuCisvLworCisjaWZuZGVmIFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW5faAorI2RlZmluZSBXZWJUZXN0VGhlbWVDb250cm9sV2luX2gKKworI2luY2x1ZGUg
InRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ29sb3IuaCIKKyNpbmNsdWRlICJ0aGly
ZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKworLy8gU2tpYSBmb3J3YXJkIGRl
Y2xhcmF0aW9ucworY2xhc3MgU2tDYW52YXM7CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsK
KworY2xhc3MgV2ViVGVzdFRoZW1lQ29udHJvbFdpbiB7CitwdWJsaWM6CisgICAgLy8gVGhpcyBs
aXN0IG9mIHN0YXRlcyBtb3N0bHkgbWlycm9ycyB0aGUgbGlzdCBpbiBXZWJDb3JlL3BsYXRmb3Jt
L1RoZW1lVHlwZXMuaAorICAgIC8vIGJ1dCBpcyBtYWludGFpbmVkIHNlcGFyYXRlbHkgc2luY2Ug
dGhhdCBpc24ndCBwdWJsaWMgYW5kIGFsc28gdG8gbWluaW1pemUKKyAgICAvLyBkZXBlbmRlbmNp
ZXMuCisgICAgLy8gTm90ZSB0aGF0IHRoZSBXZWJLaXQgVGhlbWVUeXBlcyBzZWVtIHRvIGltcGx5
IHRoYXQgYSBjb250cm9sIGNhbiBiZQorICAgIC8vIGluIG11bHRpcGxlIHN0YXRlcyBzaW11bHRh
bmVvdXNseSBidXQgV2ViVGhlbWVFbmdpbmUgb25seSBhbGxvd3MgZm9yCisgICAgLy8gYSBzaW5n
bGUgc3RhdGUgYXQgYSB0aW1lLgorICAgIC8vCisgICAgLy8gU29tZSBkZWZpbml0aW9ucyBmb3Ig
dGhlIHZhcmlvdXMgc3RhdGVzOgorICAgIC8vICAgRGlzYWJsZWQgLSBpbmRpY2F0ZXMgdGhhdCBh
IGNvbnRyb2wgY2FuJ3QgYmUgbW9kaWZpZWQgb3Igc2VsZWN0ZWQKKyAgICAvLyAgICAgICAgICAg
ICAgKGNvcnJlc3BvbmRzIHRvIEhUTUwgJ2Rpc2FibGVkJyBhdHRyaWJ1dGUpCisgICAgLy8gICBS
ZWFkT25seSAtIGluZGljYXRlcyB0aGF0IGEgY29udHJvbCBjYW4ndCBiZSBtb2RpZmllZCBidXQg
Y2FuIGJlCisgICAgLy8gICAgICAgICAgICAgIHNlbGVjdGVkCisgICAgLy8gICBOb3JtYWwgICAt
IHRoZSBub3JtYWwgc3RhdGUgb2YgY29udHJvbCBvbiB0aGUgcGFnZSB3aGVuIGl0IGlzbid0Cisg
ICAgLy8gICAgICAgICAgICAgIGZvY3VzZWQgb3Igb3RoZXJ3aXNlIGFjdGl2ZQorICAgIC8vICAg
SG90ICAgICAgLSB3aGVuIHRoZSBtb3VzZSBpcyBob3ZlcmluZyBvdmVyIGEgcGFydCBvZiB0aGUg
Y29udHJvbCwKKyAgICAvLyAgICAgICAgICAgICAgYWxsIHRoZSBvdGhlciBwYXJ0cyBhcmUgY29u
c2lkZXJlZCAiaG90IgorICAgIC8vICAgSG92ZXIgICAgLSB3aGVuIHRoZSBtb3VzZSBpcyBkaXJl
Y3RseSBvdmVyIGEgY29udHJvbCAodGhlIENTUworICAgIC8vICAgICAgICAgICAgICAgOmhvdmVy
IHBzZXVkby1jbGFzcykKKyAgICAvLyAgIEZvY3VzZWQgIC0gd2hlbiB0aGUgY29udHJvbCBoYXMg
dGhlIGtleWJvYXJkIGZvY3VzCisgICAgLy8gICBQcmVzc2VkICAtIHdoZW4gdGhlIGNvbnRyb2wg
aXMgYmVpbmcgdHJpZ2dlcmVkIChieSBhIG1vdXNlZG93biBvcgorICAgIC8vICAgICAgICAgICAg
ICBhIGtleSBldmVudCkuCisgICAgLy8gICBJbmRldGVybWluYXRlIC0gd2hlbiBzZXQgdG8gaW5k
ZXRlcm1pbmF0ZSAob25seSBmb3IgcHJvZ3Jlc3MgYmFyKQorICAgIGVudW0gU3RhdGUgeworICAg
ICAgICBVbmtub3duU3RhdGUgPSAwLAorICAgICAgICBEaXNhYmxlZFN0YXRlLAorICAgICAgICBS
ZWFkT25seVN0YXRlLAorICAgICAgICBOb3JtYWxTdGF0ZSwKKyAgICAgICAgSG90U3RhdGUsCisg
ICAgICAgIEhvdmVyU3RhdGUsCisgICAgICAgIEZvY3VzZWRTdGF0ZSwKKyAgICAgICAgUHJlc3Nl
ZFN0YXRlLAorICAgICAgICBJbmRldGVybWluYXRlU3RhdGUKKyAgICB9OworCisgICAgLy8gVGhp
cyBsaXN0IG9mIHR5cGVzIG1vc3RseSBtaXJyb3JzIHRoZSBsaXN0IGluCisgICAgLy8gV2ViQ29y
ZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmggYnV0IGlzIG1haW50YWluZWQKKyAgICAvLyBzZXBhcmF0
ZWx5IHNpbmNlIHRoYXQgaXNuJ3QgcHVibGljIGFuZCBhbHNvIHRvIG1pbmltaXplIGRlcGVuZGVu
Y2llcy4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3aGF0IHRoZSB1c2VyIG1pZ2h0IHRoaW5r
IG9mIGFzIGEgc2luZ2xlIGNvbnRyb2wgY2FuIGJlCisgICAgLy8gbWFkZSB1cCBvZiBtdWx0aXBs
ZSBwYXJ0cy4gRm9yIGV4YW1wbGUsIGEgc2luZ2xlIHNjcm9sbCBiYXIgY29udGFpbnMKKyAgICAv
LyBzaXggY2xpY2thYmxlIHBhcnRzIC0gdHdvIGFycm93cywgdGhlICJ0aHVtYiIgaW5kaWNhdGlu
ZyB0aGUgY3VycmVudAorICAgIC8vIHBvc2l0aW9uIG9uIHRoZSBiYXIsIHRoZSBvdGhlciB0d28g
cGFydHMgb2YgdGhlIGJhciAoYmVmb3JlIGFuZCBhZnRlcgorICAgIC8vIHRoZSB0aHVtYikgYW5k
IHRoZSAiZ3JpcHBlciIgb24gdGhlIHRodW1iIGl0c2VsZi4KKyAgICAvLworICAgIGVudW0gVHlw
ZSB7CisgICAgICAgIFVua25vd25UeXBlID0gMCwKKyAgICAgICAgVGV4dEZpZWxkVHlwZSwKKyAg
ICAgICAgUHVzaEJ1dHRvblR5cGUsCisgICAgICAgIFVuY2hlY2tlZEJveFR5cGUsCisgICAgICAg
IENoZWNrZWRCb3hUeXBlLAorICAgICAgICBJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlLAorICAg
ICAgICBVbmNoZWNrZWRSYWRpb1R5cGUsCisgICAgICAgIENoZWNrZWRSYWRpb1R5cGUsCisgICAg
ICAgIEhvcml6b250YWxTY3JvbGxUcmFja0JhY2tUeXBlLAorICAgICAgICBIb3Jpem9udGFsU2Ny
b2xsVHJhY2tGb3J3YXJkVHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZSwK
KyAgICAgICAgSG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBlLAorICAgICAgICBWZXJ0aWNhbFNjcm9s
bFRyYWNrQmFja1R5cGUsCisgICAgICAgIFZlcnRpY2FsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZSwK
KyAgICAgICAgVmVydGljYWxTY3JvbGxUaHVtYlR5cGUsCisgICAgICAgIFZlcnRpY2FsU2Nyb2xs
R3JpcFR5cGUsCisgICAgICAgIExlZnRBcnJvd1R5cGUsCisgICAgICAgIFJpZ2h0QXJyb3dUeXBl
LAorICAgICAgICBVcEFycm93VHlwZSwKKyAgICAgICAgRG93bkFycm93VHlwZSwKKyAgICAgICAg
SG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNsaWRlclRodW1i
VHlwZSwKKyAgICAgICAgVmVydGljYWxTbGlkZXJUcmFja1R5cGUsCisgICAgICAgIFZlcnRpY2Fs
U2xpZGVyVGh1bWJUeXBlLAorICAgICAgICBEcm9wRG93bkJ1dHRvblR5cGUsCisgICAgICAgIFBy
b2dyZXNzQmFyVHlwZQorICAgIH07CisKKyAgICAvLyBDb25zdHJ1Y3RzIGEgY29udHJvbCBvZiB0
aGUgZ2l2ZW4gc2l6ZSwgdHlwZSBhbmQgc3RhdGUgdG8gZHJhdworICAgIC8vIG9uIHRvIHRoZSBn
aXZlbiBjYW52YXMuCisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbihTa0NhbnZhcyosIGNvbnN0
IFNrSVJlY3QmLCBUeXBlLCBTdGF0ZSk7CisgICAgfldlYlRlc3RUaGVtZUNvbnRyb2xXaW4oKTsK
KworICAgIC8vIERyYXdzIHRoZSBjb250cm9sLgorICAgIHZvaWQgZHJhdygpOworCisgICAgLy8g
VXNlIHRoaXMgZm9yIFRleHRGaWVsZCBjb250cm9scyBpbnN0ZWFkLCBiZWNhdXNlIHRoZSBsb2dp
YworICAgIC8vIGZvciBkcmF3aW5nIHRoZW0gaXMgZGVwZW5kZW50IG9uIHdoYXQgV2ViS2l0IHRl
bGxzIHVzIHRvIGRvLgorICAgIC8vIElmIGRyYXdFZGdlcyBpcyB0cnVlLCBkcmF3IGFuIGVkZ2Ug
YXJvdW5kIHRoZSBjb250cm9sLiBJZgorICAgIC8vIGZpbGxDb250ZW50QXJlYSBpcyB0cnVlLCBm
aWxsIHRoZSBjb250ZW50IGFyZWEgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuCisgICAgdm9pZCBkcmF3
VGV4dEZpZWxkKGJvb2wgZHJhd0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJlYSwgU2tDb2xvcik7
CisKKyAgICAvLyBVc2UgdGhpcyBmb3IgZHJhd2luZyBQcm9ncmVzc0JhciBjb250cm9scyBpbnN0
ZWFkLCBzaW5jZSB3ZQorICAgIC8vIG5lZWQgdG8ga25vdyB0aGUgcmVjdCB0byBmaWxsIGluc2lk
ZSB0aGUgYmFyLgorICAgIHZvaWQgZHJhd1Byb2dyZXNzQmFyKGNvbnN0IFNrSVJlY3QmIGZpbGxS
ZWN0KTsKKworcHJpdmF0ZToKKyAgICAvLyBEcmF3cyBhIGJveCBvZiBzaXplIHNwZWNpZmllZCBi
eSBpcmVjdCwgZmlsbGVkIHdpdGggdGhlIGdpdmVuIGNvbG9yLgorICAgIC8vIFRoZSBib3ggd2ls
bCBoYXZlIGEgYm9yZGVyIGRyYXduIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9p
ZCBib3goY29uc3QgU2tJUmVjdCYgaXJlY3QsIFNrQ29sb3IpOworCisKKyAgICAvLyBEcmF3cyBh
IHRyaWFuZ2xlIG9mIHNpemUgc3BlY2lmaWVkIGJ5IHRoZSB0aHJlZSBwYWlycyBvZiBjb29yZGlu
YXRlcywKKyAgICAvLyBmaWxsZWQgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuIFRoZSBib3ggd2lsbCBo
YXZlIGFuIGVkZ2UgZHJhd24gaW4gdGhlCisgICAgLy8gZGVmYXVsdCBlZGdlIGNvbG9yLgorICAg
IHZvaWQgdHJpYW5nbGUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGlu
dCB5MiwgU2tDb2xvcik7CisKKyAgICAvLyBEcmF3cyBhIHJlY3RhbmdsZSB0aGUgc2l6ZSBvZiB0
aGUgY29udHJvbCB3aXRoIHJvdW5kZWQgY29ybmVycywgZmlsbGVkCisgICAgLy8gd2l0aCB0aGUg
c3BlY2lmaWVkIGNvbG9yIChhbmQgd2l0aCBhIGJvcmRlciBpbiB0aGUgZGVmYXVsdCBlZGdlIGNv
bG9yKS4KKyAgICB2b2lkIHJvdW5kUmVjdChTa0NvbG9yKTsKKworICAgIC8vIERyYXdzIGFuIG92
YWwgdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wsIGZpbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgY29s
b3IKKyAgICAvLyBhbmQgd2l0aCBhIGJvcmRlciBpbiB0aGUgZGVmYXVsdCBlZGdlIGNvbG9yLgor
ICAgIHZvaWQgb3ZhbChTa0NvbG9yKTsKKworICAgIC8vIERyYXdzIGEgY2lyY2xlIGNlbnRlcmVk
IGluIHRoZSBjb250cm9sIHdpdGggdGhlIHNwZWNpZmllZCByYWRpdXMsCisgICAgLy8gZmlsbGVk
IHdpdGggdGhlIHNwZWNpZmllZCBjb2xvciwgYW5kIHdpdGggYSBib3JkZXIgZHJhdyBpbiB0aGUK
KyAgICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCBjaXJjbGUoU2tTY2FsYXIgcmFk
aXVzLCBTa0NvbG9yKTsKKworICAgIC8vIERyYXdzIGEgYm94IHRoZSBzaXplIG9mIHRoZSBjb250
cm9sLCBmaWxsZWQgd2l0aCB0aGUgb3V0ZXJDb2xvciBhbmQKKyAgICAvLyB3aXRoIGEgYm9yZGVy
IGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IsIGFuZCB0aGVuIGRyYXdzIGFub3RoZXIgYm94Cisg
ICAgLy8gaW5kZW50ZWQgb24gYWxsIGZvdXIgc2lkZXMgYnkgdGhlIHNwZWNpZmllZCBhbW91bnRz
LCBmaWxsZWQgd2l0aCB0aGUKKyAgICAvLyBpbm5lciBjb2xvciBhbmQgd2l0aCBhIGJvcmRlciBp
biB0aGUgZGVmYXVsdCBlZGdlIGNvbG9yLgorICAgIHZvaWQgbmVzdGVkQm94ZXMoaW50IGluZGVu
dExlZnQsIGludCBpbmRlbnRUb3AsIGludCBpbmRlbnRSaWdodCwgaW50IGluZGVudEJvdHRvbSwg
U2tDb2xvciBvdXRlckNvbG9yLCBTa0NvbG9yIGlubmVyQ29sb3IpOworCisgICAgLy8gRHJhd3Mg
YSBsaW5lIGJldHdlZW4gdGhlIHR3byBwb2ludHMgaW4gdGhlIGdpdmVuIGNvbG9yLgorICAgIHZv
aWQgbGluZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIFNrQ29sb3IpOworCisgICAg
Ly8gRHJhd3MgYSBkaXN0aW5jdGl2ZSBtYXJrIG9uIHRoZSBjb250cm9sIGZvciBlYWNoIHN0YXRl
LCBzbyB0aGF0IHRoZQorICAgIC8vIHN0YXRlIG9mIHRoZSBjb250cm9sIGNhbiBiZSBkZXRlcm1p
bmVkIHdpdGhvdXQgbmVlZGluZyB0byBrbm93IHdoaWNoCisgICAgLy8gY29sb3IgaXMgd2hpY2gu
CisgICAgdm9pZCBtYXJrU3RhdGUoKTsKKworICAgIFNrQ2FudmFzKiBtX2NhbnZhczsKKyAgICBj
b25zdCBTa0lSZWN0IG1faXJlY3Q7CisgICAgY29uc3QgVHlwZSBtX3R5cGU7CisgICAgY29uc3Qg
U3RhdGUgbV9zdGF0ZTsKKyAgICBjb25zdCBTa0NvbG9yIG1fZWRnZUNvbG9yOworICAgIGNvbnN0
IFNrQ29sb3IgbV9iZ0NvbG9yOworICAgIGNvbnN0IFNrQ29sb3IgbV9mZ0NvbG9yOworCisgICAg
Ly8gVGhlIGZvbGxvd2luZyBhcmUgY29udmVuaWVuY2UgYWNjZXNzb3JzIGZvciBtX2lyZWN0Lgor
ICAgIGNvbnN0IGludCBtX2xlZnQ7CisgICAgY29uc3QgaW50IG1fcmlnaHQ7CisgICAgY29uc3Qg
aW50IG1fdG9wOworICAgIGNvbnN0IGludCBtX2JvdHRvbTsKKyAgICBjb25zdCBpbnQgbV93aWR0
aDsKKyAgICBjb25zdCBpbnQgbV9oZWlnaHQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJUZXN0
VGhlbWVDb250cm9sV2luX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjBiNTIzMmY3N2RjNmU5NjM0YTA0YWQzYTE3MmY5NjgyNzIzZmE1MwotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBpbXBsZW1lbnRzIHRo
ZSBXZWJUaGVtZUVuZ2luZSBBUEkgaW4gc3VjaCBhIHdheSB0aGF0IHdlIG1hdGNoIHRoZSBNYWMK
Ky8vIHBvcnQgcmVuZGVyaW5nIG1vcmUgdGhhbiB1c3VhbCBDaHJvbWl1bSBwYXRoLCB0aHVzIGFs
bG93aW5nIHVzIHRvIHNoYXJlCisvLyBtb3JlIHBpeGVsIGJhc2VsaW5lcy4KKworI2lmbmRlZiBX
ZWJUZXN0VGhlbWVFbmdpbmVNYWNfaAorI2RlZmluZSBXZWJUZXN0VGhlbWVFbmdpbmVNYWNfaAor
CisjaW5jbHVkZSA8cHVibGljL21hYy9XZWJUaGVtZUVuZ2luZS5oPgorCituYW1lc3BhY2UgV2Vi
VGVzdFJ1bm5lciB7CisKK2NsYXNzIFdlYlRlc3RUaGVtZUVuZ2luZU1hYyA6IHB1YmxpYyBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxiYXJUaHVtYigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLAorICAgICAgICBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
U2l6ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwKKyAgICAgICAgY29uc3QgV2Vi
S2l0OjpXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYpOworCitwcml2YXRlOgorICAgIHZp
cnR1YWwgdm9pZCBwYWludEhJVGhlbWVTY3JvbGxiYXJUaHVtYigKKyAgICAgICAgV2ViS2l0OjpX
ZWJDYW52YXMqLAorICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSwKKyAgICAg
ICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2l6ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpX
ZWJSZWN0JiwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFy
SW5mbyYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludE5TU2Nyb2xsZXJTY3JvbGxiYXJUaHVtYigK
KyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLAorICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2l6ZSwKKyAgICAg
ICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYpOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViVGVzdFRo
ZW1lRW5naW5lTWFjX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mMzlmZDUzOGJiMmNjMDVjZGIzN2U4ZjAxZDAwMTM4NTdlNmQ3Yzc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLm1tCkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldl
YlRlc3RUaGVtZUVuZ2luZU1hYy5oIgorCisjaW5jbHVkZSA8cHVibGljL1dlYkNhbnZhcy5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CisjaW5jbHVkZSAic2tpYS9leHQvc2tpYV91dGls
c19tYWMuaCIKKyNpbXBvcnQgPEFwcEtpdC9OU0FmZmluZVRyYW5zZm9ybS5oPgorI2ltcG9ydCA8
QXBwS2l0L05TR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxBcHBLaXQvTlNTY3JvbGxlci5o
PgorI2ltcG9ydCA8QXBwS2l0L05TV2luZG93Lmg+CisjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5o
PgorCit1c2luZyBXZWJLaXQ6OldlYkNhbnZhczsKK3VzaW5nIFdlYktpdDo6V2ViUmVjdDsKK3Vz
aW5nIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU7CisKKy8vIFdlIGNhbid0IGRpcmVjdGx5IHRlbGwg
dGhlIE5TU2Nyb2xsZXIgdG8gZHJhdyBpdHNlbGYgYXMgYWN0aXZlIG9yIGluYWN0aXZlLAorLy8g
aW5zdGVhZCB3ZSBoYXZlIHRvIG1ha2UgaXQgYSBjaGlsZCBvZiBhbiAoaW4pYWN0aXZlIHdpbmRv
dy4gVGhpcyBjbGFzcyBsZXRzCisvLyB1cyBmYWtlIHRoYXQgcGFyZW50IHdpbmRvdy4KK0BpbnRl
cmZhY2UgRmFrZUFjdGl2ZVdpbmRvdyA6IE5TV2luZG93IHsKK0Bwcml2YXRlCisgICAgQk9PTCBo
YXNBY3RpdmVDb250cm9sczsKK30KKysgKE5TV2luZG93KilhbHdheXNBY3RpdmVXaW5kb3c7Cisr
IChOU1dpbmRvdyopYWx3YXlzSW5hY3RpdmVXaW5kb3c7CistIChpZClpbml0V2l0aEFjdGl2ZUNv
bnRyb2xzOihCT09MKV9oYXNBY3RpdmVDb250cm9sczsKKy0gKEJPT0wpX2hhc0FjdGl2ZUNvbnRy
b2xzOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRmFrZUFjdGl2ZVdpbmRvdworCitzdGF0aWMg
TlNXaW5kb3cqIGFsd2F5c0FjdGl2ZVdpbmRvdyA9IG5pbDsKK3N0YXRpYyBOU1dpbmRvdyogYWx3
YXlzSW5hY3RpdmVXaW5kb3cgPSBuaWw7CisKKysgKE5TV2luZG93KilhbHdheXNBY3RpdmVXaW5k
b3cKK3sKKyAgICBpZiAoYWx3YXlzQWN0aXZlV2luZG93ID09IG5pbCkKKyAgICAgICAgYWx3YXlz
QWN0aXZlV2luZG93ID0gW1tzZWxmIGFsbG9jXSBpbml0V2l0aEFjdGl2ZUNvbnRyb2xzOllFU107
CisgICAgcmV0dXJuIGFsd2F5c0FjdGl2ZVdpbmRvdzsKK30KKworKyAoTlNXaW5kb3cqKWFsd2F5
c0luYWN0aXZlV2luZG93Cit7CisgICAgaWYgKGFsd2F5c0luYWN0aXZlV2luZG93ID09IG5pbCkK
KyAgICAgICAgYWx3YXlzSW5hY3RpdmVXaW5kb3cgPSBbW3NlbGYgYWxsb2NdIGluaXRXaXRoQWN0
aXZlQ29udHJvbHM6Tk9dOworICAgIHJldHVybiBhbHdheXNJbmFjdGl2ZVdpbmRvdzsKK30KKwor
LSAoaWQpaW5pdFdpdGhBY3RpdmVDb250cm9sczooQk9PTClfaGFzQWN0aXZlQ29udHJvbHMKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGhhc0FjdGl2ZUNvbnRyb2xzID0gX2hhc0Fj
dGl2ZUNvbnRyb2xzOworICAgIHJldHVybiBzZWxmOworfQorCistIChCT09MKV9oYXNBY3RpdmVD
b250cm9scworeworICAgIHJldHVybiBoYXNBY3RpdmVDb250cm9sczsKK30KKworQGVuZAorCitu
YW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK25hbWVzcGFjZSB7CisKK1RoZW1lVHJhY2tFbmFi
bGVTdGF0ZSBzdGF0ZVRvSElFbmFibGVTdGF0ZShXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUp
Cit7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgV2ViVGhlbWVFbmdpbmU6OlN0YXRl
RGlzYWJsZWQ6CisgICAgICAgIHJldHVybiBrVGhlbWVUcmFja0Rpc2FibGVkOworICAgIGNhc2Ug
V2ViVGhlbWVFbmdpbmU6OlN0YXRlSW5hY3RpdmU6CisgICAgICAgIHJldHVybiBrVGhlbWVUcmFj
a0luYWN0aXZlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBrVGhlbWVUcmFja0FjdGl2
ZTsKKyAgICB9Cit9CisKK30KKwordm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVNYWM6OnBhaW50U2Ny
b2xsYmFyVGh1bWIoCisgICAgV2ViQ2FudmFzKiBjYW52YXMsCisgICAgV2ViVGhlbWVFbmdpbmU6
OlN0YXRlIHN0YXRlLAorICAgIFdlYlRoZW1lRW5naW5lOjpTaXplIHNpemUsCisgICAgY29uc3Qg
V2ViUmVjdCYgcmVjdCwKKyAgICBjb25zdCBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYg
c2Nyb2xsYmFySW5mbykKK3sKKyAgICAvLyBUbyBtYXRjaCB0aGUgTWFjIHBvcnQsIHdlIHN0aWxs
IHVzZSBISVRoZW1lIGZvciBpbm5lciBzY3JvbGxiYXJzLgorICAgIGlmIChzY3JvbGxiYXJJbmZv
LnBhcmVudCA9PSBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFyUGFyZW50UmVuZGVyTGF5ZXIpCisg
ICAgICAgIHBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKGNhbnZhcywgc3RhdGUsIHNpemUsIHJl
Y3QsIHNjcm9sbGJhckluZm8pOworICAgIGVsc2UKKyAgICAgICAgcGFpbnROU1Njcm9sbGVyU2Ny
b2xsYmFyVGh1bWIoY2FudmFzLCBzdGF0ZSwgc2l6ZSwgcmVjdCwgc2Nyb2xsYmFySW5mbyk7Cit9
CisKKy8vIER1cGxpY2F0ZWQgZnJvbSB3ZWJraXQvZ2x1ZS93ZWJ0aGVtZWVuZ2luZV9pbXBsX21h
Yy5jYyBpbiB0aGUgZG93bnN0cmVhbQorLy8gQ2hyb21pdW0gV2ViVGhlbWVFbmdpbmUgaW1wbGVt
ZW50YXRpb24uCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZU1hYzo6cGFpbnRISVRoZW1lU2Nyb2xs
YmFyVGh1bWIoCisgICAgV2ViQ2FudmFzKiBjYW52YXMsCisgICAgV2ViVGhlbWVFbmdpbmU6OlN0
YXRlIHN0YXRlLAorICAgIFdlYlRoZW1lRW5naW5lOjpTaXplIHNpemUsCisgICAgY29uc3QgV2Vi
UmVjdCYgcmVjdCwKKyAgICBjb25zdCBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYgc2Ny
b2xsYmFySW5mbykKK3sKKyAgICBISVRoZW1lVHJhY2tEcmF3SW5mbyB0cmFja0luZm87CisgICAg
dHJhY2tJbmZvLnZlcnNpb24gPSAwOworICAgIHRyYWNrSW5mby5raW5kID0gc2l6ZSA9PSBXZWJU
aGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBrVGhlbWVNZWRpdW1TY3JvbGxCYXIgOiBrVGhlbWVT
bWFsbFNjcm9sbEJhcjsKKyAgICB0cmFja0luZm8uYm91bmRzID0gQ0dSZWN0TWFrZShyZWN0Lngs
IHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpOworICAgIHRyYWNrSW5mby5taW4gPSAw
OworICAgIHRyYWNrSW5mby5tYXggPSBzY3JvbGxiYXJJbmZvLm1heFZhbHVlOworICAgIHRyYWNr
SW5mby52YWx1ZSA9IHNjcm9sbGJhckluZm8uY3VycmVudFZhbHVlOworICAgIHRyYWNrSW5mby50
cmFja0luZm8uc2Nyb2xsYmFyLnZpZXdzaXplID0gc2Nyb2xsYmFySW5mby52aXNpYmxlU2l6ZTsK
KyAgICB0cmFja0luZm8uYXR0cmlidXRlcyA9IDA7CisgICAgaWYgKHNjcm9sbGJhckluZm8ub3Jp
ZW50YXRpb24gPT0gV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhck9yaWVudGF0aW9uSG9yaXpvbnRh
bCkKKyAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgfD0ga1RoZW1lVHJhY2tIb3Jpem9udGFs
OworCisgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc3RhdGVUb0hJRW5hYmxlU3RhdGUoc3Rh
dGUpOworCisgICAgdHJhY2tJbmZvLnRyYWNrSW5mby5zY3JvbGxiYXIucHJlc3NTdGF0ZSA9Cisg
ICAgICAgIHN0YXRlID09IFdlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQgPyBrVGhlbWVUaHVt
YlByZXNzZWQgOiAwOworICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IChrVGhlbWVUcmFja1No
b3dUaHVtYiB8IGtUaGVtZVRyYWNrSGlkZVRyYWNrKTsKKyAgICBnZng6OlNraWFCaXRMb2NrZXIg
Yml0TG9ja2VyKGNhbnZhcyk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGJpdExvY2tl
ci5jZ0NvbnRleHQoKTsKKyAgICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFja0luZm8sIDAsIGNnQ29u
dGV4dCwga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1hbCk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1l
RW5naW5lTWFjOjpwYWludE5TU2Nyb2xsZXJTY3JvbGxiYXJUaHVtYigKKyAgICBXZWJDYW52YXMq
IGNhbnZhcywKKyAgICBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUsCisgICAgV2ViVGhlbWVF
bmdpbmU6OlNpemUgc2l6ZSwKKyAgICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAgIGNvbnN0IFdl
YlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBzY3JvbGxiYXJJbmZvKQoreworICAgIFtOU0dy
YXBoaWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CisgICAgTlNTY3JvbGxlciogc2Nyb2xs
ZXIgPSBbW05TU2Nyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdChyZWN0Lngs
IHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpXTsKKyAgICBbc2Nyb2xsZXIgc2V0RW5h
YmxlZDpzdGF0ZSAhPSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZF07CisgICAgaWYgKHN0
YXRlID09IFdlYlRoZW1lRW5naW5lOjpTdGF0ZUluYWN0aXZlKQorICAgICAgICBbW1tGYWtlQWN0
aXZlV2luZG93IGFsd2F5c0luYWN0aXZlV2luZG93XSBjb250ZW50Vmlld10gYWRkU3Vidmlldzpz
Y3JvbGxlcl07CisgICAgZWxzZQorICAgICAgICBbW1tGYWtlQWN0aXZlV2luZG93IGFsd2F5c0Fj
dGl2ZVdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6c2Nyb2xsZXJdOworCisgICAgW3Nj
cm9sbGVyIHNldENvbnRyb2xTaXplOnNpemUgPT0gV2ViVGhlbWVFbmdpbmU6OlNpemVSZWd1bGFy
ID8gTlNSZWd1bGFyQ29udHJvbFNpemUgOiBOU1NtYWxsQ29udHJvbFNpemVdOworCisgICAgZG91
YmxlIHZhbHVlID0gZG91YmxlKHNjcm9sbGJhckluZm8uY3VycmVudFZhbHVlKSAvIGRvdWJsZShz
Y3JvbGxiYXJJbmZvLm1heFZhbHVlKTsKKyAgICBbc2Nyb2xsZXIgc2V0RG91YmxlVmFsdWU6IHZh
bHVlXTsKKworICAgIGZsb2F0IGtub2JQcm9wb3J0aW9uID0gZmxvYXQoc2Nyb2xsYmFySW5mby52
aXNpYmxlU2l6ZSkgLyBmbG9hdChzY3JvbGxiYXJJbmZvLnRvdGFsU2l6ZSk7CisgICAgW3Njcm9s
bGVyIHNldEtub2JQcm9wb3J0aW9uOiBrbm9iUHJvcG9ydGlvbl07CisKKyAgICBnZng6OlNraWFC
aXRMb2NrZXIgYml0TG9ja2VyKGNhbnZhcyk7CisgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9
IGJpdExvY2tlci5jZ0NvbnRleHQoKTsKKyAgICBOU0dyYXBoaWNzQ29udGV4dCogbnNHcmFwaGlj
c0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNz
UG9ydDpjZ0NvbnRleHQgZmxpcHBlZDpZRVNdOworICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRD
dXJyZW50Q29udGV4dDpuc0dyYXBoaWNzQ29udGV4dF07CisKKyAgICAvLyBEZXNwaXRlIHBhc3Np
bmcgaW4gZnJhbWVSZWN0KCkgdG8gdGhlIHNjcm9sbGVyLCBpdCBhbHdheXMgZHJhd3MgYXQgKDAs
IDApLgorICAgIC8vIEZvcmNlIGl0IHRvIGRyYXcgaW4gdGhlIHJpZ2h0IGxvY2F0aW9uIGJ5IHRy
YW5zbGF0aW5nIHRoZSB3aG9sZSBncmFwaGljcworICAgIC8vIGNvbnRleHQuCisgICAgQ0dDb250
ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworICAgIE5TQWZmaW5lVHJhbnNmb3JtICp0cmFuc2Zv
cm0gPSBbTlNBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtXTsKKyAgICBbdHJhbnNmb3JtIHRyYW5z
bGF0ZVhCeTpyZWN0LnggeUJ5OnJlY3QueV07CisgICAgW3RyYW5zZm9ybSBjb25jYXRdOworCisg
ICAgW3Njcm9sbGVyIGRyYXdLbm9iXTsKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29u
dGV4dCk7CisKKyAgICBbc2Nyb2xsZXIgcmVsZWFzZV07CisKKyAgICBbTlNHcmFwaGljc0NvbnRl
eHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVdOworfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVXaW4u
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVz
dFRoZW1lRW5naW5lV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDMzOWY1NWRkNjYxZGEyYzUwOWYwNTg0
ZDZmNDQ2ZTgzZGZkZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmNwcApAQCAtMCww
ICsxLDc0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUZXN0VGhlbWVFbmdp
bmVXaW4uaCIKKworI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJXZWJUZXN0VGhl
bWVDb250cm9sV2luLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUv
U2tSZWN0LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KKworLy8gQWx0aG91Z2ggYWxs
IHRoaXMgY29kZSBpcyBnZW5lcmljLCB3ZSBpbmNsdWRlIHRoZXNlIGhlYWRlcnMKKy8vIHRvIHB1
bGwgaW4gdGhlIFdpbmRvd3MgI2RlZmluZXMgZm9yIHRoZSBwYXJ0cyBhbmQgc3RhdGVzIG9mCisv
LyB0aGUgY29udHJvbHMuCisjaW5jbHVkZSA8dnNzdHlsZS5oPgorI2luY2x1ZGUgPHdpbmRvd3Mu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIg
eworCituYW1lc3BhY2UgeworCisvLyBXZSBkZWZpbmUgdGhpcyBmb3IgY2xhcml0eSwgYWx0aG91
Z2ggdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBhIERGQ1NfTk9STUFMIGluIHdpbnVzZXIuaC4KK2Nv
bnN0IGludCBkZmNzTm9ybWFsID0gMHgwMDAwOworCitTa0lSZWN0IHdlYlJlY3RUb1NrSVJlY3Qo
Y29uc3QgV2ViUmVjdCYgd2ViUmVjdCkKK3sKKyAgICBTa0lSZWN0IGlyZWN0OworICAgIGlyZWN0
LnNldCh3ZWJSZWN0LngsIHdlYlJlY3QueSwgd2ViUmVjdC54ICsgd2ViUmVjdC53aWR0aCAtIDEs
IHdlYlJlY3QueSArIHdlYlJlY3QuaGVpZ2h0IC0gMSk7CisgICAgcmV0dXJuIGlyZWN0OworfQor
Cit2b2lkIGRyYXdDb250cm9sKFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiByZWN0
LCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpUeXBlIGN0eXBlLCBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpTdGF0ZSBjc3RhdGUpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbiBjb250cm9s
KGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29u
dHJvbC5kcmF3KCk7Cit9CisKK3ZvaWQgZHJhd1RleHRGaWVsZChXZWJDYW52YXMqIGNhbnZhcywg
Y29uc3QgV2ViUmVjdCYgcmVjdCwgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSwg
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlLCBib29sIGRyYXdFZGdlcywgYm9v
bCBmaWxsQ29udGVudEFyZWEsIFdlYkNvbG9yIGNvbG9yKQoreworICAgIFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW4gY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJlY3QocmVjdCksIGN0eXBlLCBj
c3RhdGUpOworICAgIGNvbnRyb2wuZHJhd1RleHRGaWVsZChkcmF3RWRnZXMsIGZpbGxDb250ZW50
QXJlYSwgY29sb3IpOworfQorCit2b2lkIGRyYXdQcm9ncmVzc0JhcihXZWJDYW52YXMqIGNhbnZh
cywgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSwgV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6U3RhdGUgY3N0YXRlLCBjb25zdCBXZWJSZWN0JiBiYXJSZWN0LCBjb25zdCBXZWJSZWN0
JiBmaWxsUmVjdCkKK3sKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luIGNvbnRyb2woY2FudmFz
LCB3ZWJSZWN0VG9Ta0lSZWN0KGJhclJlY3QpLCBjdHlwZSwgY3N0YXRlKTsKKyAgICBjb250cm9s
LmRyYXdQcm9ncmVzc0Jhcih3ZWJSZWN0VG9Ta0lSZWN0KGZpbGxSZWN0KSk7Cit9CisKK30KKwor
dm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50QnV0dG9uKFdlYkNhbnZhcyogY2FudmFz
LCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiBy
ZWN0KQoreworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisK
KyAgICBpZiAocGFydCA9PSBCUF9DSEVDS0JPWCkgeworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7
CisgICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFRE5PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIENCU19VTkNIRUNLRURIT1Q6CisgICAgICAgICAgICBXRUJL
SVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSE9UKSk7
CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVuY2hlY2tlZEJv
eFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RT
dGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFRFBS
RVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19C
VVRUT05DSEVDSyB8IERGQ1NfUFVTSEVEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OlVuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIENCU19VTkNIRUNLRURESVNBQkxFRDoKKyAgICAgICAgICAgIFdFQktJ
VF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19JTkFDVElW
RSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmNoZWNr
ZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX0NI
RUNLRUROT1JNQUw6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAo
REZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFREhPVDoKKyAgICAgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwg
REZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
Q2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX0NI
RUNLRURQUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0g
KERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBERkNTX1BVU0hFRCkpOworICAgICAg
ICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkQm94VHlwZTsKKyAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX0NIRUNLRURESVNBQkxFRDoK
KyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNI
RUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIENCU19NSVhFRE5PUk1BTDoKKyAgICAgICAgICAgIC8v
IENsYXNzaWMgdGhlbWUgY2FuJ3QgcmVwcmVzZW50IG1peGVkIHN0YXRlIGNoZWNrYm94LiBXZSBh
c3N1bWUKKyAgICAgICAgICAgIC8vIGl0J3MgZXF1aXZhbGVudCB0byB1bmNoZWNrZWQuCisgICAg
ICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTkNIRUNLKTsK
KyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SW5kZXRlcm1pbmF0
ZUNoZWNrYm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNf
TUlYRURIT1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZD
U19CVVRUT05DSEVDSyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OkluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGU7CisgICAgICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgQ0JTX01JWEVEUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJ
VF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19QVVNIRUQp
KTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SW5kZXRlcm1p
bmF0ZUNoZWNrYm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
Q0JTX01JWEVERElTQUJMRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0
eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsK
KyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3Rh
dGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKEJQX1JBRElPQlVUVE9OID09IHBhcnQpIHsKKyAgICAgICAgc3dp
dGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFJCU19VTkNIRUNLRUROT1JNQUw6CisgICAgICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlJBRElPKTsKKyAg
ICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkUmFkaW9U
eXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFs
U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19VTkNIRUNLRURI
T1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRU
T05SQURJTyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlVuY2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBSQlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19QVVNIRUQpKTsKKyAgICAg
ICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkUmFkaW9UeXBl
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0
YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VERElT
QUJMRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19C
VVRUT05SQURJTyB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRl
ID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgUkJTX0NIRUNLRUROT1JNQUw6CisgICAgICAgICAgICBXRUJL
SVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tF
RCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2Vk
UmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVD
S0VESE9UOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1Nf
QlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkUmFkaW9UeXBlOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAgICAg
IFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19D
SEVDS0VEIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgUkJTX0NIRUNLRURESVNBQkxFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEIHwgREZD
U19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpDaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoQlBfUFVTSEJVVFRPTiA9PSBw
YXJ0KSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBQQlNfTk9STUFM
OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19CVVRUT05Q
VVNIKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHVzaEJ1
dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpO
b3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUEJTX0hPVDoK
KyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlBV
U0ggfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQ
QlNfUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX0JVVFRPTlBVU0ggfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgUEJTX0RJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAg
ICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHVzaEJ1dHRvblR5cGU7
CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0
YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQQlNfREVGQVVMVEVEOgor
ICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19CVVRUT05QVVNI
KTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHVzaEJ1dHRv
blR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpGb2N1
c2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworCisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwor
dm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50TWVudUxpc3QoV2ViQ2FudmFzKiBjYW52
YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3Qm
IHJlY3QpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25UeXBlOworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25TdGF0ZTsK
KworICAgIGlmIChDUF9EUk9QRE9XTkJVVFRPTiA9PSBwYXJ0KSB7CisgICAgICAgIGN0eXBlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RHJvcERvd25CdXR0b25UeXBlOworICAgICAgICBzd2l0
Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgQ0JYU19OT1JNQUw6CisgICAgICAgICAgICBXRUJL
SVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX01FTlVBUlJPVyk7CisgICAgICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19IT1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0hPVCkpOworICAgICAg
ICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19QUkVTU0VEOgorICAgICAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19QVVNI
RUQpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNz
ZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19ESVNBQkxF
RDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX01FTlVB
UlJPVyB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlw
ZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50U2Nyb2xs
YmFyQXJyb3coV2ViQ2FudmFzKiBjYW52YXMsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwg
Y29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpUeXBl
IGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blR5cGU7CisgICAgV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
VW5rbm93blN0YXRlOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgQUJTX1VQTk9S
TUFMOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQ
KTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVcEFycm93VHlwZTsK
KyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfRE9XTk5PUk1BTDoKKyAgICAgICAgV0VCS0lU
X0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExET1dOKTsKKyAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEFCU19MRUZUTk9STUFMOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSBERkNTX1NDUk9MTExFRlQpOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX1JJ
R0hUTk9STUFMOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1ND
Uk9MTFJJR0hUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpSaWdo
dEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9y
bWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBIT1Q6CisgICAgICAg
IFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19IT1Qp
KTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVcEFycm93VHlwZTsK
KyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfRE9XTkhPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSE9UKSk7CisgICAgICAg
IGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RG93bkFycm93VHlwZTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBBQlNfTEVGVEhPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2lj
U3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSE9UKSk7CisgICAgICAgIGN0eXBlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6TGVmdEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAg
Y2FzZSBBQlNfUklHSFRIT1Q6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBB
QlNfVVBIT1ZFUjoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19T
Q1JPTExVUCk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VXBBcnJv
d1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdmVyU3Rh
dGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfRE9XTkhPVkVSOgorICAgICAgICBX
RUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOworICAgICAgICBj
dHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRvd25BcnJvd1R5cGU7CisgICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBBQlNfTEVGVEhPVkVSOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX1NDUk9MTExFRlQpOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNf
UklHSFRIT1ZFUjoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19T
Q1JPTExSSUdIVCk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Umln
aHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Okhv
dmVyU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfVVBQUkVTU0VEOgorICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1Nf
UFVTSEVEIHwgREZDU19GTEFUKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6VXBBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19ET1dOUFJF
U1NFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xM
RE9XTiB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6RG93bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgQUJTX0xFRlRQUkVTU0VEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKKyAgICAgICAg
Y3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpMZWZ0QXJyb3dUeXBlOworICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBBQlNfUklHSFRQUkVTU0VEOgorICAgICAgICBXRUJLSVRfQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfUFVTSEVEIHwgREZDU19G
TEFUKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UmlnaHRBcnJv
d1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRT
dGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19VUERJU0FCTEVEOgorICAgICAg
ICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfSU5B
Q1RJVkUpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVcEFycm93
VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRT
dGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19ET1dORElTQUJMRUQ6CisgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNT
X0lOQUNUSVZFKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RG93
bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlz
YWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19MRUZURElTQUJMRUQ6
CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTExFRlQg
fCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6TGVmdEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVERJ
U0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JP
TExSSUdIVCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0
OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9
CisKK3ZvaWQgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWludFNjcm9sbGJhclRodW1iKFdlYkNh
bnZhcyogY2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25z
dCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtu
b3duU3RhdGU7CisKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBjYXNlIFNCUF9USFVNQkJUTkhP
Ulo6CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG9yaXpvbnRhbFNj
cm9sbFRodW1iVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9USFVNQkJUTlZF
UlQ6CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VmVydGljYWxTY3Jv
bGxUaHVtYlR5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQlBfR1JJUFBFUkhPUlo6
CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG9yaXpvbnRhbFNjcm9s
bEdyaXBUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX0dSSVBQRVJWRVJUOgor
ICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlZlcnRpY2FsU2Nyb2xsR3Jp
cFR5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2gg
KHN0YXRlKSB7CisgICAgY2FzZSBTQ1JCU19OT1JNQUw6CisgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFND
UkJTX0hPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19IT1Qp
OworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0hPVkVSOgorICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IFNDUkJTX1BSRVNTRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRm
Y3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVz
c2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKKyAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBo
YXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lk
IFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRTY3JvbGxiYXJUcmFjayhXZWJDYW52YXMqIGNh
bnZhcywgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwgY29uc3QgV2ViUmVj
dCYgcmVjdCwgY29uc3QgV2ViUmVjdCYgYWxpZ25SZWN0KQoreworICAgIFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duVHlw
ZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBj
YXNlIFNCUF9VUFBFUlRSQUNLSE9SWjoKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFNCUF9MT1dFUlRSQUNLSE9SWjoKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpIb3Jpem9udGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIFNCUF9VUFBFUlRSQUNLVkVSVDoKKyAgICAgICAgY3R5cGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpWZXJ0aWNhbFNjcm9sbFRyYWNrQmFja1R5cGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBTQlBfTE9XRVJUUkFDS1ZFUlQ6CisgICAgICAgIGN0eXBl
ID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VmVydGljYWxTY3JvbGxUcmFja0ZvcndhcmRUeXBl
OworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFdFQktJVF9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3dpdGNoIChzdGF0
ZSkgeworICAgIGNhc2UgU0NSQlNfTk9STUFMOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19I
T1Q6CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzaG91bGQg
bmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NS
QlNfSE9WRVI6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3Jt
YWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3ZlclN0YXRl
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfUFJFU1NFRDoKKyAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4g
cHJhY3RpY2UuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKKyAg
ICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7CisgICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMs
IHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6
cGFpbnRTcGluQnV0dG9uKFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBp
bnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3du
VHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisKKyAgICBpZiAocGFydCA9PSBTUE5QX1VQ
KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VXBBcnJvd1R5cGU7
CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBVUFNfTk9STUFMOgorICAg
ICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExVUCk7Cisg
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVQU19ESVNBQkxFRDoKKyAgICAgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19J
TkFDVElWRSkpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVQU19QUkVT
U0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NS
T0xMVVAgfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVVBTX0hPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChE
RkNTX1NDUk9MTFVQIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSBpZiAocGFydCA9PSBTUE5QX0RPV04pIHsKKyAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEb3duQXJyb3dUeXBlOworICAgICAgICBzd2l0Y2gg
KHN0YXRlKSB7CisgICAgICAgIGNhc2UgRE5TX05PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMRE9XTik7CisgICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEROU19ESVNBQkxFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX0lOQUNUSVZFKSk7Cisg
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE5TX1BSRVNTRUQ6CisgICAgICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZD
U19QVVNIRUQpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEROU19IT1Q6
CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExE
T1dOIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
IH0gZWxzZQorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgZHJhd0Nv
bnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUZXN0VGhl
bWVFbmdpbmVXaW46OnBhaW50VGV4dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwg
aW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0LCBXZWJDb2xv
ciBjb2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsIGJvb2wgZHJhd0VkZ2VzKQoreworICAgIFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisKKyAgICBXRUJLSVRfQVNT
RVJUKEVQX0VESVRURVhUID09IHBhcnQpOworICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6VGV4dEZpZWxkVHlwZTsKKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEVU
U19OT1JNQUw6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3Jt
YWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0
ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19IT1Q6CisgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBF
VFNfRElTQUJMRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1Nf
SU5BQ1RJVkUpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNh
YmxlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVRTX1NFTEVDVEVEOgorICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7CisgICAgICAg
IGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIEVUU19GT0NVU0VEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6Rm9jdXNlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVRT
X1JFQURPTkxZOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9y
bWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UmVhZE9ubHlT
dGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdUZXh0
RmllbGQoY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlLCBkcmF3RWRnZXMsIGZpbGxDb250ZW50
QXJlYSwgY29sb3IpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRUcmFj
a2JhcihXZWJDYW52YXMqIGNhbnZhcywgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNT
dGF0ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blR5cGU7CisgICAg
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6VW5rbm93blN0YXRlOworCisgICAgaWYgKFRLUF9USFVNQkJPVFRPTSA9PSBwYXJ0KSB7
CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG9yaXpvbnRhbFNsaWRl
clRodW1iVHlwZTsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFRVU19O
T1JNQUw6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9y
bWFsKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1h
bFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNfSE9UOgorICAg
ICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19IT1QpOworICAgICAg
ICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRVU19ESVNBQkxFRDoKKyAgICAgICAgICAgIFdF
QktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICAgICAg
Y3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVFVTX1BSRVNTRUQ6CisgICAgICAgICAgICBXRUJL
SVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7CisgICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYg
KFRLUF9USFVNQlZFUlQgPT0gcGFydCkgeworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlOworICAgICAgICBzd2l0Y2ggKHN0YXRl
KSB7CisgICAgICAgIGNhc2UgVFVTX05PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIFRVU19IT1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSBERkNTX0hPVCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVFVTX0RJ
U0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19J
TkFDVElWRSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpE
aXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNfUFJF
U1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfUFVT
SEVEKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNz
ZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLID09IHBhcnQpIHsKKyAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3Jpem9udGFsU2xpZGVyVHJhY2tUeXBlOwor
ICAgICAgICBXRUJLSVRfQVNTRVJUKHN0YXRlID09IFRSU19OT1JNQUwpOworICAgICAgICBXRUJL
SVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgfSBlbHNlIGlmIChUS1Bf
VFJBQ0tWRVJUID09IHBhcnQpIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpWZXJ0aWNhbFNsaWRlclRyYWNrVHlwZTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVChzdGF0
ZSA9PSBUUlZTX05PUk1BTCk7CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09
IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpO
b3JtYWxTdGF0ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworCisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30K
KworCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRQcm9ncmVzc0JhcihXZWJLaXQ6
OldlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGJhclJlY3QsIGNvbnN0
IFdlYktpdDo6V2ViUmVjdCYgdmFsdWVSZWN0LCBib29sIGRldGVybWluYXRlLCBkb3VibGUpCit7
CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlByb2dyZXNzQmFyVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpT
dGF0ZSBjc3RhdGUgPSBkZXRlcm1pbmF0ZSA/IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1h
bFN0YXRlIDogV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SW5kZXRlcm1pbmF0ZVN0YXRlOworICAg
IGRyYXdQcm9ncmVzc0JhcihjYW52YXMsIGN0eXBlLCBjc3RhdGUsIGJhclJlY3QsIHZhbHVlUmVj
dCk7Cit9CisKKworV2ViS2l0OjpXZWJTaXplIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6Z2V0U2l6
ZShpbnQgcGFydCkKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJTaXplKCk7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRlc3RUaGVtZUVuZ2luZVdpbi5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODRhM2VjNDJl
OWI3N2JlMTUxYzIzNTUzMjliOGQxZDQwNjBjMDM5YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2lu
ZVdpbi5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBpbXBsZW1lbnRzIHRoZSBXZWJUaGVtZUVu
Z2luZSBBUEkgdXNlZCBieSB0aGUgV2luZG93cyB2ZXJzaW9uIG9mCisvLyBDaHJvbWl1bSB0byBy
ZW5kZXIgbmF0aXZlIGZvcm0gY29udHJvbHMgbGlrZSBjaGVja2JveGVzLCByYWRpbyBidXR0b25z
LAorLy8gYW5kIHNjcm9sbCBiYXJzLgorLy8gVGhlIG5vcm1hbCBpbXBsZW1lbnRhdGlvbiAobmF0
aXZlX3RoZW1lKSByZW5kZXJzIHRoZSBjb250cm9scyB1c2luZyBlaXRoZXIKKy8vIHRoZSBVWFRo
ZW1lIHRoZW1pbmcgZW5naW5lIHByZXNlbnQgaW4gWFAsIFZpc3RhLCBhbmQgV2luIDcsIG9yIHRo
ZSAiY2xhc3NpYyIKKy8vIHRoZW1lIHVzZWQgaWYgdGhhdCB0aGVtZSBpcyBzZWxlY3RlZCBpbiB0
aGUgRGVza3RvcCBzZXR0aW5ncy4KKy8vIFVuZm9ydHVuYXRlbHksIGJvdGggb2YgdGhlc2UgdGhl
bWVzIHJlbmRlciBjb250cm9scyBkaWZmZXJlbnRseSBvbiB0aGUKKy8vIGRpZmZlcmVudCB2ZXJz
aW9ucyBvZiBXaW5kb3dzLgorLy8KKy8vIEluIG9yZGVyIHRvIGVuc3VyZSBtYXhpbXVtIGNvbnNp
c3RlbmN5IG9mIGJhc2VsaW5lcyBhY3Jvc3MgdGhlIGRpZmZlcmVudAorLy8gV2luZG93cyB2ZXJz
aW9ucywgd2UgcHJvdmlkZSBhIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBmb3IgRFJUIGhlcmUKKy8v
IGluc3RlYWQuIFRoZXNlIGNvbnRyb2xzIGFyZSBhY3R1YWxseSBwbGF0Zm9ybS1pbmRlcGVuZGVu
dCAodGhleSdyZSByZW5kZXJlZAorLy8gdXNpbmcgU2tpYSkgYW5kIGNvdWxkIGJlIHVzZWQgb24g
TGludXggYW5kIHRoZSBNYWMgYXMgd2VsbCwgc2hvdWxkIHdlCisvLyBjaG9vc2UgdG8gZG8gc28g
YXQgc29tZSBwb2ludC4KKy8vCisKKyNpZm5kZWYgV2ViVGVzdFRoZW1lRW5naW5lV2luX2gKKyNk
ZWZpbmUgV2ViVGVzdFRoZW1lRW5naW5lV2luX2gKKworI2luY2x1ZGUgPHB1YmxpYy93aW4vV2Vi
VGhlbWVFbmdpbmUuaD4KKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBXZWJU
ZXN0VGhlbWVFbmdpbmVXaW4gOiBwdWJsaWMgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZSB7CitwdWJs
aWM6CisgICAgV2ViVGVzdFRoZW1lRW5naW5lV2luKCkgeyB9CisKKyAgICAvLyBXZWJUaGVtZUVu
Z2luZSBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbigKKyAgICAgICAgV2Vi
S2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAor
ICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE1lbnVMaXN0KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3Rh
dGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwor
CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQXJyb3coCisgICAgICAgIFdlYktpdDo6
V2ViQ2FudmFzKiwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBX
ZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRodW1i
KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOworCisgICAgdmly
dHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVHJhY2soCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFz
KiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3Qg
V2ViS2l0OjpXZWJSZWN0JiwgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBhbGlnblJlY3QpOworCisg
ICAgdmlydHVhbCB2b2lkIHBhaW50U3BpbkJ1dHRvbigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52
YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25z
dCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFRleHRGaWVsZCgK
KyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xh
c3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLCBXZWJLaXQ6OldlYkNv
bG9yLCBib29sIGZpbGxDb250ZW50QXJlYSwKKyAgICAgICAgYm9vbCBkcmF3RWRnZXMpOworCisg
ICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tiYXIoCisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFz
KiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3Qg
V2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQcm9ncmVzc0JhcigK
KyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGJhclJl
Y3QsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgdmFsdWVSZWN0LAorICAgICAgICBi
b29sIGRldGVybWluYXRlLCBkb3VibGUgdGltZSk7CisKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
U2l6ZSBnZXRTaXplKGludCBwYXJ0KTsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlRlc3RUaGVt
ZUVuZ2luZVdpbl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNw
cAppbmRleCA0ZTIxMDMxNzE0ZTM5MDhiM2JlM2E2MjY4YTIzZmE2Zjc4NjZiZTA1Li45YzI0YTU4
ZDQ2MjQ0OTUyMThlZGIyYzNjN2FhYzVlZTczMjRkY2VjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTE0MCw2ICsxNDAsMTEgQEAgdm9pZCBUZXN0
U2hlbGw6OmluaXRpYWxpemUoTW9ja1BsYXRmb3JtKiBwbGF0Zm9ybVN1cHBvcnQpCiAjaWYgRU5B
QkxFKExJTktfUFJFUkVOREVSKQogICAgIG1fcHJlcmVuZGVyaW5nU3VwcG9ydCA9IGFkb3B0UHRy
KG5ldyBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydCgpKTsKICNlbmRpZgorI2lmICFkZWZpbmVk
KFVTRV9ERUZBVUxUX1JFTkRFUl9USEVNRSkgJiYgKE9TKFdJTkRPV1MpIHx8IE9TKE1BQ19PU19Y
KSkKKyAgICAvLyBTZXQgdGhlbWUgZW5naW5lLgorICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRUaGVt
ZUVuZ2luZShtX3Rlc3RJbnRlcmZhY2VzLT50aGVtZUVuZ2luZSgpKTsKKyNlbmRpZgorCiAKICAg
ICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGwuaAppbmRleCAwMmRhMWZjMmU5NWVhNjg2NTE5NTUyZWY3MDhkY2M5NTMx
ODQyZjQ4Li42ZTk4OTAzYjZkNjExNzE2MmYxZTEzODEzM2ZlMmE0MDQ4ODUxYTBmIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaApAQCAtNDcsNiArNDcsNyBAQCBj
bGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJU
aHJlYWQ7CiBjbGFzcyBXZWJWaWV3OworY2xhc3MgV2ViVGhlbWVFbmdpbmU7CiBjbGFzcyBXZWJV
Ukw7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RT
aGVsbE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5t
bQppbmRleCBkNzlhOGM4MzU2N2NmMWE3ZDVjYWY1ZDA5OGVmMGFkNGM0YTE3NWM0Li41M2VkZTU2
NjY5YjI4NDE4MzkzNzc1Njg2NjAzN2FkMDA4MDhiZjI2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tCkBAIC0zMSwxMiArMzEsOSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCi0jaW5jbHVkZSAiV2ViVGhl
bWVFbmdpbmVEUlRNYWMuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9y
dC5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogCi1zdGF0aWMgV2ViVGhlbWVFbmdpbmVE
UlRNYWMgdGhlbWVFbmdpbmU7Ci0KIC8vIEEgY2xhc3MgdG8gYmUgdGhlIHRhcmdldC9zZWxlY3Rv
ciBvZiB0aGUgIndhdGNoZG9nIiB0aHJlYWQgdGhhdCBlbnN1cmVzCiAvLyBwYWdlcyB0aW1lb3V0
IGlmIHRoZXkgdGFrZSB0b28gbG9uZyBhbmQgdGVsbHMgdGhlIHRlc3QgaGFybmVzcyB2aWEgc3Rk
b3V0LgogQGludGVyZmFjZSBXYXRjaERvZ1RhcmdldCA6IE5TT2JqZWN0IHsKQEAgLTEyOSw3ICsx
MjYsNiBAQCB2b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hlZCgpCiAKIHZvaWQgcGxhdGZv
cm1Jbml0KGludCosIGNoYXIqKiopCiB7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlNldFRoZW1lRW5n
aW5lKCZ0aGVtZUVuZ2luZSk7CiB9CiAKIHZvaWQgb3BlblN0YXJ0dXBEaWFsb2coKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5jcHAKaW5kZXggM2E0NmNm
YjcxYmJmNjE1OTc1N2I5OTA1OTI1ZmNmNTU4MDBhNWU0Zi4uMjUxNjQxZWQzZTIwY2JkZjZjOWUw
ZWIzOTIwNTlkMjU4NGJkZGRlMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGxXaW4uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCiAKLSNpbmNsdWRlICJXZWJUaGVtZUVuZ2luZURSVFdp
bi5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW5jbHVk
ZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxpby5oPgpAQCAtNDgsMTEgKzQ3LDYgQEAKICNkZWZpbmUg
Tk9OQ0xJRU5UTUVUUklDU19TSVpFX1BSRV9WSVNUQSBcCiAgICAgU0laRU9GX1NUUlVDVF9XSVRI
X1NQRUNJRklFRF9MQVNUX01FTUJFUihOT05DTElFTlRNRVRSSUNTLCBsZk1lc3NhZ2VGb250KQog
Ci0jaWZuZGVmIFVTRV9ERUZBVUxUX1JFTkRFUl9USEVNRQotLy8gVGhlbWUgZW5naW5lCi1zdGF0
aWMgV2ViVGhlbWVFbmdpbmVEUlRXaW4gdGhlbWVFbmdpbmU7Ci0jZW5kaWYKLQogLy8gVGhyZWFk
IG1haW4gdG8gcnVuIGZvciB0aGUgdGhyZWFkIHdoaWNoIGp1c3QgdGVzdHMgZm9yIHRpbWVvdXQu
CiB1bnNpZ25lZCBpbnQgX19zdGRjYWxsIHdhdGNoRG9nVGhyZWFkKHZvaWQqIGFyZykKIHsKQEAg
LTEyMCwxMSArMTE0LDYgQEAgdm9pZCBwbGF0Zm9ybUluaXQoaW50KiwgY2hhcioqKikKICAgICBf
c2V0bW9kZShfZmlsZW5vKHN0ZG91dCksIF9PX0JJTkFSWSk7CiAgICAgX3NldG1vZGUoX2ZpbGVu
byhzdGRlcnIpLCBfT19CSU5BUlkpOwogCi0jaWZuZGVmIFVTRV9ERUZBVUxUX1JFTkRFUl9USEVN
RQotICAgIC8vIFNldCB0aGVtZSBlbmdpbmUuCi0gICAgd2Via2l0X3N1cHBvcnQ6OlNldFRoZW1l
RW5naW5lKCZ0aGVtZUVuZ2luZSk7Ci0jZW5kaWYKLQogICAgIC8vIExvYWQgQWhlbSBmb250Lgog
ICAgIC8vIEFIRU1fX19fLlRURiBpcyBjb3BpZWQgdG8gdGhlIGRpcmVjdG9yeSBvZiBEdW1wUmVu
ZGVyVHJlZS5leGUgYnkgV2ViS2l0Lmd5cC4KICAgICBXQ0hBUiBwYXRoW19NQVhfUEFUSF07CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xE
UlRXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9s
RFJUV2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzE0MzFkODRiNTQ2NzBk
MmM5ZDY5ZTAyMDNmMTA5NjI3NzE4NTE5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNv
bnRyb2xEUlRXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTI5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIGZp
bGUgaW1wbGVtZW50cyBhIHNpbXBsZSBnZW5lcmljIHZlcnNpb24gb2YgdGhlIFdlYlRoZW1lRW5n
aW5lLAotLy8gd2hpY2ggaXMgdXNlZCB0byBkcmF3IGFsbCB0aGUgbmF0aXZlIGNvbnRyb2xzIG9u
IGEgd2ViIHBhZ2UuIFdlIHVzZSB0aGlzCi0vLyBmaWxlIHdoZW4gcnVubmluZyBpbiBsYXlvdXQg
dGVzdCBtb2RlIGluIG9yZGVyIHRvIHJlbW92ZSBhbnkKLS8vIHBsYXRmb3JtLXNwZWNpZmljIHJl
bmRlcmluZyBkaWZmZXJlbmNlcyBkdWUgdG8gdGhlbWVzLCBjb2xvcnMsIGV0Yy4KLS8vCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJUaGVtZUNvbnRyb2xEUlRXaW4uaCIKLQot
I2luY2x1ZGUgInNraWEvZXh0L3NraWFfdXRpbHNfd2luLmgiCi0jaW5jbHVkZSAidGhpcmRfcGFy
dHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDYW52YXMuaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9z
a2lhL2luY2x1ZGUvY29yZS9Ta1BhaW50LmgiCi0jaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9p
bmNsdWRlL2NvcmUvU2tQYXRoLmgiCi0jaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRl
L2NvcmUvU2tSZWN0LmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotc3RhdGljIGNvbnN0IFNrQ29s
b3IgZWRnZUNvbG9yICAgICA9IFNLX0NvbG9yQkxBQ0s7Ci1zdGF0aWMgY29uc3QgU2tDb2xvciBy
ZWFkT25seUNvbG9yID0gU2tDb2xvclNldFJHQigweGU5LCAweGMyLCAweGE2KTsKLXN0YXRpYyBj
b25zdCBTa0NvbG9yIGZnQ29sb3IgICAgICAgPSBTS19Db2xvckJMQUNLOwotc3RhdGljIGNvbnN0
IFNrQ29sb3IgYmdDb2xvcnNbXSAgICA9IHsKLSAgICBTS19Db2xvckJMQUNLLCAgICAgICAgICAg
ICAgICAgICAvLyBVbmtub3duCi0gICAgU2tDb2xvclNldFJHQigweGM5LCAweGM5LCAweGM5KSwg
Ly8gRGlzYWJsZWQKLSAgICBTa0NvbG9yU2V0UkdCKDB4ZjMsIDB4ZTAsIDB4ZDApLCAvLyBSZWFk
b25seQotICAgIFNrQ29sb3JTZXRSR0IoMHg4OSwgMHhjNCwgMHhmZiksIC8vIE5vcm1hbAotICAg
IFNrQ29sb3JTZXRSR0IoMHg0MywgMHhmOSwgMHhmZiksIC8vIEhvdAotICAgIFNrQ29sb3JTZXRS
R0IoMHgyMCwgMHhmNiwgMHhjYyksIC8vIEZvY3VzZWQKLSAgICBTa0NvbG9yU2V0UkdCKDB4MDAs
IDB4ZjMsIDB4YWMpLCAvLyBIb3ZlcgotICAgIFNrQ29sb3JTZXRSR0IoMHhhOSwgMHhmZiwgMHgx
MiksIC8vIFByZXNzZWQKLSAgICBTa0NvbG9yU2V0UkdCKDB4Y2MsIDB4Y2MsIDB4Y2MpICAvLyBJ
bmRldGVybWluYXRlCi19OwotCi1zdGF0aWMgU2tJUmVjdCB2YWxpZGF0ZShjb25zdCBTa0lSZWN0
JiByZWN0LCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUpCi17Ci0gICAgc3dpdGNo
IChjdHlwZSkgewotICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRCb3hU
eXBlOgotICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZToKLSAg
ICBjYXNlIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2VkUmFkaW9UeXBlOgotICAgIGNh
c2UgV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkUmFkaW9UeXBlOiB7Ci0gICAgICAgIFNr
SVJlY3QgcmV0dmFsID0gcmVjdDsKLQotICAgICAgICAvLyBUaGUgbWF4aW11bSB3aWR0aCBhbmQg
aGVpZ2h0IGlzIDEzLgotICAgICAgICAvLyBDZW50ZXIgdGhlIHNxdWFyZSBpbiB0aGUgcGFzc2Vk
IHJlY3RhbmdsZS4KLSAgICAgICAgY29uc3QgaW50IG1heENvbnRyb2xTaXplID0gMTM7Ci0gICAg
ICAgIGludCBjb250cm9sU2l6ZSA9IHN0ZDo6bWluKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSk7Ci0gICAgICAgIGNvbnRyb2xTaXplID0gc3RkOjptaW4oY29udHJvbFNpemUsIG1heENvbnRy
b2xTaXplKTsKLQotICAgICAgICByZXR2YWwuZkxlZnQgICA9IHJlY3QuZkxlZnQgKyAocmVjdC53
aWR0aCgpIC8gMikgLSAoY29udHJvbFNpemUgLyAyKTsKLSAgICAgICAgcmV0dmFsLmZSaWdodCAg
PSByZXR2YWwuZkxlZnQgKyBjb250cm9sU2l6ZSAtIDE7Ci0gICAgICAgIHJldHZhbC5mVG9wICAg
ID0gcmVjdC5mVG9wICsgKHJlY3QuaGVpZ2h0KCkgLyAyKSAtIChjb250cm9sU2l6ZSAvIDIpOwot
ICAgICAgICByZXR2YWwuZkJvdHRvbSA9IHJldHZhbC5mVG9wICsgY29udHJvbFNpemUgLSAxOwot
Ci0gICAgICAgIHJldHVybiByZXR2YWw7Ci0gICAgfQotCi0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIHJlY3Q7Ci0gICAgfQotfQotCi0vLyBXZWJUaGVtZUNvbnRyb2xEUlRXaW4KLQotV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpXZWJUaGVtZUNvbnRyb2xEUlRXaW4oU2tDYW52YXMqIGNhbnZh
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNr
SVJlY3QmIGlyZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVHlwZSBjdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN0YXRlIGNzdGF0ZSkKLSAgICA6IG1fY2FudmFzKGNhbnZhcykKLSAgICAsIG1faXJlY3Qo
dmFsaWRhdGUoaXJlY3QsIGN0eXBlKSkKLSAgICAsIG1fdHlwZShjdHlwZSkKLSAgICAsIG1fc3Rh
dGUoY3N0YXRlKQotICAgICwgbV9sZWZ0KG1faXJlY3QuZkxlZnQpCi0gICAgLCBtX3JpZ2h0KG1f
aXJlY3QuZlJpZ2h0KQotICAgICwgbV90b3AobV9pcmVjdC5mVG9wKQotICAgICwgbV9ib3R0b20o
bV9pcmVjdC5mQm90dG9tKQotICAgICwgbV9oZWlnaHQobV9pcmVjdC5oZWlnaHQoKSkKLSAgICAs
IG1fd2lkdGgobV9pcmVjdC53aWR0aCgpKQotICAgICwgbV9lZGdlQ29sb3IoZWRnZUNvbG9yKQot
ICAgICwgbV9iZ0NvbG9yKGJnQ29sb3JzW2NzdGF0ZV0pCi0gICAgLCBtX2ZnQ29sb3IoZmdDb2xv
cikKLXsKLX0KLQotV2ViVGhlbWVDb250cm9sRFJUV2luOjp+V2ViVGhlbWVDb250cm9sRFJUV2lu
KCkKLXsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmJveChjb25zdCBTa0lSZWN0
JiByZWN0LCBTa0NvbG9yIGZpbGxDb2xvcikKLXsKLSAgICBTa1BhaW50IHBhaW50OwotCi0gICAg
cGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwotICAgIHBhaW50LnNldENvbG9y
KGZpbGxDb2xvcik7Ci0gICAgbV9jYW52YXMtPmRyYXdJUmVjdChyZWN0LCBwYWludCk7Ci0KLSAg
ICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWlu
dDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdJUmVjdChyZWN0LCBwYWludCk7
Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpsaW5lKGludCB4MCwgaW50IHkwLCBp
bnQgeDEsIGludCB5MSwgU2tDb2xvciBjb2xvcikKLXsKLSAgICBTa1BhaW50IHBhaW50OwotICAg
IHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0xpbmUoU2tJbnRUb1Nj
YWxhcih4MCksIFNrSW50VG9TY2FsYXIoeTApLAotICAgICAgICAgICAgICAgICAgICAgICBTa0lu
dFRvU2NhbGFyKHgxKSwgU2tJbnRUb1NjYWxhcih5MSksCi0gICAgICAgICAgICAgICAgICAgICAg
IHBhaW50KTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OnRyaWFuZ2xlKGludCB4
MCwgaW50IHkwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4MSwg
aW50IHkxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4MiwgaW50
IHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrQ29sb3IgY29sb3Ip
Ci17Ci0gICAgU2tQYXRoIHBhdGg7Ci0gICAgU2tQYWludCBwYWludDsKLQotICAgIHBhaW50LnNl
dENvbG9yKGNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7
Ci0gICAgcGF0aC5pbmNSZXNlcnZlKDQpOwotICAgIHBhdGgubW92ZVRvKFNrSW50VG9TY2FsYXIo
eDApLCBTa0ludFRvU2NhbGFyKHkwKSk7Ci0gICAgcGF0aC5saW5lVG8oU2tJbnRUb1NjYWxhcih4
MSksIFNrSW50VG9TY2FsYXIoeTEpKTsKLSAgICBwYXRoLmxpbmVUbyhTa0ludFRvU2NhbGFyKHgy
KSwgU2tJbnRUb1NjYWxhcih5MikpOwotICAgIHBhdGguY2xvc2UoKTsKLSAgICBtX2NhbnZhcy0+
ZHJhd1BhdGgocGF0aCwgcGFpbnQpOwotCi0gICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3Ip
OwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgIG1fY2Fu
dmFzLT5kcmF3UGF0aChwYXRoLCBwYWludCk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250cm9sRFJU
V2luOjpyb3VuZFJlY3QoU2tDb2xvciBjb2xvcikKLXsKLSAgICBTa1JlY3QgcmVjdDsKLSAgICBT
a1NjYWxhciByYWRpdXMgPSBTa0ludFRvU2NhbGFyKDUpOwotICAgIFNrUGFpbnQgcGFpbnQ7Ci0K
LSAgICByZWN0LnNldChtX2lyZWN0KTsKLSAgICBwYWludC5zZXRDb2xvcihjb2xvcik7Ci0gICAg
cGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3
Um91bmRSZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7Ci0KLSAgICBwYWludC5zZXRD
b2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9T
dHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdSb3VuZFJlY3QocmVjdCwgcmFkaXVzLCByYWRpdXMs
IHBhaW50KTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Om92YWwoU2tDb2xvciBj
b2xvcikKLXsKLSAgICBTa1JlY3QgcmVjdDsKLSAgICBTa1BhaW50IHBhaW50OwotCi0gICAgcmVj
dC5zZXQobV9pcmVjdCk7Ci0gICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwotICAgIHBhaW50LnNl
dFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd092YWwocmVj
dCwgcGFpbnQpOwotCi0gICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOwotICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3T3Zh
bChyZWN0LCBwYWludCk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpjaXJjbGUo
U2tTY2FsYXIgcmFkaXVzLCBTa0NvbG9yIGNvbG9yKQotewotICAgIFNrU2NhbGFyIGN5ID0gU2tJ
bnRUb1NjYWxhcihtX3RvcCAgKyBtX2hlaWdodCAvIDIpOwotICAgIFNrU2NhbGFyIGN4ID0gU2tJ
bnRUb1NjYWxhcihtX2xlZnQgKyBtX3dpZHRoIC8gMik7Ci0gICAgU2tQYWludCBwYWludDsKLQot
ICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50Ojpr
RmlsbF9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdDaXJjbGUoY3gsIGN5LCByYWRpdXMsIHBh
aW50KTsKLQotICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKLSAgICBwYWludC5zZXRT
dHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShj
eCwgY3ksIHJhZGl1cywgcGFpbnQpOwotfQotCi12b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
bmVzdGVkQm94ZXMoaW50IGluZGVudExlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGluZGVudFRvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZW50UmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGluZGVudEJvdHRvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTa0NvbG9yIG91dGVyQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2tDb2xvciBpbm5lckNvbG9yKQotewotICAgIFNrSVJlY3QgbGly
ZWN0OwotICAgIGJveChtX2lyZWN0LCBvdXRlckNvbG9yKTsKLSAgICBsaXJlY3Quc2V0KG1faXJl
Y3QuZkxlZnQgKyBpbmRlbnRMZWZ0LAotICAgICAgICAgICAgICAgbV9pcmVjdC5mVG9wICsgaW5k
ZW50VG9wLAotICAgICAgICAgICAgICAgbV9pcmVjdC5mUmlnaHQgLSBpbmRlbnRSaWdodCwKLSAg
ICAgICAgICAgICAgIG1faXJlY3QuZkJvdHRvbSAtIGluZGVudEJvdHRvbSk7Ci0gICAgYm94KGxp
cmVjdCwgaW5uZXJDb2xvcik7Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjptYXJr
U3RhdGUoKQotewotICAgIC8vIFRoZSBob3Jpem9udGFsIGxpbmVzIGluIGEgcmVhZCBvbmx5IGNv
bnRyb2wgYXJlIHNwYWNlZCBieSB0aGlzIGFtb3VudC4KLSAgICBjb25zdCBpbnQgcmVhZE9ubHlM
aW5lT2Zmc2V0ID0gNTsKLQotICAgIC8vIFRoZSBsZW5ndGggb2YgYSB0cmlhbmdsZSBzaWRlIGZv
ciB0aGUgY29ybmVyIG1hcmtzLgotICAgIGNvbnN0IGludCB0cmlhbmdsZVNpemUgPSA1OwotCi0g
ICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBVbmtub3duU3RhdGU6Ci0gICAgY2FzZSBE
aXNhYmxlZFN0YXRlOgotICAgIGNhc2UgTm9ybWFsU3RhdGU6Ci0gICAgY2FzZSBJbmRldGVybWlu
YXRlU3RhdGU6Ci0gICAgICAgIC8vIERvbid0IHZpc3VhbGx5IG1hcmsgdGhlc2Ugc3RhdGVzIChj
b2xvciBpcyBlbm91Z2gpLgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlYWRPbmx5U3RhdGU6
Ci0gICAgICAgIC8vIERyYXdpbmcgbGluZXMgYWNyb3NzIHRoZSBjb250cm9sLgotICAgICAgICBm
b3IgKGludCBpID0gbV90b3AgKyByZWFkT25seUxpbmVPZmZzZXQ7IGkgPCBtX2JvdHRvbTsgaSAr
PSByZWFkT25seUxpbmVPZmZzZXQpCi0gICAgICAgICAgICBsaW5lKG1fbGVmdCArIDEsIGksIG1f
cmlnaHQgLSAxLCBpLCByZWFkT25seUNvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IEhvdFN0YXRlOgotICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIHVwcGVyIGxlZnQg
Y29ybmVyIG9mIHRoZSBjb250cm9sLgotICAgICAgICB0cmlhbmdsZShtX2xlZnQsICAgICAgICAg
ICAgICAgICBtX3RvcCwKLSAgICAgICAgICAgICAgICAgbV9sZWZ0ICsgdHJpYW5nbGVTaXplLCAg
bV90b3AsCi0gICAgICAgICAgICAgICAgIG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fdG9wICsg
dHJpYW5nbGVTaXplLCAgICBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBIb3ZlclN0YXRlOgotICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIHVwcGVyIHJp
Z2h0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KLSAgICAgICAgdHJpYW5nbGUobV9yaWdodCwgICAg
ICAgICAgICAgICAgbV90b3AsCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQsICAgICAgICAgICAg
ICAgIG1fdG9wICsgdHJpYW5nbGVTaXplLAotICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gdHJp
YW5nbGVTaXplLCBtX3RvcCwgICAgICAgICAgICAgICAgICAgbV9lZGdlQ29sb3IpOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgRm9jdXNlZFN0YXRlOgotICAgICAgICAvLyBEcmF3IGEgdHJp
YW5nbGUgaW4gdGhlIGJvdHRvbSByaWdodCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCi0gICAgICAg
IHRyaWFuZ2xlKG1fcmlnaHQsICAgICAgICAgICAgICAgIG1fYm90dG9tLAotICAgICAgICAgICAg
ICAgICBtX3JpZ2h0IC0gdHJpYW5nbGVTaXplLCBtX2JvdHRvbSwKLSAgICAgICAgICAgICAgICAg
bV9yaWdodCwgICAgICAgICAgICAgICAgbV9ib3R0b20gLSB0cmlhbmdsZVNpemUsIG1fZWRnZUNv
bG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFByZXNzZWRTdGF0ZToKLSAgICAgICAg
Ly8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIGNvbnRy
b2wuCi0gICAgICAgIHRyaWFuZ2xlKG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fYm90dG9tLAot
ICAgICAgICAgICAgICAgICBtX2xlZnQsICAgICAgICAgICAgICAgICBtX2JvdHRvbSAtIHRyaWFu
Z2xlU2l6ZSwKLSAgICAgICAgICAgICAgICAgbV9sZWZ0ICsgdHJpYW5nbGVTaXplLCAgbV9ib3R0
b20sICAgICAgICAgICAgICAgIG1fZWRnZUNvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgQ1JBU0goKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
ZHJhdygpCi17Ci0gICAgaW50IGhhbGZXaWR0aCA9IG1fd2lkdGggLyAyOwotICAgIGludCBoYWxm
SGVpZ2h0ID0gbV9oZWlnaHQgLyAyOwotICAgIGludCBxdWFydGVyV2lkdGggPSBtX3dpZHRoIC8g
NDsKLSAgICBpbnQgcXVhcnRlckhlaWdodCA9IG1faGVpZ2h0IC8gNDsKLQotICAgIC8vIEluZGVu
dCBhbW91bnRzIGZvciB0aGUgY2hlY2sgaW4gYSBjaGVja2JveCBvciByYWRpbyBidXR0b24uCi0g
ICAgY29uc3QgaW50IGNoZWNrSW5kZW50ID0gMzsKLQotICAgIC8vIEluZGVudCBhbW91bnRzIGZv
ciBzaG9ydCBhbmQgbG9uZyBzaWRlcyBvZiB0aGUgc2Nyb2xsYmFyIG5vdGNoZXMuCi0gICAgY29u
c3QgaW50IG5vdGNoTG9uZ09mZnNldCA9IDE7Ci0gICAgY29uc3QgaW50IG5vdGNoU2hvcnRPZmZz
ZXQgPSA0OwotICAgIGNvbnN0IGludCBub09mZnNldCA9IDA7Ci0KLSAgICAvLyBJbmRlbnQgYW1v
dW50cyBmb3IgdGhlIHNob3J0IGFuZCBsb25nIHNpZGVzIG9mIGEgc2Nyb2xsIHRodW1iIGJveC4K
LSAgICBjb25zdCBpbnQgdGh1bWJMb25nSW5kZW50ID0gMDsKLSAgICBjb25zdCBpbnQgdGh1bWJT
aG9ydEluZGVudCA9IDI7Ci0KLSAgICAvLyBJbmRlbnRzIGZvciB0aGUgY3Jvc3NoYXRjaCBvbiBh
IHNjcm9sbCBncmlwLgotICAgIGNvbnN0IGludCBncmlwTG9uZ0luZGVudCA9IDM7Ci0gICAgY29u
c3QgaW50IGdyaXBTaG9ydEluZGVudCA9IDU7Ci0KLSAgICAvLyBJbmRlbnRzIGZvciB0aGUgdGhl
IHNsaWRlciB0cmFjay4KLSAgICBjb25zdCBpbnQgc2xpZGVySW5kZW50ID0gMjsKLQotICAgIHN3
aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBVbmtub3duVHlwZToKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBUZXh0RmllbGRUeXBlOgotICAgICAgICAvLyBXZSByZW5kZXIgdGhpcyBieSBoYW5kIG91dHNp
ZGUgb2YgdGhpcyBmdW5jdGlvbi4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIENSQVNIKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBQdXNoQnV0dG9uVHlwZToK
LSAgICAgICAgLy8gcHVzaCBidXR0b25zIHJlbmRlciBhcyBhIHJvdW5kZWQgcmVjdGFuZ2xlCi0g
ICAgICAgIHJvdW5kUmVjdChtX2JnQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
VW5jaGVja2VkQm94VHlwZToKLSAgICAgICAgLy8gVW5jaGVja2VkIGJveGVzIGFyZSBzaW1wbHkg
cGxhaW4gYm94ZXMuCi0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQ2hlY2tlZEJveFR5cGU6Ci0gICAgICAgIG5lc3RlZEJveGVzKGNo
ZWNrSW5kZW50LCBjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIGNoZWNrSW5kZW50LCBtX2JnQ29s
b3IsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBJbmRldGVybWluYXRl
Q2hlY2tib3hUeXBlOgotICAgICAgICAvLyBJbmRldGVybWluYXRlIGNoZWNrYm94IGlzIGEgYm94
IGNvbnRhaW5pbmcgJy0nLgotICAgICAgICBuZXN0ZWRCb3hlcyhjaGVja0luZGVudCwgaGFsZkhl
aWdodCwgY2hlY2tJbmRlbnQsIGhhbGZIZWlnaHQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFVuY2hlY2tlZFJhZGlvVHlwZToKLSAgICAgICAgY2ly
Y2xlKFNrSW50VG9TY2FsYXIoaGFsZkhlaWdodCksIG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBDaGVja2VkUmFkaW9UeXBlOgotICAgICAgICBjaXJjbGUoU2tJbnRUb1Nj
YWxhcihoYWxmSGVpZ2h0KSwgbV9iZ0NvbG9yKTsKLSAgICAgICAgY2lyY2xlKFNrSW50VG9TY2Fs
YXIoaGFsZkhlaWdodCAtIGNoZWNrSW5kZW50KSwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIEhvcml6b250YWxTY3JvbGxUcmFja0JhY2tUeXBlOiB7Ci0gICAgICAgIC8v
IERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSBsZWZ0LgotICAgICAgICBpbnQgbG9uZ09m
ZnNldCA9IGhhbGZIZWlnaHQgLSBub3RjaExvbmdPZmZzZXQ7Ci0gICAgICAgIGludCBzaG9ydE9m
ZnNldCA9IG1fd2lkdGggLSBub3RjaFNob3J0T2Zmc2V0OwotICAgICAgICBuZXN0ZWRCb3hlcyhu
b09mZnNldCwgbG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIG1fYmdDb2xvciwg
bV9lZGdlQ29sb3IpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIEhvcml6b250
YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOiB7Ci0gICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBh
IG5vdGNoIGF0IHRoZSByaWdodC4KLSAgICAgICAgaW50IGxvbmdPZmZzZXQgID0gaGFsZkhlaWdo
dCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAgICAgaW50IHNob3J0T2Zmc2V0ID0gbV93aWR0aCAt
IG5vdGNoU2hvcnRPZmZzZXQ7Ci0gICAgICAgIG5lc3RlZEJveGVzKHNob3J0T2Zmc2V0LCBsb25n
T2Zmc2V0LCBub09mZnNldCwgbG9uZ09mZnNldCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlw
ZTogewotICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUgdG9wLgotICAg
ICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmV2lkdGggLSBub3RjaExvbmdPZmZzZXQ7Ci0gICAg
ICAgIGludCBzaG9ydE9mZnNldCA9IG1faGVpZ2h0IC0gbm90Y2hTaG9ydE9mZnNldDsKLSAgICAg
ICAgbmVzdGVkQm94ZXMobG9uZ09mZnNldCwgbm9PZmZzZXQsIGxvbmdPZmZzZXQsIHNob3J0T2Zm
c2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IGNhc2UgVmVydGljYWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOiB7Ci0gICAgICAgIC8vIERyYXcg
YSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSBib3R0b20uCi0gICAgICAgIGludCBsb25nT2Zmc2V0
ICA9IGhhbGZXaWR0aCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAgICAgaW50IHNob3J0T2Zmc2V0
ID0gbV9oZWlnaHQgLSBub3RjaFNob3J0T2Zmc2V0OwotICAgICAgICBuZXN0ZWRCb3hlcyhsb25n
T2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbm9PZmZzZXQsIG1fYmdDb2xvciwgbV9m
Z0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBIb3Jpem9udGFsU2Ny
b2xsVGh1bWJUeXBlOgotICAgICAgICAvLyBEcmF3IGEgbmFycm93ZXIgYm94IG9uIHRvcCBvZiB0
aGUgb3V0c2lkZSBib3guCi0gICAgICAgIG5lc3RlZEJveGVzKHRodW1iTG9uZ0luZGVudCwgdGh1
bWJTaG9ydEluZGVudCwgdGh1bWJMb25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50LCBtX2JnQ29s
b3IsIG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBWZXJ0aWNhbFNjcm9s
bFRodW1iVHlwZToKLSAgICAgICAgLy8gRHJhdyBhIHNob3J0ZXIgYm94IG9uIHRvcCBvZiB0aGUg
b3V0c2lkZSBib3guCi0gICAgICAgIG5lc3RlZEJveGVzKHRodW1iU2hvcnRJbmRlbnQsIHRodW1i
TG9uZ0luZGVudCwgdGh1bWJTaG9ydEluZGVudCwgdGh1bWJMb25nSW5kZW50LCBtX2JnQ29sb3Is
IG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBIb3Jpem9udGFsU2xpZGVy
VGh1bWJUeXBlOgotICAgIGNhc2UgVmVydGljYWxTbGlkZXJUaHVtYlR5cGU6Ci0gICAgICAgIC8v
IFNsaWRlciB0aHVtYnMgYXJlIG92YWxzLgotICAgICAgICBvdmFsKG1fYmdDb2xvcik7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsR3JpcFR5cGU6IHsKLSAgICAg
ICAgLy8gRHJhdyBhIGhvcml6b250YWwgY3Jvc3NoYXRjaCBmb3IgdGhlIGdyaXAuCi0gICAgICAg
IGludCBsb25nT2Zmc2V0ID0gaGFsZldpZHRoIC0gZ3JpcExvbmdJbmRlbnQ7Ci0gICAgICAgIGxp
bmUobV9sZWZ0ICArIGdyaXBMb25nSW5kZW50LCBtX3RvcCAgICArIGhhbGZIZWlnaHQsCi0gICAg
ICAgICAgICAgbV9yaWdodCAtIGdyaXBMb25nSW5kZW50LCBtX3RvcCAgICArIGhhbGZIZWlnaHQs
ICAgICAgbV9mZ0NvbG9yKTsKLSAgICAgICAgbGluZShtX2xlZnQgICsgbG9uZ09mZnNldCwgICAg
IG1fdG9wICAgICsgZ3JpcFNob3J0SW5kZW50LAotICAgICAgICAgICAgIG1fbGVmdCAgKyBsb25n
T2Zmc2V0LCAgICAgbV9ib3R0b20gLSBncmlwU2hvcnRJbmRlbnQsIG1fZmdDb2xvcik7Ci0gICAg
ICAgIGxpbmUobV9yaWdodCAtIGxvbmdPZmZzZXQsICAgICBtX3RvcCAgICArIGdyaXBTaG9ydElu
ZGVudCwKLSAgICAgICAgICAgICBtX3JpZ2h0IC0gbG9uZ09mZnNldCwgICAgIG1fYm90dG9tIC0g
Z3JpcFNob3J0SW5kZW50LCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAg
ICBjYXNlIFZlcnRpY2FsU2Nyb2xsR3JpcFR5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIHZlcnRp
Y2FsIGNyb3NzaGF0Y2ggZm9yIHRoZSBncmlwLgotICAgICAgICBpbnQgbG9uZ09mZnNldCA9IGhh
bGZIZWlnaHQgLSBncmlwTG9uZ0luZGVudDsKLSAgICAgICAgbGluZShtX2xlZnQgICsgaGFsZldp
ZHRoLCAgICAgICBtX3RvcCAgICArIGdyaXBMb25nSW5kZW50LAotICAgICAgICAgICAgIG1fbGVm
dCAgKyBoYWxmV2lkdGgsICAgICAgIG1fYm90dG9tIC0gZ3JpcExvbmdJbmRlbnQsIG1fZmdDb2xv
cik7Ci0gICAgICAgIGxpbmUobV9sZWZ0ICArIGdyaXBTaG9ydEluZGVudCwgbV90b3AgICAgKyBs
b25nT2Zmc2V0LAotICAgICAgICAgICAgIG1fcmlnaHQgLSBncmlwU2hvcnRJbmRlbnQsIG1fdG9w
ICAgICsgbG9uZ09mZnNldCwgICAgIG1fZmdDb2xvcik7Ci0gICAgICAgIGxpbmUobV9sZWZ0ICAr
IGdyaXBTaG9ydEluZGVudCwgbV9ib3R0b20gLSBsb25nT2Zmc2V0LAotICAgICAgICAgICAgIG1f
cmlnaHQgLSBncmlwU2hvcnRJbmRlbnQsIG1fYm90dG9tIC0gbG9uZ09mZnNldCwgICAgIG1fZmdD
b2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgTGVmdEFycm93VHlwZToK
LSAgICAgICAgLy8gRHJhdyBhIGxlZnQgYXJyb3cgaW5zaWRlIGEgYm94LgotICAgICAgICBib3go
bV9pcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgdHJpYW5nbGUobV9yaWdodCAtIHF1YXJ0ZXJX
aWR0aCwgbV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAotICAgICAgICAgICAgICAgICBtX3JpZ2h0
IC0gcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAgICAg
ICAgIG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgaGFsZkhlaWdodCwgICAgbV9m
Z0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFJpZ2h0QXJyb3dUeXBlOgotICAg
ICAgICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNpZGUgYSBib3guCi0gICAgICAgIGJveChtX2ly
ZWN0LCBtX2JnQ29sb3IpOwotICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldpZHRo
LCBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQgLSBx
dWFydGVyV2lkdGgsIG1fdG9wICAgICsgaGFsZkhlaWdodCwKLSAgICAgICAgICAgICAgICAgbV9s
ZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29sb3Ip
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgVXBBcnJvd1R5cGU6Ci0gICAgICAgIC8vIERy
YXcgYW4gdXAgYXJyb3cgaW5zaWRlIGEgYm94LgotICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0Nv
bG9yKTsKLSAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20g
LSBxdWFydGVySGVpZ2h0LAotICAgICAgICAgICAgICAgICBtX2xlZnQgICsgaGFsZldpZHRoLCAg
ICBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQgLSBx
dWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwgbV9mZ0NvbG9yKTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBjYXNlIERvd25BcnJvd1R5cGU6Ci0gICAgICAgIC8vIERyYXcgYSBk
b3duIGFycm93IGluc2lkZSBhIGJveC4KLSAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7
Ci0gICAgICAgIHRyaWFuZ2xlKG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgcXVh
cnRlckhlaWdodCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90
b3AgICAgKyBxdWFydGVySGVpZ2h0LAotICAgICAgICAgICAgICAgICBtX2xlZnQgICsgaGFsZldp
ZHRoLCAgICBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBIb3Jpem9udGFsU2xpZGVyVHJhY2tUeXBlOiB7Ci0gICAgICAgIC8v
IERyYXcgYSBuYXJyb3cgcmVjdCBmb3IgdGhlIHRyYWNrIHBsdXMgYm94IGhhdGNoZXMgb24gdGhl
IGVuZHMuCi0gICAgICAgIFNrSVJlY3QgbGlyZWN0OwotICAgICAgICBsaXJlY3QgPSBtX2lyZWN0
OwotICAgICAgICBsaXJlY3QuaW5zZXQobm9PZmZzZXQsIGhhbGZIZWlnaHQgLSBzbGlkZXJJbmRl
bnQpOwotICAgICAgICBib3gobGlyZWN0LCBtX2JnQ29sb3IpOwotICAgICAgICBsaW5lKG1fbGVm
dCwgIG1fdG9wLCBtX2xlZnQsICBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOwotICAgICAgICBsaW5l
KG1fcmlnaHQsIG1fdG9wLCBtX3JpZ2h0LCBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFZlcnRpY2FsU2xpZGVyVHJhY2tUeXBlOiB7Ci0g
ICAgICAgIC8vIERyYXcgYSBuYXJyb3cgcmVjdCBmb3IgdGhlIHRyYWNrIHBsdXMgYm94IGhhdGNo
ZXMgb24gdGhlIGVuZHMuCi0gICAgICAgIFNrSVJlY3QgbGlyZWN0OwotICAgICAgICBsaXJlY3Qg
PSBtX2lyZWN0OwotICAgICAgICBsaXJlY3QuaW5zZXQoaGFsZldpZHRoIC0gc2xpZGVySW5kZW50
LCBub09mZnNldCk7Ci0gICAgICAgIGJveChsaXJlY3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIGxp
bmUobV9sZWZ0LCBtX3RvcCwgbV9yaWdodCwgbV90b3AsIG1fZWRnZUNvbG9yKTsKLSAgICAgICAg
bGluZShtX2xlZnQsIG1fYm90dG9tLCBtX3JpZ2h0LCBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIERyb3BEb3duQnV0dG9uVHlwZToKLSAg
ICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgYmlnIGRvd24gYXJyb3cgb24gdG9wLgotICAgICAg
ICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICArIHF1
YXJ0ZXJXaWR0aCwgbV90b3AsCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQgLSBxdWFydGVyV2lk
dGgsIG1fdG9wLAotICAgICAgICAgICAgICAgICBtX2xlZnQgICsgaGFsZldpZHRoLCAgICBtX2Jv
dHRvbSwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgbWFya1N0YXRlKCk7Ci19Ci0KLS8vIEJlY2F1c2UgcmVuZGVyaW5nIGEg
dGV4dCBmaWVsZCBpcyBkZXBlbmRlbnQgb24gaW5wdXQKLS8vIHBhcmFtZXRlcnMgdGhlIG90aGVy
IGNvbnRyb2xzIGRvbid0IGhhdmUsIHdlIHJlbmRlciBpdCBkaXJlY3RseQotLy8gcmF0aGVyIHRo
YW4gdHJ5aW5nIHRvIG92ZXJjb21wbGljYXRlIGRyYXcoKSBmdXJ0aGVyLgotdm9pZCBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OmRyYXdUZXh0RmllbGQoYm9vbCBkcmF3RWRnZXMsIGJvb2wgZmlsbENv
bnRlbnRBcmVhLCBTa0NvbG9yIGNvbG9yKQotewotICAgIFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICBp
ZiAoZmlsbENvbnRlbnRBcmVhKSB7Ci0gICAgICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAg
ICAgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwotICAgICAgICBtX2Nh
bnZhcy0+ZHJhd0lSZWN0KG1faXJlY3QsIHBhaW50KTsKLSAgICB9Ci0gICAgaWYgKGRyYXdFZGdl
cykgewotICAgICAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAgICAgICBtX2NhbnZhcy0+ZHJh
d0lSZWN0KG1faXJlY3QsIHBhaW50KTsKLSAgICB9Ci0KLSAgICBtYXJrU3RhdGUoKTsKLX0KLQot
dm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmRyYXdQcm9ncmVzc0Jhcihjb25zdCBTa0lSZWN0
JiBmaWxsUmVjdCkKLXsKLSAgICBTa1BhaW50IHBhaW50OwotCi0gICAgcGFpbnQuc2V0Q29sb3Io
bV9iZ0NvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0g
ICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7Ci0KLSAgICAvLyBFbXVsYXRl
IGNsaXBwaW5nCi0gICAgU2tJUmVjdCB0b2ZpbGw7Ci0gICAgdG9maWxsLmludGVyc2VjdChtX2ly
ZWN0LCBmaWxsUmVjdCk7Ci0gICAgcGFpbnQuc2V0Q29sb3IobV9mZ0NvbG9yKTsKLSAgICBwYWlu
dC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdJUmVj
dCh0b2ZpbGwsIHBhaW50KTsKLQotICAgIG1hcmtTdGF0ZSgpOwotfQotCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjczMWFiMzk2MDg2ZjNhOWVkYjI2NzUwNGU3MDRh
NmMxMDE3OGYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5oCisr
KyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBXZWJUaGVtZUNvbnRyb2xEUlRXaW4gaW1w
bGVtZW50cyB0aGUgZ2VuZXJpYyByZW5kZXJpbmcgb2YgY29udHJvbHMKLS8vIG5lZWRlZCBieSBX
ZWJUaGVtZUVuZ2luZURSVFdpbi4gU2VlIHRoZSBjb21tZW50cyBpbiB0aGF0IGNsYXNzCi0vLyBo
ZWFkZXIgZmlsZSBmb3Igd2h5IHRoaXMgY2xhc3MgaXMgbmVlZGVkIGFuZCB1c2VkLgotLy8KLS8v
IFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGdlbmVyaWMgc2V0IG9mIHdpZGdldHMgdXNpbmcgU2tp
YS4gVGhlIHdpZGdldHMKLS8vIGFyZSBvcHRpbWl6ZWQgZm9yIHRlc3RhYmlsaXR5LCBub3QgYSBw
bGVhc2luZyBhcHBlYXJhbmNlLgotLy8KLQotI2lmbmRlZiBXZWJUaGVtZUNvbnRyb2xEUlRXaW5f
aAotI2RlZmluZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW5faAotCi0jaW5jbHVkZSAidGhpcmRfcGFy
dHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvci5oIgotI2luY2x1ZGUgInRoaXJkX3BhcnR5L3Nr
aWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgot
Ci0vLyBTa2lhIGZvcndhcmQgZGVjbGFyYXRpb25zCi1jbGFzcyBTa0NhbnZhczsKLQotY2xhc3Mg
V2ViVGhlbWVDb250cm9sRFJUV2luIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJUaGVt
ZUNvbnRyb2xEUlRXaW4pOwotcHVibGljOgotICAgIC8vIFRoaXMgbGlzdCBvZiBzdGF0ZXMgbW9z
dGx5IG1pcnJvcnMgdGhlIGxpc3QgaW4gV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKLSAg
ICAvLyBidXQgaXMgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IHNpbmNlIHRoYXQgaXNuJ3QgcHVibGlj
IGFuZCBhbHNvIHRvIG1pbmltaXplCi0gICAgLy8gZGVwZW5kZW5jaWVzLgotICAgIC8vIE5vdGUg
dGhhdCB0aGUgV2ViS2l0IFRoZW1lVHlwZXMgc2VlbSB0byBpbXBseSB0aGF0IGEgY29udHJvbCBj
YW4gYmUKLSAgICAvLyBpbiBtdWx0aXBsZSBzdGF0ZXMgc2ltdWx0YW5lb3VzbHkgYnV0IFdlYlRo
ZW1lRW5naW5lIG9ubHkgYWxsb3dzIGZvcgotICAgIC8vIGEgc2luZ2xlIHN0YXRlIGF0IGEgdGlt
ZS4KLSAgICAvLwotICAgIC8vIFNvbWUgZGVmaW5pdGlvbnMgZm9yIHRoZSB2YXJpb3VzIHN0YXRl
czoKLSAgICAvLyAgIERpc2FibGVkIC0gaW5kaWNhdGVzIHRoYXQgYSBjb250cm9sIGNhbid0IGJl
IG1vZGlmaWVkIG9yIHNlbGVjdGVkCi0gICAgLy8gICAgICAgICAgICAgIChjb3JyZXNwb25kcyB0
byBIVE1MICdkaXNhYmxlZCcgYXR0cmlidXRlKQotICAgIC8vICAgUmVhZE9ubHkgLSBpbmRpY2F0
ZXMgdGhhdCBhIGNvbnRyb2wgY2FuJ3QgYmUgbW9kaWZpZWQgYnV0IGNhbiBiZQotICAgIC8vICAg
ICAgICAgICAgICBzZWxlY3RlZAotICAgIC8vICAgTm9ybWFsICAgLSB0aGUgbm9ybWFsIHN0YXRl
IG9mIGNvbnRyb2wgb24gdGhlIHBhZ2Ugd2hlbiBpdCBpc24ndAotICAgIC8vICAgICAgICAgICAg
ICBmb2N1c2VkIG9yIG90aGVyd2lzZSBhY3RpdmUKLSAgICAvLyAgIEhvdCAgICAgIC0gd2hlbiB0
aGUgbW91c2UgaXMgaG92ZXJpbmcgb3ZlciBhIHBhcnQgb2YgdGhlIGNvbnRyb2wsCi0gICAgLy8g
ICAgICAgICAgICAgIGFsbCB0aGUgb3RoZXIgcGFydHMgYXJlIGNvbnNpZGVyZWQgImhvdCIKLSAg
ICAvLyAgIEhvdmVyICAgIC0gd2hlbiB0aGUgbW91c2UgaXMgZGlyZWN0bHkgb3ZlciBhIGNvbnRy
b2wgKHRoZSBDU1MKLSAgICAvLyAgICAgICAgICAgICAgIDpob3ZlciBwc2V1ZG8tY2xhc3MpCi0g
ICAgLy8gICBGb2N1c2VkICAtIHdoZW4gdGhlIGNvbnRyb2wgaGFzIHRoZSBrZXlib2FyZCBmb2N1
cwotICAgIC8vICAgUHJlc3NlZCAgLSB3aGVuIHRoZSBjb250cm9sIGlzIGJlaW5nIHRyaWdnZXJl
ZCAoYnkgYSBtb3VzZWRvd24gb3IKLSAgICAvLyAgICAgICAgICAgICAgYSBrZXkgZXZlbnQpLgot
ICAgIC8vICAgSW5kZXRlcm1pbmF0ZSAtIHdoZW4gc2V0IHRvIGluZGV0ZXJtaW5hdGUgKG9ubHkg
Zm9yIHByb2dyZXNzIGJhcikKLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgVW5rbm93blN0YXRl
ID0gMCwKLSAgICAgICAgRGlzYWJsZWRTdGF0ZSwKLSAgICAgICAgUmVhZE9ubHlTdGF0ZSwKLSAg
ICAgICAgTm9ybWFsU3RhdGUsCi0gICAgICAgIEhvdFN0YXRlLAotICAgICAgICBIb3ZlclN0YXRl
LAotICAgICAgICBGb2N1c2VkU3RhdGUsCi0gICAgICAgIFByZXNzZWRTdGF0ZSwKLSAgICAgICAg
SW5kZXRlcm1pbmF0ZVN0YXRlCi0gICAgfTsKLQotICAgIC8vIFRoaXMgbGlzdCBvZiB0eXBlcyBt
b3N0bHkgbWlycm9ycyB0aGUgbGlzdCBpbgotICAgIC8vIFdlYkNvcmUvcGxhdGZvcm0vVGhlbWVU
eXBlcy5oIGJ1dCBpcyBtYWludGFpbmVkCi0gICAgLy8gc2VwYXJhdGVseSBzaW5jZSB0aGF0IGlz
bid0IHB1YmxpYyBhbmQgYWxzbyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMuCi0gICAgLy8KLSAg
ICAvLyBOb3RlIHRoYXQgd2hhdCB0aGUgdXNlciBtaWdodCB0aGluayBvZiBhcyBhIHNpbmdsZSBj
b250cm9sIGNhbiBiZQotICAgIC8vIG1hZGUgdXAgb2YgbXVsdGlwbGUgcGFydHMuIEZvciBleGFt
cGxlLCBhIHNpbmdsZSBzY3JvbGwgYmFyIGNvbnRhaW5zCi0gICAgLy8gc2l4IGNsaWNrYWJsZSBw
YXJ0cyAtIHR3byBhcnJvd3MsIHRoZSAidGh1bWIiIGluZGljYXRpbmcgdGhlIGN1cnJlbnQKLSAg
ICAvLyBwb3NpdGlvbiBvbiB0aGUgYmFyLCB0aGUgb3RoZXIgdHdvIHBhcnRzIG9mIHRoZSBiYXIg
KGJlZm9yZSBhbmQgYWZ0ZXIKLSAgICAvLyB0aGUgdGh1bWIpIGFuZCB0aGUgImdyaXBwZXIiIG9u
IHRoZSB0aHVtYiBpdHNlbGYuCi0gICAgLy8KLSAgICBlbnVtIFR5cGUgewotICAgICAgICBVbmtu
b3duVHlwZSA9IDAsCi0gICAgICAgIFRleHRGaWVsZFR5cGUsCi0gICAgICAgIFB1c2hCdXR0b25U
eXBlLAotICAgICAgICBVbmNoZWNrZWRCb3hUeXBlLAotICAgICAgICBDaGVja2VkQm94VHlwZSwK
LSAgICAgICAgSW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZSwKLSAgICAgICAgVW5jaGVja2VkUmFk
aW9UeXBlLAotICAgICAgICBDaGVja2VkUmFkaW9UeXBlLAotICAgICAgICBIb3Jpem9udGFsU2Ny
b2xsVHJhY2tCYWNrVHlwZSwKLSAgICAgICAgSG9yaXpvbnRhbFNjcm9sbFRyYWNrRm9yd2FyZFR5
cGUsCi0gICAgICAgIEhvcml6b250YWxTY3JvbGxUaHVtYlR5cGUsCi0gICAgICAgIEhvcml6b250
YWxTY3JvbGxHcmlwVHlwZSwKLSAgICAgICAgVmVydGljYWxTY3JvbGxUcmFja0JhY2tUeXBlLAot
ICAgICAgICBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGUsCi0gICAgICAgIFZlcnRpY2Fs
U2Nyb2xsVGh1bWJUeXBlLAotICAgICAgICBWZXJ0aWNhbFNjcm9sbEdyaXBUeXBlLAotICAgICAg
ICBMZWZ0QXJyb3dUeXBlLAotICAgICAgICBSaWdodEFycm93VHlwZSwKLSAgICAgICAgVXBBcnJv
d1R5cGUsCi0gICAgICAgIERvd25BcnJvd1R5cGUsCi0gICAgICAgIEhvcml6b250YWxTbGlkZXJU
cmFja1R5cGUsCi0gICAgICAgIEhvcml6b250YWxTbGlkZXJUaHVtYlR5cGUsCi0gICAgICAgIFZl
cnRpY2FsU2xpZGVyVHJhY2tUeXBlLAotICAgICAgICBWZXJ0aWNhbFNsaWRlclRodW1iVHlwZSwK
LSAgICAgICAgRHJvcERvd25CdXR0b25UeXBlLAotICAgICAgICBQcm9ncmVzc0JhclR5cGUKLSAg
ICB9OwotCi0gICAgLy8gQ29uc3RydWN0cyBhIGNvbnRyb2wgb2YgdGhlIGdpdmVuIHNpemUsIHR5
cGUgYW5kIHN0YXRlIHRvIGRyYXcKLSAgICAvLyBvbiB0byB0aGUgZ2l2ZW4gY2FudmFzLgotICAg
IFdlYlRoZW1lQ29udHJvbERSVFdpbihTa0NhbnZhcyosIGNvbnN0IFNrSVJlY3QmLCBUeXBlLCBT
dGF0ZSk7Ci0gICAgfldlYlRoZW1lQ29udHJvbERSVFdpbigpOwotCi0gICAgLy8gRHJhd3MgdGhl
IGNvbnRyb2wuCi0gICAgdm9pZCBkcmF3KCk7Ci0KLSAgICAvLyBVc2UgdGhpcyBmb3IgVGV4dEZp
ZWxkIGNvbnRyb2xzIGluc3RlYWQsIGJlY2F1c2UgdGhlIGxvZ2ljCi0gICAgLy8gZm9yIGRyYXdp
bmcgdGhlbSBpcyBkZXBlbmRlbnQgb24gd2hhdCBXZWJLaXQgdGVsbHMgdXMgdG8gZG8uCi0gICAg
Ly8gSWYgZHJhd0VkZ2VzIGlzIHRydWUsIGRyYXcgYW4gZWRnZSBhcm91bmQgdGhlIGNvbnRyb2wu
IElmCi0gICAgLy8gZmlsbENvbnRlbnRBcmVhIGlzIHRydWUsIGZpbGwgdGhlIGNvbnRlbnQgYXJl
YSB3aXRoIHRoZSBnaXZlbiBjb2xvci4KLSAgICB2b2lkIGRyYXdUZXh0RmllbGQoYm9vbCBkcmF3
RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yKTsKLQotICAgIC8vIFVzZSB0aGlz
IGZvciBkcmF3aW5nIFByb2dyZXNzQmFyIGNvbnRyb2xzIGluc3RlYWQsIHNpbmNlIHdlCi0gICAg
Ly8gbmVlZCB0byBrbm93IHRoZSByZWN0IHRvIGZpbGwgaW5zaWRlIHRoZSBiYXIuCi0gICAgdm9p
ZCBkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3QpOwotCi1wcml2YXRlOgot
ICAgIC8vIERyYXdzIGEgYm94IG9mIHNpemUgc3BlY2lmaWVkIGJ5IGlyZWN0LCBmaWxsZWQgd2l0
aCB0aGUgZ2l2ZW4gY29sb3IuCi0gICAgLy8gVGhlIGJveCB3aWxsIGhhdmUgYSBib3JkZXIgZHJh
d24gaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lkIGJveChjb25zdCBTa0lSZWN0
JiBpcmVjdCwgU2tDb2xvcik7Ci0KLQotICAgIC8vIERyYXdzIGEgdHJpYW5nbGUgb2Ygc2l6ZSBz
cGVjaWZpZWQgYnkgdGhlIHRocmVlIHBhaXJzIG9mIGNvb3JkaW5hdGVzLAotICAgIC8vIGZpbGxl
ZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4gVGhlIGJveCB3aWxsIGhhdmUgYW4gZWRnZSBkcmF3biBp
biB0aGUKLSAgICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCi0gICAgdm9pZCB0cmlhbmdsZShpbnQg
eDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBTa0NvbG9yKTsKLQot
ICAgIC8vIERyYXdzIGEgcmVjdGFuZ2xlIHRoZSBzaXplIG9mIHRoZSBjb250cm9sIHdpdGggcm91
bmRlZCBjb3JuZXJzLCBmaWxsZWQKLSAgICAvLyB3aXRoIHRoZSBzcGVjaWZpZWQgY29sb3IgKGFu
ZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IpLgotICAgIHZvaWQgcm91
bmRSZWN0KFNrQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYW4gb3ZhbCB0aGUgc2l6ZSBvZiB0aGUg
Y29udHJvbCwgZmlsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvcgotICAgIC8vIGFuZCB3aXRo
IGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCi0gICAgdm9pZCBvdmFsKFNrQ29s
b3IpOwotCi0gICAgLy8gRHJhd3MgYSBjaXJjbGUgY2VudGVyZWQgaW4gdGhlIGNvbnRyb2wgd2l0
aCB0aGUgc3BlY2lmaWVkIHJhZGl1cywKLSAgICAvLyBmaWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVk
IGNvbG9yLCBhbmQgd2l0aCBhIGJvcmRlciBkcmF3IGluIHRoZQotICAgIC8vIGRlZmF1bHQgZWRn
ZSBjb2xvci4KLSAgICB2b2lkIGNpcmNsZShTa1NjYWxhciByYWRpdXMsIFNrQ29sb3IpOwotCi0g
ICAgLy8gRHJhd3MgYSBib3ggdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wsIGZpbGxlZCB3aXRoIHRo
ZSBvdXRlckNvbG9yIGFuZAotICAgIC8vIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRn
ZSBjb2xvciwgYW5kIHRoZW4gZHJhd3MgYW5vdGhlciBib3gKLSAgICAvLyBpbmRlbnRlZCBvbiBh
bGwgZm91ciBzaWRlcyBieSB0aGUgc3BlY2lmaWVkIGFtb3VudHMsIGZpbGxlZCB3aXRoIHRoZQot
ICAgIC8vIGlubmVyIGNvbG9yIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2Ug
Y29sb3IuCi0gICAgdm9pZCBuZXN0ZWRCb3hlcyhpbnQgaW5kZW50TGVmdCwKLSAgICAgICAgICAg
ICAgICAgICAgIGludCBpbmRlbnRUb3AsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50
UmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50Qm90dG9tLAotICAgICAgICAg
ICAgICAgICAgICAgU2tDb2xvciBvdXRlckNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgU2tD
b2xvciBpbm5lckNvbG9yKTsKLQotICAgIC8vIERyYXdzIGEgbGluZSBiZXR3ZWVuIHRoZSB0d28g
cG9pbnRzIGluIHRoZSBnaXZlbiBjb2xvci4KLSAgICB2b2lkIGxpbmUoaW50IHgwLCBpbnQgeTAs
IGludCB4MSwgaW50IHkxLCBTa0NvbG9yKTsKLQotICAgIC8vIERyYXdzIGEgZGlzdGluY3RpdmUg
bWFyayBvbiB0aGUgY29udHJvbCBmb3IgZWFjaCBzdGF0ZSwgc28gdGhhdCB0aGUKLSAgICAvLyBz
dGF0ZSBvZiB0aGUgY29udHJvbCBjYW4gYmUgZGV0ZXJtaW5lZCB3aXRob3V0IG5lZWRpbmcgdG8g
a25vdyB3aGljaAotICAgIC8vIGNvbG9yIGlzIHdoaWNoLgotICAgIHZvaWQgbWFya1N0YXRlKCk7
Ci0KLSAgICBTa0NhbnZhcyogbV9jYW52YXM7Ci0gICAgY29uc3QgU2tJUmVjdCBtX2lyZWN0Owot
ICAgIGNvbnN0IFR5cGUgbV90eXBlOwotICAgIGNvbnN0IFN0YXRlIG1fc3RhdGU7Ci0gICAgY29u
c3QgU2tDb2xvciBtX2VkZ2VDb2xvcjsKLSAgICBjb25zdCBTa0NvbG9yIG1fYmdDb2xvcjsKLSAg
ICBjb25zdCBTa0NvbG9yIG1fZmdDb2xvcjsKLQotICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIGNv
bnZlbmllbmNlIGFjY2Vzc29ycyBmb3IgbV9pcmVjdC4KLSAgICBjb25zdCBpbnQgbV9sZWZ0Owot
ICAgIGNvbnN0IGludCBtX3JpZ2h0OwotICAgIGNvbnN0IGludCBtX3RvcDsKLSAgICBjb25zdCBp
bnQgbV9ib3R0b207Ci0gICAgY29uc3QgaW50IG1fd2lkdGg7Ci0gICAgY29uc3QgaW50IG1faGVp
Z2h0OwotfTsKLQotI2VuZGlmIC8vIFdlYlRoZW1lQ29udHJvbERSVFdpbl9oCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwZmU2NmM5NTI3ZjAxYTU0MzEwNjc5NTJlYmVm
Mjk0OTA5MTRhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIGltcGxlbWVudHMgdGhlIFdlYlRoZW1lRW5naW5l
IEFQSSBpbiBzdWNoIGEgd2F5IHRoYXQgd2UgbWF0Y2ggdGhlIE1hYwotLy8gcG9ydCByZW5kZXJp
bmcgbW9yZSB0aGFuIHVzdWFsIENocm9taXVtIHBhdGgsIHRodXMgYWxsb3dpbmcgdXMgdG8gc2hh
cmUKLS8vIG1vcmUgcGl4ZWwgYmFzZWxpbmVzLgotCi0jaWZuZGVmIFdlYlRoZW1lRW5naW5lRFJU
TWFjX2gKLSNkZWZpbmUgV2ViVGhlbWVFbmdpbmVEUlRNYWNfaAotCi0jaW5jbHVkZSA8cHVibGlj
L21hYy9XZWJUaGVtZUVuZ2luZS5oPgotCi1jbGFzcyBXZWJUaGVtZUVuZ2luZURSVE1hYyA6IHB1
YmxpYyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRTY3JvbGxiYXJUaHVtYigKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLAotICAgICAg
ICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSwKLSAgICAgICAgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6U2l6ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwKLSAgICAgICAg
Y29uc3QgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYpOwotCi1wcml2YXRl
OgotICAgIHZpcnR1YWwgdm9pZCBwYWludEhJVGhlbWVTY3JvbGxiYXJUaHVtYigKLSAgICAgICAg
V2ViS2l0OjpXZWJDYW52YXMqLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0
ZSwKLSAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2l6ZSwKLSAgICAgICAgY29uc3Qg
V2ViS2l0OjpXZWJSZWN0JiwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6
U2Nyb2xsYmFySW5mbyYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludE5TU2Nyb2xsZXJTY3JvbGxi
YXJUaHVtYigKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLAotICAgICAgICBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpTdGF0ZSwKLSAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2l6
ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwKLSAgICAgICAgY29uc3QgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYpOwotfTsKLQotI2VuZGlmIC8vIFdlYlRo
ZW1lRW5naW5lRFJUTWFjX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk2NmRiYWNhODEyNjdjNjMyNmFjMTkxOTRhNjQ5MzNkOWQyMWRhYmEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSwxOTEgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJXZWJUaGVtZUVuZ2luZURSVE1hYy5oIgotCi0jaW5jbHVkZSA8cHVibGlj
L1dlYkNhbnZhcy5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0jaW5jbHVkZSAic2tp
YS9leHQvc2tpYV91dGlsc19tYWMuaCIKLSNpbXBvcnQgPEFwcEtpdC9OU0FmZmluZVRyYW5zZm9y
bS5oPgotI2ltcG9ydCA8QXBwS2l0L05TR3JhcGhpY3NDb250ZXh0Lmg+Ci0jaW1wb3J0IDxBcHBL
aXQvTlNTY3JvbGxlci5oPgotI2ltcG9ydCA8QXBwS2l0L05TV2luZG93Lmg+Ci0jaW5jbHVkZSA8
Q2FyYm9uL0NhcmJvbi5oPgotCi11c2luZyBXZWJLaXQ6OldlYkNhbnZhczsKLXVzaW5nIFdlYktp
dDo6V2ViUmVjdDsKLXVzaW5nIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU7Ci0KLS8vIFdlIGNhbid0
IGRpcmVjdGx5IHRlbGwgdGhlIE5TU2Nyb2xsZXIgdG8gZHJhdyBpdHNlbGYgYXMgYWN0aXZlIG9y
IGluYWN0aXZlLAotLy8gaW5zdGVhZCB3ZSBoYXZlIHRvIG1ha2UgaXQgYSBjaGlsZCBvZiBhbiAo
aW4pYWN0aXZlIHdpbmRvdy4gVGhpcyBjbGFzcyBsZXRzCi0vLyB1cyBmYWtlIHRoYXQgcGFyZW50
IHdpbmRvdy4KLUBpbnRlcmZhY2UgRmFrZUFjdGl2ZVdpbmRvdyA6IE5TV2luZG93IHsKLUBwcml2
YXRlCi0gICAgQk9PTCBoYXNBY3RpdmVDb250cm9sczsKLX0KLSsgKE5TV2luZG93KilhbHdheXNB
Y3RpdmVXaW5kb3c7Ci0rIChOU1dpbmRvdyopYWx3YXlzSW5hY3RpdmVXaW5kb3c7Ci0tIChpZClp
bml0V2l0aEFjdGl2ZUNvbnRyb2xzOihCT09MKV9oYXNBY3RpdmVDb250cm9sczsKLS0gKEJPT0wp
X2hhc0FjdGl2ZUNvbnRyb2xzOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gRmFrZUFjdGl2ZVdp
bmRvdwotCi1zdGF0aWMgTlNXaW5kb3cqIGFsd2F5c0FjdGl2ZVdpbmRvdyA9IG5pbDsKLXN0YXRp
YyBOU1dpbmRvdyogYWx3YXlzSW5hY3RpdmVXaW5kb3cgPSBuaWw7Ci0KLSsgKE5TV2luZG93Kilh
bHdheXNBY3RpdmVXaW5kb3cKLXsKLSAgICBpZiAoYWx3YXlzQWN0aXZlV2luZG93ID09IG5pbCkK
LSAgICAgICAgYWx3YXlzQWN0aXZlV2luZG93ID0gW1tzZWxmIGFsbG9jXSBpbml0V2l0aEFjdGl2
ZUNvbnRyb2xzOllFU107Ci0gICAgcmV0dXJuIGFsd2F5c0FjdGl2ZVdpbmRvdzsKLX0KLQotKyAo
TlNXaW5kb3cqKWFsd2F5c0luYWN0aXZlV2luZG93Ci17Ci0gICAgaWYgKGFsd2F5c0luYWN0aXZl
V2luZG93ID09IG5pbCkKLSAgICAgICAgYWx3YXlzSW5hY3RpdmVXaW5kb3cgPSBbW3NlbGYgYWxs
b2NdIGluaXRXaXRoQWN0aXZlQ29udHJvbHM6Tk9dOwotICAgIHJldHVybiBhbHdheXNJbmFjdGl2
ZVdpbmRvdzsKLX0KLQotLSAoaWQpaW5pdFdpdGhBY3RpdmVDb250cm9sczooQk9PTClfaGFzQWN0
aXZlQ29udHJvbHMKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGhhc0FjdGl2ZUNv
bnRyb2xzID0gX2hhc0FjdGl2ZUNvbnRyb2xzOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tIChC
T09MKV9oYXNBY3RpdmVDb250cm9scwotewotICAgIHJldHVybiBoYXNBY3RpdmVDb250cm9sczsK
LX0KLQotQGVuZAotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUTWFjOjpwYWludFNjcm9sbGJhclRo
dW1iKAotICAgIFdlYkNhbnZhcyogY2FudmFzLAotICAgIFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBz
dGF0ZSwKLSAgICBXZWJUaGVtZUVuZ2luZTo6U2l6ZSBzaXplLAotICAgIGNvbnN0IFdlYlJlY3Qm
IHJlY3QsCi0gICAgY29uc3QgV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhckluZm8mIHNjcm9sbGJh
ckluZm8pCi17Ci0gICAgLy8gVG8gbWF0Y2ggdGhlIE1hYyBwb3J0LCB3ZSBzdGlsbCB1c2UgSElU
aGVtZSBmb3IgaW5uZXIgc2Nyb2xsYmFycy4KLSAgICBpZiAoc2Nyb2xsYmFySW5mby5wYXJlbnQg
PT0gV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhclBhcmVudFJlbmRlckxheWVyKQotICAgICAgICBw
YWludEhJVGhlbWVTY3JvbGxiYXJUaHVtYihjYW52YXMsIHN0YXRlLCBzaXplLCByZWN0LCBzY3Jv
bGxiYXJJbmZvKTsKLSAgICBlbHNlCi0gICAgICAgIHBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRo
dW1iKGNhbnZhcywgc3RhdGUsIHNpemUsIHJlY3QsIHNjcm9sbGJhckluZm8pOwotfQotCi1zdGF0
aWMgVGhlbWVUcmFja0VuYWJsZVN0YXRlIHN0YXRlVG9ISUVuYWJsZVN0YXRlKFdlYlRoZW1lRW5n
aW5lOjpTdGF0ZSBzdGF0ZSkKLXsKLSAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgY2FzZSBXZWJU
aGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDoKLSAgICAgICAgcmV0dXJuIGtUaGVtZVRyYWNrRGlz
YWJsZWQ7Ci0gICAgY2FzZSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVJbmFjdGl2ZToKLSAgICAgICAg
cmV0dXJuIGtUaGVtZVRyYWNrSW5hY3RpdmU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IGtUaGVtZVRyYWNrQWN0aXZlOwotICAgIH0KLX0KLQotLy8gRHVwbGljYXRlZCBmcm9tIHdlYmtp
dC9nbHVlL3dlYnRoZW1lZW5naW5lX2ltcGxfbWFjLmNjIGluIHRoZSBkb3duc3RyZWFtCi0vLyBD
aHJvbWl1bSBXZWJUaGVtZUVuZ2luZSBpbXBsZW1lbnRhdGlvbi4KLXZvaWQgV2ViVGhlbWVFbmdp
bmVEUlRNYWM6OnBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKAotICAgIFdlYkNhbnZhcyogY2Fu
dmFzLAotICAgIFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSwKLSAgICBXZWJUaGVtZUVuZ2lu
ZTo6U2l6ZSBzaXplLAotICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCi0gICAgY29uc3QgV2ViVGhl
bWVFbmdpbmU6OlNjcm9sbGJhckluZm8mIHNjcm9sbGJhckluZm8pCi17Ci0gICAgSElUaGVtZVRy
YWNrRHJhd0luZm8gdHJhY2tJbmZvOwotICAgIHRyYWNrSW5mby52ZXJzaW9uID0gMDsKLSAgICB0
cmFja0luZm8ua2luZCA9IHNpemUgPT0gV2ViVGhlbWVFbmdpbmU6OlNpemVSZWd1bGFyID8ga1Ro
ZW1lTWVkaXVtU2Nyb2xsQmFyIDoga1RoZW1lU21hbGxTY3JvbGxCYXI7Ci0gICAgdHJhY2tJbmZv
LmJvdW5kcyA9IENHUmVjdE1ha2UocmVjdC54LCByZWN0LnksIHJlY3Qud2lkdGgsIHJlY3QuaGVp
Z2h0KTsKLSAgICB0cmFja0luZm8ubWluID0gMDsKLSAgICB0cmFja0luZm8ubWF4ID0gc2Nyb2xs
YmFySW5mby5tYXhWYWx1ZTsKLSAgICB0cmFja0luZm8udmFsdWUgPSBzY3JvbGxiYXJJbmZvLmN1
cnJlbnRWYWx1ZTsKLSAgICB0cmFja0luZm8udHJhY2tJbmZvLnNjcm9sbGJhci52aWV3c2l6ZSA9
IHNjcm9sbGJhckluZm8udmlzaWJsZVNpemU7Ci0gICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgPSAw
OwotICAgIGlmIChzY3JvbGxiYXJJbmZvLm9yaWVudGF0aW9uID09IFdlYlRoZW1lRW5naW5lOjpT
Y3JvbGxiYXJPcmllbnRhdGlvbkhvcml6b250YWwpCi0gICAgICAgIHRyYWNrSW5mby5hdHRyaWJ1
dGVzIHw9IGtUaGVtZVRyYWNrSG9yaXpvbnRhbDsKLQotICAgIHRyYWNrSW5mby5lbmFibGVTdGF0
ZSA9IHN0YXRlVG9ISUVuYWJsZVN0YXRlKHN0YXRlKTsKLQotICAgIHRyYWNrSW5mby50cmFja0lu
Zm8uc2Nyb2xsYmFyLnByZXNzU3RhdGUgPQotICAgICAgICBzdGF0ZSA9PSBXZWJUaGVtZUVuZ2lu
ZTo6U3RhdGVQcmVzc2VkID8ga1RoZW1lVGh1bWJQcmVzc2VkIDogMDsKLSAgICB0cmFja0luZm8u
YXR0cmlidXRlcyB8PSAoa1RoZW1lVHJhY2tTaG93VGh1bWIgfCBrVGhlbWVUcmFja0hpZGVUcmFj
ayk7Ci0gICAgZ2Z4OjpTa2lhQml0TG9ja2VyIGJpdExvY2tlcihjYW52YXMpOwotICAgIENHQ29u
dGV4dFJlZiBjZ0NvbnRleHQgPSBiaXRMb2NrZXIuY2dDb250ZXh0KCk7Ci0gICAgSElUaGVtZURy
YXdUcmFjaygmdHJhY2tJbmZvLCAwLCBjZ0NvbnRleHQsIGtISVRoZW1lT3JpZW50YXRpb25Ob3Jt
YWwpOwotfQotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUTWFjOjpwYWludE5TU2Nyb2xsZXJTY3Jv
bGxiYXJUaHVtYigKLSAgICBXZWJDYW52YXMqIGNhbnZhcywKLSAgICBXZWJUaGVtZUVuZ2luZTo6
U3RhdGUgc3RhdGUsCi0gICAgV2ViVGhlbWVFbmdpbmU6OlNpemUgc2l6ZSwKLSAgICBjb25zdCBX
ZWJSZWN0JiByZWN0LAotICAgIGNvbnN0IFdlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBz
Y3JvbGxiYXJJbmZvKQotewotICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0
ZV07Ci0gICAgTlNTY3JvbGxlciogc2Nyb2xsZXIgPSBbW05TU2Nyb2xsZXIgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdChyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWln
aHQpXTsKLSAgICBbc2Nyb2xsZXIgc2V0RW5hYmxlZDpzdGF0ZSAhPSBXZWJUaGVtZUVuZ2luZTo6
U3RhdGVEaXNhYmxlZF07Ci0gICAgaWYgKHN0YXRlID09IFdlYlRoZW1lRW5naW5lOjpTdGF0ZUlu
YWN0aXZlKQotICAgICAgICBbW1tGYWtlQWN0aXZlV2luZG93IGFsd2F5c0luYWN0aXZlV2luZG93
XSBjb250ZW50Vmlld10gYWRkU3VidmlldzpzY3JvbGxlcl07Ci0gICAgZWxzZQotICAgICAgICBb
W1tGYWtlQWN0aXZlV2luZG93IGFsd2F5c0FjdGl2ZVdpbmRvd10gY29udGVudFZpZXddIGFkZFN1
YnZpZXc6c2Nyb2xsZXJdOwotCi0gICAgW3Njcm9sbGVyIHNldENvbnRyb2xTaXplOnNpemUgPT0g
V2ViVGhlbWVFbmdpbmU6OlNpemVSZWd1bGFyID8gTlNSZWd1bGFyQ29udHJvbFNpemUgOiBOU1Nt
YWxsQ29udHJvbFNpemVdOwotCi0gICAgZG91YmxlIHZhbHVlID0gZG91YmxlKHNjcm9sbGJhcklu
Zm8uY3VycmVudFZhbHVlKSAvIGRvdWJsZShzY3JvbGxiYXJJbmZvLm1heFZhbHVlKTsKLSAgICBb
c2Nyb2xsZXIgc2V0RG91YmxlVmFsdWU6IHZhbHVlXTsKLQotICAgIGZsb2F0IGtub2JQcm9wb3J0
aW9uID0gZmxvYXQoc2Nyb2xsYmFySW5mby52aXNpYmxlU2l6ZSkgLyBmbG9hdChzY3JvbGxiYXJJ
bmZvLnRvdGFsU2l6ZSk7Ci0gICAgW3Njcm9sbGVyIHNldEtub2JQcm9wb3J0aW9uOiBrbm9iUHJv
cG9ydGlvbl07Ci0KLSAgICBnZng6OlNraWFCaXRMb2NrZXIgYml0TG9ja2VyKGNhbnZhcyk7Ci0g
ICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGJpdExvY2tlci5jZ0NvbnRleHQoKTsKLSAgICBO
U0dyYXBoaWNzQ29udGV4dCogbnNHcmFwaGljc0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQg
Z3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpjZ0NvbnRleHQgZmxpcHBlZDpZRVNdOwot
ICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpuc0dyYXBoaWNzQ29udGV4
dF07Ci0KLSAgICAvLyBEZXNwaXRlIHBhc3NpbmcgaW4gZnJhbWVSZWN0KCkgdG8gdGhlIHNjcm9s
bGVyLCBpdCBhbHdheXMgZHJhd3MgYXQgKDAsIDApLgotICAgIC8vIEZvcmNlIGl0IHRvIGRyYXcg
aW4gdGhlIHJpZ2h0IGxvY2F0aW9uIGJ5IHRyYW5zbGF0aW5nIHRoZSB3aG9sZSBncmFwaGljcwot
ICAgIC8vIGNvbnRleHQuCi0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOwotICAg
IE5TQWZmaW5lVHJhbnNmb3JtICp0cmFuc2Zvcm0gPSBbTlNBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtXTsKLSAgICBbdHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTpyZWN0LnggeUJ5OnJlY3QueV07Ci0g
ICAgW3RyYW5zZm9ybSBjb25jYXRdOwotCi0gICAgW3Njcm9sbGVyIGRyYXdLbm9iXTsKLSAgICBD
R0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAgICBbc2Nyb2xsZXIgcmVsZWFz
ZV07Ci0KLSAgICBbTlNHcmFwaGljc0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVdOwotfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVE
UlRXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVE
UlRXaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxNTBjNDkwMjUxYzIzNGNi
ZjExYzM2ZmJjZmY2NDkzOWRhODBiMDQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5n
aW5lRFJUV2luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJUV2luLmgiCi0KLSNpbmNsdWRlICJX
ZWJUaGVtZUNvbnRyb2xEUlRXaW4uaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1
ZGUvY29yZS9Ta1JlY3QuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViUmVjdC5oPgotCi0vLyBBbHRo
b3VnaCBhbGwgdGhpcyBjb2RlIGlzIGdlbmVyaWMsIHdlIGluY2x1ZGUgdGhlc2UgaGVhZGVycwot
Ly8gdG8gcHVsbCBpbiB0aGUgV2luZG93cyAjZGVmaW5lcyBmb3IgdGhlIHBhcnRzIGFuZCBzdGF0
ZXMgb2YKLS8vIHRoZSBjb250cm9scy4KLSNpbmNsdWRlIDx2c3N0eWxlLmg+Ci0jaW5jbHVkZSA8
d2luZG93cy5oPgotCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKLQotLy8gV2UgZGVmaW5lIHRoaXMgZm9yIGNsYXJpdHksIGFsdGhvdWdoIHRo
ZXJlIHJlYWxseSBzaG91bGQgYmUgYSBERkNTX05PUk1BTCBpbiB3aW51c2VyLmguCi1zdGF0aWMg
Y29uc3QgaW50IGRmY3NOb3JtYWwgPSAweDAwMDA7Ci0KLXN0YXRpYyBTa0lSZWN0IHdlYlJlY3RU
b1NrSVJlY3QoY29uc3QgV2ViUmVjdCYgd2ViUmVjdCkKLXsKLSAgICBTa0lSZWN0IGlyZWN0Owot
ICAgIGlyZWN0LnNldCh3ZWJSZWN0LngsIHdlYlJlY3QueSwgd2ViUmVjdC54ICsgd2ViUmVjdC53
aWR0aCAtIDEsIHdlYlJlY3QueSArIHdlYlJlY3QuaGVpZ2h0IC0gMSk7Ci0gICAgcmV0dXJuIGly
ZWN0OwotfQotCi1zdGF0aWMgdm9pZCBkcmF3Q29udHJvbChXZWJDYW52YXMqIGNhbnZhcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSkKLXsKLSAg
ICBXZWJUaGVtZUNvbnRyb2xEUlRXaW4gY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJlY3Qo
cmVjdCksIGN0eXBlLCBjc3RhdGUpOwotICAgIGNvbnRyb2wuZHJhdygpOwotfQotCi1zdGF0aWMg
dm9pZCBkcmF3VGV4dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGRyYXdFZGdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBmaWxsQ29udGVudEFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvbG9yIGNv
bG9yKQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbiBjb250cm9sKGNhbnZhcywgd2ViUmVj
dFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7Ci0gICAgY29udHJvbC5kcmF3VGV4dEZp
ZWxkKGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBjb2xvcik7Ci19Ci0KLXN0YXRpYyB2b2lk
IGRyYXdQcm9ncmVzc0JhcihXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgYmFyUmVjdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBmaWxsUmVjdCkKLXsKLSAgICBXZWJU
aGVtZUNvbnRyb2xEUlRXaW4gY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJlY3QoYmFyUmVj
dCksIGN0eXBlLCBjc3RhdGUpOwotICAgIGNvbnRyb2wuZHJhd1Byb2dyZXNzQmFyKHdlYlJlY3RU
b1NrSVJlY3QoZmlsbFJlY3QpKTsKLX0KLQotLy8gV2ViVGhlbWVFbmdpbmVEUlRXaW4KLQotdm9p
ZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRCdXR0b24oV2ViQ2FudmFzKiBjYW52YXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAgIFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQotICAgIGlmIChwYXJ0ID09IEJQ
X0NIRUNLQk9YKSB7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBDQlNf
VU5DSEVDS0VETk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNz
Tm9ybWFsKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNo
ZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JTX1VO
Q0hFQ0tFREhPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVU
VE9OQ0hFQ0sgfCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBDQlNfVU5DSEVDS0VEUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX1BVU0hFRCkpOwotICAgICAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU7Ci0gICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFRERJU0FCTEVEOgotICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSU5B
Q1RJVkUpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNo
ZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNf
Q0hFQ0tFRE5PUk1BTDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1Nf
QlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIENCU19DSEVDS0VESE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSE9UKSk7Ci0g
ICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZEJveFR5cGU7
Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRFBSRVNTRUQ6Ci0g
ICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZD
U19DSEVDS0VEIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBDQlNfQ0hFQ0tFRERJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfSU5BQ1RJ
VkUpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2Vk
Qm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlz
YWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JTX01JWEVE
Tk9STUFMOgotICAgICAgICAgICAgLy8gQ2xhc3NpYyB0aGVtZSBjYW4ndCByZXByZXNlbnQgbWl4
ZWQgc3RhdGUgY2hlY2tib3guIFdlIGFzc3VtZQotICAgICAgICAgICAgLy8gaXQncyBlcXVpdmFs
ZW50IHRvIHVuY2hlY2tlZC4KLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZD
U19CVVRUT05DSEVDSyk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIENCU19NSVhFREhPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGU7Ci0gICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfTUlYRURQUkVTU0VEOgotICAgICAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfUFVTSEVEKSk7
Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SW5kZXRlcm1pbmF0
ZUNoZWNrYm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNf
TUlYRURESVNBQkxFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1Nf
QlVUVE9OQ0hFQ0sgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKLSAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChC
UF9SQURJT0JVVFRPTiA9PSBwYXJ0KSB7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAg
ICAgY2FzZSBSQlNfVU5DSEVDS0VETk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSBERkNTX0JVVFRPTlJBRElPKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VESE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2VkUmFkaW9UeXBlOwotICAgICAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3RTdGF0ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFRFBSRVNTRUQ6Ci0gICAgICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19QVVNI
RUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNr
ZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgUkJTX1VO
Q0hFQ0tFRERJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZD
U19CVVRUT05SQURJTyB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIFJCU19DSEVDS0VETk9STUFMOgotICAgICAgICAgICAgQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCkpOwot
ICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5
cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0
YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBSQlNfQ0hFQ0tFREhPVDoK
LSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBE
RkNTX0NIRUNLRUQgfCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgY2FzZSBSQlNfQ0hFQ0tFRFBSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEIHwgREZDU19QVVNIRUQpKTsK
LSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkUmFkaW9U
eXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2Vk
U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFJCU19DSEVDS0VERElT
QUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJB
RElPIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoQlBf
UFVTSEJVVFRPTiA9PSBwYXJ0KSB7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAg
Y2FzZSBQQlNfTk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X0JVVFRPTlBVU0gpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlB1c2hCdXR0b25UeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgUEJT
X0hPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVT
SCB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OkhvdFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBQQlNf
UFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9O
UFVTSCB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgUEJTX0RJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAo
REZDU19CVVRUT05QVVNIIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlB1c2hCdXR0b25UeXBlOwotICAgICAgICAgICAgY3N0YXRl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBQQlNfREVGQVVMVEVEOgotICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlBVU0gpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlB1c2hCdXR0b25UeXBlOwotICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpGb2N1c2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLQotICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNz
dGF0ZSk7Ci19Ci0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRNZW51TGlzdChX
ZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHBhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNs
YXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBlOwotICAgIFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3du
U3RhdGU7Ci0KLSAgICBpZiAoQ1BfRFJPUERPV05CVVRUT04gPT0gcGFydCkgewotICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RHJvcERvd25CdXR0b25UeXBlOwotICAgICAg
ICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgQ0JYU19OT1JNQUw6Ci0gICAgICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfTUVOVUFSUk9XKTsKLSAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIENCWFNfSE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBDQlhTX1BSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IChERkNTX01FTlVBUlJPVyB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JYU19ESVNBQkxFRDoKLSAgICAgICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19JTkFDVElWRSkpOwot
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRl
OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIENS
QVNIKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAg
ICBDUkFTSCgpOwotCi0gICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRl
KTsKLX0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRTY3JvbGxiYXJBcnJvdyhX
ZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAgIFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93
blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAg
ICBjYXNlIEFCU19VUE5PUk1BTDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X1NDUk9MTFVQKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJy
b3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0
YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0RPV05OT1JNQUw6Ci0gICAgICAg
IEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExET1dOKTsKLSAgICAgICAgY3R5cGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBBQlNfTEVGVE5PUk1BTDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBE
RkNTX1NDUk9MTExFRlQpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
TGVmdEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpO
b3JtYWxTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19SSUdIVE5PUk1BTDoK
LSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFJJR0hUKTsKLSAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQUJTX1VQSE9UOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX1NDUk9MTFVQIHwgREZDU19IT1QpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0RP
V05IT1Q6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8
IERGQ1NfSE9UKSk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3du
QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0
YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0xFRlRIT1Q6Ci0gICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSE9UKSk7Ci0gICAg
ICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOwotICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgQUJTX1JJR0hUSE9UOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19IT1QpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
QUJTX1VQSE9WRVI6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExV
UCk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVcEFycm93VHlwZTsK
LSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0RPV05IT1ZFUjoKLSAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6RG93bkFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJT
X0xFRlRIT1ZFUjoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTExF
RlQpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6TGVmdEFycm93VHlw
ZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX1JJR0hUSE9WRVI6Ci0gICAgICAgIEFTU0VS
VChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExSSUdIVCk7Ci0gICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpSaWdodEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNh
c2UgQUJTX1VQUFJFU1NFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19T
Q1JPTExVUCB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7Ci0gICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpVcEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBBQlNfRE9XTlBSRVNTRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1Nf
U0NST0xMRE9XTiB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7Ci0gICAgICAgIGN0eXBlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIEFCU19MRUZUUFJFU1NFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAo
REZDU19TQ1JPTExMRUZUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKLSAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgQUJTX1JJR0hUUFJFU1NFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7Ci0gICAg
ICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpSaWdodEFycm93VHlwZTsKLSAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBBQlNfVVBESVNBQkxFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBBQlNfRE9XTkRJU0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgIGN0eXBlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBBQlNfTEVGVERJU0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX1NDUk9MTExFRlQgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBBQlNfUklHSFRESVNBQkxFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAo
REZDU19TQ1JPTExSSUdIVCB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
ZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Ci19
Ci0KLXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50U2Nyb2xsYmFyVGh1bWIoV2ViQ2Fu
dmFzKiBjYW52YXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBwYXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2ViVGhlbWVDb250
cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlw
ZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgY2Fz
ZSBTQlBfVEhVTUJCVE5IT1JaOgotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6SG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IFNCUF9USFVNQkJUTlZFUlQ6Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpWZXJ0aWNhbFNjcm9sbFRodW1iVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNC
UF9HUklQUEVSSE9SWjoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhv
cml6b250YWxTY3JvbGxHcmlwVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNCUF9H
UklQUEVSVkVSVDoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlZlcnRp
Y2FsU2Nyb2xsR3JpcFR5cGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN3
aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFNDUkJTX05PUk1BTDoKLSAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNDUkJT
X0hPVDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7Ci0gICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBTQ1JCU19IT1ZFUjoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpI
b3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0NSQlNfUFJFU1NFRDoKLSAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0
YXRlKTsKLX0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRTY3JvbGxiYXJUcmFj
ayhXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHBhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgYWxpZ25S
ZWN0KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpT
dGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQotICAg
IHN3aXRjaCAocGFydCkgewotICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tIT1JaOgotICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFja1R5
cGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQlBfTE9XRVJUUkFDS0hPUlo6Ci0gICAg
ICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3Jpem9udGFsU2Nyb2xsVHJhY2tG
b3J3YXJkVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNCUF9VUFBFUlRSQUNLVkVS
VDoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlZlcnRpY2FsU2Nyb2xs
VHJhY2tCYWNrVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNCUF9MT1dFUlRSQUNL
VkVSVDoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlZlcnRpY2FsU2Ny
b2xsVHJhY2tGb3J3YXJkVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
c3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgU0NSQlNfTk9STUFMOgotICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0NS
QlNfSE9UOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzaG91bGQgbmV2
ZXIgaGFwcGVuIGluIHByYWN0aWNlLgotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0NSQlNf
SE9WRVI6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG92ZXJTdGF0ZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIFNDUkJTX1BSRVNTRUQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCi0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGRyYXdDb250
cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVFbmdp
bmVEUlRXaW46OnBhaW50U3BpbkJ1dHRvbihXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQotewot
ICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQotICAgIGlmIChwYXJ0
ID09IFNQTlBfVVApIHsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVw
QXJyb3dUeXBlOwotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgVVBTX05P
Uk1BTDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExVUCk7
Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRl
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVVBTX0RJU0FCTEVEOgotICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfSU5BQ1RJ
VkUpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJs
ZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFVQU19QUkVTU0VEOgot
ICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1Nf
UFVTSEVEKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlBy
ZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFVQU19IT1Q6Ci0g
ICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19I
T1QpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG92ZXJT
dGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKHBhcnQgPT0g
U1BOUF9ET1dOKSB7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3du
QXJyb3dUeXBlOwotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgRE5TX05P
Uk1BTDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExET1dO
KTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3Rh
dGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBETlNfRElTQUJMRUQ6Ci0gICAg
ICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX0lO
QUNUSVZFKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRp
c2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBETlNfUFJFU1NF
RDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8
IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEROU19I
T1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04g
fCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpIb3ZlclN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3Qs
IGN0eXBlLCBjc3RhdGUpOwotfQotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludFRl
eHRGaWVsZChXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBwYXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJDb2xvciBjb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgZmlsbENvbnRlbnRBcmVhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkcmF3RWRnZXMpCi17Ci0gICAgV2ViVGhl
bWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtu
b3duVHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgQVNTRVJUKEVQX0VESVRURVhU
ID09IHBhcnQpOwotICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpUZXh0RmllbGRU
eXBlOwotCi0gICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgRVRTX05PUk1BTDoKLSAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIEVUU19IT1Q6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19IT1Qp
OwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgRVRTX0RJU0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBF
VFNfU0VMRUNURUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19QVVNIRUQp
OwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVUU19GT0NVU0VEOgotICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkZvY3VzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVU
U19SRUFET05MWToKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsK
LSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpSZWFkT25seVN0YXRlOwot
ICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkcmF3VGV4dEZpZWxkKGNhbnZhcywg
cmVjdCwgY3R5cGUsIGNzdGF0ZSwgZHJhd0VkZ2VzLCBmaWxsQ29udGVudEFyZWEsIGNvbG9yKTsK
LX0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRUcmFja2JhcihXZWJDYW52YXMq
IGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBh
cnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVj
dCYgcmVjdCkKLXsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBlOwotICAgIFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duU3RhdGU7Ci0K
LSAgICBpZiAoVEtQX1RIVU1CQk9UVE9NID09IHBhcnQpIHsKLSAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxTbGlkZXJUaHVtYlR5cGU7Ci0gICAgICAgIHN3
aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBUVVNfTk9STUFMOgotICAgICAgICAgICAgQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFRVU19IT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IERGQ1NfSE9UKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFRVU19ESVNBQkxF
RDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7Ci0g
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFRVU19QUkVTU0VEOgotICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7Ci0gICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChUS1Bf
VEhVTUJWRVJUID09IHBhcnQpIHsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlOwotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0g
ICAgICAgIGNhc2UgVFVTX05PUk1BTDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gZGZjc05vcm1hbCk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBUVVNf
SE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7Ci0gICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBUVVNfRElTQUJMRUQ6Ci0gICAgICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOwotICAgICAgICAgICAgY3N0YXRl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBUVVNfUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gREZDU19QVVNIRUQpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLID09IHBhcnQpIHsK
LSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxTbGlkZXJU
cmFja1R5cGU7Ci0gICAgICAgIEFTU0VSVChzdGF0ZSA9PSBUUlNfTk9STUFMKTsKLSAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICB9IGVsc2UgaWYgKFRLUF9UUkFD
S1ZFUlQgPT0gcGFydCkgewotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
VmVydGljYWxTbGlkZXJUcmFja1R5cGU7Ci0gICAgICAgIEFTU0VSVChzdGF0ZSA9PSBUUlZTX05P
Uk1BTCk7Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgfSBl
bHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgZHJhd0NvbnRyb2woY2Fu
dmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJU
V2luOjpwYWludFByb2dyZXNzQmFyKFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVj
dCYgYmFyUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViS2l0OjpXZWJSZWN0JiB2YWx1ZVJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGV0ZXJtaW5hdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSkKLXsKLSAgICBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByb2dyZXNzQmFy
VHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IGRldGVybWlu
YXRlID8gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OkluZGV0ZXJtaW5hdGVTdGF0ZTsKLSAgICBkcmF3UHJvZ3Jlc3NCYXIoY2FudmFzLCBj
dHlwZSwgY3N0YXRlLCBiYXJSZWN0LCB2YWx1ZVJlY3QpOwotfQotCi0KLVdlYktpdDo6V2ViU2l6
ZSBXZWJUaGVtZUVuZ2luZURSVFdpbjo6Z2V0U2l6ZShpbnQgcGFydCkKLXsKLSAgICByZXR1cm4g
V2ViS2l0OjpXZWJTaXplKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNDQ1MTRiYjJhMDcwNmY2MmJhM2EyZjkyNGFlYWYzMGVhODE0MzdiLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLS8vIFRoaXMgaW1wbGVtZW50cyB0aGUgV2ViVGhlbWVFbmdpbmUgQVBJIHVzZWQgYnkg
dGhlIFdpbmRvd3MgdmVyc2lvbiBvZgotLy8gQ2hyb21pdW0gdG8gcmVuZGVyIG5hdGl2ZSBmb3Jt
IGNvbnRyb2xzIGxpa2UgY2hlY2tib3hlcywgcmFkaW8gYnV0dG9ucywKLS8vIGFuZCBzY3JvbGwg
YmFycy4KLS8vIFRoZSBub3JtYWwgaW1wbGVtZW50YXRpb24gKG5hdGl2ZV90aGVtZSkgcmVuZGVy
cyB0aGUgY29udHJvbHMgdXNpbmcgZWl0aGVyCi0vLyB0aGUgVVhUaGVtZSB0aGVtaW5nIGVuZ2lu
ZSBwcmVzZW50IGluIFhQLCBWaXN0YSwgYW5kIFdpbiA3LCBvciB0aGUgImNsYXNzaWMiCi0vLyB0
aGVtZSB1c2VkIGlmIHRoYXQgdGhlbWUgaXMgc2VsZWN0ZWQgaW4gdGhlIERlc2t0b3Agc2V0dGlu
Z3MuCi0vLyBVbmZvcnR1bmF0ZWx5LCBib3RoIG9mIHRoZXNlIHRoZW1lcyByZW5kZXIgY29udHJv
bHMgZGlmZmVyZW50bHkgb24gdGhlCi0vLyBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgV2luZG93cy4K
LS8vCi0vLyBJbiBvcmRlciB0byBlbnN1cmUgbWF4aW11bSBjb25zaXN0ZW5jeSBvZiBiYXNlbGlu
ZXMgYWNyb3NzIHRoZSBkaWZmZXJlbnQKLS8vIFdpbmRvd3MgdmVyc2lvbnMsIHdlIHByb3ZpZGUg
YSBzaW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIERSVCBoZXJlCi0vLyBpbnN0ZWFkLiBUaGVzZSBj
b250cm9scyBhcmUgYWN0dWFsbHkgcGxhdGZvcm0taW5kZXBlbmRlbnQgKHRoZXkncmUgcmVuZGVy
ZWQKLS8vIHVzaW5nIFNraWEpIGFuZCBjb3VsZCBiZSB1c2VkIG9uIExpbnV4IGFuZCB0aGUgTWFj
IGFzIHdlbGwsIHNob3VsZCB3ZQotLy8gY2hvb3NlIHRvIGRvIHNvIGF0IHNvbWUgcG9pbnQuCi0v
LwotCi0jaWZuZGVmIFdlYlRoZW1lRW5naW5lRFJUV2luX2gKLSNkZWZpbmUgV2ViVGhlbWVFbmdp
bmVEUlRXaW5faAotCi0jaW5jbHVkZSA8cHVibGljL3dpbi9XZWJUaGVtZUVuZ2luZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1jbGFzcyBXZWJUaGVtZUVuZ2luZURSVFdpbiA6
IHB1YmxpYyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXZWJUaGVtZUVuZ2luZURSVFdpbik7Ci1wdWJsaWM6Ci0gICAgV2ViVGhlbWVFbmdpbmVEUlRX
aW4oKSB7IH0KLQotICAgIC8vIFdlYlRoZW1lRW5naW5lIG1ldGhvZHM6Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50QnV0dG9uKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBp
bnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVj
dCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50TWVudUxpc3QoCi0gICAgICAgIFdlYktpdDo6
V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAg
ICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxiYXJBcnJvdygKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwotCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIoCi0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFz
KiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3Qg
V2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUcmFj
aygKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQg
Y2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLCBjb25zdCBXZWJL
aXQ6OldlYlJlY3QmIGFsaWduUmVjdCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTcGluQnV0
dG9uKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGlu
dCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwotCi0gICAg
dmlydHVhbCB2b2lkIHBhaW50VGV4dEZpZWxkKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyos
IGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdl
YktpdDo6V2ViUmVjdCYsIFdlYktpdDo6V2ViQ29sb3IsIGJvb2wgZmlsbENvbnRlbnRBcmVhLAot
ICAgICAgICBib29sIGRyYXdFZGdlcyk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja2Jh
cigKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQg
Y2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKLQotICAgIHZp
cnR1YWwgdm9pZCBwYWludFByb2dyZXNzQmFyKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyos
IGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgYmFyUmVjdCwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpX
ZWJSZWN0JiB2YWx1ZVJlY3QsCi0gICAgICAgIGJvb2wgZGV0ZXJtaW5hdGUsIGRvdWJsZSB0aW1l
KTsKLQotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTaXplIGdldFNpemUoaW50IHBhcnQpOwotfTsK
LQotI2VuZGlmIC8vIFdlYlRoZW1lRW5naW5lRFJUV2luX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193987</attachid>
            <date>2013-03-19 22:33:18 -0700</date>
            <delta_ts>2013-03-20 22:12:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112751-20130320062906.patch</filename>
            <type>text/plain</type>
            <size>154547</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2MTgwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODQ4ZTNlY2FlNWQ4NTMyZjdjYTM3NTc0ZGNiOTEyNjI4
NmQzOTJiNC4uMzc5ZGQ5NGVhYTQ1Njg3MTMzYmUxNTY3NjFkNjg5NWQ4Y2VkMzYyMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDEzLTAzLTE5ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBXZWJUaGVtZUVuZ2luZSBpbXBsZW1lbnRhdGlvbnMg
dG8gVGVzdFJ1bm5lciBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTI3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJU
cmVlLmd5cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRl
c3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjp0aGVtZUVuZ2luZSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFRl
c3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0SW50ZXJmYWNlczo6dGhlbWVFbmdpbmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVz
dFRoZW1lQ29udHJvbFdpbi5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwLgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46On5XZWJUZXN0VGhlbWVDb250cm9sV2luKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmJveCk6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpsaW5lKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OnRyaWFuZ2xlKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OnJvdW5kUmVjdCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpvdmFsKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmNpcmNsZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpuZXN0ZWRCb3hlcyk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjptYXJrU3RhdGUpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6ZHJhdyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpkcmF3VGV4dEZpZWxk
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmRyYXdQ
cm9ncmVzc0Jhcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmguCisgICAgICAgIChXZWJU
ZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RUaGVtZUNvbnRyb2xXaW4pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2lu
ZU1hYy5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhl
bWVFbmdpbmVEUlRNYWMuaC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2Vi
VGVzdFRoZW1lRW5naW5lTWFjKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMubW06IFJlbmFtZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5tbS4KKyAgICAg
ICAgKCtbRmFrZUFjdGl2ZVdpbmRvdyBhbHdheXNBY3RpdmVXaW5kb3ddKToKKyAgICAgICAgKCtb
RmFrZUFjdGl2ZVdpbmRvdyBhbHdheXNJbmFjdGl2ZVdpbmRvd10pOgorICAgICAgICAoLVtGYWtl
QWN0aXZlV2luZG93IGluaXRXaXRoQWN0aXZlQ29udHJvbHM6XSk6CisgICAgICAgICgtW0Zha2VB
Y3RpdmVXaW5kb3cgX2hhc0FjdGl2ZUNvbnRyb2xzXSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0VGhlbWVFbmdpbmVNYWM6OnBhaW50U2Nyb2xsYmFyVGh1bWIpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdp
bmVNYWM6OnBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RUaGVtZUVuZ2luZU1hYzo6cGFpbnROU1Njcm9sbGVyU2Nyb2xsYmFyVGh1bWIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRl
c3RUaGVtZUVuZ2luZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2Vi
VGVzdFRoZW1lRW5naW5lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRN
ZW51TGlzdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46
OnBhaW50U2Nyb2xsYmFyQXJyb3cpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRo
ZW1lRW5naW5lV2luOjpwYWludFNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRTY3JvbGxiYXJUcmFjayk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50U3BpbkJ1dHRvbik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50VGV4
dEZpZWxkKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6
cGFpbnRUcmFja2Jhcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdp
bmVXaW46OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dFRoZW1lRW5naW5lV2luOjpnZXRTaXplKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVXaW4uaDogUmVuYW1lZCBmcm9t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmguCisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RUaGVtZUVuZ2luZVdpbik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OldlYlRlc3RU
aGVtZUVuZ2luZVdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbToKKyAgICAgICAg
KHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsV2luLmNwcDoKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwOiBSZW1vdmVkLgorCiAyMDEz
LTAzLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFN0eWxlIHR3ZWVrcyB0byBkZWZhdWx0LmNzcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXAvRHVtcFJlbmRlclRyZWUuZ3lwCmluZGV4IDIx
YjEwMzBhYTFiYjdhOTc3NmYzZGRkYjhhZWI2NTVhYjNlYzEyZWMuLmJkY2UzZDgwZDBhODFkZWRm
YzI5YmI5ZjczYTQ4N2ZlYmUxYWQ4OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJUcmVlLmd5cApAQCAtMTU0LDYg
KzE1NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJzwoc291cmNlX2RpcikvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9ndGsnLAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgICAgIH1dLAorICAgICAgICAgICAgICAgIFsnT1MhPSJ3aW4iJywgeworICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcy8nOiBbCisgICAgICAgICAgICAgICAgICAgICAgICBbJ2V4Y2x1ZGUn
LCAnV2luXFwuY3BwJCddLAorICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
IH1dLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICMgRGlzYWJsZSBjNDI2NyB3YXJuaW5n
cyB1bnRpbCB3ZSBmaXggc2l6ZV90IHRvIGludCB0cnVuY2F0aW9ucy4gCiAgICAgICAgICAgICAn
bXN2c19kaXNhYmxlZF93YXJuaW5ncyc6IFsgNDI2NywgXSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IGNkNDc1NWFhM2M5M2U1YzM1NGZiZGQwMjMxYjY0YjFl
MTRjZGZlNDEuLjMyMTU1ZGYxYzI0YTM5NjJhMWRiNDkwNWMyNmJjMDI2NjUwMjAxMWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMjYsMTIgKzI2LDYgQEAK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxTdHViLmNwcCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFNo
ZWxsWDExLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2lu
LmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmgnLAot
ICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLm1tJywKLSAgICAgICAg
ICAgICdjaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5oJywKLSAgICAgICAgICAgICdjaHJv
bWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dl
YlRoZW1lRW5naW5lRFJUV2luLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuaCcsCiAgICAgICAgIF0s
CkBAIC05NSw2ICs4OSwxMiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRhc2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJU
ZXN0SW50ZXJmYWNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RQcm94eS5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVDb250cm9sV2luLmgnLAorICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5tbScsCisgICAgICAgICAg
ICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLmgnLAorICAg
ICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZVdpbi5j
cHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVu
Z2luZVdpbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJVc2Vy
TWVkaWFDbGllbnRNb2NrLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVXNlck1lZGlhQ2xpZW50TW9jay5oJywKICAgICAgICAgXSwKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRl
cmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0SW50ZXJmYWNlcy5oCmluZGV4IDQ1MmMxNDkxZTVhYWI4Mzk2MWIyZTYxNjQzODIz
MDdmNjdkYmYyYTguLmE4YmZmODBmYzM1NDk0NThjYzA4N2EwN2UxZjg0OTdhYTc4ODliM2IgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaApAQCAtNDAsNiArNDAsNyBAQCBj
bGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xp
ZW50OwogY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogY2xhc3MgV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OworY2xhc3MgV2ViVGhlbWVFbmdpbmU7CiBjbGFzcyBX
ZWJVUkw7CiBjbGFzcyBXZWJWaWV3OwogfQpAQCAtNjQsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb25maWd1cmVGb3JUZXN0V2l0aFVSTChjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGJvb2wg
Z2VuZXJhdGVQaXhlbHMpOwogCiAgICAgV2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpOworICAg
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmUqIHRoZW1lRW5naW5lKCk7CiAKICAgICBXZWJLaXQ6Oldl
Yk1lZGlhU3RyZWFtQ2VudGVyKiBjcmVhdGVNZWRpYVN0cmVhbUNlbnRlcihXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtQ2VudGVyQ2xpZW50Kik7CiAgICAgV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIqIGNyZWF0ZVdlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcihXZWJLaXQ6OldlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCopOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMu
Y3BwCmluZGV4IDRkOGEwMGM5NmNmYzlhY2IzZDBjNzM2YzIzNmYxNmRhNzlmNjIzYzQuLjFlOGM3
MzBiZTZkNzJiYzFhODUzMWZjN2Q5MTgwZjVkMDFmNTc2MjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50
ZXJmYWNlcy5jcHAKQEAgLTIxNSw0ICsyMTUsMTkgQEAgY29uc3QgdmVjdG9yPFdlYlRlc3RQcm94
eUJhc2UqPiYgVGVzdEludGVyZmFjZXM6OndpbmRvd0xpc3QoKQogICAgIHJldHVybiBtX3dpbmRv
d0xpc3Q7CiB9CiAKK1dlYlRoZW1lRW5naW5lKiBUZXN0SW50ZXJmYWNlczo6dGhlbWVFbmdpbmUo
KQoreworI2lmIGRlZmluZWQoVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FKSB8fCAhKGRlZmluZWQo
V0lOMzIpIHx8IGRlZmluZWQoX19BUFBMRV9fKSkKKyAgICByZXR1cm4gMDsKKyNlbGlmIGRlZmlu
ZWQoV0lOMzIpCisgICAgaWYgKG1fdGhlbWVFbmdpbmUuZ2V0KCkpCisgICAgICAgIG1fdGhlbWVF
bmdpbmUucmVzZXQobmV3IFdlYlRlc3RUaGVtZUVuZ2luZVdpbigpKTsKKyAgICByZXR1cm4gbV90
aGVtZUVuZ2luZS5nZXQoKTsKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIGlmIChtX3Ro
ZW1lRW5naW5lLmdldCgpKQorICAgICAgICBtX3RoZW1lRW5naW5lLnJlc2V0KG5ldyBXZWJUZXN0
VGhlbWVFbmdpbmVNYWMoKSk7CisgICAgcmV0dXJuIG1fdGhlbWVFbmdpbmUuZ2V0KCk7CisjZW5k
aWYKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKaW5kZXggYjZiMzAxYTc5MGMzNGRj
MTI4OGEwNWJlZTllMzY0ZWFiY2ZlMTI5ZC4uMDVkYzhkMWVkZmZjZDgxMzkxMGRlZDc1NjZiMjQx
ZDljZjg5ZDEzOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCkBAIC0zNCw4ICszNCwxNSBA
QAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKKyNpZiBkZWZpbmVkKFdJ
TjMyKQorI2luY2x1ZGUgIldlYlRlc3RUaGVtZUVuZ2luZVdpbi5oIgorI2VsaWYgZGVmaW5lZChf
X0FQUExFX18pCisjaW5jbHVkZSAiV2ViVGVzdFRoZW1lRW5naW5lTWFjLmgiCisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJGcmFtZTsKK2NsYXNzIFdlYlRoZW1lRW5naW5l
OwogY2xhc3MgV2ViVVJMOwogY2xhc3MgV2ViVmlldzsKIH0KQEAgLTcyLDYgKzc5LDcgQEAgcHVi
bGljOgogICAgIFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUoKTsKICAgICBXZWJUZXN0UHJveHlC
YXNlKiBwcm94eSgpOwogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFdlYlRlc3RQcm94eUJhc2UqPiYg
d2luZG93TGlzdCgpOworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmUqIHRoZW1lRW5naW5lKCk7
CiAKIHByaXZhdGU6CiAgICAgc3RkOjphdXRvX3B0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4g
bV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKQEAgLTg0LDYgKzkyLDEzIEBAIHByaXZhdGU6CiAg
ICAgV2ViVGVzdFByb3h5QmFzZSogbV9wcm94eTsKIAogICAgIHN0ZDo6dmVjdG9yPFdlYlRlc3RQ
cm94eUJhc2UqPiBtX3dpbmRvd0xpc3Q7CisjaWYgIWRlZmluZWQoVVNFX0RFRkFVTFRfUkVOREVS
X1RIRU1FKQorI2lmIGRlZmluZWQoV0lOMzIpCisgICAgc3RkOjphdXRvX3B0cjxXZWJUZXN0VGhl
bWVFbmdpbmVXaW4+IG1fdGhlbWVFbmdpbmU7CisjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAg
ICBzdGQ6OmF1dG9fcHRyPFdlYlRlc3RUaGVtZUVuZ2luZU1hYz4gbV90aGVtZUVuZ2luZTsKKyNl
bmRpZgorI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAK
aW5kZXggMmExNzZkNzYzOWE5MzA1ODk0MDIwNWFjMmYwNTgzOGQ0YTYyZjYzMi4uYzJkYmQxNjli
Y2ZkZmEyOWYwNDRlYzc0M2EwMWQyNzI2MTdhMzJmZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJ
bnRlcmZhY2VzLmNwcApAQCAtODQsNiArODQsMTEgQEAgV2ViVGVzdFJ1bm5lciogV2ViVGVzdElu
dGVyZmFjZXM6OnRlc3RSdW5uZXIoKQogICAgIHJldHVybiBtX2ludGVyZmFjZXMtPnRlc3RSdW5u
ZXIoKTsKIH0KIAorV2ViVGhlbWVFbmdpbmUqIFdlYlRlc3RJbnRlcmZhY2VzOjp0aGVtZUVuZ2lu
ZSgpCit7CisgICAgcmV0dXJuIG1faW50ZXJmYWNlcy0+dGhlbWVFbmdpbmUoKTsKK30KKwogVGVz
dEludGVyZmFjZXMqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50ZXJmYWNlcygpCiB7CiAgICAg
cmV0dXJuIG1faW50ZXJmYWNlcy5nZXQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1l
Q29udHJvbFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRhYjg1OGY3MmU5ZDc5NzJlMzdkODc1ZmJjOTQz
N2RlMzQwOWQ2YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uY3BwCkBAIC0wLDAgKzEs
NDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSBzaW1wbGUgZ2VuZXJpYyB2ZXJzaW9uIG9m
IHRoZSBXZWJUaGVtZUVuZ2luZSwKKy8vIHdoaWNoIGlzIHVzZWQgdG8gZHJhdyBhbGwgdGhlIG5h
dGl2ZSBjb250cm9scyBvbiBhIHdlYiBwYWdlLiBXZSB1c2UgdGhpcworLy8gZmlsZSB3aGVuIHJ1
bm5pbmcgaW4gbGF5b3V0IHRlc3QgbW9kZSBpbiBvcmRlciB0byByZW1vdmUgYW55CisvLyBwbGF0
Zm9ybS1zcGVjaWZpYyByZW5kZXJpbmcgZGlmZmVyZW5jZXMgZHVlIHRvIHRoZW1lcywgY29sb3Jz
LCBldGMuCisvLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVGVzdFRoZW1l
Q29udHJvbFdpbi5oIgorCisjaW5jbHVkZSAiVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgInNraWEv
ZXh0L3NraWFfdXRpbHNfd2luLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRl
L2NvcmUvU2tDYW52YXMuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29y
ZS9Ta1BhaW50LmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tQ
YXRoLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tSZWN0Lmgi
CisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2lu
ZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK25hbWVzcGFj
ZSB7CisKK2NvbnN0IFNrQ29sb3IgZWRnZUNvbG9yICAgICA9IFNLX0NvbG9yQkxBQ0s7Citjb25z
dCBTa0NvbG9yIHJlYWRPbmx5Q29sb3IgPSBTa0NvbG9yU2V0UkdCKDB4ZTksIDB4YzIsIDB4YTYp
OworY29uc3QgU2tDb2xvciBmZ0NvbG9yICAgICAgID0gU0tfQ29sb3JCTEFDSzsKK2NvbnN0IFNr
Q29sb3IgYmdDb2xvcnNbXSAgICA9IHsKKyAgICBTS19Db2xvckJMQUNLLCAvLyBVbmtub3duCisg
ICAgU2tDb2xvclNldFJHQigweGM5LCAweGM5LCAweGM5KSwgLy8gRGlzYWJsZWQKKyAgICBTa0Nv
bG9yU2V0UkdCKDB4ZjMsIDB4ZTAsIDB4ZDApLCAvLyBSZWFkb25seQorICAgIFNrQ29sb3JTZXRS
R0IoMHg4OSwgMHhjNCwgMHhmZiksIC8vIE5vcm1hbAorICAgIFNrQ29sb3JTZXRSR0IoMHg0Mywg
MHhmOSwgMHhmZiksIC8vIEhvdAorICAgIFNrQ29sb3JTZXRSR0IoMHgyMCwgMHhmNiwgMHhjYyks
IC8vIEZvY3VzZWQKKyAgICBTa0NvbG9yU2V0UkdCKDB4MDAsIDB4ZjMsIDB4YWMpLCAvLyBIb3Zl
cgorICAgIFNrQ29sb3JTZXRSR0IoMHhhOSwgMHhmZiwgMHgxMiksIC8vIFByZXNzZWQKKyAgICBT
a0NvbG9yU2V0UkdCKDB4Y2MsIDB4Y2MsIDB4Y2MpIC8vIEluZGV0ZXJtaW5hdGUKK307CisKK1Nr
SVJlY3QgdmFsaWRhdGUoY29uc3QgU2tJUmVjdCYgcmVjdCwgV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6VHlwZSBjdHlwZSkKK3sKKyAgICBzd2l0Y2ggKGN0eXBlKSB7CisgICAgY2FzZSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpVbmNoZWNrZWRCb3hUeXBlOgorICAgIGNhc2UgV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6Q2hlY2tlZEJveFR5cGU6CisgICAgY2FzZSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpVbmNoZWNrZWRSYWRpb1R5cGU6CisgICAgY2FzZSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpDaGVja2VkUmFkaW9UeXBlOiB7CisgICAgICAgIFNrSVJlY3QgcmV0dmFsID0gcmVjdDsKKwor
ICAgICAgICAvLyBUaGUgbWF4aW11bSB3aWR0aCBhbmQgaGVpZ2h0IGlzIDEzLgorICAgICAgICAv
LyBDZW50ZXIgdGhlIHNxdWFyZSBpbiB0aGUgcGFzc2VkIHJlY3RhbmdsZS4KKyAgICAgICAgY29u
c3QgaW50IG1heENvbnRyb2xTaXplID0gMTM7CisgICAgICAgIGludCBjb250cm9sU2l6ZSA9IHN0
ZDo6bWluKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGNvbnRyb2xTaXpl
ID0gc3RkOjptaW4oY29udHJvbFNpemUsIG1heENvbnRyb2xTaXplKTsKKworICAgICAgICByZXR2
YWwuZkxlZnQgICA9IHJlY3QuZkxlZnQgKyAocmVjdC53aWR0aCgpIC8gMikgLSAoY29udHJvbFNp
emUgLyAyKTsKKyAgICAgICAgcmV0dmFsLmZSaWdodCAgPSByZXR2YWwuZkxlZnQgKyBjb250cm9s
U2l6ZSAtIDE7CisgICAgICAgIHJldHZhbC5mVG9wICAgID0gcmVjdC5mVG9wICsgKHJlY3QuaGVp
Z2h0KCkgLyAyKSAtIChjb250cm9sU2l6ZSAvIDIpOworICAgICAgICByZXR2YWwuZkJvdHRvbSA9
IHJldHZhbC5mVG9wICsgY29udHJvbFNpemUgLSAxOworCisgICAgICAgIHJldHVybiByZXR2YWw7
CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHJlY3Q7CisgICAgfQorfQor
Cit9CisKK1dlYlRlc3RUaGVtZUNvbnRyb2xXaW46OldlYlRlc3RUaGVtZUNvbnRyb2xXaW4oU2tD
YW52YXMqIGNhbnZhcywgY29uc3QgU2tJUmVjdCYgaXJlY3QsIFR5cGUgY3R5cGUsIFN0YXRlIGNz
dGF0ZSkKKyAgICA6IG1fY2FudmFzKGNhbnZhcykKKyAgICAsIG1faXJlY3QodmFsaWRhdGUoaXJl
Y3QsIGN0eXBlKSkKKyAgICAsIG1fdHlwZShjdHlwZSkKKyAgICAsIG1fc3RhdGUoY3N0YXRlKQor
ICAgICwgbV9sZWZ0KG1faXJlY3QuZkxlZnQpCisgICAgLCBtX3JpZ2h0KG1faXJlY3QuZlJpZ2h0
KQorICAgICwgbV90b3AobV9pcmVjdC5mVG9wKQorICAgICwgbV9ib3R0b20obV9pcmVjdC5mQm90
dG9tKQorICAgICwgbV9oZWlnaHQobV9pcmVjdC5oZWlnaHQoKSkKKyAgICAsIG1fd2lkdGgobV9p
cmVjdC53aWR0aCgpKQorICAgICwgbV9lZGdlQ29sb3IoZWRnZUNvbG9yKQorICAgICwgbV9iZ0Nv
bG9yKGJnQ29sb3JzW2NzdGF0ZV0pCisgICAgLCBtX2ZnQ29sb3IoZmdDb2xvcikKK3sKK30KKwor
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6fldlYlRlc3RUaGVtZUNvbnRyb2xXaW4oKQoreworfQor
Cit2b2lkIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmJveChjb25zdCBTa0lSZWN0JiByZWN0LCBT
a0NvbG9yIGZpbGxDb2xvcikKK3sKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcGFpbnQuc2V0
U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIHBhaW50LnNldENvbG9yKGZpbGxDb2xv
cik7CisgICAgbV9jYW52YXMtPmRyYXdJUmVjdChyZWN0LCBwYWludCk7CisKKyAgICBwYWludC5z
ZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9r
ZV9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdJUmVjdChyZWN0LCBwYWludCk7Cit9CisKK3Zv
aWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6bGluZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBp
bnQgeTEsIFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tQYWludCBwYWludDsKKyAgICBwYWludC5z
ZXRDb2xvcihjb2xvcik7CisgICAgbV9jYW52YXMtPmRyYXdMaW5lKFNrSW50VG9TY2FsYXIoeDAp
LCBTa0ludFRvU2NhbGFyKHkwKSwgU2tJbnRUb1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEp
LCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6dHJpYW5nbGUoaW50
IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgU2tDb2xvciBjb2xv
cikKK3sKKyAgICBTa1BhdGggcGF0aDsKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcGFpbnQu
c2V0Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxl
KTsKKyAgICBwYXRoLmluY1Jlc2VydmUoNCk7CisgICAgcGF0aC5tb3ZlVG8oU2tJbnRUb1NjYWxh
cih4MCksIFNrSW50VG9TY2FsYXIoeTApKTsKKyAgICBwYXRoLmxpbmVUbyhTa0ludFRvU2NhbGFy
KHgxKSwgU2tJbnRUb1NjYWxhcih5MSkpOworICAgIHBhdGgubGluZVRvKFNrSW50VG9TY2FsYXIo
eDIpLCBTa0ludFRvU2NhbGFyKHkyKSk7CisgICAgcGF0aC5jbG9zZSgpOworICAgIG1fY2FudmFz
LT5kcmF3UGF0aChwYXRoLCBwYWludCk7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xv
cik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7CisgICAgbV9j
YW52YXMtPmRyYXdQYXRoKHBhdGgsIHBhaW50KTsKK30KKwordm9pZCBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpyb3VuZFJlY3QoU2tDb2xvciBjb2xvcikKK3sKKyAgICBTa1JlY3QgcmVjdDsKKyAg
ICBTa1NjYWxhciByYWRpdXMgPSBTa0ludFRvU2NhbGFyKDUpOworICAgIFNrUGFpbnQgcGFpbnQ7
CisKKyAgICByZWN0LnNldChtX2lyZWN0KTsKKyAgICBwYWludC5zZXRDb2xvcihjb2xvcik7Cisg
ICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5k
cmF3Um91bmRSZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7CisKKyAgICBwYWludC5z
ZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9r
ZV9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdSb3VuZFJlY3QocmVjdCwgcmFkaXVzLCByYWRp
dXMsIHBhaW50KTsKK30KKwordm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpvdmFsKFNrQ29s
b3IgY29sb3IpCit7CisgICAgU2tSZWN0IHJlY3Q7CisgICAgU2tQYWludCBwYWludDsKKworICAg
IHJlY3Quc2V0KG1faXJlY3QpOworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAgICBwYWlu
dC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdPdmFs
KHJlY3QsIHBhaW50KTsKKworICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBw
YWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJh
d092YWwocmVjdCwgcGFpbnQpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmNp
cmNsZShTa1NjYWxhciByYWRpdXMsIFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tTY2FsYXIgY3kg
PSBTa0ludFRvU2NhbGFyKG1fdG9wICArIG1faGVpZ2h0IC8gMik7CisgICAgU2tTY2FsYXIgY3gg
PSBTa0ludFRvU2NhbGFyKG1fbGVmdCArIG1fd2lkdGggLyAyKTsKKyAgICBTa1BhaW50IHBhaW50
OworCisgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFp
bnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1
cywgcGFpbnQpOworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3Q2ly
Y2xlKGN4LCBjeSwgcmFkaXVzLCBwYWludCk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6bmVzdGVkQm94ZXMoaW50IGluZGVudExlZnQsIGludCBpbmRlbnRUb3AsIGludCBpbmRl
bnRSaWdodCwgaW50IGluZGVudEJvdHRvbSwgU2tDb2xvciBvdXRlckNvbG9yLCBTa0NvbG9yIGlu
bmVyQ29sb3IpCit7CisgICAgU2tJUmVjdCBsaXJlY3Q7CisgICAgYm94KG1faXJlY3QsIG91dGVy
Q29sb3IpOworICAgIGxpcmVjdC5zZXQobV9pcmVjdC5mTGVmdCArIGluZGVudExlZnQsIG1faXJl
Y3QuZlRvcCArIGluZGVudFRvcCwgbV9pcmVjdC5mUmlnaHQgLSBpbmRlbnRSaWdodCwgbV9pcmVj
dC5mQm90dG9tIC0gaW5kZW50Qm90dG9tKTsKKyAgICBib3gobGlyZWN0LCBpbm5lckNvbG9yKTsK
K30KKwordm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjptYXJrU3RhdGUoKQoreworICAgIC8v
IFRoZSBob3Jpem9udGFsIGxpbmVzIGluIGEgcmVhZCBvbmx5IGNvbnRyb2wgYXJlIHNwYWNlZCBi
eSB0aGlzIGFtb3VudC4KKyAgICBjb25zdCBpbnQgcmVhZE9ubHlMaW5lT2Zmc2V0ID0gNTsKKwor
ICAgIC8vIFRoZSBsZW5ndGggb2YgYSB0cmlhbmdsZSBzaWRlIGZvciB0aGUgY29ybmVyIG1hcmtz
LgorICAgIGNvbnN0IGludCB0cmlhbmdsZVNpemUgPSA1OworCisgICAgc3dpdGNoIChtX3N0YXRl
KSB7CisgICAgY2FzZSBVbmtub3duU3RhdGU6CisgICAgY2FzZSBEaXNhYmxlZFN0YXRlOgorICAg
IGNhc2UgTm9ybWFsU3RhdGU6CisgICAgY2FzZSBJbmRldGVybWluYXRlU3RhdGU6CisgICAgICAg
IC8vIERvbid0IHZpc3VhbGx5IG1hcmsgdGhlc2Ugc3RhdGVzIChjb2xvciBpcyBlbm91Z2gpLgor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlYWRPbmx5U3RhdGU6CisgICAgICAgIC8vIERyYXdp
bmcgbGluZXMgYWNyb3NzIHRoZSBjb250cm9sLgorICAgICAgICBmb3IgKGludCBpID0gbV90b3Ag
KyByZWFkT25seUxpbmVPZmZzZXQ7IGkgPCBtX2JvdHRvbTsgaSArPSByZWFkT25seUxpbmVPZmZz
ZXQpCisgICAgICAgICAgICBsaW5lKG1fbGVmdCArIDEsIGksIG1fcmlnaHQgLSAxLCBpLCByZWFk
T25seUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhvdFN0YXRlOgorICAgICAg
ICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBjb250
cm9sLgorICAgICAgICB0cmlhbmdsZShtX2xlZnQsIG1fdG9wLCBtX2xlZnQgKyB0cmlhbmdsZVNp
emUsIG1fdG9wLCBtX2xlZnQsIG1fdG9wICsgdHJpYW5nbGVTaXplLCBtX2VkZ2VDb2xvcik7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBIb3ZlclN0YXRlOgorICAgICAgICAvLyBEcmF3IGEg
dHJpYW5nbGUgaW4gdGhlIHVwcGVyIHJpZ2h0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KKyAgICAg
ICAgdHJpYW5nbGUobV9yaWdodCwgbV90b3AsIG1fcmlnaHQsIG1fdG9wICsgdHJpYW5nbGVTaXpl
LCBtX3JpZ2h0IC0gdHJpYW5nbGVTaXplLCBtX3RvcCwgbV9lZGdlQ29sb3IpOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgRm9jdXNlZFN0YXRlOgorICAgICAgICAvLyBEcmF3IGEgdHJpYW5n
bGUgaW4gdGhlIGJvdHRvbSByaWdodCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRy
aWFuZ2xlKG1fcmlnaHQsIG1fYm90dG9tLCBtX3JpZ2h0IC0gdHJpYW5nbGVTaXplLCBtX2JvdHRv
bSwgbV9yaWdodCwgbV9ib3R0b20gLSB0cmlhbmdsZVNpemUsIG1fZWRnZUNvbG9yKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFByZXNzZWRTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRy
aWFuZ2xlIGluIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAg
IHRyaWFuZ2xlKG1fbGVmdCwgbV9ib3R0b20sIG1fbGVmdCwgbV9ib3R0b20gLSB0cmlhbmdsZVNp
emUsIG1fbGVmdCArIHRyaWFuZ2xlU2l6ZSwgbV9ib3R0b20sIG1fZWRnZUNvbG9yKTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpkcmF3KCkKK3sKKyAgICBpbnQgaGFsZldpZHRoID0gbV93aWR0aCAvIDI7CisgICAg
aW50IGhhbGZIZWlnaHQgPSBtX2hlaWdodCAvIDI7CisgICAgaW50IHF1YXJ0ZXJXaWR0aCA9IG1f
d2lkdGggLyA0OworICAgIGludCBxdWFydGVySGVpZ2h0ID0gbV9oZWlnaHQgLyA0OworCisgICAg
Ly8gSW5kZW50IGFtb3VudHMgZm9yIHRoZSBjaGVjayBpbiBhIGNoZWNrYm94IG9yIHJhZGlvIGJ1
dHRvbi4KKyAgICBjb25zdCBpbnQgY2hlY2tJbmRlbnQgPSAzOworCisgICAgLy8gSW5kZW50IGFt
b3VudHMgZm9yIHNob3J0IGFuZCBsb25nIHNpZGVzIG9mIHRoZSBzY3JvbGxiYXIgbm90Y2hlcy4K
KyAgICBjb25zdCBpbnQgbm90Y2hMb25nT2Zmc2V0ID0gMTsKKyAgICBjb25zdCBpbnQgbm90Y2hT
aG9ydE9mZnNldCA9IDQ7CisgICAgY29uc3QgaW50IG5vT2Zmc2V0ID0gMDsKKworICAgIC8vIElu
ZGVudCBhbW91bnRzIGZvciB0aGUgc2hvcnQgYW5kIGxvbmcgc2lkZXMgb2YgYSBzY3JvbGwgdGh1
bWIgYm94LgorICAgIGNvbnN0IGludCB0aHVtYkxvbmdJbmRlbnQgPSAwOworICAgIGNvbnN0IGlu
dCB0aHVtYlNob3J0SW5kZW50ID0gMjsKKworICAgIC8vIEluZGVudHMgZm9yIHRoZSBjcm9zc2hh
dGNoIG9uIGEgc2Nyb2xsIGdyaXAuCisgICAgY29uc3QgaW50IGdyaXBMb25nSW5kZW50ID0gMzsK
KyAgICBjb25zdCBpbnQgZ3JpcFNob3J0SW5kZW50ID0gNTsKKworICAgIC8vIEluZGVudHMgZm9y
IHRoZSB0aGUgc2xpZGVyIHRyYWNrLgorICAgIGNvbnN0IGludCBzbGlkZXJJbmRlbnQgPSAyOwor
CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFVua25vd25UeXBlOgorICAgICAgICBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBU
ZXh0RmllbGRUeXBlOgorICAgICAgICAvLyBXZSByZW5kZXIgdGhpcyBieSBoYW5kIG91dHNpZGUg
b2YgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgUHVzaEJ1dHRvblR5cGU6CisgICAgICAgIC8vIHB1
c2ggYnV0dG9ucyByZW5kZXIgYXMgYSByb3VuZGVkIHJlY3RhbmdsZQorICAgICAgICByb3VuZFJl
Y3QobV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFVuY2hlY2tlZEJveFR5
cGU6CisgICAgICAgIC8vIFVuY2hlY2tlZCBib3hlcyBhcmUgc2ltcGx5IHBsYWluIGJveGVzLgor
ICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIENoZWNrZWRCb3hUeXBlOgorICAgICAgICBuZXN0ZWRCb3hlcyhjaGVja0luZGVudCwgY2hl
Y2tJbmRlbnQsIGNoZWNrSW5kZW50LCBjaGVja0luZGVudCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3Ip
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZToK
KyAgICAgICAgLy8gSW5kZXRlcm1pbmF0ZSBjaGVja2JveCBpcyBhIGJveCBjb250YWluaW5nICct
Jy4KKyAgICAgICAgbmVzdGVkQm94ZXMoY2hlY2tJbmRlbnQsIGhhbGZIZWlnaHQsIGNoZWNrSW5k
ZW50LCBoYWxmSGVpZ2h0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBVbmNoZWNrZWRSYWRpb1R5cGU6CisgICAgICAgIGNpcmNsZShTa0ludFRvU2Nh
bGFyKGhhbGZIZWlnaHQpLCBtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
Q2hlY2tlZFJhZGlvVHlwZToKKyAgICAgICAgY2lyY2xlKFNrSW50VG9TY2FsYXIoaGFsZkhlaWdo
dCksIG1fYmdDb2xvcik7CisgICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWlnaHQg
LSBjaGVja0luZGVudCksIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBI
b3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgYm94IHdp
dGggYSBub3RjaCBhdCB0aGUgbGVmdC4KKyAgICAgICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmSGVp
Z2h0IC0gbm90Y2hMb25nT2Zmc2V0OworICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX3dpZHRo
IC0gbm90Y2hTaG9ydE9mZnNldDsKKyAgICAgICAgbmVzdGVkQm94ZXMobm9PZmZzZXQsIGxvbmdP
ZmZzZXQsIHNob3J0T2Zmc2V0LCBsb25nT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZWRnZUNvbG9yKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xsVHJhY2tG
b3J3YXJkVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBub3RjaCBhdCB0aGUg
cmlnaHQuCisgICAgICAgIGludCBsb25nT2Zmc2V0ICA9IGhhbGZIZWlnaHQgLSBub3RjaExvbmdP
ZmZzZXQ7CisgICAgICAgIGludCBzaG9ydE9mZnNldCA9IG1fd2lkdGggLSBub3RjaFNob3J0T2Zm
c2V0OworICAgICAgICBuZXN0ZWRCb3hlcyhzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbm9PZmZz
ZXQsIGxvbmdPZmZzZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgY2FzZSBWZXJ0aWNhbFNjcm9sbFRyYWNrQmFja1R5cGU6IHsKKyAgICAgICAg
Ly8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIHRvcC4KKyAgICAgICAgaW50IGxvbmdP
ZmZzZXQgID0gaGFsZldpZHRoIC0gbm90Y2hMb25nT2Zmc2V0OworICAgICAgICBpbnQgc2hvcnRP
ZmZzZXQgPSBtX2hlaWdodCAtIG5vdGNoU2hvcnRPZmZzZXQ7CisgICAgICAgIG5lc3RlZEJveGVz
KGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbV9iZ0NvbG9y
LCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFZlcnRpY2Fs
U2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBu
b3RjaCBhdCB0aGUgYm90dG9tLgorICAgICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmV2lkdGgg
LSBub3RjaExvbmdPZmZzZXQ7CisgICAgICAgIGludCBzaG9ydE9mZnNldCA9IG1faGVpZ2h0IC0g
bm90Y2hTaG9ydE9mZnNldDsKKyAgICAgICAgbmVzdGVkQm94ZXMobG9uZ09mZnNldCwgc2hvcnRP
ZmZzZXQsIGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZToK
KyAgICAgICAgLy8gRHJhdyBhIG5hcnJvd2VyIGJveCBvbiB0b3Agb2YgdGhlIG91dHNpZGUgYm94
LgorICAgICAgICBuZXN0ZWRCb3hlcyh0aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQs
IHRodW1iTG9uZ0luZGVudCwgdGh1bWJTaG9ydEluZGVudCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3Ip
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVmVydGljYWxTY3JvbGxUaHVtYlR5cGU6Cisg
ICAgICAgIC8vIERyYXcgYSBzaG9ydGVyIGJveCBvbiB0b3Agb2YgdGhlIG91dHNpZGUgYm94Lgor
ICAgICAgICBuZXN0ZWRCb3hlcyh0aHVtYlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIHRo
dW1iU2hvcnRJbmRlbnQsIHRodW1iTG9uZ0luZGVudCwgbV9iZ0NvbG9yLCBtX2JnQ29sb3IpOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZToKKyAg
ICBjYXNlIFZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlOgorICAgICAgICAvLyBTbGlkZXIgdGh1bWJz
IGFyZSBvdmFscy4KKyAgICAgICAgb3ZhbChtX2JnQ29sb3IpOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBlOiB7CisgICAgICAgIC8vIERyYXcgYSBo
b3Jpem9udGFsIGNyb3NzaGF0Y2ggZm9yIHRoZSBncmlwLgorICAgICAgICBpbnQgbG9uZ09mZnNl
dCA9IGhhbGZXaWR0aCAtIGdyaXBMb25nSW5kZW50OworICAgICAgICBsaW5lKG1fbGVmdCArIGdy
aXBMb25nSW5kZW50LCBtX3RvcCArIGhhbGZIZWlnaHQsIG1fcmlnaHQgLSBncmlwTG9uZ0luZGVu
dCwgbV90b3AgKyBoYWxmSGVpZ2h0LCBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCAr
IGxvbmdPZmZzZXQsIG1fdG9wICsgZ3JpcFNob3J0SW5kZW50LCBtX2xlZnQgKyBsb25nT2Zmc2V0
LCBtX2JvdHRvbSAtIGdyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgbGluZSht
X3JpZ2h0IC0gbG9uZ09mZnNldCwgbV90b3AgKyBncmlwU2hvcnRJbmRlbnQsIG1fcmlnaHQgLSBs
b25nT2Zmc2V0LCBtX2JvdHRvbSAtIGdyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBWZXJ0aWNhbFNjcm9sbEdyaXBUeXBlOiB7Cisg
ICAgICAgIC8vIERyYXcgYSB2ZXJ0aWNhbCBjcm9zc2hhdGNoIGZvciB0aGUgZ3JpcC4KKyAgICAg
ICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmSGVpZ2h0IC0gZ3JpcExvbmdJbmRlbnQ7CisgICAgICAg
IGxpbmUobV9sZWZ0ICsgaGFsZldpZHRoLCBtX3RvcCArIGdyaXBMb25nSW5kZW50LCBtX2xlZnQg
KyBoYWxmV2lkdGgsIG1fYm90dG9tIC0gZ3JpcExvbmdJbmRlbnQsIG1fZmdDb2xvcik7CisgICAg
ICAgIGxpbmUobV9sZWZ0ICsgZ3JpcFNob3J0SW5kZW50LCBtX3RvcCArIGxvbmdPZmZzZXQsIG1f
cmlnaHQgLSBncmlwU2hvcnRJbmRlbnQsIG1fdG9wICsgbG9uZ09mZnNldCwgbV9mZ0NvbG9yKTsK
KyAgICAgICAgbGluZShtX2xlZnQgKyBncmlwU2hvcnRJbmRlbnQsIG1fYm90dG9tIC0gbG9uZ09m
ZnNldCwgbV9yaWdodCAtIGdyaXBTaG9ydEluZGVudCwgbV9ib3R0b20gLSBsb25nT2Zmc2V0LCBt
X2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIExlZnRBcnJvd1R5
cGU6CisgICAgICAgIC8vIERyYXcgYSBsZWZ0IGFycm93IGluc2lkZSBhIGJveC4KKyAgICAgICAg
Ym94KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQgLSBxdWFy
dGVyV2lkdGgsIG1fdG9wICsgcXVhcnRlckhlaWdodCwgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwg
bV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2xlZnQgKyBxdWFydGVyV2lkdGgsIG1fdG9wICsg
aGFsZkhlaWdodCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJpZ2h0
QXJyb3dUeXBlOgorICAgICAgICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNpZGUgYSBib3guCisg
ICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICB0cmlhbmdsZShtX2xlZnQg
KyBxdWFydGVyV2lkdGgsIG1fdG9wICsgcXVhcnRlckhlaWdodCwgbV9yaWdodCAtIHF1YXJ0ZXJX
aWR0aCwgbV90b3AgKyBoYWxmSGVpZ2h0LCBtX2xlZnQgKyBxdWFydGVyV2lkdGgsIG1fYm90dG9t
IC0gcXVhcnRlckhlaWdodCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IFVwQXJyb3dUeXBlOgorICAgICAgICAvLyBEcmF3IGFuIHVwIGFycm93IGluc2lkZSBhIGJveC4K
KyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xlKG1fbGVm
dCArIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2xlZnQgKyBoYWxm
V2lkdGgsIG1fdG9wICsgcXVhcnRlckhlaWdodCwgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV9i
b3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAg
IGNhc2UgRG93bkFycm93VHlwZToKKyAgICAgICAgLy8gRHJhdyBhIGRvd24gYXJyb3cgaW5zaWRl
IGEgYm94LgorICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgdHJpYW5n
bGUobV9sZWZ0ICsgcXVhcnRlcldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJIZWlnaHQsIG1fcmlnaHQg
LSBxdWFydGVyV2lkdGgsIG1fdG9wICsgcXVhcnRlckhlaWdodCwgbV9sZWZ0ICsgaGFsZldpZHRo
LCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBIb3Jpem9udGFsU2xpZGVyVHJhY2tUeXBlOiB7CisgICAgICAgIC8vIERyYXcg
YSBuYXJyb3cgcmVjdCBmb3IgdGhlIHRyYWNrIHBsdXMgYm94IGhhdGNoZXMgb24gdGhlIGVuZHMu
CisgICAgICAgIFNrSVJlY3QgbGlyZWN0OworICAgICAgICBsaXJlY3QgPSBtX2lyZWN0OworICAg
ICAgICBsaXJlY3QuaW5zZXQobm9PZmZzZXQsIGhhbGZIZWlnaHQgLSBzbGlkZXJJbmRlbnQpOwor
ICAgICAgICBib3gobGlyZWN0LCBtX2JnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCwgIG1f
dG9wLCBtX2xlZnQsICBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOworICAgICAgICBsaW5lKG1fcmln
aHQsIG1fdG9wLCBtX3JpZ2h0LCBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBjYXNlIFZlcnRpY2FsU2xpZGVyVHJhY2tUeXBlOiB7CisgICAgICAg
IC8vIERyYXcgYSBuYXJyb3cgcmVjdCBmb3IgdGhlIHRyYWNrIHBsdXMgYm94IGhhdGNoZXMgb24g
dGhlIGVuZHMuCisgICAgICAgIFNrSVJlY3QgbGlyZWN0OworICAgICAgICBsaXJlY3QgPSBtX2ly
ZWN0OworICAgICAgICBsaXJlY3QuaW5zZXQoaGFsZldpZHRoIC0gc2xpZGVySW5kZW50LCBub09m
ZnNldCk7CisgICAgICAgIGJveChsaXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIGxpbmUobV9s
ZWZ0LCBtX3RvcCwgbV9yaWdodCwgbV90b3AsIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgbGluZSht
X2xlZnQsIG1fYm90dG9tLCBtX3JpZ2h0LCBtX2JvdHRvbSwgbV9lZGdlQ29sb3IpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIERyb3BEb3duQnV0dG9uVHlwZToKKyAgICAgICAg
Ly8gRHJhdyBhIGJveCB3aXRoIGEgYmlnIGRvd24gYXJyb3cgb24gdG9wLgorICAgICAgICBib3go
bV9pcmVjdCwgbV9iZ0NvbG9yKTsKKyAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICsgcXVhcnRlcldp
ZHRoLCBtX3RvcCwgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AsIG1fbGVmdCArIGhhbGZX
aWR0aCwgbV9ib3R0b20sIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVs
dDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBtYXJrU3RhdGUoKTsKK30KKworLy8gQmVjYXVzZSByZW5kZXJpbmcgYSB0
ZXh0IGZpZWxkIGlzIGRlcGVuZGVudCBvbiBpbnB1dAorLy8gcGFyYW1ldGVycyB0aGUgb3RoZXIg
Y29udHJvbHMgZG9uJ3QgaGF2ZSwgd2UgcmVuZGVyIGl0IGRpcmVjdGx5CisvLyByYXRoZXIgdGhh
biB0cnlpbmcgdG8gb3ZlcmNvbXBsaWNhdGUgZHJhdygpIGZ1cnRoZXIuCit2b2lkIFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OmRyYXdUZXh0RmllbGQoYm9vbCBkcmF3RWRnZXMsIGJvb2wgZmlsbENv
bnRlbnRBcmVhLCBTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAgICBp
ZiAoZmlsbENvbnRlbnRBcmVhKSB7CisgICAgICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAg
ICAgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgICAgICBtX2Nh
bnZhcy0+ZHJhd0lSZWN0KG1faXJlY3QsIHBhaW50KTsKKyAgICB9CisgICAgaWYgKGRyYXdFZGdl
cykgeworICAgICAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAgICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgICAgICBtX2NhbnZhcy0+ZHJh
d0lSZWN0KG1faXJlY3QsIHBhaW50KTsKKyAgICB9CisKKyAgICBtYXJrU3RhdGUoKTsKK30KKwor
dm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVj
dCYgZmlsbFJlY3QpCit7CisgICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldENvbG9y
KG1fYmdDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwor
ICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwgcGFpbnQpOworCisgICAgLy8gRW11bGF0
ZSBjbGlwcGluZworICAgIFNrSVJlY3QgdG9maWxsOworICAgIHRvZmlsbC5pbnRlcnNlY3QobV9p
cmVjdCwgZmlsbFJlY3QpOworICAgIHBhaW50LnNldENvbG9yKG1fZmdDb2xvcik7CisgICAgcGFp
bnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3SVJl
Y3QodG9maWxsLCBwYWludCk7CisKKyAgICBtYXJrU3RhdGUoKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbi5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiYWQxOGUyMGFhOGFi
NjM3MTI3NjZmNDQ4ZDc3MWZhMzI5NDExNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVDb250cm9sV2lu
LmgKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisvLyBXZWJUZXN0VGhlbWVDb250cm9sV2luIGltcGxlbWVudHMg
dGhlIGdlbmVyaWMgcmVuZGVyaW5nIG9mIGNvbnRyb2xzCisvLyBuZWVkZWQgYnkgV2ViVGhlbWVF
bmdpbmVEUlRXaW4uIFNlZSB0aGUgY29tbWVudHMgaW4gdGhhdCBjbGFzcworLy8gaGVhZGVyIGZp
bGUgZm9yIHdoeSB0aGlzIGNsYXNzIGlzIG5lZWRlZCBhbmQgdXNlZC4KKy8vCisvLyBUaGlzIGNs
YXNzIGltcGxlbWVudHMgYSBnZW5lcmljIHNldCBvZiB3aWRnZXRzIHVzaW5nIFNraWEuIFRoZSB3
aWRnZXRzCisvLyBhcmUgb3B0aW1pemVkIGZvciB0ZXN0YWJpbGl0eSwgbm90IGEgcGxlYXNpbmcg
YXBwZWFyYW5jZS4KKy8vCisKKyNpZm5kZWYgV2ViVGVzdFRoZW1lQ29udHJvbFdpbl9oCisjZGVm
aW5lIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW5faAorCisjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tp
YS9pbmNsdWRlL2NvcmUvU2tDb2xvci5oIgorI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5j
bHVkZS9jb3JlL1NrUmVjdC5oIgorCisvLyBTa2lhIGZvcndhcmQgZGVjbGFyYXRpb25zCitjbGFz
cyBTa0NhbnZhczsKKworbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCitjbGFzcyBXZWJUZXN0
VGhlbWVDb250cm9sV2luIHsKK3B1YmxpYzoKKyAgICAvLyBUaGlzIGxpc3Qgb2Ygc3RhdGVzIG1v
c3RseSBtaXJyb3JzIHRoZSBsaXN0IGluIFdlYkNvcmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oCisg
ICAgLy8gYnV0IGlzIG1haW50YWluZWQgc2VwYXJhdGVseSBzaW5jZSB0aGF0IGlzbid0IHB1Ymxp
YyBhbmQgYWxzbyB0byBtaW5pbWl6ZQorICAgIC8vIGRlcGVuZGVuY2llcy4KKyAgICAvLyBOb3Rl
IHRoYXQgdGhlIFdlYktpdCBUaGVtZVR5cGVzIHNlZW0gdG8gaW1wbHkgdGhhdCBhIGNvbnRyb2wg
Y2FuIGJlCisgICAgLy8gaW4gbXVsdGlwbGUgc3RhdGVzIHNpbXVsdGFuZW91c2x5IGJ1dCBXZWJU
aGVtZUVuZ2luZSBvbmx5IGFsbG93cyBmb3IKKyAgICAvLyBhIHNpbmdsZSBzdGF0ZSBhdCBhIHRp
bWUuCisgICAgLy8KKyAgICAvLyBTb21lIGRlZmluaXRpb25zIGZvciB0aGUgdmFyaW91cyBzdGF0
ZXM6CisgICAgLy8gICBEaXNhYmxlZCAtIGluZGljYXRlcyB0aGF0IGEgY29udHJvbCBjYW4ndCBi
ZSBtb2RpZmllZCBvciBzZWxlY3RlZAorICAgIC8vICAgICAgICAgICAgICAoY29ycmVzcG9uZHMg
dG8gSFRNTCAnZGlzYWJsZWQnIGF0dHJpYnV0ZSkKKyAgICAvLyAgIFJlYWRPbmx5IC0gaW5kaWNh
dGVzIHRoYXQgYSBjb250cm9sIGNhbid0IGJlIG1vZGlmaWVkIGJ1dCBjYW4gYmUKKyAgICAvLyAg
ICAgICAgICAgICAgc2VsZWN0ZWQKKyAgICAvLyAgIE5vcm1hbCAgIC0gdGhlIG5vcm1hbCBzdGF0
ZSBvZiBjb250cm9sIG9uIHRoZSBwYWdlIHdoZW4gaXQgaXNuJ3QKKyAgICAvLyAgICAgICAgICAg
ICAgZm9jdXNlZCBvciBvdGhlcndpc2UgYWN0aXZlCisgICAgLy8gICBIb3QgICAgICAtIHdoZW4g
dGhlIG1vdXNlIGlzIGhvdmVyaW5nIG92ZXIgYSBwYXJ0IG9mIHRoZSBjb250cm9sLAorICAgIC8v
ICAgICAgICAgICAgICBhbGwgdGhlIG90aGVyIHBhcnRzIGFyZSBjb25zaWRlcmVkICJob3QiCisg
ICAgLy8gICBIb3ZlciAgICAtIHdoZW4gdGhlIG1vdXNlIGlzIGRpcmVjdGx5IG92ZXIgYSBjb250
cm9sICh0aGUgQ1NTCisgICAgLy8gICAgICAgICAgICAgICA6aG92ZXIgcHNldWRvLWNsYXNzKQor
ICAgIC8vICAgRm9jdXNlZCAgLSB3aGVuIHRoZSBjb250cm9sIGhhcyB0aGUga2V5Ym9hcmQgZm9j
dXMKKyAgICAvLyAgIFByZXNzZWQgIC0gd2hlbiB0aGUgY29udHJvbCBpcyBiZWluZyB0cmlnZ2Vy
ZWQgKGJ5IGEgbW91c2Vkb3duIG9yCisgICAgLy8gICAgICAgICAgICAgIGEga2V5IGV2ZW50KS4K
KyAgICAvLyAgIEluZGV0ZXJtaW5hdGUgLSB3aGVuIHNldCB0byBpbmRldGVybWluYXRlIChvbmx5
IGZvciBwcm9ncmVzcyBiYXIpCisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIFVua25vd25TdGF0
ZSA9IDAsCisgICAgICAgIERpc2FibGVkU3RhdGUsCisgICAgICAgIFJlYWRPbmx5U3RhdGUsCisg
ICAgICAgIE5vcm1hbFN0YXRlLAorICAgICAgICBIb3RTdGF0ZSwKKyAgICAgICAgSG92ZXJTdGF0
ZSwKKyAgICAgICAgRm9jdXNlZFN0YXRlLAorICAgICAgICBQcmVzc2VkU3RhdGUsCisgICAgICAg
IEluZGV0ZXJtaW5hdGVTdGF0ZQorICAgIH07CisKKyAgICAvLyBUaGlzIGxpc3Qgb2YgdHlwZXMg
bW9zdGx5IG1pcnJvcnMgdGhlIGxpc3QgaW4KKyAgICAvLyBXZWJDb3JlL3BsYXRmb3JtL1RoZW1l
VHlwZXMuaCBidXQgaXMgbWFpbnRhaW5lZAorICAgIC8vIHNlcGFyYXRlbHkgc2luY2UgdGhhdCBp
c24ndCBwdWJsaWMgYW5kIGFsc28gdG8gbWluaW1pemUgZGVwZW5kZW5jaWVzLgorICAgIC8vCisg
ICAgLy8gTm90ZSB0aGF0IHdoYXQgdGhlIHVzZXIgbWlnaHQgdGhpbmsgb2YgYXMgYSBzaW5nbGUg
Y29udHJvbCBjYW4gYmUKKyAgICAvLyBtYWRlIHVwIG9mIG11bHRpcGxlIHBhcnRzLiBGb3IgZXhh
bXBsZSwgYSBzaW5nbGUgc2Nyb2xsIGJhciBjb250YWlucworICAgIC8vIHNpeCBjbGlja2FibGUg
cGFydHMgLSB0d28gYXJyb3dzLCB0aGUgInRodW1iIiBpbmRpY2F0aW5nIHRoZSBjdXJyZW50Cisg
ICAgLy8gcG9zaXRpb24gb24gdGhlIGJhciwgdGhlIG90aGVyIHR3byBwYXJ0cyBvZiB0aGUgYmFy
IChiZWZvcmUgYW5kIGFmdGVyCisgICAgLy8gdGhlIHRodW1iKSBhbmQgdGhlICJncmlwcGVyIiBv
biB0aGUgdGh1bWIgaXRzZWxmLgorICAgIC8vCisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgVW5r
bm93blR5cGUgPSAwLAorICAgICAgICBUZXh0RmllbGRUeXBlLAorICAgICAgICBQdXNoQnV0dG9u
VHlwZSwKKyAgICAgICAgVW5jaGVja2VkQm94VHlwZSwKKyAgICAgICAgQ2hlY2tlZEJveFR5cGUs
CisgICAgICAgIEluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGUsCisgICAgICAgIFVuY2hlY2tlZFJh
ZGlvVHlwZSwKKyAgICAgICAgQ2hlY2tlZFJhZGlvVHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNj
cm9sbFRyYWNrQmFja1R5cGUsCisgICAgICAgIEhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRU
eXBlLAorICAgICAgICBIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlLAorICAgICAgICBIb3Jpem9u
dGFsU2Nyb2xsR3JpcFR5cGUsCisgICAgICAgIFZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlwZSwK
KyAgICAgICAgVmVydGljYWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlLAorICAgICAgICBWZXJ0aWNh
bFNjcm9sbFRodW1iVHlwZSwKKyAgICAgICAgVmVydGljYWxTY3JvbGxHcmlwVHlwZSwKKyAgICAg
ICAgTGVmdEFycm93VHlwZSwKKyAgICAgICAgUmlnaHRBcnJvd1R5cGUsCisgICAgICAgIFVwQXJy
b3dUeXBlLAorICAgICAgICBEb3duQXJyb3dUeXBlLAorICAgICAgICBIb3Jpem9udGFsU2xpZGVy
VHJhY2tUeXBlLAorICAgICAgICBIb3Jpem9udGFsU2xpZGVyVGh1bWJUeXBlLAorICAgICAgICBW
ZXJ0aWNhbFNsaWRlclRyYWNrVHlwZSwKKyAgICAgICAgVmVydGljYWxTbGlkZXJUaHVtYlR5cGUs
CisgICAgICAgIERyb3BEb3duQnV0dG9uVHlwZSwKKyAgICAgICAgUHJvZ3Jlc3NCYXJUeXBlCisg
ICAgfTsKKworICAgIC8vIENvbnN0cnVjdHMgYSBjb250cm9sIG9mIHRoZSBnaXZlbiBzaXplLCB0
eXBlIGFuZCBzdGF0ZSB0byBkcmF3CisgICAgLy8gb24gdG8gdGhlIGdpdmVuIGNhbnZhcy4KKyAg
ICBXZWJUZXN0VGhlbWVDb250cm9sV2luKFNrQ2FudmFzKiwgY29uc3QgU2tJUmVjdCYsIFR5cGUs
IFN0YXRlKTsKKyAgICB+V2ViVGVzdFRoZW1lQ29udHJvbFdpbigpOworCisgICAgLy8gRHJhd3Mg
dGhlIGNvbnRyb2wuCisgICAgdm9pZCBkcmF3KCk7CisKKyAgICAvLyBVc2UgdGhpcyBmb3IgVGV4
dEZpZWxkIGNvbnRyb2xzIGluc3RlYWQsIGJlY2F1c2UgdGhlIGxvZ2ljCisgICAgLy8gZm9yIGRy
YXdpbmcgdGhlbSBpcyBkZXBlbmRlbnQgb24gd2hhdCBXZWJLaXQgdGVsbHMgdXMgdG8gZG8uCisg
ICAgLy8gSWYgZHJhd0VkZ2VzIGlzIHRydWUsIGRyYXcgYW4gZWRnZSBhcm91bmQgdGhlIGNvbnRy
b2wuIElmCisgICAgLy8gZmlsbENvbnRlbnRBcmVhIGlzIHRydWUsIGZpbGwgdGhlIGNvbnRlbnQg
YXJlYSB3aXRoIHRoZSBnaXZlbiBjb2xvci4KKyAgICB2b2lkIGRyYXdUZXh0RmllbGQoYm9vbCBk
cmF3RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yKTsKKworICAgIC8vIFVzZSB0
aGlzIGZvciBkcmF3aW5nIFByb2dyZXNzQmFyIGNvbnRyb2xzIGluc3RlYWQsIHNpbmNlIHdlCisg
ICAgLy8gbmVlZCB0byBrbm93IHRoZSByZWN0IHRvIGZpbGwgaW5zaWRlIHRoZSBiYXIuCisgICAg
dm9pZCBkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJlY3QpOworCitwcml2YXRl
OgorICAgIC8vIERyYXdzIGEgYm94IG9mIHNpemUgc3BlY2lmaWVkIGJ5IGlyZWN0LCBmaWxsZWQg
d2l0aCB0aGUgZ2l2ZW4gY29sb3IuCisgICAgLy8gVGhlIGJveCB3aWxsIGhhdmUgYSBib3JkZXIg
ZHJhd24gaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KKyAgICB2b2lkIGJveChjb25zdCBTa0lS
ZWN0JiBpcmVjdCwgU2tDb2xvcik7CisKKworICAgIC8vIERyYXdzIGEgdHJpYW5nbGUgb2Ygc2l6
ZSBzcGVjaWZpZWQgYnkgdGhlIHRocmVlIHBhaXJzIG9mIGNvb3JkaW5hdGVzLAorICAgIC8vIGZp
bGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4gVGhlIGJveCB3aWxsIGhhdmUgYW4gZWRnZSBkcmF3
biBpbiB0aGUKKyAgICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCB0cmlhbmdsZShp
bnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBTa0NvbG9yKTsK
KworICAgIC8vIERyYXdzIGEgcmVjdGFuZ2xlIHRoZSBzaXplIG9mIHRoZSBjb250cm9sIHdpdGgg
cm91bmRlZCBjb3JuZXJzLCBmaWxsZWQKKyAgICAvLyB3aXRoIHRoZSBzcGVjaWZpZWQgY29sb3Ig
KGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IpLgorICAgIHZvaWQg
cm91bmRSZWN0KFNrQ29sb3IpOworCisgICAgLy8gRHJhd3MgYW4gb3ZhbCB0aGUgc2l6ZSBvZiB0
aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvcgorICAgIC8vIGFuZCB3
aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCBvdmFsKFNr
Q29sb3IpOworCisgICAgLy8gRHJhd3MgYSBjaXJjbGUgY2VudGVyZWQgaW4gdGhlIGNvbnRyb2wg
d2l0aCB0aGUgc3BlY2lmaWVkIHJhZGl1cywKKyAgICAvLyBmaWxsZWQgd2l0aCB0aGUgc3BlY2lm
aWVkIGNvbG9yLCBhbmQgd2l0aCBhIGJvcmRlciBkcmF3IGluIHRoZQorICAgIC8vIGRlZmF1bHQg
ZWRnZSBjb2xvci4KKyAgICB2b2lkIGNpcmNsZShTa1NjYWxhciByYWRpdXMsIFNrQ29sb3IpOwor
CisgICAgLy8gRHJhd3MgYSBib3ggdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wsIGZpbGxlZCB3aXRo
IHRoZSBvdXRlckNvbG9yIGFuZAorICAgIC8vIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQg
ZWRnZSBjb2xvciwgYW5kIHRoZW4gZHJhd3MgYW5vdGhlciBib3gKKyAgICAvLyBpbmRlbnRlZCBv
biBhbGwgZm91ciBzaWRlcyBieSB0aGUgc3BlY2lmaWVkIGFtb3VudHMsIGZpbGxlZCB3aXRoIHRo
ZQorICAgIC8vIGlubmVyIGNvbG9yIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVk
Z2UgY29sb3IuCisgICAgdm9pZCBuZXN0ZWRCb3hlcyhpbnQgaW5kZW50TGVmdCwgaW50IGluZGVu
dFRvcCwgaW50IGluZGVudFJpZ2h0LCBpbnQgaW5kZW50Qm90dG9tLCBTa0NvbG9yIG91dGVyQ29s
b3IsIFNrQ29sb3IgaW5uZXJDb2xvcik7CisKKyAgICAvLyBEcmF3cyBhIGxpbmUgYmV0d2VlbiB0
aGUgdHdvIHBvaW50cyBpbiB0aGUgZ2l2ZW4gY29sb3IuCisgICAgdm9pZCBsaW5lKGludCB4MCwg
aW50IHkwLCBpbnQgeDEsIGludCB5MSwgU2tDb2xvcik7CisKKyAgICAvLyBEcmF3cyBhIGRpc3Rp
bmN0aXZlIG1hcmsgb24gdGhlIGNvbnRyb2wgZm9yIGVhY2ggc3RhdGUsIHNvIHRoYXQgdGhlCisg
ICAgLy8gc3RhdGUgb2YgdGhlIGNvbnRyb2wgY2FuIGJlIGRldGVybWluZWQgd2l0aG91dCBuZWVk
aW5nIHRvIGtub3cgd2hpY2gKKyAgICAvLyBjb2xvciBpcyB3aGljaC4KKyAgICB2b2lkIG1hcmtT
dGF0ZSgpOworCisgICAgU2tDYW52YXMqIG1fY2FudmFzOworICAgIGNvbnN0IFNrSVJlY3QgbV9p
cmVjdDsKKyAgICBjb25zdCBUeXBlIG1fdHlwZTsKKyAgICBjb25zdCBTdGF0ZSBtX3N0YXRlOwor
ICAgIGNvbnN0IFNrQ29sb3IgbV9lZGdlQ29sb3I7CisgICAgY29uc3QgU2tDb2xvciBtX2JnQ29s
b3I7CisgICAgY29uc3QgU2tDb2xvciBtX2ZnQ29sb3I7CisKKyAgICAvLyBUaGUgZm9sbG93aW5n
IGFyZSBjb252ZW5pZW5jZSBhY2Nlc3NvcnMgZm9yIG1faXJlY3QuCisgICAgY29uc3QgaW50IG1f
bGVmdDsKKyAgICBjb25zdCBpbnQgbV9yaWdodDsKKyAgICBjb25zdCBpbnQgbV90b3A7CisgICAg
Y29uc3QgaW50IG1fYm90dG9tOworICAgIGNvbnN0IGludCBtX3dpZHRoOworICAgIGNvbnN0IGlu
dCBtX2hlaWdodDsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW5f
aApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMGI1
MjMyZjc3ZGM2ZTk2MzRhMDRhZDNhMTcyZjk2ODI3MjNmYTUzCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1l
RW5naW5lTWFjLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIFdlYlRoZW1lRW5naW5l
IEFQSSBpbiBzdWNoIGEgd2F5IHRoYXQgd2UgbWF0Y2ggdGhlIE1hYworLy8gcG9ydCByZW5kZXJp
bmcgbW9yZSB0aGFuIHVzdWFsIENocm9taXVtIHBhdGgsIHRodXMgYWxsb3dpbmcgdXMgdG8gc2hh
cmUKKy8vIG1vcmUgcGl4ZWwgYmFzZWxpbmVzLgorCisjaWZuZGVmIFdlYlRlc3RUaGVtZUVuZ2lu
ZU1hY19oCisjZGVmaW5lIFdlYlRlc3RUaGVtZUVuZ2luZU1hY19oCisKKyNpbmNsdWRlIDxwdWJs
aWMvbWFjL1dlYlRoZW1lRW5naW5lLmg+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKwor
Y2xhc3MgV2ViVGVzdFRoZW1lRW5naW5lTWFjIDogcHVibGljIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRodW1iKAorICAg
ICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCisgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6
OlN0YXRlLAorICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAorICAgICAgICBj
b25zdCBXZWJLaXQ6OldlYlJlY3QmLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpTY3JvbGxiYXJJbmZvJik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBhaW50
SElUaGVtZVNjcm9sbGJhclRodW1iKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCisgICAg
ICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAorICAgICAgICBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpTaXplLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAorICAgICAg
ICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRodW1iKAorICAgICAgICBXZWJLaXQ6
OldlYkNhbnZhcyosCisgICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAorICAg
ICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAorICAgICAgICBjb25zdCBXZWJLaXQ6
OldlYlJlY3QmLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxi
YXJJbmZvJik7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJUZXN0VGhlbWVFbmdpbmVNYWNfaApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
V2ViVGVzdFRoZW1lRW5naW5lTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYzOWZk
NTM4YmIyY2MwNWNkYjM3ZThmMDFkMDAxMzg1N2U2ZDdjNzgKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVF
bmdpbmVNYWMubW0KQEAgLTAsMCArMSwxOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiV2ViVGVzdFRoZW1lRW5naW5l
TWFjLmgiCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ2FudmFzLmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYlJlY3QuaD4KKyNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX21hYy5oIgorI2ltcG9y
dCA8QXBwS2l0L05TQWZmaW5lVHJhbnNmb3JtLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNHcmFwaGlj
c0NvbnRleHQuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU1Njcm9sbGVyLmg+CisjaW1wb3J0IDxBcHBL
aXQvTlNXaW5kb3cuaD4KKyNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+CisKK3VzaW5nIFdlYktp
dDo6V2ViQ2FudmFzOwordXNpbmcgV2ViS2l0OjpXZWJSZWN0OwordXNpbmcgV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZTsKKworLy8gV2UgY2FuJ3QgZGlyZWN0bHkgdGVsbCB0aGUgTlNTY3JvbGxlciB0
byBkcmF3IGl0c2VsZiBhcyBhY3RpdmUgb3IgaW5hY3RpdmUsCisvLyBpbnN0ZWFkIHdlIGhhdmUg
dG8gbWFrZSBpdCBhIGNoaWxkIG9mIGFuIChpbilhY3RpdmUgd2luZG93LiBUaGlzIGNsYXNzIGxl
dHMKKy8vIHVzIGZha2UgdGhhdCBwYXJlbnQgd2luZG93LgorQGludGVyZmFjZSBGYWtlQWN0aXZl
V2luZG93IDogTlNXaW5kb3cgeworQHByaXZhdGUKKyAgICBCT09MIGhhc0FjdGl2ZUNvbnRyb2xz
OworfQorKyAoTlNXaW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRvdzsKKysgKE5TV2luZG93KilhbHdh
eXNJbmFjdGl2ZVdpbmRvdzsKKy0gKGlkKWluaXRXaXRoQWN0aXZlQ29udHJvbHM6KEJPT0wpX2hh
c0FjdGl2ZUNvbnRyb2xzOworLSAoQk9PTClfaGFzQWN0aXZlQ29udHJvbHM7CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBGYWtlQWN0aXZlV2luZG93CisKK3N0YXRpYyBOU1dpbmRvdyogYWx3YXlz
QWN0aXZlV2luZG93ID0gbmlsOworc3RhdGljIE5TV2luZG93KiBhbHdheXNJbmFjdGl2ZVdpbmRv
dyA9IG5pbDsKKworKyAoTlNXaW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRvdworeworICAgIGlmIChh
bHdheXNBY3RpdmVXaW5kb3cgPT0gbmlsKQorICAgICAgICBhbHdheXNBY3RpdmVXaW5kb3cgPSBb
W3NlbGYgYWxsb2NdIGluaXRXaXRoQWN0aXZlQ29udHJvbHM6WUVTXTsKKyAgICByZXR1cm4gYWx3
YXlzQWN0aXZlV2luZG93OworfQorCisrIChOU1dpbmRvdyopYWx3YXlzSW5hY3RpdmVXaW5kb3cK
K3sKKyAgICBpZiAoYWx3YXlzSW5hY3RpdmVXaW5kb3cgPT0gbmlsKQorICAgICAgICBhbHdheXNJ
bmFjdGl2ZVdpbmRvdyA9IFtbc2VsZiBhbGxvY10gaW5pdFdpdGhBY3RpdmVDb250cm9sczpOT107
CisgICAgcmV0dXJuIGFsd2F5c0luYWN0aXZlV2luZG93OworfQorCistIChpZClpbml0V2l0aEFj
dGl2ZUNvbnRyb2xzOihCT09MKV9oYXNBY3RpdmVDb250cm9scworeworICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CisgICAgaGFzQWN0aXZlQ29udHJvbHMgPSBfaGFzQWN0aXZlQ29udHJvbHM7Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKEJPT0wpX2hhc0FjdGl2ZUNvbnRyb2xzCit7CisgICAg
cmV0dXJuIGhhc0FjdGl2ZUNvbnRyb2xzOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJUZXN0
UnVubmVyIHsKKworbmFtZXNwYWNlIHsKKworVGhlbWVUcmFja0VuYWJsZVN0YXRlIHN0YXRlVG9I
SUVuYWJsZVN0YXRlKFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBzd2l0Y2gg
KHN0YXRlKSB7CisgICAgY2FzZSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDoKKyAgICAg
ICAgcmV0dXJuIGtUaGVtZVRyYWNrRGlzYWJsZWQ7CisgICAgY2FzZSBXZWJUaGVtZUVuZ2luZTo6
U3RhdGVJbmFjdGl2ZToKKyAgICAgICAgcmV0dXJuIGtUaGVtZVRyYWNrSW5hY3RpdmU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGtUaGVtZVRyYWNrQWN0aXZlOworICAgIH0KK30KKwor
fQorCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZU1hYzo6cGFpbnRTY3JvbGxiYXJUaHVtYigKKyAg
ICBXZWJDYW52YXMqIGNhbnZhcywKKyAgICBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUsCisg
ICAgV2ViVGhlbWVFbmdpbmU6OlNpemUgc2l6ZSwKKyAgICBjb25zdCBXZWJSZWN0JiByZWN0LAor
ICAgIGNvbnN0IFdlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBzY3JvbGxiYXJJbmZvKQor
eworICAgIC8vIFRvIG1hdGNoIHRoZSBNYWMgcG9ydCwgd2Ugc3RpbGwgdXNlIEhJVGhlbWUgZm9y
IGlubmVyIHNjcm9sbGJhcnMuCisgICAgaWYgKHNjcm9sbGJhckluZm8ucGFyZW50ID09IFdlYlRo
ZW1lRW5naW5lOjpTY3JvbGxiYXJQYXJlbnRSZW5kZXJMYXllcikKKyAgICAgICAgcGFpbnRISVRo
ZW1lU2Nyb2xsYmFyVGh1bWIoY2FudmFzLCBzdGF0ZSwgc2l6ZSwgcmVjdCwgc2Nyb2xsYmFySW5m
byk7CisgICAgZWxzZQorICAgICAgICBwYWludE5TU2Nyb2xsZXJTY3JvbGxiYXJUaHVtYihjYW52
YXMsIHN0YXRlLCBzaXplLCByZWN0LCBzY3JvbGxiYXJJbmZvKTsKK30KKworLy8gRHVwbGljYXRl
ZCBmcm9tIHdlYmtpdC9nbHVlL3dlYnRoZW1lZW5naW5lX2ltcGxfbWFjLmNjIGluIHRoZSBkb3du
c3RyZWFtCisvLyBDaHJvbWl1bSBXZWJUaGVtZUVuZ2luZSBpbXBsZW1lbnRhdGlvbi4KK3ZvaWQg
V2ViVGVzdFRoZW1lRW5naW5lTWFjOjpwYWludEhJVGhlbWVTY3JvbGxiYXJUaHVtYigKKyAgICBX
ZWJDYW52YXMqIGNhbnZhcywKKyAgICBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUsCisgICAg
V2ViVGhlbWVFbmdpbmU6OlNpemUgc2l6ZSwKKyAgICBjb25zdCBXZWJSZWN0JiByZWN0LAorICAg
IGNvbnN0IFdlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBzY3JvbGxiYXJJbmZvKQorewor
ICAgIEhJVGhlbWVUcmFja0RyYXdJbmZvIHRyYWNrSW5mbzsKKyAgICB0cmFja0luZm8udmVyc2lv
biA9IDA7CisgICAgdHJhY2tJbmZvLmtpbmQgPSBzaXplID09IFdlYlRoZW1lRW5naW5lOjpTaXpl
UmVndWxhciA/IGtUaGVtZU1lZGl1bVNjcm9sbEJhciA6IGtUaGVtZVNtYWxsU2Nyb2xsQmFyOwor
ICAgIHRyYWNrSW5mby5ib3VuZHMgPSBDR1JlY3RNYWtlKHJlY3QueCwgcmVjdC55LCByZWN0Lndp
ZHRoLCByZWN0LmhlaWdodCk7CisgICAgdHJhY2tJbmZvLm1pbiA9IDA7CisgICAgdHJhY2tJbmZv
Lm1heCA9IHNjcm9sbGJhckluZm8ubWF4VmFsdWU7CisgICAgdHJhY2tJbmZvLnZhbHVlID0gc2Ny
b2xsYmFySW5mby5jdXJyZW50VmFsdWU7CisgICAgdHJhY2tJbmZvLnRyYWNrSW5mby5zY3JvbGxi
YXIudmlld3NpemUgPSBzY3JvbGxiYXJJbmZvLnZpc2libGVTaXplOworICAgIHRyYWNrSW5mby5h
dHRyaWJ1dGVzID0gMDsKKyAgICBpZiAoc2Nyb2xsYmFySW5mby5vcmllbnRhdGlvbiA9PSBXZWJU
aGVtZUVuZ2luZTo6U2Nyb2xsYmFyT3JpZW50YXRpb25Ib3Jpem9udGFsKQorICAgICAgICB0cmFj
a0luZm8uYXR0cmlidXRlcyB8PSBrVGhlbWVUcmFja0hvcml6b250YWw7CisKKyAgICB0cmFja0lu
Zm8uZW5hYmxlU3RhdGUgPSBzdGF0ZVRvSElFbmFibGVTdGF0ZShzdGF0ZSk7CisKKyAgICB0cmFj
a0luZm8udHJhY2tJbmZvLnNjcm9sbGJhci5wcmVzc1N0YXRlID0KKyAgICAgICAgc3RhdGUgPT0g
V2ViVGhlbWVFbmdpbmU6OlN0YXRlUHJlc3NlZCA/IGtUaGVtZVRodW1iUHJlc3NlZCA6IDA7Cisg
ICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgfD0gKGtUaGVtZVRyYWNrU2hvd1RodW1iIHwga1RoZW1l
VHJhY2tIaWRlVHJhY2spOworICAgIGdmeDo6U2tpYUJpdExvY2tlciBiaXRMb2NrZXIoY2FudmFz
KTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gYml0TG9ja2VyLmNnQ29udGV4dCgpOwor
ICAgIEhJVGhlbWVEcmF3VHJhY2soJnRyYWNrSW5mbywgMCwgY2dDb250ZXh0LCBrSElUaGVtZU9y
aWVudGF0aW9uTm9ybWFsKTsKK30KKwordm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVNYWM6OnBhaW50
TlNTY3JvbGxlclNjcm9sbGJhclRodW1iKAorICAgIFdlYkNhbnZhcyogY2FudmFzLAorICAgIFdl
YlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSwKKyAgICBXZWJUaGVtZUVuZ2luZTo6U2l6ZSBzaXpl
LAorICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCisgICAgY29uc3QgV2ViVGhlbWVFbmdpbmU6OlNj
cm9sbGJhckluZm8mIHNjcm9sbGJhckluZm8pCit7CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNh
dmVHcmFwaGljc1N0YXRlXTsKKyAgICBOU1Njcm9sbGVyKiBzY3JvbGxlciA9IFtbTlNTY3JvbGxl
ciBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KHJlY3QueCwgcmVjdC55LCByZWN0Lndp
ZHRoLCByZWN0LmhlaWdodCldOworICAgIFtzY3JvbGxlciBzZXRFbmFibGVkOnN0YXRlICE9IFdl
YlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkXTsKKyAgICBpZiAoc3RhdGUgPT0gV2ViVGhlbWVF
bmdpbmU6OlN0YXRlSW5hY3RpdmUpCisgICAgICAgIFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlz
SW5hY3RpdmVXaW5kb3ddIGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OnNjcm9sbGVyXTsKKyAgICBl
bHNlCisgICAgICAgIFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzQWN0aXZlV2luZG93XSBjb250
ZW50Vmlld10gYWRkU3VidmlldzpzY3JvbGxlcl07CisKKyAgICBbc2Nyb2xsZXIgc2V0Q29udHJv
bFNpemU6c2l6ZSA9PSBXZWJUaGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBOU1JlZ3VsYXJDb250
cm9sU2l6ZSA6IE5TU21hbGxDb250cm9sU2l6ZV07CisKKyAgICBkb3VibGUgdmFsdWUgPSBkb3Vi
bGUoc2Nyb2xsYmFySW5mby5jdXJyZW50VmFsdWUpIC8gZG91YmxlKHNjcm9sbGJhckluZm8ubWF4
VmFsdWUpOworICAgIFtzY3JvbGxlciBzZXREb3VibGVWYWx1ZTogdmFsdWVdOworCisgICAgZmxv
YXQga25vYlByb3BvcnRpb24gPSBmbG9hdChzY3JvbGxiYXJJbmZvLnZpc2libGVTaXplKSAvIGZs
b2F0KHNjcm9sbGJhckluZm8udG90YWxTaXplKTsKKyAgICBbc2Nyb2xsZXIgc2V0S25vYlByb3Bv
cnRpb246IGtub2JQcm9wb3J0aW9uXTsKKworICAgIGdmeDo6U2tpYUJpdExvY2tlciBiaXRMb2Nr
ZXIoY2FudmFzKTsKKyAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0gYml0TG9ja2VyLmNnQ29u
dGV4dCgpOworICAgIE5TR3JhcGhpY3NDb250ZXh0KiBuc0dyYXBoaWNzQ29udGV4dCA9IFtOU0dy
YXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0OmNnQ29udGV4dCBm
bGlwcGVkOllFU107CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om5z
R3JhcGhpY3NDb250ZXh0XTsKKworICAgIC8vIERlc3BpdGUgcGFzc2luZyBpbiBmcmFtZVJlY3Qo
KSB0byB0aGUgc2Nyb2xsZXIsIGl0IGFsd2F5cyBkcmF3cyBhdCAoMCwgMCkuCisgICAgLy8gRm9y
Y2UgaXQgdG8gZHJhdyBpbiB0aGUgcmlnaHQgbG9jYXRpb24gYnkgdHJhbnNsYXRpbmcgdGhlIHdo
b2xlIGdyYXBoaWNzCisgICAgLy8gY29udGV4dC4KKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNn
Q29udGV4dCk7CisgICAgTlNBZmZpbmVUcmFuc2Zvcm0gKnRyYW5zZm9ybSA9IFtOU0FmZmluZVRy
YW5zZm9ybSB0cmFuc2Zvcm1dOworICAgIFt0cmFuc2Zvcm0gdHJhbnNsYXRlWEJ5OnJlY3QueCB5
Qnk6cmVjdC55XTsKKyAgICBbdHJhbnNmb3JtIGNvbmNhdF07CisKKyAgICBbc2Nyb2xsZXIgZHJh
d0tub2JdOworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY2dDb250ZXh0KTsKKworICAgIFtz
Y3JvbGxlciByZWxlYXNlXTsKKworICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhp
Y3NTdGF0ZV07Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZVdpbi5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVXaW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUwMzM5ZjU1ZGQ2NjFkYTJjNTA5ZjA1ODRkNmY0NDZlODNkZmRlOTkK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVXaW4uY3BwCkBAIC0wLDAgKzEsNzQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlRlc3RUaGVtZUVuZ2luZVdpbi5oIgorCisjaW5j
bHVkZSAiVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIldlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaCIK
KyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViUmVjdC5oPgorCisvLyBBbHRob3VnaCBhbGwgdGhpcyBjb2RlIGlzIGdl
bmVyaWMsIHdlIGluY2x1ZGUgdGhlc2UgaGVhZGVycworLy8gdG8gcHVsbCBpbiB0aGUgV2luZG93
cyAjZGVmaW5lcyBmb3IgdGhlIHBhcnRzIGFuZCBzdGF0ZXMgb2YKKy8vIHRoZSBjb250cm9scy4K
KyNpbmNsdWRlIDx2c3N0eWxlLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK25hbWVzcGFjZSB7
CisKKy8vIFdlIGRlZmluZSB0aGlzIGZvciBjbGFyaXR5LCBhbHRob3VnaCB0aGVyZSByZWFsbHkg
c2hvdWxkIGJlIGEgREZDU19OT1JNQUwgaW4gd2ludXNlci5oLgorY29uc3QgaW50IGRmY3NOb3Jt
YWwgPSAweDAwMDA7CisKK1NrSVJlY3Qgd2ViUmVjdFRvU2tJUmVjdChjb25zdCBXZWJSZWN0JiB3
ZWJSZWN0KQoreworICAgIFNrSVJlY3QgaXJlY3Q7CisgICAgaXJlY3Quc2V0KHdlYlJlY3QueCwg
d2ViUmVjdC55LCB3ZWJSZWN0LnggKyB3ZWJSZWN0LndpZHRoIC0gMSwgd2ViUmVjdC55ICsgd2Vi
UmVjdC5oZWlnaHQgLSAxKTsKKyAgICByZXR1cm4gaXJlY3Q7Cit9CisKK3ZvaWQgZHJhd0NvbnRy
b2woV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QsIFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlR5cGUgY3R5cGUsIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0
ZSkKK3sKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luIGNvbnRyb2woY2FudmFzLCB3ZWJSZWN0
VG9Ta0lSZWN0KHJlY3QpLCBjdHlwZSwgY3N0YXRlKTsKKyAgICBjb250cm9sLmRyYXcoKTsKK30K
Kwordm9pZCBkcmF3VGV4dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiBy
ZWN0LCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpUeXBlIGN0eXBlLCBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpTdGF0ZSBjc3RhdGUsIGJvb2wgZHJhd0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJl
YSwgV2ViQ29sb3IgY29sb3IpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbiBjb250cm9s
KGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7CisgICAgY29u
dHJvbC5kcmF3VGV4dEZpZWxkKGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBjb2xvcik7Cit9
CisKK3ZvaWQgZHJhd1Byb2dyZXNzQmFyKFdlYkNhbnZhcyogY2FudmFzLCBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpUeXBlIGN0eXBlLCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3Rh
dGUsIGNvbnN0IFdlYlJlY3QmIGJhclJlY3QsIGNvbnN0IFdlYlJlY3QmIGZpbGxSZWN0KQorewor
ICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW4gY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJl
Y3QoYmFyUmVjdCksIGN0eXBlLCBjc3RhdGUpOworICAgIGNvbnRyb2wuZHJhd1Byb2dyZXNzQmFy
KHdlYlJlY3RUb1NrSVJlY3QoZmlsbFJlY3QpKTsKK30KKworfQorCit2b2lkIFdlYlRlc3RUaGVt
ZUVuZ2luZVdpbjo6cGFpbnRCdXR0b24oV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQg
c3RhdGUsIGludCBjbGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlVua25vd25UeXBlOworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25TdGF0ZTsKKworICAgIGlmIChwYXJ0ID09
IEJQX0NIRUNLQk9YKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBD
QlNfVU5DSEVDS0VETk9STUFMOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OlVuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgQ0JTX1VOQ0hFQ0tFREhPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0
eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkQm94VHlwZTsKKyAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZD
U19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
VW5jaGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
Q0JTX1VOQ0hFQ0tFRERJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2lj
U3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAg
ICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVuY2hlY2tlZEJveFR5cGU7CisgICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRE5PUk1BTDoKKyAg
ICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNL
IHwgREZDU19DSEVDS0VEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OkNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIENCU19DSEVDS0VESE9UOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBERkNTX0hPVCkpOworICAg
ICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkQm94VHlwZTsK
KyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRFBSRVNTRUQ6Cisg
ICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVD
SyB8IERGQ1NfQ0hFQ0tFRCB8IERGQ1NfUFVTSEVEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRl
ID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRERJU0FCTEVEOgorICAgICAgICAgICAgV0VC
S0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNL
RUQgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OkNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgQ0JTX01JWEVETk9STUFMOgorICAgICAgICAgICAgLy8gQ2xhc3NpYyB0aGVtZSBj
YW4ndCByZXByZXNlbnQgbWl4ZWQgc3RhdGUgY2hlY2tib3guIFdlIGFzc3VtZQorICAgICAgICAg
ICAgLy8gaXQncyBlcXVpdmFsZW50IHRvIHVuY2hlY2tlZC4KKyAgICAgICAgICAgIFdFQktJVF9B
U1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfQlVUVE9OQ0hFQ0spOworICAgICAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOwor
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19NSVhFREhPVDoKKyAgICAg
ICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwg
REZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBDQlNfTUlYRURQUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2lj
U3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAg
Y3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBl
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0
YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfTUlYRURESVNBQkxF
RDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRP
TkNIRUNLIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOworICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBp
ZiAoQlBfUkFESU9CVVRUT04gPT0gcGFydCkgeworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Cisg
ICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFRE5PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IERGQ1NfQlVUVE9OUkFESU8pOworICAgICAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFREhPVDoKKyAgICAgICAgICAg
IFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19I
T1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVj
a2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6SG90U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19VTkNI
RUNLRURQUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0g
KERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19VTkNIRUNLRURESVNBQkxFRDoKKyAgICAgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZD
U19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpVbmNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBSQlNfQ0hFQ0tFRE5PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEKSk7CisgICAgICAgICAg
ICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRSYWRpb1R5cGU7CisgICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX0NIRUNLRURIT1Q6CisgICAgICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERG
Q1NfQ0hFQ0tFRCB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OkNoZWNrZWRSYWRpb1R5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgUkJTX0NIRUNLRURQUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChj
bGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX1BV
U0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVj
a2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNf
Q0hFQ0tFRERJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0lOQUNUSVZFKSk7Cisg
ICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRSYWRpb1R5
cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxl
ZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfSBlbHNlIGlmIChCUF9QVVNIQlVUVE9OID09IHBhcnQpIHsKKyAgICAgICAg
c3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFBCU19OT1JNQUw6CisgICAgICAgICAgICBX
RUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlBVU0gpOworICAgICAgICAg
ICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBQQlNfSE9UOgorICAgICAgICAgICAgV0VC
S0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8IERGQ1NfSE9UKSk7
CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlB1c2hCdXR0b25U
eXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3Rh
dGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFBCU19QUkVTU0VEOgorICAg
ICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8
IERGQ1NfUFVTSEVEKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OlB1c2hCdXR0b25UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBQQlNfRElTQUJMRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIFBCU19ERUZBVUxURUQ6CisgICAgICAgICAgICBXRUJL
SVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlBVU0gpOworICAgICAgICAgICAg
Y3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkZvY3VzZWRTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0g
ZWxzZQorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBkcmF3Q29u
dHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRlc3RUaGVt
ZUVuZ2luZVdpbjo6cGFpbnRNZW51TGlzdChXZWJDYW52YXMqIGNhbnZhcywgaW50IHBhcnQsIGlu
dCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6VW5rbm93blR5cGU7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRl
ID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blN0YXRlOworCisgICAgaWYgKENQX0RS
T1BET1dOQlVUVE9OID09IHBhcnQpIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpEcm9wRG93bkJ1dHRvblR5cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAg
ICAgICAgY2FzZSBDQlhTX05PUk1BTDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfTUVOVUFSUk9XKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBDQlhTX0hPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX01FTlVBUlJPVyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3ZlclN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDQlhTX1BSRVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX1BVU0hFRCkpOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlhTX0RJU0FCTEVEOgorICAgICAgICAgICAg
V0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwgREZDU19JTkFD
VElWRSkpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlz
YWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQor
Cit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRTY3JvbGxiYXJBcnJvdyhXZWJDYW52
YXMqIGNhbnZhcywgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiBy
ZWN0KQoreworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisK
KyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBBQlNfVVBOT1JNQUw6CisgICAgICAgIFdF
QktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMVVApOworICAgICAgICBjdHlw
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVwQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEFCU19ET1dOTk9STUFMOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OkRvd25BcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0xF
RlROT1JNQUw6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NS
T0xMTEVGVCk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6TGVmdEFy
cm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFs
U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfUklHSFROT1JNQUw6CisgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMUklHSFQpOworICAg
ICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlJpZ2h0QXJyb3dUeXBlOworICAg
ICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19VUEhPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChj
bGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hPVCkpOworICAgICAgICBjdHlw
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVwQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIEFCU19ET1dOSE9UOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFC
U19MRUZUSE9UOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19T
Q1JPTExMRUZUIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpMZWZ0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVEhP
VDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMUklH
SFQgfCBERkNTX0hPVCkpOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlJpZ2h0QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19VUEhPVkVSOgorICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKKyAgICAg
ICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVcEFycm93VHlwZTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIEFCU19ET1dOSE9WRVI6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfU0NST0xMRE9XTik7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6RG93bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFC
U19MRUZUSE9WRVI6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1Nf
U0NST0xMTEVGVCk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6TGVm
dEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92
ZXJTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19SSUdIVEhPVkVSOgorICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFJJR0hUKTsKKyAg
ICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpSaWdodEFycm93VHlwZTsKKyAg
ICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19VUFBSRVNTRUQ6CisgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19QVVNIRUQgfCBERkNTX0ZM
QVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVcEFycm93VHlw
ZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRl
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0RPV05QUkVTU0VEOgorICAgICAgICBX
RUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19QVVNI
RUQgfCBERkNTX0ZMQVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpEb3duQXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpQcmVzc2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVFBSRVNT
RUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTExF
RlQgfCBERkNTX1BVU0hFRCB8IERGQ1NfRkxBVCkpOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IEFCU19SSUdIVFBSRVNTRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKKyAgICAgICAg
Y3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpSaWdodEFycm93VHlwZTsKKyAgICAgICAg
Y3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgQUJTX1VQRElTQUJMRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19JTkFDVElWRSkpOworICAgICAg
ICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVwQXJyb3dUeXBlOworICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgQUJTX0RPV05ESVNBQkxFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAg
ICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEb3duQXJyb3dUeXBlOworICAg
ICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlRESVNBQkxFRDoKKyAgICAgICAgV0VCS0lU
X0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSU5BQ1RJVkUp
KTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpMZWZ0QXJyb3dUeXBl
OworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRl
OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQUJTX1JJR0hURElTQUJMRUQ6CisgICAgICAg
IFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19J
TkFDVElWRSkpOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlJpZ2h0
QXJyb3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNh
YmxlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFdFQktJ
VF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJh
d0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUZXN0
VGhlbWVFbmdpbmVXaW46OnBhaW50U2Nyb2xsYmFyVGh1bWIoV2ViQ2FudmFzKiBjYW52YXMsIGlu
dCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3Qp
Cit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OlVua25vd25UeXBlOworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0
YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25TdGF0ZTsKKworICAg
IHN3aXRjaCAocGFydCkgeworICAgIGNhc2UgU0JQX1RIVU1CQlROSE9SWjoKKyAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlOwor
ICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX1RIVU1CQlROVkVSVDoKKyAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpWZXJ0aWNhbFNjcm9sbFRodW1iVHlwZTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9HUklQUEVSSE9SWjoKKyAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3Jpem9udGFsU2Nyb2xsR3JpcFR5cGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBTQlBfR1JJUFBFUlZFUlQ6CisgICAgICAgIGN0eXBlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VmVydGljYWxTY3JvbGxHcmlwVHlwZTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBj
YXNlIFNDUkJTX05PUk1BTDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0g
ZGZjc05vcm1hbCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5v
cm1hbFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfSE9UOgorICAgICAg
ICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgU0NSQlNfSE9WRVI6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRl
ID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpIb3ZlclN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfUFJFU1NFRDoK
KyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0RJU0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNT
RVJUX05PVF9SRUFDSEVEKCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGlj
ZS4KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdDb250cm9s
KGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lRW5n
aW5lV2luOjpwYWludFNjcm9sbGJhclRyYWNrKFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwg
aW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0LCBjb25zdCBX
ZWJSZWN0JiBhbGlnblJlY3QpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBj
dHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25UeXBlOworICAgIFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVu
a25vd25TdGF0ZTsKKworICAgIHN3aXRjaCAocGFydCkgeworICAgIGNhc2UgU0JQX1VQUEVSVFJB
Q0tIT1JaOgorICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Okhvcml6b250
YWxTY3JvbGxUcmFja0JhY2tUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0JQX0xP
V0VSVFJBQ0tIT1JaOgorICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Okhv
cml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgU0JQX1VQUEVSVFJBQ0tWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OlZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIFNCUF9MT1dFUlRSQUNLVkVSVDoKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU7CisgICAgICAgIGJyZWFr
OworCisgICAgZGVmYXVsdDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBT
Q1JCU19OT1JNQUw6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NO
b3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxT
dGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0hPVDoKKyAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4g
cHJhY3RpY2UuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQ1JCU19IT1ZFUjoKKyAgICAg
ICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBTQ1JCU19QUkVTU0VEOgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KKyAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0RJU0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAgICAgICAgY3N0YXRlID0gV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNz
dGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWludFNwaW5CdXR0b24o
V2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUs
IGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlw
ZSBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25UeXBlOworICAgIFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlVua25vd25TdGF0ZTsKKworICAgIGlmIChwYXJ0ID09IFNQTlBfVVApIHsKKyAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVcEFycm93VHlwZTsKKyAgICAgICAgc3dpdGNo
IChzdGF0ZSkgeworICAgICAgICBjYXNlIFVQU19OT1JNQUw6CisgICAgICAgICAgICBXRUJLSVRf
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKKyAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVVBTX0RJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0lOQUNUSVZFKSk7CisgICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVVBTX1BSRVNTRUQ6CisgICAgICAgICAg
ICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfUFVT
SEVEKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVz
c2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBVUFNfSE9UOgorICAg
ICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBE
RkNTX0hPVCkpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
SG92ZXJTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNl
IGlmIChwYXJ0ID09IFNQTlBfRE9XTikgeworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OkRvd25BcnJvd1R5cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAg
ICAgY2FzZSBETlNfTk9STUFMOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gREZDU19TQ1JPTExET1dOKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRE5TX0RJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBETlNfUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX1BVU0hFRCkpOworICAg
ICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE5TX0hPVDoKKyAgICAgICAgICAgIFdF
QktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX0hPVCkp
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAg
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJl
Y3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFp
bnRUZXh0RmllbGQoV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBj
bGFzc2ljU3RhdGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QsIFdlYkNvbG9yIGNvbG9yLCBib29sIGZp
bGxDb250ZW50QXJlYSwgYm9vbCBkcmF3RWRnZXMpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25UeXBlOwor
ICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlVua25vd25TdGF0ZTsKKworICAgIFdFQktJVF9BU1NFUlQoRVBfRURJVFRFWFQg
PT0gcGFydCk7CisgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpUZXh0RmllbGRU
eXBlOworCisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgRVRTX05PUk1BTDoKKyAgICAg
ICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7CisgICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgRVRTX0hPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gREZDU19IT1QpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19ESVNBQkxFRDoKKyAg
ICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7CisgICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfU0VMRUNURUQ6CisgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IERGQ1NfUFVTSEVEKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgRVRTX0ZPQ1VTRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRm
Y3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpGb2N1
c2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVFNfUkVBRE9OTFk6CisgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpSZWFkT25seVN0YXRlOworICAgICAgICBi
cmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZHJhd1RleHRGaWVsZChjYW52YXMsIHJl
Y3QsIGN0eXBlLCBjc3RhdGUsIGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBjb2xvcik7Cit9
CisKK3ZvaWQgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWludFRyYWNrYmFyKFdlYkNhbnZhcyog
Y2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJS
ZWN0JiByZWN0KQoreworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duU3Rh
dGU7CisKKyAgICBpZiAoVEtQX1RIVU1CQk9UVE9NID09IHBhcnQpIHsKKyAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3Jpem9udGFsU2xpZGVyVGh1bWJUeXBlOworICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgVFVTX05PUk1BTDoKKyAgICAgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRVU19IT1Q6CisgICAgICAgICAgICBXRUJLSVRf
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgVFVTX0RJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBUVVNfUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfUFVTSEVEKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoVEtQX1RIVU1CVkVSVCA9
PSBwYXJ0KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VmVydGlj
YWxTbGlkZXJUaHVtYlR5cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2Fz
ZSBUVVNfTk9STUFMOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0g
ZGZjc05vcm1hbCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVFVTX0hP
VDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsK
KyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBUVVNfRElTQUJMRUQ6CisgICAgICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKKyAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRVU19QUkVTU0VEOgorICAgICAgICAg
ICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19QVVNIRUQpOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmIChUS1BfVFJBQ0sgPT0gcGFydCkgeworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46Okhvcml6b250YWxTbGlkZXJUcmFja1R5cGU7CisgICAgICAgIFdFQktJVF9B
U1NFUlQoc3RhdGUgPT0gVFJTX05PUk1BTCk7CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICB9IGVsc2UgaWYgKFRLUF9UUkFDS1ZFUlQgPT0gcGFy
dCkgeworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlZlcnRpY2FsU2xp
ZGVyVHJhY2tUeXBlOworICAgICAgICBXRUJLSVRfQVNTRVJUKHN0YXRlID09IFRSVlNfTk9STUFM
KTsKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Cisg
ICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAg
IH0gZWxzZQorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBkcmF3
Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCisKK3ZvaWQgV2ViVGVz
dFRoZW1lRW5naW5lV2luOjpwYWludFByb2dyZXNzQmFyKFdlYktpdDo6V2ViQ2FudmFzKiBjYW52
YXMsIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgYmFyUmVjdCwgY29uc3QgV2ViS2l0OjpXZWJSZWN0
JiB2YWx1ZVJlY3QsIGJvb2wgZGV0ZXJtaW5hdGUsIGRvdWJsZSkKK3sKKyAgICBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJvZ3Jl
c3NCYXJUeXBlOworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9IGRl
dGVybWluYXRlID8gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGUgOiBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpJbmRldGVybWluYXRlU3RhdGU7CisgICAgZHJhd1Byb2dyZXNzQmFy
KGNhbnZhcywgY3R5cGUsIGNzdGF0ZSwgYmFyUmVjdCwgdmFsdWVSZWN0KTsKK30KKworCitXZWJL
aXQ6OldlYlNpemUgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpnZXRTaXplKGludCBwYXJ0KQorewor
ICAgIHJldHVybiBXZWJLaXQ6OldlYlNpemUoKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5l
V2luLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJU
ZXN0VGhlbWVFbmdpbmVXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGEzZWM0MmU5Yjc3YmUxNTFjMjM1NTMy
OWI4ZDFkNDA2MGMwMzljCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmgKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBUaGlzIGltcGxlbWVudHMgdGhlIFdlYlRoZW1lRW5naW5lIEFQSSB1c2VkIGJ5
IHRoZSBXaW5kb3dzIHZlcnNpb24gb2YKKy8vIENocm9taXVtIHRvIHJlbmRlciBuYXRpdmUgZm9y
bSBjb250cm9scyBsaWtlIGNoZWNrYm94ZXMsIHJhZGlvIGJ1dHRvbnMsCisvLyBhbmQgc2Nyb2xs
IGJhcnMuCisvLyBUaGUgbm9ybWFsIGltcGxlbWVudGF0aW9uIChuYXRpdmVfdGhlbWUpIHJlbmRl
cnMgdGhlIGNvbnRyb2xzIHVzaW5nIGVpdGhlcgorLy8gdGhlIFVYVGhlbWUgdGhlbWluZyBlbmdp
bmUgcHJlc2VudCBpbiBYUCwgVmlzdGEsIGFuZCBXaW4gNywgb3IgdGhlICJjbGFzc2ljIgorLy8g
dGhlbWUgdXNlZCBpZiB0aGF0IHRoZW1lIGlzIHNlbGVjdGVkIGluIHRoZSBEZXNrdG9wIHNldHRp
bmdzLgorLy8gVW5mb3J0dW5hdGVseSwgYm90aCBvZiB0aGVzZSB0aGVtZXMgcmVuZGVyIGNvbnRy
b2xzIGRpZmZlcmVudGx5IG9uIHRoZQorLy8gZGlmZmVyZW50IHZlcnNpb25zIG9mIFdpbmRvd3Mu
CisvLworLy8gSW4gb3JkZXIgdG8gZW5zdXJlIG1heGltdW0gY29uc2lzdGVuY3kgb2YgYmFzZWxp
bmVzIGFjcm9zcyB0aGUgZGlmZmVyZW50CisvLyBXaW5kb3dzIHZlcnNpb25zLCB3ZSBwcm92aWRl
IGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIGZvciBEUlQgaGVyZQorLy8gaW5zdGVhZC4gVGhlc2Ug
Y29udHJvbHMgYXJlIGFjdHVhbGx5IHBsYXRmb3JtLWluZGVwZW5kZW50ICh0aGV5J3JlIHJlbmRl
cmVkCisvLyB1c2luZyBTa2lhKSBhbmQgY291bGQgYmUgdXNlZCBvbiBMaW51eCBhbmQgdGhlIE1h
YyBhcyB3ZWxsLCBzaG91bGQgd2UKKy8vIGNob29zZSB0byBkbyBzbyBhdCBzb21lIHBvaW50Lgor
Ly8KKworI2lmbmRlZiBXZWJUZXN0VGhlbWVFbmdpbmVXaW5faAorI2RlZmluZSBXZWJUZXN0VGhl
bWVFbmdpbmVXaW5faAorCisjaW5jbHVkZSA8cHVibGljL3dpbi9XZWJUaGVtZUVuZ2luZS5oPgor
CituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIFdlYlRlc3RUaGVtZUVuZ2luZVdp
biA6IHB1YmxpYyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lIHsKK3B1YmxpYzoKKyAgICBXZWJUZXN0
VGhlbWVFbmdpbmVXaW4oKSB7IH0KKworICAgIC8vIFdlYlRoZW1lRW5naW5lIG1ldGhvZHM6Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyos
IGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdl
YktpdDo6V2ViUmVjdCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50TWVudUxpc3QoCisgICAg
ICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNT
dGF0ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXJBcnJvdygKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQg
c3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYp
OworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIoCisgICAgICAgIFdlYktp
dDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAg
ICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXJUcmFjaygKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50
IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3Qm
LCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGFsaWduUmVjdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRTcGluQnV0dG9uKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBp
bnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVj
dCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50VGV4dEZpZWxkKAorICAgICAgICBXZWJLaXQ6
OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAg
ICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYsIFdlYktpdDo6V2ViQ29sb3IsIGJvb2wgZmlsbENv
bnRlbnRBcmVhLAorICAgICAgICBib29sIGRyYXdFZGdlcyk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUcmFja2JhcigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50
IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3Qm
KTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludFByb2dyZXNzQmFyKAorICAgICAgICBXZWJLaXQ6
OldlYkNhbnZhcyosIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgYmFyUmVjdCwKKyAgICAgICAgY29u
c3QgV2ViS2l0OjpXZWJSZWN0JiB2YWx1ZVJlY3QsCisgICAgICAgIGJvb2wgZGV0ZXJtaW5hdGUs
IGRvdWJsZSB0aW1lKTsKKworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTaXplIGdldFNpemUoaW50
IHBhcnQpOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViVGVzdFRoZW1lRW5naW5lV2luX2gKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCmluZGV4IDRlMjEwMzE3
MTRlMzkwOGIzYmUzYTYyNjhhMjNmYTZmNzg2NmJlMDUuLjljMjRhNThkNDYyNDQ5NTIxOGVkYjJj
M2M3YWFjNWVlNzMyNGRjZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmNwcApAQCAtMTQwLDYgKzE0MCwxMSBAQCB2b2lkIFRlc3RTaGVsbDo6aW5pdGlhbGl6
ZShNb2NrUGxhdGZvcm0qIHBsYXRmb3JtU3VwcG9ydCkKICNpZiBFTkFCTEUoTElOS19QUkVSRU5E
RVIpCiAgICAgbV9wcmVyZW5kZXJpbmdTdXBwb3J0ID0gYWRvcHRQdHIobmV3IE1vY2tXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0KCkpOwogI2VuZGlmCisjaWYgIWRlZmluZWQoVVNFX0RFRkFVTFRfUkVO
REVSX1RIRU1FKSAmJiAoT1MoV0lORE9XUykgfHwgT1MoTUFDX09TX1gpKQorICAgIC8vIFNldCB0
aGVtZSBlbmdpbmUuCisgICAgd2Via2l0X3N1cHBvcnQ6OlNldFRoZW1lRW5naW5lKG1fdGVzdElu
dGVyZmFjZXMtPnRoZW1lRW5naW5lKCkpOworI2VuZGlmCisKIAogICAgIFdURjo6aW5pdGlhbGl6
ZVRocmVhZGluZygpOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5o
CmluZGV4IDAyZGExZmMyZTk1ZWE2ODY1MTk1NTJlZjcwOGRjYzk1MzE4NDJmNDguLjZlOTg5MDNi
NmQ2MTE3MTYyZjFlMTM4MTMzZmUyYTQwNDg4NTFhMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIFdlYkRldlRvb2xz
QWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlRocmVhZDsKIGNsYXNzIFdl
YlZpZXc7CitjbGFzcyBXZWJUaGVtZUVuZ2luZTsKIGNsYXNzIFdlYlVSTDsKIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tCmluZGV4IGQ3OWE4Yzgz
NTY3Y2YxYTdkNWNhZjVkMDk4ZWYwYWQ0YzRhMTc1YzQuLjUzZWRlNTY2NjliMjg0MTgzOTM3NzU2
ODY2MDM3YWQwMDgwOGJmMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbE1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGxNYWMubW0KQEAgLTMxLDEyICszMSw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpbmNsdWRlICJUZXN0U2hlbGwuaCIKLSNpbmNsdWRlICJXZWJUaGVtZUVuZ2luZURSVE1hYy5o
IgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW1wb3J0IDxB
cHBLaXQvQXBwS2l0Lmg+CiAKLXN0YXRpYyBXZWJUaGVtZUVuZ2luZURSVE1hYyB0aGVtZUVuZ2lu
ZTsKLQogLy8gQSBjbGFzcyB0byBiZSB0aGUgdGFyZ2V0L3NlbGVjdG9yIG9mIHRoZSAid2F0Y2hk
b2ciIHRocmVhZCB0aGF0IGVuc3VyZXMKIC8vIHBhZ2VzIHRpbWVvdXQgaWYgdGhleSB0YWtlIHRv
byBsb25nIGFuZCB0ZWxscyB0aGUgdGVzdCBoYXJuZXNzIHZpYSBzdGRvdXQuCiBAaW50ZXJmYWNl
IFdhdGNoRG9nVGFyZ2V0IDogTlNPYmplY3QgewpAQCAtMTI5LDcgKzEyNiw2IEBAIHZvaWQgVGVz
dFNoZWxsOjp3YWl0VGVzdEZpbmlzaGVkKCkKIAogdm9pZCBwbGF0Zm9ybUluaXQoaW50KiwgY2hh
cioqKikKIHsKLSAgICB3ZWJraXRfc3VwcG9ydDo6U2V0VGhlbWVFbmdpbmUoJnRoZW1lRW5naW5l
KTsKIH0KIAogdm9pZCBvcGVuU3RhcnR1cERpYWxvZygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcAppbmRleCAzYTQ2Y2ZiNzFiYmY2MTU5NzU3Yjk5
MDU5MjVmY2Y1NTgwMGE1ZTRmLi4yNTE2NDFlZDNlMjBjYmRmNmM5ZTBlYjM5MjA1OWQyNTg0YmRk
ZGUwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxX
aW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdpbi5j
cHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0
U2hlbGwuaCIKIAotI2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJUV2luLmgiCiAjaW5jbHVkZSAi
d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKICNpbmNsdWRlIDxmY250bC5oPgogI2lu
Y2x1ZGUgPGlvLmg+CkBAIC00OCwxMSArNDcsNiBAQAogI2RlZmluZSBOT05DTElFTlRNRVRSSUNT
X1NJWkVfUFJFX1ZJU1RBIFwKICAgICBTSVpFT0ZfU1RSVUNUX1dJVEhfU1BFQ0lGSUVEX0xBU1Rf
TUVNQkVSKE5PTkNMSUVOVE1FVFJJQ1MsIGxmTWVzc2FnZUZvbnQpCiAKLSNpZm5kZWYgVVNFX0RF
RkFVTFRfUkVOREVSX1RIRU1FCi0vLyBUaGVtZSBlbmdpbmUKLXN0YXRpYyBXZWJUaGVtZUVuZ2lu
ZURSVFdpbiB0aGVtZUVuZ2luZTsKLSNlbmRpZgotCiAvLyBUaHJlYWQgbWFpbiB0byBydW4gZm9y
IHRoZSB0aHJlYWQgd2hpY2gganVzdCB0ZXN0cyBmb3IgdGltZW91dC4KIHVuc2lnbmVkIGludCBf
X3N0ZGNhbGwgd2F0Y2hEb2dUaHJlYWQodm9pZCogYXJnKQogewpAQCAtMTIwLDExICsxMTQsNiBA
QCB2b2lkIHBsYXRmb3JtSW5pdChpbnQqLCBjaGFyKioqKQogICAgIF9zZXRtb2RlKF9maWxlbm8o
c3Rkb3V0KSwgX09fQklOQVJZKTsKICAgICBfc2V0bW9kZShfZmlsZW5vKHN0ZGVyciksIF9PX0JJ
TkFSWSk7CiAKLSNpZm5kZWYgVVNFX0RFRkFVTFRfUkVOREVSX1RIRU1FCi0gICAgLy8gU2V0IHRo
ZW1lIGVuZ2luZS4KLSAgICB3ZWJraXRfc3VwcG9ydDo6U2V0VGhlbWVFbmdpbmUoJnRoZW1lRW5n
aW5lKTsKLSNlbmRpZgotCiAgICAgLy8gTG9hZCBBaGVtIGZvbnQuCiAgICAgLy8gQUhFTV9fX18u
VFRGIGlzIGNvcGllZCB0byB0aGUgZGlyZWN0b3J5IG9mIER1bXBSZW5kZXJUcmVlLmV4ZSBieSBX
ZWJLaXQuZ3lwLgogICAgIFdDSEFSIHBhdGhbX01BWF9QQVRIXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjMTQzMWQ4NGI1NDY3MGQyYzlkNjllMDIwM2YxMDk2
Mjc3MTg1MTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw1MjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEg
c2ltcGxlIGdlbmVyaWMgdmVyc2lvbiBvZiB0aGUgV2ViVGhlbWVFbmdpbmUsCi0vLyB3aGljaCBp
cyB1c2VkIHRvIGRyYXcgYWxsIHRoZSBuYXRpdmUgY29udHJvbHMgb24gYSB3ZWIgcGFnZS4gV2Ug
dXNlIHRoaXMKLS8vIGZpbGUgd2hlbiBydW5uaW5nIGluIGxheW91dCB0ZXN0IG1vZGUgaW4gb3Jk
ZXIgdG8gcmVtb3ZlIGFueQotLy8gcGxhdGZvcm0tc3BlY2lmaWMgcmVuZGVyaW5nIGRpZmZlcmVu
Y2VzIGR1ZSB0byB0aGVtZXMsIGNvbG9ycywgZXRjLgotLy8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYlRoZW1lQ29udHJvbERSVFdpbi5oIgotCi0jaW5jbHVkZSAic2tpYS9l
eHQvc2tpYV91dGlsc193aW4uaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUv
Y29yZS9Ta0NhbnZhcy5oIgotI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3Jl
L1NrUGFpbnQuaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1Bh
dGguaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIK
LQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi11
c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1zdGF0aWMgY29uc3QgU2tDb2xvciBlZGdlQ29sb3IgICAg
ID0gU0tfQ29sb3JCTEFDSzsKLXN0YXRpYyBjb25zdCBTa0NvbG9yIHJlYWRPbmx5Q29sb3IgPSBT
a0NvbG9yU2V0UkdCKDB4ZTksIDB4YzIsIDB4YTYpOwotc3RhdGljIGNvbnN0IFNrQ29sb3IgZmdD
b2xvciAgICAgICA9IFNLX0NvbG9yQkxBQ0s7Ci1zdGF0aWMgY29uc3QgU2tDb2xvciBiZ0NvbG9y
c1tdICAgID0gewotICAgIFNLX0NvbG9yQkxBQ0ssICAgICAgICAgICAgICAgICAgIC8vIFVua25v
d24KLSAgICBTa0NvbG9yU2V0UkdCKDB4YzksIDB4YzksIDB4YzkpLCAvLyBEaXNhYmxlZAotICAg
IFNrQ29sb3JTZXRSR0IoMHhmMywgMHhlMCwgMHhkMCksIC8vIFJlYWRvbmx5Ci0gICAgU2tDb2xv
clNldFJHQigweDg5LCAweGM0LCAweGZmKSwgLy8gTm9ybWFsCi0gICAgU2tDb2xvclNldFJHQigw
eDQzLCAweGY5LCAweGZmKSwgLy8gSG90Ci0gICAgU2tDb2xvclNldFJHQigweDIwLCAweGY2LCAw
eGNjKSwgLy8gRm9jdXNlZAotICAgIFNrQ29sb3JTZXRSR0IoMHgwMCwgMHhmMywgMHhhYyksIC8v
IEhvdmVyCi0gICAgU2tDb2xvclNldFJHQigweGE5LCAweGZmLCAweDEyKSwgLy8gUHJlc3NlZAot
ICAgIFNrQ29sb3JTZXRSR0IoMHhjYywgMHhjYywgMHhjYykgIC8vIEluZGV0ZXJtaW5hdGUKLX07
Ci0KLXN0YXRpYyBTa0lSZWN0IHZhbGlkYXRlKGNvbnN0IFNrSVJlY3QmIHJlY3QsIFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSkKLXsKLSAgICBzd2l0Y2ggKGN0eXBlKSB7Ci0gICAg
Y2FzZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU6Ci0gICAgY2FzZSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRCb3hUeXBlOgotICAgIGNhc2UgV2ViVGhlbWVD
b250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU6Ci0gICAgY2FzZSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU6IHsKLSAgICAgICAgU2tJUmVjdCByZXR2YWwgPSBy
ZWN0OwotCi0gICAgICAgIC8vIFRoZSBtYXhpbXVtIHdpZHRoIGFuZCBoZWlnaHQgaXMgMTMuCi0g
ICAgICAgIC8vIENlbnRlciB0aGUgc3F1YXJlIGluIHRoZSBwYXNzZWQgcmVjdGFuZ2xlLgotICAg
ICAgICBjb25zdCBpbnQgbWF4Q29udHJvbFNpemUgPSAxMzsKLSAgICAgICAgaW50IGNvbnRyb2xT
aXplID0gc3RkOjptaW4ocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICAgICAgY29u
dHJvbFNpemUgPSBzdGQ6Om1pbihjb250cm9sU2l6ZSwgbWF4Q29udHJvbFNpemUpOwotCi0gICAg
ICAgIHJldHZhbC5mTGVmdCAgID0gcmVjdC5mTGVmdCArIChyZWN0LndpZHRoKCkgLyAyKSAtIChj
b250cm9sU2l6ZSAvIDIpOwotICAgICAgICByZXR2YWwuZlJpZ2h0ICA9IHJldHZhbC5mTGVmdCAr
IGNvbnRyb2xTaXplIC0gMTsKLSAgICAgICAgcmV0dmFsLmZUb3AgICAgPSByZWN0LmZUb3AgKyAo
cmVjdC5oZWlnaHQoKSAvIDIpIC0gKGNvbnRyb2xTaXplIC8gMik7Ci0gICAgICAgIHJldHZhbC5m
Qm90dG9tID0gcmV0dmFsLmZUb3AgKyBjb250cm9sU2l6ZSAtIDE7Ci0KLSAgICAgICAgcmV0dXJu
IHJldHZhbDsKLSAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gcmVjdDsKLSAg
ICB9Ci19Ci0KLS8vIFdlYlRoZW1lQ29udHJvbERSVFdpbgotCi1XZWJUaGVtZUNvbnRyb2xEUlRX
aW46OldlYlRoZW1lQ29udHJvbERSVFdpbihTa0NhbnZhcyogY2FudmFzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2tJUmVjdCYgaXJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlIGN0eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgY3N0YXRl
KQotICAgIDogbV9jYW52YXMoY2FudmFzKQotICAgICwgbV9pcmVjdCh2YWxpZGF0ZShpcmVjdCwg
Y3R5cGUpKQotICAgICwgbV90eXBlKGN0eXBlKQotICAgICwgbV9zdGF0ZShjc3RhdGUpCi0gICAg
LCBtX2xlZnQobV9pcmVjdC5mTGVmdCkKLSAgICAsIG1fcmlnaHQobV9pcmVjdC5mUmlnaHQpCi0g
ICAgLCBtX3RvcChtX2lyZWN0LmZUb3ApCi0gICAgLCBtX2JvdHRvbShtX2lyZWN0LmZCb3R0b20p
Ci0gICAgLCBtX2hlaWdodChtX2lyZWN0LmhlaWdodCgpKQotICAgICwgbV93aWR0aChtX2lyZWN0
LndpZHRoKCkpCi0gICAgLCBtX2VkZ2VDb2xvcihlZGdlQ29sb3IpCi0gICAgLCBtX2JnQ29sb3Io
YmdDb2xvcnNbY3N0YXRlXSkKLSAgICAsIG1fZmdDb2xvcihmZ0NvbG9yKQotewotfQotCi1XZWJU
aGVtZUNvbnRyb2xEUlRXaW46On5XZWJUaGVtZUNvbnRyb2xEUlRXaW4oKQotewotfQotCi12b2lk
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Ym94KGNvbnN0IFNrSVJlY3QmIHJlY3QsIFNrQ29sb3Ig
ZmlsbENvbG9yKQotewotICAgIFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICBwYWludC5zZXRTdHlsZShT
a1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgcGFpbnQuc2V0Q29sb3IoZmlsbENvbG9yKTsKLSAg
ICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKLQotICAgIHBhaW50LnNldENvbG9y
KG1fZWRnZUNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxl
KTsKLSAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJlY3QsIHBhaW50KTsKLX0KLQotdm9pZCBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OmxpbmUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBT
a0NvbG9yIGNvbG9yKQotewotICAgIFNrUGFpbnQgcGFpbnQ7Ci0gICAgcGFpbnQuc2V0Q29sb3Io
Y29sb3IpOwotICAgIG1fY2FudmFzLT5kcmF3TGluZShTa0ludFRvU2NhbGFyKHgwKSwgU2tJbnRU
b1NjYWxhcih5MCksCi0gICAgICAgICAgICAgICAgICAgICAgIFNrSW50VG9TY2FsYXIoeDEpLCBT
a0ludFRvU2NhbGFyKHkxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgcGFpbnQpOwotfQotCi12
b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6dHJpYW5nbGUoaW50IHgwLCBpbnQgeTAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgxLCBpbnQgeTEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgyLCBpbnQgeTIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBjb2xvcikKLXsKLSAgICBTa1BhdGgg
cGF0aDsKLSAgICBTa1BhaW50IHBhaW50OwotCi0gICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwot
ICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBwYXRoLmluY1Jl
c2VydmUoNCk7Ci0gICAgcGF0aC5tb3ZlVG8oU2tJbnRUb1NjYWxhcih4MCksIFNrSW50VG9TY2Fs
YXIoeTApKTsKLSAgICBwYXRoLmxpbmVUbyhTa0ludFRvU2NhbGFyKHgxKSwgU2tJbnRUb1NjYWxh
cih5MSkpOwotICAgIHBhdGgubGluZVRvKFNrSW50VG9TY2FsYXIoeDIpLCBTa0ludFRvU2NhbGFy
KHkyKSk7Ci0gICAgcGF0aC5jbG9zZSgpOwotICAgIG1fY2FudmFzLT5kcmF3UGF0aChwYXRoLCBw
YWludCk7Ci0KLSAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgcGFpbnQuc2V0
U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdQYXRoKHBh
dGgsIHBhaW50KTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OnJvdW5kUmVjdChT
a0NvbG9yIGNvbG9yKQotewotICAgIFNrUmVjdCByZWN0OwotICAgIFNrU2NhbGFyIHJhZGl1cyA9
IFNrSW50VG9TY2FsYXIoNSk7Ci0gICAgU2tQYWludCBwYWludDsKLQotICAgIHJlY3Quc2V0KG1f
aXJlY3QpOwotICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShT
a1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdSb3VuZFJlY3QocmVjdCwg
cmFkaXVzLCByYWRpdXMsIHBhaW50KTsKLQotICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9y
KTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKLSAgICBtX2Nh
bnZhcy0+ZHJhd1JvdW5kUmVjdChyZWN0LCByYWRpdXMsIHJhZGl1cywgcGFpbnQpOwotfQotCi12
b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6b3ZhbChTa0NvbG9yIGNvbG9yKQotewotICAgIFNr
UmVjdCByZWN0OwotICAgIFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICByZWN0LnNldChtX2lyZWN0KTsK
LSAgICBwYWludC5zZXRDb2xvcihjb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6
a0ZpbGxfU3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3T3ZhbChyZWN0LCBwYWludCk7Ci0KLSAg
ICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWlu
dDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdPdmFsKHJlY3QsIHBhaW50KTsK
LX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmNpcmNsZShTa1NjYWxhciByYWRpdXMs
IFNrQ29sb3IgY29sb3IpCi17Ci0gICAgU2tTY2FsYXIgY3kgPSBTa0ludFRvU2NhbGFyKG1fdG9w
ICArIG1faGVpZ2h0IC8gMik7Ci0gICAgU2tTY2FsYXIgY3ggPSBTa0ludFRvU2NhbGFyKG1fbGVm
dCArIG1fd2lkdGggLyAyKTsKLSAgICBTa1BhaW50IHBhaW50OwotCi0gICAgcGFpbnQuc2V0Q29s
b3IoY29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAg
ICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFpbnQpOwotCi0gICAgcGFp
bnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtT
dHJva2VfU3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3Q2lyY2xlKGN4LCBjeSwgcmFkaXVzLCBw
YWludCk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpuZXN0ZWRCb3hlcyhpbnQg
aW5kZW50TGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5kZW50VG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBp
bmRlbnRSaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5kZW50Qm90dG9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNr
Q29sb3Igb3V0ZXJDb2xvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTa0NvbG9yIGlubmVyQ29sb3IpCi17Ci0gICAgU2tJUmVjdCBsaXJlY3Q7Ci0gICAgYm94KG1f
aXJlY3QsIG91dGVyQ29sb3IpOwotICAgIGxpcmVjdC5zZXQobV9pcmVjdC5mTGVmdCArIGluZGVu
dExlZnQsCi0gICAgICAgICAgICAgICBtX2lyZWN0LmZUb3AgKyBpbmRlbnRUb3AsCi0gICAgICAg
ICAgICAgICBtX2lyZWN0LmZSaWdodCAtIGluZGVudFJpZ2h0LAotICAgICAgICAgICAgICAgbV9p
cmVjdC5mQm90dG9tIC0gaW5kZW50Qm90dG9tKTsKLSAgICBib3gobGlyZWN0LCBpbm5lckNvbG9y
KTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Om1hcmtTdGF0ZSgpCi17Ci0gICAg
Ly8gVGhlIGhvcml6b250YWwgbGluZXMgaW4gYSByZWFkIG9ubHkgY29udHJvbCBhcmUgc3BhY2Vk
IGJ5IHRoaXMgYW1vdW50LgotICAgIGNvbnN0IGludCByZWFkT25seUxpbmVPZmZzZXQgPSA1Owot
Ci0gICAgLy8gVGhlIGxlbmd0aCBvZiBhIHRyaWFuZ2xlIHNpZGUgZm9yIHRoZSBjb3JuZXIgbWFy
a3MuCi0gICAgY29uc3QgaW50IHRyaWFuZ2xlU2l6ZSA9IDU7Ci0KLSAgICBzd2l0Y2ggKG1fc3Rh
dGUpIHsKLSAgICBjYXNlIFVua25vd25TdGF0ZToKLSAgICBjYXNlIERpc2FibGVkU3RhdGU6Ci0g
ICAgY2FzZSBOb3JtYWxTdGF0ZToKLSAgICBjYXNlIEluZGV0ZXJtaW5hdGVTdGF0ZToKLSAgICAg
ICAgLy8gRG9uJ3QgdmlzdWFsbHkgbWFyayB0aGVzZSBzdGF0ZXMgKGNvbG9yIGlzIGVub3VnaCku
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhZE9ubHlTdGF0ZToKLSAgICAgICAgLy8gRHJh
d2luZyBsaW5lcyBhY3Jvc3MgdGhlIGNvbnRyb2wuCi0gICAgICAgIGZvciAoaW50IGkgPSBtX3Rv
cCArIHJlYWRPbmx5TGluZU9mZnNldDsgaSA8IG1fYm90dG9tOyBpICs9IHJlYWRPbmx5TGluZU9m
ZnNldCkKLSAgICAgICAgICAgIGxpbmUobV9sZWZ0ICsgMSwgaSwgbV9yaWdodCAtIDEsIGksIHJl
YWRPbmx5Q29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgSG90U3RhdGU6Ci0gICAg
ICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGNv
bnRyb2wuCi0gICAgICAgIHRyaWFuZ2xlKG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fdG9wLAot
ICAgICAgICAgICAgICAgICBtX2xlZnQgKyB0cmlhbmdsZVNpemUsICBtX3RvcCwKLSAgICAgICAg
ICAgICAgICAgbV9sZWZ0LCAgICAgICAgICAgICAgICAgbV90b3AgKyB0cmlhbmdsZVNpemUsICAg
IG1fZWRnZUNvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvdmVyU3RhdGU6Ci0g
ICAgICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgdXBwZXIgcmlnaHQgY29ybmVyIG9mIHRo
ZSBjb250cm9sLgotICAgICAgICB0cmlhbmdsZShtX3JpZ2h0LCAgICAgICAgICAgICAgICBtX3Rv
cCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCwgICAgICAgICAgICAgICAgbV90b3AgKyB0cmlh
bmdsZVNpemUsCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQgLSB0cmlhbmdsZVNpemUsIG1fdG9w
LCAgICAgICAgICAgICAgICAgICBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBGb2N1c2VkU3RhdGU6Ci0gICAgICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgYm90
dG9tIHJpZ2h0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KLSAgICAgICAgdHJpYW5nbGUobV9yaWdo
dCwgICAgICAgICAgICAgICAgbV9ib3R0b20sCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQgLSB0
cmlhbmdsZVNpemUsIG1fYm90dG9tLAotICAgICAgICAgICAgICAgICBtX3JpZ2h0LCAgICAgICAg
ICAgICAgICBtX2JvdHRvbSAtIHRyaWFuZ2xlU2l6ZSwgbV9lZGdlQ29sb3IpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgUHJlc3NlZFN0YXRlOgotICAgICAgICAvLyBEcmF3IGEgdHJpYW5n
bGUgaW4gdGhlIGJvdHRvbSBsZWZ0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KLSAgICAgICAgdHJp
YW5nbGUobV9sZWZ0LCAgICAgICAgICAgICAgICAgbV9ib3R0b20sCi0gICAgICAgICAgICAgICAg
IG1fbGVmdCwgICAgICAgICAgICAgICAgIG1fYm90dG9tIC0gdHJpYW5nbGVTaXplLAotICAgICAg
ICAgICAgICAgICBtX2xlZnQgKyB0cmlhbmdsZVNpemUsICBtX2JvdHRvbSwgICAgICAgICAgICAg
ICAgbV9lZGdlQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBDUkFTSCgpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpkcmF3KCkKLXsKLSAgICBp
bnQgaGFsZldpZHRoID0gbV93aWR0aCAvIDI7Ci0gICAgaW50IGhhbGZIZWlnaHQgPSBtX2hlaWdo
dCAvIDI7Ci0gICAgaW50IHF1YXJ0ZXJXaWR0aCA9IG1fd2lkdGggLyA0OwotICAgIGludCBxdWFy
dGVySGVpZ2h0ID0gbV9oZWlnaHQgLyA0OwotCi0gICAgLy8gSW5kZW50IGFtb3VudHMgZm9yIHRo
ZSBjaGVjayBpbiBhIGNoZWNrYm94IG9yIHJhZGlvIGJ1dHRvbi4KLSAgICBjb25zdCBpbnQgY2hl
Y2tJbmRlbnQgPSAzOwotCi0gICAgLy8gSW5kZW50IGFtb3VudHMgZm9yIHNob3J0IGFuZCBsb25n
IHNpZGVzIG9mIHRoZSBzY3JvbGxiYXIgbm90Y2hlcy4KLSAgICBjb25zdCBpbnQgbm90Y2hMb25n
T2Zmc2V0ID0gMTsKLSAgICBjb25zdCBpbnQgbm90Y2hTaG9ydE9mZnNldCA9IDQ7Ci0gICAgY29u
c3QgaW50IG5vT2Zmc2V0ID0gMDsKLQotICAgIC8vIEluZGVudCBhbW91bnRzIGZvciB0aGUgc2hv
cnQgYW5kIGxvbmcgc2lkZXMgb2YgYSBzY3JvbGwgdGh1bWIgYm94LgotICAgIGNvbnN0IGludCB0
aHVtYkxvbmdJbmRlbnQgPSAwOwotICAgIGNvbnN0IGludCB0aHVtYlNob3J0SW5kZW50ID0gMjsK
LQotICAgIC8vIEluZGVudHMgZm9yIHRoZSBjcm9zc2hhdGNoIG9uIGEgc2Nyb2xsIGdyaXAuCi0g
ICAgY29uc3QgaW50IGdyaXBMb25nSW5kZW50ID0gMzsKLSAgICBjb25zdCBpbnQgZ3JpcFNob3J0
SW5kZW50ID0gNTsKLQotICAgIC8vIEluZGVudHMgZm9yIHRoZSB0aGUgc2xpZGVyIHRyYWNrLgot
ICAgIGNvbnN0IGludCBzbGlkZXJJbmRlbnQgPSAyOwotCi0gICAgc3dpdGNoIChtX3R5cGUpIHsK
LSAgICBjYXNlIFVua25vd25UeXBlOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgQ1JBU0goKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFRleHRGaWVsZFR5cGU6
Ci0gICAgICAgIC8vIFdlIHJlbmRlciB0aGlzIGJ5IGhhbmQgb3V0c2lkZSBvZiB0aGlzIGZ1bmN0
aW9uLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFB1c2hCdXR0b25UeXBlOgotICAgICAgICAvLyBwdXNo
IGJ1dHRvbnMgcmVuZGVyIGFzIGEgcm91bmRlZCByZWN0YW5nbGUKLSAgICAgICAgcm91bmRSZWN0
KG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBVbmNoZWNrZWRCb3hUeXBl
OgotICAgICAgICAvLyBVbmNoZWNrZWQgYm94ZXMgYXJlIHNpbXBseSBwbGFpbiBib3hlcy4KLSAg
ICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBDaGVja2VkQm94VHlwZToKLSAgICAgICAgbmVzdGVkQm94ZXMoY2hlY2tJbmRlbnQsIGNoZWNr
SW5kZW50LCBjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGU6Ci0g
ICAgICAgIC8vIEluZGV0ZXJtaW5hdGUgY2hlY2tib3ggaXMgYSBib3ggY29udGFpbmluZyAnLScu
Ci0gICAgICAgIG5lc3RlZEJveGVzKGNoZWNrSW5kZW50LCBoYWxmSGVpZ2h0LCBjaGVja0luZGVu
dCwgaGFsZkhlaWdodCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLQot
ICAgIGNhc2UgVW5jaGVja2VkUmFkaW9UeXBlOgotICAgICAgICBjaXJjbGUoU2tJbnRUb1NjYWxh
cihoYWxmSGVpZ2h0KSwgbV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENo
ZWNrZWRSYWRpb1R5cGU6Ci0gICAgICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWlnaHQp
LCBtX2JnQ29sb3IpOwotICAgICAgICBjaXJjbGUoU2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0IC0g
Y2hlY2tJbmRlbnQpLCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgSG9y
aXpvbnRhbFNjcm9sbFRyYWNrQmFja1R5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRo
IGEgbm90Y2ggYXQgdGhlIGxlZnQuCi0gICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZkhlaWdo
dCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAgICAgaW50IHNob3J0T2Zmc2V0ID0gbV93aWR0aCAt
IG5vdGNoU2hvcnRPZmZzZXQ7Ci0gICAgICAgIG5lc3RlZEJveGVzKG5vT2Zmc2V0LCBsb25nT2Zm
c2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbV9iZ0NvbG9yLCBtX2VkZ2VDb2xvcik7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRyYWNrRm9y
d2FyZFR5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIHJp
Z2h0LgotICAgICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmSGVpZ2h0IC0gbm90Y2hMb25nT2Zm
c2V0OwotICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX3dpZHRoIC0gbm90Y2hTaG9ydE9mZnNl
dDsKLSAgICAgICAgbmVzdGVkQm94ZXMoc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIG5vT2Zmc2V0
LCBsb25nT2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIGNhc2UgVmVydGljYWxTY3JvbGxUcmFja0JhY2tUeXBlOiB7Ci0gICAgICAgIC8v
IERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSB0b3AuCi0gICAgICAgIGludCBsb25nT2Zm
c2V0ICA9IGhhbGZXaWR0aCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAgICAgaW50IHNob3J0T2Zm
c2V0ID0gbV9oZWlnaHQgLSBub3RjaFNob3J0T2Zmc2V0OwotICAgICAgICBuZXN0ZWRCb3hlcyhs
b25nT2Zmc2V0LCBub09mZnNldCwgbG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIG1fYmdDb2xvciwg
bV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBWZXJ0aWNhbFNj
cm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90
Y2ggYXQgdGhlIGJvdHRvbS4KLSAgICAgICAgaW50IGxvbmdPZmZzZXQgID0gaGFsZldpZHRoIC0g
bm90Y2hMb25nT2Zmc2V0OwotICAgICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX2hlaWdodCAtIG5v
dGNoU2hvcnRPZmZzZXQ7Ci0gICAgICAgIG5lc3RlZEJveGVzKGxvbmdPZmZzZXQsIHNob3J0T2Zm
c2V0LCBsb25nT2Zmc2V0LCBub09mZnNldCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIEhvcml6b250YWxTY3JvbGxUaHVtYlR5cGU6Ci0g
ICAgICAgIC8vIERyYXcgYSBuYXJyb3dlciBib3ggb24gdG9wIG9mIHRoZSBvdXRzaWRlIGJveC4K
LSAgICAgICAgbmVzdGVkQm94ZXModGh1bWJMb25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50LCB0
aHVtYkxvbmdJbmRlbnQsIHRodW1iU2hvcnRJbmRlbnQsIG1fYmdDb2xvciwgbV9iZ0NvbG9yKTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlOgotICAg
ICAgICAvLyBEcmF3IGEgc2hvcnRlciBib3ggb24gdG9wIG9mIHRoZSBvdXRzaWRlIGJveC4KLSAg
ICAgICAgbmVzdGVkQm94ZXModGh1bWJTaG9ydEluZGVudCwgdGh1bWJMb25nSW5kZW50LCB0aHVt
YlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIG1fYmdDb2xvciwgbV9iZ0NvbG9yKTsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvcml6b250YWxTbGlkZXJUaHVtYlR5cGU6Ci0gICAg
Y2FzZSBWZXJ0aWNhbFNsaWRlclRodW1iVHlwZToKLSAgICAgICAgLy8gU2xpZGVyIHRodW1icyBh
cmUgb3ZhbHMuCi0gICAgICAgIG92YWwobV9iZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBjYXNlIEhvcml6b250YWxTY3JvbGxHcmlwVHlwZTogewotICAgICAgICAvLyBEcmF3IGEgaG9y
aXpvbnRhbCBjcm9zc2hhdGNoIGZvciB0aGUgZ3JpcC4KLSAgICAgICAgaW50IGxvbmdPZmZzZXQg
PSBoYWxmV2lkdGggLSBncmlwTG9uZ0luZGVudDsKLSAgICAgICAgbGluZShtX2xlZnQgICsgZ3Jp
cExvbmdJbmRlbnQsIG1fdG9wICAgICsgaGFsZkhlaWdodCwKLSAgICAgICAgICAgICBtX3JpZ2h0
IC0gZ3JpcExvbmdJbmRlbnQsIG1fdG9wICAgICsgaGFsZkhlaWdodCwgICAgICBtX2ZnQ29sb3Ip
OwotICAgICAgICBsaW5lKG1fbGVmdCAgKyBsb25nT2Zmc2V0LCAgICAgbV90b3AgICAgKyBncmlw
U2hvcnRJbmRlbnQsCi0gICAgICAgICAgICAgbV9sZWZ0ICArIGxvbmdPZmZzZXQsICAgICBtX2Jv
dHRvbSAtIGdyaXBTaG9ydEluZGVudCwgbV9mZ0NvbG9yKTsKLSAgICAgICAgbGluZShtX3JpZ2h0
IC0gbG9uZ09mZnNldCwgICAgIG1fdG9wICAgICsgZ3JpcFNob3J0SW5kZW50LAotICAgICAgICAg
ICAgIG1fcmlnaHQgLSBsb25nT2Zmc2V0LCAgICAgbV9ib3R0b20gLSBncmlwU2hvcnRJbmRlbnQs
IG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgVmVydGljYWxT
Y3JvbGxHcmlwVHlwZTogewotICAgICAgICAvLyBEcmF3IGEgdmVydGljYWwgY3Jvc3NoYXRjaCBm
b3IgdGhlIGdyaXAuCi0gICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIGdyaXBM
b25nSW5kZW50OwotICAgICAgICBsaW5lKG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgICAgIG1fdG9w
ICAgICsgZ3JpcExvbmdJbmRlbnQsCi0gICAgICAgICAgICAgbV9sZWZ0ICArIGhhbGZXaWR0aCwg
ICAgICAgbV9ib3R0b20gLSBncmlwTG9uZ0luZGVudCwgbV9mZ0NvbG9yKTsKLSAgICAgICAgbGlu
ZShtX2xlZnQgICsgZ3JpcFNob3J0SW5kZW50LCBtX3RvcCAgICArIGxvbmdPZmZzZXQsCi0gICAg
ICAgICAgICAgbV9yaWdodCAtIGdyaXBTaG9ydEluZGVudCwgbV90b3AgICAgKyBsb25nT2Zmc2V0
LCAgICAgbV9mZ0NvbG9yKTsKLSAgICAgICAgbGluZShtX2xlZnQgICsgZ3JpcFNob3J0SW5kZW50
LCBtX2JvdHRvbSAtIGxvbmdPZmZzZXQsCi0gICAgICAgICAgICAgbV9yaWdodCAtIGdyaXBTaG9y
dEluZGVudCwgbV9ib3R0b20gLSBsb25nT2Zmc2V0LCAgICAgbV9mZ0NvbG9yKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBMZWZ0QXJyb3dUeXBlOgotICAgICAgICAvLyBEcmF3
IGEgbGVmdCBhcnJvdyBpbnNpZGUgYSBib3guCi0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29s
b3IpOwotICAgICAgICB0cmlhbmdsZShtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCAgICAr
IHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAgICAgICAgIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgs
IG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwKLSAgICAgICAgICAgICAgICAgbV9sZWZ0ICArIHF1
YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBoYWxmSGVpZ2h0LCAgICBtX2ZnQ29sb3IpOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgUmlnaHRBcnJvd1R5cGU6Ci0gICAgICAgIC8vIERyYXcgYSBs
ZWZ0IGFycm93IGluc2lkZSBhIGJveC4KLSAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7
Ci0gICAgICAgIHRyaWFuZ2xlKG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgcXVh
cnRlckhlaWdodCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90
b3AgICAgKyBoYWxmSGVpZ2h0LAotICAgICAgICAgICAgICAgICBtX2xlZnQgICsgcXVhcnRlcldp
ZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFr
OwotCi0gICAgY2FzZSBVcEFycm93VHlwZToKLSAgICAgICAgLy8gRHJhdyBhbiB1cCBhcnJvdyBp
bnNpZGUgYSBib3guCi0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwotICAgICAgICB0
cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQs
Ci0gICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fdG9wICAgICsgcXVh
cnRlckhlaWdodCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV9i
b3R0b20gLSBxdWFydGVySGVpZ2h0LCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgRG93bkFycm93VHlwZToKLSAgICAgICAgLy8gRHJhdyBhIGRvd24gYXJyb3cgaW5zaWRl
IGEgYm94LgotICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgdHJpYW5n
bGUobV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAotICAg
ICAgICAgICAgICAgICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCAgICArIHF1YXJ0ZXJI
ZWlnaHQsCi0gICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fYm90dG9t
IC0gcXVhcnRlckhlaWdodCwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IEhvcml6b250YWxTbGlkZXJUcmFja1R5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIG5hcnJvdyBy
ZWN0IGZvciB0aGUgdHJhY2sgcGx1cyBib3ggaGF0Y2hlcyBvbiB0aGUgZW5kcy4KLSAgICAgICAg
U2tJUmVjdCBsaXJlY3Q7Ci0gICAgICAgIGxpcmVjdCA9IG1faXJlY3Q7Ci0gICAgICAgIGxpcmVj
dC5pbnNldChub09mZnNldCwgaGFsZkhlaWdodCAtIHNsaWRlckluZGVudCk7Ci0gICAgICAgIGJv
eChsaXJlY3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIGxpbmUobV9sZWZ0LCAgbV90b3AsIG1fbGVm
dCwgIG1fYm90dG9tLCBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGxpbmUobV9yaWdodCwgbV90b3As
IG1fcmlnaHQsIG1fYm90dG9tLCBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LQotICAgIGNhc2UgVmVydGljYWxTbGlkZXJUcmFja1R5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBh
IG5hcnJvdyByZWN0IGZvciB0aGUgdHJhY2sgcGx1cyBib3ggaGF0Y2hlcyBvbiB0aGUgZW5kcy4K
LSAgICAgICAgU2tJUmVjdCBsaXJlY3Q7Ci0gICAgICAgIGxpcmVjdCA9IG1faXJlY3Q7Ci0gICAg
ICAgIGxpcmVjdC5pbnNldChoYWxmV2lkdGggLSBzbGlkZXJJbmRlbnQsIG5vT2Zmc2V0KTsKLSAg
ICAgICAgYm94KGxpcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgbGluZShtX2xlZnQsIG1fdG9w
LCBtX3JpZ2h0LCBtX3RvcCwgbV9lZGdlQ29sb3IpOwotICAgICAgICBsaW5lKG1fbGVmdCwgbV9i
b3R0b20sIG1fcmlnaHQsIG1fYm90dG9tLCBtX2VkZ2VDb2xvcik7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIGNhc2UgRHJvcERvd25CdXR0b25UeXBlOgotICAgICAgICAvLyBEcmF3IGEg
Ym94IHdpdGggYSBiaWcgZG93biBhcnJvdyBvbiB0b3AuCi0gICAgICAgIGJveChtX2lyZWN0LCBt
X2JnQ29sb3IpOwotICAgICAgICB0cmlhbmdsZShtX2xlZnQgICsgcXVhcnRlcldpZHRoLCBtX3Rv
cCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AsCi0gICAg
ICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgIG1fYm90dG9tLCBtX2ZnQ29sb3Ip
OwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICBDUkFTSCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBt
YXJrU3RhdGUoKTsKLX0KLQotLy8gQmVjYXVzZSByZW5kZXJpbmcgYSB0ZXh0IGZpZWxkIGlzIGRl
cGVuZGVudCBvbiBpbnB1dAotLy8gcGFyYW1ldGVycyB0aGUgb3RoZXIgY29udHJvbHMgZG9uJ3Qg
aGF2ZSwgd2UgcmVuZGVyIGl0IGRpcmVjdGx5Ci0vLyByYXRoZXIgdGhhbiB0cnlpbmcgdG8gb3Zl
cmNvbXBsaWNhdGUgZHJhdygpIGZ1cnRoZXIuCi12b2lkIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
ZHJhd1RleHRGaWVsZChib29sIGRyYXdFZGdlcywgYm9vbCBmaWxsQ29udGVudEFyZWEsIFNrQ29s
b3IgY29sb3IpCi17Ci0gICAgU2tQYWludCBwYWludDsKLQotICAgIGlmIChmaWxsQ29udGVudEFy
ZWEpIHsKLSAgICAgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOwotICAgICAgICBwYWludC5zZXRT
dHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgICAgIG1fY2FudmFzLT5kcmF3SVJlY3Qo
bV9pcmVjdCwgcGFpbnQpOwotICAgIH0KLSAgICBpZiAoZHJhd0VkZ2VzKSB7Ci0gICAgICAgIHBh
aW50LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKLSAgICAgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWlu
dDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgICAgIG1fY2FudmFzLT5kcmF3SVJlY3QobV9pcmVjdCwg
cGFpbnQpOwotICAgIH0KLQotICAgIG1hcmtTdGF0ZSgpOwotfQotCi12b2lkIFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6ZHJhd1Byb2dyZXNzQmFyKGNvbnN0IFNrSVJlY3QmIGZpbGxSZWN0KQotewot
ICAgIFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICBwYWludC5zZXRDb2xvcihtX2JnQ29sb3IpOwotICAg
IHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJh
d0lSZWN0KG1faXJlY3QsIHBhaW50KTsKLQotICAgIC8vIEVtdWxhdGUgY2xpcHBpbmcKLSAgICBT
a0lSZWN0IHRvZmlsbDsKLSAgICB0b2ZpbGwuaW50ZXJzZWN0KG1faXJlY3QsIGZpbGxSZWN0KTsK
LSAgICBwYWludC5zZXRDb2xvcihtX2ZnQ29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFp
bnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHRvZmlsbCwgcGFpbnQp
OwotCi0gICAgbWFya1N0YXRlKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlRoZW1lQ29udHJvbERSVFdpbi5oIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVmNzMxYWIzOTYwODZmM2E5ZWRiMjY3NTA0ZTcwNGE2YzEwMTc4ZjIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmgKKysrIC9kZXYvbnVsbApAQCAt
MSwyMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLS8vIFdlYlRoZW1lQ29udHJvbERSVFdpbiBpbXBsZW1lbnRzIHRoZSBnZW5l
cmljIHJlbmRlcmluZyBvZiBjb250cm9scwotLy8gbmVlZGVkIGJ5IFdlYlRoZW1lRW5naW5lRFJU
V2luLiBTZWUgdGhlIGNvbW1lbnRzIGluIHRoYXQgY2xhc3MKLS8vIGhlYWRlciBmaWxlIGZvciB3
aHkgdGhpcyBjbGFzcyBpcyBuZWVkZWQgYW5kIHVzZWQuCi0vLwotLy8gVGhpcyBjbGFzcyBpbXBs
ZW1lbnRzIGEgZ2VuZXJpYyBzZXQgb2Ygd2lkZ2V0cyB1c2luZyBTa2lhLiBUaGUgd2lkZ2V0cwot
Ly8gYXJlIG9wdGltaXplZCBmb3IgdGVzdGFiaWxpdHksIG5vdCBhIHBsZWFzaW5nIGFwcGVhcmFu
Y2UuCi0vLwotCi0jaWZuZGVmIFdlYlRoZW1lQ29udHJvbERSVFdpbl9oCi0jZGVmaW5lIFdlYlRo
ZW1lQ29udHJvbERSVFdpbl9oCi0KLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUv
Y29yZS9Ta0NvbG9yLmgiCi0jaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUv
U2tSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLS8vIFNraWEgZm9yd2Fy
ZCBkZWNsYXJhdGlvbnMKLWNsYXNzIFNrQ2FudmFzOwotCi1jbGFzcyBXZWJUaGVtZUNvbnRyb2xE
UlRXaW4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlRoZW1lQ29udHJvbERSVFdpbik7
Ci1wdWJsaWM6Ci0gICAgLy8gVGhpcyBsaXN0IG9mIHN0YXRlcyBtb3N0bHkgbWlycm9ycyB0aGUg
bGlzdCBpbiBXZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAotICAgIC8vIGJ1dCBpcyBtYWlu
dGFpbmVkIHNlcGFyYXRlbHkgc2luY2UgdGhhdCBpc24ndCBwdWJsaWMgYW5kIGFsc28gdG8gbWlu
aW1pemUKLSAgICAvLyBkZXBlbmRlbmNpZXMuCi0gICAgLy8gTm90ZSB0aGF0IHRoZSBXZWJLaXQg
VGhlbWVUeXBlcyBzZWVtIHRvIGltcGx5IHRoYXQgYSBjb250cm9sIGNhbiBiZQotICAgIC8vIGlu
IG11bHRpcGxlIHN0YXRlcyBzaW11bHRhbmVvdXNseSBidXQgV2ViVGhlbWVFbmdpbmUgb25seSBh
bGxvd3MgZm9yCi0gICAgLy8gYSBzaW5nbGUgc3RhdGUgYXQgYSB0aW1lLgotICAgIC8vCi0gICAg
Ly8gU29tZSBkZWZpbml0aW9ucyBmb3IgdGhlIHZhcmlvdXMgc3RhdGVzOgotICAgIC8vICAgRGlz
YWJsZWQgLSBpbmRpY2F0ZXMgdGhhdCBhIGNvbnRyb2wgY2FuJ3QgYmUgbW9kaWZpZWQgb3Igc2Vs
ZWN0ZWQKLSAgICAvLyAgICAgICAgICAgICAgKGNvcnJlc3BvbmRzIHRvIEhUTUwgJ2Rpc2FibGVk
JyBhdHRyaWJ1dGUpCi0gICAgLy8gICBSZWFkT25seSAtIGluZGljYXRlcyB0aGF0IGEgY29udHJv
bCBjYW4ndCBiZSBtb2RpZmllZCBidXQgY2FuIGJlCi0gICAgLy8gICAgICAgICAgICAgIHNlbGVj
dGVkCi0gICAgLy8gICBOb3JtYWwgICAtIHRoZSBub3JtYWwgc3RhdGUgb2YgY29udHJvbCBvbiB0
aGUgcGFnZSB3aGVuIGl0IGlzbid0Ci0gICAgLy8gICAgICAgICAgICAgIGZvY3VzZWQgb3Igb3Ro
ZXJ3aXNlIGFjdGl2ZQotICAgIC8vICAgSG90ICAgICAgLSB3aGVuIHRoZSBtb3VzZSBpcyBob3Zl
cmluZyBvdmVyIGEgcGFydCBvZiB0aGUgY29udHJvbCwKLSAgICAvLyAgICAgICAgICAgICAgYWxs
IHRoZSBvdGhlciBwYXJ0cyBhcmUgY29uc2lkZXJlZCAiaG90IgotICAgIC8vICAgSG92ZXIgICAg
LSB3aGVuIHRoZSBtb3VzZSBpcyBkaXJlY3RseSBvdmVyIGEgY29udHJvbCAodGhlIENTUwotICAg
IC8vICAgICAgICAgICAgICAgOmhvdmVyIHBzZXVkby1jbGFzcykKLSAgICAvLyAgIEZvY3VzZWQg
IC0gd2hlbiB0aGUgY29udHJvbCBoYXMgdGhlIGtleWJvYXJkIGZvY3VzCi0gICAgLy8gICBQcmVz
c2VkICAtIHdoZW4gdGhlIGNvbnRyb2wgaXMgYmVpbmcgdHJpZ2dlcmVkIChieSBhIG1vdXNlZG93
biBvcgotICAgIC8vICAgICAgICAgICAgICBhIGtleSBldmVudCkuCi0gICAgLy8gICBJbmRldGVy
bWluYXRlIC0gd2hlbiBzZXQgdG8gaW5kZXRlcm1pbmF0ZSAob25seSBmb3IgcHJvZ3Jlc3MgYmFy
KQotICAgIGVudW0gU3RhdGUgewotICAgICAgICBVbmtub3duU3RhdGUgPSAwLAotICAgICAgICBE
aXNhYmxlZFN0YXRlLAotICAgICAgICBSZWFkT25seVN0YXRlLAotICAgICAgICBOb3JtYWxTdGF0
ZSwKLSAgICAgICAgSG90U3RhdGUsCi0gICAgICAgIEhvdmVyU3RhdGUsCi0gICAgICAgIEZvY3Vz
ZWRTdGF0ZSwKLSAgICAgICAgUHJlc3NlZFN0YXRlLAotICAgICAgICBJbmRldGVybWluYXRlU3Rh
dGUKLSAgICB9OwotCi0gICAgLy8gVGhpcyBsaXN0IG9mIHR5cGVzIG1vc3RseSBtaXJyb3JzIHRo
ZSBsaXN0IGluCi0gICAgLy8gV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmggYnV0IGlzIG1h
aW50YWluZWQKLSAgICAvLyBzZXBhcmF0ZWx5IHNpbmNlIHRoYXQgaXNuJ3QgcHVibGljIGFuZCBh
bHNvIHRvIG1pbmltaXplIGRlcGVuZGVuY2llcy4KLSAgICAvLwotICAgIC8vIE5vdGUgdGhhdCB3
aGF0IHRoZSB1c2VyIG1pZ2h0IHRoaW5rIG9mIGFzIGEgc2luZ2xlIGNvbnRyb2wgY2FuIGJlCi0g
ICAgLy8gbWFkZSB1cCBvZiBtdWx0aXBsZSBwYXJ0cy4gRm9yIGV4YW1wbGUsIGEgc2luZ2xlIHNj
cm9sbCBiYXIgY29udGFpbnMKLSAgICAvLyBzaXggY2xpY2thYmxlIHBhcnRzIC0gdHdvIGFycm93
cywgdGhlICJ0aHVtYiIgaW5kaWNhdGluZyB0aGUgY3VycmVudAotICAgIC8vIHBvc2l0aW9uIG9u
IHRoZSBiYXIsIHRoZSBvdGhlciB0d28gcGFydHMgb2YgdGhlIGJhciAoYmVmb3JlIGFuZCBhZnRl
cgotICAgIC8vIHRoZSB0aHVtYikgYW5kIHRoZSAiZ3JpcHBlciIgb24gdGhlIHRodW1iIGl0c2Vs
Zi4KLSAgICAvLwotICAgIGVudW0gVHlwZSB7Ci0gICAgICAgIFVua25vd25UeXBlID0gMCwKLSAg
ICAgICAgVGV4dEZpZWxkVHlwZSwKLSAgICAgICAgUHVzaEJ1dHRvblR5cGUsCi0gICAgICAgIFVu
Y2hlY2tlZEJveFR5cGUsCi0gICAgICAgIENoZWNrZWRCb3hUeXBlLAotICAgICAgICBJbmRldGVy
bWluYXRlQ2hlY2tib3hUeXBlLAotICAgICAgICBVbmNoZWNrZWRSYWRpb1R5cGUsCi0gICAgICAg
IENoZWNrZWRSYWRpb1R5cGUsCi0gICAgICAgIEhvcml6b250YWxTY3JvbGxUcmFja0JhY2tUeXBl
LAotICAgICAgICBIb3Jpem9udGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZSwKLSAgICAgICAgSG9y
aXpvbnRhbFNjcm9sbFRodW1iVHlwZSwKLSAgICAgICAgSG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBl
LAotICAgICAgICBWZXJ0aWNhbFNjcm9sbFRyYWNrQmFja1R5cGUsCi0gICAgICAgIFZlcnRpY2Fs
U2Nyb2xsVHJhY2tGb3J3YXJkVHlwZSwKLSAgICAgICAgVmVydGljYWxTY3JvbGxUaHVtYlR5cGUs
Ci0gICAgICAgIFZlcnRpY2FsU2Nyb2xsR3JpcFR5cGUsCi0gICAgICAgIExlZnRBcnJvd1R5cGUs
Ci0gICAgICAgIFJpZ2h0QXJyb3dUeXBlLAotICAgICAgICBVcEFycm93VHlwZSwKLSAgICAgICAg
RG93bkFycm93VHlwZSwKLSAgICAgICAgSG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZSwKLSAgICAg
ICAgSG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZSwKLSAgICAgICAgVmVydGljYWxTbGlkZXJUcmFj
a1R5cGUsCi0gICAgICAgIFZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlLAotICAgICAgICBEcm9wRG93
bkJ1dHRvblR5cGUsCi0gICAgICAgIFByb2dyZXNzQmFyVHlwZQotICAgIH07Ci0KLSAgICAvLyBD
b25zdHJ1Y3RzIGEgY29udHJvbCBvZiB0aGUgZ2l2ZW4gc2l6ZSwgdHlwZSBhbmQgc3RhdGUgdG8g
ZHJhdwotICAgIC8vIG9uIHRvIHRoZSBnaXZlbiBjYW52YXMuCi0gICAgV2ViVGhlbWVDb250cm9s
RFJUV2luKFNrQ2FudmFzKiwgY29uc3QgU2tJUmVjdCYsIFR5cGUsIFN0YXRlKTsKLSAgICB+V2Vi
VGhlbWVDb250cm9sRFJUV2luKCk7Ci0KLSAgICAvLyBEcmF3cyB0aGUgY29udHJvbC4KLSAgICB2
b2lkIGRyYXcoKTsKLQotICAgIC8vIFVzZSB0aGlzIGZvciBUZXh0RmllbGQgY29udHJvbHMgaW5z
dGVhZCwgYmVjYXVzZSB0aGUgbG9naWMKLSAgICAvLyBmb3IgZHJhd2luZyB0aGVtIGlzIGRlcGVu
ZGVudCBvbiB3aGF0IFdlYktpdCB0ZWxscyB1cyB0byBkby4KLSAgICAvLyBJZiBkcmF3RWRnZXMg
aXMgdHJ1ZSwgZHJhdyBhbiBlZGdlIGFyb3VuZCB0aGUgY29udHJvbC4gSWYKLSAgICAvLyBmaWxs
Q29udGVudEFyZWEgaXMgdHJ1ZSwgZmlsbCB0aGUgY29udGVudCBhcmVhIHdpdGggdGhlIGdpdmVu
IGNvbG9yLgotICAgIHZvaWQgZHJhd1RleHRGaWVsZChib29sIGRyYXdFZGdlcywgYm9vbCBmaWxs
Q29udGVudEFyZWEsIFNrQ29sb3IpOwotCi0gICAgLy8gVXNlIHRoaXMgZm9yIGRyYXdpbmcgUHJv
Z3Jlc3NCYXIgY29udHJvbHMgaW5zdGVhZCwgc2luY2Ugd2UKLSAgICAvLyBuZWVkIHRvIGtub3cg
dGhlIHJlY3QgdG8gZmlsbCBpbnNpZGUgdGhlIGJhci4KLSAgICB2b2lkIGRyYXdQcm9ncmVzc0Jh
cihjb25zdCBTa0lSZWN0JiBmaWxsUmVjdCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRHJhd3MgYSBi
b3ggb2Ygc2l6ZSBzcGVjaWZpZWQgYnkgaXJlY3QsIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xv
ci4KLSAgICAvLyBUaGUgYm94IHdpbGwgaGF2ZSBhIGJvcmRlciBkcmF3biBpbiB0aGUgZGVmYXVs
dCBlZGdlIGNvbG9yLgotICAgIHZvaWQgYm94KGNvbnN0IFNrSVJlY3QmIGlyZWN0LCBTa0NvbG9y
KTsKLQotCi0gICAgLy8gRHJhd3MgYSB0cmlhbmdsZSBvZiBzaXplIHNwZWNpZmllZCBieSB0aGUg
dGhyZWUgcGFpcnMgb2YgY29vcmRpbmF0ZXMsCi0gICAgLy8gZmlsbGVkIHdpdGggdGhlIGdpdmVu
IGNvbG9yLiBUaGUgYm94IHdpbGwgaGF2ZSBhbiBlZGdlIGRyYXduIGluIHRoZQotICAgIC8vIGRl
ZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lkIHRyaWFuZ2xlKGludCB4MCwgaW50IHkwLCBpbnQg
eDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsIFNrQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYSBy
ZWN0YW5nbGUgdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wgd2l0aCByb3VuZGVkIGNvcm5lcnMsIGZp
bGxlZAotICAgIC8vIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvciAoYW5kIHdpdGggYSBib3JkZXIg
aW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvcikuCi0gICAgdm9pZCByb3VuZFJlY3QoU2tDb2xvcik7
Ci0KLSAgICAvLyBEcmF3cyBhbiBvdmFsIHRoZSBzaXplIG9mIHRoZSBjb250cm9sLCBmaWxsZWQg
d2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yCi0gICAgLy8gYW5kIHdpdGggYSBib3JkZXIgaW4gdGhl
IGRlZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lkIG92YWwoU2tDb2xvcik7Ci0KLSAgICAvLyBE
cmF3cyBhIGNpcmNsZSBjZW50ZXJlZCBpbiB0aGUgY29udHJvbCB3aXRoIHRoZSBzcGVjaWZpZWQg
cmFkaXVzLAotICAgIC8vIGZpbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgY29sb3IsIGFuZCB3aXRo
IGEgYm9yZGVyIGRyYXcgaW4gdGhlCi0gICAgLy8gZGVmYXVsdCBlZGdlIGNvbG9yLgotICAgIHZv
aWQgY2lyY2xlKFNrU2NhbGFyIHJhZGl1cywgU2tDb2xvcik7Ci0KLSAgICAvLyBEcmF3cyBhIGJv
eCB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhlIG91dGVyQ29sb3IgYW5k
Ci0gICAgLy8gd2l0aCBhIGJvcmRlciBpbiB0aGUgZGVmYXVsdCBlZGdlIGNvbG9yLCBhbmQgdGhl
biBkcmF3cyBhbm90aGVyIGJveAotICAgIC8vIGluZGVudGVkIG9uIGFsbCBmb3VyIHNpZGVzIGJ5
IHRoZSBzcGVjaWZpZWQgYW1vdW50cywgZmlsbGVkIHdpdGggdGhlCi0gICAgLy8gaW5uZXIgY29s
b3IgYW5kIHdpdGggYSBib3JkZXIgaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lk
IG5lc3RlZEJveGVzKGludCBpbmRlbnRMZWZ0LAotICAgICAgICAgICAgICAgICAgICAgaW50IGlu
ZGVudFRvcCwKLSAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRSaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgIGludCBpbmRlbnRCb3R0b20sCi0gICAgICAgICAgICAgICAgICAgICBTa0Nv
bG9yIG91dGVyQ29sb3IsCi0gICAgICAgICAgICAgICAgICAgICBTa0NvbG9yIGlubmVyQ29sb3Ip
OwotCi0gICAgLy8gRHJhd3MgYSBsaW5lIGJldHdlZW4gdGhlIHR3byBwb2ludHMgaW4gdGhlIGdp
dmVuIGNvbG9yLgotICAgIHZvaWQgbGluZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEs
IFNrQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYSBkaXN0aW5jdGl2ZSBtYXJrIG9uIHRoZSBjb250
cm9sIGZvciBlYWNoIHN0YXRlLCBzbyB0aGF0IHRoZQotICAgIC8vIHN0YXRlIG9mIHRoZSBjb250
cm9sIGNhbiBiZSBkZXRlcm1pbmVkIHdpdGhvdXQgbmVlZGluZyB0byBrbm93IHdoaWNoCi0gICAg
Ly8gY29sb3IgaXMgd2hpY2guCi0gICAgdm9pZCBtYXJrU3RhdGUoKTsKLQotICAgIFNrQ2FudmFz
KiBtX2NhbnZhczsKLSAgICBjb25zdCBTa0lSZWN0IG1faXJlY3Q7Ci0gICAgY29uc3QgVHlwZSBt
X3R5cGU7Ci0gICAgY29uc3QgU3RhdGUgbV9zdGF0ZTsKLSAgICBjb25zdCBTa0NvbG9yIG1fZWRn
ZUNvbG9yOwotICAgIGNvbnN0IFNrQ29sb3IgbV9iZ0NvbG9yOwotICAgIGNvbnN0IFNrQ29sb3Ig
bV9mZ0NvbG9yOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgY29udmVuaWVuY2UgYWNjZXNz
b3JzIGZvciBtX2lyZWN0LgotICAgIGNvbnN0IGludCBtX2xlZnQ7Ci0gICAgY29uc3QgaW50IG1f
cmlnaHQ7Ci0gICAgY29uc3QgaW50IG1fdG9wOwotICAgIGNvbnN0IGludCBtX2JvdHRvbTsKLSAg
ICBjb25zdCBpbnQgbV93aWR0aDsKLSAgICBjb25zdCBpbnQgbV9oZWlnaHQ7Ci19OwotCi0jZW5k
aWYgLy8gV2ViVGhlbWVDb250cm9sRFJUV2luX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxOTBmZTY2Yzk1MjdmMDFhNTQzMTA2Nzk1MmViZWYyOTQ5MDkxNGFkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLS8vIFRoaXMgaW1wbGVtZW50cyB0aGUgV2ViVGhlbWVFbmdpbmUgQVBJIGluIHN1Y2ggYSB3
YXkgdGhhdCB3ZSBtYXRjaCB0aGUgTWFjCi0vLyBwb3J0IHJlbmRlcmluZyBtb3JlIHRoYW4gdXN1
YWwgQ2hyb21pdW0gcGF0aCwgdGh1cyBhbGxvd2luZyB1cyB0byBzaGFyZQotLy8gbW9yZSBwaXhl
bCBiYXNlbGluZXMuCi0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVEUlRNYWNfaAotI2RlZmluZSBX
ZWJUaGVtZUVuZ2luZURSVE1hY19oCi0KLSNpbmNsdWRlIDxwdWJsaWMvbWFjL1dlYlRoZW1lRW5n
aW5lLmg+Ci0KLWNsYXNzIFdlYlRoZW1lRW5naW5lRFJUTWFjIDogcHVibGljIFdlYktpdDo6V2Vi
VGhlbWVFbmdpbmUgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRo
dW1iKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosCi0gICAgICAgIFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlN0YXRlLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAot
ICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmLAotICAgICAgICBjb25zdCBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZh
cyosCi0gICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlLAotICAgICAgICBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3Qm
LAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJik7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRodW1iKAotICAgICAg
ICBXZWJLaXQ6OldlYkNhbnZhcyosCi0gICAgICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0
YXRlLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTaXplLAotICAgICAgICBjb25z
dCBXZWJLaXQ6OldlYlJlY3QmLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlRoZW1lRW5naW5l
OjpTY3JvbGxiYXJJbmZvJik7Ci19OwotCi0jZW5kaWYgLy8gV2ViVGhlbWVFbmdpbmVEUlRNYWNf
aApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdp
bmVEUlRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2lu
ZURSVE1hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY2ZGJhY2E4MTI2N2M2
MzI2YWMxOTE5NGE2NDkzM2Q5ZDIxZGFiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVu
Z2luZURSVE1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIldl
YlRoZW1lRW5naW5lRFJUTWFjLmgiCi0KLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ2FudmFzLmg+Ci0j
aW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxz
X21hYy5oIgotI2ltcG9ydCA8QXBwS2l0L05TQWZmaW5lVHJhbnNmb3JtLmg+Ci0jaW1wb3J0IDxB
cHBLaXQvTlNHcmFwaGljc0NvbnRleHQuaD4KLSNpbXBvcnQgPEFwcEtpdC9OU1Njcm9sbGVyLmg+
Ci0jaW1wb3J0IDxBcHBLaXQvTlNXaW5kb3cuaD4KLSNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+
Ci0KLXVzaW5nIFdlYktpdDo6V2ViQ2FudmFzOwotdXNpbmcgV2ViS2l0OjpXZWJSZWN0OwotdXNp
bmcgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTsKLQotLy8gV2UgY2FuJ3QgZGlyZWN0bHkgdGVsbCB0
aGUgTlNTY3JvbGxlciB0byBkcmF3IGl0c2VsZiBhcyBhY3RpdmUgb3IgaW5hY3RpdmUsCi0vLyBp
bnN0ZWFkIHdlIGhhdmUgdG8gbWFrZSBpdCBhIGNoaWxkIG9mIGFuIChpbilhY3RpdmUgd2luZG93
LiBUaGlzIGNsYXNzIGxldHMKLS8vIHVzIGZha2UgdGhhdCBwYXJlbnQgd2luZG93LgotQGludGVy
ZmFjZSBGYWtlQWN0aXZlV2luZG93IDogTlNXaW5kb3cgewotQHByaXZhdGUKLSAgICBCT09MIGhh
c0FjdGl2ZUNvbnRyb2xzOwotfQotKyAoTlNXaW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRvdzsKLSsg
KE5TV2luZG93KilhbHdheXNJbmFjdGl2ZVdpbmRvdzsKLS0gKGlkKWluaXRXaXRoQWN0aXZlQ29u
dHJvbHM6KEJPT0wpX2hhc0FjdGl2ZUNvbnRyb2xzOwotLSAoQk9PTClfaGFzQWN0aXZlQ29udHJv
bHM7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBGYWtlQWN0aXZlV2luZG93Ci0KLXN0YXRpYyBO
U1dpbmRvdyogYWx3YXlzQWN0aXZlV2luZG93ID0gbmlsOwotc3RhdGljIE5TV2luZG93KiBhbHdh
eXNJbmFjdGl2ZVdpbmRvdyA9IG5pbDsKLQotKyAoTlNXaW5kb3cqKWFsd2F5c0FjdGl2ZVdpbmRv
dwotewotICAgIGlmIChhbHdheXNBY3RpdmVXaW5kb3cgPT0gbmlsKQotICAgICAgICBhbHdheXNB
Y3RpdmVXaW5kb3cgPSBbW3NlbGYgYWxsb2NdIGluaXRXaXRoQWN0aXZlQ29udHJvbHM6WUVTXTsK
LSAgICByZXR1cm4gYWx3YXlzQWN0aXZlV2luZG93OwotfQotCi0rIChOU1dpbmRvdyopYWx3YXlz
SW5hY3RpdmVXaW5kb3cKLXsKLSAgICBpZiAoYWx3YXlzSW5hY3RpdmVXaW5kb3cgPT0gbmlsKQot
ICAgICAgICBhbHdheXNJbmFjdGl2ZVdpbmRvdyA9IFtbc2VsZiBhbGxvY10gaW5pdFdpdGhBY3Rp
dmVDb250cm9sczpOT107Ci0gICAgcmV0dXJuIGFsd2F5c0luYWN0aXZlV2luZG93OwotfQotCi0t
IChpZClpbml0V2l0aEFjdGl2ZUNvbnRyb2xzOihCT09MKV9oYXNBY3RpdmVDb250cm9scwotewot
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaGFzQWN0aXZlQ29udHJvbHMgPSBfaGFzQWN0
aXZlQ29udHJvbHM7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKEJPT0wpX2hhc0FjdGl2ZUNv
bnRyb2xzCi17Ci0gICAgcmV0dXJuIGhhc0FjdGl2ZUNvbnRyb2xzOwotfQotCi1AZW5kCi0KLXZv
aWQgV2ViVGhlbWVFbmdpbmVEUlRNYWM6OnBhaW50U2Nyb2xsYmFyVGh1bWIoCi0gICAgV2ViQ2Fu
dmFzKiBjYW52YXMsCi0gICAgV2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlLAotICAgIFdlYlRo
ZW1lRW5naW5lOjpTaXplIHNpemUsCi0gICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICBjb25z
dCBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYgc2Nyb2xsYmFySW5mbykKLXsKLSAgICAv
LyBUbyBtYXRjaCB0aGUgTWFjIHBvcnQsIHdlIHN0aWxsIHVzZSBISVRoZW1lIGZvciBpbm5lciBz
Y3JvbGxiYXJzLgotICAgIGlmIChzY3JvbGxiYXJJbmZvLnBhcmVudCA9PSBXZWJUaGVtZUVuZ2lu
ZTo6U2Nyb2xsYmFyUGFyZW50UmVuZGVyTGF5ZXIpCi0gICAgICAgIHBhaW50SElUaGVtZVNjcm9s
bGJhclRodW1iKGNhbnZhcywgc3RhdGUsIHNpemUsIHJlY3QsIHNjcm9sbGJhckluZm8pOwotICAg
IGVsc2UKLSAgICAgICAgcGFpbnROU1Njcm9sbGVyU2Nyb2xsYmFyVGh1bWIoY2FudmFzLCBzdGF0
ZSwgc2l6ZSwgcmVjdCwgc2Nyb2xsYmFySW5mbyk7Ci19Ci0KLXN0YXRpYyBUaGVtZVRyYWNrRW5h
YmxlU3RhdGUgc3RhdGVUb0hJRW5hYmxlU3RhdGUoV2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRl
KQotewotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFdlYlRoZW1lRW5naW5lOjpTdGF0
ZURpc2FibGVkOgotICAgICAgICByZXR1cm4ga1RoZW1lVHJhY2tEaXNhYmxlZDsKLSAgICBjYXNl
IFdlYlRoZW1lRW5naW5lOjpTdGF0ZUluYWN0aXZlOgotICAgICAgICByZXR1cm4ga1RoZW1lVHJh
Y2tJbmFjdGl2ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4ga1RoZW1lVHJhY2tBY3Rp
dmU7Ci0gICAgfQotfQotCi0vLyBEdXBsaWNhdGVkIGZyb20gd2Via2l0L2dsdWUvd2VidGhlbWVl
bmdpbmVfaW1wbF9tYWMuY2MgaW4gdGhlIGRvd25zdHJlYW0KLS8vIENocm9taXVtIFdlYlRoZW1l
RW5naW5lIGltcGxlbWVudGF0aW9uLgotdm9pZCBXZWJUaGVtZUVuZ2luZURSVE1hYzo6cGFpbnRI
SVRoZW1lU2Nyb2xsYmFyVGh1bWIoCi0gICAgV2ViQ2FudmFzKiBjYW52YXMsCi0gICAgV2ViVGhl
bWVFbmdpbmU6OlN0YXRlIHN0YXRlLAotICAgIFdlYlRoZW1lRW5naW5lOjpTaXplIHNpemUsCi0g
ICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICBjb25zdCBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xs
YmFySW5mbyYgc2Nyb2xsYmFySW5mbykKLXsKLSAgICBISVRoZW1lVHJhY2tEcmF3SW5mbyB0cmFj
a0luZm87Ci0gICAgdHJhY2tJbmZvLnZlcnNpb24gPSAwOwotICAgIHRyYWNrSW5mby5raW5kID0g
c2l6ZSA9PSBXZWJUaGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBrVGhlbWVNZWRpdW1TY3JvbGxC
YXIgOiBrVGhlbWVTbWFsbFNjcm9sbEJhcjsKLSAgICB0cmFja0luZm8uYm91bmRzID0gQ0dSZWN0
TWFrZShyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpOwotICAgIHRyYWNr
SW5mby5taW4gPSAwOwotICAgIHRyYWNrSW5mby5tYXggPSBzY3JvbGxiYXJJbmZvLm1heFZhbHVl
OwotICAgIHRyYWNrSW5mby52YWx1ZSA9IHNjcm9sbGJhckluZm8uY3VycmVudFZhbHVlOwotICAg
IHRyYWNrSW5mby50cmFja0luZm8uc2Nyb2xsYmFyLnZpZXdzaXplID0gc2Nyb2xsYmFySW5mby52
aXNpYmxlU2l6ZTsKLSAgICB0cmFja0luZm8uYXR0cmlidXRlcyA9IDA7Ci0gICAgaWYgKHNjcm9s
bGJhckluZm8ub3JpZW50YXRpb24gPT0gV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhck9yaWVudGF0
aW9uSG9yaXpvbnRhbCkKLSAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgfD0ga1RoZW1lVHJh
Y2tIb3Jpem9udGFsOwotCi0gICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc3RhdGVUb0hJRW5h
YmxlU3RhdGUoc3RhdGUpOwotCi0gICAgdHJhY2tJbmZvLnRyYWNrSW5mby5zY3JvbGxiYXIucHJl
c3NTdGF0ZSA9Ci0gICAgICAgIHN0YXRlID09IFdlYlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQg
PyBrVGhlbWVUaHVtYlByZXNzZWQgOiAwOwotICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IChr
VGhlbWVUcmFja1Nob3dUaHVtYiB8IGtUaGVtZVRyYWNrSGlkZVRyYWNrKTsKLSAgICBnZng6OlNr
aWFCaXRMb2NrZXIgYml0TG9ja2VyKGNhbnZhcyk7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4
dCA9IGJpdExvY2tlci5jZ0NvbnRleHQoKTsKLSAgICBISVRoZW1lRHJhd1RyYWNrKCZ0cmFja0lu
Zm8sIDAsIGNnQ29udGV4dCwga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1hbCk7Ci19Ci0KLXZvaWQg
V2ViVGhlbWVFbmdpbmVEUlRNYWM6OnBhaW50TlNTY3JvbGxlclNjcm9sbGJhclRodW1iKAotICAg
IFdlYkNhbnZhcyogY2FudmFzLAotICAgIFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSwKLSAg
ICBXZWJUaGVtZUVuZ2luZTo6U2l6ZSBzaXplLAotICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCi0g
ICAgY29uc3QgV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhckluZm8mIHNjcm9sbGJhckluZm8pCi17
Ci0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKLSAgICBOU1Njcm9s
bGVyKiBzY3JvbGxlciA9IFtbTlNTY3JvbGxlciBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCByZWN0LmhlaWdodCldOwotICAgIFtzY3Jv
bGxlciBzZXRFbmFibGVkOnN0YXRlICE9IFdlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkXTsK
LSAgICBpZiAoc3RhdGUgPT0gV2ViVGhlbWVFbmdpbmU6OlN0YXRlSW5hY3RpdmUpCi0gICAgICAg
IFtbW0Zha2VBY3RpdmVXaW5kb3cgYWx3YXlzSW5hY3RpdmVXaW5kb3ddIGNvbnRlbnRWaWV3XSBh
ZGRTdWJ2aWV3OnNjcm9sbGVyXTsKLSAgICBlbHNlCi0gICAgICAgIFtbW0Zha2VBY3RpdmVXaW5k
b3cgYWx3YXlzQWN0aXZlV2luZG93XSBjb250ZW50Vmlld10gYWRkU3VidmlldzpzY3JvbGxlcl07
Ci0KLSAgICBbc2Nyb2xsZXIgc2V0Q29udHJvbFNpemU6c2l6ZSA9PSBXZWJUaGVtZUVuZ2luZTo6
U2l6ZVJlZ3VsYXIgPyBOU1JlZ3VsYXJDb250cm9sU2l6ZSA6IE5TU21hbGxDb250cm9sU2l6ZV07
Ci0KLSAgICBkb3VibGUgdmFsdWUgPSBkb3VibGUoc2Nyb2xsYmFySW5mby5jdXJyZW50VmFsdWUp
IC8gZG91YmxlKHNjcm9sbGJhckluZm8ubWF4VmFsdWUpOwotICAgIFtzY3JvbGxlciBzZXREb3Vi
bGVWYWx1ZTogdmFsdWVdOwotCi0gICAgZmxvYXQga25vYlByb3BvcnRpb24gPSBmbG9hdChzY3Jv
bGxiYXJJbmZvLnZpc2libGVTaXplKSAvIGZsb2F0KHNjcm9sbGJhckluZm8udG90YWxTaXplKTsK
LSAgICBbc2Nyb2xsZXIgc2V0S25vYlByb3BvcnRpb246IGtub2JQcm9wb3J0aW9uXTsKLQotICAg
IGdmeDo6U2tpYUJpdExvY2tlciBiaXRMb2NrZXIoY2FudmFzKTsKLSAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gYml0TG9ja2VyLmNnQ29udGV4dCgpOwotICAgIE5TR3JhcGhpY3NDb250ZXh0
KiBuc0dyYXBoaWNzQ29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRX
aXRoR3JhcGhpY3NQb3J0OmNnQ29udGV4dCBmbGlwcGVkOllFU107Ci0gICAgW05TR3JhcGhpY3ND
b250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om5zR3JhcGhpY3NDb250ZXh0XTsKLQotICAgIC8vIERl
c3BpdGUgcGFzc2luZyBpbiBmcmFtZVJlY3QoKSB0byB0aGUgc2Nyb2xsZXIsIGl0IGFsd2F5cyBk
cmF3cyBhdCAoMCwgMCkuCi0gICAgLy8gRm9yY2UgaXQgdG8gZHJhdyBpbiB0aGUgcmlnaHQgbG9j
YXRpb24gYnkgdHJhbnNsYXRpbmcgdGhlIHdob2xlIGdyYXBoaWNzCi0gICAgLy8gY29udGV4dC4K
LSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7Ci0gICAgTlNBZmZpbmVUcmFuc2Zv
cm0gKnRyYW5zZm9ybSA9IFtOU0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm1dOwotICAgIFt0cmFu
c2Zvcm0gdHJhbnNsYXRlWEJ5OnJlY3QueCB5Qnk6cmVjdC55XTsKLSAgICBbdHJhbnNmb3JtIGNv
bmNhdF07Ci0KLSAgICBbc2Nyb2xsZXIgZHJhd0tub2JdOwotICAgIENHQ29udGV4dFJlc3RvcmVH
U3RhdGUoY2dDb250ZXh0KTsKLQotICAgIFtzY3JvbGxlciByZWxlYXNlXTsKLQotICAgIFtOU0dy
YXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07Ci19CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE1MGM0OTAyNTFjMjM0Y2JmMTFjMzZmYmNmZjY0OTM5
ZGE4MGIwNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNzkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViVGhlbWVFbmdpbmVEUlRXaW4uaCIKLQotI2luY2x1ZGUgIldlYlRoZW1lQ29udHJvbERS
VFdpbi5oIgotI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5o
IgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+Ci0KLS8vIEFsdGhvdWdoIGFsbCB0aGlzIGNv
ZGUgaXMgZ2VuZXJpYywgd2UgaW5jbHVkZSB0aGVzZSBoZWFkZXJzCi0vLyB0byBwdWxsIGluIHRo
ZSBXaW5kb3dzICNkZWZpbmVzIGZvciB0aGUgcGFydHMgYW5kIHN0YXRlcyBvZgotLy8gdGhlIGNv
bnRyb2xzLgotI2luY2x1ZGUgPHZzc3R5bGUuaD4KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0KLSNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi0v
LyBXZSBkZWZpbmUgdGhpcyBmb3IgY2xhcml0eSwgYWx0aG91Z2ggdGhlcmUgcmVhbGx5IHNob3Vs
ZCBiZSBhIERGQ1NfTk9STUFMIGluIHdpbnVzZXIuaC4KLXN0YXRpYyBjb25zdCBpbnQgZGZjc05v
cm1hbCA9IDB4MDAwMDsKLQotc3RhdGljIFNrSVJlY3Qgd2ViUmVjdFRvU2tJUmVjdChjb25zdCBX
ZWJSZWN0JiB3ZWJSZWN0KQotewotICAgIFNrSVJlY3QgaXJlY3Q7Ci0gICAgaXJlY3Quc2V0KHdl
YlJlY3QueCwgd2ViUmVjdC55LCB3ZWJSZWN0LnggKyB3ZWJSZWN0LndpZHRoIC0gMSwgd2ViUmVj
dC55ICsgd2ViUmVjdC5oZWlnaHQgLSAxKTsKLSAgICByZXR1cm4gaXJlY3Q7Ci19Ci0KLXN0YXRp
YyB2b2lkIGRyYXdDb250cm9sKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlKQotewotICAgIFdlYlRoZW1lQ29udHJv
bERSVFdpbiBjb250cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNz
dGF0ZSk7Ci0gICAgY29udHJvbC5kcmF3KCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRyYXdUZXh0Rmll
bGQoV2ViQ2FudmFzKiBjYW52YXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdl
YlJlY3QmIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6VHlwZSBjdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVGhlbWVDb250
cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZHJhd0VkZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZpbGxDb250ZW50QXJl
YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29sb3IgY29sb3IpCi17Ci0gICAgV2Vi
VGhlbWVDb250cm9sRFJUV2luIGNvbnRyb2woY2FudmFzLCB3ZWJSZWN0VG9Ta0lSZWN0KHJlY3Qp
LCBjdHlwZSwgY3N0YXRlKTsKLSAgICBjb250cm9sLmRyYXdUZXh0RmllbGQoZHJhd0VkZ2VzLCBm
aWxsQ29udGVudEFyZWEsIGNvbG9yKTsKLX0KLQotc3RhdGljIHZvaWQgZHJhd1Byb2dyZXNzQmFy
KFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJSZWN0JiBiYXJSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlJlY3QmIGZpbGxSZWN0KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdp
biBjb250cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChiYXJSZWN0KSwgY3R5cGUsIGNzdGF0
ZSk7Ci0gICAgY29udHJvbC5kcmF3UHJvZ3Jlc3NCYXIod2ViUmVjdFRvU2tJUmVjdChmaWxsUmVj
dCkpOwotfQotCi0vLyBXZWJUaGVtZUVuZ2luZURSVFdpbgotCi12b2lkIFdlYlRoZW1lRW5naW5l
RFJUV2luOjpwYWludEJ1dHRvbihXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2ViVGhlbWVDb250cm9sRFJU
V2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlwZTsKLSAg
ICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgaWYgKHBhcnQgPT0gQlBfQ0hFQ0tCT1gpIHsKLSAg
ICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIENCU19VTkNIRUNLRUROT1JNQUw6
Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU7Ci0g
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VESE9UOgotICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1Nf
SE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVj
a2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19VTkNIRUNL
RURQUkVTU0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRU
T05DSEVDSyB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6VW5jaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBDQlNfVU5DSEVDS0VERElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19JTkFDVElWRSkpOwotICAgICAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU7Ci0g
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19DSEVDS0VETk9STUFMOgot
ICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERG
Q1NfQ0hFQ0tFRCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OkNoZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JT
X0NIRUNLRURIT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JV
VFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19IT1QpKTsKLSAgICAgICAgICAgIGN0eXBl
ID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIENCU19DSEVDS0VEUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBERkNT
X1BVU0hFRCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNo
ZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19D
SEVDS0VERElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRCb3hUeXBlOwotICAgICAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfTUlYRUROT1JNQUw6Ci0gICAgICAg
ICAgICAvLyBDbGFzc2ljIHRoZW1lIGNhbid0IHJlcHJlc2VudCBtaXhlZCBzdGF0ZSBjaGVja2Jv
eC4gV2UgYXNzdW1lCi0gICAgICAgICAgICAvLyBpdCdzIGVxdWl2YWxlbnQgdG8gdW5jaGVja2Vk
LgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTkNIRUNLKTsK
LSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpJbmRldGVybWluYXRl
Q2hlY2tib3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JTX01J
WEVESE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05D
SEVDSyB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIENCU19NSVhFRFBSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOwot
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19NSVhFRERJU0FCTEVEOgot
ICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERG
Q1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKEJQX1JBRElPQlVUVE9OID09
IHBhcnQpIHsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFJCU19VTkNI
RUNLRUROT1JNQUw6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfQlVU
VE9OUkFESU8pOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVu
Y2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFJC
U19VTkNIRUNLRURIT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X0JVVFRPTlJBRElPIHwgREZDU19IT1QpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBSQlNfVU5DSEVDS0VEUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX1BVU0hFRCkpOwotICAgICAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZFJhZGlvVHlwZTsKLSAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VERElTQUJMRUQ6
Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwg
REZDU19JTkFDVElWRSkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlVuY2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgUkJTX0NIRUNLRUROT1JNQUw6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEKSk7Ci0gICAgICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFJCU19DSEVDS0VESE9UOgotICAgICAgICAgICAgQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfQ0hFQ0tFRCB8IERG
Q1NfSE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Q2hl
Y2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFJCU19DSEVD
S0VEUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVU
VE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX1BVU0hFRCkpOwotICAgICAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgUkJTX0NIRUNLRURESVNBQkxFRDoKLSAgICAgICAg
ICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNL
RUQgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChCUF9QVVNIQlVUVE9OID09IHBh
cnQpIHsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIFBCU19OT1JNQUw6
Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfQlVUVE9OUFVTSCk7Ci0g
ICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1dHRvblR5cGU7
Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRl
OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBQQlNfSE9UOgotICAgICAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19IT1QpKTsK
LSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQdXNoQnV0dG9uVHlw
ZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFBCU19QUkVTU0VEOgotICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19QVVNI
RUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQdXNoQnV0
dG9uVHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJl
c3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBQQlNfRElTQUJM
RUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlBVU0gg
fCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFBCU19ERUZBVUxURUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERG
Q1NfQlVUVE9OUFVTSCk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OkZvY3VzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
Ci0gICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotCi12
b2lkIFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludE1lbnVMaXN0KFdlYkNhbnZhcyogY2FudmFz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0
KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0
ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQotICAgIGlm
IChDUF9EUk9QRE9XTkJVVFRPTiA9PSBwYXJ0KSB7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpEcm9wRG93bkJ1dHRvblR5cGU7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUp
IHsKLSAgICAgICAgY2FzZSBDQlhTX05PUk1BTDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2lj
U3RhdGUgPT0gREZDU19NRU5VQVJST1cpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgQ0JYU19IT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X01FTlVBUlJPVyB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIENCWFNfUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfTUVOVUFSUk9XIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBDQlhTX0RJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIENSQVNIKCk7Ci0KLSAg
ICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOwotfQotCi12b2lkIFdl
YlRoZW1lRW5naW5lRFJUV2luOjpwYWludFNjcm9sbGJhckFycm93KFdlYkNhbnZhcyogY2FudmFz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBj
bGFzc2ljU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpU
eXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlwZTsKLSAgICBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
VW5rbm93blN0YXRlOwotCi0gICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgQUJTX1VQTk9S
TUFMOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMVVApOwotICAg
ICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAgICAg
IGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBBQlNfRE9XTk5PUk1BTDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6RG93bkFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9s
RFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19MRUZU
Tk9STUFMOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7
Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOwot
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX1JJR0hUTk9STUFMOgotICAgICAgICBBU1NFUlQo
Y2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMUklHSFQpOwotICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBBQlNfVVBIT1Q6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xM
VVAgfCBERkNTX0hPVCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6
VXBBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90
U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfRE9XTkhPVDoKLSAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19IT1QpKTsKLSAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBBQlNfTEVGVEhPVDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19IT1QpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBB
QlNfUklHSFRIT1Q6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xM
UklHSFQgfCBERkNTX0hPVCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfVVBIT1ZFUjoKLSAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKLSAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBBQlNfRE9XTkhPVkVSOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERG
Q1NfU0NST0xMRE9XTik7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpE
b3duQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhv
dmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfTEVGVEhPVkVSOgotICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMTEVGVCk7Ci0gICAgICAgIGN0
eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOwotICAgICAgICBjc3Rh
dGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgY2FzZSBBQlNfUklHSFRIT1ZFUjoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBERkNTX1NDUk9MTFJJR0hUKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OkhvdmVyU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfVVBQUkVTU0VE
OgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19Q
VVNIRUQgfCBERkNTX0ZMQVQpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlVwQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19ET1dOUFJFU1NF
RDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZD
U19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0xFRlRQ
UkVTU0VEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTExFRlQg
fCBERkNTX1BVU0hFRCB8IERGQ1NfRkxBVCkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6TGVmdEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNf
UklHSFRQUkVTU0VEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9M
TFJJR0hUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIEFCU19VUERJU0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X1NDUk9MTFVQIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19E
T1dORElTQUJMRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xM
RE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19MRUZU
RElTQUJMRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVG
VCB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OkxlZnRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19SSUdIVERJ
U0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hU
IHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6UmlnaHRBcnJvd1R5cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZHJh
d0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotdm9pZCBXZWJUaGVt
ZUVuZ2luZURSVFdpbjo6cGFpbnRTY3JvbGxiYXJUaHVtYihXZWJDYW52YXMqIGNhbnZhcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNz
aWNTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBlOwotICAgIFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtu
b3duU3RhdGU7Ci0KLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICBjYXNlIFNCUF9USFVNQkJUTkhP
Ulo6Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3Jpem9udGFsU2Ny
b2xsVGh1bWJUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX1RIVU1CQlROVkVS
VDoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlZlcnRpY2FsU2Nyb2xs
VGh1bWJUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX0dSSVBQRVJIT1JaOgot
ICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRhbFNjcm9sbEdy
aXBUeXBlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX0dSSVBQRVJWRVJUOgotICAg
ICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTY3JvbGxHcmlwVHlw
ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3dpdGNoIChzdGF0ZSkgewot
ICAgIGNhc2UgU0NSQlNfTk9STUFMOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRm
Y3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1h
bFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0NSQlNfSE9UOgotICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpIb3RTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFND
UkJTX0hPVkVSOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwot
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19QUkVTU0VEOgotICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNDUkJT
X0RJU0FCTEVEOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gVGhpcyBzaG91bGQg
bmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOwotfQotCi12b2lk
IFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludFNjcm9sbGJhclRyYWNrKFdlYkNhbnZhcyogY2Fu
dmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
cGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBhbGlnblJlY3QpCi17Ci0gICAgV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpV
bmtub3duVHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgc3dpdGNoIChwYXJ0KSB7
Ci0gICAgY2FzZSBTQlBfVVBQRVJUUkFDS0hPUlo6Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIFNCUF9MT1dFUlRSQUNLSE9SWjoKLSAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX1VQUEVSVFJBQ0tWRVJUOgotICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTY3JvbGxUcmFja0JhY2tUeXBlOwot
ICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0JQX0xPV0VSVFJBQ0tWRVJUOgotICAgICAgICBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTY3JvbGxUcmFja0ZvcndhcmRU
eXBlOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHN0YXRlKSB7
Ci0gICAgY2FzZSBTQ1JCU19OT1JNQUw6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
ZGZjc05vcm1hbCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9y
bWFsU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19IT1Q6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcHJh
Y3RpY2UuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19IT1ZFUjoKLSAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNh
c2UgU0NSQlNfUFJFU1NFRDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIFRoaXMg
c2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGljZS4KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIFNDUkJTX0RJU0FCTEVEOgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1Nf
SU5BQ1RJVkUpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2Fi
bGVkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQ1JBU0go
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0
LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRT
cGluQnV0dG9uKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBwYXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17Ci0gICAgV2ViVGhlbWVDb250
cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmtub3duVHlw
ZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgaWYgKHBhcnQgPT0gU1BOUF9VUCkgewot
ICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VXBBcnJvd1R5cGU7Ci0gICAg
ICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBVUFNfTk9STUFMOgotICAgICAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKLSAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBVUFNfRElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19JTkFDVElWRSkpOwotICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVVBTX1BSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19QVVNIRUQpKTsKLSAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVVBTX0hPVDoKLSAgICAgICAgICAgIEFTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX0hPVCkpOwotICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAocGFydCA9PSBTUE5QX0RPV04pIHsKLSAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7Ci0gICAg
ICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBETlNfTk9STUFMOgotICAgICAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOwotICAgICAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEROU19ESVNBQkxFRDoKLSAgICAgICAgICAgIEFTU0VSVChj
bGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEROU19QUkVTU0VEOgotICAgICAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19QVVNIRUQpKTsK
LSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRl
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRE5TX0hPVDoKLSAgICAgICAgICAg
IEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSE9UKSk7Ci0g
ICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdmVyU3RhdGU7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7
Ci19Ci0KLXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50VGV4dEZpZWxkKFdlYkNhbnZh
cyogY2FudmFzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHBhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3Np
Y1N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViUmVjdCYgcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkNvbG9yIGNvbG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBmaWxsQ29udGVudEFyZWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGRyYXdFZGdlcykKLXsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBlOwotICAgIFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpVbmtub3duU3RhdGU7Ci0KLSAgICBBU1NFUlQoRVBfRURJVFRFWFQgPT0gcGFydCk7Ci0gICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlRleHRGaWVsZFR5cGU7Ci0KLSAgICBzd2l0
Y2ggKHN0YXRlKSB7Ci0gICAgY2FzZSBFVFNfTk9STUFMOgotICAgICAgICBBU1NFUlQoY2xhc3Np
Y1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVRTX0hPVDoK
LSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7Ci0gICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgY2FzZSBFVFNfRElTQUJMRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZD
U19JTkFDVElWRSk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlz
YWJsZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVUU19TRUxFQ1RFRDoKLSAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7Ci0gICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgRVRTX0ZPQ1VTRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
ZGZjc05vcm1hbCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Rm9j
dXNlZFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVRTX1JFQURPTkxZOgotICAg
ICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJlYWRPbmx5U3RhdGU7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIGRyYXdUZXh0RmllbGQoY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0
YXRlLCBkcmF3RWRnZXMsIGZpbGxDb250ZW50QXJlYSwgY29sb3IpOwotfQotCi12b2lkIFdlYlRo
ZW1lRW5naW5lRFJUV2luOjpwYWludFRyYWNrYmFyKFdlYkNhbnZhcyogY2FudmFzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFydCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAg
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQotICAgIGlmIChUS1BfVEhV
TUJCT1RUT00gPT0gcGFydCkgewotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6SG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZTsKLSAgICAgICAgc3dpdGNoIChzdGF0ZSkgewot
ICAgICAgICBjYXNlIFRVU19OT1JNQUw6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IGRmY3NOb3JtYWwpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgVFVT
X0hPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19IT1QpOwotICAg
ICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3RTdGF0ZTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgVFVTX0RJU0FCTEVEOgotICAgICAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKLSAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgIGNhc2UgVFVTX1BSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfUFVTSEVEKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFRLUF9USFVNQlZFUlQgPT0gcGFy
dCkgewotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTbGlk
ZXJUaHVtYlR5cGU7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBUVVNf
Tk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsK
LSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFRVU19IT1Q6Ci0gICAgICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFRVU19ESVNBQkxFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gREZDU19JTkFDVElWRSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFRVU19QUkVTU0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X1BVU0hFRCk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlBy
ZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlIGlmIChUS1BfVFJBQ0sgPT0gcGFydCkgewotICAgICAgICBjdHlwZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZTsKLSAgICAg
ICAgQVNTRVJUKHN0YXRlID09IFRSU19OT1JNQUwpOwotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0
YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46Ok5vcm1hbFN0YXRlOwotICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLVkVSVCA9PSBwYXJ0KSB7
Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpWZXJ0aWNhbFNsaWRlclRy
YWNrVHlwZTsKLSAgICAgICAgQVNTRVJUKHN0YXRlID09IFRSVlNfTk9STUFMKTsKLSAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBl
LCBjc3RhdGUpOwotfQotCi0KLXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50UHJvZ3Jl
c3NCYXIoV2ViS2l0OjpXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBiYXJSZWN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmIHZhbHVlUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBkZXRlcm1pbmF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlKQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBj
dHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJvZ3Jlc3NCYXJUeXBlOwotICAgIFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gZGV0ZXJtaW5hdGUgPyBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SW5kZXRlcm1p
bmF0ZVN0YXRlOwotICAgIGRyYXdQcm9ncmVzc0JhcihjYW52YXMsIGN0eXBlLCBjc3RhdGUsIGJh
clJlY3QsIHZhbHVlUmVjdCk7Ci19Ci0KLQotV2ViS2l0OjpXZWJTaXplIFdlYlRoZW1lRW5naW5l
RFJUV2luOjpnZXRTaXplKGludCBwYXJ0KQotewotICAgIHJldHVybiBXZWJLaXQ6OldlYlNpemUo
KTsKLX0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhl
bWVFbmdpbmVEUlRXaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1l
RW5naW5lRFJUV2luLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NDUxNGJiMmEw
NzA2ZjYyYmEzYTJmOTI0YWVhZjMwZWE4MTQzN2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhl
bWVFbmdpbmVEUlRXaW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gVGhpcyBp
bXBsZW1lbnRzIHRoZSBXZWJUaGVtZUVuZ2luZSBBUEkgdXNlZCBieSB0aGUgV2luZG93cyB2ZXJz
aW9uIG9mCi0vLyBDaHJvbWl1bSB0byByZW5kZXIgbmF0aXZlIGZvcm0gY29udHJvbHMgbGlrZSBj
aGVja2JveGVzLCByYWRpbyBidXR0b25zLAotLy8gYW5kIHNjcm9sbCBiYXJzLgotLy8gVGhlIG5v
cm1hbCBpbXBsZW1lbnRhdGlvbiAobmF0aXZlX3RoZW1lKSByZW5kZXJzIHRoZSBjb250cm9scyB1
c2luZyBlaXRoZXIKLS8vIHRoZSBVWFRoZW1lIHRoZW1pbmcgZW5naW5lIHByZXNlbnQgaW4gWFAs
IFZpc3RhLCBhbmQgV2luIDcsIG9yIHRoZSAiY2xhc3NpYyIKLS8vIHRoZW1lIHVzZWQgaWYgdGhh
dCB0aGVtZSBpcyBzZWxlY3RlZCBpbiB0aGUgRGVza3RvcCBzZXR0aW5ncy4KLS8vIFVuZm9ydHVu
YXRlbHksIGJvdGggb2YgdGhlc2UgdGhlbWVzIHJlbmRlciBjb250cm9scyBkaWZmZXJlbnRseSBv
biB0aGUKLS8vIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgotLy8KLS8vIEluIG9yZGVy
IHRvIGVuc3VyZSBtYXhpbXVtIGNvbnNpc3RlbmN5IG9mIGJhc2VsaW5lcyBhY3Jvc3MgdGhlIGRp
ZmZlcmVudAotLy8gV2luZG93cyB2ZXJzaW9ucywgd2UgcHJvdmlkZSBhIHNpbXBsZSBpbXBsZW1l
bnRhdGlvbiBmb3IgRFJUIGhlcmUKLS8vIGluc3RlYWQuIFRoZXNlIGNvbnRyb2xzIGFyZSBhY3R1
YWxseSBwbGF0Zm9ybS1pbmRlcGVuZGVudCAodGhleSdyZSByZW5kZXJlZAotLy8gdXNpbmcgU2tp
YSkgYW5kIGNvdWxkIGJlIHVzZWQgb24gTGludXggYW5kIHRoZSBNYWMgYXMgd2VsbCwgc2hvdWxk
IHdlCi0vLyBjaG9vc2UgdG8gZG8gc28gYXQgc29tZSBwb2ludC4KLS8vCi0KLSNpZm5kZWYgV2Vi
VGhlbWVFbmdpbmVEUlRXaW5faAotI2RlZmluZSBXZWJUaGVtZUVuZ2luZURSVFdpbl9oCi0KLSNp
bmNsdWRlIDxwdWJsaWMvd2luL1dlYlRoZW1lRW5naW5lLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0KLWNsYXNzIFdlYlRoZW1lRW5naW5lRFJUV2luIDogcHVibGljIFdlYktpdDo6
V2ViVGhlbWVFbmdpbmUgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlRoZW1lRW5naW5l
RFJUV2luKTsKLXB1YmxpYzoKLSAgICBXZWJUaGVtZUVuZ2luZURSVFdpbigpIHsgfQotCi0gICAg
Ly8gV2ViVGhlbWVFbmdpbmUgbWV0aG9kczoKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24o
Ci0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNs
YXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRNZW51TGlzdCgKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQg
cGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6
OldlYlJlY3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckFycm93KAotICAg
ICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAg
ICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxiYXJUaHVtYigKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50
IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3Qm
KTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRyYWNrKAotICAgICAgICBXZWJL
aXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0g
ICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYsIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgYWxp
Z25SZWN0KTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFNwaW5CdXR0b24oCi0gICAgICAgIFdl
YktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwK
LSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUZXh0RmllbGQoCi0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBz
dGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jiwg
V2ViS2l0OjpXZWJDb2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsCi0gICAgICAgIGJvb2wgZHJh
d0VkZ2VzKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrYmFyKAotICAgICAgICBXZWJL
aXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0g
ICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
UHJvZ3Jlc3NCYXIoCi0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgY29uc3QgV2ViS2l0OjpX
ZWJSZWN0JiBiYXJSZWN0LAotICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIHZhbHVlUmVj
dCwKLSAgICAgICAgYm9vbCBkZXRlcm1pbmF0ZSwgZG91YmxlIHRpbWUpOwotCi0gICAgdmlydHVh
bCBXZWJLaXQ6OldlYlNpemUgZ2V0U2l6ZShpbnQgcGFydCk7Ci19OwotCi0jZW5kaWYgLy8gV2Vi
VGhlbWVFbmdpbmVEUlRXaW5faAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194183</attachid>
            <date>2013-03-20 22:13:05 -0700</date>
            <delta_ts>2013-03-20 23:19:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-112751-20130321060852.patch</filename>
            <type>text/plain</type>
            <size>154581</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NDM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2M4MTY4YjZhZjQ4NmJmMDBkYzc3ZGM5NGZiY2QzNTQ3
MjA4ZDA5OC4uZjJhNzc1ZWQ1NDAwNjYzYWU4NjJiOGUzNTUyYWI4YWIzNDIwYWMzMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDEzLTAzLTIwICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbW92ZSBXZWJUaGVtZUVuZ2luZSBpbXBsZW1lbnRhdGlvbnMg
dG8gVGVzdFJ1bm5lciBsaWJyYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTI3NTEKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBSZW5kZXJU
cmVlLmd5cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRl
c3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjp0aGVtZUVuZ2luZSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFRl
c3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpX
ZWJUZXN0SW50ZXJmYWNlczo6dGhlbWVFbmdpbmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVz
dFRoZW1lQ29udHJvbFdpbi5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwLgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbik6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46On5XZWJUZXN0VGhlbWVDb250cm9sV2luKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmJveCk6CisgICAgICAgIChXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpsaW5lKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OnRyaWFuZ2xlKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OnJvdW5kUmVjdCk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpvdmFsKToKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmNpcmNsZSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpuZXN0ZWRCb3hlcyk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjptYXJrU3RhdGUpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6ZHJhdyk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVDb250cm9sV2luOjpkcmF3VGV4dEZpZWxk
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUNvbnRyb2xXaW46OmRyYXdQ
cm9ncmVzc0Jhcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmguCisgICAgICAgIChXZWJU
ZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RUaGVtZUNvbnRyb2xXaW4pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2lu
ZU1hYy5oOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhl
bWVFbmdpbmVEUlRNYWMuaC4KKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAoV2Vi
VGVzdFRoZW1lRW5naW5lTWFjKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMubW06IFJlbmFtZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVE1hYy5tbS4KKyAgICAg
ICAgKCtbRmFrZUFjdGl2ZVdpbmRvdyBhbHdheXNBY3RpdmVXaW5kb3ddKToKKyAgICAgICAgKCtb
RmFrZUFjdGl2ZVdpbmRvdyBhbHdheXNJbmFjdGl2ZVdpbmRvd10pOgorICAgICAgICAoLVtGYWtl
QWN0aXZlV2luZG93IGluaXRXaXRoQWN0aXZlQ29udHJvbHM6XSk6CisgICAgICAgICgtW0Zha2VB
Y3RpdmVXaW5kb3cgX2hhc0FjdGl2ZUNvbnRyb2xzXSk6CisgICAgICAgIChXZWJUZXN0UnVubmVy
OjpXZWJUZXN0VGhlbWVFbmdpbmVNYWM6OnBhaW50U2Nyb2xsYmFyVGh1bWIpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdp
bmVNYWM6OnBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RUaGVtZUVuZ2luZU1hYzo6cGFpbnROU1Njcm9sbGVyU2Nyb2xsYmFyVGh1bWIp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRl
c3RUaGVtZUVuZ2luZVdpbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2Vi
VGVzdFRoZW1lRW5naW5lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJUZXN0UnVubmVy
KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRN
ZW51TGlzdCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46
OnBhaW50U2Nyb2xsYmFyQXJyb3cpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFRo
ZW1lRW5naW5lV2luOjpwYWludFNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRTY3JvbGxiYXJUcmFjayk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50U3BpbkJ1dHRvbik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50VGV4
dEZpZWxkKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RUaGVtZUVuZ2luZVdpbjo6
cGFpbnRUcmFja2Jhcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdp
bmVXaW46OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVz
dFRoZW1lRW5naW5lV2luOjpnZXRTaXplKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0VGhlbWVFbmdpbmVXaW4uaDogUmVuYW1lZCBmcm9t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmguCisg
ICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RUaGVtZUVuZ2luZVdpbik6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0VGhlbWVFbmdpbmVXaW46OldlYlRlc3RU
aGVtZUVuZ2luZVdpbik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbToKKyAgICAgICAg
KHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsV2luLmNwcDoKKyAgICAgICAgKHBsYXRmb3JtSW5pdCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwOiBSZW1vdmVkLgorCiAyMDEz
LTAzLTIwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBb
V2luQ2Fpcm9dIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBUZXN0V2ViS2l0QVBJIHVuZGVyIFZT
MjAxMApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lw
L0R1bXBSZW5kZXJUcmVlLmd5cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cC9EdW1wUmVuZGVyVHJlZS5neXAKaW5kZXggNWQ0NWE1OGM0Nzc4ZDMyOTZmNDc2ZTU5NTI4
ODdiMDg4MWU3ODNjNS4uNDQwMGYyODg0MWNjYjUyM2Y1ZjU1MDQwNjMxYjdkZGY3OWU2NzM1NCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwL0R1bXBS
ZW5kZXJUcmVlLmd5cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5n
eXAvRHVtcFJlbmRlclRyZWUuZ3lwCkBAIC0xNTQsNiArMTU0LDExIEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICAnPChzb3VyY2VfZGlyKS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2d0aycsCiAg
ICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAg
ICAgWydPUyE9IndpbiInLCB7CisgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzLyc6IFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFsnZXhjbHVkZScsICdXaW5cXC5jcHAkJ10sCisgICAgICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgfV0sCiAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgIyBEaXNhYmxlIGM0MjY3IHdhcm5pbmdzIHVudGlsIHdlIGZpeCBzaXplX3QgdG8g
aW50IHRydW5jYXRpb25zLiAKICAgICAgICAgICAgICdtc3ZzX2Rpc2FibGVkX3dhcm5pbmdzJzog
WyA0MjY3LCBdLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXgg
Y2Q0NzU1YWEzYzkzZTVjMzU0ZmJkZDAyMzFiNjRiMWUxNGNkZmU0MS4uMzIxNTVkZjFjMjRhMzk2
MmExZGI0OTA1YzI2YmMwMjY2NTAyMDExZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS5neXBpCkBAIC0yNiwxMiArMjYsNiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RTaGVsbFN0dWIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3Bw
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0U2hlbGxYMTEuY3BwJywKLSAgICAgICAgICAg
ICdjaHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwJywKLSAgICAgICAgICAgICdjaHJv
bWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2Vi
VGhlbWVFbmdpbmVEUlRNYWMubW0nLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5n
aW5lRFJUTWFjLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2lu
LmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAgICAgXSwKQEAgLTk1LDYgKzg5LDEyIEBACiAgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGFzay5jcHAnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCcsCisgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5j
cHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNv
bnRyb2xXaW4uaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVz
dFRoZW1lRW5naW5lTWFjLm1tJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9XZWJUZXN0VGhlbWVFbmdpbmVNYWMuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmNwcCcsCisgICAgICAgICAgICAnY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmgnLAogICAgICAgICAgICAg
J2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlVzZXJNZWRpYUNsaWVudE1vY2suY3BwJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJVc2VyTWVkaWFDbGllbnRNb2Nr
LmgnLAogICAgICAgICBdLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKaW5k
ZXggNDUyYzE0OTFlNWFhYjgzOTYxYjJlNjE2NDM4MjMwN2Y2N2RiZjJhOC4uYThiZmY4MGZjMzU0
OTQ1OGNjMDg3YTA3ZTFmODQ5N2FhNzg4OWIzYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
SW50ZXJmYWNlcy5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVy
OwogY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7CiBjbGFzcyBXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7
CitjbGFzcyBXZWJUaGVtZUVuZ2luZTsKIGNsYXNzIFdlYlVSTDsKIGNsYXNzIFdlYlZpZXc7CiB9
CkBAIC02NCw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbmZpZ3VyZUZvclRlc3RXaXRo
VVJMKGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgYm9vbCBnZW5lcmF0ZVBpeGVscyk7CiAKICAgICBX
ZWJUZXN0UnVubmVyKiB0ZXN0UnVubmVyKCk7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZSog
dGhlbWVFbmdpbmUoKTsKIAogICAgIFdlYktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXIqIGNyZWF0
ZU1lZGlhU3RyZWFtQ2VudGVyKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQqKTsK
ICAgICBXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciogY3JlYXRlV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyKFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50Kik7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggNGQ4YTAwYzk2Y2ZjOWFj
YjNkMGM3MzZjMjM2ZjE2ZGE3OWY2MjNjNC4uYWZkNjVkODZkNGU1NDg1ZjU4OWIyNjFkZGM4NzFm
ZWRjMDVkYTc4YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcApAQCAtMjE1LDQgKzIx
NSwxOSBAQCBjb25zdCB2ZWN0b3I8V2ViVGVzdFByb3h5QmFzZSo+JiBUZXN0SW50ZXJmYWNlczo6
d2luZG93TGlzdCgpCiAgICAgcmV0dXJuIG1fd2luZG93TGlzdDsKIH0KIAorV2ViVGhlbWVFbmdp
bmUqIFRlc3RJbnRlcmZhY2VzOjp0aGVtZUVuZ2luZSgpCit7CisjaWYgZGVmaW5lZChVU0VfREVG
QVVMVF9SRU5ERVJfVEhFTUUpIHx8ICEoZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfX0FQUExF
X18pKQorICAgIHJldHVybiAwOworI2VsaWYgZGVmaW5lZChXSU4zMikKKyAgICBpZiAoIW1fdGhl
bWVFbmdpbmUuZ2V0KCkpCisgICAgICAgIG1fdGhlbWVFbmdpbmUucmVzZXQobmV3IFdlYlRlc3RU
aGVtZUVuZ2luZVdpbigpKTsKKyAgICByZXR1cm4gbV90aGVtZUVuZ2luZS5nZXQoKTsKKyNlbGlm
IGRlZmluZWQoX19BUFBMRV9fKQorICAgIGlmICghbV90aGVtZUVuZ2luZS5nZXQoKSkKKyAgICAg
ICAgbV90aGVtZUVuZ2luZS5yZXNldChuZXcgV2ViVGVzdFRoZW1lRW5naW5lTWFjKCkpOworICAg
IHJldHVybiBtX3RoZW1lRW5naW5lLmdldCgpOworI2VuZGlmCit9CisKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZh
Y2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0
SW50ZXJmYWNlcy5oCmluZGV4IGI2YjMwMWE3OTBjMzRkYzEyODhhMDViZWU5ZTM2NGVhYmNmZTEy
OWQuLjA1ZGM4ZDFlZGZmY2Q4MTM5MTBkZWQ3NTY2YjI0MWQ5Y2Y4OWQxMzkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZh
Y2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
VGVzdEludGVyZmFjZXMuaApAQCAtMzQsOCArMzQsMTUgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8dmVjdG9yPgogCisjaWYgZGVmaW5lZChXSU4zMikKKyNpbmNsdWRlICJXZWJUZXN0
VGhlbWVFbmdpbmVXaW4uaCIKKyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorI2luY2x1ZGUgIldl
YlRlc3RUaGVtZUVuZ2luZU1hYy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViRnJhbWU7CitjbGFzcyBXZWJUaGVtZUVuZ2luZTsKIGNsYXNzIFdlYlVSTDsKIGNsYXNz
IFdlYlZpZXc7CiB9CkBAIC03Miw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICBXZWJUZXN0RGVsZWdh
dGUqIGRlbGVnYXRlKCk7CiAgICAgV2ViVGVzdFByb3h5QmFzZSogcHJveHkoKTsKICAgICBjb25z
dCBzdGQ6OnZlY3RvcjxXZWJUZXN0UHJveHlCYXNlKj4mIHdpbmRvd0xpc3QoKTsKKyAgICBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lKiB0aGVtZUVuZ2luZSgpOwogCiBwcml2YXRlOgogICAgIHN0ZDo6
YXV0b19wdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI7CkBAIC04NCw2ICs5MiwxMyBAQCBwcml2YXRlOgogICAgIFdlYlRlc3RQcm94eUJhc2UqIG1f
cHJveHk7CiAKICAgICBzdGQ6OnZlY3RvcjxXZWJUZXN0UHJveHlCYXNlKj4gbV93aW5kb3dMaXN0
OworI2lmICFkZWZpbmVkKFVTRV9ERUZBVUxUX1JFTkRFUl9USEVNRSkKKyNpZiBkZWZpbmVkKFdJ
TjMyKQorICAgIHN0ZDo6YXV0b19wdHI8V2ViVGVzdFRoZW1lRW5naW5lV2luPiBtX3RoZW1lRW5n
aW5lOworI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgc3RkOjphdXRvX3B0cjxXZWJUZXN0
VGhlbWVFbmdpbmVNYWM+IG1fdGhlbWVFbmdpbmU7CisjZW5kaWYKKyNlbmRpZgogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
V2ViVGVzdEludGVyZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCmluZGV4IDJhMTc2ZDc2MzlhOTMwNTg5
NDAyMDVhYzJmMDU4MzhkNGE2MmY2MzIuLmMyZGJkMTY5YmNmZGZhMjlmMDQ0ZWM3NDNhMDFkMjcy
NjE3YTMyZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTg0LDYg
Kzg0LDExIEBAIFdlYlRlc3RSdW5uZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkK
ICAgICByZXR1cm4gbV9pbnRlcmZhY2VzLT50ZXN0UnVubmVyKCk7CiB9CiAKK1dlYlRoZW1lRW5n
aW5lKiBXZWJUZXN0SW50ZXJmYWNlczo6dGhlbWVFbmdpbmUoKQoreworICAgIHJldHVybiBtX2lu
dGVyZmFjZXMtPnRoZW1lRW5naW5lKCk7Cit9CisKIFRlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50
ZXJmYWNlczo6dGVzdEludGVyZmFjZXMoKQogewogICAgIHJldHVybiBtX2ludGVyZmFjZXMuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0VGhlbWVDb250cm9sV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFkYWI4NThmNzJlOWQ3OTcyZTM3ZDg3NWZiYzk0MzdkZTM0MDlkNmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJU
ZXN0VGhlbWVDb250cm9sV2luLmNwcApAQCAtMCwwICsxLDQ5MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIFRoaXMgZmlsZSBpbXBs
ZW1lbnRzIGEgc2ltcGxlIGdlbmVyaWMgdmVyc2lvbiBvZiB0aGUgV2ViVGhlbWVFbmdpbmUsCisv
LyB3aGljaCBpcyB1c2VkIHRvIGRyYXcgYWxsIHRoZSBuYXRpdmUgY29udHJvbHMgb24gYSB3ZWIg
cGFnZS4gV2UgdXNlIHRoaXMKKy8vIGZpbGUgd2hlbiBydW5uaW5nIGluIGxheW91dCB0ZXN0IG1v
ZGUgaW4gb3JkZXIgdG8gcmVtb3ZlIGFueQorLy8gcGxhdGZvcm0tc3BlY2lmaWMgcmVuZGVyaW5n
IGRpZmZlcmVuY2VzIGR1ZSB0byB0aGVtZXMsIGNvbG9ycywgZXRjLgorLy8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaCIKKworI2luY2x1
ZGUgIlRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJza2lhL2V4dC9za2lhX3V0aWxzX3dpbi5oIgor
I2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ2FudmFzLmgiCisjaW5j
bHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tQYWludC5oIgorI2luY2x1ZGUg
InRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUGF0aC5oIgorI2luY2x1ZGUgInRoaXJk
X3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGht
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCituYW1lc3BhY2UgeworCitjb25zdCBTa0NvbG9yIGVk
Z2VDb2xvciAgICAgPSBTS19Db2xvckJMQUNLOworY29uc3QgU2tDb2xvciByZWFkT25seUNvbG9y
ID0gU2tDb2xvclNldFJHQigweGU5LCAweGMyLCAweGE2KTsKK2NvbnN0IFNrQ29sb3IgZmdDb2xv
ciAgICAgICA9IFNLX0NvbG9yQkxBQ0s7Citjb25zdCBTa0NvbG9yIGJnQ29sb3JzW10gICAgPSB7
CisgICAgU0tfQ29sb3JCTEFDSywgLy8gVW5rbm93bgorICAgIFNrQ29sb3JTZXRSR0IoMHhjOSwg
MHhjOSwgMHhjOSksIC8vIERpc2FibGVkCisgICAgU2tDb2xvclNldFJHQigweGYzLCAweGUwLCAw
eGQwKSwgLy8gUmVhZG9ubHkKKyAgICBTa0NvbG9yU2V0UkdCKDB4ODksIDB4YzQsIDB4ZmYpLCAv
LyBOb3JtYWwKKyAgICBTa0NvbG9yU2V0UkdCKDB4NDMsIDB4ZjksIDB4ZmYpLCAvLyBIb3QKKyAg
ICBTa0NvbG9yU2V0UkdCKDB4MjAsIDB4ZjYsIDB4Y2MpLCAvLyBGb2N1c2VkCisgICAgU2tDb2xv
clNldFJHQigweDAwLCAweGYzLCAweGFjKSwgLy8gSG92ZXIKKyAgICBTa0NvbG9yU2V0UkdCKDB4
YTksIDB4ZmYsIDB4MTIpLCAvLyBQcmVzc2VkCisgICAgU2tDb2xvclNldFJHQigweGNjLCAweGNj
LCAweGNjKSAvLyBJbmRldGVybWluYXRlCit9OworCitTa0lSZWN0IHZhbGlkYXRlKGNvbnN0IFNr
SVJlY3QmIHJlY3QsIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUpCit7CisgICAg
c3dpdGNoIChjdHlwZSkgeworICAgIGNhc2UgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVj
a2VkQm94VHlwZToKKyAgICBjYXNlIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkNoZWNrZWRCb3hU
eXBlOgorICAgIGNhc2UgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkUmFkaW9UeXBl
OgorICAgIGNhc2UgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTogewor
ICAgICAgICBTa0lSZWN0IHJldHZhbCA9IHJlY3Q7CisKKyAgICAgICAgLy8gVGhlIG1heGltdW0g
d2lkdGggYW5kIGhlaWdodCBpcyAxMy4KKyAgICAgICAgLy8gQ2VudGVyIHRoZSBzcXVhcmUgaW4g
dGhlIHBhc3NlZCByZWN0YW5nbGUuCisgICAgICAgIGNvbnN0IGludCBtYXhDb250cm9sU2l6ZSA9
IDEzOworICAgICAgICBpbnQgY29udHJvbFNpemUgPSBzdGQ6Om1pbihyZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpOworICAgICAgICBjb250cm9sU2l6ZSA9IHN0ZDo6bWluKGNvbnRyb2xTaXpl
LCBtYXhDb250cm9sU2l6ZSk7CisKKyAgICAgICAgcmV0dmFsLmZMZWZ0ICAgPSByZWN0LmZMZWZ0
ICsgKHJlY3Qud2lkdGgoKSAvIDIpIC0gKGNvbnRyb2xTaXplIC8gMik7CisgICAgICAgIHJldHZh
bC5mUmlnaHQgID0gcmV0dmFsLmZMZWZ0ICsgY29udHJvbFNpemUgLSAxOworICAgICAgICByZXR2
YWwuZlRvcCAgICA9IHJlY3QuZlRvcCArIChyZWN0LmhlaWdodCgpIC8gMikgLSAoY29udHJvbFNp
emUgLyAyKTsKKyAgICAgICAgcmV0dmFsLmZCb3R0b20gPSByZXR2YWwuZlRvcCArIGNvbnRyb2xT
aXplIC0gMTsKKworICAgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KKworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiByZWN0OworICAgIH0KK30KKworfQorCitXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpXZWJUZXN0VGhlbWVDb250cm9sV2luKFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IFNr
SVJlY3QmIGlyZWN0LCBUeXBlIGN0eXBlLCBTdGF0ZSBjc3RhdGUpCisgICAgOiBtX2NhbnZhcyhj
YW52YXMpCisgICAgLCBtX2lyZWN0KHZhbGlkYXRlKGlyZWN0LCBjdHlwZSkpCisgICAgLCBtX3R5
cGUoY3R5cGUpCisgICAgLCBtX3N0YXRlKGNzdGF0ZSkKKyAgICAsIG1fbGVmdChtX2lyZWN0LmZM
ZWZ0KQorICAgICwgbV9yaWdodChtX2lyZWN0LmZSaWdodCkKKyAgICAsIG1fdG9wKG1faXJlY3Qu
ZlRvcCkKKyAgICAsIG1fYm90dG9tKG1faXJlY3QuZkJvdHRvbSkKKyAgICAsIG1faGVpZ2h0KG1f
aXJlY3QuaGVpZ2h0KCkpCisgICAgLCBtX3dpZHRoKG1faXJlY3Qud2lkdGgoKSkKKyAgICAsIG1f
ZWRnZUNvbG9yKGVkZ2VDb2xvcikKKyAgICAsIG1fYmdDb2xvcihiZ0NvbG9yc1tjc3RhdGVdKQor
ICAgICwgbV9mZ0NvbG9yKGZnQ29sb3IpCit7Cit9CisKK1dlYlRlc3RUaGVtZUNvbnRyb2xXaW46
On5XZWJUZXN0VGhlbWVDb250cm9sV2luKCkKK3sKK30KKwordm9pZCBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpib3goY29uc3QgU2tJUmVjdCYgcmVjdCwgU2tDb2xvciBmaWxsQ29sb3IpCit7Cisg
ICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0
eWxlKTsKKyAgICBwYWludC5zZXRDb2xvcihmaWxsQ29sb3IpOworICAgIG1fY2FudmFzLT5kcmF3
SVJlY3QocmVjdCwgcGFpbnQpOworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOwor
ICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFz
LT5kcmF3SVJlY3QocmVjdCwgcGFpbnQpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OmxpbmUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0NvbG9yIGNvbG9yKQor
eworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgIG1f
Y2FudmFzLT5kcmF3TGluZShTa0ludFRvU2NhbGFyKHgwKSwgU2tJbnRUb1NjYWxhcih5MCksIFNr
SW50VG9TY2FsYXIoeDEpLCBTa0ludFRvU2NhbGFyKHkxKSwgcGFpbnQpOworfQorCit2b2lkIFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OnRyaWFuZ2xlKGludCB4MCwgaW50IHkwLCBpbnQgeDEsIGlu
dCB5MSwgaW50IHgyLCBpbnQgeTIsIFNrQ29sb3IgY29sb3IpCit7CisgICAgU2tQYXRoIHBhdGg7
CisgICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKKyAgICBw
YWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAgcGF0aC5pbmNSZXNlcnZl
KDQpOworICAgIHBhdGgubW92ZVRvKFNrSW50VG9TY2FsYXIoeDApLCBTa0ludFRvU2NhbGFyKHkw
KSk7CisgICAgcGF0aC5saW5lVG8oU2tJbnRUb1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEp
KTsKKyAgICBwYXRoLmxpbmVUbyhTa0ludFRvU2NhbGFyKHgyKSwgU2tJbnRUb1NjYWxhcih5Mikp
OworICAgIHBhdGguY2xvc2UoKTsKKyAgICBtX2NhbnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQp
OworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxl
KFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3UGF0aChwYXRoLCBw
YWludCk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6cm91bmRSZWN0KFNrQ29s
b3IgY29sb3IpCit7CisgICAgU2tSZWN0IHJlY3Q7CisgICAgU2tTY2FsYXIgcmFkaXVzID0gU2tJ
bnRUb1NjYWxhcig1KTsKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgcmVjdC5zZXQobV9pcmVj
dCk7CisgICAgcGFpbnQuc2V0Q29sb3IoY29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFp
bnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd1JvdW5kUmVjdChyZWN0LCByYWRp
dXMsIHJhZGl1cywgcGFpbnQpOworCisgICAgcGFpbnQuc2V0Q29sb3IobV9lZGdlQ29sb3IpOwor
ICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOworICAgIG1fY2FudmFz
LT5kcmF3Um91bmRSZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7Cit9CisKK3ZvaWQg
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6b3ZhbChTa0NvbG9yIGNvbG9yKQoreworICAgIFNrUmVj
dCByZWN0OworICAgIFNrUGFpbnQgcGFpbnQ7CisKKyAgICByZWN0LnNldChtX2lyZWN0KTsKKyAg
ICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0Zp
bGxfU3R5bGUpOworICAgIG1fY2FudmFzLT5kcmF3T3ZhbChyZWN0LCBwYWludCk7CisKKyAgICBw
YWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7CisgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6
a1N0cm9rZV9TdHlsZSk7CisgICAgbV9jYW52YXMtPmRyYXdPdmFsKHJlY3QsIHBhaW50KTsKK30K
Kwordm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpjaXJjbGUoU2tTY2FsYXIgcmFkaXVzLCBT
a0NvbG9yIGNvbG9yKQoreworICAgIFNrU2NhbGFyIGN5ID0gU2tJbnRUb1NjYWxhcihtX3RvcCAg
KyBtX2hlaWdodCAvIDIpOworICAgIFNrU2NhbGFyIGN4ID0gU2tJbnRUb1NjYWxhcihtX2xlZnQg
KyBtX3dpZHRoIC8gMik7CisgICAgU2tQYWludCBwYWludDsKKworICAgIHBhaW50LnNldENvbG9y
KGNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7CisgICAg
bV9jYW52YXMtPmRyYXdDaXJjbGUoY3gsIGN5LCByYWRpdXMsIHBhaW50KTsKKworICAgIHBhaW50
LnNldENvbG9yKG1fZWRnZUNvbG9yKTsKKyAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ry
b2tlX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFp
bnQpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Om5lc3RlZEJveGVzKGludCBp
bmRlbnRMZWZ0LCBpbnQgaW5kZW50VG9wLCBpbnQgaW5kZW50UmlnaHQsIGludCBpbmRlbnRCb3R0
b20sIFNrQ29sb3Igb3V0ZXJDb2xvciwgU2tDb2xvciBpbm5lckNvbG9yKQoreworICAgIFNrSVJl
Y3QgbGlyZWN0OworICAgIGJveChtX2lyZWN0LCBvdXRlckNvbG9yKTsKKyAgICBsaXJlY3Quc2V0
KG1faXJlY3QuZkxlZnQgKyBpbmRlbnRMZWZ0LCBtX2lyZWN0LmZUb3AgKyBpbmRlbnRUb3AsIG1f
aXJlY3QuZlJpZ2h0IC0gaW5kZW50UmlnaHQsIG1faXJlY3QuZkJvdHRvbSAtIGluZGVudEJvdHRv
bSk7CisgICAgYm94KGxpcmVjdCwgaW5uZXJDb2xvcik7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6bWFya1N0YXRlKCkKK3sKKyAgICAvLyBUaGUgaG9yaXpvbnRhbCBsaW5lcyBp
biBhIHJlYWQgb25seSBjb250cm9sIGFyZSBzcGFjZWQgYnkgdGhpcyBhbW91bnQuCisgICAgY29u
c3QgaW50IHJlYWRPbmx5TGluZU9mZnNldCA9IDU7CisKKyAgICAvLyBUaGUgbGVuZ3RoIG9mIGEg
dHJpYW5nbGUgc2lkZSBmb3IgdGhlIGNvcm5lciBtYXJrcy4KKyAgICBjb25zdCBpbnQgdHJpYW5n
bGVTaXplID0gNTsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgVW5rbm93blN0
YXRlOgorICAgIGNhc2UgRGlzYWJsZWRTdGF0ZToKKyAgICBjYXNlIE5vcm1hbFN0YXRlOgorICAg
IGNhc2UgSW5kZXRlcm1pbmF0ZVN0YXRlOgorICAgICAgICAvLyBEb24ndCB2aXN1YWxseSBtYXJr
IHRoZXNlIHN0YXRlcyAoY29sb3IgaXMgZW5vdWdoKS4KKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBSZWFkT25seVN0YXRlOgorICAgICAgICAvLyBEcmF3aW5nIGxpbmVzIGFjcm9zcyB0aGUgY29u
dHJvbC4KKyAgICAgICAgZm9yIChpbnQgaSA9IG1fdG9wICsgcmVhZE9ubHlMaW5lT2Zmc2V0OyBp
IDwgbV9ib3R0b207IGkgKz0gcmVhZE9ubHlMaW5lT2Zmc2V0KQorICAgICAgICAgICAgbGluZSht
X2xlZnQgKyAxLCBpLCBtX3JpZ2h0IC0gMSwgaSwgcmVhZE9ubHlDb2xvcik7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBIb3RTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGlu
IHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KKyAgICAgICAgdHJpYW5nbGUo
bV9sZWZ0LCBtX3RvcCwgbV9sZWZ0ICsgdHJpYW5nbGVTaXplLCBtX3RvcCwgbV9sZWZ0LCBtX3Rv
cCArIHRyaWFuZ2xlU2l6ZSwgbV9lZGdlQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgSG92ZXJTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSB1cHBlciBy
aWdodCBjb3JuZXIgb2YgdGhlIGNvbnRyb2wuCisgICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQsIG1f
dG9wLCBtX3JpZ2h0LCBtX3RvcCArIHRyaWFuZ2xlU2l6ZSwgbV9yaWdodCAtIHRyaWFuZ2xlU2l6
ZSwgbV90b3AsIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZvY3Vz
ZWRTdGF0ZToKKyAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSBib3R0b20gcmlnaHQg
Y29ybmVyIG9mIHRoZSBjb250cm9sLgorICAgICAgICB0cmlhbmdsZShtX3JpZ2h0LCBtX2JvdHRv
bSwgbV9yaWdodCAtIHRyaWFuZ2xlU2l6ZSwgbV9ib3R0b20sIG1fcmlnaHQsIG1fYm90dG9tIC0g
dHJpYW5nbGVTaXplLCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBQ
cmVzc2VkU3RhdGU6CisgICAgICAgIC8vIERyYXcgYSB0cmlhbmdsZSBpbiB0aGUgYm90dG9tIGxl
ZnQgY29ybmVyIG9mIHRoZSBjb250cm9sLgorICAgICAgICB0cmlhbmdsZShtX2xlZnQsIG1fYm90
dG9tLCBtX2xlZnQsIG1fYm90dG9tIC0gdHJpYW5nbGVTaXplLCBtX2xlZnQgKyB0cmlhbmdsZVNp
emUsIG1fYm90dG9tLCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVs
dDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6ZHJhdygpCit7CisgICAg
aW50IGhhbGZXaWR0aCA9IG1fd2lkdGggLyAyOworICAgIGludCBoYWxmSGVpZ2h0ID0gbV9oZWln
aHQgLyAyOworICAgIGludCBxdWFydGVyV2lkdGggPSBtX3dpZHRoIC8gNDsKKyAgICBpbnQgcXVh
cnRlckhlaWdodCA9IG1faGVpZ2h0IC8gNDsKKworICAgIC8vIEluZGVudCBhbW91bnRzIGZvciB0
aGUgY2hlY2sgaW4gYSBjaGVja2JveCBvciByYWRpbyBidXR0b24uCisgICAgY29uc3QgaW50IGNo
ZWNrSW5kZW50ID0gMzsKKworICAgIC8vIEluZGVudCBhbW91bnRzIGZvciBzaG9ydCBhbmQgbG9u
ZyBzaWRlcyBvZiB0aGUgc2Nyb2xsYmFyIG5vdGNoZXMuCisgICAgY29uc3QgaW50IG5vdGNoTG9u
Z09mZnNldCA9IDE7CisgICAgY29uc3QgaW50IG5vdGNoU2hvcnRPZmZzZXQgPSA0OworICAgIGNv
bnN0IGludCBub09mZnNldCA9IDA7CisKKyAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3IgdGhlIHNo
b3J0IGFuZCBsb25nIHNpZGVzIG9mIGEgc2Nyb2xsIHRodW1iIGJveC4KKyAgICBjb25zdCBpbnQg
dGh1bWJMb25nSW5kZW50ID0gMDsKKyAgICBjb25zdCBpbnQgdGh1bWJTaG9ydEluZGVudCA9IDI7
CisKKyAgICAvLyBJbmRlbnRzIGZvciB0aGUgY3Jvc3NoYXRjaCBvbiBhIHNjcm9sbCBncmlwLgor
ICAgIGNvbnN0IGludCBncmlwTG9uZ0luZGVudCA9IDM7CisgICAgY29uc3QgaW50IGdyaXBTaG9y
dEluZGVudCA9IDU7CisKKyAgICAvLyBJbmRlbnRzIGZvciB0aGUgdGhlIHNsaWRlciB0cmFjay4K
KyAgICBjb25zdCBpbnQgc2xpZGVySW5kZW50ID0gMjsKKworICAgIHN3aXRjaCAobV90eXBlKSB7
CisgICAgY2FzZSBVbmtub3duVHlwZToKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVGV4dEZpZWxkVHlwZToKKyAgICAgICAg
Ly8gV2UgcmVuZGVyIHRoaXMgYnkgaGFuZCBvdXRzaWRlIG9mIHRoaXMgZnVuY3Rpb24uCisgICAg
ICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIFB1c2hCdXR0b25UeXBlOgorICAgICAgICAvLyBwdXNoIGJ1dHRvbnMgcmVuZGVyIGFzIGEg
cm91bmRlZCByZWN0YW5nbGUKKyAgICAgICAgcm91bmRSZWN0KG1fYmdDb2xvcik7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBVbmNoZWNrZWRCb3hUeXBlOgorICAgICAgICAvLyBVbmNoZWNr
ZWQgYm94ZXMgYXJlIHNpbXBseSBwbGFpbiBib3hlcy4KKyAgICAgICAgYm94KG1faXJlY3QsIG1f
YmdDb2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBDaGVja2VkQm94VHlwZToKKyAg
ICAgICAgbmVzdGVkQm94ZXMoY2hlY2tJbmRlbnQsIGNoZWNrSW5kZW50LCBjaGVja0luZGVudCwg
Y2hlY2tJbmRlbnQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIEluZGV0ZXJtaW5hdGVDaGVja2JveFR5cGU6CisgICAgICAgIC8vIEluZGV0ZXJtaW5h
dGUgY2hlY2tib3ggaXMgYSBib3ggY29udGFpbmluZyAnLScuCisgICAgICAgIG5lc3RlZEJveGVz
KGNoZWNrSW5kZW50LCBoYWxmSGVpZ2h0LCBjaGVja0luZGVudCwgaGFsZkhlaWdodCwgbV9iZ0Nv
bG9yLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgVW5jaGVja2VkUmFk
aW9UeXBlOgorICAgICAgICBjaXJjbGUoU2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0KSwgbV9iZ0Nv
bG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIENoZWNrZWRSYWRpb1R5cGU6CisgICAg
ICAgIGNpcmNsZShTa0ludFRvU2NhbGFyKGhhbGZIZWlnaHQpLCBtX2JnQ29sb3IpOworICAgICAg
ICBjaXJjbGUoU2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0IC0gY2hlY2tJbmRlbnQpLCBtX2ZnQ29s
b3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRyYWNrQmFj
a1R5cGU6IHsKKyAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIGxlZnQu
CisgICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZkhlaWdodCAtIG5vdGNoTG9uZ09mZnNldDsK
KyAgICAgICAgaW50IHNob3J0T2Zmc2V0ID0gbV93aWR0aCAtIG5vdGNoU2hvcnRPZmZzZXQ7Cisg
ICAgICAgIG5lc3RlZEJveGVzKG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9u
Z09mZnNldCwgbV9iZ0NvbG9yLCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIGNhc2UgSG9yaXpvbnRhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6IHsKKyAgICAgICAg
Ly8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIHJpZ2h0LgorICAgICAgICBpbnQgbG9u
Z09mZnNldCAgPSBoYWxmSGVpZ2h0IC0gbm90Y2hMb25nT2Zmc2V0OworICAgICAgICBpbnQgc2hv
cnRPZmZzZXQgPSBtX3dpZHRoIC0gbm90Y2hTaG9ydE9mZnNldDsKKyAgICAgICAgbmVzdGVkQm94
ZXMoc2hvcnRPZmZzZXQsIGxvbmdPZmZzZXQsIG5vT2Zmc2V0LCBsb25nT2Zmc2V0LCBtX2JnQ29s
b3IsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgVmVydGlj
YWxTY3JvbGxUcmFja0JhY2tUeXBlOiB7CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5v
dGNoIGF0IHRoZSB0b3AuCisgICAgICAgIGludCBsb25nT2Zmc2V0ICA9IGhhbGZXaWR0aCAtIG5v
dGNoTG9uZ09mZnNldDsKKyAgICAgICAgaW50IHNob3J0T2Zmc2V0ID0gbV9oZWlnaHQgLSBub3Rj
aFNob3J0T2Zmc2V0OworICAgICAgICBuZXN0ZWRCb3hlcyhsb25nT2Zmc2V0LCBub09mZnNldCwg
bG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgY2FzZSBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGU6
IHsKKyAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgbm90Y2ggYXQgdGhlIGJvdHRvbS4KKyAg
ICAgICAgaW50IGxvbmdPZmZzZXQgID0gaGFsZldpZHRoIC0gbm90Y2hMb25nT2Zmc2V0OworICAg
ICAgICBpbnQgc2hvcnRPZmZzZXQgPSBtX2hlaWdodCAtIG5vdGNoU2hvcnRPZmZzZXQ7CisgICAg
ICAgIG5lc3RlZEJveGVzKGxvbmdPZmZzZXQsIHNob3J0T2Zmc2V0LCBsb25nT2Zmc2V0LCBub09m
ZnNldCwgbV9iZ0NvbG9yLCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAg
ICBjYXNlIEhvcml6b250YWxTY3JvbGxUaHVtYlR5cGU6CisgICAgICAgIC8vIERyYXcgYSBuYXJy
b3dlciBib3ggb24gdG9wIG9mIHRoZSBvdXRzaWRlIGJveC4KKyAgICAgICAgbmVzdGVkQm94ZXMo
dGh1bWJMb25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50LCB0aHVtYkxvbmdJbmRlbnQsIHRodW1i
U2hvcnRJbmRlbnQsIG1fYmdDb2xvciwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIFZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlOgorICAgICAgICAvLyBEcmF3IGEgc2hvcnRl
ciBib3ggb24gdG9wIG9mIHRoZSBvdXRzaWRlIGJveC4KKyAgICAgICAgbmVzdGVkQm94ZXModGh1
bWJTaG9ydEluZGVudCwgdGh1bWJMb25nSW5kZW50LCB0aHVtYlNob3J0SW5kZW50LCB0aHVtYkxv
bmdJbmRlbnQsIG1fYmdDb2xvciwgbV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIEhvcml6b250YWxTbGlkZXJUaHVtYlR5cGU6CisgICAgY2FzZSBWZXJ0aWNhbFNsaWRlclRo
dW1iVHlwZToKKyAgICAgICAgLy8gU2xpZGVyIHRodW1icyBhcmUgb3ZhbHMuCisgICAgICAgIG92
YWwobV9iZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEhvcml6b250YWxTY3Jv
bGxHcmlwVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgaG9yaXpvbnRhbCBjcm9zc2hhdGNoIGZv
ciB0aGUgZ3JpcC4KKyAgICAgICAgaW50IGxvbmdPZmZzZXQgPSBoYWxmV2lkdGggLSBncmlwTG9u
Z0luZGVudDsKKyAgICAgICAgbGluZShtX2xlZnQgKyBncmlwTG9uZ0luZGVudCwgbV90b3AgKyBo
YWxmSGVpZ2h0LCBtX3JpZ2h0IC0gZ3JpcExvbmdJbmRlbnQsIG1fdG9wICsgaGFsZkhlaWdodCwg
bV9mZ0NvbG9yKTsKKyAgICAgICAgbGluZShtX2xlZnQgKyBsb25nT2Zmc2V0LCBtX3RvcCArIGdy
aXBTaG9ydEluZGVudCwgbV9sZWZ0ICsgbG9uZ09mZnNldCwgbV9ib3R0b20gLSBncmlwU2hvcnRJ
bmRlbnQsIG1fZmdDb2xvcik7CisgICAgICAgIGxpbmUobV9yaWdodCAtIGxvbmdPZmZzZXQsIG1f
dG9wICsgZ3JpcFNob3J0SW5kZW50LCBtX3JpZ2h0IC0gbG9uZ09mZnNldCwgbV9ib3R0b20gLSBn
cmlwU2hvcnRJbmRlbnQsIG1fZmdDb2xvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGNhc2UgVmVydGljYWxTY3JvbGxHcmlwVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgdmVydGlj
YWwgY3Jvc3NoYXRjaCBmb3IgdGhlIGdyaXAuCisgICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFs
ZkhlaWdodCAtIGdyaXBMb25nSW5kZW50OworICAgICAgICBsaW5lKG1fbGVmdCArIGhhbGZXaWR0
aCwgbV90b3AgKyBncmlwTG9uZ0luZGVudCwgbV9sZWZ0ICsgaGFsZldpZHRoLCBtX2JvdHRvbSAt
IGdyaXBMb25nSW5kZW50LCBtX2ZnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCArIGdyaXBT
aG9ydEluZGVudCwgbV90b3AgKyBsb25nT2Zmc2V0LCBtX3JpZ2h0IC0gZ3JpcFNob3J0SW5kZW50
LCBtX3RvcCArIGxvbmdPZmZzZXQsIG1fZmdDb2xvcik7CisgICAgICAgIGxpbmUobV9sZWZ0ICsg
Z3JpcFNob3J0SW5kZW50LCBtX2JvdHRvbSAtIGxvbmdPZmZzZXQsIG1fcmlnaHQgLSBncmlwU2hv
cnRJbmRlbnQsIG1fYm90dG9tIC0gbG9uZ09mZnNldCwgbV9mZ0NvbG9yKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorCisgICAgY2FzZSBMZWZ0QXJyb3dUeXBlOgorICAgICAgICAvLyBEcmF3IGEg
bGVmdCBhcnJvdyBpbnNpZGUgYSBib3guCisgICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3Ip
OworICAgICAgICB0cmlhbmdsZShtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCArIHF1YXJ0
ZXJIZWlnaHQsIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdo
dCwgbV9sZWZ0ICsgcXVhcnRlcldpZHRoLCBtX3RvcCArIGhhbGZIZWlnaHQsIG1fZmdDb2xvcik7
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSaWdodEFycm93VHlwZToKKyAgICAgICAgLy8g
RHJhdyBhIGxlZnQgYXJyb3cgaW5zaWRlIGEgYm94LgorICAgICAgICBib3gobV9pcmVjdCwgbV9i
Z0NvbG9yKTsKKyAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICsgcXVhcnRlcldpZHRoLCBtX3RvcCAr
IHF1YXJ0ZXJIZWlnaHQsIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fdG9wICsgaGFsZkhlaWdo
dCwgbV9sZWZ0ICsgcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdD
b2xvcik7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBVcEFycm93VHlwZToKKyAgICAgICAg
Ly8gRHJhdyBhbiB1cCBhcnJvdyBpbnNpZGUgYSBib3guCisgICAgICAgIGJveChtX2lyZWN0LCBt
X2JnQ29sb3IpOworICAgICAgICB0cmlhbmdsZShtX2xlZnQgKyBxdWFydGVyV2lkdGgsIG1fYm90
dG9tIC0gcXVhcnRlckhlaWdodCwgbV9sZWZ0ICsgaGFsZldpZHRoLCBtX3RvcCArIHF1YXJ0ZXJI
ZWlnaHQsIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwg
bV9mZ0NvbG9yKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIERvd25BcnJvd1R5cGU6Cisg
ICAgICAgIC8vIERyYXcgYSBkb3duIGFycm93IGluc2lkZSBhIGJveC4KKyAgICAgICAgYm94KG1f
aXJlY3QsIG1fYmdDb2xvcik7CisgICAgICAgIHRyaWFuZ2xlKG1fbGVmdCArIHF1YXJ0ZXJXaWR0
aCwgbV90b3AgKyBxdWFydGVySGVpZ2h0LCBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX3RvcCAr
IHF1YXJ0ZXJIZWlnaHQsIG1fbGVmdCArIGhhbGZXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVp
Z2h0LCBtX2ZnQ29sb3IpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgSG9yaXpvbnRhbFNs
aWRlclRyYWNrVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgbmFycm93IHJlY3QgZm9yIHRoZSB0
cmFjayBwbHVzIGJveCBoYXRjaGVzIG9uIHRoZSBlbmRzLgorICAgICAgICBTa0lSZWN0IGxpcmVj
dDsKKyAgICAgICAgbGlyZWN0ID0gbV9pcmVjdDsKKyAgICAgICAgbGlyZWN0Lmluc2V0KG5vT2Zm
c2V0LCBoYWxmSGVpZ2h0IC0gc2xpZGVySW5kZW50KTsKKyAgICAgICAgYm94KGxpcmVjdCwgbV9i
Z0NvbG9yKTsKKyAgICAgICAgbGluZShtX2xlZnQsICBtX3RvcCwgbV9sZWZ0LCAgbV9ib3R0b20s
IG1fZWRnZUNvbG9yKTsKKyAgICAgICAgbGluZShtX3JpZ2h0LCBtX3RvcCwgbV9yaWdodCwgbV9i
b3R0b20sIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBW
ZXJ0aWNhbFNsaWRlclRyYWNrVHlwZTogeworICAgICAgICAvLyBEcmF3IGEgbmFycm93IHJlY3Qg
Zm9yIHRoZSB0cmFjayBwbHVzIGJveCBoYXRjaGVzIG9uIHRoZSBlbmRzLgorICAgICAgICBTa0lS
ZWN0IGxpcmVjdDsKKyAgICAgICAgbGlyZWN0ID0gbV9pcmVjdDsKKyAgICAgICAgbGlyZWN0Lmlu
c2V0KGhhbGZXaWR0aCAtIHNsaWRlckluZGVudCwgbm9PZmZzZXQpOworICAgICAgICBib3gobGly
ZWN0LCBtX2JnQ29sb3IpOworICAgICAgICBsaW5lKG1fbGVmdCwgbV90b3AsIG1fcmlnaHQsIG1f
dG9wLCBtX2VkZ2VDb2xvcik7CisgICAgICAgIGxpbmUobV9sZWZ0LCBtX2JvdHRvbSwgbV9yaWdo
dCwgbV9ib3R0b20sIG1fZWRnZUNvbG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Y2FzZSBEcm9wRG93bkJ1dHRvblR5cGU6CisgICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIGJp
ZyBkb3duIGFycm93IG9uIHRvcC4KKyAgICAgICAgYm94KG1faXJlY3QsIG1fYmdDb2xvcik7Cisg
ICAgICAgIHRyaWFuZ2xlKG1fbGVmdCArIHF1YXJ0ZXJXaWR0aCwgbV90b3AsIG1fcmlnaHQgLSBx
dWFydGVyV2lkdGgsIG1fdG9wLCBtX2xlZnQgKyBoYWxmV2lkdGgsIG1fYm90dG9tLCBtX2ZnQ29s
b3IpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbWFya1N0YXRl
KCk7Cit9CisKKy8vIEJlY2F1c2UgcmVuZGVyaW5nIGEgdGV4dCBmaWVsZCBpcyBkZXBlbmRlbnQg
b24gaW5wdXQKKy8vIHBhcmFtZXRlcnMgdGhlIG90aGVyIGNvbnRyb2xzIGRvbid0IGhhdmUsIHdl
IHJlbmRlciBpdCBkaXJlY3RseQorLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIG92ZXJjb21wbGlj
YXRlIGRyYXcoKSBmdXJ0aGVyLgordm9pZCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpkcmF3VGV4
dEZpZWxkKGJvb2wgZHJhd0VkZ2VzLCBib29sIGZpbGxDb250ZW50QXJlYSwgU2tDb2xvciBjb2xv
cikKK3sKKyAgICBTa1BhaW50IHBhaW50OworCisgICAgaWYgKGZpbGxDb250ZW50QXJlYSkgewor
ICAgICAgICBwYWludC5zZXRDb2xvcihjb2xvcik7CisgICAgICAgIHBhaW50LnNldFN0eWxlKFNr
UGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0
LCBwYWludCk7CisgICAgfQorICAgIGlmIChkcmF3RWRnZXMpIHsKKyAgICAgICAgcGFpbnQuc2V0
Q29sb3IobV9lZGdlQ29sb3IpOworICAgICAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ry
b2tlX1N0eWxlKTsKKyAgICAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7
CisgICAgfQorCisgICAgbWFya1N0YXRlKCk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6ZHJhd1Byb2dyZXNzQmFyKGNvbnN0IFNrSVJlY3QmIGZpbGxSZWN0KQoreworICAgIFNr
UGFpbnQgcGFpbnQ7CisKKyAgICBwYWludC5zZXRDb2xvcihtX2JnQ29sb3IpOworICAgIHBhaW50
LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0
KG1faXJlY3QsIHBhaW50KTsKKworICAgIC8vIEVtdWxhdGUgY2xpcHBpbmcKKyAgICBTa0lSZWN0
IHRvZmlsbDsKKyAgICB0b2ZpbGwuaW50ZXJzZWN0KG1faXJlY3QsIGZpbGxSZWN0KTsKKyAgICBw
YWludC5zZXRDb2xvcihtX2ZnQ29sb3IpOworICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtG
aWxsX1N0eWxlKTsKKyAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHRvZmlsbCwgcGFpbnQpOworCisg
ICAgbWFya1N0YXRlKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRyb2xXaW4uaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUNvbnRy
b2xXaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43YmFkMThlMjBhYThhYjYzNzEyNzY2ZjQ0OGQ3NzFmYTMyOTQx
MTRkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lQ29udHJvbFdpbi5oCkBAIC0wLDAgKzEsMjAwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbiBpbXBsZW1lbnRzIHRoZSBnZW5lcmljIHJlbmRlcmluZyBv
ZiBjb250cm9scworLy8gbmVlZGVkIGJ5IFdlYlRoZW1lRW5naW5lRFJUV2luLiBTZWUgdGhlIGNv
bW1lbnRzIGluIHRoYXQgY2xhc3MKKy8vIGhlYWRlciBmaWxlIGZvciB3aHkgdGhpcyBjbGFzcyBp
cyBuZWVkZWQgYW5kIHVzZWQuCisvLworLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgZ2VuZXJp
YyBzZXQgb2Ygd2lkZ2V0cyB1c2luZyBTa2lhLiBUaGUgd2lkZ2V0cworLy8gYXJlIG9wdGltaXpl
ZCBmb3IgdGVzdGFiaWxpdHksIG5vdCBhIHBsZWFzaW5nIGFwcGVhcmFuY2UuCisvLworCisjaWZu
ZGVmIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW5faAorI2RlZmluZSBXZWJUZXN0VGhlbWVDb250cm9s
V2luX2gKKworI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ29sb3Iu
aCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKwor
Ly8gU2tpYSBmb3J3YXJkIGRlY2xhcmF0aW9ucworY2xhc3MgU2tDYW52YXM7CisKK25hbWVzcGFj
ZSBXZWJUZXN0UnVubmVyIHsKKworY2xhc3MgV2ViVGVzdFRoZW1lQ29udHJvbFdpbiB7CitwdWJs
aWM6CisgICAgLy8gVGhpcyBsaXN0IG9mIHN0YXRlcyBtb3N0bHkgbWlycm9ycyB0aGUgbGlzdCBp
biBXZWJDb3JlL3BsYXRmb3JtL1RoZW1lVHlwZXMuaAorICAgIC8vIGJ1dCBpcyBtYWludGFpbmVk
IHNlcGFyYXRlbHkgc2luY2UgdGhhdCBpc24ndCBwdWJsaWMgYW5kIGFsc28gdG8gbWluaW1pemUK
KyAgICAvLyBkZXBlbmRlbmNpZXMuCisgICAgLy8gTm90ZSB0aGF0IHRoZSBXZWJLaXQgVGhlbWVU
eXBlcyBzZWVtIHRvIGltcGx5IHRoYXQgYSBjb250cm9sIGNhbiBiZQorICAgIC8vIGluIG11bHRp
cGxlIHN0YXRlcyBzaW11bHRhbmVvdXNseSBidXQgV2ViVGhlbWVFbmdpbmUgb25seSBhbGxvd3Mg
Zm9yCisgICAgLy8gYSBzaW5nbGUgc3RhdGUgYXQgYSB0aW1lLgorICAgIC8vCisgICAgLy8gU29t
ZSBkZWZpbml0aW9ucyBmb3IgdGhlIHZhcmlvdXMgc3RhdGVzOgorICAgIC8vICAgRGlzYWJsZWQg
LSBpbmRpY2F0ZXMgdGhhdCBhIGNvbnRyb2wgY2FuJ3QgYmUgbW9kaWZpZWQgb3Igc2VsZWN0ZWQK
KyAgICAvLyAgICAgICAgICAgICAgKGNvcnJlc3BvbmRzIHRvIEhUTUwgJ2Rpc2FibGVkJyBhdHRy
aWJ1dGUpCisgICAgLy8gICBSZWFkT25seSAtIGluZGljYXRlcyB0aGF0IGEgY29udHJvbCBjYW4n
dCBiZSBtb2RpZmllZCBidXQgY2FuIGJlCisgICAgLy8gICAgICAgICAgICAgIHNlbGVjdGVkCisg
ICAgLy8gICBOb3JtYWwgICAtIHRoZSBub3JtYWwgc3RhdGUgb2YgY29udHJvbCBvbiB0aGUgcGFn
ZSB3aGVuIGl0IGlzbid0CisgICAgLy8gICAgICAgICAgICAgIGZvY3VzZWQgb3Igb3RoZXJ3aXNl
IGFjdGl2ZQorICAgIC8vICAgSG90ICAgICAgLSB3aGVuIHRoZSBtb3VzZSBpcyBob3ZlcmluZyBv
dmVyIGEgcGFydCBvZiB0aGUgY29udHJvbCwKKyAgICAvLyAgICAgICAgICAgICAgYWxsIHRoZSBv
dGhlciBwYXJ0cyBhcmUgY29uc2lkZXJlZCAiaG90IgorICAgIC8vICAgSG92ZXIgICAgLSB3aGVu
IHRoZSBtb3VzZSBpcyBkaXJlY3RseSBvdmVyIGEgY29udHJvbCAodGhlIENTUworICAgIC8vICAg
ICAgICAgICAgICAgOmhvdmVyIHBzZXVkby1jbGFzcykKKyAgICAvLyAgIEZvY3VzZWQgIC0gd2hl
biB0aGUgY29udHJvbCBoYXMgdGhlIGtleWJvYXJkIGZvY3VzCisgICAgLy8gICBQcmVzc2VkICAt
IHdoZW4gdGhlIGNvbnRyb2wgaXMgYmVpbmcgdHJpZ2dlcmVkIChieSBhIG1vdXNlZG93biBvcgor
ICAgIC8vICAgICAgICAgICAgICBhIGtleSBldmVudCkuCisgICAgLy8gICBJbmRldGVybWluYXRl
IC0gd2hlbiBzZXQgdG8gaW5kZXRlcm1pbmF0ZSAob25seSBmb3IgcHJvZ3Jlc3MgYmFyKQorICAg
IGVudW0gU3RhdGUgeworICAgICAgICBVbmtub3duU3RhdGUgPSAwLAorICAgICAgICBEaXNhYmxl
ZFN0YXRlLAorICAgICAgICBSZWFkT25seVN0YXRlLAorICAgICAgICBOb3JtYWxTdGF0ZSwKKyAg
ICAgICAgSG90U3RhdGUsCisgICAgICAgIEhvdmVyU3RhdGUsCisgICAgICAgIEZvY3VzZWRTdGF0
ZSwKKyAgICAgICAgUHJlc3NlZFN0YXRlLAorICAgICAgICBJbmRldGVybWluYXRlU3RhdGUKKyAg
ICB9OworCisgICAgLy8gVGhpcyBsaXN0IG9mIHR5cGVzIG1vc3RseSBtaXJyb3JzIHRoZSBsaXN0
IGluCisgICAgLy8gV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmggYnV0IGlzIG1haW50YWlu
ZWQKKyAgICAvLyBzZXBhcmF0ZWx5IHNpbmNlIHRoYXQgaXNuJ3QgcHVibGljIGFuZCBhbHNvIHRv
IG1pbmltaXplIGRlcGVuZGVuY2llcy4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB3aGF0IHRo
ZSB1c2VyIG1pZ2h0IHRoaW5rIG9mIGFzIGEgc2luZ2xlIGNvbnRyb2wgY2FuIGJlCisgICAgLy8g
bWFkZSB1cCBvZiBtdWx0aXBsZSBwYXJ0cy4gRm9yIGV4YW1wbGUsIGEgc2luZ2xlIHNjcm9sbCBi
YXIgY29udGFpbnMKKyAgICAvLyBzaXggY2xpY2thYmxlIHBhcnRzIC0gdHdvIGFycm93cywgdGhl
ICJ0aHVtYiIgaW5kaWNhdGluZyB0aGUgY3VycmVudAorICAgIC8vIHBvc2l0aW9uIG9uIHRoZSBi
YXIsIHRoZSBvdGhlciB0d28gcGFydHMgb2YgdGhlIGJhciAoYmVmb3JlIGFuZCBhZnRlcgorICAg
IC8vIHRoZSB0aHVtYikgYW5kIHRoZSAiZ3JpcHBlciIgb24gdGhlIHRodW1iIGl0c2VsZi4KKyAg
ICAvLworICAgIGVudW0gVHlwZSB7CisgICAgICAgIFVua25vd25UeXBlID0gMCwKKyAgICAgICAg
VGV4dEZpZWxkVHlwZSwKKyAgICAgICAgUHVzaEJ1dHRvblR5cGUsCisgICAgICAgIFVuY2hlY2tl
ZEJveFR5cGUsCisgICAgICAgIENoZWNrZWRCb3hUeXBlLAorICAgICAgICBJbmRldGVybWluYXRl
Q2hlY2tib3hUeXBlLAorICAgICAgICBVbmNoZWNrZWRSYWRpb1R5cGUsCisgICAgICAgIENoZWNr
ZWRSYWRpb1R5cGUsCisgICAgICAgIEhvcml6b250YWxTY3JvbGxUcmFja0JhY2tUeXBlLAorICAg
ICAgICBIb3Jpem9udGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZSwKKyAgICAgICAgSG9yaXpvbnRh
bFNjcm9sbFRodW1iVHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBlLAorICAg
ICAgICBWZXJ0aWNhbFNjcm9sbFRyYWNrQmFja1R5cGUsCisgICAgICAgIFZlcnRpY2FsU2Nyb2xs
VHJhY2tGb3J3YXJkVHlwZSwKKyAgICAgICAgVmVydGljYWxTY3JvbGxUaHVtYlR5cGUsCisgICAg
ICAgIFZlcnRpY2FsU2Nyb2xsR3JpcFR5cGUsCisgICAgICAgIExlZnRBcnJvd1R5cGUsCisgICAg
ICAgIFJpZ2h0QXJyb3dUeXBlLAorICAgICAgICBVcEFycm93VHlwZSwKKyAgICAgICAgRG93bkFy
cm93VHlwZSwKKyAgICAgICAgSG9yaXpvbnRhbFNsaWRlclRyYWNrVHlwZSwKKyAgICAgICAgSG9y
aXpvbnRhbFNsaWRlclRodW1iVHlwZSwKKyAgICAgICAgVmVydGljYWxTbGlkZXJUcmFja1R5cGUs
CisgICAgICAgIFZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlLAorICAgICAgICBEcm9wRG93bkJ1dHRv
blR5cGUsCisgICAgICAgIFByb2dyZXNzQmFyVHlwZQorICAgIH07CisKKyAgICAvLyBDb25zdHJ1
Y3RzIGEgY29udHJvbCBvZiB0aGUgZ2l2ZW4gc2l6ZSwgdHlwZSBhbmQgc3RhdGUgdG8gZHJhdwor
ICAgIC8vIG9uIHRvIHRoZSBnaXZlbiBjYW52YXMuCisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdp
bihTa0NhbnZhcyosIGNvbnN0IFNrSVJlY3QmLCBUeXBlLCBTdGF0ZSk7CisgICAgfldlYlRlc3RU
aGVtZUNvbnRyb2xXaW4oKTsKKworICAgIC8vIERyYXdzIHRoZSBjb250cm9sLgorICAgIHZvaWQg
ZHJhdygpOworCisgICAgLy8gVXNlIHRoaXMgZm9yIFRleHRGaWVsZCBjb250cm9scyBpbnN0ZWFk
LCBiZWNhdXNlIHRoZSBsb2dpYworICAgIC8vIGZvciBkcmF3aW5nIHRoZW0gaXMgZGVwZW5kZW50
IG9uIHdoYXQgV2ViS2l0IHRlbGxzIHVzIHRvIGRvLgorICAgIC8vIElmIGRyYXdFZGdlcyBpcyB0
cnVlLCBkcmF3IGFuIGVkZ2UgYXJvdW5kIHRoZSBjb250cm9sLiBJZgorICAgIC8vIGZpbGxDb250
ZW50QXJlYSBpcyB0cnVlLCBmaWxsIHRoZSBjb250ZW50IGFyZWEgd2l0aCB0aGUgZ2l2ZW4gY29s
b3IuCisgICAgdm9pZCBkcmF3VGV4dEZpZWxkKGJvb2wgZHJhd0VkZ2VzLCBib29sIGZpbGxDb250
ZW50QXJlYSwgU2tDb2xvcik7CisKKyAgICAvLyBVc2UgdGhpcyBmb3IgZHJhd2luZyBQcm9ncmVz
c0JhciBjb250cm9scyBpbnN0ZWFkLCBzaW5jZSB3ZQorICAgIC8vIG5lZWQgdG8ga25vdyB0aGUg
cmVjdCB0byBmaWxsIGluc2lkZSB0aGUgYmFyLgorICAgIHZvaWQgZHJhd1Byb2dyZXNzQmFyKGNv
bnN0IFNrSVJlY3QmIGZpbGxSZWN0KTsKKworcHJpdmF0ZToKKyAgICAvLyBEcmF3cyBhIGJveCBv
ZiBzaXplIHNwZWNpZmllZCBieSBpcmVjdCwgZmlsbGVkIHdpdGggdGhlIGdpdmVuIGNvbG9yLgor
ICAgIC8vIFRoZSBib3ggd2lsbCBoYXZlIGEgYm9yZGVyIGRyYXduIGluIHRoZSBkZWZhdWx0IGVk
Z2UgY29sb3IuCisgICAgdm9pZCBib3goY29uc3QgU2tJUmVjdCYgaXJlY3QsIFNrQ29sb3IpOwor
CisKKyAgICAvLyBEcmF3cyBhIHRyaWFuZ2xlIG9mIHNpemUgc3BlY2lmaWVkIGJ5IHRoZSB0aHJl
ZSBwYWlycyBvZiBjb29yZGluYXRlcywKKyAgICAvLyBmaWxsZWQgd2l0aCB0aGUgZ2l2ZW4gY29s
b3IuIFRoZSBib3ggd2lsbCBoYXZlIGFuIGVkZ2UgZHJhd24gaW4gdGhlCisgICAgLy8gZGVmYXVs
dCBlZGdlIGNvbG9yLgorICAgIHZvaWQgdHJpYW5nbGUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwg
aW50IHkxLCBpbnQgeDIsIGludCB5MiwgU2tDb2xvcik7CisKKyAgICAvLyBEcmF3cyBhIHJlY3Rh
bmdsZSB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCB3aXRoIHJvdW5kZWQgY29ybmVycywgZmlsbGVk
CisgICAgLy8gd2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yIChhbmQgd2l0aCBhIGJvcmRlciBpbiB0
aGUgZGVmYXVsdCBlZGdlIGNvbG9yKS4KKyAgICB2b2lkIHJvdW5kUmVjdChTa0NvbG9yKTsKKwor
ICAgIC8vIERyYXdzIGFuIG92YWwgdGhlIHNpemUgb2YgdGhlIGNvbnRyb2wsIGZpbGxlZCB3aXRo
IHRoZSBzcGVjaWZpZWQgY29sb3IKKyAgICAvLyBhbmQgd2l0aCBhIGJvcmRlciBpbiB0aGUgZGVm
YXVsdCBlZGdlIGNvbG9yLgorICAgIHZvaWQgb3ZhbChTa0NvbG9yKTsKKworICAgIC8vIERyYXdz
IGEgY2lyY2xlIGNlbnRlcmVkIGluIHRoZSBjb250cm9sIHdpdGggdGhlIHNwZWNpZmllZCByYWRp
dXMsCisgICAgLy8gZmlsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBjb2xvciwgYW5kIHdpdGggYSBi
b3JkZXIgZHJhdyBpbiB0aGUKKyAgICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCisgICAgdm9pZCBj
aXJjbGUoU2tTY2FsYXIgcmFkaXVzLCBTa0NvbG9yKTsKKworICAgIC8vIERyYXdzIGEgYm94IHRo
ZSBzaXplIG9mIHRoZSBjb250cm9sLCBmaWxsZWQgd2l0aCB0aGUgb3V0ZXJDb2xvciBhbmQKKyAg
ICAvLyB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IsIGFuZCB0aGVuIGRy
YXdzIGFub3RoZXIgYm94CisgICAgLy8gaW5kZW50ZWQgb24gYWxsIGZvdXIgc2lkZXMgYnkgdGhl
IHNwZWNpZmllZCBhbW91bnRzLCBmaWxsZWQgd2l0aCB0aGUKKyAgICAvLyBpbm5lciBjb2xvciBh
bmQgd2l0aCBhIGJvcmRlciBpbiB0aGUgZGVmYXVsdCBlZGdlIGNvbG9yLgorICAgIHZvaWQgbmVz
dGVkQm94ZXMoaW50IGluZGVudExlZnQsIGludCBpbmRlbnRUb3AsIGludCBpbmRlbnRSaWdodCwg
aW50IGluZGVudEJvdHRvbSwgU2tDb2xvciBvdXRlckNvbG9yLCBTa0NvbG9yIGlubmVyQ29sb3Ip
OworCisgICAgLy8gRHJhd3MgYSBsaW5lIGJldHdlZW4gdGhlIHR3byBwb2ludHMgaW4gdGhlIGdp
dmVuIGNvbG9yLgorICAgIHZvaWQgbGluZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEs
IFNrQ29sb3IpOworCisgICAgLy8gRHJhd3MgYSBkaXN0aW5jdGl2ZSBtYXJrIG9uIHRoZSBjb250
cm9sIGZvciBlYWNoIHN0YXRlLCBzbyB0aGF0IHRoZQorICAgIC8vIHN0YXRlIG9mIHRoZSBjb250
cm9sIGNhbiBiZSBkZXRlcm1pbmVkIHdpdGhvdXQgbmVlZGluZyB0byBrbm93IHdoaWNoCisgICAg
Ly8gY29sb3IgaXMgd2hpY2guCisgICAgdm9pZCBtYXJrU3RhdGUoKTsKKworICAgIFNrQ2FudmFz
KiBtX2NhbnZhczsKKyAgICBjb25zdCBTa0lSZWN0IG1faXJlY3Q7CisgICAgY29uc3QgVHlwZSBt
X3R5cGU7CisgICAgY29uc3QgU3RhdGUgbV9zdGF0ZTsKKyAgICBjb25zdCBTa0NvbG9yIG1fZWRn
ZUNvbG9yOworICAgIGNvbnN0IFNrQ29sb3IgbV9iZ0NvbG9yOworICAgIGNvbnN0IFNrQ29sb3Ig
bV9mZ0NvbG9yOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgY29udmVuaWVuY2UgYWNjZXNz
b3JzIGZvciBtX2lyZWN0LgorICAgIGNvbnN0IGludCBtX2xlZnQ7CisgICAgY29uc3QgaW50IG1f
cmlnaHQ7CisgICAgY29uc3QgaW50IG1fdG9wOworICAgIGNvbnN0IGludCBtX2JvdHRvbTsKKyAg
ICBjb25zdCBpbnQgbV93aWR0aDsKKyAgICBjb25zdCBpbnQgbV9oZWlnaHQ7Cit9OworCit9CisK
KyNlbmRpZiAvLyBXZWJUZXN0VGhlbWVDb250cm9sV2luX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1h
Yy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVz
dFRoZW1lRW5naW5lTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjBiNTIzMmY3N2RjNmU5NjM0YTA0YWQzYTE3
MmY5NjgyNzIzZmE1MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8g
VGhpcyBpbXBsZW1lbnRzIHRoZSBXZWJUaGVtZUVuZ2luZSBBUEkgaW4gc3VjaCBhIHdheSB0aGF0
IHdlIG1hdGNoIHRoZSBNYWMKKy8vIHBvcnQgcmVuZGVyaW5nIG1vcmUgdGhhbiB1c3VhbCBDaHJv
bWl1bSBwYXRoLCB0aHVzIGFsbG93aW5nIHVzIHRvIHNoYXJlCisvLyBtb3JlIHBpeGVsIGJhc2Vs
aW5lcy4KKworI2lmbmRlZiBXZWJUZXN0VGhlbWVFbmdpbmVNYWNfaAorI2RlZmluZSBXZWJUZXN0
VGhlbWVFbmdpbmVNYWNfaAorCisjaW5jbHVkZSA8cHVibGljL21hYy9XZWJUaGVtZUVuZ2luZS5o
PgorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK2NsYXNzIFdlYlRlc3RUaGVtZUVuZ2lu
ZU1hYyA6IHB1YmxpYyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUaHVtYigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMq
LAorICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSwKKyAgICAgICAgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U2l6ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwK
KyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYpOwor
Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBwYWludEhJVGhlbWVTY3JvbGxiYXJUaHVtYigK
KyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLAorICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2l6ZSwKKyAgICAg
ICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJUaGVt
ZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludE5TU2Nyb2xs
ZXJTY3JvbGxiYXJUaHVtYigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLAorICAgICAgICBX
ZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSwKKyAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVu
Z2luZTo6U2l6ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwKKyAgICAgICAgY29u
c3QgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYpOworfTsKKworfQorCisj
ZW5kaWYgLy8gV2ViVGVzdFRoZW1lRW5naW5lTWFjX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZU1hYy5t
bSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RU
aGVtZUVuZ2luZU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMzlmZDUzOGJiMmNjMDVjZGIzN2U4ZjAxZDAw
MTM4NTdlNmQ3Yzc4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lTWFjLm1tCkBAIC0wLDAgKzEs
MTk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgIldlYlRlc3RUaGVtZUVuZ2luZU1hYy5oIgorCisjaW5jbHVkZSA8cHVi
bGljL1dlYkNhbnZhcy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CisjaW5jbHVkZSAi
c2tpYS9leHQvc2tpYV91dGlsc19tYWMuaCIKKyNpbXBvcnQgPEFwcEtpdC9OU0FmZmluZVRyYW5z
Zm9ybS5oPgorI2ltcG9ydCA8QXBwS2l0L05TR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxB
cHBLaXQvTlNTY3JvbGxlci5oPgorI2ltcG9ydCA8QXBwS2l0L05TV2luZG93Lmg+CisjaW5jbHVk
ZSA8Q2FyYm9uL0NhcmJvbi5oPgorCit1c2luZyBXZWJLaXQ6OldlYkNhbnZhczsKK3VzaW5nIFdl
YktpdDo6V2ViUmVjdDsKK3VzaW5nIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU7CisKKy8vIFdlIGNh
bid0IGRpcmVjdGx5IHRlbGwgdGhlIE5TU2Nyb2xsZXIgdG8gZHJhdyBpdHNlbGYgYXMgYWN0aXZl
IG9yIGluYWN0aXZlLAorLy8gaW5zdGVhZCB3ZSBoYXZlIHRvIG1ha2UgaXQgYSBjaGlsZCBvZiBh
biAoaW4pYWN0aXZlIHdpbmRvdy4gVGhpcyBjbGFzcyBsZXRzCisvLyB1cyBmYWtlIHRoYXQgcGFy
ZW50IHdpbmRvdy4KK0BpbnRlcmZhY2UgRmFrZUFjdGl2ZVdpbmRvdyA6IE5TV2luZG93IHsKK0Bw
cml2YXRlCisgICAgQk9PTCBoYXNBY3RpdmVDb250cm9sczsKK30KKysgKE5TV2luZG93KilhbHdh
eXNBY3RpdmVXaW5kb3c7CisrIChOU1dpbmRvdyopYWx3YXlzSW5hY3RpdmVXaW5kb3c7CistIChp
ZClpbml0V2l0aEFjdGl2ZUNvbnRyb2xzOihCT09MKV9oYXNBY3RpdmVDb250cm9sczsKKy0gKEJP
T0wpX2hhc0FjdGl2ZUNvbnRyb2xzOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRmFrZUFjdGl2
ZVdpbmRvdworCitzdGF0aWMgTlNXaW5kb3cqIGFsd2F5c0FjdGl2ZVdpbmRvdyA9IG5pbDsKK3N0
YXRpYyBOU1dpbmRvdyogYWx3YXlzSW5hY3RpdmVXaW5kb3cgPSBuaWw7CisKKysgKE5TV2luZG93
KilhbHdheXNBY3RpdmVXaW5kb3cKK3sKKyAgICBpZiAoYWx3YXlzQWN0aXZlV2luZG93ID09IG5p
bCkKKyAgICAgICAgYWx3YXlzQWN0aXZlV2luZG93ID0gW1tzZWxmIGFsbG9jXSBpbml0V2l0aEFj
dGl2ZUNvbnRyb2xzOllFU107CisgICAgcmV0dXJuIGFsd2F5c0FjdGl2ZVdpbmRvdzsKK30KKwor
KyAoTlNXaW5kb3cqKWFsd2F5c0luYWN0aXZlV2luZG93Cit7CisgICAgaWYgKGFsd2F5c0luYWN0
aXZlV2luZG93ID09IG5pbCkKKyAgICAgICAgYWx3YXlzSW5hY3RpdmVXaW5kb3cgPSBbW3NlbGYg
YWxsb2NdIGluaXRXaXRoQWN0aXZlQ29udHJvbHM6Tk9dOworICAgIHJldHVybiBhbHdheXNJbmFj
dGl2ZVdpbmRvdzsKK30KKworLSAoaWQpaW5pdFdpdGhBY3RpdmVDb250cm9sczooQk9PTClfaGFz
QWN0aXZlQ29udHJvbHMKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGhhc0FjdGl2
ZUNvbnRyb2xzID0gX2hhc0FjdGl2ZUNvbnRyb2xzOworICAgIHJldHVybiBzZWxmOworfQorCist
IChCT09MKV9oYXNBY3RpdmVDb250cm9scworeworICAgIHJldHVybiBoYXNBY3RpdmVDb250cm9s
czsKK30KKworQGVuZAorCituYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CisKK25hbWVzcGFjZSB7
CisKK1RoZW1lVHJhY2tFbmFibGVTdGF0ZSBzdGF0ZVRvSElFbmFibGVTdGF0ZShXZWJUaGVtZUVu
Z2luZTo6U3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgV2Vi
VGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJsZWQ6CisgICAgICAgIHJldHVybiBrVGhlbWVUcmFja0Rp
c2FibGVkOworICAgIGNhc2UgV2ViVGhlbWVFbmdpbmU6OlN0YXRlSW5hY3RpdmU6CisgICAgICAg
IHJldHVybiBrVGhlbWVUcmFja0luYWN0aXZlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBrVGhlbWVUcmFja0FjdGl2ZTsKKyAgICB9Cit9CisKK30KKwordm9pZCBXZWJUZXN0VGhlbWVF
bmdpbmVNYWM6OnBhaW50U2Nyb2xsYmFyVGh1bWIoCisgICAgV2ViQ2FudmFzKiBjYW52YXMsCisg
ICAgV2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlLAorICAgIFdlYlRoZW1lRW5naW5lOjpTaXpl
IHNpemUsCisgICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKKyAgICBjb25zdCBXZWJUaGVtZUVuZ2lu
ZTo6U2Nyb2xsYmFySW5mbyYgc2Nyb2xsYmFySW5mbykKK3sKKyAgICAvLyBUbyBtYXRjaCB0aGUg
TWFjIHBvcnQsIHdlIHN0aWxsIHVzZSBISVRoZW1lIGZvciBpbm5lciBzY3JvbGxiYXJzLgorICAg
IGlmIChzY3JvbGxiYXJJbmZvLnBhcmVudCA9PSBXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFyUGFy
ZW50UmVuZGVyTGF5ZXIpCisgICAgICAgIHBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKGNhbnZh
cywgc3RhdGUsIHNpemUsIHJlY3QsIHNjcm9sbGJhckluZm8pOworICAgIGVsc2UKKyAgICAgICAg
cGFpbnROU1Njcm9sbGVyU2Nyb2xsYmFyVGh1bWIoY2FudmFzLCBzdGF0ZSwgc2l6ZSwgcmVjdCwg
c2Nyb2xsYmFySW5mbyk7Cit9CisKKy8vIER1cGxpY2F0ZWQgZnJvbSB3ZWJraXQvZ2x1ZS93ZWJ0
aGVtZWVuZ2luZV9pbXBsX21hYy5jYyBpbiB0aGUgZG93bnN0cmVhbQorLy8gQ2hyb21pdW0gV2Vi
VGhlbWVFbmdpbmUgaW1wbGVtZW50YXRpb24uCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZU1hYzo6
cGFpbnRISVRoZW1lU2Nyb2xsYmFyVGh1bWIoCisgICAgV2ViQ2FudmFzKiBjYW52YXMsCisgICAg
V2ViVGhlbWVFbmdpbmU6OlN0YXRlIHN0YXRlLAorICAgIFdlYlRoZW1lRW5naW5lOjpTaXplIHNp
emUsCisgICAgY29uc3QgV2ViUmVjdCYgcmVjdCwKKyAgICBjb25zdCBXZWJUaGVtZUVuZ2luZTo6
U2Nyb2xsYmFySW5mbyYgc2Nyb2xsYmFySW5mbykKK3sKKyAgICBISVRoZW1lVHJhY2tEcmF3SW5m
byB0cmFja0luZm87CisgICAgdHJhY2tJbmZvLnZlcnNpb24gPSAwOworICAgIHRyYWNrSW5mby5r
aW5kID0gc2l6ZSA9PSBXZWJUaGVtZUVuZ2luZTo6U2l6ZVJlZ3VsYXIgPyBrVGhlbWVNZWRpdW1T
Y3JvbGxCYXIgOiBrVGhlbWVTbWFsbFNjcm9sbEJhcjsKKyAgICB0cmFja0luZm8uYm91bmRzID0g
Q0dSZWN0TWFrZShyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpOworICAg
IHRyYWNrSW5mby5taW4gPSAwOworICAgIHRyYWNrSW5mby5tYXggPSBzY3JvbGxiYXJJbmZvLm1h
eFZhbHVlOworICAgIHRyYWNrSW5mby52YWx1ZSA9IHNjcm9sbGJhckluZm8uY3VycmVudFZhbHVl
OworICAgIHRyYWNrSW5mby50cmFja0luZm8uc2Nyb2xsYmFyLnZpZXdzaXplID0gc2Nyb2xsYmFy
SW5mby52aXNpYmxlU2l6ZTsKKyAgICB0cmFja0luZm8uYXR0cmlidXRlcyA9IDA7CisgICAgaWYg
KHNjcm9sbGJhckluZm8ub3JpZW50YXRpb24gPT0gV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhck9y
aWVudGF0aW9uSG9yaXpvbnRhbCkKKyAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgfD0ga1Ro
ZW1lVHJhY2tIb3Jpem9udGFsOworCisgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc3RhdGVU
b0hJRW5hYmxlU3RhdGUoc3RhdGUpOworCisgICAgdHJhY2tJbmZvLnRyYWNrSW5mby5zY3JvbGxi
YXIucHJlc3NTdGF0ZSA9CisgICAgICAgIHN0YXRlID09IFdlYlRoZW1lRW5naW5lOjpTdGF0ZVBy
ZXNzZWQgPyBrVGhlbWVUaHVtYlByZXNzZWQgOiAwOworICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVz
IHw9IChrVGhlbWVUcmFja1Nob3dUaHVtYiB8IGtUaGVtZVRyYWNrSGlkZVRyYWNrKTsKKyAgICBn
Zng6OlNraWFCaXRMb2NrZXIgYml0TG9ja2VyKGNhbnZhcyk7CisgICAgQ0dDb250ZXh0UmVmIGNn
Q29udGV4dCA9IGJpdExvY2tlci5jZ0NvbnRleHQoKTsKKyAgICBISVRoZW1lRHJhd1RyYWNrKCZ0
cmFja0luZm8sIDAsIGNnQ29udGV4dCwga0hJVGhlbWVPcmllbnRhdGlvbk5vcm1hbCk7Cit9CisK
K3ZvaWQgV2ViVGVzdFRoZW1lRW5naW5lTWFjOjpwYWludE5TU2Nyb2xsZXJTY3JvbGxiYXJUaHVt
YigKKyAgICBXZWJDYW52YXMqIGNhbnZhcywKKyAgICBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3Rh
dGUsCisgICAgV2ViVGhlbWVFbmdpbmU6OlNpemUgc2l6ZSwKKyAgICBjb25zdCBXZWJSZWN0JiBy
ZWN0LAorICAgIGNvbnN0IFdlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJJbmZvJiBzY3JvbGxiYXJJ
bmZvKQoreworICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CisgICAg
TlNTY3JvbGxlciogc2Nyb2xsZXIgPSBbW05TU2Nyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdChyZWN0LngsIHJlY3QueSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpXTsKKyAg
ICBbc2Nyb2xsZXIgc2V0RW5hYmxlZDpzdGF0ZSAhPSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNh
YmxlZF07CisgICAgaWYgKHN0YXRlID09IFdlYlRoZW1lRW5naW5lOjpTdGF0ZUluYWN0aXZlKQor
ICAgICAgICBbW1tGYWtlQWN0aXZlV2luZG93IGFsd2F5c0luYWN0aXZlV2luZG93XSBjb250ZW50
Vmlld10gYWRkU3VidmlldzpzY3JvbGxlcl07CisgICAgZWxzZQorICAgICAgICBbW1tGYWtlQWN0
aXZlV2luZG93IGFsd2F5c0FjdGl2ZVdpbmRvd10gY29udGVudFZpZXddIGFkZFN1YnZpZXc6c2Ny
b2xsZXJdOworCisgICAgW3Njcm9sbGVyIHNldENvbnRyb2xTaXplOnNpemUgPT0gV2ViVGhlbWVF
bmdpbmU6OlNpemVSZWd1bGFyID8gTlNSZWd1bGFyQ29udHJvbFNpemUgOiBOU1NtYWxsQ29udHJv
bFNpemVdOworCisgICAgZG91YmxlIHZhbHVlID0gZG91YmxlKHNjcm9sbGJhckluZm8uY3VycmVu
dFZhbHVlKSAvIGRvdWJsZShzY3JvbGxiYXJJbmZvLm1heFZhbHVlKTsKKyAgICBbc2Nyb2xsZXIg
c2V0RG91YmxlVmFsdWU6IHZhbHVlXTsKKworICAgIGZsb2F0IGtub2JQcm9wb3J0aW9uID0gZmxv
YXQoc2Nyb2xsYmFySW5mby52aXNpYmxlU2l6ZSkgLyBmbG9hdChzY3JvbGxiYXJJbmZvLnRvdGFs
U2l6ZSk7CisgICAgW3Njcm9sbGVyIHNldEtub2JQcm9wb3J0aW9uOiBrbm9iUHJvcG9ydGlvbl07
CisKKyAgICBnZng6OlNraWFCaXRMb2NrZXIgYml0TG9ja2VyKGNhbnZhcyk7CisgICAgQ0dDb250
ZXh0UmVmIGNnQ29udGV4dCA9IGJpdExvY2tlci5jZ0NvbnRleHQoKTsKKyAgICBOU0dyYXBoaWNz
Q29udGV4dCogbnNHcmFwaGljc0NvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3ND
b250ZXh0V2l0aEdyYXBoaWNzUG9ydDpjZ0NvbnRleHQgZmxpcHBlZDpZRVNdOworICAgIFtOU0dy
YXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDpuc0dyYXBoaWNzQ29udGV4dF07CisKKyAg
ICAvLyBEZXNwaXRlIHBhc3NpbmcgaW4gZnJhbWVSZWN0KCkgdG8gdGhlIHNjcm9sbGVyLCBpdCBh
bHdheXMgZHJhd3MgYXQgKDAsIDApLgorICAgIC8vIEZvcmNlIGl0IHRvIGRyYXcgaW4gdGhlIHJp
Z2h0IGxvY2F0aW9uIGJ5IHRyYW5zbGF0aW5nIHRoZSB3aG9sZSBncmFwaGljcworICAgIC8vIGNv
bnRleHQuCisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjZ0NvbnRleHQpOworICAgIE5TQWZmaW5l
VHJhbnNmb3JtICp0cmFuc2Zvcm0gPSBbTlNBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtXTsKKyAg
ICBbdHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTpyZWN0LnggeUJ5OnJlY3QueV07CisgICAgW3RyYW5z
Zm9ybSBjb25jYXRdOworCisgICAgW3Njcm9sbGVyIGRyYXdLbm9iXTsKKyAgICBDR0NvbnRleHRS
ZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7CisKKyAgICBbc2Nyb2xsZXIgcmVsZWFzZV07CisKKyAg
ICBbTlNHcmFwaGljc0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVdOworfQorCit9CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJU
ZXN0VGhlbWVFbmdpbmVXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDMzOWY1
NWRkNjYxZGEyYzUwOWYwNTg0ZDZmNDQ2ZTgzZGZkZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5n
aW5lV2luLmNwcApAQCAtMCwwICsxLDc0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJUZXN0VGhlbWVFbmdpbmVXaW4uaCIKKworI2luY2x1ZGUgIlRlc3RDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJUZXN0VGhlbWVDb250cm9sV2luLmgiCisjaW5jbHVkZSAidGhpcmRfcGFydHkv
c2tpYS9pbmNsdWRlL2NvcmUvU2tSZWN0LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4K
KworLy8gQWx0aG91Z2ggYWxsIHRoaXMgY29kZSBpcyBnZW5lcmljLCB3ZSBpbmNsdWRlIHRoZXNl
IGhlYWRlcnMKKy8vIHRvIHB1bGwgaW4gdGhlIFdpbmRvd3MgI2RlZmluZXMgZm9yIHRoZSBwYXJ0
cyBhbmQgc3RhdGVzIG9mCisvLyB0aGUgY29udHJvbHMuCisjaW5jbHVkZSA8dnNzdHlsZS5oPgor
I2luY2x1ZGUgPHdpbmRvd3MuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgeworCituYW1lc3BhY2UgeworCisvLyBXZSBkZWZpbmUgdGhpcyBm
b3IgY2xhcml0eSwgYWx0aG91Z2ggdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBhIERGQ1NfTk9STUFM
IGluIHdpbnVzZXIuaC4KK2NvbnN0IGludCBkZmNzTm9ybWFsID0gMHgwMDAwOworCitTa0lSZWN0
IHdlYlJlY3RUb1NrSVJlY3QoY29uc3QgV2ViUmVjdCYgd2ViUmVjdCkKK3sKKyAgICBTa0lSZWN0
IGlyZWN0OworICAgIGlyZWN0LnNldCh3ZWJSZWN0LngsIHdlYlJlY3QueSwgd2ViUmVjdC54ICsg
d2ViUmVjdC53aWR0aCAtIDEsIHdlYlJlY3QueSArIHdlYlJlY3QuaGVpZ2h0IC0gMSk7CisgICAg
cmV0dXJuIGlyZWN0OworfQorCit2b2lkIGRyYXdDb250cm9sKFdlYkNhbnZhcyogY2FudmFzLCBj
b25zdCBXZWJSZWN0JiByZWN0LCBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpUeXBlIGN0eXBlLCBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUpCit7CisgICAgV2ViVGVzdFRoZW1l
Q29udHJvbFdpbiBjb250cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUs
IGNzdGF0ZSk7CisgICAgY29udHJvbC5kcmF3KCk7Cit9CisKK3ZvaWQgZHJhd1RleHRGaWVsZChX
ZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCwgV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6VHlwZSBjdHlwZSwgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlLCBi
b29sIGRyYXdFZGdlcywgYm9vbCBmaWxsQ29udGVudEFyZWEsIFdlYkNvbG9yIGNvbG9yKQorewor
ICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW4gY29udHJvbChjYW52YXMsIHdlYlJlY3RUb1NrSVJl
Y3QocmVjdCksIGN0eXBlLCBjc3RhdGUpOworICAgIGNvbnRyb2wuZHJhd1RleHRGaWVsZChkcmF3
RWRnZXMsIGZpbGxDb250ZW50QXJlYSwgY29sb3IpOworfQorCit2b2lkIGRyYXdQcm9ncmVzc0Jh
cihXZWJDYW52YXMqIGNhbnZhcywgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlwZSwg
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlLCBjb25zdCBXZWJSZWN0JiBiYXJS
ZWN0LCBjb25zdCBXZWJSZWN0JiBmaWxsUmVjdCkKK3sKKyAgICBXZWJUZXN0VGhlbWVDb250cm9s
V2luIGNvbnRyb2woY2FudmFzLCB3ZWJSZWN0VG9Ta0lSZWN0KGJhclJlY3QpLCBjdHlwZSwgY3N0
YXRlKTsKKyAgICBjb250cm9sLmRyYXdQcm9ncmVzc0Jhcih3ZWJSZWN0VG9Ta0lSZWN0KGZpbGxS
ZWN0KSk7Cit9CisKK30KKwordm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50QnV0dG9u
KFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRl
LCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5
cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2lu
OjpVbmtub3duU3RhdGU7CisKKyAgICBpZiAocGFydCA9PSBCUF9DSEVDS0JPWCkgeworICAgICAg
ICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFRE5PUk1BTDoKKyAg
ICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAg
ICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmNoZWNrZWRCb3hUeXBl
OworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3Rh
dGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19VTkNIRUNLRURIT1Q6
CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05D
SEVDSyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OlVuY2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgQ0JTX1VOQ0hFQ0tFRFBSRVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfUFVTSEVEKSk7CisgICAgICAgICAg
ICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVuY2hlY2tlZEJveFR5cGU7CisgICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19VTkNIRUNLRURESVNBQkxFRDoK
KyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNI
RUNLIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpVbmNoZWNrZWRCb3hUeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgQ0JTX0NIRUNLRUROT1JNQUw6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tFRCkpOworICAg
ICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkQm94VHlwZTsK
KyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRl
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFREhPVDoKKyAg
ICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNIRUNL
IHwgREZDU19DSEVDS0VEIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6Q2hlY2tlZEJveFR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgQ0JTX0NIRUNLRURQUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VS
VChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQgfCBERkNT
X1BVU0hFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpD
aGVja2VkQm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JT
X0NIRUNLRURESVNBQkxFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOwor
ICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkQm94VHlw
ZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVk
U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENCU19NSVhFRE5PUk1B
TDoKKyAgICAgICAgICAgIC8vIENsYXNzaWMgdGhlbWUgY2FuJ3QgcmVwcmVzZW50IG1peGVkIHN0
YXRlIGNoZWNrYm94LiBXZSBhc3N1bWUKKyAgICAgICAgICAgIC8vIGl0J3MgZXF1aXZhbGVudCB0
byB1bmNoZWNrZWQuCisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBE
RkNTX0JVVFRPTkNIRUNLKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDQlNfTUlYRURIT1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAg
ICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkluZGV0ZXJtaW5hdGVDaGVja2JveFR5
cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0
ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JTX01JWEVEUFJFU1NFRDoK
KyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTkNI
RUNLIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgQ0JTX01JWEVERElTQUJMRUQ6CisgICAgICAgICAgICBXRUJLSVRf
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfSU5BQ1RJVkUp
KTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SW5kZXRlcm1p
bmF0ZUNoZWNrYm94VHlwZTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRy
b2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKEJQX1JBRElPQlVUVE9OID09IHBh
cnQpIHsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgeworICAgICAgICBjYXNlIFJCU19VTkNIRUNL
RUROT1JNQUw6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X0JVVFRPTlJBRElPKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6VW5jaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIFJCU19VTkNIRUNLRURIT1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfSE9UKSk7CisgICAgICAgICAgICBjdHlw
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVuY2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VEUFJFU1NFRDoKKyAgICAgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZD
U19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
VW5jaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBSQlNfVU5DSEVDS0VERElTQUJMRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAg
ICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5jaGVja2VkUmFkaW9UeXBlOwor
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0
ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX0NIRUNLRUROT1JNQUw6
CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05S
QURJTyB8IERGQ1NfQ0hFQ0tFRCkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpDaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIFJCU19DSEVDS0VESE9UOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0hPVCkp
OworICAgICAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkUmFk
aW9UeXBlOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90
U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJCU19DSEVDS0VEUFJF
U1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JV
VFRPTlJBRElPIHwgREZDU19DSEVDS0VEIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGN0
eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Q2hlY2tlZFJhZGlvVHlwZTsKKyAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkJTX0NIRUNLRURESVNBQkxFRDoKKyAgICAg
ICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwg
REZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3R5cGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpDaGVja2VkUmFkaW9UeXBlOworICAgICAgICAgICAgY3N0YXRl
ID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAo
QlBfUFVTSEJVVFRPTiA9PSBwYXJ0KSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAg
ICAgY2FzZSBQQlNfTk9STUFMOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gREZDU19CVVRUT05QVVNIKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgUEJTX0hPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX0JVVFRPTlBVU0ggfCBERkNTX0hPVCkpOworICAgICAgICAgICAgY3R5cGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAgICAgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdFN0YXRlOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBQQlNfUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlBVU0ggfCBERkNTX1BVU0hFRCkpOworICAgICAg
ICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQdXNoQnV0dG9uVHlwZTsKKyAg
ICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUEJTX0RJU0FCTEVEOgorICAgICAg
ICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8IERG
Q1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBQQlNfREVGQVVMVEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUg
PT0gREZDU19CVVRUT05QVVNIKTsKKyAgICAgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6UHVzaEJ1dHRvblR5cGU7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpGb2N1c2VkU3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlw
ZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50TWVudUxp
c3QoV2ViQ2FudmFzKiBjYW52YXMsIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3Rh
dGUsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
VHlwZSBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlVua25vd25UeXBlOworICAgIFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OlN0YXRlIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xX
aW46OlVua25vd25TdGF0ZTsKKworICAgIGlmIChDUF9EUk9QRE9XTkJVVFRPTiA9PSBwYXJ0KSB7
CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RHJvcERvd25CdXR0b25U
eXBlOworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgQ0JYU19OT1JNQUw6
CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX01FTlVBUlJP
Vyk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxT
dGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19IT1Q6CisgICAg
ICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBE
RkNTX0hPVCkpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
SG92ZXJTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ0JYU19QUkVT
U0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVO
VUFSUk9XIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgQ0JYU19ESVNBQkxFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0
YXRlID09IChERkNTX01FTlVBUlJPVyB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRpc2FibGVkU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9IGVsc2UK
KyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgZHJhd0NvbnRyb2wo
Y2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30KKwordm9pZCBXZWJUZXN0VGhlbWVFbmdp
bmVXaW46OnBhaW50U2Nyb2xsYmFyQXJyb3coV2ViQ2FudmFzKiBjYW52YXMsIGludCBzdGF0ZSwg
aW50IGNsYXNzaWNTdGF0ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93
blR5cGU7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blN0YXRlOworCisgICAgc3dpdGNoIChzdGF0ZSkgewor
ICAgIGNhc2UgQUJTX1VQTk9STUFMOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSBERkNTX1NDUk9MTFVQKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpVcEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfRE9XTk5PUk1B
TDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExET1dO
KTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEb3duQXJyb3dUeXBl
OworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19MRUZUTk9STUFMOgorICAgICAgICBXRUJL
SVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTExFRlQpOworICAgICAgICBjdHlw
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICBicmVhazsK
KworICAgIGNhc2UgQUJTX1JJR0hUTk9STUFMOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBERkNTX1NDUk9MTFJJR0hUKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBB
QlNfVVBIT1Q6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1ND
Uk9MTFVQIHwgREZDU19IT1QpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpVcEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6SG90U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfRE9XTkhPVDoKKyAg
ICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERG
Q1NfSE9UKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RG93bkFy
cm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3Rh
dGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVEhPVDoKKyAgICAgICAgV0VC
S0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8IERGQ1NfSE9UKSk7
CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6TGVmdEFycm93VHlwZTsK
KyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfUklHSFRIT1Q6CisgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19IT1QpKTsKKyAgICAg
ICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpSaWdodEFycm93VHlwZTsKKyAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBBQlNfVVBIT1ZFUjoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gREZDU19TQ1JPTExVUCk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1l
Q29udHJvbFdpbjo6VXBBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfRE9X
TkhPVkVSOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9M
TERPV04pOworICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRvd25BcnJv
d1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdmVyU3Rh
dGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfTEVGVEhPVkVSOgorICAgICAgICBX
RUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTExFRlQpOworICAgICAgICBj
dHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkxlZnRBcnJvd1R5cGU7CisgICAgICAgIGNz
dGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBBQlNfUklHSFRIT1ZFUjoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gREZDU19TQ1JPTExSSUdIVCk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6UmlnaHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RU
aGVtZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBB
QlNfVVBQUkVTU0VEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZD
U19TQ1JPTExVUCB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7CisgICAgICAgIGN0eXBlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VXBBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdl
YlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIEFCU19ET1dOUFJFU1NFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7CisgICAg
ICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RG93bkFycm93VHlwZTsKKyAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgQUJTX0xFRlRQUkVTU0VEOgorICAgICAgICBXRUJLSVRfQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19QVVNIRUQgfCBERkNT
X0ZMQVQpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpMZWZ0QXJy
b3dUeXBlOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2Vk
U3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBBQlNfUklHSFRQUkVTU0VEOgorICAg
ICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERG
Q1NfUFVTSEVEIHwgREZDU19GTEFUKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6UmlnaHRBcnJvd1R5cGU7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19V
UERJU0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19T
Q1JPTExVUCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpVcEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEFCU19E
T1dORElTQUJMRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X1NDUk9MTERPV04gfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6RG93bkFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRo
ZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IEFCU19MRUZURElTQUJMRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX1NDUk9MTExFRlQgfCBERkNTX0lOQUNUSVZFKSk7CisgICAgICAgIGN0eXBlID0gV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6TGVmdEFycm93VHlwZTsKKyAgICAgICAgY3N0YXRlID0gV2Vi
VGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIEFCU19SSUdIVERJU0FCTEVEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNT
dGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfSU5BQ1RJVkUpKTsKKyAgICAgICAgY3R5
cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpSaWdodEFycm93VHlwZTsKKyAgICAgICAgY3N0
YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwg
Y3R5cGUsIGNzdGF0ZSk7Cit9CisKK3ZvaWQgV2ViVGVzdFRoZW1lRW5naW5lV2luOjpwYWludFNj
cm9sbGJhclRodW1iKFdlYkNhbnZhcyogY2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQg
Y2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlRlc3RUaGVtZUNv
bnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duVHlw
ZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBj
YXNlIFNCUF9USFVNQkJUTkhPUlo6CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6SG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIFNCUF9USFVNQkJUTlZFUlQ6CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6VmVydGljYWxTY3JvbGxUaHVtYlR5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2Fz
ZSBTQlBfR1JJUFBFUkhPUlo6CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6SG9yaXpvbnRhbFNjcm9sbEdyaXBUeXBlOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
U0JQX0dSSVBQRVJWRVJUOgorICAgICAgICBjdHlwZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46
OlZlcnRpY2FsU2Nyb2xsR3JpcFR5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoK
KyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBTQ1JCU19OT1JNQUw6CisgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJl
YWs7CisKKyAgICBjYXNlIFNDUkJTX0hPVDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2lj
U3RhdGUgPT0gREZDU19IT1QpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpIb3RTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX0hPVkVSOgor
ICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG92ZXJTdGF0ZTsKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIFNDUkJTX1BSRVNTRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpQcmVzc2VkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBT
Q1JCU19ESVNBQkxFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBU
aGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIGJyZWFrOworCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKKyAgICBkcmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBj
c3RhdGUpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRTY3JvbGxiYXJU
cmFjayhXZWJDYW52YXMqIGNhbnZhcywgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNT
dGF0ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCwgY29uc3QgV2ViUmVjdCYgYWxpZ25SZWN0KQorewor
ICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0ZSBj
c3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisKKyAgICBzd2l0
Y2ggKHBhcnQpIHsKKyAgICBjYXNlIFNCUF9VUFBFUlRSQUNLSE9SWjoKKyAgICAgICAgY3R5cGUg
PSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZTsK
KyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9MT1dFUlRSQUNLSE9SWjoKKyAgICAgICAg
Y3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3Jpem9udGFsU2Nyb2xsVHJhY2tGb3J3
YXJkVHlwZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNCUF9VUFBFUlRSQUNLVkVSVDoK
KyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpWZXJ0aWNhbFNjcm9sbFRy
YWNrQmFja1R5cGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBTQlBfTE9XRVJUUkFDS1ZF
UlQ6CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VmVydGljYWxTY3Jv
bGxUcmFja0ZvcndhcmRUeXBlOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAg
ICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgU0NSQlNfTk9STUFMOgorICAgICAgICBX
RUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRl
ID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBTQ1JCU19IT1Q6CisgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsgLy8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgorICAgICAgICBicmVh
azsKKworICAgIGNhc2UgU0NSQlNfSE9WRVI6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpIb3ZlclN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgU0NSQlNfUFJF
U1NFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3Vs
ZCBuZXZlciBoYXBwZW4gaW4gcHJhY3RpY2UuCisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBT
Q1JCU19ESVNBQkxFRDoKKyAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZD
U19JTkFDVElWRSk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkRp
c2FibGVkU3RhdGU7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBk
cmF3Q29udHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOworfQorCit2b2lkIFdlYlRl
c3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRTcGluQnV0dG9uKFdlYkNhbnZhcyogY2FudmFzLCBpbnQg
cGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJSZWN0JiByZWN0KQor
eworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJUZXN0VGhlbWVD
b250cm9sV2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpTdGF0
ZSBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7CisKKyAgICBp
ZiAocGFydCA9PSBTUE5QX1VQKSB7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJv
bFdpbjo6VXBBcnJvd1R5cGU7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2Fz
ZSBVUFNfTk9STUFMOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0g
REZDU19TQ1JPTExVUCk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFVQU19E
SVNBQkxFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X1NDUk9MTFVQIHwgREZDU19JTkFDVElWRSkpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVz
dFRoZW1lQ29udHJvbFdpbjo6RGlzYWJsZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFVQU19QUkVTU0VEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2lj
U3RhdGUgPT0gKERGQ1NfU0NST0xMVVAgfCBERkNTX1BVU0hFRCkpOworICAgICAgICAgICAgY3N0
YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6UHJlc3NlZFN0YXRlOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVVBTX0hPVDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQo
Y2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAg
IGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAocGFydCA9PSBTUE5QX0RPV04p
IHsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpEb3duQXJyb3dUeXBl
OworICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgRE5TX05PUk1BTDoKKyAg
ICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfU0NST0xMRE9XTik7
CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEROU19ESVNBQkxFRDoKKyAgICAg
ICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBE
RkNTX0lOQUNUSVZFKSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE5T
X1BSRVNTRUQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZD
U19TQ1JPTExET1dOIHwgREZDU19QVVNIRUQpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRl
c3RUaGVtZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEROU19IT1Q6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSAoREZDU19TQ1JPTExET1dOIHwgREZDU19IT1QpKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9
IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OkhvdmVyU3RhdGU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKK30K
Kwordm9pZCBXZWJUZXN0VGhlbWVFbmdpbmVXaW46OnBhaW50VGV4dEZpZWxkKFdlYkNhbnZhcyog
Y2FudmFzLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLCBjb25zdCBXZWJS
ZWN0JiByZWN0LCBXZWJDb2xvciBjb2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsIGJvb2wgZHJh
d0VkZ2VzKQoreworICAgIFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlR5cGUgY3R5cGUgPSBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duVHlwZTsKKyAgICBXZWJUZXN0VGhlbWVDb250cm9s
V2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpVbmtub3duU3RhdGU7
CisKKyAgICBXRUJLSVRfQVNTRVJUKEVQX0VESVRURVhUID09IHBhcnQpOworICAgIGN0eXBlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VGV4dEZpZWxkVHlwZTsKKworICAgIHN3aXRjaCAoc3Rh
dGUpIHsKKyAgICBjYXNlIEVUU19OT1JNQUw6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250
cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19IT1Q6
CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKKyAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SG90U3RhdGU7CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBFVFNfRElTQUJMRUQ6CisgICAgICAgIFdFQktJVF9BU1NFUlQoY2xh
c3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhl
bWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICBicmVhazsKKworICAgIGNhc2Ug
RVRTX1NFTEVDVEVEOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNT
X1BVU0hFRCk7CisgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByZXNz
ZWRTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVUU19GT0NVU0VEOgorICAgICAg
ICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0
YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Rm9jdXNlZFN0YXRlOworICAgICAgICBicmVh
azsKKworICAgIGNhc2UgRVRTX1JFQURPTkxZOgorICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29u
dHJvbFdpbjo6UmVhZE9ubHlTdGF0ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGRyYXdUZXh0RmllbGQoY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlLCBkcmF3
RWRnZXMsIGZpbGxDb250ZW50QXJlYSwgY29sb3IpOworfQorCit2b2lkIFdlYlRlc3RUaGVtZUVu
Z2luZVdpbjo6cGFpbnRUcmFja2JhcihXZWJDYW52YXMqIGNhbnZhcywgaW50IHBhcnQsIGludCBz
dGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwgY29uc3QgV2ViUmVjdCYgcmVjdCkKK3sKKyAgICBXZWJU
ZXN0VGhlbWVDb250cm9sV2luOjpUeXBlIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
VW5rbm93blR5cGU7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6U3RhdGUgY3N0YXRlID0g
V2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VW5rbm93blN0YXRlOworCisgICAgaWYgKFRLUF9USFVN
QkJPVFRPTSA9PSBwYXJ0KSB7CisgICAgICAgIGN0eXBlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdp
bjo6SG9yaXpvbnRhbFNsaWRlclRodW1iVHlwZTsKKyAgICAgICAgc3dpdGNoIChzdGF0ZSkgewor
ICAgICAgICBjYXNlIFRVU19OT1JNQUw6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBUVVNfSE9UOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFzc2ljU3RhdGUgPT0g
REZDU19IT1QpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6
SG90U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRVU19ESVNBQkxF
RDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJ
VkUpOworICAgICAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6RGlzYWJs
ZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVFVTX1BSRVNTRUQ6
CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hFRCk7
CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpQcmVzc2VkU3Rh
dGU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
V0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKFRLUF9USFVNQlZFUlQgPT0gcGFydCkgeworICAgICAgICBjdHlw
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlOworICAg
ICAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgICAgIGNhc2UgVFVTX05PUk1BTDoKKyAgICAgICAg
ICAgIFdFQktJVF9BU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICAg
ICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIFRVU19IT1Q6CisgICAgICAgICAgICBXRUJLSVRf
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0hPVCk7CisgICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3RTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgVFVTX0RJU0FCTEVEOgorICAgICAgICAgICAgV0VCS0lUX0FTU0VSVChjbGFz
c2ljU3RhdGUgPT0gREZDU19JTkFDVElWRSk7CisgICAgICAgICAgICBjc3RhdGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpEaXNhYmxlZFN0YXRlOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBUVVNfUFJFU1NFRDoKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlQoY2xhc3Np
Y1N0YXRlID09IERGQ1NfUFVTSEVEKTsKKyAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46OlByZXNzZWRTdGF0ZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoVEtQX1RSQUNLID09IHBh
cnQpIHsKKyAgICAgICAgY3R5cGUgPSBXZWJUZXN0VGhlbWVDb250cm9sV2luOjpIb3Jpem9udGFs
U2xpZGVyVHJhY2tUeXBlOworICAgICAgICBXRUJLSVRfQVNTRVJUKHN0YXRlID09IFRSU19OT1JN
QUwpOworICAgICAgICBXRUJLSVRfQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsK
KyAgICAgICAgY3N0YXRlID0gV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6Tm9ybWFsU3RhdGU7Cisg
ICAgfSBlbHNlIGlmIChUS1BfVFJBQ0tWRVJUID09IHBhcnQpIHsKKyAgICAgICAgY3R5cGUgPSBX
ZWJUZXN0VGhlbWVDb250cm9sV2luOjpWZXJ0aWNhbFNsaWRlclRyYWNrVHlwZTsKKyAgICAgICAg
V0VCS0lUX0FTU0VSVChzdGF0ZSA9PSBUUlZTX05PUk1BTCk7CisgICAgICAgIFdFQktJVF9BU1NF
UlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOworICAgICAgICBjc3RhdGUgPSBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpOb3JtYWxTdGF0ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgV0VCS0lU
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBj
dHlwZSwgY3N0YXRlKTsKK30KKworCit2b2lkIFdlYlRlc3RUaGVtZUVuZ2luZVdpbjo6cGFpbnRQ
cm9ncmVzc0JhcihXZWJLaXQ6OldlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJLaXQ6OldlYlJl
Y3QmIGJhclJlY3QsIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgdmFsdWVSZWN0LCBib29sIGRldGVy
bWluYXRlLCBkb3VibGUpCit7CisgICAgV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6VHlwZSBjdHlw
ZSA9IFdlYlRlc3RUaGVtZUNvbnRyb2xXaW46OlByb2dyZXNzQmFyVHlwZTsKKyAgICBXZWJUZXN0
VGhlbWVDb250cm9sV2luOjpTdGF0ZSBjc3RhdGUgPSBkZXRlcm1pbmF0ZSA/IFdlYlRlc3RUaGVt
ZUNvbnRyb2xXaW46Ok5vcm1hbFN0YXRlIDogV2ViVGVzdFRoZW1lQ29udHJvbFdpbjo6SW5kZXRl
cm1pbmF0ZVN0YXRlOworICAgIGRyYXdQcm9ncmVzc0JhcihjYW52YXMsIGN0eXBlLCBjc3RhdGUs
IGJhclJlY3QsIHZhbHVlUmVjdCk7Cit9CisKKworV2ViS2l0OjpXZWJTaXplIFdlYlRlc3RUaGVt
ZUVuZ2luZVdpbjo6Z2V0U2l6ZShpbnQgcGFydCkKK3sKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJT
aXplKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RUaGVtZUVuZ2luZVdpbi5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFRoZW1lRW5naW5lV2luLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODRhM2VjNDJlOWI3N2JlMTUxYzIzNTUzMjliOGQxZDQwNjBjMDM5YwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1dlYlRlc3RUaGVtZUVuZ2luZVdpbi5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBpbXBsZW1l
bnRzIHRoZSBXZWJUaGVtZUVuZ2luZSBBUEkgdXNlZCBieSB0aGUgV2luZG93cyB2ZXJzaW9uIG9m
CisvLyBDaHJvbWl1bSB0byByZW5kZXIgbmF0aXZlIGZvcm0gY29udHJvbHMgbGlrZSBjaGVja2Jv
eGVzLCByYWRpbyBidXR0b25zLAorLy8gYW5kIHNjcm9sbCBiYXJzLgorLy8gVGhlIG5vcm1hbCBp
bXBsZW1lbnRhdGlvbiAobmF0aXZlX3RoZW1lKSByZW5kZXJzIHRoZSBjb250cm9scyB1c2luZyBl
aXRoZXIKKy8vIHRoZSBVWFRoZW1lIHRoZW1pbmcgZW5naW5lIHByZXNlbnQgaW4gWFAsIFZpc3Rh
LCBhbmQgV2luIDcsIG9yIHRoZSAiY2xhc3NpYyIKKy8vIHRoZW1lIHVzZWQgaWYgdGhhdCB0aGVt
ZSBpcyBzZWxlY3RlZCBpbiB0aGUgRGVza3RvcCBzZXR0aW5ncy4KKy8vIFVuZm9ydHVuYXRlbHks
IGJvdGggb2YgdGhlc2UgdGhlbWVzIHJlbmRlciBjb250cm9scyBkaWZmZXJlbnRseSBvbiB0aGUK
Ky8vIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgorLy8KKy8vIEluIG9yZGVyIHRvIGVu
c3VyZSBtYXhpbXVtIGNvbnNpc3RlbmN5IG9mIGJhc2VsaW5lcyBhY3Jvc3MgdGhlIGRpZmZlcmVu
dAorLy8gV2luZG93cyB2ZXJzaW9ucywgd2UgcHJvdmlkZSBhIHNpbXBsZSBpbXBsZW1lbnRhdGlv
biBmb3IgRFJUIGhlcmUKKy8vIGluc3RlYWQuIFRoZXNlIGNvbnRyb2xzIGFyZSBhY3R1YWxseSBw
bGF0Zm9ybS1pbmRlcGVuZGVudCAodGhleSdyZSByZW5kZXJlZAorLy8gdXNpbmcgU2tpYSkgYW5k
IGNvdWxkIGJlIHVzZWQgb24gTGludXggYW5kIHRoZSBNYWMgYXMgd2VsbCwgc2hvdWxkIHdlCisv
LyBjaG9vc2UgdG8gZG8gc28gYXQgc29tZSBwb2ludC4KKy8vCisKKyNpZm5kZWYgV2ViVGVzdFRo
ZW1lRW5naW5lV2luX2gKKyNkZWZpbmUgV2ViVGVzdFRoZW1lRW5naW5lV2luX2gKKworI2luY2x1
ZGUgPHB1YmxpYy93aW4vV2ViVGhlbWVFbmdpbmUuaD4KKworbmFtZXNwYWNlIFdlYlRlc3RSdW5u
ZXIgeworCitjbGFzcyBXZWJUZXN0VGhlbWVFbmdpbmVXaW4gOiBwdWJsaWMgV2ViS2l0OjpXZWJU
aGVtZUVuZ2luZSB7CitwdWJsaWM6CisgICAgV2ViVGVzdFRoZW1lRW5naW5lV2luKCkgeyB9CisK
KyAgICAvLyBXZWJUaGVtZUVuZ2luZSBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1
dHRvbigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBp
bnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAg
IHZpcnR1YWwgdm9pZCBwYWludE1lbnVMaXN0KAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyos
IGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdl
YktpdDo6V2ViUmVjdCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQXJyb3co
CisgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRl
LAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhclRodW1iKAorICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0
LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2Vi
UmVjdCYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVHJhY2soCisgICAgICAg
IFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0
ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwgY29uc3QgV2ViS2l0OjpXZWJSZWN0
JiBhbGlnblJlY3QpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U3BpbkJ1dHRvbigKKyAgICAg
ICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0
YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJlY3QmKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRleHRGaWVsZCgKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFydCwg
aW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlJl
Y3QmLCBXZWJLaXQ6OldlYkNvbG9yLCBib29sIGZpbGxDb250ZW50QXJlYSwKKyAgICAgICAgYm9v
bCBkcmF3RWRnZXMpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tiYXIoCisgICAgICAg
IFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0
ZSwKKyAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRQcm9ncmVzc0JhcigKKyAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBjb25zdCBXZWJL
aXQ6OldlYlJlY3QmIGJhclJlY3QsCisgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgdmFs
dWVSZWN0LAorICAgICAgICBib29sIGRldGVybWluYXRlLCBkb3VibGUgdGltZSk7CisKKyAgICB2
aXJ0dWFsIFdlYktpdDo6V2ViU2l6ZSBnZXRTaXplKGludCBwYXJ0KTsKK307CisKK30KKworI2Vu
ZGlmIC8vIFdlYlRlc3RUaGVtZUVuZ2luZVdpbl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCA2NmYxYzQwZGMwYmExZjBlYzY4MTFiZjhiNDU1NzM4
YTY0OWE3MmQ4Li4xNGYyNzkxYTNjZDFkNTRiMGM5YWM0YmQ0N2EwZWE5M2VjZTMwOTgwIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTEzNyw2ICsx
MzcsMTEgQEAgdm9pZCBUZXN0U2hlbGw6OmluaXRpYWxpemUoTW9ja1BsYXRmb3JtKiBwbGF0Zm9y
bVN1cHBvcnQpCiAjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQogICAgIG1fcHJlcmVuZGVyaW5n
U3VwcG9ydCA9IGFkb3B0UHRyKG5ldyBNb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydCgpKTsKICNl
bmRpZgorI2lmICFkZWZpbmVkKFVTRV9ERUZBVUxUX1JFTkRFUl9USEVNRSkgJiYgKE9TKFdJTkRP
V1MpIHx8IE9TKE1BQ19PU19YKSkKKyAgICAvLyBTZXQgdGhlbWUgZW5naW5lLgorICAgIHdlYmtp
dF9zdXBwb3J0OjpTZXRUaGVtZUVuZ2luZShtX3Rlc3RJbnRlcmZhY2VzLT50aGVtZUVuZ2luZSgp
KTsKKyNlbmRpZgorCiAKICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCAxY2IzNGFjMWM0NWFiMDZj
YjBkYjlmNjFhMTNhZWNmNGM1MmMxOTRiLi4xNzQ5OGQzYmVmMTY5Mzg5ZjQ4MzBmYTFmOTg3YjAx
OGE5MDZkNGFiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaApA
QCAtNDcsNiArNDcsNyBAQCBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2Vi
RnJhbWU7CiBjbGFzcyBXZWJUaHJlYWQ7CiBjbGFzcyBXZWJWaWV3OworY2xhc3MgV2ViVGhlbWVF
bmdpbmU7CiBjbGFzcyBXZWJVUkw7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbE1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbE1hYy5tbQppbmRleCBkNzlhOGM4MzU2N2NmMWE3ZDVjYWY1ZDA5OGVmMGFk
NGM0YTE3NWM0Li41M2VkZTU2NjY5YjI4NDE4MzkzNzc1Njg2NjAzN2FkMDA4MDhiZjI2IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxNYWMubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsTWFjLm1tCkBAIC0zMSwx
MiArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiVGVzdFNoZWxsLmgi
Ci0jaW5jbHVkZSAiV2ViVGhlbWVFbmdpbmVEUlRNYWMuaCIKICNpbmNsdWRlICJ3ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgogCi1zdGF0
aWMgV2ViVGhlbWVFbmdpbmVEUlRNYWMgdGhlbWVFbmdpbmU7Ci0KIC8vIEEgY2xhc3MgdG8gYmUg
dGhlIHRhcmdldC9zZWxlY3RvciBvZiB0aGUgIndhdGNoZG9nIiB0aHJlYWQgdGhhdCBlbnN1cmVz
CiAvLyBwYWdlcyB0aW1lb3V0IGlmIHRoZXkgdGFrZSB0b28gbG9uZyBhbmQgdGVsbHMgdGhlIHRl
c3QgaGFybmVzcyB2aWEgc3Rkb3V0LgogQGludGVyZmFjZSBXYXRjaERvZ1RhcmdldCA6IE5TT2Jq
ZWN0IHsKQEAgLTEyOSw3ICsxMjYsNiBAQCB2b2lkIFRlc3RTaGVsbDo6d2FpdFRlc3RGaW5pc2hl
ZCgpCiAKIHZvaWQgcGxhdGZvcm1Jbml0KGludCosIGNoYXIqKiopCiB7Ci0gICAgd2Via2l0X3N1
cHBvcnQ6OlNldFRoZW1lRW5naW5lKCZ0aGVtZUVuZ2luZSk7CiB9CiAKIHZvaWQgb3BlblN0YXJ0
dXBEaWFsb2coKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbFdp
bi5jcHAKaW5kZXggM2E0NmNmYjcxYmJmNjE1OTc1N2I5OTA1OTI1ZmNmNTU4MDBhNWU0Zi4uMjUx
NjQxZWQzZTIwY2JkZjZjOWUwZWIzOTIwNTlkMjU4NGJkZGRlMCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsV2luLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGxXaW4uY3BwCkBAIC0zMSw3ICszMSw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGVzdFNoZWxsLmgiCiAKLSNpbmNsdWRlICJX
ZWJUaGVtZUVuZ2luZURSVFdpbi5oIgogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9z
dXBwb3J0LmgiCiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxpby5oPgpAQCAtNDgsMTEg
KzQ3LDYgQEAKICNkZWZpbmUgTk9OQ0xJRU5UTUVUUklDU19TSVpFX1BSRV9WSVNUQSBcCiAgICAg
U0laRU9GX1NUUlVDVF9XSVRIX1NQRUNJRklFRF9MQVNUX01FTUJFUihOT05DTElFTlRNRVRSSUNT
LCBsZk1lc3NhZ2VGb250KQogCi0jaWZuZGVmIFVTRV9ERUZBVUxUX1JFTkRFUl9USEVNRQotLy8g
VGhlbWUgZW5naW5lCi1zdGF0aWMgV2ViVGhlbWVFbmdpbmVEUlRXaW4gdGhlbWVFbmdpbmU7Ci0j
ZW5kaWYKLQogLy8gVGhyZWFkIG1haW4gdG8gcnVuIGZvciB0aGUgdGhyZWFkIHdoaWNoIGp1c3Qg
dGVzdHMgZm9yIHRpbWVvdXQuCiB1bnNpZ25lZCBpbnQgX19zdGRjYWxsIHdhdGNoRG9nVGhyZWFk
KHZvaWQqIGFyZykKIHsKQEAgLTEyMCwxMSArMTE0LDYgQEAgdm9pZCBwbGF0Zm9ybUluaXQoaW50
KiwgY2hhcioqKikKICAgICBfc2V0bW9kZShfZmlsZW5vKHN0ZG91dCksIF9PX0JJTkFSWSk7CiAg
ICAgX3NldG1vZGUoX2ZpbGVubyhzdGRlcnIpLCBfT19CSU5BUlkpOwogCi0jaWZuZGVmIFVTRV9E
RUZBVUxUX1JFTkRFUl9USEVNRQotICAgIC8vIFNldCB0aGVtZSBlbmdpbmUuCi0gICAgd2Via2l0
X3N1cHBvcnQ6OlNldFRoZW1lRW5naW5lKCZ0aGVtZUVuZ2luZSk7Ci0jZW5kaWYKLQogICAgIC8v
IExvYWQgQWhlbSBmb250LgogICAgIC8vIEFIRU1fX19fLlRURiBpcyBjb3BpZWQgdG8gdGhlIGRp
cmVjdG9yeSBvZiBEdW1wUmVuZGVyVHJlZS5leGUgYnkgV2ViS2l0Lmd5cC4KICAgICBXQ0hBUiBw
YXRoW19NQVhfUEFUSF07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVGhlbWVDb250cm9sRFJUV2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggYzE0MzFkODRiNTQ2NzBkMmM5ZDY5ZTAyMDNmMTA5NjI3NzE4NTE5OC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJUaGVtZUNvbnRyb2xEUlRXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTI5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBhIHNpbXBsZSBnZW5lcmljIHZlcnNpb24g
b2YgdGhlIFdlYlRoZW1lRW5naW5lLAotLy8gd2hpY2ggaXMgdXNlZCB0byBkcmF3IGFsbCB0aGUg
bmF0aXZlIGNvbnRyb2xzIG9uIGEgd2ViIHBhZ2UuIFdlIHVzZSB0aGlzCi0vLyBmaWxlIHdoZW4g
cnVubmluZyBpbiBsYXlvdXQgdGVzdCBtb2RlIGluIG9yZGVyIHRvIHJlbW92ZSBhbnkKLS8vIHBs
YXRmb3JtLXNwZWNpZmljIHJlbmRlcmluZyBkaWZmZXJlbmNlcyBkdWUgdG8gdGhlbWVzLCBjb2xv
cnMsIGV0Yy4KLS8vCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJUaGVtZUNv
bnRyb2xEUlRXaW4uaCIKLQotI2luY2x1ZGUgInNraWEvZXh0L3NraWFfdXRpbHNfd2luLmgiCi0j
aW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDYW52YXMuaCIKLSNpbmNs
dWRlICJ0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1BhaW50LmgiCi0jaW5jbHVkZSAi
dGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tQYXRoLmgiCi0jaW5jbHVkZSAidGhpcmRf
cGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tSZWN0LmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+
Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQot
c3RhdGljIGNvbnN0IFNrQ29sb3IgZWRnZUNvbG9yICAgICA9IFNLX0NvbG9yQkxBQ0s7Ci1zdGF0
aWMgY29uc3QgU2tDb2xvciByZWFkT25seUNvbG9yID0gU2tDb2xvclNldFJHQigweGU5LCAweGMy
LCAweGE2KTsKLXN0YXRpYyBjb25zdCBTa0NvbG9yIGZnQ29sb3IgICAgICAgPSBTS19Db2xvckJM
QUNLOwotc3RhdGljIGNvbnN0IFNrQ29sb3IgYmdDb2xvcnNbXSAgICA9IHsKLSAgICBTS19Db2xv
ckJMQUNLLCAgICAgICAgICAgICAgICAgICAvLyBVbmtub3duCi0gICAgU2tDb2xvclNldFJHQigw
eGM5LCAweGM5LCAweGM5KSwgLy8gRGlzYWJsZWQKLSAgICBTa0NvbG9yU2V0UkdCKDB4ZjMsIDB4
ZTAsIDB4ZDApLCAvLyBSZWFkb25seQotICAgIFNrQ29sb3JTZXRSR0IoMHg4OSwgMHhjNCwgMHhm
ZiksIC8vIE5vcm1hbAotICAgIFNrQ29sb3JTZXRSR0IoMHg0MywgMHhmOSwgMHhmZiksIC8vIEhv
dAotICAgIFNrQ29sb3JTZXRSR0IoMHgyMCwgMHhmNiwgMHhjYyksIC8vIEZvY3VzZWQKLSAgICBT
a0NvbG9yU2V0UkdCKDB4MDAsIDB4ZjMsIDB4YWMpLCAvLyBIb3ZlcgotICAgIFNrQ29sb3JTZXRS
R0IoMHhhOSwgMHhmZiwgMHgxMiksIC8vIFByZXNzZWQKLSAgICBTa0NvbG9yU2V0UkdCKDB4Y2Ms
IDB4Y2MsIDB4Y2MpICAvLyBJbmRldGVybWluYXRlCi19OwotCi1zdGF0aWMgU2tJUmVjdCB2YWxp
ZGF0ZShjb25zdCBTa0lSZWN0JiByZWN0LCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5
cGUpCi17Ci0gICAgc3dpdGNoIChjdHlwZSkgewotICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJU
V2luOjpVbmNoZWNrZWRCb3hUeXBlOgotICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUV2luOjpD
aGVja2VkQm94VHlwZToKLSAgICBjYXNlIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2Vk
UmFkaW9UeXBlOgotICAgIGNhc2UgV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkUmFkaW9U
eXBlOiB7Ci0gICAgICAgIFNrSVJlY3QgcmV0dmFsID0gcmVjdDsKLQotICAgICAgICAvLyBUaGUg
bWF4aW11bSB3aWR0aCBhbmQgaGVpZ2h0IGlzIDEzLgotICAgICAgICAvLyBDZW50ZXIgdGhlIHNx
dWFyZSBpbiB0aGUgcGFzc2VkIHJlY3RhbmdsZS4KLSAgICAgICAgY29uc3QgaW50IG1heENvbnRy
b2xTaXplID0gMTM7Ci0gICAgICAgIGludCBjb250cm9sU2l6ZSA9IHN0ZDo6bWluKHJlY3Qud2lk
dGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgICAgIGNvbnRyb2xTaXplID0gc3RkOjptaW4oY29u
dHJvbFNpemUsIG1heENvbnRyb2xTaXplKTsKLQotICAgICAgICByZXR2YWwuZkxlZnQgICA9IHJl
Y3QuZkxlZnQgKyAocmVjdC53aWR0aCgpIC8gMikgLSAoY29udHJvbFNpemUgLyAyKTsKLSAgICAg
ICAgcmV0dmFsLmZSaWdodCAgPSByZXR2YWwuZkxlZnQgKyBjb250cm9sU2l6ZSAtIDE7Ci0gICAg
ICAgIHJldHZhbC5mVG9wICAgID0gcmVjdC5mVG9wICsgKHJlY3QuaGVpZ2h0KCkgLyAyKSAtIChj
b250cm9sU2l6ZSAvIDIpOwotICAgICAgICByZXR2YWwuZkJvdHRvbSA9IHJldHZhbC5mVG9wICsg
Y29udHJvbFNpemUgLSAxOwotCi0gICAgICAgIHJldHVybiByZXR2YWw7Ci0gICAgfQotCi0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHJlY3Q7Ci0gICAgfQotfQotCi0vLyBXZWJUaGVtZUNv
bnRyb2xEUlRXaW4KLQotV2ViVGhlbWVDb250cm9sRFJUV2luOjpXZWJUaGVtZUNvbnRyb2xEUlRX
aW4oU2tDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFNrSVJlY3QmIGlyZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVHlwZSBjdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFN0YXRlIGNzdGF0ZSkKLSAgICA6IG1fY2FudmFzKGNhbnZh
cykKLSAgICAsIG1faXJlY3QodmFsaWRhdGUoaXJlY3QsIGN0eXBlKSkKLSAgICAsIG1fdHlwZShj
dHlwZSkKLSAgICAsIG1fc3RhdGUoY3N0YXRlKQotICAgICwgbV9sZWZ0KG1faXJlY3QuZkxlZnQp
Ci0gICAgLCBtX3JpZ2h0KG1faXJlY3QuZlJpZ2h0KQotICAgICwgbV90b3AobV9pcmVjdC5mVG9w
KQotICAgICwgbV9ib3R0b20obV9pcmVjdC5mQm90dG9tKQotICAgICwgbV9oZWlnaHQobV9pcmVj
dC5oZWlnaHQoKSkKLSAgICAsIG1fd2lkdGgobV9pcmVjdC53aWR0aCgpKQotICAgICwgbV9lZGdl
Q29sb3IoZWRnZUNvbG9yKQotICAgICwgbV9iZ0NvbG9yKGJnQ29sb3JzW2NzdGF0ZV0pCi0gICAg
LCBtX2ZnQ29sb3IoZmdDb2xvcikKLXsKLX0KLQotV2ViVGhlbWVDb250cm9sRFJUV2luOjp+V2Vi
VGhlbWVDb250cm9sRFJUV2luKCkKLXsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OmJveChjb25zdCBTa0lSZWN0JiByZWN0LCBTa0NvbG9yIGZpbGxDb2xvcikKLXsKLSAgICBTa1Bh
aW50IHBhaW50OwotCi0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwot
ICAgIHBhaW50LnNldENvbG9yKGZpbGxDb2xvcik7Ci0gICAgbV9jYW52YXMtPmRyYXdJUmVjdChy
ZWN0LCBwYWludCk7Ci0KLSAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgcGFp
bnQuc2V0U3R5bGUoU2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdJ
UmVjdChyZWN0LCBwYWludCk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250cm9sRFJUV2luOjpsaW5l
KGludCB4MCwgaW50IHkwLCBpbnQgeDEsIGludCB5MSwgU2tDb2xvciBjb2xvcikKLXsKLSAgICBT
a1BhaW50IHBhaW50OwotICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBtX2NhbnZhcy0+
ZHJhd0xpbmUoU2tJbnRUb1NjYWxhcih4MCksIFNrSW50VG9TY2FsYXIoeTApLAotICAgICAgICAg
ICAgICAgICAgICAgICBTa0ludFRvU2NhbGFyKHgxKSwgU2tJbnRUb1NjYWxhcih5MSksCi0gICAg
ICAgICAgICAgICAgICAgICAgIHBhaW50KTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OnRyaWFuZ2xlKGludCB4MCwgaW50IHkwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB4MSwgaW50IHkxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCB4MiwgaW50IHkyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNrQ29sb3IgY29sb3IpCi17Ci0gICAgU2tQYXRoIHBhdGg7Ci0gICAgU2tQYWludCBwYWlu
dDsKLQotICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1Bh
aW50OjprRmlsbF9TdHlsZSk7Ci0gICAgcGF0aC5pbmNSZXNlcnZlKDQpOwotICAgIHBhdGgubW92
ZVRvKFNrSW50VG9TY2FsYXIoeDApLCBTa0ludFRvU2NhbGFyKHkwKSk7Ci0gICAgcGF0aC5saW5l
VG8oU2tJbnRUb1NjYWxhcih4MSksIFNrSW50VG9TY2FsYXIoeTEpKTsKLSAgICBwYXRoLmxpbmVU
byhTa0ludFRvU2NhbGFyKHgyKSwgU2tJbnRUb1NjYWxhcih5MikpOwotICAgIHBhdGguY2xvc2Uo
KTsKLSAgICBtX2NhbnZhcy0+ZHJhd1BhdGgocGF0aCwgcGFpbnQpOwotCi0gICAgcGFpbnQuc2V0
Q29sb3IobV9lZGdlQ29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2Vf
U3R5bGUpOwotICAgIG1fY2FudmFzLT5kcmF3UGF0aChwYXRoLCBwYWludCk7Ci19Ci0KLXZvaWQg
V2ViVGhlbWVDb250cm9sRFJUV2luOjpyb3VuZFJlY3QoU2tDb2xvciBjb2xvcikKLXsKLSAgICBT
a1JlY3QgcmVjdDsKLSAgICBTa1NjYWxhciByYWRpdXMgPSBTa0ludFRvU2NhbGFyKDUpOwotICAg
IFNrUGFpbnQgcGFpbnQ7Ci0KLSAgICByZWN0LnNldChtX2lyZWN0KTsKLSAgICBwYWludC5zZXRD
b2xvcihjb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5bGUpOwot
ICAgIG1fY2FudmFzLT5kcmF3Um91bmRSZWN0KHJlY3QsIHJhZGl1cywgcmFkaXVzLCBwYWludCk7
Ci0KLSAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xvcik7Ci0gICAgcGFpbnQuc2V0U3R5bGUo
U2tQYWludDo6a1N0cm9rZV9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdSb3VuZFJlY3QocmVj
dCwgcmFkaXVzLCByYWRpdXMsIHBhaW50KTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46Om92YWwoU2tDb2xvciBjb2xvcikKLXsKLSAgICBTa1JlY3QgcmVjdDsKLSAgICBTa1BhaW50
IHBhaW50OwotCi0gICAgcmVjdC5zZXQobV9pcmVjdCk7Ci0gICAgcGFpbnQuc2V0Q29sb3IoY29s
b3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtGaWxsX1N0eWxlKTsKLSAgICBtX2Nh
bnZhcy0+ZHJhd092YWwocmVjdCwgcGFpbnQpOwotCi0gICAgcGFpbnQuc2V0Q29sb3IobV9lZGdl
Q29sb3IpOwotICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAg
IG1fY2FudmFzLT5kcmF3T3ZhbChyZWN0LCBwYWludCk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVDb250
cm9sRFJUV2luOjpjaXJjbGUoU2tTY2FsYXIgcmFkaXVzLCBTa0NvbG9yIGNvbG9yKQotewotICAg
IFNrU2NhbGFyIGN5ID0gU2tJbnRUb1NjYWxhcihtX3RvcCAgKyBtX2hlaWdodCAvIDIpOwotICAg
IFNrU2NhbGFyIGN4ID0gU2tJbnRUb1NjYWxhcihtX2xlZnQgKyBtX3dpZHRoIC8gMik7Ci0gICAg
U2tQYWludCBwYWludDsKLQotICAgIHBhaW50LnNldENvbG9yKGNvbG9yKTsKLSAgICBwYWludC5z
ZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdDaXJjbGUo
Y3gsIGN5LCByYWRpdXMsIHBhaW50KTsKLQotICAgIHBhaW50LnNldENvbG9yKG1fZWRnZUNvbG9y
KTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprU3Ryb2tlX1N0eWxlKTsKLSAgICBtX2Nh
bnZhcy0+ZHJhd0NpcmNsZShjeCwgY3ksIHJhZGl1cywgcGFpbnQpOwotfQotCi12b2lkIFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6bmVzdGVkQm94ZXMoaW50IGluZGVudExlZnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGVudFRvcCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50UmlnaHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGVudEJvdHRvbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0NvbG9yIG91dGVyQ29sb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBpbm5lckNvbG9yKQot
ewotICAgIFNrSVJlY3QgbGlyZWN0OwotICAgIGJveChtX2lyZWN0LCBvdXRlckNvbG9yKTsKLSAg
ICBsaXJlY3Quc2V0KG1faXJlY3QuZkxlZnQgKyBpbmRlbnRMZWZ0LAotICAgICAgICAgICAgICAg
bV9pcmVjdC5mVG9wICsgaW5kZW50VG9wLAotICAgICAgICAgICAgICAgbV9pcmVjdC5mUmlnaHQg
LSBpbmRlbnRSaWdodCwKLSAgICAgICAgICAgICAgIG1faXJlY3QuZkJvdHRvbSAtIGluZGVudEJv
dHRvbSk7Ci0gICAgYm94KGxpcmVjdCwgaW5uZXJDb2xvcik7Ci19Ci0KLXZvaWQgV2ViVGhlbWVD
b250cm9sRFJUV2luOjptYXJrU3RhdGUoKQotewotICAgIC8vIFRoZSBob3Jpem9udGFsIGxpbmVz
IGluIGEgcmVhZCBvbmx5IGNvbnRyb2wgYXJlIHNwYWNlZCBieSB0aGlzIGFtb3VudC4KLSAgICBj
b25zdCBpbnQgcmVhZE9ubHlMaW5lT2Zmc2V0ID0gNTsKLQotICAgIC8vIFRoZSBsZW5ndGggb2Yg
YSB0cmlhbmdsZSBzaWRlIGZvciB0aGUgY29ybmVyIG1hcmtzLgotICAgIGNvbnN0IGludCB0cmlh
bmdsZVNpemUgPSA1OwotCi0gICAgc3dpdGNoIChtX3N0YXRlKSB7Ci0gICAgY2FzZSBVbmtub3du
U3RhdGU6Ci0gICAgY2FzZSBEaXNhYmxlZFN0YXRlOgotICAgIGNhc2UgTm9ybWFsU3RhdGU6Ci0g
ICAgY2FzZSBJbmRldGVybWluYXRlU3RhdGU6Ci0gICAgICAgIC8vIERvbid0IHZpc3VhbGx5IG1h
cmsgdGhlc2Ugc3RhdGVzIChjb2xvciBpcyBlbm91Z2gpLgotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFJlYWRPbmx5U3RhdGU6Ci0gICAgICAgIC8vIERyYXdpbmcgbGluZXMgYWNyb3NzIHRoZSBj
b250cm9sLgotICAgICAgICBmb3IgKGludCBpID0gbV90b3AgKyByZWFkT25seUxpbmVPZmZzZXQ7
IGkgPCBtX2JvdHRvbTsgaSArPSByZWFkT25seUxpbmVPZmZzZXQpCi0gICAgICAgICAgICBsaW5l
KG1fbGVmdCArIDEsIGksIG1fcmlnaHQgLSAxLCBpLCByZWFkT25seUNvbG9yKTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIEhvdFN0YXRlOgotICAgICAgICAvLyBEcmF3IGEgdHJpYW5nbGUg
aW4gdGhlIHVwcGVyIGxlZnQgY29ybmVyIG9mIHRoZSBjb250cm9sLgotICAgICAgICB0cmlhbmds
ZShtX2xlZnQsICAgICAgICAgICAgICAgICBtX3RvcCwKLSAgICAgICAgICAgICAgICAgbV9sZWZ0
ICsgdHJpYW5nbGVTaXplLCAgbV90b3AsCi0gICAgICAgICAgICAgICAgIG1fbGVmdCwgICAgICAg
ICAgICAgICAgIG1fdG9wICsgdHJpYW5nbGVTaXplLCAgICBtX2VkZ2VDb2xvcik7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBIb3ZlclN0YXRlOgotICAgICAgICAvLyBEcmF3IGEgdHJpYW5n
bGUgaW4gdGhlIHVwcGVyIHJpZ2h0IGNvcm5lciBvZiB0aGUgY29udHJvbC4KLSAgICAgICAgdHJp
YW5nbGUobV9yaWdodCwgICAgICAgICAgICAgICAgbV90b3AsCi0gICAgICAgICAgICAgICAgIG1f
cmlnaHQsICAgICAgICAgICAgICAgIG1fdG9wICsgdHJpYW5nbGVTaXplLAotICAgICAgICAgICAg
ICAgICBtX3JpZ2h0IC0gdHJpYW5nbGVTaXplLCBtX3RvcCwgICAgICAgICAgICAgICAgICAgbV9l
ZGdlQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRm9jdXNlZFN0YXRlOgotICAg
ICAgICAvLyBEcmF3IGEgdHJpYW5nbGUgaW4gdGhlIGJvdHRvbSByaWdodCBjb3JuZXIgb2YgdGhl
IGNvbnRyb2wuCi0gICAgICAgIHRyaWFuZ2xlKG1fcmlnaHQsICAgICAgICAgICAgICAgIG1fYm90
dG9tLAotICAgICAgICAgICAgICAgICBtX3JpZ2h0IC0gdHJpYW5nbGVTaXplLCBtX2JvdHRvbSwK
LSAgICAgICAgICAgICAgICAgbV9yaWdodCwgICAgICAgICAgICAgICAgbV9ib3R0b20gLSB0cmlh
bmdsZVNpemUsIG1fZWRnZUNvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFByZXNz
ZWRTdGF0ZToKLSAgICAgICAgLy8gRHJhdyBhIHRyaWFuZ2xlIGluIHRoZSBib3R0b20gbGVmdCBj
b3JuZXIgb2YgdGhlIGNvbnRyb2wuCi0gICAgICAgIHRyaWFuZ2xlKG1fbGVmdCwgICAgICAgICAg
ICAgICAgIG1fYm90dG9tLAotICAgICAgICAgICAgICAgICBtX2xlZnQsICAgICAgICAgICAgICAg
ICBtX2JvdHRvbSAtIHRyaWFuZ2xlU2l6ZSwKLSAgICAgICAgICAgICAgICAgbV9sZWZ0ICsgdHJp
YW5nbGVTaXplLCAgbV9ib3R0b20sICAgICAgICAgICAgICAgIG1fZWRnZUNvbG9yKTsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6ZHJhdygpCi17Ci0gICAgaW50IGhhbGZXaWR0aCA9IG1fd2lkdGgg
LyAyOwotICAgIGludCBoYWxmSGVpZ2h0ID0gbV9oZWlnaHQgLyAyOwotICAgIGludCBxdWFydGVy
V2lkdGggPSBtX3dpZHRoIC8gNDsKLSAgICBpbnQgcXVhcnRlckhlaWdodCA9IG1faGVpZ2h0IC8g
NDsKLQotICAgIC8vIEluZGVudCBhbW91bnRzIGZvciB0aGUgY2hlY2sgaW4gYSBjaGVja2JveCBv
ciByYWRpbyBidXR0b24uCi0gICAgY29uc3QgaW50IGNoZWNrSW5kZW50ID0gMzsKLQotICAgIC8v
IEluZGVudCBhbW91bnRzIGZvciBzaG9ydCBhbmQgbG9uZyBzaWRlcyBvZiB0aGUgc2Nyb2xsYmFy
IG5vdGNoZXMuCi0gICAgY29uc3QgaW50IG5vdGNoTG9uZ09mZnNldCA9IDE7Ci0gICAgY29uc3Qg
aW50IG5vdGNoU2hvcnRPZmZzZXQgPSA0OwotICAgIGNvbnN0IGludCBub09mZnNldCA9IDA7Ci0K
LSAgICAvLyBJbmRlbnQgYW1vdW50cyBmb3IgdGhlIHNob3J0IGFuZCBsb25nIHNpZGVzIG9mIGEg
c2Nyb2xsIHRodW1iIGJveC4KLSAgICBjb25zdCBpbnQgdGh1bWJMb25nSW5kZW50ID0gMDsKLSAg
ICBjb25zdCBpbnQgdGh1bWJTaG9ydEluZGVudCA9IDI7Ci0KLSAgICAvLyBJbmRlbnRzIGZvciB0
aGUgY3Jvc3NoYXRjaCBvbiBhIHNjcm9sbCBncmlwLgotICAgIGNvbnN0IGludCBncmlwTG9uZ0lu
ZGVudCA9IDM7Ci0gICAgY29uc3QgaW50IGdyaXBTaG9ydEluZGVudCA9IDU7Ci0KLSAgICAvLyBJ
bmRlbnRzIGZvciB0aGUgdGhlIHNsaWRlciB0cmFjay4KLSAgICBjb25zdCBpbnQgc2xpZGVySW5k
ZW50ID0gMjsKLQotICAgIHN3aXRjaCAobV90eXBlKSB7Ci0gICAgY2FzZSBVbmtub3duVHlwZToK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBUZXh0RmllbGRUeXBlOgotICAgICAgICAvLyBXZSByZW5kZXIg
dGhpcyBieSBoYW5kIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbi4KLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBQdXNoQnV0dG9uVHlwZToKLSAgICAgICAgLy8gcHVzaCBidXR0b25zIHJlbmRlciBhcyBhIHJv
dW5kZWQgcmVjdGFuZ2xlCi0gICAgICAgIHJvdW5kUmVjdChtX2JnQ29sb3IpOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgVW5jaGVja2VkQm94VHlwZToKLSAgICAgICAgLy8gVW5jaGVja2Vk
IGJveGVzIGFyZSBzaW1wbHkgcGxhaW4gYm94ZXMuCi0gICAgICAgIGJveChtX2lyZWN0LCBtX2Jn
Q29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ2hlY2tlZEJveFR5cGU6Ci0gICAg
ICAgIG5lc3RlZEJveGVzKGNoZWNrSW5kZW50LCBjaGVja0luZGVudCwgY2hlY2tJbmRlbnQsIGNo
ZWNrSW5kZW50LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBJbmRldGVybWluYXRlQ2hlY2tib3hUeXBlOgotICAgICAgICAvLyBJbmRldGVybWluYXRl
IGNoZWNrYm94IGlzIGEgYm94IGNvbnRhaW5pbmcgJy0nLgotICAgICAgICBuZXN0ZWRCb3hlcyhj
aGVja0luZGVudCwgaGFsZkhlaWdodCwgY2hlY2tJbmRlbnQsIGhhbGZIZWlnaHQsIG1fYmdDb2xv
ciwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFVuY2hlY2tlZFJhZGlv
VHlwZToKLSAgICAgICAgY2lyY2xlKFNrSW50VG9TY2FsYXIoaGFsZkhlaWdodCksIG1fYmdDb2xv
cik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDaGVja2VkUmFkaW9UeXBlOgotICAgICAg
ICBjaXJjbGUoU2tJbnRUb1NjYWxhcihoYWxmSGVpZ2h0KSwgbV9iZ0NvbG9yKTsKLSAgICAgICAg
Y2lyY2xlKFNrSW50VG9TY2FsYXIoaGFsZkhlaWdodCAtIGNoZWNrSW5kZW50KSwgbV9mZ0NvbG9y
KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEhvcml6b250YWxTY3JvbGxUcmFja0JhY2tU
eXBlOiB7Ci0gICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSBsZWZ0Lgot
ICAgICAgICBpbnQgbG9uZ09mZnNldCA9IGhhbGZIZWlnaHQgLSBub3RjaExvbmdPZmZzZXQ7Ci0g
ICAgICAgIGludCBzaG9ydE9mZnNldCA9IG1fd2lkdGggLSBub3RjaFNob3J0T2Zmc2V0OwotICAg
ICAgICBuZXN0ZWRCb3hlcyhub09mZnNldCwgbG9uZ09mZnNldCwgc2hvcnRPZmZzZXQsIGxvbmdP
ZmZzZXQsIG1fYmdDb2xvciwgbV9lZGdlQ29sb3IpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBjYXNlIEhvcml6b250YWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOiB7Ci0gICAgICAgIC8v
IERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSByaWdodC4KLSAgICAgICAgaW50IGxvbmdP
ZmZzZXQgID0gaGFsZkhlaWdodCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAgICAgaW50IHNob3J0
T2Zmc2V0ID0gbV93aWR0aCAtIG5vdGNoU2hvcnRPZmZzZXQ7Ci0gICAgICAgIG5lc3RlZEJveGVz
KHNob3J0T2Zmc2V0LCBsb25nT2Zmc2V0LCBub09mZnNldCwgbG9uZ09mZnNldCwgbV9iZ0NvbG9y
LCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFZlcnRpY2Fs
U2Nyb2xsVHJhY2tCYWNrVHlwZTogewotICAgICAgICAvLyBEcmF3IGEgYm94IHdpdGggYSBub3Rj
aCBhdCB0aGUgdG9wLgotICAgICAgICBpbnQgbG9uZ09mZnNldCAgPSBoYWxmV2lkdGggLSBub3Rj
aExvbmdPZmZzZXQ7Ci0gICAgICAgIGludCBzaG9ydE9mZnNldCA9IG1faGVpZ2h0IC0gbm90Y2hT
aG9ydE9mZnNldDsKLSAgICAgICAgbmVzdGVkQm94ZXMobG9uZ09mZnNldCwgbm9PZmZzZXQsIGxv
bmdPZmZzZXQsIHNob3J0T2Zmc2V0LCBtX2JnQ29sb3IsIG1fZmdDb2xvcik7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIGNhc2UgVmVydGljYWxTY3JvbGxUcmFja0ZvcndhcmRUeXBlOiB7
Ci0gICAgICAgIC8vIERyYXcgYSBib3ggd2l0aCBhIG5vdGNoIGF0IHRoZSBib3R0b20uCi0gICAg
ICAgIGludCBsb25nT2Zmc2V0ICA9IGhhbGZXaWR0aCAtIG5vdGNoTG9uZ09mZnNldDsKLSAgICAg
ICAgaW50IHNob3J0T2Zmc2V0ID0gbV9oZWlnaHQgLSBub3RjaFNob3J0T2Zmc2V0OwotICAgICAg
ICBuZXN0ZWRCb3hlcyhsb25nT2Zmc2V0LCBzaG9ydE9mZnNldCwgbG9uZ09mZnNldCwgbm9PZmZz
ZXQsIG1fYmdDb2xvciwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
Y2FzZSBIb3Jpem9udGFsU2Nyb2xsVGh1bWJUeXBlOgotICAgICAgICAvLyBEcmF3IGEgbmFycm93
ZXIgYm94IG9uIHRvcCBvZiB0aGUgb3V0c2lkZSBib3guCi0gICAgICAgIG5lc3RlZEJveGVzKHRo
dW1iTG9uZ0luZGVudCwgdGh1bWJTaG9ydEluZGVudCwgdGh1bWJMb25nSW5kZW50LCB0aHVtYlNo
b3J0SW5kZW50LCBtX2JnQ29sb3IsIG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAg
Y2FzZSBWZXJ0aWNhbFNjcm9sbFRodW1iVHlwZToKLSAgICAgICAgLy8gRHJhdyBhIHNob3J0ZXIg
Ym94IG9uIHRvcCBvZiB0aGUgb3V0c2lkZSBib3guCi0gICAgICAgIG5lc3RlZEJveGVzKHRodW1i
U2hvcnRJbmRlbnQsIHRodW1iTG9uZ0luZGVudCwgdGh1bWJTaG9ydEluZGVudCwgdGh1bWJMb25n
SW5kZW50LCBtX2JnQ29sb3IsIG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBIb3Jpem9udGFsU2xpZGVyVGh1bWJUeXBlOgotICAgIGNhc2UgVmVydGljYWxTbGlkZXJUaHVt
YlR5cGU6Ci0gICAgICAgIC8vIFNsaWRlciB0aHVtYnMgYXJlIG92YWxzLgotICAgICAgICBvdmFs
KG1fYmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBIb3Jpem9udGFsU2Nyb2xs
R3JpcFR5cGU6IHsKLSAgICAgICAgLy8gRHJhdyBhIGhvcml6b250YWwgY3Jvc3NoYXRjaCBmb3Ig
dGhlIGdyaXAuCi0gICAgICAgIGludCBsb25nT2Zmc2V0ID0gaGFsZldpZHRoIC0gZ3JpcExvbmdJ
bmRlbnQ7Ci0gICAgICAgIGxpbmUobV9sZWZ0ICArIGdyaXBMb25nSW5kZW50LCBtX3RvcCAgICAr
IGhhbGZIZWlnaHQsCi0gICAgICAgICAgICAgbV9yaWdodCAtIGdyaXBMb25nSW5kZW50LCBtX3Rv
cCAgICArIGhhbGZIZWlnaHQsICAgICAgbV9mZ0NvbG9yKTsKLSAgICAgICAgbGluZShtX2xlZnQg
ICsgbG9uZ09mZnNldCwgICAgIG1fdG9wICAgICsgZ3JpcFNob3J0SW5kZW50LAotICAgICAgICAg
ICAgIG1fbGVmdCAgKyBsb25nT2Zmc2V0LCAgICAgbV9ib3R0b20gLSBncmlwU2hvcnRJbmRlbnQs
IG1fZmdDb2xvcik7Ci0gICAgICAgIGxpbmUobV9yaWdodCAtIGxvbmdPZmZzZXQsICAgICBtX3Rv
cCAgICArIGdyaXBTaG9ydEluZGVudCwKLSAgICAgICAgICAgICBtX3JpZ2h0IC0gbG9uZ09mZnNl
dCwgICAgIG1fYm90dG9tIC0gZ3JpcFNob3J0SW5kZW50LCBtX2ZnQ29sb3IpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFZlcnRpY2FsU2Nyb2xsR3JpcFR5cGU6IHsKLSAgICAg
ICAgLy8gRHJhdyBhIHZlcnRpY2FsIGNyb3NzaGF0Y2ggZm9yIHRoZSBncmlwLgotICAgICAgICBp
bnQgbG9uZ09mZnNldCA9IGhhbGZIZWlnaHQgLSBncmlwTG9uZ0luZGVudDsKLSAgICAgICAgbGlu
ZShtX2xlZnQgICsgaGFsZldpZHRoLCAgICAgICBtX3RvcCAgICArIGdyaXBMb25nSW5kZW50LAot
ICAgICAgICAgICAgIG1fbGVmdCAgKyBoYWxmV2lkdGgsICAgICAgIG1fYm90dG9tIC0gZ3JpcExv
bmdJbmRlbnQsIG1fZmdDb2xvcik7Ci0gICAgICAgIGxpbmUobV9sZWZ0ICArIGdyaXBTaG9ydElu
ZGVudCwgbV90b3AgICAgKyBsb25nT2Zmc2V0LAotICAgICAgICAgICAgIG1fcmlnaHQgLSBncmlw
U2hvcnRJbmRlbnQsIG1fdG9wICAgICsgbG9uZ09mZnNldCwgICAgIG1fZmdDb2xvcik7Ci0gICAg
ICAgIGxpbmUobV9sZWZ0ICArIGdyaXBTaG9ydEluZGVudCwgbV9ib3R0b20gLSBsb25nT2Zmc2V0
LAotICAgICAgICAgICAgIG1fcmlnaHQgLSBncmlwU2hvcnRJbmRlbnQsIG1fYm90dG9tIC0gbG9u
Z09mZnNldCwgICAgIG1fZmdDb2xvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNh
c2UgTGVmdEFycm93VHlwZToKLSAgICAgICAgLy8gRHJhdyBhIGxlZnQgYXJyb3cgaW5zaWRlIGEg
Ym94LgotICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgdHJpYW5nbGUo
bV9yaWdodCAtIHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAotICAgICAg
ICAgICAgICAgICBtX3JpZ2h0IC0gcXVhcnRlcldpZHRoLCBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWln
aHQsCi0gICAgICAgICAgICAgICAgIG1fbGVmdCAgKyBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsg
aGFsZkhlaWdodCwgICAgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFJp
Z2h0QXJyb3dUeXBlOgotICAgICAgICAvLyBEcmF3IGEgbGVmdCBhcnJvdyBpbnNpZGUgYSBib3gu
Ci0gICAgICAgIGJveChtX2lyZWN0LCBtX2JnQ29sb3IpOwotICAgICAgICB0cmlhbmdsZShtX2xl
ZnQgICsgcXVhcnRlcldpZHRoLCBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAg
ICAgICAgIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fdG9wICAgICsgaGFsZkhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgbV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVy
SGVpZ2h0LCBtX2ZnQ29sb3IpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgVXBBcnJvd1R5
cGU6Ci0gICAgICAgIC8vIERyYXcgYW4gdXAgYXJyb3cgaW5zaWRlIGEgYm94LgotICAgICAgICBi
b3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgdHJpYW5nbGUobV9sZWZ0ICArIHF1YXJ0
ZXJXaWR0aCwgbV9ib3R0b20gLSBxdWFydGVySGVpZ2h0LAotICAgICAgICAgICAgICAgICBtX2xl
ZnQgICsgaGFsZldpZHRoLCAgICBtX3RvcCAgICArIHF1YXJ0ZXJIZWlnaHQsCi0gICAgICAgICAg
ICAgICAgIG1fcmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fYm90dG9tIC0gcXVhcnRlckhlaWdodCwg
bV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIERvd25BcnJvd1R5cGU6Ci0g
ICAgICAgIC8vIERyYXcgYSBkb3duIGFycm93IGluc2lkZSBhIGJveC4KLSAgICAgICAgYm94KG1f
aXJlY3QsIG1fYmdDb2xvcik7Ci0gICAgICAgIHRyaWFuZ2xlKG1fbGVmdCAgKyBxdWFydGVyV2lk
dGgsIG1fdG9wICAgICsgcXVhcnRlckhlaWdodCwKLSAgICAgICAgICAgICAgICAgbV9yaWdodCAt
IHF1YXJ0ZXJXaWR0aCwgbV90b3AgICAgKyBxdWFydGVySGVpZ2h0LAotICAgICAgICAgICAgICAg
ICBtX2xlZnQgICsgaGFsZldpZHRoLCAgICBtX2JvdHRvbSAtIHF1YXJ0ZXJIZWlnaHQsIG1fZmdD
b2xvcik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBIb3Jpem9udGFsU2xpZGVyVHJhY2tU
eXBlOiB7Ci0gICAgICAgIC8vIERyYXcgYSBuYXJyb3cgcmVjdCBmb3IgdGhlIHRyYWNrIHBsdXMg
Ym94IGhhdGNoZXMgb24gdGhlIGVuZHMuCi0gICAgICAgIFNrSVJlY3QgbGlyZWN0OwotICAgICAg
ICBsaXJlY3QgPSBtX2lyZWN0OwotICAgICAgICBsaXJlY3QuaW5zZXQobm9PZmZzZXQsIGhhbGZI
ZWlnaHQgLSBzbGlkZXJJbmRlbnQpOwotICAgICAgICBib3gobGlyZWN0LCBtX2JnQ29sb3IpOwot
ICAgICAgICBsaW5lKG1fbGVmdCwgIG1fdG9wLCBtX2xlZnQsICBtX2JvdHRvbSwgbV9lZGdlQ29s
b3IpOwotICAgICAgICBsaW5lKG1fcmlnaHQsIG1fdG9wLCBtX3JpZ2h0LCBtX2JvdHRvbSwgbV9l
ZGdlQ29sb3IpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFZlcnRpY2FsU2xp
ZGVyVHJhY2tUeXBlOiB7Ci0gICAgICAgIC8vIERyYXcgYSBuYXJyb3cgcmVjdCBmb3IgdGhlIHRy
YWNrIHBsdXMgYm94IGhhdGNoZXMgb24gdGhlIGVuZHMuCi0gICAgICAgIFNrSVJlY3QgbGlyZWN0
OwotICAgICAgICBsaXJlY3QgPSBtX2lyZWN0OwotICAgICAgICBsaXJlY3QuaW5zZXQoaGFsZldp
ZHRoIC0gc2xpZGVySW5kZW50LCBub09mZnNldCk7Ci0gICAgICAgIGJveChsaXJlY3QsIG1fYmdD
b2xvcik7Ci0gICAgICAgIGxpbmUobV9sZWZ0LCBtX3RvcCwgbV9yaWdodCwgbV90b3AsIG1fZWRn
ZUNvbG9yKTsKLSAgICAgICAgbGluZShtX2xlZnQsIG1fYm90dG9tLCBtX3JpZ2h0LCBtX2JvdHRv
bSwgbV9lZGdlQ29sb3IpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIERyb3BE
b3duQnV0dG9uVHlwZToKLSAgICAgICAgLy8gRHJhdyBhIGJveCB3aXRoIGEgYmlnIGRvd24gYXJy
b3cgb24gdG9wLgotICAgICAgICBib3gobV9pcmVjdCwgbV9iZ0NvbG9yKTsKLSAgICAgICAgdHJp
YW5nbGUobV9sZWZ0ICArIHF1YXJ0ZXJXaWR0aCwgbV90b3AsCi0gICAgICAgICAgICAgICAgIG1f
cmlnaHQgLSBxdWFydGVyV2lkdGgsIG1fdG9wLAotICAgICAgICAgICAgICAgICBtX2xlZnQgICsg
aGFsZldpZHRoLCAgICBtX2JvdHRvbSwgbV9mZ0NvbG9yKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAg
ICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgQ1JBU0go
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgbWFya1N0YXRlKCk7Ci19Ci0KLS8vIEJl
Y2F1c2UgcmVuZGVyaW5nIGEgdGV4dCBmaWVsZCBpcyBkZXBlbmRlbnQgb24gaW5wdXQKLS8vIHBh
cmFtZXRlcnMgdGhlIG90aGVyIGNvbnRyb2xzIGRvbid0IGhhdmUsIHdlIHJlbmRlciBpdCBkaXJl
Y3RseQotLy8gcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIG92ZXJjb21wbGljYXRlIGRyYXcoKSBmdXJ0
aGVyLgotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmRyYXdUZXh0RmllbGQoYm9vbCBkcmF3
RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yIGNvbG9yKQotewotICAgIFNrUGFp
bnQgcGFpbnQ7Ci0KLSAgICBpZiAoZmlsbENvbnRlbnRBcmVhKSB7Ci0gICAgICAgIHBhaW50LnNl
dENvbG9yKGNvbG9yKTsKLSAgICAgICAgcGFpbnQuc2V0U3R5bGUoU2tQYWludDo6a0ZpbGxfU3R5
bGUpOwotICAgICAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KG1faXJlY3QsIHBhaW50KTsKLSAgICB9
Ci0gICAgaWYgKGRyYXdFZGdlcykgewotICAgICAgICBwYWludC5zZXRDb2xvcihtX2VkZ2VDb2xv
cik7Ci0gICAgICAgIHBhaW50LnNldFN0eWxlKFNrUGFpbnQ6OmtTdHJva2VfU3R5bGUpOwotICAg
ICAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KG1faXJlY3QsIHBhaW50KTsKLSAgICB9Ci0KLSAgICBt
YXJrU3RhdGUoKTsKLX0KLQotdm9pZCBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OmRyYXdQcm9ncmVz
c0Jhcihjb25zdCBTa0lSZWN0JiBmaWxsUmVjdCkKLXsKLSAgICBTa1BhaW50IHBhaW50OwotCi0g
ICAgcGFpbnQuc2V0Q29sb3IobV9iZ0NvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50
OjprRmlsbF9TdHlsZSk7Ci0gICAgbV9jYW52YXMtPmRyYXdJUmVjdChtX2lyZWN0LCBwYWludCk7
Ci0KLSAgICAvLyBFbXVsYXRlIGNsaXBwaW5nCi0gICAgU2tJUmVjdCB0b2ZpbGw7Ci0gICAgdG9m
aWxsLmludGVyc2VjdChtX2lyZWN0LCBmaWxsUmVjdCk7Ci0gICAgcGFpbnQuc2V0Q29sb3IobV9m
Z0NvbG9yKTsKLSAgICBwYWludC5zZXRTdHlsZShTa1BhaW50OjprRmlsbF9TdHlsZSk7Ci0gICAg
bV9jYW52YXMtPmRyYXdJUmVjdCh0b2ZpbGwsIHBhaW50KTsKLQotICAgIG1hcmtTdGF0ZSgpOwot
fQotCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUNv
bnRyb2xEUlRXaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lQ29u
dHJvbERSVFdpbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjczMWFiMzk2MDg2
ZjNhOWVkYjI2NzUwNGU3MDRhNmMxMDE3OGYyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1l
Q29udHJvbERSVFdpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW4gaW1wbGVtZW50cyB0aGUgZ2VuZXJpYyByZW5kZXJpbmcgb2YgY29udHJv
bHMKLS8vIG5lZWRlZCBieSBXZWJUaGVtZUVuZ2luZURSVFdpbi4gU2VlIHRoZSBjb21tZW50cyBp
biB0aGF0IGNsYXNzCi0vLyBoZWFkZXIgZmlsZSBmb3Igd2h5IHRoaXMgY2xhc3MgaXMgbmVlZGVk
IGFuZCB1c2VkLgotLy8KLS8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGdlbmVyaWMgc2V0IG9m
IHdpZGdldHMgdXNpbmcgU2tpYS4gVGhlIHdpZGdldHMKLS8vIGFyZSBvcHRpbWl6ZWQgZm9yIHRl
c3RhYmlsaXR5LCBub3QgYSBwbGVhc2luZyBhcHBlYXJhbmNlLgotLy8KLQotI2lmbmRlZiBXZWJU
aGVtZUNvbnRyb2xEUlRXaW5faAotI2RlZmluZSBXZWJUaGVtZUNvbnRyb2xEUlRXaW5faAotCi0j
aW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvci5oIgotI2luY2x1
ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgotI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotCi0vLyBTa2lhIGZvcndhcmQgZGVjbGFyYXRpb25zCi1jbGFzcyBT
a0NhbnZhczsKLQotY2xhc3MgV2ViVGhlbWVDb250cm9sRFJUV2luIHsKLSAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShXZWJUaGVtZUNvbnRyb2xEUlRXaW4pOwotcHVibGljOgotICAgIC8vIFRoaXMg
bGlzdCBvZiBzdGF0ZXMgbW9zdGx5IG1pcnJvcnMgdGhlIGxpc3QgaW4gV2ViQ29yZS9wbGF0Zm9y
bS9UaGVtZVR5cGVzLmgKLSAgICAvLyBidXQgaXMgbWFpbnRhaW5lZCBzZXBhcmF0ZWx5IHNpbmNl
IHRoYXQgaXNuJ3QgcHVibGljIGFuZCBhbHNvIHRvIG1pbmltaXplCi0gICAgLy8gZGVwZW5kZW5j
aWVzLgotICAgIC8vIE5vdGUgdGhhdCB0aGUgV2ViS2l0IFRoZW1lVHlwZXMgc2VlbSB0byBpbXBs
eSB0aGF0IGEgY29udHJvbCBjYW4gYmUKLSAgICAvLyBpbiBtdWx0aXBsZSBzdGF0ZXMgc2ltdWx0
YW5lb3VzbHkgYnV0IFdlYlRoZW1lRW5naW5lIG9ubHkgYWxsb3dzIGZvcgotICAgIC8vIGEgc2lu
Z2xlIHN0YXRlIGF0IGEgdGltZS4KLSAgICAvLwotICAgIC8vIFNvbWUgZGVmaW5pdGlvbnMgZm9y
IHRoZSB2YXJpb3VzIHN0YXRlczoKLSAgICAvLyAgIERpc2FibGVkIC0gaW5kaWNhdGVzIHRoYXQg
YSBjb250cm9sIGNhbid0IGJlIG1vZGlmaWVkIG9yIHNlbGVjdGVkCi0gICAgLy8gICAgICAgICAg
ICAgIChjb3JyZXNwb25kcyB0byBIVE1MICdkaXNhYmxlZCcgYXR0cmlidXRlKQotICAgIC8vICAg
UmVhZE9ubHkgLSBpbmRpY2F0ZXMgdGhhdCBhIGNvbnRyb2wgY2FuJ3QgYmUgbW9kaWZpZWQgYnV0
IGNhbiBiZQotICAgIC8vICAgICAgICAgICAgICBzZWxlY3RlZAotICAgIC8vICAgTm9ybWFsICAg
LSB0aGUgbm9ybWFsIHN0YXRlIG9mIGNvbnRyb2wgb24gdGhlIHBhZ2Ugd2hlbiBpdCBpc24ndAot
ICAgIC8vICAgICAgICAgICAgICBmb2N1c2VkIG9yIG90aGVyd2lzZSBhY3RpdmUKLSAgICAvLyAg
IEhvdCAgICAgIC0gd2hlbiB0aGUgbW91c2UgaXMgaG92ZXJpbmcgb3ZlciBhIHBhcnQgb2YgdGhl
IGNvbnRyb2wsCi0gICAgLy8gICAgICAgICAgICAgIGFsbCB0aGUgb3RoZXIgcGFydHMgYXJlIGNv
bnNpZGVyZWQgImhvdCIKLSAgICAvLyAgIEhvdmVyICAgIC0gd2hlbiB0aGUgbW91c2UgaXMgZGly
ZWN0bHkgb3ZlciBhIGNvbnRyb2wgKHRoZSBDU1MKLSAgICAvLyAgICAgICAgICAgICAgIDpob3Zl
ciBwc2V1ZG8tY2xhc3MpCi0gICAgLy8gICBGb2N1c2VkICAtIHdoZW4gdGhlIGNvbnRyb2wgaGFz
IHRoZSBrZXlib2FyZCBmb2N1cwotICAgIC8vICAgUHJlc3NlZCAgLSB3aGVuIHRoZSBjb250cm9s
IGlzIGJlaW5nIHRyaWdnZXJlZCAoYnkgYSBtb3VzZWRvd24gb3IKLSAgICAvLyAgICAgICAgICAg
ICAgYSBrZXkgZXZlbnQpLgotICAgIC8vICAgSW5kZXRlcm1pbmF0ZSAtIHdoZW4gc2V0IHRvIGlu
ZGV0ZXJtaW5hdGUgKG9ubHkgZm9yIHByb2dyZXNzIGJhcikKLSAgICBlbnVtIFN0YXRlIHsKLSAg
ICAgICAgVW5rbm93blN0YXRlID0gMCwKLSAgICAgICAgRGlzYWJsZWRTdGF0ZSwKLSAgICAgICAg
UmVhZE9ubHlTdGF0ZSwKLSAgICAgICAgTm9ybWFsU3RhdGUsCi0gICAgICAgIEhvdFN0YXRlLAot
ICAgICAgICBIb3ZlclN0YXRlLAotICAgICAgICBGb2N1c2VkU3RhdGUsCi0gICAgICAgIFByZXNz
ZWRTdGF0ZSwKLSAgICAgICAgSW5kZXRlcm1pbmF0ZVN0YXRlCi0gICAgfTsKLQotICAgIC8vIFRo
aXMgbGlzdCBvZiB0eXBlcyBtb3N0bHkgbWlycm9ycyB0aGUgbGlzdCBpbgotICAgIC8vIFdlYkNv
cmUvcGxhdGZvcm0vVGhlbWVUeXBlcy5oIGJ1dCBpcyBtYWludGFpbmVkCi0gICAgLy8gc2VwYXJh
dGVseSBzaW5jZSB0aGF0IGlzbid0IHB1YmxpYyBhbmQgYWxzbyB0byBtaW5pbWl6ZSBkZXBlbmRl
bmNpZXMuCi0gICAgLy8KLSAgICAvLyBOb3RlIHRoYXQgd2hhdCB0aGUgdXNlciBtaWdodCB0aGlu
ayBvZiBhcyBhIHNpbmdsZSBjb250cm9sIGNhbiBiZQotICAgIC8vIG1hZGUgdXAgb2YgbXVsdGlw
bGUgcGFydHMuIEZvciBleGFtcGxlLCBhIHNpbmdsZSBzY3JvbGwgYmFyIGNvbnRhaW5zCi0gICAg
Ly8gc2l4IGNsaWNrYWJsZSBwYXJ0cyAtIHR3byBhcnJvd3MsIHRoZSAidGh1bWIiIGluZGljYXRp
bmcgdGhlIGN1cnJlbnQKLSAgICAvLyBwb3NpdGlvbiBvbiB0aGUgYmFyLCB0aGUgb3RoZXIgdHdv
IHBhcnRzIG9mIHRoZSBiYXIgKGJlZm9yZSBhbmQgYWZ0ZXIKLSAgICAvLyB0aGUgdGh1bWIpIGFu
ZCB0aGUgImdyaXBwZXIiIG9uIHRoZSB0aHVtYiBpdHNlbGYuCi0gICAgLy8KLSAgICBlbnVtIFR5
cGUgewotICAgICAgICBVbmtub3duVHlwZSA9IDAsCi0gICAgICAgIFRleHRGaWVsZFR5cGUsCi0g
ICAgICAgIFB1c2hCdXR0b25UeXBlLAotICAgICAgICBVbmNoZWNrZWRCb3hUeXBlLAotICAgICAg
ICBDaGVja2VkQm94VHlwZSwKLSAgICAgICAgSW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZSwKLSAg
ICAgICAgVW5jaGVja2VkUmFkaW9UeXBlLAotICAgICAgICBDaGVja2VkUmFkaW9UeXBlLAotICAg
ICAgICBIb3Jpem9udGFsU2Nyb2xsVHJhY2tCYWNrVHlwZSwKLSAgICAgICAgSG9yaXpvbnRhbFNj
cm9sbFRyYWNrRm9yd2FyZFR5cGUsCi0gICAgICAgIEhvcml6b250YWxTY3JvbGxUaHVtYlR5cGUs
Ci0gICAgICAgIEhvcml6b250YWxTY3JvbGxHcmlwVHlwZSwKLSAgICAgICAgVmVydGljYWxTY3Jv
bGxUcmFja0JhY2tUeXBlLAotICAgICAgICBWZXJ0aWNhbFNjcm9sbFRyYWNrRm9yd2FyZFR5cGUs
Ci0gICAgICAgIFZlcnRpY2FsU2Nyb2xsVGh1bWJUeXBlLAotICAgICAgICBWZXJ0aWNhbFNjcm9s
bEdyaXBUeXBlLAotICAgICAgICBMZWZ0QXJyb3dUeXBlLAotICAgICAgICBSaWdodEFycm93VHlw
ZSwKLSAgICAgICAgVXBBcnJvd1R5cGUsCi0gICAgICAgIERvd25BcnJvd1R5cGUsCi0gICAgICAg
IEhvcml6b250YWxTbGlkZXJUcmFja1R5cGUsCi0gICAgICAgIEhvcml6b250YWxTbGlkZXJUaHVt
YlR5cGUsCi0gICAgICAgIFZlcnRpY2FsU2xpZGVyVHJhY2tUeXBlLAotICAgICAgICBWZXJ0aWNh
bFNsaWRlclRodW1iVHlwZSwKLSAgICAgICAgRHJvcERvd25CdXR0b25UeXBlLAotICAgICAgICBQ
cm9ncmVzc0JhclR5cGUKLSAgICB9OwotCi0gICAgLy8gQ29uc3RydWN0cyBhIGNvbnRyb2wgb2Yg
dGhlIGdpdmVuIHNpemUsIHR5cGUgYW5kIHN0YXRlIHRvIGRyYXcKLSAgICAvLyBvbiB0byB0aGUg
Z2l2ZW4gY2FudmFzLgotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbihTa0NhbnZhcyosIGNvbnN0
IFNrSVJlY3QmLCBUeXBlLCBTdGF0ZSk7Ci0gICAgfldlYlRoZW1lQ29udHJvbERSVFdpbigpOwot
Ci0gICAgLy8gRHJhd3MgdGhlIGNvbnRyb2wuCi0gICAgdm9pZCBkcmF3KCk7Ci0KLSAgICAvLyBV
c2UgdGhpcyBmb3IgVGV4dEZpZWxkIGNvbnRyb2xzIGluc3RlYWQsIGJlY2F1c2UgdGhlIGxvZ2lj
Ci0gICAgLy8gZm9yIGRyYXdpbmcgdGhlbSBpcyBkZXBlbmRlbnQgb24gd2hhdCBXZWJLaXQgdGVs
bHMgdXMgdG8gZG8uCi0gICAgLy8gSWYgZHJhd0VkZ2VzIGlzIHRydWUsIGRyYXcgYW4gZWRnZSBh
cm91bmQgdGhlIGNvbnRyb2wuIElmCi0gICAgLy8gZmlsbENvbnRlbnRBcmVhIGlzIHRydWUsIGZp
bGwgdGhlIGNvbnRlbnQgYXJlYSB3aXRoIHRoZSBnaXZlbiBjb2xvci4KLSAgICB2b2lkIGRyYXdU
ZXh0RmllbGQoYm9vbCBkcmF3RWRnZXMsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBTa0NvbG9yKTsK
LQotICAgIC8vIFVzZSB0aGlzIGZvciBkcmF3aW5nIFByb2dyZXNzQmFyIGNvbnRyb2xzIGluc3Rl
YWQsIHNpbmNlIHdlCi0gICAgLy8gbmVlZCB0byBrbm93IHRoZSByZWN0IHRvIGZpbGwgaW5zaWRl
IHRoZSBiYXIuCi0gICAgdm9pZCBkcmF3UHJvZ3Jlc3NCYXIoY29uc3QgU2tJUmVjdCYgZmlsbFJl
Y3QpOwotCi1wcml2YXRlOgotICAgIC8vIERyYXdzIGEgYm94IG9mIHNpemUgc3BlY2lmaWVkIGJ5
IGlyZWN0LCBmaWxsZWQgd2l0aCB0aGUgZ2l2ZW4gY29sb3IuCi0gICAgLy8gVGhlIGJveCB3aWxs
IGhhdmUgYSBib3JkZXIgZHJhd24gaW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lk
IGJveChjb25zdCBTa0lSZWN0JiBpcmVjdCwgU2tDb2xvcik7Ci0KLQotICAgIC8vIERyYXdzIGEg
dHJpYW5nbGUgb2Ygc2l6ZSBzcGVjaWZpZWQgYnkgdGhlIHRocmVlIHBhaXJzIG9mIGNvb3JkaW5h
dGVzLAotICAgIC8vIGZpbGxlZCB3aXRoIHRoZSBnaXZlbiBjb2xvci4gVGhlIGJveCB3aWxsIGhh
dmUgYW4gZWRnZSBkcmF3biBpbiB0aGUKLSAgICAvLyBkZWZhdWx0IGVkZ2UgY29sb3IuCi0gICAg
dm9pZCB0cmlhbmdsZShpbnQgeDAsIGludCB5MCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50
IHkyLCBTa0NvbG9yKTsKLQotICAgIC8vIERyYXdzIGEgcmVjdGFuZ2xlIHRoZSBzaXplIG9mIHRo
ZSBjb250cm9sIHdpdGggcm91bmRlZCBjb3JuZXJzLCBmaWxsZWQKLSAgICAvLyB3aXRoIHRoZSBz
cGVjaWZpZWQgY29sb3IgKGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29s
b3IpLgotICAgIHZvaWQgcm91bmRSZWN0KFNrQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYW4gb3Zh
bCB0aGUgc2l6ZSBvZiB0aGUgY29udHJvbCwgZmlsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBjb2xv
cgotICAgIC8vIGFuZCB3aXRoIGEgYm9yZGVyIGluIHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCi0g
ICAgdm9pZCBvdmFsKFNrQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYSBjaXJjbGUgY2VudGVyZWQg
aW4gdGhlIGNvbnRyb2wgd2l0aCB0aGUgc3BlY2lmaWVkIHJhZGl1cywKLSAgICAvLyBmaWxsZWQg
d2l0aCB0aGUgc3BlY2lmaWVkIGNvbG9yLCBhbmQgd2l0aCBhIGJvcmRlciBkcmF3IGluIHRoZQot
ICAgIC8vIGRlZmF1bHQgZWRnZSBjb2xvci4KLSAgICB2b2lkIGNpcmNsZShTa1NjYWxhciByYWRp
dXMsIFNrQ29sb3IpOwotCi0gICAgLy8gRHJhd3MgYSBib3ggdGhlIHNpemUgb2YgdGhlIGNvbnRy
b2wsIGZpbGxlZCB3aXRoIHRoZSBvdXRlckNvbG9yIGFuZAotICAgIC8vIHdpdGggYSBib3JkZXIg
aW4gdGhlIGRlZmF1bHQgZWRnZSBjb2xvciwgYW5kIHRoZW4gZHJhd3MgYW5vdGhlciBib3gKLSAg
ICAvLyBpbmRlbnRlZCBvbiBhbGwgZm91ciBzaWRlcyBieSB0aGUgc3BlY2lmaWVkIGFtb3VudHMs
IGZpbGxlZCB3aXRoIHRoZQotICAgIC8vIGlubmVyIGNvbG9yIGFuZCB3aXRoIGEgYm9yZGVyIGlu
IHRoZSBkZWZhdWx0IGVkZ2UgY29sb3IuCi0gICAgdm9pZCBuZXN0ZWRCb3hlcyhpbnQgaW5kZW50
TGVmdCwKLSAgICAgICAgICAgICAgICAgICAgIGludCBpbmRlbnRUb3AsCi0gICAgICAgICAgICAg
ICAgICAgICBpbnQgaW5kZW50UmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZW50
Qm90dG9tLAotICAgICAgICAgICAgICAgICAgICAgU2tDb2xvciBvdXRlckNvbG9yLAotICAgICAg
ICAgICAgICAgICAgICAgU2tDb2xvciBpbm5lckNvbG9yKTsKLQotICAgIC8vIERyYXdzIGEgbGlu
ZSBiZXR3ZWVuIHRoZSB0d28gcG9pbnRzIGluIHRoZSBnaXZlbiBjb2xvci4KLSAgICB2b2lkIGxp
bmUoaW50IHgwLCBpbnQgeTAsIGludCB4MSwgaW50IHkxLCBTa0NvbG9yKTsKLQotICAgIC8vIERy
YXdzIGEgZGlzdGluY3RpdmUgbWFyayBvbiB0aGUgY29udHJvbCBmb3IgZWFjaCBzdGF0ZSwgc28g
dGhhdCB0aGUKLSAgICAvLyBzdGF0ZSBvZiB0aGUgY29udHJvbCBjYW4gYmUgZGV0ZXJtaW5lZCB3
aXRob3V0IG5lZWRpbmcgdG8ga25vdyB3aGljaAotICAgIC8vIGNvbG9yIGlzIHdoaWNoLgotICAg
IHZvaWQgbWFya1N0YXRlKCk7Ci0KLSAgICBTa0NhbnZhcyogbV9jYW52YXM7Ci0gICAgY29uc3Qg
U2tJUmVjdCBtX2lyZWN0OwotICAgIGNvbnN0IFR5cGUgbV90eXBlOwotICAgIGNvbnN0IFN0YXRl
IG1fc3RhdGU7Ci0gICAgY29uc3QgU2tDb2xvciBtX2VkZ2VDb2xvcjsKLSAgICBjb25zdCBTa0Nv
bG9yIG1fYmdDb2xvcjsKLSAgICBjb25zdCBTa0NvbG9yIG1fZmdDb2xvcjsKLQotICAgIC8vIFRo
ZSBmb2xsb3dpbmcgYXJlIGNvbnZlbmllbmNlIGFjY2Vzc29ycyBmb3IgbV9pcmVjdC4KLSAgICBj
b25zdCBpbnQgbV9sZWZ0OwotICAgIGNvbnN0IGludCBtX3JpZ2h0OwotICAgIGNvbnN0IGludCBt
X3RvcDsKLSAgICBjb25zdCBpbnQgbV9ib3R0b207Ci0gICAgY29uc3QgaW50IG1fd2lkdGg7Ci0g
ICAgY29uc3QgaW50IG1faGVpZ2h0OwotfTsKLQotI2VuZGlmIC8vIFdlYlRoZW1lQ29udHJvbERS
VFdpbl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVt
ZUVuZ2luZURSVE1hYy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVF
bmdpbmVEUlRNYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwZmU2NmM5NTI3
ZjAxYTU0MzEwNjc5NTJlYmVmMjk0OTA5MTRhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVt
ZUVuZ2luZURSVE1hYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIGltcGxlbWVudHMg
dGhlIFdlYlRoZW1lRW5naW5lIEFQSSBpbiBzdWNoIGEgd2F5IHRoYXQgd2UgbWF0Y2ggdGhlIE1h
YwotLy8gcG9ydCByZW5kZXJpbmcgbW9yZSB0aGFuIHVzdWFsIENocm9taXVtIHBhdGgsIHRodXMg
YWxsb3dpbmcgdXMgdG8gc2hhcmUKLS8vIG1vcmUgcGl4ZWwgYmFzZWxpbmVzLgotCi0jaWZuZGVm
IFdlYlRoZW1lRW5naW5lRFJUTWFjX2gKLSNkZWZpbmUgV2ViVGhlbWVFbmdpbmVEUlRNYWNfaAot
Ci0jaW5jbHVkZSA8cHVibGljL21hYy9XZWJUaGVtZUVuZ2luZS5oPgotCi1jbGFzcyBXZWJUaGVt
ZUVuZ2luZURSVE1hYyA6IHB1YmxpYyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUaHVtYigKLSAgICAgICAgV2ViS2l0OjpX
ZWJDYW52YXMqLAotICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSwKLSAgICAg
ICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2l6ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpX
ZWJSZWN0JiwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFy
SW5mbyYpOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwYWludEhJVGhlbWVTY3JvbGxi
YXJUaHVtYigKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLAotICAgICAgICBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpTdGF0ZSwKLSAgICAgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2l6
ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwKLSAgICAgICAgY29uc3QgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dE5TU2Nyb2xsZXJTY3JvbGxiYXJUaHVtYigKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLAot
ICAgICAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZSwKLSAgICAgICAgV2ViS2l0OjpX
ZWJUaGVtZUVuZ2luZTo6U2l6ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiwKLSAg
ICAgICAgY29uc3QgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U2Nyb2xsYmFySW5mbyYpOwotfTsK
LQotI2VuZGlmIC8vIFdlYlRoZW1lRW5naW5lRFJUTWFjX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUTWFjLm1tIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk2NmRiYWNhODEyNjdjNjMyNmFjMTkxOTRhNjQ5MzNkOWQyMWRh
YmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVGhlbWVFbmdpbmVEUlRNYWMubW0KKysrIC9kZXYv
bnVsbApAQCAtMSwxOTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJXZWJUaGVtZUVuZ2luZURSVE1hYy5oIgot
Ci0jaW5jbHVkZSA8cHVibGljL1dlYkNhbnZhcy5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0
Lmg+Ci0jaW5jbHVkZSAic2tpYS9leHQvc2tpYV91dGlsc19tYWMuaCIKLSNpbXBvcnQgPEFwcEtp
dC9OU0FmZmluZVRyYW5zZm9ybS5oPgotI2ltcG9ydCA8QXBwS2l0L05TR3JhcGhpY3NDb250ZXh0
Lmg+Ci0jaW1wb3J0IDxBcHBLaXQvTlNTY3JvbGxlci5oPgotI2ltcG9ydCA8QXBwS2l0L05TV2lu
ZG93Lmg+Ci0jaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotCi11c2luZyBXZWJLaXQ6OldlYkNh
bnZhczsKLXVzaW5nIFdlYktpdDo6V2ViUmVjdDsKLXVzaW5nIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU7Ci0KLS8vIFdlIGNhbid0IGRpcmVjdGx5IHRlbGwgdGhlIE5TU2Nyb2xsZXIgdG8gZHJhdyBp
dHNlbGYgYXMgYWN0aXZlIG9yIGluYWN0aXZlLAotLy8gaW5zdGVhZCB3ZSBoYXZlIHRvIG1ha2Ug
aXQgYSBjaGlsZCBvZiBhbiAoaW4pYWN0aXZlIHdpbmRvdy4gVGhpcyBjbGFzcyBsZXRzCi0vLyB1
cyBmYWtlIHRoYXQgcGFyZW50IHdpbmRvdy4KLUBpbnRlcmZhY2UgRmFrZUFjdGl2ZVdpbmRvdyA6
IE5TV2luZG93IHsKLUBwcml2YXRlCi0gICAgQk9PTCBoYXNBY3RpdmVDb250cm9sczsKLX0KLSsg
KE5TV2luZG93KilhbHdheXNBY3RpdmVXaW5kb3c7Ci0rIChOU1dpbmRvdyopYWx3YXlzSW5hY3Rp
dmVXaW5kb3c7Ci0tIChpZClpbml0V2l0aEFjdGl2ZUNvbnRyb2xzOihCT09MKV9oYXNBY3RpdmVD
b250cm9sczsKLS0gKEJPT0wpX2hhc0FjdGl2ZUNvbnRyb2xzOwotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gRmFrZUFjdGl2ZVdpbmRvdwotCi1zdGF0aWMgTlNXaW5kb3cqIGFsd2F5c0FjdGl2ZVdp
bmRvdyA9IG5pbDsKLXN0YXRpYyBOU1dpbmRvdyogYWx3YXlzSW5hY3RpdmVXaW5kb3cgPSBuaWw7
Ci0KLSsgKE5TV2luZG93KilhbHdheXNBY3RpdmVXaW5kb3cKLXsKLSAgICBpZiAoYWx3YXlzQWN0
aXZlV2luZG93ID09IG5pbCkKLSAgICAgICAgYWx3YXlzQWN0aXZlV2luZG93ID0gW1tzZWxmIGFs
bG9jXSBpbml0V2l0aEFjdGl2ZUNvbnRyb2xzOllFU107Ci0gICAgcmV0dXJuIGFsd2F5c0FjdGl2
ZVdpbmRvdzsKLX0KLQotKyAoTlNXaW5kb3cqKWFsd2F5c0luYWN0aXZlV2luZG93Ci17Ci0gICAg
aWYgKGFsd2F5c0luYWN0aXZlV2luZG93ID09IG5pbCkKLSAgICAgICAgYWx3YXlzSW5hY3RpdmVX
aW5kb3cgPSBbW3NlbGYgYWxsb2NdIGluaXRXaXRoQWN0aXZlQ29udHJvbHM6Tk9dOwotICAgIHJl
dHVybiBhbHdheXNJbmFjdGl2ZVdpbmRvdzsKLX0KLQotLSAoaWQpaW5pdFdpdGhBY3RpdmVDb250
cm9sczooQk9PTClfaGFzQWN0aXZlQ29udHJvbHMKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwotICAgIGhhc0FjdGl2ZUNvbnRyb2xzID0gX2hhc0FjdGl2ZUNvbnRyb2xzOwotICAgIHJldHVy
biBzZWxmOwotfQotCi0tIChCT09MKV9oYXNBY3RpdmVDb250cm9scwotewotICAgIHJldHVybiBo
YXNBY3RpdmVDb250cm9sczsKLX0KLQotQGVuZAotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUTWFj
OjpwYWludFNjcm9sbGJhclRodW1iKAotICAgIFdlYkNhbnZhcyogY2FudmFzLAotICAgIFdlYlRo
ZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSwKLSAgICBXZWJUaGVtZUVuZ2luZTo6U2l6ZSBzaXplLAot
ICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCi0gICAgY29uc3QgV2ViVGhlbWVFbmdpbmU6OlNjcm9s
bGJhckluZm8mIHNjcm9sbGJhckluZm8pCi17Ci0gICAgLy8gVG8gbWF0Y2ggdGhlIE1hYyBwb3J0
LCB3ZSBzdGlsbCB1c2UgSElUaGVtZSBmb3IgaW5uZXIgc2Nyb2xsYmFycy4KLSAgICBpZiAoc2Ny
b2xsYmFySW5mby5wYXJlbnQgPT0gV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhclBhcmVudFJlbmRl
ckxheWVyKQotICAgICAgICBwYWludEhJVGhlbWVTY3JvbGxiYXJUaHVtYihjYW52YXMsIHN0YXRl
LCBzaXplLCByZWN0LCBzY3JvbGxiYXJJbmZvKTsKLSAgICBlbHNlCi0gICAgICAgIHBhaW50TlNT
Y3JvbGxlclNjcm9sbGJhclRodW1iKGNhbnZhcywgc3RhdGUsIHNpemUsIHJlY3QsIHNjcm9sbGJh
ckluZm8pOwotfQotCi1zdGF0aWMgVGhlbWVUcmFja0VuYWJsZVN0YXRlIHN0YXRlVG9ISUVuYWJs
ZVN0YXRlKFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSkKLXsKLSAgICBzd2l0Y2ggKHN0YXRl
KSB7Ci0gICAgY2FzZSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDoKLSAgICAgICAgcmV0
dXJuIGtUaGVtZVRyYWNrRGlzYWJsZWQ7Ci0gICAgY2FzZSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVJ
bmFjdGl2ZToKLSAgICAgICAgcmV0dXJuIGtUaGVtZVRyYWNrSW5hY3RpdmU7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIGtUaGVtZVRyYWNrQWN0aXZlOwotICAgIH0KLX0KLQotLy8gRHVw
bGljYXRlZCBmcm9tIHdlYmtpdC9nbHVlL3dlYnRoZW1lZW5naW5lX2ltcGxfbWFjLmNjIGluIHRo
ZSBkb3duc3RyZWFtCi0vLyBDaHJvbWl1bSBXZWJUaGVtZUVuZ2luZSBpbXBsZW1lbnRhdGlvbi4K
LXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRNYWM6OnBhaW50SElUaGVtZVNjcm9sbGJhclRodW1iKAot
ICAgIFdlYkNhbnZhcyogY2FudmFzLAotICAgIFdlYlRoZW1lRW5naW5lOjpTdGF0ZSBzdGF0ZSwK
LSAgICBXZWJUaGVtZUVuZ2luZTo6U2l6ZSBzaXplLAotICAgIGNvbnN0IFdlYlJlY3QmIHJlY3Qs
Ci0gICAgY29uc3QgV2ViVGhlbWVFbmdpbmU6OlNjcm9sbGJhckluZm8mIHNjcm9sbGJhckluZm8p
Ci17Ci0gICAgSElUaGVtZVRyYWNrRHJhd0luZm8gdHJhY2tJbmZvOwotICAgIHRyYWNrSW5mby52
ZXJzaW9uID0gMDsKLSAgICB0cmFja0luZm8ua2luZCA9IHNpemUgPT0gV2ViVGhlbWVFbmdpbmU6
OlNpemVSZWd1bGFyID8ga1RoZW1lTWVkaXVtU2Nyb2xsQmFyIDoga1RoZW1lU21hbGxTY3JvbGxC
YXI7Ci0gICAgdHJhY2tJbmZvLmJvdW5kcyA9IENHUmVjdE1ha2UocmVjdC54LCByZWN0LnksIHJl
Y3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTsKLSAgICB0cmFja0luZm8ubWluID0gMDsKLSAgICB0cmFj
a0luZm8ubWF4ID0gc2Nyb2xsYmFySW5mby5tYXhWYWx1ZTsKLSAgICB0cmFja0luZm8udmFsdWUg
PSBzY3JvbGxiYXJJbmZvLmN1cnJlbnRWYWx1ZTsKLSAgICB0cmFja0luZm8udHJhY2tJbmZvLnNj
cm9sbGJhci52aWV3c2l6ZSA9IHNjcm9sbGJhckluZm8udmlzaWJsZVNpemU7Ci0gICAgdHJhY2tJ
bmZvLmF0dHJpYnV0ZXMgPSAwOwotICAgIGlmIChzY3JvbGxiYXJJbmZvLm9yaWVudGF0aW9uID09
IFdlYlRoZW1lRW5naW5lOjpTY3JvbGxiYXJPcmllbnRhdGlvbkhvcml6b250YWwpCi0gICAgICAg
IHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IGtUaGVtZVRyYWNrSG9yaXpvbnRhbDsKLQotICAgIHRy
YWNrSW5mby5lbmFibGVTdGF0ZSA9IHN0YXRlVG9ISUVuYWJsZVN0YXRlKHN0YXRlKTsKLQotICAg
IHRyYWNrSW5mby50cmFja0luZm8uc2Nyb2xsYmFyLnByZXNzU3RhdGUgPQotICAgICAgICBzdGF0
ZSA9PSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVQcmVzc2VkID8ga1RoZW1lVGh1bWJQcmVzc2VkIDog
MDsKLSAgICB0cmFja0luZm8uYXR0cmlidXRlcyB8PSAoa1RoZW1lVHJhY2tTaG93VGh1bWIgfCBr
VGhlbWVUcmFja0hpZGVUcmFjayk7Ci0gICAgZ2Z4OjpTa2lhQml0TG9ja2VyIGJpdExvY2tlcihj
YW52YXMpOwotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBiaXRMb2NrZXIuY2dDb250ZXh0
KCk7Ci0gICAgSElUaGVtZURyYXdUcmFjaygmdHJhY2tJbmZvLCAwLCBjZ0NvbnRleHQsIGtISVRo
ZW1lT3JpZW50YXRpb25Ob3JtYWwpOwotfQotCi12b2lkIFdlYlRoZW1lRW5naW5lRFJUTWFjOjpw
YWludE5TU2Nyb2xsZXJTY3JvbGxiYXJUaHVtYigKLSAgICBXZWJDYW52YXMqIGNhbnZhcywKLSAg
ICBXZWJUaGVtZUVuZ2luZTo6U3RhdGUgc3RhdGUsCi0gICAgV2ViVGhlbWVFbmdpbmU6OlNpemUg
c2l6ZSwKLSAgICBjb25zdCBXZWJSZWN0JiByZWN0LAotICAgIGNvbnN0IFdlYlRoZW1lRW5naW5l
OjpTY3JvbGxiYXJJbmZvJiBzY3JvbGxiYXJJbmZvKQotewotICAgIFtOU0dyYXBoaWNzQ29udGV4
dCBzYXZlR3JhcGhpY3NTdGF0ZV07Ci0gICAgTlNTY3JvbGxlciogc2Nyb2xsZXIgPSBbW05TU2Ny
b2xsZXIgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdChyZWN0LngsIHJlY3QueSwgcmVj
dC53aWR0aCwgcmVjdC5oZWlnaHQpXTsKLSAgICBbc2Nyb2xsZXIgc2V0RW5hYmxlZDpzdGF0ZSAh
PSBXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZF07Ci0gICAgaWYgKHN0YXRlID09IFdlYlRo
ZW1lRW5naW5lOjpTdGF0ZUluYWN0aXZlKQotICAgICAgICBbW1tGYWtlQWN0aXZlV2luZG93IGFs
d2F5c0luYWN0aXZlV2luZG93XSBjb250ZW50Vmlld10gYWRkU3VidmlldzpzY3JvbGxlcl07Ci0g
ICAgZWxzZQotICAgICAgICBbW1tGYWtlQWN0aXZlV2luZG93IGFsd2F5c0FjdGl2ZVdpbmRvd10g
Y29udGVudFZpZXddIGFkZFN1YnZpZXc6c2Nyb2xsZXJdOwotCi0gICAgW3Njcm9sbGVyIHNldENv
bnRyb2xTaXplOnNpemUgPT0gV2ViVGhlbWVFbmdpbmU6OlNpemVSZWd1bGFyID8gTlNSZWd1bGFy
Q29udHJvbFNpemUgOiBOU1NtYWxsQ29udHJvbFNpemVdOwotCi0gICAgZG91YmxlIHZhbHVlID0g
ZG91YmxlKHNjcm9sbGJhckluZm8uY3VycmVudFZhbHVlKSAvIGRvdWJsZShzY3JvbGxiYXJJbmZv
Lm1heFZhbHVlKTsKLSAgICBbc2Nyb2xsZXIgc2V0RG91YmxlVmFsdWU6IHZhbHVlXTsKLQotICAg
IGZsb2F0IGtub2JQcm9wb3J0aW9uID0gZmxvYXQoc2Nyb2xsYmFySW5mby52aXNpYmxlU2l6ZSkg
LyBmbG9hdChzY3JvbGxiYXJJbmZvLnRvdGFsU2l6ZSk7Ci0gICAgW3Njcm9sbGVyIHNldEtub2JQ
cm9wb3J0aW9uOiBrbm9iUHJvcG9ydGlvbl07Ci0KLSAgICBnZng6OlNraWFCaXRMb2NrZXIgYml0
TG9ja2VyKGNhbnZhcyk7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGJpdExvY2tlci5j
Z0NvbnRleHQoKTsKLSAgICBOU0dyYXBoaWNzQ29udGV4dCogbnNHcmFwaGljc0NvbnRleHQgPSBb
TlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9ydDpjZ0NvbnRl
eHQgZmxpcHBlZDpZRVNdOwotICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4
dDpuc0dyYXBoaWNzQ29udGV4dF07Ci0KLSAgICAvLyBEZXNwaXRlIHBhc3NpbmcgaW4gZnJhbWVS
ZWN0KCkgdG8gdGhlIHNjcm9sbGVyLCBpdCBhbHdheXMgZHJhd3MgYXQgKDAsIDApLgotICAgIC8v
IEZvcmNlIGl0IHRvIGRyYXcgaW4gdGhlIHJpZ2h0IGxvY2F0aW9uIGJ5IHRyYW5zbGF0aW5nIHRo
ZSB3aG9sZSBncmFwaGljcwotICAgIC8vIGNvbnRleHQuCi0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0
ZShjZ0NvbnRleHQpOwotICAgIE5TQWZmaW5lVHJhbnNmb3JtICp0cmFuc2Zvcm0gPSBbTlNBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtXTsKLSAgICBbdHJhbnNmb3JtIHRyYW5zbGF0ZVhCeTpyZWN0
LnggeUJ5OnJlY3QueV07Ci0gICAgW3RyYW5zZm9ybSBjb25jYXRdOwotCi0gICAgW3Njcm9sbGVy
IGRyYXdLbm9iXTsKLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNnQ29udGV4dCk7Ci0KLSAg
ICBbc2Nyb2xsZXIgcmVsZWFzZV07Ci0KLSAgICBbTlNHcmFwaGljc0NvbnRleHQgcmVzdG9yZUdy
YXBoaWNzU3RhdGVdOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVGhlbWVFbmdpbmVEUlRXaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAxNTBjNDkwMjUxYzIzNGNiZjExYzM2ZmJjZmY2NDkzOWRhODBiMDQ0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc5MyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlRoZW1lRW5naW5lRFJUV2lu
LmgiCi0KLSNpbmNsdWRlICJXZWJUaGVtZUNvbnRyb2xEUlRXaW4uaCIKLSNpbmNsdWRlICJ0aGly
ZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
UmVjdC5oPgotCi0vLyBBbHRob3VnaCBhbGwgdGhpcyBjb2RlIGlzIGdlbmVyaWMsIHdlIGluY2x1
ZGUgdGhlc2UgaGVhZGVycwotLy8gdG8gcHVsbCBpbiB0aGUgV2luZG93cyAjZGVmaW5lcyBmb3Ig
dGhlIHBhcnRzIGFuZCBzdGF0ZXMgb2YKLS8vIHRoZSBjb250cm9scy4KLSNpbmNsdWRlIDx2c3N0
eWxlLmg+Ci0jaW5jbHVkZSA8d2luZG93cy5oPgotCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotLy8gV2UgZGVmaW5lIHRoaXMgZm9yIGNs
YXJpdHksIGFsdGhvdWdoIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgYSBERkNTX05PUk1BTCBpbiB3
aW51c2VyLmguCi1zdGF0aWMgY29uc3QgaW50IGRmY3NOb3JtYWwgPSAweDAwMDA7Ci0KLXN0YXRp
YyBTa0lSZWN0IHdlYlJlY3RUb1NrSVJlY3QoY29uc3QgV2ViUmVjdCYgd2ViUmVjdCkKLXsKLSAg
ICBTa0lSZWN0IGlyZWN0OwotICAgIGlyZWN0LnNldCh3ZWJSZWN0LngsIHdlYlJlY3QueSwgd2Vi
UmVjdC54ICsgd2ViUmVjdC53aWR0aCAtIDEsIHdlYlJlY3QueSArIHdlYlJlY3QuaGVpZ2h0IC0g
MSk7Ci0gICAgcmV0dXJuIGlyZWN0OwotfQotCi1zdGF0aWMgdm9pZCBkcmF3Q29udHJvbChXZWJD
YW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJl
Y3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUg
Y3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0
YXRlIGNzdGF0ZSkKLXsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW4gY29udHJvbChjYW52YXMs
IHdlYlJlY3RUb1NrSVJlY3QocmVjdCksIGN0eXBlLCBjc3RhdGUpOwotICAgIGNvbnRyb2wuZHJh
dygpOwotfQotCi1zdGF0aWMgdm9pZCBkcmF3VGV4dEZpZWxkKFdlYkNhbnZhcyogY2FudmFzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRyYXdFZGdlcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBmaWxsQ29udGVudEFyZWEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYkNvbG9yIGNvbG9yKQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbiBjb250
cm9sKGNhbnZhcywgd2ViUmVjdFRvU2tJUmVjdChyZWN0KSwgY3R5cGUsIGNzdGF0ZSk7Ci0gICAg
Y29udHJvbC5kcmF3VGV4dEZpZWxkKGRyYXdFZGdlcywgZmlsbENvbnRlbnRBcmVhLCBjb2xvcik7
Ci19Ci0KLXN0YXRpYyB2b2lkIGRyYXdQcm9ncmVzc0JhcihXZWJDYW52YXMqIGNhbnZhcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpT
dGF0ZSBjc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYg
YmFyUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiBmaWxs
UmVjdCkKLXsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW4gY29udHJvbChjYW52YXMsIHdlYlJl
Y3RUb1NrSVJlY3QoYmFyUmVjdCksIGN0eXBlLCBjc3RhdGUpOwotICAgIGNvbnRyb2wuZHJhd1By
b2dyZXNzQmFyKHdlYlJlY3RUb1NrSVJlY3QoZmlsbFJlY3QpKTsKLX0KLQotLy8gV2ViVGhlbWVF
bmdpbmVEUlRXaW4KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRCdXR0b24oV2Vi
Q2FudmFzKiBjYW52YXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgcGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0
JiByZWN0KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQot
ICAgIGlmIChwYXJ0ID09IEJQX0NIRUNLQk9YKSB7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsK
LSAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VETk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpVbmNoZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tFREhPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2lj
U3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3R5
cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJveFR5cGU7Ci0gICAgICAgICAg
ICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfVU5DSEVDS0VEUFJFU1NFRDoKLSAgICAgICAgICAg
IEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX1BVU0hFRCkp
OwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVuY2hlY2tlZEJv
eFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNz
ZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JTX1VOQ0hFQ0tF
RERJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRU
T05DSEVDSyB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpVbmNoZWNrZWRCb3hUeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRE5PUk1BTDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0NIRUNLRUQpKTsKLSAgICAgICAg
ICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsKLSAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19DSEVDS0VESE9UOgotICAgICAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hFQ0tF
RCB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdp
bjo6Q2hlY2tlZEJveFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OkhvdFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNf
Q0hFQ0tFRFBSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X0JVVFRPTkNIRUNLIHwgREZDU19DSEVDS0VEIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAg
IGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsKLSAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfQ0hFQ0tFRERJU0FCTEVEOgotICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVDSyB8IERGQ1NfQ0hF
Q0tFRCB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpDaGVja2VkQm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1l
Q29udHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgQ0JTX01JWEVETk9STUFMOgotICAgICAgICAgICAgLy8gQ2xhc3NpYyB0aGVtZSBj
YW4ndCByZXByZXNlbnQgbWl4ZWQgc3RhdGUgY2hlY2tib3guIFdlIGFzc3VtZQotICAgICAgICAg
ICAgLy8gaXQncyBlcXVpdmFsZW50IHRvIHVuY2hlY2tlZC4KLSAgICAgICAgICAgIEFTU0VSVChj
bGFzc2ljU3RhdGUgPT0gREZDU19CVVRUT05DSEVDSyk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKLSAgICAgICAg
ICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCU19NSVhFREhPVDoKLSAgICAgICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0hPVCkpOwotICAg
ICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkluZGV0ZXJtaW5hdGVDaGVj
a2JveFR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhv
dFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlNfTUlYRURQUkVT
U0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05DSEVD
SyB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBDQlNfTUlYRURESVNBQkxFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfQlVUVE9OQ0hFQ0sgfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAg
ICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SW5kZXRlcm1pbmF0ZUNoZWNrYm94
VHlwZTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RGlzYWJs
ZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmIChCUF9SQURJT0JVVFRPTiA9PSBwYXJ0KSB7Ci0gICAgICAgIHN3aXRj
aCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VETk9STUFMOgotICAgICAgICAg
ICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlJBRElPKTsKLSAgICAgICAgICAg
IGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7Ci0gICAg
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBSQlNfVU5DSEVDS0VESE9UOgotICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfSE9U
KSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5jaGVja2Vk
UmFkaW9UeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpI
b3RTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tF
RFBSRVNTRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRP
TlJBRElPIHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgUkJTX1VOQ0hFQ0tFRERJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAg
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVbmNoZWNrZWRSYWRpb1R5cGU7
Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3Rh
dGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFJCU19DSEVDS0VETk9STUFM
OgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05SQURJTyB8
IERGQ1NfQ0hFQ0tFRCkpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OkNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2Fz
ZSBSQlNfQ0hFQ0tFREhPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERG
Q1NfQlVUVE9OUkFESU8gfCBERkNTX0NIRUNLRUQgfCBERkNTX0hPVCkpOwotICAgICAgICAgICAg
Y3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5cGU7Ci0gICAgICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBSQlNfQ0hFQ0tFRFBSRVNTRUQ6Ci0gICAgICAgICAg
ICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VE
IHwgREZDU19QVVNIRUQpKTsKLSAgICAgICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpDaGVja2VkUmFkaW9UeXBlOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFJCU19DSEVDS0VERElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRl
ID09IChERkNTX0JVVFRPTlJBRElPIHwgREZDU19DSEVDS0VEIHwgREZDU19JTkFDVElWRSkpOwot
ICAgICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkNoZWNrZWRSYWRpb1R5
cGU7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVk
U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0gZWxzZSBpZiAoQlBfUFVTSEJVVFRPTiA9PSBwYXJ0KSB7Ci0gICAgICAgIHN3aXRjaCAo
c3RhdGUpIHsKLSAgICAgICAgY2FzZSBQQlNfTk9STUFMOgotICAgICAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlBVU0gpOwotICAgICAgICAgICAgY3R5cGUgPSBXZWJU
aGVtZUNvbnRyb2xEUlRXaW46OlB1c2hCdXR0b25UeXBlOwotICAgICAgICAgICAgY3N0YXRlID0g
V2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgUEJTX0hPVDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gKERGQ1NfQlVUVE9OUFVTSCB8IERGQ1NfSE9UKSk7Ci0gICAgICAgICAgICBjdHlwZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBjc3RhdGUg
PSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBQQlNfUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gKERGQ1NfQlVUVE9OUFVTSCB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjdHlw
ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHVzaEJ1dHRvblR5cGU7Ci0gICAgICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgIGNhc2UgUEJTX0RJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19CVVRUT05QVVNIIHwgREZDU19JTkFDVElWRSkpOwotICAg
ICAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlB1c2hCdXR0b25UeXBlOwot
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRl
OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBQQlNfREVGQVVMVEVEOgotICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0JVVFRPTlBVU0gpOwotICAgICAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlB1c2hCdXR0b25UeXBlOwotICAg
ICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpGb2N1c2VkU3RhdGU7Ci0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxz
ZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLQotICAgIGRyYXdDb250cm9sKGNhbnZh
cywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Ci19Ci0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdp
bjo6cGFpbnRNZW51TGlzdChXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAgICBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBl
OwotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250
cm9sRFJUV2luOjpVbmtub3duU3RhdGU7Ci0KLSAgICBpZiAoQ1BfRFJPUERPV05CVVRUT04gPT0g
cGFydCkgewotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RHJvcERvd25C
dXR0b25UeXBlOwotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgQ0JYU19O
T1JNQUw6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfTUVOVUFSUk9X
KTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3Rh
dGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIENCWFNfSE9UOgotICAgICAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19NRU5VQVJST1cgfCBERkNTX0hPVCkp
OwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRl
OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBDQlhTX1BSRVNTRUQ6Ci0gICAg
ICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX01FTlVBUlJPVyB8IERGQ1NfUFVT
SEVEKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNz
ZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgQ0JYU19ESVNBQkxF
RDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfTUVOVUFSUk9XIHwg
REZDU19JTkFDVElWRSkpOwotICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0gZWxzZQotICAgICAgICBDUkFTSCgpOwotCi0gICAgZHJhd0NvbnRyb2woY2FudmFzLCBy
ZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFp
bnRTY3JvbGxiYXJBcnJvdyhXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJSZWN0JiByZWN0
KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpTdGF0
ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0ZTsKLQotICAgIHN3
aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIEFCU19VUE5PUk1BTDoKLSAgICAgICAgQVNTRVJUKGNs
YXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTFVQKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRy
b2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0RP
V05OT1JNQUw6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExET1dO
KTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRvd25BcnJvd1R5cGU7
Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfTEVGVE5PUk1BTDoKLSAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTExFRlQpOwotICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6TGVmdEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IEFCU19SSUdIVE5PUk1BTDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1ND
Uk9MTFJJR0hUKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0
QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1h
bFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX1VQSE9UOgotICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFVQIHwgREZDU19IT1QpKTsKLSAgICAg
ICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgQUJTX0RPV05IT1Q6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
KERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfSE9UKSk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0xF
RlRIT1Q6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMTEVGVCB8
IERGQ1NfSE9UKSk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpMZWZ0
QXJyb3dUeXBlOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0
YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX1JJR0hUSE9UOgotICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTFJJR0hUIHwgREZDU19IT1QpKTsKLSAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkhvdFN0YXRlOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgQUJTX1VQSE9WRVI6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gREZDU19TQ1JPTExVUCk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpVcEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpIb3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX0RPV05IT1ZFUjoK
LSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1NDUk9MTERPV04pOwotICAgICAg
ICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6RG93bkFycm93VHlwZTsKLSAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgQUJTX0xFRlRIT1ZFUjoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSBERkNTX1NDUk9MTExFRlQpOwotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERS
VFdpbjo6TGVmdEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJU
V2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX1JJR0hUSE9W
RVI6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19TQ1JPTExSSUdIVCk7Ci0g
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpSaWdodEFycm93VHlwZTsKLSAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAg
ICBicmVhazsKLQotICAgIGNhc2UgQUJTX1VQUFJFU1NFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNz
aWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7Ci0g
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpVcEFycm93VHlwZTsKLSAgICAg
ICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgY2FzZSBBQlNfRE9XTlBSRVNTRUQ6Ci0gICAgICAgIEFTU0VSVChjbGFz
c2ljU3RhdGUgPT0gKERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSk7
Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOwot
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEFCU19MRUZUUFJFU1NFRDoKLSAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExMRUZUIHwgREZDU19QVVNIRUQgfCBERkNTX0ZM
QVQpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkxlZnRBcnJvd1R5
cGU7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6UHJlc3NlZFN0YXRl
OwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUJTX1JJR0hUUFJFU1NFRDoKLSAgICAgICAg
QVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfUFVTSEVEIHwg
REZDU19GTEFUKSk7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpSaWdo
dEFycm93VHlwZTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVz
c2VkU3RhdGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfVVBESVNBQkxFRDoKLSAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExVUCB8IERGQ1NfSU5BQ1RJ
VkUpKTsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBl
OwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfRE9XTkRJU0FCTEVEOgotICAgICAgICBB
U1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTERPV04gfCBERkNTX0lOQUNUSVZFKSk7
Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOwot
ICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfTEVGVERJU0FCTEVEOgotICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IChERkNTX1NDUk9MTExFRlQgfCBERkNTX0lOQUNUSVZFKSk7Ci0g
ICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpMZWZ0QXJyb3dUeXBlOwotICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQlNfUklHSFRESVNBQkxFRDoKLSAgICAgICAgQVNTRVJU
KGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JPTExSSUdIVCB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlJpZ2h0QXJyb3dUeXBlOwotICAg
ICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAg
ICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwg
Y3R5cGUsIGNzdGF0ZSk7Ci19Ci0KLXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50U2Ny
b2xsYmFyVGh1bWIoV2ViQ2FudmFzKiBjYW52YXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QpCi17
Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUV2luOjpVbmtub3duVHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRlIGNz
dGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAgc3dpdGNo
IChwYXJ0KSB7Ci0gICAgY2FzZSBTQlBfVEhVTUJCVE5IT1JaOgotICAgICAgICBjdHlwZSA9IFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRhbFNjcm9sbFRodW1iVHlwZTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBjYXNlIFNCUF9USFVNQkJUTlZFUlQ6Ci0gICAgICAgIGN0eXBlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpWZXJ0aWNhbFNjcm9sbFRodW1iVHlwZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIFNCUF9HUklQUEVSSE9SWjoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxTY3JvbGxHcmlwVHlwZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIFNCUF9HUklQUEVSVkVSVDoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNv
bnRyb2xEUlRXaW46OlZlcnRpY2FsU2Nyb2xsR3JpcFR5cGU7Ci0gICAgICAgIGJyZWFrOwotCi0g
ICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFNDUkJTX05PUk1BTDoK
LSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIFNDUkJTX0hPVDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBE
RkNTX0hPVCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG90U3Rh
dGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19IT1ZFUjoKLSAgICAgICAgQVNT
RVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhl
bWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
U0NSQlNfUFJFU1NFRDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFs
KTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7
Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBwcmFjdGlj
ZS4KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZHJhd0NvbnRyb2woY2FudmFz
LCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6
cGFpbnRTY3JvbGxiYXJUcmFjayhXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViUmVjdCYg
cmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgV2ViUmVjdCYgYWxpZ25SZWN0KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlw
ZSBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhl
bWVDb250cm9sRFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVu
a25vd25TdGF0ZTsKLQotICAgIHN3aXRjaCAocGFydCkgewotICAgIGNhc2UgU0JQX1VQUEVSVFJB
Q0tIT1JaOgotICAgICAgICBjdHlwZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG9yaXpvbnRh
bFNjcm9sbFRyYWNrQmFja1R5cGU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQlBfTE9X
RVJUUkFDS0hPUlo6Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpIb3Jp
em9udGFsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNl
IFNCUF9VUFBFUlRSQUNLVkVSVDoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlZlcnRpY2FsU2Nyb2xsVHJhY2tCYWNrVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBj
YXNlIFNCUF9MT1dFUlRSQUNLVkVSVDoKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OlZlcnRpY2FsU2Nyb2xsVHJhY2tGb3J3YXJkVHlwZTsKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgU0NSQlNfTk9STUFM
OgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICBicmVh
azsKLQotICAgIGNhc2UgU0NSQlNfSE9UOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
Ly8gVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuIGluIHByYWN0aWNlLgotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgU0NSQlNfSE9WRVI6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
ZGZjc05vcm1hbCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6SG92
ZXJTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNDUkJTX1BSRVNTRUQ6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4g
cHJhY3RpY2UuCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTQ1JCU19ESVNBQkxFRDoKLSAg
ICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX0lOQUNUSVZFKTsKLSAgICAgICAgY3N0
YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRlOwotICAgICAgICBicmVh
azsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIENSQVNIKCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIGRyYXdDb250cm9sKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSk7Ci19Ci0K
LXZvaWQgV2ViVGhlbWVFbmdpbmVEUlRXaW46OnBhaW50U3BpbkJ1dHRvbihXZWJDYW52YXMqIGNh
bnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFy
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNT
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBX
ZWJSZWN0JiByZWN0KQotewotICAgIFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VHlwZSBjdHlwZSA9
IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blR5cGU7Ci0gICAgV2ViVGhlbWVDb250cm9s
RFJUV2luOjpTdGF0ZSBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25TdGF0
ZTsKLQotICAgIGlmIChwYXJ0ID09IFNQTlBfVVApIHsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OlVwQXJyb3dUeXBlOwotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0g
ICAgICAgIGNhc2UgVVBTX05PUk1BTDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gREZDU19TQ1JPTExVUCk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVVBT
X0RJU0FCTEVEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZDU19TQ1JP
TExVUCB8IERGQ1NfSU5BQ1RJVkUpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6RGlzYWJsZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFVQU19QUkVTU0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSAoREZD
U19TQ1JPTExVUCB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFVQU19IT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNT
X1NDUk9MTFVQIHwgREZDU19IT1QpKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29u
dHJvbERSVFdpbjo6SG92ZXJTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgaWYgKHBhcnQgPT0gU1BOUF9ET1dOKSB7Ci0gICAgICAgIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpEb3duQXJyb3dUeXBlOwotICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7Ci0g
ICAgICAgIGNhc2UgRE5TX05PUk1BTDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUg
PT0gREZDU19TQ1JPTExET1dOKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJv
bERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBE
TlNfRElTQUJMRUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IChERkNTX1ND
Uk9MTERPV04gfCBERkNTX0lOQUNUSVZFKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVt
ZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBETlNfUFJFU1NFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
KERGQ1NfU0NST0xMRE9XTiB8IERGQ1NfUFVTSEVEKSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEROU19IT1Q6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09
IChERkNTX1NDUk9MTERPV04gfCBERkNTX0hPVCkpOwotICAgICAgICAgICAgY3N0YXRlID0gV2Vi
VGhlbWVDb250cm9sRFJUV2luOjpIb3ZlclN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
fQotICAgIH0gZWxzZQotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBkcmF3Q29u
dHJvbChjYW52YXMsIHJlY3QsIGN0eXBlLCBjc3RhdGUpOwotfQotCi12b2lkIFdlYlRoZW1lRW5n
aW5lRFJUV2luOjpwYWludFRleHRGaWVsZChXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJ0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlJlY3QmIHJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb2xvciBjb2xvciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmlsbENvbnRlbnRBcmVh
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkcmF3RWRn
ZXMpCi17Ci0gICAgV2ViVGhlbWVDb250cm9sRFJUV2luOjpUeXBlIGN0eXBlID0gV2ViVGhlbWVD
b250cm9sRFJUV2luOjpVbmtub3duVHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0
YXRlIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6VW5rbm93blN0YXRlOwotCi0gICAg
QVNTRVJUKEVQX0VESVRURVhUID09IHBhcnQpOwotICAgIGN0eXBlID0gV2ViVGhlbWVDb250cm9s
RFJUV2luOjpUZXh0RmllbGRUeXBlOwotCi0gICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2Ug
RVRTX05PUk1BTDoKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsK
LSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVUU19IT1Q6Ci0gICAgICAgIEFTU0VSVChjbGFzc2lj
U3RhdGUgPT0gREZDU19IT1QpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OkhvdFN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVRTX0RJU0FCTEVEOgot
ICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOwotICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBFVFNfU0VMRUNURUQ6Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3Rh
dGUgPT0gREZDU19QVVNIRUQpOwotICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OlByZXNzZWRTdGF0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVUU19GT0NVU0VE
OgotICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IGRmY3NOb3JtYWwpOwotICAgICAgICBj
c3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkZvY3VzZWRTdGF0ZTsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICBjYXNlIEVUU19SRUFET05MWToKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0
ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpSZWFkT25seVN0YXRlOwotICAgICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkcmF3
VGV4dEZpZWxkKGNhbnZhcywgcmVjdCwgY3R5cGUsIGNzdGF0ZSwgZHJhd0VkZ2VzLCBmaWxsQ29u
dGVudEFyZWEsIGNvbG9yKTsKLX0KLQotdm9pZCBXZWJUaGVtZUVuZ2luZURSVFdpbjo6cGFpbnRU
cmFja2JhcihXZWJDYW52YXMqIGNhbnZhcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHBhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViUmVjdCYgcmVjdCkKLXsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlVua25vd25UeXBlOwotICAgIFdl
YlRoZW1lQ29udHJvbERSVFdpbjo6U3RhdGUgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2lu
OjpVbmtub3duU3RhdGU7Ci0KLSAgICBpZiAoVEtQX1RIVU1CQk9UVE9NID09IHBhcnQpIHsKLSAg
ICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46Okhvcml6b250YWxTbGlkZXJUaHVt
YlR5cGU7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICAgICAgY2FzZSBUVVNfTk9STUFM
OgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAgICAg
ICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9ybWFsU3RhdGU7Ci0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFRVU19IT1Q6Ci0gICAgICAgICAgICBBU1NF
UlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSE9UKTsKLSAgICAgICAgICAgIGNzdGF0ZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6SG90U3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBjYXNlIFRVU19ESVNBQkxFRDoKLSAgICAgICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
REZDU19JTkFDVElWRSk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRX
aW46OkRpc2FibGVkU3RhdGU7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFRV
U19QUkVTU0VEOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBERkNTX1BVU0hF
RCk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlByZXNzZWRT
dGF0ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfSBlbHNlIGlmIChUS1BfVEhVTUJWRVJUID09IHBhcnQpIHsKLSAgICAgICAgY3R5cGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46OlZlcnRpY2FsU2xpZGVyVGh1bWJUeXBlOwotICAgICAgICBz
d2l0Y2ggKHN0YXRlKSB7Ci0gICAgICAgIGNhc2UgVFVTX05PUk1BTDoKLSAgICAgICAgICAgIEFT
U0VSVChjbGFzc2ljU3RhdGUgPT0gZGZjc05vcm1hbCk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBX
ZWJUaGVtZUNvbnRyb2xEUlRXaW46Ok5vcm1hbFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBUVVNfSE9UOgotICAgICAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9
PSBERkNTX0hPVCk7Ci0gICAgICAgICAgICBjc3RhdGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
OkhvdFN0YXRlOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBUVVNfRElTQUJM
RUQ6Ci0gICAgICAgICAgICBBU1NFUlQoY2xhc3NpY1N0YXRlID09IERGQ1NfSU5BQ1RJVkUpOwot
ICAgICAgICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpEaXNhYmxlZFN0YXRl
OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBUVVNfUFJFU1NFRDoKLSAgICAg
ICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0gREZDU19QVVNIRUQpOwotICAgICAgICAgICAg
Y3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpQcmVzc2VkU3RhdGU7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoVEtQ
X1RSQUNLID09IHBhcnQpIHsKLSAgICAgICAgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xEUlRXaW46
Okhvcml6b250YWxTbGlkZXJUcmFja1R5cGU7Ci0gICAgICAgIEFTU0VSVChzdGF0ZSA9PSBUUlNf
Tk9STUFMKTsKLSAgICAgICAgQVNTRVJUKGNsYXNzaWNTdGF0ZSA9PSBkZmNzTm9ybWFsKTsKLSAg
ICAgICAgY3N0YXRlID0gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0ZTsKLSAgICB9
IGVsc2UgaWYgKFRLUF9UUkFDS1ZFUlQgPT0gcGFydCkgewotICAgICAgICBjdHlwZSA9IFdlYlRo
ZW1lQ29udHJvbERSVFdpbjo6VmVydGljYWxTbGlkZXJUcmFja1R5cGU7Ci0gICAgICAgIEFTU0VS
VChzdGF0ZSA9PSBUUlZTX05PUk1BTCk7Ci0gICAgICAgIEFTU0VSVChjbGFzc2ljU3RhdGUgPT0g
ZGZjc05vcm1hbCk7Ci0gICAgICAgIGNzdGF0ZSA9IFdlYlRoZW1lQ29udHJvbERSVFdpbjo6Tm9y
bWFsU3RhdGU7Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0g
ICAgZHJhd0NvbnRyb2woY2FudmFzLCByZWN0LCBjdHlwZSwgY3N0YXRlKTsKLX0KLQotCi12b2lk
IFdlYlRoZW1lRW5naW5lRFJUV2luOjpwYWludFByb2dyZXNzQmFyKFdlYktpdDo6V2ViQ2FudmFz
KiBjYW52YXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYktpdDo6V2ViUmVjdCYgYmFyUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiB2YWx1ZVJlY3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGV0ZXJtaW5hdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSkKLXsK
LSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlR5cGUgY3R5cGUgPSBXZWJUaGVtZUNvbnRyb2xE
UlRXaW46OlByb2dyZXNzQmFyVHlwZTsKLSAgICBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OlN0YXRl
IGNzdGF0ZSA9IGRldGVybWluYXRlID8gV2ViVGhlbWVDb250cm9sRFJUV2luOjpOb3JtYWxTdGF0
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBXZWJUaGVtZUNvbnRyb2xEUlRXaW46OkluZGV0ZXJtaW5hdGVTdGF0ZTsKLSAgICBkcmF3UHJv
Z3Jlc3NCYXIoY2FudmFzLCBjdHlwZSwgY3N0YXRlLCBiYXJSZWN0LCB2YWx1ZVJlY3QpOwotfQot
Ci0KLVdlYktpdDo6V2ViU2l6ZSBXZWJUaGVtZUVuZ2luZURSVFdpbjo6Z2V0U2l6ZShpbnQgcGFy
dCkKLXsKLSAgICByZXR1cm4gV2ViS2l0OjpXZWJTaXplKCk7Ci19Ci0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmggYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJUaGVtZUVuZ2luZURSVFdpbi5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDQ1MTRiYjJhMDcwNmY2MmJhM2EyZjkyNGFlYWYzMGVh
ODE0MzdiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlRoZW1lRW5naW5lRFJUV2luLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIFRoaXMgaW1wbGVtZW50cyB0aGUgV2ViVGhlbWVF
bmdpbmUgQVBJIHVzZWQgYnkgdGhlIFdpbmRvd3MgdmVyc2lvbiBvZgotLy8gQ2hyb21pdW0gdG8g
cmVuZGVyIG5hdGl2ZSBmb3JtIGNvbnRyb2xzIGxpa2UgY2hlY2tib3hlcywgcmFkaW8gYnV0dG9u
cywKLS8vIGFuZCBzY3JvbGwgYmFycy4KLS8vIFRoZSBub3JtYWwgaW1wbGVtZW50YXRpb24gKG5h
dGl2ZV90aGVtZSkgcmVuZGVycyB0aGUgY29udHJvbHMgdXNpbmcgZWl0aGVyCi0vLyB0aGUgVVhU
aGVtZSB0aGVtaW5nIGVuZ2luZSBwcmVzZW50IGluIFhQLCBWaXN0YSwgYW5kIFdpbiA3LCBvciB0
aGUgImNsYXNzaWMiCi0vLyB0aGVtZSB1c2VkIGlmIHRoYXQgdGhlbWUgaXMgc2VsZWN0ZWQgaW4g
dGhlIERlc2t0b3Agc2V0dGluZ3MuCi0vLyBVbmZvcnR1bmF0ZWx5LCBib3RoIG9mIHRoZXNlIHRo
ZW1lcyByZW5kZXIgY29udHJvbHMgZGlmZmVyZW50bHkgb24gdGhlCi0vLyBkaWZmZXJlbnQgdmVy
c2lvbnMgb2YgV2luZG93cy4KLS8vCi0vLyBJbiBvcmRlciB0byBlbnN1cmUgbWF4aW11bSBjb25z
aXN0ZW5jeSBvZiBiYXNlbGluZXMgYWNyb3NzIHRoZSBkaWZmZXJlbnQKLS8vIFdpbmRvd3MgdmVy
c2lvbnMsIHdlIHByb3ZpZGUgYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gZm9yIERSVCBoZXJlCi0v
LyBpbnN0ZWFkLiBUaGVzZSBjb250cm9scyBhcmUgYWN0dWFsbHkgcGxhdGZvcm0taW5kZXBlbmRl
bnQgKHRoZXkncmUgcmVuZGVyZWQKLS8vIHVzaW5nIFNraWEpIGFuZCBjb3VsZCBiZSB1c2VkIG9u
IExpbnV4IGFuZCB0aGUgTWFjIGFzIHdlbGwsIHNob3VsZCB3ZQotLy8gY2hvb3NlIHRvIGRvIHNv
IGF0IHNvbWUgcG9pbnQuCi0vLwotCi0jaWZuZGVmIFdlYlRoZW1lRW5naW5lRFJUV2luX2gKLSNk
ZWZpbmUgV2ViVGhlbWVFbmdpbmVEUlRXaW5faAotCi0jaW5jbHVkZSA8cHVibGljL3dpbi9XZWJU
aGVtZUVuZ2luZS5oPgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotCi1jbGFzcyBXZWJU
aGVtZUVuZ2luZURSVFdpbiA6IHB1YmxpYyBXZWJLaXQ6OldlYlRoZW1lRW5naW5lIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShXZWJUaGVtZUVuZ2luZURSVFdpbik7Ci1wdWJsaWM6Ci0gICAg
V2ViVGhlbWVFbmdpbmVEUlRXaW4oKSB7IH0KLQotICAgIC8vIFdlYlRoZW1lRW5naW5lIG1ldGhv
ZHM6Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKAotICAgICAgICBXZWJLaXQ6OldlYkNh
bnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNv
bnN0IFdlYktpdDo6V2ViUmVjdCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50TWVudUxpc3Qo
Ci0gICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNs
YXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJBcnJvdygKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMq
LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6V2Vi
UmVjdCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIoCi0gICAgICAg
IFdlYktpdDo6V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0
ZSwKLSAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRTY3JvbGxiYXJUcmFjaygKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFy
dCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmLCBjb25zdCBXZWJLaXQ6OldlYlJlY3QmIGFsaWduUmVjdCk7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTcGluQnV0dG9uKAotICAgICAgICBXZWJLaXQ6OldlYkNhbnZhcyosIGludCBw
YXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYktpdDo6
V2ViUmVjdCYpOwotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VGV4dEZpZWxkKAotICAgICAgICBX
ZWJLaXQ6OldlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUs
Ci0gICAgICAgIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYsIFdlYktpdDo6V2ViQ29sb3IsIGJvb2wg
ZmlsbENvbnRlbnRBcmVhLAotICAgICAgICBib29sIGRyYXdFZGdlcyk7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja2JhcigKLSAgICAgICAgV2ViS2l0OjpXZWJDYW52YXMqLCBpbnQgcGFy
dCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJLaXQ6Oldl
YlJlY3QmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFByb2dyZXNzQmFyKAotICAgICAgICBX
ZWJLaXQ6OldlYkNhbnZhcyosIGNvbnN0IFdlYktpdDo6V2ViUmVjdCYgYmFyUmVjdCwKLSAgICAg
ICAgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiB2YWx1ZVJlY3QsCi0gICAgICAgIGJvb2wgZGV0ZXJt
aW5hdGUsIGRvdWJsZSB0aW1lKTsKLQotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTaXplIGdldFNp
emUoaW50IHBhcnQpOwotfTsKLQotI2VuZGlmIC8vIFdlYlRoZW1lRW5naW5lRFJUV2luX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>