<?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>203734</bug_id>
          
          <creation_ts>2019-11-01 06:17:40 -0700</creation_ts>
          <short_desc>Flaky API Test TestWebKitAPI.ServiceWorkers.ThrottleCrash</short_desc>
          <delta_ts>2019-11-14 18:57:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1586330</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-01 06:17:40 -0700</bug_when>
    <thetext>TestWebKitAPI.ServiceWorkers.ThrottleCrash seems flaky on iOS. In https://ews-build.webkit.org/#/builders/9/builds/11291, the test TimedOut in run-api-tests step. However, in the immediately next retry step (re-run-api-tests), it failed. Similar thing happened in https://ews-build.webkit.org/#/builders/9/builds/11264

Also, in following builds, the test was so flaky that EWS incorrectly blamed the patch being tested:
https://ews-build.webkit.org/#/builders/9/builds/11276
https://ews-build.webkit.org/#/builders/9/builds/11269</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586331</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-01 06:20:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/56814638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586339</commentid>
    <comment_count>2</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-01 06:51:42 -0700</bug_when>
    <thetext>Flaked again in https://ews-build.webkit.org/#/builders/9/builds/11296 and https://ews-build.webkit.org/#/builders/9/builds/11297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586402</commentid>
    <comment_count>3</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-01 09:35:50 -0700</bug_when>
    <thetext>Not convinced this one is flakey, I think someone introduced a regression to the test relatively recently: &lt;https://results.webkit.org/?suite=api-tests&amp;suite=api-tests&amp;test=TestWebKitAPI.EditorStateTests.TypingAttributesTextAlignmentStartEnd&amp;test=TestWebKitAPI.ServiceWorkers.ThrottleCrash&amp;before_id=251111&gt;

My bet is that this is the timeout on our Debug Mac queues. The only question I have left is if this regression is the same crash that we see on iOS, and was recently fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589830</commentid>
    <comment_count>4</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-13 06:17:50 -0800</bug_when>
    <thetext>It was added 6 months ago in https://trac.webkit.org/changeset/245327/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589831</commentid>
    <comment_count>5</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-13 06:21:44 -0800</bug_when>
    <thetext>It has been too flaky recently on EWS (on Mojave, but works fine on Catalina). Sometimes so flaky that EWS incorrectly blames the patch being tested for this test failure.

e.g.: 
https://ews-build.webkit.org/#/builders/9/builds/11910
https://ews-build.webkit.org/#/builders/9/builds/11900
https://ews-build.webkit.org/#/builders/9/builds/11865
https://ews-build.webkit.org/#/builders/9/builds/11825
https://ews-build.webkit.org/#/builders/9/builds/11821
https://ews-build.webkit.org/#/builders/9/builds/11814
https://ews-build.webkit.org/#/builders/9/builds/11813
https://ews-build.webkit.org/#/builders/9/builds/11808
https://ews-build.webkit.org/#/builders/9/builds/11807
https://ews-build.webkit.org/#/builders/9/builds/11805
https://ews-build.webkit.org/#/builders/9/builds/11798
https://ews-build.webkit.org/#/builders/9/builds/11789
https://ews-build.webkit.org/#/builders/9/builds/11768
https://ews-build.webkit.org/#/builders/9/builds/11761
https://ews-build.webkit.org/#/builders/9/builds/11760
https://ews-build.webkit.org/#/builders/9/builds/11757
https://ews-build.webkit.org/#/builders/9/builds/11755
https://ews-build.webkit.org/#/builders/9/builds/11745
https://ews-build.webkit.org/#/builders/9/builds/11734
https://ews-build.webkit.org/#/builders/9/builds/11731
https://ews-build.webkit.org/#/builders/9/builds/11726
https://ews-build.webkit.org/#/builders/9/builds/11725
https://ews-build.webkit.org/#/builders/9/builds/11711
https://ews-build.webkit.org/#/builders/9/builds/11710
https://ews-build.webkit.org/#/builders/9/builds/11704
https://ews-build.webkit.org/#/builders/9/builds/11702
https://ews-build.webkit.org/#/builders/9/builds/11700
https://ews-build.webkit.org/#/builders/9/builds/11699
https://ews-build.webkit.org/#/builders/9/builds/11698
https://ews-build.webkit.org/#/builders/9/builds/11682</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589835</commentid>
    <comment_count>6</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-13 06:28:32 -0800</bug_when>
    <thetext>Committed r252405: &lt;https://trac.webkit.org/changeset/252405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589837</commentid>
    <comment_count>7</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-13 06:28:59 -0800</bug_when>
    <thetext>Disabled the test for now to keep infrastructure happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589857</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-11-13 07:21:12 -0800</bug_when>
    <thetext>This test has flaked maybe once in post-commit testing https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.ServiceWorkers.ThrottleCrash.

This seems like something worth fixing in the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590072</commentid>
    <comment_count>9</comment_count>
      <attachid>383503</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-13 15:47:22 -0800</bug_when>
    <thetext>Created attachment 383503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590077</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-13 15:51:55 -0800</bug_when>
    <thetext>*** Bug 203732 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590079</commentid>
    <comment_count>11</comment_count>
      <attachid>383505</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-13 15:53:29 -0800</bug_when>
    <thetext>Created attachment 383505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590351</commentid>
    <comment_count>12</comment_count>
      <attachid>383505</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-14 15:49:19 -0800</bug_when>
    <thetext>Comment on attachment 383505
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:581
&gt; +        { &quot;/test.mp4&quot;, { &quot;test!&quot;, {{ &quot;Content-Type&quot;, &quot;video/test&quot; }}}},

Looks nice and easy to understand!

&gt; Tools/TestWebKitAPI/cocoa/HTTPServer.h:41
&gt; +    HTTPServer(std::initializer_list&lt;std::pair&lt;String, HTTPResponse&gt;&gt;);

explicit and &amp;&amp;

&gt; Tools/TestWebKitAPI/cocoa/HTTPServer.h:53
&gt; +    HTTPResponse(String&amp;&amp; body)

explicit.

&gt; Tools/TestWebKitAPI/cocoa/HTTPServer.h:63
&gt; +    HTTPResponse&amp; operator=(HTTPResponse&amp;&amp;) = default;

Why do we need all of these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590383</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-11-14 17:13:33 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #12)
&gt; Comment on attachment 383505 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=383505&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:581
&gt; &gt; +        { &quot;/test.mp4&quot;, { &quot;test!&quot;, {{ &quot;Content-Type&quot;, &quot;video/test&quot; }}}},
&gt; 
&gt; Looks nice and easy to understand!

Thanks!  I think this will be a great improvement to our testing.

&gt; &gt; Tools/TestWebKitAPI/cocoa/HTTPServer.h:41
&gt; &gt; +    HTTPServer(std::initializer_list&lt;std::pair&lt;String, HTTPResponse&gt;&gt;);
&gt; 
&gt; explicit and &amp;&amp;
Unfortunately C++ std::initializer_list cannot be moved from, and there is an indication that this will not change because of ABI compatibility concerns.

&gt; &gt; Tools/TestWebKitAPI/cocoa/HTTPServer.h:53
&gt; &gt; +    HTTPResponse(String&amp;&amp; body)
&gt; 
&gt; explicit.
&gt; 
&gt; &gt; Tools/TestWebKitAPI/cocoa/HTTPServer.h:63
&gt; &gt; +    HTTPResponse&amp; operator=(HTTPResponse&amp;&amp;) = default;
&gt; 
&gt; Why do we need all of these?

The lack of explicit and these constructors are necessary to make it so we can just use { &quot;string&quot; } syntax to construct a response without requiring additional names or unneeded {} for the empty HashSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590396</commentid>
    <comment_count>14</comment_count>
      <attachid>383505</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-14 18:57:33 -0800</bug_when>
    <thetext>Comment on attachment 383505
Patch

Clearing flags on attachment: 383505

Committed r252476: &lt;https://trac.webkit.org/changeset/252476&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1590397</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-14 18:57:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383503</attachid>
            <date>2019-11-13 15:47:22 -0800</date>
            <delta_ts>2019-11-13 15:53:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203734-20191113154721.patch</filename>
            <type>text/plain</type>
            <size>20838</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MjQzNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDE5LTExLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgRmxha3kgQVBJIFRlc3QgVGVzdFdlYktpdEFQSS5TZXJ2aWNl
V29ya2Vycy5UaHJvdHRsZUNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDM3MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTb21lIEFQSSB0ZXN0cyB1c2luZyBUQ1BTZXJ2ZXIgaGF2ZSBtdWx0aXBs
ZSBjb25jdXJyZW50IEhUVFAgcmVxdWVzdHMgaW4gZmxpZ2h0IGF0IHRoZSBzYW1lIHRpbWUuCisg
ICAgICAgIFdoZW4gdGhpcyBoYXBwZW5zLCBzb21ldGltZXMgTlNVUkxTZXNzaW9uIHdpbGwgbWFr
ZSBtdWx0aXBsZSBUQ1AgY29ubmVjdGlvbnMgdG8gdGhlIHNhbWUgc2VydmVyLgorICAgICAgICBU
Q1BTZXJ2ZXIgaXMgbm90IHRoZSByaWdodCB0b29sIGZvciB0aGlzIGJlY2F1c2UgaXQgaGFuZGxl
cyBhbGwgaXRzIGNvbm5lY3Rpb25zIG1hbnVhbGx5LgorICAgICAgICBUbyBtYWtlIHRoZSB0ZXN0
IHNlcnZlciBhZ25vc3RpYyB0byBob3cgbWFueSBjb25uZWN0aW9ucyBhcmUgaW5pdGlhdGVkLCBJ
IGludHJvZHVjZSBIVFRQU2VydmVyLAorICAgICAgICB3aGljaCB1c2VzIHRoZSBOZXR3b3JrIGZy
YW1ld29yayB0byBoYW5kbGUgYXMgbWFueSByZXNwb25zZXMgYW5kIGFzIG1hbnkgY29ubmVjdGlv
bnMgYXMgaGFwcGVuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9U
ZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLmg6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6SFRUUFJl
c3BvbnNlOjpIVFRQUmVzcG9uc2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRU
UFNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpI
VFRQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRU
b1JlcXVlc3RzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnBvcnQgY29u
c3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb25maWcuaDoKKwogMjAxOS0xMS0xMyAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEZpeCBi
dWlsZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCShyZXZpc2lvbiAyNTI0MTIpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMyArMTE4LDcgQEAK
ICNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgfHwg
KFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTYwMCkKICNkZWZpbmUgSEFWRV9VSVdFQlZJRVcgMQogI2VuZGlmCisKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgUExBVEZPUk0oSU9TKQorI2RlZmluZSBIQVZFX05FVFdPUktfRlJBTUVXT1JLIDEKKyNlbmRp
ZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMjUyNDEyKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwxMiArNDYsMTggQEAgV0tfQVVUSEtJVF9MREZMQUdTX0lPU19TSU5DRV8x
MyA9IC1mcmFtZQogV0tfQVVUSEtJVF9MREZMQUdTX21hY29zeCA9ICQoV0tfQVVUSEtJVF9MREZM
QUdTJChXS19NQUNPU18xMDE1KSk7CiBXS19BVVRIS0lUX0xERkxBR1NfTUFDT1NfU0lOQ0VfMTAx
NSA9IC1mcmFtZXdvcmsgQXV0aEtpdDsKIAorV0tfTkVUV09SS19MREZMQUdTID0gJChXS19ORVRX
T1JLX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CitXS19ORVRXT1JLX0xERkxBR1NfaXBo
b25lb3MgPSAtZnJhbWV3b3JrIE5ldHdvcms7CitXS19ORVRXT1JLX0xERkxBR1NfaXBob25lc2lt
dWxhdG9yID0gLWZyYW1ld29yayBOZXR3b3JrOworV0tfTkVUV09SS19MREZMQUdTX21hY29zeCA9
ICQoV0tfTkVUV09SS19MREZMQUdTJChXS19NQUNPU18xMDE0KSk7CitXS19ORVRXT1JLX0xERkxB
R1NfTUFDT1NfU0lOQ0VfMTAxNCA9IC1mcmFtZXdvcmsgTmV0d29yazsKKwogV0tfUERGS0lUX0xE
RkxBR1MgPSAkKFdLX1BERktJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfUERG
S0lUX0xERkxBR1NfbWFjb3N4ID0gLWZyYW1ld29yayBQREZLaXQ7CiBXS19QREZLSVRfTERGTEFH
U19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgUERGS2l0OwogV0tfUERGS0lUX0xERkxBR1NfaXBob25l
c2ltdWxhdG9yID0gLWZyYW1ld29yayBQREZLaXQ7CiAKLU9USEVSX0xERkxBR1MgPSAkKGluaGVy
aXRlZCkgJChVTkVYUE9SVEVEX1NZTUJPTF9MREZMQUdTKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2Ny
aXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAkKFdLX0FVVEhL
SVRfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JN
XyQoV0tfQ09DT0FfVE9VQ0gpKTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgJChVTkVY
UE9SVEVEX1NZTUJPTF9MREZMQUdTKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJh
bWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAkKFdLX0FVVEhLSVRfTERGTEFHUykg
JChXS19ORVRXT1JLX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoT1RIRVJfTERGTEFH
U19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyA9
IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBDYXJib247CiAKIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBub3QgYmUgYnVpbHQgb24gaU9TLiBJbnN0ZWFkIHdlIHNob3VsZCBjcmVhdGUgYW5kIHVz
ZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGljYXRpb24uCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjUyNDEyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw2ICszODQs
NyBAQAogCQk1QzcxNDg5NTIxMjNBNDBBMDBGREUzQzUgLyogV0tXZWJzaXRlRGF0YXN0b3JlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3MTQ4OTQy
MTIzQTQwNzAwRkRFM0M1IC8qIFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLzsgfTsKIAkJNUM3NTcx
NjEyMjEyNEM1MjAwQjlFNUFDIC8qIEJ1bmRsZVJldGFpblBhZ2VQbHVnSW4ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Qzc1NzE1RjIyMTI0OUJEMDBC
OUU1QUMgLyogQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbSAqLzsgfTsKIAkJNUM3OTY0MTAxRUIw
Mjc4RDAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVu
dE1vZGlmaWVycy5jcHAgKi87IH07CisJCTVDN0MyNEZDMjM3Qzk3NTQwMDU5OUM5MSAvKiBIVFRQ
U2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM3QzI0RkEyMzdDOTcyMzAwNTk5QzkxIC8qIEhUVFBTZXJ2ZXIubW0gKi87IH07CiAJCTVDN0M3
NENCMUZCNTI5QkEwMDJGOUFCRSAvKiBXZWJWaWV3U2NoZWR1bGVJblJ1bkxvb3AubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzdDNzRDQTFGQjUyOEQ0
MDAyRjlBQkUgLyogV2ViVmlld1NjaGVkdWxlSW5SdW5Mb29wLm1tICovOyB9OwogCQk1QzgzOEY3
RjFEQjA0RjkwMDA4Mjg1OEYgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5MDFGQUUxQ0FGMTM3MTAwRUQ2
NEY5IC8qIExvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbSAqLzsgfTsKIAkJNUM4QkM3OTkyMThDRjQ0
NzAwODEzODg2IC8qIE5ldHdvcmtQcm9jZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4QkM3OTgyMThDRjNFOTAwODEzODg2IC8qIE5ldHdvcmtQ
cm9jZXNzLm1tICovOyB9OwpAQCAtMTk0MSw2ICsxOTQyLDggQEAKIAkJNUM3M0E4MUEyMzIzMDU5
ODAwREVBODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVExTRGVwcmVjYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNzU3MTVGMjIxMjQ5QkQwMEI5RTVBQyAvKiBCdW5kbGVSZXRhaW5QYWdlUGx1Z0lu
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUmV0YWlu
UGFnZVBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3OTY0MEYxRUIw
MjY5QjAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV2ZW50TW9kaWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM3QzI0RkEyMzdDOTcyMzAwNTk5QzkxIC8qIEhUVFBTZXJ2ZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBIVFRQU2VydmVyLm1tOyBwYXRoID0g
Y29jb2EvSFRUUFNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3QzI0
RkIyMzdDOTcyMzAwNTk5QzkxIC8qIEhUVFBTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSFRUUFNlcnZlci5oOyBwYXRoID0gY29jb2EvSFRUUFNlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDNzRDQTFGQjUyOEQ0MDAyRjlBQkUgLyogV2Vi
Vmlld1NjaGVkdWxlSW5SdW5Mb29wLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViVmlld1NjaGVkdWxlSW5SdW5Mb29wLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzhCQzc5ODIxOENGM0U5MDA4MTM4ODYgLyogTmV0d29ya1Byb2Nlc3MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5NzNGNUIxRjU4RUYwQTAwMzU5QzI3
IC8qIFdlYkdMUG9saWN5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViR0xQb2xpY3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzQ2LDYg
KzI3NDksOCBAQAogCQkJCUY0NjEyOEI0MjExQzg2MUEwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFNp
bXVsYXRvci5oICovLAogCQkJCUY0NEQwNjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVz
dEhhcm5lc3MuaCAqLywKIAkJCQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rl
c3RIYXJuZXNzLm1tICovLAorCQkJCTVDN0MyNEZCMjM3Qzk3MjMwMDU5OUM5MSAvKiBIVFRQU2Vy
dmVyLmggKi8sCisJCQkJNUM3QzI0RkEyMzdDOTcyMzAwNTk5QzkxIC8qIEhUVFBTZXJ2ZXIubW0g
Ki8sCiAJCQkJRjQ0QTUzMEQyMUI4OTc2OTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIuaCAqLywKIAkJCQlGNDRBNTMxMDIxQjg5NzY5MDBEQkI5OUMgLyogSW5zdGFuY2VNZXRob2RT
d2l6emxlci5tbSAqLywKIAkJCQkwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1V
dGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTQ2NTYsNiArNDY2MSw3IEBACiAJCQkJN0M4M0UwNTAx
RDBBNjQxODAwRkVCQ0YzIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUNBMURFQzgxRjcxRjcwMTAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2QjlBQkUxMjIwODY5NTJGMDBENzVERTYgLyogSFRUUFBhcnNlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUM3QzI0RkMyMzdDOTc1NDAwNTk5QzkxIC8qIEhUVFBTZXJ2
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUFGMjNERjFFRjFBMzczMDA3MkYyODEgLyogSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMDQ3Nzc4MUQyOTkyM0Iw
MDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMTBG
Q0ZBMUUwMUNEQjgwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkocmV2aXNpb24gMjUyNDEyKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAK
KyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCkBAIC0x
NjE0LDcgKzE2MTUsOSBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBPdXRPZkFuZEluUHJvY2Vzc1Nl
CiAgICAgRVhQRUNUX0VRKDJ1LCBsYXVuY2hTZXJ2aWNlV29ya2VyUHJvY2Vzcyh1c2VTZXBhcmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKSk7CiB9CiAKLVRFU1QoU2VydmljZVdvcmtlcnMsIERJU0FC
TEVEX1Rocm90dGxlQ3Jhc2gpCisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKworVEVTVChT
ZXJ2aWNlV29ya2VycywgVGhyb3R0bGVDcmFzaCkKIHsKICAgICBbV0tXZWJzaXRlRGF0YVN0b3Jl
IF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCkBAIC0xNjI3LDEwICsx
NjMwLDkgQEAgVEVTVChTZXJ2aWNlV29ya2VycywgRElTQUJMRURfVGhyb3R0bGVDcgogCiAgICAg
YXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0XSk7CiAKLSAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
InRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Iiwgc2NyaXB0Qnl0ZXMgfSwKLSAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0s
CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwg
eyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHNjcmlwdEJ5dGVzLCB7eyAi
Q29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19IH0gfSwKICAgICB9KTsK
IAogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTE2NzksNiArMTY4MSw4IEBAIFRFU1QoU2Vydmlj
ZVdvcmtlcnMsIERJU0FCTEVEX1Rocm90dGxlQ3IKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwogfQogCisjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZS
QU1FV09SSykKKwogVEVTVChTZXJ2aWNlV29ya2VycywgTG9hZERhdGEpCiB7CiAgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCShyZXZpc2lvbiAyNTI0
MTIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRh
U3RvcmVDdXN0b21QYXRocy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAj
aW1wb3J0ICJjb25maWcuaCIKIAorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5o
IgpAQCAtNTcwLDM2ICs1NzEsMTQgQEAgVEVTVChXZWJLaXQsIE5ldHdvcmtDYWNoZURpcmVjdG9y
eSkKICAgICBFWFBFQ1RfRkFMU0UoZXJyb3IpOwogfQogCi1URVNUKFdlYktpdCwgRElTQUJMRURf
QXBwbGljYXRpb25DYWNoZURpcmVjdG9yaWVzKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJOwotICAgIFRDUFNlcnZlciBzZXJ2ZXIoW10gKGludCBzb2NrZXQpIHsKLSAgICAg
ICAgVENQU2VydmVyOjpyZWFkKHNvY2tldCk7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZpcnN0UmVz
cG9uc2UgPQotICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgIkNvbnRlbnQt
TGVuZ3RoOiAzMVxyXG5cclxuIgotICAgICAgICAiPGh0bWwgbWFuaWZlc3Q9J3Rlc3QuYXBwY2Fj
aGUnPiI7Ci0gICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBmaXJzdFJlc3BvbnNlLCBz
dHJsZW4oZmlyc3RSZXNwb25zZSkpOwotICAgICAgICAKLSAgICAgICAgVENQU2VydmVyOjpyZWFk
KHNvY2tldCk7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHNlY29uZFJlc3BvbnNlID0KLSAgICAgICAg
IkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgICAgICJDb250ZW50LUxlbmd0aDogMzVcclxuXHJc
biIKLSAgICAgICAgIkNBQ0hFIE1BTklGRVNUXG4iCi0gICAgICAgICJpbmRleC5odG1sXG4iCi0g
ICAgICAgICJ0ZXN0Lm1wNFxuIjsKLSAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIHNl
Y29uZFJlc3BvbnNlLCBzdHJsZW4oc2Vjb25kUmVzcG9uc2UpKTsKKyNpZiBIQVZFKE5FVFdPUktf
RlJBTUVXT1JLKQogCi0gICAgICAgIFRDUFNlcnZlcjo6cmVhZChzb2NrZXQpOwotICAgICAgICBU
Q1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgZmlyc3RSZXNwb25zZSwgc3RybGVuKGZpcnN0UmVzcG9u
c2UpKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IGNoYXIqIHZpZGVvUmVzcG9uc2UgPQotICAg
ICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgIkNvbnRlbnQtVHlwZTogdmlkZW8v
dGVzdFxyXG4iCi0gICAgICAgICJDb250ZW50LUxlbmd0aDogNVxyXG5cclxuIgotICAgICAgICAi
dGVzdCEiOwotICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKLSAgICAgICAgVENQU2Vy
dmVyOjp3cml0ZShzb2NrZXQsIHZpZGVvUmVzcG9uc2UsIHN0cmxlbih2aWRlb1Jlc3BvbnNlKSk7
CitURVNUKFdlYktpdCwgQXBwbGljYXRpb25DYWNoZURpcmVjdG9yaWVzKQoreworICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiL2luZGV4Lmh0bWwiLCB7
ICI8aHRtbCBtYW5pZmVzdD0ndGVzdC5hcHBjYWNoZSc+IiB9IH0sCisgICAgICAgIHsgIi90ZXN0
LmFwcGNhY2hlIiwgeyAiQ0FDSEUgTUFOSUZFU1RcbmluZGV4Lmh0bWxcbnRlc3QubXA0XG4iIH0g
fSwKKyAgICAgICAgeyAiL3Rlc3QubXA0IiwgeyAidGVzdCEiLCB7eyAiQ29udGVudC1UeXBlIiwg
InZpZGVvL3Rlc3QiIH19fX0sCiAgICAgfSk7CiAgICAgCiAgICAgTlNVUkwgKnRlbXBEaXIgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkN1c3RvbVBhdGhzVGVzdCJdIGlzRGlyZWN0b3J5OllFU107
CkBAIC02MjAsMTMgKzU5OSwxNSBAQCBURVNUKFdlYktpdCwgRElTQUJMRURfQXBwbGljYXRpb25D
YWNoZURpCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkL2luZGV4Lmh0bWwiLCBzZXJ2ZXIucG9ydCgp
XV1dXTsKIAogICAgIHdoaWxlICghW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6c3ViZGly
ZWN0b3J5UGF0aF0pCi0gICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CiAKICAgICBOU0Vycm9yICplcnJvciA9IG5p
bDsKICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDpwYXRoIGVycm9yOiZlcnJvcl07
CiAgICAgRVhQRUNUX0ZBTFNFKGVycm9yKTsKIH0KIAorI2VuZGlmIC8vIEhBVkUoTkVUV09SS19G
UkFNRVdPUkspCisKIC8vIEZJWE1FOiBpbnZlc3RpZ2F0ZSB3aHkgdGhpcyB0ZXN0IHRpbWVzIG91
dCBvbiBIaWdoIFNpZXJyYQogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTAxNDAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogVEVTVChX
ZWJLaXQsIE1lZGlhQ2FjaGUpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCisjaW1wb3J0IDxOZXR3b3Jr
L05ldHdvcmsuaD4KKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1h
cC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5n
SGFzaC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIEhUVFBTZXJ2ZXIg
eworcHVibGljOgorICAgIHN0cnVjdCBIVFRQUmVzcG9uc2U7CisgICAgSFRUUFNlcnZlcihzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4pOworICAg
IHVpbnQxNl90IHBvcnQoKSBjb25zdDsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoKSBjb25z
dDsKKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCByZXNwb25kVG9SZXF1ZXN0cyhud19jb25uZWN0
aW9uX3QpOworICAgIAorICAgIFJldGFpblB0cjxud19saXN0ZW5lcl90PiBtX2xpc3RlbmVyOwor
ICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIVFRQUmVzcG9uc2U+IG1fcmVxdWVzdFJlc3BvbnNl
TWFwOworfTsKKworc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CisgICAgSFRUUFJl
c3BvbnNlKFN0cmluZyYmIGJvZHkpCisgICAgICAgIDogYm9keShXVEZNb3ZlKGJvZHkpKSB7IH0K
KyAgICBIVFRQUmVzcG9uc2UoU3RyaW5nJiYgYm9keSwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
JiBoZWFkZXJGaWVsZHMpCisgICAgICAgIDogYm9keShXVEZNb3ZlKGJvZHkpKQorICAgICAgICAs
IGhlYWRlckZpZWxkcyhXVEZNb3ZlKGhlYWRlckZpZWxkcykpIHsgfQorCisgICAgSFRUUFJlc3Bv
bnNlKGNvbnN0IEhUVFBSZXNwb25zZSYpID0gZGVmYXVsdDsKKyAgICBIVFRQUmVzcG9uc2UoSFRU
UFJlc3BvbnNlJiYpID0gZGVmYXVsdDsKKyAgICBIVFRQUmVzcG9uc2UoKSA9IGRlZmF1bHQ7Cisg
ICAgSFRUUFJlc3BvbnNlJiBvcGVyYXRvcj0oY29uc3QgSFRUUFJlc3BvbnNlJikgPSBkZWZhdWx0
OworICAgIEhUVFBSZXNwb25zZSYgb3BlcmF0b3I9KEhUVFBSZXNwb25zZSYmKSA9IGRlZmF1bHQ7
CisgICAgCisgICAgU3RyaW5nIGJvZHk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaGVh
ZGVyRmllbGRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYg
Ly8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvSFRUUFNlcnZlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCisKKyNpZiBI
QVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitIVFRQU2VydmVyOjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxz
dGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiByZXNwb25zZXMpCisgICAgOiBtX3JlcXVl
c3RSZXNwb25zZU1hcChbXShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywg
SFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlPj4gbGlzdCkgeworICAgICAgICBIYXNoTWFwPFN0cmlu
ZywgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlPiBtYXA7CisgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IGxpc3QpCisgICAgICAgICAgICBtYXAuYWRkKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25kKTsK
KyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9KHJlc3BvbnNlcykpCit7CisgICAgYXV0byBwYXJh
bWV0ZXJzID0gYWRvcHROUyhud19wYXJhbWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNwKE5XX1BBUkFN
RVRFUlNfRElTQUJMRV9QUk9UT0NPTCwgTldfUEFSQU1FVEVSU19ERUZBVUxUX0NPTkZJR1VSQVRJ
T04pKTsKKyAgICBtX2xpc3RlbmVyID0gYWRvcHROUyhud19saXN0ZW5lcl9jcmVhdGUocGFyYW1l
dGVycy5nZXQoKSkpOworICAgIG53X2xpc3RlbmVyX3NldF9xdWV1ZShtX2xpc3RlbmVyLmdldCgp
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKKyAgICBud19saXN0ZW5lcl9zZXRfbmV3X2Nv
bm5lY3Rpb25faGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBeKG53X2Nvbm5lY3Rpb25fdCBjb25u
ZWN0aW9uKSB7CisgICAgICAgIG53X2Nvbm5lY3Rpb25fc2V0X3F1ZXVlKGNvbm5lY3Rpb24sIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgICAgICBud19jb25uZWN0aW9uX3N0YXJ0KGNv
bm5lY3Rpb24pOworICAgICAgICByZXNwb25kVG9SZXF1ZXN0cyhjb25uZWN0aW9uKTsKKyAgICB9
KTsKKyAgICBud19saXN0ZW5lcl9zdGFydChtX2xpc3RlbmVyLmdldCgpKTsKK30KKwordm9pZCBI
VFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyhud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikK
K3sKKyAgICBud19jb25uZWN0aW9uX3JlY2VpdmUoY29ubmVjdGlvbiwgMSwgc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50MzJfdD46Om1heCgpLCBeKGRpc3BhdGNoX2RhdGFfdCBjb250ZW50LCBud19j
b250ZW50X2NvbnRleHRfdCBjb250ZXh0LCBib29sIGNvbXBsZXRlLCBud19lcnJvcl90IGVycm9y
KSB7CisgICAgICAgIEFTU0VSVCghZXJyb3IpOworICAgICAgICBpZiAoIWNvbnRlbnQpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIF9fYmxvY2sgVmVjdG9yPGNoYXI+IHJlcXVlc3Q7Cisg
ICAgICAgIGRpc3BhdGNoX2RhdGFfYXBwbHkoY29udGVudCwgXmJvb2woZGlzcGF0Y2hfZGF0YV90
LCBzaXplX3QsIGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAg
IHJlcXVlc3QuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihidWZmZXIpLCBzaXplKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9KTsKKyAgICAgICAgcmVxdWVzdC5h
cHBlbmQoMCk7CisKKyAgICAgICAgY29uc3QgY2hhciogcGF0aFByZWZpeCA9ICJHRVQgIjsKKyAg
ICAgICAgY29uc3QgY2hhciogcGF0aFN1ZmZpeCA9ICIgSFRUUC8xLjFcclxuIjsKKyAgICAgICAg
Y29uc3QgY2hhciogcGF0aEVuZCA9IHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgcGF0aFN1ZmZpeCk7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocGF0aEVuZCwgIkhUVFBTZXJ2ZXIgYXNzdW1l
cyByZXF1ZXN0IGlzIEhUVFAgMS4xIik7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1l
bWNtcChyZXF1ZXN0LmRhdGEoKSwgcGF0aFByZWZpeCwgc3RybGVuKHBhdGhQcmVmaXgpKSwgIkhU
VFBTZXJ2ZXIgYXNzdW1lcyByZXF1ZXN0IGlzIEdFVCIpOworICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKHN0cnN0cihyZXF1ZXN0LmRhdGEoKSwgIlxyXG5cclxuIiksICJIVFRQU2VydmVyIGFz
c3VtZXMgZW50aXJlIEhUVFAgcmVxdWVzdCBpcyByZWNlaXZlZCBhdCBvbmNlIik7CisgICAgICAg
IHNpemVfdCBwYXRoTGVuZ3RoID0gcGF0aEVuZCAtIHJlcXVlc3QuZGF0YSgpIC0gc3RybGVuKHBh
dGhQcmVmaXgpOworICAgICAgICBTdHJpbmcgcGF0aChyZXF1ZXN0LmRhdGEoKSArIHN0cmxlbihw
YXRoUHJlZml4KSwgcGF0aExlbmd0aCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9y
ZXF1ZXN0UmVzcG9uc2VNYXAuY29udGFpbnMocGF0aCksICJUaGlzIEhUVFBTZXJ2ZXIgZG9lcyBu
b3Qga25vdyBob3cgdG8gcmVzcG9uZCB0byBhIHJlcXVlc3QgZm9yICVzIiwgcGF0aC51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBtX3JlcXVlc3RSZXNw
b25zZU1hcC5nZXQocGF0aCk7CisgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzcG9uc2VCdWlsZGVy
OworICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJIVFRQLzEuMSAyMDAgT0tcclxuQ29u
dGVudC1MZW5ndGg6ICIpOworICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJl
c3BvbnNlLmJvZHkubGVuZ3RoKCkpOworICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJc
clxuIik7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHJlc3BvbnNlLmhlYWRlckZpZWxkcykg
eworICAgICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChwYWlyLmtleSk7CisgICAgICAg
ICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCI6ICIpOworICAgICAgICAgICAgcmVzcG9uc2VC
dWlsZGVyLmFwcGVuZChwYWlyLnZhbHVlKTsKKyAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5h
cHBlbmQoIlxyXG4iKTsKKyAgICAgICAgfQorICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5k
KCJcclxuIik7CisgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQocmVzcG9uc2UuYm9keSk7
CisgICAgICAgIGF1dG8gcmVzcG9uc2VCb2R5QW5kSGVhZGVyID0gcmVzcG9uc2VCdWlsZGVyLnRv
U3RyaW5nKCkucmVsZWFzZUltcGwoKTsKKyAgICAgICAgYXV0byByZXNwb25zZURhdGEgPSBhZG9w
dE5TKGRpc3BhdGNoX2RhdGFfY3JlYXRlKHJlc3BvbnNlQm9keUFuZEhlYWRlci0+Y2hhcmFjdGVy
czgoKSwgcmVzcG9uc2VCb2R5QW5kSGVhZGVyLT5sZW5ndGgoKSwgZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsKKyAgICAgICAgICAgICh2b2lkKXJlc3BvbnNlQm9keUFuZEhlYWRlcjsKKyAg
ICAgICAgfSkpOworICAgICAgICBud19jb25uZWN0aW9uX3NlbmQoY29ubmVjdGlvbiwgcmVzcG9u
c2VEYXRhLmdldCgpLCBjb250ZXh0LCB0cnVlLCBeKG53X2Vycm9yX3QgZXJyb3IpIHsKKyAgICAg
ICAgICAgIEFTU0VSVCghZXJyb3IpOworICAgICAgICAgICAgcmVzcG9uZFRvUmVxdWVzdHMoY29u
bmVjdGlvbik7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit1aW50MTZfdCBIVFRQU2VydmVy
Ojpwb3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbndfbGlzdGVuZXJfZ2V0X3BvcnQobV9saXN0
ZW5lci5nZXQoKSk7Cit9CisKK05TVVJMUmVxdWVzdCAqSFRUUFNlcnZlcjo6cmVxdWVzdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4x
OiVkLyIsIHBvcnQoKV1dXTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisj
ZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383505</attachid>
            <date>2019-11-13 15:53:29 -0800</date>
            <delta_ts>2019-11-14 18:57:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203734-20191113155329.patch</filename>
            <type>text/plain</type>
            <size>21049</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI1MjQzNSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMwIEBACisyMDE5LTExLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgRmxha3kgQVBJIFRlc3QgVGVzdFdlYktpdEFQSS5TZXJ2aWNl
V29ya2Vycy5UaHJvdHRsZUNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDM3MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTb21lIEFQSSB0ZXN0cyB1c2luZyBUQ1BTZXJ2ZXIgaGF2ZSBtdWx0aXBs
ZSBjb25jdXJyZW50IEhUVFAgcmVxdWVzdHMgaW4gZmxpZ2h0IGF0IHRoZSBzYW1lIHRpbWUuCisg
ICAgICAgIFdoZW4gdGhpcyBoYXBwZW5zLCBzb21ldGltZXMgTlNVUkxTZXNzaW9uIHdpbGwgbWFr
ZSBtdWx0aXBsZSBUQ1AgY29ubmVjdGlvbnMgdG8gdGhlIHNhbWUgc2VydmVyLgorICAgICAgICBU
Q1BTZXJ2ZXIgaXMgbm90IHRoZSByaWdodCB0b29sIGZvciB0aGlzIGJlY2F1c2UgaXQgaGFuZGxl
cyBhbGwgaXRzIGNvbm5lY3Rpb25zIG1hbnVhbGx5LgorICAgICAgICBUbyBtYWtlIHRoZSB0ZXN0
IHNlcnZlciBhZ25vc3RpYyB0byBob3cgbWFueSBjb25uZWN0aW9ucyBhcmUgaW5pdGlhdGVkLCBJ
IGludHJvZHVjZSBIVFRQU2VydmVyLAorICAgICAgICB3aGljaCB1c2VzIHRoZSBOZXR3b3JrIGZy
YW1ld29yayB0byBoYW5kbGUgYXMgbWFueSByZXNwb25zZXMgYW5kIGFzIG1hbnkgY29ubmVjdGlv
bnMgYXMgaGFwcGVuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9U
ZXN0V2ViS2l0QVBJLnhjY29uZmlnOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLmg6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6SFRUUFJl
c3BvbnNlOjpIVFRQUmVzcG9uc2UpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRU
UFNlcnZlci5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpI
VFRQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnJlc3BvbmRU
b1JlcXVlc3RzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OnBvcnQgY29u
c3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6cmVxdWVzdCBjb25zdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb25maWcuaDoKKwogMjAxOS0xMS0xMyAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEZpeCBi
dWlsZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL2NvbmZpZy5oCShyZXZpc2lvbiAyNTI0MTIpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMyArMTE4LDcgQEAK
ICNpZiAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgfHwg
KFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
ID49IDEwMTYwMCkKICNkZWZpbmUgSEFWRV9VSVdFQlZJRVcgMQogI2VuZGlmCisKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkg
fHwgUExBVEZPUk0oSU9TKQorI2RlZmluZSBIQVZFX05FVFdPUktfRlJBTUVXT1JLIDEKKyNlbmRp
ZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJ
LnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlv
bnMvVGVzdFdlYktpdEFQSS54Y2NvbmZpZwkocmV2aXNpb24gMjUyNDEyKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLnhjY29uZmlnCSh3b3JraW5n
IGNvcHkpCkBAIC00NiwxMiArNDYsMTggQEAgV0tfQVVUSEtJVF9MREZMQUdTX0lPU19TSU5DRV8x
MyA9IC1mcmFtZQogV0tfQVVUSEtJVF9MREZMQUdTX21hY29zeCA9ICQoV0tfQVVUSEtJVF9MREZM
QUdTJChXS19NQUNPU18xMDE1KSk7CiBXS19BVVRIS0lUX0xERkxBR1NfTUFDT1NfU0lOQ0VfMTAx
NSA9IC1mcmFtZXdvcmsgQXV0aEtpdDsKIAorV0tfTkVUV09SS19MREZMQUdTID0gJChXS19ORVRX
T1JLX0xERkxBR1NfJChXS19QTEFURk9STV9OQU1FKSk7CitXS19ORVRXT1JLX0xERkxBR1NfaXBo
b25lb3MgPSAtZnJhbWV3b3JrIE5ldHdvcms7CitXS19ORVRXT1JLX0xERkxBR1NfaXBob25lc2lt
dWxhdG9yID0gLWZyYW1ld29yayBOZXR3b3JrOworV0tfTkVUV09SS19MREZMQUdTX21hY29zeCA9
ICQoV0tfTkVUV09SS19MREZMQUdTJChXS19NQUNPU18xMDE0KSk7CitXS19ORVRXT1JLX0xERkxB
R1NfTUFDT1NfU0lOQ0VfMTAxNCA9IC1mcmFtZXdvcmsgTmV0d29yazsKKwogV0tfUERGS0lUX0xE
RkxBR1MgPSAkKFdLX1BERktJVF9MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfUERG
S0lUX0xERkxBR1NfbWFjb3N4ID0gLWZyYW1ld29yayBQREZLaXQ7CiBXS19QREZLSVRfTERGTEFH
U19pcGhvbmVvcyA9IC1mcmFtZXdvcmsgUERGS2l0OwogV0tfUERGS0lUX0xERkxBR1NfaXBob25l
c2ltdWxhdG9yID0gLWZyYW1ld29yayBQREZLaXQ7CiAKLU9USEVSX0xERkxBR1MgPSAkKGluaGVy
aXRlZCkgJChVTkVYUE9SVEVEX1NZTUJPTF9MREZMQUdTKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2Ny
aXB0Q29yZSAtZnJhbWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAkKFdLX0FVVEhL
SVRfTERGTEFHUykgJChXS19QREZLSVRfTERGTEFHUykgJChPVEhFUl9MREZMQUdTX1BMQVRGT1JN
XyQoV0tfQ09DT0FfVE9VQ0gpKTsKK09USEVSX0xERkxBR1MgPSAkKGluaGVyaXRlZCkgJChVTkVY
UE9SVEVEX1NZTUJPTF9MREZMQUdTKSAtbGd0ZXN0IC1mb3JjZV9sb2FkICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9saWJUZXN0V2ViS2l0QVBJLmEgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZSAtZnJh
bWV3b3JrIFdlYktpdCAtbFdlYkNvcmVUZXN0U3VwcG9ydCAkKFdLX0FVVEhLSVRfTERGTEFHUykg
JChXS19ORVRXT1JLX0xERkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoT1RIRVJfTERGTEFH
U19QTEFURk9STV8kKFdLX0NPQ09BX1RPVUNIKSk7CiBPVEhFUl9MREZMQUdTX1BMQVRGT1JNXyA9
IC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBDYXJib247CiAKIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBub3QgYmUgYnVpbHQgb24gaU9TLiBJbnN0ZWFkIHdlIHNob3VsZCBjcmVhdGUgYW5kIHVz
ZSBhIFRlc3RXZWJLaXRBUEkgYXBwbGljYXRpb24uCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjUyNDEyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM4NCw2ICszODQs
NyBAQAogCQk1QzcxNDg5NTIxMjNBNDBBMDBGREUzQzUgLyogV0tXZWJzaXRlRGF0YXN0b3JlLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3MTQ4OTQy
MTIzQTQwNzAwRkRFM0M1IC8qIFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLzsgfTsKIAkJNUM3NTcx
NjEyMjEyNEM1MjAwQjlFNUFDIC8qIEJ1bmRsZVJldGFpblBhZ2VQbHVnSW4ubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Qzc1NzE1RjIyMTI0OUJEMDBC
OUU1QUMgLyogQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbSAqLzsgfTsKIAkJNUM3OTY0MTAxRUIw
Mjc4RDAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVu
dE1vZGlmaWVycy5jcHAgKi87IH07CisJCTVDN0MyNEZDMjM3Qzk3NTQwMDU5OUM5MSAvKiBIVFRQ
U2VydmVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM3QzI0RkEyMzdDOTcyMzAwNTk5QzkxIC8qIEhUVFBTZXJ2ZXIubW0gKi87IH07CiAJCTVDN0M3
NENCMUZCNTI5QkEwMDJGOUFCRSAvKiBXZWJWaWV3U2NoZWR1bGVJblJ1bkxvb3AubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzdDNzRDQTFGQjUyOEQ0
MDAyRjlBQkUgLyogV2ViVmlld1NjaGVkdWxlSW5SdW5Mb29wLm1tICovOyB9OwogCQk1QzgzOEY3
RjFEQjA0RjkwMDA4Mjg1OEYgLyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTc5MDFGQUUxQ0FGMTM3MTAwRUQ2
NEY5IC8qIExvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbSAqLzsgfTsKIAkJNUM4QkM3OTkyMThDRjQ0
NzAwODEzODg2IC8qIE5ldHdvcmtQcm9jZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4QkM3OTgyMThDRjNFOTAwODEzODg2IC8qIE5ldHdvcmtQ
cm9jZXNzLm1tICovOyB9OwpAQCAtMTk0MSw2ICsxOTQyLDggQEAKIAkJNUM3M0E4MUEyMzIzMDU5
ODAwREVBODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVExTRGVwcmVjYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNzU3MTVGMjIxMjQ5QkQwMEI5RTVBQyAvKiBCdW5kbGVSZXRhaW5QYWdlUGx1Z0lu
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUmV0YWlu
UGFnZVBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3OTY0MEYxRUIw
MjY5QjAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV2ZW50TW9kaWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUM3QzI0RkEyMzdDOTcyMzAwNTk5QzkxIC8qIEhUVFBTZXJ2ZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBIVFRQU2VydmVyLm1tOyBwYXRoID0g
Y29jb2EvSFRUUFNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3QzI0
RkIyMzdDOTcyMzAwNTk5QzkxIC8qIEhUVFBTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSFRUUFNlcnZlci5oOyBwYXRoID0gY29jb2EvSFRUUFNlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdDNzRDQTFGQjUyOEQ0MDAyRjlBQkUgLyogV2Vi
Vmlld1NjaGVkdWxlSW5SdW5Mb29wLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViVmlld1NjaGVkdWxlSW5SdW5Mb29wLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzhCQzc5ODIxOENGM0U5MDA4MTM4ODYgLyogTmV0d29ya1Byb2Nlc3MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5NzNGNUIxRjU4RUYwQTAwMzU5QzI3
IC8qIFdlYkdMUG9saWN5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViR0xQb2xpY3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzQ2LDYg
KzI3NDksOCBAQAogCQkJCUY0NjEyOEI0MjExQzg2MUEwMEQ5RkFEQiAvKiBEcmFnQW5kRHJvcFNp
bXVsYXRvci5oICovLAogCQkJCUY0NEQwNjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVz
dEhhcm5lc3MuaCAqLywKIAkJCQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rl
c3RIYXJuZXNzLm1tICovLAorCQkJCTVDN0MyNEZCMjM3Qzk3MjMwMDU5OUM5MSAvKiBIVFRQU2Vy
dmVyLmggKi8sCisJCQkJNUM3QzI0RkEyMzdDOTcyMzAwNTk5QzkxIC8qIEhUVFBTZXJ2ZXIubW0g
Ki8sCiAJCQkJRjQ0QTUzMEQyMUI4OTc2OTAwREJCOTlDIC8qIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIuaCAqLywKIAkJCQlGNDRBNTMxMDIxQjg5NzY5MDBEQkI5OUMgLyogSW5zdGFuY2VNZXRob2RT
d2l6emxlci5tbSAqLywKIAkJCQkwRjEzOUU3MjFBNDIzQTJCMDBGNTkwRjUgLyogUGxhdGZvcm1V
dGlsaXRpZXNDb2NvYS5tbSAqLywKQEAgLTQ2NTYsNiArNDY2MSw3IEBACiAJCQkJN0M4M0UwNTAx
RDBBNjQxODAwRkVCQ0YzIC8qIEhUTUxQYXJzZXJJZGlvbXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUNBMURFQzgxRjcxRjcwMTAwRTcxQkQzIC8qIEhUVFBIZWFkZXJGaWVsZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2QjlBQkUxMjIwODY5NTJGMDBENzVERTYgLyogSFRUUFBhcnNlcnMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNUM3QzI0RkMyMzdDOTc1NDAwNTk5QzkxIC8qIEhUVFBTZXJ2
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUFGMjNERjFFRjFBMzczMDA3MkYyODEgLyogSWNv
bkxvYWRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMDQ3Nzc4MUQyOTkyM0Iw
MDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMTBG
Q0ZBMUUwMUNEQjgwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZpY2VX
b3JrZXJCYXNpYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQkocmV2aXNpb24gMjUyNDEyKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAK
KyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCkBAIC01
MCw3ICs1MSwxMCBAQAogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHN0YXRpYyBi
b29sIGRvbmU7CisKKyNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQogc3RhdGljIGJvb2wgZGlk
RmluaXNoTmF2aWdhdGlvbjsKKyNlbmRpZgogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2Fn
ZTsKIHN0YXRpYyBTdHJpbmcgcmV0cmlldmVkU3RyaW5nOwpAQCAtMTYxNCw3ICsxNjE4LDkgQEAg
VEVTVChTZXJ2aWNlV29ya2VycywgT3V0T2ZBbmRJblByb2Nlc3NTZQogICAgIEVYUEVDVF9FUSgy
dSwgbGF1bmNoU2VydmljZVdvcmtlclByb2Nlc3ModXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJv
Y2VzcykpOwogfQogCi1URVNUKFNlcnZpY2VXb3JrZXJzLCBESVNBQkxFRF9UaHJvdHRsZUNyYXNo
KQorI2lmIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKK1RFU1QoU2VydmljZVdvcmtlcnMsIFRo
cm90dGxlQ3Jhc2gpCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0
YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKIApAQCAtMTYyNywxMCArMTYzMyw5IEBAIFRFU1QoU2Vy
dmljZVdvcmtlcnMsIERJU0FCTEVEX1Rocm90dGxlQ3IKIAogICAgIGF1dG8gbWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogCi0gICAgU2Vy
dmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWlu
Qnl0ZXMgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVz
IH0sCi0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LAorICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfSwK
KyAgICAgICAgeyAiL3N3LmpzIiwgeyBzY3JpcHRCeXRlcywge3sgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSB9IH0sCiAgICAgfSk7CiAKICAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CkBAIC0xNjc5LDYgKzE2ODQsOCBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBESVNBQkxF
RF9UaHJvdHRsZUNyCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZp
Z2F0aW9uKTsKIH0KIAorI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKIFRFU1Qo
U2VydmljZVdvcmtlcnMsIExvYWREYXRhKQogewogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2Fs
bG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQkocmV2aXNpb24gMjUyNDEyKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgi
CiAKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIKQEAgLTU3MCwzNiArNTcx
LDE0IEBAIFRFU1QoV2ViS2l0LCBOZXR3b3JrQ2FjaGVEaXJlY3RvcnkpCiAgICAgRVhQRUNUX0ZB
TFNFKGVycm9yKTsKIH0KIAotVEVTVChXZWJLaXQsIERJU0FCTEVEX0FwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcmllcykKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBU
Q1BTZXJ2ZXIgc2VydmVyKFtdIChpbnQgc29ja2V0KSB7Ci0gICAgICAgIFRDUFNlcnZlcjo6cmVh
ZChzb2NrZXQpOwotICAgICAgICBjb25zdCBjaGFyKiBmaXJzdFJlc3BvbnNlID0KLSAgICAgICAg
IkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgICAgICJDb250ZW50LUxlbmd0aDogMzFcclxuXHJc
biIKLSAgICAgICAgIjxodG1sIG1hbmlmZXN0PSd0ZXN0LmFwcGNhY2hlJz4iOwotICAgICAgICBU
Q1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgZmlyc3RSZXNwb25zZSwgc3RybGVuKGZpcnN0UmVzcG9u
c2UpKTsKLSAgICAgICAgCi0gICAgICAgIFRDUFNlcnZlcjo6cmVhZChzb2NrZXQpOwotICAgICAg
ICBjb25zdCBjaGFyKiBzZWNvbmRSZXNwb25zZSA9Ci0gICAgICAgICJIVFRQLzEuMSAyMDAgT0tc
clxuIgotICAgICAgICAiQ29udGVudC1MZW5ndGg6IDM1XHJcblxyXG4iCi0gICAgICAgICJDQUNI
RSBNQU5JRkVTVFxuIgotICAgICAgICAiaW5kZXguaHRtbFxuIgotICAgICAgICAidGVzdC5tcDRc
biI7Ci0gICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBzZWNvbmRSZXNwb25zZSwgc3Ry
bGVuKHNlY29uZFJlc3BvbnNlKSk7CisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykKIAotICAg
ICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKLSAgICAgICAgVENQU2VydmVyOjp3cml0ZShz
b2NrZXQsIGZpcnN0UmVzcG9uc2UsIHN0cmxlbihmaXJzdFJlc3BvbnNlKSk7Ci0gICAgICAgIAot
ICAgICAgICBjb25zdCBjaGFyKiB2aWRlb1Jlc3BvbnNlID0KLSAgICAgICAgIkhUVFAvMS4xIDIw
MCBPS1xyXG4iCi0gICAgICAgICJDb250ZW50LVR5cGU6IHZpZGVvL3Rlc3RcclxuIgotICAgICAg
ICAiQ29udGVudC1MZW5ndGg6IDVcclxuXHJcbiIKLSAgICAgICAgInRlc3QhIjsKLSAgICAgICAg
VENQU2VydmVyOjpyZWFkKHNvY2tldCk7Ci0gICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0
LCB2aWRlb1Jlc3BvbnNlLCBzdHJsZW4odmlkZW9SZXNwb25zZSkpOworVEVTVChXZWJLaXQsIEFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcmllcykKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIHNlcnZlcih7CisgICAgICAgIHsgIi9pbmRleC5odG1sIiwgeyAiPGh0bWwgbWFuaWZlc3Q9
J3Rlc3QuYXBwY2FjaGUnPiIgfSB9LAorICAgICAgICB7ICIvdGVzdC5hcHBjYWNoZSIsIHsgIkNB
Q0hFIE1BTklGRVNUXG5pbmRleC5odG1sXG50ZXN0Lm1wNFxuIiB9IH0sCisgICAgICAgIHsgIi90
ZXN0Lm1wNCIsIHsgInRlc3QhIiwge3sgIkNvbnRlbnQtVHlwZSIsICJ2aWRlby90ZXN0IiB9fX19
LAogICAgIH0pOwogICAgIAogICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJDdXN0b21QYXRoc1Rlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOwpAQCAtNjIwLDEzICs1OTks
MTUgQEAgVEVTVChXZWJLaXQsIERJU0FCTEVEX0FwcGxpY2F0aW9uQ2FjaGVEaQogICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDov
LzEyNy4wLjAuMTolZC9pbmRleC5odG1sIiwgc2VydmVyLnBvcnQoKV1dXV07CiAKICAgICB3aGls
ZSAoIVtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOnN1YmRpcmVjdG9yeVBhdGhdKQotICAg
ICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpz
cGluUnVuTG9vcCgpOwogCiAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgW2ZpbGVNYW5h
Z2VyIHJlbW92ZUl0ZW1BdFBhdGg6cGF0aCBlcnJvcjomZXJyb3JdOwogICAgIEVYUEVDVF9GQUxT
RShlcnJvcik7CiB9CiAKKyNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCiAvLyBG
SVhNRTogaW52ZXN0aWdhdGUgd2h5IHRoaXMgdGVzdCB0aW1lcyBvdXQgb24gSGlnaCBTaWVycmEK
ICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTQwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIFRFU1QoV2ViS2l0LCBNZWRpYUNhY2hl
KQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKG5vbmV4aXN0ZW50
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgSEFW
RShORVRXT1JLX0ZSQU1FV09SSykKKworI2ltcG9ydCA8TmV0d29yay9OZXR3b3JrLmg+CisjaW1w
b3J0IDx3dGYvRm9yd2FyZC5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBIVFRQU2VydmVyIHsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgSFRUUFJlc3BvbnNlOworICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0
PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+KTsKKyAgICB1aW50MTZfdCBwb3J0KCkg
Y29uc3Q7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CisgICAgCitwcml2YXRl
OgorICAgIHZvaWQgcmVzcG9uZFRvUmVxdWVzdHMobndfY29ubmVjdGlvbl90KTsKKyAgICAKKyAg
ICBSZXRhaW5QdHI8bndfbGlzdGVuZXJfdD4gbV9saXN0ZW5lcjsKKyAgICBjb25zdCBIYXNoTWFw
PFN0cmluZywgSFRUUFJlc3BvbnNlPiBtX3JlcXVlc3RSZXNwb25zZU1hcDsKK307CisKK3N0cnVj
dCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgeworICAgIEhUVFBSZXNwb25zZShTdHJpbmcmJiBi
b2R5KQorICAgICAgICA6IGJvZHkoV1RGTW92ZShib2R5KSkgeyB9CisgICAgSFRUUFJlc3BvbnNl
KFN0cmluZyYmIGJvZHksIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYgaGVhZGVyRmllbGRzKQor
ICAgICAgICA6IGJvZHkoV1RGTW92ZShib2R5KSkKKyAgICAgICAgLCBoZWFkZXJGaWVsZHMoV1RG
TW92ZShoZWFkZXJGaWVsZHMpKSB7IH0KKworICAgIEhUVFBSZXNwb25zZShjb25zdCBIVFRQUmVz
cG9uc2UmKSA9IGRlZmF1bHQ7CisgICAgSFRUUFJlc3BvbnNlKEhUVFBSZXNwb25zZSYmKSA9IGRl
ZmF1bHQ7CisgICAgSFRUUFJlc3BvbnNlKCkgPSBkZWZhdWx0OworICAgIEhUVFBSZXNwb25zZSYg
b3BlcmF0b3I9KGNvbnN0IEhUVFBSZXNwb25zZSYpID0gZGVmYXVsdDsKKyAgICBIVFRQUmVzcG9u
c2UmIG9wZXJhdG9yPShIVFRQUmVzcG9uc2UmJikgPSBkZWZhdWx0OworICAgIAorICAgIFN0cmlu
ZyBib2R5OworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGhlYWRlckZpZWxkczsKK307CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19G
UkFNRVdPUkspCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShu
b25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgorCisjaWYgSEFWRShORVRXT1JLX0ZSQU1F
V09SSykKKworI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworSFRUUFNl
cnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywg
SFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzKQorICAgIDogbV9yZXF1ZXN0UmVzcG9uc2VNYXAoW10o
c3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBS
ZXNwb25zZT4+IGxpc3QpIHsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhU
VFBSZXNwb25zZT4gbWFwOworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBsaXN0KQorICAgICAg
ICAgICAgbWFwLmFkZChwYWlyLmZpcnN0LCBwYWlyLnNlY29uZCk7CisgICAgICAgIHJldHVybiBt
YXA7CisgICAgfShyZXNwb25zZXMpKQoreworICAgIGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMo
bndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJlX3RjcChOV19QQVJBTUVURVJTX0RJU0FCTEVfUFJP
VE9DT0wsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7CisgICAgbV9saXN0
ZW5lciA9IGFkb3B0TlMobndfbGlzdGVuZXJfY3JlYXRlKHBhcmFtZXRlcnMuZ2V0KCkpKTsKKyAg
ICBud19saXN0ZW5lcl9zZXRfcXVldWUobV9saXN0ZW5lci5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSk7CisgICAgbndfbGlzdGVuZXJfc2V0X25ld19jb25uZWN0aW9uX2hhbmRsZXIo
bV9saXN0ZW5lci5nZXQoKSwgXihud19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikgeworICAgICAg
ICBud19jb25uZWN0aW9uX3NldF9xdWV1ZShjb25uZWN0aW9uLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpKTsKKyAgICAgICAgbndfY29ubmVjdGlvbl9zdGFydChjb25uZWN0aW9uKTsKKyAgICAg
ICAgcmVzcG9uZFRvUmVxdWVzdHMoY29ubmVjdGlvbik7CisgICAgfSk7CisgICAgbndfbGlzdGVu
ZXJfc3RhcnQobV9saXN0ZW5lci5nZXQoKSk7Cit9CisKK3ZvaWQgSFRUUFNlcnZlcjo6cmVzcG9u
ZFRvUmVxdWVzdHMobndfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCit7CisgICAgbndfY29ubmVj
dGlvbl9yZWNlaXZlKGNvbm5lY3Rpb24sIDEsIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+
OjptYXgoKSwgXihkaXNwYXRjaF9kYXRhX3QgY29udGVudCwgbndfY29udGVudF9jb250ZXh0X3Qg
Y29udGV4dCwgYm9vbCBjb21wbGV0ZSwgbndfZXJyb3JfdCBlcnJvcikgeworICAgICAgICBBU1NF
UlQoIWVycm9yKTsKKyAgICAgICAgaWYgKCFjb250ZW50KQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBfX2Jsb2NrIFZlY3RvcjxjaGFyPiByZXF1ZXN0OworICAgICAgICBkaXNwYXRjaF9k
YXRhX2FwcGx5KGNvbnRlbnQsIF5ib29sKGRpc3BhdGNoX2RhdGFfdCwgc2l6ZV90LCBjb25zdCB2
b2lkKiBidWZmZXIsIHNpemVfdCBzaXplKSB7CisgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYnVmZmVyKSwgc2l6ZSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKDApOworCisgICAg
ICAgIGNvbnN0IGNoYXIqIHBhdGhQcmVmaXggPSAiR0VUICI7CisgICAgICAgIGNvbnN0IGNoYXIq
IHBhdGhTdWZmaXggPSAiIEhUVFAvMS4xXHJcbiI7CisgICAgICAgIGNvbnN0IGNoYXIqIHBhdGhF
bmQgPSBzdHJzdHIocmVxdWVzdC5kYXRhKCksIHBhdGhTdWZmaXgpOworICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKHBhdGhFbmQsICJIVFRQU2VydmVyIGFzc3VtZXMgcmVxdWVzdCBpcyBIVFRQ
IDEuMSIpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtZW1jbXAocmVxdWVzdC5kYXRh
KCksIHBhdGhQcmVmaXgsIHN0cmxlbihwYXRoUHJlZml4KSksICJIVFRQU2VydmVyIGFzc3VtZXMg
cmVxdWVzdCBpcyBHRVQiKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzdHJzdHIocmVx
dWVzdC5kYXRhKCksICJcclxuXHJcbiIpLCAiSFRUUFNlcnZlciBhc3N1bWVzIGVudGlyZSBIVFRQ
IHJlcXVlc3QgaXMgcmVjZWl2ZWQgYXQgb25jZSIpOworICAgICAgICBzaXplX3QgcGF0aExlbmd0
aCA9IHBhdGhFbmQgLSByZXF1ZXN0LmRhdGEoKSAtIHN0cmxlbihwYXRoUHJlZml4KTsKKyAgICAg
ICAgU3RyaW5nIHBhdGgocmVxdWVzdC5kYXRhKCkgKyBzdHJsZW4ocGF0aFByZWZpeCksIHBhdGhM
ZW5ndGgpOworICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcmVxdWVzdFJlc3BvbnNlTWFw
LmNvbnRhaW5zKHBhdGgpLCAiVGhpcyBIVFRQU2VydmVyIGRvZXMgbm90IGtub3cgaG93IHRvIHJl
c3BvbmQgdG8gYSByZXF1ZXN0IGZvciAlcyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IAorICAgICAgICBhdXRvIHJlc3BvbnNlID0gbV9yZXF1ZXN0UmVzcG9uc2VNYXAuZ2V0KHBhdGgp
OworICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3BvbnNlQnVpbGRlcjsKKyAgICAgICAgcmVzcG9u
c2VCdWlsZGVyLmFwcGVuZCgiSFRUUC8xLjEgMjAwIE9LXHJcbkNvbnRlbnQtTGVuZ3RoOiAiKTsK
KyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZE51bWJlcihyZXNwb25zZS5ib2R5Lmxlbmd0
aCgpKTsKKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiByZXNwb25zZS5oZWFkZXJGaWVsZHMpIHsKKyAgICAgICAgICAgIHJl
c3BvbnNlQnVpbGRlci5hcHBlbmQocGFpci5rZXkpOworICAgICAgICAgICAgcmVzcG9uc2VCdWls
ZGVyLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQocGFp
ci52YWx1ZSk7CisgICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJcclxuIik7Cisg
ICAgICAgIH0KKyAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOworICAgICAg
ICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKHJlc3BvbnNlLmJvZHkpOworICAgICAgICBhdXRvIHJl
c3BvbnNlQm9keUFuZEhlYWRlciA9IHJlc3BvbnNlQnVpbGRlci50b1N0cmluZygpLnJlbGVhc2VJ
bXBsKCk7CisgICAgICAgIGF1dG8gcmVzcG9uc2VEYXRhID0gYWRvcHROUyhkaXNwYXRjaF9kYXRh
X2NyZWF0ZShyZXNwb25zZUJvZHlBbmRIZWFkZXItPmNoYXJhY3RlcnM4KCksIHJlc3BvbnNlQm9k
eUFuZEhlYWRlci0+bGVuZ3RoKCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAg
ICAgICAgICAodm9pZClyZXNwb25zZUJvZHlBbmRIZWFkZXI7CisgICAgICAgIH0pKTsKKyAgICAg
ICAgbndfY29ubmVjdGlvbl9zZW5kKGNvbm5lY3Rpb24sIHJlc3BvbnNlRGF0YS5nZXQoKSwgY29u
dGV4dCwgdHJ1ZSwgXihud19lcnJvcl90IGVycm9yKSB7CisgICAgICAgICAgICBBU1NFUlQoIWVy
cm9yKTsKKyAgICAgICAgICAgIHJlc3BvbmRUb1JlcXVlc3RzKGNvbm5lY3Rpb24pOworICAgICAg
ICB9KTsKKyAgICB9KTsKK30KKwordWludDE2X3QgSFRUUFNlcnZlcjo6cG9ydCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG53X2xpc3RlbmVyX2dldF9wb3J0KG1fbGlzdGVuZXIuZ2V0KCkpOworfQor
CitOU1VSTFJlcXVlc3QgKkhUVFBTZXJ2ZXI6OnJlcXVlc3QoKSBjb25zdAoreworICAgIHJldHVy
biBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBwb3J0KCldXV07
Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIEhBVkUoTkVU
V09SS19GUkFNRVdPUkspCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>