<?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>234543</bug_id>
          
          <creation_ts>2021-12-20 20:22:01 -0800</creation_ts>
          <short_desc>Archived subresource loads fail if m_allowedNetworkHosts doesn&apos;t include the remote URL</short_desc>
          <delta_ts>2021-12-23 15:11:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225426</see_also>
          <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="Matt Woodrow">mattwoodrow</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1825857</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2021-12-20 20:22:01 -0800</bug_when>
    <thetext>rdar://83970256

If WebKit is configured with a set of allowed network hosts, then subresource loads will be cancelled if the URL isn&apos;t within the list. This happens before the check to see if the subresource was already within the archived content, and wouldn&apos;t have actually needed a network load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825858</commentid>
    <comment_count>1</comment_count>
      <attachid>447679</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2021-12-20 20:28:57 -0800</bug_when>
    <thetext>Created attachment 447679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826093</commentid>
    <comment_count>2</comment_count>
      <attachid>447746</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2021-12-21 12:48:44 -0800</bug_when>
    <thetext>Created attachment 447746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826145</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-12-21 15:50:18 -0800</bug_when>
    <thetext>Not sure if the proposed change is OK given the initial intent of this SPI (disallow any 3rd party content). It&apos;s still 3rd party content even when it&apos;s loaded via an archive, and having it can still have security implications!

CC Alex to help untangle this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826152</commentid>
    <comment_count>4</comment_count>
      <attachid>447746</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-21 16:03:39 -0800</bug_when>
    <thetext>Comment on attachment 447746
Patch

This is problematic for many reasons:
1. It doesn&apos;t contain a unit test to verify we won&apos;t break it in the future.
2. It does not contain a good description of what is going on or under what circumstances this changes behavior.
3. Being an &quot;archive load&quot; is not an inherent property of a resource request, which ought to be basically just a URL and header fields
4.  It substantially changes the behavior of when scheduleArchiveLoad is called, which almost certainly breaks web archive loading somehow.
5. There is no link to a radar or something motivating this change.

I believe the intent of this is to make allowsLoadFromURL return true if we know it will only load from a web archive and not from the network when _allowedNetworkHosts is being used.  Such a change should clearly not affect anything else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826165</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2021-12-21 16:43:03 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 447746 [details]
&gt; Patch
&gt; 
&gt; This is problematic for many reasons:
&gt; 1. It doesn&apos;t contain a unit test to verify we won&apos;t break it in the future.

Agreed, can you please point me to related tests so that I have an idea where to start?
I saw WKURLSchemeHandler-1.mm, but I&apos;m not sure where to start with loading sub resources from an archive.

&gt; 2. It does not contain a good description of what is going on or under what
&gt; circumstances this changes behavior.

Apologies, looks like --update-changelogs changed the description text. Is what&apos;s in the first comment of the bug sufficient?

&gt; 3. Being an &quot;archive load&quot; is not an inherent property of a resource
&gt; request, which ought to be basically just a URL and header fields

Would a change in naming to &apos;will load from archive&apos; be satisfactory here?

&gt; 4.  It substantially changes the behavior of when scheduleArchiveLoad is
&gt; called, which almost certainly breaks web archive loading somehow.

Indeed it does. I was trying to avoid checking &apos;will load from archive&apos; during the network host check, in advance of actually scheduling the archive load, since that feels overly fragile. It felt preferable to just schedule, and condition the other behaviour on the result.

I tried to audit possible behaviour changes from calling it early, and couldn&apos;t find anything, plus it passes test. It&apos;s possible that this is better suited to someone who knows this code.


&gt; 5. There is no link to a radar or something motivating this change.

Comment 0 links to rdar://83970256, apologies if that&apos;s not the correct form of linkage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826169</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-21 17:21:25 -0800</bug_when>
    <thetext>(In reply to Matt Woodrow from comment #5)
&gt; (In reply to Alex Christensen from comment #4)
&gt; &gt; Comment on attachment 447746 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; This is problematic for many reasons:
&gt; &gt; 1. It doesn&apos;t contain a unit test to verify we won&apos;t break it in the future.
&gt; 
&gt; Agreed, can you please point me to related tests so that I have an idea
&gt; where to start?
&gt; I saw WKURLSchemeHandler-1.mm, but I&apos;m not sure where to start with loading
&gt; sub resources from an archive.
Yes, that&apos;s where to find existing unit tests that use _allowedNetworkHosts.  Search for TEST(LoadWebArchive, HTTPSUpgrade) to see how to load a web archive.  You probably won&apos;t need to create a web archive dynamically for this, but you could.  Once you tell WKWebView to load a web archive, it will automatically load sub resources from the web archive.

&gt; &gt; 2. It does not contain a good description of what is going on or under what
&gt; &gt; circumstances this changes behavior.
&gt; 
&gt; Apologies, looks like --update-changelogs changed the description text. Is
&gt; what&apos;s in the first comment of the bug sufficient?
It could use more clear language.  &quot;Using WKWebViewConfiguration._allowedNetworkHosts prevents loads from web archives even when the network will not be used&quot; makes it quite clear what is going on.

&gt; Would a change in naming to &apos;will load from archive&apos; be satisfactory here?
No, I don&apos;t think it should be a member of ResourceRequest.  I think it should be another parameter to Page::allowsLoadFromURL

&gt; &gt; 5. There is no link to a radar or something motivating this change.
&gt; 
&gt; Comment 0 links to rdar://83970256, apologies if that&apos;s not the correct form
&gt; of linkage.
Sorry, I didn&apos;t see that.  That&apos;s a good link.  Put it in the Change Log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826170</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-21 17:26:01 -0800</bug_when>
    <thetext>I would fix this bug by moving the m_allowedNetworkHosts part of the allowsLoadFromURL check from ResourceLoadNotifier::dispatchWillSendRequest to WebLoaderStrategy::scheduleLoadFromNetworkProcess or somewhere like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826417</commentid>
    <comment_count>8</comment_count>
      <attachid>447837</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2021-12-22 15:19:34 -0800</bug_when>
    <thetext>Created attachment 447837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826441</commentid>
    <comment_count>9</comment_count>
      <attachid>447837</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-22 16:37:59 -0800</bug_when>
    <thetext>Comment on attachment 447837
Patch

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

nicer

&gt; Tools/TestWebKitAPI/Tests/mac/LoadWebArchive.mm:259
&gt; +    NSData *data = [NSPropertyListSerialization dataFromPropertyList:archive format:NSPropertyListBinaryFormat_v1_0 errorDescription:nil];

This is all duplicate code with the test before it.  Could we instead share it and make a static function that returns an NSData?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826477</commentid>
    <comment_count>10</comment_count>
      <attachid>447852</attachid>
    <who name="Matt Woodrow">mattwoodrow</who>
    <bug_when>2021-12-22 19:30:51 -0800</bug_when>
    <thetext>Created attachment 447852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826587</commentid>
    <comment_count>11</comment_count>
      <attachid>447894</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-23 11:55:18 -0800</bug_when>
    <thetext>Created attachment 447894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826593</commentid>
    <comment_count>12</comment_count>
      <attachid>447896</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-23 12:00:04 -0800</bug_when>
    <thetext>Created attachment 447896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826594</commentid>
    <comment_count>13</comment_count>
      <attachid>447896</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-23 12:01:41 -0800</bug_when>
    <thetext>Comment on attachment 447896
Patch

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

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:311
&gt; +            RunLoop::main().dispatch([resourceLoader = Ref { resourceLoader }] {
&gt; +                resourceLoader-&gt;didFail(resourceLoader-&gt;blockedError());

This changed to call didFail on another run loop iteration to make this behave more like a real load that was blocked and make the other existing tests pass.

&gt; Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:116
&gt; +            if (!page-&gt;allowsLoadFromURL(proposedRequest.url(), mainFrameMainResource))

I added this to prevent an allowed host from redirecting to a forbidden host.  ResourceLoadNotifier::dispatchWillSendRequest was called when redirecting and when preparing to send the initial request, so after moving it we need to do this in two places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826645</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-23 15:11:01 -0800</bug_when>
    <thetext>Committed r287414 (245549@main): &lt;https://commits.webkit.org/245549@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447896.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447679</attachid>
            <date>2021-12-20 20:28:57 -0800</date>
            <delta_ts>2021-12-21 12:48:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234543-20211221172856.patch</filename>
            <type>text/plain</type>
            <size>7206</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2YyNDgyNmRiYmIyNTRm
ZDVjNjUyYTAwNzQ4YjMyOTJkMmJiZTA2Yy4uMzNjN2MyYjJhMWZlMmRlNzE4YzcxYjcwMjBiN2U1
OWM1YmVmNzIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTEyLTIwICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgaWYgc3Vi
cmVzb3VyY2UgbG9hZHMgYXJlIGFuIGFyY2hpdmUgbG9hZCBiZWZvcmUgcmVqZWN0aW5nIG5ldHdv
cmsgbG9hZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNBcmNoaXZlTG9hZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRJc0FyY2hpdmVMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OlJlc291cmNlUmVxdWVzdEJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZW5jb2RlQmFzZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWNvZGVCYXNl
KToKKwogMjAyMS0xMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbW92ZSBtb3JlIE5QQVBJIHBsdWdpbiBjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDg0OWY4NTI2ZWVjOWE3NTk4YWM3MjNiNGU2YmFjNGNlMzNhZWEyYmYuLmU3YmZhZjQ1ZWEyYWQ0
YzQwYWQyZTdkMWM5ZTZlODBhMjljMWJmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMTItMjAgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGVjayBpZiBzdWJyZXNvdXJjZSBsb2FkcyBhcmUgYW4gYXJjaGl2ZSBsb2FkIGJlZm9yZSBy
ZWplY3RpbmcgbmV0d29yayBsb2Fkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisK
IDIwMjEtMTItMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgbW9yZSBOUEFQSSBwbHVnaW4gY29kZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKaW5kZXggMTQ3YjQ1ZTA2NDM4MTIy
N2IwNTIyMDY0NDE4NTIzYzA3OWY2NGQxNC4uOTJmMDlmNzQ1NDVlNTNjN2EyYjVkYzQ4MWY0NTA5
ZjFhZjJjY2UyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6
ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3UKIAog
ICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKICAgICAgICAgYXV0byBtYWlu
RnJhbWVNYWluUmVzb3VyY2UgPSBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgbV9pbml0aWFsUmVx
dWVzdElkZW50aWZpZXIgPT0gaWRlbnRpZmllciA/IE1haW5GcmFtZU1haW5SZXNvdXJjZTo6WWVz
IDogTWFpbkZyYW1lTWFpblJlc291cmNlOjpObzsKLSAgICAgICAgaWYgKCFwYWdlLT5hbGxvd3NM
b2FkRnJvbVVSTChyZXF1ZXN0LnVybCgpLCBtYWluRnJhbWVNYWluUmVzb3VyY2UpKQorICAgICAg
ICBpZiAoIXJlcXVlc3QuaXNBcmNoaXZlTG9hZCgpICYmICFwYWdlLT5hbGxvd3NMb2FkRnJvbVVS
TChyZXF1ZXN0LnVybCgpLCBtYWluRnJhbWVNYWluUmVzb3VyY2UpKQogICAgICAgICAgICAgcmVx
dWVzdCA9IHsgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYzNmU0ZjRiYmJhMjVlNjAuLmM4ZmUw
NzZiYjUxZTFkNDU5Yzg1YjU2NDNlNTA1OGIwMmY2OTExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTQxLDYgKzE0MSwxMSBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaQogCiAgICAgbV9kZWZlcnNMb2FkaW5nID0gbV9vcHRpb25zLmRlZmVyc0xvYWRp
bmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nICYmIG1f
ZnJhbWUtPnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpOwogCisjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCisgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlQXJj
aGl2ZUxvYWQoKnRoaXMsIGNsaWVudFJlcXVlc3QpKQorICAgICAgICBjbGllbnRSZXF1ZXN0LnNl
dElzQXJjaGl2ZUxvYWQodHJ1ZSk7CisjZW5kaWYKKwogICAgIGlmIChtX29wdGlvbnMuc2VjdXJp
dHlDaGVjayA9PSBTZWN1cml0eUNoZWNrUG9saWN5OjpEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheShjbGllbnRSZXF1ZXN0
LnVybCgpKSkgewogICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2Fu
Y2VsbGluZyBsb2FkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgc2VjdXJpdHkgcG9saWN5LiIpOwogICAg
ICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0KCksIGNs
aWVudFJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwpAQCAtMjE1LDYgKzIyMCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0KCkKIAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxF
KE1IVE1MKQogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyICYmIG1fZG9jdW1lbnRMb2FkZXItPnNj
aGVkdWxlQXJjaGl2ZUxvYWQoKnRoaXMsIG1fcmVxdWVzdCkpCisgICAgICAgIG1fcmVxdWVzdC5z
ZXRJc0FyY2hpdmVMb2FkKHRydWUpOwogICAgICAgICByZXR1cm47CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2Uu
aAppbmRleCA0MGMwMDhjYWRmZDVlYTc1NTM3ZDBjNTc5ODAxMWYwYTQ0MjdjNDNiLi40OGVhYzI1
ZGIzYjgxODlkZGQzNzE1ZTAyYWViZDExMTBkYTAwZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtMjAwLDYg
KzIwMCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0FwcEluaXRpYXRlZDsgfQogICAgIHZvaWQgc2V0SXNBcHBJbml0aWF0ZWQoYm9vbCBp
c0FwcEluaXRpYXRlZCkgeyBtX2lzQXBwSW5pdGlhdGVkID0gaXNBcHBJbml0aWF0ZWQ7IH07CiAK
KyAgICBib29sIGlzQXJjaGl2ZUxvYWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJjaGl2ZUxvYWQ7
IH0KKyAgICB2b2lkIHNldElzQXJjaGl2ZUxvYWQoYm9vbCBpc0FyY2hpdmVMb2FkKSB7IG1faXNB
cmNoaXZlTG9hZCA9IGlzQXJjaGl2ZUxvYWQ7IH0KKwogcHJvdGVjdGVkOgogICAgIC8vIFVzZWQg
d2hlbiBSZXNvdXJjZVJlcXVlc3QgaXMgaW5pdGlhbGl6ZWQgZnJvbSBhIHBsYXRmb3JtIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSByZXF1ZXN0CiAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCkBAIC0y
MTEsNiArMjE0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1faGlkZGVuRnJvbUluc3BlY3Rv
cihmYWxzZSkKICAgICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkKICAgICAgICAgLCBtX2lzQXBw
SW5pdGlhdGVkKHRydWUpCisgICAgICAgICwgbV9pc0FyY2hpdmVMb2FkKGZhbHNlKQogICAgIHsK
ICAgICB9CiAKQEAgLTIyNyw2ICsyMzEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9oaWRk
ZW5Gcm9tSW5zcGVjdG9yKGZhbHNlKQogICAgICAgICAsIG1faXNUb3BTaXRlKGZhbHNlKQogICAg
ICAgICAsIG1faXNBcHBJbml0aWF0ZWQodHJ1ZSkKKyAgICAgICAgLCBtX2lzQXJjaGl2ZUxvYWQo
ZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtMjYxLDYgKzI2Niw3IEBAIHByb3RlY3RlZDoKICAg
ICBib29sIG1faGlkZGVuRnJvbUluc3BlY3RvciA6IDE7CiAgICAgYm9vbCBtX2lzVG9wU2l0ZSA6
IDE7CiAgICAgYm9vbCBtX2lzQXBwSW5pdGlhdGVkIDogMTsKKyAgICBib29sIG1faXNBcmNoaXZl
TG9hZCA6IDE7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIHN0ZDo6b3B0aW9uYWw8U3lz
dGVtUHJldmlld0luZm8+IG1fc3lzdGVtUHJldmlld0luZm87CiAjZW5kaWYKQEAgLTI5Nyw2ICsz
MDMsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZW5jb2RlQmFz
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9wcmlvcml0eTsKICAg
ICBlbmNvZGVyIDw8IG1fcmVxdWVzdGVyOwogICAgIGVuY29kZXIgPDwgbV9pc0FwcEluaXRpYXRl
ZDsKKyAgICBlbmNvZGVyIDw8IG1faXNBcmNoaXZlTG9hZDsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KQEAgLTM4MCw2ICszODcsMTIgQEAgQUxXQVlTX0lOTElORSBib29sIFJlc291cmNl
UmVxdWVzdEJhc2U6OmRlY29kZUJhc2UoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIG1faXNBcHBJbml0aWF0ZWQgPSAqaXNBcHBJbml0aWF0ZWQ7CiAKKyAgICBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGlzQXJjaGl2ZUxvYWQ7CisgICAgZGVjb2RlciA+PiBpc0FyY2hp
dmVMb2FkOworICAgIGlmICghaXNBcmNoaXZlTG9hZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIG1faXNBcmNoaXZlTG9hZCA9ICppc0FyY2hpdmVMb2FkOworCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAppbmRleCBjM2RmMTUzZTBlNmEyN2ZiNjcwNDE3MDAzYTM0ZDMwYjgx
YzU1YzI5Li5hMDUyNDA1MzVjNmQ5NmNlZDgwNjU2MTUzOTAzYzRhNjVkMDAwNGI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICNpZiBF
TkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKICAgICAvLyBJZiB0aGUgRG9jdW1l
bnRMb2FkZXIgc2NoZWR1bGVzIHRoaXMgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZSBsb2FkLAogICAg
IC8vIHRoZW4gd2Ugc2hvdWxkIHJlbWVtYmVyIHRoZSBSZXNvdXJjZUxvYWRlciBpbiBvdXIgcmVj
b3JkcyBidXQgbm90IHNjaGVkdWxlIGl0IGluIHRoZSBOZXR3b3JrUHJvY2Vzcy4KLSAgICBpZiAo
cmVzb3VyY2VMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+c2NoZWR1bGVBcmNoaXZlTG9hZChyZXNv
dXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpKSkgeworICAgIGlmIChyZXNvdXJj
ZUxvYWRlci5yZXF1ZXN0KCkuaXNBcmNoaXZlTG9hZCgpKSB7CiAgICAgICAgIExPRyhOZXR3b3Jr
U2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
LCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZS4iLCByZXNv
dXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgV0VCTE9B
REVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxl
ZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlIik7CiAgICAgICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJz
LnNldChpZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNlTG9hZGVy
LCB0cmFja2luZ1BhcmFtZXRlcnMpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447746</attachid>
            <date>2021-12-21 12:48:44 -0800</date>
            <delta_ts>2021-12-22 15:19:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234543-20211222094842.patch</filename>
            <type>text/plain</type>
            <size>8135</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2YyNDgyNmRiYmIyNTRm
ZDVjNjUyYTAwNzQ4YjMyOTJkMmJiZTA2Yy4uMzNjN2MyYjJhMWZlMmRlNzE4YzcxYjcwMjBiN2U1
OWM1YmVmNzIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTEyLTIwICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgaWYgc3Vi
cmVzb3VyY2UgbG9hZHMgYXJlIGFuIGFyY2hpdmUgbG9hZCBiZWZvcmUgcmVqZWN0aW5nIG5ldHdv
cmsgbG9hZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzQ1NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWROb3RpZmllcjo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNBcmNoaXZlTG9hZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRJc0FyY2hpdmVMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OlJlc291cmNlUmVxdWVzdEJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZW5jb2RlQmFzZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWNvZGVCYXNl
KToKKwogMjAyMS0xMi0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJlbW92ZSBtb3JlIE5QQVBJIHBsdWdpbiBjb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDg0OWY4NTI2ZWVjOWE3NTk4YWM3MjNiNGU2YmFjNGNlMzNhZWEyYmYuLmU3YmZhZjQ1ZWEyYWQ0
YzQwYWQyZTdkMWM5ZTZlODBhMjljMWJmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMTItMjAgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGVjayBpZiBzdWJyZXNvdXJjZSBsb2FkcyBhcmUgYW4gYXJjaGl2ZSBsb2FkIGJlZm9yZSBy
ZWplY3RpbmcgbmV0d29yayBsb2Fkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzNDU0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisK
IDIwMjEtMTItMTYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZW1vdmUgbW9yZSBOUEFQSSBwbHVnaW4gY29kZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKaW5kZXggMTQ3YjQ1ZTA2NDM4MTIy
N2IwNTIyMDY0NDE4NTIzYzA3OWY2NGQxNC4uOTJmMDlmNzQ1NDVlNTNjN2EyYjVkYzQ4MWY0NTA5
ZjFhZjJjY2UyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90
aWZpZXIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWROb3RpZmllcjo6
ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3UKIAog
ICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKICAgICAgICAgYXV0byBtYWlu
RnJhbWVNYWluUmVzb3VyY2UgPSBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgbV9pbml0aWFsUmVx
dWVzdElkZW50aWZpZXIgPT0gaWRlbnRpZmllciA/IE1haW5GcmFtZU1haW5SZXNvdXJjZTo6WWVz
IDogTWFpbkZyYW1lTWFpblJlc291cmNlOjpObzsKLSAgICAgICAgaWYgKCFwYWdlLT5hbGxvd3NM
b2FkRnJvbVVSTChyZXF1ZXN0LnVybCgpLCBtYWluRnJhbWVNYWluUmVzb3VyY2UpKQorICAgICAg
ICBpZiAoIXJlcXVlc3QuaXNBcmNoaXZlTG9hZCgpICYmICFwYWdlLT5hbGxvd3NMb2FkRnJvbVVS
TChyZXF1ZXN0LnVybCgpLCBtYWluRnJhbWVNYWluUmVzb3VyY2UpKQogICAgICAgICAgICAgcmVx
dWVzdCA9IHsgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDZkZWJiMjU4OGEzZTgyYjIxYzYxZDdlOGYzNmU0ZjRiYmJhMjVlNjAuLjg2Mjgy
ZDdhNGQxZjFhZDZkYWJjNTNiZTM5N2E1NTZhZmMyMzM3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTQxLDYgKzE0MSwxMSBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaQogCiAgICAgbV9kZWZlcnNMb2FkaW5nID0gbV9vcHRpb25zLmRlZmVyc0xvYWRp
bmdQb2xpY3kgPT0gRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nICYmIG1f
ZnJhbWUtPnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpOwogCisjaWYgRU5BQkxFKFdFQl9BUkNISVZF
KSB8fCBFTkFCTEUoTUhUTUwpCisgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXItPnNjaGVkdWxlQXJj
aGl2ZUxvYWQoKnRoaXMsIGNsaWVudFJlcXVlc3QpKQorICAgICAgICBjbGllbnRSZXF1ZXN0LnNl
dElzQXJjaGl2ZUxvYWQodHJ1ZSk7CisjZW5kaWYKKwogICAgIGlmIChtX29wdGlvbnMuc2VjdXJp
dHlDaGVjayA9PSBTZWN1cml0eUNoZWNrUG9saWN5OjpEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheShjbGllbnRSZXF1ZXN0
LnVybCgpKSkgewogICAgICAgICBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRygiaW5pdDogQ2Fu
Y2VsbGluZyBsb2FkIGJlY2F1c2UgaXQgdmlvbGF0ZXMgc2VjdXJpdHkgcG9saWN5LiIpOwogICAg
ICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0KCksIGNs
aWVudFJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwpAQCAtMjE0LDggKzIxOSwxMCBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgQVNTRVJUKGZyYW1lTG9hZGVyKCkpOwogCiAjaWYg
RU5BQkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCi0gICAgaWYgKG1fZG9jdW1lbnRM
b2FkZXIgJiYgbV9kb2N1bWVudExvYWRlci0+c2NoZWR1bGVBcmNoaXZlTG9hZCgqdGhpcywgbV9y
ZXF1ZXN0KSkKKyAgICBpZiAobV9kb2N1bWVudExvYWRlciAmJiBtX2RvY3VtZW50TG9hZGVyLT5z
Y2hlZHVsZUFyY2hpdmVMb2FkKCp0aGlzLCBtX3JlcXVlc3QpKSB7CisgICAgICAgIG1fcmVxdWVz
dC5zZXRJc0FyY2hpdmVMb2FkKHRydWUpOwogICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlm
CiAKICAgICBpZiAobV9kb2N1bWVudExvYWRlciAmJiBtX2RvY3VtZW50TG9hZGVyLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFJlc291cmNlKCp0aGlzLCBtX3JlcXVlc3QsIG1fcmVx
dWVzdC51cmwoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCBjNWU1OWExYmM2YmNkNWIzZDc2OGIyNGY3
MzJkNGRlMWY4NDlmMWZmLi5lYTA5ZGU2MTFjYjAwMjg0ZDEzYmRlNGVhODhkZmM2MzNhODgyZjFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVx
dWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTk2LDYgKzk2LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG90aGVyKQogICAg
ICAgICBzZXRIVFRQQm9keShvdGhlci5tX2h0dHBCb2R5LT5pc29sYXRlZENvcHkoKSk7CiAgICAg
c2V0QWxsb3dDb29raWVzKG90aGVyLm1fYWxsb3dDb29raWVzKTsKICAgICBzZXRJc0FwcEluaXRp
YXRlZChvdGhlci5pc0FwcEluaXRpYXRlZCgpKTsKKyAgICBzZXRJc0FyY2hpdmVMb2FkKG90aGVy
LmlzQXJjaGl2ZUxvYWQoKSk7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNFbXB0
eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4IDQwYzAwOGNhZGZkNWVhNzU1MzdkMGM1Nzk4MDExZjBh
NDQyN2M0M2IuLjQ4ZWFjMjVkYjNiODE4OWRkZDM3MTVlMDJhZWJkMTExMGRhMDBkNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oCkBAIC0yMDAsNiArMjAwLDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNBcHBJbml0aWF0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXBwSW5pdGlhdGVkOyB9CiAgICAgdm9pZCBzZXRJc0Fw
cEluaXRpYXRlZChib29sIGlzQXBwSW5pdGlhdGVkKSB7IG1faXNBcHBJbml0aWF0ZWQgPSBpc0Fw
cEluaXRpYXRlZDsgfTsKIAorICAgIGJvb2wgaXNBcmNoaXZlTG9hZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNBcmNoaXZlTG9hZDsgfQorICAgIHZvaWQgc2V0SXNBcmNoaXZlTG9hZChib29sIGlzQXJj
aGl2ZUxvYWQpIHsgbV9pc0FyY2hpdmVMb2FkID0gaXNBcmNoaXZlTG9hZDsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgLy8gVXNlZCB3aGVuIFJlc291cmNlUmVxdWVzdCBpcyBpbml0aWFsaXplZCBmcm9t
IGEgcGxhdGZvcm0gcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlcXVlc3QKICAgICBSZXNvdXJjZVJl
cXVlc3RCYXNlKCkKQEAgLTIxMSw2ICsyMTQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9o
aWRkZW5Gcm9tSW5zcGVjdG9yKGZhbHNlKQogICAgICAgICAsIG1faXNUb3BTaXRlKGZhbHNlKQog
ICAgICAgICAsIG1faXNBcHBJbml0aWF0ZWQodHJ1ZSkKKyAgICAgICAgLCBtX2lzQXJjaGl2ZUxv
YWQoZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtMjI3LDYgKzIzMSw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgLCBtX2hpZGRlbkZyb21JbnNwZWN0b3IoZmFsc2UpCiAgICAgICAgICwgbV9pc1Rv
cFNpdGUoZmFsc2UpCiAgICAgICAgICwgbV9pc0FwcEluaXRpYXRlZCh0cnVlKQorICAgICAgICAs
IG1faXNBcmNoaXZlTG9hZChmYWxzZSkKICAgICB7CiAgICAgfQogCkBAIC0yNjEsNiArMjY2LDcg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yIDogMTsKICAgICBi
b29sIG1faXNUb3BTaXRlIDogMTsKICAgICBib29sIG1faXNBcHBJbml0aWF0ZWQgOiAxOworICAg
IGJvb2wgbV9pc0FyY2hpdmVMb2FkIDogMTsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAg
c3RkOjpvcHRpb25hbDxTeXN0ZW1QcmV2aWV3SW5mbz4gbV9zeXN0ZW1QcmV2aWV3SW5mbzsKICNl
bmRpZgpAQCAtMjk3LDYgKzMwMyw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBSZXNvdXJjZVJlcXVl
c3RCYXNlOjplbmNvZGVCYXNlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBtX3ByaW9yaXR5OwogICAgIGVuY29kZXIgPDwgbV9yZXF1ZXN0ZXI7CiAgICAgZW5jb2RlciA8
PCBtX2lzQXBwSW5pdGlhdGVkOworICAgIGVuY29kZXIgPDwgbV9pc0FyY2hpdmVMb2FkOwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMzgwLDYgKzM4NywxMiBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9pc0FwcEluaXRpYXRlZCA9ICppc0FwcElu
aXRpYXRlZDsKIAorICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaXNBcmNoaXZlTG9hZDsKKyAgICBk
ZWNvZGVyID4+IGlzQXJjaGl2ZUxvYWQ7CisgICAgaWYgKCFpc0FyY2hpdmVMb2FkKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgbV9pc0FyY2hpdmVMb2FkID0gKmlzQXJjaGl2ZUxvYWQ7CisK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGMzZGYxNTNlMGU2YTI3ZmI2
NzA0MTcwMDNhMzRkMzBiODFjNTVjMjkuLmEwNTI0MDUzNWM2ZDk2Y2VkODA2NTYxNTM5MDNjNGE2
NWQwMDA0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBD
YWNoZWRSZXNvdQogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAg
IC8vIElmIHRoZSBEb2N1bWVudExvYWRlciBzY2hlZHVsZXMgdGhpcyBhcyBhbiBhcmNoaXZlIHJl
c291cmNlIGxvYWQsCiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcmVtZW1iZXIgdGhlIFJlc291cmNl
TG9hZGVyIGluIG91ciByZWNvcmRzIGJ1dCBub3Qgc2NoZWR1bGUgaXQgaW4gdGhlIE5ldHdvcmtQ
cm9jZXNzLgotICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5zY2hlZHVs
ZUFyY2hpdmVMb2FkKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkpKSB7
CisgICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5pc0FyY2hpdmVMb2FkKCkpIHsKICAg
ICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZl
IHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBV
Ukwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UiKTsKICAgICAgICAgbV93
ZWJSZXNvdXJjZUxvYWRlcnMuc2V0KGlkZW50aWZpZXIsIFdlYlJlc291cmNlTG9hZGVyOjpjcmVh
dGUocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447837</attachid>
            <date>2021-12-22 15:19:34 -0800</date>
            <delta_ts>2021-12-22 19:30:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234543-20211223121932.patch</filename>
            <type>text/plain</type>
            <size>10511</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI0YjcyZmI0ZjliNzc3
MDgwMTU5YzdiN2NmZjY0MWZkODQ5MzlkNS4uNWJhMDU4OGM1ZjI2ZGRkZjgwNGVjZGM0ZTE1ZTA3
NTkxM2M5Mjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTIyICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgYWxsb3dl
ZCBuZXR3b3JrIGhvc3RzIGxpc3Qgd2hlbiB3ZSBzY2hlZHVsZSB0aGUgbG9hZCBpbiB0aGUgbmV0
d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ1NDMKKyAgICAgICAgPHJkYXI6Ly84MzUwMTMxNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY2hlY2sgZm9yIFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uX2FsbG93ZWROZXR3b3JrSG9zdCBwcmV2aW91c2x5IGhhcHBlbmVkIGJlZm9y
ZSB0aGUgY2hlY2sgdG8gc2VlIGlmCisgICAgICAgIHRoZSBnaXZlbiBSZXNvdXJjZVJlcXVlc3Qg
d291bGQgZGlyZWN0bHkgZnJvbSBhbiBhcmNoaXZlLgorICAgICAgICBUaGlzIG1vdmVzIHRvIHRo
ZSBhbGxvd2VkIG5ldHdvcmsgaG9zdCBsaXN0IGNoZWNrIHRvIGhhcHBlbiB3aGVuIHdlIHNjaGVk
dWxlIHRoZSBuZXR3b3JrIHJlcXVlc3QsIGFuZCB0aHVzCisgICAgICAgIGFsbG93cyBzdWJyZXNv
dXJjZXMgY2FjaGVkIHdpdGhpbiBhbiBhcmNoaXZlIHRvIGxvYWQsIGV2ZW4gaWYgdGhlaXIgb3Jp
Z2luYWwgVVJMIHdvdWxkIGJlIGJsb2NrZWQuCisKKyAgICAgICAgTmV3IHRlc3QgTG9hZFdlYkFy
Y2hpdmUuRGlzYWxsb3dlZE5ldHdvcmtIb3N0cyBhZGRlZC4KKworICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWROb3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRO
b3RpZmllcjo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkTm90aWZp
ZXI6OmlzSW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyKToKKwogMjAyMS0xMi0yMSAgU2FtIFdlaW5p
ZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHByZW11bHRp
cGxpZWQgYWxwaGEgaW50ZXJwb2xhdGVkIGdyYWRpZW50cyBhbmQgZGVmYXVsdGVkIG9mZiBvcHRp
b24gdG8gdXNlIHRoZW0gZm9yIENTUyBHcmFkaWVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYWJkMWJkMWRmZTVh
YzcyM2NjZjllZDg1OGU4NjAzNDhjZTM3YTQ5Ni4uMmJiY2ZlMDM2MWI5YjA0NWI4ZGQzZDNlZDcy
MWYzYWFiNzUwNmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMS0xMi0yMiAgTWF0
dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAgIENoZWNrIGFsbG93
ZWQgbmV0d29yayBob3N0cyBsaXN0IHdoZW4gd2Ugc2NoZWR1bGUgdGhlIGxvYWQgaW4gdGhlIG5l
dHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM0NTQzCisgICAgICAgIDxyZGFyOi8vODM1MDEzMTU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGNoZWNrIGZvciBXS1dlYlZpZXdD
b25maWd1cmF0aW9uLl9hbGxvd2VkTmV0d29ya0hvc3QgcHJldmlvdXNseSBoYXBwZW5lZCBiZWZv
cmUgdGhlIGNoZWNrIHRvIHNlZSBpZgorICAgICAgICB0aGUgZ2l2ZW4gUmVzb3VyY2VSZXF1ZXN0
IHdvdWxkIGRpcmVjdGx5IGZyb20gYW4gYXJjaGl2ZS4KKyAgICAgICAgVGhpcyBtb3ZlcyB0byB0
aGUgYWxsb3dlZCBuZXR3b3JrIGhvc3QgbGlzdCBjaGVjayB0byBoYXBwZW4gd2hlbiB3ZSBzY2hl
ZHVsZSB0aGUgbmV0d29yayByZXF1ZXN0LCBhbmQgdGh1cworICAgICAgICBhbGxvd3Mgc3VicmVz
b3VyY2VzIGNhY2hlZCB3aXRoaW4gYW4gYXJjaGl2ZSB0byBsb2FkLCBldmVuIGlmIHRoZWlyIG9y
aWdpbmFsIFVSTCB3b3VsZCBiZSBibG9ja2VkLgorCisgICAgICAgIE5ldyB0ZXN0IExvYWRXZWJB
cmNoaXZlLkRpc2FsbG93ZWROZXR3b3JrSG9zdHMgYWRkZWQuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKwogMjAyMS0x
Mi0yMSAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIElQ
QyBzdHJlYW1zIHNob3VsZCBub3QgYWNjZXB0IDAtbGVuZ3RoIHN0cmVhbSBidWZmZXJzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAppbmRleCAxNDdi
NDVlMDY0MzgxMjI3YjA1MjIwNjQ0MTg1MjNjMDc5ZjY0ZDE0Li42MmJiNTZlMzRlNmY0NmQyNjI4
MzZjZmNhNDY1YjRkYjBlMzA4M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWROb3RpZmllci5jcHAKQEAgLTEzNywxMiArMTM3LDYgQEAgdm9pZCBSZXNvdXJjZUxv
YWROb3RpZmllcjo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgUmVzb3UKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogICAgIG1f
ZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QobG9hZGVyLCBp
ZGVudGlmaWVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIAotICAgIGlmIChhdXRvKiBw
YWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKLSAgICAgICAgYXV0byBtYWluRnJhbWVNYWluUmVzb3Vy
Y2UgPSBtX2ZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgbV9pbml0aWFsUmVxdWVzdElkZW50aWZpZXIg
PT0gaWRlbnRpZmllciA/IE1haW5GcmFtZU1haW5SZXNvdXJjZTo6WWVzIDogTWFpbkZyYW1lTWFp
blJlc291cmNlOjpObzsKLSAgICAgICAgaWYgKCFwYWdlLT5hbGxvd3NMb2FkRnJvbVVSTChyZXF1
ZXN0LnVybCgpLCBtYWluRnJhbWVNYWluUmVzb3VyY2UpKQotICAgICAgICAgICAgcmVxdWVzdCA9
IHsgfTsKLSAgICB9Ci0KICAgICAvLyBJZiB0aGUgVVJMIGNoYW5nZWQsIHRoZW4gd2Ugd2FudCB0
byBwdXQgdGhhdCBuZXcgVVJMIGluIHRoZSAiZGlkIHRlbGwgY2xpZW50IiBzZXQgdG9vLgogICAg
IGlmICghcmVxdWVzdC5pc051bGwoKSAmJiBvbGRSZXF1ZXN0VVJMICE9IHJlcXVlc3QudXJsKCku
c3RyaW5nKCkgJiYgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQogICAgICAgICBt
X2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmRpZFRlbGxDbGllbnRBYm91dExvYWQo
cmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWROb3RpZmllci5oCmluZGV4IDRkYmQ0Y2M0OWQ2NTA0MjExODRlNjBjMjRkZDcxNGRjYmUw
YmRiMGQuLjZkYTE2MDMyNWY0MmZlZjU0MGM2YmQ1MGJiMTgyZTg2OWRhZGU5ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5oCkBAIC02OCw2ICs2OCwx
MSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNlbmRSZW1haW5pbmdEZWxlZ2F0ZU1lc3NhZ2VzKERv
Y3VtZW50TG9hZGVyKiwgUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50
IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogCisgICAgYm9vbCBpc0luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcihSZXNvdXJjZUxvYWRlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luaXRpYWxSZXF1
ZXN0SWRlbnRpZmllciA9PSBpZGVudGlmaWVyOworICAgIH0KKwogcHJpdmF0ZToKICAgICBGcmFt
ZSYgbV9mcmFtZTsKICAgICBzdGQ6Om9wdGlvbmFsPFJlc291cmNlTG9hZGVySWRlbnRpZmllcj4g
bV9pbml0aWFsUmVxdWVzdElkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYzNkZjE1M2UwZTZh
MjdmYjY3MDQxNzAwM2EzNGQzMGI4MWM1NWMyOS4uMWUwZWUzMTEwNjNjMDk5ZjA0YzEzNzI3MDkz
NTY5Mzc4NDhmNDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMjk5LDE0ICsyOTksMjIgQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNl
TG9hZGVyJiByZXNvdXJjZUwKICAgICBhdXRvIGlkZW50aWZpZXIgPSByZXNvdXJjZUxvYWRlci5p
ZGVudGlmaWVyKCk7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCisgICAgYXV0byogZnJhbWUg
PSByZXNvdXJjZUxvYWRlci5mcmFtZSgpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSA/
IGZyYW1lLT5wYWdlKCkgOiBudWxscHRyKSB7CisgICAgICAgIGF1dG8gbWFpbkZyYW1lTWFpblJl
c291cmNlID0gZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgcmVzb3VyY2VMb2FkZXIuZnJhbWVMb2Fk
ZXIoKS0+bm90aWZpZXIoKS5pc0luaXRpYWxSZXF1ZXN0SWRlbnRpZmllcihpZGVudGlmaWVyKSA/
IE1haW5GcmFtZU1haW5SZXNvdXJjZTo6WWVzIDogTWFpbkZyYW1lTWFpblJlc291cmNlOjpObzsK
KyAgICAgICAgaWYgKCFwYWdlLT5hbGxvd3NMb2FkRnJvbVVSTChyZXF1ZXN0LnVybCgpLCBtYWlu
RnJhbWVNYWluUmVzb3VyY2UpKSB7CisgICAgICAgICAgICByZXNvdXJjZUxvYWRlci5jYW5jZWwo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIENvbnRlbnRT
bmlmZmluZ1BvbGljeSBjb250ZW50U25pZmZpbmdQb2xpY3kgPSByZXNvdXJjZUxvYWRlci5zaG91
bGRTbmlmZkNvbnRlbnQoKSA/IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50IDog
Q29udGVudFNuaWZmaW5nUG9saWN5OjpEb05vdFNuaWZmQ29udGVudDsKICAgICBDb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeSBjb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IHJlc291
cmNlTG9hZGVyLnNob3VsZFNuaWZmQ29udGVudEVuY29kaW5nKCkgPyBDb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeTo6U25pZmYgOiBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6RG9O
b3RTbmlmZjsKICAgICBTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSA9IHJlc291cmNlTG9hZGVyLnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkgPyBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90
VXNlOwogCiAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIHdpdGggcHJpb3JpdHkgJWQsIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5ICVpIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBz
dGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgKGlu
dClzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKLSAgICBhdXRvKiBmcmFtZSA9IHJlc291cmNl
TG9hZGVyLmZyYW1lKCk7Ci0KICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2Fk
UGFyYW1ldGVyczsKICAgICBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
ICAgICBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCA9IHRyYWNraW5nUGFyYW1ldGVycy53
ZWJQYWdlUHJveHlJRDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA1NTNjZDVmODY1NjBjZTBhZjRhZWI2YWUyMzQwZWVjMGI5ZWIyZWExLi5lMDVl
ODRlOTcyMTQxM2IzMDllMWM2NDg4MGQ0OWE1MjhjMmViZTM0IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTIt
MjIgIE1hdHQgV29vZHJvdyAgPG1hdHR3b29kcm93QGFwcGxlLmNvbT4KKworICAgICAgICBDaGVj
ayBhbGxvd2VkIG5ldHdvcmsgaG9zdHMgbGlzdCB3aGVuIHdlIHNjaGVkdWxlIHRoZSBsb2FkIGlu
IHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNDU0MworICAgICAgICA8cmRhcjovLzgzNTAxMzE1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjaGVjayBmb3IgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5fYWxsb3dlZE5ldHdvcmtIb3N0IHByZXZpb3VzbHkgaGFwcGVu
ZWQgYmVmb3JlIHRoZSBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgdGhlIGdpdmVuIFJlc291cmNl
UmVxdWVzdCB3b3VsZCBkaXJlY3RseSBmcm9tIGFuIGFyY2hpdmUuCisgICAgICAgIFRoaXMgbW92
ZXMgdG8gdGhlIGFsbG93ZWQgbmV0d29yayBob3N0IGxpc3QgY2hlY2sgdG8gaGFwcGVuIHdoZW4g
d2Ugc2NoZWR1bGUgdGhlIG5ldHdvcmsgcmVxdWVzdCwgYW5kIHRodXMKKyAgICAgICAgYWxsb3dz
IHN1YnJlc291cmNlcyBjYWNoZWQgd2l0aGluIGFuIGFyY2hpdmUgdG8gbG9hZCwgZXZlbiBpZiB0
aGVpciBvcmlnaW5hbCBVUkwgd291bGQgYmUgYmxvY2tlZC4KKworICAgICAgICBOZXcgdGVzdCBM
b2FkV2ViQXJjaGl2ZS5EaXNhbGxvd2VkTmV0d29ya0hvc3RzIGFkZGVkLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0xMi0yMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHByZW11bHRpcGxpZWQgYWxwaGEgaW50
ZXJwb2xhdGVkIGdyYWRpZW50cyBhbmQgZGVmYXVsdGVkIG9mZiBvcHRpb24gdG8gdXNlIHRoZW0g
Zm9yIENTUyBHcmFkaWVudHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0xvYWRXZWJBcmNoaXZlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9h
ZFdlYkFyY2hpdmUubW0KaW5kZXggY2M4NGU0MjcwNmUxMWY3NGYyOTI2OGQ4NzZkZGQ2NzRlODBk
OTNkYy4uMmVlOTllOTU5OTNjMjQxYjZmZTEwYmM5ZjE0OGViZjY5ZDYwNWJlYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW0KQEAgLTMzLDYg
KzMzLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMjMzLDQgKzIzNCwz
NiBAQCBURVNUKExvYWRXZWJBcmNoaXZlLCBIVFRQU1VwZ3JhZGUpCiAgICAgRVhQRUNUX1dLX1NU
UkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJsb2FkZWQgaHR0cCBzdWJyZXNvdXJj
ZSBzdWNjZXNzZnVsbHkiKTsKIH0KIAorVEVTVChMb2FkV2ViQXJjaGl2ZSwgRGlzYWxsb3dlZE5l
dHdvcmtIb3N0cykKK3sKKyAgICBOU1N0cmluZyAqanMgPSBAImFsZXJ0KCdsb2FkZWQgaHR0cCBz
dWJyZXNvdXJjZSBzdWNjZXNzZnVsbHknKSI7CisgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMo
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHA6Ly9kb3dubG9hZC9zY3JpcHQuanMiXSBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIGV4cGVjdGVkQ29udGVudExlbmd0aDpqcy5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpA
InV0Zi04Il0pOworICAgIGF1dG8gcmVzcG9uc2VBcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVk
QXJjaGl2ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbcmVzcG9uc2VBcmNoaXZlciBlbmNvZGVPYmpl
Y3Q6cmVzcG9uc2UuZ2V0KCkgZm9yS2V5OkAiV2ViUmVzb3VyY2VSZXNwb25zZSJdOworICAgIE5T
RGljdGlvbmFyeSAqYXJjaGl2ZSA9IEB7CisgICAgICAgIEAiV2ViTWFpblJlc291cmNlIjogQHsK
KyAgICAgICAgICAgIEAiV2ViUmVzb3VyY2VEYXRhIjogW0AiPHNjcmlwdCBzcmM9J3NjcmlwdC5q
cyc+PC9zY3JpcHQ+IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sCisg
ICAgICAgICAgICBAIldlYlJlc291cmNlRnJhbWVOYW1lIjogQCIiLAorICAgICAgICAgICAgQCJX
ZWJSZXNvdXJjZU1JTUVUeXBlIjogQCJ0ZXh0L2h0bWwiLAorICAgICAgICAgICAgQCJXZWJSZXNv
dXJjZVRleHRFbmNvZGluZ05hbWUiOiBAIlVURi04IiwKKyAgICAgICAgICAgIEAiV2ViUmVzb3Vy
Y2VVUkwiOiBAImh0dHA6Ly9kb3dubG9hZC8iLAorICAgICAgICB9LAorICAgICAgICBAIldlYlN1
YnJlc291cmNlcyI6IEBbQHsKKyAgICAgICAgICAgIEAiV2ViUmVzb3VyY2VEYXRhIjogW2pzIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwKKyAgICAgICAgICAgIEAiV2Vi
UmVzb3VyY2VNSU1FVHlwZSI6IEAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsCisgICAgICAgICAg
ICBAIldlYlJlc291cmNlUmVzcG9uc2UiOiByZXNwb25zZUFyY2hpdmVyLmdldCgpLmVuY29kZWRE
YXRhLAorICAgICAgICAgICAgQCJXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWUiOiBAInV0Zi04
IiwKKyAgICAgICAgICAgIEAiV2ViUmVzb3VyY2VVUkwiOiBAImh0dHA6Ly9kb3dubG9hZC9zY3Jp
cHQuanMiLAorICAgICAgICB9XQorICAgIH07CisgICAgTlNEYXRhICpkYXRhID0gW05TUHJvcGVy
dHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhRnJvbVByb3BlcnR5TGlzdDphcmNoaXZlIGZvcm1hdDpO
U1Byb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wIGVycm9yRGVzY3JpcHRpb246bmlsXTsKKwor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fYWxsb3dlZE5ldHdvcmtI
b3N0cyA9IFtOU1NldCBzZXRdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkRGF0YTpk
YXRhIE1JTUVUeXBlOkAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiBjaGFyYWN0ZXJFbmNvZGlu
Z05hbWU6QCJ1dGYtOCIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9kb3du
bG9hZC8iXV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVy
dF0sICJsb2FkZWQgaHR0cCBzdWJyZXNvdXJjZSBzdWNjZXNzZnVsbHkiKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447852</attachid>
            <date>2021-12-22 19:30:51 -0800</date>
            <delta_ts>2021-12-23 11:55:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234543-20211223163050.patch</filename>
            <type>text/plain</type>
            <size>10301</size>
            <attacher name="Matt Woodrow">mattwoodrow</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzI0YjcyZmI0ZjliNzc3
MDgwMTU5YzdiN2NmZjY0MWZkODQ5MzlkNS4uMGIxN2NiNzBjYmMwMzllMTQyNTg2OWFlZDM4N2Qz
ODU2ODRmY2IxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTIyICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgYWxsb3dl
ZCBuZXR3b3JrIGhvc3RzIGxpc3Qgd2hlbiB3ZSBzY2hlZHVsZSB0aGUgbG9hZCBpbiB0aGUgbmV0
d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ1NDMKKyAgICAgICAgPHJkYXI6Ly84MzUwMTMxNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRoZSBjaGVjayBmb3IgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5fYWxsb3dlZE5ldHdvcmtIb3N0IHByZXZpb3VzbHkgaGFwcGVuZWQgYmVm
b3JlIHRoZSBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgdGhlIGdpdmVuIFJlc291cmNlUmVxdWVz
dCB3b3VsZCBkaXJlY3RseSBmcm9tIGFuIGFyY2hpdmUuCisgICAgICAgIFRoaXMgbW92ZXMgdG8g
dGhlIGFsbG93ZWQgbmV0d29yayBob3N0IGxpc3QgY2hlY2sgdG8gaGFwcGVuIHdoZW4gd2Ugc2No
ZWR1bGUgdGhlIG5ldHdvcmsgcmVxdWVzdCwgYW5kIHRodXMKKyAgICAgICAgYWxsb3dzIHN1YnJl
c291cmNlcyBjYWNoZWQgd2l0aGluIGFuIGFyY2hpdmUgdG8gbG9hZCwgZXZlbiBpZiB0aGVpciBv
cmlnaW5hbCBVUkwgd291bGQgYmUgYmxvY2tlZC4KKworICAgICAgICBOZXcgdGVzdCBMb2FkV2Vi
QXJjaGl2ZS5EaXNhbGxvd2VkTmV0d29ya0hvc3RzIGFkZGVkLgorCisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6aXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIpOgorCiAyMDIxLTEyLTIxICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcHJlbXVs
dGlwbGllZCBhbHBoYSBpbnRlcnBvbGF0ZWQgZ3JhZGllbnRzIGFuZCBkZWZhdWx0ZWQgb2ZmIG9w
dGlvbiB0byB1c2UgdGhlbSBmb3IgQ1NTIEdyYWRpZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhYmQxYmQxZGZl
NWFjNzIzY2NmOWVkODU4ZTg2MDM0OGNlMzdhNDk2Li4wNWMwZDk2N2RiMjExNDRkNDgwMGQxOGRl
OWVkYWY4NjQ2OGM0ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEyLTIyICBN
YXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgYWxs
b3dlZCBuZXR3b3JrIGhvc3RzIGxpc3Qgd2hlbiB3ZSBzY2hlZHVsZSB0aGUgbG9hZCBpbiB0aGUg
bmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzQ1NDMKKyAgICAgICAgPHJkYXI6Ly84MzUwMTMxNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRoZSBjaGVjayBmb3IgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5fYWxsb3dlZE5ldHdvcmtIb3N0IHByZXZpb3VzbHkgaGFwcGVuZWQg
YmVmb3JlIHRoZSBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgdGhlIGdpdmVuIFJlc291cmNlUmVx
dWVzdCB3b3VsZCBkaXJlY3RseSBmcm9tIGFuIGFyY2hpdmUuCisgICAgICAgIFRoaXMgbW92ZXMg
dG8gdGhlIGFsbG93ZWQgbmV0d29yayBob3N0IGxpc3QgY2hlY2sgdG8gaGFwcGVuIHdoZW4gd2Ug
c2NoZWR1bGUgdGhlIG5ldHdvcmsgcmVxdWVzdCwgYW5kIHRodXMKKyAgICAgICAgYWxsb3dzIHN1
YnJlc291cmNlcyBjYWNoZWQgd2l0aGluIGFuIGFyY2hpdmUgdG8gbG9hZCwgZXZlbiBpZiB0aGVp
ciBvcmlnaW5hbCBVUkwgd291bGQgYmUgYmxvY2tlZC4KKworICAgICAgICBOZXcgdGVzdCBMb2Fk
V2ViQXJjaGl2ZS5EaXNhbGxvd2VkTmV0d29ya0hvc3RzIGFkZGVkLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisKIDIw
MjEtMTItMjEgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJUEMgc3RyZWFtcyBzaG91bGQgbm90IGFjY2VwdCAwLWxlbmd0aCBzdHJlYW0gYnVmZmVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKaW5kZXgg
MTQ3YjQ1ZTA2NDM4MTIyN2IwNTIyMDY0NDE4NTIzYzA3OWY2NGQxNC4uNjJiYjU2ZTM0ZTZmNDZk
MjYyODM2Y2ZjYTQ2NWI0ZGIwZTMwODNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCkBAIC0xMzcsMTIgKzEzNyw2IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkTm90aWZpZXI6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBs
b2FkZXIsIFJlc291CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAg
ICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGxvYWRl
ciwgaWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAKLSAgICBpZiAoYXV0
byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKSB7Ci0gICAgICAgIGF1dG8gbWFpbkZyYW1lTWFpblJl
c291cmNlID0gbV9mcmFtZS5pc01haW5GcmFtZSgpICYmIG1faW5pdGlhbFJlcXVlc3RJZGVudGlm
aWVyID09IGlkZW50aWZpZXIgPyBNYWluRnJhbWVNYWluUmVzb3VyY2U6OlllcyA6IE1haW5GcmFt
ZU1haW5SZXNvdXJjZTo6Tm87Ci0gICAgICAgIGlmICghcGFnZS0+YWxsb3dzTG9hZEZyb21VUkwo
cmVxdWVzdC51cmwoKSwgbWFpbkZyYW1lTWFpblJlc291cmNlKSkKLSAgICAgICAgICAgIHJlcXVl
c3QgPSB7IH07Ci0gICAgfQotCiAgICAgLy8gSWYgdGhlIFVSTCBjaGFuZ2VkLCB0aGVuIHdlIHdh
bnQgdG8gcHV0IHRoYXQgbmV3IFVSTCBpbiB0aGUgImRpZCB0ZWxsIGNsaWVudCIgc2V0IHRvby4K
ICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgb2xkUmVxdWVzdFVSTCAhPSByZXF1ZXN0LnVy
bCgpLnN0cmluZygpICYmIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAg
ICAgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRM
b2FkKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkTm90aWZpZXIuaAppbmRleCA0ZGJkNGNjNDlkNjUwNDIxMTg0ZTYwYzI0ZGQ3MTRk
Y2JlMGJkYjBkLi42ZGExNjAzMjVmNDJmZWY1NDBjNmJkNTBiYjE4MmU4NjlkYWRlOWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNjgsNiAr
NjgsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdl
cyhEb2N1bWVudExvYWRlciosIFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKIAorICAgIGJvb2wgaXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gbV9pbml0aWFs
UmVxdWVzdElkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
RnJhbWUmIG1fZnJhbWU7CiAgICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRlcklkZW50aWZp
ZXI+IG1faW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGMzZGYxNTNl
MGU2YTI3ZmI2NzA0MTcwMDNhMzRkMzBiODFjNTVjMjkuLjFlMGVlMzExMDYzYzA5OWYwNGMxMzcy
NzA5MzU2OTM3ODQ4ZjQ4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTI5OSwxNCArMjk5LDIyIEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNv
dXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgYXV0byBpZGVudGlmaWVyID0gcmVzb3VyY2VMb2Fk
ZXIuaWRlbnRpZmllcigpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIAorICAgIGF1dG8qIGZy
YW1lID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKTsKKworICAgIGlmIChhdXRvKiBwYWdlID0gZnJh
bWUgPyBmcmFtZS0+cGFnZSgpIDogbnVsbHB0cikgeworICAgICAgICBhdXRvIG1haW5GcmFtZU1h
aW5SZXNvdXJjZSA9IGZyYW1lLT5pc01haW5GcmFtZSgpICYmIHJlc291cmNlTG9hZGVyLmZyYW1l
TG9hZGVyKCktPm5vdGlmaWVyKCkuaXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIoaWRlbnRpZmll
cikgPyBNYWluRnJhbWVNYWluUmVzb3VyY2U6OlllcyA6IE1haW5GcmFtZU1haW5SZXNvdXJjZTo6
Tm87CisgICAgICAgIGlmICghcGFnZS0+YWxsb3dzTG9hZEZyb21VUkwocmVxdWVzdC51cmwoKSwg
bWFpbkZyYW1lTWFpblJlc291cmNlKSkgeworICAgICAgICAgICAgcmVzb3VyY2VMb2FkZXIuY2Fu
Y2VsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBDb250
ZW50U25pZmZpbmdQb2xpY3kgY29udGVudFNuaWZmaW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIu
c2hvdWxkU25pZmZDb250ZW50KCkgPyBDb250ZW50U25pZmZpbmdQb2xpY3k6OlNuaWZmQ29udGVu
dCA6IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7CiAgICAgQ29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3kgY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgPSBy
ZXNvdXJjZUxvYWRlci5zaG91bGRTbmlmZkNvbnRlbnRFbmNvZGluZygpID8gQ29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmIDogQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6
OkRvTm90U25pZmY7CiAgICAgU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgPSByZXNvdXJjZUxvYWRlci5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpID8g
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpE
b05vdFVzZTsKIAogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB3
aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRoIHByaW9yaXR5ICVkLCBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSAlaSIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSks
IChpbnQpc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwogCi0gICAgYXV0byogZnJhbWUgPSByZXNv
dXJjZUxvYWRlci5mcmFtZSgpOwotCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMg
bG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9IGlkZW50aWZp
ZXI7CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQgPSB0cmFja2luZ1BhcmFtZXRl
cnMud2ViUGFnZVByb3h5SUQ7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNTUzY2Q1Zjg2NTYwY2UwYWY0YWViNmFlMjM0MGVlYzBiOWViMmVhMS4u
ODc5YTcyZmU5OTM1NzllNmRmNTU3MDg3OTVkNWQ1MjM2MjRjMzA1NyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIx
LTEyLTIyICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q2hlY2sgYWxsb3dlZCBuZXR3b3JrIGhvc3RzIGxpc3Qgd2hlbiB3ZSBzY2hlZHVsZSB0aGUgbG9h
ZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQ1NDMKKyAgICAgICAgPHJkYXI6Ly84MzUwMTMxNT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRoZSBjaGVjayBm
b3IgV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5fYWxsb3dlZE5ldHdvcmtIb3N0IHByZXZpb3VzbHkg
aGFwcGVuZWQgYmVmb3JlIHRoZSBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgdGhlIGdpdmVuIFJl
c291cmNlUmVxdWVzdCB3b3VsZCBkaXJlY3RseSBmcm9tIGFuIGFyY2hpdmUuCisgICAgICAgIFRo
aXMgbW92ZXMgdG8gdGhlIGFsbG93ZWQgbmV0d29yayBob3N0IGxpc3QgY2hlY2sgdG8gaGFwcGVu
IHdoZW4gd2Ugc2NoZWR1bGUgdGhlIG5ldHdvcmsgcmVxdWVzdCwgYW5kIHRodXMKKyAgICAgICAg
YWxsb3dzIHN1YnJlc291cmNlcyBjYWNoZWQgd2l0aGluIGFuIGFyY2hpdmUgdG8gbG9hZCwgZXZl
biBpZiB0aGVpciBvcmlnaW5hbCBVUkwgd291bGQgYmUgYmxvY2tlZC4KKworICAgICAgICBOZXcg
dGVzdCBMb2FkV2ViQXJjaGl2ZS5EaXNhbGxvd2VkTmV0d29ya0hvc3RzIGFkZGVkLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0xMi0yMSAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHByZW11bHRpcGxpZWQgYWxw
aGEgaW50ZXJwb2xhdGVkIGdyYWRpZW50cyBhbmQgZGVmYXVsdGVkIG9mZiBvcHRpb24gdG8gdXNl
IHRoZW0gZm9yIENTUyBHcmFkaWVudHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0xvYWRXZWJBcmNoaXZlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvTG9hZFdlYkFyY2hpdmUubW0KaW5kZXggY2M4NGU0MjcwNmUxMWY3NGYyOTI2OGQ4NzZkZGQ2
NzRlODBkOTNkYy4uNzExMDJiOTk2ZWEwMjRiMmVlY2FmMjlmMjdlMWE0MGY0ZDI0MjMyYSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW0KQEAg
LTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMjA0LDcg
KzIwNSw3IEBAIFRFU1QoTG9hZFdlYkFyY2hpdmUsIERyYWdOYXZpZ2F0aW9uUmVsb2FkKQogICAg
IEVYUEVDVF9XS19TVFJFUShmaW5hbFVSTCwgIiIpOwogfQogCi1URVNUKExvYWRXZWJBcmNoaXZl
LCBIVFRQU1VwZ3JhZGUpCitzdGF0aWMgTlNEYXRhKiBjb25zdHJ1Y3RBcmNoaXZlKCkKIHsKICAg
ICBOU1N0cmluZyAqanMgPSBAImFsZXJ0KCdsb2FkZWQgaHR0cCBzdWJyZXNvdXJjZSBzdWNjZXNz
ZnVsbHknKSI7CiAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFs
bG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9kb3dubG9hZC9z
Y3JpcHQuanMiXSBNSU1FVHlwZTpAImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIGV4cGVjdGVkQ29u
dGVudExlbmd0aDpqcy5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpAInV0Zi04Il0pOwpAQCAtMjI2
LDExICsyMjcsMjggQEAgVEVTVChMb2FkV2ViQXJjaGl2ZSwgSFRUUFNVcGdyYWRlKQogICAgICAg
ICAgICAgQCJXZWJSZXNvdXJjZVVSTCI6IEAiaHR0cDovL2Rvd25sb2FkL3NjcmlwdC5qcyIsCiAg
ICAgICAgIH1dCiAgICAgfTsKLSAgICBOU0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJp
YWxpemF0aW9uIGRhdGFGcm9tUHJvcGVydHlMaXN0OmFyY2hpdmUgZm9ybWF0Ok5TUHJvcGVydHlM
aXN0QmluYXJ5Rm9ybWF0X3YxXzAgZXJyb3JEZXNjcmlwdGlvbjpuaWxdOworICAgIHJldHVybiBb
TlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFGcm9tUHJvcGVydHlMaXN0OmFyY2hpdmUg
Zm9ybWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgZXJyb3JEZXNjcmlwdGlvbjpu
aWxdOworfQorCitURVNUKExvYWRXZWJBcmNoaXZlLCBIVFRQU1VwZ3JhZGUpCit7CisgICAgTlNE
YXRhICpkYXRhID0gY29uc3RydWN0QXJjaGl2ZSgpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOwogICAgIFt3ZWJWaWV3IGxvYWREYXRhOmRhdGEgTUlNRVR5
cGU6QCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiIGNoYXJhY3RlckVuY29kaW5nTmFtZTpAInV0
Zi04IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2Rvd25sb2FkLyJdXTsK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImxvYWRl
ZCBodHRwIHN1YnJlc291cmNlIHN1Y2Nlc3NmdWxseSIpOwogfQogCitURVNUKExvYWRXZWJBcmNo
aXZlLCBEaXNhbGxvd2VkTmV0d29ya0hvc3RzKQoreworICAgIE5TRGF0YSAqZGF0YSA9IGNvbnN0
cnVjdEFyY2hpdmUoKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQo
KS5fYWxsb3dlZE5ldHdvcmtIb3N0cyA9IFtOU1NldCBzZXRdOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBb
d2ViVmlldyBsb2FkRGF0YTpkYXRhIE1JTUVUeXBlOkAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZl
IiBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6QCJ1dGYtOCIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHA6Ly9kb3dubG9hZC8iXV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JBbGVydF0sICJsb2FkZWQgaHR0cCBzdWJyZXNvdXJjZSBzdWNjZXNzZnVs
bHkiKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447894</attachid>
            <date>2021-12-23 11:55:18 -0800</date>
            <delta_ts>2021-12-23 12:00:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234543-20211223115517.patch</filename>
            <type>text/plain</type>
            <size>18061</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRkMzU3OTdiNDAwMzQ3
YmU2YTY4ZjEzMWIzNDdlZWYwNjJlMzRmMy4uOWExNDdlOTY2ODM1MzQxODJiYmM5YzhmMGViOTQx
ZGVlNWYwODVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTIzICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgYWxsb3dl
ZCBuZXR3b3JrIGhvc3RzIGxpc3Qgd2hlbiB3ZSBzY2hlZHVsZSB0aGUgbG9hZCBpbiB0aGUgbmV0
d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ1NDMKKyAgICAgICAgPHJkYXI6Ly84MzUwMTMxNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRoZSBjaGVjayBmb3IgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5fYWxsb3dlZE5ldHdvcmtIb3N0IHByZXZpb3VzbHkgaGFwcGVuZWQgYmVm
b3JlIHRoZSBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgdGhlIGdpdmVuIFJlc291cmNlUmVxdWVz
dCB3b3VsZCBkaXJlY3RseSBmcm9tIGFuIGFyY2hpdmUuCisgICAgICAgIFRoaXMgbW92ZXMgdG8g
dGhlIGFsbG93ZWQgbmV0d29yayBob3N0IGxpc3QgY2hlY2sgdG8gaGFwcGVuIHdoZW4gd2Ugc2No
ZWR1bGUgdGhlIG5ldHdvcmsgcmVxdWVzdCwgYW5kIHRodXMKKyAgICAgICAgYWxsb3dzIHN1YnJl
c291cmNlcyBjYWNoZWQgd2l0aGluIGFuIGFyY2hpdmUgdG8gbG9hZCwgZXZlbiBpZiB0aGVpciBv
cmlnaW5hbCBVUkwgd291bGQgYmUgYmxvY2tlZC4KKworICAgICAgICBOZXcgdGVzdCBMb2FkV2Vi
QXJjaGl2ZS5EaXNhbGxvd2VkTmV0d29ya0hvc3RzIGFkZGVkLgorCisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6aXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIpOgorCiAyMDIxLTEyLTIyICBBbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFNvZnQgbGluZWJy
ZWFrcyBoYXZlIGluY29ycmVjdCBiaWRpIHBhcmFncmFwaCBwb3NpdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZDQyMzhmM2QyZDcyMWRmYTAyMWFkOGY3MjJiNDY4NmQ2YTViNGYxNy4uYTE4NTE4YzljMDkwMDdi
OTI4ZWFlZDg4MmVjYTA4MGEyMmEzZDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAy
MS0xMi0yMyAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAg
IENoZWNrIGFsbG93ZWQgbmV0d29yayBob3N0cyBsaXN0IHdoZW4gd2Ugc2NoZWR1bGUgdGhlIGxv
YWQgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NTQzCisgICAgICAgIDxyZGFyOi8vODM1MDEzMTU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGUgY2hlY2sg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uX2FsbG93ZWROZXR3b3JrSG9zdCBwcmV2aW91c2x5
IGhhcHBlbmVkIGJlZm9yZSB0aGUgY2hlY2sgdG8gc2VlIGlmCisgICAgICAgIHRoZSBnaXZlbiBS
ZXNvdXJjZVJlcXVlc3Qgd291bGQgZGlyZWN0bHkgZnJvbSBhbiBhcmNoaXZlLgorICAgICAgICBU
aGlzIG1vdmVzIHRvIHRoZSBhbGxvd2VkIG5ldHdvcmsgaG9zdCBsaXN0IGNoZWNrIHRvIGhhcHBl
biB3aGVuIHdlIHNjaGVkdWxlIHRoZSBuZXR3b3JrIHJlcXVlc3QsIGFuZCB0aHVzCisgICAgICAg
IGFsbG93cyBzdWJyZXNvdXJjZXMgY2FjaGVkIHdpdGhpbiBhbiBhcmNoaXZlIHRvIGxvYWQsIGV2
ZW4gaWYgdGhlaXIgb3JpZ2luYWwgVVJMIHdvdWxkIGJlIGJsb2NrZWQuCisgICAgICAgIFdlIGFs
c28gbmVlZCB0byBjaGVjayB3aGVuIHJlZGlyZWN0aW5nIHRvIHByZXZlbnQgYW4gYWxsb3dlZCBk
b21haW4gZnJvbSByZWRpcmVjdGluZyB0byBhIGZvcmJpZGRlbiBkb21haW4uCAorICAgICAgICBU
aGlzIGFsc28gbWFrZXMgaXQgc28gdGhhdCBXS1dlYlZpZXdDb25maWd1cmF0aW9uLl9sb2Fkc1N1
YnJlc291cmNlcyBvbmx5IHByZXZlbnRzCisgICAgICAgIHN1YnJlc291cmNlIGxvYWRzIHRoYXQg
d291bGQgdG91Y2ggdGhlIG5ldHdvcmssIHNvIHdlIGNhbid0IHVzZSBXS1VSTFNjaGVtZUhhbmRs
ZXIgdG8gdGVzdCBpdCBhbnkgbW9yZS4KKyAgICAgICAgVGhhdCdzIGZpbmUsIHNpbmNlIHRoZSB0
d28gdXNlcnMgb2YgdGhlIFNQSSBvbmx5IGxvYWQgVVJMcyBmcm9tIHRoZSBuZXR3b3JrLgorCisg
ICAgICAgIE5ldyB0ZXN0IExvYWRXZWJBcmNoaXZlLkRpc2FsbG93ZWROZXR3b3JrSG9zdHMgYWRk
ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KToKKwogMjAyMS0xMi0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlLWVuYWJsZSBDdXN0b21EaXNwbGF5TmFtZSBhbmQgRGVm
YXVsdERpc3BsYXlOYW1lIEFQSSB0ZXN0cyBvbiBNb250ZXJleQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKaW5kZXggMTQ3YjQ1ZTA2NDM4MTIyN2Iw
NTIyMDY0NDE4NTIzYzA3OWY2NGQxNC4uNjJiYjU2ZTM0ZTZmNDZkMjYyODM2Y2ZjYTQ2NWI0ZGIw
ZTMwODNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwCkBAIC0xMzcsMTIgKzEzNyw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291CiAgICAg
UmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAgICBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGxvYWRlciwgaWRlbnRpZmllciwgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAKLSAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUu
cGFnZSgpKSB7Ci0gICAgICAgIGF1dG8gbWFpbkZyYW1lTWFpblJlc291cmNlID0gbV9mcmFtZS5p
c01haW5GcmFtZSgpICYmIG1faW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyID09IGlkZW50aWZpZXIg
PyBNYWluRnJhbWVNYWluUmVzb3VyY2U6OlllcyA6IE1haW5GcmFtZU1haW5SZXNvdXJjZTo6Tm87
Ci0gICAgICAgIGlmICghcGFnZS0+YWxsb3dzTG9hZEZyb21VUkwocmVxdWVzdC51cmwoKSwgbWFp
bkZyYW1lTWFpblJlc291cmNlKSkKLSAgICAgICAgICAgIHJlcXVlc3QgPSB7IH07Ci0gICAgfQot
CiAgICAgLy8gSWYgdGhlIFVSTCBjaGFuZ2VkLCB0aGVuIHdlIHdhbnQgdG8gcHV0IHRoYXQgbmV3
IFVSTCBpbiB0aGUgImRpZCB0ZWxsIGNsaWVudCIgc2V0IHRvby4KICAgICBpZiAoIXJlcXVlc3Qu
aXNOdWxsKCkgJiYgb2xkUmVxdWVzdFVSTCAhPSByZXF1ZXN0LnVybCgpLnN0cmluZygpICYmIG1f
ZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgbV9mcmFtZS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlcXVlc3QudXJsKCku
c3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
aAppbmRleCA0ZGJkNGNjNDlkNjUwNDIxMTg0ZTYwYzI0ZGQ3MTRkY2JlMGJkYjBkLi42ZGExNjAz
MjVmNDJmZWY1NDBjNmJkNTBiYjE4MmU4NjlkYWRlOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNjgsNiArNjgsMTEgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlcios
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAorICAgIGJvb2wg
aXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gbV9pbml0aWFsUmVxdWVzdElkZW50aWZpZXIg
PT0gaWRlbnRpZmllcjsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgRnJhbWUmIG1fZnJhbWU7CiAg
ICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IG1faW5pdGlhbFJlcXVl
c3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3
MGVhMjIwZGMxN2M3Mzc2ZWQ2NjBmYTdhNjFhODRlMzFjMzM0Y2JiLi45MDc1Y2JjMGEzMDQwZWEx
NTBhODYyNWNkYTA4OTBiMWVlMTM4YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdGFydCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KCk7Ci0gICAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcigpOwogICAgIFJlc291cmNlRXJyb3IgYmxvY2tl
ZEJ5Q29udGVudEJsb2NrZXJFcnJvcigpOwogICAgIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VS
TEVycm9yKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYzNkZjE1M2UwZTZhMjdmYjY3MDQxNzAw
M2EzNGQzMGI4MWM1NWMyOS4uZDg2MjQzZjVhN2ZhMWFhNTFmYTFiMGUzMmU4NTkxMjMwMzhlYWVm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcApAQCAtMjk5LDE0ICsyOTksMjcgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNv
dXJjZUwKICAgICBhdXRvIGlkZW50aWZpZXIgPSByZXNvdXJjZUxvYWRlci5pZGVudGlmaWVyKCk7
CiAgICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCisgICAgYXV0byogZnJhbWUgPSByZXNvdXJjZUxv
YWRlci5mcmFtZSgpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdl
KCkgOiBudWxscHRyKSB7CisgICAgICAgIGF1dG8gbWFpbkZyYW1lTWFpblJlc291cmNlID0gZnJh
bWUtPmlzTWFpbkZyYW1lKCkKKyAgICAgICAgICAgICYmIHJlc291cmNlTG9hZGVyLmZyYW1lTG9h
ZGVyKCkKKyAgICAgICAgICAgICYmIHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuaXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgICAg
ID8gTWFpbkZyYW1lTWFpblJlc291cmNlOjpZZXMgOiBNYWluRnJhbWVNYWluUmVzb3VyY2U6Ok5v
OworICAgICAgICBpZiAoIXBhZ2UtPmFsbG93c0xvYWRGcm9tVVJMKHJlcXVlc3QudXJsKCksIG1h
aW5GcmFtZU1haW5SZXNvdXJjZSkpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcmVzb3VyY2VMb2FkZXIgPSBSZWYgeyByZXNvdXJjZUxvYWRlciB9XSB7CisgICAgICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkZXItPmRpZEZhaWwocmVzb3VyY2VMb2FkZXItPmJsb2NrZWRF
cnJvcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCiAgICAgQ29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGlj
eSA9IHJlc291cmNlTG9hZGVyLnNob3VsZFNuaWZmQ29udGVudCgpID8gQ29udGVudFNuaWZmaW5n
UG9saWN5OjpTbmlmZkNvbnRlbnQgOiBDb250ZW50U25pZmZpbmdQb2xpY3k6OkRvTm90U25pZmZD
b250ZW50OwogICAgIENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IGNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkU25pZmZDb250ZW50RW5jb2Rp
bmcoKSA/IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZiA6IENvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5OjpEb05vdFNuaWZmOwogICAgIFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U7CiAKICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcs
ICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycg
d2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0eSAl
ZCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgJWkiLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpLCAoaW50KXN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIAotICAg
IGF1dG8qIGZyYW1lID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKTsKLQogICAgIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
ID0gdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDMx
MGZjYTc4NzVjMzJjM2NkNzQ3OGRiNjRmNTlhYzJjZjUwMTYzOTIuLmE0NjcyNjMxYmZhNWRlMWQ5
OGZiMTRjMDQ0ZWY0MWFkMGMwODlkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwNiw2ICsxMDYsMTMg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHByb3Bvc2VkUmVxdWVzdCwgSVBDOjoKICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9h
ZEZhbGxiYWNrRm9yUmVkaXJlY3QgcmV0dXJuZWQgZmFsc2UiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICAKKyAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIXBhZ2UtPmFsbG93c0xvYWRGcm9tVVJMKHByb3Bvc2VkUmVxdWVzdC51cmwoKSwgTWFp
bkZyYW1lTWFpblJlc291cmNlOjpObykpCisgICAgICAgICAgICAgICAgcHJvcG9zZWRSZXF1ZXN0
ID0geyB9OworICAgICAgICB9CisgICAgfQogCiAgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJl
cXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+
aWRlbnRpZmllcigpKSB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggYjYyOWM5MmFkYWEyZDYwNzEzMmU1N2FlYmM4MzFmMDM3NWI4MmNhOC4uZGY3
MTQ4NjQ5N2FlNDMxOTYyZWIzOGE1Njk1NWI5M2ZkMmRhMWRmOSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTEy
LTIzICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2hl
Y2sgYWxsb3dlZCBuZXR3b3JrIGhvc3RzIGxpc3Qgd2hlbiB3ZSBzY2hlZHVsZSB0aGUgbG9hZCBp
biB0aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ1NDMKKyAgICAgICAgPHJkYXI6Ly84MzUwMTMxNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRoZSBjaGVjayBmb3Ig
V0tXZWJWaWV3Q29uZmlndXJhdGlvbi5fYWxsb3dlZE5ldHdvcmtIb3N0IHByZXZpb3VzbHkgaGFw
cGVuZWQgYmVmb3JlIHRoZSBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgdGhlIGdpdmVuIFJlc291
cmNlUmVxdWVzdCB3b3VsZCBkaXJlY3RseSBmcm9tIGFuIGFyY2hpdmUuCisgICAgICAgIFRoaXMg
bW92ZXMgdG8gdGhlIGFsbG93ZWQgbmV0d29yayBob3N0IGxpc3QgY2hlY2sgdG8gaGFwcGVuIHdo
ZW4gd2Ugc2NoZWR1bGUgdGhlIG5ldHdvcmsgcmVxdWVzdCwgYW5kIHRodXMKKyAgICAgICAgYWxs
b3dzIHN1YnJlc291cmNlcyBjYWNoZWQgd2l0aGluIGFuIGFyY2hpdmUgdG8gbG9hZCwgZXZlbiBp
ZiB0aGVpciBvcmlnaW5hbCBVUkwgd291bGQgYmUgYmxvY2tlZC4KKworICAgICAgICBOZXcgdGVz
dCBMb2FkV2ViQXJjaGl2ZS5EaXNhbGxvd2VkTmV0d29ya0hvc3RzIGFkZGVkLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW06CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0xMi0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlLWVuYWJsZSBDdXN0b21EaXNwbGF5
TmFtZSBhbmQgRGVmYXVsdERpc3BsYXlOYW1lIEFQSSB0ZXN0cyBvbiBNb250ZXJleQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxT
Y2hlbWVIYW5kbGVyLTEubW0KaW5kZXggZDY3M2JkYWRjN2RkMmQ2YzVjZGI1ZjA1YmNlNWM5YWNj
MjExNzFkZC4uOGNlMWVkMGI0MWVlYmZjYzRjNDQ5NGFiZDI2ZTlhNjQ5YTgxOGM4OSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXItMS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
VVJMU2NoZW1lSGFuZGxlci0xLm1tCkBAIC0xMjU1LDM2ICsxMjU1LDQzIEBAIFRFU1QoVVJMU2No
ZW1lSGFuZGxlciwgQWxsb3dlZE5ldHdvcmtIb3N0c1JlZGlyZWN0KQogICAgIEVYUEVDVF9FUShz
ZXJ2ZXIxMjcwMDEudG90YWxSZXF1ZXN0cygpLCAydSk7CiB9CiAKLVRFU1QoVVJMU2NoZW1lSGFu
ZGxlciwgTG9hZHNTdWJyZXNvdXJjZXMpCitzdGF0aWMgdm9pZCBzZXJ2ZXJMb29wKGNvbnN0IFRl
c3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wmIGxvYWRlZEltYWdlLCBi
b29sJiBsb2FkZWRJRnJhbWUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7
CisgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWyYsIGNvbm5lY3Rpb25dIChWZWN0
b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgIGF1dG8gcGF0aCA9IEhUVFBTZXJ2ZXI6OnBh
cnNlUGF0aChyZXF1ZXN0KTsKKyAgICAgICAgYXV0byBzZW5kUmVwbHkgPSBbJiwgY29ubmVjdGlv
bl0gKGNvbnN0IEhUVFBSZXNwb25zZSYgcmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rp
b24uc2VuZChyZXNwb25zZS5zZXJpYWxpemUoKSwgWyYsIGNvbm5lY3Rpb25dIHsKKyAgICAgICAg
ICAgICAgICBzZXJ2ZXJMb29wKGNvbm5lY3Rpb24sIGxvYWRlZEltYWdlLCBsb2FkZWRJRnJhbWUp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH07CisgICAgICAgIGlmIChwYXRoID09ICIvbWFp
bi5odG1sIikKKyAgICAgICAgICAgIHNlbmRSZXBseSh7IHsgeyAiQ29udGVudC1UeXBlIiwgInRl
eHQvaHRtbCIgfSB9LCAiPGltZyBzcmM9Jy9pbWdzcmMnPjwvaW1nPjxpZnJhbWUgc3JjPScvaWZy
YW1lc3JjJz48L2lmcmFtZT4iIH0pOworICAgICAgICBlbHNlIGlmIChwYXRoID09ICIvaW1nc3Jj
IikgeworICAgICAgICAgICAgbG9hZGVkSW1hZ2UgPSB0cnVlOworICAgICAgICAgICAgc2VuZFJl
cGx5KHsgImltYWdlIGNvbnRlbnQiIH0pOworICAgICAgICB9IGVsc2UgaWYgKHBhdGggPT0gIi9p
ZnJhbWVzcmMiKSB7CisgICAgICAgICAgICBsb2FkZWRJRnJhbWUgPSB0cnVlOworICAgICAgICAg
ICAgc2VuZFJlcGx5KHsgImlmcmFtZSBjb250ZW50IiB9KTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKK30KKworVEVTVChXS1dlYlZp
ZXdDb25maWd1cmF0aW9uLCBMb2Fkc1N1YnJlc291cmNlcykKIHsKICAgICBib29sIGxvYWRlZElt
YWdlID0gZmFsc2U7CiAgICAgYm9vbCBsb2FkZWRJRnJhbWUgPSBmYWxzZTsKIAotICAgIGF1dG8g
aGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOwotCiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJdOwogCi0gICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxT
Y2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFz
aykgewotICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2UgPSBuaWw7Ci0gICAgICAgIGlmIChbdGFz
ay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0bWwiXSkKLSAgICAg
ICAgICAgIHJlc3BvbnNlID0gQCI8aW1nIHNyYz0nL2ltZ3NyYyc+PC9pbWc+PGlmcmFtZSBzcmM9
Jy9pZnJhbWVzcmMnPjwvaWZyYW1lPiI7Ci0gICAgICAgIGVsc2UgaWYgKFt0YXNrLnJlcXVlc3Qu
VVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2ltZ3NyYyJdKSB7Ci0gICAgICAgICAgICByZXNw
b25zZSA9IEAiaW1hZ2UgY29udGVudCI7Ci0gICAgICAgICAgICBsb2FkZWRJbWFnZSA9IHRydWU7
Ci0gICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBpc0VxdWFsVG9TdHJp
bmc6QCIvaWZyYW1lc3JjIl0pIHsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gQCJpZnJhbWUgY29u
dGVudCI7Ci0gICAgICAgICAgICBsb2FkZWRJRnJhbWUgPSB0cnVlOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBbdGFzayBkaWRSZWNl
aXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRh
c2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0
aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQoKV07Ci0gICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ11dOwotICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwotICAgIH1dOwotICAg
IAorICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKFsmXSAoY29uc3QgVGVzdFdl
YktpdEFQSTo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikgeworICAgICAgICBzZXJ2ZXJMb29wKGNv
bm5lY3Rpb24sIGxvYWRlZElGcmFtZSwgbG9hZGVkSW1hZ2UpOworICAgIH0pOworCiAgICAgewog
ICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOwotICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovL2hvc3QxL21haW4u
aHRtbCJdXV07CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCIv
bWFpbi5odG1sIildOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmxvYWRlZElt
YWdlKTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZsb2FkZWRJRnJhbWUpOwog
ICAgIH0KQEAgLTEyOTcsNyArMTMwNCw3IEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgTG9hZHNT
dWJyZXNvdXJjZXMpCiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgICAgICB3ZWJWaWV3LmdldCgp
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotICAgICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAidGVzdDovL2hvc3QxL21haW4uaHRtbCJdXV07CisgICAgICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCIvbWFpbi5odG1sIildOwogICAgICAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpzcGluUnVuTG9vcCgxMDApOwogICAgICAgICBFWFBFQ1RfRkFMU0UobG9hZGVkSUZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xvYWRXZWJBcmNoaXZl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW0KaW5k
ZXggY2M4NGU0MjcwNmUxMWY3NGYyOTI2OGQ4NzZkZGQ2NzRlODBkOTNkYy4uNzExMDJiOTk2ZWEw
MjRiMmVlY2FmMjlmMjdlMWE0MGY0ZDI0MjMyYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQg
PFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2
aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMjA0LDcgKzIwNSw3IEBAIFRFU1QoTG9hZFdlYkFy
Y2hpdmUsIERyYWdOYXZpZ2F0aW9uUmVsb2FkKQogICAgIEVYUEVDVF9XS19TVFJFUShmaW5hbFVS
TCwgIiIpOwogfQogCi1URVNUKExvYWRXZWJBcmNoaXZlLCBIVFRQU1VwZ3JhZGUpCitzdGF0aWMg
TlNEYXRhKiBjb25zdHJ1Y3RBcmNoaXZlKCkKIHsKICAgICBOU1N0cmluZyAqanMgPSBAImFsZXJ0
KCdsb2FkZWQgaHR0cCBzdWJyZXNvdXJjZSBzdWNjZXNzZnVsbHknKSI7CiAgICAgYXV0byByZXNw
b25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHA6Ly9kb3dubG9hZC9zY3JpcHQuanMiXSBNSU1FVHlwZTpAImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIGV4cGVjdGVkQ29udGVudExlbmd0aDpqcy5sZW5ndGggdGV4
dEVuY29kaW5nTmFtZTpAInV0Zi04Il0pOwpAQCAtMjI2LDExICsyMjcsMjggQEAgVEVTVChMb2Fk
V2ViQXJjaGl2ZSwgSFRUUFNVcGdyYWRlKQogICAgICAgICAgICAgQCJXZWJSZXNvdXJjZVVSTCI6
IEAiaHR0cDovL2Rvd25sb2FkL3NjcmlwdC5qcyIsCiAgICAgICAgIH1dCiAgICAgfTsKLSAgICBO
U0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFGcm9tUHJvcGVy
dHlMaXN0OmFyY2hpdmUgZm9ybWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgZXJy
b3JEZXNjcmlwdGlvbjpuaWxdOworICAgIHJldHVybiBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0
aW9uIGRhdGFGcm9tUHJvcGVydHlMaXN0OmFyY2hpdmUgZm9ybWF0Ok5TUHJvcGVydHlMaXN0Qmlu
YXJ5Rm9ybWF0X3YxXzAgZXJyb3JEZXNjcmlwdGlvbjpuaWxdOworfQorCitURVNUKExvYWRXZWJB
cmNoaXZlLCBIVFRQU1VwZ3JhZGUpCit7CisgICAgTlNEYXRhICpkYXRhID0gY29uc3RydWN0QXJj
aGl2ZSgpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwog
ICAgIFt3ZWJWaWV3IGxvYWREYXRhOmRhdGEgTUlNRVR5cGU6QCJhcHBsaWNhdGlvbi94LXdlYmFy
Y2hpdmUiIGNoYXJhY3RlckVuY29kaW5nTmFtZTpAInV0Zi04IiBiYXNlVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cDovL2Rvd25sb2FkLyJdXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dl
YlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImxvYWRlZCBodHRwIHN1YnJlc291cmNlIHN1Y2Nl
c3NmdWxseSIpOwogfQogCitURVNUKExvYWRXZWJBcmNoaXZlLCBEaXNhbGxvd2VkTmV0d29ya0hv
c3RzKQoreworICAgIE5TRGF0YSAqZGF0YSA9IGNvbnN0cnVjdEFyY2hpdmUoKTsKKworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fYWxsb3dlZE5ldHdvcmtIb3N0cyA9
IFtOU1NldCBzZXRdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkRGF0YTpkYXRhIE1J
TUVUeXBlOkAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiBjaGFyYWN0ZXJFbmNvZGluZ05hbWU6
QCJ1dGYtOCIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9kb3dubG9hZC8i
XV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJs
b2FkZWQgaHR0cCBzdWJyZXNvdXJjZSBzdWNjZXNzZnVsbHkiKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9I
VFRQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAppbmRl
eCBmZDc0OWFmYmE5MzgxYjY0NDdiOWMyZWU1YmE1MmI3NDA2ZmNkNWM0Li43NWQyODJlYTllNDBk
MjExNWFmMTk0OGFkM2Y4ZWI4ZmM2MzdjY2Q0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hU
VFBTZXJ2ZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHN0cnVjdCBIVFRQUmVzcG9uc2UgewogICAg
IEhUVFBSZXNwb25zZSYgb3BlcmF0b3I9KEhUVFBSZXNwb25zZSYmKSA9IGRlZmF1bHQ7CiAKICAg
ICBlbnVtIGNsYXNzIEluY2x1ZGVDb250ZW50TGVuZ3RoIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAg
ICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplKEluY2x1ZGVDb250ZW50TGVuZ3RoID0gSW5jbHVk
ZUNvbnRlbnRMZW5ndGg6Olllcyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcmlhbGl6ZShJbmNs
dWRlQ29udGVudExlbmd0aCA9IEluY2x1ZGVDb250ZW50TGVuZ3RoOjpZZXMpIGNvbnN0OwogICAg
IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gYm9keUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAK
ICAgICB1bnNpZ25lZCBzdGF0dXNDb2RlIHsgMjAwIH07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW0KaW5kZXggNzQ0MDNmYjkwYzJiOWZjYjY0NTQyMTZiMjQ2Yjk3NGQwYzI4
NDcyZi4uODhkODZiZjFkMGMxOWYwY2NmMzA1ZmQwODVkYWE0ZDc4NzM0ZDQ5MCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQpAQCAtNDgzLDcgKzQ4Myw3IEBAIFZlY3Rv
cjx1aW50OF90PiBIVFRQUmVzcG9uc2U6OmJvZHlGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgIHJldHVybiB2ZWN0b3I7CiB9CiAKLVZlY3Rvcjx1aW50OF90PiBIVFRQUmVzcG9u
c2U6OnNlcmlhbGl6ZShJbmNsdWRlQ29udGVudExlbmd0aCBpbmNsdWRlQ29udGVudExlbmd0aCkK
K1ZlY3Rvcjx1aW50OF90PiBIVFRQUmVzcG9uc2U6OnNlcmlhbGl6ZShJbmNsdWRlQ29udGVudExl
bmd0aCBpbmNsdWRlQ29udGVudExlbmd0aCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHJl
c3BvbnNlQnVpbGRlcjsKICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJIVFRQLzEuMSAiLCBz
dGF0dXNDb2RlLCAnICcsIHN0YXR1c1RleHQoc3RhdHVzQ29kZSksICJcclxuIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447896</attachid>
            <date>2021-12-23 12:00:04 -0800</date>
            <delta_ts>2021-12-23 15:11:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234543-20211223120003.patch</filename>
            <type>text/plain</type>
            <size>18358</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRkMzU3OTdiNDAwMzQ3
YmU2YTY4ZjEzMWIzNDdlZWYwNjJlMzRmMy4uOWExNDdlOTY2ODM1MzQxODJiYmM5YzhmMGViOTQx
ZGVlNWYwODVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTEyLTIzICBNYXR0
IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisKKyAgICAgICAgQ2hlY2sgYWxsb3dl
ZCBuZXR3b3JrIGhvc3RzIGxpc3Qgd2hlbiB3ZSBzY2hlZHVsZSB0aGUgbG9hZCBpbiB0aGUgbmV0
d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ1NDMKKyAgICAgICAgPHJkYXI6Ly84MzUwMTMxNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRoZSBjaGVjayBmb3IgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5fYWxsb3dlZE5ldHdvcmtIb3N0IHByZXZpb3VzbHkgaGFwcGVuZWQgYmVm
b3JlIHRoZSBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgdGhlIGdpdmVuIFJlc291cmNlUmVxdWVz
dCB3b3VsZCBkaXJlY3RseSBmcm9tIGFuIGFyY2hpdmUuCisgICAgICAgIFRoaXMgbW92ZXMgdG8g
dGhlIGFsbG93ZWQgbmV0d29yayBob3N0IGxpc3QgY2hlY2sgdG8gaGFwcGVuIHdoZW4gd2Ugc2No
ZWR1bGUgdGhlIG5ldHdvcmsgcmVxdWVzdCwgYW5kIHRodXMKKyAgICAgICAgYWxsb3dzIHN1YnJl
c291cmNlcyBjYWNoZWQgd2l0aGluIGFuIGFyY2hpdmUgdG8gbG9hZCwgZXZlbiBpZiB0aGVpciBv
cmlnaW5hbCBVUkwgd291bGQgYmUgYmxvY2tlZC4KKworICAgICAgICBOZXcgdGVzdCBMb2FkV2Vi
QXJjaGl2ZS5EaXNhbGxvd2VkTmV0d29ya0hvc3RzIGFkZGVkLgorCisgICAgICAgICogbG9hZGVy
L1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE5vdGlmaWVyOjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9hZGVyL1Jl
c291cmNlTG9hZE5vdGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWROb3Rp
Zmllcjo6aXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIpOgorCiAyMDIxLTEyLTIyICBBbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFNvZnQgbGluZWJy
ZWFrcyBoYXZlIGluY29ycmVjdCBiaWRpIHBhcmFncmFwaCBwb3NpdGlvbnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
ZDQyMzhmM2QyZDcyMWRmYTAyMWFkOGY3MjJiNDY4NmQ2YTViNGYxNy4uYTE4NTE4YzljMDkwMDdi
OTI4ZWFlZDg4MmVjYTA4MGEyMmEzZDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAy
MS0xMi0yMyAgTWF0dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgorCisgICAgICAg
IENoZWNrIGFsbG93ZWQgbmV0d29yayBob3N0cyBsaXN0IHdoZW4gd2Ugc2NoZWR1bGUgdGhlIGxv
YWQgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NTQzCisgICAgICAgIDxyZGFyOi8vODM1MDEzMTU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBUaGUgY2hlY2sg
Zm9yIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24uX2FsbG93ZWROZXR3b3JrSG9zdCBwcmV2aW91c2x5
IGhhcHBlbmVkIGJlZm9yZSB0aGUgY2hlY2sgdG8gc2VlIGlmCisgICAgICAgIHRoZSBnaXZlbiBS
ZXNvdXJjZVJlcXVlc3Qgd291bGQgZGlyZWN0bHkgZnJvbSBhbiBhcmNoaXZlLgorICAgICAgICBU
aGlzIG1vdmVzIHRvIHRoZSBhbGxvd2VkIG5ldHdvcmsgaG9zdCBsaXN0IGNoZWNrIHRvIGhhcHBl
biB3aGVuIHdlIHNjaGVkdWxlIHRoZSBuZXR3b3JrIHJlcXVlc3QsIGFuZCB0aHVzCisgICAgICAg
IGFsbG93cyBzdWJyZXNvdXJjZXMgY2FjaGVkIHdpdGhpbiBhbiBhcmNoaXZlIHRvIGxvYWQsIGV2
ZW4gaWYgdGhlaXIgb3JpZ2luYWwgVVJMIHdvdWxkIGJlIGJsb2NrZWQuCisgICAgICAgIFdlIGFs
c28gbmVlZCB0byBjaGVjayB3aGVuIHJlZGlyZWN0aW5nIHRvIHByZXZlbnQgYW4gYWxsb3dlZCBk
b21haW4gZnJvbSByZWRpcmVjdGluZyB0byBhIGZvcmJpZGRlbiBkb21haW4uCAorICAgICAgICBU
aGlzIGFsc28gbWFrZXMgaXQgc28gdGhhdCBXS1dlYlZpZXdDb25maWd1cmF0aW9uLl9sb2Fkc1N1
YnJlc291cmNlcyBvbmx5IHByZXZlbnRzCisgICAgICAgIHN1YnJlc291cmNlIGxvYWRzIHRoYXQg
d291bGQgdG91Y2ggdGhlIG5ldHdvcmssIHNvIHdlIGNhbid0IHVzZSBXS1VSTFNjaGVtZUhhbmRs
ZXIgdG8gdGVzdCBpdCBhbnkgbW9yZS4KKyAgICAgICAgVGhhdCdzIGZpbmUsIHNpbmNlIHRoZSB0
d28gdXNlcnMgb2YgdGhlIFNQSSBvbmx5IGxvYWQgVVJMcyBmcm9tIHRoZSBuZXR3b3JrLgorCisg
ICAgICAgIE5ldyB0ZXN0IExvYWRXZWJBcmNoaXZlLkRpc2FsbG93ZWROZXR3b3JrSG9zdHMgYWRk
ZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KToKKwogMjAyMS0xMi0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFJlLWVuYWJsZSBDdXN0b21EaXNwbGF5TmFtZSBhbmQgRGVm
YXVsdERpc3BsYXlOYW1lIEFQSSB0ZXN0cyBvbiBNb250ZXJleQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWROb3RpZmllci5jcHAKaW5kZXggMTQ3YjQ1ZTA2NDM4MTIyN2Iw
NTIyMDY0NDE4NTIzYzA3OWY2NGQxNC4uNjJiYjU2ZTM0ZTZmNDZkMjYyODM2Y2ZjYTQ2NWI0ZGIw
ZTMwODNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE5v
dGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwCkBAIC0xMzcsMTIgKzEzNyw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkTm90aWZpZXI6OmRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291CiAgICAg
UmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAgICBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KGxvYWRlciwgaWRlbnRpZmllciwgcmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAKLSAgICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUu
cGFnZSgpKSB7Ci0gICAgICAgIGF1dG8gbWFpbkZyYW1lTWFpblJlc291cmNlID0gbV9mcmFtZS5p
c01haW5GcmFtZSgpICYmIG1faW5pdGlhbFJlcXVlc3RJZGVudGlmaWVyID09IGlkZW50aWZpZXIg
PyBNYWluRnJhbWVNYWluUmVzb3VyY2U6OlllcyA6IE1haW5GcmFtZU1haW5SZXNvdXJjZTo6Tm87
Ci0gICAgICAgIGlmICghcGFnZS0+YWxsb3dzTG9hZEZyb21VUkwocmVxdWVzdC51cmwoKSwgbWFp
bkZyYW1lTWFpblJlc291cmNlKSkKLSAgICAgICAgICAgIHJlcXVlc3QgPSB7IH07Ci0gICAgfQot
CiAgICAgLy8gSWYgdGhlIFVSTCBjaGFuZ2VkLCB0aGVuIHdlIHdhbnQgdG8gcHV0IHRoYXQgbmV3
IFVSTCBpbiB0aGUgImRpZCB0ZWxsIGNsaWVudCIgc2V0IHRvby4KICAgICBpZiAoIXJlcXVlc3Qu
aXNOdWxsKCkgJiYgb2xkUmVxdWVzdFVSTCAhPSByZXF1ZXN0LnVybCgpLnN0cmluZygpICYmIG1f
ZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKICAgICAgICAgbV9mcmFtZS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpLT5kaWRUZWxsQ2xpZW50QWJvdXRMb2FkKHJlcXVlc3QudXJsKCku
c3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE5vdGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIu
aAppbmRleCA0ZGJkNGNjNDlkNjUwNDIxMTg0ZTYwYzI0ZGQ3MTRkY2JlMGJkYjBkLi42ZGExNjAz
MjVmNDJmZWY1NDBjNmJkNTBiYjE4MmU4NjlkYWRlOWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuaApAQCAtNjgsNiArNjgsMTEgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZW5kUmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyhEb2N1bWVudExvYWRlcios
IFJlc291cmNlTG9hZGVySWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAorICAgIGJvb2wg
aXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gbV9pbml0aWFsUmVxdWVzdElkZW50aWZpZXIg
PT0gaWRlbnRpZmllcjsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgRnJhbWUmIG1fZnJhbWU7CiAg
ICAgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUxvYWRlcklkZW50aWZpZXI+IG1faW5pdGlhbFJlcXVl
c3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCA3
MGVhMjIwZGMxN2M3Mzc2ZWQ2NjBmYTdhNjFhODRlMzFjMzM0Y2JiLi45MDc1Y2JjMGEzMDQwZWEx
NTBhODYyNWNkYTA4OTBiMWVlMTM4YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuaApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdGFydCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2FuY2VsKGNvbnN0IFJlc291cmNl
RXJyb3ImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KCk7Ci0gICAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcigpOwogICAgIFJlc291cmNlRXJyb3IgYmxvY2tl
ZEJ5Q29udGVudEJsb2NrZXJFcnJvcigpOwogICAgIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VS
TEVycm9yKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYzNkZjE1M2UwZTZhMjdmYjY3MDQxNzAw
M2EzNGQzMGI4MWM1NWMyOS4uZDg2MjQzZjVhN2ZhMWFhNTFmYTFiMGUzMmU4NTkxMjMwMzhlYWVm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcApAQCAtMjk5LDE0ICsyOTksMjcgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNv
dXJjZUwKICAgICBhdXRvIGlkZW50aWZpZXIgPSByZXNvdXJjZUxvYWRlci5pZGVudGlmaWVyKCk7
CiAgICAgQVNTRVJUKGlkZW50aWZpZXIpOwogCisgICAgYXV0byogZnJhbWUgPSByZXNvdXJjZUxv
YWRlci5mcmFtZSgpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZSA/IGZyYW1lLT5wYWdl
KCkgOiBudWxscHRyKSB7CisgICAgICAgIGF1dG8gbWFpbkZyYW1lTWFpblJlc291cmNlID0gZnJh
bWUtPmlzTWFpbkZyYW1lKCkKKyAgICAgICAgICAgICYmIHJlc291cmNlTG9hZGVyLmZyYW1lTG9h
ZGVyKCkKKyAgICAgICAgICAgICYmIHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVyKCktPm5vdGlm
aWVyKCkuaXNJbml0aWFsUmVxdWVzdElkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgICAg
ID8gTWFpbkZyYW1lTWFpblJlc291cmNlOjpZZXMgOiBNYWluRnJhbWVNYWluUmVzb3VyY2U6Ok5v
OworICAgICAgICBpZiAoIXBhZ2UtPmFsbG93c0xvYWRGcm9tVVJMKHJlcXVlc3QudXJsKCksIG1h
aW5GcmFtZU1haW5SZXNvdXJjZSkpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcmVzb3VyY2VMb2FkZXIgPSBSZWYgeyByZXNvdXJjZUxvYWRlciB9XSB7CisgICAgICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkZXItPmRpZEZhaWwocmVzb3VyY2VMb2FkZXItPmJsb2NrZWRF
cnJvcigpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCiAgICAgQ29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRlbnRTbmlmZmluZ1BvbGlj
eSA9IHJlc291cmNlTG9hZGVyLnNob3VsZFNuaWZmQ29udGVudCgpID8gQ29udGVudFNuaWZmaW5n
UG9saWN5OjpTbmlmZkNvbnRlbnQgOiBDb250ZW50U25pZmZpbmdQb2xpY3k6OkRvTm90U25pZmZD
b250ZW50OwogICAgIENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IGNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkU25pZmZDb250ZW50RW5jb2Rp
bmcoKSA/IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZiA6IENvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5OjpEb05vdFNuaWZmOwogICAgIFN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U7CiAKICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcs
ICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycg
d2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0eSAl
ZCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgJWkiLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpLCAoaW50KXN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKIAotICAg
IGF1dG8qIGZyYW1lID0gcmVzb3VyY2VMb2FkZXIuZnJhbWUoKTsKLQogICAgIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
ID0gdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDMx
MGZjYTc4NzVjMzJjM2NkNzQ3OGRiNjRmNTlhYzJjZjUwMTYzOTIuLmQ3MWFlNWUwYTlhZjNkOWVl
M2E1MWQ4ZmNmNTBmZTUzNTliMzkwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTEwNiw2ICsxMDYsMTcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHByb3Bvc2VkUmVxdWVzdCwgSVBDOjoKICAgICAgICAgV0VCUkVTT1VSQ0VMT0FERVJfUkVM
RUFTRV9MT0coIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9h
ZEZhbGxiYWNrRm9yUmVkaXJlY3QgcmV0dXJuZWQgZmFsc2UiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICAKKyAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAg
ICBhdXRvIG1haW5GcmFtZU1haW5SZXNvdXJjZSA9IGZyYW1lLT5pc01haW5GcmFtZSgpCisgICAg
ICAgICAgICAgICAgJiYgbV9jb3JlTG9hZGVyLT5mcmFtZUxvYWRlcigpCisgICAgICAgICAgICAg
ICAgJiYgbV9jb3JlTG9hZGVyLT5mcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmlzSW5pdGlhbFJl
cXVlc3RJZGVudGlmaWVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKQorICAgICAgICAgICAg
ICAgID8gTWFpbkZyYW1lTWFpblJlc291cmNlOjpZZXMgOiBNYWluRnJhbWVNYWluUmVzb3VyY2U6
Ok5vOworICAgICAgICAgICAgaWYgKCFwYWdlLT5hbGxvd3NMb2FkRnJvbVVSTChwcm9wb3NlZFJl
cXVlc3QudXJsKCksIG1haW5GcmFtZU1haW5SZXNvdXJjZSkpCisgICAgICAgICAgICAgICAgcHJv
cG9zZWRSZXF1ZXN0ID0geyB9OworICAgICAgICB9CisgICAgfQogCiAgICAgbV9jb3JlTG9hZGVy
LT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3Bv
bnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1f
Y29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjYyOWM5MmFkYWEyZDYwNzEzMmU1N2FlYmM4MzFmMDM3
NWI4MmNhOC4uZGY3MTQ4NjQ5N2FlNDMxOTYyZWIzOGE1Njk1NWI5M2ZkMmRhMWRmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDIxLTEyLTIzICBNYXR0IFdvb2Ryb3cgIDxtYXR0d29vZHJvd0BhcHBsZS5jb20+CisK
KyAgICAgICAgQ2hlY2sgYWxsb3dlZCBuZXR3b3JrIGhvc3RzIGxpc3Qgd2hlbiB3ZSBzY2hlZHVs
ZSB0aGUgbG9hZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ1NDMKKyAgICAgICAgPHJkYXI6Ly84MzUwMTMx
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIFRo
ZSBjaGVjayBmb3IgV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5fYWxsb3dlZE5ldHdvcmtIb3N0IHBy
ZXZpb3VzbHkgaGFwcGVuZWQgYmVmb3JlIHRoZSBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgdGhl
IGdpdmVuIFJlc291cmNlUmVxdWVzdCB3b3VsZCBkaXJlY3RseSBmcm9tIGFuIGFyY2hpdmUuCisg
ICAgICAgIFRoaXMgbW92ZXMgdG8gdGhlIGFsbG93ZWQgbmV0d29yayBob3N0IGxpc3QgY2hlY2sg
dG8gaGFwcGVuIHdoZW4gd2Ugc2NoZWR1bGUgdGhlIG5ldHdvcmsgcmVxdWVzdCwgYW5kIHRodXMK
KyAgICAgICAgYWxsb3dzIHN1YnJlc291cmNlcyBjYWNoZWQgd2l0aGluIGFuIGFyY2hpdmUgdG8g
bG9hZCwgZXZlbiBpZiB0aGVpciBvcmlnaW5hbCBVUkwgd291bGQgYmUgYmxvY2tlZC4KKworICAg
ICAgICBOZXcgdGVzdCBMb2FkV2ViQXJjaGl2ZS5EaXNhbGxvd2VkTmV0d29ya0hvc3RzIGFkZGVk
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0xMi0yMiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlLWVuYWJsZSBD
dXN0b21EaXNwbGF5TmFtZSBhbmQgRGVmYXVsdERpc3BsYXlOYW1lIEFQSSB0ZXN0cyBvbiBNb250
ZXJleQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXggZDY3M2JkYWRjN2RkMmQ2YzVjZGI1
ZjA1YmNlNWM5YWNjMjExNzFkZC4uOGNlMWVkMGI0MWVlYmZjYzRjNDQ5NGFiZDI2ZTlhNjQ5YTgx
OGM4OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1VSTFNjaGVtZUhhbmRsZXItMS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBAIC0xMjU1LDM2ICsxMjU1LDQzIEBA
IFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgQWxsb3dlZE5ldHdvcmtIb3N0c1JlZGlyZWN0KQogICAg
IEVYUEVDVF9FUShzZXJ2ZXIxMjcwMDEudG90YWxSZXF1ZXN0cygpLCAydSk7CiB9CiAKLVRFU1Qo
VVJMU2NoZW1lSGFuZGxlciwgTG9hZHNTdWJyZXNvdXJjZXMpCitzdGF0aWMgdm9pZCBzZXJ2ZXJM
b29wKGNvbnN0IFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wmIGxv
YWRlZEltYWdlLCBib29sJiBsb2FkZWRJRnJhbWUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEk7CisgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWyYsIGNvbm5l
Y3Rpb25dIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgIGF1dG8gcGF0aCA9IEhU
VFBTZXJ2ZXI6OnBhcnNlUGF0aChyZXF1ZXN0KTsKKyAgICAgICAgYXV0byBzZW5kUmVwbHkgPSBb
JiwgY29ubmVjdGlvbl0gKGNvbnN0IEhUVFBSZXNwb25zZSYgcmVzcG9uc2UpIHsKKyAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChyZXNwb25zZS5zZXJpYWxpemUoKSwgWyYsIGNvbm5lY3Rpb25d
IHsKKyAgICAgICAgICAgICAgICBzZXJ2ZXJMb29wKGNvbm5lY3Rpb24sIGxvYWRlZEltYWdlLCBs
b2FkZWRJRnJhbWUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH07CisgICAgICAgIGlmIChw
YXRoID09ICIvbWFpbi5odG1sIikKKyAgICAgICAgICAgIHNlbmRSZXBseSh7IHsgeyAiQ29udGVu
dC1UeXBlIiwgInRleHQvaHRtbCIgfSB9LCAiPGltZyBzcmM9Jy9pbWdzcmMnPjwvaW1nPjxpZnJh
bWUgc3JjPScvaWZyYW1lc3JjJz48L2lmcmFtZT4iIH0pOworICAgICAgICBlbHNlIGlmIChwYXRo
ID09ICIvaW1nc3JjIikgeworICAgICAgICAgICAgbG9hZGVkSW1hZ2UgPSB0cnVlOworICAgICAg
ICAgICAgc2VuZFJlcGx5KHsgImltYWdlIGNvbnRlbnQiIH0pOworICAgICAgICB9IGVsc2UgaWYg
KHBhdGggPT0gIi9pZnJhbWVzcmMiKSB7CisgICAgICAgICAgICBsb2FkZWRJRnJhbWUgPSB0cnVl
OworICAgICAgICAgICAgc2VuZFJlcGx5KHsgImlmcmFtZSBjb250ZW50IiB9KTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKK30KKwor
VEVTVChXS1dlYlZpZXdDb25maWd1cmF0aW9uLCBMb2Fkc1N1YnJlc291cmNlcykKIHsKICAgICBi
b29sIGxvYWRlZEltYWdlID0gZmFsc2U7CiAgICAgYm9vbCBsb2FkZWRJRnJhbWUgPSBmYWxzZTsK
IAotICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10p
OwotCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJdOwogCi0gICAgW2hhbmRsZXIg
c2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2No
ZW1lVGFzaz4gdGFzaykgewotICAgICAgICBOU1N0cmluZyAqcmVzcG9uc2UgPSBuaWw7Ci0gICAg
ICAgIGlmIChbdGFzay5yZXF1ZXN0LlVSTC5wYXRoIGlzRXF1YWxUb1N0cmluZzpAIi9tYWluLmh0
bWwiXSkKLSAgICAgICAgICAgIHJlc3BvbnNlID0gQCI8aW1nIHNyYz0nL2ltZ3NyYyc+PC9pbWc+
PGlmcmFtZSBzcmM9Jy9pZnJhbWVzcmMnPjwvaWZyYW1lPiI7Ci0gICAgICAgIGVsc2UgaWYgKFt0
YXNrLnJlcXVlc3QuVVJMLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2ltZ3NyYyJdKSB7Ci0gICAg
ICAgICAgICByZXNwb25zZSA9IEAiaW1hZ2UgY29udGVudCI7Ci0gICAgICAgICAgICBsb2FkZWRJ
bWFnZSA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoW3Rhc2sucmVxdWVzdC5VUkwucGF0aCBp
c0VxdWFsVG9TdHJpbmc6QCIvaWZyYW1lc3JjIl0pIHsKLSAgICAgICAgICAgIHJlc3BvbnNlID0g
QCJpZnJhbWUgY29udGVudCI7Ci0gICAgICAgICAgICBsb2FkZWRJRnJhbWUgPSB0cnVlOwotICAg
ICAgICB9IGVsc2UKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBb
dGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVk
Q29udGVudExlbmd0aDpyZXNwb25zZS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5nZXQo
KV07Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltyZXNwb25zZSBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwotICAgICAgICBbdGFzayBkaWRGaW5pc2hdOwot
ICAgIH1dOwotICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKFsmXSAo
Y29uc3QgVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikgeworICAgICAgICBz
ZXJ2ZXJMb29wKGNvbm5lY3Rpb24sIGxvYWRlZElGcmFtZSwgbG9hZGVkSW1hZ2UpOworICAgIH0p
OworCiAgICAgewogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDov
L2hvc3QxL21haW4uaHRtbCJdXV07CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCIvbWFpbi5odG1sIildOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmxvYWRlZEltYWdlKTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZsb2Fk
ZWRJRnJhbWUpOwogICAgIH0KQEAgLTEyOTcsNyArMTMwNCw3IEBAIFRFU1QoVVJMU2NoZW1lSGFu
ZGxlciwgTG9hZHNTdWJyZXNvdXJjZXMpCiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgICAgICB3
ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotICAgICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAidGVzdDovL2hvc3QxL21haW4uaHRtbCJdXV07CisgICAgICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCIvbWFpbi5odG1sIildOwogICAgICAg
ICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxMDApOwogICAgICAgICBFWFBFQ1RfRkFMU0UobG9h
ZGVkSUZyYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0xv
YWRXZWJBcmNoaXZlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFy
Y2hpdmUubW0KaW5kZXggY2M4NGU0MjcwNmUxMWY3NGYyOTI2OGQ4NzZkZGQ2NzRlODBkOTNkYy4u
NzExMDJiOTk2ZWEwMjRiMmVlY2FmMjlmMjdlMWE0MGY0ZDI0MjMyYSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTG9hZFdlYkFyY2hpdmUubW0KQEAgLTMzLDYgKzMzLDcg
QEAKICNpbXBvcnQgPFdlYktpdC9XS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLTmF2aWdhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMjA0LDcgKzIwNSw3IEBAIFRF
U1QoTG9hZFdlYkFyY2hpdmUsIERyYWdOYXZpZ2F0aW9uUmVsb2FkKQogICAgIEVYUEVDVF9XS19T
VFJFUShmaW5hbFVSTCwgIiIpOwogfQogCi1URVNUKExvYWRXZWJBcmNoaXZlLCBIVFRQU1VwZ3Jh
ZGUpCitzdGF0aWMgTlNEYXRhKiBjb25zdHJ1Y3RBcmNoaXZlKCkKIHsKICAgICBOU1N0cmluZyAq
anMgPSBAImFsZXJ0KCdsb2FkZWQgaHR0cCBzdWJyZXNvdXJjZSBzdWNjZXNzZnVsbHknKSI7CiAg
ICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9kb3dubG9hZC9zY3JpcHQuanMiXSBN
SU1FVHlwZTpAImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIGV4cGVjdGVkQ29udGVudExlbmd0aDpq
cy5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpAInV0Zi04Il0pOwpAQCAtMjI2LDExICsyMjcsMjgg
QEAgVEVTVChMb2FkV2ViQXJjaGl2ZSwgSFRUUFNVcGdyYWRlKQogICAgICAgICAgICAgQCJXZWJS
ZXNvdXJjZVVSTCI6IEAiaHR0cDovL2Rvd25sb2FkL3NjcmlwdC5qcyIsCiAgICAgICAgIH1dCiAg
ICAgfTsKLSAgICBOU0RhdGEgKmRhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRh
dGFGcm9tUHJvcGVydHlMaXN0OmFyY2hpdmUgZm9ybWF0Ok5TUHJvcGVydHlMaXN0QmluYXJ5Rm9y
bWF0X3YxXzAgZXJyb3JEZXNjcmlwdGlvbjpuaWxdOworICAgIHJldHVybiBbTlNQcm9wZXJ0eUxp
c3RTZXJpYWxpemF0aW9uIGRhdGFGcm9tUHJvcGVydHlMaXN0OmFyY2hpdmUgZm9ybWF0Ok5TUHJv
cGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzAgZXJyb3JEZXNjcmlwdGlvbjpuaWxdOworfQorCitU
RVNUKExvYWRXZWJBcmNoaXZlLCBIVFRQU1VwZ3JhZGUpCit7CisgICAgTlNEYXRhICpkYXRhID0g
Y29uc3RydWN0QXJjaGl2ZSgpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOwogICAgIFt3ZWJWaWV3IGxvYWREYXRhOmRhdGEgTUlNRVR5cGU6QCJhcHBsaWNh
dGlvbi94LXdlYmFyY2hpdmUiIGNoYXJhY3RlckVuY29kaW5nTmFtZTpAInV0Zi04IiBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2Rvd25sb2FkLyJdXTsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImxvYWRlZCBodHRwIHN1YnJl
c291cmNlIHN1Y2Nlc3NmdWxseSIpOwogfQogCitURVNUKExvYWRXZWJBcmNoaXZlLCBEaXNhbGxv
d2VkTmV0d29ya0hvc3RzKQoreworICAgIE5TRGF0YSAqZGF0YSA9IGNvbnN0cnVjdEFyY2hpdmUo
KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fYWxsb3dlZE5l
dHdvcmtIb3N0cyA9IFtOU1NldCBzZXRdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2Fk
RGF0YTpkYXRhIE1JTUVUeXBlOkAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiBjaGFyYWN0ZXJF
bmNvZGluZ05hbWU6QCJ1dGYtOCIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6
Ly9kb3dubG9hZC8iXV07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRG
b3JBbGVydF0sICJsb2FkZWQgaHR0cCBzdWJyZXNvdXJjZSBzdWNjZXNzZnVsbHkiKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIuaAppbmRleCBmZDc0OWFmYmE5MzgxYjY0NDdiOWMyZWU1YmE1MmI3NDA2ZmNkNWM0Li43
NWQyODJlYTllNDBkMjExNWFmMTk0OGFkM2Y4ZWI4ZmM2MzdjY2Q0IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHN0cnVjdCBIVFRQUmVz
cG9uc2UgewogICAgIEhUVFBSZXNwb25zZSYgb3BlcmF0b3I9KEhUVFBSZXNwb25zZSYmKSA9IGRl
ZmF1bHQ7CiAKICAgICBlbnVtIGNsYXNzIEluY2x1ZGVDb250ZW50TGVuZ3RoIDogYm9vbCB7IE5v
LCBZZXMgfTsKLSAgICBWZWN0b3I8dWludDhfdD4gc2VyaWFsaXplKEluY2x1ZGVDb250ZW50TGVu
Z3RoID0gSW5jbHVkZUNvbnRlbnRMZW5ndGg6Olllcyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNl
cmlhbGl6ZShJbmNsdWRlQ29udGVudExlbmd0aCA9IEluY2x1ZGVDb250ZW50TGVuZ3RoOjpZZXMp
IGNvbnN0OwogICAgIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gYm9keUZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJik7CiAKICAgICB1bnNpZ25lZCBzdGF0dXNDb2RlIHsgMjAwIH07CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KaW5kZXggNzQ0MDNmYjkwYzJiOWZjYjY0NTQyMTZi
MjQ2Yjk3NGQwYzI4NDcyZi4uODhkODZiZjFkMGMxOWYwY2NmMzA1ZmQwODVkYWE0ZDc4NzM0ZDQ5
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQpAQCAtNDgzLDcgKzQ4
Myw3IEBAIFZlY3Rvcjx1aW50OF90PiBIVFRQUmVzcG9uc2U6OmJvZHlGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiB2ZWN0b3I7CiB9CiAKLVZlY3Rvcjx1aW50OF90
PiBIVFRQUmVzcG9uc2U6OnNlcmlhbGl6ZShJbmNsdWRlQ29udGVudExlbmd0aCBpbmNsdWRlQ29u
dGVudExlbmd0aCkKK1ZlY3Rvcjx1aW50OF90PiBIVFRQUmVzcG9uc2U6OnNlcmlhbGl6ZShJbmNs
dWRlQ29udGVudExlbmd0aCBpbmNsdWRlQ29udGVudExlbmd0aCkgY29uc3QKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHJlc3BvbnNlQnVpbGRlcjsKICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJI
VFRQLzEuMSAiLCBzdGF0dXNDb2RlLCAnICcsIHN0YXR1c1RleHQoc3RhdHVzQ29kZSksICJcclxu
Iik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>