<?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>214176</bug_id>
          <alias>Ram</alias>
          <creation_ts>2020-07-10 00:50:31 -0700</creation_ts>
          <short_desc>PCM: Accept ad click data when the link opens a new window</short_desc>
          <delta_ts>2020-10-28 17:00:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>Safari Technology Preview</version>
          <rep_platform>PC</rep_platform>
          <op_sys>macOS 10.15</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ramkumar">ramkumar.au</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>kartiksanghavi05</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>m.serrate</cc>
    
    <cc>ramkumar.au</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1670384</commentid>
    <comment_count>0</comment_count>
    <who name="Ramkumar">ramkumar.au</who>
    <bug_when>2020-07-10 00:50:31 -0700</bug_when>
    <thetext>Hello Team, 

I&apos;m testing [Private click measurement](https://webkit.org/blog/8943/privacy-preserving-ad-click-attribution-for-the-web/) feature. I have enabled experiment features for `adclick attribution` &amp;  `adclick attribution debug mode` in Latest Safari Tech Preview Browser version: `Release 109 (Safari 14.0, WebKit 15610.1.17.2)`. 

When trying to repro(in localhost) the ad click attribution behavior per the proposal (with redirect and waiting on step 3) -- I load the href link in the same window, I get everything as expected -- Storing ad click, redirect and attribution call after 60 seconds. [console logs](https://user-images.githubusercontent.com/2718218/87091235-2f68dc80-c1ee-11ea-8750-ae9abe997353.png) 

when I load the ad click on a new window(`target=&quot;_blank&quot;`) as the typical behavior in from publisher page, I don&apos;t see the repro for Step 1( and subsequently for step 2 and 3). Expected behavior when I load the adlink on new window is to see &quot;Storing Ad Click&quot; in the console logs(debug mode).

This is was posted earlier in GH page and was asked to report here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1670538</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-10 12:48:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/65358005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699606</commentid>
    <comment_count>2</comment_count>
    <who name="Kartik">kartiksanghavi05</who>
    <bug_when>2020-10-19 21:30:24 -0700</bug_when>
    <thetext>Hello Team,

Do you have any updates on this bug?

Thanks,
Kartik</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699709</commentid>
    <comment_count>3</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-20 07:54:00 -0700</bug_when>
    <thetext>Hi, and thanks for filing this bug! No updates at this point other than that this should be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702168</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-27 17:39:29 -0700</bug_when>
    <thetext>*** Bug 218127 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702223</commentid>
    <comment_count>5</comment_count>
      <attachid>412507</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-27 20:48:36 -0700</bug_when>
    <thetext>Created attachment 412507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702304</commentid>
    <comment_count>6</comment_count>
      <attachid>412507</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-28 07:56:59 -0700</bug_when>
    <thetext>Comment on attachment 412507
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2889
&gt; +    Optional&lt;WebCore::AdClickAttribution&gt; m_newPageNavigationAdClickAttribution;

It would be good to find a way to address this without adding a new data member to WebPageProxy. The adClickAttribution is associated with a navigation, not a page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702306</commentid>
    <comment_count>7</comment_count>
      <attachid>412507</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-10-28 07:58:09 -0700</bug_when>
    <thetext>Comment on attachment 412507
Patch

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

&gt; Source/WebKit/ChangeLog:12
&gt; +        where it can be picked up in WebPageProxy::didCommitLoadForFrame().

The change log is unclear about why WebPageProxy::createNewPage() somehow drops the adClickAttribution which is present in the NavigationAction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702311</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-28 08:15:49 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Comment on attachment 412507 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412507&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.h:2889
&gt; &gt; +    Optional&lt;WebCore::AdClickAttribution&gt; m_newPageNavigationAdClickAttribution;
&gt; 
&gt; It would be good to find a way to address this without adding a new data
&gt; member to WebPageProxy. The adClickAttribution is associated with a
&gt; navigation, not a page.

I&apos;ve spent a lot of time trying to figure that out. The NavigationAction object is not forwarded to the new page and the handling is done in the client which differs per application using WebKit as far as I can tell, i.e. TestRunner has one handling and Safari has another. That looked like a risk of passing tests with regressions in Safari or other users of WebKit. If you have guidance on how to get the NavigationAction object through, I&apos;m all ears. I&apos;ve discussed this at length with Alex and Jiewen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702312</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-28 08:17:17 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 412507 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412507&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:12
&gt; &gt; +        where it can be picked up in WebPageProxy::didCommitLoadForFrame().
&gt; 
&gt; The change log is unclear about why WebPageProxy::createNewPage() somehow
&gt; drops the adClickAttribution which is present in the NavigationAction.

As far as I can tell, it drops NavigationAction. When we execute the completion handler in WebPageProxy::createNewPage, there is just a WebPageProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702318</commentid>
    <comment_count>10</comment_count>
      <attachid>412507</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-28 08:34:41 -0700</bug_when>
    <thetext>Comment on attachment 412507
Patch

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

&gt; Source/WebKit/ChangeLog:18
&gt; +            Noe also checks for pending ad click attribution data in its new

Now.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4657
&gt; +            adClickAttribution = m_newPageNavigationAdClickAttribution;

This case doesn&apos;t rely on the navigation object, should it still be inside the if (navigation) check?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4664
&gt; +        m_newPageNavigationAdClickAttribution.reset();

Why call reset() only inside this if-statement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702347</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-28 09:48:29 -0700</bug_when>
    <thetext>(In reply to katherine_cheney from comment #10)
&gt; Comment on attachment 412507 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412507&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:18
&gt; &gt; +            Noe also checks for pending ad click attribution data in its new
&gt; 
&gt; Now.

Will fix.

&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4657
&gt; &gt; +            adClickAttribution = m_newPageNavigationAdClickAttribution;
&gt; 
&gt; This case doesn&apos;t rely on the navigation object, should it still be inside
&gt; the if (navigation) check?

No, I should probably move it to else if (navigation-&gt;adClickAttribution()). Thx.

&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4664
&gt; &gt; +        m_newPageNavigationAdClickAttribution.reset();
&gt; 
&gt; Why call reset() only inside this if-statement?

True. Will move it outside.

Thanks! Awaiting Chris&apos;s further comments before I update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702355</commentid>
    <comment_count>12</comment_count>
      <attachid>412507</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-28 10:07:02 -0700</bug_when>
    <thetext>Comment on attachment 412507
Patch

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

&gt; LayoutTests/http/tests/adClickAttribution/attribution-conversion-through-image-redirect-in-new-window.html:52
&gt; +            setTimeout(tearDownAndFinish, 4000);

Using a timeout like this is likely to make the test flakey. What exactly is it that you think will take this long? Can you find specific event to wait for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702357</commentid>
    <comment_count>13</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-28 10:11:57 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #12)
&gt; Comment on attachment 412507 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412507&amp;action=review
&gt; 
&gt; &gt; LayoutTests/http/tests/adClickAttribution/attribution-conversion-through-image-redirect-in-new-window.html:52
&gt; &gt; +            setTimeout(tearDownAndFinish, 4000);
&gt; 
&gt; Using a timeout like this is likely to make the test flakey. What exactly is
&gt; it that you think will take this long? Can you find specific event to wait
&gt; for?

Hi Sam! Good catch. That timeout is just a way to make the test fail after 4 seconds rather than actually time out. I added it when I was working on the fix because the test was (obviously) failing. I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702468</commentid>
    <comment_count>14</comment_count>
      <attachid>412566</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-28 13:20:36 -0700</bug_when>
    <thetext>Created attachment 412566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702472</commentid>
    <comment_count>15</comment_count>
      <attachid>412569</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-28 13:29:17 -0700</bug_when>
    <thetext>Created attachment 412569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702560</commentid>
    <comment_count>16</comment_count>
      <attachid>412569</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-10-28 16:37:30 -0700</bug_when>
    <thetext>Comment on attachment 412569
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4659
&gt; +            adClickAttribution = navigation-&gt;adClickAttribution();

I&apos;m not sure I understand this bit. It seems like the ad click attribution in m_newPageNavigationAdClickAttribution was present at the time the page load started. But now that the load is committed, we can check the navigation and see if it has attribution data.

Is the attribution data in the member variable &quot;fresher&quot; than the attribution generated as part of the navigation? Or are you concerned that the client might manipulate or clear the attribution state known at the start of the navigation, and that should always be the governing attribution?

This seems to say:
1. If we had attribution at the start of the navigation, use that.
2. ... but let the client possibly add attribution if it didn&apos;t exist at the start of the navigation

If that&apos;s not the goal here, we could make it a debug variable, where we have the m_newPageNavigationAdClickAttribution present in debug builds, and ASSERT if the client clears it for some reason. That might help Chris feel better about having to add the new member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702563</commentid>
    <comment_count>17</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-10-28 16:48:35 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #16)
&gt; Comment on attachment 412569 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412569&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4659
&gt; &gt; +            adClickAttribution = navigation-&gt;adClickAttribution();
&gt; 
&gt; I&apos;m not sure I understand this bit. It seems like the ad click attribution
&gt; in m_newPageNavigationAdClickAttribution was present at the time the page
&gt; load started. But now that the load is committed, we can check the
&gt; navigation and see if it has attribution data.
&gt; 
&gt; Is the attribution data in the member variable &quot;fresher&quot; than the
&gt; attribution generated as part of the navigation? Or are you concerned that
&gt; the client might manipulate or clear the attribution state known at the
&gt; start of the navigation, and that should always be the governing attribution?
&gt; 
&gt; This seems to say:
&gt; 1. If we had attribution at the start of the navigation, use that.
&gt; 2. ... but let the client possibly add attribution if it didn&apos;t exist at the
&gt; start of the navigation
&gt; 
&gt; If that&apos;s not the goal here, we could make it a debug variable, where we
&gt; have the m_newPageNavigationAdClickAttribution present in debug builds, and
&gt; ASSERT if the client clears it for some reason. That might help Chris feel
&gt; better about having to add the new member.

What you’re seeing is the gist of the bug fix.

In the case of a navigation in the same window, the NavigationAction object will have the ad click attribution data and when the page load is committed we send that data to the network process. That’s the existing code in trunk.

In the case of a navigation that opens a new window, we hand over to the client using WebKit which is TestRunner when we run layout tests and the browser or app itself in real usage. That’s when the NavigationAction is not carried over to the new WebPageProxy. To make sure the client can’t regress that, I now copy and ad click data to the completion handler which will execute with access to the new WebPageProxy and save it on the proxy there.

Later when we have a committed load, I check “do I have a pending ad click for a new window navigation? If not, do I have a pending ad click for a same-window navigation?”</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702567</commentid>
    <comment_count>18</comment_count>
      <attachid>412569</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-10-28 16:56:53 -0700</bug_when>
    <thetext>Comment on attachment 412569
Patch

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

r=me

&gt;&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4659
&gt;&gt;&gt; +            adClickAttribution = navigation-&gt;adClickAttribution();
&gt;&gt; 
&gt;&gt; I&apos;m not sure I understand this bit. It seems like the ad click attribution in m_newPageNavigationAdClickAttribution was present at the time the page load started. But now that the load is committed, we can check the navigation and see if it has attribution data.
&gt;&gt; 
&gt;&gt; Is the attribution data in the member variable &quot;fresher&quot; than the attribution generated as part of the navigation? Or are you concerned that the client might manipulate or clear the attribution state known at the start of the navigation, and that should always be the governing attribution?
&gt;&gt; 
&gt;&gt; This seems to say:
&gt;&gt; 1. If we had attribution at the start of the navigation, use that.
&gt;&gt; 2. ... but let the client possibly add attribution if it didn&apos;t exist at the start of the navigation
&gt;&gt; 
&gt;&gt; If that&apos;s not the goal here, we could make it a debug variable, where we have the m_newPageNavigationAdClickAttribution present in debug builds, and ASSERT if the client clears it for some reason. That might help Chris feel better about having to add the new member.
&gt; 
&gt; What you’re seeing is the gist of the bug fix.
&gt; 
&gt; In the case of a navigation in the same window, the NavigationAction object will have the ad click attribution data and when the page load is committed we send that data to the network process. That’s the existing code in trunk.
&gt; 
&gt; In the case of a navigation that opens a new window, we hand over to the client using WebKit which is TestRunner when we run layout tests and the browser or app itself in real usage. That’s when the NavigationAction is not carried over to the new WebPageProxy. To make sure the client can’t regress that, I now copy and ad click data to the completion handler which will execute with access to the new WebPageProxy and save it on the proxy there.
&gt; 
&gt; Later when we have a committed load, I check “do I have a pending ad click for a new window navigation? If not, do I have a pending ad click for a same-window navigation?”

I see. Thanks for clarifying!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702568</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-28 17:00:22 -0700</bug_when>
    <thetext>Committed r269129: &lt;https://trac.webkit.org/changeset/269129&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412569.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412507</attachid>
            <date>2020-10-27 20:48:36 -0700</date>
            <delta_ts>2020-10-28 13:20:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214176-20201027204835.patch</filename>
            <type>text/plain</type>
            <size>13397</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM1MDI0NWU4YTEzNWZlYmRl
MGU5ZGE2ZGRmODA3ODNmNjlmNjIxMDkuLjhlZDQ4NjIxYmYyYjkxYTliOThmNWJiMTAyNTdlYTI3
ZTU3OGU1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjAtMTAtMjcgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBBY2NlcHQgYWQgY2xp
Y2sgZGF0YSB3aGVuIHRoZSBsaW5rIG9wZW5zIGEgbmV3IHdpbmRvdworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTc2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NTM1ODAwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBIGxpbmsgd2l0aCB0aGUgYXR0cmlidXRlIHRhcmdldD0iX2JsYW5rIiB0YWtl
cyBhbm90aGVyIGNvZGUgcGF0aCBmb3IKKyAgICAgICAgbmF2aWdhdGlvbiB3aGljaCBpbnZvbHZl
cyB0aGUgY3JlYXRpb24gb2YgYSBuZXcgd2luZG93IGFuZCB3ZWJwYWdlLiBUaGF0CisgICAgICAg
IGNvZGUgcGF0aCBuZWVkcyB0byB0cmFuc2ZlciBhZCBjbGljayBhdHRyaWJ1dGlvbiBkYXRhIHRv
IHRoZSBuZXcgd2VicGFnZQorICAgICAgICB3aGVyZSBpdCBjYW4gYmUgcGlja2VkIHVwIGluIFdl
YlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCkuCisKKyAgICAgICAgVGVzdDogaHR0
cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdo
LWltYWdlLXJlZGlyZWN0LWluLW5ldy13aW5kb3cuaHRtbAorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29t
bWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgICAgIE5vZSBhbHNvIGNoZWNrcyBmb3IgcGVuZGlu
ZyBhZCBjbGljayBhdHRyaWJ1dGlvbiBkYXRhIGluIGl0cyBuZXcKKyAgICAgICAgICAgIG1lbWJl
ciB2YXJpYWJsZSBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJpYnV0aW9uLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAgICAgTm93
IGZvcndhcmRzIG9wdGlvbmFsIGFkIGNsaWNrIGF0dHJpYnV0aW9uIGRhdGEgdG8gdGhlIGNvbXBs
ZXRpb24KKyAgICAgICAgICAgIGhhbmRsZXIgd2hlcmUgaXQgY2FuIGJlIHN0b3JlZCBvbiB0aGUg
bmV3bHkgY3JlYXRlZCB3ZWJwYWdlIGluIHRoZQorICAgICAgICAgICAgbmV3IG1lbWJlciB2YXJp
YWJsZSBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJpYnV0aW9uLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgICAgIEFkZGVkIG1fbmV3UGFnZU5hdmln
YXRpb25BZENsaWNrQXR0cmlidXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICAgICBBZGRlZCBtaXNzaW5nIG5hdmlnYXRpb25B
Y3Rpb24uYWRDbGlja0F0dHJpYnV0aW9uKCkgY29weS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKToKKyAgICAgICAgICAgIEFkZGVkIG1pc3NpbmcgbmF2aWdhdGlvbkFjdGlvbi5hZENsaWNr
QXR0cmlidXRpb24oKSBjb3B5LgorCiAyMDIwLTEwLTI3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IHRoZSBVSVBvaW50ZXJJbnRlcmFjdGlv
biBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDlhMmFh
ODBhYTU0OWYwNzJjYjhhMzQxMDFjZjMyYTk5NzUzNjUxYTAuLjYzYTlmNDc1MzYzMjk5ZmZkOTk4
NDA3OThmNjM5NmE3MjI1ZjU2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtNDY1MiwxMCArNDY1MiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29t
bWl0TG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgog
ICAgIGZyYW1lLT5kaWRDb21taXRMb2FkKG1pbWVUeXBlLCB3ZWJDZXJ0aWZpY2F0ZUluZm8sIGNv
bnRhaW5zUGx1Z2luRG9jdW1lbnQpOwogCiAgICAgaWYgKG5hdmlnYXRpb24gJiYgZnJhbWUtPmlz
TWFpbkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8mIGFkQ2xpY2tBdHRyaWJ1dGlvbiA9IG5h
dmlnYXRpb24tPmFkQ2xpY2tBdHRyaWJ1dGlvbigpKSB7CisgICAgICAgIE9wdGlvbmFsPFdlYkNv
cmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbj4gYWRDbGlja0F0dHJpYnV0aW9uOworICAgICAgICBpZiAo
bV9uZXdQYWdlTmF2aWdhdGlvbkFkQ2xpY2tBdHRyaWJ1dGlvbikKKyAgICAgICAgICAgIGFkQ2xp
Y2tBdHRyaWJ1dGlvbiA9IG1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb247Cisg
ICAgICAgIGVsc2UgaWYgKG5hdmlnYXRpb24tPmFkQ2xpY2tBdHRyaWJ1dGlvbigpKQorICAgICAg
ICAgICAgYWRDbGlja0F0dHJpYnV0aW9uID0gbmF2aWdhdGlvbi0+YWRDbGlja0F0dHJpYnV0aW9u
KCk7CisgICAgICAgIGlmIChhZENsaWNrQXR0cmlidXRpb24pIHsKICAgICAgICAgICAgIGlmIChh
ZENsaWNrQXR0cmlidXRpb24tPmRlc3RpbmF0aW9uKCkubWF0Y2hlcyhmcmFtZS0+dXJsKCkpKQog
ICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTdG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbihtX3dlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCAqYWRDbGlja0F0dHJpYnV0aW9uKSwgMCk7CiAgICAg
ICAgIH0KKyAgICAgICAgbV9uZXdQYWdlTmF2aWdhdGlvbkFkQ2xpY2tBdHRyaWJ1dGlvbi5yZXNl
dCgpOwogICAgIH0KIAogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewpAQCAtNTUxOCw3
ICs1NTI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0
YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgV2ViUGEKICAgICBhdXRvKiBvcmlnaW5hdGlu
Z1BhZ2UgPSBtX3Byb2Nlc3MtPndlYlBhZ2Uob3JpZ2luYXRpbmdQYWdlSUQpOwogICAgIGF1dG8g
b3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUob3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlKTsKICAgICBhdXRvIG1haW5G
cmFtZVVSTCA9IG1fbWFpbkZyYW1lID8gbV9tYWluRnJhbWUtPnVybCgpIDogVVJMKCk7Ci0gICAg
YXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFJl
ZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIG11dGFibGUgeworICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJh
bWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSksIGFkQ2xpY2tBdHRyaWJ1dGlv
biA9IG5hdmlnYXRpb25BY3Rpb25EYXRhLmFkQ2xpY2tBdHRyaWJ1dGlvbl0gKFJlZlB0cjxXZWJQ
YWdlUHJveHk+IG5ld1BhZ2UpIG11dGFibGUgewogICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKICAg
ICAgICAgICAgIHJlcGx5KFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTU1MzAsNiArNTUzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVO
ZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIFdlYlBhCiAK
ICAgICAgICAgbmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uID0gbWFpbkZyYW1lVVJMLmhvc3QoKSA9PSByZXF1ZXN0LnVybCgpLmhv
c3QoKTsKIAorICAgICAgICBuZXdQYWdlLT5tX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJp
YnV0aW9uID0gYWRDbGlja0F0dHJpYnV0aW9uOwogI2lmIEhBVkUoQVBQX1NTTykKICAgICAgICAg
bmV3UGFnZS0+bV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbiA9IHRydWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggZDQ2OTRmMDJlNjM4MzY5Y2MwNWY3MmQ5ZWJhMDI0YWZiZjYwMjhlYi4u
YmRmMTFiYTQ2NjQ3NmMyN2IzMmE1YjlmYzlmZWUzNTU3ZjIwYTdkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTI4ODUsNiArMjg4NSw4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2NhblVzZUNyZWRlbnRpYWxTdG9yYWdlIHsgdHJ1ZSB9OwogCiAgICAgc2l6ZV90
IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3VudGVyIHsgMCB9OworCisgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6QWRDbGlja0F0dHJpYnV0aW9uPiBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJp
YnV0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CmluZGV4IGY4Zjk0YzRhYTg3Njg4YTYyNDBkNDNmNjUwMjNkMDEyZmY5N2RhZWYuLmViZmFiZWFj
ZDY5NWMwNDdlNzQ1ZjQxNGFhMDI1YWY5MDA0OGI5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC0yNjcsNiArMjY3LDcgQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbWUmIGZyYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmUKICAgICBuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0ID0gbV9wYWdlLmNhbkhhbmRsZVJlcXVlc3Qo
bmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgbmF2aWdhdGlvbkFjdGlv
bkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5hdmlnYXRpb25BY3Rpb24uc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmRv
d25sb2FkQXR0cmlidXRlID0gbmF2aWdhdGlvbkFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpOwor
ICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmFkQ2xpY2tBdHRyaWJ1dGlvbiA9IG5hdmlnYXRpb25B
Y3Rpb24uYWRDbGlja0F0dHJpYnV0aW9uKCk7CiAKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBX
ZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDY2YWZkZmNkOTAwZGUxZGViNWM3MzZjYzU4NDkyZGYxYTYwY2ZlNjMuLjk3
NWZkODkwMjAzOTViNDllMTkyNTc1YjdhMjQ3ODljNjhjZGY4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcApAQCAtODc5LDYgKzg3OSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmln
YXRpCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9IHdlYlBhZ2Ut
PmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IG5hdmlnYXRpb25BY3Rpb24uc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSgpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0
cmlidXRlID0gbmF2aWdhdGlvbkFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpOworICAgIG5hdmln
YXRpb25BY3Rpb25EYXRhLmFkQ2xpY2tBdHRyaWJ1dGlvbiA9IG5hdmlnYXRpb25BY3Rpb24uYWRD
bGlja0F0dHJpYnV0aW9uKCk7CiAKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCks
IG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVl
c3QsCiAgICAgICAgIGZyYW1lTmFtZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNjQ0ZTYxNGZhMWM4NjIwMWEzYzY3N2RlYTc3ODUwMmFjNjljMjY0NC4u
NGJmZTdmYzQ4ZTZlYzgwMGYwNDExOTY1NjY4NmQxNmI2NDdiMjYyYSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDIwLTEwLTI3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFBDTTogQWNjZXB0IGFkIGNsaWNrIGRhdGEgd2hlbiB0aGUgbGluayBvcGVucyBh
IG5ldyB3aW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDE3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjUzNTgwMDU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBsaW5rIHdpdGggdGhlIGF0
dHJpYnV0ZSB0YXJnZXQ9Il9ibGFuayIgdGFrZXMgYW5vdGhlciBjb2RlIHBhdGggZm9yCisgICAg
ICAgIG5hdmlnYXRpb24gd2hpY2ggaW52b2x2ZXMgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHdpbmRv
dyBhbmQgd2VicGFnZS4gVGhhdAorICAgICAgICBjb2RlIHBhdGggbmVlZHMgdG8gdHJhbnNmZXIg
YWQgY2xpY2sgYXR0cmlidXRpb24gZGF0YSB0byB0aGUgbmV3IHdlYnBhZ2UKKyAgICAgICAgd2hl
cmUgaXQgY2FuIGJlIHBpY2tlZCB1cC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0
dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC1p
bi1uZXctd2luZG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9h
ZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJl
ZGlyZWN0LWluLW5ldy13aW5kb3cuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9h
ZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnRBbmRQb3N0TWVzc2FnZUJhY2suaHRt
bDogQWRkZWQuCisKIDIwMjAtMTAtMjcgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xv
cGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBSZWJhc2VsaW5lIHRlc3RzIGFm
dGVyIHIyNjkwNDQgYW5kIHIyNjkwMzYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFn
ZS1yZWRpcmVjdC1pbi1uZXctd2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1p
bWFnZS1yZWRpcmVjdC1pbi1uZXctd2luZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODQz
NmIwOTY5MzU2YzU2M2I4NWNiYWFhOWFkNTYyYTViM2IzNmY2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29u
dmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LWluLW5ldy13aW5kb3ctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRyaWdnZXJpbmcgb2YgYWQgY2xpY2sgYXR0cmlidXRp
b24gY29udmVyc2lvbnMgaW4gYSBuZXcgd2luZG93LgorCisKK0NvbnZlcnRlZCBBZCBDbGljayBB
dHRyaWJ1dGlvbnM6CitXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24gMQorU291cmNlOiAxMjcu
MC4wLjEKK0Rlc3RpbmF0aW9uOiBsb2NhbGhvc3QKK0NhbXBhaWduIElEOiAzCitDb252ZXJzaW9u
IGRhdGE6IDEyCitDb252ZXJzaW9uIHByaW9yaXR5OiAzCitDb252ZXJzaW9uIGVhcmxpZXN0IHRp
bWUgdG8gc2VuZDogV2l0aGluIDI0LTQ4IGhvdXJzCitDb252ZXJzaW9uIHJlcXVlc3Qgc2VudDog
ZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0
aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC1pbi1uZXct
d2luZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9h
dHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtaW4tbmV3LXdpbmRv
dy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjIzYzQ1YjMyMzdkOTMzNDQyMGM1M2U4NzAxOWYxMTQyNmRmMWVk
ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRy
aWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtaW4t
bmV3LXdpbmRvdy5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBpbnRlcm5hbDpBZENs
aWNrQXR0cmlidXRpb25FbmFibGVkPXRydWUgXSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFk
PgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIg
Y29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFi
bGU9bm8iPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KKzxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0cmlnZ2VyaW5nIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9u
IGNvbnZlcnNpb25zIGluIGEgbmV3IHdpbmRvdy48L2Rpdj4KKzxhIHRhcmdldD0iX2JsYW5rIiBy
ZWw9Im9wZW5lciIgaWQ9InRhcmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9h
ZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnRBbmRQb3N0TWVzc2FnZUJhY2suaHRt
bCIgYWRjYW1wYWlnbmlkPSIzIiBhZGRlc3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwMDAi
Pkxpbms8L2E+PGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgcHJl
cGFyZVRlc3QoKTsKKworICAgIGZ1bmN0aW9uIGFjdGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsK
KyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQp
OworICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zm
c2V0V2lkdGggLyAyOworICAgICAgICB2YXIgY2VudGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsg
ZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNl
bnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5pbm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJl
amVjdGVkLiI7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShl
dmVudCkgeworICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4
MDAwIikgeworICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEgPT09ICJEb25lIikgeworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbigpOworICAgICAgICAg
ICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRhcmdldExpbmsiKSk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQg
dW5rbm93biBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CisgICAgICAgICAgICAgICAgdGVhckRv
d25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3Jp
Z2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
c2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0
TGluayIpOworICAgICAgICAgICAgc2V0VGltZW91dCh0ZWFyRG93bkFuZEZpbmlzaCwgNDAwMCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
b3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgTm8gdGVzdFJ1bm5lci4iOworICAgICAgICAgICAg
dGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0
cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnRBbmRQb3N0TWVzc2FnZUJhY2suaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252ZXJ0QW5k
UG9zdE1lc3NhZ2VCYWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ4MzVhNzEyMTg1NWRlYjI4MDBmNjk4
MzkzZDZjMjg4MzhhMjMyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252ZXJ0QW5kUG9zdE1lc3NhZ2VCYWNr
Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+
Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAgZnVuY3Rpb24gZmlyZUNvbnZlcnNpb25QaXhlbCgpIHsKKyAgICAgICAgICAgIGxldCBpbWFn
ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgICAgIGlt
YWdlRWxlbWVudC5zcmMgPSAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9hZENsaWNrQXR0cmlidXRp
b24vcmVzb3VyY2VzL3JlZGlyZWN0VG9Db252ZXJzaW9uLnBocD9jb252ZXJzaW9uRGF0YT0xMiZw
cmlvcml0eT0wMyI7CisgICAgICAgICAgICBpbWFnZUVsZW1lbnQuaWQgPSAicGl4ZWwiOworICAg
ICAgICAgICAgaW1hZ2VFbGVtZW50Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJw
aXhlbCIpKTsKKyAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZUJhY2soKTsKKyAgICAgICAgICAg
IH07CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwb3N0TWVzc2FnZUJhY2soKSB7CisgICAg
ICAgICAgICBpZiAod2luZG93Lm9wZW5lcikgeworICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVu
ZXIucG9zdE1lc3NhZ2UoIkRvbmUiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7CisgICAgICAg
ICAgICAgICAgd2luZG93LmNsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dChmaXJlQ29udmVyc2lv
blBpeGVsLCAwKSI+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412566</attachid>
            <date>2020-10-28 13:20:36 -0700</date>
            <delta_ts>2020-10-28 13:29:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214176-20201028132035.patch</filename>
            <type>text/plain</type>
            <size>13488</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkMDAzYTE3MWEyZmI0NTQy
NGY2ZjBlMGMwOTk5ZGUxZTRhMDk2NDEuLjY4YjhiY2UzZDAxM2E3OTRkZTgwODVjMmY2NzZmNzNj
ZTY1NmFmYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjAtMTAtMjggIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBBY2NlcHQgYWQgY2xp
Y2sgZGF0YSB3aGVuIHRoZSBsaW5rIG9wZW5zIGEgbmV3IHdpbmRvdworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTc2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NTM1ODAwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBIGxpbmsgd2l0aCB0aGUgYXR0cmlidXRlIHRhcmdldD0iX2JsYW5rIiB0YWtl
cyBhbm90aGVyIGNvZGUgcGF0aCBmb3IKKyAgICAgICAgbmF2aWdhdGlvbiB3aGljaCBpbnZvbHZl
cyB0aGUgY3JlYXRpb24gb2YgYSBuZXcgd2luZG93IGFuZCB3ZWJwYWdlLiBUaGF0CisgICAgICAg
IGNvZGUgcGF0aCBuZWVkcyB0byB0cmFuc2ZlciBhZCBjbGljayBhdHRyaWJ1dGlvbiBkYXRhIHRv
IHRoZSBuZXcgd2VicGFnZQorICAgICAgICB3aGVyZSBpdCBjYW4gYmUgcGlja2VkIHVwIGluIFdl
YlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCkuCisKKyAgICAgICAgVGVzdDogaHR0
cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdo
LWltYWdlLXJlZGlyZWN0LWluLW5ldy13aW5kb3cuaHRtbAorCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ29t
bWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgICAgIE5vdyBhbHNvIGNoZWNrcyBmb3IgcGVuZGlu
ZyBhZCBjbGljayBhdHRyaWJ1dGlvbiBkYXRhIGluIGl0cyBuZXcKKyAgICAgICAgICAgIG1lbWJl
ciB2YXJpYWJsZSBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJpYnV0aW9uLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICAgICAgTm93
IGZvcndhcmRzIG9wdGlvbmFsIGFkIGNsaWNrIGF0dHJpYnV0aW9uIGRhdGEgdG8gdGhlIGNvbXBs
ZXRpb24KKyAgICAgICAgICAgIGhhbmRsZXIgd2hlcmUgaXQgY2FuIGJlIHN0b3JlZCBvbiB0aGUg
bmV3bHkgY3JlYXRlZCB3ZWJwYWdlIGluIHRoZQorICAgICAgICAgICAgbmV3IG1lbWJlciB2YXJp
YWJsZSBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJpYnV0aW9uLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgICAgIEFkZGVkIG1fbmV3UGFnZU5hdmln
YXRpb25BZENsaWNrQXR0cmlidXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZVdpbmRvdyk6CisgICAgICAgICAgICBBZGRlZCBtaXNzaW5nIG5hdmlnYXRpb25B
Y3Rpb24uYWRDbGlja0F0dHJpYnV0aW9uKCkgY29weS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKToKKyAgICAgICAgICAgIEFkZGVkIG1pc3NpbmcgbmF2aWdhdGlvbkFjdGlvbi5hZENsaWNr
QXR0cmlidXRpb24oKSBjb3B5LgorCiAyMDIwLTEwLTI4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgUHJlZmVyZW5jZSBPdmVycmlkZSBNZXRob2RzOiBU
YWJzVG9MaW5rcy9TcGF0aWFsTmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggOWEyYWE4MGFhNTQ5ZjA3MmNiOGEzNDEwMWNmMzJhOTk3NTM2NTFh
MC4uMjYxN2ZkZmE2MmZiNThmZmUzZWVkMDY0MWVmYmM4NWJjN2U2YjFkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00NjUxLDEyICs0NjUxLDE4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAKICAgICBmcmFtZS0+ZGlkQ29tbWl0TG9hZChtaW1lVHlw
ZSwgd2ViQ2VydGlmaWNhdGVJbmZvLCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKIAotICAgIGlm
IChuYXZpZ2F0aW9uICYmIGZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRv
JiBhZENsaWNrQXR0cmlidXRpb24gPSBuYXZpZ2F0aW9uLT5hZENsaWNrQXR0cmlidXRpb24oKSkg
eworICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgeworICAgICAgICBPcHRpb25hbDxXZWJD
b3JlOjpBZENsaWNrQXR0cmlidXRpb24+IGFkQ2xpY2tBdHRyaWJ1dGlvbjsKKyAgICAgICAgaWYg
KG1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb24pCisgICAgICAgICAgICBhZENs
aWNrQXR0cmlidXRpb24gPSBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJpYnV0aW9uOwor
ICAgICAgICBlbHNlIGlmIChuYXZpZ2F0aW9uICYmIG5hdmlnYXRpb24tPmFkQ2xpY2tBdHRyaWJ1
dGlvbigpKQorICAgICAgICAgICAgYWRDbGlja0F0dHJpYnV0aW9uID0gbmF2aWdhdGlvbi0+YWRD
bGlja0F0dHJpYnV0aW9uKCk7CisgICAgICAgIGlmIChhZENsaWNrQXR0cmlidXRpb24pIHsKICAg
ICAgICAgICAgIGlmIChhZENsaWNrQXR0cmlidXRpb24tPmRlc3RpbmF0aW9uKCkubWF0Y2hlcyhm
cmFtZS0+dXJsKCkpKQogICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3Jr
UHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTdG9yZUFkQ2xpY2tBdHRy
aWJ1dGlvbihtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCAqYWRDbGlja0F0dHJpYnV0
aW9uKSwgMCk7CiAgICAgICAgIH0KICAgICB9CisgICAgbV9uZXdQYWdlTmF2aWdhdGlvbkFkQ2xp
Y2tBdHRyaWJ1dGlvbi5yZXNldCgpOwogCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7
CiAgICAgICAgIG1fbWFpbkZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyID0gZnJhbWVIYXND
dXN0b21Db250ZW50UHJvdmlkZXI7CkBAIC01NTE4LDcgKzU1MjQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCBXZWJQYQogICAgIGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IG1fcHJvY2Vzcy0+d2ViUGFn
ZShvcmlnaW5hdGluZ1BhZ2VJRCk7CiAgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBv
cmlnaW5hdGluZ1BhZ2UpOwogICAgIGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUgPyBt
X21haW5GcmFtZS0+dXJsKCkgOiBVUkwoKTsKLSAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1
ZXN0LCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFn
ZSkgbXV0YWJsZSB7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBX
VEZNb3ZlKHJlcGx5KSwgYWRDbGlja0F0dHJpYnV0aW9uID0gbmF2aWdhdGlvbkFjdGlvbkRhdGEu
YWRDbGlja0F0dHJpYnV0aW9uXSAoUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghbmV3UGFnZSkgewogICAgICAgICAgICAgcmVwbHkoV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTUzMCw2ICs1NTM2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoRnJhbWVJbmZvRGF0YSYmIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgV2ViUGEKIAogICAgICAgICBuZXdQYWdlLT5tX3Nob3Vs
ZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBtYWluRnJh
bWVVUkwuaG9zdCgpID09IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogCisgICAgICAgIG5ld1BhZ2Ut
Pm1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb24gPSBhZENsaWNrQXR0cmlidXRp
b247CiAjaWYgSEFWRShBUFBfU1NPKQogICAgICAgICBuZXdQYWdlLT5tX3Nob3VsZFN1cHByZXNz
U09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0gdHJ1ZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBkNDY5NGYwMmU2
MzgzNjljYzA1ZjcyZDllYmEwMjRhZmJmNjAyOGViLi5iZGYxMWJhNDY2NDc2YzI3YjMyYTViOWZj
OWZlZTM1NTdmMjBhN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMjg4NSw2ICsyODg1LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FuVXNlQ3JlZGVudGlh
bFN0b3JhZ2UgeyB0cnVlIH07CiAKICAgICBzaXplX3QgbV9zdXNwZW5kTWVkaWFQbGF5YmFja0Nv
dW50ZXIgeyAwIH07CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24+
IG1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb247CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMjk3OWFlMGNmZGE1MjUzNTYz
OGZhMDNhMGFjYTI0NmJhNDFiN2NiZC4uMWNkN2FkNzk2MGYzZTVmMmU1M2NjYmJjZjlmN2ZmNDM0
MDcxNDJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTI2Nyw2ICsyNjcsNyBAQCBQYWdl
KiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IFdpbmRv
d0ZlYXR1cmVzJiB3aW5kb3dGZQogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJl
cXVlc3QgPSBtX3BhZ2UuY2FuSGFuZGxlUmVxdWVzdChuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNl
UmVxdWVzdCgpKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gbmF2aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KCk7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUgPSBuYXZpZ2F0
aW9uQWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCk7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEu
YWRDbGlja0F0dHJpYnV0aW9uID0gbmF2aWdhdGlvbkFjdGlvbi5hZENsaWNrQXR0cmlidXRpb24o
KTsKIAogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZy
YW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNjZhZmRmY2Q5MDBk
ZTFkZWI1YzczNmNjNTg0OTJkZjFhNjBjZmU2My4uOTc1ZmQ4OTAyMDM5NWI0OWUxOTI1NzViN2Ey
NDc4OWM2OGNkZjhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04Nzks
NiArODc5LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGkKICAgICBuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5jYW5IYW5kbGVSZXF1ZXN0ID0gd2ViUGFnZS0+Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0
KTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
ID0gbmF2aWdhdGlvbkFjdGlvbi5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCk7CiAgICAg
bmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUgPSBuYXZpZ2F0aW9uQWN0aW9u
LmRvd25sb2FkQXR0cmlidXRlKCk7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuYWRDbGlja0F0
dHJpYnV0aW9uID0gbmF2aWdhdGlvbkFjdGlvbi5hZENsaWNrQXR0cmlidXRpb24oKTsKIAogICAg
IHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlm
aWVyLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwKICAgICAgICAgZnJhbWVOYW1lLCBs
aXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNmU2OTBmNmRi
N2M1MDI5YzczY2Q3M2IxZmU4Y2Q0YzUzYjFmYjg2Li4wZTRlOGVkNjM1NThhY2I3MDZkNjgwN2M4
YzcyOTM3Y2ExNmEzZGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMTAtMjggIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBBY2NlcHQgYWQg
Y2xpY2sgZGF0YSB3aGVuIHRoZSBsaW5rIG9wZW5zIGEgbmV3IHdpbmRvdworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTc2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82NTM1ODAwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBIGxpbmsgd2l0aCB0aGUgYXR0cmlidXRlIHRhcmdldD0iX2JsYW5rIiB0
YWtlcyBhbm90aGVyIGNvZGUgcGF0aCBmb3IKKyAgICAgICAgbmF2aWdhdGlvbiB3aGljaCBpbnZv
bHZlcyB0aGUgY3JlYXRpb24gb2YgYSBuZXcgd2luZG93IGFuZCB3ZWJwYWdlLiBUaGF0CisgICAg
ICAgIGNvZGUgcGF0aCBuZWVkcyB0byB0cmFuc2ZlciBhZCBjbGljayBhdHRyaWJ1dGlvbiBkYXRh
IHRvIHRoZSBuZXcgd2VicGFnZQorICAgICAgICB3aGVyZSBpdCBjYW4gYmUgcGlja2VkIHVwLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29u
dmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LWluLW5ldy13aW5kb3ctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtaW4tbmV3LXdpbmRvdy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJj
ZXMvY29udmVydEFuZFBvc3RNZXNzYWdlQmFjay5odG1sOiBBZGRlZC4KKwogMjAyMC0xMC0yOCAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVkdWNlIFByZWZlcmVu
Y2UgT3ZlcnJpZGUgTWV0aG9kczogVGFic1RvTGlua3MvU3BhdGlhbE5hdmlnYXRpb24KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0
aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC1pbi1uZXctd2luZG93LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJp
YnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC1pbi1uZXctd2luZG93LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODQzNmIwOTY5MzU2YzU2M2I4NWNiYWFhOWFkNTYyYTVi
M2IzNmY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNr
QXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0
LWluLW5ldy13aW5kb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRyaWdn
ZXJpbmcgb2YgYWQgY2xpY2sgYXR0cmlidXRpb24gY29udmVyc2lvbnMgaW4gYSBuZXcgd2luZG93
LgorCisKK0NvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlvbnM6CitXZWJDb3JlOjpBZENsaWNr
QXR0cmlidXRpb24gMQorU291cmNlOiAxMjcuMC4wLjEKK0Rlc3RpbmF0aW9uOiBsb2NhbGhvc3QK
K0NhbXBhaWduIElEOiAzCitDb252ZXJzaW9uIGRhdGE6IDEyCitDb252ZXJzaW9uIHByaW9yaXR5
OiAzCitDb252ZXJzaW9uIGVhcmxpZXN0IHRpbWUgdG8gc2VuZDogV2l0aGluIDI0LTQ4IGhvdXJz
CitDb252ZXJzaW9uIHJlcXVlc3Qgc2VudDogZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhy
b3VnaC1pbWFnZS1yZWRpcmVjdC1pbi1uZXctd2luZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gt
aW1hZ2UtcmVkaXJlY3QtaW4tbmV3LXdpbmRvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4OWRjZDE1NzRl
OWU3YmJiZjJmZDU5ZTM0YTM3NGFkZmEwM2UwMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9u
LXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtaW4tbmV3LXdpbmRvdy5odG1sCkBAIC0wLDAgKzEsNTkg
QEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIHVzZUZsZXhpYmxl
Vmlld3BvcnQ9dHJ1ZSBpbnRlcm5hbDpBZENsaWNrQXR0cmlidXRpb25FbmFibGVkPXRydWUgXSAt
LT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4K
KyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBp
bml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRU
aW1lb3V0KHJ1blRlc3QsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyB0cmlnZ2Vy
aW5nIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uIGNvbnZlcnNpb25zIGluIGEgbmV3IHdpbmRvdy48
L2Rpdj4KKzxhIHRhcmdldD0iX2JsYW5rIiByZWw9Im9wZW5lciIgaWQ9InRhcmdldExpbmsiIGhy
ZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2Nv
bnZlcnRBbmRQb3N0TWVzc2FnZUJhY2suaHRtbCIgYWRjYW1wYWlnbmlkPSIzIiBhZGRlc3RpbmF0
aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwMDAiPkxpbms8L2E+PGJyPgorPGRpdiBpZD0ib3V0cHV0
Ij48L2Rpdj4KKzxzY3JpcHQ+CisgICAgcHJlcGFyZVRlc3QoKTsKKworICAgIGZ1bmN0aW9uIGFj
dGl2YXRlRWxlbWVudChlbGVtZW50SUQpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChlbGVtZW50SUQpOworICAgICAgICB2YXIgY2VudGVyWCA9IGVsZW1l
bnQub2Zmc2V0TGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAyOworICAgICAgICB2YXIgY2Vu
dGVyWSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAg
ICAgICBVSUhlbHBlci5hY3RpdmF0ZUF0KGNlbnRlclgsIGNlbnRlclkpLnRoZW4oCisgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdXRwdXQiKS5p
bm5lclRleHQgPSAiRkFJTCBQcm9taXNlIHJlamVjdGVkLiI7CisgICAgICAgICAgICAgICAgdGVh
ckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgeworICAgICAgICBpZiAoZXZlbnQub3Jp
Z2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIikgeworICAgICAgICAgICAgaWYgKGV2ZW50
LmRhdGEgPT09ICJEb25lIikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFkQ2xp
Y2tBdHRyaWJ1dGlvbigpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldExpbmsiKSk7CisgICAgICAgICAgICAg
ICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiAiICsgZXZlbnQuZGF0
YSk7CisgICAgICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVz
c2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAg
ICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisK
KyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKyAgICAgICAg
ICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0TGluayIpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJG
QUlMIE5vIHRlc3RSdW5uZXIuIjsKKyAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7Cisg
ICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252
ZXJ0QW5kUG9zdE1lc3NhZ2VCYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xp
Y2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVydEFuZFBvc3RNZXNzYWdlQmFjay5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI0ODM1YTcxMjE4NTVkZWIyODAwZjY5ODM5M2Q2YzI4ODM4YTIzMjEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9y
ZXNvdXJjZXMvY29udmVydEFuZFBvc3RNZXNzYWdlQmFjay5odG1sCkBAIC0wLDAgKzEsMjcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hh
cnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIGZpcmVDb252ZXJz
aW9uUGl4ZWwoKSB7CisgICAgICAgICAgICBsZXQgaW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW1nIik7CisgICAgICAgICAgICBpbWFnZUVsZW1lbnQuc3JjID0gImh0dHBz
Oi8vMTI3LjAuMC4xOjg0NDMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9yZWRpcmVjdFRv
Q29udmVyc2lvbi5waHA/Y29udmVyc2lvbkRhdGE9MTImcHJpb3JpdHk9MDMiOworICAgICAgICAg
ICAgaW1hZ2VFbGVtZW50LmlkID0gInBpeGVsIjsKKyAgICAgICAgICAgIGltYWdlRWxlbWVudC5v
bmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7CisgICAgICAgICAgICAg
ICAgcG9zdE1lc3NhZ2VCYWNrKCk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChpbWFnZUVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gcG9zdE1lc3NhZ2VCYWNrKCkgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5vcGVu
ZXIpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cub3BlbmVyLnBvc3RNZXNzYWdlKCJEb25lIiwg
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOworICAgICAgICAgICAgICAgIHdpbmRvdy5jbG9zZSgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InNldFRpbWVvdXQoZmlyZUNvbnZlcnNpb25QaXhlbCwgMCkiPgorPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412569</attachid>
            <date>2020-10-28 13:29:17 -0700</date>
            <delta_ts>2020-10-28 17:00:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214176-20201028132916.patch</filename>
            <type>text/plain</type>
            <size>13880</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkMDAzYTE3MWEyZmI0NTQy
NGY2ZjBlMGMwOTk5ZGUxZTRhMDk2NDEuLmIzOWM5NjE2Yzc4NmM4NWIyYTA2ODhhNzQ0MTY4NDVk
MTQ2ZDM1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMjAtMTAtMjggIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBBY2NlcHQgYWQgY2xp
Y2sgZGF0YSB3aGVuIHRoZSBsaW5rIG9wZW5zIGEgbmV3IHdpbmRvdworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MTc2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NTM1ODAwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBIGxpbmsgd2l0aCB0aGUgYXR0cmlidXRlIHRhcmdldD0iX2JsYW5rIiB0YWtl
cyBhbm90aGVyIGNvZGUgcGF0aCBmb3IKKyAgICAgICAgbmF2aWdhdGlvbiB3aGljaCBpbnZvbHZl
cyB0aGUgY3JlYXRpb24gb2YgYSBuZXcgd2luZG93IGFuZCB3ZWJwYWdlLiBUaGF0CisgICAgICAg
IGNvZGUgcGF0aCBuZWVkcyB0byB0cmFuc2ZlciBhZCBjbGljayBhdHRyaWJ1dGlvbiBkYXRhIHRv
IHRoZSBuZXcgd2VicGFnZQorICAgICAgICB3aGVyZSBpdCBjYW4gYmUgcGlja2VkIHVwIGluIFdl
YlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCkuCisgICAgICAgIFRoZSBhZCBjbGlj
ayBhdHRyaWJ1dGlvbiBkYXRhIHNpdHMgaW4gdGhlIE5hdmlnYXRpb25BY3Rpb24gd2hpY2ggaXMg
bm90CisgICAgICAgIGF2YWlsYWJsZSBpbiB0aGUgY29tcGxldGlvbiBoYW5kbGVyIFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlTmV3UGFnZSgpLgorICAgICAgICBUaGUgY2xpZW50LCB3aGljaCBkaWZmZXJz
IGJldHdlZW4gVGVzdFJ1bm5lciBhbmQgZS5nLiBTYWZhcmksIGNvbnN1bWVzCisgICAgICAgIHRo
ZSBOYXZpZ2F0aW9uQWN0aW9uLiBJIGRvbid0IHdhbnQgdG8gcmlzayBhIHJlZ3Jlc3Npb24gaW4g
ZS5nLiBTYWZhcmkKKyAgICAgICAgd2hpbGUgc3RpbGwgcGFzc2luZyB0aGUgdGVzdCBiZWNhdXNl
IFRlc3RSdW5uZXIgaGFzbid0IHJlZ3Jlc3NlZC4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3Rz
L2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2Ut
cmVkaXJlY3QtaW4tbmV3LXdpbmRvdy5odG1sCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAgICAgTm93IGFsc28gY2hlY2tzIGZvciBwZW5kaW5nIGFkIGNs
aWNrIGF0dHJpYnV0aW9uIGRhdGEgaW4gaXRzIG5ldworICAgICAgICAgICAgbWVtYmVyIHZhcmlh
YmxlIG1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb24uCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgICAgICBOb3cgZm9yd2Fy
ZHMgb3B0aW9uYWwgYWQgY2xpY2sgYXR0cmlidXRpb24gZGF0YSB0byB0aGUgY29tcGxldGlvbgor
ICAgICAgICAgICAgaGFuZGxlciB3aGVyZSBpdCBjYW4gYmUgc3RvcmVkIG9uIHRoZSBuZXdseSBj
cmVhdGVkIHdlYnBhZ2UgaW4gdGhlCisgICAgICAgICAgICBuZXcgbWVtYmVyIHZhcmlhYmxlIG1f
bmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb24uCisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAgICAgQWRkZWQgbV9uZXdQYWdlTmF2aWdhdGlvbkFk
Q2xpY2tBdHRyaWJ1dGlvbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgICAgIEFkZGVkIG1pc3NpbmcgbmF2aWdhdGlvbkFjdGlvbi5h
ZENsaWNrQXR0cmlidXRpb24oKSBjb3B5LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgor
ICAgICAgICAgICAgQWRkZWQgbWlzc2luZyBuYXZpZ2F0aW9uQWN0aW9uLmFkQ2xpY2tBdHRyaWJ1
dGlvbigpIGNvcHkuCisKIDIwMjAtMTAtMjggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlZHVjZSBQcmVmZXJlbmNlIE92ZXJyaWRlIE1ldGhvZHM6IFRhYnNUb0xp
bmtzL1NwYXRpYWxOYXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA5YTJhYTgwYWE1NDlmMDcyY2I4YTM0MTAxY2YzMmE5OTc1MzY1MWEwLi4yNjE3
ZmRmYTYyZmI1OGZmZTNlZWQwNjQxZWZiYzg1YmM3ZTZiMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQ2NTEsMTIgKzQ2NTEsMTggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
RnJhbWVJbmZvRGF0YSYKIAogICAgIGZyYW1lLT5kaWRDb21taXRMb2FkKG1pbWVUeXBlLCB3ZWJD
ZXJ0aWZpY2F0ZUluZm8sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQpOwogCi0gICAgaWYgKG5hdmln
YXRpb24gJiYgZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8mIGFkQ2xp
Y2tBdHRyaWJ1dGlvbiA9IG5hdmlnYXRpb24tPmFkQ2xpY2tBdHRyaWJ1dGlvbigpKSB7CisgICAg
aWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFk
Q2xpY2tBdHRyaWJ1dGlvbj4gYWRDbGlja0F0dHJpYnV0aW9uOworICAgICAgICBpZiAobV9uZXdQ
YWdlTmF2aWdhdGlvbkFkQ2xpY2tBdHRyaWJ1dGlvbikKKyAgICAgICAgICAgIGFkQ2xpY2tBdHRy
aWJ1dGlvbiA9IG1fbmV3UGFnZU5hdmlnYXRpb25BZENsaWNrQXR0cmlidXRpb247CisgICAgICAg
IGVsc2UgaWYgKG5hdmlnYXRpb24gJiYgbmF2aWdhdGlvbi0+YWRDbGlja0F0dHJpYnV0aW9uKCkp
CisgICAgICAgICAgICBhZENsaWNrQXR0cmlidXRpb24gPSBuYXZpZ2F0aW9uLT5hZENsaWNrQXR0
cmlidXRpb24oKTsKKyAgICAgICAgaWYgKGFkQ2xpY2tBdHRyaWJ1dGlvbikgewogICAgICAgICAg
ICAgaWYgKGFkQ2xpY2tBdHRyaWJ1dGlvbi0+ZGVzdGluYXRpb24oKS5tYXRjaGVzKGZyYW1lLT51
cmwoKSkpCiAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlN0b3JlQWRDbGlja0F0dHJpYnV0aW9u
KG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksICphZENsaWNrQXR0cmlidXRpb24pLCAw
KTsKICAgICAgICAgfQogICAgIH0KKyAgICBtX25ld1BhZ2VOYXZpZ2F0aW9uQWRDbGlja0F0dHJp
YnV0aW9uLnJlc2V0KCk7CiAKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAg
ICAgbV9tYWluRnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIgPSBmcmFtZUhhc0N1c3RvbUNv
bnRlbnRQcm92aWRlcjsKQEAgLTU1MTgsNyArNTUyNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
cmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIFdl
YlBhCiAgICAgYXV0byogb3JpZ2luYXRpbmdQYWdlID0gbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdp
bmF0aW5nUGFnZUlEKTsKICAgICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0
aW5nUGFnZSk7CiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZy
YW1lLT51cmwoKSA6IFVSTCgpOwotICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJl
cGx5ID0gV1RGTW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRh
YmxlIHsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1ZXN0LCByZXBseSA9IFdURk1vdmUo
cmVwbHkpLCBhZENsaWNrQXR0cmlidXRpb24gPSBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5hZENsaWNr
QXR0cmlidXRpb25dIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFuZXdQYWdlKSB7CiAgICAgICAgICAgICByZXBseShXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC01NTMwLDYgKzU1MzYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBXZWJQYQogCiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJl
c3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IG1haW5GcmFtZVVSTC5o
b3N0KCkgPT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAKKyAgICAgICAgbmV3UGFnZS0+bV9uZXdQ
YWdlTmF2aWdhdGlvbkFkQ2xpY2tBdHRyaWJ1dGlvbiA9IGFkQ2xpY2tBdHRyaWJ1dGlvbjsKICNp
ZiBIQVZFKEFQUF9TU08pCiAgICAgICAgIG5ld1BhZ2UtPm1fc2hvdWxkU3VwcHJlc3NTT0F1dGhv
cml6YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSB0cnVlOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQ0Njk0ZjAyZTYzODM2OWNj
MDVmNzJkOWViYTAyNGFmYmY2MDI4ZWIuLmJkZjExYmE0NjY0NzZjMjdiMzJhNWI5ZmM5ZmVlMzU1
N2YyMGE3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yODg1
LDYgKzI4ODUsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFn
ZSB7IHRydWUgfTsKIAogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciB7
IDAgfTsKKworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1dGlvbj4gbV9uZXdQ
YWdlTmF2aWdhdGlvbkFkQ2xpY2tBdHRyaWJ1dGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyOTc5YWUwY2ZkYTUyNTM1NjM4ZmEwM2Ew
YWNhMjQ2YmE0MWI3Y2JkLi4xY2Q3YWQ3OTYwZjNlNWYyZTUzY2NiYmNmOWY3ZmY0MzQwNzE0MmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMjY3LDYgKzI2Nyw3IEBAIFBhZ2UqIFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgV2luZG93RmVhdHVy
ZXMmIHdpbmRvd0ZlCiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxlUmVxdWVzdCA9
IG1fcGFnZS5jYW5IYW5kbGVSZXF1ZXN0KG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0
KCkpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kgPSBuYXZpZ2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKICAg
ICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZSA9IG5hdmlnYXRpb25BY3Rp
b24uZG93bmxvYWRBdHRyaWJ1dGUoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5hZENsaWNr
QXR0cmlidXRpb24gPSBuYXZpZ2F0aW9uQWN0aW9uLmFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogCiAg
ICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA2NmFmZGZjZDkwMGRlMWRlYjVj
NzM2Y2M1ODQ5MmRmMWE2MGNmZTYzLi45NzVmZDg5MDIwMzk1YjQ5ZTE5MjU3NWI3YTI0Nzg5YzY4
Y2RmOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTg3OSw2ICs4Nzks
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aQogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNh
bkhhbmRsZVJlcXVlc3QgPSB3ZWJQYWdlLT5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwogICAg
IG5hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBuYXZp
Z2F0aW9uQWN0aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKTsKICAgICBuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZSA9IG5hdmlnYXRpb25BY3Rpb24uZG93bmxv
YWRBdHRyaWJ1dGUoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5hZENsaWNrQXR0cmlidXRp
b24gPSBuYXZpZ2F0aW9uQWN0aW9uLmFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogCiAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LAogICAgICAgICBmcmFtZU5hbWUsIGxpc3RlbmVy
SUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM2ZTY5MGY2ZGI3YzUwMjlj
NzNjZDczYjFmZThjZDRjNTNiMWZiODYuLjBlNGU4ZWQ2MzU1OGFjYjcwNmQ2ODA3YzhjNzI5Mzdj
YTE2YTNkZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0xMC0yOCAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IEFjY2VwdCBhZCBjbGljayBk
YXRhIHdoZW4gdGhlIGxpbmsgb3BlbnMgYSBuZXcgd2luZG93CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQxNzYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzY1MzU4MDA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEEgbGluayB3aXRoIHRoZSBhdHRyaWJ1dGUgdGFyZ2V0PSJfYmxhbmsiIHRha2VzIGFu
b3RoZXIgY29kZSBwYXRoIGZvcgorICAgICAgICBuYXZpZ2F0aW9uIHdoaWNoIGludm9sdmVzIHRo
ZSBjcmVhdGlvbiBvZiBhIG5ldyB3aW5kb3cgYW5kIHdlYnBhZ2UuIFRoYXQKKyAgICAgICAgY29k
ZSBwYXRoIG5lZWRzIHRvIHRyYW5zZmVyIGFkIGNsaWNrIGF0dHJpYnV0aW9uIGRhdGEgdG8gdGhl
IG5ldyB3ZWJwYWdlCisgICAgICAgIHdoZXJlIGl0IGNhbiBiZSBwaWNrZWQgdXAuCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9u
LXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtaW4tbmV3LXdpbmRvdy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNv
bnZlcnNpb24tdGhyb3VnaC1pbWFnZS1yZWRpcmVjdC1pbi1uZXctd2luZG93Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNlcy9jb252
ZXJ0QW5kUG9zdE1lc3NhZ2VCYWNrLmh0bWw6IEFkZGVkLgorCiAyMDIwLTEwLTI4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgUHJlZmVyZW5jZSBPdmVy
cmlkZSBNZXRob2RzOiBUYWJzVG9MaW5rcy9TcGF0aWFsTmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29u
dmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LWluLW5ldy13aW5kb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24t
Y29udmVyc2lvbi10aHJvdWdoLWltYWdlLXJlZGlyZWN0LWluLW5ldy13aW5kb3ctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM4NDM2YjA5NjkzNTZjNTYzYjg1Y2JhYWE5YWQ1NjJhNWIzYjM2ZjYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1
dGlvbi9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtaW1hZ2UtcmVkaXJlY3QtaW4tbmV3
LXdpbmRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdHJpZ2dlcmluZyBv
ZiBhZCBjbGljayBhdHRyaWJ1dGlvbiBjb252ZXJzaW9ucyBpbiBhIG5ldyB3aW5kb3cuCisKKwor
Q29udmVydGVkIEFkIENsaWNrIEF0dHJpYnV0aW9uczoKK1dlYkNvcmU6OkFkQ2xpY2tBdHRyaWJ1
dGlvbiAxCitTb3VyY2U6IDEyNy4wLjAuMQorRGVzdGluYXRpb246IGxvY2FsaG9zdAorQ2FtcGFp
Z24gSUQ6IDMKK0NvbnZlcnNpb24gZGF0YTogMTIKK0NvbnZlcnNpb24gcHJpb3JpdHk6IDMKK0Nv
bnZlcnNpb24gZWFybGllc3QgdGltZSB0byBzZW5kOiBXaXRoaW4gMjQtNDggaG91cnMKK0NvbnZl
cnNpb24gcmVxdWVzdCBzZW50OiBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWlt
YWdlLXJlZGlyZWN0LWluLW5ldy13aW5kb3cuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1pbWFnZS1y
ZWRpcmVjdC1pbi1uZXctd2luZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTg5ZGNkMTU3NGU5ZTdiYmJm
MmZkNTllMzRhMzc0YWRmYTAzZTAwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3Vn
aC1pbWFnZS1yZWRpcmVjdC1pbi1uZXctd2luZG93Lmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPCFE
T0NUWVBFIGh0bWw+IDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9y
dD10cnVlIGludGVybmFsOkFkQ2xpY2tBdHRyaWJ1dGlvbkVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0
bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxt
ZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwt
c2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQo
cnVuVGVzdCwgMCkiPgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPlRlc3RzIHRyaWdnZXJpbmcgb2Yg
YWQgY2xpY2sgYXR0cmlidXRpb24gY29udmVyc2lvbnMgaW4gYSBuZXcgd2luZG93LjwvZGl2Pgor
PGEgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ib3BlbmVyIiBpZD0idGFyZ2V0TGluayIgaHJlZj0iaHR0
cDovL2xvY2FsaG9zdDo4MDAwL2FkQ2xpY2tBdHRyaWJ1dGlvbi9yZXNvdXJjZXMvY29udmVydEFu
ZFBvc3RNZXNzYWdlQmFjay5odG1sIiBhZGNhbXBhaWduaWQ9IjMiIGFkZGVzdGluYXRpb249Imh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMCI+TGluazwvYT48YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2
PgorPHNjcmlwdD4KKyAgICBwcmVwYXJlVGVzdCgpOworCisgICAgZnVuY3Rpb24gYWN0aXZhdGVF
bGVtZW50KGVsZW1lbnRJRCkgeworICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGVsZW1lbnRJRCk7CisgICAgICAgIHZhciBjZW50ZXJYID0gZWxlbWVudC5vZmZz
ZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgICAgIHZhciBjZW50ZXJZID0g
ZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7CisgICAgICAgIFVJ
SGVscGVyLmFjdGl2YXRlQXQoY2VudGVyWCwgY2VudGVyWSkudGhlbigKKyAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4
dCA9ICJGQUlMIFByb21pc2UgcmVqZWN0ZWQuIjsKKyAgICAgICAgICAgICAgICB0ZWFyRG93bkFu
ZEZpbmlzaCgpOworICAgICAgICAgICAgfQorICAgICAgICApOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7CisgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9
PT0gIkRvbmUiKSB7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQWRDbGlja0F0dHJp
YnV0aW9uKCk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGluayIpKTsKKyAgICAgICAgICAgICAgICB0ZWFy
RG93bkFuZEZpbmlzaCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJSZWNlaXZlZCB1bmtub3duIG1lc3NhZ2U6ICIgKyBldmVudC5kYXRhKTsKKyAg
ICAgICAgICAgICAgICB0ZWFyRG93bkFuZEZpbmlzaCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZy
b20gYW4gdW5leHBlY3RlZCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAg
dGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3NhZ2UsIGZhbHNlKTsKKworICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworICAgICAgICAgICAgYWN0
aXZhdGVFbGVtZW50KCJ0YXJnZXRMaW5rIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgTm8g
dGVzdFJ1bm5lci4iOworICAgICAgICAgICAgdGVhckRvd25BbmRGaW5pc2goKTsKKyAgICAgICAg
fQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL2NvbnZlcnRBbmRQ
b3N0TWVzc2FnZUJhY2suaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJp
YnV0aW9uL3Jlc291cmNlcy9jb252ZXJ0QW5kUG9zdE1lc3NhZ2VCYWNrLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjQ4MzVhNzEyMTg1NWRlYjI4MDBmNjk4MzkzZDZjMjg4MzhhMjMyMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL3Jlc291cmNl
cy9jb252ZXJ0QW5kUG9zdE1lc3NhZ2VCYWNrLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJV
VEYtOCI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gZmlyZUNvbnZlcnNpb25QaXhl
bCgpIHsKKyAgICAgICAgICAgIGxldCBpbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbWciKTsKKyAgICAgICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSAiaHR0cHM6Ly8xMjcu
MC4wLjE6ODQ0My9hZENsaWNrQXR0cmlidXRpb24vcmVzb3VyY2VzL3JlZGlyZWN0VG9Db252ZXJz
aW9uLnBocD9jb252ZXJzaW9uRGF0YT0xMiZwcmlvcml0eT0wMyI7CisgICAgICAgICAgICBpbWFn
ZUVsZW1lbnQuaWQgPSAicGl4ZWwiOworICAgICAgICAgICAgaW1hZ2VFbGVtZW50Lm9uZXJyb3Ig
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwaXhlbCIpKTsKKyAgICAgICAgICAgICAgICBwb3N0
TWVzc2FnZUJhY2soKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBwb3N0TWVzc2FnZUJhY2soKSB7CisgICAgICAgICAgICBpZiAod2luZG93Lm9wZW5lcikgewor
ICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoIkRvbmUiLCAiaHR0cDov
LzEyNy4wLjAuMTo4MDAwIik7CisgICAgICAgICAgICAgICAgd2luZG93LmNsb3NlKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0ic2V0VGltZW91dChmaXJlQ29udmVyc2lvblBpeGVsLCAwKSI+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>