<?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>213889</bug_id>
          
          <creation_ts>2020-07-02 10:35:48 -0700</creation_ts>
          <short_desc>Custom URL schemes should be treated as app-bound</short_desc>
          <delta_ts>2020-07-02 23:07:03 -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>WebKit Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>niklasmerz</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1668283</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-02 10:35:48 -0700</bug_when>
    <thetext>We should treat loads using custom URL schemes as app-bound</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668284</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-02 10:36:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/64804671&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668293</commentid>
    <comment_count>2</comment_count>
      <attachid>403378</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-02 10:58:20 -0700</bug_when>
    <thetext>Created attachment 403378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668301</commentid>
    <comment_count>3</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-02 11:37:03 -0700</bug_when>
    <thetext>If possible, it would be nice to test that this&apos;ll work with the ITP relaxation for app-bound domains too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668353</commentid>
    <comment_count>4</comment_count>
      <attachid>403378</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-02 13:31:00 -0700</bug_when>
    <thetext>Comment on attachment 403378
Patch

Cancelling review while investigating failing API tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668362</commentid>
    <comment_count>5</comment_count>
      <attachid>403395</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-02 14:22:06 -0700</bug_when>
    <thetext>Created attachment 403395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668363</commentid>
    <comment_count>6</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-02 14:23:07 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #3)
&gt; If possible, it would be nice to test that this&apos;ll work with the ITP
&gt; relaxation for app-bound domains too.

Do you have a specific example in mind where you think it might not work with ITP relaxation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668384</commentid>
    <comment_count>7</comment_count>
      <attachid>403395</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-07-02 15:17:36 -0700</bug_when>
    <thetext>Comment on attachment 403395
Patch

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

&gt; Source/WebKit/ChangeLog:14
&gt; +        count of 10 app-bound domains.

I assume they can be interleaved with the domains, right? No restriction on ordering?

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:442
&gt; +                if (length &gt; 0 &amp;&amp; [data characterAtIndex:length - 1] == &apos;:&apos;) {

You might be able to just do:

if ([data endsWithString: @&quot;:&quot;]) {
    auto appBoundScheme = String([data subStringToIndex:[data length] - 1]);
    if (!appBoundScheme.isEmpty())
        appBoundSchemes().add(appBoundScheme);
}

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:445
&gt; +                        appBoundSchemes().add(appBoundScheme);

Do we want to continue and possibly add this to the set of appBoundDomains, too? Or should we &apos;continue&apos; here?

&gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:502
&gt; +        auto isAppBound = schemeIsAppBound || domains.contains(WebCore::RegistrableDomain(requestURL));

This might be a little more legible as a static function:

static NavigatingToAppBoundDomain schemeOrDomainIsAppBound(const URL&amp; requestURL, const &lt;&lt;mumble&gt;&gt;&amp; domains, const &lt;&lt;mumble&gt;&gt;&amp; schemes) {
    auto protocol = requestURL.protocol().toString();
    auto schemeIsAppBound = !protocol.isNull() &amp;&amp; schemes.contains(protocol);
    auto domainIsAppBound = domains.contains(WebCore::RegistrableDomain(requestURL));
    return schemeIsAppBound || domainIsAppBound ? NavigatingToAppBoundDomain::Yes : NavigatingToAppBoundDomain::No;
}

&gt; Tools/TestWebKitAPI/Info.plist:8
&gt; +		&lt;string&gt;:&lt;/string&gt;

Ha! Good test!

&gt; Tools/TestWebKitAPI/Info.plist:28
&gt; +		&lt;string&gt;should-not-be-included:&lt;/string&gt;

Should we have an empty &lt;string&gt;&lt;/string&gt; test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668385</commentid>
    <comment_count>8</comment_count>
      <attachid>403395</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-07-02 15:18:10 -0700</bug_when>
    <thetext>Comment on attachment 403395
Patch

I think this patch is good, but I have a couple of suggestions I hope you&apos;ll consider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668387</commentid>
    <comment_count>9</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-02 15:27:14 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #7)
&gt; Comment on attachment 403395 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403395&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:14
&gt; &gt; +        count of 10 app-bound domains.
&gt; 
&gt; I assume they can be interleaved with the domains, right? No restriction on
&gt; ordering?
&gt; 

Yes. No restrictions, its first-come, first-serve until all 10 spots are filled.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:442
&gt; &gt; +                if (length &gt; 0 &amp;&amp; [data characterAtIndex:length - 1] == &apos;:&apos;) {
&gt; 
&gt; You might be able to just do:
&gt; 
&gt; if ([data endsWithString: @&quot;:&quot;]) {
&gt;     auto appBoundScheme = String([data subStringToIndex:[data length] - 1]);
&gt;     if (!appBoundScheme.isEmpty())
&gt;         appBoundSchemes().add(appBoundScheme);
&gt; }

Good idea, using the endsWithString makes it more readable, I&apos;ll change this.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:445
&gt; &gt; +                        appBoundSchemes().add(appBoundScheme);
&gt; 
&gt; Do we want to continue and possibly add this to the set of appBoundDomains,
&gt; too? Or should we &apos;continue&apos; here?
&gt; 

Very good catch, we do not want to add this to the set of domains if a custom scheme also happens to be a domain.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:502
&gt; &gt; +        auto isAppBound = schemeIsAppBound || domains.contains(WebCore::RegistrableDomain(requestURL));
&gt; 
&gt; This might be a little more legible as a static function:
&gt; 
&gt; static NavigatingToAppBoundDomain schemeOrDomainIsAppBound(const URL&amp;
&gt; requestURL, const &lt;&lt;mumble&gt;&gt;&amp; domains, const &lt;&lt;mumble&gt;&gt;&amp; schemes) {
&gt;     auto protocol = requestURL.protocol().toString();
&gt;     auto schemeIsAppBound = !protocol.isNull() &amp;&amp; schemes.contains(protocol);
&gt;     auto domainIsAppBound =
&gt; domains.contains(WebCore::RegistrableDomain(requestURL));
&gt;     return schemeIsAppBound || domainIsAppBound ?
&gt; NavigatingToAppBoundDomain::Yes : NavigatingToAppBoundDomain::No;
&gt; }
&gt; 

Agreed, will change.

&gt; &gt; Tools/TestWebKitAPI/Info.plist:8
&gt; &gt; +		&lt;string&gt;:&lt;/string&gt;
&gt; 
&gt; Ha! Good test!
&gt; 

:-)

&gt; &gt; Tools/TestWebKitAPI/Info.plist:28
&gt; &gt; +		&lt;string&gt;should-not-be-included:&lt;/string&gt;
&gt; 
&gt; Should we have an empty &lt;string&gt;&lt;/string&gt; test?

This case is covered already in the Info.plist! (It is not shown in the diff).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668401</commentid>
    <comment_count>10</comment_count>
      <attachid>403412</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-02 15:49:40 -0700</bug_when>
    <thetext>Created attachment 403412
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668407</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-02 16:03:59 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #6)
&gt; (In reply to John Wilander from comment #3)
&gt; &gt; If possible, it would be nice to test that this&apos;ll work with the ITP
&gt; &gt; relaxation for app-bound domains too.
&gt; 
&gt; Do you have a specific example in mind where you think it might not work
&gt; with ITP relaxation?

I&apos;m thinking a test that checks that a third-party with a custom scheme gets access to its cookies if it and the first party are both in the app-bound set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668409</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-02 16:04:43 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #11)
&gt; (In reply to katherine_cheney from comment #6)
&gt; &gt; (In reply to John Wilander from comment #3)
&gt; &gt; &gt; If possible, it would be nice to test that this&apos;ll work with the ITP
&gt; &gt; &gt; relaxation for app-bound domains too.
&gt; &gt; 
&gt; &gt; Do you have a specific example in mind where you think it might not work
&gt; &gt; with ITP relaxation?
&gt; 
&gt; I&apos;m thinking a test that checks that a third-party with a custom scheme gets
&gt; access to its cookies if it and the first party are both in the app-bound
&gt; set.

ITP only looks at RegistrableDomain but there might be something in how we extract RegistrableDomains from URLs that makes this not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668412</commentid>
    <comment_count>13</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-07-02 16:14:01 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #12)
&gt; (In reply to John Wilander from comment #11)
&gt; &gt; (In reply to katherine_cheney from comment #6)
&gt; &gt; &gt; (In reply to John Wilander from comment #3)
&gt; &gt; &gt; &gt; If possible, it would be nice to test that this&apos;ll work with the ITP
&gt; &gt; &gt; &gt; relaxation for app-bound domains too.
&gt; &gt; &gt; 
&gt; &gt; &gt; Do you have a specific example in mind where you think it might not work
&gt; &gt; &gt; with ITP relaxation?
&gt; &gt; 
&gt; &gt; I&apos;m thinking a test that checks that a third-party with a custom scheme gets
&gt; &gt; access to its cookies if it and the first party are both in the app-bound
&gt; &gt; set.
&gt; 
&gt; ITP only looks at RegistrableDomain but there might be something in how we
&gt; extract RegistrableDomains from URLs that makes this not work.

I see, good point. This should still work fine because the app-bound domains HashSet does not change at all. But, it might still worth be writing a test case for in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668413</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-02 16:15:52 -0700</bug_when>
    <thetext>Committed r263874: &lt;https://trac.webkit.org/changeset/263874&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403412.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403378</attachid>
            <date>2020-07-02 10:58:20 -0700</date>
            <delta_ts>2020-07-02 14:22:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213889-20200702105819.patch</filename>
            <type>text/plain</type>
            <size>17080</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmMjQ5NjBjZGE3YjdmYWRl
MjdiMzcyNTRjMGJmN2MzZGM4YTE0MWYuLmI2YjdlZWJmYzE3Zjc3MzZmNmJjZmNkZTMyOWU2NWFm
Mzg1MTYyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDctMDIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3VzdG9tIFVSTCBz
Y2hlbWVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NDgwNDY3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGb3IgYXBwbGljYXRpb25zIHdoaWNoIG9wdC1pbiB0byBBcHAtQm91bmQgRG9tYWlu
cywgYWxsb3cKKyAgICAgICAgc3BlY2lmaWNhdGlvbiBvZiBhcHAtYm91bmQgY3VzdG9tIFVSTCBz
Y2hlbWVzLiBBbGwgY29udGVudCBsb2FkZWQKKyAgICAgICAgdXNpbmcgYW4gYXBwLWJvdW5kIHNj
aGVtZSB3aWxsIGhhdmUgYWNjZXNzIHRvIG90aGVyd2lzZSByZXN0cmljdGVkCisgICAgICAgIEFQ
SXMuIEEgY3VzdG9tIHNjaGVtZSBpcyBzcGVjaWZpZWQgYnkgYSBjb2xvbiBhdCB0aGUgZW5kIG9m
IGEgc3RyaW5nCisgICAgICAgIGluIHRoZSBXS0FwcEJvdW5kRG9tYWlucyBsaXN0LiBDdXN0b20g
c2NoZW1lcyBhcmUgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgIGNvdW50IG9mIDEwIGFwcC1ib3Vu
ZCBkb21haW5zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYXBwQm91bmRTY2hlbWVz
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oOgorICAgICAgICBTUEkgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjphcHBCb3VuZFNjaGVtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Ojppbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAgICAgICAgQ2hhbmdlIHZhcmlhYmxlIG5h
bWUgZnJvbSBhcHBCb3VuZERvbWFpbnMgdG8gYXBwQm91bmREYXRhIG5vdyB0aGF0CisgICAgICAg
IG1vcmUgdGhhbiBkb21haW5zIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIEluZm8ucGxpc3QuIAor
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlu
cyBjb25zdCk6CisgICAgICAgIFJldHVybiBib3RoIGRvbWFpbnMgYW5kIHNjaGVtZXMgdG8gYXZv
aWQgY29kZSBkdXBsaWNhdGlvbiwgYXQgdGhlIGV4cGVuc2UKKyAgICAgICAgb2Ygb2NjYXNpb25h
bGx5IHJldHVybmluZyBhbiB1bnVzZWQgcGFyYW1ldGVyIGlmIG9ubHkgZG9tYWlucyBvciBvbmx5
IAorICAgICAgICBzY2hlbWVzIGFyZSBuZWVkZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6YmVnaW5BcHBCb3VuZERvbWFpbkNoZWNrKToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21haW5zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmRTY2hlbWVzIGNvbnN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDIwLTA3
LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lv
bihyMjU5MjQyKSBXZWJLaXQgbm8gbG9uZ2VyIGRvZXMgY2xpZW50IG5hdmlnYXRpb25zIGF0IGZv
cmVncm91bmQgcHJpb3JpdHkgZm9yIGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGJkMGJm
Zjk4OTM2YjRhYmZmN2M5YTM2NjU5NzQ1Y2MwZDc2NDVkMjIuLjJiNWJlYTVhMWEyMjgwZGM4MTA4
NjNmNDljYzk4ZmEzZGE0NjllMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNjQyLDQgKzY0MiwxNSBA
QCAtICh2b2lkKV9hcHBCb3VuZERvbWFpbnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KikpY29tcGxldGlvbkhhbmRsZXIKICAgICB9KTsKIH0KIAorLSAodm9pZClfYXBwQm91bmRTY2hl
bWVzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldEFwcEJvdW5kU2NoZW1lcyhbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiBzY2hlbWVzKSBt
dXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaVNjaGVtZXM7
CisgICAgICAgIGFwaVNjaGVtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzY2hlbWVzLnNpemUo
KSk7CisgICAgICAgIGZvciAoYXV0byYgc2NoZW1lIDogc2NoZW1lcykKKyAgICAgICAgICAgIGFw
aVNjaGVtZXMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVhdGUoc2NoZW1lKSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1v
dmUoYXBpU2NoZW1lcykpKSk7CisgICAgfSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oCmluZGV4IDFlZGQ3MDMxYTg1ZjM0NTBlMzRhYjliMzc0MzU5YTAwYTVkMGY4NGYuLjBk
ZWZhODQ2MmI0ZjNjYzZkOTExYmI4OGNmMTFhZjczYmU1ZGQyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaApAQCAtNzksNiArNzksNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdl
ciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfc3RhdGlzdGlj
c0RhdGFiYXNlSGFzQWxsVGFibGVzOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAo
dm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXikodm9pZCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7
CiAtICh2b2lkKV9hcHBCb3VuZERvbWFpbnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2FwcEJvdW5kU2NoZW1lczoodm9pZCAoXikoTlNB
cnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAtICh2b2lkKV9yZW5hbWVPcmln
aW46KE5TVVJMICopb2xkTmFtZSB0bzooTlNVUkwgKiluZXdOYW1lIGZvckRhdGFPZlR5cGVzOihO
U1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQppbmRleCBhMDAxZjJlNGZmZTM4MjY4Mjk5N2E3ZmQ1YzBlOTE3NDMxYTQwODQyLi4yYWE5
MmZjOTI5MzA2OTgxNWRkODA2MWI4MjAyNjg1YzI4NzRhODhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCkBAIC00MDUsNiArNDA1LDEzIEBAIHN0YXRpYyBIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgYXBwQm91bmREb21haW5zKCkKICAgICByZXR1cm4g
YXBwQm91bmREb21haW5zOwogfQogCitzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhcHBCb3VuZFNj
aGVtZXMoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gYXBwQm91bmRTY2hlbWVzOworICAgIHJldHVy
biBhcHBCb3VuZFNjaGVtZXM7Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6
ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluaXRpYWxpemF0
aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC00MTgsMTggKzQyNSwy
NyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9y
Y2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVpbgogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZWRB
cHBCb3VuZERvbWFpbnMgJiYgZm9yY2VSZWluaXRpYWxpemF0aW9uICE9IEZvcmNlUmVpbml0aWFs
aXphdGlvbjo6WWVzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgTlNB
cnJheTxOU1N0cmluZyAqPiAqZG9tYWlucyA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gb2JqZWN0
Rm9ySW5mb0RpY3Rpb25hcnlLZXk6QCJXS0FwcEJvdW5kRG9tYWlucyJdOwotICAgICAgICBrZXlF
eGlzdHMgPSBkb21haW5zID8gdHJ1ZSA6IGZhbHNlOworICAgICAgICBOU0FycmF5PE5TU3RyaW5n
ICo+ICphcHBCb3VuZERhdGEgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIG9iamVjdEZvckluZm9E
aWN0aW9uYXJ5S2V5OkAiV0tBcHBCb3VuZERvbWFpbnMiXTsKKyAgICAgICAga2V5RXhpc3RzID0g
YXBwQm91bmREYXRhID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtmb3JjZVJlaW5pdGlhbGl6YXRpb24sIGRvbWFpbnMgPSByZXRhaW5Q
dHIoZG9tYWlucyldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtmb3JjZVJl
aW5pdGlhbGl6YXRpb24sIGFwcEJvdW5kRGF0YSA9IHJldGFpblB0cihhcHBCb3VuZERhdGEpXSB7
CiAgICAgICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMgJiYgZm9yY2VS
ZWluaXRpYWxpemF0aW9uICE9IEZvcmNlUmVpbml0aWFsaXphdGlvbjo6WWVzKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgaWYgKGZvcmNlUmVpbml0aWFsaXphdGlvbiA9
PSBGb3JjZVJlaW5pdGlhbGl6YXRpb246OlllcykKICAgICAgICAgICAgICAgICBhcHBCb3VuZERv
bWFpbnMoKS5jbGVhcigpOwogCi0gICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpkb21haW4gaW4g
ZG9tYWlucy5nZXQoKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBVUkwoKSwgZG9tYWlu
IH07CisgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpkYXRhIGluIGFwcEJvdW5kRGF0YS5nZXQo
KSkgeworICAgICAgICAgICAgICAgIGlmIChhcHBCb3VuZERvbWFpbnMoKS5zaXplKCkgKyBhcHBC
b3VuZFNjaGVtZXMoKS5zaXplKCkgPj0gbWF4QXBwQm91bmREb21haW5Db3VudCkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXV0byBsZW5ndGggPSBbZGF0YSBs
ZW5ndGhdOworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiAwICYmIFtkYXRhIGNoYXJhY3Rl
ckF0SW5kZXg6bGVuZ3RoIC0gMV0gPT0gJzonKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
YXBwQm91bmRTY2hlbWUgPSBTdHJpbmcoW2RhdGEgc3Vic3RyaW5nVG9JbmRleDpsZW5ndGggLSAx
XSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYXBwQm91bmRTY2hlbWUuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwQm91bmRTY2hlbWVzKCkuYWRkKGFwcEJvdW5kU2No
ZW1lKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBVUkwgdXJsIHsgVVJM
KCksIGRhdGEgfTsKICAgICAgICAgICAgICAgICBpZiAodXJsLnByb3RvY29sKCkuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgICAgICB1cmwuc2V0UHJvdG9jb2woImh0dHBzIik7CiAgICAgICAg
ICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQpAQCAtNDM4LDggKzQ1NCw2IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6
YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICAgICAgaWYgKGFwcEJvdW5kRG9tYWluLmlzRW1w
dHkoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgYXBw
Qm91bmREb21haW5zKCkuYWRkKGFwcEJvdW5kRG9tYWluKTsKLSAgICAgICAgICAgICAgICBpZiAo
YXBwQm91bmREb21haW5zKCkuc2l6ZSgpID49IG1heEFwcEJvdW5kRG9tYWluQ291bnQpCi0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaGFzSW5p
dGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMgPSB0cnVlOwogICAgICAgICAgICAgaWYgKGlzQXBwQm91
bmRJVFBSZWxheGF0aW9uRW5hYmxlZCkKQEAgLTQ0OCwxMyArNDYyLDEzIEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRp
b24gZm9yY2VSZWluCiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJl
QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3Zv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mLCBjb25z
dCBIYXNoU2V0PFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBp
ZiAoaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMpIHsKICAgICAgICAgaWYgKG1faXNJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdE1vZGVFbmFibGVkKSB7CiAgICAgICAgICAgICBXRUJTSVRFX0RB
VEFfU1RPUkVfQURESVRJT05TOwogICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGFwcEJvdW5kRG9tYWlucygpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmRE
b21haW5zKCksIGFwcEJvdW5kU2NoZW1lcygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDY2LDcgKzQ4MCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmRE
b21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNlCiAgICAgICAgICAgICBp
ZiAobV9pc0luQXBwQnJvd3NlclByaXZhY3lUZXN0TW9kZUVuYWJsZWQpIHsKICAgICAgICAgICAg
ICAgICBXRUJTSVRFX0RBVEFfU1RPUkVfQURESVRJT05TOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmREb21haW5zKCkpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmREb21haW5zKCksIGFwcEJvdW5kU2NoZW1lcygpKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC00NzUsNyArNDg5LDcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpiZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2soY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBXZWJGcmFtZVAKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZW5z
dXJlQXBwQm91bmREb21haW5zKFsmcmVxdWVzdFVSTCwgbGlzdGVuZXIgPSBtYWtlUmVmKGxpc3Rl
bmVyKV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgIGVuc3VyZUFwcEJvdW5kRG9tYWlu
cyhbJnJlcXVlc3RVUkwsIGxpc3RlbmVyID0gbWFrZVJlZihsaXN0ZW5lcildIChhdXRvJiBkb21h
aW5zLCBhdXRvJiBzY2hlbWVzKSBtdXRhYmxlIHsKICAgICAgICAgLy8gTXVzdCBjaGVjayBmb3Ig
Ym90aCBhbiBlbXB0eSBhcHAgYm91bmQgZG9tYWlucyBsaXN0IGFuZCBhbiBlbXB0eSBrZXkgYmVm
b3JlIHJldHVybmluZyBudWxsb3B0CiAgICAgICAgIC8vIGJlY2F1c2UgdGVzdCBjYXNlcyBtYXkg
aGF2ZSBhcHAgYm91bmQgZG9tYWlucyBidXQgbm8ga2V5LgogICAgICAgICBib29sIGhhc0FwcEJv
dW5kRG9tYWlucyA9IGtleUV4aXN0cyB8fCAhZG9tYWlucy5pc0VtcHR5KCk7CkBAIC00ODMsNyAr
NDk3LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpiZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2so
Y29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJGcmFtZVAKICAgICAgICAgICAgIGxpc3RlbmVyLT5k
aWRSZWNlaXZlQXBwQm91bmREb21haW5SZXN1bHQoV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBsaXN0ZW5lci0+ZGlkUmVjZWl2ZUFwcEJvdW5k
RG9tYWluUmVzdWx0KGRvbWFpbnMuY29udGFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4o
cmVxdWVzdFVSTCkpID8gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcyA6IE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOjpObyk7CisgICAgICAgIGF1dG8gaXNBcHBCb3VuZCA9IGFwcEJv
dW5kU2NoZW1lcygpLmNvbnRhaW5zKHJlcXVlc3RVUkwucHJvdG9jb2woKS50b1N0cmluZygpKSB8
fCBkb21haW5zLmNvbnRhaW5zKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3RVUkwp
KTsKKyAgICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVBcHBCb3VuZERvbWFpblJlc3VsdChpc0Fw
cEJvdW5kID8gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcyA6IE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOjpObyk7CiAgICAgfSk7CiB9CiAKQEAgLTQ5MSwxMSArNTA2LDIwIEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSGFzaFNldDxXCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgIGVuc3VyZUFwcEJvdW5kRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgIGVuc3Vy
ZUFwcEJvdW5kRG9tYWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGF1dG8mIGRvbWFpbnMsIGF1dG8mIHNjaGVtZXMpIG11dGFibGUgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihkb21haW5zKTsKICAgICB9KTsKIH0KIAordm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpnZXRBcHBCb3VuZFNjaGVtZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBIYXNoU2V0PFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgZW5zdXJlQXBwQm91bmREb21haW5zKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZG9t
YWlucywgYXV0byYgc2NoZW1lcykgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHNjaGVtZXMpOworICAgIH0pOworfQorCiBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPj4gV2Vic2l0ZURhdGFTdG9yZTo6YXBwQm91bmREb21haW5zSWZJbml0aWFs
aXplZCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRl
eCBlNDIyYWRjZmYwOTkyZTJiNTI4YWZhNDlkNmVmMzFhYmI3YzQ3OTFiLi4wZjU1YjhiNWZhYzkz
MjE3NTFhMjYzMTg0MWIwMWRjZDBmMjVmODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMDEsNyArMzAx
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBiZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2soY29uc3Qg
VVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAgICAgdm9pZCBnZXRBcHBCb3Vu
ZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiYpPiYmKSBjb25zdDsKLSAgICB2b2lkIGVuc3VyZUFwcEJvdW5kRG9t
YWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+Jik+JiYpIGNvbnN0OworICAgIHZvaWQgZ2V0QXBwQm91bmRTY2hlbWVzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxTdHJpbmc+Jik+JiYpIGNvbnN0Owor
ICAgIHZvaWQgZW5zdXJlQXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mLCBjb25zdCBIYXNoU2V0PFN0
cmluZz4mKT4mJikgY29uc3Q7CiAgICAgdm9pZCByZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMo
KTsKICAgICBzdGF0aWMgdm9pZCBzZXRBcHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCB1cGRhdGVCdW5kbGVJZGVudGlmaWVySW5OZXR3b3JrUHJvY2Vzcyhjb25z
dCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDgxMDAzNTk1OWZiYTZhMTQxMTU0
MTNiOGQ3NjNiNDE3YjM5NmRjNjEuLmIxOGZkZmQ0ZjQxMzg3OGY3ODhkYjQ1MjA4MmUxZjFkZGMw
ZGIyMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAyMC0wNy0wMiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDdXN0b20gVVJMIHNjaGVtZXMgc2hvdWxkIGJlIHRy
ZWF0ZWQgYXMgYXBwLWJvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTM4ODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0ODA0NjcxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGN1c3Rv
bSBzY2hlbWVzIHRvIFRlc3RXZWJLaXRBUEkncyBJbmZvLnBsaXN0IGZvciB0ZXN0aW5nCisgICAg
ICAgIGR1cGxpY2F0ZSB2YWx1ZXMgYW5kIHRoZSBtYXggb2YgMTAgZG9tYWlucy9zY2hlbWVzLiBB
ZGRlZAorICAgICAgICB0d28gQVBJIHRlc3RzIHRvIGNoZWNrIHRoYXQgc2NoZW1lcyBhcmUgcHJv
cGVybHkgcmVhZCBmcm9tIHRoZQorICAgICAgICBJbmZvLnBsaXN0IGFuZCB0aGF0IGNvbnRlbnQg
bG9hZGVkIHVzaW5nIGEgc3BlY2lmaWVkIGFwcC1ib3VuZCBzY2hlbWUKKyAgICAgICAgaGFzIHJl
c3RyaWN0ZWQgQVBJIHVzZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvSW5mby5wbGlzdDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW06CisgICAgICAgIChURVNUKToKKwogMjAyMC0wNy0wMSAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIFdlYktpdCBidWlsZCBh
ZnRlciA8cmRhcjovL3Byb2JsZW0vNjQyODgxOTE+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0luZm8ucGxpc3QgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luZm8ucGxpc3QKaW5kZXgg
MGFjOGMxNjk1ODI2YWRjZjA3ZTEwZjAxMjYxZjFiMGVhOTZkMzc2Ni4uZDMzNjUzZmQxMDBiODgz
ZGNhMjViZDRlYzZmMWRiODFmODcxOGM1YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9JbmZvLnBsaXN0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5mby5wbGlzdApAQCAtNCw2
ICs0LDkgQEAKIDxkaWN0PgogCTxrZXk+V0tBcHBCb3VuZERvbWFpbnM8L2tleT4KIAk8YXJyYXk+
CisJCTxzdHJpbmc+dGVzdDo8L3N0cmluZz4KKwkJPHN0cmluZz46PC9zdHJpbmc+CisJCTxzdHJp
bmc+dGVzdDo8L3N0cmluZz4KIAkJPHN0cmluZz50ZXN0RG9tYWluMTwvc3RyaW5nPgogCQk8c3Ry
aW5nPmFwcGxlLmNvbTwvc3RyaW5nPgogCQk8c3RyaW5nPnN1Yi5kb21haW4ud2Via2l0Lm9yZy9y
b2FkL3RvL25vd2hlcmUvPC9zdHJpbmc+CkBAIC0yMSw2ICsyNCw4IEBACiAJCTxzdHJpbmc+aHR0
cDovL3d3dy5leGFtcGxlLmNvbS88L3N0cmluZz4KIAkJPHN0cmluZz5odHRwOi8vYmFyLmNvbS88
L3N0cmluZz4KIAkJPHN0cmluZz5odHRwOi8vZm9vLmNvbS88L3N0cmluZz4KKwkJPHN0cmluZz5h
cHAtYm91bmQtY3VzdG9tLXNjaGVtZTo8L3N0cmluZz4KKwkJPHN0cmluZz5zaG91bGQtbm90LWJl
LWluY2x1ZGVkOjwvc3RyaW5nPgogCTwvYXJyYXk+CiAJPGtleT5DRkJ1bmRsZU5hbWU8L2tleT4K
IAk8c3RyaW5nPiR7UFJPRFVDVF9OQU1FfTwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CmluZGV4IDVjMGMxZWJhZDRhODQyYmNkMjA0YjM4NzExMGIwNTdkMDY5NjRiNzUuLmU3NTAwOWI1
ZWE0OGI1NGU4YTY2MTMzZDI1OGM4NjMwZmU1NDljZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgog
I2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtMjg0LDYgKzI4NSwyNiBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWlucykKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgQXBwQm91bmRTY2hlbWVzKQoreworICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCk7CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gX2FwcEJvdW5kU2NoZW1lczpeKE5TQXJyYXk8TlNTdHJp
bmcgKj4gKnNjaGVtZXMpIHsKKyAgICAgICAgTlNBcnJheSAqc2NoZW1lc1RvQ29tcGFyZSA9IEBb
QCJhcHAtYm91bmQtY3VzdG9tLXNjaGVtZSIsIEAidGVzdCJdOworCisgICAgICAgIE5TQXJyYXkg
KnNvcnRlZFNjaGVtZXMgPSBbc2NoZW1lcyBzb3J0ZWRBcnJheVVzaW5nU2VsZWN0b3I6QHNlbGVj
dG9yKGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6KV07CisKKyAgICAgICAgaW50IGxlbmd0aCA9IFtz
b3J0ZWRTY2hlbWVzIGNvdW50XTsKKyAgICAgICAgRVhQRUNUX0VRKGxlbmd0aCwgMik7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoW3NvcnRlZFNjaGVtZXMgb2JqZWN0QXRJbmRleDppXSwgW3NjaGVtZXNUb0NvbXBh
cmUgb2JqZWN0QXRJbmRleDppXSk7CisKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZh
Y3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgTG9jYWxGaWxlc0FyZUFwcEJvdW5kKQogewogICAgIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CkBAIC0xMjcyLDYgKzEyOTMsNTEgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBMb2FkRnJvbUhUTUxTdHJpbmdzRmFpbHNJZk5vdEFwcEJvdW5k
KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAorVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZEN1c3RvbVNjaGVtZSkKK3sKKyAgICBpbml0aWFsaXpl
SW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgIGlzRG9uZSA9IGZhbHNlOwor
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVz
dFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJd
OworICAgIFtjb25maWd1cmF0aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFp
bnM6WUVTXTsKKworICAgIFtzY2hlbWVIYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRs
ZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1
dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOm1haW5CeXRlcyBsZW5ndGg6c3RybGVuKG1haW5CeXRlcyldXTsK
KyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgCisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly9ob3N0L21haW4uaHRtbCJdXTsKKworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JE
aWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IF9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOl4oQk9PTCBpc0FwcEJvdW5kKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGlzQXBwQm91bmQpOworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2Vy
UHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICAvLyBNYWtl
IHN1cmUgYXBwLWJvdW5kIGJlaGF2aW9yIHdvcmtzIGZvciB0aGlzIHdlYnZpZXcuCisgICAgaXNE
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAibG9jYXRpb24u
aHJlZjsiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pOworICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVF
KFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAidGVzdDovL2hvc3QvbWFpbi5odG1sIl0pOworCisg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403395</attachid>
            <date>2020-07-02 14:22:06 -0700</date>
            <delta_ts>2020-07-02 15:49:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213889-20200702142205.patch</filename>
            <type>text/plain</type>
            <size>17170</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmMjQ5NjBjZGE3YjdmYWRl
MjdiMzcyNTRjMGJmN2MzZGM4YTE0MWYuLmI2YjdlZWJmYzE3Zjc3MzZmNmJjZmNkZTMyOWU2NWFm
Mzg1MTYyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDctMDIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3VzdG9tIFVSTCBz
Y2hlbWVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NDgwNDY3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGb3IgYXBwbGljYXRpb25zIHdoaWNoIG9wdC1pbiB0byBBcHAtQm91bmQgRG9tYWlu
cywgYWxsb3cKKyAgICAgICAgc3BlY2lmaWNhdGlvbiBvZiBhcHAtYm91bmQgY3VzdG9tIFVSTCBz
Y2hlbWVzLiBBbGwgY29udGVudCBsb2FkZWQKKyAgICAgICAgdXNpbmcgYW4gYXBwLWJvdW5kIHNj
aGVtZSB3aWxsIGhhdmUgYWNjZXNzIHRvIG90aGVyd2lzZSByZXN0cmljdGVkCisgICAgICAgIEFQ
SXMuIEEgY3VzdG9tIHNjaGVtZSBpcyBzcGVjaWZpZWQgYnkgYSBjb2xvbiBhdCB0aGUgZW5kIG9m
IGEgc3RyaW5nCisgICAgICAgIGluIHRoZSBXS0FwcEJvdW5kRG9tYWlucyBsaXN0LiBDdXN0b20g
c2NoZW1lcyBhcmUgaW5jbHVkZWQgaW4gdGhlCisgICAgICAgIGNvdW50IG9mIDEwIGFwcC1ib3Vu
ZCBkb21haW5zLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfYXBwQm91bmRTY2hlbWVz
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oOgorICAgICAgICBTUEkgZm9yIHRlc3RpbmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjphcHBCb3VuZFNjaGVtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Ojppbml0aWFsaXplQXBwQm91bmREb21haW5zKToKKyAgICAgICAgQ2hhbmdlIHZhcmlhYmxlIG5h
bWUgZnJvbSBhcHBCb3VuZERvbWFpbnMgdG8gYXBwQm91bmREYXRhIG5vdyB0aGF0CisgICAgICAg
IG1vcmUgdGhhbiBkb21haW5zIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIEluZm8ucGxpc3QuIAor
CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlu
cyBjb25zdCk6CisgICAgICAgIFJldHVybiBib3RoIGRvbWFpbnMgYW5kIHNjaGVtZXMgdG8gYXZv
aWQgY29kZSBkdXBsaWNhdGlvbiwgYXQgdGhlIGV4cGVuc2UKKyAgICAgICAgb2Ygb2NjYXNpb25h
bGx5IHJldHVybmluZyBhbiB1bnVzZWQgcGFyYW1ldGVyIGlmIG9ubHkgZG9tYWlucyBvciBvbmx5
IAorICAgICAgICBzY2hlbWVzIGFyZSBuZWVkZWQuCisKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0
ZURhdGFTdG9yZTo6YmVnaW5BcHBCb3VuZERvbWFpbkNoZWNrKToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmREb21haW5zIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QXBwQm91bmRTY2hlbWVzIGNvbnN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDIwLTA3
LTAxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lv
bihyMjU5MjQyKSBXZWJLaXQgbm8gbG9uZ2VyIGRvZXMgY2xpZW50IG5hdmlnYXRpb25zIGF0IGZv
cmVncm91bmQgcHJpb3JpdHkgZm9yIGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IGJkMGJm
Zjk4OTM2YjRhYmZmN2M5YTM2NjU5NzQ1Y2MwZDc2NDVkMjIuLjJiNWJlYTVhMWEyMjgwZGM4MTA4
NjNmNDljYzk4ZmEzZGE0NjllMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNjQyLDQgKzY0MiwxNSBA
QCAtICh2b2lkKV9hcHBCb3VuZERvbWFpbnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KikpY29tcGxldGlvbkhhbmRsZXIKICAgICB9KTsKIH0KIAorLSAodm9pZClfYXBwQm91bmRTY2hl
bWVzOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPmdldEFwcEJvdW5kU2NoZW1lcyhbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiBzY2hlbWVzKSBt
dXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+IGFwaVNjaGVtZXM7
CisgICAgICAgIGFwaVNjaGVtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzY2hlbWVzLnNpemUo
KSk7CisgICAgICAgIGZvciAoYXV0byYgc2NoZW1lIDogc2NoZW1lcykKKyAgICAgICAgICAgIGFw
aVNjaGVtZXMudW5jaGVja2VkQXBwZW5kKEFQSTo6U3RyaW5nOjpjcmVhdGUoc2NoZW1lKSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1v
dmUoYXBpU2NoZW1lcykpKSk7CisgICAgfSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oCmluZGV4IDFlZGQ3MDMxYTg1ZjM0NTBlMzRhYjliMzc0MzU5YTAwYTVkMGY4NGYuLjBk
ZWZhODQ2MmI0ZjNjYzZkOTExYmI4OGNmMTFhZjczYmU1ZGQyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaApAQCAtNzksNiArNzksNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdl
ciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfc3RhdGlzdGlj
c0RhdGFiYXNlSGFzQWxsVGFibGVzOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAo
dm9pZClfcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkczoodm9pZCAoXikodm9pZCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7
CiAtICh2b2lkKV9hcHBCb3VuZERvbWFpbnM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4g
KikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX2FwcEJvdW5kU2NoZW1lczoodm9pZCAoXikoTlNB
cnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAtICh2b2lkKV9yZW5hbWVPcmln
aW46KE5TVVJMICopb2xkTmFtZSB0bzooTlNVUkwgKiluZXdOYW1lIGZvckRhdGFPZlR5cGVzOihO
U1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQppbmRleCBhMDAxZjJlNGZmZTM4MjY4Mjk5N2E3ZmQ1YzBlOTE3NDMxYTQwODQyLi4xNGZi
ZWI4NzYzZWM5MjgxMjczNzFjNGJmOThmNjQ3N2Y4NmJlOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCkBAIC00MDUsNiArNDA1LDEzIEBAIHN0YXRpYyBIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgYXBwQm91bmREb21haW5zKCkKICAgICByZXR1cm4g
YXBwQm91bmREb21haW5zOwogfQogCitzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBhcHBCb3VuZFNj
aGVtZXMoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gYXBwQm91bmRTY2hlbWVzOworICAgIHJldHVy
biBhcHBCb3VuZFNjaGVtZXM7Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6
ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluaXRpYWxpemF0
aW9uKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC00MTgsMTggKzQyNSwy
NyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9y
Y2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVpbgogICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZWRB
cHBCb3VuZERvbWFpbnMgJiYgZm9yY2VSZWluaXRpYWxpemF0aW9uICE9IEZvcmNlUmVpbml0aWFs
aXphdGlvbjo6WWVzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgTlNB
cnJheTxOU1N0cmluZyAqPiAqZG9tYWlucyA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gb2JqZWN0
Rm9ySW5mb0RpY3Rpb25hcnlLZXk6QCJXS0FwcEJvdW5kRG9tYWlucyJdOwotICAgICAgICBrZXlF
eGlzdHMgPSBkb21haW5zID8gdHJ1ZSA6IGZhbHNlOworICAgICAgICBOU0FycmF5PE5TU3RyaW5n
ICo+ICphcHBCb3VuZERhdGEgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIG9iamVjdEZvckluZm9E
aWN0aW9uYXJ5S2V5OkAiV0tBcHBCb3VuZERvbWFpbnMiXTsKKyAgICAgICAga2V5RXhpc3RzID0g
YXBwQm91bmREYXRhID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtmb3JjZVJlaW5pdGlhbGl6YXRpb24sIGRvbWFpbnMgPSByZXRhaW5Q
dHIoZG9tYWlucyldIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtmb3JjZVJl
aW5pdGlhbGl6YXRpb24sIGFwcEJvdW5kRGF0YSA9IHJldGFpblB0cihhcHBCb3VuZERhdGEpXSB7
CiAgICAgICAgICAgICBpZiAoaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMgJiYgZm9yY2VS
ZWluaXRpYWxpemF0aW9uICE9IEZvcmNlUmVpbml0aWFsaXphdGlvbjo6WWVzKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgaWYgKGZvcmNlUmVpbml0aWFsaXphdGlvbiA9
PSBGb3JjZVJlaW5pdGlhbGl6YXRpb246OlllcykKICAgICAgICAgICAgICAgICBhcHBCb3VuZERv
bWFpbnMoKS5jbGVhcigpOwogCi0gICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpkb21haW4gaW4g
ZG9tYWlucy5nZXQoKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBVUkwoKSwgZG9tYWlu
IH07CisgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpkYXRhIGluIGFwcEJvdW5kRGF0YS5nZXQo
KSkgeworICAgICAgICAgICAgICAgIGlmIChhcHBCb3VuZERvbWFpbnMoKS5zaXplKCkgKyBhcHBC
b3VuZFNjaGVtZXMoKS5zaXplKCkgPj0gbWF4QXBwQm91bmREb21haW5Db3VudCkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYXV0byBsZW5ndGggPSBbZGF0YSBs
ZW5ndGhdOworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiAwICYmIFtkYXRhIGNoYXJhY3Rl
ckF0SW5kZXg6bGVuZ3RoIC0gMV0gPT0gJzonKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
YXBwQm91bmRTY2hlbWUgPSBTdHJpbmcoW2RhdGEgc3Vic3RyaW5nVG9JbmRleDpsZW5ndGggLSAx
XSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYXBwQm91bmRTY2hlbWUuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwQm91bmRTY2hlbWVzKCkuYWRkKGFwcEJvdW5kU2No
ZW1lKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBVUkwgdXJsIHsgVVJM
KCksIGRhdGEgfTsKICAgICAgICAgICAgICAgICBpZiAodXJsLnByb3RvY29sKCkuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgICAgICB1cmwuc2V0UHJvdG9jb2woImh0dHBzIik7CiAgICAgICAg
ICAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQpAQCAtNDM4LDggKzQ1NCw2IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6
YXRpb24gZm9yY2VSZWluCiAgICAgICAgICAgICAgICAgaWYgKGFwcEJvdW5kRG9tYWluLmlzRW1w
dHkoKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgYXBw
Qm91bmREb21haW5zKCkuYWRkKGFwcEJvdW5kRG9tYWluKTsKLSAgICAgICAgICAgICAgICBpZiAo
YXBwQm91bmREb21haW5zKCkuc2l6ZSgpID49IG1heEFwcEJvdW5kRG9tYWluQ291bnQpCi0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaGFzSW5p
dGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMgPSB0cnVlOwogICAgICAgICAgICAgaWYgKGlzQXBwQm91
bmRJVFBSZWxheGF0aW9uRW5hYmxlZCkKQEAgLTQ0OCwxMyArNDYyLDEzIEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3JjZVJlaW5pdGlhbGl6YXRp
b24gZm9yY2VSZWluCiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJl
QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3Zv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mLCBjb25z
dCBIYXNoU2V0PFN0cmluZz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBp
ZiAoaGFzSW5pdGlhbGl6ZWRBcHBCb3VuZERvbWFpbnMpIHsKICAgICAgICAgaWYgKG1faXNJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdE1vZGVFbmFibGVkKSB7CiAgICAgICAgICAgICBXRUJTSVRFX0RB
VEFfU1RPUkVfQURESVRJT05TOwogICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGFwcEJvdW5kRG9tYWlucygpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmRE
b21haW5zKCksIGFwcEJvdW5kU2NoZW1lcygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDY2LDcgKzQ4MCw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmRE
b21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNlCiAgICAgICAgICAgICBp
ZiAobV9pc0luQXBwQnJvd3NlclByaXZhY3lUZXN0TW9kZUVuYWJsZWQpIHsKICAgICAgICAgICAg
ICAgICBXRUJTSVRFX0RBVEFfU1RPUkVfQURESVRJT05TOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmREb21haW5zKCkpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoYXBwQm91bmREb21haW5zKCksIGFwcEJvdW5kU2NoZW1lcygpKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC00NzUsNyArNDg5LDcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpiZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2soY29uc3QgVVJMJiByZXF1ZXN0VVJM
LCBXZWJGcmFtZVAKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZW5z
dXJlQXBwQm91bmREb21haW5zKFsmcmVxdWVzdFVSTCwgbGlzdGVuZXIgPSBtYWtlUmVmKGxpc3Rl
bmVyKV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgIGVuc3VyZUFwcEJvdW5kRG9tYWlu
cyhbJnJlcXVlc3RVUkwsIGxpc3RlbmVyID0gbWFrZVJlZihsaXN0ZW5lcildIChhdXRvJiBkb21h
aW5zLCBhdXRvJiBzY2hlbWVzKSBtdXRhYmxlIHsKICAgICAgICAgLy8gTXVzdCBjaGVjayBmb3Ig
Ym90aCBhbiBlbXB0eSBhcHAgYm91bmQgZG9tYWlucyBsaXN0IGFuZCBhbiBlbXB0eSBrZXkgYmVm
b3JlIHJldHVybmluZyBudWxsb3B0CiAgICAgICAgIC8vIGJlY2F1c2UgdGVzdCBjYXNlcyBtYXkg
aGF2ZSBhcHAgYm91bmQgZG9tYWlucyBidXQgbm8ga2V5LgogICAgICAgICBib29sIGhhc0FwcEJv
dW5kRG9tYWlucyA9IGtleUV4aXN0cyB8fCAhZG9tYWlucy5pc0VtcHR5KCk7CkBAIC00ODMsNyAr
NDk3LDEwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YmVnaW5BcHBCb3VuZERvbWFpbkNoZWNr
KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViRnJhbWVQCiAgICAgICAgICAgICBsaXN0ZW5lci0+
ZGlkUmVjZWl2ZUFwcEJvdW5kRG9tYWluUmVzdWx0KFdURjo6bnVsbG9wdCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbGlzdGVuZXItPmRpZFJlY2VpdmVBcHBCb3Vu
ZERvbWFpblJlc3VsdChkb21haW5zLmNvbnRhaW5zKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
KHJlcXVlc3RVUkwpKSA/IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMgOiBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8pOworCisgICAgICAgIGF1dG8gc2NoZW1lSXNBcHBCb3Vu
ZCA9ICFyZXF1ZXN0VVJMLnByb3RvY29sKCkudG9TdHJpbmcoKS5pc051bGwoKSAmJiBzY2hlbWVz
LmNvbnRhaW5zKHJlcXVlc3RVUkwucHJvdG9jb2woKS50b1N0cmluZygpKTsKKyAgICAgICAgYXV0
byBpc0FwcEJvdW5kID0gc2NoZW1lSXNBcHBCb3VuZCB8fCBkb21haW5zLmNvbnRhaW5zKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3RVUkwpKTsKKyAgICAgICAgbGlzdGVuZXItPmRp
ZFJlY2VpdmVBcHBCb3VuZERvbWFpblJlc3VsdChpc0FwcEJvdW5kID8gTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW46OlllcyA6IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyk7CiAgICAg
fSk7CiB9CiAKQEAgLTQ5MSwxMSArNTA4LDIwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0
QXBwQm91bmREb21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGVuc3VyZUFwcEJvdW5kRG9t
YWlucyhbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgIGVuc3VyZUFwcEJvdW5kRG9tYWlucyhbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mIGRvbWFpbnMs
IGF1dG8mIHNjaGVtZXMpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkb21h
aW5zKTsKICAgICB9KTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZFNj
aGVtZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFN0cmluZz4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgZW5zdXJlQXBwQm91bmREb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZG9tYWlucywgYXV0byYgc2NoZW1lcykgbXV0
YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNjaGVtZXMpOworICAgIH0pOworfQor
CiBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPj4gV2Vic2l0ZURh
dGFTdG9yZTo6YXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBlNDIyYWRjZmYwOTkyZTJiNTI4YWZh
NDlkNmVmMzFhYmI3YzQ3OTFiLi4wZjU1YjhiNWZhYzkzMjE3NTFhMjYzMTg0MWIwMWRjZDBmMjVm
ODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMDEsNyArMzAxLDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBiZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2soY29uc3QgVVJMJiwgV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5Jik7CiAgICAgdm9pZCBnZXRBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmKSBj
b25zdDsKLSAgICB2b2lkIGVuc3VyZUFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYpIGNvbnN0
OworICAgIHZvaWQgZ2V0QXBwQm91bmRTY2hlbWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgSGFzaFNldDxTdHJpbmc+Jik+JiYpIGNvbnN0OworICAgIHZvaWQgZW5zdXJlQXBwQm91bmRE
b21haW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4mLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mKT4mJikgY29uc3Q7CiAgICAg
dm9pZCByZWluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoKTsKICAgICBzdGF0aWMgdm9pZCBzZXRB
cHBCb3VuZERvbWFpbnNGb3JUZXN0aW5nKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCB1cGRhdGVCdW5k
bGVJZGVudGlmaWVySW5OZXR3b3JrUHJvY2Vzcyhjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDgxMDAzNTk1OWZiYTZhMTQxMTU0MTNiOGQ3NjNiNDE3YjM5NmRjNjEuLmIx
OGZkZmQ0ZjQxMzg3OGY3ODhkYjQ1MjA4MmUxZjFkZGMwZGIyMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0w
Ny0wMiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBDdXN0b20gVVJMIHNjaGVtZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYXBwLWJvdW5kCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM4ODkKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzY0ODA0NjcxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGN1c3RvbSBzY2hlbWVzIHRvIFRlc3RXZWJLaXRB
UEkncyBJbmZvLnBsaXN0IGZvciB0ZXN0aW5nCisgICAgICAgIGR1cGxpY2F0ZSB2YWx1ZXMgYW5k
IHRoZSBtYXggb2YgMTAgZG9tYWlucy9zY2hlbWVzLiBBZGRlZAorICAgICAgICB0d28gQVBJIHRl
c3RzIHRvIGNoZWNrIHRoYXQgc2NoZW1lcyBhcmUgcHJvcGVybHkgcmVhZCBmcm9tIHRoZQorICAg
ICAgICBJbmZvLnBsaXN0IGFuZCB0aGF0IGNvbnRlbnQgbG9hZGVkIHVzaW5nIGEgc3BlY2lmaWVk
IGFwcC1ib3VuZCBzY2hlbWUKKyAgICAgICAgaGFzIHJlc3RyaWN0ZWQgQVBJIHVzZS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvSW5mby5wbGlzdDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgIChURVNU
KToKKwogMjAyMC0wNy0wMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggdGhlIFdlYktpdCBidWlsZCBhZnRlciA8cmRhcjovL3Byb2JsZW0vNjQy
ODgxOTE+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0luZm8ucGxpc3QgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0luZm8ucGxpc3QKaW5kZXggMGFjOGMxNjk1ODI2YWRjZjA3ZTEwZjAx
MjYxZjFiMGVhOTZkMzc2Ni4uZDMzNjUzZmQxMDBiODgzZGNhMjViZDRlYzZmMWRiODFmODcxOGM1
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmZvLnBsaXN0CisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvSW5mby5wbGlzdApAQCAtNCw2ICs0LDkgQEAKIDxkaWN0PgogCTxrZXk+
V0tBcHBCb3VuZERvbWFpbnM8L2tleT4KIAk8YXJyYXk+CisJCTxzdHJpbmc+dGVzdDo8L3N0cmlu
Zz4KKwkJPHN0cmluZz46PC9zdHJpbmc+CisJCTxzdHJpbmc+dGVzdDo8L3N0cmluZz4KIAkJPHN0
cmluZz50ZXN0RG9tYWluMTwvc3RyaW5nPgogCQk8c3RyaW5nPmFwcGxlLmNvbTwvc3RyaW5nPgog
CQk8c3RyaW5nPnN1Yi5kb21haW4ud2Via2l0Lm9yZy9yb2FkL3RvL25vd2hlcmUvPC9zdHJpbmc+
CkBAIC0yMSw2ICsyNCw4IEBACiAJCTxzdHJpbmc+aHR0cDovL3d3dy5leGFtcGxlLmNvbS88L3N0
cmluZz4KIAkJPHN0cmluZz5odHRwOi8vYmFyLmNvbS88L3N0cmluZz4KIAkJPHN0cmluZz5odHRw
Oi8vZm9vLmNvbS88L3N0cmluZz4KKwkJPHN0cmluZz5hcHAtYm91bmQtY3VzdG9tLXNjaGVtZTo8
L3N0cmluZz4KKwkJPHN0cmluZz5zaG91bGQtbm90LWJlLWluY2x1ZGVkOjwvc3RyaW5nPgogCTwv
YXJyYXk+CiAJPGtleT5DRkJ1bmRsZU5hbWU8L2tleT4KIAk8c3RyaW5nPiR7UFJPRFVDVF9OQU1F
fTwvc3RyaW5nPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDVjMGMxZWJhZDRhODQyYmNk
MjA0YjM4NzExMGIwNTdkMDY5NjRiNzUuLmU3NTAwOWI1ZWE0OGI1NGU4YTY2MTMzZDI1OGM4NjMw
ZmU1NDljZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTI4LDYgKzI4LDcgQEAKICNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2Vy
dmVyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0
VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAi
V0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3Ry
YWJsZURvbWFpbi5oPgpAQCAtMjg0LDYgKzI4NSwyNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kRG9tYWlucykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiB9CiAKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRTY2hlbWVzKQorewor
ICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgaXNE
b25lID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0g
X2FwcEJvdW5kU2NoZW1lczpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKnNjaGVtZXMpIHsKKyAgICAg
ICAgTlNBcnJheSAqc2NoZW1lc1RvQ29tcGFyZSA9IEBbQCJhcHAtYm91bmQtY3VzdG9tLXNjaGVt
ZSIsIEAidGVzdCJdOworCisgICAgICAgIE5TQXJyYXkgKnNvcnRlZFNjaGVtZXMgPSBbc2NoZW1l
cyBzb3J0ZWRBcnJheVVzaW5nU2VsZWN0b3I6QHNlbGVjdG9yKGNhc2VJbnNlbnNpdGl2ZUNvbXBh
cmU6KV07CisKKyAgICAgICAgaW50IGxlbmd0aCA9IFtzb3J0ZWRTY2hlbWVzIGNvdW50XTsKKyAg
ICAgICAgRVhQRUNUX0VRKGxlbmd0aCwgMik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspCisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3NvcnRlZFNjaGVtZXMg
b2JqZWN0QXRJbmRleDppXSwgW3NjaGVtZXNUb0NvbXBhcmUgb2JqZWN0QXRJbmRleDppXSk7CisK
KyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Cit9CisKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTG9jYWxGaWxlc0FyZUFw
cEJvdW5kKQogewogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCk7CkBAIC0xMjcyLDYgKzEyOTMsNTEgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBMb2Fk
RnJvbUhUTUxTdHJpbmdzRmFpbHNJZk5vdEFwcEJvdW5kKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKIH0KIAorVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3Vu
ZEN1c3RvbVNjaGVtZSkKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBh
dXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhh
bmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJdOworICAgIFtjb25maWd1cmF0aW9uIHNl
dExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6WUVTXTsKKworICAgIFtzY2hlbWVI
YW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tV
UkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlw
ZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpu
aWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsK
KyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOm1haW5C
eXRlcyBsZW5ndGg6c3RybGVuKG1haW5CeXRlcyldXTsKKyAgICAgICAgW3Rhc2sgZGlkRmluaXNo
XTsKKyAgICB9XTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRl
c3Q6Ly9ob3N0L21haW4uaHRtbCJdXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVl
c3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKwor
ICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOl4oQk9PTCBpc0FwcEJvdW5kKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzQXBwQm91
bmQpOworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwor
ICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKKyAgICAKKyAgICAvLyBNYWtlIHN1cmUgYXBwLWJvdW5kIGJlaGF2aW9y
IHdvcmtzIGZvciB0aGlzIHdlYnZpZXcuCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAibG9jYXRpb24uaHJlZjsiIGNvbXBsZXRpb25IYW5kbGVy
Ol4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRShbcmVz
dWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfRkFM
U0UoISFlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5n
OkAidGVzdDovL2hvc3QvbWFpbi5odG1sIl0pOworCisgICAgICAgIGlzRG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQor
CiAjZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKIAogI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403412</attachid>
            <date>2020-07-02 15:49:40 -0700</date>
            <delta_ts>2020-07-02 16:15:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-213889-20200702154940.patch</filename>
            <type>text/plain</type>
            <size>17420</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmMjQ5NjBjZGE3YjdmYWRl
MjdiMzcyNTRjMGJmN2MzZGM4YTE0MWYuLjhmYWEyMWFjNzAxYzVlOTdmMDEwOTY1YmQ5NmU0MWU2
YjQ1OGRhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDctMDIgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3VzdG9tIFVSTCBz
Y2hlbWVzIHNob3VsZCBiZSB0cmVhdGVkIGFzIGFwcC1ib3VuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODg5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS82NDgwNDY3MT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisg
ICAgICAgIEZvciBhcHBsaWNhdGlvbnMgd2hpY2ggb3B0LWluIHRvIEFwcC1Cb3VuZCBEb21haW5z
LCBhbGxvdworICAgICAgICBzcGVjaWZpY2F0aW9uIG9mIGFwcC1ib3VuZCBjdXN0b20gVVJMIHNj
aGVtZXMuIEFsbCBjb250ZW50IGxvYWRlZAorICAgICAgICB1c2luZyBhbiBhcHAtYm91bmQgc2No
ZW1lIHdpbGwgaGF2ZSBhY2Nlc3MgdG8gb3RoZXJ3aXNlIHJlc3RyaWN0ZWQKKyAgICAgICAgQVBJ
cy4gQSBjdXN0b20gc2NoZW1lIGlzIHNwZWNpZmllZCBieSBhIGNvbG9uIGF0IHRoZSBlbmQgb2Yg
YSBzdHJpbmcKKyAgICAgICAgaW4gdGhlIFdLQXBwQm91bmREb21haW5zIGxpc3QuIEN1c3RvbSBz
Y2hlbWVzIGFyZSBpbmNsdWRlZCBpbiB0aGUKKyAgICAgICAgY291bnQgb2YgMTAgYXBwLWJvdW5k
IGRvbWFpbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9hcHBCb3VuZFNjaGVtZXM6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisgICAgICAgIFNQSSBmb3IgdGVzdGluZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OmFwcEJvdW5kU2NoZW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMpOgorICAgICAgICBDaGFuZ2UgdmFyaWFibGUgbmFt
ZSBmcm9tIGFwcEJvdW5kRG9tYWlucyB0byBhcHBCb3VuZERhdGEgbm93IHRoYXQKKyAgICAgICAg
bW9yZSB0aGFuIGRvbWFpbnMgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgSW5mby5wbGlzdC4gCisK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5z
IGNvbnN0KToKKyAgICAgICAgUmV0dXJuIGJvdGggZG9tYWlucyBhbmQgc2NoZW1lcyB0byBhdm9p
ZCBjb2RlIGR1cGxpY2F0aW9uLCBhdCB0aGUgZXhwZW5zZQorICAgICAgICBvZiBvY2Nhc2lvbmFs
bHkgcmV0dXJuaW5nIGFuIHVudXNlZCBwYXJhbWV0ZXIgaWYgb25seSBkb21haW5zIG9yIG9ubHkg
CisgICAgICAgIHNjaGVtZXMgYXJlIG5lZWRlZC4KKworICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpiZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2spOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnMgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZFNjaGVtZXMgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjAtMDct
MDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9u
KHIyNTkyNDIpIFdlYktpdCBubyBsb25nZXIgZG9lcyBjbGllbnQgbmF2aWdhdGlvbnMgYXQgZm9y
ZWdyb3VuZCBwcmlvcml0eSBmb3IgZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggYmQwYmZm
OTg5MzZiNGFiZmY3YzlhMzY2NTk3NDVjYzBkNzY0NWQyMi4uMmI1YmVhNWExYTIyODBkYzgxMDg2
M2Y0OWNjOThmYTNkYTQ2OWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC02NDIsNCArNjQyLDE1IEBA
IC0gKHZvaWQpX2FwcEJvdW5kRG9tYWluczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAq
KSljb21wbGV0aW9uSGFuZGxlcgogICAgIH0pOwogfQogCistICh2b2lkKV9hcHBCb3VuZFNjaGVt
ZXM6KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+Z2V0QXBwQm91bmRTY2hlbWVzKFtjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mIHNjaGVtZXMpIG11
dGFibGUgeworICAgICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gYXBpU2NoZW1lczsK
KyAgICAgICAgYXBpU2NoZW1lcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNjaGVtZXMuc2l6ZSgp
KTsKKyAgICAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBzY2hlbWVzKQorICAgICAgICAgICAgYXBp
U2NoZW1lcy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShzY2hlbWUpKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShhcGlTY2hlbWVzKSkpKTsKKyAgICB9KTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmgKaW5kZXggMWVkZDcwMzFhODVmMzQ1MGUzNGFiOWIzNzQzNTlhMDBhNWQwZjg0Zi4uMGRl
ZmE4NDYyYjRmM2NjNmQ5MTFiYjg4Y2YxMWFmNzNiZTVkZDI2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oCkBAIC03OSw2ICs3OSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2Vy
LCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9zdGF0aXN0aWNz
RGF0YWJhc2VIYXNBbGxUYWJsZXM6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2
b2lkKV9wcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzOih2b2lkICheKSh2b2lkKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsK
IC0gKHZvaWQpX2FwcEJvdW5kRG9tYWluczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAq
KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfYXBwQm91bmRTY2hlbWVzOih2b2lkICheKShOU0Fy
cmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC0gKHZvaWQpX3JlbmFtZU9yaWdp
bjooTlNVUkwgKilvbGROYW1lIHRvOihOU1VSTCAqKW5ld05hbWUgZm9yRGF0YU9mVHlwZXM6KE5T
U2V0PE5TU3RyaW5nICo+ICopZGF0YVR5cGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uSGFuZGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCmluZGV4IGEwMDFmMmU0ZmZlMzgyNjgyOTk3YTdmZDVjMGU5MTc0MzFhNDA4NDIuLjY4NTEz
MTVjYWM1MDY5MDY4YTY3NjQzNjk0NjQyOTdiNjFkMTAyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0KQEAgLTQwNSw2ICs0MDUsMTMgQEAgc3RhdGljIEhhc2hTZXQ8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMoKQogICAgIHJldHVybiBh
cHBCb3VuZERvbWFpbnM7CiB9CiAKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGFwcEJvdW5kU2No
ZW1lcygpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBhcHBCb3VuZFNjaGVtZXM7CisgICAgcmV0dXJu
IGFwcEJvdW5kU2NoZW1lczsKK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbml0aWFsaXpl
QXBwQm91bmREb21haW5zKEZvcmNlUmVpbml0aWFsaXphdGlvbiBmb3JjZVJlaW5pdGlhbGl6YXRp
b24pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQxOCwxOCArNDI1LDI4
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucyhGb3Jj
ZVJlaW5pdGlhbGl6YXRpb24gZm9yY2VSZWluCiAgICAgICAgIGlmIChoYXNJbml0aWFsaXplZEFw
cEJvdW5kRG9tYWlucyAmJiBmb3JjZVJlaW5pdGlhbGl6YXRpb24gIT0gRm9yY2VSZWluaXRpYWxp
emF0aW9uOjpZZXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBOU0Fy
cmF5PE5TU3RyaW5nICo+ICpkb21haW5zID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBvYmplY3RG
b3JJbmZvRGljdGlvbmFyeUtleTpAIldLQXBwQm91bmREb21haW5zIl07Ci0gICAgICAgIGtleUV4
aXN0cyA9IGRvbWFpbnMgPyB0cnVlIDogZmFsc2U7CisgICAgICAgIE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKmFwcEJvdW5kRGF0YSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gb2JqZWN0Rm9ySW5mb0Rp
Y3Rpb25hcnlLZXk6QCJXS0FwcEJvdW5kRG9tYWlucyJdOworICAgICAgICBrZXlFeGlzdHMgPSBh
cHBCb3VuZERhdGEgPyB0cnVlIDogZmFsc2U7CiAgICAgICAgIAotICAgICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW2ZvcmNlUmVpbml0aWFsaXphdGlvbiwgZG9tYWlucyA9IHJldGFpblB0
cihkb21haW5zKV0geworICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2ZvcmNlUmVp
bml0aWFsaXphdGlvbiwgYXBwQm91bmREYXRhID0gcmV0YWluUHRyKGFwcEJvdW5kRGF0YSldIHsK
ICAgICAgICAgICAgIGlmIChoYXNJbml0aWFsaXplZEFwcEJvdW5kRG9tYWlucyAmJiBmb3JjZVJl
aW5pdGlhbGl6YXRpb24gIT0gRm9yY2VSZWluaXRpYWxpemF0aW9uOjpZZXMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBpZiAoZm9yY2VSZWluaXRpYWxpemF0aW9uID09
IEZvcmNlUmVpbml0aWFsaXphdGlvbjo6WWVzKQogICAgICAgICAgICAgICAgIGFwcEJvdW5kRG9t
YWlucygpLmNsZWFyKCk7CiAKLSAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmRvbWFpbiBpbiBk
b21haW5zLmdldCgpKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCB7IFVSTCgpLCBkb21haW4g
fTsKKyAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmRhdGEgaW4gYXBwQm91bmREYXRhLmdldCgp
KSB7CisgICAgICAgICAgICAgICAgaWYgKGFwcEJvdW5kRG9tYWlucygpLnNpemUoKSArIGFwcEJv
dW5kU2NoZW1lcygpLnNpemUoKSA+PSBtYXhBcHBCb3VuZERvbWFpbkNvdW50KQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAoW2RhdGEgaGFzU3VmZml4OkAi
OiJdKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYXBwQm91bmRTY2hlbWUgPSBTdHJpbmco
W2RhdGEgc3Vic3RyaW5nVG9JbmRleDpbZGF0YSBsZW5ndGhdIC0gMV0pOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWFwcEJvdW5kU2NoZW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwQm91bmRTY2hlbWVzKCkuYWRkKGFwcEJvdW5kU2NoZW1lKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFVSTCgpLCBkYXRhIH07CiAg
ICAgICAgICAgICAgICAgaWYgKHVybC5wcm90b2NvbCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAg
ICAgICAgICAgdXJsLnNldFByb3RvY29sKCJodHRwcyIpOwogICAgICAgICAgICAgICAgIGlmICgh
dXJsLmlzVmFsaWQoKSkKQEAgLTQzOCw4ICs0NTUsNiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
OmluaXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVp
bgogICAgICAgICAgICAgICAgIGlmIChhcHBCb3VuZERvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGFwcEJvdW5kRG9tYWlucygp
LmFkZChhcHBCb3VuZERvbWFpbik7Ci0gICAgICAgICAgICAgICAgaWYgKGFwcEJvdW5kRG9tYWlu
cygpLnNpemUoKSA+PSBtYXhBcHBCb3VuZERvbWFpbkNvdW50KQotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGhhc0luaXRpYWxpemVkQXBwQm91
bmREb21haW5zID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChpc0FwcEJvdW5kSVRQUmVsYXhhdGlv
bkVuYWJsZWQpCkBAIC00NDgsMTMgKzQ2MywxMyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omlu
aXRpYWxpemVBcHBCb3VuZERvbWFpbnMoRm9yY2VSZWluaXRpYWxpemF0aW9uIGZvcmNlUmVpbgog
ICAgIH0pOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlu
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OmVuc3VyZUFwcEJvdW5kRG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiwgY29uc3QgSGFzaFNldDxTdHJp
bmc+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgaWYgKGhhc0luaXRpYWxp
emVkQXBwQm91bmREb21haW5zKSB7CiAgICAgICAgIGlmIChtX2lzSW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RNb2RlRW5hYmxlZCkgewogICAgICAgICAgICAgV0VCU0lURV9EQVRBX1NUT1JFX0FERElU
SU9OUzsKICAgICAgICAgfQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhcHBCb3VuZERvbWFp
bnMoKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcEJvdW5kRG9tYWlucygpLCBhcHBC
b3VuZFNjaGVtZXMoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2NiwxNiArNDgx
LDI0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5zdXJlQXBwQm91bmREb21haW5zKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNlCiAgICAgICAgICAgICBpZiAobV9pc0luQXBw
QnJvd3NlclByaXZhY3lUZXN0TW9kZUVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICBXRUJTSVRF
X0RBVEFfU1RPUkVfQURESVRJT05TOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoYXBwQm91bmREb21haW5zKCkpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoYXBwQm91bmREb21haW5zKCksIGFwcEJvdW5kU2NoZW1lcygpKTsKICAgICAgICAgfSk7
CiAgICAgfSk7CiB9CiAKK3N0YXRpYyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBzY2hlbWVP
ckRvbWFpbklzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBzY2hlbWVzKQoreworICAgIGF1dG8gcHJvdG9jb2wgPSByZXF1ZXN0VVJMLnByb3RvY29sKCku
dG9TdHJpbmcoKTsKKyAgICBhdXRvIHNjaGVtZUlzQXBwQm91bmQgPSAhcHJvdG9jb2wuaXNOdWxs
KCkgJiYgc2NoZW1lcy5jb250YWlucyhwcm90b2NvbCk7CisgICAgYXV0byBkb21haW5Jc0FwcEJv
dW5kID0gZG9tYWlucy5jb250YWlucyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0
VVJMKSk7CisgICAgcmV0dXJuIHNjaGVtZUlzQXBwQm91bmQgfHwgZG9tYWluSXNBcHBCb3VuZCA/
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXMgOiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjo6Tm87Cit9CisKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6YmVnaW5BcHBCb3VuZERvbWFp
bkNoZWNrKGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
JiBsaXN0ZW5lcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgZW5z
dXJlQXBwQm91bmREb21haW5zKFsmcmVxdWVzdFVSTCwgbGlzdGVuZXIgPSBtYWtlUmVmKGxpc3Rl
bmVyKV0gKGF1dG8mIGRvbWFpbnMpIG11dGFibGUgeworICAgIGVuc3VyZUFwcEJvdW5kRG9tYWlu
cyhbJnJlcXVlc3RVUkwsIGxpc3RlbmVyID0gbWFrZVJlZihsaXN0ZW5lcildIChhdXRvJiBkb21h
aW5zLCBhdXRvJiBzY2hlbWVzKSBtdXRhYmxlIHsKICAgICAgICAgLy8gTXVzdCBjaGVjayBmb3Ig
Ym90aCBhbiBlbXB0eSBhcHAgYm91bmQgZG9tYWlucyBsaXN0IGFuZCBhbiBlbXB0eSBrZXkgYmVm
b3JlIHJldHVybmluZyBudWxsb3B0CiAgICAgICAgIC8vIGJlY2F1c2UgdGVzdCBjYXNlcyBtYXkg
aGF2ZSBhcHAgYm91bmQgZG9tYWlucyBidXQgbm8ga2V5LgogICAgICAgICBib29sIGhhc0FwcEJv
dW5kRG9tYWlucyA9IGtleUV4aXN0cyB8fCAhZG9tYWlucy5pc0VtcHR5KCk7CkBAIC00ODMsNyAr
NTA2LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpiZWdpbkFwcEJvdW5kRG9tYWluQ2hlY2so
Y29uc3QgVVJMJiByZXF1ZXN0VVJMLCBXZWJGcmFtZVAKICAgICAgICAgICAgIGxpc3RlbmVyLT5k
aWRSZWNlaXZlQXBwQm91bmREb21haW5SZXN1bHQoV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBsaXN0ZW5lci0+ZGlkUmVjZWl2ZUFwcEJvdW5k
RG9tYWluUmVzdWx0KGRvbWFpbnMuY29udGFpbnMoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4o
cmVxdWVzdFVSTCkpID8gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcyA6IE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOjpObyk7CisgICAgICAgIGxpc3RlbmVyLT5kaWRSZWNlaXZlQXBw
Qm91bmREb21haW5SZXN1bHQoc2NoZW1lT3JEb21haW5Jc0FwcEJvdW5kKHJlcXVlc3RVUkwsIGRv
bWFpbnMsIHNjaGVtZXMpKTsKICAgICB9KTsKIH0KIApAQCAtNDkxLDExICs1MTQsMjAgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBIYXNoU2V0PFcKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
Ci0gICAgZW5zdXJlQXBwQm91bmREb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYgZG9tYWlucykgbXV0YWJsZSB7CisgICAgZW5zdXJl
QXBwQm91bmREb21haW5zKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoYXV0byYgZG9tYWlucywgYXV0byYgc2NoZW1lcykgbXV0YWJsZSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGRvbWFpbnMpOwogICAgIH0pOwogfQogCit2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmdldEFwcEJvdW5kU2NoZW1lcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBlbnN1cmVBcHBCb3VuZERvbWFpbnMoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiBkb21h
aW5zLCBhdXRvJiBzY2hlbWVzKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c2NoZW1lcyk7CisgICAgfSk7Cit9CisKIE9wdGlvbmFsPEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+PiBXZWJzaXRlRGF0YVN0b3JlOjphcHBCb3VuZERvbWFpbnNJZkluaXRpYWxp
emVkKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4
IGU0MjJhZGNmZjA5OTJlMmI1MjhhZmE0OWQ2ZWYzMWFiYjdjNDc5MWIuLjBmNTViOGI1ZmFjOTMy
MTc1MWEyNjMxODQxYjAxZGNkMGYyNWY4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTMwMSw3ICszMDEs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJlZ2luQXBwQm91bmREb21haW5DaGVjayhjb25zdCBV
UkwmLCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmKTsKICAgICB2b2lkIGdldEFwcEJvdW5k
RG9tYWlucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+Jik+JiYpIGNvbnN0OwotICAgIHZvaWQgZW5zdXJlQXBwQm91bmREb21h
aW5zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mKT4mJikgY29uc3Q7CisgICAgdm9pZCBnZXRBcHBCb3VuZFNjaGVtZXMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFN0cmluZz4mKT4mJikgY29uc3Q7Cisg
ICAgdm9pZCBlbnN1cmVBcHBCb3VuZERvbWFpbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYsIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYpPiYmKSBjb25zdDsKICAgICB2b2lkIHJlaW5pdGlhbGl6ZUFwcEJvdW5kRG9tYWlucygp
OwogICAgIHN0YXRpYyB2b2lkIHNldEFwcEJvdW5kRG9tYWluc0ZvclRlc3RpbmcoSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHVwZGF0ZUJ1bmRsZUlkZW50aWZpZXJJbk5ldHdvcmtQcm9jZXNzKGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODEwMDM1OTU5ZmJhNmExNDExNTQx
M2I4ZDc2M2I0MTdiMzk2ZGM2MS4uNzRiYWQ4OTc4OWRkODg1YjBmZDFiYzQ3NjNlNzA5MTZhNGYy
MzIwMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDIwLTA3LTAyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVu
ZXlAYXBwbGUuY29tPgorCisgICAgICAgIEN1c3RvbSBVUkwgc2NoZW1lcyBzaG91bGQgYmUgdHJl
YXRlZCBhcyBhcHAtYm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzg4OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQ4MDQ2NzE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBBZGRlZCBjdXN0b20g
c2NoZW1lcyB0byBUZXN0V2ViS2l0QVBJJ3MgSW5mby5wbGlzdCBmb3IgdGVzdGluZworICAgICAg
ICBkdXBsaWNhdGUgdmFsdWVzIGFuZCB0aGUgbWF4IG9mIDEwIGRvbWFpbnMvc2NoZW1lcy4gQWRk
ZWQKKyAgICAgICAgdHdvIEFQSSB0ZXN0cyB0byBjaGVjayB0aGF0IHNjaGVtZXMgYXJlIHByb3Bl
cmx5IHJlYWQgZnJvbSB0aGUKKyAgICAgICAgSW5mby5wbGlzdCBhbmQgdGhhdCBjb250ZW50IGxv
YWRlZCB1c2luZyBhIHNwZWNpZmllZCBhcHAtYm91bmQgc2NoZW1lCisgICAgICAgIGhhcyByZXN0
cmljdGVkIEFQSSB1c2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0luZm8ucGxpc3Q6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjAtMDctMDEgIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBXZWJLaXQgYnVpbGQgYWZ0
ZXIgPHJkYXI6Ly9wcm9ibGVtLzY0Mjg4MTkxPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9JbmZvLnBsaXN0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmZvLnBsaXN0CmluZGV4IDBh
YzhjMTY5NTgyNmFkY2YwN2UxMGYwMTI2MWYxYjBlYTk2ZDM3NjYuLmQzMzY1M2ZkMTAwYjg4M2Rj
YTI1YmQ0ZWM2ZjFkYjgxZjg3MThjNWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
SW5mby5wbGlzdAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luZm8ucGxpc3QKQEAgLTQsNiAr
NCw5IEBACiA8ZGljdD4KIAk8a2V5PldLQXBwQm91bmREb21haW5zPC9rZXk+CiAJPGFycmF5Pgor
CQk8c3RyaW5nPnRlc3Q6PC9zdHJpbmc+CisJCTxzdHJpbmc+Ojwvc3RyaW5nPgorCQk8c3RyaW5n
PnRlc3Q6PC9zdHJpbmc+CiAJCTxzdHJpbmc+dGVzdERvbWFpbjE8L3N0cmluZz4KIAkJPHN0cmlu
Zz5hcHBsZS5jb208L3N0cmluZz4KIAkJPHN0cmluZz5zdWIuZG9tYWluLndlYmtpdC5vcmcvcm9h
ZC90by9ub3doZXJlLzwvc3RyaW5nPgpAQCAtMjEsNiArMjQsOCBAQAogCQk8c3RyaW5nPmh0dHA6
Ly93d3cuZXhhbXBsZS5jb20vPC9zdHJpbmc+CiAJCTxzdHJpbmc+aHR0cDovL2Jhci5jb20vPC9z
dHJpbmc+CiAJCTxzdHJpbmc+aHR0cDovL2Zvby5jb20vPC9zdHJpbmc+CisJCTxzdHJpbmc+YXBw
LWJvdW5kLWN1c3RvbS1zY2hlbWU6PC9zdHJpbmc+CisJCTxzdHJpbmc+c2hvdWxkLW5vdC1iZS1p
bmNsdWRlZDo8L3N0cmluZz4KIAk8L2FycmF5PgogCTxrZXk+Q0ZCdW5kbGVOYW1lPC9rZXk+CiAJ
PHN0cmluZz4ke1BST0RVQ1RfTkFNRX08L3N0cmluZz4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpp
bmRleCA1YzBjMWViYWQ0YTg0MmJjZDIwNGIzODcxMTBiMDU3ZDA2OTY0Yjc1Li5lNzUwMDliNWVh
NDhiNTRlOGE2NjEzM2QyNThjODYzMGZlNTQ5Y2Q3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiU2VydmljZVdvcmtlclRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oIgorI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIlRlc3RX
S1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKICNp
bXBvcnQgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KQEAgLTI4NCw2ICsyODUsMjYgQEAg
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbnMpCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IEFwcEJvdW5kU2NoZW1lcykKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRl
c3RTZXR0aW5ncygpOworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGRlZmF1bHREYXRhU3RvcmVdIF9hcHBCb3VuZFNjaGVtZXM6XihOU0FycmF5PE5TU3RyaW5n
ICo+ICpzY2hlbWVzKSB7CisgICAgICAgIE5TQXJyYXkgKnNjaGVtZXNUb0NvbXBhcmUgPSBAW0Ai
YXBwLWJvdW5kLWN1c3RvbS1zY2hlbWUiLCBAInRlc3QiXTsKKworICAgICAgICBOU0FycmF5ICpz
b3J0ZWRTY2hlbWVzID0gW3NjaGVtZXMgc29ydGVkQXJyYXlVc2luZ1NlbGVjdG9yOkBzZWxlY3Rv
cihjYXNlSW5zZW5zaXRpdmVDb21wYXJlOildOworCisgICAgICAgIGludCBsZW5ndGggPSBbc29y
dGVkU2NoZW1lcyBjb3VudF07CisgICAgICAgIEVYUEVDVF9FUShsZW5ndGgsIDIpOworICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKFtzb3J0ZWRTY2hlbWVzIG9iamVjdEF0SW5kZXg6aV0sIFtzY2hlbWVzVG9Db21wYXJl
IG9iamVjdEF0SW5kZXg6aV0pOworCisgICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCiBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIExvY2FsRmlsZXNBcmVBcHBCb3VuZCkKIHsKICAgICBpbml0aWFsaXplSW5BcHBCcm93
c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwpAQCAtMTI3Miw2ICsxMjkzLDUxIEBAIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTG9hZEZyb21IVE1MU3RyaW5nc0ZhaWxzSWZOb3RBcHBCb3VuZCkK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKK1RFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgQXBwQm91bmRDdXN0b21TY2hlbWUpCit7CisgICAgaW5pdGlhbGl6ZUlu
QXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKwor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RV
UkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJM
U2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3QiXTsK
KyAgICBbY29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
OllFU107CisKKyAgICBbc2NoZW1lSGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVy
Ol4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgICAgICBhdXRv
IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRh
c2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0
aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczptYWluQnl0ZXMgbGVuZ3RoOnN0cmxlbihtYWluQnl0ZXMpXV07Cisg
ICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAgfV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIAorICAg
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0Oi8vaG9zdC9tYWluLmh0bWwiXV07CisKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBf
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjpeKEJPT0wgaXNBcHBCb3VuZCkgeworICAgICAg
ICBFWFBFQ1RfVFJVRShpc0FwcEJvdW5kKTsKKyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgCisgICAgLy8gTWFrZSBz
dXJlIGFwcC1ib3VuZCBiZWhhdmlvciB3b3JrcyBmb3IgdGhpcyB3ZWJ2aWV3LgorICAgIGlzRG9u
ZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImxvY2F0aW9uLmhy
ZWY7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKCEhZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAInRlc3Q6Ly9ob3N0L21haW4uaHRtbCJdKTsKKworICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKK30KKwogI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>