<?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>197800</bug_id>
          
          <creation_ts>2019-05-10 15:04:05 -0700</creation_ts>
          <short_desc>Add a unit test for client certificate authentication</short_desc>
          <delta_ts>2019-07-11 16:40:04 -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>Tools / Tests</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>197887</dependson>
    
    <dependson>197989</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>sroberts</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1535201</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-05-10 15:04:05 -0700</bug_when>
    <thetext>Add a unit test for client certificate authentication</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535221</commentid>
    <comment_count>1</comment_count>
      <attachid>369609</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-05-10 16:02:46 -0700</bug_when>
    <thetext>Created attachment 369609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535222</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-10 16:04:03 -0700</bug_when>
    <thetext>Attachment 369609 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/TCPServer.cpp:44:  Declaration has space between type name and * in X509 *cert  [whitespace/declaration] [3]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535224</commentid>
    <comment_count>3</comment_count>
      <attachid>369610</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-05-10 16:06:28 -0700</bug_when>
    <thetext>Created attachment 369610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535293</commentid>
    <comment_count>4</comment_count>
      <attachid>369630</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-05-10 18:23:05 -0700</bug_when>
    <thetext>Created attachment 369630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1535874</commentid>
    <comment_count>5</comment_count>
      <attachid>369630</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-05-13 16:55:59 -0700</bug_when>
    <thetext>Comment on attachment 369630
Patch

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

&gt; Tools/TestWebKitAPI/TCPServer.cpp:282
&gt; +    EXPECT_TRUE(static_cast&lt;size_t&gt;(bytesRead) &lt; sizeof(buffer));

These tests seem a bit strange since they are not test per-se but test infra.
It looks like it should be ASSERT(...)

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:43
&gt; +    RetainPtr&lt;SecCertificateRef&gt; certificate = adoptCF(SecCertificateCreateWithData(nullptr, (__bridge CFDataRef)[NSData dataWithBytes:certificateBytes.data() length:certificateBytes.size()]));

auto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:45
&gt; +    Vector&lt;uint8_t&gt; privateKeyBytes = TestWebKitAPI::TCPServer::testPrivateKey();

auto here and below.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:58
&gt; +    RetainPtr&lt;SecIdentityRef&gt; identity = adoptCF(SecIdentityCreate(kCFAllocatorDefault, certificate.get(), privateKey.get()));

auto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/Challenge.mm:157
&gt; +    EXPECT_EQ([delegate challengeCount], 2ull);

We could check that we first receive a server trust challenge and then a client certificate challenge.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PDFLinkReferrer.mm:79
&gt; +        Vector&lt;uint8_t&gt; request = TCPServer::read(socket);

auto

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PDFLinkReferrer.mm:82
&gt; +        const char* currentLine = reinterpret_cast&lt;char*&gt;(request.data());

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536054</commentid>
    <comment_count>6</comment_count>
      <attachid>369849</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-05-14 08:16:13 -0700</bug_when>
    <thetext>Created attachment 369849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536060</commentid>
    <comment_count>7</comment_count>
      <attachid>369849</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-14 08:49:41 -0700</bug_when>
    <thetext>Comment on attachment 369849
Patch

Clearing flags on attachment: 369849

Committed r245281: &lt;https://trac.webkit.org/changeset/245281&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536061</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-14 08:49:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536062</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-14 08:50:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/50768065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536119</commentid>
    <comment_count>10</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-05-14 10:09:37 -0700</bug_when>
    <thetext>This broke the API Test TestWebKitAPI.Challenge.ClientCertificate, as reported by EWS for API test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536143</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-14 11:06:34 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 197887</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536915</commentid>
    <comment_count>12</comment_count>
      <attachid>370070</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-05-16 14:29:06 -0700</bug_when>
    <thetext>Created attachment 370070
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536952</commentid>
    <comment_count>13</comment_count>
      <attachid>370070</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-16 16:08:53 -0700</bug_when>
    <thetext>Comment on attachment 370070
patch

Clearing flags on attachment: 370070

Committed r245418: &lt;https://trac.webkit.org/changeset/245418&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536954</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-16 16:08:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537112</commentid>
    <comment_count>15</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-05-17 08:19:50 -0700</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/245418/webkit

has caused API test TestWebKitAPI.Challenge.ClientCertificate to crash on Mojave.

Build:
https://build.webkit.org/builders/Apple%20Mojave%20Release%20WK2%20%28Tests%29/builds/4171</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537146</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-17 10:19:34 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 197989</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537174</commentid>
    <comment_count>17</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-05-17 11:25:14 -0700</bug_when>
    <thetext>Rolled out in https://trac.webkit.org/changeset/245468/webkit 

Causing API crashes on testers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546184</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-19 12:29:14 -0700</bug_when>
    <thetext>Relanded with the test disabled in http://trac.webkit.org/r246605</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546461</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-06-20 00:35:15 -0700</bug_when>
    <thetext>&gt; Relanded with the test disabled in http://trac.webkit.org/r246605

Can you elaborate? Generally, this is grounds for immediate rollback, and that is even more so in a bug whose title is &quot;Add a unit test for client certificate authentication&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546601</commentid>
    <comment_count>20</comment_count>
      <attachid>370070</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-20 11:54:13 -0700</bug_when>
    <thetext>Comment on attachment 370070
patch

I needed to use the infrastructure that was developed for this test for another test, so I landed the code.  Since the test itself crashed for an unknown reason on the bots the other times I tried to commit this, I disabled it while I look into the reason.  If you would like I could remove the Challenge.ClientCertificate API test, but I need the other cleanups for other things.

The needed code changes were moving utility functions to TCPServer.cpp, and moving declarations to SecuritySPI.h is also a good cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1546674</commentid>
    <comment_count>21</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-06-20 15:00:14 -0700</bug_when>
    <thetext>http://trac.webkit.org/r246654</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1552284</commentid>
    <comment_count>22</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-11 16:40:04 -0700</bug_when>
    <thetext>Enabling in https://bugs.webkit.org/show_bug.cgi?id=199735</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369609</attachid>
            <date>2019-05-10 16:02:46 -0700</date>
            <delta_ts>2019-05-10 16:06:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197800-20190510160245.patch</filename>
            <type>text/plain</type>
            <size>43081</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDUxNzIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA1LTEwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGEgdW5pdCB0ZXN0IGZvciBj
bGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oOgor
ICAgICAgICBNb3ZlIGRlY2xhcmF0aW9ucyBmcm9tIEFyZ3VtZW50Q29kZXJzQ0YuY3BwIHNvIHRo
ZXkgY2FuIGJlIHNoYXJlZC4KKwogMjAxOS0wNS0wOCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIFJld29yayBXUEUgUnVuTG9vcFNvdXJjZVBy
aW9yaXR5IHZhbHVlcwpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgJ
KHJldmlzaW9uIDI0NTE3MikKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMCBAQAogCiAjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKIAorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0FjY2Vzc0NvbnRyb2xQcml2Lmg+
CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQ2VydGlmaWNhdGVQcml2Lmg+CisjaW5jbHVkZSA8U2Vj
dXJpdHkvU2VjSWRlbnRpdHlQcml2Lmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjS2V5UHJpdi5o
PgogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY1Rhc2suaD4KICNpbmNsdWRlIDxTZWN1cml0eS9TZWNU
cnVzdFByaXYuaD4KIApAQCAtNjAsMTQgKzYzLDIxIEBAIFdURl9FWFRFUk5fQ19FTkQKIAogI2Vu
ZGlmCiAKLXR5cGVkZWYgc3RydWN0IF9fU2VjVGFzayAqU2VjVGFza1JlZjsKLXR5cGVkZWYgc3Ry
dWN0IF9fU2VjVHJ1c3QgKlNlY1RydXN0UmVmOwordHlwZWRlZiBzdHJ1Y3QgX19TZWNLZXkqIFNl
Y0tleVJlZjsKK3R5cGVkZWYgc3RydWN0IF9fU2VjVGFzayogU2VjVGFza1JlZjsKK3R5cGVkZWYg
c3RydWN0IF9fU2VjVHJ1c3QqIFNlY1RydXN0UmVmOwordHlwZWRlZiBzdHJ1Y3QgX19TZWNJZGVu
dGl0eSogU2VjSWRlbnRpdHlSZWY7Cit0eXBlZGVmIHN0cnVjdCBfX1NlY0NlcnRpZmljYXRlKiBT
ZWNDZXJ0aWZpY2F0ZVJlZjsKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKIFNlY1Rhc2tSZWYgU2Vj
VGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKENGQWxsb2NhdG9yUmVmLCBhdWRpdF90b2tlbl90KTsK
IFNlY1Rhc2tSZWYgU2VjVGFza0NyZWF0ZUZyb21TZWxmKENGQWxsb2NhdG9yUmVmKTsKLUNGVHlw
ZVJlZiBTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQoU2VjVGFza1JlZiwgQ0ZTdHJpbmdS
ZWYgZW50aXRsZW1lbnQsIENGRXJyb3JSZWYgKik7CitDRlR5cGVSZWYgU2VjVGFza0NvcHlWYWx1
ZUZvckVudGl0bGVtZW50KFNlY1Rhc2tSZWYsIENGU3RyaW5nUmVmIGVudGl0bGVtZW50LCBDRkVy
cm9yUmVmKik7CitTZWNJZGVudGl0eVJlZiBTZWNJZGVudGl0eUNyZWF0ZShDRkFsbG9jYXRvclJl
ZiwgU2VjQ2VydGlmaWNhdGVSZWYsIFNlY0tleVJlZik7CitPU1N0YXR1cyBTZWNLZXlGaW5kV2l0
aFBlcnNpc3RlbnRSZWYoQ0ZEYXRhUmVmIHBlcnNpc3RlbnRSZWYsIFNlY0tleVJlZiogbG9va2Vk
VXBEYXRhKTsKK1NlY0FjY2Vzc0NvbnRyb2xSZWYgU2VjQWNjZXNzQ29udHJvbENyZWF0ZUZyb21E
YXRhKENGQWxsb2NhdG9yUmVmLCBDRkRhdGFSZWYsIENGRXJyb3JSZWYqKTsKK0NGRGF0YVJlZiBT
ZWNBY2Nlc3NDb250cm9sQ29weURhdGEoU2VjQWNjZXNzQ29udHJvbFJlZik7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQXNuMVR5cGVzLmg+CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjQ1MTcyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNS0xMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIHVuaXQgdGVzdCBmb3IgY2xp
ZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcDoK
KyAgICAgICAgTW92ZSBTUEkgZGVjbGFyYXRpb25zIHRvIFNlY3VyaXR5U1BJLmguCisKIDIwMTkt
MDUtMDkgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBMaW1pdCBudW1i
ZXIgb2YgcHJlZmV0Y2hlcyBvZiBhIGdpdmVuIHBhZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCShyZXZpc2lvbiAyNDUxNzIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsMjkgKzQxLDYgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2Vu
ZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFNlY3VyaXR5L1Nl
Y0lkZW50aXR5UHJpdi5oPgotI2VuZGlmCi0KLWV4dGVybiAiQyIgU2VjSWRlbnRpdHlSZWYgU2Vj
SWRlbnRpdHlDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBTZWNDZXJ0aWZpY2F0ZVJl
ZiBjZXJ0aWZpY2F0ZSwgU2VjS2V5UmVmIHByaXZhdGVLZXkpOwotCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFNlY3VyaXR5
L1NlY0tleVByaXYuaD4KLSNlbmRpZgotCi1leHRlcm4gIkMiIE9TU3RhdHVzIFNlY0tleUZpbmRX
aXRoUGVyc2lzdGVudFJlZihDRkRhdGFSZWYgcGVyc2lzdGVudFJlZiwgU2VjS2V5UmVmKiBsb29r
ZWRVcERhdGEpOwotI2VuZGlmCi0KLSNpZiBIQVZFKFNFQ19BQ0NFU1NfQ09OVFJPTCkKLSNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0FjY2Vzc0NvbnRy
b2xQcml2Lmg+Ci0jZW5kaWYKLQotZXh0ZXJuICJDIiBTZWNBY2Nlc3NDb250cm9sUmVmIFNlY0Fj
Y2Vzc0NvbnRyb2xDcmVhdGVGcm9tRGF0YShDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGF0
YVJlZiBkYXRhLCBDRkVycm9yUmVmICplcnJvcik7Ci1leHRlcm4gIkMiIENGRGF0YVJlZiBTZWNB
Y2Nlc3NDb250cm9sQ29weURhdGEoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NfY29udHJvbCk7
Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJ
bmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjQ1MTk3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDIgQEAKKzIwMTktMDUtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBBZGQgYSB1bml0IHRlc3QgZm9yIGNsaWVudCBjZXJ0aWZpY2F0
ZSBhdXRoZW50aWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk3ODAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBiZXR0ZXIgYWJzdHJhY3Rpb25zIGZvciByZWFkaW5nIGFuZCB3cml0aW5n
IGZyb20vdG8gVENQU2VydmVyLgorICAgICAgICBBZGQgYSB1bml0IHRlc3QgdGhhdCBjYXVzZXMg
YSBjbGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIHRvIGhhcHBlbi4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRDUFNlcnZlcjo6VENQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRDUFNlcnZlcjo6cmVhZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6Ondy
aXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFs
bGVuZ2VUaGVuT0spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjpyZXNwb25k
V2l0aE9LKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tOgorICAgICAgICAo
Y3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAgICAgICgtW0NoYWxsZW5nZURlbGVnYXRlIHdl
YlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW0NsaWVudENlcnRpZmljYXRlRGVsZWdh
dGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtDbGllbnRDZXJ0
aWZpY2F0ZURlbGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtDbGllbnRDZXJ0aWZpY2F0ZURlbGVn
YXRlIGNoYWxsZW5nZUNvdW50XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTogRGVsZXRlZC4KKyAgICAgICAgKGNy
ZWRlbnRpYWxXaXRoSWRlbnRpdHlBbmRLZXljaGFpblBhdGgpOiBEZWxldGVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGTGlua1JlZmVycmVyLm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm94eS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW06CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKHJlYWRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKHdy
aXRlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5P
Syk6IERlbGV0ZWQuCisKIDIwMTktMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBEbyBub3Qgd2FpdCB1bnRpbCByZXF1ZXN0UGVybWlzc2lvbigpIGlzIGNh
bGxlZCB0byBmaXJlIGRldmljZW9yaWVudGF0aW9uIGV2ZW50cyBpZiBwZXJtaXNzaW9uIHdhcyBh
bHJlYWR5IGdyYW50ZWQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAJKHJldmlzaW9u
IDI0NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHRocmVhZD4KICNpbmNsdWRlIDx1bmlz
dGQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9CYXNl
NjQuaD4KIAogZXh0ZXJuICJDIiB7CiAKQEAgLTM4LDYgKzM5LDEwIEBAIHN0cnVjdCBYNTA5Owog
c3RydWN0IFNTTF9DVFg7CiBzdHJ1Y3QgRVZQX1BLRVk7CiBzdHJ1Y3QgU1NMX01FVEhPRDsKK3N0
cnVjdCBYNTA5X1NUT1JFX0NUWCB7CisgICAgdm9pZCogdW51c2VkOworICAgIFg1MDkgKmNlcnQ7
Cit9Owogc3RydWN0IHBlbV9wYXNzd29yZF9jYjsKIGludCBCSU9fZnJlZShCSU8qKTsKIGludCBT
U0xfZnJlZShTU0wqKTsKQEAgLTU2LDYgKzYxLDE1IEBAIGludCBTU0xfQ1RYX3VzZV9Qcml2YXRl
S2V5KFNTTF9DVFgqLCBFVlAKIFNTTCogU1NMX25ldyhTU0xfQ1RYKik7CiBpbnQgU1NMX2FjY2Vw
dChTU0wqKTsKIGludCBTU0xfc2V0X2ZkKFNTTCosIGludCk7Cit2b2lkIFNTTF9DVFhfc2V0X3Zl
cmlmeShTU0xfQ1RYKiwgaW50LCBpbnQgKCopKGludCwgWDUwOV9TVE9SRV9DVFggKikpOwordm9p
ZCBTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjayhTU0xfQ1RYKiwgaW50ICgqKShYNTA5
X1NUT1JFX0NUWCosIHZvaWQqKSwgdm9pZCopOworaW50IFNTTF9nZXRfZXJyb3IoY29uc3QgU1NM
KiwgaW50KTsKK2ludCBTU0xfcmVhZChTU0wqLCB2b2lkKiwgaW50KTsKK2ludCBTU0xfd3JpdGUo
U1NMKiwgY29uc3Qgdm9pZCosIGludCk7CitpbnQgaTJkX1g1MDkoWDUwOSosIHVuc2lnbmVkIGNo
YXIqKik7Cit2b2lkIE9QRU5TU0xfZnJlZSh2b2lkKik7CisjZGVmaW5lIFNTTF9WRVJJRllfUEVF
UiAweDAxCisjZGVmaW5lIFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQgMHgwMgogCiB9
IC8vIGV4dGVybiAiQyIKIApAQCAtOTIsNiArMTA2LDEyIEBAIHRlbXBsYXRlPD4gc3RydWN0IGRl
bGV0ZXI8RVZQX1BLRVk+IHsKICAgICAgICAgRVZQX1BLRVlfZnJlZShrZXkpOwogICAgIH0KIH07
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPHVpbnQ4X3RbXT4geworICAgIHZvaWQgb3BlcmF0
b3IoKSh1aW50OF90KiBidWZmZXIpCisgICAgeworICAgICAgICBPUEVOU1NMX2ZyZWUoYnVmZmVy
KTsKKyAgICB9Cit9OwogCiBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihGdW5jdGlvbjx2b2lkKFNvY2tl
dCk+JiYgY29ubmVjdGlvbkhhbmRsZXIsIHNpemVfdCBjb25uZWN0aW9ucykKICAgICA6IG1fY29u
bmVjdGlvbkhhbmRsZXIoV1RGTW92ZShjb25uZWN0aW9uSGFuZGxlcikpCkBAIC0xMDEsNyArMTIx
LDcgQEAgVENQU2VydmVyOjpUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChTb2NrZQogCiBUQ1BTZXJ2
ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBz
ZWN1cmVDb25uZWN0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIHN0YXJ0U2VjdXJlQ29ubmVjdGlv
biA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VjdXJlQ29ubmVjdGlvbkhh
bmRsZXIpXSAoU29ja2V0IHNvY2tldCkgeworICAgIGF1dG8gc3RhcnRTZWN1cmVDb25uZWN0aW9u
ID0gW3NlY3VyZUNvbm5lY3Rpb25IYW5kbGVyID0gV1RGTW92ZShzZWN1cmVDb25uZWN0aW9uSGFu
ZGxlciksIHByb3RvY29sXSAoU29ja2V0IHNvY2tldCkgewogICAgICAgICBTU0xfbGlicmFyeV9p
bml0KCk7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNTTF9DVFgsIGRlbGV0ZXI8U1NMX0NU
WD4+IGN0eChTU0xfQ1RYX25ldyhTU0x2MjNfc2VydmVyX21ldGhvZCgpKSk7CkBAIC0xMjksNiAr
MTQ5LDIwIEBAIFRDUFNlcnZlcjo6VENQU2VydmVyKFByb3RvY29sIHByb3RvY29sLCAKICAgICAg
ICAgQVNTRVJUKGNlcnRYNTA5KTsKICAgICAgICAgU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoY3R4
LmdldCgpLCBjZXJ0WDUwOS5nZXQoKSk7CiAKKyAgICAgICAgaWYgKHByb3RvY29sID09IFByb3Rv
Y29sOjpIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QpIHsKKyAgICAgICAgICAgIFNT
TF9DVFhfc2V0X3ZlcmlmeShjdHguZ2V0KCksIFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllf
RkFJTF9JRl9OT19QRUVSX0NFUlQsIG51bGxwdHIpOworICAgICAgICAgICAgU1NMX0NUWF9zZXRf
Y2VydF92ZXJpZnlfY2FsbGJhY2soY3R4LmdldCgpLCBbXSAoWDUwOV9TVE9SRV9DVFgqIHN0b3Jl
X2N0eCwgdm9pZCopIC0+IGludCB7CisgICAgICAgICAgICAgICAgdWludDhfdCogYnVmZmVyUG9p
bnRlciA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgYXV0byBsZW5ndGggPSBpMmRfWDUwOShz
dG9yZV9jdHgtPmNlcnQsICZidWZmZXJQb2ludGVyKTsKKyAgICAgICAgICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8dWludDhfdFtdLCBkZWxldGVyPHVpbnQ4X3RbXT4+IGJ1ZmZlcihidWZmZXJQb2lu
dGVyKTsKKyAgICAgICAgICAgICAgICBhdXRvIGV4cGVjdGVkQ2VydCA9IHRlc3RDZXJ0aWZpY2F0
ZSgpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KGV4cGVjdGVk
Q2VydC5zaXplKCkpLCBsZW5ndGgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9FUShidWZmZXIuZ2V0
KClbaV0sIGV4cGVjdGVkQ2VydFtpXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAg
ICAgICAgICB9LCBudWxscHRyKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFRoaXMgaXMgYSB0
ZXN0IGtleSBmcm9tIEJvcmluZ1NTTC4KICAgICAgICAgY2hhciBrS2V5UEVNW10gPQogICAgICAg
ICAiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLVxuIgpAQCAtMTY0LDYgKzE5OCw3IEBA
IFRDUFNlcnZlcjo6VENQU2VydmVyKFByb3RvY29sIHByb3RvY29sLCAKIAogICAgIHN3aXRjaCAo
cHJvdG9jb2wpIHsKICAgICBjYXNlIFByb3RvY29sOjpIVFRQUzoKKyAgICBjYXNlIFByb3RvY29s
OjpIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3Q6CiAgICAgICAgIG1fY29ubmVjdGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKHN0YXJ0U2VjdXJlQ29ubmVjdGlvbik7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUHJvdG9jb2w6OkhUVFBTUHJveHk6CkBAIC0yMzksNCArMjc0LDE4MiBAQCBh
dXRvIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3RlbihzaXplX3QgCiAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIH0KIAordGVtcGxhdGU8PiBWZWN0b3I8dWludDhfdD4gVENQU2VydmVyOjpyZWFk
KFNvY2tldCBzb2NrZXQpCit7CisgICAgdWludDhfdCBidWZmZXJbMTAwMF07CisgICAgYXV0byBi
eXRlc1JlYWQgPSA6OnJlYWQoc29ja2V0LCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKKyAgICBF
WFBFQ1RfR1QoYnl0ZXNSZWFkLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxzaXpl
X3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YoYnVmZmVyKSk7CisKKyAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yOworICAgIHZlY3Rvci5hcHBlbmQoYnVmZmVyLCBieXRlc1JlYWQpOworICAgIHJldHVy
biB2ZWN0b3I7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBUQ1BTZXJ2ZXI6OndyaXRlKFNvY2tldCBz
b2NrZXQsIGNvbnN0IHZvaWQqIHJlc3BvbnNlLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGF1dG8g
Ynl0ZXNXcml0dGVuID0gOjp3cml0ZShzb2NrZXQsIHJlc3BvbnNlLCBsZW5ndGgpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIGxlbmd0aCk7Cit9CisK
K3RlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVhZChTU0wqIHNzbCkKK3sK
KyAgICB1aW50OF90IGJ1ZmZlclsxMDAwXTsKKyAgICBhdXRvIGJ5dGVzUmVhZCA9IFNTTF9yZWFk
KHNzbCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwg
MCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6
ZW9mKGJ1ZmZlcikpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKKyAgICB2ZWN0b3Iu
YXBwZW5kKGJ1ZmZlciwgYnl0ZXNSZWFkKTsKKyAgICByZXR1cm4gdmVjdG9yOworfQorCit0ZW1w
bGF0ZTw+IHZvaWQgVENQU2VydmVyOjp3cml0ZShTU0wqIHNzbCwgY29uc3Qgdm9pZCogcmVzcG9u
c2UsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXV0byBieXRlc1dyaXR0ZW4gPSBTU0xfd3JpdGUo
c3NsLCByZXNwb25zZSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90
PihieXRlc1dyaXR0ZW4pLCBsZW5ndGgpOworfQorCit2b2lkIFRDUFNlcnZlcjo6cmVzcG9uZFdp
dGhDaGFsbGVuZ2VUaGVuT0soU29ja2V0IHNvY2tldCkKK3sKKyAgICByZWFkKHNvY2tldCk7Cisg
ICAgCisgICAgY29uc3QgY2hhciogY2hhbGxlbmdlSGVhZGVyID0KKyAgICAiSFRUUC8xLjEgNDAx
IFVuYXV0aG9yaXplZFxyXG4iCisgICAgIkRhdGU6IFNhdCwgMjMgTWFyIDIwMTkgMDY6Mjk6MDEg
R01UXHJcbiIKKyAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuIgorICAgICJXV1ctQXV0aGVudGlj
YXRlOiBCYXNpYyByZWFsbT1cInRlc3RyZWFsbVwiXHJcblxyXG4iOworICAgIHdyaXRlKHNvY2tl
dCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJsZW4oY2hhbGxlbmdlSGVhZGVyKSk7CisgICAgCisgICAg
cmVhZChzb2NrZXQpOworICAgIAorICAgIGNvbnN0IGNoYXIqIHJlc3BvbnNlSGVhZGVyID0KKyAg
ICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAiQ29udGVudC1MZW5ndGg6IDEzXHJcblxyXG4i
CisgICAgIkhlbGxvLCBXb3JsZCEiOworICAgIHdyaXRlKHNvY2tldCwgcmVzcG9uc2VIZWFkZXIs
IHN0cmxlbihyZXNwb25zZUhlYWRlcikpOworfQorCit2b2lkIFRDUFNlcnZlcjo6cmVzcG9uZFdp
dGhPSyhTU0wqIHNzbCkKK3sKKyAgICByZWFkKHNzbCk7CisgICAgCisgICAgY29uc3QgY2hhciog
cmVwbHkgPSAiIgorICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICJDb250ZW50LUxlbmd0
aDogMzRcclxuXHJcbiIKKyAgICAiPHNjcmlwdD5hbGVydCgnc3VjY2VzcyEnKTwvc2NyaXB0PiI7
CisgICAgd3JpdGUoc3NsLCByZXBseSwgc3RybGVuKHJlcGx5KSk7Cit9CisKK1ZlY3Rvcjx1aW50
OF90PiBUQ1BTZXJ2ZXI6OnRlc3RDZXJ0aWZpY2F0ZSgpCit7CisgICAgLy8gQ2VydGlmaWNhdGUg
YW5kIHByaXZhdGUga2V5IHdlcmUgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhpcyBjb21tYW5kOgor
ICAgIC8vIG9wZW5zc2wgcmVxIC14NTA5IC1uZXdrZXkgcnNhOjQwOTYgLWtleW91dCBrZXkucGVt
IC1vdXQgY2VydC5wZW0gLWRheXMgMzY1IC1ub2RlcworICAgIC8vIGFuZCBlbnRlcmluZyB0aGlz
IGluZm9ybWF0aW9uOgorICAgIC8qCisgICAgIENvdW50cnkgTmFtZSAoMiBsZXR0ZXIgY29kZSkg
W106VVMKKyAgICAgU3RhdGUgb3IgUHJvdmluY2UgTmFtZSAoZnVsbCBuYW1lKSBbXTpOZXcgTWV4
aWNvCisgICAgIExvY2FsaXR5IE5hbWUgKGVnLCBjaXR5KSBbXTpTYW50YSBGZQorICAgICBPcmdh
bml6YXRpb24gTmFtZSAoZWcsIGNvbXBhbnkpIFtdOlNlbGYKKyAgICAgT3JnYW5pemF0aW9uYWwg
VW5pdCBOYW1lIChlZywgc2VjdGlvbikgW106TXlzZWxmCisgICAgIENvbW1vbiBOYW1lIChlZywg
ZnVsbHkgcXVhbGlmaWVkIGhvc3QgbmFtZSkgW106TWUKKyAgICAgRW1haWwgQWRkcmVzcyBbXTpt
ZUBleGFtcGxlLmNvbQorICAgICAqLworICAgIAorICAgIFN0cmluZyBwZW1FbmNvZGVkQ2VydGlm
aWNhdGUoIiIKKyAgICAiTUlJRmdEQ0NBMmdDQ1FDS0hpUFJVNU1RdURBTkJna3Foa2lHOXcwQkFR
c0ZBRENCZ1RFTE1Ba0dBMVVFQmhNQyIKKyAgICAiVlZNeEV6QVJCZ05WQkFnTUNrNWxkeUJOWlho
cFkyOHhFVEFQQmdOVkJBY01DRk5oYm5SaElFWmxNUTB3Q3dZRCIKKyAgICAiVlFRS0RBUlRaV3ht
TVE4d0RRWURWUVFMREFaTmVYTmxiR1l4Q3pBSkJnTlZCQU1NQWsxbE1SMHdHd1lKS29aSSIKKyAg
ICAiaHZjTkFRa0JGZzV0WlVCbGVHRnRjR3hsTG1OdmJUQWVGdzB4T1RBek1qTXdOVFV3TVRSYUZ3
MHlNREF6TWpJdyIKKyAgICAiTlRVd01UUmFNSUdCTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFV
RUNBd0tUbVYzSUUxbGVHbGpiekVSTUE4RyIKKyAgICAiQTFVRUJ3d0lVMkZ1ZEdFZ1JtVXhEVEFM
QmdOVkJBb01CRk5sYkdZeER6QU5CZ05WQkFzTUJrMTVjMlZzWmpFTCIKKyAgICAiTUFrR0ExVUVB
d3dDVFdVeEhUQWJCZ2txaGtpRzl3MEJDUUVXRG0xbFFHVjRZVzF3YkdVdVkyOXRNSUlDSWpBTiIK
KyAgICAiQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBM3JoTjRTUGc4VlkvUHRH
RE5LWTNUOUpJU2dieSIKKyAgICAiOFlHTUp4MHZPK1laRlptM0czZnNUVXN5dkR5RUh3cXA1YWJD
WlJCL0J5MVB3V2tOcmZ4bi9YUDhQMDM0SlBsRSIKKyAgICAiNmlyVml1QVlRcnFVaDZrN1pSOENw
T001R0VjUlpnQVVKR0dRd05sT2tFd2FIbk1HYzhTc0h1cmdEUGg1WEJwZyIKKyAgICAiYkR5dGQ3
Qkp1QjFOb0kvS0ptaGNhamtBdVYzdmFyUyt1UExvZlBITnFlK2NMOGhObmpaUXdIV2FyUDQ1a3M0
ZSIKKyAgICAiQmNPRDd0d3F4dUhuVm0vRldFcnBZOFdzNXMxTXJQVGhVZERhaGpFTWYrWWZESjlL
TDh5MzA0eVM4SjhmZUN4WSIKKyAgICAiZmNINEJ2Z0x0Sm1CTkhKZ2ozZU5EL0VNWmpKZ3oyRnNC
anJKazhrS0QzMWN3KzRXcDhVRjRza1dYQ2Y0NittTiIKKyAgICAiT0hwMTNQZVNDWkx5RjRaQUhh
elVWa25EUGNjMllOcldWVjFpNm4zVDE1a0kwVDVaN2JzdGRtQUx1U2tFMmN1SiIKKyAgICAiU1ZO
TzZnUitac1ZSVG5ldVF4d1dUVTBNTkVoQVBGT1gyQmhHUDVlaXNnRVV6a254TUpkZEZEbjlXeGts
dTFKaCIKKyAgICAiZ2t6QVNBLyszQW1sckZaTVBoT2hqRXVsMHpqZ05SNVJCbDFHOEh6OTJMQXg1
VUVEQnRkTGc3MUkrSThBelFPaCIKKyAgICAiZDZMdEJla0VDeEExNnBTYXBwZzV2Y1c5Wi84TjZa
bHNIbloyRnp0QTBuQ09mbGtvTzlpZWpPcGN1Rk40RVZZRCIKKyAgICAieEl0d2N0S3cxTENlTkQv
czRrbW9SUm5YYlg3azlPNmNJMVVVV001OTVHc3U1dFBhMzNNNUFaRkNhdjJnT1Z1WSIKKyAgICAi
ZGpwcFMwSE9mbzVodjZjQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBWThFV2FBRkVm
dzdPVitvRCIKKyAgICAiWFVaU0lZWHEzRUgyRTVwM3EzOEFoSU9MUmpCdUIrdXR5dTdRNnJ4TU1I
dXcyVHRzTit6YkFSN3lyamZzc2VBMyIKKyAgICAiNFRNMXhlNE5rN05WTkhSb1pRK0MwSXFmOWZ2
Y2lvTXZUMXRUcm1hME1oS1NqRlFweCtQdnlMVmJEN1lkUDg2TCIKKyAgICAibWVlaEtxVTdoMXBM
R0FpR3dqb2FaOVliaDZLdXEvTVRBSHkzRDgrd2s3QjM2VkJ4RjZkaVZsVVBaSlpRV0tKeSIKKyAg
ICAiTUt5OUczc3plMVpHdDlXZUUwQU12a04ySEllZjBIVEtDVVozZUJ2ZWNPTWlqeEwwV2hXbzVR
eWY1azZ5bENhVSIKKyAgICAiMmZ4K004RGZEY3dGbzd0U2dMeFNLM0dDRnB4UGZpRHQ2UWs4Yzl0
UW41UzFnWTN0NkxKdXdWQ0Z3VUlYbE5rQiIKKyAgICAiSkQ3K2NaMVovdENyRWh6ajNZQ2swdVVV
OENpZm9VKzRGRytIR0ZQK1NQenRzWUUwNTVtU2ozK0VzaCtveW9WQiIKKyAgICAiZ0JIOTBzRTJU
MWkwZU5JOGY2MW9TZ3dZRmVIc2Y3ZkM3MVhFWExGUitHd05kbXdxbG13bERaRXBUdTdCb05OKyIK
KyAgICAicTcrVGZrMU1Sa0psTDFQSDZZdS9JUGhaaU5oNHR5SXFET3RsWWZ6cDU3N0ErT1VVK3E1
UFBSRlJJc3FoZU94dCIKKyAgICAibU5sSHg0VXpkNFUzSVRmbW9nSmF6anF3WU8ydmlCWlk0alVR
bXlaczc1ZUgvamlVRkhXUnNoYTNBZG5XNUxXYSIKKyAgICAiRzNQRm5ZYlc4dXJIME5TSkcvVysv
OURBK1k3QWEwY3M0VFBwdUJHWjBOVTFXOTRPb0NNbzRsa082SC95NkxldSIKKyAgICAiM3ZqWkQz
eTlrWms3bXJlOVhId2tJOE1kSzVzPSIpOworICAgIAorICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0
b3I7CisgICAgYmFzZTY0RGVjb2RlKHBlbUVuY29kZWRDZXJ0aWZpY2F0ZSwgdmVjdG9yLCBXVEY6
OkJhc2U2NERlY29kZU9wdGlvbnM6OkJhc2U2NERlZmF1bHQpOworICAgIHJldHVybiB2ZWN0b3I7
Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBUQ1BTZXJ2ZXI6OnRlc3RQcml2YXRlS2V5KCkKK3sKKyAg
ICBTdHJpbmcgcGVtRW5jb2RlZFByaXZhdGVLZXkoIiIKKyAgICAiTUlJSlFnSUJBREFOQmdrcWhr
aUc5dzBCQVFFRkFBU0NDU3d3Z2drb0FnRUFBb0lDQVFEZXVFM2hJK0R4Vmo4KyIKKyAgICAiMFlN
MHBqZFAwa2hLQnZMeGdZd25IUzg3NWhrVm1iY2JkK3hOU3pLOFBJUWZDcW5scHNKbEVIOEhMVS9C
YVEydCIKKyAgICAiL0dmOWMvdy9UZmdrK1VUcUt0V0s0QmhDdXBTSHFUdGxId0trNHprWVJ4Rm1B
QlFrWVpEQTJVNlFUQm9lY3daeiIKKyAgICAieEt3ZTZ1QU0rSGxjR21Cc1BLMTNzRW00SFUyZ2o4
b21hRnhxT1FDNVhlOXF0TDY0OHVoODhjMnA3NXd2eUUyZSIKKyAgICAiTmxEQWRacXMvam1Temg0
Rnc0UHUzQ3JHNGVkV2I4VllTdWxqeGF6bXpVeXM5T0ZSME5xR01ReC81aDhNbjBvdiIKKyAgICAi
ekxmVGpKTHdueDk0TEZoOXdmZ0crQXUwbVlFMGNtQ1BkNDBQOFF4bU1tRFBZV3dHT3NtVHlRb1Bm
VnpEN2hhbiIKKyAgICAieFFYaXlSWmNKL2pyNlkwNGVuWGM5NUlKa3ZJWGhrQWRyTlJXU2NNOXh6
WmcydFpWWFdMcWZkUFhtUWpSUGxudCIKKyAgICAidXkxMllBdTVLUVRaeTRsSlUwN3FCSDVteFZG
T2Q2NURIQlpOVFF3MFNFQThVNWZZR0VZL2w2S3lBUlRPU2ZFdyIKKyAgICAibDEwVU9mMWJHU1c3
VW1HQ1RNQklELzdjQ2FXc1ZrdytFNkdNUzZYVE9PQTFIbEVHWFVid2ZQM1lzREhsUVFNRyIKKyAg
ICAiMTB1RHZVajRqd0ROQTZGM291MEY2UVFMRURYcWxKcW1tRG05eGIxbi93M3BtV3dlZG5ZWE8w
RFNjSTUrV1NnNyIKKyAgICAiMko2TTZseTRVM2dSVmdQRWkzQnkwckRVc0o0MFAremlTYWhGR2Rk
dGZ1VDA3cHdqVlJSWXpuM2theTdtMDlyZiIKKyAgICAiY3prQmtVSnEvYUE1VzVoMk9tbExRYzUr
am1HL3B3SURBUUFCQW9JQ0FHcmEvQ3AvZjBYcXZrOVNUK1BydDIvcCIKKyAgICAia050TGVEWGNs
TFNUY1AwSkNaSHVmUWFGdys3Vm5GTHBxZTRHdkxxOUJsbGN6OFZPdlF3cmJlL0N3TlcrVnhDOCIK
KyAgICAiUk1qZ2UycnFBQ2d3R2hPeDF0ODdsNDZOa1VRdzdFeTBsQ2xlOGtyK01HZ0dHb1pxck1G
ZEtJUlVvTXY0bm1RNiIKKyAgICAidG1jMUZIdjVwTFJlOVErTHA1bllRd0dvWW1ab1VPdWVvT2FP
TDA4bTQ5cEdYUWtpTjhwSkRNeFNmTzNKdnRzdSIKKyAgICAiNGNxSWI2a09RL2RPMUlzMUNUdlVS
bGQxSVlMSDdZdVNoaTRaRXgyZzJhYzJVeXZ0NllteHh2TW1BakJTS3BHZCIKKyAgICAibG9pZXBo
bzMvTnJER1VLZHYzcTlRWXl6ckE4dzlHVDMyTERHcWdCWEppMXNjQkk4Y0V4a3A2UDRpRGxsaHY3
cyIKKyAgICAidlpzc3B2b2JSSmEzTzF6azg2M0xIWGEyNEpDbnl1emltcWV6WjJPbGg3bDRvbEhv
WUQ2VUZDOWpmZDRLY0hSZyIKKyAgICAiMWM0c3lxdC9uOEFLLzFzMWVCZlM5ZHpiNUNmanQ5TXRL
WXNseHZMenExV3dPSU53ejhySVl1UmkwUGNMbTlocyIKKyAgICAibCtVMHUvekIzN2VNZ3Y2K2l3
RFhrMWZTamJ1WXNFL2JFVFdZa25LR05GRkw1SlNpS1Y3V0NwbWdOVFRyckU0SyIKKyAgICAiUzhF
NmhSOXVQT0Fhb3c3dlBDQ3Q0eExYLzQ4bDJFSTZaZXE2cU9wcTFsSjJxY3k4cjR0eXVRZ05STFFN
a1pnMSIKKyAgICAiQXhRbDZ2blE4Q3U0aXUrTkloZWYweTlaN3FrZk52WmVDajVHbEZCOWMyWWpW
OFkybWRXZkpCNHFXSzNaLytNSiIKKyAgICAiUU9UQ0tSejcvTHhMTkJVZXBSakpBb0lCQVFEM1pz
VjV0V1U5WlNLY1ZKOURDN1RaazBQK2xoY2lzWnIwbkwwdCIKKyAgICAiUFF1UU8rcEh2UEkxTXFS
bk5za0hKaHlQbnFWQ2krZHA4OXRLL0l0NTkwVUxsOG9zNlVDMUZoeXRCUG9UMVlQZCIKKyAgICAi
V0dXZXAycE9jN2JWcGk0aXAzMXkrSW1mZ2VaeUp0TUFUZG1lM2tCUEFPZTVOR0U5R2lnL2w1bnFM
eWIwMnNkMSIKKyAgICAiUVc3TzBHZHFMeDNEcEx3NFNMbGhNZjZhRTB1R1JTOHNmQjA4NWU0REdu
NTRPMndFVnVTWnFabDVOTkVmMzVSeiIKKyAgICAiWGdpbTNoK1JXRjFaRlNRempCL3NtTjBaaCt2
M0l6N3ZFSjFoMHl3VjZvK0d6dkhrUDlIRTZnTElodHlWOE9FdyIKKyAgICAidmx5WWsxR2E3cFVW
R1JoOG84T01lNlJSOURRaTdKcUM0ZUk3R2NrbUJ6YXF6SmNEQW9JQkFRRG1kZTZBVGV3MyIKKyAg
ICAiSDliUUs2eG5iTUluY3ovQ09wSUlTZGxjRmIyM0FIR0ViNGI0VmhKRkJOd3hyTkw2dEhLU0ZM
ZVlaRkxoVGRoeCIKKyAgICAiUGZYeVVMSE5mNW96ZEVrbDBXcmxlcm9EZG9nYkN5V2c1dUpwOS9R
NjhzYndiR3I4Q0FsTzdaSFlUcmp1UWYxSyIKKyAgICAiQVM5cENtNzdLUDNrMmQzVWxHK3BlbERq
WExvQnppWHEwTmp4SnBNejQ1dnJJeDhyU1d6Rk5qTUdqWFQzZlhhUyIKKyAgICAiOTYyay8wQVhl
aTUvYmZ1aEJ4bG03UG5pMGJRSklXRmtlYVV1R2xyT2FIRFJ4VWlYMXI5SVpTOXd2NWxrMVB0ZyIK
KyAgICAiaWRwYmNXeXcxOGNGR1R2amRLaFJiWkg4RXNibXptTk5zQ0dkZ0NNcUZrS1lzVzE2UUtv
Q2ovTkFvdkkzbjBxbiIKKyAgICAiNlZvUmEwc0dtVEdOQW9JQkFDbC9tcVpFc0J1eFNESHkyOWdT
TVo3QlhnbHBRYTQzSG1mamxyUHM1bkNtTERFbSIKKyAgICAiVjNabTdUN0c2TWVETkEwL0xqZFFZ
bHZhWkxGYVZVYjdIQ0RLc0VZQ1JqRlo2U3Q0aHo0bWRYeitZK1ZON2I0RiIKKyAgICAiR09rVGUr
K2lLcC9MWXNKWHRzRDFGRFdiMldJVm83SGMxQUd6OEkrZ1FKb1NJdVl1VEptTHpTTTArNUpEVU9W
MSIKKyAgICAieThkU2JhUC9SdUV2MHFZamtHcVFWazVlNzBTVXlPektWK1p4Q1RoZEh2Rkxpb3ZU
T1RUZ2V2VXpFNzV4eWRmRyIKKyAgICAiZTdvQ210VHVyemd2bC82OVZ1NVlnaWoxbjRDV1BISGNx
NENRVy9ET1o3QmhGR0J3aHJXNzl2b0hKRjhQYndQTyIKKyAgICAiKzBEVHVkREdZM25BRDVzVG5G
OHpVdU9iWWloSnRmemovdDU5Zk9NQ2dnRUJBSVl1dUJVQVNiNjJ6UTRidjUvZyIKKyAgICAiVlJN
L0tTcGZpOU5EbkVqZlo3eDdoNXpDaXVWZ3gvWmpwQWxRUk84dnpWMThyb0VPT0t0eDljbkpkOEFF
ZCtIYyIKKyAgICAibjkzQm9TMWh4MG1oc1ZoKzFUUlp3eWp5QlhZSnBxd0Qyd3oxTXoxWE9JUTZF
cWJNL3lQS1REMmdmd2c3eU81MyIKKyAgICAicVl4cnhac1dhZ1ZWY0c5UStBUkJFUmF0VHdMcG9O
K2ZjSkx4dWg0ci9DYS9MZXBzeG1Pckt6VGEvTUdLMUxoVyIKKyAgICAicldnSWsyL29nRVBMU3B0
ajJkMVBFRE8rR0F6Rno0VktqaFcxTmxVaDlmR2k2SUpQTEhMbkJ3M29kYmkwUzhLVCIKKyAgICAi
Z0E5WjUrTEJjNWNsb3RBUDVydFFBOFdoL1pDRW9QVEtUVEEyYmpXMkhNYXRKY2JHbVIwRnBDUXIz
QU0wWTFTTyIKKyAgICAiTWFrQ2dnRUFMcnU2UVo2WVV3SkpHNDVIMWVxL3JQZERZOHRxcWpKVlZp
S29CVnZ6S2ovWGZKWllFVlFpSXc1cCIKKyAgICAidW9HaERveUZ1RlVlSWgvZDFKYzJJcnV5Mldq
b09raVFZdEl1Z0RISHhScmtMZFFjalBobENUQ0UvbW15U0p0KyIKKyAgICAiYmtVYmlISWJROGRK
NXlqOFNLcjBiSHpxRXRPeTkvSmVSamtZR0hDNmJWV3BxNUZBMk1CaGY0ZE5qSjRVRGxuVCIKKyAg
ICAidnVlUGNUanI3bm5mWTFzenR2ZlZsOUQ4ZG1nVCtUQm5PT1Y2eVdqMWdtNWJTMUR4UVNMZ05t
dEt4Sjh0QWgydSIKKyAgICAiZEVPYnZjcFNoUDIySXRPVmpTYW1wUnVBdVJHMjZaZW1FYkdDSTNK
Nk1xeDN5Nm0rNkh3dWx0c2d0ZHpEZ3JGZSIKKyAgICAicUpmVThiYmRidTJwaTQ3WTRGZEpLMEhM
ZmZsNVJ3PT0iKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7CisgICAgYmFzZTY0RGVj
b2RlKHBlbUVuY29kZWRQcml2YXRlS2V5LCB2ZWN0b3IsIFdURjo6QmFzZTY0RGVjb2RlT3B0aW9u
czo6QmFzZTY0RGVmYXVsdCk7CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKyAgICAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaAkocmV2aXNp
b24gMjQ1MTcyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTEgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKLWV4dGVybiAiQyIgewogc3RydWN0IFNTTDsKLWludCBTU0xf
cmVhZChTU0wqLCB2b2lkKiwgaW50KTsKLWludCBTU0xfd3JpdGUoU1NMKiwgY29uc3Qgdm9pZCos
IGludCk7Ci19CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtNDQsMTQgKzQwLDI1
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFBvcnQgSW52YWxpZFBvcnQgPSAwOwog
ICAgIAogICAgIFRDUFNlcnZlcihGdW5jdGlvbjx2b2lkKFNvY2tldCk+JiYsIHNpemVfdCBjb25u
ZWN0aW9ucyA9IDEpOwotICAgIGVudW0gY2xhc3MgUHJvdG9jb2wgOiBib29sIHsKLSAgICAgICAg
SFRUUFMsIEhUVFBTUHJveHkKKyAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7Cisg
ICAgICAgIEhUVFBTLAorICAgICAgICBIVFRQU1Byb3h5LAorICAgICAgICBIVFRQU1dpdGhDbGll
bnRDZXJ0aWZpY2F0ZVJlcXVlc3QsCiAgICAgfTsKICAgICBUQ1BTZXJ2ZXIoUHJvdG9jb2wsIEZ1
bmN0aW9uPHZvaWQoU1NMKik+JiYpOwogICAgIH5UQ1BTZXJ2ZXIoKTsKICAgICAKICAgICBQb3J0
IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQ7IH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCBy
ZXNwb25kV2l0aE9LKFNTTCopOworICAgIHN0YXRpYyB2b2lkIHJlc3BvbmRXaXRoQ2hhbGxlbmdl
VGhlbk9LKFNvY2tldCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IHJlYWQoVCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQg
d3JpdGUoVCwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisKKyAgICBzdGF0aWMgVmVjdG9yPHVpbnQ4
X3Q+IHRlc3RQcml2YXRlS2V5KCk7CisgICAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiB0ZXN0Q2Vy
dGlmaWNhdGUoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8U29ja2V0PiBzb2NrZXRC
aW5kTGlzdGVuKHNpemVfdCBjb25uZWN0aW9ucyk7CiAgICAgdm9pZCBsaXN0ZW5Gb3JDb25uZWN0
aW9ucyhzaXplX3QgY29ubmVjdGlvbnMpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0JKHJldmlzaW9uIDI0NTE3MikKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxNDEgKzMzLDE3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhUmVjb3JkUHJpdmF0
ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9T
ZWN1cml0eVNQSS5oPgogCiBzdGF0aWMgYm9vbCBuYXZpZ2F0aW9uRmluaXNoZWQ7CiAKLXN0YXRp
YyB2b2lkIHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKGludCBzb2NrZXQpCitzdGF0aWMgUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpCiB7Ci0gICAg
Y2hhciByZWFkQnVmZmVyWzEwMDBdOwotICAgIGF1dG8gYnl0ZXNSZWFkID0gOjpyZWFkKHNvY2tl
dCwgcmVhZEJ1ZmZlciwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICBFWFBFQ1RfR1QoYnl0ZXNS
ZWFkLCAwKTsKLSAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkg
PCBzaXplb2YocmVhZEJ1ZmZlcikpOworICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0aWZpY2F0ZUJ5
dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp0ZXN0Q2VydGlmaWNhdGUoKTsKKyAgICBS
ZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVSZWY+IGNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0
aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMuZGF0YSgpIGxlbmd0aDpjZXJ0aWZpY2F0
ZUJ5dGVzLnNpemUoKV0pKTsKICAgICAKLSAgICBjb25zdCBjaGFyKiBjaGFsbGVuZ2VIZWFkZXIg
PQotICAgICJIVFRQLzEuMSA0MDEgVW5hdXRob3JpemVkXHJcbiIKLSAgICAiRGF0ZTogU2F0LCAy
MyBNYXIgMjAxOSAwNjoyOTowMSBHTVRcclxuIgotICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4i
Ci0gICAgIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwidGVzdHJlYWxtXCJcclxuXHJc
biI7Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgY2hhbGxlbmdlSGVh
ZGVyLCBzdHJsZW4oY2hhbGxlbmdlSGVhZGVyKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PHNpemVfdD4oYnl0ZXNXcml0dGVuKSwgc3RybGVuKGNoYWxsZW5nZUhlYWRlcikpOwotICAgIAot
ICAgIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVm
ZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAK
LSAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9Ci0gICAgIkhUVFAvMS4xIDIwMCBPS1xy
XG4iCi0gICAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5cclxuIgotICAgICJIZWxsbywgV29ybGQh
IjsKLSAgICBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgcmVzcG9uc2VIZWFkZXIsIHN0
cmxlbihyZXNwb25zZUhlYWRlcikpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ5dGVzV3JpdHRlbiksIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOwotfQotCi0jaWYgUExBVEZP
Uk0oTUFDKQotCi1zdGF0aWMgc3RkOjpwYWlyPFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+LCBS
ZXRhaW5QdHI8TlNTdHJpbmc+PiBjcmVkZW50aWFsV2l0aElkZW50aXR5QW5kS2V5Y2hhaW5QYXRo
KCkKLXsKLSAgICAvLyBDZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgd2VyZSBnZW5lcmF0ZWQg
YnkgcnVubmluZyB0aGlzIGNvbW1hbmQ6Ci0gICAgLy8gb3BlbnNzbCByZXEgLXg1MDkgLW5ld2tl
eSByc2E6NDA5NiAta2V5b3V0IGtleS5wZW0gLW91dCBjZXJ0LnBlbSAtZGF5cyAzNjUgLW5vZGVz
Ci0gICAgLy8gYW5kIGVudGVyaW5nIHRoaXMgaW5mb3JtYXRpb246Ci0gICAgLyoKLSAgICAgQ291
bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKSBbXTpVUwotICAgICBTdGF0ZSBvciBQcm92aW5jZSBO
YW1lIChmdWxsIG5hbWUpIFtdOk5ldyBNZXhpY28KLSAgICAgTG9jYWxpdHkgTmFtZSAoZWcsIGNp
dHkpIFtdOlNhbnRhIEZlCi0gICAgIE9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkgW106
U2VsZgotICAgICBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0aW9uKSBbXTpNeXNl
bGYKLSAgICAgQ29tbW9uIE5hbWUgKGVnLCBmdWxseSBxdWFsaWZpZWQgaG9zdCBuYW1lKSBbXTpN
ZQotICAgICBFbWFpbCBBZGRyZXNzIFtdOm1lQGV4YW1wbGUuY29tCi0gICAgICovCi0gICAgCi0g
ICAgTlNTdHJpbmcgKnBlbUVuY29kZWRDZXJ0aWZpY2F0ZSA9IEAiIgotICAgICJNSUlGZ0RDQ0Ey
Z0NDUUNLSGlQUlU1TVF1REFOQmdrcWhraUc5dzBCQVFzRkFEQ0JnVEVMTUFrR0ExVUVCaE1DIgot
ICAgICJWVk14RXpBUkJnTlZCQWdNQ2s1bGR5Qk5aWGhwWTI4eEVUQVBCZ05WQkFjTUNGTmhiblJo
SUVabE1RMHdDd1lEIgotICAgICJWUVFLREFSVFpXeG1NUTh3RFFZRFZRUUxEQVpOZVhObGJHWXhD
ekFKQmdOVkJBTU1BazFsTVIwd0d3WUpLb1pJIgotICAgICJodmNOQVFrQkZnNXRaVUJsZUdGdGNH
eGxMbU52YlRBZUZ3MHhPVEF6TWpNd05UVXdNVFJhRncweU1EQXpNakl3IgotICAgICJOVFV3TVRS
YU1JR0JNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRTFsZUdsamJ6RVJNQThH
IgotICAgICJBMVVFQnd3SVUyRnVkR0VnUm1VeERUQUxCZ05WQkFvTUJGTmxiR1l4RHpBTkJnTlZC
QXNNQmsxNWMyVnNaakVMIgotICAgICJNQWtHQTFVRUF3d0NUV1V4SFRBYkJna3Foa2lHOXcwQkNR
RVdEbTFsUUdWNFlXMXdiR1V1WTI5dE1JSUNJakFOIgotICAgICJCZ2txaGtpRzl3MEJBUUVGQUFP
Q0FnOEFNSUlDQ2dLQ0FnRUEzcmhONFNQZzhWWS9QdEdETktZM1Q5SklTZ2J5IgotICAgICI4WUdN
Sngwdk8rWVpGWm0zRzNmc1RVc3l2RHlFSHdxcDVhYkNaUkIvQnkxUHdXa05yZnhuL1hQOFAwMzRK
UGxFIgotICAgICI2aXJWaXVBWVFycVVoNms3WlI4Q3BPTTVHRWNSWmdBVUpHR1F3TmxPa0V3YUhu
TUdjOFNzSHVyZ0RQaDVYQnBnIgotICAgICJiRHl0ZDdCSnVCMU5vSS9LSm1oY2Fqa0F1VjN2YXJT
K3VQTG9mUEhOcWUrY0w4aE5ualpRd0hXYXJQNDVrczRlIgotICAgICJCY09EN3R3cXh1SG5WbS9G
V0VycFk4V3M1czFNclBUaFVkRGFoakVNZitZZkRKOUtMOHkzMDR5UzhKOGZlQ3hZIgotICAgICJm
Y0g0QnZnTHRKbUJOSEpnajNlTkQvRU1aakpnejJGc0JqckprOGtLRDMxY3crNFdwOFVGNHNrV1hD
ZjQ2K21OIgotICAgICJPSHAxM1BlU0NaTHlGNFpBSGF6VVZrbkRQY2MyWU5yV1ZWMWk2bjNUMTVr
STBUNVo3YnN0ZG1BTHVTa0UyY3VKIgotICAgICJTVk5PNmdSK1pzVlJUbmV1UXh3V1RVME1ORWhB
UEZPWDJCaEdQNWVpc2dFVXprbnhNSmRkRkRuOVd4a2x1MUpoIgotICAgICJna3pBU0EvKzNBbWxy
RlpNUGhPaGpFdWwwempnTlI1UkJsMUc4SHo5MkxBeDVVRURCdGRMZzcxSStJOEF6UU9oIgotICAg
ICJkNkx0QmVrRUN4QTE2cFNhcHBnNXZjVzlaLzhONlpsc0huWjJGenRBMG5DT2Zsa29POWllak9w
Y3VGTjRFVllEIgotICAgICJ4SXR3Y3RLdzFMQ2VORC9zNGttb1JSblhiWDdrOU82Y0kxVVVXTTU5
NUdzdTV0UGEzM001QVpGQ2F2MmdPVnVZIgotICAgICJkanBwUzBIT2ZvNWh2NmNDQXdFQUFUQU5C
Z2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZOEVXYUFGRWZ3N09WK29EIgotICAgICJYVVpTSVlYcTNF
SDJFNXAzcTM4QWhJT0xSakJ1Qit1dHl1N1E2cnhNTUh1dzJUdHNOK3piQVI3eXJqZnNzZUEzIgot
ICAgICI0VE0xeGU0Tms3TlZOSFJvWlErQzBJcWY5ZnZjaW9NdlQxdFRybWEwTWhLU2pGUXB4K1B2
eUxWYkQ3WWRQODZMIgotICAgICJtZWVoS3FVN2gxcExHQWlHd2pvYVo5WWJoNkt1cS9NVEFIeTNE
OCt3azdCMzZWQnhGNmRpVmxVUFpKWlFXS0p5IgotICAgICJNS3k5RzNzemUxWkd0OVdlRTBBTXZr
TjJISWVmMEhUS0NVWjNlQnZlY09NaWp4TDBXaFdvNVF5ZjVrNnlsQ2FVIgotICAgICIyZngrTThE
ZkRjd0ZvN3RTZ0x4U0szR0NGcHhQZmlEdDZRazhjOXRRbjVTMWdZM3Q2TEp1d1ZDRndVSVhsTmtC
IgotICAgICJKRDcrY1oxWi90Q3JFaHpqM1lDazB1VVU4Q2lmb1UrNEZHK0hHRlArU1B6dHNZRTA1
NW1TajMrRXNoK295b1ZCIgotICAgICJnQkg5MHNFMlQxaTBlTkk4ZjYxb1Nnd1lGZUhzZjdmQzcx
WEVYTEZSK0d3TmRtd3FsbXdsRFpFcFR1N0JvTk4rIgotICAgICJxNytUZmsxTVJrSmxMMVBINll1
L0lQaFppTmg0dHlJcURPdGxZZnpwNTc3QStPVVUrcTVQUFJGUklzcWhlT3h0IgotICAgICJtTmxI
eDRVemQ0VTNJVGZtb2dKYXpqcXdZTzJ2aUJaWTRqVVFteVpzNzVlSC9qaVVGSFdSc2hhM0Fkblc1
TFdhIgotICAgICJHM1BGblliVzh1ckgwTlNKRy9XKy85REErWTdBYTBjczRUUHB1QkdaME5VMVc5
NE9vQ01vNGxrTzZIL3k2TGV1IgotICAgICIzdmpaRDN5OWtaazdtcmU5WEh3a0k4TWRLNXM9IjsK
LSAgICAKLSAgICBOU1N0cmluZyAqcGVtRW5jb2RlZFByaXZhdGVLZXkgPSBAIiIKLSAgICAiTUlJ
SlFnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NDU3d3Z2drb0FnRUFBb0lDQVFEZXVFM2hJK0R4
Vmo4KyIKLSAgICAiMFlNMHBqZFAwa2hLQnZMeGdZd25IUzg3NWhrVm1iY2JkK3hOU3pLOFBJUWZD
cW5scHNKbEVIOEhMVS9CYVEydCIKLSAgICAiL0dmOWMvdy9UZmdrK1VUcUt0V0s0QmhDdXBTSHFU
dGxId0trNHprWVJ4Rm1BQlFrWVpEQTJVNlFUQm9lY3daeiIKLSAgICAieEt3ZTZ1QU0rSGxjR21C
c1BLMTNzRW00SFUyZ2o4b21hRnhxT1FDNVhlOXF0TDY0OHVoODhjMnA3NXd2eUUyZSIKLSAgICAi
TmxEQWRacXMvam1Temg0Rnc0UHUzQ3JHNGVkV2I4VllTdWxqeGF6bXpVeXM5T0ZSME5xR01ReC81
aDhNbjBvdiIKLSAgICAiekxmVGpKTHdueDk0TEZoOXdmZ0crQXUwbVlFMGNtQ1BkNDBQOFF4bU1t
RFBZV3dHT3NtVHlRb1BmVnpEN2hhbiIKLSAgICAieFFYaXlSWmNKL2pyNlkwNGVuWGM5NUlKa3ZJ
WGhrQWRyTlJXU2NNOXh6WmcydFpWWFdMcWZkUFhtUWpSUGxudCIKLSAgICAidXkxMllBdTVLUVRa
eTRsSlUwN3FCSDVteFZGT2Q2NURIQlpOVFF3MFNFQThVNWZZR0VZL2w2S3lBUlRPU2ZFdyIKLSAg
ICAibDEwVU9mMWJHU1c3VW1HQ1RNQklELzdjQ2FXc1ZrdytFNkdNUzZYVE9PQTFIbEVHWFVid2ZQ
M1lzREhsUVFNRyIKLSAgICAiMTB1RHZVajRqd0ROQTZGM291MEY2UVFMRURYcWxKcW1tRG05eGIx
bi93M3BtV3dlZG5ZWE8wRFNjSTUrV1NnNyIKLSAgICAiMko2TTZseTRVM2dSVmdQRWkzQnkwckRV
c0o0MFAremlTYWhGR2RkdGZ1VDA3cHdqVlJSWXpuM2theTdtMDlyZiIKLSAgICAiY3prQmtVSnEv
YUE1VzVoMk9tbExRYzUram1HL3B3SURBUUFCQW9JQ0FHcmEvQ3AvZjBYcXZrOVNUK1BydDIvcCIK
LSAgICAia050TGVEWGNsTFNUY1AwSkNaSHVmUWFGdys3Vm5GTHBxZTRHdkxxOUJsbGN6OFZPdlF3
cmJlL0N3TlcrVnhDOCIKLSAgICAiUk1qZ2UycnFBQ2d3R2hPeDF0ODdsNDZOa1VRdzdFeTBsQ2xl
OGtyK01HZ0dHb1pxck1GZEtJUlVvTXY0bm1RNiIKLSAgICAidG1jMUZIdjVwTFJlOVErTHA1bllR
d0dvWW1ab1VPdWVvT2FPTDA4bTQ5cEdYUWtpTjhwSkRNeFNmTzNKdnRzdSIKLSAgICAiNGNxSWI2
a09RL2RPMUlzMUNUdlVSbGQxSVlMSDdZdVNoaTRaRXgyZzJhYzJVeXZ0NllteHh2TW1BakJTS3BH
ZCIKLSAgICAibG9pZXBobzMvTnJER1VLZHYzcTlRWXl6ckE4dzlHVDMyTERHcWdCWEppMXNjQkk4
Y0V4a3A2UDRpRGxsaHY3cyIKLSAgICAidlpzc3B2b2JSSmEzTzF6azg2M0xIWGEyNEpDbnl1emlt
cWV6WjJPbGg3bDRvbEhvWUQ2VUZDOWpmZDRLY0hSZyIKLSAgICAiMWM0c3lxdC9uOEFLLzFzMWVC
ZlM5ZHpiNUNmanQ5TXRLWXNseHZMenExV3dPSU53ejhySVl1UmkwUGNMbTlocyIKLSAgICAibCtV
MHUvekIzN2VNZ3Y2K2l3RFhrMWZTamJ1WXNFL2JFVFdZa25LR05GRkw1SlNpS1Y3V0NwbWdOVFRy
ckU0SyIKLSAgICAiUzhFNmhSOXVQT0Fhb3c3dlBDQ3Q0eExYLzQ4bDJFSTZaZXE2cU9wcTFsSjJx
Y3k4cjR0eXVRZ05STFFNa1pnMSIKLSAgICAiQXhRbDZ2blE4Q3U0aXUrTkloZWYweTlaN3FrZk52
WmVDajVHbEZCOWMyWWpWOFkybWRXZkpCNHFXSzNaLytNSiIKLSAgICAiUU9UQ0tSejcvTHhMTkJV
ZXBSakpBb0lCQVFEM1pzVjV0V1U5WlNLY1ZKOURDN1RaazBQK2xoY2lzWnIwbkwwdCIKLSAgICAi
UFF1UU8rcEh2UEkxTXFSbk5za0hKaHlQbnFWQ2krZHA4OXRLL0l0NTkwVUxsOG9zNlVDMUZoeXRC
UG9UMVlQZCIKLSAgICAiV0dXZXAycE9jN2JWcGk0aXAzMXkrSW1mZ2VaeUp0TUFUZG1lM2tCUEFP
ZTVOR0U5R2lnL2w1bnFMeWIwMnNkMSIKLSAgICAiUVc3TzBHZHFMeDNEcEx3NFNMbGhNZjZhRTB1
R1JTOHNmQjA4NWU0REduNTRPMndFVnVTWnFabDVOTkVmMzVSeiIKLSAgICAiWGdpbTNoK1JXRjFa
RlNRempCL3NtTjBaaCt2M0l6N3ZFSjFoMHl3VjZvK0d6dkhrUDlIRTZnTElodHlWOE9FdyIKLSAg
ICAidmx5WWsxR2E3cFVWR1JoOG84T01lNlJSOURRaTdKcUM0ZUk3R2NrbUJ6YXF6SmNEQW9JQkFR
RG1kZTZBVGV3MyIKLSAgICAiSDliUUs2eG5iTUluY3ovQ09wSUlTZGxjRmIyM0FIR0ViNGI0VmhK
RkJOd3hyTkw2dEhLU0ZMZVlaRkxoVGRoeCIKLSAgICAiUGZYeVVMSE5mNW96ZEVrbDBXcmxlcm9E
ZG9nYkN5V2c1dUpwOS9RNjhzYndiR3I4Q0FsTzdaSFlUcmp1UWYxSyIKLSAgICAiQVM5cENtNzdL
UDNrMmQzVWxHK3BlbERqWExvQnppWHEwTmp4SnBNejQ1dnJJeDhyU1d6Rk5qTUdqWFQzZlhhUyIK
LSAgICAiOTYyay8wQVhlaTUvYmZ1aEJ4bG03UG5pMGJRSklXRmtlYVV1R2xyT2FIRFJ4VWlYMXI5
SVpTOXd2NWxrMVB0ZyIKLSAgICAiaWRwYmNXeXcxOGNGR1R2amRLaFJiWkg4RXNibXptTk5zQ0dk
Z0NNcUZrS1lzVzE2UUtvQ2ovTkFvdkkzbjBxbiIKLSAgICAiNlZvUmEwc0dtVEdOQW9JQkFDbC9t
cVpFc0J1eFNESHkyOWdTTVo3QlhnbHBRYTQzSG1mamxyUHM1bkNtTERFbSIKLSAgICAiVjNabTdU
N0c2TWVETkEwL0xqZFFZbHZhWkxGYVZVYjdIQ0RLc0VZQ1JqRlo2U3Q0aHo0bWRYeitZK1ZON2I0
RiIKLSAgICAiR09rVGUrK2lLcC9MWXNKWHRzRDFGRFdiMldJVm83SGMxQUd6OEkrZ1FKb1NJdVl1
VEptTHpTTTArNUpEVU9WMSIKLSAgICAieThkU2JhUC9SdUV2MHFZamtHcVFWazVlNzBTVXlPektW
K1p4Q1RoZEh2Rkxpb3ZUT1RUZ2V2VXpFNzV4eWRmRyIKLSAgICAiZTdvQ210VHVyemd2bC82OVZ1
NVlnaWoxbjRDV1BISGNxNENRVy9ET1o3QmhGR0J3aHJXNzl2b0hKRjhQYndQTyIKLSAgICAiKzBE
VHVkREdZM25BRDVzVG5GOHpVdU9iWWloSnRmemovdDU5Zk9NQ2dnRUJBSVl1dUJVQVNiNjJ6UTRi
djUvZyIKLSAgICAiVlJNL0tTcGZpOU5EbkVqZlo3eDdoNXpDaXVWZ3gvWmpwQWxRUk84dnpWMThy
b0VPT0t0eDljbkpkOEFFZCtIYyIKLSAgICAibjkzQm9TMWh4MG1oc1ZoKzFUUlp3eWp5QlhZSnBx
d0Qyd3oxTXoxWE9JUTZFcWJNL3lQS1REMmdmd2c3eU81MyIKLSAgICAicVl4cnhac1dhZ1ZWY0c5
UStBUkJFUmF0VHdMcG9OK2ZjSkx4dWg0ci9DYS9MZXBzeG1Pckt6VGEvTUdLMUxoVyIKLSAgICAi
cldnSWsyL29nRVBMU3B0ajJkMVBFRE8rR0F6Rno0VktqaFcxTmxVaDlmR2k2SUpQTEhMbkJ3M29k
YmkwUzhLVCIKLSAgICAiZ0E5WjUrTEJjNWNsb3RBUDVydFFBOFdoL1pDRW9QVEtUVEEyYmpXMkhN
YXRKY2JHbVIwRnBDUXIzQU0wWTFTTyIKLSAgICAiTWFrQ2dnRUFMcnU2UVo2WVV3SkpHNDVIMWVx
L3JQZERZOHRxcWpKVlZpS29CVnZ6S2ovWGZKWllFVlFpSXc1cCIKLSAgICAidW9HaERveUZ1RlVl
SWgvZDFKYzJJcnV5Mldqb09raVFZdEl1Z0RISHhScmtMZFFjalBobENUQ0UvbW15U0p0KyIKLSAg
ICAiYmtVYmlISWJROGRKNXlqOFNLcjBiSHpxRXRPeTkvSmVSamtZR0hDNmJWV3BxNUZBMk1CaGY0
ZE5qSjRVRGxuVCIKLSAgICAidnVlUGNUanI3bm5mWTFzenR2ZlZsOUQ4ZG1nVCtUQm5PT1Y2eVdq
MWdtNWJTMUR4UVNMZ05tdEt4Sjh0QWgydSIKLSAgICAiZEVPYnZjcFNoUDIySXRPVmpTYW1wUnVB
dVJHMjZaZW1FYkdDSTNKNk1xeDN5Nm0rNkh3dWx0c2d0ZHpEZ3JGZSIKLSAgICAicUpmVThiYmRi
dTJwaTQ3WTRGZEpLMEhMZmZsNVJ3PT0iOwotICAgIAotICAgIE5TRGF0YSAqZGVyRW5jb2RlZENl
cnRpZmljYXRlID0gW1tbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6
cGVtRW5jb2RlZENlcnRpZmljYXRlIG9wdGlvbnM6MF0gYXV0b3JlbGVhc2VdOwotICAgIFJldGFp
blB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmlj
YXRlQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilkZXJFbmNvZGVk
Q2VydGlmaWNhdGUpKTsKLSAgICAKLSAgICBOU0RhdGEgKmRlckVuY29kZWRQcml2YXRlS2V5ID0g
W1tbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6cGVtRW5jb2RlZFBy
aXZhdGVLZXkgb3B0aW9uczowXSBhdXRvcmVsZWFzZV07CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHBy
aXZhdGVLZXlCeXRlcyA9IFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6dGVzdFByaXZhdGVLZXko
KTsKKyAgICBOU0RhdGEgKmRlckVuY29kZWRQcml2YXRlS2V5ID0gW05TRGF0YSBkYXRhV2l0aEJ5
dGVzOnByaXZhdGVLZXlCeXRlcy5kYXRhKCkgbGVuZ3RoOnByaXZhdGVLZXlCeXRlcy5zaXplKCld
OwogICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7CiAgICAgICAgIChpZClrU2VjQXR0cktl
eVR5cGU6IChpZClrU2VjQXR0cktleVR5cGVSU0EsCiAgICAgICAgIChpZClrU2VjQXR0cktleUNs
YXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCkBAIC0xNzksMzIgKzU1LDEyIEBAIHN0
YXRpYyBzdGQ6OnBhaXI8UmV0YWluUHRyPE5TVVJMQ3JlZGVudGkKICAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CiAgICAgRVhQRUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkpOwogCi0gICAgU2Vj
S2V5Y2hhaW5SZWYga2V5Y2hhaW5SZWYgPSBudWxscHRyOwotICAgIGNvbnN0IGNoYXIqIGtleWNo
YWluUGFzc3dvcmQgPSAidGVzdHBhc3N3b3JkIjsKLSAgICBOU1N0cmluZyAqa2V5Y2hhaW5QYXRo
ID0gW05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiVGVzdEtleWNoYWluIl07Ci0gICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjS2V5Y2hhaW5DcmVh
dGUoW2tleWNoYWluUGF0aCBVVEY4U3RyaW5nXSwgc3RybGVuKGtleWNoYWluUGFzc3dvcmQpLCBr
ZXljaGFpblBhc3N3b3JkLCBOTywgbnVsbHB0ciwgJmtleWNoYWluUmVmKTsKLSAgICBFWFBFQ1Rf
VFJVRShzdGF0dXMgPT0gZXJyU2VjU3VjY2Vzcyk7Ci0gICAgUmV0YWluUHRyPFNlY0tleWNoYWlu
UmVmPiBrZXljaGFpbiA9IGFkb3B0Q0Yoa2V5Y2hhaW5SZWYpOwotICAgIEVYUEVDVF9OT1RfTlVM
TChrZXljaGFpbik7Ci0KLSAgICBTZWNFeHRlcm5hbEl0ZW1UeXBlIHR5cGUgPSBrU2VjSXRlbVR5
cGVQcml2YXRlS2V5OwotICAgIHN0YXR1cyA9IFNlY0l0ZW1JbXBvcnQoKF9fYnJpZGdlIENGRGF0
YVJlZilkZXJFbmNvZGVkUHJpdmF0ZUtleSwgbnVsbHB0ciwgbnVsbHB0ciwgJnR5cGUsIDAsIG51
bGxwdHIsIGtleWNoYWluLmdldCgpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfVFJVRShzdGF0dXMg
PT0gZXJyU2VjU3VjY2Vzcyk7Ci0KLSAgICBTZWNJZGVudGl0eVJlZiBpZGVudGl0eVJlZiA9IG51
bGxwdHI7Ci0gICAgc3RhdHVzID0gU2VjSWRlbnRpdHlDcmVhdGVXaXRoQ2VydGlmaWNhdGUoa2V5
Y2hhaW4uZ2V0KCksIGNlcnRpZmljYXRlLmdldCgpLCAmaWRlbnRpdHlSZWYpOwotICAgIEVYUEVD
VF9OT1RfTlVMTChpZGVudGl0eVJlZik7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdHVzID09IGVyclNl
Y1N1Y2Nlc3MpOwotICAgIFJldGFpblB0cjxTZWNJZGVudGl0eVJlZj4gaWRlbnRpdHkgPSBhZG9w
dENGKGlkZW50aXR5UmVmKTsKKyAgICBSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IGlkZW50aXR5
ID0gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZXJ0aWZp
Y2F0ZS5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSkpOworICAgIEVYUEVDVF9OT1RfTlVMTChpZGVu
dGl0eSk7CiAgICAgCi0gICAgcmV0dXJuIHsKLSAgICAgICAgW05TVVJMQ3JlZGVudGlhbCBjcmVk
ZW50aWFsV2l0aElkZW50aXR5OmlkZW50aXR5LmdldCgpIGNlcnRpZmljYXRlczpAWyhpZCljZXJ0
aWZpY2F0ZS5nZXQoKV0gcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
XSwKLSAgICAgICAga2V5Y2hhaW5QYXRoCi0gICAgfTsKKyAgICByZXR1cm4gW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsV2l0aElkZW50aXR5OmlkZW50aXR5LmdldCgpIGNlcnRpZmljYXRlczpA
WyhpZCljZXJ0aWZpY2F0ZS5nZXQoKV0gcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVyc2lz
dGVuY2VOb25lXTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4ga2V5Y2hhaW5QYXRo
OwotCiBAaW50ZXJmYWNlIENoYWxsZW5nZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlv
bkRlbGVnYXRlPgogQGVuZAogCkBAIC0yMjksMTggKzg1LDE1IEBAIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWQKICAgICBFWFBFQ1RfVFJVRShbcHJvdGVjdGlvblNwYWNl
LmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0aW9u
TWV0aG9kSFRUUEJhc2ljXSk7CiAgICAgRVhQRUNUX0VRKFsoTlNIVFRQVVJMUmVzcG9uc2UgKilj
aGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlIHN0YXR1c0NvZGVdLCA0MDEpOwogCi0gICAgYXV0byBw
YWlyID0gY3JlZGVudGlhbFdpdGhJZGVudGl0eUFuZEtleWNoYWluUGF0aCgpOwotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBwYWly
LmZpcnN0LmdldCgpKTsKLSAgICBrZXljaGFpblBhdGggPSBXVEZNb3ZlKHBhaXIuc2Vjb25kKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVu
dGlhbCwgY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpLmdldCgpKTsKIH0KIAogQGVuZAogCi1uYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KIFRFU1QoQ2hhbGxlbmdlLCBTZWNJZGVudGl0eSkKIHsK
LSAgICBUQ1BTZXJ2ZXIgc2VydmVyKHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKKyAgICB1
c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNl
cnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwogCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtD
aGFsbGVuZ2VEZWxlZ2F0ZSBuZXddKTsKQEAgLTI0OCwxNiArMTAxLDYwIEBAIFRFU1QoQ2hhbGxl
bmdlLCBTZWNJZGVudGl0eSkKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKIAogICAg
IFV0aWw6OnJ1bigmbmF2aWdhdGlvbkZpbmlzaGVkKTsKK30KKworQGludGVyZmFjZSBDbGllbnRD
ZXJ0aWZpY2F0ZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiB7Cisg
ICAgc2l6ZV90IF9jaGFsbGVuZ2VDb3VudDsKKyAgICBib29sIF9yZWNlaXZlZENsaWVudENlcnRp
ZmljYXRlQ2hhbGxlbmdlOworfQorLSAoc2l6ZV90KWNoYWxsZW5nZUNvdW50OworLSAoYm9vbCly
ZWNlaXZlZENsaWVudENlcnRpZmljYXRlQ2hhbGxlbmdlOworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gQ2xpZW50Q2VydGlmaWNhdGVEZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmln
YXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgbmF2aWdhdGlvbkZpbmlzaGVkID0gdHJ1ZTsKK30K
KworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5n
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURp
c3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBf
Y2hhbGxlbmdlQ291bnQrKzsKKworICAgIGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5h
dXRoZW50aWNhdGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1l
dGhvZFNlcnZlclRydXN0XSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRl
bnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CiAg
ICAgCi0gICAgRVhQRUNUX05PVF9OVUxMKGtleWNoYWluUGF0aC5nZXQoKSk7Ci0gICAgTlNFcnJv
ciAqZXJyb3IgPSBuaWw7Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1v
dmVJdGVtQXRQYXRoOmtleWNoYWluUGF0aC5nZXQoKSBlcnJvcjomZXJyb3JdOwotICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFj
ZS5hdXRoZW50aWNhdGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlv
bk1ldGhvZENsaWVudENlcnRpZmljYXRlXSk7CisgICAgX3JlY2VpdmVkQ2xpZW50Q2VydGlmaWNh
dGVDaGFsbGVuZ2UgPSB0cnVlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsV2l0aElkZW50aXR5KCkuZ2V0KCkp
OwogfQogCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCistIChzaXplX3QpY2hhbGxlbmdl
Q291bnQKK3sKKyAgICByZXR1cm4gX2NoYWxsZW5nZUNvdW50OworfQorCistIChib29sKXJlY2Vp
dmVkQ2xpZW50Q2VydGlmaWNhdGVDaGFsbGVuZ2UKK3sKKyAgICByZXR1cm4gX3JlY2VpdmVkQ2xp
ZW50Q2VydGlmaWNhdGVDaGFsbGVuZ2U7Cit9CiAKLSNlbmRpZgorQGVuZAorCitURVNUKENoYWxs
ZW5nZSwgQ2xpZW50Q2VydGlmaWNhdGUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEk7CisgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQU1dp
dGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QsIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyk7CisK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW0NsaWVudENlcnRpZmljYXRlRGVsZWdhdGUgbmV3XSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6
JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgCisgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9u
RmluaXNoZWQpOworICAgIEVYUEVDVF9FUShbZGVsZWdhdGUgY2hhbGxlbmdlQ291bnRdLCAydWxs
KTsKK30KIAogc3RhdGljIGJvb2wgcmVjZWl2ZWRTZWNvbmRDaGFsbGVuZ2U7CiBzdGF0aWMgUmV0
YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gcGVyc2lzdGVudENyZWRlbnRpYWw7CkBAIC0yOTAsNyAr
MTg3LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZAogVEVTVChD
aGFsbGVuZ2UsIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsKQogewogICAgIHVzaW5nIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJOwotICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9uZFdpdGhDaGFsbGVu
Z2VUaGVuT0ssIDIpOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpyZXNwb25kV2l0
aENoYWxsZW5nZVRoZW5PSywgMik7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gcmV0YWluUHRy
KFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIkJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luIl0pOwogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbUHJvcG9zZWRDcmVkZW50aWFsRGVsZWdhdGUgbmV3XSk7CkBAIC00MDYs
MTYgKzMwMywxMyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdlYktpdCwgU2Vy
dmVyVHJ1c3QpCiB7CiAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpI
VFRQUywgW10gKFNTTCogc3NsKSB7Ci0gICAgICAgIGNoYXIgcmVxdWVzdEJ1ZmZlclsxMDAwXTsK
LSAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gU1NMX3JlYWQoc3NsLCByZXF1ZXN0QnVmZmVyLCBz
aXplb2YocmVxdWVzdEJ1ZmZlcikpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlYWRSZXN1bHQs
IHJlYWRSZXN1bHQgPiAwKTsKKyAgICAgICAgVENQU2VydmVyOjpyZWFkKHNzbCk7CiAKICAgICAg
ICAgY29uc3QgY2hhciogcmVwbHkgPSAiIgogICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIK
ICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5cclxuIgogICAgICAgICAiSGVsbG8sIFdv
cmxkISI7Ci0gICAgICAgIGF1dG8gd3JpdGVSZXN1bHQgPSBTU0xfd3JpdGUoc3NsLCByZXBseSwg
c3RybGVuKHJlcGx5KSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQod3JpdGVSZXN1bHQsIHdyaXRl
UmVzdWx0ID09IHN0YXRpY19jYXN0PGludD4oc3RybGVuKHJlcGx5KSkpOworICAgICAgICBUQ1BT
ZXJ2ZXI6OndyaXRlKHNzbCwgcmVwbHksIHN0cmxlbihyZXBseSkpOwogICAgIH0pOwogCiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZMaW5rUmVmZXJyZXIubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZMaW5rUmVmZXJy
ZXIubW0JKHJldmlzaW9uIDI0NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUERGTGlua1JlZmVycmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MiwyNiArNzIs
MjQgQEAgc3RhdGljIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZVBERldpdGhMaQogCiBURVNUKFdl
YktpdCwgUERGTGlua1JlZmVycmVyKQogewotICAgIFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlciBz
ZXJ2ZXIoW10gKGludCBzb2NrZXQpIHsKLSAgICAgICAgY2hhciByZWFkQnVmZmVyWzEwMDBdOwot
ICAgICAgICBtZW1zZXQocmVhZEJ1ZmZlciwgMCwgMTAwMCk7Ci0KKyAgICB1c2luZyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFtdIChpbnQgc29ja2V0KSB7
CiAgICAgICAgIC8vIFRoaXMgYXNzdW1lcyBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgSFRUUCByZXF1
ZXN0IGlzIGF2YWlsYWJsZSB0byBiZSByZWFkIGF0IG9uY2UsCiAgICAgICAgIC8vIHdoaWNoIGlz
IHByb2JhYmx5IGFuIG9rYXkgYXNzdW1wdGlvbi4KLSAgICAgICAgOjpyZWFkKHNvY2tldCwgcmVh
ZEJ1ZmZlciwgOTk5KTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlcXVlc3QgPSBUQ1BTZXJ2
ZXI6OnJlYWQoc29ja2V0KTsKIAogICAgICAgICAvLyBMb29rIGZvciBhIHJlZmVyZXIgaGVhZGVy
LgotICAgICAgICBjaGFyKiBjdXJyZW50TGluZSA9IHJlYWRCdWZmZXI7CisgICAgICAgIGNvbnN0
IGNoYXIqIGN1cnJlbnRMaW5lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4ocmVxdWVzdC5kYXRh
KCkpOwogICAgICAgICB3aGlsZSAoY3VycmVudExpbmUpIHsKICAgICAgICAgICAgIEVYUEVDVF9O
RShzdHJuY2FzZWNtcChjdXJyZW50TGluZSwgInJlZmVyZXI6IiwgOCksIDApOwotICAgICAgICAg
ICAgY2hhciogbmV4dExpbmUgPSBzdHJjaHIoY3VycmVudExpbmUsICdcbicpOworICAgICAgICAg
ICAgY29uc3QgY2hhciogbmV4dExpbmUgPSBzdHJjaHIoY3VycmVudExpbmUsICdcbicpOwogICAg
ICAgICAgICAgY3VycmVudExpbmUgPSBuZXh0TGluZSA/IG5leHRMaW5lICsgMSA6IDA7CiAgICAg
ICAgIH0KIAogICAgICAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9CiAgICAgICAgICJI
VFRQLzEuMSAyMDAgT0tcclxuIgogICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7
Ci0gICAgICAgIDo6d3JpdGUoc29ja2V0LCByZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNl
SGVhZGVyKSk7CisgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCByZXNwb25zZUhlYWRl
ciwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7CiAgICAgfSk7CiAKICAgICBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHJldmlzaW9uIDI0NTE3
MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHdv
cmtpbmcgY29weSkKQEAgLTU3LDE4ICs1Nyw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAogVEVTVChXZWJLaXQsIEhUVFBTUHJveHkpCiB7Ci0gICAgVENQU2VydmVyIHNlcnZlcihUQ1BT
ZXJ2ZXI6OlByb3RvY29sOjpIVFRQU1Byb3h5LCBbXSAoU1NMKiBzc2wpIHsKLSAgICAgICAgY2hh
ciByZXF1ZXN0QnVmZmVyWzEwMDBdOwotICAgICAgICBhdXRvIHJlYWRSZXN1bHQgPSBTU0xfcmVh
ZChzc2wsIHJlcXVlc3RCdWZmZXIsIHNpemVvZihyZXF1ZXN0QnVmZmVyKSk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQocmVhZFJlc3VsdCwgcmVhZFJlc3VsdCA+IDApOwotCi0gICAgICAgIGNvbnN0
IGNoYXIqIHJlcGx5ID0gIiIKLSAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgICAg
ICJDb250ZW50LUxlbmd0aDogMzRcclxuXHJcbiIKLSAgICAgICAgIjxzY3JpcHQ+YWxlcnQoJ3N1
Y2Nlc3MhJyk8L3NjcmlwdD4iOwotICAgICAgICBhdXRvIHdyaXRlUmVzdWx0ID0gU1NMX3dyaXRl
KHNzbCwgcmVwbHksIHN0cmxlbihyZXBseSkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHdyaXRl
UmVzdWx0LCB3cml0ZVJlc3VsdCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmxlbihyZXBseSkpKTsK
LSAgICB9KTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBT
UHJveHksIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyk7CiAKICAgICBhdXRvIHN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10p
OwogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0SFRUUFNQcm94eTpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIs
IHNlcnZlci5wb3J0KCldXV07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0JKHJldmlz
aW9uIDI0NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tO
YXZpZ2F0aW9uUmVzcG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5NSw0MSArMTk1LDI4IEBA
IC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWMKIAogQGVuZAogCi1zdGF0
aWMgdm9pZCByZWFkUmVxdWVzdChpbnQgc29ja2V0KQotewotICAgIGNoYXIgcmVhZEJ1ZmZlclsx
MDAwXTsKLSAgICBhdXRvIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNp
emVvZihyZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQ
RUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZm
ZXIpKTsKLX0KLQotc3RhdGljIHZvaWQgd3JpdGVSZXNwb25zZShpbnQgc29ja2V0LCBOU1N0cmlu
ZyAqcmVzcG9uc2UpCi17Ci0gICAgY29uc3QgY2hhciogYnl0ZXMgPSByZXNwb25zZS5VVEY4U3Ry
aW5nOwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gOjp3cml0ZShzb2NrZXQsIGJ5dGVzLCBzdHJs
ZW4oYnl0ZXMpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0
ZW4pLCBzdHJsZW4oYnl0ZXMpKTsKLX0KLQogVEVTVChXZWJLaXQsIFdLTmF2aWdhdGlvblJlc3Bv
bnNlRG93bmxvYWRBdHRyaWJ1dGUpCiB7CiAgICAgYXV0byBnZXREb3dubG9hZFJlc3BvbnNlID0g
W10gKFJldGFpblB0cjxOU1N0cmluZz4gYm9keSkgLT4gUmV0YWluUHRyPFdLTmF2aWdhdGlvblJl
c3BvbnNlPiB7Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlciBzZXJ2ZXIoW2JvZHld
KGludCBzb2NrZXQpIHsKLSAgICAgICAgICAgIHJlYWRSZXF1ZXN0KHNvY2tldCk7CisgICAgICAg
IHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVy
KFtib2R5XShpbnQgc29ja2V0KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBib2R5TGVuZ3RoID0g
W2JvZHkgbGVuZ3RoXTsKLSAgICAgICAgICAgIHdyaXRlUmVzcG9uc2Uoc29ja2V0LCBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgICAgIE5TU3RyaW5nICpmaXJzdFJlc3BvbnNl
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CiAgICAgICAgICAgICAgICAgQCJIVFRQLzEu
MSAyMDAgT0tcclxuIgogICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJWRcclxuXHJc
biIKICAgICAgICAgICAgICAgICAiJUAiLAogICAgICAgICAgICAgICAgIGJvZHlMZW5ndGgsCiAg
ICAgICAgICAgICAgICAgYm9keS5nZXQoKQotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBy
ZWFkUmVxdWVzdChzb2NrZXQpOwotICAgICAgICAgICAgd3JpdGVSZXNwb25zZShzb2NrZXQsCi0g
ICAgICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgIE5TU3RyaW5nICpzZWNvbmRSZXNwb25zZSA9IEAiSFRUUC8xLjEgMjAwIE9LXHJc
biIKICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDZcclxuIgogICAgICAgICAgICAg
ICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1mcm9tSGVhZGVy
LnR4dDtcclxuXHJcbiIKLSAgICAgICAgICAgICAgICAiSGVsbG8hIgotICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgICAgICAiSGVsbG8hIjsKKworICAgICAgICAgICAgVENQU2VydmVyOjpyZWFk
KHNvY2tldCk7CisgICAgICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgZmlyc3RSZXNw
b25zZS5VVEY4U3RyaW5nLCBmaXJzdFJlc3BvbnNlLmxlbmd0aCk7CisgICAgICAgICAgICBUQ1BT
ZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0
LCBzZWNvbmRSZXNwb25zZS5VVEY4U3RyaW5nLCBzZWNvbmRSZXNwb25zZS5sZW5ndGgpOwogICAg
ICAgICB9KTsKICAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW05hdmlnYXRpb25SZXNw
b25zZVRlc3REZWxlZ2F0ZSBuZXddKTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0JKHJldmlzaW9uIDI0
NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRl
RGF0YXN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMzYgKzExMCw5IEBAIFRFU1QoV0tX
ZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVFcGhlbWVyYWwKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOwogfQogCi1zdGF0aWMgdm9pZCByZXNwb25kV2l0aENoYWxsZW5nZVRoZW5P
SyhpbnQgc29ja2V0KQotewotICAgIGNoYXIgcmVhZEJ1ZmZlclsxMDAwXTsKLSAgICBhdXRvIGJ5
dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7
Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nh
c3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAKLSAgICBj
b25zdCBjaGFyKiBjaGFsbGVuZ2VIZWFkZXIgPQotICAgICJIVFRQLzEuMSA0MDEgVW5hdXRob3Jp
emVkXHJcbiIKLSAgICAiRGF0ZTogU2F0LCAyMyBNYXIgMjAxOSAwNjoyOTowMSBHTVRcclxuIgot
ICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCi0gICAgIldXVy1BdXRoZW50aWNhdGU6IEJhc2lj
IHJlYWxtPVwidGVzdHJlYWxtXCJcclxuXHJcbiI7Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSA6
OndyaXRlKHNvY2tldCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJsZW4oY2hhbGxlbmdlSGVhZGVyKSk7
Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSwgc3RybGVu
KGNoYWxsZW5nZUhlYWRlcikpOwotICAgIAotICAgIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQs
IHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVh
ZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwg
c2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAKLSAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRl
ciA9Ci0gICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xy
XG5cclxuIgotICAgICJIZWxsbywgV29ybGQhIjsKLSAgICBieXRlc1dyaXR0ZW4gPSA6OndyaXRl
KHNvY2tldCwgcmVzcG9uc2VIZWFkZXIsIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOwotICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIHN0cmxlbihyZXNwb25z
ZUhlYWRlcikpOwotfQotICAgIAogVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIEZldGNoTm9uUGVy
c2lzdGVudENyZWRlbnRpYWxzKQogewotICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9uZFdpdGhD
aGFsbGVuZ2VUaGVuT0spOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpyZXNwb25k
V2l0aENoYWxsZW5nZVRoZW5PSyk7CiAgICAgCiAgICAgdXNlUGVyc2lzdGVudENyZWRlbnRpYWxT
dG9yYWdlID0gZmFsc2U7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBuZXddKTsKQEAgLTE2NCw3ICsxMzcsNyBAQCBURVNUKFdLV2Vic2l0
ZURhdGFTdG9yZSwgRmV0Y2hOb25QZXJzaXN0CiAKIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBG
ZXRjaFBlcnNpc3RlbnRDcmVkZW50aWFscykKIHsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKHJlc3Bv
bmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6
cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwogICAgIAogICAgIHVzZVBlcnNpc3RlbnRDcmVk
ZW50aWFsU3RvcmFnZSA9IHRydWU7CiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vi
c2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTIwMiw3ICsxNzUsNyBAQCBURVNU
KFdLV2Vic2l0ZURhdGFTdG9yZSwgRmV0Y2hQZXJzaXN0ZW50CiAKIFRFU1QoV0tXZWJzaXRlRGF0
YVN0b3JlLCBSZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiB7Ci0gICAgVENQU2VydmVyIHNl
cnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgVENQU2VydmVyIHNlcnZlcihU
Q1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKIAogICAgIHVzZVBlcnNpc3Rl
bnRDcmVkZW50aWFsU3RvcmFnZSA9IHRydWU7CiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0g
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTI1Myw3ICsyMjYsNyBA
QCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVtb3ZlUGVyc2lzdGVuCiAKIFRFU1QoV0tXZWJz
aXRlRGF0YVN0b3JlLCBSZW1vdmVOb25QZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiB7Ci0gICAgVENQ
U2VydmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgVENQU2VydmVy
IHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKIAogICAgIHVz
ZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSA9IGZhbHNlOwogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369610</attachid>
            <date>2019-05-10 16:06:28 -0700</date>
            <delta_ts>2019-05-10 18:23:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197800-20190510160627.patch</filename>
            <type>text/plain</type>
            <size>42751</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDUxNzIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA1LTEwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGEgdW5pdCB0ZXN0IGZvciBj
bGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oOgor
ICAgICAgICBNb3ZlIGRlY2xhcmF0aW9ucyBmcm9tIEFyZ3VtZW50Q29kZXJzQ0YuY3BwIHNvIHRo
ZXkgY2FuIGJlIHNoYXJlZC4KKwogMjAxOS0wNS0wOCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIFJld29yayBXUEUgUnVuTG9vcFNvdXJjZVBy
aW9yaXR5IHZhbHVlcwpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgJ
KHJldmlzaW9uIDI0NTE3MikKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMCBAQAogCiAjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKIAorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0FjY2Vzc0NvbnRyb2xQcml2Lmg+
CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQ2VydGlmaWNhdGVQcml2Lmg+CisjaW5jbHVkZSA8U2Vj
dXJpdHkvU2VjSWRlbnRpdHlQcml2Lmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjS2V5UHJpdi5o
PgogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY1Rhc2suaD4KICNpbmNsdWRlIDxTZWN1cml0eS9TZWNU
cnVzdFByaXYuaD4KIApAQCAtNjcsNyArNzAsMTEgQEAgV1RGX0VYVEVSTl9DX0JFR0lOCiAKIFNl
Y1Rhc2tSZWYgU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKENGQWxsb2NhdG9yUmVmLCBhdWRp
dF90b2tlbl90KTsKIFNlY1Rhc2tSZWYgU2VjVGFza0NyZWF0ZUZyb21TZWxmKENGQWxsb2NhdG9y
UmVmKTsKLUNGVHlwZVJlZiBTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQoU2VjVGFza1Jl
ZiwgQ0ZTdHJpbmdSZWYgZW50aXRsZW1lbnQsIENGRXJyb3JSZWYgKik7CitDRlR5cGVSZWYgU2Vj
VGFza0NvcHlWYWx1ZUZvckVudGl0bGVtZW50KFNlY1Rhc2tSZWYsIENGU3RyaW5nUmVmIGVudGl0
bGVtZW50LCBDRkVycm9yUmVmKik7CitTZWNJZGVudGl0eVJlZiBTZWNJZGVudGl0eUNyZWF0ZShD
RkFsbG9jYXRvclJlZiwgU2VjQ2VydGlmaWNhdGVSZWYsIFNlY0tleVJlZik7CitPU1N0YXR1cyBT
ZWNLZXlGaW5kV2l0aFBlcnNpc3RlbnRSZWYoQ0ZEYXRhUmVmIHBlcnNpc3RlbnRSZWYsIFNlY0tl
eVJlZiogbG9va2VkVXBEYXRhKTsKK1NlY0FjY2Vzc0NvbnRyb2xSZWYgU2VjQWNjZXNzQ29udHJv
bENyZWF0ZUZyb21EYXRhKENGQWxsb2NhdG9yUmVmLCBDRkRhdGFSZWYsIENGRXJyb3JSZWYqKTsK
K0NGRGF0YVJlZiBTZWNBY2Nlc3NDb250cm9sQ29weURhdGEoU2VjQWNjZXNzQ29udHJvbFJlZik7
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQXNuMVR5cGVzLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ1MTcyKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIHVuaXQg
dGVzdCBmb3IgY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENv
ZGVyc0NGLmNwcDoKKyAgICAgICAgTW92ZSBTUEkgZGVjbGFyYXRpb25zIHRvIFNlY3VyaXR5U1BJ
LmguCisKIDIwMTktMDUtMDkgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBMaW1pdCBudW1iZXIgb2YgcHJlZmV0Y2hlcyBvZiBhIGdpdmVuIHBhZ2UKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCShyZXZpc2lvbiAyNDUx
NzIpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDEsMjkgKzQxLDYgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUg
PFNlY3VyaXR5L1NlY0lkZW50aXR5UHJpdi5oPgotI2VuZGlmCi0KLWV4dGVybiAiQyIgU2VjSWRl
bnRpdHlSZWYgU2VjSWRlbnRpdHlDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBTZWND
ZXJ0aWZpY2F0ZVJlZiBjZXJ0aWZpY2F0ZSwgU2VjS2V5UmVmIHByaXZhdGVLZXkpOwotCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1
ZGUgPFNlY3VyaXR5L1NlY0tleVByaXYuaD4KLSNlbmRpZgotCi1leHRlcm4gIkMiIE9TU3RhdHVz
IFNlY0tleUZpbmRXaXRoUGVyc2lzdGVudFJlZihDRkRhdGFSZWYgcGVyc2lzdGVudFJlZiwgU2Vj
S2V5UmVmKiBsb29rZWRVcERhdGEpOwotI2VuZGlmCi0KLSNpZiBIQVZFKFNFQ19BQ0NFU1NfQ09O
VFJPTCkKLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2luY2x1ZGUgPFNlY3VyaXR5L1Nl
Y0FjY2Vzc0NvbnRyb2xQcml2Lmg+Ci0jZW5kaWYKLQotZXh0ZXJuICJDIiBTZWNBY2Nlc3NDb250
cm9sUmVmIFNlY0FjY2Vzc0NvbnRyb2xDcmVhdGVGcm9tRGF0YShDRkFsbG9jYXRvclJlZiBhbGxv
Y2F0b3IsIENGRGF0YVJlZiBkYXRhLCBDRkVycm9yUmVmICplcnJvcik7Ci1leHRlcm4gIkMiIENG
RGF0YVJlZiBTZWNBY2Nlc3NDb250cm9sQ29weURhdGEoU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nl
c3NfY29udHJvbCk7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIElQQyB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMjQ1MTk3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTktMDUtMTAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgYSB1bml0IHRlc3QgZm9yIGNsaWVu
dCBjZXJ0aWZpY2F0ZSBhdXRoZW50aWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3ODAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTWFrZSBiZXR0ZXIgYWJzdHJhY3Rpb25zIGZvciByZWFkaW5n
IGFuZCB3cml0aW5nIGZyb20vdG8gVENQU2VydmVyLgorICAgICAgICBBZGQgYSB1bml0IHRlc3Qg
dGhhdCBjYXVzZXMgYSBjbGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdl
IHRvIGhhcHBlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6VENQU2VydmVyKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6cmVhZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
Q1BTZXJ2ZXI6OndyaXRlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6cmVz
cG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VENQU2Vy
dmVyOjpyZXNwb25kV2l0aE9LKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5o
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1t
OgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVudGl0eSk6CisgICAgICAgICgtW0NoYWxsZW5n
ZURlbGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBs
ZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW0NsaWVudENlcnRp
ZmljYXRlRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAo
LVtDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtDbGllbnRDZXJ0
aWZpY2F0ZURlbGVnYXRlIGNoYWxsZW5nZUNvdW50XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTogRGVsZXRlZC4K
KyAgICAgICAgKGNyZWRlbnRpYWxXaXRoSWRlbnRpdHlBbmRLZXljaGFpblBhdGgpOiBEZWxldGVk
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGTGlua1JlZmVy
cmVyLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm94eS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9u
c2UubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKHJlYWRSZXF1ZXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKHdyaXRlUmVzcG9uc2UpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZXNwb25kV2l0aENo
YWxsZW5nZVRoZW5PSyk6IERlbGV0ZWQuCisKIDIwMTktMDUtMTAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3Qgd2FpdCB1bnRpbCByZXF1ZXN0UGVybWlz
c2lvbigpIGlzIGNhbGxlZCB0byBmaXJlIGRldmljZW9yaWVudGF0aW9uIGV2ZW50cyBpZiBwZXJt
aXNzaW9uIHdhcyBhbHJlYWR5IGdyYW50ZWQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQ
U2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5j
cHAJKHJldmlzaW9uIDI0NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHRocmVhZD4KICNp
bmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9CYXNlNjQuaD4KIAogZXh0ZXJuICJDIiB7CiAKQEAgLTM4LDYgKzM5LDEwIEBAIHN0
cnVjdCBYNTA5Owogc3RydWN0IFNTTF9DVFg7CiBzdHJ1Y3QgRVZQX1BLRVk7CiBzdHJ1Y3QgU1NM
X01FVEhPRDsKK3N0cnVjdCBYNTA5X1NUT1JFX0NUWCB7CisgICAgdm9pZCogdW51c2VkOworICAg
IFg1MDkqIGNlcnQ7Cit9Owogc3RydWN0IHBlbV9wYXNzd29yZF9jYjsKIGludCBCSU9fZnJlZShC
SU8qKTsKIGludCBTU0xfZnJlZShTU0wqKTsKQEAgLTU2LDYgKzYxLDE1IEBAIGludCBTU0xfQ1RY
X3VzZV9Qcml2YXRlS2V5KFNTTF9DVFgqLCBFVlAKIFNTTCogU1NMX25ldyhTU0xfQ1RYKik7CiBp
bnQgU1NMX2FjY2VwdChTU0wqKTsKIGludCBTU0xfc2V0X2ZkKFNTTCosIGludCk7Cit2b2lkIFNT
TF9DVFhfc2V0X3ZlcmlmeShTU0xfQ1RYKiwgaW50LCBpbnQgKCopKGludCwgWDUwOV9TVE9SRV9D
VFggKikpOwordm9pZCBTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjayhTU0xfQ1RYKiwg
aW50ICgqKShYNTA5X1NUT1JFX0NUWCosIHZvaWQqKSwgdm9pZCopOworaW50IFNTTF9nZXRfZXJy
b3IoY29uc3QgU1NMKiwgaW50KTsKK2ludCBTU0xfcmVhZChTU0wqLCB2b2lkKiwgaW50KTsKK2lu
dCBTU0xfd3JpdGUoU1NMKiwgY29uc3Qgdm9pZCosIGludCk7CitpbnQgaTJkX1g1MDkoWDUwOSos
IHVuc2lnbmVkIGNoYXIqKik7Cit2b2lkIE9QRU5TU0xfZnJlZSh2b2lkKik7CisjZGVmaW5lIFNT
TF9WRVJJRllfUEVFUiAweDAxCisjZGVmaW5lIFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NF
UlQgMHgwMgogCiB9IC8vIGV4dGVybiAiQyIKIApAQCAtOTIsNiArMTA2LDEyIEBAIHRlbXBsYXRl
PD4gc3RydWN0IGRlbGV0ZXI8RVZQX1BLRVk+IHsKICAgICAgICAgRVZQX1BLRVlfZnJlZShrZXkp
OwogICAgIH0KIH07Cit0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPHVpbnQ4X3RbXT4geworICAg
IHZvaWQgb3BlcmF0b3IoKSh1aW50OF90KiBidWZmZXIpCisgICAgeworICAgICAgICBPUEVOU1NM
X2ZyZWUoYnVmZmVyKTsKKyAgICB9Cit9OwogCiBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihGdW5jdGlv
bjx2b2lkKFNvY2tldCk+JiYgY29ubmVjdGlvbkhhbmRsZXIsIHNpemVfdCBjb25uZWN0aW9ucykK
ICAgICA6IG1fY29ubmVjdGlvbkhhbmRsZXIoV1RGTW92ZShjb25uZWN0aW9uSGFuZGxlcikpCkBA
IC0xMDEsNyArMTIxLDcgQEAgVENQU2VydmVyOjpUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChTb2Nr
ZQogCiBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgRnVuY3Rpb248dm9p
ZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIHN0YXJ0U2Vj
dXJlQ29ubmVjdGlvbiA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VjdXJl
Q29ubmVjdGlvbkhhbmRsZXIpXSAoU29ja2V0IHNvY2tldCkgeworICAgIGF1dG8gc3RhcnRTZWN1
cmVDb25uZWN0aW9uID0gW3NlY3VyZUNvbm5lY3Rpb25IYW5kbGVyID0gV1RGTW92ZShzZWN1cmVD
b25uZWN0aW9uSGFuZGxlciksIHByb3RvY29sXSAoU29ja2V0IHNvY2tldCkgewogICAgICAgICBT
U0xfbGlicmFyeV9pbml0KCk7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNTTF9DVFgsIGRl
bGV0ZXI8U1NMX0NUWD4+IGN0eChTU0xfQ1RYX25ldyhTU0x2MjNfc2VydmVyX21ldGhvZCgpKSk7
CkBAIC0xMjksNiArMTQ5LDIwIEBAIFRDUFNlcnZlcjo6VENQU2VydmVyKFByb3RvY29sIHByb3Rv
Y29sLCAKICAgICAgICAgQVNTRVJUKGNlcnRYNTA5KTsKICAgICAgICAgU1NMX0NUWF91c2VfY2Vy
dGlmaWNhdGUoY3R4LmdldCgpLCBjZXJ0WDUwOS5nZXQoKSk7CiAKKyAgICAgICAgaWYgKHByb3Rv
Y29sID09IFByb3RvY29sOjpIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QpIHsKKyAg
ICAgICAgICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShjdHguZ2V0KCksIFNTTF9WRVJJRllfUEVFUiB8
IFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQsIG51bGxwdHIpOworICAgICAgICAgICAg
U1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2FsbGJhY2soY3R4LmdldCgpLCBbXSAoWDUwOV9TVE9S
RV9DVFgqIHN0b3JlX2N0eCwgdm9pZCopIC0+IGludCB7CisgICAgICAgICAgICAgICAgdWludDhf
dCogYnVmZmVyUG9pbnRlciA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAgYXV0byBsZW5ndGgg
PSBpMmRfWDUwOShzdG9yZV9jdHgtPmNlcnQsICZidWZmZXJQb2ludGVyKTsKKyAgICAgICAgICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8dWludDhfdFtdLCBkZWxldGVyPHVpbnQ4X3RbXT4+IGJ1ZmZl
cihidWZmZXJQb2ludGVyKTsKKyAgICAgICAgICAgICAgICBhdXRvIGV4cGVjdGVkQ2VydCA9IHRl
c3RDZXJ0aWZpY2F0ZSgpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxp
bnQ+KGV4cGVjdGVkQ2VydC5zaXplKCkpLCBsZW5ndGgpOworICAgICAgICAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9F
UShidWZmZXIuZ2V0KClbaV0sIGV4cGVjdGVkQ2VydFtpXSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIDE7CisgICAgICAgICAgICB9LCBudWxscHRyKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8v
IFRoaXMgaXMgYSB0ZXN0IGtleSBmcm9tIEJvcmluZ1NTTC4KICAgICAgICAgY2hhciBrS2V5UEVN
W10gPQogICAgICAgICAiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLVxuIgpAQCAtMTY0
LDYgKzE5OCw3IEBAIFRDUFNlcnZlcjo6VENQU2VydmVyKFByb3RvY29sIHByb3RvY29sLCAKIAog
ICAgIHN3aXRjaCAocHJvdG9jb2wpIHsKICAgICBjYXNlIFByb3RvY29sOjpIVFRQUzoKKyAgICBj
YXNlIFByb3RvY29sOjpIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3Q6CiAgICAgICAg
IG1fY29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHN0YXJ0U2VjdXJlQ29ubmVjdGlvbik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHJvdG9jb2w6OkhUVFBTUHJveHk6CkBAIC0yMzksNCAr
Mjc0LDE4MiBAQCBhdXRvIFRDUFNlcnZlcjo6c29ja2V0QmluZExpc3RlbihzaXplX3QgCiAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAordGVtcGxhdGU8PiBWZWN0b3I8dWludDhfdD4gVENQ
U2VydmVyOjpyZWFkKFNvY2tldCBzb2NrZXQpCit7CisgICAgdWludDhfdCBidWZmZXJbMTAwMF07
CisgICAgYXV0byBieXRlc1JlYWQgPSA6OnJlYWQoc29ja2V0LCBidWZmZXIsIHNpemVvZihidWZm
ZXIpKTsKKyAgICBFWFBFQ1RfR1QoYnl0ZXNSZWFkLCAwKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0
aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YoYnVmZmVyKSk7CisKKyAgICBWZWN0
b3I8dWludDhfdD4gdmVjdG9yOworICAgIHZlY3Rvci5hcHBlbmQoYnVmZmVyLCBieXRlc1JlYWQp
OworICAgIHJldHVybiB2ZWN0b3I7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBUQ1BTZXJ2ZXI6Ondy
aXRlKFNvY2tldCBzb2NrZXQsIGNvbnN0IHZvaWQqIHJlc3BvbnNlLCBzaXplX3QgbGVuZ3RoKQor
eworICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gOjp3cml0ZShzb2NrZXQsIHJlc3BvbnNlLCBsZW5n
dGgpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIGxl
bmd0aCk7Cit9CisKK3RlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVhZChT
U0wqIHNzbCkKK3sKKyAgICB1aW50OF90IGJ1ZmZlclsxMDAwXTsKKyAgICBhdXRvIGJ5dGVzUmVh
ZCA9IFNTTF9yZWFkKHNzbCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgRVhQRUNUX0dU
KGJ5dGVzUmVhZCwgMCk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRl
c1JlYWQpIDwgc2l6ZW9mKGJ1ZmZlcikpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsK
KyAgICB2ZWN0b3IuYXBwZW5kKGJ1ZmZlciwgYnl0ZXNSZWFkKTsKKyAgICByZXR1cm4gdmVjdG9y
OworfQorCit0ZW1wbGF0ZTw+IHZvaWQgVENQU2VydmVyOjp3cml0ZShTU0wqIHNzbCwgY29uc3Qg
dm9pZCogcmVzcG9uc2UsIHNpemVfdCBsZW5ndGgpCit7CisgICAgYXV0byBieXRlc1dyaXR0ZW4g
PSBTU0xfd3JpdGUoc3NsLCByZXNwb25zZSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pLCBsZW5ndGgpOworfQorCit2b2lkIFRDUFNlcnZl
cjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0soU29ja2V0IHNvY2tldCkKK3sKKyAgICByZWFk
KHNvY2tldCk7CisgICAgCisgICAgY29uc3QgY2hhciogY2hhbGxlbmdlSGVhZGVyID0KKyAgICAi
SFRUUC8xLjEgNDAxIFVuYXV0aG9yaXplZFxyXG4iCisgICAgIkRhdGU6IFNhdCwgMjMgTWFyIDIw
MTkgMDY6Mjk6MDEgR01UXHJcbiIKKyAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuIgorICAgICJX
V1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT1cInRlc3RyZWFsbVwiXHJcblxyXG4iOworICAg
IHdyaXRlKHNvY2tldCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJsZW4oY2hhbGxlbmdlSGVhZGVyKSk7
CisgICAgCisgICAgcmVhZChzb2NrZXQpOworICAgIAorICAgIGNvbnN0IGNoYXIqIHJlc3BvbnNl
SGVhZGVyID0KKyAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAiQ29udGVudC1MZW5ndGg6
IDEzXHJcblxyXG4iCisgICAgIkhlbGxvLCBXb3JsZCEiOworICAgIHdyaXRlKHNvY2tldCwgcmVz
cG9uc2VIZWFkZXIsIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOworfQorCit2b2lkIFRDUFNlcnZl
cjo6cmVzcG9uZFdpdGhPSyhTU0wqIHNzbCkKK3sKKyAgICByZWFkKHNzbCk7CisgICAgCisgICAg
Y29uc3QgY2hhciogcmVwbHkgPSAiIgorICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICJD
b250ZW50LUxlbmd0aDogMzRcclxuXHJcbiIKKyAgICAiPHNjcmlwdD5hbGVydCgnc3VjY2VzcyEn
KTwvc2NyaXB0PiI7CisgICAgd3JpdGUoc3NsLCByZXBseSwgc3RybGVuKHJlcGx5KSk7Cit9CisK
K1ZlY3Rvcjx1aW50OF90PiBUQ1BTZXJ2ZXI6OnRlc3RDZXJ0aWZpY2F0ZSgpCit7CisgICAgLy8g
Q2VydGlmaWNhdGUgYW5kIHByaXZhdGUga2V5IHdlcmUgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhp
cyBjb21tYW5kOgorICAgIC8vIG9wZW5zc2wgcmVxIC14NTA5IC1uZXdrZXkgcnNhOjQwOTYgLWtl
eW91dCBrZXkucGVtIC1vdXQgY2VydC5wZW0gLWRheXMgMzY1IC1ub2RlcworICAgIC8vIGFuZCBl
bnRlcmluZyB0aGlzIGluZm9ybWF0aW9uOgorICAgIC8qCisgICAgIENvdW50cnkgTmFtZSAoMiBs
ZXR0ZXIgY29kZSkgW106VVMKKyAgICAgU3RhdGUgb3IgUHJvdmluY2UgTmFtZSAoZnVsbCBuYW1l
KSBbXTpOZXcgTWV4aWNvCisgICAgIExvY2FsaXR5IE5hbWUgKGVnLCBjaXR5KSBbXTpTYW50YSBG
ZQorICAgICBPcmdhbml6YXRpb24gTmFtZSAoZWcsIGNvbXBhbnkpIFtdOlNlbGYKKyAgICAgT3Jn
YW5pemF0aW9uYWwgVW5pdCBOYW1lIChlZywgc2VjdGlvbikgW106TXlzZWxmCisgICAgIENvbW1v
biBOYW1lIChlZywgZnVsbHkgcXVhbGlmaWVkIGhvc3QgbmFtZSkgW106TWUKKyAgICAgRW1haWwg
QWRkcmVzcyBbXTptZUBleGFtcGxlLmNvbQorICAgICAqLworICAgIAorICAgIFN0cmluZyBwZW1F
bmNvZGVkQ2VydGlmaWNhdGUoIiIKKyAgICAiTUlJRmdEQ0NBMmdDQ1FDS0hpUFJVNU1RdURBTkJn
a3Foa2lHOXcwQkFRc0ZBRENCZ1RFTE1Ba0dBMVVFQmhNQyIKKyAgICAiVlZNeEV6QVJCZ05WQkFn
TUNrNWxkeUJOWlhocFkyOHhFVEFQQmdOVkJBY01DRk5oYm5SaElFWmxNUTB3Q3dZRCIKKyAgICAi
VlFRS0RBUlRaV3htTVE4d0RRWURWUVFMREFaTmVYTmxiR1l4Q3pBSkJnTlZCQU1NQWsxbE1SMHdH
d1lKS29aSSIKKyAgICAiaHZjTkFRa0JGZzV0WlVCbGVHRnRjR3hsTG1OdmJUQWVGdzB4T1RBek1q
TXdOVFV3TVRSYUZ3MHlNREF6TWpJdyIKKyAgICAiTlRVd01UUmFNSUdCTVFzd0NRWURWUVFHRXdK
VlV6RVRNQkVHQTFVRUNBd0tUbVYzSUUxbGVHbGpiekVSTUE4RyIKKyAgICAiQTFVRUJ3d0lVMkZ1
ZEdFZ1JtVXhEVEFMQmdOVkJBb01CRk5sYkdZeER6QU5CZ05WQkFzTUJrMTVjMlZzWmpFTCIKKyAg
ICAiTUFrR0ExVUVBd3dDVFdVeEhUQWJCZ2txaGtpRzl3MEJDUUVXRG0xbFFHVjRZVzF3YkdVdVky
OXRNSUlDSWpBTiIKKyAgICAiQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBM3Jo
TjRTUGc4VlkvUHRHRE5LWTNUOUpJU2dieSIKKyAgICAiOFlHTUp4MHZPK1laRlptM0czZnNUVXN5
dkR5RUh3cXA1YWJDWlJCL0J5MVB3V2tOcmZ4bi9YUDhQMDM0SlBsRSIKKyAgICAiNmlyVml1QVlR
cnFVaDZrN1pSOENwT001R0VjUlpnQVVKR0dRd05sT2tFd2FIbk1HYzhTc0h1cmdEUGg1WEJwZyIK
KyAgICAiYkR5dGQ3Qkp1QjFOb0kvS0ptaGNhamtBdVYzdmFyUyt1UExvZlBITnFlK2NMOGhObmpa
UXdIV2FyUDQ1a3M0ZSIKKyAgICAiQmNPRDd0d3F4dUhuVm0vRldFcnBZOFdzNXMxTXJQVGhVZERh
aGpFTWYrWWZESjlLTDh5MzA0eVM4SjhmZUN4WSIKKyAgICAiZmNINEJ2Z0x0Sm1CTkhKZ2ozZU5E
L0VNWmpKZ3oyRnNCanJKazhrS0QzMWN3KzRXcDhVRjRza1dYQ2Y0NittTiIKKyAgICAiT0hwMTNQ
ZVNDWkx5RjRaQUhhelVWa25EUGNjMllOcldWVjFpNm4zVDE1a0kwVDVaN2JzdGRtQUx1U2tFMmN1
SiIKKyAgICAiU1ZOTzZnUitac1ZSVG5ldVF4d1dUVTBNTkVoQVBGT1gyQmhHUDVlaXNnRVV6a254
TUpkZEZEbjlXeGtsdTFKaCIKKyAgICAiZ2t6QVNBLyszQW1sckZaTVBoT2hqRXVsMHpqZ05SNVJC
bDFHOEh6OTJMQXg1VUVEQnRkTGc3MUkrSThBelFPaCIKKyAgICAiZDZMdEJla0VDeEExNnBTYXBw
ZzV2Y1c5Wi84TjZabHNIbloyRnp0QTBuQ09mbGtvTzlpZWpPcGN1Rk40RVZZRCIKKyAgICAieEl0
d2N0S3cxTENlTkQvczRrbW9SUm5YYlg3azlPNmNJMVVVV001OTVHc3U1dFBhMzNNNUFaRkNhdjJn
T1Z1WSIKKyAgICAiZGpwcFMwSE9mbzVodjZjQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NB
Z0VBWThFV2FBRkVmdzdPVitvRCIKKyAgICAiWFVaU0lZWHEzRUgyRTVwM3EzOEFoSU9MUmpCdUIr
dXR5dTdRNnJ4TU1IdXcyVHRzTit6YkFSN3lyamZzc2VBMyIKKyAgICAiNFRNMXhlNE5rN05WTkhS
b1pRK0MwSXFmOWZ2Y2lvTXZUMXRUcm1hME1oS1NqRlFweCtQdnlMVmJEN1lkUDg2TCIKKyAgICAi
bWVlaEtxVTdoMXBMR0FpR3dqb2FaOVliaDZLdXEvTVRBSHkzRDgrd2s3QjM2VkJ4RjZkaVZsVVBa
SlpRV0tKeSIKKyAgICAiTUt5OUczc3plMVpHdDlXZUUwQU12a04ySEllZjBIVEtDVVozZUJ2ZWNP
TWlqeEwwV2hXbzVReWY1azZ5bENhVSIKKyAgICAiMmZ4K004RGZEY3dGbzd0U2dMeFNLM0dDRnB4
UGZpRHQ2UWs4Yzl0UW41UzFnWTN0NkxKdXdWQ0Z3VUlYbE5rQiIKKyAgICAiSkQ3K2NaMVovdENy
RWh6ajNZQ2swdVVVOENpZm9VKzRGRytIR0ZQK1NQenRzWUUwNTVtU2ozK0VzaCtveW9WQiIKKyAg
ICAiZ0JIOTBzRTJUMWkwZU5JOGY2MW9TZ3dZRmVIc2Y3ZkM3MVhFWExGUitHd05kbXdxbG13bERa
RXBUdTdCb05OKyIKKyAgICAicTcrVGZrMU1Sa0psTDFQSDZZdS9JUGhaaU5oNHR5SXFET3RsWWZ6
cDU3N0ErT1VVK3E1UFBSRlJJc3FoZU94dCIKKyAgICAibU5sSHg0VXpkNFUzSVRmbW9nSmF6anF3
WU8ydmlCWlk0alVRbXlaczc1ZUgvamlVRkhXUnNoYTNBZG5XNUxXYSIKKyAgICAiRzNQRm5ZYlc4
dXJIME5TSkcvVysvOURBK1k3QWEwY3M0VFBwdUJHWjBOVTFXOTRPb0NNbzRsa082SC95NkxldSIK
KyAgICAiM3ZqWkQzeTlrWms3bXJlOVhId2tJOE1kSzVzPSIpOworICAgIAorICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3I7CisgICAgYmFzZTY0RGVjb2RlKHBlbUVuY29kZWRDZXJ0aWZpY2F0ZSwg
dmVjdG9yLCBXVEY6OkJhc2U2NERlY29kZU9wdGlvbnM6OkJhc2U2NERlZmF1bHQpOworICAgIHJl
dHVybiB2ZWN0b3I7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBUQ1BTZXJ2ZXI6OnRlc3RQcml2YXRl
S2V5KCkKK3sKKyAgICBTdHJpbmcgcGVtRW5jb2RlZFByaXZhdGVLZXkoIiIKKyAgICAiTUlJSlFn
SUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NDU3d3Z2drb0FnRUFBb0lDQVFEZXVFM2hJK0R4Vmo4
KyIKKyAgICAiMFlNMHBqZFAwa2hLQnZMeGdZd25IUzg3NWhrVm1iY2JkK3hOU3pLOFBJUWZDcW5s
cHNKbEVIOEhMVS9CYVEydCIKKyAgICAiL0dmOWMvdy9UZmdrK1VUcUt0V0s0QmhDdXBTSHFUdGxI
d0trNHprWVJ4Rm1BQlFrWVpEQTJVNlFUQm9lY3daeiIKKyAgICAieEt3ZTZ1QU0rSGxjR21Cc1BL
MTNzRW00SFUyZ2o4b21hRnhxT1FDNVhlOXF0TDY0OHVoODhjMnA3NXd2eUUyZSIKKyAgICAiTmxE
QWRacXMvam1Temg0Rnc0UHUzQ3JHNGVkV2I4VllTdWxqeGF6bXpVeXM5T0ZSME5xR01ReC81aDhN
bjBvdiIKKyAgICAiekxmVGpKTHdueDk0TEZoOXdmZ0crQXUwbVlFMGNtQ1BkNDBQOFF4bU1tRFBZ
V3dHT3NtVHlRb1BmVnpEN2hhbiIKKyAgICAieFFYaXlSWmNKL2pyNlkwNGVuWGM5NUlKa3ZJWGhr
QWRyTlJXU2NNOXh6WmcydFpWWFdMcWZkUFhtUWpSUGxudCIKKyAgICAidXkxMllBdTVLUVRaeTRs
SlUwN3FCSDVteFZGT2Q2NURIQlpOVFF3MFNFQThVNWZZR0VZL2w2S3lBUlRPU2ZFdyIKKyAgICAi
bDEwVU9mMWJHU1c3VW1HQ1RNQklELzdjQ2FXc1ZrdytFNkdNUzZYVE9PQTFIbEVHWFVid2ZQM1lz
REhsUVFNRyIKKyAgICAiMTB1RHZVajRqd0ROQTZGM291MEY2UVFMRURYcWxKcW1tRG05eGIxbi93
M3BtV3dlZG5ZWE8wRFNjSTUrV1NnNyIKKyAgICAiMko2TTZseTRVM2dSVmdQRWkzQnkwckRVc0o0
MFAremlTYWhGR2RkdGZ1VDA3cHdqVlJSWXpuM2theTdtMDlyZiIKKyAgICAiY3prQmtVSnEvYUE1
VzVoMk9tbExRYzUram1HL3B3SURBUUFCQW9JQ0FHcmEvQ3AvZjBYcXZrOVNUK1BydDIvcCIKKyAg
ICAia050TGVEWGNsTFNUY1AwSkNaSHVmUWFGdys3Vm5GTHBxZTRHdkxxOUJsbGN6OFZPdlF3cmJl
L0N3TlcrVnhDOCIKKyAgICAiUk1qZ2UycnFBQ2d3R2hPeDF0ODdsNDZOa1VRdzdFeTBsQ2xlOGty
K01HZ0dHb1pxck1GZEtJUlVvTXY0bm1RNiIKKyAgICAidG1jMUZIdjVwTFJlOVErTHA1bllRd0dv
WW1ab1VPdWVvT2FPTDA4bTQ5cEdYUWtpTjhwSkRNeFNmTzNKdnRzdSIKKyAgICAiNGNxSWI2a09R
L2RPMUlzMUNUdlVSbGQxSVlMSDdZdVNoaTRaRXgyZzJhYzJVeXZ0NllteHh2TW1BakJTS3BHZCIK
KyAgICAibG9pZXBobzMvTnJER1VLZHYzcTlRWXl6ckE4dzlHVDMyTERHcWdCWEppMXNjQkk4Y0V4
a3A2UDRpRGxsaHY3cyIKKyAgICAidlpzc3B2b2JSSmEzTzF6azg2M0xIWGEyNEpDbnl1emltcWV6
WjJPbGg3bDRvbEhvWUQ2VUZDOWpmZDRLY0hSZyIKKyAgICAiMWM0c3lxdC9uOEFLLzFzMWVCZlM5
ZHpiNUNmanQ5TXRLWXNseHZMenExV3dPSU53ejhySVl1UmkwUGNMbTlocyIKKyAgICAibCtVMHUv
ekIzN2VNZ3Y2K2l3RFhrMWZTamJ1WXNFL2JFVFdZa25LR05GRkw1SlNpS1Y3V0NwbWdOVFRyckU0
SyIKKyAgICAiUzhFNmhSOXVQT0Fhb3c3dlBDQ3Q0eExYLzQ4bDJFSTZaZXE2cU9wcTFsSjJxY3k4
cjR0eXVRZ05STFFNa1pnMSIKKyAgICAiQXhRbDZ2blE4Q3U0aXUrTkloZWYweTlaN3FrZk52WmVD
ajVHbEZCOWMyWWpWOFkybWRXZkpCNHFXSzNaLytNSiIKKyAgICAiUU9UQ0tSejcvTHhMTkJVZXBS
akpBb0lCQVFEM1pzVjV0V1U5WlNLY1ZKOURDN1RaazBQK2xoY2lzWnIwbkwwdCIKKyAgICAiUFF1
UU8rcEh2UEkxTXFSbk5za0hKaHlQbnFWQ2krZHA4OXRLL0l0NTkwVUxsOG9zNlVDMUZoeXRCUG9U
MVlQZCIKKyAgICAiV0dXZXAycE9jN2JWcGk0aXAzMXkrSW1mZ2VaeUp0TUFUZG1lM2tCUEFPZTVO
R0U5R2lnL2w1bnFMeWIwMnNkMSIKKyAgICAiUVc3TzBHZHFMeDNEcEx3NFNMbGhNZjZhRTB1R1JT
OHNmQjA4NWU0REduNTRPMndFVnVTWnFabDVOTkVmMzVSeiIKKyAgICAiWGdpbTNoK1JXRjFaRlNR
empCL3NtTjBaaCt2M0l6N3ZFSjFoMHl3VjZvK0d6dkhrUDlIRTZnTElodHlWOE9FdyIKKyAgICAi
dmx5WWsxR2E3cFVWR1JoOG84T01lNlJSOURRaTdKcUM0ZUk3R2NrbUJ6YXF6SmNEQW9JQkFRRG1k
ZTZBVGV3MyIKKyAgICAiSDliUUs2eG5iTUluY3ovQ09wSUlTZGxjRmIyM0FIR0ViNGI0VmhKRkJO
d3hyTkw2dEhLU0ZMZVlaRkxoVGRoeCIKKyAgICAiUGZYeVVMSE5mNW96ZEVrbDBXcmxlcm9EZG9n
YkN5V2c1dUpwOS9RNjhzYndiR3I4Q0FsTzdaSFlUcmp1UWYxSyIKKyAgICAiQVM5cENtNzdLUDNr
MmQzVWxHK3BlbERqWExvQnppWHEwTmp4SnBNejQ1dnJJeDhyU1d6Rk5qTUdqWFQzZlhhUyIKKyAg
ICAiOTYyay8wQVhlaTUvYmZ1aEJ4bG03UG5pMGJRSklXRmtlYVV1R2xyT2FIRFJ4VWlYMXI5SVpT
OXd2NWxrMVB0ZyIKKyAgICAiaWRwYmNXeXcxOGNGR1R2amRLaFJiWkg4RXNibXptTk5zQ0dkZ0NN
cUZrS1lzVzE2UUtvQ2ovTkFvdkkzbjBxbiIKKyAgICAiNlZvUmEwc0dtVEdOQW9JQkFDbC9tcVpF
c0J1eFNESHkyOWdTTVo3QlhnbHBRYTQzSG1mamxyUHM1bkNtTERFbSIKKyAgICAiVjNabTdUN0c2
TWVETkEwL0xqZFFZbHZhWkxGYVZVYjdIQ0RLc0VZQ1JqRlo2U3Q0aHo0bWRYeitZK1ZON2I0RiIK
KyAgICAiR09rVGUrK2lLcC9MWXNKWHRzRDFGRFdiMldJVm83SGMxQUd6OEkrZ1FKb1NJdVl1VEpt
THpTTTArNUpEVU9WMSIKKyAgICAieThkU2JhUC9SdUV2MHFZamtHcVFWazVlNzBTVXlPektWK1p4
Q1RoZEh2Rkxpb3ZUT1RUZ2V2VXpFNzV4eWRmRyIKKyAgICAiZTdvQ210VHVyemd2bC82OVZ1NVln
aWoxbjRDV1BISGNxNENRVy9ET1o3QmhGR0J3aHJXNzl2b0hKRjhQYndQTyIKKyAgICAiKzBEVHVk
REdZM25BRDVzVG5GOHpVdU9iWWloSnRmemovdDU5Zk9NQ2dnRUJBSVl1dUJVQVNiNjJ6UTRidjUv
ZyIKKyAgICAiVlJNL0tTcGZpOU5EbkVqZlo3eDdoNXpDaXVWZ3gvWmpwQWxRUk84dnpWMThyb0VP
T0t0eDljbkpkOEFFZCtIYyIKKyAgICAibjkzQm9TMWh4MG1oc1ZoKzFUUlp3eWp5QlhZSnBxd0Qy
d3oxTXoxWE9JUTZFcWJNL3lQS1REMmdmd2c3eU81MyIKKyAgICAicVl4cnhac1dhZ1ZWY0c5UStB
UkJFUmF0VHdMcG9OK2ZjSkx4dWg0ci9DYS9MZXBzeG1Pckt6VGEvTUdLMUxoVyIKKyAgICAicldn
SWsyL29nRVBMU3B0ajJkMVBFRE8rR0F6Rno0VktqaFcxTmxVaDlmR2k2SUpQTEhMbkJ3M29kYmkw
UzhLVCIKKyAgICAiZ0E5WjUrTEJjNWNsb3RBUDVydFFBOFdoL1pDRW9QVEtUVEEyYmpXMkhNYXRK
Y2JHbVIwRnBDUXIzQU0wWTFTTyIKKyAgICAiTWFrQ2dnRUFMcnU2UVo2WVV3SkpHNDVIMWVxL3JQ
ZERZOHRxcWpKVlZpS29CVnZ6S2ovWGZKWllFVlFpSXc1cCIKKyAgICAidW9HaERveUZ1RlVlSWgv
ZDFKYzJJcnV5Mldqb09raVFZdEl1Z0RISHhScmtMZFFjalBobENUQ0UvbW15U0p0KyIKKyAgICAi
YmtVYmlISWJROGRKNXlqOFNLcjBiSHpxRXRPeTkvSmVSamtZR0hDNmJWV3BxNUZBMk1CaGY0ZE5q
SjRVRGxuVCIKKyAgICAidnVlUGNUanI3bm5mWTFzenR2ZlZsOUQ4ZG1nVCtUQm5PT1Y2eVdqMWdt
NWJTMUR4UVNMZ05tdEt4Sjh0QWgydSIKKyAgICAiZEVPYnZjcFNoUDIySXRPVmpTYW1wUnVBdVJH
MjZaZW1FYkdDSTNKNk1xeDN5Nm0rNkh3dWx0c2d0ZHpEZ3JGZSIKKyAgICAicUpmVThiYmRidTJw
aTQ3WTRGZEpLMEhMZmZsNVJ3PT0iKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7Cisg
ICAgYmFzZTY0RGVjb2RlKHBlbUVuY29kZWRQcml2YXRlS2V5LCB2ZWN0b3IsIFdURjo6QmFzZTY0
RGVjb2RlT3B0aW9uczo6QmFzZTY0RGVmYXVsdCk7CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKyAg
ICAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVENQU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2
ZXIuaAkocmV2aXNpb24gMjQ1MTcyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKLWV4dGVybiAiQyIgewogc3RydWN0IFNT
TDsKLWludCBTU0xfcmVhZChTU0wqLCB2b2lkKiwgaW50KTsKLWludCBTU0xfd3JpdGUoU1NMKiwg
Y29uc3Qgdm9pZCosIGludCk7Ci19CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAt
NDQsMTQgKzQwLDI1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIFBvcnQgSW52YWxp
ZFBvcnQgPSAwOwogICAgIAogICAgIFRDUFNlcnZlcihGdW5jdGlvbjx2b2lkKFNvY2tldCk+JiYs
IHNpemVfdCBjb25uZWN0aW9ucyA9IDEpOwotICAgIGVudW0gY2xhc3MgUHJvdG9jb2wgOiBib29s
IHsKLSAgICAgICAgSFRUUFMsIEhUVFBTUHJveHkKKyAgICBlbnVtIGNsYXNzIFByb3RvY29sIDog
dWludDhfdCB7CisgICAgICAgIEhUVFBTLAorICAgICAgICBIVFRQU1Byb3h5LAorICAgICAgICBI
VFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QsCiAgICAgfTsKICAgICBUQ1BTZXJ2ZXIo
UHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYpOwogICAgIH5UQ1BTZXJ2ZXIoKTsKICAg
ICAKICAgICBQb3J0IHBvcnQoKSBjb25zdCB7IHJldHVybiBtX3BvcnQ7IH0KICAgICAKKyAgICBz
dGF0aWMgdm9pZCByZXNwb25kV2l0aE9LKFNTTCopOworICAgIHN0YXRpYyB2b2lkIHJlc3BvbmRX
aXRoQ2hhbGxlbmdlVGhlbk9LKFNvY2tldCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHJlYWQoVCk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RhdGljIHZvaWQgd3JpdGUoVCwgY29uc3Qgdm9pZCosIHNpemVfdCk7CisKKyAgICBzdGF0aWMg
VmVjdG9yPHVpbnQ4X3Q+IHRlc3RQcml2YXRlS2V5KCk7CisgICAgc3RhdGljIFZlY3Rvcjx1aW50
OF90PiB0ZXN0Q2VydGlmaWNhdGUoKTsKKyAgICAKIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8U29j
a2V0PiBzb2NrZXRCaW5kTGlzdGVuKHNpemVfdCBjb25uZWN0aW9ucyk7CiAgICAgdm9pZCBsaXN0
ZW5Gb3JDb25uZWN0aW9ucyhzaXplX3QgY29ubmVjdGlvbnMpOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0JKHJldmlzaW9u
IDI0NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxl
bmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNDEgKzMzLDE3IEBACiAjaW1wb3J0IDxXZWJL
aXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRh
UmVjb3JkUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3Rm
L3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiBzdGF0aWMgYm9vbCBuYXZpZ2F0aW9uRmluaXNo
ZWQ7CiAKLXN0YXRpYyB2b2lkIHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKGludCBzb2NrZXQp
CitzdGF0aWMgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVudGlhbFdpdGhJZGVudGl0
eSgpCiB7Ci0gICAgY2hhciByZWFkQnVmZmVyWzEwMDBdOwotICAgIGF1dG8gYnl0ZXNSZWFkID0g
OjpyZWFkKHNvY2tldCwgcmVhZEJ1ZmZlciwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICBFWFBF
Q1RfR1QoYnl0ZXNSZWFkLCAwKTsKLSAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ5dGVzUmVhZCkgPCBzaXplb2YocmVhZEJ1ZmZlcikpOworICAgIFZlY3Rvcjx1aW50OF90PiBj
ZXJ0aWZpY2F0ZUJ5dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp0ZXN0Q2VydGlmaWNh
dGUoKTsKKyAgICBSZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVSZWY+IGNlcnRpZmljYXRlID0gYWRv
cHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChfX2JyaWRnZSBDRkRh
dGFSZWYpW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMuZGF0YSgpIGxlbmd0
aDpjZXJ0aWZpY2F0ZUJ5dGVzLnNpemUoKV0pKTsKICAgICAKLSAgICBjb25zdCBjaGFyKiBjaGFs
bGVuZ2VIZWFkZXIgPQotICAgICJIVFRQLzEuMSA0MDEgVW5hdXRob3JpemVkXHJcbiIKLSAgICAi
RGF0ZTogU2F0LCAyMyBNYXIgMjAxOSAwNjoyOTowMSBHTVRcclxuIgotICAgICJDb250ZW50LUxl
bmd0aDogMFxyXG4iCi0gICAgIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwidGVzdHJl
YWxtXCJcclxuXHJcbiI7Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwg
Y2hhbGxlbmdlSGVhZGVyLCBzdHJsZW4oY2hhbGxlbmdlSGVhZGVyKSk7Ci0gICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSwgc3RybGVuKGNoYWxsZW5nZUhlYWRl
cikpOwotICAgIAotICAgIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNp
emVvZihyZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQ
RUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZm
ZXIpKTsKLSAgICAKLSAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9Ci0gICAgIkhUVFAv
MS4xIDIwMCBPS1xyXG4iCi0gICAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5cclxuIgotICAgICJI
ZWxsbywgV29ybGQhIjsKLSAgICBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgcmVzcG9u
c2VIZWFkZXIsIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOwotICAgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOwotfQot
Ci0jaWYgUExBVEZPUk0oTUFDKQotCi1zdGF0aWMgc3RkOjpwYWlyPFJldGFpblB0cjxOU1VSTENy
ZWRlbnRpYWw+LCBSZXRhaW5QdHI8TlNTdHJpbmc+PiBjcmVkZW50aWFsV2l0aElkZW50aXR5QW5k
S2V5Y2hhaW5QYXRoKCkKLXsKLSAgICAvLyBDZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgd2Vy
ZSBnZW5lcmF0ZWQgYnkgcnVubmluZyB0aGlzIGNvbW1hbmQ6Ci0gICAgLy8gb3BlbnNzbCByZXEg
LXg1MDkgLW5ld2tleSByc2E6NDA5NiAta2V5b3V0IGtleS5wZW0gLW91dCBjZXJ0LnBlbSAtZGF5
cyAzNjUgLW5vZGVzCi0gICAgLy8gYW5kIGVudGVyaW5nIHRoaXMgaW5mb3JtYXRpb246Ci0gICAg
LyoKLSAgICAgQ291bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKSBbXTpVUwotICAgICBTdGF0ZSBv
ciBQcm92aW5jZSBOYW1lIChmdWxsIG5hbWUpIFtdOk5ldyBNZXhpY28KLSAgICAgTG9jYWxpdHkg
TmFtZSAoZWcsIGNpdHkpIFtdOlNhbnRhIEZlCi0gICAgIE9yZ2FuaXphdGlvbiBOYW1lIChlZywg
Y29tcGFueSkgW106U2VsZgotICAgICBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0
aW9uKSBbXTpNeXNlbGYKLSAgICAgQ29tbW9uIE5hbWUgKGVnLCBmdWxseSBxdWFsaWZpZWQgaG9z
dCBuYW1lKSBbXTpNZQotICAgICBFbWFpbCBBZGRyZXNzIFtdOm1lQGV4YW1wbGUuY29tCi0gICAg
ICovCi0gICAgCi0gICAgTlNTdHJpbmcgKnBlbUVuY29kZWRDZXJ0aWZpY2F0ZSA9IEAiIgotICAg
ICJNSUlGZ0RDQ0EyZ0NDUUNLSGlQUlU1TVF1REFOQmdrcWhraUc5dzBCQVFzRkFEQ0JnVEVMTUFr
R0ExVUVCaE1DIgotICAgICJWVk14RXpBUkJnTlZCQWdNQ2s1bGR5Qk5aWGhwWTI4eEVUQVBCZ05W
QkFjTUNGTmhiblJoSUVabE1RMHdDd1lEIgotICAgICJWUVFLREFSVFpXeG1NUTh3RFFZRFZRUUxE
QVpOZVhObGJHWXhDekFKQmdOVkJBTU1BazFsTVIwd0d3WUpLb1pJIgotICAgICJodmNOQVFrQkZn
NXRaVUJsZUdGdGNHeGxMbU52YlRBZUZ3MHhPVEF6TWpNd05UVXdNVFJhRncweU1EQXpNakl3Igot
ICAgICJOVFV3TVRSYU1JR0JNUXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRTFs
ZUdsamJ6RVJNQThHIgotICAgICJBMVVFQnd3SVUyRnVkR0VnUm1VeERUQUxCZ05WQkFvTUJGTmxi
R1l4RHpBTkJnTlZCQXNNQmsxNWMyVnNaakVMIgotICAgICJNQWtHQTFVRUF3d0NUV1V4SFRBYkJn
a3Foa2lHOXcwQkNRRVdEbTFsUUdWNFlXMXdiR1V1WTI5dE1JSUNJakFOIgotICAgICJCZ2txaGtp
Rzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUEzcmhONFNQZzhWWS9QdEdETktZM1Q5SklTZ2J5
IgotICAgICI4WUdNSngwdk8rWVpGWm0zRzNmc1RVc3l2RHlFSHdxcDVhYkNaUkIvQnkxUHdXa05y
ZnhuL1hQOFAwMzRKUGxFIgotICAgICI2aXJWaXVBWVFycVVoNms3WlI4Q3BPTTVHRWNSWmdBVUpH
R1F3TmxPa0V3YUhuTUdjOFNzSHVyZ0RQaDVYQnBnIgotICAgICJiRHl0ZDdCSnVCMU5vSS9LSm1o
Y2Fqa0F1VjN2YXJTK3VQTG9mUEhOcWUrY0w4aE5ualpRd0hXYXJQNDVrczRlIgotICAgICJCY09E
N3R3cXh1SG5WbS9GV0VycFk4V3M1czFNclBUaFVkRGFoakVNZitZZkRKOUtMOHkzMDR5UzhKOGZl
Q3hZIgotICAgICJmY0g0QnZnTHRKbUJOSEpnajNlTkQvRU1aakpnejJGc0JqckprOGtLRDMxY3cr
NFdwOFVGNHNrV1hDZjQ2K21OIgotICAgICJPSHAxM1BlU0NaTHlGNFpBSGF6VVZrbkRQY2MyWU5y
V1ZWMWk2bjNUMTVrSTBUNVo3YnN0ZG1BTHVTa0UyY3VKIgotICAgICJTVk5PNmdSK1pzVlJUbmV1
UXh3V1RVME1ORWhBUEZPWDJCaEdQNWVpc2dFVXprbnhNSmRkRkRuOVd4a2x1MUpoIgotICAgICJn
a3pBU0EvKzNBbWxyRlpNUGhPaGpFdWwwempnTlI1UkJsMUc4SHo5MkxBeDVVRURCdGRMZzcxSStJ
OEF6UU9oIgotICAgICJkNkx0QmVrRUN4QTE2cFNhcHBnNXZjVzlaLzhONlpsc0huWjJGenRBMG5D
T2Zsa29POWllak9wY3VGTjRFVllEIgotICAgICJ4SXR3Y3RLdzFMQ2VORC9zNGttb1JSblhiWDdr
OU82Y0kxVVVXTTU5NUdzdTV0UGEzM001QVpGQ2F2MmdPVnVZIgotICAgICJkanBwUzBIT2ZvNWh2
NmNDQXdFQUFUQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FnRUFZOEVXYUFGRWZ3N09WK29EIgotICAg
ICJYVVpTSVlYcTNFSDJFNXAzcTM4QWhJT0xSakJ1Qit1dHl1N1E2cnhNTUh1dzJUdHNOK3piQVI3
eXJqZnNzZUEzIgotICAgICI0VE0xeGU0Tms3TlZOSFJvWlErQzBJcWY5ZnZjaW9NdlQxdFRybWEw
TWhLU2pGUXB4K1B2eUxWYkQ3WWRQODZMIgotICAgICJtZWVoS3FVN2gxcExHQWlHd2pvYVo5WWJo
Nkt1cS9NVEFIeTNEOCt3azdCMzZWQnhGNmRpVmxVUFpKWlFXS0p5IgotICAgICJNS3k5RzNzemUx
Wkd0OVdlRTBBTXZrTjJISWVmMEhUS0NVWjNlQnZlY09NaWp4TDBXaFdvNVF5ZjVrNnlsQ2FVIgot
ICAgICIyZngrTThEZkRjd0ZvN3RTZ0x4U0szR0NGcHhQZmlEdDZRazhjOXRRbjVTMWdZM3Q2TEp1
d1ZDRndVSVhsTmtCIgotICAgICJKRDcrY1oxWi90Q3JFaHpqM1lDazB1VVU4Q2lmb1UrNEZHK0hH
RlArU1B6dHNZRTA1NW1TajMrRXNoK295b1ZCIgotICAgICJnQkg5MHNFMlQxaTBlTkk4ZjYxb1Nn
d1lGZUhzZjdmQzcxWEVYTEZSK0d3TmRtd3FsbXdsRFpFcFR1N0JvTk4rIgotICAgICJxNytUZmsx
TVJrSmxMMVBINll1L0lQaFppTmg0dHlJcURPdGxZZnpwNTc3QStPVVUrcTVQUFJGUklzcWhlT3h0
IgotICAgICJtTmxIeDRVemQ0VTNJVGZtb2dKYXpqcXdZTzJ2aUJaWTRqVVFteVpzNzVlSC9qaVVG
SFdSc2hhM0Fkblc1TFdhIgotICAgICJHM1BGblliVzh1ckgwTlNKRy9XKy85REErWTdBYTBjczRU
UHB1QkdaME5VMVc5NE9vQ01vNGxrTzZIL3k2TGV1IgotICAgICIzdmpaRDN5OWtaazdtcmU5WEh3
a0k4TWRLNXM9IjsKLSAgICAKLSAgICBOU1N0cmluZyAqcGVtRW5jb2RlZFByaXZhdGVLZXkgPSBA
IiIKLSAgICAiTUlJSlFnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NDU3d3Z2drb0FnRUFBb0lD
QVFEZXVFM2hJK0R4Vmo4KyIKLSAgICAiMFlNMHBqZFAwa2hLQnZMeGdZd25IUzg3NWhrVm1iY2Jk
K3hOU3pLOFBJUWZDcW5scHNKbEVIOEhMVS9CYVEydCIKLSAgICAiL0dmOWMvdy9UZmdrK1VUcUt0
V0s0QmhDdXBTSHFUdGxId0trNHprWVJ4Rm1BQlFrWVpEQTJVNlFUQm9lY3daeiIKLSAgICAieEt3
ZTZ1QU0rSGxjR21Cc1BLMTNzRW00SFUyZ2o4b21hRnhxT1FDNVhlOXF0TDY0OHVoODhjMnA3NXd2
eUUyZSIKLSAgICAiTmxEQWRacXMvam1Temg0Rnc0UHUzQ3JHNGVkV2I4VllTdWxqeGF6bXpVeXM5
T0ZSME5xR01ReC81aDhNbjBvdiIKLSAgICAiekxmVGpKTHdueDk0TEZoOXdmZ0crQXUwbVlFMGNt
Q1BkNDBQOFF4bU1tRFBZV3dHT3NtVHlRb1BmVnpEN2hhbiIKLSAgICAieFFYaXlSWmNKL2pyNlkw
NGVuWGM5NUlKa3ZJWGhrQWRyTlJXU2NNOXh6WmcydFpWWFdMcWZkUFhtUWpSUGxudCIKLSAgICAi
dXkxMllBdTVLUVRaeTRsSlUwN3FCSDVteFZGT2Q2NURIQlpOVFF3MFNFQThVNWZZR0VZL2w2S3lB
UlRPU2ZFdyIKLSAgICAibDEwVU9mMWJHU1c3VW1HQ1RNQklELzdjQ2FXc1ZrdytFNkdNUzZYVE9P
QTFIbEVHWFVid2ZQM1lzREhsUVFNRyIKLSAgICAiMTB1RHZVajRqd0ROQTZGM291MEY2UVFMRURY
cWxKcW1tRG05eGIxbi93M3BtV3dlZG5ZWE8wRFNjSTUrV1NnNyIKLSAgICAiMko2TTZseTRVM2dS
VmdQRWkzQnkwckRVc0o0MFAremlTYWhGR2RkdGZ1VDA3cHdqVlJSWXpuM2theTdtMDlyZiIKLSAg
ICAiY3prQmtVSnEvYUE1VzVoMk9tbExRYzUram1HL3B3SURBUUFCQW9JQ0FHcmEvQ3AvZjBYcXZr
OVNUK1BydDIvcCIKLSAgICAia050TGVEWGNsTFNUY1AwSkNaSHVmUWFGdys3Vm5GTHBxZTRHdkxx
OUJsbGN6OFZPdlF3cmJlL0N3TlcrVnhDOCIKLSAgICAiUk1qZ2UycnFBQ2d3R2hPeDF0ODdsNDZO
a1VRdzdFeTBsQ2xlOGtyK01HZ0dHb1pxck1GZEtJUlVvTXY0bm1RNiIKLSAgICAidG1jMUZIdjVw
TFJlOVErTHA1bllRd0dvWW1ab1VPdWVvT2FPTDA4bTQ5cEdYUWtpTjhwSkRNeFNmTzNKdnRzdSIK
LSAgICAiNGNxSWI2a09RL2RPMUlzMUNUdlVSbGQxSVlMSDdZdVNoaTRaRXgyZzJhYzJVeXZ0Nllt
eHh2TW1BakJTS3BHZCIKLSAgICAibG9pZXBobzMvTnJER1VLZHYzcTlRWXl6ckE4dzlHVDMyTERH
cWdCWEppMXNjQkk4Y0V4a3A2UDRpRGxsaHY3cyIKLSAgICAidlpzc3B2b2JSSmEzTzF6azg2M0xI
WGEyNEpDbnl1emltcWV6WjJPbGg3bDRvbEhvWUQ2VUZDOWpmZDRLY0hSZyIKLSAgICAiMWM0c3lx
dC9uOEFLLzFzMWVCZlM5ZHpiNUNmanQ5TXRLWXNseHZMenExV3dPSU53ejhySVl1UmkwUGNMbTlo
cyIKLSAgICAibCtVMHUvekIzN2VNZ3Y2K2l3RFhrMWZTamJ1WXNFL2JFVFdZa25LR05GRkw1SlNp
S1Y3V0NwbWdOVFRyckU0SyIKLSAgICAiUzhFNmhSOXVQT0Fhb3c3dlBDQ3Q0eExYLzQ4bDJFSTZa
ZXE2cU9wcTFsSjJxY3k4cjR0eXVRZ05STFFNa1pnMSIKLSAgICAiQXhRbDZ2blE4Q3U0aXUrTklo
ZWYweTlaN3FrZk52WmVDajVHbEZCOWMyWWpWOFkybWRXZkpCNHFXSzNaLytNSiIKLSAgICAiUU9U
Q0tSejcvTHhMTkJVZXBSakpBb0lCQVFEM1pzVjV0V1U5WlNLY1ZKOURDN1RaazBQK2xoY2lzWnIw
bkwwdCIKLSAgICAiUFF1UU8rcEh2UEkxTXFSbk5za0hKaHlQbnFWQ2krZHA4OXRLL0l0NTkwVUxs
OG9zNlVDMUZoeXRCUG9UMVlQZCIKLSAgICAiV0dXZXAycE9jN2JWcGk0aXAzMXkrSW1mZ2VaeUp0
TUFUZG1lM2tCUEFPZTVOR0U5R2lnL2w1bnFMeWIwMnNkMSIKLSAgICAiUVc3TzBHZHFMeDNEcEx3
NFNMbGhNZjZhRTB1R1JTOHNmQjA4NWU0REduNTRPMndFVnVTWnFabDVOTkVmMzVSeiIKLSAgICAi
WGdpbTNoK1JXRjFaRlNRempCL3NtTjBaaCt2M0l6N3ZFSjFoMHl3VjZvK0d6dkhrUDlIRTZnTElo
dHlWOE9FdyIKLSAgICAidmx5WWsxR2E3cFVWR1JoOG84T01lNlJSOURRaTdKcUM0ZUk3R2NrbUJ6
YXF6SmNEQW9JQkFRRG1kZTZBVGV3MyIKLSAgICAiSDliUUs2eG5iTUluY3ovQ09wSUlTZGxjRmIy
M0FIR0ViNGI0VmhKRkJOd3hyTkw2dEhLU0ZMZVlaRkxoVGRoeCIKLSAgICAiUGZYeVVMSE5mNW96
ZEVrbDBXcmxlcm9EZG9nYkN5V2c1dUpwOS9RNjhzYndiR3I4Q0FsTzdaSFlUcmp1UWYxSyIKLSAg
ICAiQVM5cENtNzdLUDNrMmQzVWxHK3BlbERqWExvQnppWHEwTmp4SnBNejQ1dnJJeDhyU1d6Rk5q
TUdqWFQzZlhhUyIKLSAgICAiOTYyay8wQVhlaTUvYmZ1aEJ4bG03UG5pMGJRSklXRmtlYVV1R2xy
T2FIRFJ4VWlYMXI5SVpTOXd2NWxrMVB0ZyIKLSAgICAiaWRwYmNXeXcxOGNGR1R2amRLaFJiWkg4
RXNibXptTk5zQ0dkZ0NNcUZrS1lzVzE2UUtvQ2ovTkFvdkkzbjBxbiIKLSAgICAiNlZvUmEwc0dt
VEdOQW9JQkFDbC9tcVpFc0J1eFNESHkyOWdTTVo3QlhnbHBRYTQzSG1mamxyUHM1bkNtTERFbSIK
LSAgICAiVjNabTdUN0c2TWVETkEwL0xqZFFZbHZhWkxGYVZVYjdIQ0RLc0VZQ1JqRlo2U3Q0aHo0
bWRYeitZK1ZON2I0RiIKLSAgICAiR09rVGUrK2lLcC9MWXNKWHRzRDFGRFdiMldJVm83SGMxQUd6
OEkrZ1FKb1NJdVl1VEptTHpTTTArNUpEVU9WMSIKLSAgICAieThkU2JhUC9SdUV2MHFZamtHcVFW
azVlNzBTVXlPektWK1p4Q1RoZEh2Rkxpb3ZUT1RUZ2V2VXpFNzV4eWRmRyIKLSAgICAiZTdvQ210
VHVyemd2bC82OVZ1NVlnaWoxbjRDV1BISGNxNENRVy9ET1o3QmhGR0J3aHJXNzl2b0hKRjhQYndQ
TyIKLSAgICAiKzBEVHVkREdZM25BRDVzVG5GOHpVdU9iWWloSnRmemovdDU5Zk9NQ2dnRUJBSVl1
dUJVQVNiNjJ6UTRidjUvZyIKLSAgICAiVlJNL0tTcGZpOU5EbkVqZlo3eDdoNXpDaXVWZ3gvWmpw
QWxRUk84dnpWMThyb0VPT0t0eDljbkpkOEFFZCtIYyIKLSAgICAibjkzQm9TMWh4MG1oc1ZoKzFU
Ulp3eWp5QlhZSnBxd0Qyd3oxTXoxWE9JUTZFcWJNL3lQS1REMmdmd2c3eU81MyIKLSAgICAicVl4
cnhac1dhZ1ZWY0c5UStBUkJFUmF0VHdMcG9OK2ZjSkx4dWg0ci9DYS9MZXBzeG1Pckt6VGEvTUdL
MUxoVyIKLSAgICAicldnSWsyL29nRVBMU3B0ajJkMVBFRE8rR0F6Rno0VktqaFcxTmxVaDlmR2k2
SUpQTEhMbkJ3M29kYmkwUzhLVCIKLSAgICAiZ0E5WjUrTEJjNWNsb3RBUDVydFFBOFdoL1pDRW9Q
VEtUVEEyYmpXMkhNYXRKY2JHbVIwRnBDUXIzQU0wWTFTTyIKLSAgICAiTWFrQ2dnRUFMcnU2UVo2
WVV3SkpHNDVIMWVxL3JQZERZOHRxcWpKVlZpS29CVnZ6S2ovWGZKWllFVlFpSXc1cCIKLSAgICAi
dW9HaERveUZ1RlVlSWgvZDFKYzJJcnV5Mldqb09raVFZdEl1Z0RISHhScmtMZFFjalBobENUQ0Uv
bW15U0p0KyIKLSAgICAiYmtVYmlISWJROGRKNXlqOFNLcjBiSHpxRXRPeTkvSmVSamtZR0hDNmJW
V3BxNUZBMk1CaGY0ZE5qSjRVRGxuVCIKLSAgICAidnVlUGNUanI3bm5mWTFzenR2ZlZsOUQ4ZG1n
VCtUQm5PT1Y2eVdqMWdtNWJTMUR4UVNMZ05tdEt4Sjh0QWgydSIKLSAgICAiZEVPYnZjcFNoUDIy
SXRPVmpTYW1wUnVBdVJHMjZaZW1FYkdDSTNKNk1xeDN5Nm0rNkh3dWx0c2d0ZHpEZ3JGZSIKLSAg
ICAicUpmVThiYmRidTJwaTQ3WTRGZEpLMEhMZmZsNVJ3PT0iOwotICAgIAotICAgIE5TRGF0YSAq
ZGVyRW5jb2RlZENlcnRpZmljYXRlID0gW1tbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVu
Y29kZWRTdHJpbmc6cGVtRW5jb2RlZENlcnRpZmljYXRlIG9wdGlvbnM6MF0gYXV0b3JlbGVhc2Vd
OwotICAgIFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gY2VydGlmaWNhdGUgPSBhZG9wdENG
KFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJl
ZilkZXJFbmNvZGVkQ2VydGlmaWNhdGUpKTsKLSAgICAKLSAgICBOU0RhdGEgKmRlckVuY29kZWRQ
cml2YXRlS2V5ID0gW1tbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6
cGVtRW5jb2RlZFByaXZhdGVLZXkgb3B0aW9uczowXSBhdXRvcmVsZWFzZV07CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHByaXZhdGVLZXlCeXRlcyA9IFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6dGVz
dFByaXZhdGVLZXkoKTsKKyAgICBOU0RhdGEgKmRlckVuY29kZWRQcml2YXRlS2V5ID0gW05TRGF0
YSBkYXRhV2l0aEJ5dGVzOnByaXZhdGVLZXlCeXRlcy5kYXRhKCkgbGVuZ3RoOnByaXZhdGVLZXlC
eXRlcy5zaXplKCldOwogICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7CiAgICAgICAgIChp
ZClrU2VjQXR0cktleVR5cGU6IChpZClrU2VjQXR0cktleVR5cGVSU0EsCiAgICAgICAgIChpZClr
U2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCkBAIC0xNzksMzIg
KzU1LDEyIEBAIHN0YXRpYyBzdGQ6OnBhaXI8UmV0YWluUHRyPE5TVVJMQ3JlZGVudGkKICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CiAgICAgRVhQRUNUX05PVF9OVUxMKHByaXZhdGVLZXkuZ2V0KCkp
OwogCi0gICAgU2VjS2V5Y2hhaW5SZWYga2V5Y2hhaW5SZWYgPSBudWxscHRyOwotICAgIGNvbnN0
IGNoYXIqIGtleWNoYWluUGFzc3dvcmQgPSAidGVzdHBhc3N3b3JkIjsKLSAgICBOU1N0cmluZyAq
a2V5Y2hhaW5QYXRoID0gW05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiVGVzdEtleWNoYWluIl07Ci0gICAgT1NTdGF0dXMgc3RhdHVzID0gU2Vj
S2V5Y2hhaW5DcmVhdGUoW2tleWNoYWluUGF0aCBVVEY4U3RyaW5nXSwgc3RybGVuKGtleWNoYWlu
UGFzc3dvcmQpLCBrZXljaGFpblBhc3N3b3JkLCBOTywgbnVsbHB0ciwgJmtleWNoYWluUmVmKTsK
LSAgICBFWFBFQ1RfVFJVRShzdGF0dXMgPT0gZXJyU2VjU3VjY2Vzcyk7Ci0gICAgUmV0YWluUHRy
PFNlY0tleWNoYWluUmVmPiBrZXljaGFpbiA9IGFkb3B0Q0Yoa2V5Y2hhaW5SZWYpOwotICAgIEVY
UEVDVF9OT1RfTlVMTChrZXljaGFpbik7Ci0KLSAgICBTZWNFeHRlcm5hbEl0ZW1UeXBlIHR5cGUg
PSBrU2VjSXRlbVR5cGVQcml2YXRlS2V5OwotICAgIHN0YXR1cyA9IFNlY0l0ZW1JbXBvcnQoKF9f
YnJpZGdlIENGRGF0YVJlZilkZXJFbmNvZGVkUHJpdmF0ZUtleSwgbnVsbHB0ciwgbnVsbHB0ciwg
JnR5cGUsIDAsIG51bGxwdHIsIGtleWNoYWluLmdldCgpLCBudWxscHRyKTsKLSAgICBFWFBFQ1Rf
VFJVRShzdGF0dXMgPT0gZXJyU2VjU3VjY2Vzcyk7Ci0KLSAgICBTZWNJZGVudGl0eVJlZiBpZGVu
dGl0eVJlZiA9IG51bGxwdHI7Ci0gICAgc3RhdHVzID0gU2VjSWRlbnRpdHlDcmVhdGVXaXRoQ2Vy
dGlmaWNhdGUoa2V5Y2hhaW4uZ2V0KCksIGNlcnRpZmljYXRlLmdldCgpLCAmaWRlbnRpdHlSZWYp
OwotICAgIEVYUEVDVF9OT1RfTlVMTChpZGVudGl0eVJlZik7Ci0gICAgRVhQRUNUX1RSVUUoc3Rh
dHVzID09IGVyclNlY1N1Y2Nlc3MpOwotICAgIFJldGFpblB0cjxTZWNJZGVudGl0eVJlZj4gaWRl
bnRpdHkgPSBhZG9wdENGKGlkZW50aXR5UmVmKTsKKyAgICBSZXRhaW5QdHI8U2VjSWRlbnRpdHlS
ZWY+IGlkZW50aXR5ID0gYWRvcHRDRihTZWNJZGVudGl0eUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBjZXJ0aWZpY2F0ZS5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSkpOworICAgIEVYUEVDVF9O
T1RfTlVMTChpZGVudGl0eSk7CiAgICAgCi0gICAgcmV0dXJuIHsKLSAgICAgICAgW05TVVJMQ3Jl
ZGVudGlhbCBjcmVkZW50aWFsV2l0aElkZW50aXR5OmlkZW50aXR5LmdldCgpIGNlcnRpZmljYXRl
czpAWyhpZCljZXJ0aWZpY2F0ZS5nZXQoKV0gcGVyc2lzdGVuY2U6TlNVUkxDcmVkZW50aWFsUGVy
c2lzdGVuY2VOb25lXSwKLSAgICAgICAga2V5Y2hhaW5QYXRoCi0gICAgfTsKKyAgICByZXR1cm4g
W05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsV2l0aElkZW50aXR5OmlkZW50aXR5LmdldCgpIGNl
cnRpZmljYXRlczpAWyhpZCljZXJ0aWZpY2F0ZS5nZXQoKV0gcGVyc2lzdGVuY2U6TlNVUkxDcmVk
ZW50aWFsUGVyc2lzdGVuY2VOb25lXTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4g
a2V5Y2hhaW5QYXRoOwotCiBAaW50ZXJmYWNlIENoYWxsZW5nZURlbGVnYXRlIDogTlNPYmplY3Qg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogQGVuZAogCkBAIC0yMjksMTggKzg1LDE1IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWQKICAgICBFWFBFQ1RfVFJVRShbcHJv
dGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1
dGhlbnRpY2F0aW9uTWV0aG9kSFRUUEJhc2ljXSk7CiAgICAgRVhQRUNUX0VRKFsoTlNIVFRQVVJM
UmVzcG9uc2UgKiljaGFsbGVuZ2UuZmFpbHVyZVJlc3BvbnNlIHN0YXR1c0NvZGVdLCA0MDEpOwog
Ci0gICAgYXV0byBwYWlyID0gY3JlZGVudGlhbFdpdGhJZGVudGl0eUFuZEtleWNoYWluUGF0aCgp
OwotICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsLCBwYWlyLmZpcnN0LmdldCgpKTsKLSAgICBrZXljaGFpblBhdGggPSBXVEZNb3ZlKHBh
aXIuc2Vjb25kKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlVXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpLmdldCgpKTsKIH0KIAog
QGVuZAogCi1uYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7Ci0KIFRFU1QoQ2hhbGxlbmdlLCBTZWNJ
ZGVudGl0eSkKIHsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhl
bk9LKTsKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBUQ1BTZXJ2ZXIg
c2VydmVyKFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwogCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtDaGFsbGVuZ2VEZWxlZ2F0ZSBuZXddKTsKQEAgLTI0OCwxNiArMTAxLDYwIEBA
IFRFU1QoQ2hhbGxlbmdlLCBTZWNJZGVudGl0eSkKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgp
XV1dXTsKIAogICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvbkZpbmlzaGVkKTsKK30KKworQGludGVy
ZmFjZSBDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlPiB7CisgICAgc2l6ZV90IF9jaGFsbGVuZ2VDb3VudDsKKyAgICBib29sIF9yZWNlaXZl
ZENsaWVudENlcnRpZmljYXRlQ2hhbGxlbmdlOworfQorLSAoc2l6ZV90KWNoYWxsZW5nZUNvdW50
OworLSAoYm9vbClyZWNlaXZlZENsaWVudENlcnRpZmljYXRlQ2hhbGxlbmdlOworQGVuZAorCitA
aW1wbGVtZW50YXRpb24gQ2xpZW50Q2VydGlmaWNhdGVEZWxlZ2F0ZQorCistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjoobnVsbF91bnNwZWNp
ZmllZCBXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgbmF2aWdhdGlvbkZpbmlzaGVk
ID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBfY2hhbGxlbmdlQ291bnQrKzsKKworICAgIGlmIChbY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRo
ZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0XSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVk
ZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZl
clRydXN0XSk7CiAgICAgCi0gICAgRVhQRUNUX05PVF9OVUxMKGtleWNoYWluUGF0aC5nZXQoKSk7
Ci0gICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSByZW1vdmVJdGVtQXRQYXRoOmtleWNoYWluUGF0aC5nZXQoKSBlcnJvcjomZXJyb3Jd
OwotICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRShbY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxB
dXRoZW50aWNhdGlvbk1ldGhvZENsaWVudENlcnRpZmljYXRlXSk7CisgICAgX3JlY2VpdmVkQ2xp
ZW50Q2VydGlmaWNhdGVDaGFsbGVuZ2UgPSB0cnVlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsV2l0aElkZW50
aXR5KCkuZ2V0KCkpOwogfQogCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCistIChzaXpl
X3QpY2hhbGxlbmdlQ291bnQKK3sKKyAgICByZXR1cm4gX2NoYWxsZW5nZUNvdW50OworfQorCist
IChib29sKXJlY2VpdmVkQ2xpZW50Q2VydGlmaWNhdGVDaGFsbGVuZ2UKK3sKKyAgICByZXR1cm4g
X3JlY2VpdmVkQ2xpZW50Q2VydGlmaWNhdGVDaGFsbGVuZ2U7Cit9CiAKLSNlbmRpZgorQGVuZAor
CitURVNUKENoYWxsZW5nZSwgQ2xpZW50Q2VydGlmaWNhdGUpCit7CisgICAgdXNpbmcgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEk7CisgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3Rv
Y29sOjpIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QsIFRDUFNlcnZlcjo6cmVzcG9u
ZFdpdGhPSyk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0NsaWVudENlcnRpZmljYXRlRGVsZWdhdGUg
bmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6
Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgCisgICAgVXRpbDo6cnVu
KCZuYXZpZ2F0aW9uRmluaXNoZWQpOworICAgIEVYUEVDVF9FUShbZGVsZWdhdGUgY2hhbGxlbmdl
Q291bnRdLCAydWxsKTsKK30KIAogc3RhdGljIGJvb2wgcmVjZWl2ZWRTZWNvbmRDaGFsbGVuZ2U7
CiBzdGF0aWMgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gcGVyc2lzdGVudENyZWRlbnRpYWw7
CkBAIC0yOTAsNyArMTg3LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZAogVEVTVChDaGFsbGVuZ2UsIEJhc2ljUHJvcG9zZWRDcmVkZW50aWFsKQogewogICAgIHVz
aW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwotICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9u
ZFdpdGhDaGFsbGVuZ2VUaGVuT0ssIDIpOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVy
OjpyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSywgMik7CiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gcmV0YWluUHRyKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25X
aXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJhc2ljUHJvcG9zZWRDcmVkZW50aWFsUGx1Z0luIl0p
OwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbUHJvcG9zZWRDcmVkZW50aWFsRGVsZWdhdGUgbmV3
XSk7CkBAIC00MDYsMTYgKzMwMywxMyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNU
KFdlYktpdCwgU2VydmVyVHJ1c3QpCiB7CiAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6
OlByb3RvY29sOjpIVFRQUywgW10gKFNTTCogc3NsKSB7Ci0gICAgICAgIGNoYXIgcmVxdWVzdEJ1
ZmZlclsxMDAwXTsKLSAgICAgICAgYXV0byByZWFkUmVzdWx0ID0gU1NMX3JlYWQoc3NsLCByZXF1
ZXN0QnVmZmVyLCBzaXplb2YocmVxdWVzdEJ1ZmZlcikpOwotICAgICAgICBBU1NFUlRfVU5VU0VE
KHJlYWRSZXN1bHQsIHJlYWRSZXN1bHQgPiAwKTsKKyAgICAgICAgVENQU2VydmVyOjpyZWFkKHNz
bCk7CiAKICAgICAgICAgY29uc3QgY2hhciogcmVwbHkgPSAiIgogICAgICAgICAiSFRUUC8xLjEg
MjAwIE9LXHJcbiIKICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5cclxuIgogICAgICAg
ICAiSGVsbG8sIFdvcmxkISI7Ci0gICAgICAgIGF1dG8gd3JpdGVSZXN1bHQgPSBTU0xfd3JpdGUo
c3NsLCByZXBseSwgc3RybGVuKHJlcGx5KSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQod3JpdGVS
ZXN1bHQsIHdyaXRlUmVzdWx0ID09IHN0YXRpY19jYXN0PGludD4oc3RybGVuKHJlcGx5KSkpOwor
ICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNzbCwgcmVwbHksIHN0cmxlbihyZXBseSkpOwogICAg
IH0pOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QREZMaW5rUmVmZXJyZXIu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
REZMaW5rUmVmZXJyZXIubW0JKHJldmlzaW9uIDI0NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGTGlua1JlZmVycmVyLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03MiwyNiArNzIsMjQgQEAgc3RhdGljIFJldGFpblB0cjxOU0RhdGE+IGNyZWF0ZVBERldpdGhM
aQogCiBURVNUKFdlYktpdCwgUERGTGlua1JlZmVycmVyKQogewotICAgIFRlc3RXZWJLaXRBUEk6
OlRDUFNlcnZlciBzZXJ2ZXIoW10gKGludCBzb2NrZXQpIHsKLSAgICAgICAgY2hhciByZWFkQnVm
ZmVyWzEwMDBdOwotICAgICAgICBtZW1zZXQocmVhZEJ1ZmZlciwgMCwgMTAwMCk7Ci0KKyAgICB1
c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFtdIChp
bnQgc29ja2V0KSB7CiAgICAgICAgIC8vIFRoaXMgYXNzdW1lcyBhbGwgdGhlIGRhdGEgZnJvbSB0
aGUgSFRUUCByZXF1ZXN0IGlzIGF2YWlsYWJsZSB0byBiZSByZWFkIGF0IG9uY2UsCiAgICAgICAg
IC8vIHdoaWNoIGlzIHByb2JhYmx5IGFuIG9rYXkgYXNzdW1wdGlvbi4KLSAgICAgICAgOjpyZWFk
KHNvY2tldCwgcmVhZEJ1ZmZlciwgOTk5KTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlcXVl
c3QgPSBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKIAogICAgICAgICAvLyBMb29rIGZvciBhIHJl
ZmVyZXIgaGVhZGVyLgotICAgICAgICBjaGFyKiBjdXJyZW50TGluZSA9IHJlYWRCdWZmZXI7Cisg
ICAgICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRMaW5lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
cmVxdWVzdC5kYXRhKCkpOwogICAgICAgICB3aGlsZSAoY3VycmVudExpbmUpIHsKICAgICAgICAg
ICAgIEVYUEVDVF9ORShzdHJuY2FzZWNtcChjdXJyZW50TGluZSwgInJlZmVyZXI6IiwgOCksIDAp
OwotICAgICAgICAgICAgY2hhciogbmV4dExpbmUgPSBzdHJjaHIoY3VycmVudExpbmUsICdcbicp
OworICAgICAgICAgICAgY29uc3QgY2hhciogbmV4dExpbmUgPSBzdHJjaHIoY3VycmVudExpbmUs
ICdcbicpOwogICAgICAgICAgICAgY3VycmVudExpbmUgPSBuZXh0TGluZSA/IG5leHRMaW5lICsg
MSA6IDA7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9
CiAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgogICAgICAgICAiQ29udGVudC1MZW5ndGg6
IDBcclxuXHJcbiI7Ci0gICAgICAgIDo6d3JpdGUoc29ja2V0LCByZXNwb25zZUhlYWRlciwgc3Ry
bGVuKHJlc3BvbnNlSGVhZGVyKSk7CisgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBy
ZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7CiAgICAgfSk7CiAKICAgICBS
ZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHJl
dmlzaW9uIDI0NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDE4ICs1Nyw3IEBAIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogVEVTVChXZWJLaXQsIEhUVFBTUHJveHkpCiB7Ci0gICAgVENQU2VydmVy
IHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQU1Byb3h5LCBbXSAoU1NMKiBzc2wpIHsK
LSAgICAgICAgY2hhciByZXF1ZXN0QnVmZmVyWzEwMDBdOwotICAgICAgICBhdXRvIHJlYWRSZXN1
bHQgPSBTU0xfcmVhZChzc2wsIHJlcXVlc3RCdWZmZXIsIHNpemVvZihyZXF1ZXN0QnVmZmVyKSk7
Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVhZFJlc3VsdCwgcmVhZFJlc3VsdCA+IDApOwotCi0g
ICAgICAgIGNvbnN0IGNoYXIqIHJlcGx5ID0gIiIKLSAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xy
XG4iCi0gICAgICAgICJDb250ZW50LUxlbmd0aDogMzRcclxuXHJcbiIKLSAgICAgICAgIjxzY3Jp
cHQ+YWxlcnQoJ3N1Y2Nlc3MhJyk8L3NjcmlwdD4iOwotICAgICAgICBhdXRvIHdyaXRlUmVzdWx0
ID0gU1NMX3dyaXRlKHNzbCwgcmVwbHksIHN0cmxlbihyZXBseSkpOwotICAgICAgICBBU1NFUlRf
VU5VU0VEKHdyaXRlUmVzdWx0LCB3cml0ZVJlc3VsdCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmxl
bihyZXBseSkpKTsKLSAgICB9KTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJv
dG9jb2w6OkhUVFBTUHJveHksIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyk7CiAKICAgICBhdXRv
IHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uIG5ld10pOwogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0SFRUUFNQcm94eTpbTlNV
UkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3
LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9u
c2UubW0JKHJldmlzaW9uIDI0NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5NSw0
MSArMTk1LDI4IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWMKIAog
QGVuZAogCi1zdGF0aWMgdm9pZCByZWFkUmVxdWVzdChpbnQgc29ja2V0KQotewotICAgIGNoYXIg
cmVhZEJ1ZmZlclsxMDAwXTsKLSAgICBhdXRvIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJl
YWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwg
MCk7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6
ZW9mKHJlYWRCdWZmZXIpKTsKLX0KLQotc3RhdGljIHZvaWQgd3JpdGVSZXNwb25zZShpbnQgc29j
a2V0LCBOU1N0cmluZyAqcmVzcG9uc2UpCi17Ci0gICAgY29uc3QgY2hhciogYnl0ZXMgPSByZXNw
b25zZS5VVEY4U3RyaW5nOwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gOjp3cml0ZShzb2NrZXQs
IGJ5dGVzLCBzdHJsZW4oYnl0ZXMpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90
PihieXRlc1dyaXR0ZW4pLCBzdHJsZW4oYnl0ZXMpKTsKLX0KLQogVEVTVChXZWJLaXQsIFdLTmF2
aWdhdGlvblJlc3BvbnNlRG93bmxvYWRBdHRyaWJ1dGUpCiB7CiAgICAgYXV0byBnZXREb3dubG9h
ZFJlc3BvbnNlID0gW10gKFJldGFpblB0cjxOU1N0cmluZz4gYm9keSkgLT4gUmV0YWluUHRyPFdL
TmF2aWdhdGlvblJlc3BvbnNlPiB7Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlciBz
ZXJ2ZXIoW2JvZHldKGludCBzb2NrZXQpIHsKLSAgICAgICAgICAgIHJlYWRSZXF1ZXN0KHNvY2tl
dCk7CisgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworICAgICAgICBUQ1BT
ZXJ2ZXIgc2VydmVyKFtib2R5XShpbnQgc29ja2V0KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBi
b2R5TGVuZ3RoID0gW2JvZHkgbGVuZ3RoXTsKLSAgICAgICAgICAgIHdyaXRlUmVzcG9uc2Uoc29j
a2V0LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgICAgIE5TU3RyaW5nICpm
aXJzdFJlc3BvbnNlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CiAgICAgICAgICAgICAg
ICAgQCJIVFRQLzEuMSAyMDAgT0tcclxuIgogICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0
aDogJWRcclxuXHJcbiIKICAgICAgICAgICAgICAgICAiJUAiLAogICAgICAgICAgICAgICAgIGJv
ZHlMZW5ndGgsCiAgICAgICAgICAgICAgICAgYm9keS5nZXQoKQotICAgICAgICAgICAgXSk7Ci0g
ICAgICAgICAgICByZWFkUmVxdWVzdChzb2NrZXQpOwotICAgICAgICAgICAgd3JpdGVSZXNwb25z
ZShzb2NrZXQsCi0gICAgICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAg
ICAgICAgXTsKKyAgICAgICAgICAgIE5TU3RyaW5nICpzZWNvbmRSZXNwb25zZSA9IEAiSFRUUC8x
LjEgMjAwIE9LXHJcbiIKICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDZcclxuIgog
ICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFt
ZT1mcm9tSGVhZGVyLnR4dDtcclxuXHJcbiIKLSAgICAgICAgICAgICAgICAiSGVsbG8hIgotICAg
ICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAiSGVsbG8hIjsKKworICAgICAgICAgICAgVENQ
U2VydmVyOjpyZWFkKHNvY2tldCk7CisgICAgICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tl
dCwgZmlyc3RSZXNwb25zZS5VVEY4U3RyaW5nLCBmaXJzdFJlc3BvbnNlLmxlbmd0aCk7CisgICAg
ICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6
d3JpdGUoc29ja2V0LCBzZWNvbmRSZXNwb25zZS5VVEY4U3RyaW5nLCBzZWNvbmRSZXNwb25zZS5s
ZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW05h
dmlnYXRpb25SZXNwb25zZVRlc3REZWxlZ2F0ZSBuZXddKTsKICAgICAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0J
KHJldmlzaW9uIDI0NTE3MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMzYgKzExMCw5
IEBAIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVFcGhlbWVyYWwKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQogCi1zdGF0aWMgdm9pZCByZXNwb25kV2l0aENo
YWxsZW5nZVRoZW5PSyhpbnQgc29ja2V0KQotewotICAgIGNoYXIgcmVhZEJ1ZmZlclsxMDAwXTsK
LSAgICBhdXRvIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihy
ZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RS
VUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsK
LSAgICAKLSAgICBjb25zdCBjaGFyKiBjaGFsbGVuZ2VIZWFkZXIgPQotICAgICJIVFRQLzEuMSA0
MDEgVW5hdXRob3JpemVkXHJcbiIKLSAgICAiRGF0ZTogU2F0LCAyMyBNYXIgMjAxOSAwNjoyOTow
MSBHTVRcclxuIgotICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCi0gICAgIldXVy1BdXRoZW50
aWNhdGU6IEJhc2ljIHJlYWxtPVwidGVzdHJlYWxtXCJcclxuXHJcbiI7Ci0gICAgYXV0byBieXRl
c1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJsZW4oY2hhbGxl
bmdlSGVhZGVyKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0
dGVuKSwgc3RybGVuKGNoYWxsZW5nZUhlYWRlcikpOwotICAgIAotICAgIGJ5dGVzUmVhZCA9IDo6
cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNU
X0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90Pihi
eXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAKLSAgICBjb25zdCBjaGFyKiBy
ZXNwb25zZUhlYWRlciA9Ci0gICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgIkNvbnRlbnQt
TGVuZ3RoOiAxM1xyXG5cclxuIgotICAgICJIZWxsbywgV29ybGQhIjsKLSAgICBieXRlc1dyaXR0
ZW4gPSA6OndyaXRlKHNvY2tldCwgcmVzcG9uc2VIZWFkZXIsIHN0cmxlbihyZXNwb25zZUhlYWRl
cikpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIHN0
cmxlbihyZXNwb25zZUhlYWRlcikpOwotfQotICAgIAogVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUs
IEZldGNoTm9uUGVyc2lzdGVudENyZWRlbnRpYWxzKQogewotICAgIFRDUFNlcnZlciBzZXJ2ZXIo
cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2Vy
dmVyOjpyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CiAgICAgCiAgICAgdXNlUGVyc2lzdGVu
dENyZWRlbnRpYWxTdG9yYWdlID0gZmFsc2U7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKQEAgLTE2NCw3ICsxMzcsNyBAQCBU
RVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgRmV0Y2hOb25QZXJzaXN0CiAKIFRFU1QoV0tXZWJzaXRl
RGF0YVN0b3JlLCBGZXRjaFBlcnNpc3RlbnRDcmVkZW50aWFscykKIHsKLSAgICBUQ1BTZXJ2ZXIg
c2VydmVyKHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVy
KFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwogICAgIAogICAgIHVzZVBl
cnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSA9IHRydWU7CiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0
b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTIwMiw3ICsx
NzUsNyBAQCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgRmV0Y2hQZXJzaXN0ZW50CiAKIFRFU1Qo
V0tXZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiB7Ci0gICAg
VENQU2VydmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgVENQU2Vy
dmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKIAogICAg
IHVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSA9IHRydWU7CiAgICAgYXV0byB3ZWJzaXRl
RGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTI1
Myw3ICsyMjYsNyBAQCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVtb3ZlUGVyc2lzdGVuCiAK
IFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVOb25QZXJzaXN0ZW50Q3JlZGVudGlhbHMp
CiB7Ci0gICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7Cisg
ICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9L
KTsKIAogICAgIHVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSA9IGZhbHNlOwogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369630</attachid>
            <date>2019-05-10 18:23:05 -0700</date>
            <delta_ts>2019-05-14 08:16:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197800-20190510182305.patch</filename>
            <type>text/plain</type>
            <size>42678</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDUxNjMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA1LTEwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGEgdW5pdCB0ZXN0IGZvciBj
bGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oOgor
ICAgICAgICBNb3ZlIGRlY2xhcmF0aW9ucyBmcm9tIEFyZ3VtZW50Q29kZXJzQ0YuY3BwIHNvIHRo
ZXkgY2FuIGJlIHNoYXJlZC4KKwogMjAxOS0wNS0wOCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2Vr
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMaWJdIFJld29yayBXUEUgUnVuTG9vcFNvdXJjZVBy
aW9yaXR5IHZhbHVlcwpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJ
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgJ
KHJldmlzaW9uIDI0NTE2MykKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMCBAQAogCiAjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKIAorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0FjY2Vzc0NvbnRyb2xQcml2Lmg+
CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQ2VydGlmaWNhdGVQcml2Lmg+CisjaW5jbHVkZSA8U2Vj
dXJpdHkvU2VjSWRlbnRpdHlQcml2Lmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjS2V5UHJpdi5o
PgogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY1Rhc2suaD4KICNpbmNsdWRlIDxTZWN1cml0eS9TZWNU
cnVzdFByaXYuaD4KIApAQCAtNjcsNyArNzAsMTEgQEAgV1RGX0VYVEVSTl9DX0JFR0lOCiAKIFNl
Y1Rhc2tSZWYgU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKENGQWxsb2NhdG9yUmVmLCBhdWRp
dF90b2tlbl90KTsKIFNlY1Rhc2tSZWYgU2VjVGFza0NyZWF0ZUZyb21TZWxmKENGQWxsb2NhdG9y
UmVmKTsKLUNGVHlwZVJlZiBTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQoU2VjVGFza1Jl
ZiwgQ0ZTdHJpbmdSZWYgZW50aXRsZW1lbnQsIENGRXJyb3JSZWYgKik7CitDRlR5cGVSZWYgU2Vj
VGFza0NvcHlWYWx1ZUZvckVudGl0bGVtZW50KFNlY1Rhc2tSZWYsIENGU3RyaW5nUmVmIGVudGl0
bGVtZW50LCBDRkVycm9yUmVmKik7CitTZWNJZGVudGl0eVJlZiBTZWNJZGVudGl0eUNyZWF0ZShD
RkFsbG9jYXRvclJlZiwgU2VjQ2VydGlmaWNhdGVSZWYsIFNlY0tleVJlZik7CitPU1N0YXR1cyBT
ZWNLZXlGaW5kV2l0aFBlcnNpc3RlbnRSZWYoQ0ZEYXRhUmVmIHBlcnNpc3RlbnRSZWYsIFNlY0tl
eVJlZiogbG9va2VkVXBEYXRhKTsKK1NlY0FjY2Vzc0NvbnRyb2xSZWYgU2VjQWNjZXNzQ29udHJv
bENyZWF0ZUZyb21EYXRhKENGQWxsb2NhdG9yUmVmLCBDRkRhdGFSZWYsIENGRXJyb3JSZWYqKTsK
K0NGRGF0YVJlZiBTZWNBY2Nlc3NDb250cm9sQ29weURhdGEoU2VjQWNjZXNzQ29udHJvbFJlZik7
CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQXNuMVR5cGVzLmg+
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ1MTY0KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNS0xMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBhIHVuaXQg
dGVzdCBmb3IgY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENv
ZGVyc0NGLmNwcDoKKyAgICAgICAgTW92ZSBTUEkgZGVjbGFyYXRpb25zIHRvIFNlY3VyaXR5U1BJ
LmguCisKIDIwMTktMDUtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBtb3N0IG9mIHIyNDUxNTEu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNwcAko
cmV2aXNpb24gMjQ1MTYzKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvY2YvQXJndW1lbnRDb2Rl
cnNDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDI5ICs0MSw2IEBACiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNlbmRpZgogCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNJZGVudGl0eVByaXYuaD4KLSNlbmRpZgotCi1leHRl
cm4gIkMiIFNlY0lkZW50aXR5UmVmIFNlY0lkZW50aXR5Q3JlYXRlKENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvciwgU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUsIFNlY0tleVJlZiBwcml2YXRl
S2V5KTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNLZXlQcml2Lmg+Ci0jZW5kaWYKLQotZXh0ZXJu
ICJDIiBPU1N0YXR1cyBTZWNLZXlGaW5kV2l0aFBlcnNpc3RlbnRSZWYoQ0ZEYXRhUmVmIHBlcnNp
c3RlbnRSZWYsIFNlY0tleVJlZiogbG9va2VkVXBEYXRhKTsKLSNlbmRpZgotCi0jaWYgSEFWRShT
RUNfQUNDRVNTX0NPTlRST0wpCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRl
IDxTZWN1cml0eS9TZWNBY2Nlc3NDb250cm9sUHJpdi5oPgotI2VuZGlmCi0KLWV4dGVybiAiQyIg
U2VjQWNjZXNzQ29udHJvbFJlZiBTZWNBY2Nlc3NDb250cm9sQ3JlYXRlRnJvbURhdGEoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yLCBDRkRhdGFSZWYgZGF0YSwgQ0ZFcnJvclJlZiAqZXJyb3IpOwot
ZXh0ZXJuICJDIiBDRkRhdGFSZWYgU2VjQWNjZXNzQ29udHJvbENvcHlEYXRhKFNlY0FjY2Vzc0Nv
bnRyb2xSZWYgYWNjZXNzX2NvbnRyb2wpOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBJUEMgewogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NTE2MykKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE5LTA1LTEwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGEgdW5pdCB0
ZXN0IGZvciBjbGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzgwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgYmV0dGVyIGFic3RyYWN0aW9u
cyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBmcm9tL3RvIFRDUFNlcnZlci4KKyAgICAgICAgQWRk
IGEgdW5pdCB0ZXN0IHRoYXQgY2F1c2VzIGEgY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0
aW9uIGNoYWxsZW5nZSB0byBoYXBwZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1RDUFNl
cnZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OlRDUFNlcnZlcik6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnJlYWQpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VENQU2VydmVyOjp3cml0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
Q1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UQ1BTZXJ2ZXIuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NoYWxsZW5nZS5tbToKKyAgICAgICAgKGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkpOgorICAgICAg
ICAoLVtDaGFsbGVuZ2VEZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAo
LVtDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpd
KToKKyAgICAgICAgKC1bQ2xpZW50Q2VydGlmaWNhdGVEZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bQ2xpZW50Q2VydGlmaWNhdGVEZWxlZ2F0ZSBjaGFsbGVuZ2VDb3VudF0pOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5P
Syk6IERlbGV0ZWQuCisgICAgICAgIChjcmVkZW50aWFsV2l0aElkZW50aXR5QW5kS2V5Y2hhaW5Q
YXRoKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1BERkxpbmtSZWZlcnJlci5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLTmF2
aWdhdGlvblJlc3BvbnNlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIChyZWFkUmVxdWVz
dCk6IERlbGV0ZWQuCisgICAgICAgICh3cml0ZVJlc3BvbnNlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOiBEZWxldGVkLgorCiAyMDE5LTA1LTA5ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBOdW1wYWQgY29t
bWEga2V5IGhhcyBpbmNvcnJlY3Qga2V5SWRlbnRpZmllciBwcm9wZXJ0eQpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVENQU2VydmVyLmNwcAkocmV2aXNpb24gMjQ1MTYzKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UQ1BTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSA8dGhyZWFkPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiBleHRlcm4gIkMiIHsKIApAQCAt
MzgsNiArMzksMTAgQEAgc3RydWN0IFg1MDk7CiBzdHJ1Y3QgU1NMX0NUWDsKIHN0cnVjdCBFVlBf
UEtFWTsKIHN0cnVjdCBTU0xfTUVUSE9EOworc3RydWN0IFg1MDlfU1RPUkVfQ1RYIHsKKyAgICB2
b2lkKiB1bnVzZWQ7CisgICAgWDUwOSogY2VydDsKK307CiBzdHJ1Y3QgcGVtX3Bhc3N3b3JkX2Ni
OwogaW50IEJJT19mcmVlKEJJTyopOwogaW50IFNTTF9mcmVlKFNTTCopOwpAQCAtNTYsNiArNjEs
MTUgQEAgaW50IFNTTF9DVFhfdXNlX1ByaXZhdGVLZXkoU1NMX0NUWCosIEVWUAogU1NMKiBTU0xf
bmV3KFNTTF9DVFgqKTsKIGludCBTU0xfYWNjZXB0KFNTTCopOwogaW50IFNTTF9zZXRfZmQoU1NM
KiwgaW50KTsKK3ZvaWQgU1NMX0NUWF9zZXRfdmVyaWZ5KFNTTF9DVFgqLCBpbnQsIGludCAoKiko
aW50LCBYNTA5X1NUT1JFX0NUWCopKTsKK3ZvaWQgU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2Fs
bGJhY2soU1NMX0NUWCosIGludCAoKikoWDUwOV9TVE9SRV9DVFgqLCB2b2lkKiksIHZvaWQqKTsK
K2ludCBTU0xfZ2V0X2Vycm9yKGNvbnN0IFNTTCosIGludCk7CitpbnQgU1NMX3JlYWQoU1NMKiwg
dm9pZCosIGludCk7CitpbnQgU1NMX3dyaXRlKFNTTCosIGNvbnN0IHZvaWQqLCBpbnQpOworaW50
IGkyZF9YNTA5KFg1MDkqLCB1bnNpZ25lZCBjaGFyKiopOwordm9pZCBPUEVOU1NMX2ZyZWUodm9p
ZCopOworI2RlZmluZSBTU0xfVkVSSUZZX1BFRVIgMHgwMQorI2RlZmluZSBTU0xfVkVSSUZZX0ZB
SUxfSUZfTk9fUEVFUl9DRVJUIDB4MDIKIAogfSAvLyBleHRlcm4gIkMiCiAKQEAgLTkyLDYgKzEw
NiwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPEVWUF9QS0VZPiB7CiAgICAgICAgIEVW
UF9QS0VZX2ZyZWUoa2V5KTsKICAgICB9CiB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgZGVsZXRlcjx1
aW50OF90W10+IHsKKyAgICB2b2lkIG9wZXJhdG9yKCkodWludDhfdCogYnVmZmVyKQorICAgIHsK
KyAgICAgICAgT1BFTlNTTF9mcmVlKGJ1ZmZlcik7CisgICAgfQorfTsKIAogVENQU2VydmVyOjpU
Q1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChTb2NrZXQpPiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBzaXpl
X3QgY29ubmVjdGlvbnMpCiAgICAgOiBtX2Nvbm5lY3Rpb25IYW5kbGVyKFdURk1vdmUoY29ubmVj
dGlvbkhhbmRsZXIpKQpAQCAtMTAxLDcgKzEyMSw3IEBAIFRDUFNlcnZlcjo6VENQU2VydmVyKEZ1
bmN0aW9uPHZvaWQoU29ja2UKIAogVENQU2VydmVyOjpUQ1BTZXJ2ZXIoUHJvdG9jb2wgcHJvdG9j
b2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIpCiB7Ci0g
ICAgYXV0byBzdGFydFNlY3VyZUNvbm5lY3Rpb24gPSBbc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyKV0gKFNvY2tldCBzb2NrZXQpIHsKKyAg
ICBhdXRvIHN0YXJ0U2VjdXJlQ29ubmVjdGlvbiA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9
IFdURk1vdmUoc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIpLCBwcm90b2NvbF0gKFNvY2tldCBzb2Nr
ZXQpIHsKICAgICAgICAgU1NMX2xpYnJhcnlfaW5pdCgpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTU0xfQ1RYLCBkZWxldGVyPFNTTF9DVFg+PiBjdHgoU1NMX0NUWF9uZXcoU1NMdjIzX3Nl
cnZlcl9tZXRob2QoKSkpOwpAQCAtMTI5LDYgKzE0OSwyMCBAQCBUQ1BTZXJ2ZXI6OlRDUFNlcnZl
cihQcm90b2NvbCBwcm90b2NvbCwgCiAgICAgICAgIEFTU0VSVChjZXJ0WDUwOSk7CiAgICAgICAg
IFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlKGN0eC5nZXQoKSwgY2VydFg1MDkuZ2V0KCkpOwogCisg
ICAgICAgIGlmIChwcm90b2NvbCA9PSBQcm90b2NvbDo6SFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNh
dGVSZXF1ZXN0KSB7CisgICAgICAgICAgICBTU0xfQ1RYX3NldF92ZXJpZnkoY3R4LmdldCgpLCBT
U0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJULCBudWxscHRy
KTsKKyAgICAgICAgICAgIFNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NhbGxiYWNrKGN0eC5nZXQo
KSwgW10gKFg1MDlfU1RPUkVfQ1RYKiBzdG9yZV9jdHgsIHZvaWQqKSAtPiBpbnQgeworICAgICAg
ICAgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlclBvaW50ZXIgPSBudWxscHRyOworICAgICAgICAgICAg
ICAgIGF1dG8gbGVuZ3RoID0gaTJkX1g1MDkoc3RvcmVfY3R4LT5jZXJ0LCAmYnVmZmVyUG9pbnRl
cik7CisgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPHVpbnQ4X3RbXSwgZGVsZXRlcjx1
aW50OF90W10+PiBidWZmZXIoYnVmZmVyUG9pbnRlcik7CisgICAgICAgICAgICAgICAgYXV0byBl
eHBlY3RlZENlcnQgPSB0ZXN0Q2VydGlmaWNhdGUoKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8aW50PihleHBlY3RlZENlcnQuc2l6ZSgpKSwgbGVuZ3RoKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAg
ICAgICAgICBFWFBFQ1RfRVEoYnVmZmVyLmdldCgpW2ldLCBleHBlY3RlZENlcnRbaV0pOworICAg
ICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfSwgbnVsbHB0cik7CisgICAgICAg
IH0KKwogICAgICAgICAvLyBUaGlzIGlzIGEgdGVzdCBrZXkgZnJvbSBCb3JpbmdTU0wuCiAgICAg
ICAgIGNoYXIga0tleVBFTVtdID0KICAgICAgICAgIi0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZ
LS0tLS1cbiIKQEAgLTE2NCw2ICsxOTgsNyBAQCBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihQcm90b2Nv
bCBwcm90b2NvbCwgCiAKICAgICBzd2l0Y2ggKHByb3RvY29sKSB7CiAgICAgY2FzZSBQcm90b2Nv
bDo6SFRUUFM6CisgICAgY2FzZSBQcm90b2NvbDo6SFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVS
ZXF1ZXN0OgogICAgICAgICBtX2Nvbm5lY3Rpb25IYW5kbGVyID0gV1RGTW92ZShzdGFydFNlY3Vy
ZUNvbm5lY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFByb3RvY29sOjpIVFRQU1By
b3h5OgpAQCAtMjM5LDQgKzI3NCwxODIgQEAgYXV0byBUQ1BTZXJ2ZXI6OnNvY2tldEJpbmRMaXN0
ZW4oc2l6ZV90IAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKK3RlbXBsYXRlPD4gVmVj
dG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVhZChTb2NrZXQgc29ja2V0KQoreworICAgIHVpbnQ4
X3QgYnVmZmVyWzEwMDBdOworICAgIGF1dG8gYnl0ZXNSZWFkID0gOjpyZWFkKHNvY2tldCwgYnVm
ZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7CisgICAg
RVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKGJ1ZmZl
cikpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKKyAgICB2ZWN0b3IuYXBwZW5kKGJ1
ZmZlciwgYnl0ZXNSZWFkKTsKKyAgICByZXR1cm4gdmVjdG9yOworfQorCit0ZW1wbGF0ZTw+IHZv
aWQgVENQU2VydmVyOjp3cml0ZShTb2NrZXQgc29ja2V0LCBjb25zdCB2b2lkKiByZXNwb25zZSwg
c2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhdXRvIGJ5dGVzV3JpdHRlbiA9IDo6d3JpdGUoc29ja2V0
LCByZXNwb25zZSwgbGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pihi
eXRlc1dyaXR0ZW4pLCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZTw+IFZlY3Rvcjx1aW50OF90PiBU
Q1BTZXJ2ZXI6OnJlYWQoU1NMKiBzc2wpCit7CisgICAgdWludDhfdCBidWZmZXJbMTAwMF07Cisg
ICAgYXV0byBieXRlc1JlYWQgPSBTU0xfcmVhZChzc2wsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikp
OworICAgIEVYUEVDVF9HVChieXRlc1JlYWQsIDApOworICAgIEVYUEVDVF9UUlVFKHN0YXRpY19j
YXN0PHNpemVfdD4oYnl0ZXNSZWFkKSA8IHNpemVvZihidWZmZXIpKTsKKworICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3I7CisgICAgdmVjdG9yLmFwcGVuZChidWZmZXIsIGJ5dGVzUmVhZCk7Cisg
ICAgcmV0dXJuIHZlY3RvcjsKK30KKwordGVtcGxhdGU8PiB2b2lkIFRDUFNlcnZlcjo6d3JpdGUo
U1NMKiBzc2wsIGNvbnN0IHZvaWQqIHJlc3BvbnNlLCBzaXplX3QgbGVuZ3RoKQoreworICAgIGF1
dG8gYnl0ZXNXcml0dGVuID0gU1NMX3dyaXRlKHNzbCwgcmVzcG9uc2UsIGxlbmd0aCk7CisgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSwgbGVuZ3RoKTsKK30K
Kwordm9pZCBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKFNvY2tldCBzb2Nr
ZXQpCit7CisgICAgcmVhZChzb2NrZXQpOworICAgIAorICAgIGNvbnN0IGNoYXIqIGNoYWxsZW5n
ZUhlYWRlciA9CisgICAgIkhUVFAvMS4xIDQwMSBVbmF1dGhvcml6ZWRcclxuIgorICAgICJEYXRl
OiBTYXQsIDIzIE1hciAyMDE5IDA2OjI5OjAxIEdNVFxyXG4iCisgICAgIkNvbnRlbnQtTGVuZ3Ro
OiAwXHJcbiIKKyAgICAiV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09XCJ0ZXN0cmVhbG1c
IlxyXG5cclxuIjsKKyAgICB3cml0ZShzb2NrZXQsIGNoYWxsZW5nZUhlYWRlciwgc3RybGVuKGNo
YWxsZW5nZUhlYWRlcikpOworICAgIAorICAgIHJlYWQoc29ja2V0KTsKKyAgICAKKyAgICBjb25z
dCBjaGFyKiByZXNwb25zZUhlYWRlciA9CisgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAg
IkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5cclxuIgorICAgICJIZWxsbywgV29ybGQhIjsKKyAgICB3
cml0ZShzb2NrZXQsIHJlc3BvbnNlSGVhZGVyLCBzdHJsZW4ocmVzcG9uc2VIZWFkZXIpKTsKK30K
Kwordm9pZCBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soU1NMKiBzc2wpCit7CisgICAgcmVhZChz
c2wpOworICAgIAorICAgIGNvbnN0IGNoYXIqIHJlcGx5ID0gIiIKKyAgICAiSFRUUC8xLjEgMjAw
IE9LXHJcbiIKKyAgICAiQ29udGVudC1MZW5ndGg6IDM0XHJcblxyXG4iCisgICAgIjxzY3JpcHQ+
YWxlcnQoJ3N1Y2Nlc3MhJyk8L3NjcmlwdD4iOworICAgIHdyaXRlKHNzbCwgcmVwbHksIHN0cmxl
bihyZXBseSkpOworfQorCitWZWN0b3I8dWludDhfdD4gVENQU2VydmVyOjp0ZXN0Q2VydGlmaWNh
dGUoKQoreworICAgIC8vIENlcnRpZmljYXRlIGFuZCBwcml2YXRlIGtleSB3ZXJlIGdlbmVyYXRl
ZCBieSBydW5uaW5nIHRoaXMgY29tbWFuZDoKKyAgICAvLyBvcGVuc3NsIHJlcSAteDUwOSAtbmV3
a2V5IHJzYTo0MDk2IC1rZXlvdXQga2V5LnBlbSAtb3V0IGNlcnQucGVtIC1kYXlzIDM2NSAtbm9k
ZXMKKyAgICAvLyBhbmQgZW50ZXJpbmcgdGhpcyBpbmZvcm1hdGlvbjoKKyAgICAvKgorICAgICBD
b3VudHJ5IE5hbWUgKDIgbGV0dGVyIGNvZGUpIFtdOlVTCisgICAgIFN0YXRlIG9yIFByb3ZpbmNl
IE5hbWUgKGZ1bGwgbmFtZSkgW106TmV3IE1leGljbworICAgICBMb2NhbGl0eSBOYW1lIChlZywg
Y2l0eSkgW106U2FudGEgRmUKKyAgICAgT3JnYW5pemF0aW9uIE5hbWUgKGVnLCBjb21wYW55KSBb
XTpTZWxmCisgICAgIE9yZ2FuaXphdGlvbmFsIFVuaXQgTmFtZSAoZWcsIHNlY3Rpb24pIFtdOk15
c2VsZgorICAgICBDb21tb24gTmFtZSAoZWcsIGZ1bGx5IHF1YWxpZmllZCBob3N0IG5hbWUpIFtd
Ok1lCisgICAgIEVtYWlsIEFkZHJlc3MgW106bWVAZXhhbXBsZS5jb20KKyAgICAgKi8KKyAgICAK
KyAgICBTdHJpbmcgcGVtRW5jb2RlZENlcnRpZmljYXRlKCIiCisgICAgIk1JSUZnRENDQTJnQ0NR
Q0tIaVBSVTVNUXVEQU5CZ2txaGtpRzl3MEJBUXNGQURDQmdURUxNQWtHQTFVRUJoTUMiCisgICAg
IlZWTXhFekFSQmdOVkJBZ01DazVsZHlCTlpYaHBZMjh4RVRBUEJnTlZCQWNNQ0ZOaGJuUmhJRVps
TVEwd0N3WUQiCisgICAgIlZRUUtEQVJUWld4bU1ROHdEUVlEVlFRTERBWk5lWE5sYkdZeEN6QUpC
Z05WQkFNTUFrMWxNUjB3R3dZSktvWkkiCisgICAgImh2Y05BUWtCRmc1dFpVQmxlR0Z0Y0d4bExt
TnZiVEFlRncweE9UQXpNak13TlRVd01UUmFGdzB5TURBek1qSXciCisgICAgIk5UVXdNVFJhTUlH
Qk1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQXdLVG1WM0lFMWxlR2xqYnpFUk1BOEciCisg
ICAgIkExVUVCd3dJVTJGdWRHRWdSbVV4RFRBTEJnTlZCQW9NQkZObGJHWXhEekFOQmdOVkJBc01C
azE1YzJWc1pqRUwiCisgICAgIk1Ba0dBMVVFQXd3Q1RXVXhIVEFiQmdrcWhraUc5dzBCQ1FFV0Rt
MWxRR1Y0WVcxd2JHVXVZMjl0TUlJQ0lqQU4iCisgICAgIkJna3Foa2lHOXcwQkFRRUZBQU9DQWc4
QU1JSUNDZ0tDQWdFQTNyaE40U1BnOFZZL1B0R0ROS1kzVDlKSVNnYnkiCisgICAgIjhZR01KeDB2
TytZWkZabTNHM2ZzVFVzeXZEeUVId3FwNWFiQ1pSQi9CeTFQd1drTnJmeG4vWFA4UDAzNEpQbEUi
CisgICAgIjZpclZpdUFZUXJxVWg2azdaUjhDcE9NNUdFY1JaZ0FVSkdHUXdObE9rRXdhSG5NR2M4
U3NIdXJnRFBoNVhCcGciCisgICAgImJEeXRkN0JKdUIxTm9JL0tKbWhjYWprQXVWM3ZhclMrdVBM
b2ZQSE5xZStjTDhoTm5qWlF3SFdhclA0NWtzNGUiCisgICAgIkJjT0Q3dHdxeHVIblZtL0ZXRXJw
WThXczVzMU1yUFRoVWREYWhqRU1mK1lmREo5S0w4eTMwNHlTOEo4ZmVDeFkiCisgICAgImZjSDRC
dmdMdEptQk5ISmdqM2VORC9FTVpqSmd6MkZzQmpySms4a0tEMzFjdys0V3A4VUY0c2tXWENmNDYr
bU4iCisgICAgIk9IcDEzUGVTQ1pMeUY0WkFIYXpVVmtuRFBjYzJZTnJXVlYxaTZuM1QxNWtJMFQ1
Wjdic3RkbUFMdVNrRTJjdUoiCisgICAgIlNWTk82Z1IrWnNWUlRuZXVReHdXVFUwTU5FaEFQRk9Y
MkJoR1A1ZWlzZ0VVemtueE1KZGRGRG45V3hrbHUxSmgiCisgICAgImdrekFTQS8rM0FtbHJGWk1Q
aE9oakV1bDB6amdOUjVSQmwxRzhIejkyTEF4NVVFREJ0ZExnNzFJK0k4QXpRT2giCisgICAgImQ2
THRCZWtFQ3hBMTZwU2FwcGc1dmNXOVovOE42WmxzSG5aMkZ6dEEwbkNPZmxrb085aWVqT3BjdUZO
NEVWWUQiCisgICAgInhJdHdjdEt3MUxDZU5EL3M0a21vUlJuWGJYN2s5TzZjSTFVVVdNNTk1R3N1
NXRQYTMzTTVBWkZDYXYyZ09WdVkiCisgICAgImRqcHBTMEhPZm81aHY2Y0NBd0VBQVRBTkJna3Fo
a2lHOXcwQkFRc0ZBQU9DQWdFQVk4RVdhQUZFZnc3T1Yrb0QiCisgICAgIlhVWlNJWVhxM0VIMkU1
cDNxMzhBaElPTFJqQnVCK3V0eXU3UTZyeE1NSHV3MlR0c04remJBUjd5cmpmc3NlQTMiCisgICAg
IjRUTTF4ZTROazdOVk5IUm9aUStDMElxZjlmdmNpb012VDF0VHJtYTBNaEtTakZRcHgrUHZ5TFZi
RDdZZFA4NkwiCisgICAgIm1lZWhLcVU3aDFwTEdBaUd3am9hWjlZYmg2S3VxL01UQUh5M0Q4K3dr
N0IzNlZCeEY2ZGlWbFVQWkpaUVdLSnkiCisgICAgIk1LeTlHM3N6ZTFaR3Q5V2VFMEFNdmtOMkhJ
ZWYwSFRLQ1VaM2VCdmVjT01panhMMFdoV281UXlmNWs2eWxDYVUiCisgICAgIjJmeCtNOERmRGN3
Rm83dFNnTHhTSzNHQ0ZweFBmaUR0NlFrOGM5dFFuNVMxZ1kzdDZMSnV3VkNGd1VJWGxOa0IiCisg
ICAgIkpENytjWjFaL3RDckVoemozWUNrMHVVVThDaWZvVSs0RkcrSEdGUCtTUHp0c1lFMDU1bVNq
MytFc2grb3lvVkIiCisgICAgImdCSDkwc0UyVDFpMGVOSThmNjFvU2d3WUZlSHNmN2ZDNzFYRVhM
RlIrR3dOZG13cWxtd2xEWkVwVHU3Qm9OTisiCisgICAgInE3K1RmazFNUmtKbEwxUEg2WXUvSVBo
WmlOaDR0eUlxRE90bFlmenA1NzdBK09VVStxNVBQUkZSSXNxaGVPeHQiCisgICAgIm1ObEh4NFV6
ZDRVM0lUZm1vZ0phempxd1lPMnZpQlpZNGpVUW15WnM3NWVIL2ppVUZIV1JzaGEzQWRuVzVMV2Ei
CisgICAgIkczUEZuWWJXOHVySDBOU0pHL1crLzlEQStZN0FhMGNzNFRQcHVCR1owTlUxVzk0T29D
TW80bGtPNkgveTZMZXUiCisgICAgIjN2alpEM3k5a1prN21yZTlYSHdrSThNZEs1cz0iKTsKKyAg
ICAKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOworICAgIGJhc2U2NERlY29kZShwZW1FbmNv
ZGVkQ2VydGlmaWNhdGUsIHZlY3RvciwgV1RGOjpCYXNlNjREZWNvZGVPcHRpb25zOjpCYXNlNjRE
ZWZhdWx0KTsKKyAgICByZXR1cm4gdmVjdG9yOworfQorCitWZWN0b3I8dWludDhfdD4gVENQU2Vy
dmVyOjp0ZXN0UHJpdmF0ZUtleSgpCit7CisgICAgU3RyaW5nIHBlbUVuY29kZWRQcml2YXRlS2V5
KCIiCisgICAgIk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9J
Q0FRRGV1RTNoSStEeFZqOCsiCisgICAgIjBZTTBwamRQMGtoS0J2THhnWXduSFM4NzVoa1ZtYmNi
ZCt4TlN6SzhQSVFmQ3FubHBzSmxFSDhITFUvQmFRMnQiCisgICAgIi9HZjljL3cvVGZnaytVVHFL
dFdLNEJoQ3VwU0hxVHRsSHdLazR6a1lSeEZtQUJRa1laREEyVTZRVEJvZWN3WnoiCisgICAgInhL
d2U2dUFNK0hsY0dtQnNQSzEzc0VtNEhVMmdqOG9tYUZ4cU9RQzVYZTlxdEw2NDh1aDg4YzJwNzV3
dnlFMmUiCisgICAgIk5sREFkWnFzL2ptU3poNEZ3NFB1M0NyRzRlZFdiOFZZU3Vsanhhem16VXlz
OU9GUjBOcUdNUXgvNWg4TW4wb3YiCisgICAgInpMZlRqSkx3bng5NExGaDl3ZmdHK0F1MG1ZRTBj
bUNQZDQwUDhReG1NbURQWVd3R09zbVR5UW9QZlZ6RDdoYW4iCisgICAgInhRWGl5UlpjSi9qcjZZ
MDRlblhjOTVJSmt2SVhoa0Fkck5SV1NjTTl4elpnMnRaVlhXTHFmZFBYbVFqUlBsbnQiCisgICAg
InV5MTJZQXU1S1FUWnk0bEpVMDdxQkg1bXhWRk9kNjVESEJaTlRRdzBTRUE4VTVmWUdFWS9sNkt5
QVJUT1NmRXciCisgICAgImwxMFVPZjFiR1NXN1VtR0NUTUJJRC83Y0NhV3NWa3crRTZHTVM2WFRP
T0ExSGxFR1hVYndmUDNZc0RIbFFRTUciCisgICAgIjEwdUR2VWo0andETkE2RjNvdTBGNlFRTEVE
WHFsSnFtbURtOXhiMW4vdzNwbVd3ZWRuWVhPMERTY0k1K1dTZzciCisgICAgIjJKNk02bHk0VTNn
UlZnUEVpM0J5MHJEVXNKNDBQK3ppU2FoRkdkZHRmdVQwN3B3alZSUll6bjNrYXk3bTA5cmYiCisg
ICAgImN6a0JrVUpxL2FBNVc1aDJPbWxMUWM1K2ptRy9wd0lEQVFBQkFvSUNBR3JhL0NwL2YwWHF2
azlTVCtQcnQyL3AiCisgICAgImtOdExlRFhjbExTVGNQMEpDWkh1ZlFhRncrN1ZuRkxwcWU0R3ZM
cTlCbGxjejhWT3ZRd3JiZS9Dd05XK1Z4QzgiCisgICAgIlJNamdlMnJxQUNnd0doT3gxdDg3bDQ2
TmtVUXc3RXkwbENsZThrcitNR2dHR29acXJNRmRLSVJVb012NG5tUTYiCisgICAgInRtYzFGSHY1
cExSZTlRK0xwNW5ZUXdHb1ltWm9VT3Vlb09hT0wwOG00OXBHWFFraU44cEpETXhTZk8zSnZ0c3Ui
CisgICAgIjRjcUliNmtPUS9kTzFJczFDVHZVUmxkMUlZTEg3WXVTaGk0WkV4MmcyYWMyVXl2dDZZ
bXh4dk1tQWpCU0twR2QiCisgICAgImxvaWVwaG8zL05yREdVS2R2M3E5UVl5enJBOHc5R1QzMkxE
R3FnQlhKaTFzY0JJOGNFeGtwNlA0aURsbGh2N3MiCisgICAgInZac3Nwdm9iUkphM08xems4NjNM
SFhhMjRKQ255dXppbXFleloyT2xoN2w0b2xIb1lENlVGQzlqZmQ0S2NIUmciCisgICAgIjFjNHN5
cXQvbjhBSy8xczFlQmZTOWR6YjVDZmp0OU10S1lzbHh2THpxMVd3T0lOd3o4cklZdVJpMFBjTG05
aHMiCisgICAgImwrVTB1L3pCMzdlTWd2Nitpd0RYazFmU2pidVlzRS9iRVRXWWtuS0dORkZMNUpT
aUtWN1dDcG1nTlRUcnJFNEsiCisgICAgIlM4RTZoUjl1UE9BYW93N3ZQQ0N0NHhMWC80OGwyRUk2
WmVxNnFPcHExbEoycWN5OHI0dHl1UWdOUkxRTWtaZzEiCisgICAgIkF4UWw2dm5ROEN1NGl1K05J
aGVmMHk5Wjdxa2ZOdlplQ2o1R2xGQjljMllqVjhZMm1kV2ZKQjRxV0szWi8rTUoiCisgICAgIlFP
VENLUno3L0x4TE5CVWVwUmpKQW9JQkFRRDNac1Y1dFdVOVpTS2NWSjlEQzdUWmswUCtsaGNpc1py
MG5MMHQiCisgICAgIlBRdVFPK3BIdlBJMU1xUm5Oc2tISmh5UG5xVkNpK2RwODl0Sy9JdDU5MFVM
bDhvczZVQzFGaHl0QlBvVDFZUGQiCisgICAgIldHV2VwMnBPYzdiVnBpNGlwMzF5K0ltZmdlWnlK
dE1BVGRtZTNrQlBBT2U1TkdFOUdpZy9sNW5xTHliMDJzZDEiCisgICAgIlFXN08wR2RxTHgzRHBM
dzRTTGxoTWY2YUUwdUdSUzhzZkIwODVlNERHbjU0TzJ3RVZ1U1pxWmw1Tk5FZjM1UnoiCisgICAg
IlhnaW0zaCtSV0YxWkZTUXpqQi9zbU4wWmgrdjNJejd2RUoxaDB5d1Y2bytHenZIa1A5SEU2Z0xJ
aHR5VjhPRXciCisgICAgInZseVlrMUdhN3BVVkdSaDhvOE9NZTZSUjlEUWk3SnFDNGVJN0dja21C
emFxekpjREFvSUJBUURtZGU2QVRldzMiCisgICAgIkg5YlFLNnhuYk1JbmN6L0NPcElJU2RsY0Zi
MjNBSEdFYjRiNFZoSkZCTnd4ck5MNnRIS1NGTGVZWkZMaFRkaHgiCisgICAgIlBmWHlVTEhOZjVv
emRFa2wwV3JsZXJvRGRvZ2JDeVdnNXVKcDkvUTY4c2J3YkdyOENBbE83WkhZVHJqdVFmMUsiCisg
ICAgIkFTOXBDbTc3S1AzazJkM1VsRytwZWxEalhMb0J6aVhxME5qeEpwTXo0NXZySXg4clNXekZO
ak1HalhUM2ZYYVMiCisgICAgIjk2MmsvMEFYZWk1L2JmdWhCeGxtN1BuaTBiUUpJV0ZrZWFVdUds
ck9hSERSeFVpWDFyOUlaUzl3djVsazFQdGciCisgICAgImlkcGJjV3l3MThjRkdUdmpkS2hSYlpI
OEVzYm16bU5Oc0NHZGdDTXFGa0tZc1cxNlFLb0NqL05Bb3ZJM24wcW4iCisgICAgIjZWb1JhMHNH
bVRHTkFvSUJBQ2wvbXFaRXNCdXhTREh5MjlnU01aN0JYZ2xwUWE0M0htZmpsclBzNW5DbUxERW0i
CisgICAgIlYzWm03VDdHNk1lRE5BMC9MamRRWWx2YVpMRmFWVWI3SENES3NFWUNSakZaNlN0NGh6
NG1kWHorWStWTjdiNEYiCisgICAgIkdPa1RlKytpS3AvTFlzSlh0c0QxRkRXYjJXSVZvN0hjMUFH
ejhJK2dRSm9TSXVZdVRKbUx6U00wKzVKRFVPVjEiCisgICAgInk4ZFNiYVAvUnVFdjBxWWprR3FR
Vms1ZTcwU1V5T3pLVitaeENUaGRIdkZMaW92VE9UVGdldlV6RTc1eHlkZkciCisgICAgImU3b0Nt
dFR1cnpndmwvNjlWdTVZZ2lqMW40Q1dQSEhjcTRDUVcvRE9aN0JoRkdCd2hyVzc5dm9ISkY4UGJ3
UE8iCisgICAgIiswRFR1ZERHWTNuQUQ1c1RuRjh6VXVPYllpaEp0ZnpqL3Q1OWZPTUNnZ0VCQUlZ
dXVCVUFTYjYyelE0YnY1L2ciCisgICAgIlZSTS9LU3BmaTlORG5FamZaN3g3aDV6Q2l1Vmd4L1pq
cEFsUVJPOHZ6VjE4cm9FT09LdHg5Y25KZDhBRWQrSGMiCisgICAgIm45M0JvUzFoeDBtaHNWaCsx
VFJad3lqeUJYWUpwcXdEMnd6MU16MVhPSVE2RXFiTS95UEtURDJnZndnN3lPNTMiCisgICAgInFZ
eHJ4WnNXYWdWVmNHOVErQVJCRVJhdFR3THBvTitmY0pMeHVoNHIvQ2EvTGVwc3htT3JLelRhL01H
SzFMaFciCisgICAgInJXZ0lrMi9vZ0VQTFNwdGoyZDFQRURPK0dBekZ6NFZLamhXMU5sVWg5Zkdp
NklKUExITG5CdzNvZGJpMFM4S1QiCisgICAgImdBOVo1K0xCYzVjbG90QVA1cnRRQThXaC9aQ0Vv
UFRLVFRBMmJqVzJITWF0SmNiR21SMEZwQ1FyM0FNMFkxU08iCisgICAgIk1ha0NnZ0VBTHJ1NlFa
NllVd0pKRzQ1SDFlcS9yUGREWTh0cXFqSlZWaUtvQlZ2ektqL1hmSlpZRVZRaUl3NXAiCisgICAg
InVvR2hEb3lGdUZVZUloL2QxSmMySXJ1eTJXam9Pa2lRWXRJdWdESEh4UnJrTGRRY2pQaGxDVENF
L21teVNKdCsiCisgICAgImJrVWJpSEliUThkSjV5ajhTS3IwYkh6cUV0T3k5L0plUmprWUdIQzZi
VldwcTVGQTJNQmhmNGROako0VURsblQiCisgICAgInZ1ZVBjVGpyN25uZlkxc3p0dmZWbDlEOGRt
Z1QrVEJuT09WNnlXajFnbTViUzFEeFFTTGdObXRLeEo4dEFoMnUiCisgICAgImRFT2J2Y3BTaFAy
Mkl0T1ZqU2FtcFJ1QXVSRzI2WmVtRWJHQ0kzSjZNcXgzeTZtKzZId3VsdHNndGR6RGdyRmUiCisg
ICAgInFKZlU4YmJkYnUycGk0N1k0RmRKSzBITGZmbDVSdz09Iik7CisKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yOworICAgIGJhc2U2NERlY29kZShwZW1FbmNvZGVkUHJpdmF0ZUtleSwgdmVj
dG9yLCBXVEY6OkJhc2U2NERlY29kZU9wdGlvbnM6OkJhc2U2NERlZmF1bHQpOworICAgIHJldHVy
biB2ZWN0b3I7Cit9CisgICAgCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVENQU2VydmVyLmgJKHJldmlzaW9uIDI0NTE2MykKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVENQU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDExICsyOSw3IEBACiAjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1leHRlcm4g
IkMiIHsKIHN0cnVjdCBTU0w7Ci1pbnQgU1NMX3JlYWQoU1NMKiwgdm9pZCosIGludCk7Ci1pbnQg
U1NMX3dyaXRlKFNTTCosIGNvbnN0IHZvaWQqLCBpbnQpOwotfQogCiBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKQEAgLTQ0LDE0ICs0MCwyNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBQb3J0IEludmFsaWRQb3J0ID0gMDsKICAgICAKICAgICBUQ1BTZXJ2ZXIoRnVuY3Rpb248
dm9pZChTb2NrZXQpPiYmLCBzaXplX3QgY29ubmVjdGlvbnMgPSAxKTsKLSAgICBlbnVtIGNsYXNz
IFByb3RvY29sIDogYm9vbCB7Ci0gICAgICAgIEhUVFBTLCBIVFRQU1Byb3h5CisgICAgZW51bSBj
bGFzcyBQcm90b2NvbCA6IHVpbnQ4X3QgeworICAgICAgICBIVFRQUywKKyAgICAgICAgSFRUUFNQ
cm94eSwKKyAgICAgICAgSFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0LAogICAgIH07
CiAgICAgVENQU2VydmVyKFByb3RvY29sLCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmKTsKICAgICB+
VENQU2VydmVyKCk7CiAgICAgCiAgICAgUG9ydCBwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9wb3J0
OyB9CiAgICAgCisgICAgc3RhdGljIHZvaWQgcmVzcG9uZFdpdGhPSyhTU0wqKTsKKyAgICBzdGF0
aWMgdm9pZCByZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyhTb2NrZXQpOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIFZlY3Rvcjx1aW50OF90PiByZWFkKFQpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB2b2lkIHdyaXRlKFQsIGNvbnN0IHZvaWQqLCBzaXplX3Qp
OworCisgICAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiB0ZXN0UHJpdmF0ZUtleSgpOworICAgIHN0
YXRpYyBWZWN0b3I8dWludDhfdD4gdGVzdENlcnRpZmljYXRlKCk7CisgICAgCiBwcml2YXRlOgog
ICAgIE9wdGlvbmFsPFNvY2tldD4gc29ja2V0QmluZExpc3RlbihzaXplX3QgY29ubmVjdGlvbnMp
OwogICAgIHZvaWQgbGlzdGVuRm9yQ29ubmVjdGlvbnMoc2l6ZV90IGNvbm5lY3Rpb25zKTsKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxl
bmdlLm1tCShyZXZpc2lvbiAyNDUxNjMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0NoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsMTQxICszMywxNyBA
QAogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tXZWJzaXRlRGF0YVJlY29yZFByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIAogc3RhdGljIGJvb2wg
bmF2aWdhdGlvbkZpbmlzaGVkOwogCi1zdGF0aWMgdm9pZCByZXNwb25kV2l0aENoYWxsZW5nZVRo
ZW5PSyhpbnQgc29ja2V0KQorc3RhdGljIFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRl
bnRpYWxXaXRoSWRlbnRpdHkoKQogewotICAgIGNoYXIgcmVhZEJ1ZmZlclsxMDAwXTsKLSAgICBh
dXRvIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVm
ZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gY2VydGlmaWNhdGVCeXRlcyA9IFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZl
cjo6dGVzdENlcnRpZmljYXRlKCk7CisgICAgUmV0YWluUHRyPFNlY0NlcnRpZmljYXRlUmVmPiBj
ZXJ0aWZpY2F0ZSA9IGFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDcmVhdGVXaXRoRGF0YShudWxscHRy
LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczpjZXJ0aWZpY2F0ZUJ5
dGVzLmRhdGEoKSBsZW5ndGg6Y2VydGlmaWNhdGVCeXRlcy5zaXplKCldKSk7CiAgICAgCi0gICAg
Y29uc3QgY2hhciogY2hhbGxlbmdlSGVhZGVyID0KLSAgICAiSFRUUC8xLjEgNDAxIFVuYXV0aG9y
aXplZFxyXG4iCi0gICAgIkRhdGU6IFNhdCwgMjMgTWFyIDIwMTkgMDY6Mjk6MDEgR01UXHJcbiIK
LSAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuIgotICAgICJXV1ctQXV0aGVudGljYXRlOiBCYXNp
YyByZWFsbT1cInRlc3RyZWFsbVwiXHJcblxyXG4iOwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0g
Ojp3cml0ZShzb2NrZXQsIGNoYWxsZW5nZUhlYWRlciwgc3RybGVuKGNoYWxsZW5nZUhlYWRlcikp
OwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIHN0cmxl
bihjaGFsbGVuZ2VIZWFkZXIpKTsKLSAgICAKLSAgICBieXRlc1JlYWQgPSA6OnJlYWQoc29ja2V0
LCByZWFkQnVmZmVyLCBzaXplb2YocmVhZEJ1ZmZlcikpOwotICAgIEVYUEVDVF9HVChieXRlc1Jl
YWQsIDApOwotICAgIEVYUEVDVF9UUlVFKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNSZWFkKSA8
IHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgCi0gICAgY29uc3QgY2hhciogcmVzcG9uc2VIZWFk
ZXIgPQotICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgotICAgICJDb250ZW50LUxlbmd0aDogMTNc
clxuXHJcbiIKLSAgICAiSGVsbG8sIFdvcmxkISI7Ci0gICAgYnl0ZXNXcml0dGVuID0gOjp3cml0
ZShzb2NrZXQsIHJlc3BvbnNlSGVhZGVyLCBzdHJsZW4ocmVzcG9uc2VIZWFkZXIpKTsKLSAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pLCBzdHJsZW4ocmVzcG9u
c2VIZWFkZXIpKTsKLX0KLQotI2lmIFBMQVRGT1JNKE1BQykKLQotc3RhdGljIHN0ZDo6cGFpcjxS
ZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiwgUmV0YWluUHRyPE5TU3RyaW5nPj4gY3JlZGVudGlh
bFdpdGhJZGVudGl0eUFuZEtleWNoYWluUGF0aCgpCi17Ci0gICAgLy8gQ2VydGlmaWNhdGUgYW5k
IHByaXZhdGUga2V5IHdlcmUgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhpcyBjb21tYW5kOgotICAg
IC8vIG9wZW5zc2wgcmVxIC14NTA5IC1uZXdrZXkgcnNhOjQwOTYgLWtleW91dCBrZXkucGVtIC1v
dXQgY2VydC5wZW0gLWRheXMgMzY1IC1ub2RlcwotICAgIC8vIGFuZCBlbnRlcmluZyB0aGlzIGlu
Zm9ybWF0aW9uOgotICAgIC8qCi0gICAgIENvdW50cnkgTmFtZSAoMiBsZXR0ZXIgY29kZSkgW106
VVMKLSAgICAgU3RhdGUgb3IgUHJvdmluY2UgTmFtZSAoZnVsbCBuYW1lKSBbXTpOZXcgTWV4aWNv
Ci0gICAgIExvY2FsaXR5IE5hbWUgKGVnLCBjaXR5KSBbXTpTYW50YSBGZQotICAgICBPcmdhbml6
YXRpb24gTmFtZSAoZWcsIGNvbXBhbnkpIFtdOlNlbGYKLSAgICAgT3JnYW5pemF0aW9uYWwgVW5p
dCBOYW1lIChlZywgc2VjdGlvbikgW106TXlzZWxmCi0gICAgIENvbW1vbiBOYW1lIChlZywgZnVs
bHkgcXVhbGlmaWVkIGhvc3QgbmFtZSkgW106TWUKLSAgICAgRW1haWwgQWRkcmVzcyBbXTptZUBl
eGFtcGxlLmNvbQotICAgICAqLwotICAgIAotICAgIE5TU3RyaW5nICpwZW1FbmNvZGVkQ2VydGlm
aWNhdGUgPSBAIiIKLSAgICAiTUlJRmdEQ0NBMmdDQ1FDS0hpUFJVNU1RdURBTkJna3Foa2lHOXcw
QkFRc0ZBRENCZ1RFTE1Ba0dBMVVFQmhNQyIKLSAgICAiVlZNeEV6QVJCZ05WQkFnTUNrNWxkeUJO
WlhocFkyOHhFVEFQQmdOVkJBY01DRk5oYm5SaElFWmxNUTB3Q3dZRCIKLSAgICAiVlFRS0RBUlRa
V3htTVE4d0RRWURWUVFMREFaTmVYTmxiR1l4Q3pBSkJnTlZCQU1NQWsxbE1SMHdHd1lKS29aSSIK
LSAgICAiaHZjTkFRa0JGZzV0WlVCbGVHRnRjR3hsTG1OdmJUQWVGdzB4T1RBek1qTXdOVFV3TVRS
YUZ3MHlNREF6TWpJdyIKLSAgICAiTlRVd01UUmFNSUdCTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVH
QTFVRUNBd0tUbVYzSUUxbGVHbGpiekVSTUE4RyIKLSAgICAiQTFVRUJ3d0lVMkZ1ZEdFZ1JtVXhE
VEFMQmdOVkJBb01CRk5sYkdZeER6QU5CZ05WQkFzTUJrMTVjMlZzWmpFTCIKLSAgICAiTUFrR0Ex
VUVBd3dDVFdVeEhUQWJCZ2txaGtpRzl3MEJDUUVXRG0xbFFHVjRZVzF3YkdVdVkyOXRNSUlDSWpB
TiIKLSAgICAiQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBM3JoTjRTUGc4Vlkv
UHRHRE5LWTNUOUpJU2dieSIKLSAgICAiOFlHTUp4MHZPK1laRlptM0czZnNUVXN5dkR5RUh3cXA1
YWJDWlJCL0J5MVB3V2tOcmZ4bi9YUDhQMDM0SlBsRSIKLSAgICAiNmlyVml1QVlRcnFVaDZrN1pS
OENwT001R0VjUlpnQVVKR0dRd05sT2tFd2FIbk1HYzhTc0h1cmdEUGg1WEJwZyIKLSAgICAiYkR5
dGQ3Qkp1QjFOb0kvS0ptaGNhamtBdVYzdmFyUyt1UExvZlBITnFlK2NMOGhObmpaUXdIV2FyUDQ1
a3M0ZSIKLSAgICAiQmNPRDd0d3F4dUhuVm0vRldFcnBZOFdzNXMxTXJQVGhVZERhaGpFTWYrWWZE
SjlLTDh5MzA0eVM4SjhmZUN4WSIKLSAgICAiZmNINEJ2Z0x0Sm1CTkhKZ2ozZU5EL0VNWmpKZ3oy
RnNCanJKazhrS0QzMWN3KzRXcDhVRjRza1dYQ2Y0NittTiIKLSAgICAiT0hwMTNQZVNDWkx5RjRa
QUhhelVWa25EUGNjMllOcldWVjFpNm4zVDE1a0kwVDVaN2JzdGRtQUx1U2tFMmN1SiIKLSAgICAi
U1ZOTzZnUitac1ZSVG5ldVF4d1dUVTBNTkVoQVBGT1gyQmhHUDVlaXNnRVV6a254TUpkZEZEbjlX
eGtsdTFKaCIKLSAgICAiZ2t6QVNBLyszQW1sckZaTVBoT2hqRXVsMHpqZ05SNVJCbDFHOEh6OTJM
QXg1VUVEQnRkTGc3MUkrSThBelFPaCIKLSAgICAiZDZMdEJla0VDeEExNnBTYXBwZzV2Y1c5Wi84
TjZabHNIbloyRnp0QTBuQ09mbGtvTzlpZWpPcGN1Rk40RVZZRCIKLSAgICAieEl0d2N0S3cxTENl
TkQvczRrbW9SUm5YYlg3azlPNmNJMVVVV001OTVHc3U1dFBhMzNNNUFaRkNhdjJnT1Z1WSIKLSAg
ICAiZGpwcFMwSE9mbzVodjZjQ0F3RUFBVEFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBWThFV2FB
RkVmdzdPVitvRCIKLSAgICAiWFVaU0lZWHEzRUgyRTVwM3EzOEFoSU9MUmpCdUIrdXR5dTdRNnJ4
TU1IdXcyVHRzTit6YkFSN3lyamZzc2VBMyIKLSAgICAiNFRNMXhlNE5rN05WTkhSb1pRK0MwSXFm
OWZ2Y2lvTXZUMXRUcm1hME1oS1NqRlFweCtQdnlMVmJEN1lkUDg2TCIKLSAgICAibWVlaEtxVTdo
MXBMR0FpR3dqb2FaOVliaDZLdXEvTVRBSHkzRDgrd2s3QjM2VkJ4RjZkaVZsVVBaSlpRV0tKeSIK
LSAgICAiTUt5OUczc3plMVpHdDlXZUUwQU12a04ySEllZjBIVEtDVVozZUJ2ZWNPTWlqeEwwV2hX
bzVReWY1azZ5bENhVSIKLSAgICAiMmZ4K004RGZEY3dGbzd0U2dMeFNLM0dDRnB4UGZpRHQ2UWs4
Yzl0UW41UzFnWTN0NkxKdXdWQ0Z3VUlYbE5rQiIKLSAgICAiSkQ3K2NaMVovdENyRWh6ajNZQ2sw
dVVVOENpZm9VKzRGRytIR0ZQK1NQenRzWUUwNTVtU2ozK0VzaCtveW9WQiIKLSAgICAiZ0JIOTBz
RTJUMWkwZU5JOGY2MW9TZ3dZRmVIc2Y3ZkM3MVhFWExGUitHd05kbXdxbG13bERaRXBUdTdCb05O
KyIKLSAgICAicTcrVGZrMU1Sa0psTDFQSDZZdS9JUGhaaU5oNHR5SXFET3RsWWZ6cDU3N0ErT1VV
K3E1UFBSRlJJc3FoZU94dCIKLSAgICAibU5sSHg0VXpkNFUzSVRmbW9nSmF6anF3WU8ydmlCWlk0
alVRbXlaczc1ZUgvamlVRkhXUnNoYTNBZG5XNUxXYSIKLSAgICAiRzNQRm5ZYlc4dXJIME5TSkcv
VysvOURBK1k3QWEwY3M0VFBwdUJHWjBOVTFXOTRPb0NNbzRsa082SC95NkxldSIKLSAgICAiM3Zq
WkQzeTlrWms3bXJlOVhId2tJOE1kSzVzPSI7Ci0gICAgCi0gICAgTlNTdHJpbmcgKnBlbUVuY29k
ZWRQcml2YXRlS2V5ID0gQCIiCi0gICAgIk1JSUpRZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVND
Q1N3d2dna29BZ0VBQW9JQ0FRRGV1RTNoSStEeFZqOCsiCi0gICAgIjBZTTBwamRQMGtoS0J2THhn
WXduSFM4NzVoa1ZtYmNiZCt4TlN6SzhQSVFmQ3FubHBzSmxFSDhITFUvQmFRMnQiCi0gICAgIi9H
ZjljL3cvVGZnaytVVHFLdFdLNEJoQ3VwU0hxVHRsSHdLazR6a1lSeEZtQUJRa1laREEyVTZRVEJv
ZWN3WnoiCi0gICAgInhLd2U2dUFNK0hsY0dtQnNQSzEzc0VtNEhVMmdqOG9tYUZ4cU9RQzVYZTlx
dEw2NDh1aDg4YzJwNzV3dnlFMmUiCi0gICAgIk5sREFkWnFzL2ptU3poNEZ3NFB1M0NyRzRlZFdi
OFZZU3Vsanhhem16VXlzOU9GUjBOcUdNUXgvNWg4TW4wb3YiCi0gICAgInpMZlRqSkx3bng5NExG
aDl3ZmdHK0F1MG1ZRTBjbUNQZDQwUDhReG1NbURQWVd3R09zbVR5UW9QZlZ6RDdoYW4iCi0gICAg
InhRWGl5UlpjSi9qcjZZMDRlblhjOTVJSmt2SVhoa0Fkck5SV1NjTTl4elpnMnRaVlhXTHFmZFBY
bVFqUlBsbnQiCi0gICAgInV5MTJZQXU1S1FUWnk0bEpVMDdxQkg1bXhWRk9kNjVESEJaTlRRdzBT
RUE4VTVmWUdFWS9sNkt5QVJUT1NmRXciCi0gICAgImwxMFVPZjFiR1NXN1VtR0NUTUJJRC83Y0Nh
V3NWa3crRTZHTVM2WFRPT0ExSGxFR1hVYndmUDNZc0RIbFFRTUciCi0gICAgIjEwdUR2VWo0andE
TkE2RjNvdTBGNlFRTEVEWHFsSnFtbURtOXhiMW4vdzNwbVd3ZWRuWVhPMERTY0k1K1dTZzciCi0g
ICAgIjJKNk02bHk0VTNnUlZnUEVpM0J5MHJEVXNKNDBQK3ppU2FoRkdkZHRmdVQwN3B3alZSUll6
bjNrYXk3bTA5cmYiCi0gICAgImN6a0JrVUpxL2FBNVc1aDJPbWxMUWM1K2ptRy9wd0lEQVFBQkFv
SUNBR3JhL0NwL2YwWHF2azlTVCtQcnQyL3AiCi0gICAgImtOdExlRFhjbExTVGNQMEpDWkh1ZlFh
RncrN1ZuRkxwcWU0R3ZMcTlCbGxjejhWT3ZRd3JiZS9Dd05XK1Z4QzgiCi0gICAgIlJNamdlMnJx
QUNnd0doT3gxdDg3bDQ2TmtVUXc3RXkwbENsZThrcitNR2dHR29acXJNRmRLSVJVb012NG5tUTYi
Ci0gICAgInRtYzFGSHY1cExSZTlRK0xwNW5ZUXdHb1ltWm9VT3Vlb09hT0wwOG00OXBHWFFraU44
cEpETXhTZk8zSnZ0c3UiCi0gICAgIjRjcUliNmtPUS9kTzFJczFDVHZVUmxkMUlZTEg3WXVTaGk0
WkV4MmcyYWMyVXl2dDZZbXh4dk1tQWpCU0twR2QiCi0gICAgImxvaWVwaG8zL05yREdVS2R2M3E5
UVl5enJBOHc5R1QzMkxER3FnQlhKaTFzY0JJOGNFeGtwNlA0aURsbGh2N3MiCi0gICAgInZac3Nw
dm9iUkphM08xems4NjNMSFhhMjRKQ255dXppbXFleloyT2xoN2w0b2xIb1lENlVGQzlqZmQ0S2NI
UmciCi0gICAgIjFjNHN5cXQvbjhBSy8xczFlQmZTOWR6YjVDZmp0OU10S1lzbHh2THpxMVd3T0lO
d3o4cklZdVJpMFBjTG05aHMiCi0gICAgImwrVTB1L3pCMzdlTWd2Nitpd0RYazFmU2pidVlzRS9i
RVRXWWtuS0dORkZMNUpTaUtWN1dDcG1nTlRUcnJFNEsiCi0gICAgIlM4RTZoUjl1UE9BYW93N3ZQ
Q0N0NHhMWC80OGwyRUk2WmVxNnFPcHExbEoycWN5OHI0dHl1UWdOUkxRTWtaZzEiCi0gICAgIkF4
UWw2dm5ROEN1NGl1K05JaGVmMHk5Wjdxa2ZOdlplQ2o1R2xGQjljMllqVjhZMm1kV2ZKQjRxV0sz
Wi8rTUoiCi0gICAgIlFPVENLUno3L0x4TE5CVWVwUmpKQW9JQkFRRDNac1Y1dFdVOVpTS2NWSjlE
QzdUWmswUCtsaGNpc1pyMG5MMHQiCi0gICAgIlBRdVFPK3BIdlBJMU1xUm5Oc2tISmh5UG5xVkNp
K2RwODl0Sy9JdDU5MFVMbDhvczZVQzFGaHl0QlBvVDFZUGQiCi0gICAgIldHV2VwMnBPYzdiVnBp
NGlwMzF5K0ltZmdlWnlKdE1BVGRtZTNrQlBBT2U1TkdFOUdpZy9sNW5xTHliMDJzZDEiCi0gICAg
IlFXN08wR2RxTHgzRHBMdzRTTGxoTWY2YUUwdUdSUzhzZkIwODVlNERHbjU0TzJ3RVZ1U1pxWmw1
Tk5FZjM1UnoiCi0gICAgIlhnaW0zaCtSV0YxWkZTUXpqQi9zbU4wWmgrdjNJejd2RUoxaDB5d1Y2
bytHenZIa1A5SEU2Z0xJaHR5VjhPRXciCi0gICAgInZseVlrMUdhN3BVVkdSaDhvOE9NZTZSUjlE
UWk3SnFDNGVJN0dja21CemFxekpjREFvSUJBUURtZGU2QVRldzMiCi0gICAgIkg5YlFLNnhuYk1J
bmN6L0NPcElJU2RsY0ZiMjNBSEdFYjRiNFZoSkZCTnd4ck5MNnRIS1NGTGVZWkZMaFRkaHgiCi0g
ICAgIlBmWHlVTEhOZjVvemRFa2wwV3JsZXJvRGRvZ2JDeVdnNXVKcDkvUTY4c2J3YkdyOENBbE83
WkhZVHJqdVFmMUsiCi0gICAgIkFTOXBDbTc3S1AzazJkM1VsRytwZWxEalhMb0J6aVhxME5qeEpw
TXo0NXZySXg4clNXekZOak1HalhUM2ZYYVMiCi0gICAgIjk2MmsvMEFYZWk1L2JmdWhCeGxtN1Bu
aTBiUUpJV0ZrZWFVdUdsck9hSERSeFVpWDFyOUlaUzl3djVsazFQdGciCi0gICAgImlkcGJjV3l3
MThjRkdUdmpkS2hSYlpIOEVzYm16bU5Oc0NHZGdDTXFGa0tZc1cxNlFLb0NqL05Bb3ZJM24wcW4i
Ci0gICAgIjZWb1JhMHNHbVRHTkFvSUJBQ2wvbXFaRXNCdXhTREh5MjlnU01aN0JYZ2xwUWE0M0ht
ZmpsclBzNW5DbUxERW0iCi0gICAgIlYzWm03VDdHNk1lRE5BMC9MamRRWWx2YVpMRmFWVWI3SENE
S3NFWUNSakZaNlN0NGh6NG1kWHorWStWTjdiNEYiCi0gICAgIkdPa1RlKytpS3AvTFlzSlh0c0Qx
RkRXYjJXSVZvN0hjMUFHejhJK2dRSm9TSXVZdVRKbUx6U00wKzVKRFVPVjEiCi0gICAgInk4ZFNi
YVAvUnVFdjBxWWprR3FRVms1ZTcwU1V5T3pLVitaeENUaGRIdkZMaW92VE9UVGdldlV6RTc1eHlk
ZkciCi0gICAgImU3b0NtdFR1cnpndmwvNjlWdTVZZ2lqMW40Q1dQSEhjcTRDUVcvRE9aN0JoRkdC
d2hyVzc5dm9ISkY4UGJ3UE8iCi0gICAgIiswRFR1ZERHWTNuQUQ1c1RuRjh6VXVPYllpaEp0Znpq
L3Q1OWZPTUNnZ0VCQUlZdXVCVUFTYjYyelE0YnY1L2ciCi0gICAgIlZSTS9LU3BmaTlORG5FamZa
N3g3aDV6Q2l1Vmd4L1pqcEFsUVJPOHZ6VjE4cm9FT09LdHg5Y25KZDhBRWQrSGMiCi0gICAgIm45
M0JvUzFoeDBtaHNWaCsxVFJad3lqeUJYWUpwcXdEMnd6MU16MVhPSVE2RXFiTS95UEtURDJnZndn
N3lPNTMiCi0gICAgInFZeHJ4WnNXYWdWVmNHOVErQVJCRVJhdFR3THBvTitmY0pMeHVoNHIvQ2Ev
TGVwc3htT3JLelRhL01HSzFMaFciCi0gICAgInJXZ0lrMi9vZ0VQTFNwdGoyZDFQRURPK0dBekZ6
NFZLamhXMU5sVWg5ZkdpNklKUExITG5CdzNvZGJpMFM4S1QiCi0gICAgImdBOVo1K0xCYzVjbG90
QVA1cnRRQThXaC9aQ0VvUFRLVFRBMmJqVzJITWF0SmNiR21SMEZwQ1FyM0FNMFkxU08iCi0gICAg
Ik1ha0NnZ0VBTHJ1NlFaNllVd0pKRzQ1SDFlcS9yUGREWTh0cXFqSlZWaUtvQlZ2ektqL1hmSlpZ
RVZRaUl3NXAiCi0gICAgInVvR2hEb3lGdUZVZUloL2QxSmMySXJ1eTJXam9Pa2lRWXRJdWdESEh4
UnJrTGRRY2pQaGxDVENFL21teVNKdCsiCi0gICAgImJrVWJpSEliUThkSjV5ajhTS3IwYkh6cUV0
T3k5L0plUmprWUdIQzZiVldwcTVGQTJNQmhmNGROako0VURsblQiCi0gICAgInZ1ZVBjVGpyN25u
Zlkxc3p0dmZWbDlEOGRtZ1QrVEJuT09WNnlXajFnbTViUzFEeFFTTGdObXRLeEo4dEFoMnUiCi0g
ICAgImRFT2J2Y3BTaFAyMkl0T1ZqU2FtcFJ1QXVSRzI2WmVtRWJHQ0kzSjZNcXgzeTZtKzZId3Vs
dHNndGR6RGdyRmUiCi0gICAgInFKZlU4YmJkYnUycGk0N1k0RmRKSzBITGZmbDVSdz09IjsKLSAg
ICAKLSAgICBOU0RhdGEgKmRlckVuY29kZWRDZXJ0aWZpY2F0ZSA9IFtbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOnBlbUVuY29kZWRDZXJ0aWZpY2F0ZSBvcHRpb25z
OjBdIGF1dG9yZWxlYXNlXTsKLSAgICBSZXRhaW5QdHI8U2VjQ2VydGlmaWNhdGVSZWY+IGNlcnRp
ZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChf
X2JyaWRnZSBDRkRhdGFSZWYpZGVyRW5jb2RlZENlcnRpZmljYXRlKSk7Ci0gICAgCi0gICAgTlNE
YXRhICpkZXJFbmNvZGVkUHJpdmF0ZUtleSA9IFtbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNl
NjRFbmNvZGVkU3RyaW5nOnBlbUVuY29kZWRQcml2YXRlS2V5IG9wdGlvbnM6MF0gYXV0b3JlbGVh
c2VdOworICAgIFZlY3Rvcjx1aW50OF90PiBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0V2ViS2l0QVBJ
OjpUQ1BTZXJ2ZXI6OnRlc3RQcml2YXRlS2V5KCk7CisgICAgTlNEYXRhICpkZXJFbmNvZGVkUHJp
dmF0ZUtleSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMuZGF0YSgpIGxl
bmd0aDpwcml2YXRlS2V5Qnl0ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMg
PSBAewogICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlUlNB
LAogICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2
YXRlLApAQCAtMTc5LDMyICs1NSwxMiBAQCBzdGF0aWMgc3RkOjpwYWlyPFJldGFpblB0cjxOU1VS
TENyZWRlbnRpCiAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgIEVYUEVDVF9OT1RfTlVMTChw
cml2YXRlS2V5LmdldCgpKTsKIAotICAgIFNlY0tleWNoYWluUmVmIGtleWNoYWluUmVmID0gbnVs
bHB0cjsKLSAgICBjb25zdCBjaGFyKiBrZXljaGFpblBhc3N3b3JkID0gInRlc3RwYXNzd29yZCI7
Ci0gICAgTlNTdHJpbmcgKmtleWNoYWluUGF0aCA9IFtOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIlRlc3RLZXljaGFpbiJdOwotICAgIE9TU3Rh
dHVzIHN0YXR1cyA9IFNlY0tleWNoYWluQ3JlYXRlKFtrZXljaGFpblBhdGggVVRGOFN0cmluZ10s
IHN0cmxlbihrZXljaGFpblBhc3N3b3JkKSwga2V5Y2hhaW5QYXNzd29yZCwgTk8sIG51bGxwdHIs
ICZrZXljaGFpblJlZik7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdHVzID09IGVyclNlY1N1Y2Nlc3Mp
OwotICAgIFJldGFpblB0cjxTZWNLZXljaGFpblJlZj4ga2V5Y2hhaW4gPSBhZG9wdENGKGtleWNo
YWluUmVmKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoa2V5Y2hhaW4pOwotCi0gICAgU2VjRXh0ZXJu
YWxJdGVtVHlwZSB0eXBlID0ga1NlY0l0ZW1UeXBlUHJpdmF0ZUtleTsKLSAgICBzdGF0dXMgPSBT
ZWNJdGVtSW1wb3J0KChfX2JyaWRnZSBDRkRhdGFSZWYpZGVyRW5jb2RlZFByaXZhdGVLZXksIG51
bGxwdHIsIG51bGxwdHIsICZ0eXBlLCAwLCBudWxscHRyLCBrZXljaGFpbi5nZXQoKSwgbnVsbHB0
cik7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdHVzID09IGVyclNlY1N1Y2Nlc3MpOwotCi0gICAgU2Vj
SWRlbnRpdHlSZWYgaWRlbnRpdHlSZWYgPSBudWxscHRyOwotICAgIHN0YXR1cyA9IFNlY0lkZW50
aXR5Q3JlYXRlV2l0aENlcnRpZmljYXRlKGtleWNoYWluLmdldCgpLCBjZXJ0aWZpY2F0ZS5nZXQo
KSwgJmlkZW50aXR5UmVmKTsKLSAgICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpdHlSZWYpOwotICAg
IEVYUEVDVF9UUlVFKHN0YXR1cyA9PSBlcnJTZWNTdWNjZXNzKTsKLSAgICBSZXRhaW5QdHI8U2Vj
SWRlbnRpdHlSZWY+IGlkZW50aXR5ID0gYWRvcHRDRihpZGVudGl0eVJlZik7CisgICAgUmV0YWlu
UHRyPFNlY0lkZW50aXR5UmVmPiBpZGVudGl0eSA9IGFkb3B0Q0YoU2VjSWRlbnRpdHlDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHByaXZhdGVLZXkuZ2V0KCkp
KTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpdHkpOwogICAgIAotICAgIHJldHVybiB7Ci0g
ICAgICAgIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTppZGVudGl0eS5n
ZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0KCldIHBlcnNpc3RlbmNlOk5T
VVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV0sCi0gICAgICAgIGtleWNoYWluUGF0aAotICAg
IH07CisgICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVudGl0eTpp
ZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0KCldIHBlcnNp
c3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9CiAKLXN0YXRpYyBSZXRh
aW5QdHI8TlNTdHJpbmc+IGtleWNoYWluUGF0aDsKLQogQGludGVyZmFjZSBDaGFsbGVuZ2VEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KIEBlbmQKIApAQCAtMjI5LDE4
ICs4NSwxNSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkCiAgICAg
RVhQRUNUX1RSVUUoW3Byb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCBpc0VxdWFs
VG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNpY10pOwogICAgIEVYUEVD
VF9FUShbKE5TSFRUUFVSTFJlc3BvbnNlICopY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSBzdGF0
dXNDb2RlXSwgNDAxKTsKIAotICAgIGF1dG8gcGFpciA9IGNyZWRlbnRpYWxXaXRoSWRlbnRpdHlB
bmRLZXljaGFpblBhdGgoKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgcGFpci5maXJzdC5nZXQoKSk7Ci0gICAga2V5Y2hhaW5Q
YXRoID0gV1RGTW92ZShwYWlyLnNlY29uZCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWxXaXRoSWRlbnRpdHko
KS5nZXQoKSk7CiB9CiAKIEBlbmQKIAotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCiBURVNU
KENoYWxsZW5nZSwgU2VjSWRlbnRpdHkpCiB7Ci0gICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25k
V2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7
CisgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhl
bk9LKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKICAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQ2hhbGxlbmdlRGVsZWdhdGUgbmV3XSk7CkBAIC0y
NDgsMTUgKzEwMSw2MSBAQCBURVNUKENoYWxsZW5nZSwgU2VjSWRlbnRpdHkpCiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQv
Iiwgc2VydmVyLnBvcnQoKV1dXV07CiAKICAgICBVdGlsOjpydW4oJm5hdmlnYXRpb25GaW5pc2hl
ZCk7Cit9CisKK0BpbnRlcmZhY2UgQ2xpZW50Q2VydGlmaWNhdGVEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4geworICAgIHNpemVfdCBfY2hhbGxlbmdlQ291bnQ7Cisg
ICAgYm9vbCBfcmVjZWl2ZWRDbGllbnRDZXJ0aWZpY2F0ZUNoYWxsZW5nZTsKK30KKy0gKHNpemVf
dCljaGFsbGVuZ2VDb3VudDsKKy0gKGJvb2wpcmVjZWl2ZWRDbGllbnRDZXJ0aWZpY2F0ZUNoYWxs
ZW5nZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIENsaWVudENlcnRpZmljYXRlRGVsZWdhdGUK
KworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRp
b246KG51bGxfdW5zcGVjaWZpZWQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAgIG5h
dmlnYXRpb25GaW5pc2hlZCA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICop
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2NoYWxsZW5nZUNvdW50Kys7CisKKyAgICBpZiAo
W2NoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QgaXNFcXVhbFRv
U3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdF0pCisgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVu
dGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgIAotICAgIEVYUEVDVF9OT1RfTlVMTChrZXlj
aGFpblBhdGguZ2V0KCkpOwotICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0UGF0aDprZXljaGFpblBhdGguZ2V0
KCkgZXJyb3I6JmVycm9yXTsKLSAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgRVhQRUNUX1RS
VUUoW2NoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QgaXNFcXVh
bFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV0pOwor
ICAgIF9yZWNlaXZlZENsaWVudENlcnRpZmljYXRlQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgY3Jl
ZGVudGlhbFdpdGhJZGVudGl0eSgpLmdldCgpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQorLSAoc2l6ZV90KWNoYWxsZW5nZUNvdW50Cit7CisgICAgcmV0dXJuIF9jaGFsbGVu
Z2VDb3VudDsKK30KKworLSAoYm9vbClyZWNlaXZlZENsaWVudENlcnRpZmljYXRlQ2hhbGxlbmdl
Cit7CisgICAgcmV0dXJuIF9yZWNlaXZlZENsaWVudENlcnRpZmljYXRlQ2hhbGxlbmdlOworfQog
CitAZW5kCisKKyNpZiBIQVZFKFNFQ19LRVlfUFJPWFkpCitURVNUKENoYWxsZW5nZSwgQ2xpZW50
Q2VydGlmaWNhdGUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAg
VENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQU1dpdGhDbGllbnRDZXJ0
aWZpY2F0ZVJlcXVlc3QsIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyk7CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW0NsaWVudENlcnRpZmljYXRlRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVy
LnBvcnQoKV1dXV07CisgICAgCisgICAgVXRpbDo6cnVuKCZuYXZpZ2F0aW9uRmluaXNoZWQpOwor
ICAgIEVYUEVDVF9FUShbZGVsZWdhdGUgY2hhbGxlbmdlQ291bnRdLCAydWxsKTsKK30KICNlbmRp
ZgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNlY29uZENoYWxsZW5nZTsKQEAgLTI5MCw3ICsxODks
NyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkCiBURVNUKENoYWxs
ZW5nZSwgQmFzaWNQcm9wb3NlZENyZWRlbnRpYWwpCiB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEk7Ci0gICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRo
ZW5PSywgMik7CisgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hh
bGxlbmdlVGhlbk9LLCAyKTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSByZXRhaW5QdHIoW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4iXSk7CiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJv
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtQcm9wb3NlZENyZWRlbnRpYWxEZWxlZ2F0ZSBuZXddKTsKQEAgLTQwNiwxNiAr
MzA1LDEzIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoV2ViS2l0LCBTZXJ2ZXJU
cnVzdCkKIHsKICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBT
LCBbXSAoU1NMKiBzc2wpIHsKLSAgICAgICAgY2hhciByZXF1ZXN0QnVmZmVyWzEwMDBdOwotICAg
ICAgICBhdXRvIHJlYWRSZXN1bHQgPSBTU0xfcmVhZChzc2wsIHJlcXVlc3RCdWZmZXIsIHNpemVv
ZihyZXF1ZXN0QnVmZmVyKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVhZFJlc3VsdCwgcmVh
ZFJlc3VsdCA+IDApOworICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc3NsKTsKIAogICAgICAgICBj
b25zdCBjaGFyKiByZXBseSA9ICIiCiAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgogICAg
ICAgICAiQ29udGVudC1MZW5ndGg6IDEzXHJcblxyXG4iCiAgICAgICAgICJIZWxsbywgV29ybGQh
IjsKLSAgICAgICAgYXV0byB3cml0ZVJlc3VsdCA9IFNTTF93cml0ZShzc2wsIHJlcGx5LCBzdHJs
ZW4ocmVwbHkpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRCh3cml0ZVJlc3VsdCwgd3JpdGVSZXN1
bHQgPT0gc3RhdGljX2Nhc3Q8aW50PihzdHJsZW4ocmVwbHkpKSk7CisgICAgICAgIFRDUFNlcnZl
cjo6d3JpdGUoc3NsLCByZXBseSwgc3RybGVuKHJlcGx5KSk7CiAgICAgfSk7CiAKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERkxpbmtSZWZlcnJlci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERkxpbmtSZWZlcnJlci5t
bQkocmV2aXNpb24gMjQ1MTYzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QREZMaW5rUmVmZXJyZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTcyLDI2ICs3MiwyNCBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TRGF0YT4gY3JlYXRlUERGV2l0aExpCiAKIFRFU1QoV2ViS2l0
LCBQREZMaW5rUmVmZXJyZXIpCiB7Ci0gICAgVGVzdFdlYktpdEFQSTo6VENQU2VydmVyIHNlcnZl
cihbXSAoaW50IHNvY2tldCkgewotICAgICAgICBjaGFyIHJlYWRCdWZmZXJbMTAwMF07Ci0gICAg
ICAgIG1lbXNldChyZWFkQnVmZmVyLCAwLCAxMDAwKTsKLQorICAgIHVzaW5nIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoW10gKGludCBzb2NrZXQpIHsKICAg
ICAgICAgLy8gVGhpcyBhc3N1bWVzIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBIVFRQIHJlcXVlc3Qg
aXMgYXZhaWxhYmxlIHRvIGJlIHJlYWQgYXQgb25jZSwKICAgICAgICAgLy8gd2hpY2ggaXMgcHJv
YmFibHkgYW4gb2theSBhc3N1bXB0aW9uLgotICAgICAgICA6OnJlYWQoc29ja2V0LCByZWFkQnVm
ZmVyLCA5OTkpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVxdWVzdCA9IFRDUFNlcnZlcjo6
cmVhZChzb2NrZXQpOwogCiAgICAgICAgIC8vIExvb2sgZm9yIGEgcmVmZXJlciBoZWFkZXIuCi0g
ICAgICAgIGNoYXIqIGN1cnJlbnRMaW5lID0gcmVhZEJ1ZmZlcjsKKyAgICAgICAgY29uc3QgY2hh
ciogY3VycmVudExpbmUgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihyZXF1ZXN0LmRhdGEoKSk7
CiAgICAgICAgIHdoaWxlIChjdXJyZW50TGluZSkgewogICAgICAgICAgICAgRVhQRUNUX05FKHN0
cm5jYXNlY21wKGN1cnJlbnRMaW5lLCAicmVmZXJlcjoiLCA4KSwgMCk7Ci0gICAgICAgICAgICBj
aGFyKiBuZXh0TGluZSA9IHN0cmNocihjdXJyZW50TGluZSwgJ1xuJyk7CisgICAgICAgICAgICBj
b25zdCBjaGFyKiBuZXh0TGluZSA9IHN0cmNocihjdXJyZW50TGluZSwgJ1xuJyk7CiAgICAgICAg
ICAgICBjdXJyZW50TGluZSA9IG5leHRMaW5lID8gbmV4dExpbmUgKyAxIDogMDsKICAgICAgICAg
fQogCiAgICAgICAgIGNvbnN0IGNoYXIqIHJlc3BvbnNlSGVhZGVyID0KICAgICAgICAgIkhUVFAv
MS4xIDIwMCBPS1xyXG4iCiAgICAgICAgICJDb250ZW50LUxlbmd0aDogMFxyXG5cclxuIjsKLSAg
ICAgICAgOjp3cml0ZShzb2NrZXQsIHJlc3BvbnNlSGVhZGVyLCBzdHJsZW4ocmVzcG9uc2VIZWFk
ZXIpKTsKKyAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIHJlc3BvbnNlSGVhZGVyLCBz
dHJsZW4ocmVzcG9uc2VIZWFkZXIpKTsKICAgICB9KTsKIAogICAgIFJldGFpblB0cjxUZXN0V0tX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQkocmV2aXNpb24gMjQ1MTYzKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTcsMTggKzU3LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBU
RVNUKFdlYktpdCwgSFRUUFNQcm94eSkKIHsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZl
cjo6UHJvdG9jb2w6OkhUVFBTUHJveHksIFtdIChTU0wqIHNzbCkgewotICAgICAgICBjaGFyIHJl
cXVlc3RCdWZmZXJbMTAwMF07Ci0gICAgICAgIGF1dG8gcmVhZFJlc3VsdCA9IFNTTF9yZWFkKHNz
bCwgcmVxdWVzdEJ1ZmZlciwgc2l6ZW9mKHJlcXVlc3RCdWZmZXIpKTsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRChyZWFkUmVzdWx0LCByZWFkUmVzdWx0ID4gMCk7Ci0KLSAgICAgICAgY29uc3QgY2hh
ciogcmVwbHkgPSAiIgotICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgIkNv
bnRlbnQtTGVuZ3RoOiAzNFxyXG5cclxuIgotICAgICAgICAiPHNjcmlwdD5hbGVydCgnc3VjY2Vz
cyEnKTwvc2NyaXB0PiI7Ci0gICAgICAgIGF1dG8gd3JpdGVSZXN1bHQgPSBTU0xfd3JpdGUoc3Ns
LCByZXBseSwgc3RybGVuKHJlcGx5KSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQod3JpdGVSZXN1
bHQsIHdyaXRlUmVzdWx0ID09IHN0YXRpY19jYXN0PGludD4oc3RybGVuKHJlcGx5KSkpOwotICAg
IH0pOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFNQcm94
eSwgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKTsKIAogICAgIGF1dG8gc3RvcmVDb25maWd1cmF0
aW9uID0gYWRvcHROUyhbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7CiAg
ICAgW3N0b3JlQ29uZmlndXJhdGlvbiBzZXRIVFRQU1Byb3h5OltOU1VSTCBVUkxXaXRoU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2Vy
dmVyLnBvcnQoKV1dXTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS05hdmlnYXRpb25SZXNwb25zZS5tbQkocmV2aXNpb24g
MjQ1MTYzKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS05hdmln
YXRpb25SZXNwb25zZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk1LDQxICsxOTUsMjggQEAgLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlYwogCiBAZW5kCiAKLXN0YXRpYyB2
b2lkIHJlYWRSZXF1ZXN0KGludCBzb2NrZXQpCi17Ci0gICAgY2hhciByZWFkQnVmZmVyWzEwMDBd
OwotICAgIGF1dG8gYnl0ZXNSZWFkID0gOjpyZWFkKHNvY2tldCwgcmVhZEJ1ZmZlciwgc2l6ZW9m
KHJlYWRCdWZmZXIpKTsKLSAgICBFWFBFQ1RfR1QoYnl0ZXNSZWFkLCAwKTsKLSAgICBFWFBFQ1Rf
VFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YocmVhZEJ1ZmZlcikp
OwotfQotCi1zdGF0aWMgdm9pZCB3cml0ZVJlc3BvbnNlKGludCBzb2NrZXQsIE5TU3RyaW5nICpy
ZXNwb25zZSkKLXsKLSAgICBjb25zdCBjaGFyKiBieXRlcyA9IHJlc3BvbnNlLlVURjhTdHJpbmc7
Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgYnl0ZXMsIHN0cmxlbihi
eXRlcykpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiks
IHN0cmxlbihieXRlcykpOwotfQotCiBURVNUKFdlYktpdCwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VE
b3dubG9hZEF0dHJpYnV0ZSkKIHsKICAgICBhdXRvIGdldERvd25sb2FkUmVzcG9uc2UgPSBbXSAo
UmV0YWluUHRyPE5TU3RyaW5nPiBib2R5KSAtPiBSZXRhaW5QdHI8V0tOYXZpZ2F0aW9uUmVzcG9u
c2U+IHsKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6VENQU2VydmVyIHNlcnZlcihbYm9keV0oaW50
IHNvY2tldCkgewotICAgICAgICAgICAgcmVhZFJlcXVlc3Qoc29ja2V0KTsKKyAgICAgICAgdXNp
bmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoW2Jv
ZHldKGludCBzb2NrZXQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJvZHlMZW5ndGggPSBbYm9k
eSBsZW5ndGhdOwotICAgICAgICAgICAgd3JpdGVSZXNwb25zZShzb2NrZXQsIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OgorICAgICAgICAgICAgTlNTdHJpbmcgKmZpcnN0UmVzcG9uc2UgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKICAgICAgICAgICAgICAgICBAIkhUVFAvMS4xIDIw
MCBPS1xyXG4iCiAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAlZFxyXG5cclxuIgog
ICAgICAgICAgICAgICAgICIlQCIsCiAgICAgICAgICAgICAgICAgYm9keUxlbmd0aCwKICAgICAg
ICAgICAgICAgICBib2R5LmdldCgpCi0gICAgICAgICAgICBdKTsKLSAgICAgICAgICAgIHJlYWRS
ZXF1ZXN0KHNvY2tldCk7Ci0gICAgICAgICAgICB3cml0ZVJlc3BvbnNlKHNvY2tldCwKLSAgICAg
ICAgICAgICAgICBAIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICBdOworICAgICAg
ICAgICAgTlNTdHJpbmcgKnNlY29uZFJlc3BvbnNlID0gQCJIVFRQLzEuMSAyMDAgT0tcclxuIgog
ICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNlxyXG4iCiAgICAgICAgICAgICAgICAg
IkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPWZyb21IZWFkZXIudHh0
O1xyXG5cclxuIgotICAgICAgICAgICAgICAgICJIZWxsbyEiCi0gICAgICAgICAgICApOworICAg
ICAgICAgICAgICAgICJIZWxsbyEiOworCisgICAgICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQoc29j
a2V0KTsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBmaXJzdFJlc3BvbnNl
LlVURjhTdHJpbmcsIGZpcnN0UmVzcG9uc2UubGVuZ3RoKTsKKyAgICAgICAgICAgIFRDUFNlcnZl
cjo6cmVhZChzb2NrZXQpOworICAgICAgICAgICAgVENQU2VydmVyOjp3cml0ZShzb2NrZXQsIHNl
Y29uZFJlc3BvbnNlLlVURjhTdHJpbmcsIHNlY29uZFJlc3BvbnNlLmxlbmd0aCk7CiAgICAgICAg
IH0pOwogICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbTmF2aWdhdGlvblJlc3BvbnNl
VGVzdERlbGVnYXRlIG5ld10pOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dl
YlZpZXcgbmV3XSk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2Vic2l0ZURhdGFzdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2Vic2l0ZURhdGFzdG9yZS5tbQkocmV2aXNpb24gMjQ1MTYz
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRh
c3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMCwzNiArMTEwLDkgQEAgVEVTVChXS1dlYnNp
dGVEYXRhU3RvcmUsIFJlbW92ZUVwaGVtZXJhbAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKGlu
dCBzb2NrZXQpCi17Ci0gICAgY2hhciByZWFkQnVmZmVyWzEwMDBdOwotICAgIGF1dG8gYnl0ZXNS
ZWFkID0gOjpyZWFkKHNvY2tldCwgcmVhZEJ1ZmZlciwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAg
ICBFWFBFQ1RfR1QoYnl0ZXNSZWFkLCAwKTsKLSAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxz
aXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YocmVhZEJ1ZmZlcikpOwotICAgIAotICAgIGNvbnN0
IGNoYXIqIGNoYWxsZW5nZUhlYWRlciA9Ci0gICAgIkhUVFAvMS4xIDQwMSBVbmF1dGhvcml6ZWRc
clxuIgotICAgICJEYXRlOiBTYXQsIDIzIE1hciAyMDE5IDA2OjI5OjAxIEdNVFxyXG4iCi0gICAg
IkNvbnRlbnQtTGVuZ3RoOiAwXHJcbiIKLSAgICAiV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVh
bG09XCJ0ZXN0cmVhbG1cIlxyXG5cclxuIjsKLSAgICBhdXRvIGJ5dGVzV3JpdHRlbiA9IDo6d3Jp
dGUoc29ja2V0LCBjaGFsbGVuZ2VIZWFkZXIsIHN0cmxlbihjaGFsbGVuZ2VIZWFkZXIpKTsKLSAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pLCBzdHJsZW4oY2hh
bGxlbmdlSGVhZGVyKSk7Ci0gICAgCi0gICAgYnl0ZXNSZWFkID0gOjpyZWFkKHNvY2tldCwgcmVh
ZEJ1ZmZlciwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICBFWFBFQ1RfR1QoYnl0ZXNSZWFkLCAw
KTsKLSAgICBFWFBFQ1RfVFJVRShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXpl
b2YocmVhZEJ1ZmZlcikpOwotICAgIAotICAgIGNvbnN0IGNoYXIqIHJlc3BvbnNlSGVhZGVyID0K
LSAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAiQ29udGVudC1MZW5ndGg6IDEzXHJcblxy
XG4iCi0gICAgIkhlbGxvLCBXb3JsZCEiOwotICAgIGJ5dGVzV3JpdHRlbiA9IDo6d3JpdGUoc29j
a2V0LCByZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7Ci0gICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSwgc3RybGVuKHJlc3BvbnNlSGVh
ZGVyKSk7Ci19Ci0gICAgCiBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgRmV0Y2hOb25QZXJzaXN0
ZW50Q3JlZGVudGlhbHMpCiB7Ci0gICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxs
ZW5nZVRoZW5PSyk7CisgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRo
Q2hhbGxlbmdlVGhlbk9LKTsKICAgICAKICAgICB1c2VQZXJzaXN0ZW50Q3JlZGVudGlhbFN0b3Jh
Z2UgPSBmYWxzZTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIG5ld10pOwpAQCAtMTY0LDcgKzEzNyw3IEBAIFRFU1QoV0tXZWJzaXRlRGF0
YVN0b3JlLCBGZXRjaE5vblBlcnNpc3QKIAogVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIEZldGNo
UGVyc2lzdGVudENyZWRlbnRpYWxzKQogewotICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9uZFdp
dGhDaGFsbGVuZ2VUaGVuT0spOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpyZXNw
b25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CiAgICAgCiAgICAgdXNlUGVyc2lzdGVudENyZWRlbnRp
YWxTdG9yYWdlID0gdHJ1ZTsKICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpAQCAtMjAyLDcgKzE3NSw3IEBAIFRFU1QoV0tX
ZWJzaXRlRGF0YVN0b3JlLCBGZXRjaFBlcnNpc3RlbnQKIAogVEVTVChXS1dlYnNpdGVEYXRhU3Rv
cmUsIFJlbW92ZVBlcnNpc3RlbnRDcmVkZW50aWFscykKIHsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVy
KHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNl
cnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwogCiAgICAgdXNlUGVyc2lzdGVudENy
ZWRlbnRpYWxTdG9yYWdlID0gdHJ1ZTsKICAgICBhdXRvIHdlYnNpdGVEYXRhU3RvcmUgPSBbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpAQCAtMjUzLDcgKzIyNiw3IEBAIFRF
U1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVQZXJzaXN0ZW4KIAogVEVTVChXS1dlYnNpdGVE
YXRhU3RvcmUsIFJlbW92ZU5vblBlcnNpc3RlbnRDcmVkZW50aWFscykKIHsKLSAgICBUQ1BTZXJ2
ZXIgc2VydmVyKHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKKyAgICBUQ1BTZXJ2ZXIgc2Vy
dmVyKFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwogCiAgICAgdXNlUGVy
c2lzdGVudENyZWRlbnRpYWxTdG9yYWdlID0gZmFsc2U7CiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369849</attachid>
            <date>2019-05-14 08:16:13 -0700</date>
            <delta_ts>2019-05-16 14:29:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197800-20190514081612.patch</filename>
            <type>text/plain</type>
            <size>43468</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDUyNjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA1LTEzICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGEgdW5pdCB0ZXN0IGZvciBj
bGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg6Cisg
ICAgICAgIE1vdmUgZGVjbGFyYXRpb25zIGZyb20gQXJndW1lbnRDb2RlcnNDRi5jcHAgc28gdGhl
eSBjYW4gYmUgc2hhcmVkLgorCiAyMDE5LTA1LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgd3Jva2Fyb3VuZCBmb3IgTUFDSF9WTV9N
QVhfQUREUkVTUyBpbiBBUk0zMl82NApJbmRleDogU291cmNlL1dURi93dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3Vy
aXR5U1BJLmgJKHJldmlzaW9uIDI0NTI0NikKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9T
ZWN1cml0eVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMCBAQAogCiAjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKIAorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0FjY2Vzc0NvbnRy
b2xQcml2Lmg+CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQ2VydGlmaWNhdGVQcml2Lmg+CisjaW5j
bHVkZSA8U2VjdXJpdHkvU2VjSWRlbnRpdHlQcml2Lmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2Vj
S2V5UHJpdi5oPgogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY1Rhc2suaD4KICNpbmNsdWRlIDxTZWN1
cml0eS9TZWNUcnVzdFByaXYuaD4KIApAQCAtNjcsNyArNzAsMTEgQEAgV1RGX0VYVEVSTl9DX0JF
R0lOCiAKIFNlY1Rhc2tSZWYgU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKENGQWxsb2NhdG9y
UmVmLCBhdWRpdF90b2tlbl90KTsKIFNlY1Rhc2tSZWYgU2VjVGFza0NyZWF0ZUZyb21TZWxmKENG
QWxsb2NhdG9yUmVmKTsKLUNGVHlwZVJlZiBTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQo
U2VjVGFza1JlZiwgQ0ZTdHJpbmdSZWYgZW50aXRsZW1lbnQsIENGRXJyb3JSZWYgKik7CitDRlR5
cGVSZWYgU2VjVGFza0NvcHlWYWx1ZUZvckVudGl0bGVtZW50KFNlY1Rhc2tSZWYsIENGU3RyaW5n
UmVmIGVudGl0bGVtZW50LCBDRkVycm9yUmVmKik7CitTZWNJZGVudGl0eVJlZiBTZWNJZGVudGl0
eUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgU2VjQ2VydGlmaWNhdGVSZWYsIFNlY0tleVJlZik7CitP
U1N0YXR1cyBTZWNLZXlGaW5kV2l0aFBlcnNpc3RlbnRSZWYoQ0ZEYXRhUmVmIHBlcnNpc3RlbnRS
ZWYsIFNlY0tleVJlZiogbG9va2VkVXBEYXRhKTsKK1NlY0FjY2Vzc0NvbnRyb2xSZWYgU2VjQWNj
ZXNzQ29udHJvbENyZWF0ZUZyb21EYXRhKENGQWxsb2NhdG9yUmVmLCBDRkRhdGFSZWYsIENGRXJy
b3JSZWYqKTsKK0NGRGF0YVJlZiBTZWNBY2Nlc3NDb250cm9sQ29weURhdGEoU2VjQWNjZXNzQ29u
dHJvbFJlZik7CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQXNu
MVR5cGVzLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ1MjY0KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNS0xMyAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFk
ZCBhIHVuaXQgdGVzdCBmb3IgY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4MDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogU2hhcmVkL2NmL0Fy
Z3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICBNb3ZlIFNQSSBkZWNsYXJhdGlvbnMgdG8gU2Vj
dXJpdHlTUEkuaC4KKwogMjAxOS0wNS0xMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gSW52YWxpZFN0YXRlRXJyb3Igc2hvdWxkIGJlIHJl
cG9ydGVkIHRvIHNpdGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENv
ZGVyc0NGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmNwcAkocmV2aXNpb24gMjQ1MjQ2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDI5ICs0MSw2IEBA
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNlbmRpZgogCi0jaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNJZGVudGl0eVByaXYuaD4K
LSNlbmRpZgotCi1leHRlcm4gIkMiIFNlY0lkZW50aXR5UmVmIFNlY0lkZW50aXR5Q3JlYXRlKENG
QWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUsIFNl
Y0tleVJlZiBwcml2YXRlS2V5KTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNLZXlQcml2Lmg+Ci0j
ZW5kaWYKLQotZXh0ZXJuICJDIiBPU1N0YXR1cyBTZWNLZXlGaW5kV2l0aFBlcnNpc3RlbnRSZWYo
Q0ZEYXRhUmVmIHBlcnNpc3RlbnRSZWYsIFNlY0tleVJlZiogbG9va2VkVXBEYXRhKTsKLSNlbmRp
ZgotCi0jaWYgSEFWRShTRUNfQUNDRVNTX0NPTlRST0wpCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNBY2Nlc3NDb250cm9sUHJpdi5oPgotI2VuZGlm
Ci0KLWV4dGVybiAiQyIgU2VjQWNjZXNzQ29udHJvbFJlZiBTZWNBY2Nlc3NDb250cm9sQ3JlYXRl
RnJvbURhdGEoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkRhdGFSZWYgZGF0YSwgQ0ZFcnJv
clJlZiAqZXJyb3IpOwotZXh0ZXJuICJDIiBDRkRhdGFSZWYgU2VjQWNjZXNzQ29udHJvbENvcHlE
YXRhKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzX2NvbnRyb2wpOwotI2VuZGlmCi0KIG5hbWVz
cGFjZSBJUEMgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NTI2NCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE5LTA1
LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIGEgdW5pdCB0ZXN0IGZvciBjbGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzgwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgTWFrZSBiZXR0
ZXIgYWJzdHJhY3Rpb25zIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIGZyb20vdG8gVENQU2VydmVy
LgorICAgICAgICBBZGQgYSB1bml0IHRlc3QgdGhhdCBjYXVzZXMgYSBjbGllbnQgY2VydGlmaWNh
dGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIHRvIGhhcHBlbi4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVENQU2VydmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZl
cjo6VENQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6cmVhZCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OndyaXRlKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjpyZXNwb25kV2l0aE9LKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVu
dGl0eSk6CisgICAgICAgICgtW0NoYWxsZW5nZURlbGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoVEVT
VCk6CisgICAgICAgICgtW0NsaWVudENlcnRpZmljYXRlRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5p
c2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlIHdl
YlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlIGNoYWxsZW5nZUNvdW50
XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKHJlc3BvbmRXaXRo
Q2hhbGxlbmdlVGhlbk9LKTogRGVsZXRlZC4KKyAgICAgICAgKGNyZWRlbnRpYWxXaXRoSWRlbnRp
dHlBbmRLZXljaGFpblBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUERGTGlua1JlZmVycmVyLm1tOgorICAgICAgICAoVEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW06CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKHJlYWRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKHdyaXRlUmVzcG9uc2UpOiBEZWxl
dGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRl
RGF0YXN0b3JlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk6IERlbGV0ZWQuCisKIDIw
MTktMDUtMTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBDb21wcmVzcyBXYXRjaHBvaW50IHNpemUgYnkgdXNpbmcgZW51bSB0eXBlIGFuZCBQYWNr
ZWQ8PiBkYXRhIHN0cnVjdHVyZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcAkocmV2
aXNpb24gMjQ1MjQ2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8dGhyZWFkPgogI2luY2x1ZGUg
PHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogCiBleHRlcm4gIkMiIHsKIApAQCAtMzgsNiArMzksMTAgQEAgc3RydWN0IFg1
MDk7CiBzdHJ1Y3QgU1NMX0NUWDsKIHN0cnVjdCBFVlBfUEtFWTsKIHN0cnVjdCBTU0xfTUVUSE9E
Oworc3RydWN0IFg1MDlfU1RPUkVfQ1RYIHsKKyAgICB2b2lkKiB1bnVzZWQ7CisgICAgWDUwOSog
Y2VydDsKK307CiBzdHJ1Y3QgcGVtX3Bhc3N3b3JkX2NiOwogaW50IEJJT19mcmVlKEJJTyopOwog
aW50IFNTTF9mcmVlKFNTTCopOwpAQCAtNTYsNiArNjEsMTUgQEAgaW50IFNTTF9DVFhfdXNlX1By
aXZhdGVLZXkoU1NMX0NUWCosIEVWUAogU1NMKiBTU0xfbmV3KFNTTF9DVFgqKTsKIGludCBTU0xf
YWNjZXB0KFNTTCopOwogaW50IFNTTF9zZXRfZmQoU1NMKiwgaW50KTsKK3ZvaWQgU1NMX0NUWF9z
ZXRfdmVyaWZ5KFNTTF9DVFgqLCBpbnQsIGludCAoKikoaW50LCBYNTA5X1NUT1JFX0NUWCopKTsK
K3ZvaWQgU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2FsbGJhY2soU1NMX0NUWCosIGludCAoKiko
WDUwOV9TVE9SRV9DVFgqLCB2b2lkKiksIHZvaWQqKTsKK2ludCBTU0xfZ2V0X2Vycm9yKGNvbnN0
IFNTTCosIGludCk7CitpbnQgU1NMX3JlYWQoU1NMKiwgdm9pZCosIGludCk7CitpbnQgU1NMX3dy
aXRlKFNTTCosIGNvbnN0IHZvaWQqLCBpbnQpOworaW50IGkyZF9YNTA5KFg1MDkqLCB1bnNpZ25l
ZCBjaGFyKiopOwordm9pZCBPUEVOU1NMX2ZyZWUodm9pZCopOworI2RlZmluZSBTU0xfVkVSSUZZ
X1BFRVIgMHgwMQorI2RlZmluZSBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUIDB4MDIK
IAogfSAvLyBleHRlcm4gIkMiCiAKQEAgLTkyLDYgKzEwNiwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBkZWxldGVyPEVWUF9QS0VZPiB7CiAgICAgICAgIEVWUF9QS0VZX2ZyZWUoa2V5KTsKICAgICB9
CiB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgZGVsZXRlcjx1aW50OF90W10+IHsKKyAgICB2b2lkIG9w
ZXJhdG9yKCkodWludDhfdCogYnVmZmVyKQorICAgIHsKKyAgICAgICAgT1BFTlNTTF9mcmVlKGJ1
ZmZlcik7CisgICAgfQorfTsKIAogVENQU2VydmVyOjpUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChT
b2NrZXQpPiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBzaXplX3QgY29ubmVjdGlvbnMpCiAgICAgOiBt
X2Nvbm5lY3Rpb25IYW5kbGVyKFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIpKQpAQCAtMTAxLDcg
KzEyMSw3IEBAIFRDUFNlcnZlcjo6VENQU2VydmVyKEZ1bmN0aW9uPHZvaWQoU29ja2UKIAogVENQ
U2VydmVyOjpUQ1BTZXJ2ZXIoUHJvdG9jb2wgcHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+
JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBzdGFydFNlY3VyZUNvbm5l
Y3Rpb24gPSBbc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rp
b25IYW5kbGVyKV0gKFNvY2tldCBzb2NrZXQpIHsKKyAgICBhdXRvIHN0YXJ0U2VjdXJlQ29ubmVj
dGlvbiA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VjdXJlQ29ubmVjdGlv
bkhhbmRsZXIpLCBwcm90b2NvbF0gKFNvY2tldCBzb2NrZXQpIHsKICAgICAgICAgU1NMX2xpYnJh
cnlfaW5pdCgpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0xfQ1RYLCBkZWxldGVyPFNT
TF9DVFg+PiBjdHgoU1NMX0NUWF9uZXcoU1NMdjIzX3NlcnZlcl9tZXRob2QoKSkpOwpAQCAtMTI5
LDYgKzE0OSwyMCBAQCBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgCiAg
ICAgICAgIEFTU0VSVChjZXJ0WDUwOSk7CiAgICAgICAgIFNTTF9DVFhfdXNlX2NlcnRpZmljYXRl
KGN0eC5nZXQoKSwgY2VydFg1MDkuZ2V0KCkpOwogCisgICAgICAgIGlmIChwcm90b2NvbCA9PSBQ
cm90b2NvbDo6SFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0KSB7CisgICAgICAgICAg
ICBTU0xfQ1RYX3NldF92ZXJpZnkoY3R4LmdldCgpLCBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVS
SUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJULCBudWxscHRyKTsKKyAgICAgICAgICAgIFNTTF9DVFhf
c2V0X2NlcnRfdmVyaWZ5X2NhbGxiYWNrKGN0eC5nZXQoKSwgW10gKFg1MDlfU1RPUkVfQ1RYKiBz
dG9yZV9jdHgsIHZvaWQqKSAtPiBpbnQgeworICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGJ1ZmZl
clBvaW50ZXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gaTJkX1g1
MDkoc3RvcmVfY3R4LT5jZXJ0LCAmYnVmZmVyUG9pbnRlcik7CisgICAgICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQ4X3RbXSwgZGVsZXRlcjx1aW50OF90W10+PiBidWZmZXIoYnVmZmVy
UG9pbnRlcik7CisgICAgICAgICAgICAgICAgYXV0byBleHBlY3RlZENlcnQgPSB0ZXN0Q2VydGlm
aWNhdGUoKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihleHBl
Y3RlZENlcnQuc2l6ZSgpKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoYnVmZmVy
LmdldCgpW2ldLCBleHBlY3RlZENlcnRbaV0pOworICAgICAgICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICAgICAgfSwgbnVsbHB0cik7CisgICAgICAgIH0KKwogICAgICAgICAvLyBUaGlzIGlz
IGEgdGVzdCBrZXkgZnJvbSBCb3JpbmdTU0wuCiAgICAgICAgIGNoYXIga0tleVBFTVtdID0KICAg
ICAgICAgIi0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS1cbiIKQEAgLTE2NCw2ICsxOTgs
NyBAQCBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgCiAKICAgICBzd2l0
Y2ggKHByb3RvY29sKSB7CiAgICAgY2FzZSBQcm90b2NvbDo6SFRUUFM6CisgICAgY2FzZSBQcm90
b2NvbDo6SFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0OgogICAgICAgICBtX2Nvbm5l
Y3Rpb25IYW5kbGVyID0gV1RGTW92ZShzdGFydFNlY3VyZUNvbm5lY3Rpb24pOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFByb3RvY29sOjpIVFRQU1Byb3h5OgpAQCAtMjM5LDQgKzI3NCwxODIg
QEAgYXV0byBUQ1BTZXJ2ZXI6OnNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IAogICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiB9CiAKK3RlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6
cmVhZChTb2NrZXQgc29ja2V0KQoreworICAgIHVpbnQ4X3QgYnVmZmVyWzEwMDBdOworICAgIGF1
dG8gYnl0ZXNSZWFkID0gOjpyZWFkKHNvY2tldCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChieXRlc1JlYWQsIGJ5dGVzUmVhZCA+IDApOworICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YoYnVmZmVyKSk7CisKKyAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yOworICAgIHZlY3Rvci5hcHBlbmQoYnVmZmVyLCBieXRlc1Jl
YWQpOworICAgIHJldHVybiB2ZWN0b3I7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBUQ1BTZXJ2ZXI6
OndyaXRlKFNvY2tldCBzb2NrZXQsIGNvbnN0IHZvaWQqIHJlc3BvbnNlLCBzaXplX3QgbGVuZ3Ro
KQoreworICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gOjp3cml0ZShzb2NrZXQsIHJlc3BvbnNlLCBs
ZW5ndGgpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiks
IGxlbmd0aCk7Cit9CisKK3RlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVh
ZChTU0wqIHNzbCkKK3sKKyAgICB1aW50OF90IGJ1ZmZlclsxMDAwXTsKKyAgICBhdXRvIGJ5dGVz
UmVhZCA9IFNTTF9yZWFkKHNzbCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgQVNTRVJU
X1VOVVNFRChieXRlc1JlYWQsIGJ5dGVzUmVhZCA+IDApOworICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YoYnVmZmVyKSk7CisKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yOworICAgIHZlY3Rvci5hcHBlbmQoYnVmZmVyLCBieXRlc1JlYWQpOworICAg
IHJldHVybiB2ZWN0b3I7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBUQ1BTZXJ2ZXI6OndyaXRlKFNT
TCogc3NsLCBjb25zdCB2b2lkKiByZXNwb25zZSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhdXRv
IGJ5dGVzV3JpdHRlbiA9IFNTTF93cml0ZShzc2wsIHJlc3BvbnNlLCBsZW5ndGgpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIGxlbmd0aCk7Cit9CisK
K3ZvaWQgVENQU2VydmVyOjpyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyhTb2NrZXQgc29ja2V0
KQoreworICAgIHJlYWQoc29ja2V0KTsKKyAgICAKKyAgICBjb25zdCBjaGFyKiBjaGFsbGVuZ2VI
ZWFkZXIgPQorICAgICJIVFRQLzEuMSA0MDEgVW5hdXRob3JpemVkXHJcbiIKKyAgICAiRGF0ZTog
U2F0LCAyMyBNYXIgMjAxOSAwNjoyOTowMSBHTVRcclxuIgorICAgICJDb250ZW50LUxlbmd0aDog
MFxyXG4iCisgICAgIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwidGVzdHJlYWxtXCJc
clxuXHJcbiI7CisgICAgd3JpdGUoc29ja2V0LCBjaGFsbGVuZ2VIZWFkZXIsIHN0cmxlbihjaGFs
bGVuZ2VIZWFkZXIpKTsKKyAgICAKKyAgICByZWFkKHNvY2tldCk7CisgICAgCisgICAgY29uc3Qg
Y2hhciogcmVzcG9uc2VIZWFkZXIgPQorICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICJD
b250ZW50LUxlbmd0aDogMTNcclxuXHJcbiIKKyAgICAiSGVsbG8sIFdvcmxkISI7CisgICAgd3Jp
dGUoc29ja2V0LCByZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7Cit9CisK
K3ZvaWQgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKFNTTCogc3NsKQoreworICAgIHJlYWQoc3Ns
KTsKKyAgICAKKyAgICBjb25zdCBjaGFyKiByZXBseSA9ICIiCisgICAgIkhUVFAvMS4xIDIwMCBP
S1xyXG4iCisgICAgIkNvbnRlbnQtTGVuZ3RoOiAzNFxyXG5cclxuIgorICAgICI8c2NyaXB0PmFs
ZXJ0KCdzdWNjZXNzIScpPC9zY3JpcHQ+IjsKKyAgICB3cml0ZShzc2wsIHJlcGx5LCBzdHJsZW4o
cmVwbHkpKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6dGVzdENlcnRpZmljYXRl
KCkKK3sKKyAgICAvLyBDZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgd2VyZSBnZW5lcmF0ZWQg
YnkgcnVubmluZyB0aGlzIGNvbW1hbmQ6CisgICAgLy8gb3BlbnNzbCByZXEgLXg1MDkgLW5ld2tl
eSByc2E6NDA5NiAta2V5b3V0IGtleS5wZW0gLW91dCBjZXJ0LnBlbSAtZGF5cyAzNjUgLW5vZGVz
CisgICAgLy8gYW5kIGVudGVyaW5nIHRoaXMgaW5mb3JtYXRpb246CisgICAgLyoKKyAgICAgQ291
bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKSBbXTpVUworICAgICBTdGF0ZSBvciBQcm92aW5jZSBO
YW1lIChmdWxsIG5hbWUpIFtdOk5ldyBNZXhpY28KKyAgICAgTG9jYWxpdHkgTmFtZSAoZWcsIGNp
dHkpIFtdOlNhbnRhIEZlCisgICAgIE9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkgW106
U2VsZgorICAgICBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0aW9uKSBbXTpNeXNl
bGYKKyAgICAgQ29tbW9uIE5hbWUgKGVnLCBmdWxseSBxdWFsaWZpZWQgaG9zdCBuYW1lKSBbXTpN
ZQorICAgICBFbWFpbCBBZGRyZXNzIFtdOm1lQGV4YW1wbGUuY29tCisgICAgICovCisgICAgCisg
ICAgU3RyaW5nIHBlbUVuY29kZWRDZXJ0aWZpY2F0ZSgiIgorICAgICJNSUlGZ0RDQ0EyZ0NDUUNL
SGlQUlU1TVF1REFOQmdrcWhraUc5dzBCQVFzRkFEQ0JnVEVMTUFrR0ExVUVCaE1DIgorICAgICJW
Vk14RXpBUkJnTlZCQWdNQ2s1bGR5Qk5aWGhwWTI4eEVUQVBCZ05WQkFjTUNGTmhiblJoSUVabE1R
MHdDd1lEIgorICAgICJWUVFLREFSVFpXeG1NUTh3RFFZRFZRUUxEQVpOZVhObGJHWXhDekFKQmdO
VkJBTU1BazFsTVIwd0d3WUpLb1pJIgorICAgICJodmNOQVFrQkZnNXRaVUJsZUdGdGNHeGxMbU52
YlRBZUZ3MHhPVEF6TWpNd05UVXdNVFJhRncweU1EQXpNakl3IgorICAgICJOVFV3TVRSYU1JR0JN
UXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRTFsZUdsamJ6RVJNQThHIgorICAg
ICJBMVVFQnd3SVUyRnVkR0VnUm1VeERUQUxCZ05WQkFvTUJGTmxiR1l4RHpBTkJnTlZCQXNNQmsx
NWMyVnNaakVMIgorICAgICJNQWtHQTFVRUF3d0NUV1V4SFRBYkJna3Foa2lHOXcwQkNRRVdEbTFs
UUdWNFlXMXdiR1V1WTI5dE1JSUNJakFOIgorICAgICJCZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFN
SUlDQ2dLQ0FnRUEzcmhONFNQZzhWWS9QdEdETktZM1Q5SklTZ2J5IgorICAgICI4WUdNSngwdk8r
WVpGWm0zRzNmc1RVc3l2RHlFSHdxcDVhYkNaUkIvQnkxUHdXa05yZnhuL1hQOFAwMzRKUGxFIgor
ICAgICI2aXJWaXVBWVFycVVoNms3WlI4Q3BPTTVHRWNSWmdBVUpHR1F3TmxPa0V3YUhuTUdjOFNz
SHVyZ0RQaDVYQnBnIgorICAgICJiRHl0ZDdCSnVCMU5vSS9LSm1oY2Fqa0F1VjN2YXJTK3VQTG9m
UEhOcWUrY0w4aE5ualpRd0hXYXJQNDVrczRlIgorICAgICJCY09EN3R3cXh1SG5WbS9GV0VycFk4
V3M1czFNclBUaFVkRGFoakVNZitZZkRKOUtMOHkzMDR5UzhKOGZlQ3hZIgorICAgICJmY0g0QnZn
THRKbUJOSEpnajNlTkQvRU1aakpnejJGc0JqckprOGtLRDMxY3crNFdwOFVGNHNrV1hDZjQ2K21O
IgorICAgICJPSHAxM1BlU0NaTHlGNFpBSGF6VVZrbkRQY2MyWU5yV1ZWMWk2bjNUMTVrSTBUNVo3
YnN0ZG1BTHVTa0UyY3VKIgorICAgICJTVk5PNmdSK1pzVlJUbmV1UXh3V1RVME1ORWhBUEZPWDJC
aEdQNWVpc2dFVXprbnhNSmRkRkRuOVd4a2x1MUpoIgorICAgICJna3pBU0EvKzNBbWxyRlpNUGhP
aGpFdWwwempnTlI1UkJsMUc4SHo5MkxBeDVVRURCdGRMZzcxSStJOEF6UU9oIgorICAgICJkNkx0
QmVrRUN4QTE2cFNhcHBnNXZjVzlaLzhONlpsc0huWjJGenRBMG5DT2Zsa29POWllak9wY3VGTjRF
VllEIgorICAgICJ4SXR3Y3RLdzFMQ2VORC9zNGttb1JSblhiWDdrOU82Y0kxVVVXTTU5NUdzdTV0
UGEzM001QVpGQ2F2MmdPVnVZIgorICAgICJkanBwUzBIT2ZvNWh2NmNDQXdFQUFUQU5CZ2txaGtp
Rzl3MEJBUXNGQUFPQ0FnRUFZOEVXYUFGRWZ3N09WK29EIgorICAgICJYVVpTSVlYcTNFSDJFNXAz
cTM4QWhJT0xSakJ1Qit1dHl1N1E2cnhNTUh1dzJUdHNOK3piQVI3eXJqZnNzZUEzIgorICAgICI0
VE0xeGU0Tms3TlZOSFJvWlErQzBJcWY5ZnZjaW9NdlQxdFRybWEwTWhLU2pGUXB4K1B2eUxWYkQ3
WWRQODZMIgorICAgICJtZWVoS3FVN2gxcExHQWlHd2pvYVo5WWJoNkt1cS9NVEFIeTNEOCt3azdC
MzZWQnhGNmRpVmxVUFpKWlFXS0p5IgorICAgICJNS3k5RzNzemUxWkd0OVdlRTBBTXZrTjJISWVm
MEhUS0NVWjNlQnZlY09NaWp4TDBXaFdvNVF5ZjVrNnlsQ2FVIgorICAgICIyZngrTThEZkRjd0Zv
N3RTZ0x4U0szR0NGcHhQZmlEdDZRazhjOXRRbjVTMWdZM3Q2TEp1d1ZDRndVSVhsTmtCIgorICAg
ICJKRDcrY1oxWi90Q3JFaHpqM1lDazB1VVU4Q2lmb1UrNEZHK0hHRlArU1B6dHNZRTA1NW1TajMr
RXNoK295b1ZCIgorICAgICJnQkg5MHNFMlQxaTBlTkk4ZjYxb1Nnd1lGZUhzZjdmQzcxWEVYTEZS
K0d3TmRtd3FsbXdsRFpFcFR1N0JvTk4rIgorICAgICJxNytUZmsxTVJrSmxMMVBINll1L0lQaFpp
Tmg0dHlJcURPdGxZZnpwNTc3QStPVVUrcTVQUFJGUklzcWhlT3h0IgorICAgICJtTmxIeDRVemQ0
VTNJVGZtb2dKYXpqcXdZTzJ2aUJaWTRqVVFteVpzNzVlSC9qaVVGSFdSc2hhM0Fkblc1TFdhIgor
ICAgICJHM1BGblliVzh1ckgwTlNKRy9XKy85REErWTdBYTBjczRUUHB1QkdaME5VMVc5NE9vQ01v
NGxrTzZIL3k2TGV1IgorICAgICIzdmpaRDN5OWtaazdtcmU5WEh3a0k4TWRLNXM9Iik7CisgICAg
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKKyAgICBiYXNlNjREZWNvZGUocGVtRW5jb2Rl
ZENlcnRpZmljYXRlLCB2ZWN0b3IsIFdURjo6QmFzZTY0RGVjb2RlT3B0aW9uczo6QmFzZTY0RGVm
YXVsdCk7CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZl
cjo6dGVzdFByaXZhdGVLZXkoKQoreworICAgIFN0cmluZyBwZW1FbmNvZGVkUHJpdmF0ZUtleSgi
IgorICAgICJNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdFQUFvSUNB
UURldUUzaEkrRHhWajgrIgorICAgICIwWU0wcGpkUDBraEtCdkx4Z1l3bkhTODc1aGtWbWJjYmQr
eE5Teks4UElRZkNxbmxwc0psRUg4SExVL0JhUTJ0IgorICAgICIvR2Y5Yy93L1RmZ2srVVRxS3RX
SzRCaEN1cFNIcVR0bEh3S2s0emtZUnhGbUFCUWtZWkRBMlU2UVRCb2Vjd1p6IgorICAgICJ4S3dl
NnVBTStIbGNHbUJzUEsxM3NFbTRIVTJnajhvbWFGeHFPUUM1WGU5cXRMNjQ4dWg4OGMycDc1d3Z5
RTJlIgorICAgICJObERBZFpxcy9qbVN6aDRGdzRQdTNDckc0ZWRXYjhWWVN1bGp4YXptelV5czlP
RlIwTnFHTVF4LzVoOE1uMG92IgorICAgICJ6TGZUakpMd254OTRMRmg5d2ZnRytBdTBtWUUwY21D
UGQ0MFA4UXhtTW1EUFlXd0dPc21UeVFvUGZWekQ3aGFuIgorICAgICJ4UVhpeVJaY0ovanI2WTA0
ZW5YYzk1SUprdklYaGtBZHJOUldTY005eHpaZzJ0WlZYV0xxZmRQWG1RalJQbG50IgorICAgICJ1
eTEyWUF1NUtRVFp5NGxKVTA3cUJINW14VkZPZDY1REhCWk5UUXcwU0VBOFU1ZllHRVkvbDZLeUFS
VE9TZkV3IgorICAgICJsMTBVT2YxYkdTVzdVbUdDVE1CSUQvN2NDYVdzVmt3K0U2R01TNlhUT09B
MUhsRUdYVWJ3ZlAzWXNESGxRUU1HIgorICAgICIxMHVEdlVqNGp3RE5BNkYzb3UwRjZRUUxFRFhx
bEpxbW1EbTl4YjFuL3czcG1Xd2VkbllYTzBEU2NJNStXU2c3IgorICAgICIySjZNNmx5NFUzZ1JW
Z1BFaTNCeTByRFVzSjQwUCt6aVNhaEZHZGR0ZnVUMDdwd2pWUlJZem4za2F5N20wOXJmIgorICAg
ICJjemtCa1VKcS9hQTVXNWgyT21sTFFjNStqbUcvcHdJREFRQUJBb0lDQUdyYS9DcC9mMFhxdms5
U1QrUHJ0Mi9wIgorICAgICJrTnRMZURYY2xMU1RjUDBKQ1pIdWZRYUZ3KzdWbkZMcHFlNEd2THE5
QmxsY3o4Vk92UXdyYmUvQ3dOVytWeEM4IgorICAgICJSTWpnZTJycUFDZ3dHaE94MXQ4N2w0Nk5r
VVF3N0V5MGxDbGU4a3IrTUdnR0dvWnFyTUZkS0lSVW9NdjRubVE2IgorICAgICJ0bWMxRkh2NXBM
UmU5UStMcDVuWVF3R29ZbVpvVU91ZW9PYU9MMDhtNDlwR1hRa2lOOHBKRE14U2ZPM0p2dHN1Igor
ICAgICI0Y3FJYjZrT1EvZE8xSXMxQ1R2VVJsZDFJWUxIN1l1U2hpNFpFeDJnMmFjMlV5dnQ2WW14
eHZNbUFqQlNLcEdkIgorICAgICJsb2llcGhvMy9OckRHVUtkdjNxOVFZeXpyQTh3OUdUMzJMREdx
Z0JYSmkxc2NCSThjRXhrcDZQNGlEbGxodjdzIgorICAgICJ2WnNzcHZvYlJKYTNPMXprODYzTEhY
YTI0SkNueXV6aW1xZXpaMk9saDdsNG9sSG9ZRDZVRkM5amZkNEtjSFJnIgorICAgICIxYzRzeXF0
L244QUsvMXMxZUJmUzlkemI1Q2ZqdDlNdEtZc2x4dkx6cTFXd09JTnd6OHJJWXVSaTBQY0xtOWhz
IgorICAgICJsK1UwdS96QjM3ZU1ndjYraXdEWGsxZlNqYnVZc0UvYkVUV1lrbktHTkZGTDVKU2lL
VjdXQ3BtZ05UVHJyRTRLIgorICAgICJTOEU2aFI5dVBPQWFvdzd2UENDdDR4TFgvNDhsMkVJNlpl
cTZxT3BxMWxKMnFjeThyNHR5dVFnTlJMUU1rWmcxIgorICAgICJBeFFsNnZuUThDdTRpdStOSWhl
ZjB5OVo3cWtmTnZaZUNqNUdsRkI5YzJZalY4WTJtZFdmSkI0cVdLM1ovK01KIgorICAgICJRT1RD
S1J6Ny9MeExOQlVlcFJqSkFvSUJBUUQzWnNWNXRXVTlaU0tjVko5REM3VFprMFArbGhjaXNacjBu
TDB0IgorICAgICJQUXVRTytwSHZQSTFNcVJuTnNrSEpoeVBucVZDaStkcDg5dEsvSXQ1OTBVTGw4
b3M2VUMxRmh5dEJQb1QxWVBkIgorICAgICJXR1dlcDJwT2M3YlZwaTRpcDMxeStJbWZnZVp5SnRN
QVRkbWUza0JQQU9lNU5HRTlHaWcvbDVucUx5YjAyc2QxIgorICAgICJRVzdPMEdkcUx4M0RwTHc0
U0xsaE1mNmFFMHVHUlM4c2ZCMDg1ZTRER241NE8yd0VWdVNacVpsNU5ORWYzNVJ6IgorICAgICJY
Z2ltM2grUldGMVpGU1F6akIvc21OMFpoK3YzSXo3dkVKMWgweXdWNm8rR3p2SGtQOUhFNmdMSWh0
eVY4T0V3IgorICAgICJ2bHlZazFHYTdwVVZHUmg4bzhPTWU2UlI5RFFpN0pxQzRlSTdHY2ttQnph
cXpKY0RBb0lCQVFEbWRlNkFUZXczIgorICAgICJIOWJRSzZ4bmJNSW5jei9DT3BJSVNkbGNGYjIz
QUhHRWI0YjRWaEpGQk53eHJOTDZ0SEtTRkxlWVpGTGhUZGh4IgorICAgICJQZlh5VUxITmY1b3pk
RWtsMFdybGVyb0Rkb2diQ3lXZzV1SnA5L1E2OHNid2JHcjhDQWxPN1pIWVRyanVRZjFLIgorICAg
ICJBUzlwQ203N0tQM2syZDNVbEcrcGVsRGpYTG9CemlYcTBOanhKcE16NDV2ckl4OHJTV3pGTmpN
R2pYVDNmWGFTIgorICAgICI5NjJrLzBBWGVpNS9iZnVoQnhsbTdQbmkwYlFKSVdGa2VhVXVHbHJP
YUhEUnhVaVgxcjlJWlM5d3Y1bGsxUHRnIgorICAgICJpZHBiY1d5dzE4Y0ZHVHZqZEtoUmJaSDhF
c2Jtem1OTnNDR2RnQ01xRmtLWXNXMTZRS29Dai9OQW92STNuMHFuIgorICAgICI2Vm9SYTBzR21U
R05Bb0lCQUNsL21xWkVzQnV4U0RIeTI5Z1NNWjdCWGdscFFhNDNIbWZqbHJQczVuQ21MREVtIgor
ICAgICJWM1ptN1Q3RzZNZUROQTAvTGpkUVlsdmFaTEZhVlViN0hDREtzRVlDUmpGWjZTdDRoejRt
ZFh6K1krVk43YjRGIgorICAgICJHT2tUZSsraUtwL0xZc0pYdHNEMUZEV2IyV0lWbzdIYzFBR3o4
SStnUUpvU0l1WXVUSm1MelNNMCs1SkRVT1YxIgorICAgICJ5OGRTYmFQL1J1RXYwcVlqa0dxUVZr
NWU3MFNVeU96S1YrWnhDVGhkSHZGTGlvdlRPVFRnZXZVekU3NXh5ZGZHIgorICAgICJlN29DbXRU
dXJ6Z3ZsLzY5VnU1WWdpajFuNENXUEhIY3E0Q1FXL0RPWjdCaEZHQndoclc3OXZvSEpGOFBid1BP
IgorICAgICIrMERUdWRER1kzbkFENXNUbkY4elV1T2JZaWhKdGZ6ai90NTlmT01DZ2dFQkFJWXV1
QlVBU2I2MnpRNGJ2NS9nIgorICAgICJWUk0vS1NwZmk5TkRuRWpmWjd4N2g1ekNpdVZneC9aanBB
bFFSTzh2elYxOHJvRU9PS3R4OWNuSmQ4QUVkK0hjIgorICAgICJuOTNCb1MxaHgwbWhzVmgrMVRS
Wnd5anlCWFlKcHF3RDJ3ejFNejFYT0lRNkVxYk0veVBLVEQyZ2Z3Zzd5TzUzIgorICAgICJxWXhy
eFpzV2FnVlZjRzlRK0FSQkVSYXRUd0xwb04rZmNKTHh1aDRyL0NhL0xlcHN4bU9yS3pUYS9NR0sx
TGhXIgorICAgICJyV2dJazIvb2dFUExTcHRqMmQxUEVETytHQXpGejRWS2poVzFObFVoOWZHaTZJ
SlBMSExuQnczb2RiaTBTOEtUIgorICAgICJnQTlaNStMQmM1Y2xvdEFQNXJ0UUE4V2gvWkNFb1BU
S1RUQTJialcySE1hdEpjYkdtUjBGcENRcjNBTTBZMVNPIgorICAgICJNYWtDZ2dFQUxydTZRWjZZ
VXdKSkc0NUgxZXEvclBkRFk4dHFxakpWVmlLb0JWdnpLai9YZkpaWUVWUWlJdzVwIgorICAgICJ1
b0doRG95RnVGVWVJaC9kMUpjMklydXkyV2pvT2tpUVl0SXVnREhIeFJya0xkUWNqUGhsQ1RDRS9t
bXlTSnQrIgorICAgICJia1ViaUhJYlE4ZEo1eWo4U0tyMGJIenFFdE95OS9KZVJqa1lHSEM2YlZX
cHE1RkEyTUJoZjRkTmpKNFVEbG5UIgorICAgICJ2dWVQY1RqcjdubmZZMXN6dHZmVmw5RDhkbWdU
K1RCbk9PVjZ5V2oxZ201YlMxRHhRU0xnTm10S3hKOHRBaDJ1IgorICAgICJkRU9idmNwU2hQMjJJ
dE9WalNhbXBSdUF1UkcyNlplbUViR0NJM0o2TXF4M3k2bSs2SHd1bHRzZ3RkekRnckZlIgorICAg
ICJxSmZVOGJiZGJ1MnBpNDdZNEZkSkswSExmZmw1Unc9PSIpOworCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvcjsKKyAgICBiYXNlNjREZWNvZGUocGVtRW5jb2RlZFByaXZhdGVLZXksIHZlY3Rv
ciwgV1RGOjpCYXNlNjREZWNvZGVPcHRpb25zOjpCYXNlNjREZWZhdWx0KTsKKyAgICByZXR1cm4g
dmVjdG9yOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1RDUFNlcnZlci5oCShyZXZpc2lvbiAyNDUyNDYpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1RDUFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksNyBAQAogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotZXh0ZXJuICJD
IiB7CiBzdHJ1Y3QgU1NMOwotaW50IFNTTF9yZWFkKFNTTCosIHZvaWQqLCBpbnQpOwotaW50IFNT
TF93cml0ZShTU0wqLCBjb25zdCB2b2lkKiwgaW50KTsKLX0KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCkBAIC00NCwxNCArNDAsMjUgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4
cHIgUG9ydCBJbnZhbGlkUG9ydCA9IDA7CiAgICAgCiAgICAgVENQU2VydmVyKEZ1bmN0aW9uPHZv
aWQoU29ja2V0KT4mJiwgc2l6ZV90IGNvbm5lY3Rpb25zID0gMSk7Ci0gICAgZW51bSBjbGFzcyBQ
cm90b2NvbCA6IGJvb2wgewotICAgICAgICBIVFRQUywgSFRUUFNQcm94eQorICAgIGVudW0gY2xh
c3MgUHJvdG9jb2wgOiB1aW50OF90IHsKKyAgICAgICAgSFRUUFMsCisgICAgICAgIEhUVFBTUHJv
eHksCisgICAgICAgIEhUVFBTV2l0aENsaWVudENlcnRpZmljYXRlUmVxdWVzdCwKICAgICB9Owog
ICAgIFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJik7CiAgICAgflRD
UFNlcnZlcigpOwogICAgIAogICAgIFBvcnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsg
fQogICAgIAorICAgIHN0YXRpYyB2b2lkIHJlc3BvbmRXaXRoT0soU1NMKik7CisgICAgc3RhdGlj
IHZvaWQgcmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0soU29ja2V0KTsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gcmVhZChUKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZShULCBjb25zdCB2b2lkKiwgc2l6ZV90KTsK
KworICAgIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gdGVzdFByaXZhdGVLZXkoKTsKKyAgICBzdGF0
aWMgVmVjdG9yPHVpbnQ4X3Q+IHRlc3RDZXJ0aWZpY2F0ZSgpOworICAgIAogcHJpdmF0ZToKICAg
ICBPcHRpb25hbDxTb2NrZXQ+IHNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKTsK
ICAgICB2b2lkIGxpc3RlbkZvckNvbm5lY3Rpb25zKHNpemVfdCBjb25uZWN0aW9ucyk7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5n
ZS5tbQkocmV2aXNpb24gMjQ1MjQ2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9DaGFsbGVuZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0MSArMzMsMTcgQEAK
ICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIHN0YXRpYyBib29sIG5h
dmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIHZvaWQgcmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVu
T0soaW50IHNvY2tldCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW50
aWFsV2l0aElkZW50aXR5KCkKIHsKLSAgICBjaGFyIHJlYWRCdWZmZXJbMTAwMF07Ci0gICAgYXV0
byBieXRlc1JlYWQgPSA6OnJlYWQoc29ja2V0LCByZWFkQnVmZmVyLCBzaXplb2YocmVhZEJ1ZmZl
cikpOwotICAgIEVYUEVDVF9HVChieXRlc1JlYWQsIDApOwotICAgIEVYUEVDVF9UUlVFKHN0YXRp
Y19jYXN0PHNpemVfdD4oYnl0ZXNSZWFkKSA8IHNpemVvZihyZWFkQnVmZmVyKSk7CisgICAgYXV0
byBjZXJ0aWZpY2F0ZUJ5dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp0ZXN0Q2VydGlm
aWNhdGUoKTsKKyAgICBhdXRvIGNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNy
ZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMuZGF0YSgpIGxlbmd0aDpjZXJ0aWZpY2F0ZUJ5dGVzLnNp
emUoKV0pKTsKICAgICAKLSAgICBjb25zdCBjaGFyKiBjaGFsbGVuZ2VIZWFkZXIgPQotICAgICJI
VFRQLzEuMSA0MDEgVW5hdXRob3JpemVkXHJcbiIKLSAgICAiRGF0ZTogU2F0LCAyMyBNYXIgMjAx
OSAwNjoyOTowMSBHTVRcclxuIgotICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCi0gICAgIldX
Vy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwidGVzdHJlYWxtXCJcclxuXHJcbiI7Ci0gICAg
YXV0byBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJs
ZW4oY2hhbGxlbmdlSGVhZGVyKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4o
Ynl0ZXNXcml0dGVuKSwgc3RybGVuKGNoYWxsZW5nZUhlYWRlcikpOwotICAgIAotICAgIGJ5dGVz
UmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7Ci0g
ICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8
c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAKLSAgICBjb25z
dCBjaGFyKiByZXNwb25zZUhlYWRlciA9Ci0gICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAg
IkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5cclxuIgotICAgICJIZWxsbywgV29ybGQhIjsKLSAgICBi
eXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgcmVzcG9uc2VIZWFkZXIsIHN0cmxlbihyZXNw
b25zZUhlYWRlcikpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3Jp
dHRlbiksIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQot
Ci1zdGF0aWMgc3RkOjpwYWlyPFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+LCBSZXRhaW5QdHI8
TlNTdHJpbmc+PiBjcmVkZW50aWFsV2l0aElkZW50aXR5QW5kS2V5Y2hhaW5QYXRoKCkKLXsKLSAg
ICAvLyBDZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgd2VyZSBnZW5lcmF0ZWQgYnkgcnVubmlu
ZyB0aGlzIGNvbW1hbmQ6Ci0gICAgLy8gb3BlbnNzbCByZXEgLXg1MDkgLW5ld2tleSByc2E6NDA5
NiAta2V5b3V0IGtleS5wZW0gLW91dCBjZXJ0LnBlbSAtZGF5cyAzNjUgLW5vZGVzCi0gICAgLy8g
YW5kIGVudGVyaW5nIHRoaXMgaW5mb3JtYXRpb246Ci0gICAgLyoKLSAgICAgQ291bnRyeSBOYW1l
ICgyIGxldHRlciBjb2RlKSBbXTpVUwotICAgICBTdGF0ZSBvciBQcm92aW5jZSBOYW1lIChmdWxs
IG5hbWUpIFtdOk5ldyBNZXhpY28KLSAgICAgTG9jYWxpdHkgTmFtZSAoZWcsIGNpdHkpIFtdOlNh
bnRhIEZlCi0gICAgIE9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkgW106U2VsZgotICAg
ICBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0aW9uKSBbXTpNeXNlbGYKLSAgICAg
Q29tbW9uIE5hbWUgKGVnLCBmdWxseSBxdWFsaWZpZWQgaG9zdCBuYW1lKSBbXTpNZQotICAgICBF
bWFpbCBBZGRyZXNzIFtdOm1lQGV4YW1wbGUuY29tCi0gICAgICovCi0gICAgCi0gICAgTlNTdHJp
bmcgKnBlbUVuY29kZWRDZXJ0aWZpY2F0ZSA9IEAiIgotICAgICJNSUlGZ0RDQ0EyZ0NDUUNLSGlQ
UlU1TVF1REFOQmdrcWhraUc5dzBCQVFzRkFEQ0JnVEVMTUFrR0ExVUVCaE1DIgotICAgICJWVk14
RXpBUkJnTlZCQWdNQ2s1bGR5Qk5aWGhwWTI4eEVUQVBCZ05WQkFjTUNGTmhiblJoSUVabE1RMHdD
d1lEIgotICAgICJWUVFLREFSVFpXeG1NUTh3RFFZRFZRUUxEQVpOZVhObGJHWXhDekFKQmdOVkJB
TU1BazFsTVIwd0d3WUpLb1pJIgotICAgICJodmNOQVFrQkZnNXRaVUJsZUdGdGNHeGxMbU52YlRB
ZUZ3MHhPVEF6TWpNd05UVXdNVFJhRncweU1EQXpNakl3IgotICAgICJOVFV3TVRSYU1JR0JNUXN3
Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRTFsZUdsamJ6RVJNQThHIgotICAgICJB
MVVFQnd3SVUyRnVkR0VnUm1VeERUQUxCZ05WQkFvTUJGTmxiR1l4RHpBTkJnTlZCQXNNQmsxNWMy
VnNaakVMIgotICAgICJNQWtHQTFVRUF3d0NUV1V4SFRBYkJna3Foa2lHOXcwQkNRRVdEbTFsUUdW
NFlXMXdiR1V1WTI5dE1JSUNJakFOIgotICAgICJCZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlD
Q2dLQ0FnRUEzcmhONFNQZzhWWS9QdEdETktZM1Q5SklTZ2J5IgotICAgICI4WUdNSngwdk8rWVpG
Wm0zRzNmc1RVc3l2RHlFSHdxcDVhYkNaUkIvQnkxUHdXa05yZnhuL1hQOFAwMzRKUGxFIgotICAg
ICI2aXJWaXVBWVFycVVoNms3WlI4Q3BPTTVHRWNSWmdBVUpHR1F3TmxPa0V3YUhuTUdjOFNzSHVy
Z0RQaDVYQnBnIgotICAgICJiRHl0ZDdCSnVCMU5vSS9LSm1oY2Fqa0F1VjN2YXJTK3VQTG9mUEhO
cWUrY0w4aE5ualpRd0hXYXJQNDVrczRlIgotICAgICJCY09EN3R3cXh1SG5WbS9GV0VycFk4V3M1
czFNclBUaFVkRGFoakVNZitZZkRKOUtMOHkzMDR5UzhKOGZlQ3hZIgotICAgICJmY0g0QnZnTHRK
bUJOSEpnajNlTkQvRU1aakpnejJGc0JqckprOGtLRDMxY3crNFdwOFVGNHNrV1hDZjQ2K21OIgot
ICAgICJPSHAxM1BlU0NaTHlGNFpBSGF6VVZrbkRQY2MyWU5yV1ZWMWk2bjNUMTVrSTBUNVo3YnN0
ZG1BTHVTa0UyY3VKIgotICAgICJTVk5PNmdSK1pzVlJUbmV1UXh3V1RVME1ORWhBUEZPWDJCaEdQ
NWVpc2dFVXprbnhNSmRkRkRuOVd4a2x1MUpoIgotICAgICJna3pBU0EvKzNBbWxyRlpNUGhPaGpF
dWwwempnTlI1UkJsMUc4SHo5MkxBeDVVRURCdGRMZzcxSStJOEF6UU9oIgotICAgICJkNkx0QmVr
RUN4QTE2cFNhcHBnNXZjVzlaLzhONlpsc0huWjJGenRBMG5DT2Zsa29POWllak9wY3VGTjRFVllE
IgotICAgICJ4SXR3Y3RLdzFMQ2VORC9zNGttb1JSblhiWDdrOU82Y0kxVVVXTTU5NUdzdTV0UGEz
M001QVpGQ2F2MmdPVnVZIgotICAgICJkanBwUzBIT2ZvNWh2NmNDQXdFQUFUQU5CZ2txaGtpRzl3
MEJBUXNGQUFPQ0FnRUFZOEVXYUFGRWZ3N09WK29EIgotICAgICJYVVpTSVlYcTNFSDJFNXAzcTM4
QWhJT0xSakJ1Qit1dHl1N1E2cnhNTUh1dzJUdHNOK3piQVI3eXJqZnNzZUEzIgotICAgICI0VE0x
eGU0Tms3TlZOSFJvWlErQzBJcWY5ZnZjaW9NdlQxdFRybWEwTWhLU2pGUXB4K1B2eUxWYkQ3WWRQ
ODZMIgotICAgICJtZWVoS3FVN2gxcExHQWlHd2pvYVo5WWJoNkt1cS9NVEFIeTNEOCt3azdCMzZW
QnhGNmRpVmxVUFpKWlFXS0p5IgotICAgICJNS3k5RzNzemUxWkd0OVdlRTBBTXZrTjJISWVmMEhU
S0NVWjNlQnZlY09NaWp4TDBXaFdvNVF5ZjVrNnlsQ2FVIgotICAgICIyZngrTThEZkRjd0ZvN3RT
Z0x4U0szR0NGcHhQZmlEdDZRazhjOXRRbjVTMWdZM3Q2TEp1d1ZDRndVSVhsTmtCIgotICAgICJK
RDcrY1oxWi90Q3JFaHpqM1lDazB1VVU4Q2lmb1UrNEZHK0hHRlArU1B6dHNZRTA1NW1TajMrRXNo
K295b1ZCIgotICAgICJnQkg5MHNFMlQxaTBlTkk4ZjYxb1Nnd1lGZUhzZjdmQzcxWEVYTEZSK0d3
TmRtd3FsbXdsRFpFcFR1N0JvTk4rIgotICAgICJxNytUZmsxTVJrSmxMMVBINll1L0lQaFppTmg0
dHlJcURPdGxZZnpwNTc3QStPVVUrcTVQUFJGUklzcWhlT3h0IgotICAgICJtTmxIeDRVemQ0VTNJ
VGZtb2dKYXpqcXdZTzJ2aUJaWTRqVVFteVpzNzVlSC9qaVVGSFdSc2hhM0Fkblc1TFdhIgotICAg
ICJHM1BGblliVzh1ckgwTlNKRy9XKy85REErWTdBYTBjczRUUHB1QkdaME5VMVc5NE9vQ01vNGxr
TzZIL3k2TGV1IgotICAgICIzdmpaRDN5OWtaazdtcmU5WEh3a0k4TWRLNXM9IjsKLSAgICAKLSAg
ICBOU1N0cmluZyAqcGVtRW5jb2RlZFByaXZhdGVLZXkgPSBAIiIKLSAgICAiTUlJSlFnSUJBREFO
QmdrcWhraUc5dzBCQVFFRkFBU0NDU3d3Z2drb0FnRUFBb0lDQVFEZXVFM2hJK0R4Vmo4KyIKLSAg
ICAiMFlNMHBqZFAwa2hLQnZMeGdZd25IUzg3NWhrVm1iY2JkK3hOU3pLOFBJUWZDcW5scHNKbEVI
OEhMVS9CYVEydCIKLSAgICAiL0dmOWMvdy9UZmdrK1VUcUt0V0s0QmhDdXBTSHFUdGxId0trNHpr
WVJ4Rm1BQlFrWVpEQTJVNlFUQm9lY3daeiIKLSAgICAieEt3ZTZ1QU0rSGxjR21Cc1BLMTNzRW00
SFUyZ2o4b21hRnhxT1FDNVhlOXF0TDY0OHVoODhjMnA3NXd2eUUyZSIKLSAgICAiTmxEQWRacXMv
am1Temg0Rnc0UHUzQ3JHNGVkV2I4VllTdWxqeGF6bXpVeXM5T0ZSME5xR01ReC81aDhNbjBvdiIK
LSAgICAiekxmVGpKTHdueDk0TEZoOXdmZ0crQXUwbVlFMGNtQ1BkNDBQOFF4bU1tRFBZV3dHT3Nt
VHlRb1BmVnpEN2hhbiIKLSAgICAieFFYaXlSWmNKL2pyNlkwNGVuWGM5NUlKa3ZJWGhrQWRyTlJX
U2NNOXh6WmcydFpWWFdMcWZkUFhtUWpSUGxudCIKLSAgICAidXkxMllBdTVLUVRaeTRsSlUwN3FC
SDVteFZGT2Q2NURIQlpOVFF3MFNFQThVNWZZR0VZL2w2S3lBUlRPU2ZFdyIKLSAgICAibDEwVU9m
MWJHU1c3VW1HQ1RNQklELzdjQ2FXc1ZrdytFNkdNUzZYVE9PQTFIbEVHWFVid2ZQM1lzREhsUVFN
RyIKLSAgICAiMTB1RHZVajRqd0ROQTZGM291MEY2UVFMRURYcWxKcW1tRG05eGIxbi93M3BtV3dl
ZG5ZWE8wRFNjSTUrV1NnNyIKLSAgICAiMko2TTZseTRVM2dSVmdQRWkzQnkwckRVc0o0MFAremlT
YWhGR2RkdGZ1VDA3cHdqVlJSWXpuM2theTdtMDlyZiIKLSAgICAiY3prQmtVSnEvYUE1VzVoMk9t
bExRYzUram1HL3B3SURBUUFCQW9JQ0FHcmEvQ3AvZjBYcXZrOVNUK1BydDIvcCIKLSAgICAia050
TGVEWGNsTFNUY1AwSkNaSHVmUWFGdys3Vm5GTHBxZTRHdkxxOUJsbGN6OFZPdlF3cmJlL0N3Tlcr
VnhDOCIKLSAgICAiUk1qZ2UycnFBQ2d3R2hPeDF0ODdsNDZOa1VRdzdFeTBsQ2xlOGtyK01HZ0dH
b1pxck1GZEtJUlVvTXY0bm1RNiIKLSAgICAidG1jMUZIdjVwTFJlOVErTHA1bllRd0dvWW1ab1VP
dWVvT2FPTDA4bTQ5cEdYUWtpTjhwSkRNeFNmTzNKdnRzdSIKLSAgICAiNGNxSWI2a09RL2RPMUlz
MUNUdlVSbGQxSVlMSDdZdVNoaTRaRXgyZzJhYzJVeXZ0NllteHh2TW1BakJTS3BHZCIKLSAgICAi
bG9pZXBobzMvTnJER1VLZHYzcTlRWXl6ckE4dzlHVDMyTERHcWdCWEppMXNjQkk4Y0V4a3A2UDRp
RGxsaHY3cyIKLSAgICAidlpzc3B2b2JSSmEzTzF6azg2M0xIWGEyNEpDbnl1emltcWV6WjJPbGg3
bDRvbEhvWUQ2VUZDOWpmZDRLY0hSZyIKLSAgICAiMWM0c3lxdC9uOEFLLzFzMWVCZlM5ZHpiNUNm
anQ5TXRLWXNseHZMenExV3dPSU53ejhySVl1UmkwUGNMbTlocyIKLSAgICAibCtVMHUvekIzN2VN
Z3Y2K2l3RFhrMWZTamJ1WXNFL2JFVFdZa25LR05GRkw1SlNpS1Y3V0NwbWdOVFRyckU0SyIKLSAg
ICAiUzhFNmhSOXVQT0Fhb3c3dlBDQ3Q0eExYLzQ4bDJFSTZaZXE2cU9wcTFsSjJxY3k4cjR0eXVR
Z05STFFNa1pnMSIKLSAgICAiQXhRbDZ2blE4Q3U0aXUrTkloZWYweTlaN3FrZk52WmVDajVHbEZC
OWMyWWpWOFkybWRXZkpCNHFXSzNaLytNSiIKLSAgICAiUU9UQ0tSejcvTHhMTkJVZXBSakpBb0lC
QVFEM1pzVjV0V1U5WlNLY1ZKOURDN1RaazBQK2xoY2lzWnIwbkwwdCIKLSAgICAiUFF1UU8rcEh2
UEkxTXFSbk5za0hKaHlQbnFWQ2krZHA4OXRLL0l0NTkwVUxsOG9zNlVDMUZoeXRCUG9UMVlQZCIK
LSAgICAiV0dXZXAycE9jN2JWcGk0aXAzMXkrSW1mZ2VaeUp0TUFUZG1lM2tCUEFPZTVOR0U5R2ln
L2w1bnFMeWIwMnNkMSIKLSAgICAiUVc3TzBHZHFMeDNEcEx3NFNMbGhNZjZhRTB1R1JTOHNmQjA4
NWU0REduNTRPMndFVnVTWnFabDVOTkVmMzVSeiIKLSAgICAiWGdpbTNoK1JXRjFaRlNRempCL3Nt
TjBaaCt2M0l6N3ZFSjFoMHl3VjZvK0d6dkhrUDlIRTZnTElodHlWOE9FdyIKLSAgICAidmx5WWsx
R2E3cFVWR1JoOG84T01lNlJSOURRaTdKcUM0ZUk3R2NrbUJ6YXF6SmNEQW9JQkFRRG1kZTZBVGV3
MyIKLSAgICAiSDliUUs2eG5iTUluY3ovQ09wSUlTZGxjRmIyM0FIR0ViNGI0VmhKRkJOd3hyTkw2
dEhLU0ZMZVlaRkxoVGRoeCIKLSAgICAiUGZYeVVMSE5mNW96ZEVrbDBXcmxlcm9EZG9nYkN5V2c1
dUpwOS9RNjhzYndiR3I4Q0FsTzdaSFlUcmp1UWYxSyIKLSAgICAiQVM5cENtNzdLUDNrMmQzVWxH
K3BlbERqWExvQnppWHEwTmp4SnBNejQ1dnJJeDhyU1d6Rk5qTUdqWFQzZlhhUyIKLSAgICAiOTYy
ay8wQVhlaTUvYmZ1aEJ4bG03UG5pMGJRSklXRmtlYVV1R2xyT2FIRFJ4VWlYMXI5SVpTOXd2NWxr
MVB0ZyIKLSAgICAiaWRwYmNXeXcxOGNGR1R2amRLaFJiWkg4RXNibXptTk5zQ0dkZ0NNcUZrS1lz
VzE2UUtvQ2ovTkFvdkkzbjBxbiIKLSAgICAiNlZvUmEwc0dtVEdOQW9JQkFDbC9tcVpFc0J1eFNE
SHkyOWdTTVo3QlhnbHBRYTQzSG1mamxyUHM1bkNtTERFbSIKLSAgICAiVjNabTdUN0c2TWVETkEw
L0xqZFFZbHZhWkxGYVZVYjdIQ0RLc0VZQ1JqRlo2U3Q0aHo0bWRYeitZK1ZON2I0RiIKLSAgICAi
R09rVGUrK2lLcC9MWXNKWHRzRDFGRFdiMldJVm83SGMxQUd6OEkrZ1FKb1NJdVl1VEptTHpTTTAr
NUpEVU9WMSIKLSAgICAieThkU2JhUC9SdUV2MHFZamtHcVFWazVlNzBTVXlPektWK1p4Q1RoZEh2
Rkxpb3ZUT1RUZ2V2VXpFNzV4eWRmRyIKLSAgICAiZTdvQ210VHVyemd2bC82OVZ1NVlnaWoxbjRD
V1BISGNxNENRVy9ET1o3QmhGR0J3aHJXNzl2b0hKRjhQYndQTyIKLSAgICAiKzBEVHVkREdZM25B
RDVzVG5GOHpVdU9iWWloSnRmemovdDU5Zk9NQ2dnRUJBSVl1dUJVQVNiNjJ6UTRidjUvZyIKLSAg
ICAiVlJNL0tTcGZpOU5EbkVqZlo3eDdoNXpDaXVWZ3gvWmpwQWxRUk84dnpWMThyb0VPT0t0eDlj
bkpkOEFFZCtIYyIKLSAgICAibjkzQm9TMWh4MG1oc1ZoKzFUUlp3eWp5QlhZSnBxd0Qyd3oxTXox
WE9JUTZFcWJNL3lQS1REMmdmd2c3eU81MyIKLSAgICAicVl4cnhac1dhZ1ZWY0c5UStBUkJFUmF0
VHdMcG9OK2ZjSkx4dWg0ci9DYS9MZXBzeG1Pckt6VGEvTUdLMUxoVyIKLSAgICAicldnSWsyL29n
RVBMU3B0ajJkMVBFRE8rR0F6Rno0VktqaFcxTmxVaDlmR2k2SUpQTEhMbkJ3M29kYmkwUzhLVCIK
LSAgICAiZ0E5WjUrTEJjNWNsb3RBUDVydFFBOFdoL1pDRW9QVEtUVEEyYmpXMkhNYXRKY2JHbVIw
RnBDUXIzQU0wWTFTTyIKLSAgICAiTWFrQ2dnRUFMcnU2UVo2WVV3SkpHNDVIMWVxL3JQZERZOHRx
cWpKVlZpS29CVnZ6S2ovWGZKWllFVlFpSXc1cCIKLSAgICAidW9HaERveUZ1RlVlSWgvZDFKYzJJ
cnV5Mldqb09raVFZdEl1Z0RISHhScmtMZFFjalBobENUQ0UvbW15U0p0KyIKLSAgICAiYmtVYmlI
SWJROGRKNXlqOFNLcjBiSHpxRXRPeTkvSmVSamtZR0hDNmJWV3BxNUZBMk1CaGY0ZE5qSjRVRGxu
VCIKLSAgICAidnVlUGNUanI3bm5mWTFzenR2ZlZsOUQ4ZG1nVCtUQm5PT1Y2eVdqMWdtNWJTMUR4
UVNMZ05tdEt4Sjh0QWgydSIKLSAgICAiZEVPYnZjcFNoUDIySXRPVmpTYW1wUnVBdVJHMjZaZW1F
YkdDSTNKNk1xeDN5Nm0rNkh3dWx0c2d0ZHpEZ3JGZSIKLSAgICAicUpmVThiYmRidTJwaTQ3WTRG
ZEpLMEhMZmZsNVJ3PT0iOwotICAgIAotICAgIE5TRGF0YSAqZGVyRW5jb2RlZENlcnRpZmljYXRl
ID0gW1tbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6cGVtRW5jb2Rl
ZENlcnRpZmljYXRlIG9wdGlvbnM6MF0gYXV0b3JlbGVhc2VdOwotICAgIFJldGFpblB0cjxTZWND
ZXJ0aWZpY2F0ZVJlZj4gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRl
V2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilkZXJFbmNvZGVkQ2VydGlmaWNh
dGUpKTsKLSAgICAKLSAgICBOU0RhdGEgKmRlckVuY29kZWRQcml2YXRlS2V5ID0gW1tbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6cGVtRW5jb2RlZFByaXZhdGVLZXkg
b3B0aW9uczowXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0
V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQcml2YXRlS2V5KCk7CisgICAgTlNEYXRhICpkZXJF
bmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMu
ZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkq
IG9wdGlvbnMgPSBAewogICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJL
ZXlUeXBlUlNBLAogICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5
Q2xhc3NQcml2YXRlLApAQCAtMTc1LDM2ICs1MSwxNiBAQCBzdGF0aWMgc3RkOjpwYWlyPFJldGFp
blB0cjxOU1VSTENyZWRlbnRpCiAgICAgfTsKICAgICBjb25zdCBOU1VJbnRlZ2VyIHBlbUVuY29k
ZWRQcml2YXRlS2V5SGVhZGVyTGVuZ3RoID0gMjY7CiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51
bGxwdHI7Ci0gICAgUmV0YWluUHRyPFNlY0tleVJlZj4gcHJpdmF0ZUtleSA9IGFkb3B0Q0YoU2Vj
S2V5Q3JlYXRlV2l0aERhdGEoKF9fYnJpZGdlIENGRGF0YVJlZilbZGVyRW5jb2RlZFByaXZhdGVL
ZXkgc3ViZGF0YVdpdGhSYW5nZTpOU01ha2VSYW5nZShwZW1FbmNvZGVkUHJpdmF0ZUtleUhlYWRl
ckxlbmd0aCwgZGVyRW5jb2RlZFByaXZhdGVLZXkubGVuZ3RoIC0gcGVtRW5jb2RlZFByaXZhdGVL
ZXlIZWFkZXJMZW5ndGgpXSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zLCAmZXJy
b3IpKTsKKyAgICBhdXRvIHByaXZhdGVLZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRh
KChfX2JyaWRnZSBDRkRhdGFSZWYpW2RlckVuY29kZWRQcml2YXRlS2V5IHN1YmRhdGFXaXRoUmFu
Z2U6TlNNYWtlUmFuZ2UocGVtRW5jb2RlZFByaXZhdGVLZXlIZWFkZXJMZW5ndGgsIGRlckVuY29k
ZWRQcml2YXRlS2V5Lmxlbmd0aCAtIHBlbUVuY29kZWRQcml2YXRlS2V5SGVhZGVyTGVuZ3RoKV0s
IChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpb3B0aW9ucywgJmVycm9yKSk7CiAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOwogICAgIEVYUEVDVF9OT1RfTlVMTChwcml2YXRlS2V5LmdldCgpKTsKIAot
ICAgIFNlY0tleWNoYWluUmVmIGtleWNoYWluUmVmID0gbnVsbHB0cjsKLSAgICBjb25zdCBjaGFy
KiBrZXljaGFpblBhc3N3b3JkID0gInRlc3RwYXNzd29yZCI7Ci0gICAgTlNTdHJpbmcgKmtleWNo
YWluUGF0aCA9IFtOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIlRlc3RLZXljaGFpbiJdOwotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0tleWNo
YWluQ3JlYXRlKFtrZXljaGFpblBhdGggVVRGOFN0cmluZ10sIHN0cmxlbihrZXljaGFpblBhc3N3
b3JkKSwga2V5Y2hhaW5QYXNzd29yZCwgTk8sIG51bGxwdHIsICZrZXljaGFpblJlZik7Ci0gICAg
RVhQRUNUX1RSVUUoc3RhdHVzID09IGVyclNlY1N1Y2Nlc3MpOwotICAgIFJldGFpblB0cjxTZWNL
ZXljaGFpblJlZj4ga2V5Y2hhaW4gPSBhZG9wdENGKGtleWNoYWluUmVmKTsKLSAgICBFWFBFQ1Rf
Tk9UX05VTEwoa2V5Y2hhaW4pOwotCi0gICAgU2VjRXh0ZXJuYWxJdGVtVHlwZSB0eXBlID0ga1Nl
Y0l0ZW1UeXBlUHJpdmF0ZUtleTsKLSAgICBzdGF0dXMgPSBTZWNJdGVtSW1wb3J0KChfX2JyaWRn
ZSBDRkRhdGFSZWYpZGVyRW5jb2RlZFByaXZhdGVLZXksIG51bGxwdHIsIG51bGxwdHIsICZ0eXBl
LCAwLCBudWxscHRyLCBrZXljaGFpbi5nZXQoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1RSVUUo
c3RhdHVzID09IGVyclNlY1N1Y2Nlc3MpOwotCi0gICAgU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHlS
ZWYgPSBudWxscHRyOwotICAgIHN0YXR1cyA9IFNlY0lkZW50aXR5Q3JlYXRlV2l0aENlcnRpZmlj
YXRlKGtleWNoYWluLmdldCgpLCBjZXJ0aWZpY2F0ZS5nZXQoKSwgJmlkZW50aXR5UmVmKTsKLSAg
ICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpdHlSZWYpOwotICAgIEVYUEVDVF9UUlVFKHN0YXR1cyA9
PSBlcnJTZWNTdWNjZXNzKTsKLSAgICBSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IGlkZW50aXR5
ID0gYWRvcHRDRihpZGVudGl0eVJlZik7CisgICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2Vj
SWRlbnRpdHlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHBy
aXZhdGVLZXkuZ2V0KCkpKTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpdHkpOwogICAgIAot
ICAgIHJldHVybiB7Ci0gICAgICAgIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVu
dGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0KCld
IHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV0sCi0gICAgICAgIGtl
eWNoYWluUGF0aAotICAgIH07CisgICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlh
bFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNh
dGUuZ2V0KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9
CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGtleWNoYWluUGF0aDsKLQogQGludGVyZmFj
ZSBDaGFsbGVuZ2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KIEBl
bmQKIApAQCAtMjI5LDE4ICs4NSwxNSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkCiAgICAgRVhQRUNUX1RSVUUoW3Byb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
bk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNp
Y10pOwogICAgIEVYUEVDVF9FUShbKE5TSFRUUFVSTFJlc3BvbnNlICopY2hhbGxlbmdlLmZhaWx1
cmVSZXNwb25zZSBzdGF0dXNDb2RlXSwgNDAxKTsKIAotICAgIGF1dG8gcGFpciA9IGNyZWRlbnRp
YWxXaXRoSWRlbnRpdHlBbmRLZXljaGFpblBhdGgoKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgcGFpci5maXJzdC5nZXQoKSk7
Ci0gICAga2V5Y2hhaW5QYXRoID0gV1RGTW92ZShwYWlyLnNlY29uZCk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIGNyZWRlbnRp
YWxXaXRoSWRlbnRpdHkoKS5nZXQoKSk7CiB9CiAKIEBlbmQKIAotbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewotCiBURVNUKENoYWxsZW5nZSwgU2VjSWRlbnRpdHkpCiB7Ci0gICAgVENQU2VydmVy
IHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgdXNpbmcgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEk7CisgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRX
aXRoQ2hhbGxlbmdlVGhlbk9LKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQ2hhbGxlbmdlRGVsZWdh
dGUgbmV3XSk7CkBAIC0yNDgsMTUgKzEwMSw1NiBAQCBURVNUKENoYWxsZW5nZSwgU2VjSWRlbnRp
dHkpCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6
Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CiAKICAgICBVdGlsOjpydW4oJm5h
dmlnYXRpb25GaW5pc2hlZCk7Cit9CisKK0BpbnRlcmZhY2UgQ2xpZW50Q2VydGlmaWNhdGVEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4geworICAgIFZlY3RvcjxSZXRh
aW5QdHI8TlNTdHJpbmc+PiBfYXV0aGVudGljYXRpb25NZXRob2RzOworfQorLSAoY29uc3QgVmVj
dG9yPFJldGFpblB0cjxOU1N0cmluZz4+JilhdXRoZW50aWNhdGlvbk1ldGhvZHM7CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlCisKKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihudWxsX3Vuc3Bl
Y2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBuYXZpZ2F0aW9uRmluaXNo
ZWQgPSB0cnVlOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9hdXRoZW50aWNhdGlvbk1ldGhvZHMuYXBwZW5kKGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QpOworCisgICAgaWYgKFtjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VS
TEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3RdKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VS
TENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
c2VydmVyVHJ1c3RdKTsKICAgICAKLSAgICBFWFBFQ1RfTk9UX05VTEwoa2V5Y2hhaW5QYXRoLmdl
dCgpKTsKLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6a2V5Y2hhaW5QYXRoLmdldCgpIGVycm9yOiZl
cnJvcl07Ci0gICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlmaWNhdGVdKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgY3JlZGVu
dGlhbFdpdGhJZGVudGl0eSgpLmdldCgpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorLSAoY29uc3QgVmVjdG9yPFJldGFpblB0cjxOU1N0cmluZz4+JilhdXRoZW50aWNhdGlv
bk1ldGhvZHMKK3sKKyAgICByZXR1cm4gX2F1dGhlbnRpY2F0aW9uTWV0aG9kczsKK30KIAorQGVu
ZAorCisjaWYgSEFWRShTRUNfS0VZX1BST1hZKQorVEVTVChDaGFsbGVuZ2UsIENsaWVudENlcnRp
ZmljYXRlKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworICAgIFRDUFNl
cnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNh
dGVSZXF1ZXN0LCBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0spOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmln
YXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0
KCldXV1dOworICAgIAorICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvbkZpbmlzaGVkKTsKKyAgICBh
dXRvJiBtZXRob2RzID0gW2RlbGVnYXRlIGF1dGhlbnRpY2F0aW9uTWV0aG9kc107CisgICAgRVhQ
RUNUX0VRKG1ldGhvZHMuc2l6ZSgpLCAydWxsKTsKKyAgICBFWFBFQ1RfVFJVRShbbWV0aG9kc1sw
XSBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0XSk7
CisgICAgRVhQRUNUX1RSVUUoW21ldGhvZHNbMl0gaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV0pOworfQogI2VuZGlmCiAKIHN0YXRpYyBi
b29sIHJlY2VpdmVkU2Vjb25kQ2hhbGxlbmdlOwpAQCAtMjkwLDcgKzE4NCw3IEBAIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWQKIFRFU1QoQ2hhbGxlbmdlLCBCYXNpY1By
b3Bvc2VkQ3JlZGVudGlhbCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsK
LSAgICBUQ1BTZXJ2ZXIgc2VydmVyKHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LLCAyKTsKKyAg
ICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0ss
IDIpOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJCYXNp
Y1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbiJdKTsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1By
b3Bvc2VkQ3JlZGVudGlhbERlbGVnYXRlIG5ld10pOwpAQCAtNDA2LDE2ICszMDAsMTMgQEAgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChXZWJLaXQsIFNlcnZlclRydXN0KQogewogICAg
IFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtdIChTU0wqIHNz
bCkgewotICAgICAgICBjaGFyIHJlcXVlc3RCdWZmZXJbMTAwMF07Ci0gICAgICAgIGF1dG8gcmVh
ZFJlc3VsdCA9IFNTTF9yZWFkKHNzbCwgcmVxdWVzdEJ1ZmZlciwgc2l6ZW9mKHJlcXVlc3RCdWZm
ZXIpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZWFkUmVzdWx0LCByZWFkUmVzdWx0ID4gMCk7
CisgICAgICAgIFRDUFNlcnZlcjo6cmVhZChzc2wpOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIHJl
cGx5ID0gIiIKICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCiAgICAgICAgICJDb250ZW50
LUxlbmd0aDogMTNcclxuXHJcbiIKICAgICAgICAgIkhlbGxvLCBXb3JsZCEiOwotICAgICAgICBh
dXRvIHdyaXRlUmVzdWx0ID0gU1NMX3dyaXRlKHNzbCwgcmVwbHksIHN0cmxlbihyZXBseSkpOwot
ICAgICAgICBBU1NFUlRfVU5VU0VEKHdyaXRlUmVzdWx0LCB3cml0ZVJlc3VsdCA9PSBzdGF0aWNf
Y2FzdDxpbnQ+KHN0cmxlbihyZXBseSkpKTsKKyAgICAgICAgVENQU2VydmVyOjp3cml0ZShzc2ws
IHJlcGx5LCBzdHJsZW4ocmVwbHkpKTsKICAgICB9KTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUERGTGlua1JlZmVycmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGTGlua1JlZmVycmVyLm1tCShyZXZpc2lvbiAy
NDUyNDYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BERkxpbmtS
ZWZlcnJlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNzIsMjYgKzcyLDI0IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNEYXRhPiBjcmVhdGVQREZXaXRoTGkKIAogVEVTVChXZWJLaXQsIFBERkxpbmtSZWZl
cnJlcikKIHsKLSAgICBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXIgc2VydmVyKFtdIChpbnQgc29j
a2V0KSB7Ci0gICAgICAgIGNoYXIgcmVhZEJ1ZmZlclsxMDAwXTsKLSAgICAgICAgbWVtc2V0KHJl
YWRCdWZmZXIsIDAsIDEwMDApOwotCisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7
CisgICAgVENQU2VydmVyIHNlcnZlcihbXSAoaW50IHNvY2tldCkgewogICAgICAgICAvLyBUaGlz
IGFzc3VtZXMgYWxsIHRoZSBkYXRhIGZyb20gdGhlIEhUVFAgcmVxdWVzdCBpcyBhdmFpbGFibGUg
dG8gYmUgcmVhZCBhdCBvbmNlLAogICAgICAgICAvLyB3aGljaCBpcyBwcm9iYWJseSBhbiBva2F5
IGFzc3VtcHRpb24uCi0gICAgICAgIDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIDk5OSk7Cisg
ICAgICAgIGF1dG8gcmVxdWVzdEJ5dGVzID0gVENQU2VydmVyOjpyZWFkKHNvY2tldCk7CiAKICAg
ICAgICAgLy8gTG9vayBmb3IgYSByZWZlcmVyIGhlYWRlci4KLSAgICAgICAgY2hhciogY3VycmVu
dExpbmUgPSByZWFkQnVmZmVyOworICAgICAgICBjb25zdCBhdXRvKiBjdXJyZW50TGluZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlcXVlc3RCeXRlcy5kYXRhKCkpOwogICAgICAg
ICB3aGlsZSAoY3VycmVudExpbmUpIHsKICAgICAgICAgICAgIEVYUEVDVF9ORShzdHJuY2FzZWNt
cChjdXJyZW50TGluZSwgInJlZmVyZXI6IiwgOCksIDApOwotICAgICAgICAgICAgY2hhciogbmV4
dExpbmUgPSBzdHJjaHIoY3VycmVudExpbmUsICdcbicpOworICAgICAgICAgICAgY29uc3QgY2hh
ciogbmV4dExpbmUgPSBzdHJjaHIoY3VycmVudExpbmUsICdcbicpOwogICAgICAgICAgICAgY3Vy
cmVudExpbmUgPSBuZXh0TGluZSA/IG5leHRMaW5lICsgMSA6IDA7CiAgICAgICAgIH0KIAogICAg
ICAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9CiAgICAgICAgICJIVFRQLzEuMSAyMDAg
T0tcclxuIgogICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7Ci0gICAgICAgIDo6
d3JpdGUoc29ja2V0LCByZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7Cisg
ICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCByZXNwb25zZUhlYWRlciwgc3RybGVuKHJl
c3BvbnNlSGVhZGVyKSk7CiAgICAgfSk7CiAKICAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHJldmlzaW9uIDI0NTI0NikKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHdvcmtpbmcgY29weSkK
QEAgLTU3LDE4ICs1Nyw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXZWJL
aXQsIEhUVFBTUHJveHkpCiB7Ci0gICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3Rv
Y29sOjpIVFRQU1Byb3h5LCBbXSAoU1NMKiBzc2wpIHsKLSAgICAgICAgY2hhciByZXF1ZXN0QnVm
ZmVyWzEwMDBdOwotICAgICAgICBhdXRvIHJlYWRSZXN1bHQgPSBTU0xfcmVhZChzc2wsIHJlcXVl
c3RCdWZmZXIsIHNpemVvZihyZXF1ZXN0QnVmZmVyKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
cmVhZFJlc3VsdCwgcmVhZFJlc3VsdCA+IDApOwotCi0gICAgICAgIGNvbnN0IGNoYXIqIHJlcGx5
ID0gIiIKLSAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgICAgICJDb250ZW50LUxl
bmd0aDogMzRcclxuXHJcbiIKLSAgICAgICAgIjxzY3JpcHQ+YWxlcnQoJ3N1Y2Nlc3MhJyk8L3Nj
cmlwdD4iOwotICAgICAgICBhdXRvIHdyaXRlUmVzdWx0ID0gU1NMX3dyaXRlKHNzbCwgcmVwbHks
IHN0cmxlbihyZXBseSkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHdyaXRlUmVzdWx0LCB3cml0
ZVJlc3VsdCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmxlbihyZXBseSkpKTsKLSAgICB9KTsKKyAg
ICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTUHJveHksIFRDUFNl
cnZlcjo6cmVzcG9uZFdpdGhPSyk7CiAKICAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10pOwogICAgIFtzdG9y
ZUNvbmZpZ3VyYXRpb24gc2V0SFRUUFNQcm94eTpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0
KCldXV07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLTmF2
aWdhdGlvblJlc3BvbnNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0JKHJldmlzaW9uIDI0NTI0NikK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVz
cG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5NSw0MSArMTk1LDI4IEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWMKIAogQGVuZAogCi1zdGF0aWMgdm9pZCByZWFk
UmVxdWVzdChpbnQgc29ja2V0KQotewotICAgIGNoYXIgcmVhZEJ1ZmZlclsxMDAwXTsKLSAgICBh
dXRvIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVm
ZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLX0KLQot
c3RhdGljIHZvaWQgd3JpdGVSZXNwb25zZShpbnQgc29ja2V0LCBOU1N0cmluZyAqcmVzcG9uc2Up
Ci17Ci0gICAgY29uc3QgY2hhciogYnl0ZXMgPSByZXNwb25zZS5VVEY4U3RyaW5nOwotICAgIGF1
dG8gYnl0ZXNXcml0dGVuID0gOjp3cml0ZShzb2NrZXQsIGJ5dGVzLCBzdHJsZW4oYnl0ZXMpKTsK
LSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0ZW4pLCBzdHJsZW4o
Ynl0ZXMpKTsKLX0KLQogVEVTVChXZWJLaXQsIFdLTmF2aWdhdGlvblJlc3BvbnNlRG93bmxvYWRB
dHRyaWJ1dGUpCiB7CiAgICAgYXV0byBnZXREb3dubG9hZFJlc3BvbnNlID0gW10gKFJldGFpblB0
cjxOU1N0cmluZz4gYm9keSkgLT4gUmV0YWluUHRyPFdLTmF2aWdhdGlvblJlc3BvbnNlPiB7Ci0g
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlciBzZXJ2ZXIoW2JvZHldKGludCBzb2NrZXQp
IHsKLSAgICAgICAgICAgIHJlYWRSZXF1ZXN0KHNvY2tldCk7CisgICAgICAgIHVzaW5nIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJOworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFtib2R5XShpbnQg
c29ja2V0KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBib2R5TGVuZ3RoID0gW2JvZHkgbGVuZ3Ro
XTsKLSAgICAgICAgICAgIHdyaXRlUmVzcG9uc2Uoc29ja2V0LCBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDoKKyAgICAgICAgICAgIE5TU3RyaW5nICpmaXJzdFJlc3BvbnNlID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6CiAgICAgICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAgT0tcclxu
IgogICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJWRcclxuXHJcbiIKICAgICAgICAg
ICAgICAgICAiJUAiLAogICAgICAgICAgICAgICAgIGJvZHlMZW5ndGgsCiAgICAgICAgICAgICAg
ICAgYm9keS5nZXQoKQotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICByZWFkUmVxdWVzdChz
b2NrZXQpOwotICAgICAgICAgICAgd3JpdGVSZXNwb25zZShzb2NrZXQsCi0gICAgICAgICAgICAg
ICAgQCJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgXTsKKyAgICAgICAgICAgIE5T
U3RyaW5nICpzZWNvbmRSZXNwb25zZSA9IEAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKICAgICAgICAg
ICAgICAgICAiQ29udGVudC1MZW5ndGg6IDZcclxuIgogICAgICAgICAgICAgICAgICJDb250ZW50
LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1mcm9tSGVhZGVyLnR4dDtcclxuXHJc
biIKLSAgICAgICAgICAgICAgICAiSGVsbG8hIgotICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
ICAgICAiSGVsbG8hIjsKKworICAgICAgICAgICAgVENQU2VydmVyOjpyZWFkKHNvY2tldCk7Cisg
ICAgICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgZmlyc3RSZXNwb25zZS5VVEY4U3Ry
aW5nLCBmaXJzdFJlc3BvbnNlLmxlbmd0aCk7CisgICAgICAgICAgICBUQ1BTZXJ2ZXI6OnJlYWQo
c29ja2V0KTsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCBzZWNvbmRSZXNw
b25zZS5VVEY4U3RyaW5nLCBzZWNvbmRSZXNwb25zZS5sZW5ndGgpOwogICAgICAgICB9KTsKICAg
ICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW05hdmlnYXRpb25SZXNwb25zZVRlc3REZWxl
Z2F0ZSBuZXddKTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNp
dGVEYXRhc3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0JKHJldmlzaW9uIDI0NTI0NikKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRlRGF0YXN0b3JlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMzYgKzExMCw5IEBAIFRFU1QoV0tXZWJzaXRlRGF0YVN0
b3JlLCBSZW1vdmVFcGhlbWVyYWwKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OwogfQogCi1zdGF0aWMgdm9pZCByZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyhpbnQgc29ja2V0
KQotewotICAgIGNoYXIgcmVhZEJ1ZmZlclsxMDAwXTsKLSAgICBhdXRvIGJ5dGVzUmVhZCA9IDo6
cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNU
X0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90Pihi
eXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAKLSAgICBjb25zdCBjaGFyKiBj
aGFsbGVuZ2VIZWFkZXIgPQotICAgICJIVFRQLzEuMSA0MDEgVW5hdXRob3JpemVkXHJcbiIKLSAg
ICAiRGF0ZTogU2F0LCAyMyBNYXIgMjAxOSAwNjoyOTowMSBHTVRcclxuIgotICAgICJDb250ZW50
LUxlbmd0aDogMFxyXG4iCi0gICAgIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwidGVz
dHJlYWxtXCJcclxuXHJcbiI7Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tl
dCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJsZW4oY2hhbGxlbmdlSGVhZGVyKSk7Ci0gICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSwgc3RybGVuKGNoYWxsZW5nZUhl
YWRlcikpOwotICAgIAotICAgIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIs
IHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAg
RVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRC
dWZmZXIpKTsKLSAgICAKLSAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9Ci0gICAgIkhU
VFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5cclxuIgotICAg
ICJIZWxsbywgV29ybGQhIjsKLSAgICBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgcmVz
cG9uc2VIZWFkZXIsIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOwotICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOwot
fQotICAgIAogVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIEZldGNoTm9uUGVyc2lzdGVudENyZWRl
bnRpYWxzKQogewotICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVu
T0spOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpyZXNwb25kV2l0aENoYWxsZW5n
ZVRoZW5PSyk7CiAgICAgCiAgICAgdXNlUGVyc2lzdGVudENyZWRlbnRpYWxTdG9yYWdlID0gZmFs
c2U7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBuZXddKTsKQEAgLTE2NCw3ICsxMzcsNyBAQCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwg
RmV0Y2hOb25QZXJzaXN0CiAKIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBGZXRjaFBlcnNpc3Rl
bnRDcmVkZW50aWFscykKIHsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKHJlc3BvbmRXaXRoQ2hhbGxl
bmdlVGhlbk9LKTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhD
aGFsbGVuZ2VUaGVuT0spOwogICAgIAogICAgIHVzZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFn
ZSA9IHRydWU7CiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTIwMiw3ICsxNzUsNyBAQCBURVNUKFdLV2Vic2l0ZURh
dGFTdG9yZSwgRmV0Y2hQZXJzaXN0ZW50CiAKIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBSZW1v
dmVQZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiB7Ci0gICAgVENQU2VydmVyIHNlcnZlcihyZXNwb25k
V2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OnJl
c3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKIAogICAgIHVzZVBlcnNpc3RlbnRDcmVkZW50aWFs
U3RvcmFnZSA9IHRydWU7CiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTI1Myw3ICsyMjYsNyBAQCBURVNUKFdLV2Vi
c2l0ZURhdGFTdG9yZSwgUmVtb3ZlUGVyc2lzdGVuCiAKIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3Jl
LCBSZW1vdmVOb25QZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiB7Ci0gICAgVENQU2VydmVyIHNlcnZl
cihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgVENQU2VydmVyIHNlcnZlcihUQ1BT
ZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKIAogICAgIHVzZVBlcnNpc3RlbnRD
cmVkZW50aWFsU3RvcmFnZSA9IGZhbHNlOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370070</attachid>
            <date>2019-05-16 14:29:06 -0700</date>
            <delta_ts>2019-05-16 16:08:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43537</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNDUyNjQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE5LTA1LTEzICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIGEgdW5pdCB0ZXN0IGZvciBj
bGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzgwMAorCisgICAgICAgIFJldmlld2VkIGJ5IFlv
dWVubiBGYWJsZXQuCisKKyAgICAgICAgKiB3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg6Cisg
ICAgICAgIE1vdmUgZGVjbGFyYXRpb25zIGZyb20gQXJndW1lbnRDb2RlcnNDRi5jcHAgc28gdGhl
eSBjYW4gYmUgc2hhcmVkLgorCiAyMDE5LTA1LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgd3Jva2Fyb3VuZCBmb3IgTUFDSF9WTV9N
QVhfQUREUkVTUyBpbiBBUk0zMl82NApJbmRleDogU291cmNlL1dURi93dGYvc3BpL2NvY29hL1Nl
Y3VyaXR5U1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3Vy
aXR5U1BJLmgJKHJldmlzaW9uIDI0NTI0NikKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9T
ZWN1cml0eVNQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNywxMCBAQAogCiAjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKIAorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0FjY2Vzc0NvbnRy
b2xQcml2Lmg+CiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQ2VydGlmaWNhdGVQcml2Lmg+CisjaW5j
bHVkZSA8U2VjdXJpdHkvU2VjSWRlbnRpdHlQcml2Lmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2Vj
S2V5UHJpdi5oPgogI2luY2x1ZGUgPFNlY3VyaXR5L1NlY1Rhc2suaD4KICNpbmNsdWRlIDxTZWN1
cml0eS9TZWNUcnVzdFByaXYuaD4KIApAQCAtNjcsNyArNzAsMTEgQEAgV1RGX0VYVEVSTl9DX0JF
R0lOCiAKIFNlY1Rhc2tSZWYgU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKENGQWxsb2NhdG9y
UmVmLCBhdWRpdF90b2tlbl90KTsKIFNlY1Rhc2tSZWYgU2VjVGFza0NyZWF0ZUZyb21TZWxmKENG
QWxsb2NhdG9yUmVmKTsKLUNGVHlwZVJlZiBTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQo
U2VjVGFza1JlZiwgQ0ZTdHJpbmdSZWYgZW50aXRsZW1lbnQsIENGRXJyb3JSZWYgKik7CitDRlR5
cGVSZWYgU2VjVGFza0NvcHlWYWx1ZUZvckVudGl0bGVtZW50KFNlY1Rhc2tSZWYsIENGU3RyaW5n
UmVmIGVudGl0bGVtZW50LCBDRkVycm9yUmVmKik7CitTZWNJZGVudGl0eVJlZiBTZWNJZGVudGl0
eUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgU2VjQ2VydGlmaWNhdGVSZWYsIFNlY0tleVJlZik7CitP
U1N0YXR1cyBTZWNLZXlGaW5kV2l0aFBlcnNpc3RlbnRSZWYoQ0ZEYXRhUmVmIHBlcnNpc3RlbnRS
ZWYsIFNlY0tleVJlZiogbG9va2VkVXBEYXRhKTsKK1NlY0FjY2Vzc0NvbnRyb2xSZWYgU2VjQWNj
ZXNzQ29udHJvbENyZWF0ZUZyb21EYXRhKENGQWxsb2NhdG9yUmVmLCBDRkRhdGFSZWYsIENGRXJy
b3JSZWYqKTsKK0NGRGF0YVJlZiBTZWNBY2Nlc3NDb250cm9sQ29weURhdGEoU2VjQWNjZXNzQ29u
dHJvbFJlZik7CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQXNu
MVR5cGVzLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQ1MjY0KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wNS0xMyAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFk
ZCBhIHVuaXQgdGVzdCBmb3IgY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc4MDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogU2hhcmVkL2NmL0Fy
Z3VtZW50Q29kZXJzQ0YuY3BwOgorICAgICAgICBNb3ZlIFNQSSBkZWNsYXJhdGlvbnMgdG8gU2Vj
dXJpdHlTUEkuaC4KKwogMjAxOS0wNS0xMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJBdXRoTl0gSW52YWxpZFN0YXRlRXJyb3Igc2hvdWxkIGJlIHJl
cG9ydGVkIHRvIHNpdGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENv
ZGVyc0NGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVu
dENvZGVyc0NGLmNwcAkocmV2aXNpb24gMjQ1MjQ2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
Y2YvQXJndW1lbnRDb2RlcnNDRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDI5ICs0MSw2IEBA
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNlbmRpZgogCi0jaWYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNJZGVudGl0eVByaXYuaD4K
LSNlbmRpZgotCi1leHRlcm4gIkMiIFNlY0lkZW50aXR5UmVmIFNlY0lkZW50aXR5Q3JlYXRlKENG
QWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgU2VjQ2VydGlmaWNhdGVSZWYgY2VydGlmaWNhdGUsIFNl
Y0tleVJlZiBwcml2YXRlS2V5KTsKLQotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNLZXlQcml2Lmg+Ci0j
ZW5kaWYKLQotZXh0ZXJuICJDIiBPU1N0YXR1cyBTZWNLZXlGaW5kV2l0aFBlcnNpc3RlbnRSZWYo
Q0ZEYXRhUmVmIHBlcnNpc3RlbnRSZWYsIFNlY0tleVJlZiogbG9va2VkVXBEYXRhKTsKLSNlbmRp
ZgotCi0jaWYgSEFWRShTRUNfQUNDRVNTX0NPTlRST0wpCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKLSNpbmNsdWRlIDxTZWN1cml0eS9TZWNBY2Nlc3NDb250cm9sUHJpdi5oPgotI2VuZGlm
Ci0KLWV4dGVybiAiQyIgU2VjQWNjZXNzQ29udHJvbFJlZiBTZWNBY2Nlc3NDb250cm9sQ3JlYXRl
RnJvbURhdGEoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRkRhdGFSZWYgZGF0YSwgQ0ZFcnJv
clJlZiAqZXJyb3IpOwotZXh0ZXJuICJDIiBDRkRhdGFSZWYgU2VjQWNjZXNzQ29udHJvbENvcHlE
YXRhKFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzX2NvbnRyb2wpOwotI2VuZGlmCi0KIG5hbWVz
cGFjZSBJUEMgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NTI2NCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE5LTA1
LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIGEgdW5pdCB0ZXN0IGZvciBjbGllbnQgY2VydGlmaWNhdGUgYXV0aGVudGljYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzgwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgTWFrZSBiZXR0
ZXIgYWJzdHJhY3Rpb25zIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIGZyb20vdG8gVENQU2VydmVy
LgorICAgICAgICBBZGQgYSB1bml0IHRlc3QgdGhhdCBjYXVzZXMgYSBjbGllbnQgY2VydGlmaWNh
dGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIHRvIGhhcHBlbi4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVENQU2VydmVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZl
cjo6VENQU2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6cmVhZCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OndyaXRlKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjpyZXNwb25kV2l0aE9LKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tOgorICAgICAgICAoY3JlZGVudGlhbFdpdGhJZGVu
dGl0eSk6CisgICAgICAgICgtW0NoYWxsZW5nZURlbGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoVEVT
VCk6CisgICAgICAgICgtW0NsaWVudENlcnRpZmljYXRlRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5p
c2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlIHdl
YlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlIGNoYWxsZW5nZUNvdW50
XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKHJlc3BvbmRXaXRo
Q2hhbGxlbmdlVGhlbk9LKTogRGVsZXRlZC4KKyAgICAgICAgKGNyZWRlbnRpYWxXaXRoSWRlbnRp
dHlBbmRLZXljaGFpblBhdGgpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUERGTGlua1JlZmVycmVyLm1tOgorICAgICAgICAoVEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm94eS5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW06CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKHJlYWRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKHdyaXRlUmVzcG9uc2UpOiBEZWxl
dGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRl
RGF0YXN0b3JlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk6IERlbGV0ZWQuCisKIDIw
MTktMDUtMTIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBDb21wcmVzcyBXYXRjaHBvaW50IHNpemUgYnkgdXNpbmcgZW51bSB0eXBlIGFuZCBQYWNr
ZWQ8PiBkYXRhIHN0cnVjdHVyZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcAkocmV2
aXNpb24gMjQ1MjQ2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8dGhyZWFkPgogI2luY2x1ZGUg
PHVuaXN0ZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogCiBleHRlcm4gIkMiIHsKIApAQCAtMzgsNiArMzksMTAgQEAgc3RydWN0IFg1
MDk7CiBzdHJ1Y3QgU1NMX0NUWDsKIHN0cnVjdCBFVlBfUEtFWTsKIHN0cnVjdCBTU0xfTUVUSE9E
Oworc3RydWN0IFg1MDlfU1RPUkVfQ1RYIHsKKyAgICB2b2lkKiB1bnVzZWQ7CisgICAgWDUwOSog
Y2VydDsKK307CiBzdHJ1Y3QgcGVtX3Bhc3N3b3JkX2NiOwogaW50IEJJT19mcmVlKEJJTyopOwog
aW50IFNTTF9mcmVlKFNTTCopOwpAQCAtNTYsNiArNjEsMTUgQEAgaW50IFNTTF9DVFhfdXNlX1By
aXZhdGVLZXkoU1NMX0NUWCosIEVWUAogU1NMKiBTU0xfbmV3KFNTTF9DVFgqKTsKIGludCBTU0xf
YWNjZXB0KFNTTCopOwogaW50IFNTTF9zZXRfZmQoU1NMKiwgaW50KTsKK3ZvaWQgU1NMX0NUWF9z
ZXRfdmVyaWZ5KFNTTF9DVFgqLCBpbnQsIGludCAoKikoaW50LCBYNTA5X1NUT1JFX0NUWCopKTsK
K3ZvaWQgU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2FsbGJhY2soU1NMX0NUWCosIGludCAoKiko
WDUwOV9TVE9SRV9DVFgqLCB2b2lkKiksIHZvaWQqKTsKK2ludCBTU0xfZ2V0X2Vycm9yKGNvbnN0
IFNTTCosIGludCk7CitpbnQgU1NMX3JlYWQoU1NMKiwgdm9pZCosIGludCk7CitpbnQgU1NMX3dy
aXRlKFNTTCosIGNvbnN0IHZvaWQqLCBpbnQpOworaW50IGkyZF9YNTA5KFg1MDkqLCB1bnNpZ25l
ZCBjaGFyKiopOwordm9pZCBPUEVOU1NMX2ZyZWUodm9pZCopOworI2RlZmluZSBTU0xfVkVSSUZZ
X1BFRVIgMHgwMQorI2RlZmluZSBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUIDB4MDIK
IAogfSAvLyBleHRlcm4gIkMiCiAKQEAgLTkyLDYgKzEwNiwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBkZWxldGVyPEVWUF9QS0VZPiB7CiAgICAgICAgIEVWUF9QS0VZX2ZyZWUoa2V5KTsKICAgICB9
CiB9OwordGVtcGxhdGU8PiBzdHJ1Y3QgZGVsZXRlcjx1aW50OF90W10+IHsKKyAgICB2b2lkIG9w
ZXJhdG9yKCkodWludDhfdCogYnVmZmVyKQorICAgIHsKKyAgICAgICAgT1BFTlNTTF9mcmVlKGJ1
ZmZlcik7CisgICAgfQorfTsKIAogVENQU2VydmVyOjpUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChT
b2NrZXQpPiYmIGNvbm5lY3Rpb25IYW5kbGVyLCBzaXplX3QgY29ubmVjdGlvbnMpCiAgICAgOiBt
X2Nvbm5lY3Rpb25IYW5kbGVyKFdURk1vdmUoY29ubmVjdGlvbkhhbmRsZXIpKQpAQCAtMTAxLDcg
KzEyMSw3IEBAIFRDUFNlcnZlcjo6VENQU2VydmVyKEZ1bmN0aW9uPHZvaWQoU29ja2UKIAogVENQ
U2VydmVyOjpUQ1BTZXJ2ZXIoUHJvdG9jb2wgcHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+
JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBzdGFydFNlY3VyZUNvbm5l
Y3Rpb24gPSBbc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rp
b25IYW5kbGVyKV0gKFNvY2tldCBzb2NrZXQpIHsKKyAgICBhdXRvIHN0YXJ0U2VjdXJlQ29ubmVj
dGlvbiA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VjdXJlQ29ubmVjdGlv
bkhhbmRsZXIpLCBwcm90b2NvbF0gKFNvY2tldCBzb2NrZXQpIHsKICAgICAgICAgU1NMX2xpYnJh
cnlfaW5pdCgpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTU0xfQ1RYLCBkZWxldGVyPFNT
TF9DVFg+PiBjdHgoU1NMX0NUWF9uZXcoU1NMdjIzX3NlcnZlcl9tZXRob2QoKSkpOwpAQCAtMTI5
LDYgKzE0OSwyMCBAQCBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgCiAg
ICAgICAgIEFTU0VSVChjZXJ0WDUwOSk7CiAgICAgICAgIFNTTF9DVFhfdXNlX2NlcnRpZmljYXRl
KGN0eC5nZXQoKSwgY2VydFg1MDkuZ2V0KCkpOwogCisgICAgICAgIGlmIChwcm90b2NvbCA9PSBQ
cm90b2NvbDo6SFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0KSB7CisgICAgICAgICAg
ICBTU0xfQ1RYX3NldF92ZXJpZnkoY3R4LmdldCgpLCBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVS
SUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJULCBudWxscHRyKTsKKyAgICAgICAgICAgIFNTTF9DVFhf
c2V0X2NlcnRfdmVyaWZ5X2NhbGxiYWNrKGN0eC5nZXQoKSwgW10gKFg1MDlfU1RPUkVfQ1RYKiBz
dG9yZV9jdHgsIHZvaWQqKSAtPiBpbnQgeworICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGJ1ZmZl
clBvaW50ZXIgPSBudWxscHRyOworICAgICAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gaTJkX1g1
MDkoc3RvcmVfY3R4LT5jZXJ0LCAmYnVmZmVyUG9pbnRlcik7CisgICAgICAgICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQ4X3RbXSwgZGVsZXRlcjx1aW50OF90W10+PiBidWZmZXIoYnVmZmVy
UG9pbnRlcik7CisgICAgICAgICAgICAgICAgYXV0byBleHBlY3RlZENlcnQgPSB0ZXN0Q2VydGlm
aWNhdGUoKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihleHBl
Y3RlZENlcnQuc2l6ZSgpKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoYnVmZmVy
LmdldCgpW2ldLCBleHBlY3RlZENlcnRbaV0pOworICAgICAgICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICAgICAgfSwgbnVsbHB0cik7CisgICAgICAgIH0KKwogICAgICAgICAvLyBUaGlzIGlz
IGEgdGVzdCBrZXkgZnJvbSBCb3JpbmdTU0wuCiAgICAgICAgIGNoYXIga0tleVBFTVtdID0KICAg
ICAgICAgIi0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS1cbiIKQEAgLTE2NCw2ICsxOTgs
NyBAQCBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgCiAKICAgICBzd2l0
Y2ggKHByb3RvY29sKSB7CiAgICAgY2FzZSBQcm90b2NvbDo6SFRUUFM6CisgICAgY2FzZSBQcm90
b2NvbDo6SFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0OgogICAgICAgICBtX2Nvbm5l
Y3Rpb25IYW5kbGVyID0gV1RGTW92ZShzdGFydFNlY3VyZUNvbm5lY3Rpb24pOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFByb3RvY29sOjpIVFRQU1Byb3h5OgpAQCAtMjM5LDQgKzI3NCwxODIg
QEAgYXV0byBUQ1BTZXJ2ZXI6OnNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IAogICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiB9CiAKK3RlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6
cmVhZChTb2NrZXQgc29ja2V0KQoreworICAgIHVpbnQ4X3QgYnVmZmVyWzEwMDBdOworICAgIGF1
dG8gYnl0ZXNSZWFkID0gOjpyZWFkKHNvY2tldCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChieXRlc1JlYWQsIGJ5dGVzUmVhZCA+IDApOworICAgIEFTU0VSVChz
dGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YoYnVmZmVyKSk7CisKKyAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yOworICAgIHZlY3Rvci5hcHBlbmQoYnVmZmVyLCBieXRlc1Jl
YWQpOworICAgIHJldHVybiB2ZWN0b3I7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBUQ1BTZXJ2ZXI6
OndyaXRlKFNvY2tldCBzb2NrZXQsIGNvbnN0IHZvaWQqIHJlc3BvbnNlLCBzaXplX3QgbGVuZ3Ro
KQoreworICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gOjp3cml0ZShzb2NrZXQsIHJlc3BvbnNlLCBs
ZW5ndGgpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiks
IGxlbmd0aCk7Cit9CisKK3RlbXBsYXRlPD4gVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6cmVh
ZChTU0wqIHNzbCkKK3sKKyAgICB1aW50OF90IGJ1ZmZlclsxMDAwXTsKKyAgICBhdXRvIGJ5dGVz
UmVhZCA9IFNTTF9yZWFkKHNzbCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgQVNTRVJU
X1VOVVNFRChieXRlc1JlYWQsIGJ5dGVzUmVhZCA+IDApOworICAgIEFTU0VSVChzdGF0aWNfY2Fz
dDxzaXplX3Q+KGJ5dGVzUmVhZCkgPCBzaXplb2YoYnVmZmVyKSk7CisKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdmVjdG9yOworICAgIHZlY3Rvci5hcHBlbmQoYnVmZmVyLCBieXRlc1JlYWQpOworICAg
IHJldHVybiB2ZWN0b3I7Cit9CisKK3RlbXBsYXRlPD4gdm9pZCBUQ1BTZXJ2ZXI6OndyaXRlKFNT
TCogc3NsLCBjb25zdCB2b2lkKiByZXNwb25zZSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBhdXRv
IGJ5dGVzV3JpdHRlbiA9IFNTTF93cml0ZShzc2wsIHJlc3BvbnNlLCBsZW5ndGgpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIGxlbmd0aCk7Cit9CisK
K3ZvaWQgVENQU2VydmVyOjpyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyhTb2NrZXQgc29ja2V0
KQoreworICAgIHJlYWQoc29ja2V0KTsKKyAgICAKKyAgICBjb25zdCBjaGFyKiBjaGFsbGVuZ2VI
ZWFkZXIgPQorICAgICJIVFRQLzEuMSA0MDEgVW5hdXRob3JpemVkXHJcbiIKKyAgICAiRGF0ZTog
U2F0LCAyMyBNYXIgMjAxOSAwNjoyOTowMSBHTVRcclxuIgorICAgICJDb250ZW50LUxlbmd0aDog
MFxyXG4iCisgICAgIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwidGVzdHJlYWxtXCJc
clxuXHJcbiI7CisgICAgd3JpdGUoc29ja2V0LCBjaGFsbGVuZ2VIZWFkZXIsIHN0cmxlbihjaGFs
bGVuZ2VIZWFkZXIpKTsKKyAgICAKKyAgICByZWFkKHNvY2tldCk7CisgICAgCisgICAgY29uc3Qg
Y2hhciogcmVzcG9uc2VIZWFkZXIgPQorICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICJD
b250ZW50LUxlbmd0aDogMTNcclxuXHJcbiIKKyAgICAiSGVsbG8sIFdvcmxkISI7CisgICAgd3Jp
dGUoc29ja2V0LCByZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7Cit9CisK
K3ZvaWQgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKFNTTCogc3NsKQoreworICAgIHJlYWQoc3Ns
KTsKKyAgICAKKyAgICBjb25zdCBjaGFyKiByZXBseSA9ICIiCisgICAgIkhUVFAvMS4xIDIwMCBP
S1xyXG4iCisgICAgIkNvbnRlbnQtTGVuZ3RoOiAzNFxyXG5cclxuIgorICAgICI8c2NyaXB0PmFs
ZXJ0KCdzdWNjZXNzIScpPC9zY3JpcHQ+IjsKKyAgICB3cml0ZShzc2wsIHJlcGx5LCBzdHJsZW4o
cmVwbHkpKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZlcjo6dGVzdENlcnRpZmljYXRl
KCkKK3sKKyAgICAvLyBDZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgd2VyZSBnZW5lcmF0ZWQg
YnkgcnVubmluZyB0aGlzIGNvbW1hbmQ6CisgICAgLy8gb3BlbnNzbCByZXEgLXg1MDkgLW5ld2tl
eSByc2E6NDA5NiAta2V5b3V0IGtleS5wZW0gLW91dCBjZXJ0LnBlbSAtZGF5cyAzNjUgLW5vZGVz
CisgICAgLy8gYW5kIGVudGVyaW5nIHRoaXMgaW5mb3JtYXRpb246CisgICAgLyoKKyAgICAgQ291
bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKSBbXTpVUworICAgICBTdGF0ZSBvciBQcm92aW5jZSBO
YW1lIChmdWxsIG5hbWUpIFtdOk5ldyBNZXhpY28KKyAgICAgTG9jYWxpdHkgTmFtZSAoZWcsIGNp
dHkpIFtdOlNhbnRhIEZlCisgICAgIE9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkgW106
U2VsZgorICAgICBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0aW9uKSBbXTpNeXNl
bGYKKyAgICAgQ29tbW9uIE5hbWUgKGVnLCBmdWxseSBxdWFsaWZpZWQgaG9zdCBuYW1lKSBbXTpN
ZQorICAgICBFbWFpbCBBZGRyZXNzIFtdOm1lQGV4YW1wbGUuY29tCisgICAgICovCisgICAgCisg
ICAgU3RyaW5nIHBlbUVuY29kZWRDZXJ0aWZpY2F0ZSgiIgorICAgICJNSUlGZ0RDQ0EyZ0NDUUNL
SGlQUlU1TVF1REFOQmdrcWhraUc5dzBCQVFzRkFEQ0JnVEVMTUFrR0ExVUVCaE1DIgorICAgICJW
Vk14RXpBUkJnTlZCQWdNQ2s1bGR5Qk5aWGhwWTI4eEVUQVBCZ05WQkFjTUNGTmhiblJoSUVabE1R
MHdDd1lEIgorICAgICJWUVFLREFSVFpXeG1NUTh3RFFZRFZRUUxEQVpOZVhObGJHWXhDekFKQmdO
VkJBTU1BazFsTVIwd0d3WUpLb1pJIgorICAgICJodmNOQVFrQkZnNXRaVUJsZUdGdGNHeGxMbU52
YlRBZUZ3MHhPVEF6TWpNd05UVXdNVFJhRncweU1EQXpNakl3IgorICAgICJOVFV3TVRSYU1JR0JN
UXN3Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRTFsZUdsamJ6RVJNQThHIgorICAg
ICJBMVVFQnd3SVUyRnVkR0VnUm1VeERUQUxCZ05WQkFvTUJGTmxiR1l4RHpBTkJnTlZCQXNNQmsx
NWMyVnNaakVMIgorICAgICJNQWtHQTFVRUF3d0NUV1V4SFRBYkJna3Foa2lHOXcwQkNRRVdEbTFs
UUdWNFlXMXdiR1V1WTI5dE1JSUNJakFOIgorICAgICJCZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFN
SUlDQ2dLQ0FnRUEzcmhONFNQZzhWWS9QdEdETktZM1Q5SklTZ2J5IgorICAgICI4WUdNSngwdk8r
WVpGWm0zRzNmc1RVc3l2RHlFSHdxcDVhYkNaUkIvQnkxUHdXa05yZnhuL1hQOFAwMzRKUGxFIgor
ICAgICI2aXJWaXVBWVFycVVoNms3WlI4Q3BPTTVHRWNSWmdBVUpHR1F3TmxPa0V3YUhuTUdjOFNz
SHVyZ0RQaDVYQnBnIgorICAgICJiRHl0ZDdCSnVCMU5vSS9LSm1oY2Fqa0F1VjN2YXJTK3VQTG9m
UEhOcWUrY0w4aE5ualpRd0hXYXJQNDVrczRlIgorICAgICJCY09EN3R3cXh1SG5WbS9GV0VycFk4
V3M1czFNclBUaFVkRGFoakVNZitZZkRKOUtMOHkzMDR5UzhKOGZlQ3hZIgorICAgICJmY0g0QnZn
THRKbUJOSEpnajNlTkQvRU1aakpnejJGc0JqckprOGtLRDMxY3crNFdwOFVGNHNrV1hDZjQ2K21O
IgorICAgICJPSHAxM1BlU0NaTHlGNFpBSGF6VVZrbkRQY2MyWU5yV1ZWMWk2bjNUMTVrSTBUNVo3
YnN0ZG1BTHVTa0UyY3VKIgorICAgICJTVk5PNmdSK1pzVlJUbmV1UXh3V1RVME1ORWhBUEZPWDJC
aEdQNWVpc2dFVXprbnhNSmRkRkRuOVd4a2x1MUpoIgorICAgICJna3pBU0EvKzNBbWxyRlpNUGhP
aGpFdWwwempnTlI1UkJsMUc4SHo5MkxBeDVVRURCdGRMZzcxSStJOEF6UU9oIgorICAgICJkNkx0
QmVrRUN4QTE2cFNhcHBnNXZjVzlaLzhONlpsc0huWjJGenRBMG5DT2Zsa29POWllak9wY3VGTjRF
VllEIgorICAgICJ4SXR3Y3RLdzFMQ2VORC9zNGttb1JSblhiWDdrOU82Y0kxVVVXTTU5NUdzdTV0
UGEzM001QVpGQ2F2MmdPVnVZIgorICAgICJkanBwUzBIT2ZvNWh2NmNDQXdFQUFUQU5CZ2txaGtp
Rzl3MEJBUXNGQUFPQ0FnRUFZOEVXYUFGRWZ3N09WK29EIgorICAgICJYVVpTSVlYcTNFSDJFNXAz
cTM4QWhJT0xSakJ1Qit1dHl1N1E2cnhNTUh1dzJUdHNOK3piQVI3eXJqZnNzZUEzIgorICAgICI0
VE0xeGU0Tms3TlZOSFJvWlErQzBJcWY5ZnZjaW9NdlQxdFRybWEwTWhLU2pGUXB4K1B2eUxWYkQ3
WWRQODZMIgorICAgICJtZWVoS3FVN2gxcExHQWlHd2pvYVo5WWJoNkt1cS9NVEFIeTNEOCt3azdC
MzZWQnhGNmRpVmxVUFpKWlFXS0p5IgorICAgICJNS3k5RzNzemUxWkd0OVdlRTBBTXZrTjJISWVm
MEhUS0NVWjNlQnZlY09NaWp4TDBXaFdvNVF5ZjVrNnlsQ2FVIgorICAgICIyZngrTThEZkRjd0Zv
N3RTZ0x4U0szR0NGcHhQZmlEdDZRazhjOXRRbjVTMWdZM3Q2TEp1d1ZDRndVSVhsTmtCIgorICAg
ICJKRDcrY1oxWi90Q3JFaHpqM1lDazB1VVU4Q2lmb1UrNEZHK0hHRlArU1B6dHNZRTA1NW1TajMr
RXNoK295b1ZCIgorICAgICJnQkg5MHNFMlQxaTBlTkk4ZjYxb1Nnd1lGZUhzZjdmQzcxWEVYTEZS
K0d3TmRtd3FsbXdsRFpFcFR1N0JvTk4rIgorICAgICJxNytUZmsxTVJrSmxMMVBINll1L0lQaFpp
Tmg0dHlJcURPdGxZZnpwNTc3QStPVVUrcTVQUFJGUklzcWhlT3h0IgorICAgICJtTmxIeDRVemQ0
VTNJVGZtb2dKYXpqcXdZTzJ2aUJaWTRqVVFteVpzNzVlSC9qaVVGSFdSc2hhM0Fkblc1TFdhIgor
ICAgICJHM1BGblliVzh1ckgwTlNKRy9XKy85REErWTdBYTBjczRUUHB1QkdaME5VMVc5NE9vQ01v
NGxrTzZIL3k2TGV1IgorICAgICIzdmpaRDN5OWtaazdtcmU5WEh3a0k4TWRLNXM9Iik7CisgICAg
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvcjsKKyAgICBiYXNlNjREZWNvZGUocGVtRW5jb2Rl
ZENlcnRpZmljYXRlLCB2ZWN0b3IsIFdURjo6QmFzZTY0RGVjb2RlT3B0aW9uczo6QmFzZTY0RGVm
YXVsdCk7CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IFRDUFNlcnZl
cjo6dGVzdFByaXZhdGVLZXkoKQoreworICAgIFN0cmluZyBwZW1FbmNvZGVkUHJpdmF0ZUtleSgi
IgorICAgICJNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdFQUFvSUNB
UURldUUzaEkrRHhWajgrIgorICAgICIwWU0wcGpkUDBraEtCdkx4Z1l3bkhTODc1aGtWbWJjYmQr
eE5Teks4UElRZkNxbmxwc0psRUg4SExVL0JhUTJ0IgorICAgICIvR2Y5Yy93L1RmZ2srVVRxS3RX
SzRCaEN1cFNIcVR0bEh3S2s0emtZUnhGbUFCUWtZWkRBMlU2UVRCb2Vjd1p6IgorICAgICJ4S3dl
NnVBTStIbGNHbUJzUEsxM3NFbTRIVTJnajhvbWFGeHFPUUM1WGU5cXRMNjQ4dWg4OGMycDc1d3Z5
RTJlIgorICAgICJObERBZFpxcy9qbVN6aDRGdzRQdTNDckc0ZWRXYjhWWVN1bGp4YXptelV5czlP
RlIwTnFHTVF4LzVoOE1uMG92IgorICAgICJ6TGZUakpMd254OTRMRmg5d2ZnRytBdTBtWUUwY21D
UGQ0MFA4UXhtTW1EUFlXd0dPc21UeVFvUGZWekQ3aGFuIgorICAgICJ4UVhpeVJaY0ovanI2WTA0
ZW5YYzk1SUprdklYaGtBZHJOUldTY005eHpaZzJ0WlZYV0xxZmRQWG1RalJQbG50IgorICAgICJ1
eTEyWUF1NUtRVFp5NGxKVTA3cUJINW14VkZPZDY1REhCWk5UUXcwU0VBOFU1ZllHRVkvbDZLeUFS
VE9TZkV3IgorICAgICJsMTBVT2YxYkdTVzdVbUdDVE1CSUQvN2NDYVdzVmt3K0U2R01TNlhUT09B
MUhsRUdYVWJ3ZlAzWXNESGxRUU1HIgorICAgICIxMHVEdlVqNGp3RE5BNkYzb3UwRjZRUUxFRFhx
bEpxbW1EbTl4YjFuL3czcG1Xd2VkbllYTzBEU2NJNStXU2c3IgorICAgICIySjZNNmx5NFUzZ1JW
Z1BFaTNCeTByRFVzSjQwUCt6aVNhaEZHZGR0ZnVUMDdwd2pWUlJZem4za2F5N20wOXJmIgorICAg
ICJjemtCa1VKcS9hQTVXNWgyT21sTFFjNStqbUcvcHdJREFRQUJBb0lDQUdyYS9DcC9mMFhxdms5
U1QrUHJ0Mi9wIgorICAgICJrTnRMZURYY2xMU1RjUDBKQ1pIdWZRYUZ3KzdWbkZMcHFlNEd2THE5
QmxsY3o4Vk92UXdyYmUvQ3dOVytWeEM4IgorICAgICJSTWpnZTJycUFDZ3dHaE94MXQ4N2w0Nk5r
VVF3N0V5MGxDbGU4a3IrTUdnR0dvWnFyTUZkS0lSVW9NdjRubVE2IgorICAgICJ0bWMxRkh2NXBM
UmU5UStMcDVuWVF3R29ZbVpvVU91ZW9PYU9MMDhtNDlwR1hRa2lOOHBKRE14U2ZPM0p2dHN1Igor
ICAgICI0Y3FJYjZrT1EvZE8xSXMxQ1R2VVJsZDFJWUxIN1l1U2hpNFpFeDJnMmFjMlV5dnQ2WW14
eHZNbUFqQlNLcEdkIgorICAgICJsb2llcGhvMy9OckRHVUtkdjNxOVFZeXpyQTh3OUdUMzJMREdx
Z0JYSmkxc2NCSThjRXhrcDZQNGlEbGxodjdzIgorICAgICJ2WnNzcHZvYlJKYTNPMXprODYzTEhY
YTI0SkNueXV6aW1xZXpaMk9saDdsNG9sSG9ZRDZVRkM5amZkNEtjSFJnIgorICAgICIxYzRzeXF0
L244QUsvMXMxZUJmUzlkemI1Q2ZqdDlNdEtZc2x4dkx6cTFXd09JTnd6OHJJWXVSaTBQY0xtOWhz
IgorICAgICJsK1UwdS96QjM3ZU1ndjYraXdEWGsxZlNqYnVZc0UvYkVUV1lrbktHTkZGTDVKU2lL
VjdXQ3BtZ05UVHJyRTRLIgorICAgICJTOEU2aFI5dVBPQWFvdzd2UENDdDR4TFgvNDhsMkVJNlpl
cTZxT3BxMWxKMnFjeThyNHR5dVFnTlJMUU1rWmcxIgorICAgICJBeFFsNnZuUThDdTRpdStOSWhl
ZjB5OVo3cWtmTnZaZUNqNUdsRkI5YzJZalY4WTJtZFdmSkI0cVdLM1ovK01KIgorICAgICJRT1RD
S1J6Ny9MeExOQlVlcFJqSkFvSUJBUUQzWnNWNXRXVTlaU0tjVko5REM3VFprMFArbGhjaXNacjBu
TDB0IgorICAgICJQUXVRTytwSHZQSTFNcVJuTnNrSEpoeVBucVZDaStkcDg5dEsvSXQ1OTBVTGw4
b3M2VUMxRmh5dEJQb1QxWVBkIgorICAgICJXR1dlcDJwT2M3YlZwaTRpcDMxeStJbWZnZVp5SnRN
QVRkbWUza0JQQU9lNU5HRTlHaWcvbDVucUx5YjAyc2QxIgorICAgICJRVzdPMEdkcUx4M0RwTHc0
U0xsaE1mNmFFMHVHUlM4c2ZCMDg1ZTRER241NE8yd0VWdVNacVpsNU5ORWYzNVJ6IgorICAgICJY
Z2ltM2grUldGMVpGU1F6akIvc21OMFpoK3YzSXo3dkVKMWgweXdWNm8rR3p2SGtQOUhFNmdMSWh0
eVY4T0V3IgorICAgICJ2bHlZazFHYTdwVVZHUmg4bzhPTWU2UlI5RFFpN0pxQzRlSTdHY2ttQnph
cXpKY0RBb0lCQVFEbWRlNkFUZXczIgorICAgICJIOWJRSzZ4bmJNSW5jei9DT3BJSVNkbGNGYjIz
QUhHRWI0YjRWaEpGQk53eHJOTDZ0SEtTRkxlWVpGTGhUZGh4IgorICAgICJQZlh5VUxITmY1b3pk
RWtsMFdybGVyb0Rkb2diQ3lXZzV1SnA5L1E2OHNid2JHcjhDQWxPN1pIWVRyanVRZjFLIgorICAg
ICJBUzlwQ203N0tQM2syZDNVbEcrcGVsRGpYTG9CemlYcTBOanhKcE16NDV2ckl4OHJTV3pGTmpN
R2pYVDNmWGFTIgorICAgICI5NjJrLzBBWGVpNS9iZnVoQnhsbTdQbmkwYlFKSVdGa2VhVXVHbHJP
YUhEUnhVaVgxcjlJWlM5d3Y1bGsxUHRnIgorICAgICJpZHBiY1d5dzE4Y0ZHVHZqZEtoUmJaSDhF
c2Jtem1OTnNDR2RnQ01xRmtLWXNXMTZRS29Dai9OQW92STNuMHFuIgorICAgICI2Vm9SYTBzR21U
R05Bb0lCQUNsL21xWkVzQnV4U0RIeTI5Z1NNWjdCWGdscFFhNDNIbWZqbHJQczVuQ21MREVtIgor
ICAgICJWM1ptN1Q3RzZNZUROQTAvTGpkUVlsdmFaTEZhVlViN0hDREtzRVlDUmpGWjZTdDRoejRt
ZFh6K1krVk43YjRGIgorICAgICJHT2tUZSsraUtwL0xZc0pYdHNEMUZEV2IyV0lWbzdIYzFBR3o4
SStnUUpvU0l1WXVUSm1MelNNMCs1SkRVT1YxIgorICAgICJ5OGRTYmFQL1J1RXYwcVlqa0dxUVZr
NWU3MFNVeU96S1YrWnhDVGhkSHZGTGlvdlRPVFRnZXZVekU3NXh5ZGZHIgorICAgICJlN29DbXRU
dXJ6Z3ZsLzY5VnU1WWdpajFuNENXUEhIY3E0Q1FXL0RPWjdCaEZHQndoclc3OXZvSEpGOFBid1BP
IgorICAgICIrMERUdWRER1kzbkFENXNUbkY4elV1T2JZaWhKdGZ6ai90NTlmT01DZ2dFQkFJWXV1
QlVBU2I2MnpRNGJ2NS9nIgorICAgICJWUk0vS1NwZmk5TkRuRWpmWjd4N2g1ekNpdVZneC9aanBB
bFFSTzh2elYxOHJvRU9PS3R4OWNuSmQ4QUVkK0hjIgorICAgICJuOTNCb1MxaHgwbWhzVmgrMVRS
Wnd5anlCWFlKcHF3RDJ3ejFNejFYT0lRNkVxYk0veVBLVEQyZ2Z3Zzd5TzUzIgorICAgICJxWXhy
eFpzV2FnVlZjRzlRK0FSQkVSYXRUd0xwb04rZmNKTHh1aDRyL0NhL0xlcHN4bU9yS3pUYS9NR0sx
TGhXIgorICAgICJyV2dJazIvb2dFUExTcHRqMmQxUEVETytHQXpGejRWS2poVzFObFVoOWZHaTZJ
SlBMSExuQnczb2RiaTBTOEtUIgorICAgICJnQTlaNStMQmM1Y2xvdEFQNXJ0UUE4V2gvWkNFb1BU
S1RUQTJialcySE1hdEpjYkdtUjBGcENRcjNBTTBZMVNPIgorICAgICJNYWtDZ2dFQUxydTZRWjZZ
VXdKSkc0NUgxZXEvclBkRFk4dHFxakpWVmlLb0JWdnpLai9YZkpaWUVWUWlJdzVwIgorICAgICJ1
b0doRG95RnVGVWVJaC9kMUpjMklydXkyV2pvT2tpUVl0SXVnREhIeFJya0xkUWNqUGhsQ1RDRS9t
bXlTSnQrIgorICAgICJia1ViaUhJYlE4ZEo1eWo4U0tyMGJIenFFdE95OS9KZVJqa1lHSEM2YlZX
cHE1RkEyTUJoZjRkTmpKNFVEbG5UIgorICAgICJ2dWVQY1RqcjdubmZZMXN6dHZmVmw5RDhkbWdU
K1RCbk9PVjZ5V2oxZ201YlMxRHhRU0xnTm10S3hKOHRBaDJ1IgorICAgICJkRU9idmNwU2hQMjJJ
dE9WalNhbXBSdUF1UkcyNlplbUViR0NJM0o2TXF4M3k2bSs2SHd1bHRzZ3RkekRnckZlIgorICAg
ICJxSmZVOGJiZGJ1MnBpNDdZNEZkSkswSExmZmw1Unc9PSIpOworCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHZlY3RvcjsKKyAgICBiYXNlNjREZWNvZGUocGVtRW5jb2RlZFByaXZhdGVLZXksIHZlY3Rv
ciwgV1RGOjpCYXNlNjREZWNvZGVPcHRpb25zOjpCYXNlNjREZWZhdWx0KTsKKyAgICByZXR1cm4g
dmVjdG9yOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1RDUFNlcnZlci5oCShyZXZpc2lvbiAyNDUyNDYpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1RDUFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksNyBAQAogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAotZXh0ZXJuICJD
IiB7CiBzdHJ1Y3QgU1NMOwotaW50IFNTTF9yZWFkKFNTTCosIHZvaWQqLCBpbnQpOwotaW50IFNT
TF93cml0ZShTU0wqLCBjb25zdCB2b2lkKiwgaW50KTsKLX0KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCkBAIC00NCwxNCArNDAsMjUgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4
cHIgUG9ydCBJbnZhbGlkUG9ydCA9IDA7CiAgICAgCiAgICAgVENQU2VydmVyKEZ1bmN0aW9uPHZv
aWQoU29ja2V0KT4mJiwgc2l6ZV90IGNvbm5lY3Rpb25zID0gMSk7Ci0gICAgZW51bSBjbGFzcyBQ
cm90b2NvbCA6IGJvb2wgewotICAgICAgICBIVFRQUywgSFRUUFNQcm94eQorICAgIGVudW0gY2xh
c3MgUHJvdG9jb2wgOiB1aW50OF90IHsKKyAgICAgICAgSFRUUFMsCisgICAgICAgIEhUVFBTUHJv
eHksCisgICAgICAgIEhUVFBTV2l0aENsaWVudENlcnRpZmljYXRlUmVxdWVzdCwKICAgICB9Owog
ICAgIFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJik7CiAgICAgflRD
UFNlcnZlcigpOwogICAgIAogICAgIFBvcnQgcG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDsg
fQogICAgIAorICAgIHN0YXRpYyB2b2lkIHJlc3BvbmRXaXRoT0soU1NMKik7CisgICAgc3RhdGlj
IHZvaWQgcmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0soU29ja2V0KTsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gcmVhZChUKTsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdm9pZCB3cml0ZShULCBjb25zdCB2b2lkKiwgc2l6ZV90KTsK
KworICAgIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gdGVzdFByaXZhdGVLZXkoKTsKKyAgICBzdGF0
aWMgVmVjdG9yPHVpbnQ4X3Q+IHRlc3RDZXJ0aWZpY2F0ZSgpOworICAgIAogcHJpdmF0ZToKICAg
ICBPcHRpb25hbDxTb2NrZXQ+IHNvY2tldEJpbmRMaXN0ZW4oc2l6ZV90IGNvbm5lY3Rpb25zKTsK
ICAgICB2b2lkIGxpc3RlbkZvckNvbm5lY3Rpb25zKHNpemVfdCBjb25uZWN0aW9ucyk7CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5n
ZS5tbQkocmV2aXNpb24gMjQ1MjQ2KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9DaGFsbGVuZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDE0MSArMzMsMTcgQEAK
ICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFSZWNvcmRQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIHN0YXRpYyBib29sIG5h
dmlnYXRpb25GaW5pc2hlZDsKIAotc3RhdGljIHZvaWQgcmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVu
T0soaW50IHNvY2tldCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW50
aWFsV2l0aElkZW50aXR5KCkKIHsKLSAgICBjaGFyIHJlYWRCdWZmZXJbMTAwMF07Ci0gICAgYXV0
byBieXRlc1JlYWQgPSA6OnJlYWQoc29ja2V0LCByZWFkQnVmZmVyLCBzaXplb2YocmVhZEJ1ZmZl
cikpOwotICAgIEVYUEVDVF9HVChieXRlc1JlYWQsIDApOwotICAgIEVYUEVDVF9UUlVFKHN0YXRp
Y19jYXN0PHNpemVfdD4oYnl0ZXNSZWFkKSA8IHNpemVvZihyZWFkQnVmZmVyKSk7CisgICAgYXV0
byBjZXJ0aWZpY2F0ZUJ5dGVzID0gVGVzdFdlYktpdEFQSTo6VENQU2VydmVyOjp0ZXN0Q2VydGlm
aWNhdGUoKTsKKyAgICBhdXRvIGNlcnRpZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNy
ZWF0ZVdpdGhEYXRhKG51bGxwdHIsIChfX2JyaWRnZSBDRkRhdGFSZWYpW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOmNlcnRpZmljYXRlQnl0ZXMuZGF0YSgpIGxlbmd0aDpjZXJ0aWZpY2F0ZUJ5dGVzLnNp
emUoKV0pKTsKICAgICAKLSAgICBjb25zdCBjaGFyKiBjaGFsbGVuZ2VIZWFkZXIgPQotICAgICJI
VFRQLzEuMSA0MDEgVW5hdXRob3JpemVkXHJcbiIKLSAgICAiRGF0ZTogU2F0LCAyMyBNYXIgMjAx
OSAwNjoyOTowMSBHTVRcclxuIgotICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCi0gICAgIldX
Vy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPVwidGVzdHJlYWxtXCJcclxuXHJcbiI7Ci0gICAg
YXV0byBieXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJs
ZW4oY2hhbGxlbmdlSGVhZGVyKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4o
Ynl0ZXNXcml0dGVuKSwgc3RybGVuKGNoYWxsZW5nZUhlYWRlcikpOwotICAgIAotICAgIGJ5dGVz
UmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7Ci0g
ICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8
c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAKLSAgICBjb25z
dCBjaGFyKiByZXNwb25zZUhlYWRlciA9Ci0gICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAg
IkNvbnRlbnQtTGVuZ3RoOiAxM1xyXG5cclxuIgotICAgICJIZWxsbywgV29ybGQhIjsKLSAgICBi
eXRlc1dyaXR0ZW4gPSA6OndyaXRlKHNvY2tldCwgcmVzcG9uc2VIZWFkZXIsIHN0cmxlbihyZXNw
b25zZUhlYWRlcikpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3Jp
dHRlbiksIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOwotfQotCi0jaWYgUExBVEZPUk0oTUFDKQot
Ci1zdGF0aWMgc3RkOjpwYWlyPFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+LCBSZXRhaW5QdHI8
TlNTdHJpbmc+PiBjcmVkZW50aWFsV2l0aElkZW50aXR5QW5kS2V5Y2hhaW5QYXRoKCkKLXsKLSAg
ICAvLyBDZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgd2VyZSBnZW5lcmF0ZWQgYnkgcnVubmlu
ZyB0aGlzIGNvbW1hbmQ6Ci0gICAgLy8gb3BlbnNzbCByZXEgLXg1MDkgLW5ld2tleSByc2E6NDA5
NiAta2V5b3V0IGtleS5wZW0gLW91dCBjZXJ0LnBlbSAtZGF5cyAzNjUgLW5vZGVzCi0gICAgLy8g
YW5kIGVudGVyaW5nIHRoaXMgaW5mb3JtYXRpb246Ci0gICAgLyoKLSAgICAgQ291bnRyeSBOYW1l
ICgyIGxldHRlciBjb2RlKSBbXTpVUwotICAgICBTdGF0ZSBvciBQcm92aW5jZSBOYW1lIChmdWxs
IG5hbWUpIFtdOk5ldyBNZXhpY28KLSAgICAgTG9jYWxpdHkgTmFtZSAoZWcsIGNpdHkpIFtdOlNh
bnRhIEZlCi0gICAgIE9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkgW106U2VsZgotICAg
ICBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0aW9uKSBbXTpNeXNlbGYKLSAgICAg
Q29tbW9uIE5hbWUgKGVnLCBmdWxseSBxdWFsaWZpZWQgaG9zdCBuYW1lKSBbXTpNZQotICAgICBF
bWFpbCBBZGRyZXNzIFtdOm1lQGV4YW1wbGUuY29tCi0gICAgICovCi0gICAgCi0gICAgTlNTdHJp
bmcgKnBlbUVuY29kZWRDZXJ0aWZpY2F0ZSA9IEAiIgotICAgICJNSUlGZ0RDQ0EyZ0NDUUNLSGlQ
UlU1TVF1REFOQmdrcWhraUc5dzBCQVFzRkFEQ0JnVEVMTUFrR0ExVUVCaE1DIgotICAgICJWVk14
RXpBUkJnTlZCQWdNQ2s1bGR5Qk5aWGhwWTI4eEVUQVBCZ05WQkFjTUNGTmhiblJoSUVabE1RMHdD
d1lEIgotICAgICJWUVFLREFSVFpXeG1NUTh3RFFZRFZRUUxEQVpOZVhObGJHWXhDekFKQmdOVkJB
TU1BazFsTVIwd0d3WUpLb1pJIgotICAgICJodmNOQVFrQkZnNXRaVUJsZUdGdGNHeGxMbU52YlRB
ZUZ3MHhPVEF6TWpNd05UVXdNVFJhRncweU1EQXpNakl3IgotICAgICJOVFV3TVRSYU1JR0JNUXN3
Q1FZRFZRUUdFd0pWVXpFVE1CRUdBMVVFQ0F3S1RtVjNJRTFsZUdsamJ6RVJNQThHIgotICAgICJB
MVVFQnd3SVUyRnVkR0VnUm1VeERUQUxCZ05WQkFvTUJGTmxiR1l4RHpBTkJnTlZCQXNNQmsxNWMy
VnNaakVMIgotICAgICJNQWtHQTFVRUF3d0NUV1V4SFRBYkJna3Foa2lHOXcwQkNRRVdEbTFsUUdW
NFlXMXdiR1V1WTI5dE1JSUNJakFOIgotICAgICJCZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlD
Q2dLQ0FnRUEzcmhONFNQZzhWWS9QdEdETktZM1Q5SklTZ2J5IgotICAgICI4WUdNSngwdk8rWVpG
Wm0zRzNmc1RVc3l2RHlFSHdxcDVhYkNaUkIvQnkxUHdXa05yZnhuL1hQOFAwMzRKUGxFIgotICAg
ICI2aXJWaXVBWVFycVVoNms3WlI4Q3BPTTVHRWNSWmdBVUpHR1F3TmxPa0V3YUhuTUdjOFNzSHVy
Z0RQaDVYQnBnIgotICAgICJiRHl0ZDdCSnVCMU5vSS9LSm1oY2Fqa0F1VjN2YXJTK3VQTG9mUEhO
cWUrY0w4aE5ualpRd0hXYXJQNDVrczRlIgotICAgICJCY09EN3R3cXh1SG5WbS9GV0VycFk4V3M1
czFNclBUaFVkRGFoakVNZitZZkRKOUtMOHkzMDR5UzhKOGZlQ3hZIgotICAgICJmY0g0QnZnTHRK
bUJOSEpnajNlTkQvRU1aakpnejJGc0JqckprOGtLRDMxY3crNFdwOFVGNHNrV1hDZjQ2K21OIgot
ICAgICJPSHAxM1BlU0NaTHlGNFpBSGF6VVZrbkRQY2MyWU5yV1ZWMWk2bjNUMTVrSTBUNVo3YnN0
ZG1BTHVTa0UyY3VKIgotICAgICJTVk5PNmdSK1pzVlJUbmV1UXh3V1RVME1ORWhBUEZPWDJCaEdQ
NWVpc2dFVXprbnhNSmRkRkRuOVd4a2x1MUpoIgotICAgICJna3pBU0EvKzNBbWxyRlpNUGhPaGpF
dWwwempnTlI1UkJsMUc4SHo5MkxBeDVVRURCdGRMZzcxSStJOEF6UU9oIgotICAgICJkNkx0QmVr
RUN4QTE2cFNhcHBnNXZjVzlaLzhONlpsc0huWjJGenRBMG5DT2Zsa29POWllak9wY3VGTjRFVllE
IgotICAgICJ4SXR3Y3RLdzFMQ2VORC9zNGttb1JSblhiWDdrOU82Y0kxVVVXTTU5NUdzdTV0UGEz
M001QVpGQ2F2MmdPVnVZIgotICAgICJkanBwUzBIT2ZvNWh2NmNDQXdFQUFUQU5CZ2txaGtpRzl3
MEJBUXNGQUFPQ0FnRUFZOEVXYUFGRWZ3N09WK29EIgotICAgICJYVVpTSVlYcTNFSDJFNXAzcTM4
QWhJT0xSakJ1Qit1dHl1N1E2cnhNTUh1dzJUdHNOK3piQVI3eXJqZnNzZUEzIgotICAgICI0VE0x
eGU0Tms3TlZOSFJvWlErQzBJcWY5ZnZjaW9NdlQxdFRybWEwTWhLU2pGUXB4K1B2eUxWYkQ3WWRQ
ODZMIgotICAgICJtZWVoS3FVN2gxcExHQWlHd2pvYVo5WWJoNkt1cS9NVEFIeTNEOCt3azdCMzZW
QnhGNmRpVmxVUFpKWlFXS0p5IgotICAgICJNS3k5RzNzemUxWkd0OVdlRTBBTXZrTjJISWVmMEhU
S0NVWjNlQnZlY09NaWp4TDBXaFdvNVF5ZjVrNnlsQ2FVIgotICAgICIyZngrTThEZkRjd0ZvN3RT
Z0x4U0szR0NGcHhQZmlEdDZRazhjOXRRbjVTMWdZM3Q2TEp1d1ZDRndVSVhsTmtCIgotICAgICJK
RDcrY1oxWi90Q3JFaHpqM1lDazB1VVU4Q2lmb1UrNEZHK0hHRlArU1B6dHNZRTA1NW1TajMrRXNo
K295b1ZCIgotICAgICJnQkg5MHNFMlQxaTBlTkk4ZjYxb1Nnd1lGZUhzZjdmQzcxWEVYTEZSK0d3
TmRtd3FsbXdsRFpFcFR1N0JvTk4rIgotICAgICJxNytUZmsxTVJrSmxMMVBINll1L0lQaFppTmg0
dHlJcURPdGxZZnpwNTc3QStPVVUrcTVQUFJGUklzcWhlT3h0IgotICAgICJtTmxIeDRVemQ0VTNJ
VGZtb2dKYXpqcXdZTzJ2aUJaWTRqVVFteVpzNzVlSC9qaVVGSFdSc2hhM0Fkblc1TFdhIgotICAg
ICJHM1BGblliVzh1ckgwTlNKRy9XKy85REErWTdBYTBjczRUUHB1QkdaME5VMVc5NE9vQ01vNGxr
TzZIL3k2TGV1IgotICAgICIzdmpaRDN5OWtaazdtcmU5WEh3a0k4TWRLNXM9IjsKLSAgICAKLSAg
ICBOU1N0cmluZyAqcGVtRW5jb2RlZFByaXZhdGVLZXkgPSBAIiIKLSAgICAiTUlJSlFnSUJBREFO
QmdrcWhraUc5dzBCQVFFRkFBU0NDU3d3Z2drb0FnRUFBb0lDQVFEZXVFM2hJK0R4Vmo4KyIKLSAg
ICAiMFlNMHBqZFAwa2hLQnZMeGdZd25IUzg3NWhrVm1iY2JkK3hOU3pLOFBJUWZDcW5scHNKbEVI
OEhMVS9CYVEydCIKLSAgICAiL0dmOWMvdy9UZmdrK1VUcUt0V0s0QmhDdXBTSHFUdGxId0trNHpr
WVJ4Rm1BQlFrWVpEQTJVNlFUQm9lY3daeiIKLSAgICAieEt3ZTZ1QU0rSGxjR21Cc1BLMTNzRW00
SFUyZ2o4b21hRnhxT1FDNVhlOXF0TDY0OHVoODhjMnA3NXd2eUUyZSIKLSAgICAiTmxEQWRacXMv
am1Temg0Rnc0UHUzQ3JHNGVkV2I4VllTdWxqeGF6bXpVeXM5T0ZSME5xR01ReC81aDhNbjBvdiIK
LSAgICAiekxmVGpKTHdueDk0TEZoOXdmZ0crQXUwbVlFMGNtQ1BkNDBQOFF4bU1tRFBZV3dHT3Nt
VHlRb1BmVnpEN2hhbiIKLSAgICAieFFYaXlSWmNKL2pyNlkwNGVuWGM5NUlKa3ZJWGhrQWRyTlJX
U2NNOXh6WmcydFpWWFdMcWZkUFhtUWpSUGxudCIKLSAgICAidXkxMllBdTVLUVRaeTRsSlUwN3FC
SDVteFZGT2Q2NURIQlpOVFF3MFNFQThVNWZZR0VZL2w2S3lBUlRPU2ZFdyIKLSAgICAibDEwVU9m
MWJHU1c3VW1HQ1RNQklELzdjQ2FXc1ZrdytFNkdNUzZYVE9PQTFIbEVHWFVid2ZQM1lzREhsUVFN
RyIKLSAgICAiMTB1RHZVajRqd0ROQTZGM291MEY2UVFMRURYcWxKcW1tRG05eGIxbi93M3BtV3dl
ZG5ZWE8wRFNjSTUrV1NnNyIKLSAgICAiMko2TTZseTRVM2dSVmdQRWkzQnkwckRVc0o0MFAremlT
YWhGR2RkdGZ1VDA3cHdqVlJSWXpuM2theTdtMDlyZiIKLSAgICAiY3prQmtVSnEvYUE1VzVoMk9t
bExRYzUram1HL3B3SURBUUFCQW9JQ0FHcmEvQ3AvZjBYcXZrOVNUK1BydDIvcCIKLSAgICAia050
TGVEWGNsTFNUY1AwSkNaSHVmUWFGdys3Vm5GTHBxZTRHdkxxOUJsbGN6OFZPdlF3cmJlL0N3Tlcr
VnhDOCIKLSAgICAiUk1qZ2UycnFBQ2d3R2hPeDF0ODdsNDZOa1VRdzdFeTBsQ2xlOGtyK01HZ0dH
b1pxck1GZEtJUlVvTXY0bm1RNiIKLSAgICAidG1jMUZIdjVwTFJlOVErTHA1bllRd0dvWW1ab1VP
dWVvT2FPTDA4bTQ5cEdYUWtpTjhwSkRNeFNmTzNKdnRzdSIKLSAgICAiNGNxSWI2a09RL2RPMUlz
MUNUdlVSbGQxSVlMSDdZdVNoaTRaRXgyZzJhYzJVeXZ0NllteHh2TW1BakJTS3BHZCIKLSAgICAi
bG9pZXBobzMvTnJER1VLZHYzcTlRWXl6ckE4dzlHVDMyTERHcWdCWEppMXNjQkk4Y0V4a3A2UDRp
RGxsaHY3cyIKLSAgICAidlpzc3B2b2JSSmEzTzF6azg2M0xIWGEyNEpDbnl1emltcWV6WjJPbGg3
bDRvbEhvWUQ2VUZDOWpmZDRLY0hSZyIKLSAgICAiMWM0c3lxdC9uOEFLLzFzMWVCZlM5ZHpiNUNm
anQ5TXRLWXNseHZMenExV3dPSU53ejhySVl1UmkwUGNMbTlocyIKLSAgICAibCtVMHUvekIzN2VN
Z3Y2K2l3RFhrMWZTamJ1WXNFL2JFVFdZa25LR05GRkw1SlNpS1Y3V0NwbWdOVFRyckU0SyIKLSAg
ICAiUzhFNmhSOXVQT0Fhb3c3dlBDQ3Q0eExYLzQ4bDJFSTZaZXE2cU9wcTFsSjJxY3k4cjR0eXVR
Z05STFFNa1pnMSIKLSAgICAiQXhRbDZ2blE4Q3U0aXUrTkloZWYweTlaN3FrZk52WmVDajVHbEZC
OWMyWWpWOFkybWRXZkpCNHFXSzNaLytNSiIKLSAgICAiUU9UQ0tSejcvTHhMTkJVZXBSakpBb0lC
QVFEM1pzVjV0V1U5WlNLY1ZKOURDN1RaazBQK2xoY2lzWnIwbkwwdCIKLSAgICAiUFF1UU8rcEh2
UEkxTXFSbk5za0hKaHlQbnFWQ2krZHA4OXRLL0l0NTkwVUxsOG9zNlVDMUZoeXRCUG9UMVlQZCIK
LSAgICAiV0dXZXAycE9jN2JWcGk0aXAzMXkrSW1mZ2VaeUp0TUFUZG1lM2tCUEFPZTVOR0U5R2ln
L2w1bnFMeWIwMnNkMSIKLSAgICAiUVc3TzBHZHFMeDNEcEx3NFNMbGhNZjZhRTB1R1JTOHNmQjA4
NWU0REduNTRPMndFVnVTWnFabDVOTkVmMzVSeiIKLSAgICAiWGdpbTNoK1JXRjFaRlNRempCL3Nt
TjBaaCt2M0l6N3ZFSjFoMHl3VjZvK0d6dkhrUDlIRTZnTElodHlWOE9FdyIKLSAgICAidmx5WWsx
R2E3cFVWR1JoOG84T01lNlJSOURRaTdKcUM0ZUk3R2NrbUJ6YXF6SmNEQW9JQkFRRG1kZTZBVGV3
MyIKLSAgICAiSDliUUs2eG5iTUluY3ovQ09wSUlTZGxjRmIyM0FIR0ViNGI0VmhKRkJOd3hyTkw2
dEhLU0ZMZVlaRkxoVGRoeCIKLSAgICAiUGZYeVVMSE5mNW96ZEVrbDBXcmxlcm9EZG9nYkN5V2c1
dUpwOS9RNjhzYndiR3I4Q0FsTzdaSFlUcmp1UWYxSyIKLSAgICAiQVM5cENtNzdLUDNrMmQzVWxH
K3BlbERqWExvQnppWHEwTmp4SnBNejQ1dnJJeDhyU1d6Rk5qTUdqWFQzZlhhUyIKLSAgICAiOTYy
ay8wQVhlaTUvYmZ1aEJ4bG03UG5pMGJRSklXRmtlYVV1R2xyT2FIRFJ4VWlYMXI5SVpTOXd2NWxr
MVB0ZyIKLSAgICAiaWRwYmNXeXcxOGNGR1R2amRLaFJiWkg4RXNibXptTk5zQ0dkZ0NNcUZrS1lz
VzE2UUtvQ2ovTkFvdkkzbjBxbiIKLSAgICAiNlZvUmEwc0dtVEdOQW9JQkFDbC9tcVpFc0J1eFNE
SHkyOWdTTVo3QlhnbHBRYTQzSG1mamxyUHM1bkNtTERFbSIKLSAgICAiVjNabTdUN0c2TWVETkEw
L0xqZFFZbHZhWkxGYVZVYjdIQ0RLc0VZQ1JqRlo2U3Q0aHo0bWRYeitZK1ZON2I0RiIKLSAgICAi
R09rVGUrK2lLcC9MWXNKWHRzRDFGRFdiMldJVm83SGMxQUd6OEkrZ1FKb1NJdVl1VEptTHpTTTAr
NUpEVU9WMSIKLSAgICAieThkU2JhUC9SdUV2MHFZamtHcVFWazVlNzBTVXlPektWK1p4Q1RoZEh2
Rkxpb3ZUT1RUZ2V2VXpFNzV4eWRmRyIKLSAgICAiZTdvQ210VHVyemd2bC82OVZ1NVlnaWoxbjRD
V1BISGNxNENRVy9ET1o3QmhGR0J3aHJXNzl2b0hKRjhQYndQTyIKLSAgICAiKzBEVHVkREdZM25B
RDVzVG5GOHpVdU9iWWloSnRmemovdDU5Zk9NQ2dnRUJBSVl1dUJVQVNiNjJ6UTRidjUvZyIKLSAg
ICAiVlJNL0tTcGZpOU5EbkVqZlo3eDdoNXpDaXVWZ3gvWmpwQWxRUk84dnpWMThyb0VPT0t0eDlj
bkpkOEFFZCtIYyIKLSAgICAibjkzQm9TMWh4MG1oc1ZoKzFUUlp3eWp5QlhZSnBxd0Qyd3oxTXox
WE9JUTZFcWJNL3lQS1REMmdmd2c3eU81MyIKLSAgICAicVl4cnhac1dhZ1ZWY0c5UStBUkJFUmF0
VHdMcG9OK2ZjSkx4dWg0ci9DYS9MZXBzeG1Pckt6VGEvTUdLMUxoVyIKLSAgICAicldnSWsyL29n
RVBMU3B0ajJkMVBFRE8rR0F6Rno0VktqaFcxTmxVaDlmR2k2SUpQTEhMbkJ3M29kYmkwUzhLVCIK
LSAgICAiZ0E5WjUrTEJjNWNsb3RBUDVydFFBOFdoL1pDRW9QVEtUVEEyYmpXMkhNYXRKY2JHbVIw
RnBDUXIzQU0wWTFTTyIKLSAgICAiTWFrQ2dnRUFMcnU2UVo2WVV3SkpHNDVIMWVxL3JQZERZOHRx
cWpKVlZpS29CVnZ6S2ovWGZKWllFVlFpSXc1cCIKLSAgICAidW9HaERveUZ1RlVlSWgvZDFKYzJJ
cnV5Mldqb09raVFZdEl1Z0RISHhScmtMZFFjalBobENUQ0UvbW15U0p0KyIKLSAgICAiYmtVYmlI
SWJROGRKNXlqOFNLcjBiSHpxRXRPeTkvSmVSamtZR0hDNmJWV3BxNUZBMk1CaGY0ZE5qSjRVRGxu
VCIKLSAgICAidnVlUGNUanI3bm5mWTFzenR2ZlZsOUQ4ZG1nVCtUQm5PT1Y2eVdqMWdtNWJTMUR4
UVNMZ05tdEt4Sjh0QWgydSIKLSAgICAiZEVPYnZjcFNoUDIySXRPVmpTYW1wUnVBdVJHMjZaZW1F
YkdDSTNKNk1xeDN5Nm0rNkh3dWx0c2d0ZHpEZ3JGZSIKLSAgICAicUpmVThiYmRidTJwaTQ3WTRG
ZEpLMEhMZmZsNVJ3PT0iOwotICAgIAotICAgIE5TRGF0YSAqZGVyRW5jb2RlZENlcnRpZmljYXRl
ID0gW1tbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6cGVtRW5jb2Rl
ZENlcnRpZmljYXRlIG9wdGlvbnM6MF0gYXV0b3JlbGVhc2VdOwotICAgIFJldGFpblB0cjxTZWND
ZXJ0aWZpY2F0ZVJlZj4gY2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRl
V2l0aERhdGEobnVsbHB0ciwgKF9fYnJpZGdlIENGRGF0YVJlZilkZXJFbmNvZGVkQ2VydGlmaWNh
dGUpKTsKLSAgICAKLSAgICBOU0RhdGEgKmRlckVuY29kZWRQcml2YXRlS2V5ID0gW1tbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6cGVtRW5jb2RlZFByaXZhdGVLZXkg
b3B0aW9uczowXSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBwcml2YXRlS2V5Qnl0ZXMgPSBUZXN0
V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OnRlc3RQcml2YXRlS2V5KCk7CisgICAgTlNEYXRhICpkZXJF
bmNvZGVkUHJpdmF0ZUtleSA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpwcml2YXRlS2V5Qnl0ZXMu
ZGF0YSgpIGxlbmd0aDpwcml2YXRlS2V5Qnl0ZXMuc2l6ZSgpXTsKICAgICBOU0RpY3Rpb25hcnkq
IG9wdGlvbnMgPSBAewogICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJL
ZXlUeXBlUlNBLAogICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5
Q2xhc3NQcml2YXRlLApAQCAtMTc1LDM2ICs1MSwxNiBAQCBzdGF0aWMgc3RkOjpwYWlyPFJldGFp
blB0cjxOU1VSTENyZWRlbnRpCiAgICAgfTsKICAgICBjb25zdCBOU1VJbnRlZ2VyIHBlbUVuY29k
ZWRQcml2YXRlS2V5SGVhZGVyTGVuZ3RoID0gMjY7CiAgICAgQ0ZFcnJvclJlZiBlcnJvciA9IG51
bGxwdHI7Ci0gICAgUmV0YWluUHRyPFNlY0tleVJlZj4gcHJpdmF0ZUtleSA9IGFkb3B0Q0YoU2Vj
S2V5Q3JlYXRlV2l0aERhdGEoKF9fYnJpZGdlIENGRGF0YVJlZilbZGVyRW5jb2RlZFByaXZhdGVL
ZXkgc3ViZGF0YVdpdGhSYW5nZTpOU01ha2VSYW5nZShwZW1FbmNvZGVkUHJpdmF0ZUtleUhlYWRl
ckxlbmd0aCwgZGVyRW5jb2RlZFByaXZhdGVLZXkubGVuZ3RoIC0gcGVtRW5jb2RlZFByaXZhdGVL
ZXlIZWFkZXJMZW5ndGgpXSwgKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilvcHRpb25zLCAmZXJy
b3IpKTsKKyAgICBhdXRvIHByaXZhdGVLZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRh
KChfX2JyaWRnZSBDRkRhdGFSZWYpW2RlckVuY29kZWRQcml2YXRlS2V5IHN1YmRhdGFXaXRoUmFu
Z2U6TlNNYWtlUmFuZ2UocGVtRW5jb2RlZFByaXZhdGVLZXlIZWFkZXJMZW5ndGgsIGRlckVuY29k
ZWRQcml2YXRlS2V5Lmxlbmd0aCAtIHBlbUVuY29kZWRQcml2YXRlS2V5SGVhZGVyTGVuZ3RoKV0s
IChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpb3B0aW9ucywgJmVycm9yKSk7CiAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOwogICAgIEVYUEVDVF9OT1RfTlVMTChwcml2YXRlS2V5LmdldCgpKTsKIAot
ICAgIFNlY0tleWNoYWluUmVmIGtleWNoYWluUmVmID0gbnVsbHB0cjsKLSAgICBjb25zdCBjaGFy
KiBrZXljaGFpblBhc3N3b3JkID0gInRlc3RwYXNzd29yZCI7Ci0gICAgTlNTdHJpbmcgKmtleWNo
YWluUGF0aCA9IFtOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIlRlc3RLZXljaGFpbiJdOwotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0tleWNo
YWluQ3JlYXRlKFtrZXljaGFpblBhdGggVVRGOFN0cmluZ10sIHN0cmxlbihrZXljaGFpblBhc3N3
b3JkKSwga2V5Y2hhaW5QYXNzd29yZCwgTk8sIG51bGxwdHIsICZrZXljaGFpblJlZik7Ci0gICAg
RVhQRUNUX1RSVUUoc3RhdHVzID09IGVyclNlY1N1Y2Nlc3MpOwotICAgIFJldGFpblB0cjxTZWNL
ZXljaGFpblJlZj4ga2V5Y2hhaW4gPSBhZG9wdENGKGtleWNoYWluUmVmKTsKLSAgICBFWFBFQ1Rf
Tk9UX05VTEwoa2V5Y2hhaW4pOwotCi0gICAgU2VjRXh0ZXJuYWxJdGVtVHlwZSB0eXBlID0ga1Nl
Y0l0ZW1UeXBlUHJpdmF0ZUtleTsKLSAgICBzdGF0dXMgPSBTZWNJdGVtSW1wb3J0KChfX2JyaWRn
ZSBDRkRhdGFSZWYpZGVyRW5jb2RlZFByaXZhdGVLZXksIG51bGxwdHIsIG51bGxwdHIsICZ0eXBl
LCAwLCBudWxscHRyLCBrZXljaGFpbi5nZXQoKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1RSVUUo
c3RhdHVzID09IGVyclNlY1N1Y2Nlc3MpOwotCi0gICAgU2VjSWRlbnRpdHlSZWYgaWRlbnRpdHlS
ZWYgPSBudWxscHRyOwotICAgIHN0YXR1cyA9IFNlY0lkZW50aXR5Q3JlYXRlV2l0aENlcnRpZmlj
YXRlKGtleWNoYWluLmdldCgpLCBjZXJ0aWZpY2F0ZS5nZXQoKSwgJmlkZW50aXR5UmVmKTsKLSAg
ICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpdHlSZWYpOwotICAgIEVYUEVDVF9UUlVFKHN0YXR1cyA9
PSBlcnJTZWNTdWNjZXNzKTsKLSAgICBSZXRhaW5QdHI8U2VjSWRlbnRpdHlSZWY+IGlkZW50aXR5
ID0gYWRvcHRDRihpZGVudGl0eVJlZik7CisgICAgYXV0byBpZGVudGl0eSA9IGFkb3B0Q0YoU2Vj
SWRlbnRpdHlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlmaWNhdGUuZ2V0KCksIHBy
aXZhdGVLZXkuZ2V0KCkpKTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoaWRlbnRpdHkpOwogICAgIAot
ICAgIHJldHVybiB7Ci0gICAgICAgIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbFdpdGhJZGVu
dGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNhdGUuZ2V0KCld
IHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV0sCi0gICAgICAgIGtl
eWNoYWluUGF0aAotICAgIH07CisgICAgcmV0dXJuIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlh
bFdpdGhJZGVudGl0eTppZGVudGl0eS5nZXQoKSBjZXJ0aWZpY2F0ZXM6QFsoaWQpY2VydGlmaWNh
dGUuZ2V0KCldIHBlcnNpc3RlbmNlOk5TVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZV07CiB9
CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGtleWNoYWluUGF0aDsKLQogQGludGVyZmFj
ZSBDaGFsbGVuZ2VEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KIEBl
bmQKIApAQCAtMjI5LDE4ICs4NSwxNSBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkCiAgICAgRVhQRUNUX1RSVUUoW3Byb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
bk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZEhUVFBCYXNp
Y10pOwogICAgIEVYUEVDVF9FUShbKE5TSFRUUFVSTFJlc3BvbnNlICopY2hhbGxlbmdlLmZhaWx1
cmVSZXNwb25zZSBzdGF0dXNDb2RlXSwgNDAxKTsKIAotICAgIGF1dG8gcGFpciA9IGNyZWRlbnRp
YWxXaXRoSWRlbnRpdHlBbmRLZXljaGFpblBhdGgoKTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgcGFpci5maXJzdC5nZXQoKSk7
Ci0gICAga2V5Y2hhaW5QYXRoID0gV1RGTW92ZShwYWlyLnNlY29uZCk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIGNyZWRlbnRp
YWxXaXRoSWRlbnRpdHkoKS5nZXQoKSk7CiB9CiAKIEBlbmQKIAotbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewotCiBURVNUKENoYWxsZW5nZSwgU2VjSWRlbnRpdHkpCiB7Ci0gICAgVENQU2VydmVy
IHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgdXNpbmcgbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEk7CisgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRX
aXRoQ2hhbGxlbmdlVGhlbk9LKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbQ2hhbGxlbmdlRGVsZWdh
dGUgbmV3XSk7CkBAIC0yNDgsMTUgKzEwMSw1NiBAQCBURVNUKENoYWxsZW5nZSwgU2VjSWRlbnRp
dHkpCiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6
Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CiAKICAgICBVdGlsOjpydW4oJm5h
dmlnYXRpb25GaW5pc2hlZCk7Cit9CisKK0BpbnRlcmZhY2UgQ2xpZW50Q2VydGlmaWNhdGVEZWxl
Z2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4geworICAgIFZlY3RvcjxSZXRh
aW5QdHI8TlNTdHJpbmc+PiBfYXV0aGVudGljYXRpb25NZXRob2RzOworfQorLSAoY29uc3QgVmVj
dG9yPFJldGFpblB0cjxOU1N0cmluZz4+JilhdXRoZW50aWNhdGlvbk1ldGhvZHM7CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlCisKKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihudWxsX3Vuc3Bl
Y2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBuYXZpZ2F0aW9uRmluaXNo
ZWQgPSB0cnVlOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIF9hdXRoZW50aWNhdGlvbk1ldGhvZHMuYXBwZW5kKGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QpOworCisgICAgaWYgKFtjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VS
TEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3RdKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VS
TENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
c2VydmVyVHJ1c3RdKTsKICAgICAKLSAgICBFWFBFQ1RfTk9UX05VTEwoa2V5Y2hhaW5QYXRoLmdl
dCgpKTsKLSAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFBhdGg6a2V5Y2hhaW5QYXRoLmdldCgpIGVycm9yOiZl
cnJvcl07Ci0gICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIEVYUEVDVF9UUlVFKFtjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlmaWNhdGVdKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgY3JlZGVu
dGlhbFdpdGhJZGVudGl0eSgpLmdldCgpKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQorLSAoY29uc3QgVmVjdG9yPFJldGFpblB0cjxOU1N0cmluZz4+JilhdXRoZW50aWNhdGlv
bk1ldGhvZHMKK3sKKyAgICByZXR1cm4gX2F1dGhlbnRpY2F0aW9uTWV0aG9kczsKK30KIAorQGVu
ZAorCisjaWYgSEFWRShTRUNfS0VZX1BST1hZKSAmJiBQTEFURk9STShNQUMpIC8vIEZJWE1FOiBJ
bnZlc3RpZ2F0ZSB3aHkgdGhpcyBkb2Vzbid0IHdvcmsgb24gaU9TLgorVEVTVChDaGFsbGVuZ2Us
IENsaWVudENlcnRpZmljYXRlKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
OworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFNXaXRoQ2xp
ZW50Q2VydGlmaWNhdGVSZXF1ZXN0LCBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0spOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtDbGllbnRDZXJ0aWZpY2F0ZURlbGVnYXRlIG5ld10pOworICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIs
IHNlcnZlci5wb3J0KCldXV1dOworICAgIAorICAgIFV0aWw6OnJ1bigmbmF2aWdhdGlvbkZpbmlz
aGVkKTsKKyAgICBhdXRvJiBtZXRob2RzID0gW2RlbGVnYXRlIGF1dGhlbnRpY2F0aW9uTWV0aG9k
c107CisgICAgRVhQRUNUX0VRKG1ldGhvZHMuc2l6ZSgpLCAydWxsKTsKKyAgICBFWFBFQ1RfVFJV
RShbbWV0aG9kc1swXSBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNl
cnZlclRydXN0XSk7CisgICAgRVhQRUNUX1RSVUUoW21ldGhvZHNbMl0gaXNFcXVhbFRvU3RyaW5n
Ok5TVVJMQXV0aGVudGljYXRpb25NZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV0pOworfQogI2VuZGlm
CiAKIHN0YXRpYyBib29sIHJlY2VpdmVkU2Vjb25kQ2hhbGxlbmdlOwpAQCAtMjkwLDcgKzE4NCw3
IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWQKIFRFU1QoQ2hhbGxl
bmdlLCBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSTsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKHJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhl
bk9LLCAyKTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhDaGFs
bGVuZ2VUaGVuT0ssIDIpOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFz
c05hbWU6QCJCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbiJdKTsKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8g
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Byb3Bvc2VkQ3JlZGVudGlhbERlbGVnYXRlIG5ld10pOwpAQCAtNDA2LDE2ICsz
MDAsMTMgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChXZWJLaXQsIFNlcnZlclRy
dXN0KQogewogICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMs
IFtdIChTU0wqIHNzbCkgewotICAgICAgICBjaGFyIHJlcXVlc3RCdWZmZXJbMTAwMF07Ci0gICAg
ICAgIGF1dG8gcmVhZFJlc3VsdCA9IFNTTF9yZWFkKHNzbCwgcmVxdWVzdEJ1ZmZlciwgc2l6ZW9m
KHJlcXVlc3RCdWZmZXIpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZWFkUmVzdWx0LCByZWFk
UmVzdWx0ID4gMCk7CisgICAgICAgIFRDUFNlcnZlcjo6cmVhZChzc2wpOwogCiAgICAgICAgIGNv
bnN0IGNoYXIqIHJlcGx5ID0gIiIKICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCiAgICAg
ICAgICJDb250ZW50LUxlbmd0aDogMTNcclxuXHJcbiIKICAgICAgICAgIkhlbGxvLCBXb3JsZCEi
OwotICAgICAgICBhdXRvIHdyaXRlUmVzdWx0ID0gU1NMX3dyaXRlKHNzbCwgcmVwbHksIHN0cmxl
bihyZXBseSkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHdyaXRlUmVzdWx0LCB3cml0ZVJlc3Vs
dCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmxlbihyZXBseSkpKTsKKyAgICAgICAgVENQU2VydmVy
Ojp3cml0ZShzc2wsIHJlcGx5LCBzdHJsZW4ocmVwbHkpKTsKICAgICB9KTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGTGlua1JlZmVycmVyLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUERGTGlua1JlZmVycmVyLm1t
CShyZXZpc2lvbiAyNDUyNDYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1BERkxpbmtSZWZlcnJlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNzIsMjYgKzcyLDI0IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVQREZXaXRoTGkKIAogVEVTVChXZWJLaXQs
IFBERkxpbmtSZWZlcnJlcikKIHsKLSAgICBUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXIgc2VydmVy
KFtdIChpbnQgc29ja2V0KSB7Ci0gICAgICAgIGNoYXIgcmVhZEJ1ZmZlclsxMDAwXTsKLSAgICAg
ICAgbWVtc2V0KHJlYWRCdWZmZXIsIDAsIDEwMDApOwotCisgICAgdXNpbmcgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEk7CisgICAgVENQU2VydmVyIHNlcnZlcihbXSAoaW50IHNvY2tldCkgewogICAg
ICAgICAvLyBUaGlzIGFzc3VtZXMgYWxsIHRoZSBkYXRhIGZyb20gdGhlIEhUVFAgcmVxdWVzdCBp
cyBhdmFpbGFibGUgdG8gYmUgcmVhZCBhdCBvbmNlLAogICAgICAgICAvLyB3aGljaCBpcyBwcm9i
YWJseSBhbiBva2F5IGFzc3VtcHRpb24uCi0gICAgICAgIDo6cmVhZChzb2NrZXQsIHJlYWRCdWZm
ZXIsIDk5OSk7CisgICAgICAgIGF1dG8gcmVxdWVzdEJ5dGVzID0gVENQU2VydmVyOjpyZWFkKHNv
Y2tldCk7CiAKICAgICAgICAgLy8gTG9vayBmb3IgYSByZWZlcmVyIGhlYWRlci4KLSAgICAgICAg
Y2hhciogY3VycmVudExpbmUgPSByZWFkQnVmZmVyOworICAgICAgICBjb25zdCBhdXRvKiBjdXJy
ZW50TGluZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJlcXVlc3RCeXRlcy5kYXRh
KCkpOwogICAgICAgICB3aGlsZSAoY3VycmVudExpbmUpIHsKICAgICAgICAgICAgIEVYUEVDVF9O
RShzdHJuY2FzZWNtcChjdXJyZW50TGluZSwgInJlZmVyZXI6IiwgOCksIDApOwotICAgICAgICAg
ICAgY2hhciogbmV4dExpbmUgPSBzdHJjaHIoY3VycmVudExpbmUsICdcbicpOworICAgICAgICAg
ICAgY29uc3QgY2hhciogbmV4dExpbmUgPSBzdHJjaHIoY3VycmVudExpbmUsICdcbicpOwogICAg
ICAgICAgICAgY3VycmVudExpbmUgPSBuZXh0TGluZSA/IG5leHRMaW5lICsgMSA6IDA7CiAgICAg
ICAgIH0KIAogICAgICAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRlciA9CiAgICAgICAgICJI
VFRQLzEuMSAyMDAgT0tcclxuIgogICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7
Ci0gICAgICAgIDo6d3JpdGUoc29ja2V0LCByZXNwb25zZUhlYWRlciwgc3RybGVuKHJlc3BvbnNl
SGVhZGVyKSk7CisgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0LCByZXNwb25zZUhlYWRl
ciwgc3RybGVuKHJlc3BvbnNlSGVhZGVyKSk7CiAgICAgfSk7CiAKICAgICBSZXRhaW5QdHI8VGVz
dFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHJldmlzaW9uIDI0NTI0
NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJveHkubW0JKHdv
cmtpbmcgY29weSkKQEAgLTU3LDE4ICs1Nyw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAogVEVTVChXZWJLaXQsIEhUVFBTUHJveHkpCiB7Ci0gICAgVENQU2VydmVyIHNlcnZlcihUQ1BT
ZXJ2ZXI6OlByb3RvY29sOjpIVFRQU1Byb3h5LCBbXSAoU1NMKiBzc2wpIHsKLSAgICAgICAgY2hh
ciByZXF1ZXN0QnVmZmVyWzEwMDBdOwotICAgICAgICBhdXRvIHJlYWRSZXN1bHQgPSBTU0xfcmVh
ZChzc2wsIHJlcXVlc3RCdWZmZXIsIHNpemVvZihyZXF1ZXN0QnVmZmVyKSk7Ci0gICAgICAgIEFT
U0VSVF9VTlVTRUQocmVhZFJlc3VsdCwgcmVhZFJlc3VsdCA+IDApOwotCi0gICAgICAgIGNvbnN0
IGNoYXIqIHJlcGx5ID0gIiIKLSAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgICAg
ICJDb250ZW50LUxlbmd0aDogMzRcclxuXHJcbiIKLSAgICAgICAgIjxzY3JpcHQ+YWxlcnQoJ3N1
Y2Nlc3MhJyk8L3NjcmlwdD4iOwotICAgICAgICBhdXRvIHdyaXRlUmVzdWx0ID0gU1NMX3dyaXRl
KHNzbCwgcmVwbHksIHN0cmxlbihyZXBseSkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHdyaXRl
UmVzdWx0LCB3cml0ZVJlc3VsdCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHN0cmxlbihyZXBseSkpKTsK
LSAgICB9KTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBT
UHJveHksIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyk7CiAKICAgICBhdXRvIHN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10p
OwogICAgIFtzdG9yZUNvbmZpZ3VyYXRpb24gc2V0SFRUUFNQcm94eTpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIs
IHNlcnZlci5wb3J0KCldXV07CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0JKHJldmlz
aW9uIDI0NTI0NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tO
YXZpZ2F0aW9uUmVzcG9uc2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5NSw0MSArMTk1LDI4IEBA
IC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWMKIAogQGVuZAogCi1zdGF0
aWMgdm9pZCByZWFkUmVxdWVzdChpbnQgc29ja2V0KQotewotICAgIGNoYXIgcmVhZEJ1ZmZlclsx
MDAwXTsKLSAgICBhdXRvIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNp
emVvZihyZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQ
RUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZm
ZXIpKTsKLX0KLQotc3RhdGljIHZvaWQgd3JpdGVSZXNwb25zZShpbnQgc29ja2V0LCBOU1N0cmlu
ZyAqcmVzcG9uc2UpCi17Ci0gICAgY29uc3QgY2hhciogYnl0ZXMgPSByZXNwb25zZS5VVEY4U3Ry
aW5nOwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gOjp3cml0ZShzb2NrZXQsIGJ5dGVzLCBzdHJs
ZW4oYnl0ZXMpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1dyaXR0
ZW4pLCBzdHJsZW4oYnl0ZXMpKTsKLX0KLQogVEVTVChXZWJLaXQsIFdLTmF2aWdhdGlvblJlc3Bv
bnNlRG93bmxvYWRBdHRyaWJ1dGUpCiB7CiAgICAgYXV0byBnZXREb3dubG9hZFJlc3BvbnNlID0g
W10gKFJldGFpblB0cjxOU1N0cmluZz4gYm9keSkgLT4gUmV0YWluUHRyPFdLTmF2aWdhdGlvblJl
c3BvbnNlPiB7Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlciBzZXJ2ZXIoW2JvZHld
KGludCBzb2NrZXQpIHsKLSAgICAgICAgICAgIHJlYWRSZXF1ZXN0KHNvY2tldCk7CisgICAgICAg
IHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVy
KFtib2R5XShpbnQgc29ja2V0KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBib2R5TGVuZ3RoID0g
W2JvZHkgbGVuZ3RoXTsKLSAgICAgICAgICAgIHdyaXRlUmVzcG9uc2Uoc29ja2V0LCBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgICAgIE5TU3RyaW5nICpmaXJzdFJlc3BvbnNl
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CiAgICAgICAgICAgICAgICAgQCJIVFRQLzEu
MSAyMDAgT0tcclxuIgogICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogJWRcclxuXHJc
biIKICAgICAgICAgICAgICAgICAiJUAiLAogICAgICAgICAgICAgICAgIGJvZHlMZW5ndGgsCiAg
ICAgICAgICAgICAgICAgYm9keS5nZXQoKQotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBy
ZWFkUmVxdWVzdChzb2NrZXQpOwotICAgICAgICAgICAgd3JpdGVSZXNwb25zZShzb2NrZXQsCi0g
ICAgICAgICAgICAgICAgQCJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgXTsKKyAg
ICAgICAgICAgIE5TU3RyaW5nICpzZWNvbmRSZXNwb25zZSA9IEAiSFRUUC8xLjEgMjAwIE9LXHJc
biIKICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDZcclxuIgogICAgICAgICAgICAg
ICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1mcm9tSGVhZGVy
LnR4dDtcclxuXHJcbiIKLSAgICAgICAgICAgICAgICAiSGVsbG8hIgotICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgICAgICAiSGVsbG8hIjsKKworICAgICAgICAgICAgVENQU2VydmVyOjpyZWFk
KHNvY2tldCk7CisgICAgICAgICAgICBUQ1BTZXJ2ZXI6OndyaXRlKHNvY2tldCwgZmlyc3RSZXNw
b25zZS5VVEY4U3RyaW5nLCBmaXJzdFJlc3BvbnNlLmxlbmd0aCk7CisgICAgICAgICAgICBUQ1BT
ZXJ2ZXI6OnJlYWQoc29ja2V0KTsKKyAgICAgICAgICAgIFRDUFNlcnZlcjo6d3JpdGUoc29ja2V0
LCBzZWNvbmRSZXNwb25zZS5VVEY4U3RyaW5nLCBzZWNvbmRSZXNwb25zZS5sZW5ndGgpOwogICAg
ICAgICB9KTsKICAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW05hdmlnYXRpb25SZXNw
b25zZVRlc3REZWxlZ2F0ZSBuZXddKTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYnNpdGVEYXRhc3RvcmUubW0JKHJldmlzaW9uIDI0
NTI0NikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJzaXRl
RGF0YXN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsMzYgKzExMCw5IEBAIFRFU1QoV0tX
ZWJzaXRlRGF0YVN0b3JlLCBSZW1vdmVFcGhlbWVyYWwKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOwogfQogCi1zdGF0aWMgdm9pZCByZXNwb25kV2l0aENoYWxsZW5nZVRoZW5P
SyhpbnQgc29ja2V0KQotewotICAgIGNoYXIgcmVhZEJ1ZmZlclsxMDAwXTsKLSAgICBhdXRvIGJ5
dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQsIHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7
Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVhZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nh
c3Q8c2l6ZV90PihieXRlc1JlYWQpIDwgc2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAKLSAgICBj
b25zdCBjaGFyKiBjaGFsbGVuZ2VIZWFkZXIgPQotICAgICJIVFRQLzEuMSA0MDEgVW5hdXRob3Jp
emVkXHJcbiIKLSAgICAiRGF0ZTogU2F0LCAyMyBNYXIgMjAxOSAwNjoyOTowMSBHTVRcclxuIgot
ICAgICJDb250ZW50LUxlbmd0aDogMFxyXG4iCi0gICAgIldXVy1BdXRoZW50aWNhdGU6IEJhc2lj
IHJlYWxtPVwidGVzdHJlYWxtXCJcclxuXHJcbiI7Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSA6
OndyaXRlKHNvY2tldCwgY2hhbGxlbmdlSGVhZGVyLCBzdHJsZW4oY2hhbGxlbmdlSGVhZGVyKSk7
Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNXcml0dGVuKSwgc3RybGVu
KGNoYWxsZW5nZUhlYWRlcikpOwotICAgIAotICAgIGJ5dGVzUmVhZCA9IDo6cmVhZChzb2NrZXQs
IHJlYWRCdWZmZXIsIHNpemVvZihyZWFkQnVmZmVyKSk7Ci0gICAgRVhQRUNUX0dUKGJ5dGVzUmVh
ZCwgMCk7Ci0gICAgRVhQRUNUX1RSVUUoc3RhdGljX2Nhc3Q8c2l6ZV90PihieXRlc1JlYWQpIDwg
c2l6ZW9mKHJlYWRCdWZmZXIpKTsKLSAgICAKLSAgICBjb25zdCBjaGFyKiByZXNwb25zZUhlYWRl
ciA9Ci0gICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgIkNvbnRlbnQtTGVuZ3RoOiAxM1xy
XG5cclxuIgotICAgICJIZWxsbywgV29ybGQhIjsKLSAgICBieXRlc1dyaXR0ZW4gPSA6OndyaXRl
KHNvY2tldCwgcmVzcG9uc2VIZWFkZXIsIHN0cmxlbihyZXNwb25zZUhlYWRlcikpOwotICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzV3JpdHRlbiksIHN0cmxlbihyZXNwb25z
ZUhlYWRlcikpOwotfQotICAgIAogVEVTVChXS1dlYnNpdGVEYXRhU3RvcmUsIEZldGNoTm9uUGVy
c2lzdGVudENyZWRlbnRpYWxzKQogewotICAgIFRDUFNlcnZlciBzZXJ2ZXIocmVzcG9uZFdpdGhD
aGFsbGVuZ2VUaGVuT0spOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpyZXNwb25k
V2l0aENoYWxsZW5nZVRoZW5PSyk7CiAgICAgCiAgICAgdXNlUGVyc2lzdGVudENyZWRlbnRpYWxT
dG9yYWdlID0gZmFsc2U7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBuZXddKTsKQEAgLTE2NCw3ICsxMzcsNyBAQCBURVNUKFdLV2Vic2l0
ZURhdGFTdG9yZSwgRmV0Y2hOb25QZXJzaXN0CiAKIFRFU1QoV0tXZWJzaXRlRGF0YVN0b3JlLCBG
ZXRjaFBlcnNpc3RlbnRDcmVkZW50aWFscykKIHsKLSAgICBUQ1BTZXJ2ZXIgc2VydmVyKHJlc3Bv
bmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKKyAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6
cmVzcG9uZFdpdGhDaGFsbGVuZ2VUaGVuT0spOwogICAgIAogICAgIHVzZVBlcnNpc3RlbnRDcmVk
ZW50aWFsU3RvcmFnZSA9IHRydWU7CiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vi
c2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTIwMiw3ICsxNzUsNyBAQCBURVNU
KFdLV2Vic2l0ZURhdGFTdG9yZSwgRmV0Y2hQZXJzaXN0ZW50CiAKIFRFU1QoV0tXZWJzaXRlRGF0
YVN0b3JlLCBSZW1vdmVQZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiB7Ci0gICAgVENQU2VydmVyIHNl
cnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgVENQU2VydmVyIHNlcnZlcihU
Q1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKIAogICAgIHVzZVBlcnNpc3Rl
bnRDcmVkZW50aWFsU3RvcmFnZSA9IHRydWU7CiAgICAgYXV0byB3ZWJzaXRlRGF0YVN0b3JlID0g
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTI1Myw3ICsyMjYsNyBA
QCBURVNUKFdLV2Vic2l0ZURhdGFTdG9yZSwgUmVtb3ZlUGVyc2lzdGVuCiAKIFRFU1QoV0tXZWJz
aXRlRGF0YVN0b3JlLCBSZW1vdmVOb25QZXJzaXN0ZW50Q3JlZGVudGlhbHMpCiB7Ci0gICAgVENQ
U2VydmVyIHNlcnZlcihyZXNwb25kV2l0aENoYWxsZW5nZVRoZW5PSyk7CisgICAgVENQU2VydmVy
IHNlcnZlcihUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoQ2hhbGxlbmdlVGhlbk9LKTsKIAogICAgIHVz
ZVBlcnNpc3RlbnRDcmVkZW50aWFsU3RvcmFnZSA9IGZhbHNlOwogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>