<?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>227589</bug_id>
          
          <creation_ts>2021-07-01 11:16:16 -0700</creation_ts>
          <short_desc>WKWebView javascript injection doesn&apos;t work if app includes WKAppBoundDomains</short_desc>
          <delta_ts>2021-07-16 20:24:33 -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>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>iOS 14</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="jcesarmobile">juliosincesar</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>niklasmerz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1774176</commentid>
    <comment_count>0</comment_count>
    <who name="jcesarmobile">juliosincesar</who>
    <bug_when>2021-07-01 11:16:16 -0700</bug_when>
    <thetext>Sample app:
https://github.com/jcesarmobile/appboundsbug

Steps to reproduce:
1. Clone the app
2. Run the app on iOS 14 or newer (also affects iOS 15 beta 2)

Expected:
The background should be red

Actual behavior:
The background is white

JavaScript injection can be enabled back by adding:
webViewConfiguration.limitsNavigationsToAppBoundDomains = true

and adding localhost to the WKAppBoundDomains

&lt;key&gt;WKAppBoundDomains&lt;/key&gt;
&lt;array&gt;
    &lt;string&gt;localhost&lt;/string&gt;
&lt;/array&gt;


But according to this article https://webkit.org/blog/10882/app-bound-domains/, you should not need to add localhost as it&apos;s loading local assets.


Also the article says that to enable app bound domains you can just add the key
&lt;key&gt;WKAppBoundDomains&lt;/key&gt;
but that doesn&apos;t let the app to compile, you need to add an empty array.


TLDR: Adding WKAppBoundDomains key in the info.plist should not disable JavaScript injection in apps that load local assets, it should only disable it for the external domains that you add in the WKAppBoundDomains list if limitsNavigationsToAppBoundDomains is not set to true. But for local assets it should always work no matter what the value is and users should not need to add localhost to the list.


The sample app is a simple example, but adding WKAppBoundDomains key breaks all Ionic Capacitor plugins as they rely on the JavaScript injection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775251</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-07 07:10:44 -0700</bug_when>
    <thetext>Hi, thanks for filing this.

(In reply to jcesarmobile from comment #0)
&gt; Sample app:
&gt; https://github.com/jcesarmobile/appboundsbug
&gt; 
&gt; Steps to reproduce:
&gt; 1. Clone the app
&gt; 2. Run the app on iOS 14 or newer (also affects iOS 15 beta 2)
&gt; 
&gt; Expected:
&gt; The background should be red
&gt; 
&gt; Actual behavior:
&gt; The background is white
&gt; 
&gt; JavaScript injection can be enabled back by adding:
&gt; webViewConfiguration.limitsNavigationsToAppBoundDomains = true
&gt; 

This is expected. In the blog post we mention: &quot;Once the WKAppBoundDomains key is added to the Info.plist, all WKWebView instances in the application default to a mode where JavaScript injection, custom style sheets, cookie manipulation, and message handler use is denied. To gain back access to these APIs, a WKWebView can set the limitsNavigationsToAppBoundDomains flag in their WKWebView configuration&quot;.

&gt; and adding localhost to the WKAppBoundDomains
&gt; 
&gt; &lt;key&gt;WKAppBoundDomains&lt;/key&gt;
&gt; &lt;array&gt;
&gt;     &lt;string&gt;localhost&lt;/string&gt;
&gt; &lt;/array&gt;
&gt; 

This should not be needed. Just to clarify, if you remove this value from the Info.plist but keep limitsNavigationsToAppBoundDomains = YES in the configuration, JS injection does not work?

&gt; 
&gt; But according to this article
&gt; https://webkit.org/blog/10882/app-bound-domains/, you should not need to add
&gt; localhost as it&apos;s loading local assets.
&gt; 
&gt; 
&gt; Also the article says that to enable app bound domains you can just add the
&gt; key
&gt; &lt;key&gt;WKAppBoundDomains&lt;/key&gt;
&gt; but that doesn&apos;t let the app to compile, you need to add an empty array.
&gt; 

This may be an error in the docs. Thanks for pointing this out.

&gt; 
&gt; TLDR: Adding WKAppBoundDomains key in the info.plist should not disable
&gt; JavaScript injection in apps that load local assets, it should only disable
&gt; it for the external domains that you add in the WKAppBoundDomains list if
&gt; limitsNavigationsToAppBoundDomains is not set to true. But for local assets
&gt; it should always work no matter what the value is and users should not need
&gt; to add localhost to the list.
&gt; 
&gt; 
&gt; The sample app is a simple example, but adding WKAppBoundDomains key breaks
&gt; all Ionic Capacitor plugins as they rely on the JavaScript injection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775261</commentid>
    <comment_count>2</comment_count>
    <who name="jcesarmobile">juliosincesar</who>
    <bug_when>2021-07-07 07:51:47 -0700</bug_when>
    <thetext>&gt; This should not be needed. Just to clarify, if you remove this value from the Info.plist but keep limitsNavigationsToAppBoundDomains = YES in the configuration, JS injection does not work?

yeah, if I remove &quot;localhost&quot;, then the JavaScript injection doesn&apos;t work, even with limitsNavigationsToAppBoundDomains = true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775683</commentid>
    <comment_count>3</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-08 09:20:40 -0700</bug_when>
    <thetext>(In reply to jcesarmobile from comment #2)
&gt; &gt; This should not be needed. Just to clarify, if you remove this value from the Info.plist but keep limitsNavigationsToAppBoundDomains = YES in the configuration, JS injection does not work?
&gt; 
&gt; yeah, if I remove &quot;localhost&quot;, then the JavaScript injection doesn&apos;t work,
&gt; even with limitsNavigationsToAppBoundDomains = true

Thanks for the clarification, I am looking into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775684</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-08 09:20:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/80327452&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776821</commentid>
    <comment_count>5</comment_count>
      <attachid>433463</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-13 17:37:56 -0700</bug_when>
    <thetext>Created attachment 433463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777340</commentid>
    <comment_count>6</comment_count>
      <attachid>433463</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-15 15:08:50 -0700</bug_when>
    <thetext>Comment on attachment 433463
Patch

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

&gt; Source/WebCore/workers/service/server/SWServer.cpp:343
&gt; +static unsigned registrationCount(HashMap&lt;ServiceWorkerRegistrationKey, WeakPtr&lt;SWServerRegistration&gt;&gt; registrationMap)

If we hit this on a hot code path, we might want to cache the answer and perhaps update when a new SW is registered or removed.

I&apos;d suggest doing this work in the SWServer::addRegistration and SWServer::removeRegistration. Then you could use the variable in validateRegistrationDomain.

It looks like you might need to update the count in removeFromScopeToRegistrationMap, too, which is weird. I wonder why there is a separate method for that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777548</commentid>
    <comment_count>7</comment_count>
      <attachid>433687</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-16 11:30:30 -0700</bug_when>
    <thetext>Created attachment 433687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777549</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-16 11:30:56 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #6)
&gt; Comment on attachment 433463 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=433463&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/server/SWServer.cpp:343
&gt; &gt; +static unsigned registrationCount(HashMap&lt;ServiceWorkerRegistrationKey, WeakPtr&lt;SWServerRegistration&gt;&gt; registrationMap)
&gt; 
&gt; If we hit this on a hot code path, we might want to cache the answer and
&gt; perhaps update when a new SW is registered or removed.
&gt; 
&gt; I&apos;d suggest doing this work in the SWServer::addRegistration and
&gt; SWServer::removeRegistration. Then you could use the variable in
&gt; validateRegistrationDomain.
&gt; 
&gt; It looks like you might need to update the count in
&gt; removeFromScopeToRegistrationMap, too, which is weird. I wonder why there is
&gt; a separate method for that?

Added this in the latest patch. Going to wait for EWS before landing. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777571</commentid>
    <comment_count>9</comment_count>
      <attachid>433696</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-16 13:01:53 -0700</bug_when>
    <thetext>Created attachment 433696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777693</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-16 20:24:32 -0700</bug_when>
    <thetext>Committed r280016 (239758@main): &lt;https://commits.webkit.org/239758@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433696.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433463</attachid>
            <date>2021-07-13 17:37:56 -0700</date>
            <delta_ts>2021-07-16 11:30:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227589-20210713173755.patch</filename>
            <type>text/plain</type>
            <size>12628</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDVmYzNkNjhmNTAxY2Q2
NWJmOTdhNjVjZTA1ZWQwMDcwODhlYThkZi4uNDFlYzhhNjNlOGM2OTdlMmVkZjI4YmVkMGE3NTEx
NzRiNDJkYWNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA3LTEzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmll
dyBqYXZhc2NyaXB0IGluamVjdGlvbiBkb2Vzbid0IHdvcmsgaWYgYXBwIGluY2x1ZGVzIFdLQXBw
Qm91bmREb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjc1ODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwMzI3NDUyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBzZXJ2aWNlIHdv
cmtlciBjb2RlIHRvIGFsd2F5cyBhbGxvdyB3b3JrZXJzIG9uIGxvY2FsaG9zdCB0byBiZQorICAg
ICAgICByZWdpc3RlcmVkLiBBbHNvIGFkZCBsb2dpYyBzbyBsb2NhbGhvc3QgcmVnaXN0cmF0aW9u
cyBhcmVuJ3QgYWRkZWQKKyAgICAgICAgdG8gdGhlIHRvdGFsIGNvdW50IG9mIDMuCisKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlZ2lzdHJhdGlvbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp2YWxp
ZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbik6CisKIDIwMjEtMDctMTMgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIEFsbG93IHJ1bnRp
bWUgb3B0LW91dCBvZiBHTCByZW5kZXJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYWM4NzcwNDcwOWVhNWMwMzgz
M2QwODFjYmU0ZTY4YzI4OGFmODY3Yy4uZTUxYzc5ZjFjZGMzMjZjYWZhZTMyYmIwYTE5OTU3YjRm
YjA2YjE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0wNy0xMyAgS2F0ZSBDaGVu
ZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgamF2
YXNjcmlwdCBpbmplY3Rpb24gZG9lc24ndCB3b3JrIGlmIGFwcCBpbmNsdWRlcyBXS0FwcEJvdW5k
RG9tYWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3NTg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MDMyNzQ1Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBcHBzIHNob3VsZCBub3QgaGF2ZSB0
byBzcGVjaWZ5IGxvY2FsaG9zdCBpbiB0aGVpciBJbmZvLnBsaXN0IGluIG9yZGVyCisgICAgICAg
IHRvIGxvYWQgbG9jYWwgY29udGVudCBpbiBhcHAtYm91bmQgbW9kZS4gVGhpcyBwYXRjaCBhZGRz
IGEgY2hlY2sgZm9yCisgICAgICAgIGxvY2FsaG9zdCBvciBhIGxvb3BiYWNrIElQIGFkZHJlc3Mg
YW5kIGZvcmNlcyBhbiBhcHAgaW50byBhcHAtYm91bmQKKyAgICAgICAgbW9kZSBpbiB0aGlzIGNh
c2UuCisKKyAgICAgICAgU2luY2UgYWxsIGxheW91dCB0ZXN0cyB1c2UgbG9jYWxob3N0IGFuZCAx
MjcuMC4wLjEgYXMgdGVzdCBkb21haW5zLAorICAgICAgICB0aGlzIHBhdGNoIGFsc28gYWRkcyBh
IGNoZWNrIGZvciBlbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5Rm9yVGVzdGluZygpCisgICAgICAg
IHdoaWNoIGRldGVybWluZXMgaWYgd2UgYXJlIHJ1bm5pbmcgbGF5b3V0IHRlc3RzIGFuZCBkb2Vz
IG5vdCB0cmlnZ2VyCisgICAgICAgIHRoaXMgY2hlY2sgaW4gdGhhdCBjYXNlIHNvIHdlIGNhbiB0
ZXN0IG90aGVyIGJlaGF2aW9yLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKIDIwMjEtMDctMTMgIEthdGUg
Q2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBpT1MvdHZPUy93YXRjaE9TIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggNzE4ZDE5NjA0ZjFjNjg0NjYx
OGRiMDFmMWYxZmU4ZDhiNmI2M2I0Ny4uNjI2ZWY5NGYzZDVjNjI4ODE1OGMzNjY0ZmQ3NzNiYzk2
NmZjOWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHAKQEAgLTM0MCwxMCArMzQwLDIwIEBAIFNXU2VydmVyOjpTV1NlcnZlcihV
bmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgYm9vbCBwcm9jZXNzVGVybWlu
YXRpCiAgICAgYWxsU2VydmVycygpLmFkZCh0aGlzKTsKIH0KIAorc3RhdGljIHVuc2lnbmVkIHJl
Z2lzdHJhdGlvbkNvdW50KEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgV2Vh
a1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IHJlZ2lzdHJhdGlvbk1hcCkKK3sKKyAgICB1bnNp
Z25lZCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRvJiBrZXkgOiByZWdpc3RyYXRpb25NYXAua2V5
cygpKSB7CisgICAgICAgIGlmICghU2VjdXJpdHlPcmlnaW46OmlzTG9jYWxIb3N0T3JMb29wYmFj
a0lQQWRkcmVzcyhrZXkudG9wT3JpZ2luKCkuaG9zdCkpCisgICAgICAgICAgICBjb3VudCsrOwor
ICAgIH0KKyAgICByZXR1cm4gY291bnQ7Cit9CisKIHZvaWQgU1dTZXJ2ZXI6OnZhbGlkYXRlUmVn
aXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
bV9oYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgfHwgbV9oYXNSZWNlaXZlZEFwcEJvdW5kRG9t
YWlucykgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2FwcEJvdW5kRG9tYWlucy5jb250
YWlucyhkb21haW4pICYmIG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5rZXlzKCkuc2l6ZSgpIDwg
bWF4UmVnaXN0cmF0aW9uQ291bnQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTZWN1cml0
eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKGRvbWFpbi5zdHJpbmcoKSkg
fHwgKG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbikgJiYgcmVnaXN0cmF0aW9uQ291
bnQobV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwKSA8IG1heFJlZ2lzdHJhdGlvbkNvdW50KSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0zNTIsNyArMzYyLDcgQEAgdm9pZCBTV1Nl
cnZlcjo6dmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluLCBDb20KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9oYXNSZWNlaXZl
ZEFwcEJvdW5kRG9tYWlucyA9IHRydWU7CiAgICAgICAgIG1fYXBwQm91bmREb21haW5zID0gV1RG
TW92ZShhcHBCb3VuZERvbWFpbnMpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtX2FwcEJv
dW5kRG9tYWlucy5jb250YWlucyhkb21haW4pICYmIG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5r
ZXlzKCkuc2l6ZSgpIDwgbWF4UmVnaXN0cmF0aW9uQ291bnQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihTZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKGRv
bWFpbi5zdHJpbmcoKSkgfHwgKG1fYXBwQm91bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbikgJiYg
cmVnaXN0cmF0aW9uQ291bnQobV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwKSA8IG1heFJlZ2lzdHJh
dGlvbkNvdW50KSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGQwZmQ5N2QzM2U5N2E1MTViOWU4MGI3NDk0MWRhZWRmMDYzYTQwNzQu
LjQ5NTE0ZTdjNmM5Y2I4M2M2NmU4ZTAxZTE5OGZhZDIzODJiMWZjZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzMxNCw5ICszMzE0LDE1IEBAIHByaXZh
dGU6CiB9OwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotc3RhdGljIGJvb2wgc2hv
dWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1ZXN0VVJMKQorc3Rh
dGljIGJvb2wgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1
ZXN0VVJMLCBib29sIGlzUnVubmluZ1Rlc3QpCiB7Ci0gICAgcmV0dXJuIHJlcXVlc3RVUkwucHJv
dG9jb2xJc0Fib3V0KCkgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzRGF0YSgpIHx8IHJlcXVlc3RV
UkwucHJvdG9jb2xJc0Jsb2IoKSB8fCByZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkgfHwgcmVxdWVz
dFVSTC5wcm90b2NvbElzSmF2YVNjcmlwdCgpOworICAgIHJldHVybiAhaXNSdW5uaW5nVGVzdAor
ICAgICAgICAmJiAoU2VjdXJpdHlPcmlnaW46OmlzTG9jYWxIb3N0T3JMb29wYmFja0lQQWRkcmVz
cyhyZXF1ZXN0VVJMLmhvc3QoKSkKKyAgICAgICAgICAgIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJ
c0Fib3V0KCkKKyAgICAgICAgICAgIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJc0RhdGEoKQorICAg
ICAgICAgICAgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzQmxvYigpCisgICAgICAgICAgICB8fCBy
ZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkKKyAgICAgICAgICAgIHx8IHJlcXVlc3RVUkwucHJvdG9j
b2xJc0phdmFTY3JpcHQoKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpzZXRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChib29sIGlzTWFpbkZyYW1lLCBj
b25zdCBVUkwmIHJlcXVlc3RVUkwsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCkBAIC0zMzM0LDcgKzMzNDAsNyBA
QCBib29sIFdlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbkFuZENo
ZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haQogICAgIGlmIChtX2lnbm9yZXNBcHBCb3VuZERvbWFp
bnMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGlzTWFpbkZyYW1lICYmIHNob3Vs
ZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKHJlcXVlc3RVUkwpKSB7CisgICAgaWYgKGlzTWFp
bkZyYW1lICYmIHNob3VsZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKHJlcXVlc3RVUkwsIHdl
YnNpdGVEYXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCkuZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFj
eUZvclRlc3RpbmcoKSkpIHsKICAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXM7CiAgICAgICAgIG1fbGltaXRzTmF2aWdh
dGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRydWU7CiAgICAgfQpAQCAtNTQxNyw3ICs1NDIzLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBpZiAoc2hvdWxkRXhwZWN0U2FmZUJyb3dz
aW5nUmVzdWx0ID09IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6WWVzKQogICAgICAg
ICBiZWdpblNhZmVCcm93c2luZ0NoZWNrKHJlcXVlc3QudXJsKCksIGZyYW1lLmlzTWFpbkZyYW1l
KCksIGxpc3RlbmVyKTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0gICAgYm9vbCBz
aG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID0gIWZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgc2hv
dWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQocmVxdWVzdC51cmwoKSk7CisgICAgYm9vbCBz
aG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID0gIWZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgc2hv
dWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQocmVxdWVzdC51cmwoKSwgd2Vic2l0ZURhdGFT
dG9yZSgpLmNvbmZpZ3VyYXRpb24oKS5lbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5Rm9yVGVzdGlu
ZygpKTsKICAgICBhdXRvIGhvc3QgPSBzaG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID8gZnJh
bWVJbmZvLnNlY3VyaXR5T3JpZ2luLmhvc3QgOiByZXF1ZXN0LnVybCgpLmhvc3QoKTsKICAgICBh
dXRvIHByb3RvY29sID0gc2hvdWxkU2VuZFNlY3VyaXR5T3JpZ2luRGF0YSA/IGZyYW1lSW5mby5z
ZWN1cml0eU9yaWdpbi5wcm90b2NvbCA6IHJlcXVlc3QudXJsKCkucHJvdG9jb2woKTsKICAgICBt
X3dlYnNpdGVEYXRhU3RvcmUtPmJlZ2luQXBwQm91bmREb21haW5DaGVjayhob3N0LnRvU3RyaW5n
KCksIHByb3RvY29sLnRvU3RyaW5nKCksIGxpc3RlbmVyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhODMwMWEwNTMzODM3ZWNiZThkOGM2NTQ1
YTE0Y2MyOThmZThlZmUxLi42YjdkNmM0YzExNzFkODFmZDZmM2I4NjU0NzM5ZDlkODRlZWU5YTAx
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMjEtMDctMTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBh
cHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IGphdmFzY3JpcHQgaW5qZWN0aW9uIGRvZXNu
J3Qgd29yayBpZiBhcHAgaW5jbHVkZXMgV0tBcHBCb3VuZERvbWFpbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU4OQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODAzMjc0NTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgbmV3IHRlc3RzLiBSZW1vdmVkIGxvY2FsaG9zdCBhbmQgMTI3LjAu
MC4xIGZyb20gdGhlIEluZm8ucGxpc3QKKyAgICAgICAgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmUg
dGVzdHMuIFJlcGxhY2UgdGhlbSB3aXRoIG90aGVyIGRvbWFpbnMgc28gd2UKKyAgICAgICAgc3Rp
bGwgdGVzdCB0aGUgbWF4IGNvdW50LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9JbmZvLnBs
aXN0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIxLTA3LTEzICBLZXZpbiBOZWFs
ICA8a2V2aW5fbmVhbEBhcHBsZS5jb20+CiAKICAgICAgICAgW3Jlc3VsdHMud2Via2l0Lm9yZ10g
bGlua2lmeSB1cmxzIGluIGNvbW1pdCBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9JbmZvLnBsaXN0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmZvLnBsaXN0CmluZGV4
IGQzMzY1M2ZkMTAwYjg4M2RjYTI1YmQ0ZWM2ZjFkYjgxZjg3MThjNWEuLjQ1N2FjN2EzZDNlMGVm
NGRkYTU5NmFlYTJkMTRjYjIxOTE4ZmZhMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvSW5mby5wbGlzdAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luZm8ucGxpc3QKQEAgLTEx
LDEwICsxMSw3IEBACiAJCTxzdHJpbmc+YXBwbGUuY29tPC9zdHJpbmc+CiAJCTxzdHJpbmc+c3Vi
LmRvbWFpbi53ZWJraXQub3JnL3JvYWQvdG8vbm93aGVyZS88L3N0cmluZz4KIAkJPHN0cmluZz53
ZWJraXQub3JnPC9zdHJpbmc+Ci0JCTxzdHJpbmc+bG9jYWxob3N0OjgwMDA8L3N0cmluZz4KLQkJ
PHN0cmluZz5sb2NhbGhvc3Qvcm9hZC90by9ub3doZXJlLzwvc3RyaW5nPgogCQk8c3RyaW5nPmZp
bGU6Ly8vc29tZS9maWxlPC9zdHJpbmc+Ci0JCTxzdHJpbmc+MTI3LjAuMC4xPC9zdHJpbmc+CiAJ
CTxzdHJpbmc+PC9zdHJpbmc+CiAJCTxzdHJpbmc+ICAgPC9zdHJpbmc+CiAJCTxzdHJpbmc+aHR0
cHM6Ly9zdWIuZG9tYWluLndlYmtpdC5vcmc8L3N0cmluZz4KQEAgLTI0LDcgKzIxLDkgQEAKIAkJ
PHN0cmluZz5odHRwOi8vd3d3LmV4YW1wbGUuY29tLzwvc3RyaW5nPgogCQk8c3RyaW5nPmh0dHA6
Ly9iYXIuY29tLzwvc3RyaW5nPgogCQk8c3RyaW5nPmh0dHA6Ly9mb28uY29tLzwvc3RyaW5nPgor
CQk8c3RyaW5nPmh0dHBzOi8vc2VhcmNoZm9ybG9uZ2JvYXJkcy5iaXo8L3N0cmluZz4KIAkJPHN0
cmluZz5hcHAtYm91bmQtY3VzdG9tLXNjaGVtZTo8L3N0cmluZz4KKwkJPHN0cmluZz5sb25nYm9h
cmRzaG9wLmJpejwvc3RyaW5nPgogCQk8c3RyaW5nPnNob3VsZC1ub3QtYmUtaW5jbHVkZWQ6PC9z
dHJpbmc+CiAJPC9hcnJheT4KIAk8a2V5PkNGQnVuZGxlTmFtZTwva2V5PgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tCmluZGV4IDliZDVkMTkyZmJhMDE5MDMyMGQzZTNjMDY1YzFkYjU3NGM0Y2E2MDgu
LjdiOGI1OWY4ZTdiZjdlMjA2YmE2YTliZjhlZDMwYzY0Yzg5ZDVmZGUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0KQEAgLTI3MSw3ICsyNzEsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IEFwcEJvdW5kRG9tYWlucykKICAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpOwogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGRlZmF1bHREYXRhU3RvcmVdIF9hcHBCb3VuZERvbWFpbnM6XihOU0FycmF5PE5TU3RyaW5nICo+
ICpkb21haW5zKSB7Ci0gICAgICAgIE5TQXJyYXkgKmRvbWFpbnNUb0NvbXBhcmUgPSBAW0AiMTI3
LjAuMC4xIiwgQCJhcHBsZS5jb20iLCBAImJhci5jb20iLCBAImV4YW1wbGUuY29tIiwgQCJmb28u
Y29tIiwgQCJsb2NhbGhvc3QiLCBAInRlc3Rkb21haW4xIiwgIEAid2Via2l0Lm9yZyJdOworICAg
ICAgICBOU0FycmF5ICpkb21haW5zVG9Db21wYXJlID0gQFtAImFwcGxlLmNvbSIsIEAiYmFyLmNv
bSIsIEAiZXhhbXBsZS5jb20iLCBAImZvby5jb20iLCBAImxvbmdib2FyZHNob3AuYml6IiwgQCJz
ZWFyY2hmb3Jsb25nYm9hcmRzLmJpeiIsIEAidGVzdGRvbWFpbjEiLCAgQCJ3ZWJraXQub3JnIl07
CiAKICAgICAgICAgTlNBcnJheSAqc29ydGVkRG9tYWlucyA9IFtkb21haW5zIHNvcnRlZEFycmF5
VXNpbmdTZWxlY3RvcjpAc2VsZWN0b3IoY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTopXTsKIApAQCAt
MzYxLDYgKzM2MSw2MCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0UHJvdG9jb2xJ
c0FwcEJvdW5kKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAor
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBMb2NhbEhvc3RJc0FwcEJvdW5kKQoreworICAgIGlu
aXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CisgICAgaXNEb25lID0g
ZmFsc2U7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0
TlMoW1tJbkFwcEJyb3dzZXJTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNj
aGVtZTpAImluLWFwcC1icm93c2VyIl07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGltaXRzTmF2
aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczpZRVNdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbQXBwQm91bmREb21haW5EZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImluLWFwcC1icm93c2VyOi8vbG9jYWxob3N0L2FwcC1ib3VuZC1kb21haW4t
bG9hZCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbZGVsZWdh
dGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgaXNEb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX2lzRm9yY2VkSW50b0FwcEJvdW5kTW9kZTpeKEJPT0wgaXNGb3JjZWRJbnRv
QXBwQm91bmRNb2RlKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzRm9yY2VkSW50b0FwcEJvdW5k
TW9kZSk7CisgICAgICAgIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7
CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIExvb3BiYWNr
SVBBZGRyZXNzSXNBcHBCb3VuZCkKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFj
eVRlc3RTZXR0aW5ncygpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFu
ZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6
WUVTXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0FwcEJvdW5k
RG9tYWluRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRl
OmRlbGVnYXRlLmdldCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3Nl
cjovLzEyNy4wLjAuMS9hcHAtYm91bmQtZG9tYWluLWxvYWQiXV07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9pc0ZvcmNlZEludG9B
cHBCb3VuZE1vZGU6XihCT09MIGlzRm9yY2VkSW50b0FwcEJvdW5kTW9kZSkgeworICAgICAgICBF
WFBFQ1RfVFJVRShpc0ZvcmNlZEludG9BcHBCb3VuZE1vZGUpOworICAgICAgICBjbGVhblVwSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKwogc3Rh
dGljIE5TU3RyaW5nICpzdHlsZVNoZWV0U291cmNlID0gQCJib2R5IHsgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW4gIWltcG9ydGFudDsgfSI7CiBzdGF0aWMgTlNTdHJpbmcgKmJhY2tncm91bmRDb2xv
clNjcmlwdCA9IEAid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIjsKIHN0YXRpYyBjb25zdCBjaGFy
KiByZWRJblJHQiA9ICJyZ2IoMjU1LCAwLCAwKSI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433687</attachid>
            <date>2021-07-16 11:30:30 -0700</date>
            <delta_ts>2021-07-16 13:01:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227589-20210716113029.patch</filename>
            <type>text/plain</type>
            <size>15335</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjIzYTI2MmIwYWQ1N2Qz
ZTRkZThiZGUzNTEwYjg2YTY3NDlkNWFiOC4uOGVjY2M1OTk1NDViZGQ3NGE5ZmJjNjcyNWJlMjY5
OWFlYjhmNDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA3LTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmll
dyBqYXZhc2NyaXB0IGluamVjdGlvbiBkb2Vzbid0IHdvcmsgaWYgYXBwIGluY2x1ZGVzIFdLQXBw
Qm91bmREb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjc1ODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwMzI3NDUyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVXBkYXRlIHNlcnZpY2Ugd29y
a2VyIGNvZGUgdG8gYWx3YXlzIGFsbG93IHdvcmtlcnMgb24gbG9jYWxob3N0IHRvIGJlCisgICAg
ICAgIHJlZ2lzdGVyZWQuIEFsc28gYWRkIGxvZ2ljIHNvIGxvY2FsaG9zdCByZWdpc3RyYXRpb25z
IGFyZW4ndCBhZGRlZAorICAgICAgICB0byB0aGUgdG90YWwgY291bnQgb2YgMyByZWdpc3RyYXRp
b25zLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgV2Ug
b25seSB3YW50IHRvIGluY3JlbWVudCB0aGUgY291bnQgaWYgdGhpcyByZWdpc3RyYXRpb24gaXMg
bm90CisgICAgICAgIGFscmVhZHkgaW4gdGhlIG1hcHBpbmcsIG90aGVyd2lzZSBpdCBnZXRzIGRv
dWJsZSBjb3VudGVkLgorCisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlUmVnaXN0
cmF0aW9uKToKKyAgICAgICAgRGl0dG8gZm9yIHJlbW92aW5nIGEgcmVnaXN0cmF0aW9uLCB3ZSBz
aG91bGQgb25seSBkZWNyZW1lbnQgdGhlIGNvdW50CisgICAgICAgIGlmIHdlIGZpbmQgYSBtYXRj
aGluZyBrZXkuCisKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp2YWxpZGF0ZVJlZ2lzdHJh
dGlvbkRvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlRnJvbVNjb3Bl
VG9SZWdpc3RyYXRpb25NYXApOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKwogMjAyMS0wNy0xNSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZldGNoUmVzcG9uc2UuZm9ybURhdGEoKSBzaG91
bGQgcmVqZWN0IHByb21pc2Ugd2l0aCBhIFR5cGVFcnJvciBpZiB0aGUgYm9keSBpcyBudWxsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGM1ZWI2ZjQ2M2QwZDE5ZjkxYTgyMDdmNzZkYTk0MGQ0NTYxNzM4NmMuLmRmMDM0
ODQzNTFkNGE0NjY1ZmNlNDA2NTI4MTRhMWE1Njk2OGY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMjEtMDctMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5j
b20+CisKKyAgICAgICAgV0tXZWJWaWV3IGphdmFzY3JpcHQgaW5qZWN0aW9uIGRvZXNuJ3Qgd29y
ayBpZiBhcHAgaW5jbHVkZXMgV0tBcHBCb3VuZERvbWFpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU4OQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODAzMjc0NTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAg
ICAgICBBcHBzIHNob3VsZCBub3QgaGF2ZSB0byBzcGVjaWZ5IGxvY2FsaG9zdCBpbiB0aGVpciBJ
bmZvLnBsaXN0IGluIG9yZGVyCisgICAgICAgIHRvIGxvYWQgbG9jYWwgY29udGVudCBpbiBhcHAt
Ym91bmQgbW9kZS4gVGhpcyBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yCisgICAgICAgIGxvY2FsaG9z
dCBvciBhIGxvb3BiYWNrIElQIGFkZHJlc3MgYW5kIGZvcmNlcyBhbiBhcHAgaW50byBhcHAtYm91
bmQKKyAgICAgICAgbW9kZSBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgU2luY2UgYWxsIGxheW91
dCB0ZXN0cyB1c2UgbG9jYWxob3N0IGFuZCAxMjcuMC4wLjEgYXMgdGVzdCBkb21haW5zLAorICAg
ICAgICB0aGlzIHBhdGNoIGFsc28gYWRkcyBhIGNoZWNrIGZvciBlbmFibGVJbkFwcEJyb3dzZXJQ
cml2YWN5Rm9yVGVzdGluZygpCisgICAgICAgIHdoaWNoIGRldGVybWluZXMgaWYgd2UgYXJlIHJ1
bm5pbmcgbGF5b3V0IHRlc3RzIGFuZCBkb2VzIG5vdCB0cmlnZ2VyCisgICAgICAgIHRoaXMgY2hl
Y2sgaW4gdGhhdCBjYXNlIHNvIHdlIGNhbiB0ZXN0IG90aGVyIGJlaGF2aW9yLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFRy
ZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik6CisKIDIwMjEtMDctMTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRG8gbm90IGFib3J0IG9uZ29pbmcgSURCIHRyYW5zYWN0aW9uIHN5bmNocm9ub3Vz
bHkgb24gbm9uLWltbWluZW50IFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA3MThk
MTk2MDRmMWM2ODQ2NjE4ZGIwMWYxZjFmZThkOGI2YjYzYjQ3Li45ODI3NDVlMzc4NzUyMjAwODVm
ZmNjMmQ2ZTU3ZjBkZTQ4ZDIwNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTg0LDYgKzE4NCw5IEBAIHZvaWQgU1dT
ZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJCiAKIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVu
aXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9uKQogeworICAgIGlm
ICghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkp
ICYmICFTZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJlZ2lz
dHJhdGlvbi0+a2V5KCkudG9wT3JpZ2luKCkuaG9zdCkpCisgICAgICAgIG1fdW5pcXVlUmVnaXN0
cmF0aW9uQ291bnQrKzsKKwogICAgIG1fb3JpZ2luU3RvcmUtPmFkZChyZWdpc3RyYXRpb24tPmtl
eSgpLnRvcE9yaWdpbigpKTsKICAgICBhdXRvIHJlZ2lzdHJhdGlvbklEID0gcmVnaXN0cmF0aW9u
LT5pZGVudGlmaWVyKCk7CiAgICAgQVNTRVJUKCFtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuY29u
dGFpbnMocmVnaXN0cmF0aW9uLT5rZXkoKSkpOwpAQCAtMTk4LDggKzIwMSwxMSBAQCB2b2lkIFNX
U2VydmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgcmVnaXN0cmF0aQogICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOwogICAgIAogICAgIGF1
dG8gaXQgPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZmluZChyZWdpc3RyYXRpb24tPmtleSgp
KTsKLSAgICBpZiAoaXQgIT0gbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmVuZCgpICYmIGl0LT52
YWx1ZSA9PSByZWdpc3RyYXRpb24uZ2V0KCkpCisgICAgaWYgKGl0ICE9IG1fc2NvcGVUb1JlZ2lz
dHJhdGlvbk1hcC5lbmQoKSAmJiBpdC0+dmFsdWUgPT0gcmVnaXN0cmF0aW9uLmdldCgpKSB7CiAg
ICAgICAgIG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5yZW1vdmUoaXQpOworICAgICAgICBpZiAo
IVNlY3VyaXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MocmVnaXN0cmF0
aW9uLT5rZXkoKS50b3BPcmlnaW4oKS5ob3N0KSkKKyAgICAgICAgICAgIG1fdW5pcXVlUmVnaXN0
cmF0aW9uQ291bnQtLTsKKyAgICB9CiAKICAgICBtX29yaWdpblN0b3JlLT5yZW1vdmUocmVnaXN0
cmF0aW9uLT5rZXkoKS50b3BPcmlnaW4oKSk7CiAgICAgaWYgKG1fcmVnaXN0cmF0aW9uU3RvcmUp
CkBAIC0zNDMsMTYgKzM0OSwxNiBAQCBTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3Jp
Z2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aQogdm9pZCBTV1Nl
cnZlcjo6dmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCB8fCBtX2hhc1Jl
Y2VpdmVkQXBwQm91bmREb21haW5zKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fYXBw
Qm91bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbikgJiYgbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFw
LmtleXMoKS5zaXplKCkgPCBtYXhSZWdpc3RyYXRpb25Db3VudCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFNlY3VyaXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3Mo
ZG9tYWluLnN0cmluZygpKSB8fCAobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMoZG9tYWluKSAm
JiBtX3VuaXF1ZVJlZ2lzdHJhdGlvbkNvdW50IDwgbWF4UmVnaXN0cmF0aW9uQ291bnQpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIG1fYXBwQm91bmREb21haW5zQ2FsbGJh
Y2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGRvbWFpbiA9IFdURk1vdmUo
ZG9tYWluKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byYmIGFwcEJvdW5kRG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faGFzUmVjZWl2ZWRBcHBCb3VuZERvbWFp
bnMgPSB0cnVlOwogICAgICAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoYXBwQm91bmRE
b21haW5zKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9hcHBCb3VuZERvbWFpbnMuY29u
dGFpbnMoZG9tYWluKSAmJiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAua2V5cygpLnNpemUoKSA8
IG1heFJlZ2lzdHJhdGlvbkNvdW50KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU2VjdXJp
dHlPcmlnaW46OmlzTG9jYWxIb3N0T3JMb29wYmFja0lQQWRkcmVzcyhkb21haW4uc3RyaW5nKCkp
IHx8IChtX2FwcEJvdW5kRG9tYWlucy5jb250YWlucyhkb21haW4pICYmIG1fdW5pcXVlUmVnaXN0
cmF0aW9uQ291bnQgPCBtYXhSZWdpc3RyYXRpb25Db3VudCkpOwogICAgIH0pOwogfQogCkBAIC0x
MDExLDYgKzEwMTcsOSBAQCB2b2lkIFNXU2VydmVyOjpoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCkK
IAogdm9pZCBTV1NlcnZlcjo6cmVtb3ZlRnJvbVNjb3BlVG9SZWdpc3RyYXRpb25NYXAoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogeworICAgIGlmIChtX3Njb3BlVG9S
ZWdpc3RyYXRpb25NYXAuY29udGFpbnMoa2V5KSAmJiAhU2VjdXJpdHlPcmlnaW46OmlzTG9jYWxI
b3N0T3JMb29wYmFja0lQQWRkcmVzcyhrZXkudG9wT3JpZ2luKCkuaG9zdCkpCisgICAgICAgIG1f
dW5pcXVlUmVnaXN0cmF0aW9uQ291bnQtLTsKKwogICAgIG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1h
cC5yZW1vdmUoa2V5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDZiZDY4OTMzNDRlZWRmMmYwY2JkZGQyYTE2MTY2YTky
MWUzM2ZlMDYuLmUxMTkxNjNhMGZiZWI3YzhkZjMwNTE3NDc1YTZkNWQ0NGJlMTI5OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTI4Myw2ICsyODMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IG1fYXBwQm91bmREb21haW5zOwogICAgIGJvb2wgbV9oYXNTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNSZWNlaXZlZEFwcEJvdW5kRG9t
YWlucyB7IGZhbHNlIH07CisgICAgdW5zaWduZWQgbV91bmlxdWVSZWdpc3RyYXRpb25Db3VudCB7
IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJhYzI4YjdiOWRiNGU0N2QxNWYwN2M0MzgyZDBmZGVj
NjhiNTliNWYuLjZhODdkZjMyMDcxNGVkZmNmZWMwZDUwOTQ1YzFlZTQyMGFlODExNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzMxNiw5ICszMzE2LDE1
IEBAIHByaXZhdGU6CiB9OwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotc3RhdGlj
IGJvb2wgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1ZXN0
VVJMKQorc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3Qg
VVJMJiByZXF1ZXN0VVJMLCBib29sIGlzUnVubmluZ1Rlc3QpCiB7Ci0gICAgcmV0dXJuIHJlcXVl
c3RVUkwucHJvdG9jb2xJc0Fib3V0KCkgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzRGF0YSgpIHx8
IHJlcXVlc3RVUkwucHJvdG9jb2xJc0Jsb2IoKSB8fCByZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkg
fHwgcmVxdWVzdFVSTC5wcm90b2NvbElzSmF2YVNjcmlwdCgpOworICAgIHJldHVybiAhaXNSdW5u
aW5nVGVzdAorICAgICAgICAmJiAoU2VjdXJpdHlPcmlnaW46OmlzTG9jYWxIb3N0T3JMb29wYmFj
a0lQQWRkcmVzcyhyZXF1ZXN0VVJMLmhvc3QoKSkKKyAgICAgICAgICAgIHx8IHJlcXVlc3RVUkwu
cHJvdG9jb2xJc0Fib3V0KCkKKyAgICAgICAgICAgIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJc0Rh
dGEoKQorICAgICAgICAgICAgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzQmxvYigpCisgICAgICAg
ICAgICB8fCByZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkKKyAgICAgICAgICAgIHx8IHJlcXVlc3RV
UkwucHJvdG9jb2xJc0phdmFTY3JpcHQoKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChib29sIGlzTWFp
bkZyYW1lLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCkBAIC0zMzM2LDcg
KzMzNDIsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haQogICAgIGlmIChtX2lnbm9yZXNBcHBC
b3VuZERvbWFpbnMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGlzTWFpbkZyYW1l
ICYmIHNob3VsZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKHJlcXVlc3RVUkwpKSB7CisgICAg
aWYgKGlzTWFpbkZyYW1lICYmIHNob3VsZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKHJlcXVl
c3RVUkwsIHdlYnNpdGVEYXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCkuZW5hYmxlSW5BcHBCcm93
c2VyUHJpdmFjeUZvclRlc3RpbmcoKSkpIHsKICAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXM7CiAgICAgICAgIG1fbGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRydWU7CiAgICAgfQpAQCAtNTQyOSw3
ICs1NDM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBpZiAoc2hvdWxkRXhwZWN0
U2FmZUJyb3dzaW5nUmVzdWx0ID09IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6WWVz
KQogICAgICAgICBiZWdpblNhZmVCcm93c2luZ0NoZWNrKHJlcXVlc3QudXJsKCksIGZyYW1lLmlz
TWFpbkZyYW1lKCksIGxpc3RlbmVyKTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0g
ICAgYm9vbCBzaG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID0gIWZyYW1lLmlzTWFpbkZyYW1l
KCkgJiYgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQocmVxdWVzdC51cmwoKSk7Cisg
ICAgYm9vbCBzaG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID0gIWZyYW1lLmlzTWFpbkZyYW1l
KCkgJiYgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQocmVxdWVzdC51cmwoKSwgd2Vi
c2l0ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRpb24oKS5lbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
Rm9yVGVzdGluZygpKTsKICAgICBhdXRvIGhvc3QgPSBzaG91bGRTZW5kU2VjdXJpdHlPcmlnaW5E
YXRhID8gZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLmhvc3QgOiByZXF1ZXN0LnVybCgpLmhvc3Qo
KTsKICAgICBhdXRvIHByb3RvY29sID0gc2hvdWxkU2VuZFNlY3VyaXR5T3JpZ2luRGF0YSA/IGZy
YW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90b2NvbCA6IHJlcXVlc3QudXJsKCkucHJvdG9jb2wo
KTsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmJlZ2luQXBwQm91bmREb21haW5DaGVjayhob3N0
LnRvU3RyaW5nKCksIHByb3RvY29sLnRvU3RyaW5nKCksIGxpc3RlbmVyKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZmI4ZWJhYzViM2Q3MmFj
Y2RkNzQ2YTI0Y2I1NDE4YTIyMzBiYzQyLi4wZjRmNzAxMTJkNzJhYjg1NzUzZDQ5MGIzMDU4ZGE2
NTc0ZmUzZjg3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDctMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IGphdmFzY3JpcHQgaW5qZWN0
aW9uIGRvZXNuJ3Qgd29yayBpZiBhcHAgaW5jbHVkZXMgV0tBcHBCb3VuZERvbWFpbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU4OQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODAzMjc0NTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQg
RnVsZ2hhbS4KKworICAgICAgICBBZGRlZCBuZXcgdGVzdHMuIFJlbW92ZWQgbG9jYWxob3N0IGFu
ZCAxMjcuMC4wLjEgZnJvbSB0aGUgSW5mby5wbGlzdAorICAgICAgICB0byBhdm9pZCBmYWxzZSBw
b3NpdGl2ZSB0ZXN0cy4gUmVwbGFjZSB0aGVtIHdpdGggb3RoZXIgZG9tYWlucyBzbyB3ZQorICAg
ICAgICBzdGlsbCB0ZXN0IHRoZSBtYXggY291bnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L0luZm8ucGxpc3Q6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjEtMDctMTUgIFJ5
YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
dXBkYXRlIG15IHN0YXR1cyBpbiBjb250cmlidXRvcnMuanNvbiB0byByZXZpZXdlci4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5mby5wbGlzdCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvSW5mby5wbGlzdAppbmRleCBkMzM2NTNmZDEwMGI4ODNkY2EyNWJkNGVjNmYxZGI4MWY4NzE4
YzVhLi40NTdhYzdhM2QzZTBlZjRkZGE1OTZhZWEyZDE0Y2IyMTkxOGZmYTE0IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0luZm8ucGxpc3QKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9JbmZvLnBsaXN0CkBAIC0xMSwxMCArMTEsNyBAQAogCQk8c3RyaW5nPmFwcGxlLmNvbTwvc3Ry
aW5nPgogCQk8c3RyaW5nPnN1Yi5kb21haW4ud2Via2l0Lm9yZy9yb2FkL3RvL25vd2hlcmUvPC9z
dHJpbmc+CiAJCTxzdHJpbmc+d2Via2l0Lm9yZzwvc3RyaW5nPgotCQk8c3RyaW5nPmxvY2FsaG9z
dDo4MDAwPC9zdHJpbmc+Ci0JCTxzdHJpbmc+bG9jYWxob3N0L3JvYWQvdG8vbm93aGVyZS88L3N0
cmluZz4KIAkJPHN0cmluZz5maWxlOi8vL3NvbWUvZmlsZTwvc3RyaW5nPgotCQk8c3RyaW5nPjEy
Ny4wLjAuMTwvc3RyaW5nPgogCQk8c3RyaW5nPjwvc3RyaW5nPgogCQk8c3RyaW5nPiAgIDwvc3Ry
aW5nPgogCQk8c3RyaW5nPmh0dHBzOi8vc3ViLmRvbWFpbi53ZWJraXQub3JnPC9zdHJpbmc+CkBA
IC0yNCw3ICsyMSw5IEBACiAJCTxzdHJpbmc+aHR0cDovL3d3dy5leGFtcGxlLmNvbS88L3N0cmlu
Zz4KIAkJPHN0cmluZz5odHRwOi8vYmFyLmNvbS88L3N0cmluZz4KIAkJPHN0cmluZz5odHRwOi8v
Zm9vLmNvbS88L3N0cmluZz4KKwkJPHN0cmluZz5odHRwczovL3NlYXJjaGZvcmxvbmdib2FyZHMu
Yml6PC9zdHJpbmc+CiAJCTxzdHJpbmc+YXBwLWJvdW5kLWN1c3RvbS1zY2hlbWU6PC9zdHJpbmc+
CisJCTxzdHJpbmc+bG9uZ2JvYXJkc2hvcC5iaXo8L3N0cmluZz4KIAkJPHN0cmluZz5zaG91bGQt
bm90LWJlLWluY2x1ZGVkOjwvc3RyaW5nPgogCTwvYXJyYXk+CiAJPGtleT5DRkJ1bmRsZU5hbWU8
L2tleT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCBjYTllYTdiMjM0MTRjNzNjM2ViNDY2
ODJjZmJjM2JlNzNiNTYyZTdhLi43YjhiNTlmOGU3YmY3ZTIwNmJhNmE5YmY4ZWQzMGM2NGM4OWQ1
ZmRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNzEsNyArMjcxLDcgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbnMpCiAgICAgaW5pdGlhbGl6ZUluQXBw
QnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfYXBwQm91bmREb21haW5zOl4o
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgewotICAgICAgICBOU0FycmF5ICpkb21haW5z
VG9Db21wYXJlID0gQFtAIjEyNy4wLjAuMSIsIEAiYXBwbGUuY29tIiwgQCJiYXIuY29tIiwgQCJl
eGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0IiwgQCJ0ZXN0ZG9tYWluMSIsICBA
IndlYmtpdC5vcmciXTsKKyAgICAgICAgTlNBcnJheSAqZG9tYWluc1RvQ29tcGFyZSA9IEBbQCJh
cHBsZS5jb20iLCBAImJhci5jb20iLCBAImV4YW1wbGUuY29tIiwgQCJmb28uY29tIiwgQCJsb25n
Ym9hcmRzaG9wLmJpeiIsIEAic2VhcmNoZm9ybG9uZ2JvYXJkcy5iaXoiLCBAInRlc3Rkb21haW4x
IiwgIEAid2Via2l0Lm9yZyJdOwogCiAgICAgICAgIE5TQXJyYXkgKnNvcnRlZERvbWFpbnMgPSBb
ZG9tYWlucyBzb3J0ZWRBcnJheVVzaW5nU2VsZWN0b3I6QHNlbGVjdG9yKGNhc2VJbnNlbnNpdGl2
ZUNvbXBhcmU6KV07CiAKQEAgLTM2MSw2ICszNjEsNjAgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBBYm91dFByb3RvY29sSXNBcHBCb3VuZCkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiB9CiAKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTG9jYWxIb3N0SXNB
cHBCb3VuZCkKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5n
cygpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNj
aGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFu
ZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOworICAgIFtjb25maWd1
cmF0aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6WUVTXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0FwcEJvdW5kRG9tYWluRGVsZWdh
dGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovL2xvY2FsaG9z
dC9hcHAtYm91bmQtZG9tYWluLWxvYWQiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAg
IGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9pc0ZvcmNlZEludG9BcHBCb3VuZE1vZGU6
XihCT09MIGlzRm9yY2VkSW50b0FwcEJvdW5kTW9kZSkgeworICAgICAgICBFWFBFQ1RfVFJVRShp
c0ZvcmNlZEludG9BcHBCb3VuZE1vZGUpOworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJp
dmFjeVRlc3RTZXR0aW5ncygpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBMb29wYmFja0lQQWRkcmVzc0lzQXBwQm91bmQpCit7CisgICAgaW5pdGlhbGl6
ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0lu
QXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAi
aW4tYXBwLWJyb3dzZXIiXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zOllFU107CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8xMjcuMC4wLjEvYXBwLWJvdW5kLWRvbWFpbi1sb2FkIl1d
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFtkZWxlZ2F0ZSB3YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfaXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlOl4oQk9PTCBpc0ZvcmNlZEludG9BcHBCb3Vu
ZE1vZGUpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlKTsK
KyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Cit9CisKIHN0YXRpYyBOU1N0cmluZyAqc3R5bGVTaGVldFNvdXJjZSA9IEAiYm9k
eSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7IH0iOwogc3RhdGljIE5TU3Ry
aW5nICpiYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSBAIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7
CiBzdGF0aWMgY29uc3QgY2hhciogcmVkSW5SR0IgPSAicmdiKDI1NSwgMCwgMCkiOwpAQCAtODA2
LDcgKzg2MCw3IEBAIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4g
ewogCiApU1dSRVNPVVJDRSI7CiAKLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgRElTQUJMRURf
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKK1RFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsKICAgICBpbml0aWFs
aXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogICAgIGlzRG9uZSA9IGZhbHNl
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433696</attachid>
            <date>2021-07-16 13:01:53 -0700</date>
            <delta_ts>2021-07-16 20:24:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227589-20210716130152.patch</filename>
            <type>text/plain</type>
            <size>15041</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjIzYTI2MmIwYWQ1N2Qz
ZTRkZThiZGUzNTEwYjg2YTY3NDlkNWFiOC4uOGVjY2M1OTk1NDViZGQ3NGE5ZmJjNjcyNWJlMjY5
OWFlYjhmNDZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA3LTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmll
dyBqYXZhc2NyaXB0IGluamVjdGlvbiBkb2Vzbid0IHdvcmsgaWYgYXBwIGluY2x1ZGVzIFdLQXBw
Qm91bmREb21haW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjc1ODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwMzI3NDUyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVXBkYXRlIHNlcnZpY2Ugd29y
a2VyIGNvZGUgdG8gYWx3YXlzIGFsbG93IHdvcmtlcnMgb24gbG9jYWxob3N0IHRvIGJlCisgICAg
ICAgIHJlZ2lzdGVyZWQuIEFsc28gYWRkIGxvZ2ljIHNvIGxvY2FsaG9zdCByZWdpc3RyYXRpb25z
IGFyZW4ndCBhZGRlZAorICAgICAgICB0byB0aGUgdG90YWwgY291bnQgb2YgMyByZWdpc3RyYXRp
b25zLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgV2Ug
b25seSB3YW50IHRvIGluY3JlbWVudCB0aGUgY291bnQgaWYgdGhpcyByZWdpc3RyYXRpb24gaXMg
bm90CisgICAgICAgIGFscmVhZHkgaW4gdGhlIG1hcHBpbmcsIG90aGVyd2lzZSBpdCBnZXRzIGRv
dWJsZSBjb3VudGVkLgorCisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlUmVnaXN0
cmF0aW9uKToKKyAgICAgICAgRGl0dG8gZm9yIHJlbW92aW5nIGEgcmVnaXN0cmF0aW9uLCB3ZSBz
aG91bGQgb25seSBkZWNyZW1lbnQgdGhlIGNvdW50CisgICAgICAgIGlmIHdlIGZpbmQgYSBtYXRj
aGluZyBrZXkuCisKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp2YWxpZGF0ZVJlZ2lzdHJh
dGlvbkRvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlRnJvbVNjb3Bl
VG9SZWdpc3RyYXRpb25NYXApOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKwogMjAyMS0wNy0xNSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZldGNoUmVzcG9uc2UuZm9ybURhdGEoKSBzaG91
bGQgcmVqZWN0IHByb21pc2Ugd2l0aCBhIFR5cGVFcnJvciBpZiB0aGUgYm9keSBpcyBudWxsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGM1ZWI2ZjQ2M2QwZDE5ZjkxYTgyMDdmNzZkYTk0MGQ0NTYxNzM4NmMuLmRmMDM0
ODQzNTFkNGE0NjY1ZmNlNDA2NTI4MTRhMWE1Njk2OGY2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMjEtMDctMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5j
b20+CisKKyAgICAgICAgV0tXZWJWaWV3IGphdmFzY3JpcHQgaW5qZWN0aW9uIGRvZXNuJ3Qgd29y
ayBpZiBhcHAgaW5jbHVkZXMgV0tBcHBCb3VuZERvbWFpbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU4OQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vODAzMjc0NTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAg
ICAgICBBcHBzIHNob3VsZCBub3QgaGF2ZSB0byBzcGVjaWZ5IGxvY2FsaG9zdCBpbiB0aGVpciBJ
bmZvLnBsaXN0IGluIG9yZGVyCisgICAgICAgIHRvIGxvYWQgbG9jYWwgY29udGVudCBpbiBhcHAt
Ym91bmQgbW9kZS4gVGhpcyBwYXRjaCBhZGRzIGEgY2hlY2sgZm9yCisgICAgICAgIGxvY2FsaG9z
dCBvciBhIGxvb3BiYWNrIElQIGFkZHJlc3MgYW5kIGZvcmNlcyBhbiBhcHAgaW50byBhcHAtYm91
bmQKKyAgICAgICAgbW9kZSBpbiB0aGlzIGNhc2UuCisKKyAgICAgICAgU2luY2UgYWxsIGxheW91
dCB0ZXN0cyB1c2UgbG9jYWxob3N0IGFuZCAxMjcuMC4wLjEgYXMgdGVzdCBkb21haW5zLAorICAg
ICAgICB0aGlzIHBhdGNoIGFsc28gYWRkcyBhIGNoZWNrIGZvciBlbmFibGVJbkFwcEJyb3dzZXJQ
cml2YWN5Rm9yVGVzdGluZygpCisgICAgICAgIHdoaWNoIGRldGVybWluZXMgaWYgd2UgYXJlIHJ1
bm5pbmcgbGF5b3V0IHRlc3RzIGFuZCBkb2VzIG5vdCB0cmlnZ2VyCisgICAgICAgIHRoaXMgY2hl
Y2sgaW4gdGhhdCBjYXNlIHNvIHdlIGNhbiB0ZXN0IG90aGVyIGJlaGF2aW9yLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFRy
ZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik6CisKIDIwMjEtMDctMTUgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRG8gbm90IGFib3J0IG9uZ29pbmcgSURCIHRyYW5zYWN0aW9uIHN5bmNocm9ub3Vz
bHkgb24gbm9uLWltbWluZW50IFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA3MThk
MTk2MDRmMWM2ODQ2NjE4ZGIwMWYxZjFmZThkOGI2YjYzYjQ3Li45ODI3NDVlMzc4NzUyMjAwODVm
ZmNjMmQ2ZTU3ZjBkZTQ4ZDIwNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTg0LDYgKzE4NCw5IEBAIHZvaWQgU1dT
ZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJCiAKIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVu
aXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYgcmVnaXN0cmF0aW9uKQogeworICAgIGlm
ICghbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmNvbnRhaW5zKHJlZ2lzdHJhdGlvbi0+a2V5KCkp
ICYmICFTZWN1cml0eU9yaWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHJlZ2lz
dHJhdGlvbi0+a2V5KCkudG9wT3JpZ2luKCkuaG9zdCkpCisgICAgICAgIG1fdW5pcXVlUmVnaXN0
cmF0aW9uQ291bnQrKzsKKwogICAgIG1fb3JpZ2luU3RvcmUtPmFkZChyZWdpc3RyYXRpb24tPmtl
eSgpLnRvcE9yaWdpbigpKTsKICAgICBhdXRvIHJlZ2lzdHJhdGlvbklEID0gcmVnaXN0cmF0aW9u
LT5pZGVudGlmaWVyKCk7CiAgICAgQVNTRVJUKCFtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuY29u
dGFpbnMocmVnaXN0cmF0aW9uLT5rZXkoKSkpOwpAQCAtMTk4LDggKzIwMSwxMSBAQCB2b2lkIFNX
U2VydmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgcmVnaXN0cmF0aQogICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOwogICAgIAogICAgIGF1
dG8gaXQgPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZmluZChyZWdpc3RyYXRpb24tPmtleSgp
KTsKLSAgICBpZiAoaXQgIT0gbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmVuZCgpICYmIGl0LT52
YWx1ZSA9PSByZWdpc3RyYXRpb24uZ2V0KCkpCisgICAgaWYgKGl0ICE9IG1fc2NvcGVUb1JlZ2lz
dHJhdGlvbk1hcC5lbmQoKSAmJiBpdC0+dmFsdWUgPT0gcmVnaXN0cmF0aW9uLmdldCgpKSB7CiAg
ICAgICAgIG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5yZW1vdmUoaXQpOworICAgICAgICBpZiAo
IVNlY3VyaXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3MocmVnaXN0cmF0
aW9uLT5rZXkoKS50b3BPcmlnaW4oKS5ob3N0KSkKKyAgICAgICAgICAgIG1fdW5pcXVlUmVnaXN0
cmF0aW9uQ291bnQtLTsKKyAgICB9CiAKICAgICBtX29yaWdpblN0b3JlLT5yZW1vdmUocmVnaXN0
cmF0aW9uLT5rZXkoKS50b3BPcmlnaW4oKSk7CiAgICAgaWYgKG1fcmVnaXN0cmF0aW9uU3RvcmUp
CkBAIC0zNDMsMTYgKzM0OSwxNiBAQCBTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3Jp
Z2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aQogdm9pZCBTV1Nl
cnZlcjo6dmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChtX2hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCB8fCBtX2hhc1Jl
Y2VpdmVkQXBwQm91bmREb21haW5zKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1fYXBw
Qm91bmREb21haW5zLmNvbnRhaW5zKGRvbWFpbikgJiYgbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFw
LmtleXMoKS5zaXplKCkgPCBtYXhSZWdpc3RyYXRpb25Db3VudCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFNlY3VyaXR5T3JpZ2luOjppc0xvY2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3Mo
ZG9tYWluLnN0cmluZygpKSB8fCAobV9hcHBCb3VuZERvbWFpbnMuY29udGFpbnMoZG9tYWluKSAm
JiBtX3VuaXF1ZVJlZ2lzdHJhdGlvbkNvdW50IDwgbWF4UmVnaXN0cmF0aW9uQ291bnQpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIG1fYXBwQm91bmREb21haW5zQ2FsbGJh
Y2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGRvbWFpbiA9IFdURk1vdmUo
ZG9tYWluKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
YXV0byYmIGFwcEJvdW5kRG9tYWlucykgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1faGFzUmVjZWl2ZWRBcHBCb3VuZERvbWFp
bnMgPSB0cnVlOwogICAgICAgICBtX2FwcEJvdW5kRG9tYWlucyA9IFdURk1vdmUoYXBwQm91bmRE
b21haW5zKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9hcHBCb3VuZERvbWFpbnMuY29u
dGFpbnMoZG9tYWluKSAmJiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAua2V5cygpLnNpemUoKSA8
IG1heFJlZ2lzdHJhdGlvbkNvdW50KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU2VjdXJp
dHlPcmlnaW46OmlzTG9jYWxIb3N0T3JMb29wYmFja0lQQWRkcmVzcyhkb21haW4uc3RyaW5nKCkp
IHx8IChtX2FwcEJvdW5kRG9tYWlucy5jb250YWlucyhkb21haW4pICYmIG1fdW5pcXVlUmVnaXN0
cmF0aW9uQ291bnQgPCBtYXhSZWdpc3RyYXRpb25Db3VudCkpOwogICAgIH0pOwogfQogCkBAIC0x
MDExLDYgKzEwMTcsOSBAQCB2b2lkIFNXU2VydmVyOjpoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCkK
IAogdm9pZCBTV1NlcnZlcjo6cmVtb3ZlRnJvbVNjb3BlVG9SZWdpc3RyYXRpb25NYXAoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQogeworICAgIGlmIChtX3Njb3BlVG9S
ZWdpc3RyYXRpb25NYXAuY29udGFpbnMoa2V5KSAmJiAhU2VjdXJpdHlPcmlnaW46OmlzTG9jYWxI
b3N0T3JMb29wYmFja0lQQWRkcmVzcyhrZXkudG9wT3JpZ2luKCkuaG9zdCkpCisgICAgICAgIG1f
dW5pcXVlUmVnaXN0cmF0aW9uQ291bnQtLTsKKwogICAgIG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1h
cC5yZW1vdmUoa2V5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDZiZDY4OTMzNDRlZWRmMmYwY2JkZGQyYTE2MTY2YTky
MWUzM2ZlMDYuLmUxMTkxNjNhMGZiZWI3YzhkZjMwNTE3NDc1YTZkNWQ0NGJlMTI5OTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTI4Myw2ICsyODMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IG1fYXBwQm91bmREb21haW5zOwogICAgIGJvb2wgbV9oYXNTZXJ2aWNlV29ya2Vy
RW50aXRsZW1lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNSZWNlaXZlZEFwcEJvdW5kRG9t
YWlucyB7IGZhbHNlIH07CisgICAgdW5zaWduZWQgbV91bmlxdWVSZWdpc3RyYXRpb25Db3VudCB7
IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJhYzI4YjdiOWRiNGU0N2QxNWYwN2M0MzgyZDBmZGVj
NjhiNTliNWYuLjZhODdkZjMyMDcxNGVkZmNmZWMwZDUwOTQ1YzFlZTQyMGFlODExNzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzMxNiw5ICszMzE2LDE1
IEBAIHByaXZhdGU6CiB9OwogCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotc3RhdGlj
IGJvb2wgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3QgVVJMJiByZXF1ZXN0
VVJMKQorc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQoY29uc3Qg
VVJMJiByZXF1ZXN0VVJMLCBib29sIGlzUnVubmluZ1Rlc3QpCiB7Ci0gICAgcmV0dXJuIHJlcXVl
c3RVUkwucHJvdG9jb2xJc0Fib3V0KCkgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzRGF0YSgpIHx8
IHJlcXVlc3RVUkwucHJvdG9jb2xJc0Jsb2IoKSB8fCByZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkg
fHwgcmVxdWVzdFVSTC5wcm90b2NvbElzSmF2YVNjcmlwdCgpOworICAgIHJldHVybiAhaXNSdW5u
aW5nVGVzdAorICAgICAgICAmJiAoU2VjdXJpdHlPcmlnaW46OmlzTG9jYWxIb3N0T3JMb29wYmFj
a0lQQWRkcmVzcyhyZXF1ZXN0VVJMLmhvc3QoKSkKKyAgICAgICAgICAgIHx8IHJlcXVlc3RVUkwu
cHJvdG9jb2xJc0Fib3V0KCkKKyAgICAgICAgICAgIHx8IHJlcXVlc3RVUkwucHJvdG9jb2xJc0Rh
dGEoKQorICAgICAgICAgICAgfHwgcmVxdWVzdFVSTC5wcm90b2NvbElzQmxvYigpCisgICAgICAg
ICAgICB8fCByZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkKKyAgICAgICAgICAgIHx8IHJlcXVlc3RV
UkwucHJvdG9jb2xJc0phdmFTY3JpcHQoKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluQW5kQ2hlY2tJZlBlcm1pdHRlZChib29sIGlzTWFp
bkZyYW1lLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCkBAIC0zMzM2LDcg
KzMzNDIsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbkFuZENoZWNrSWZQZXJtaXR0ZWQoYm9vbCBpc01haQogICAgIGlmIChtX2lnbm9yZXNBcHBC
b3VuZERvbWFpbnMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGlzTWFpbkZyYW1l
ICYmIHNob3VsZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKHJlcXVlc3RVUkwpKSB7CisgICAg
aWYgKGlzTWFpbkZyYW1lICYmIHNob3VsZFRyZWF0VVJMUHJvdG9jb2xBc0FwcEJvdW5kKHJlcXVl
c3RVUkwsIHdlYnNpdGVEYXRhU3RvcmUoKS5jb25maWd1cmF0aW9uKCkuZW5hYmxlSW5BcHBCcm93
c2VyUHJpdmFjeUZvclRlc3RpbmcoKSkpIHsKICAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXM7CiAgICAgICAgIG1fbGlt
aXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyA9IHRydWU7CiAgICAgfQpAQCAtNTQyOSw3
ICs1NDM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBpZiAoc2hvdWxkRXhwZWN0
U2FmZUJyb3dzaW5nUmVzdWx0ID09IFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6WWVz
KQogICAgICAgICBiZWdpblNhZmVCcm93c2luZ0NoZWNrKHJlcXVlc3QudXJsKCksIGZyYW1lLmlz
TWFpbkZyYW1lKCksIGxpc3RlbmVyKTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0g
ICAgYm9vbCBzaG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID0gIWZyYW1lLmlzTWFpbkZyYW1l
KCkgJiYgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQocmVxdWVzdC51cmwoKSk7Cisg
ICAgYm9vbCBzaG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID0gIWZyYW1lLmlzTWFpbkZyYW1l
KCkgJiYgc2hvdWxkVHJlYXRVUkxQcm90b2NvbEFzQXBwQm91bmQocmVxdWVzdC51cmwoKSwgd2Vi
c2l0ZURhdGFTdG9yZSgpLmNvbmZpZ3VyYXRpb24oKS5lbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
Rm9yVGVzdGluZygpKTsKICAgICBhdXRvIGhvc3QgPSBzaG91bGRTZW5kU2VjdXJpdHlPcmlnaW5E
YXRhID8gZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLmhvc3QgOiByZXF1ZXN0LnVybCgpLmhvc3Qo
KTsKICAgICBhdXRvIHByb3RvY29sID0gc2hvdWxkU2VuZFNlY3VyaXR5T3JpZ2luRGF0YSA/IGZy
YW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90b2NvbCA6IHJlcXVlc3QudXJsKCkucHJvdG9jb2wo
KTsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmJlZ2luQXBwQm91bmREb21haW5DaGVjayhob3N0
LnRvU3RyaW5nKCksIHByb3RvY29sLnRvU3RyaW5nKCksIGxpc3RlbmVyKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZmI4ZWJhYzViM2Q3MmFj
Y2RkNzQ2YTI0Y2I1NDE4YTIyMzBiYzQyLi4wZjRmNzAxMTJkNzJhYjg1NzUzZDQ5MGIzMDU4ZGE2
NTc0ZmUzZjg3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDctMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IGphdmFzY3JpcHQgaW5qZWN0
aW9uIGRvZXNuJ3Qgd29yayBpZiBhcHAgaW5jbHVkZXMgV0tBcHBCb3VuZERvbWFpbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU4OQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODAzMjc0NTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQg
RnVsZ2hhbS4KKworICAgICAgICBBZGRlZCBuZXcgdGVzdHMuIFJlbW92ZWQgbG9jYWxob3N0IGFu
ZCAxMjcuMC4wLjEgZnJvbSB0aGUgSW5mby5wbGlzdAorICAgICAgICB0byBhdm9pZCBmYWxzZSBw
b3NpdGl2ZSB0ZXN0cy4gUmVwbGFjZSB0aGVtIHdpdGggb3RoZXIgZG9tYWlucyBzbyB3ZQorICAg
ICAgICBzdGlsbCB0ZXN0IHRoZSBtYXggY291bnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L0luZm8ucGxpc3Q6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjEtMDctMTUgIFJ5
YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
dXBkYXRlIG15IHN0YXR1cyBpbiBjb250cmlidXRvcnMuanNvbiB0byByZXZpZXdlci4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5mby5wbGlzdCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvSW5mby5wbGlzdAppbmRleCBkMzM2NTNmZDEwMGI4ODNkY2EyNWJkNGVjNmYxZGI4MWY4NzE4
YzVhLi40NTdhYzdhM2QzZTBlZjRkZGE1OTZhZWEyZDE0Y2IyMTkxOGZmYTE0IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0luZm8ucGxpc3QKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9JbmZvLnBsaXN0CkBAIC0xMSwxMCArMTEsNyBAQAogCQk8c3RyaW5nPmFwcGxlLmNvbTwvc3Ry
aW5nPgogCQk8c3RyaW5nPnN1Yi5kb21haW4ud2Via2l0Lm9yZy9yb2FkL3RvL25vd2hlcmUvPC9z
dHJpbmc+CiAJCTxzdHJpbmc+d2Via2l0Lm9yZzwvc3RyaW5nPgotCQk8c3RyaW5nPmxvY2FsaG9z
dDo4MDAwPC9zdHJpbmc+Ci0JCTxzdHJpbmc+bG9jYWxob3N0L3JvYWQvdG8vbm93aGVyZS88L3N0
cmluZz4KIAkJPHN0cmluZz5maWxlOi8vL3NvbWUvZmlsZTwvc3RyaW5nPgotCQk8c3RyaW5nPjEy
Ny4wLjAuMTwvc3RyaW5nPgogCQk8c3RyaW5nPjwvc3RyaW5nPgogCQk8c3RyaW5nPiAgIDwvc3Ry
aW5nPgogCQk8c3RyaW5nPmh0dHBzOi8vc3ViLmRvbWFpbi53ZWJraXQub3JnPC9zdHJpbmc+CkBA
IC0yNCw3ICsyMSw5IEBACiAJCTxzdHJpbmc+aHR0cDovL3d3dy5leGFtcGxlLmNvbS88L3N0cmlu
Zz4KIAkJPHN0cmluZz5odHRwOi8vYmFyLmNvbS88L3N0cmluZz4KIAkJPHN0cmluZz5odHRwOi8v
Zm9vLmNvbS88L3N0cmluZz4KKwkJPHN0cmluZz5odHRwczovL3NlYXJjaGZvcmxvbmdib2FyZHMu
Yml6PC9zdHJpbmc+CiAJCTxzdHJpbmc+YXBwLWJvdW5kLWN1c3RvbS1zY2hlbWU6PC9zdHJpbmc+
CisJCTxzdHJpbmc+bG9uZ2JvYXJkc2hvcC5iaXo8L3N0cmluZz4KIAkJPHN0cmluZz5zaG91bGQt
bm90LWJlLWluY2x1ZGVkOjwvc3RyaW5nPgogCTwvYXJyYXk+CiAJPGtleT5DRkJ1bmRsZU5hbWU8
L2tleT4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCBjYTllYTdiMjM0MTRjNzNjM2ViNDY2
ODJjZmJjM2JlNzNiNTYyZTdhLi45MjgxNTMwMjcxYzcyYTgwODAwYmUzMjQ1ZDg4MzgwMWI3ZGYw
Nzg1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNzEsNyArMjcxLDcgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbnMpCiAgICAgaW5pdGlhbGl6ZUluQXBw
QnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBfYXBwQm91bmREb21haW5zOl4o
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgewotICAgICAgICBOU0FycmF5ICpkb21haW5z
VG9Db21wYXJlID0gQFtAIjEyNy4wLjAuMSIsIEAiYXBwbGUuY29tIiwgQCJiYXIuY29tIiwgQCJl
eGFtcGxlLmNvbSIsIEAiZm9vLmNvbSIsIEAibG9jYWxob3N0IiwgQCJ0ZXN0ZG9tYWluMSIsICBA
IndlYmtpdC5vcmciXTsKKyAgICAgICAgTlNBcnJheSAqZG9tYWluc1RvQ29tcGFyZSA9IEBbQCJh
cHBsZS5jb20iLCBAImJhci5jb20iLCBAImV4YW1wbGUuY29tIiwgQCJmb28uY29tIiwgQCJsb25n
Ym9hcmRzaG9wLmJpeiIsIEAic2VhcmNoZm9ybG9uZ2JvYXJkcy5iaXoiLCBAInRlc3Rkb21haW4x
IiwgIEAid2Via2l0Lm9yZyJdOwogCiAgICAgICAgIE5TQXJyYXkgKnNvcnRlZERvbWFpbnMgPSBb
ZG9tYWlucyBzb3J0ZWRBcnJheVVzaW5nU2VsZWN0b3I6QHNlbGVjdG9yKGNhc2VJbnNlbnNpdGl2
ZUNvbXBhcmU6KV07CiAKQEAgLTM2MSw2ICszNjEsNjAgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBBYm91dFByb3RvY29sSXNBcHBCb3VuZCkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiB9CiAKK1RFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTG9jYWxIb3N0SXNB
cHBCb3VuZCkKK3sKKyAgICBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5n
cygpOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNj
aGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbSW5BcHBCcm93c2VyU2NoZW1lSGFuZGxlciBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFu
ZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJpbi1hcHAtYnJvd3NlciJdOworICAgIFtjb25maWd1
cmF0aW9uIHNldExpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM6WUVTXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0FwcEJvdW5kRG9tYWluRGVsZWdh
dGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJpbi1hcHAtYnJvd3NlcjovL2xvY2FsaG9z
dC9hcHAtYm91bmQtZG9tYWluLWxvYWQiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAg
IGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9pc0ZvcmNlZEludG9BcHBCb3VuZE1vZGU6
XihCT09MIGlzRm9yY2VkSW50b0FwcEJvdW5kTW9kZSkgeworICAgICAgICBFWFBFQ1RfVFJVRShp
c0ZvcmNlZEludG9BcHBCb3VuZE1vZGUpOworICAgICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJp
dmFjeVRlc3RTZXR0aW5ncygpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBMb29wYmFja0lQQWRkcmVzc0lzQXBwQm91bmQpCit7CisgICAgaW5pdGlhbGl6
ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHROUyhbW0lu
QXBwQnJvd3NlclNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAi
aW4tYXBwLWJyb3dzZXIiXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRMaW1pdHNOYXZpZ2F0aW9u
c1RvQXBwQm91bmREb21haW5zOllFU107CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtBcHBCb3VuZERvbWFpbkRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly8xMjcuMC4wLjEvYXBwLWJvdW5kLWRvbWFpbi1sb2FkIl1d
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFtkZWxlZ2F0ZSB3YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfaXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlOl4oQk9PTCBpc0ZvcmNlZEludG9BcHBCb3Vu
ZE1vZGUpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNGb3JjZWRJbnRvQXBwQm91bmRNb2RlKTsK
KyAgICAgICAgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKKyAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Cit9CisKIHN0YXRpYyBOU1N0cmluZyAqc3R5bGVTaGVldFNvdXJjZSA9IEAiYm9k
eSB7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuICFpbXBvcnRhbnQ7IH0iOwogc3RhdGljIE5TU3Ry
aW5nICpiYWNrZ3JvdW5kQ29sb3JTY3JpcHQgPSBAIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmJvZHksIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSI7
CiBzdGF0aWMgY29uc3QgY2hhciogcmVkSW5SR0IgPSAicmdiKDI1NSwgMCwgMCkiOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>