<?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>219949</bug_id>
          
          <creation_ts>2020-12-16 08:56:52 -0800</creation_ts>
          <short_desc>Cannot see &apos;Add to my stations&apos; button in BBC World service Radio</short_desc>
          <delta_ts>2020-12-22 11:46:17 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1715120</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 08:56:52 -0800</bug_when>
    <thetext>BBC uses the presence of third party cookies to determine whether to show specific elements in their radio player. These do not appear with ITP and full third party cookie blocking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715121</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 08:59:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/60319532&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715176</commentid>
    <comment_count>2</comment_count>
      <attachid>416350</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 11:31:35 -0800</bug_when>
    <thetext>Created attachment 416350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715194</commentid>
    <comment_count>3</comment_count>
      <attachid>416350</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-16 12:32:58 -0800</bug_when>
    <thetext>Comment on attachment 416350
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:2724
&gt; +    if (m_frame.document()) {

if (auto* document = m_frame.document())
That&apos;ll allow you to use it in the next two lines.

&gt; Source/WebCore/loader/FrameLoader.cpp:2726
&gt; +        if (m_frame.document()-&gt;settings().needsSiteSpecificQuirks()) {
&gt; +            if (m_frame.document()-&gt;url().string() == Quirks::staticRadioPlayerURLString() &amp;&amp; m_client-&gt;BBCRadioPlayerPopup()) {

This could be another &amp;&amp; instead of two if statements.

&gt; Source/WebCore/loader/FrameLoaderClient.h:385
&gt; +    virtual bool BBCRadioPlayerPopup() const { return false; };

This probably shouldn&apos;t be here, but definitely needs a better name indicating its use.

&gt; Source/WebCore/page/DOMWindow.cpp:2550
&gt; +        frame-&gt;setBBCRadioPlayerPopup(true);

We should probably add a null check for frame after it&apos;s declared and return nullptr if it&apos;s null instead of crashing.  There was a code path that used it unchecked, but we can fix that one too.

&gt; Source/WebCore/page/Frame.h:385
&gt; +    bool m_BBCRadioPlayerPopup { false };

I don&apos;t think we should introduce a boolean for this because that will likely lead to cases where it&apos;s not reset properly.  If we do have to add one, it should have a prefix like isShowing or something, but I don&apos;t think it should be necessary here or on WebPage, and there certainly shouldn&apos;t be two places that remember that we are doing the bbc radio quirk.

&gt; Source/WebCore/page/Quirks.cpp:1116
&gt; +                            auto domWindow = document-&gt;domWindow();

document is a weak pointer.  It should be checked before dereferencing.

&gt; Source/WebCore/page/Quirks.cpp:1118
&gt; +                                ExceptionOr&lt;RefPtr&lt;WindowProxy&gt;&gt; proxyOrException =  domWindow-&gt;open(*domWindow, *domWindow, staticRadioPlayerURLString(), emptyString(), BBCRadioPlayerPopUpWindowFeatureString);

auto
extra space.
Should we do anything with proxyOrException?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5582
&gt; +    if (request.url().string() == &quot;https://static.radioplayer.co.uk/&quot;)

Quirks::staticRadioPlayerURLString</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715239</commentid>
    <comment_count>4</comment_count>
      <attachid>416350</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-16 14:54:31 -0800</bug_when>
    <thetext>Comment on attachment 416350
Patch

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

Thanks for the comments Alex

&gt;&gt; Source/WebCore/loader/FrameLoader.cpp:2724
&gt;&gt; +    if (m_frame.document()) {
&gt; 
&gt; if (auto* document = m_frame.document())
&gt; That&apos;ll allow you to use it in the next two lines.

Will change.

&gt;&gt; Source/WebCore/loader/FrameLoader.cpp:2726
&gt;&gt; +            if (m_frame.document()-&gt;url().string() == Quirks::staticRadioPlayerURLString() &amp;&amp; m_client-&gt;BBCRadioPlayerPopup()) {
&gt; 
&gt; This could be another &amp;&amp; instead of two if statements.

Will change.

&gt;&gt; Source/WebCore/page/DOMWindow.cpp:2550
&gt;&gt; +        frame-&gt;setBBCRadioPlayerPopup(true);
&gt; 
&gt; We should probably add a null check for frame after it&apos;s declared and return nullptr if it&apos;s null instead of crashing.  There was a code path that used it unchecked, but we can fix that one too.

Good idea, I will add that.

&gt;&gt; Source/WebCore/page/Frame.h:385
&gt;&gt; +    bool m_BBCRadioPlayerPopup { false };
&gt; 
&gt; I don&apos;t think we should introduce a boolean for this because that will likely lead to cases where it&apos;s not reset properly.  If we do have to add one, it should have a prefix like isShowing or something, but I don&apos;t think it should be necessary here or on WebPage, and there certainly shouldn&apos;t be two places that remember that we are doing the bbc radio quirk.

My intention was to prevent any other page from being automatically redirected if navigating to https://static.radio.player.com, which would happen if I didn&apos;t include an indication that the pop-up had been triggered. I am not sure how much that should be a concern (https://static.radio.player.com is just a blank page).

Do you know if there is a way to wait for a page to finish loading from the site in Quirks::triggerOptionalStorageAccessQuirk where I call domWindow-&gt;open() to perform the redirect from there? That way we know the redirect only happens for the quirk.

&gt;&gt; Source/WebCore/page/Quirks.cpp:1116
&gt;&gt; +                            auto domWindow = document-&gt;domWindow();
&gt; 
&gt; document is a weak pointer.  It should be checked before dereferencing.

Will add this.

&gt;&gt; Source/WebCore/page/Quirks.cpp:1118
&gt;&gt; +                                ExceptionOr&lt;RefPtr&lt;WindowProxy&gt;&gt; proxyOrException =  domWindow-&gt;open(*domWindow, *domWindow, staticRadioPlayerURLString(), emptyString(), BBCRadioPlayerPopUpWindowFeatureString);
&gt; 
&gt; auto
&gt; extra space.
&gt; Should we do anything with proxyOrException?

Maybe if we are able to handle the redirect from here instead of in Frame.cpp. Then I can use proxyOrException to perform a redirect.

&gt;&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:5582
&gt;&gt; +    if (request.url().string() == &quot;https://static.radioplayer.co.uk/&quot;)
&gt; 
&gt; Quirks::staticRadioPlayerURLString

Good catch, will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715587</commentid>
    <comment_count>5</comment_count>
      <attachid>416475</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-17 15:32:22 -0800</bug_when>
    <thetext>Created attachment 416475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715588</commentid>
    <comment_count>6</comment_count>
      <attachid>416350</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-17 15:34:05 -0800</bug_when>
    <thetext>Comment on attachment 416350
Patch

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

&gt;&gt;&gt; Source/WebCore/page/Frame.h:385
&gt;&gt;&gt; +    bool m_BBCRadioPlayerPopup { false };
&gt;&gt; 
&gt;&gt; I don&apos;t think we should introduce a boolean for this because that will likely lead to cases where it&apos;s not reset properly.  If we do have to add one, it should have a prefix like isShowing or something, but I don&apos;t think it should be necessary here or on WebPage, and there certainly shouldn&apos;t be two places that remember that we are doing the bbc radio quirk.
&gt; 
&gt; My intention was to prevent any other page from being automatically redirected if navigating to https://static.radio.player.com, which would happen if I didn&apos;t include an indication that the pop-up had been triggered. I am not sure how much that should be a concern (https://static.radio.player.com is just a blank page).
&gt; 
&gt; Do you know if there is a way to wait for a page to finish loading from the site in Quirks::triggerOptionalStorageAccessQuirk where I call domWindow-&gt;open() to perform the redirect from there? That way we know the redirect only happens for the quirk.

In the latest patch I inject javascript on load when I create the popup to solve this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715729</commentid>
    <comment_count>7</comment_count>
      <attachid>416522</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-18 09:09:05 -0800</bug_when>
    <thetext>Created attachment 416522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715880</commentid>
    <comment_count>8</comment_count>
      <attachid>416522</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-18 18:40:37 -0800</bug_when>
    <thetext>Comment on attachment 416522
Patch

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

&gt; Source/WebCore/page/DOMWindow.cpp:2505
&gt; +        if (document-&gt;settings().needsSiteSpecificQuirks() &amp;&amp; urlStringToOpen == Quirks::BBCRadioPlayerURLString()) {

It looks like you&apos;ll need to open Quirks.h to fix the windows build.

&gt; Source/WebCore/page/Quirks.cpp:1155
&gt; +            if (auto subResourceDomainsInNeedOfStorageAccess = NetworkStorageSession::subResourceDomainsInNeedOfStorageAccessForFirstParty(firstPartyDomain)) {

We tend to avoid deeply nested code like this by adding early returns.
auto subResourceDomainsInNeedOfStorageAccess = ;
if (!subResourceDomainsInNeedOfStorageAccess)
    return StorageAccessResult::ShouldNotCancelEvent;
if (storageAccessGranted != StorageAccessWasGranted::Yes)
    return StorageAccessResult::ShouldNotCancelEvent;
etc.

&gt; Source/WebCore/page/Quirks.cpp:1168
&gt; +                                    if (abstractFrame &amp;&amp; is&lt;Frame&gt;(*abstractFrame)) {

I think there&apos;s a version of is that takes a pointer and returns false if it&apos;s null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716063</commentid>
    <comment_count>9</comment_count>
      <attachid>416620</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-21 12:33:08 -0800</bug_when>
    <thetext>Created attachment 416620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716064</commentid>
    <comment_count>10</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-12-21 12:34:10 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #8)
&gt; Comment on attachment 416522 [details]
&gt; Patch

Thanks for the review!

&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416522&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/DOMWindow.cpp:2505
&gt; &gt; +        if (document-&gt;settings().needsSiteSpecificQuirks() &amp;&amp; urlStringToOpen == Quirks::BBCRadioPlayerURLString()) {
&gt; 
&gt; It looks like you&apos;ll need to open Quirks.h to fix the windows build.
&gt; 

I think my latest patch fixed it. I will wait for EWS before landing.

&gt; &gt; Source/WebCore/page/Quirks.cpp:1155
&gt; &gt; +            if (auto subResourceDomainsInNeedOfStorageAccess = NetworkStorageSession::subResourceDomainsInNeedOfStorageAccessForFirstParty(firstPartyDomain)) {
&gt; 
&gt; We tend to avoid deeply nested code like this by adding early returns.
&gt; auto subResourceDomainsInNeedOfStorageAccess = ;
&gt; if (!subResourceDomainsInNeedOfStorageAccess)
&gt;     return StorageAccessResult::ShouldNotCancelEvent;
&gt; if (storageAccessGranted != StorageAccessWasGranted::Yes)
&gt;     return StorageAccessResult::ShouldNotCancelEvent;
&gt; etc.

I adjusted this to use early returns.

&gt; 
&gt; &gt; Source/WebCore/page/Quirks.cpp:1168
&gt; &gt; +                                    if (abstractFrame &amp;&amp; is&lt;Frame&gt;(*abstractFrame)) {
&gt; 
&gt; I think there&apos;s a version of is that takes a pointer and returns false if
&gt; it&apos;s null.

I removed the check for abstractFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716293</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-22 11:45:34 -0800</bug_when>
    <thetext>Committed r271059: &lt;https://trac.webkit.org/changeset/271059&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416620.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716294</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-22 11:46:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/72595090&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416350</attachid>
            <date>2020-12-16 11:31:35 -0800</date>
            <delta_ts>2020-12-17 15:32:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219949-20201216113134.patch</filename>
            <type>text/plain</type>
            <size>31015</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjMyMDI4ZjczZTQ1ZThl
ODdiMjdjMTIzODNlMGFjMDFkZTRkYzgxMi4uN2UxMjI0YjRhZmM2NWUwNGRlMTk0N2IyZGM3ZWM5
Y2JmMmUxNGI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIwLTEyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbm5vdCBz
ZWUgJ0FkZCB0byBteSBzdGF0aW9ucycgYnV0dG9uIGluIEJCQyBXb3JsZCBzZXJ2aWNlIFJhZGlv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzE5NTMyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSB0ZW1wb3JhcnkgcXVpcmsgdG8g
YXNzaXN0IGEgaGlnaC10cmFmZmljIHdlYnNpdGUgd2hpbGUgdGhleQorICAgICAgICBjb21wbGV0
ZSB0aGUgbGFyZ2UgdGFzayBvZiBtaWdyYXRpbmcgYXdheSBmcm9tIHNpdGUgY29tcGF0aWJpbGl0
eSB1c2luZworICAgICAgICB0aGlyZCBwYXJ0eSBjb29raWVzLiBUaGlzIHF1aXJrIHdpbGwgYmUg
cmVtb3ZlZCB3aGVuIHRoZSBzaXRlIGlzCisgICAgICAgIHVwZGF0ZWQuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBzaXRlLXNwZWNpZmljIHF1aXJrLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJr
IHRoYXQgd2lsbCBjYWxsIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgb24gYmVoYWxmIG9mCisgICAg
ICAgIEJCQyBmb3IgcmFkaW9wbGF5ZXIuY28udWsgdW5kZXIgYmJjLmNvLnVrLiBXaGVuIHRoZSB1
c2VyIGNsaWNrcyB0byBvcGVuCisgICAgICAgIHRoZSByYWRpbyBwbGF5ZXIgcG9wLXVwLCBzdG9y
YWdlIGFjY2VzcyBpcyByZXF1ZXN0ZWQuIElmIHRoZSB1c2VyIGdyYW50cworICAgICAgICBwZXJt
aXNzaW9uLCB0aGVuIHdlIG9wZW4gdGhlIHBvcC11cCB0byBzdGF0aWMucmFkaW9wbGF5ZXIuY28u
dWsgdG8gZ2V0CisgICAgICAgIGZpcnN0IHBhcnR5IHN0YXR1cywgdGhlbiBpbW1lZGlhdGVseSBy
ZWRpcmVjdCB0byB0aGUgcmFkaW8gcGxheWVyIHBhZ2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Vz
IHRoZSBsYW5ndWFnZSBvZiB0aGUgc2l0ZS1zcGVjaWZpYyBxdWlyayBjb2RlIGluCisgICAgICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBub3cgdGhhdCB3ZSBhcmUgY3JlYXRpbmcgcXVpcmtzIGZv
ciBpbnN0YW5jZXMKKyAgICAgICAgb3RoZXIgdGhhbiBsb2dpbiBjYXNlcy4KKworICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZSk6Cisg
ICAgICAgIElmIHRoZSBwYWdlIGlzIHRoZSBwb3AtdXAgY3JlYXRlZCBieSB0aGUgcXVpcmsgYW5k
IHRoZSBsb2FkIHRvCisgICAgICAgIHN0YXRpYy5yYWRpb3BsYXllci5jby51ayBoYXMgZmluaXNo
ZWQgdGhlbiB3ZSBrbm93IHN0YXRpYy5yYWRpb3BsYXllci5jby51aworICAgICAgICBpcyBub3cg
Y29uc2lkZXJlZCBhIGZpcnN0IHBhcnR5IGFuZCB3ZSBjYW4gcmVkaXJlY3QgdG8gdGhlIHJhZGlv
CisgICAgICAgIHBsYXllci4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6b3Blbik6CisgICAgICAgIEV2ZW4gaWYgV2ViS2l0IGNhbmNlbHMgdGhlIHBvcC11cCBj
bGljayBpbiBFbGVtZW50OjpkaXNwYXRjaE1vdXNlRXZlbnQsCisgICAgICAgIHRoZSBwb3B1cCBz
dGlsbCBhcHBlYXJzLiBTbyB3ZSBzaG91bGQgY2hlY2sgaGVyZSBpZiB0aGUgcG9wLXVwIGlzIHRy
eWluZworICAgICAgICB0byBsb2FkIGJlZm9yZSBzdG9yYWdlIGFjY2VzcyBoYXMgYmVlbiBncmFu
dGVkLiBJZiBzbywgd2Ugc2hvdWxkIGNhbmNlbCBpdAorICAgICAgICBhbmQgd2FpdCBmb3IgdGhl
IHF1aXJrIHRvIHJlLW9wZW4gdGhlIHBvcC11cCBhZnRlciBwcm9tcHRpbmcgdGhlIHVzZXIuCisK
KyAgICAgICAgSWYgc3RvcmFnZSBhY2Nlc3MgaGFzIGJlZW4gZ3JhbnRlZCwgd2Ugc2hvdWxkIHNl
dCB0aGUgYmJjUmFkaW9QbGF5ZXJQb3B1cAorICAgICAgICBpbmRpY2F0b3Igb24gdGhlIGZyYW1l
IHNvIHdlIGtub3cgdG8gcGVyZm9ybSBhIHJlZGlyZWN0IG9uY2UgdGhlIGxvYWQKKyAgICAgICAg
Y29tcGxldGVzLgorCisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAqIHBhZ2UvUXVp
cmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQkJDRG9tYWluKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzQkJDUG9wT3V0UGxheWVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6
OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6c3Rh
dGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UXVpcmtzOjp0cmln
Z2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsgY29uc3QpOgorICAgICAgICAqIHBhZ2UvUXVp
cmtzLmg6CisgICAgICAgIFRoaXMgaXMgd2hlcmUgd2UgY2hlY2sgaWYgdGhlIHBvcC11cCBidXR0
b24gaGFzIGJlZW4gY2xpY2tlZCBhbmQKKyAgICAgICAgcHJvbXB0IGZvciBzdG9yYWdlIGFjY2Vz
cyBpZiBuZWVkZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0
b3JhZ2VBY2Nlc3NRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dp
bk9yQ29tcGF0aWJpbGl0eVB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3ViRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhv
dXRQcmlvclVzZXJJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0eSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAg
ICAgQ2hhbmdlIHdvcmRpbmcgbm93IHRoYXQgcXVpcmtzIGFyZSBub3Qgb25seSBiZWluZyB1c2Vk
IGZvciBsb2dpbgorICAgICAgICBmbG93cy4KKwogMjAyMC0xMi0xNiAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEZyYW1lVmlldzo6bV9jdXN0
b21TaXplRm9yUmVzaXplRXZlbnQgYW4gT3B0aW9uYWw8SW50U2l6ZT4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTg4
NzMxYzk0YzQ3MTA4Y2Q2Njk5YWU2NTM5MTM5ZDMxOGNlZTgzYi4uNDgyNmU4NDUxYmMxMGYxN2Nh
YzlhMDRhOWU4MzVlZGQ0ZGY3MGNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAyMC0x
Mi0xNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBDYW5ub3Qgc2VlICdBZGQgdG8gbXkgc3RhdGlvbnMnIGJ1dHRvbiBpbiBCQkMgV29ybGQgc2Vy
dmljZSBSYWRpbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE5OTQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDMxOTUzMj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgdGVtcG9yYXJ5
IHF1aXJrIHRvIGFzc2lzdCBhIGhpZ2gtdHJhZmZpYyB3ZWJzaXRlIHdoaWxlIHRoZXkKKyAgICAg
ICAgY29tcGxldGUgdGhlIGxhcmdlIHRhc2sgb2YgbWlncmF0aW5nIGF3YXkgZnJvbSBzaXRlIGNv
bXBhdGliaWxpdHkgdXNpbmcKKyAgICAgICAgdGhpcmQgcGFydHkgY29va2llcy4gVGhpcyBxdWly
ayB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUgc2l0ZSBpcworICAgICAgICB1cGRhdGVkLgorCisg
ICAgICAgIENyZWF0ZSBhIHF1aXJrIHRoYXQgd2lsbCBjYWxsIHRoZSBTdG9yYWdlIEFjY2VzcyBB
UEkgb24gYmVoYWxmIG9mCisgICAgICAgIEJCQyBmb3IgcmFkaW9wbGF5ZXIuY28udWsgdW5kZXIg
YmJjLmNvLnVrLiBXaGVuIHRoZSB1c2VyIGNsaWNrcyB0byBvcGVuCisgICAgICAgIHRoZSByYWRp
byBwbGF5ZXIgcG9wLXVwLCBzdG9yYWdlIGFjY2VzcyBpcyByZXF1ZXN0ZWQuIElmIHRoZSB1c2Vy
IGdyYW50cworICAgICAgICBwZXJtaXNzaW9uLCB0aGVuIHdlIG9wZW4gdGhlIHBvcC11cCB0byBz
dGF0aWMucmFkaW9wbGF5ZXIuY28udWsgdG8gZ2V0CisgICAgICAgIGZpcnN0IHBhcnR5IHN0YXR1
cywgdGhlbiBpbW1lZGlhdGVseSByZWRpcmVjdCB0byB0aGUgcmFkaW8gcGxheWVyIHBhZ2UuCisK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpjb29raWVBY2Nlc3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0VwaGVt
ZXJhbCk6CisgICAgICAgIENoYW5nZSB3b3JkaW5nIG5vdyB0aGF0IHF1aXJrcyBhcmUgbm90IG9u
bHkgYmVpbmcgdXNlZCBmb3IgbG9naW4KKyAgICAgICAgZmxvd3MuCisKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgVmFsdWUgdG8gaW5kaWNhdGUgdGhhdCB0
aGUgd2VicGFnZSB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBxdWlyay4gVGhpcworICAgICAgICBwcmV2
ZW50cyBub24tcXVpcmsgbG9hZHMgb2Ygc3RhdGljLnJhZGlvcGxheWVyLmNvLnVrIGZyb20gYmVp
bmcKKyAgICAgICAgcmVkaXJlY3RlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgor
ICAgICAgICBNYXJrIHRoZSBxdWlyay1pbml0aWF0ZWQgcG9wLXVwIGFzIHVzZXItaW5pdGlhdGVk
IHNvIGl0IGRvZXNuJ3QgZ2V0CisgICAgICAgIGJsb2NrZWQuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmJiY1JhZGlvUGxheWVyUG9wdXAgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
Om1fQkJDUmFkaW9QbGF5ZXJQb3B1cCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKwogMjAyMC0xMi0xNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBDYWxscyB0byBzZXRGaXhlZExheW91dFNpemUoKSBzaG91bGQgbm90
IGJlIGluc2lkZSBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggMjY4OTRmMzlmNGU2OWZlOGI3MzAwNzhkYjc4MWViMmRl
ZmQ4ZmY1NS4uNTY5NDVkM2I0MDBmYjc4MjRkODMyYjI4OWRlY2RlNzJiN2ZiMjBlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC04MDQsNyArODA0LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSAqbV9mcmFt
ZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKFF1aXJrczo6aXNNaWNyb3NvZnRUZWFtc1JlZGly
ZWN0VVJMKHJlc3BvbnNlLnVybCgpKSkgewogICAgICAgICAgICAgYXV0byBmaXJzdFBhcnR5RG9t
YWluID0gUmVnaXN0cmFibGVEb21haW4ocmVzcG9uc2UudXJsKCkpOwotICAgICAgICAgICAgaWYg
KGF1dG8gbG9naW5Eb21haW4gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluRm9y
Rmlyc3RQYXJ0eShmaXJzdFBhcnR5RG9tYWluKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gbG9n
aW5Eb21haW4gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1YkRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2Vzc0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKICAgICAgICAgICAgICAg
ICBpZiAoIVJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNDcm9zc1BhZ2VTdG9yYWdl
QWNjZXNzKCpsb2dpbkRvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgbV9mcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJlY3QoZG9j
dW1lbnQsIDAsIG1pY3Jvc29mdFRlYW1zUmVkaXJlY3RVUkwoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDhiMTdj
ZjYyOWNkZTE4NGYzNmI5Njc4NmEwYmEyZGQyZGJiZmU1MzcuLmE4NDgzNzJhOWM2NGFiZmQzZDQy
NjcxODJkNTI4NjdkMmQzMzhmZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtMjcyMSw2ICsyNzIxLDE1IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsb3NlQW5kUmVtb3Zl
Q2hpbGQoRnJhbWUmIGNoaWxkKQogLy8gQ2FsbGVkIGV2ZXJ5IHRpbWUgYSByZXNvdXJjZSBpcyBj
b21wbGV0ZWx5IGxvYWRlZCBvciBhbiBlcnJvciBpcyByZWNlaXZlZC4KIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNoZWNrTG9hZENvbXBsZXRlKCkKIHsKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpKSB7
CisgICAgICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPnNldHRpbmdzKCkubmVlZHNTaXRlU3Bl
Y2lmaWNRdWlya3MoKSkgeworICAgICAgICAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nKCkgPT0gUXVpcmtzOjpzdGF0aWNSYWRpb1BsYXllclVSTFN0cmluZygpICYmIG1f
Y2xpZW50LT5CQkNSYWRpb1BsYXllclBvcHVwKCkpIHsKKyAgICAgICAgICAgICAgICBtX2ZyYW1l
Lm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZGlyZWN0KCptX2ZyYW1lLmRvY3VtZW50
KCksIDAsIFVSTChVUkwoKSwgUXVpcmtzOjpCQkNSYWRpb1BsYXllclVSTFN0cmluZygpKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CiAgICAgbV9zaG91bGRDYWxsQ2hlY2tMb2FkQ29tcGxldGUgPSBmYWxzZTsKIAogICAgIGlmICgh
bV9mcmFtZS5wYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CmluZGV4IDk1NGE0ZDU3MmNmYjVmZWU3NGQ5OWRhNjhlMjIzMjA3NzdlZDA4ZGYuLmIyZTgxZmFj
YzdkY2M4ZDkzZDc5YTNkNWE2M2NjOGVlY2IwOGUyNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zODEsNiArMzgxLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlT2ZBcHBC
b3VuZEJlaGF2aW9yKCkgeyB9CiAjZW5kaWYKKworICAgIHZpcnR1YWwgYm9vbCBCQkNSYWRpb1Bs
YXllclBvcHVwKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNTdkZWYzMGUwZDVmNzdi
ZmE2Yjc4OWQ1ZmViZDQ2NjNkNTE4MzllYy4uMGI0Y2E4ODU2MGU4OWI0N2M5YWQ5MGYxYzgzYzA5
YmIwMGM2NTI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMjUwMSw2ICsyNTAx
LDE3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAKIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5k
b3dQcm94eT4+IERPTVdpbmRvdzo6b3BlbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2lu
ZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmdUb09wZW4sIGNvbnN0IEF0
b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJlc1N0cmluZykK
IHsKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7CisgICAgICAg
IGlmIChkb2N1bWVudC0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpKSB7Cisg
ICAgICAgICAgICBpZiAodXJsU3RyaW5nVG9PcGVuID09IFF1aXJrczo6QkJDUmFkaW9QbGF5ZXJV
UkxTdHJpbmcoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcmFkaW9QbGF5ZXJEb21haW4gPSBS
ZWdpc3RyYWJsZURvbWFpbihVUkwoVVJMKCksIFF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJVUkxT
dHJpbmcoKSkpOworICAgICAgICAgICAgICAgIGF1dG8gQkJDRG9tYWluID0gUmVnaXN0cmFibGVE
b21haW4oVVJMKFVSTCgpLCBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKCkpKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIVJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNDcm9z
c1BhZ2VTdG9yYWdlQWNjZXNzKHJhZGlvUGxheWVyRG9tYWluLCBCQkNEb21haW4pKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIgfTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmICghaXNDdXJyZW50bHlEaXNw
bGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBSZWZQdHI8V2luZG93UHJveHk+IHsgbnVs
bHB0ciB9OwogCkBAIC0yNTM0LDYgKzI1NDUsOSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8V2luZG93
UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbgog
ICAgICAgICBpZiAoZnJhbWVOYW1lLmlzRW1wdHkoKSB8fCAhZnJhbWUtPmxvYWRlcigpLmZpbmRG
cmFtZUZvck5hdmlnYXRpb24oZnJhbWVOYW1lLCBhY3RpdmVEb2N1bWVudCkpCiAgICAgICAgICAg
ICByZXR1cm4gUmVmUHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIgfTsKICAgICB9CisgICAgCisg
ICAgaWYgKHVybFN0cmluZ1RvT3BlbiA9PSBRdWlya3M6OnN0YXRpY1JhZGlvUGxheWVyVVJMU3Ry
aW5nKCkpCisgICAgICAgIGZyYW1lLT5zZXRCQkNSYWRpb1BsYXllclBvcHVwKHRydWUpOwogCiAg
ICAgLy8gR2V0IHRoZSB0YXJnZXQgZnJhbWUgZm9yIHRoZSBzcGVjaWFsIGNhc2VzIG9mIF90b3Ag
YW5kIF9wYXJlbnQuCiAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHdlIHNjaGVkdWxlIGEgbG9jYXRp
b24gY2hhbmdlIHJpZ2h0IG5vdyBhbmQgcmV0dXJuIGVhcmx5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4
IGM4ZjFjNTc1M2JmY2Y5NGJiYTcwMGJiNmEyMmFmNTc4MGQxY2Y5MTMuLmMzYWQ4MzY5OWY5NjY1
YmU1NWIxMzQ5MjdiYWYyOTc2MTEyMzRmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTMxNyw2ICsz
MTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZWxmT25seVJlZigpOwogICAgIHZvaWQgc2VsZk9u
bHlEZXJlZigpOwogCisgICAgYm9vbCBCQkNSYWRpb1BsYXllclBvcHVwKCkgeyByZXR1cm4gbV9C
QkNSYWRpb1BsYXllclBvcHVwOyB9CisgICAgdm9pZCBzZXRCQkNSYWRpb1BsYXllclBvcHVwKGJv
b2wgaXNCQkNSYWRpb1BsYXllclBvcHVwKSB7IG1fQkJDUmFkaW9QbGF5ZXJQb3B1cCA9IGlzQkJD
UmFkaW9QbGF5ZXJQb3B1cDsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBOYXZpZ2F0
aW9uRGlzYWJsZXI7CiAKQEAgLTM3OCw2ICszODEsOCBAQCBwcml2YXRlOgogICAgIEZsb2F0U2l6
ZSBtX292ZXJyaWRlU2NyZWVuU2l6ZTsKIAogICAgIFVuaXF1ZVJlZjxFdmVudEhhbmRsZXI+IG1f
ZXZlbnRIYW5kbGVyOworICAgIAorICAgIGJvb2wgbV9CQkNSYWRpb1BsYXllclBvcHVwIHsgZmFs
c2UgfTsKIH07CiAKIGlubGluZSBOYXZpZ2F0aW9uU2NoZWR1bGVyJiBGcmFtZTo6bmF2aWdhdGlv
blNjaGVkdWxlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJr
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKaW5kZXggNmMwNDdiZmRlMmJm
ZTBkNDRkYmE0NWZkMWJkYzEwYWQ1NTI3ODMwYi4uNzZkMWI3YWFmM2I1OGJmOWZiMzU2YTU4ODhi
YmEzY2Y1NzIzMTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcApAQCAtOTgzLDYgKzk4MywzNCBA
QCBib29sIFF1aXJrczo6aXNNaWNyb3NvZnRUZWFtc1JlZGlyZWN0VVJMKGNvbnN0IFVSTCYgdXJs
KQogewogICAgIHJldHVybiB1cmwuaG9zdCgpID09ICJ0ZWFtcy5taWNyb3NvZnQuY29tIl9zICYm
IHVybC5xdWVyeSgpLnRvU3RyaW5nKCkuY29udGFpbnMoIlJldHJpZWQrMyt0aW1lcyt3aXRob3V0
K3N1Y2Nlc3MiKTsKIH0KKworY29uc3QgU3RyaW5nJiBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJM
U3RyaW5nKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBCQkNSYWRpb1Bs
YXllclVSTFN0cmluZyA9ICJodHRwczovL3d3dy5iYmMuY28udWsvc291bmRzL3BsYXllci9iYmNf
d29ybGRfc2VydmljZSJfczsKKyAgICByZXR1cm4gQkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmc7Cit9
CisKK2NvbnN0IFN0cmluZyYgUXVpcmtzOjpzdGF0aWNSYWRpb1BsYXllclVSTFN0cmluZygpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc3RhdGljUmFkaW9QbGF5ZXJVUkxT
dHJpbmcgPSAiaHR0cHM6Ly9zdGF0aWMucmFkaW9wbGF5ZXIuY28udWsvIl9zOworICAgIHJldHVy
biBzdGF0aWNSYWRpb1BsYXllclVSTFN0cmluZzsKK30KKworCitzdGF0aWMgYm9vbCBpc0JCQ0Rv
bWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWdpc3RyYWJsZURvbWFpbj4gQkJDRG9tYWluID0gUmVnaXN0cmFibGVEb21h
aW4oVVJMKFVSTCgpLCBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKCkpKTsKKyAgICBy
ZXR1cm4gZG9tYWluID09IEJCQ0RvbWFpbjsKK30KKworc3RhdGljIGJvb2wgaXNCQkNQb3BPdXRQ
bGF5ZXJFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKCFlbGVtZW50
LnBhcmVudEVsZW1lbnQoKSB8fCAhZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmhhc0NsYXNzKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1l
bnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5zKCJwX2F1ZGlvQnV0dG9uX2J1dHRvbklubmVyIikg
fHwgZWxlbWVudC5wYXJlbnRFbGVtZW50KCktPmNsYXNzTmFtZXMoKS5jb250YWlucygiYXVkaW9C
dXR0b24iKTsKK30KKwogI2VuZGlmCiAKIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWly
a3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50VHlwZSwgaW50IGRldGFpbCwgRWxlbWVudCogcmVsYXRlZFRhcmdldCkgY29uc3QKQEAg
LTEwNjAsNyArMTA4OCw3IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRy
aWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAgICAgICAgIC8vIEZJ
WE1FKDIxODc3OSk6IFJlbW92ZSB0aGlzIHF1aXJrIG9uY2UgbWljcm9zb2Z0LmNvbSBjb21wbGV0
ZXMgdGhlaXIgbG9naW4gZmxvdyByZWRlc2lnbi4KICAgICAgICAgaWYgKGlzTWljcm9zb2Z0RG9t
YWluKGRvbWFpbikgJiYgaXNNaWNyb3NvZnRMb2dpbkVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAg
ICAgICAgIGF1dG8gZmlyc3RQYXJ0eURvbWFpbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bWFw
VG9Ub3BEb21haW4oUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG1f
ZG9jdW1lbnQtPnRvcERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkpKTsKLSAgICAg
ICAgICAgIGlmIChhdXRvIGxvZ2luRG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dp
bkRvbWFpbkZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGxvZ2luRG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdWJEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KGZpcnN0UGFydHlEb21haW4pKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzQ3Jvc3NQ
YWdlU3RvcmFnZUFjY2VzcygqbG9naW5Eb21haW4sIGZpcnN0UGFydHlEb21haW4pKSB7CiAgICAg
ICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NGb3JOb25Eb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBXVEZNb3ZlKCpsb2dpbkRvbWFpbiks
IFtmaXJzdFBhcnR5RG9tYWluLCBsb2dpbkRvbWFpbiwgJmVsZW1lbnQsIHBsYXRmb3JtRXZlbnQs
IGV2ZW50VHlwZSwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0XShTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCBzdG9yYWdlQWNjZXNzR3JhbnRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc3RvcmFnZUFjY2Vzc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Olll
cykgewpAQCAtMTA3NCw2ICsxMTAyLDI3IEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdCBR
dWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhFbGVtZW50JiBlCiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0
OjpTaG91bGROb3RDYW5jZWxFdmVudDsKICAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IEJCQ1JhZGlvUGxheWVyUG9wVXBXaW5kb3dGZWF0dXJlU3RyaW5n
ID0gImZlYXR1cmVzdHJpbmcgd2lkdGg9NDAwLGhlaWdodD03MzAiX3M7CisKKyAgICAgICAgLy8g
QkJDIFJhZGlvUGxheWVyIGNhc2UuCisgICAgICAgIGlmIChpc0JCQ0RvbWFpbihkb21haW4pICYm
IGlzQkJDUG9wT3V0UGxheWVyRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICAgICAgaWYgKGF1
dG8gc3ViRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdWJEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KGRvbWFpbikpIHsK
KyAgICAgICAgICAgICAgICBhdXRvIHN1YkRvbWFpblZhbHVlID0gKnN1YkRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzczsKKyAgICAgICAgICAgICAgICBpZiAoIVJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWQoKS5oYXNDcm9zc1BhZ2VTdG9yYWdlQWNjZXNzKHN1YkRvbWFpblZhbHVlLCBkb21h
aW4pKSB7CisgICAgICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBXVEZNb3ZlKHN1
YkRvbWFpblZhbHVlKSwgW2RvY3VtZW50ID0gbV9kb2N1bWVudCwgZG9tYWluLCBzdWJEb21haW5W
YWx1ZV0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgc3RvcmFnZUFjY2Vzc0dyYW50ZWQpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0b3JhZ2VBY2Nlc3NHcmFudGVkID09
IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhDcm9zc1Bh
Z2VTdG9yYWdlQWNjZXNzKHt7IGRvbWFpbiwgc3ViRG9tYWluVmFsdWUgfX0sIFtdIHsgfSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBkb21XaW5kb3cgPSBkb2N1bWVudC0+ZG9t
V2luZG93KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvbVdpbmRvdykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1By
b3h5Pj4gcHJveHlPckV4Y2VwdGlvbiA9ICBkb21XaW5kb3ctPm9wZW4oKmRvbVdpbmRvdywgKmRv
bVdpbmRvdywgc3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgQkJD
UmFkaW9QbGF5ZXJQb3BVcFdpbmRvd0ZlYXR1cmVTdHJpbmcpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkQ2Fu
Y2VsRXZlbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9y
YWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVudDsKKyAgICAgICAgfQogICAgIH0K
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXgg
N2M1ZDA2ZjZlZGNjNmM2MjkzMWU0OWVkOGQ1OGIyNzE5NDI4ZTIzYS4uNWZkMzkwMmE2OTU4MGFk
YzYwYmYyMmNkOWJlNTA5NDQ5MWQ4N2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC0xMjYsNiAr
MTI2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0VGVhbXNSZWRpcmVj
dFVSTChjb25zdCBVUkwmKTsKICNlbmRpZgogCisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgQkJD
UmFkaW9QbGF5ZXJVUkxTdHJpbmcoKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdGF0aWNS
YWRpb1BsYXllclVSTFN0cmluZygpOworCiBwcml2YXRlOgogICAgIGJvb2wgbmVlZHNRdWlya3Mo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDFhNjdmMzM2ZTMyNzdlOTkyMjg5YjU1
YzM2NDIxNzQ4NjEzZTA5MmUuLjU5NjM5Zjg4N2Q3NzZmOWQ2N2EyODEzOTVlZmUwMjU0ZTYzNzhl
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTM4MCw2ICszODAsOCBAQCBIYXNoTWFwPFJlZ2lz
dHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RvcmFnZUFjYwogICAgICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJs
ZURvbWFpbj4gbWFwOwogICAgICAgICBtYXAuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoIm1pY3Jvc29mdC5jb20iKSwKICAg
ICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFi
bGVEb21haW5TdHJpbmcoIm1pY3Jvc29mdG9ubGluZS5jb20iX3MpKTsKKyAgICAgICAgbWFwLmFk
ZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWlu
U3RyaW5nKCJiYmMuY28udWsiKSwKKyAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInJhZGlvcGxheWVyLmNvLnVr
Il9zKSk7CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfSgpOwogICAgIHJldHVybiBtYXAuZ2V0
KCk7CkBAIC0zODcsMTYgKzM4OSwxNiBAQCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdp
c3RyYWJsZURvbWFpbj4mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZUFjYwogCiBib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFp
bihjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNvbnN0IFN1YlJlc291cmNl
RG9tYWluJiByZXNvdXJjZURvbWFpbikKIHsKLSAgICBhdXRvIGxvZ2luRG9tYWluID0gV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbkZvckZpcnN0UGFydHkodG9wRnJh
bWVEb21haW4pOworICAgIGF1dG8gbG9naW5Eb21haW4gPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN1YkRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFydHkodG9w
RnJhbWVEb21haW4pOwogICAgIHJldHVybiBsb2dpbkRvbWFpbiAmJiByZXNvdXJjZURvbWFpbiA9
PSBsb2dpbkRvbWFpbjsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVl
c3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlv
bihjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbikKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5S
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luT3JDb21wYXRpYmlsaXR5UHVycG9zZXNXaXRob3V0
UHJpb3JVc2VySW50ZXJhY3Rpb24oY29uc3QgU3ViUmVzb3VyY2VEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4pCiB7CiAgICAgcmV0dXJu
IGxvZ2luRG9tYWluTWF0Y2hlc1JlcXVlc3RpbmdEb21haW4odG9wRnJhbWVEb21haW4sIHJlc291
cmNlRG9tYWluKTsKIH0KIAotT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b3BGcmFtZURvbWFpbikKK09wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN1YkRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFy
dHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluKQogewogICAgIGF1dG8g
aXQgPSBzdG9yYWdlQWNjZXNzUXVpcmtzKCkuZmluZCh0b3BGcmFtZURvbWFpbik7CiAgICAgaWYg
KGl0ICE9IHN0b3JhZ2VBY2Nlc3NRdWlya3MoKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGNh
MzRlODliNWM0MmU4MjQ2NmU2MDFmZDQ0MDhlNWNiYzY5MzIyN2UuLmEyMmI0NjBjYTNjNGIyZDA1
OTFkMDgwODljYjg4YWUzYjU2NjVkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtMjE2LDggKzIxNiw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFibGVEb21h
aW4+JiBzdG9yYWdlQWNjZXNzUXVpcmtzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgY2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNl
ckludGVyYWN0aW9uKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21h
aW4+IGxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9y
TG9naW5PckNvbXBhdGliaWxpdHlQdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihj
b25zdCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzdWJEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgbG9naW5Eb21haW5NYXRjaGVzUmVx
dWVzdGluZ0RvbWFpbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9t
YWluJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZ2lzdHJhYmxlRG9tYWluIG1hcFRv
VG9wRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDk3
ZmRiNGNkMGNiOTJiMWE1MDllNWViMDY0NTQxYThlNTM0NjA3MTIuLmYyZGRjODlkZjIxZDBhYjU0
MmRkZmEzYjlmOTU5NjU2ZmNmNTBhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc3ViRnJhbWVT
dGF0dXMuZmlyc3QgPT0gQWRkZWRSZWNvcmQ6Ok5vKTsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAg
ICAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NG
b3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWlu
LCB0b3BGcmFtZURvbWFpbikpCisgICAgICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
YW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luT3JDb21wYXRpYmlsaXR5UHVycG9zZXNXaXRo
b3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSkK
ICAgICAgICAgICAgIEFTU0VSVChoYXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4s
IE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSk7CiAjZW5kaWYKICAgICAgICAgaW5zZXJ0RG9t
YWluUmVsYXRpb25zaGlwTGlzdChzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNRdWVy
eSwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4oeyB0b3BGcmFtZURvbWFpbiB9KSwgKnN1YkZy
YW1lU3RhdHVzLnNlY29uZCk7CkBAIC0xNDIyLDcgKzE0MjIsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJG
cmFtZURvbQogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChzdWJGcmFtZVN0YXR1cy5maXJzdCA9
PSBBZGRlZFJlY29yZDo6Tm8pOwogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIGlmICghTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9z
ZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9t
YWluKSkKKyAgICAgICAgaWYgKCFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9y
YWdlQWNjZXNzRm9yTG9naW5PckNvbXBhdGliaWxpdHlQdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJ
bnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKQogICAgICAgICAgICAg
QVNTRVJUKGhhc0hhZFVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgT3BlcmF0aW5nRGF0
ZXNXaW5kb3c6OkxvbmcpKTsKICNlbmRpZgogICAgICAgICBBU1NFUlQoaGFzVXNlckdyYW50ZWRT
dG9yYWdlQWNjZXNzVGhyb3VnaFByb21wdCgqc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BGcmFt
ZURvbWFpbikgPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpOwpAQCAtMjExMiw3
ICsyMTEyLDcgQEAgQ29va2llQWNjZXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjb29raWVBY2Nlc3MoY29uc3QgU3ViUmVzb3VyY2UKICAgICBpZiAoIWFyZUFsbFRoaXJk
UGFydHlDb29raWVzQmxvY2tlZFVuZGVyKHRvcEZyYW1lRG9tYWluKSAmJiAhaXNQcmV2YWxlbnQp
CiAgICAgICAgIHJldHVybiBDb29raWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xpY3k7CiAKLSAg
ICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JM
b2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YnJlc291cmNlRG9tYWlu
LCB0b3BGcmFtZURvbWFpbikgJiYgIWhhZFVzZXJJbnRlcmFjdGlvbikKKyAgICBpZiAoIU5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29tcGF0
aWJpbGl0eVB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YnJlc291cmNlRG9t
YWluLCB0b3BGcmFtZURvbWFpbikgJiYgIWhhZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0
dXJuIENvb2tpZUFjY2Vzczo6Q2Fubm90UmVxdWVzdDsKIAogICAgIHJldHVybiBDb29raWVBY2Nl
c3M6Ok9ubHlJZkdyYW50ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCmluZGV4IDI2Njc2ZTY4ZDU0N2IyMWFmNmNkZDRjNzg5YjRjM2I0ZGZlNTZm
OTAuLmY0MDYwZWUyOGE1YzQxOWIwYjY2MmIyNjZhZDkwMzhhYTUzNTIyN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC00NzAsNyArNDcw
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzRXBoZW1lcmFsKGNvbnN0IFJlZ2lzdHIKIHsKICAgICBBU1NFUlQoaXNFcGhlbWVyYWwo
KSk7CiAKLSAgICBpZiAoIW1fbmV0d29ya1Nlc3Npb24gfHwgKCFtX2RvbWFpbnNXaXRoRXBoZW1l
cmFsVXNlckludGVyYWN0aW9uLmNvbnRhaW5zKHN1YkZyYW1lRG9tYWluKSAmJiAhTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRo
b3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSkp
CisgICAgaWYgKCFtX25ldHdvcmtTZXNzaW9uIHx8ICghbV9kb21haW5zV2l0aEVwaGVtZXJhbFVz
ZXJJbnRlcmFjdGlvbi5jb250YWlucyhzdWJGcmFtZURvbWFpbikgJiYgIU5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1
cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFt
ZURvbWFpbikpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3Bl
LCB0b3BGcmFtZURvbWFpbiwgc3ViRnJhbWVEb21haW4gfSk7CiAKICAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiByZXF1ZXN0Q29uZmlybWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFtZURvbWFpbiwgdG9w
RnJhbWVEb21haW4sIGZyYW1lSUQsIHdlYlBhZ2VJRCwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChib29sIHVzZXJEaWRHcmFudEFjY2Vzcykg
bXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IDkxNTVjMTVmNmFlNGEzODk4ZjY4NzhjMjBlM2YyNzNhYzU5OTk0
Y2YuLjk3NTI4MTg3ZTQyNDFjYjJhMzJhMzhkNDZiZmU0Njg3ZGZhNDJiNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0x
NzcsNiArMTc3LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2VuZGlmCiAgICAgCiAgICAgZW5jb2RlciA8PCB0
ZXh0SW50ZXJhY3Rpb25FbmFibGVkOworICAgIGVuY29kZXIgPDwgQkJDUmFkaW9QbGF5ZXJQb3B1
cDsKIH0KIAogT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTU1OSw2ICs1
NjAsOSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy50ZXh0SW50ZXJhY3Rpb25FbmFibGVkKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5CQkNSYWRpb1Bs
YXllclBvcHVwKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIHJldHVybiBw
YXJhbWV0ZXJzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggMWQxNTUwYzA2ZTM2M2VlYTdiZDRmY2JiNjdjYmE0ZGNkMDg3
ODQ0ZS4uMzBhYzJmY2RjNDM3OTM3ZjYwYjI0MGIzZjZiN2NlYzg0M2M3Yjk2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMjQ5
LDYgKzI0OSw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICNlbmRpZgog
CiAgICAgYm9vbCB0ZXh0SW50ZXJhY3Rpb25FbmFibGVkIHsgdHJ1ZSB9OworICAgIGJvb2wgQkJD
UmFkaW9QbGF5ZXJQb3B1cCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZlMGNmMmU3ZGZj
MDBmODZmYjc5NDMzYzRiZjExNmQzZTFjYmNkZjkuLjUyZjdmOWUxYzQ2MWNjZjc4YzBjNjgxM2Vj
ODgzYWZlNWYyMjM5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtNTU3Miw3ICs1NTcyLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdl
KEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIFdlYlBhCiAjZW5kaWYK
ICAgICB9OwogCi0gICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVz
ZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2Vu
SWRlbnRpZmllcik7CisgICAgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4gdXNlcklu
aXRpYXRlZEFjdGl2aXR5OworICAgIAorICAgIC8vIFdlYktpdCBjYW5jZWxzIHRoZSBvcmlnaW5h
bCBnZXN0dXJlIHRvIG9wZW4gdGhlIEJCQyByYWRpbyBwbGF5ZXIgc28KKyAgICAvLyB3ZSBjYW4g
Y2FsbCB0aGUgU3RvcmFnZSBBY2Nlc3MgQVBJIGZpcnN0LiBXaGVuIHdlIHJlLWluaXRpYXRlIHRo
ZSBvcGVuLAorICAgIC8vIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhlIGNsaWVudCBrbm93cyB0aGF0
IHRoaXMgd2FzIHVzZXIgaW5pdGlhdGVkIHNvIGl0CisgICAgLy8gZG9lcyBub3QgYmxvY2sgdGhl
IHBvcHVwLgorICAgICAgICAKKyAgICBpZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKSA9PSAiaHR0
cHM6Ly9zdGF0aWMucmFkaW9wbGF5ZXIuY28udWsvIikKKyAgICAgICAgdXNlckluaXRpYXRlZEFj
dGl2aXR5ID0gQVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uOjpjcmVhdGUoKTsKKyAgICBlbHNlCisg
ICAgICAgIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFj
dGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsK
KwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gb3JpZ2luYXRpbmdGcmFtZUluZm8tPnJl
cXVlc3QoKS51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CiAgICAgYXV0byBu
YXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWVJbmZvLnB0cigpLCBudWxscHRy
LCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCksIFVSTCgpLCBzaG91bGRPcGVuQXBwTGlu
a3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKaW5kZXggZmVjMGZlZWZkNTUzZDZlYzIyYzRkOGNkZGY5YThlYzdmZTE4ZmRkYi4uMzZlNjZh
ZGQzOWFhMzI1NWJlZDZhZDZiNmY4MzAwOGM5ZDVlYWM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKQEAgLTI4OCw2ICsyODgsNyBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRv
dyhGcmFtZSYgZnJhbWUsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZQogICAgIEFTU0VS
VChwYXJhbWV0ZXJzKTsKIAogICAgIHBhcmFtZXRlcnMtPm9sZFBhZ2VJRCA9IG1fcGFnZS5pZGVu
dGlmaWVyKCk7CisgICAgcGFyYW1ldGVycy0+QkJDUmFkaW9QbGF5ZXJQb3B1cCA9IGZyYW1lLkJC
Q1JhZGlvUGxheWVyUG9wdXAoKTsKIAogICAgIHdlYlByb2Nlc3MuY3JlYXRlV2ViUGFnZSgqbmV3
UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7CiAgICAgcmV0dXJuIHdlYlByb2Nlc3Mud2Vi
UGFnZSgqbmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDNmM2RkNjNiMjMzOGE1MzdkMWQ1MzZlNjU4YzkwMzNkYjg0ZDJjNWUuLjc1ZWFk
MWU1MmZmZGQ2ZWViMDE0OTkzYzdkYWRiNWVlM2E5NWJhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtMTk1OSw2ICsxOTU5LDE1IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6Om5vdGlmeVBhZ2VPZkFwcEJvdW5kQmVoYXZpb3IoKQogfQogI2VuZGlmCiAKK2Jvb2wg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OkJCQ1JhZGlvUGxheWVyUG9wdXAoKSBjb25zdAoreworICAg
IGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gd2ViUGFnZS0+QkJDUmFkaW9QbGF5ZXJQ
b3B1cCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFBSRUZJWF9QQVJB
TUVURVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDA5NTgxNTMyYTE2YmQxYmNm
MTQ2OGUzNWI5MTExNmYzZWY3ZjEwN2YuLmM3NWQzOGZmMGY2MTExYjljZTZkZTcwZDQzYWQ4MDY4
M2JkNzA1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0yOTAsNiArMjkwLDgg
QEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90
ZWN0aW9ucygpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgbm90aWZ5UGFnZU9mQXBwQm91bmRCZWhh
dmlvcigpIGZpbmFsOwogI2VuZGlmCisKKyAgICBib29sIEJCQ1JhZGlvUGxheWVyUG9wdXAoKSBj
b25zdCBmaW5hbDsKIH07CiAKIC8vIEFzIGxvbmcgYXMgRW1wdHlGcmFtZUxvYWRlckNsaWVudCBl
eGlzdHMgaW4gV2ViQ29yZSwgdGhpcyBjYW4gcmV0dXJuIG51bGxwdHIuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGM2ZDg5ZDA5NzYzNTMxYzMz
ZWRiMjhiZjNhMDA4MTM4MjA0MDJkYjYuLjc4ZjBjYmNmOGRmNTFjMGRmZmFlZDM5MmJlZDA3ZDcz
ZDZmMTRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC00OTYsNiArNDk2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2lmIEVOQUJM
RShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAsIG1fbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5k
RG9tYWlucyhwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMpCiAj
ZW5kaWYKKyAgICAsIG1fQkJDUmFkaW9QbGF5ZXJQb3B1cChwYXJhbWV0ZXJzLkJCQ1JhZGlvUGxh
eWVyUG9wdXApCiB7CiAgICAgQVNTRVJUKG1faWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBlN2EyYjc5YjM2MTk1NjNlODAxZTI0
ZWIzNzVmN2Y4YmM5YjMxZjhjLi45MjZiZjJmZTRiNjViOWRlMTdlYTQ1ZmUyYzViZDhkMTZmNDcw
ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0x
Mzc3LDYgKzEzNzcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBjcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQpOwogI2VuZGlmCiAKKyAgICBi
b29sIEJCQ1JhZGlvUGxheWVyUG9wdXAoKSBjb25zdCB7IHJldHVybiBtX0JCQ1JhZGlvUGxheWVy
UG9wdXA7IH0KKyAgICB2b2lkIHNldEJCQ1JhZGlvUGxheWVyUG9wdXAoYm9vbCBpc0JCQ1JhZGlv
UGxheWVyUG9wdXApIHsgbV9CQkNSYWRpb1BsYXllclBvcHVwID0gaXNCQkNSYWRpb1BsYXllclBv
cHVwOyB9CisKICAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoY29u
c3QgV2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiBw
cml2YXRlOgpAQCAtMjE5Miw2ICsyMTk1LDggQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4g
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiAjZW5kaWYKKyAgICAKKyAgICBib29sIG1f
QkJDUmFkaW9QbGF5ZXJQb3B1cCB7IGZhbHNlIH07CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416475</attachid>
            <date>2020-12-17 15:32:22 -0800</date>
            <delta_ts>2020-12-18 09:09:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219949-20201217153221.patch</filename>
            <type>text/plain</type>
            <size>26131</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MDFhYWY4OTQyMWJm
N2I1YzE0YjU4MDI0YTJmYjE1ZjIyZmM3My4uMDM0M2QzYzEwMTc2YjJkYjczMDYyNTNlOTdhN2Nl
YzdiODZkZDlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbm5vdCBz
ZWUgJ0FkZCB0byBteSBzdGF0aW9ucycgYnV0dG9uIGluIEJCQyBXb3JsZCBzZXJ2aWNlIFJhZGlv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzE5NTMyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSB0ZW1wb3JhcnkgcXVpcmsgdG8g
YXNzaXN0IGEgaGlnaC10cmFmZmljIHdlYnNpdGUgd2hpbGUgdGhleQorICAgICAgICBjb21wbGV0
ZSB0aGUgbGFyZ2UgdGFzayBvZiBtaWdyYXRpbmcgYXdheSBmcm9tIHNpdGUgY29tcGF0aWJpbGl0
eSB1c2luZworICAgICAgICB0aGlyZCBwYXJ0eSBjb29raWVzLiBUaGlzIHF1aXJrIHdpbGwgYmUg
cmVtb3ZlZCB3aGVuIHRoZSBzaXRlIGlzCisgICAgICAgIHVwZGF0ZWQuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBzaXRlLXNwZWNpZmljIHF1aXJrLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJr
IHRoYXQgd2lsbCBjYWxsIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgb24gYmVoYWxmIG9mCisgICAg
ICAgIEJCQyBmb3IgcmFkaW9wbGF5ZXIuY28udWsgdW5kZXIgYmJjLmNvLnVrLiBXaGVuIHRoZSB1
c2VyIGNsaWNrcyB0byBvcGVuCisgICAgICAgIHRoZSByYWRpbyBwbGF5ZXIgcG9wLXVwLCBzdG9y
YWdlIGFjY2VzcyBpcyByZXF1ZXN0ZWQuIElmIHRoZSB1c2VyIGdyYW50cworICAgICAgICBwZXJt
aXNzaW9uLCB0aGVuIHdlIG9wZW4gdGhlIHBvcC11cCB0byBzdGF0aWMucmFkaW9wbGF5ZXIuY28u
dWsgdG8gZ2V0CisgICAgICAgIGZpcnN0IHBhcnR5IHN0YXR1cywgdGhlbiBpbW1lZGlhdGVseSBy
ZWRpcmVjdCB0byB0aGUgcmFkaW8gcGxheWVyIHBhZ2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Vz
IHRoZSBsYW5ndWFnZSBvZiB0aGUgc2l0ZS1zcGVjaWZpYyBxdWlyayBjb2RlIGluCisgICAgICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBub3cgdGhhdCB3ZSBhcmUgY3JlYXRpbmcgcXVpcmtzIGZv
ciBpbnN0YW5jZXMKKyAgICAgICAgb3RoZXIgdGhhbiBsb2dpbiBjYXNlcy4KKworICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVuKToKKyAgICAgICAgRXZlbiBpZiBXZWJL
aXQgY2FuY2VscyB0aGUgcG9wLXVwIGNsaWNrIGluIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVu
dCwKKyAgICAgICAgdGhlIHBvcHVwIHN0aWxsIGFwcGVhcnMuIFNvIHdlIHNob3VsZCBjaGVjayBo
ZXJlIGlmIHRoZSBwb3AtdXAgaXMgdHJ5aW5nCisgICAgICAgIHRvIGxvYWQgYmVmb3JlIHN0b3Jh
Z2UgYWNjZXNzIGhhcyBiZWVuIGdyYW50ZWQuIElmIHNvLCB3ZSBzaG91bGQgY2FuY2VsIGl0Cisg
ICAgICAgIGFuZCB3YWl0IGZvciB0aGUgcXVpcmsgdG8gcmUtb3BlbiB0aGUgcG9wLXVwIGFmdGVy
IHByb21wdGluZyB0aGUgdXNlci4KKyAgICAgICAgQWxzbyBhZGRzIGEgbnVsbCBmcmFtZSBjaGVj
ay4KKworICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQkJD
RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQkJDUG9wT3V0UGxheWVyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmg6CisgICAgICAgIFRoaXMgaXMgd2hlcmUgd2Ug
Y2hlY2sgaWYgdGhlIHBvcC11cCBidXR0b24gaGFzIGJlZW4gY2xpY2tlZCBhbmQKKyAgICAgICAg
cHJvbXB0IGZvciBzdG9yYWdlIGFjY2VzcyBpZiBuZWVkZWQuIElmIHRoZSB1c2VyIGdyYW50cyBz
dG9yYWdlCisgICAgICAgIGFjY2Vzcywgd2Ugc2hvdWxkIG9wZW4gYSBwb3B1cCB0byBzdGF0aWMu
cmFkaW9wbGF5ZXIuY28udWsgc28gaXQKKyAgICAgICAgZ2V0cyBtYXJrZWQgYXMgZmlyc3QgcGFy
dHksIHRoZW4gaW5qZWN0IHNjcmlwdCB0byByZWRpcmVjdCB0byB0aGUKKyAgICAgICAgY29ycmVj
dCBCQkMgcmFkaW8gcGxheWVyIHBhZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VBY2Nlc3NRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3ViRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5Q
dXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0eSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaDoKKyAgICAgICAgQ2hhbmdlIHdvcmRpbmcgbm93IHRoYXQgcXVpcmtzIGFyZSBub3Qgb25s
eSBiZWluZyB1c2VkIGZvciBsb2dpbgorICAgICAgICBmbG93cy4KKwogMjAyMC0xMi0xNyAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2Vd
IFVuaWZ5IFdlYkdMIHNvdXJjZSBmaWxlcyBpbnRvIHRoZSBjb21tb24gV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBjYjJmOGRiMWUwOGJjZjlhMTA4MWY0Mzc5Zjg3Yjk0NjZjZjIz
NmMyLi44MThkOTJkMDg2ZjU1MThmMWQxNzY4ZGU5YzM1NWE0NDQ2NDZmMzU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM2IEBACisyMDIwLTEyLTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVu
ZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbm5vdCBzZWUgJ0FkZCB0byBteSBzdGF0aW9ucycg
YnV0dG9uIGluIEJCQyBXb3JsZCBzZXJ2aWNlIFJhZGlvCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMzE5NTMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgaXMgYSB0ZW1wb3JhcnkgcXVpcmsgdG8gYXNzaXN0IGEgaGlnaC10cmFmZmljIHdl
YnNpdGUgd2hpbGUgdGhleQorICAgICAgICBjb21wbGV0ZSB0aGUgbGFyZ2UgdGFzayBvZiBtaWdy
YXRpbmcgYXdheSBmcm9tIHNpdGUgY29tcGF0aWJpbGl0eSB1c2luZworICAgICAgICB0aGlyZCBw
YXJ0eSBjb29raWVzLiBUaGlzIHF1aXJrIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHRoZSBzaXRlIGlz
CisgICAgICAgIHVwZGF0ZWQuCisKKyAgICAgICAgQ3JlYXRlIGEgcXVpcmsgdGhhdCB3aWxsIGNh
bGwgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBvbiBiZWhhbGYgb2YKKyAgICAgICAgQkJDIGZvciBy
YWRpb3BsYXllci5jby51ayB1bmRlciBiYmMuY28udWsuIFdoZW4gdGhlIHVzZXIgY2xpY2tzIHRv
IG9wZW4KKyAgICAgICAgdGhlIHJhZGlvIHBsYXllciBwb3AtdXAsIHN0b3JhZ2UgYWNjZXNzIGlz
IHJlcXVlc3RlZC4gSWYgdGhlIHVzZXIgZ3JhbnRzCisgICAgICAgIHBlcm1pc3Npb24sIHRoZW4g
d2Ugb3BlbiB0aGUgcG9wLXVwIHRvIHN0YXRpYy5yYWRpb3BsYXllci5jby51ayB0byBnZXQKKyAg
ICAgICAgZmlyc3QgcGFydHkgc3RhdHVzLCB0aGVuIGltbWVkaWF0ZWx5IHJlZGlyZWN0IHRvIHRo
ZSByYWRpbyBwbGF5ZXIgcGFnZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzRXBoZW1lcmFsKToKKyAgICAgICAgQ2hhbmdlIHdvcmRpbmcgbm93
IHRoYXQgcXVpcmtzIGFyZSBub3Qgb25seSBiZWluZyB1c2VkIGZvciBsb2dpbgorICAgICAgICBm
bG93cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICBNYXJrIHRoZSBx
dWlyay1pbml0aWF0ZWQgcG9wLXVwIGFzIHVzZXItaW5pdGlhdGVkIHNvIGl0IGRvZXNuJ3QgZ2V0
CisgICAgICAgIGJsb2NrZWQuCisKIDIwMjAtMTItMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWJNIGZvcm1hdCByZWFkZXIgZG9l
c24ndCB3b3JrIHdpdGggYSB1cmwgaW4gYSA8c291cmNlPiBlbGVtZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBkYTg1MjVhYWE1OTBlZWIzYWE4ODQ0OGJj
ZjJiZDk3MWQ1NTkxNzM1Li5hMTZiODc0ODFiM2NlYTNmNDk5NGZkYjFiYTQwYzY3Nzk1YmU4NTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTgwNSw3ICs4
MDUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBhdXRvJiBkb2N1bWVudCA9
ICptX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoUXVpcmtzOjppc01pY3Jvc29mdFRl
YW1zUmVkaXJlY3RVUkwocmVzcG9uc2UudXJsKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGZpcnN0
UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihyZXNwb25zZS51cmwoKSk7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbnMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2lu
RG9tYWluc0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGxvZ2luRG9tYWlucyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3ViUmVzb3VyY2VE
b21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eShmaXJzdFBhcnR5RG9tYWlu
KSkgewogICAgICAgICAgICAgICAgIGlmICghUXVpcmtzOjpoYXNTdG9yYWdlQWNjZXNzRm9yQWxs
TG9naW5Eb21haW5zKCpsb2dpbkRvbWFpbnMsIGZpcnN0UGFydHlEb21haW4pKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZGly
ZWN0KGRvY3VtZW50LCAwLCBtaWNyb3NvZnRUZWFtc1JlZGlyZWN0VVJMKCkpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNTdkZWYz
MGUwZDVmNzdiZmE2Yjc4OWQ1ZmViZDQ2NjNkNTE4MzllYy4uYTYzOTQ5YjczZDZhZGM2ZGNlN2Y1
YjEwYmQzMDc4ODMwNDJlMzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMjUw
MSw2ICsyNTAxLDE1IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3Jl
YXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAKIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxXaW5kb3dQcm94eT4+IERPTVdpbmRvdzo6b3BlbihET01XaW5kb3cmIGFjdGl2ZVdpbmRv
dywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmdUb09wZW4s
IGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJl
c1N0cmluZykKIHsKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7
CisgICAgICAgIGlmIChkb2N1bWVudC0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJr
cygpICYmIHVybFN0cmluZ1RvT3BlbiA9PSBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5n
KCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmFkaW9QbGF5ZXJEb21haW4gPSBSZWdpc3RyYWJsZURv
bWFpbihVUkwoVVJMKCksIFF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkpOwor
ICAgICAgICAgICAgYXV0byBCQkNEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihVUkwoVVJMKCks
IFF1aXJrczo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkpOworICAgICAgICAgICAgaWYgKCFS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyhy
YWRpb1BsYXllckRvbWFpbiwgQkJDRG9tYWluKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVm
UHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIgfTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlm
ICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBSZWZQdHI8
V2luZG93UHJveHk+IHsgbnVsbHB0ciB9OwogCkBAIC0yNTI4LDYgKzI1MzcsOSBAQCBFeGNlcHRp
b25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9NV2luZG93JiBhY3Rp
dmVXaW5kb3csIERPTVdpbgogI2VuZGlmCiAKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIFJlZlB0cjxXaW5kb3dQcm94eT4g
eyBudWxscHRyIH07CisKICAgICBpZiAoIWZpcnN0V2luZG93LmFsbG93UG9wVXAoKSkgewogICAg
ICAgICAvLyBCZWNhdXNlIEZyYW1lVHJlZTo6ZmluZEZyYW1lRm9yTmF2aWdhdGlvbigpIHJldHVy
bnMgdHJ1ZSBmb3IgZW1wdHkgc3RyaW5ncywgd2UgbXVzdCBjaGVjayBmb3IgZW1wdHkgZnJhbWUg
bmFtZXMuCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaWxsZWdpdGltYXRlIHdpbmRvdy5vcGVuKCkg
Y2FsbHMgd2l0aCBubyBuYW1lIHdpbGwgcGFzcyByaWdodCB0aHJvdWdoIHRoZSBwb3B1cCBibG9j
a2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IDU0ZTZkZTAzNjJmM2MwNDA2ODBmMGE2NzA4
MmE1MjdkOWRlYmU4NTMuLjE4YmRjYTU4YTgyNmVlZWQ5YzJmYzcwMzI4N2M2MzA3NjFmOWVhYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTEwMDIsNiArMTAwMiwzMiBAQCBib29sIFF1aXJr
czo6aGFzU3RvcmFnZUFjY2Vzc0ZvckFsbExvZ2luRG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPgogICAgIHJldHVybiB0cnVlOwogfQogCitjb25zdCBTdHJpbmcmIFF1aXJr
czo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IEJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nID0gImh0dHBzOi8vd3d3LmJiYy5jby51
ay9zb3VuZHMvcGxheWVyL2JiY193b3JsZF9zZXJ2aWNlIl9zOworICAgIHJldHVybiBCQkNSYWRp
b1BsYXllclVSTFN0cmluZzsKK30KKworY29uc3QgU3RyaW5nJiBRdWlya3M6OnN0YXRpY1JhZGlv
UGxheWVyVVJMU3RyaW5nKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBz
dGF0aWNSYWRpb1BsYXllclVSTFN0cmluZyA9ICJodHRwczovL3N0YXRpYy5yYWRpb3BsYXllci5j
by51ay8iX3M7CisgICAgcmV0dXJuIHN0YXRpY1JhZGlvUGxheWVyVVJMU3RyaW5nOworfQorCitz
dGF0aWMgYm9vbCBpc0JCQ0RvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWdpc3RyYWJsZURvbWFpbj4gQkJDRG9tYWlu
ID0gUmVnaXN0cmFibGVEb21haW4oVVJMKFVSTCgpLCBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJM
U3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZG9tYWluID09IEJCQ0RvbWFpbjsKK30KKworc3RhdGlj
IGJvb2wgaXNCQkNQb3BVcFBsYXllckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK3sK
KyAgICBpZiAoIWVsZW1lbnQucGFyZW50RWxlbWVudCgpIHx8ICFlbGVtZW50LnBhcmVudEVsZW1l
bnQoKS0+aGFzQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGVs
ZW1lbnQucGFyZW50RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoInBfYXVkaW9CdXR0
b25fYnV0dG9uSW5uZXIiKSB8fCBlbGVtZW50LnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygp
LmNvbnRhaW5zKCJhdWRpb0J1dHRvbiIpOworfQorCiAjZW5kaWYKIAogUXVpcmtzOjpTdG9yYWdl
QWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWlsLCBFbGVtZW50KiByZWxhdGVk
VGFyZ2V0KSBjb25zdApAQCAtMTAzNyw2ICsxMDYzLDggQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNz
UmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQm
IGUKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4ga2luamFMb2dpblVzZXJT
Y3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlckxvZ2luRm9ybSgpIHsgbGV0IGVsZW1lbnRzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnanNfaGVhZGVyLXVzZXJidXR0b24nKTsgaWYg
KGVsZW1lbnRzICYmIGVsZW1lbnRzWzBdKSB7IGVsZW1lbnRzWzBdLmNsaWNrKCk7IGNsZWFySW50
ZXJ2YWwoaW50ZXJ2YWwpOyB9IH0gbGV0IGludGVydmFsID0gc2V0SW50ZXJ2YWwodHJpZ2dlckxv
Z2luRm9ybSwgMjAwKTsiLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2FpdEZvck5v
dGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVzIH07CiAKICAgICBpZiAoZXZlbnRUeXBlID09
ICJjbGljayIpIHsKKyAgICAgICAgaWYgKCFtX2RvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJu
IFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CiAKICAg
ICAgICAgLy8gRW1iZWRkZWQgWW91VHViZSBjYXNlLgogICAgICAgICBpZiAoZWxlbWVudC5oYXND
bGFzcygpICYmIGRvbWFpbiA9PSB5b3VUdWJlRG9tYWluICYmICFtX2RvY3VtZW50LT5pc1RvcERv
Y3VtZW50KCkgJiYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0hhZFVzZXJJbnRl
cmFjdGlvbih5b3VUdWJlRG9tYWluKSkgewpAQCAtMTA3OSw3ICsxMTA3LDcgQEAgUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1
aXJrKEVsZW1lbnQmIGUKICAgICAgICAgLy8gRklYTUUoMjE4Nzc5KTogUmVtb3ZlIHRoaXMgcXVp
cmsgb25jZSBtaWNyb3NvZnQuY29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93IHJlZGVzaWdu
LgogICAgICAgICBpZiAoaXNNaWNyb3NvZnREb21haW4oZG9tYWluKSAmJiBpc01pY3Jvc29mdExv
Z2luRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byBmaXJzdFBhcnR5RG9tYWlu
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXBUb1RvcERvbWFpbihSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QobV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpLmhvc3QoKSkpOwotICAgICAgICAgICAgaWYgKGF1dG8gbG9naW5Eb21haW5z
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbnNGb3JGaXJzdFBhcnR5KGZpcnN0
UGFydHlEb21haW4pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbnMgPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vz
c0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKICAgICAgICAgICAgICAgICBpZiAo
IWhhc1N0b3JhZ2VBY2Nlc3NGb3JBbGxMb2dpbkRvbWFpbnMoKmxvZ2luRG9tYWlucywgZmlyc3RQ
YXJ0eURvbWFpbikpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpbkRvbWFpbiA9IFJl
Z2lzdHJhYmxlRG9tYWluKCpsb2dpbkRvbWFpbnMudmFsdWUoKS5iZWdpbigpLmdldCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzc0Zvck5vbkRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQsIFdURk1vdmUobG9naW5Eb21haW4p
LCBbZmlyc3RQYXJ0eURvbWFpbiwgbG9naW5Eb21haW4sICZlbGVtZW50LCBwbGF0Zm9ybUV2ZW50
LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdldF0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgc3RvcmFnZUFjY2Vzc0dyYW50ZWQpIG11dGFibGUgewpAQCAtMTEwMCw3ICsxMTI4LDcgQEAg
UXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFn
ZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
Z2lzdHJhYmxlRG9tYWluPiBwbGF5U3RhdGlvbkRvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInBsYXlzdGF0aW9uLmNv
bSJfcyk7CiAgICAgICAgIGlmIChkb21haW4gPT0gcGxheVN0YXRpb25Eb21haW4gJiYgaXNQbGF5
c3RhdGlvbkxvZ2luRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byBmaXJzdFBh
cnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW4obV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51
cmwoKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbnMgPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmxvZ2luRG9tYWluc0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIGxvZ2luRG9tYWlucyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eShm
aXJzdFBhcnR5RG9tYWluKSkgewogICAgICAgICAgICAgICAgIGlmICghaGFzU3RvcmFnZUFjY2Vz
c0ZvckFsbExvZ2luRG9tYWlucygqbG9naW5Eb21haW5zLCBmaXJzdFBhcnR5RG9tYWluKSkgewog
ICAgICAgICAgICAgICAgICAgICAvLyBTZW5kIG9ubHkgb25lIGxvZ2luIGRvbWFpbiB0byBhdm9p
ZCBjaGFuZ2luZyBleGlzdGluZyBTdG9yYWdlIEFjY2VzcyBjb2RlLCB3aGljaCBjYW4gb25seSBo
YW5kbGUgYSBzaW5nbGUgZG9tYWluLgogICAgICAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIG1h
dGNoIFNvbnkgbG9naW4gZG9tYWlucyB1cCB3aGVuIHByb21wdGluZyB0aGUgdXNlciBhbmQgc3Rv
cmluZyB0aGUgZG9tYWlucy4KQEAgLTExMTcsNiArMTE0NSw0MSBAQCBRdWlya3M6OlN0b3JhZ2VB
Y2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoRWxl
bWVudCYgZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFn
ZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CiAgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBCQkNSYWRpb1BsYXllclBvcFVwV2luZG93
RmVhdHVyZVN0cmluZyA9ICJmZWF0dXJlc3RyaW5nIHdpZHRoPTQwMCxoZWlnaHQ9NzMwIl9zOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4gQkJDVXNlclNjcmlwdCB7
ICJmdW5jdGlvbiB0cmlnZ2VyUmVkaXJlY3QoKSB7IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBc
Imh0dHBzOi8vd3d3LmJiYy5jby51ay9zb3VuZHMvcGxheWVyL2JiY193b3JsZF9zZXJ2aWNlXCI7
IH0gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7IHRyaWdnZXJS
ZWRpcmVjdCgpOyB9KSIsIFVSTChhYm91dEJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBW
ZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90
aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgfTsKKworICAgICAgICAvLyBCQkMgUmFkaW9Q
bGF5ZXIgY2FzZS4KKyAgICAgICAgaWYgKGlzQkJDRG9tYWluKGRvbWFpbikgJiYgaXNCQkNQb3BV
cFBsYXllckVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmlyc3RQYXJ0eURv
bWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCkp
OworICAgICAgICAgICAgaWYgKGF1dG8gc3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdWJSZXNvdXJjZURvbWFpbnNJbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KGZpcnN0UGFydHlEb21haW4pKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFoYXNTdG9yYWdlQWNjZXNzRm9yQWxsTG9naW5Eb21haW5zKCpzdWJSZXNv
dXJjZURvbWFpbnNJbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIGZpcnN0UGFydHlEb21haW4pKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gc3ViUmVzb3VyY2VEb21haW4gPSBSZWdpc3RyYWJsZURv
bWFpbigqc3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnZhbHVlKCkuYmVn
aW4oKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBXVEZN
b3ZlKHN1YlJlc291cmNlRG9tYWluKSwgW2RvY3VtZW50ID0gbV9kb2N1bWVudCwgZmlyc3RQYXJ0
eURvbWFpbiwgc3ViUmVzb3VyY2VEb21haW5dKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHN0b3Jh
Z2VBY2Nlc3NHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
LnNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyh7eyBmaXJzdFBhcnR5RG9tYWlu
LCBzdWJSZXNvdXJjZURvbWFpbiB9fSwgW2RvY3VtZW50ID0gV1RGTW92ZShkb2N1bWVudCldIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBkb21XaW5kb3cgPSBkb2N1bWVu
dC0+ZG9tV2luZG93KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb21X
aW5kb3cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbk9y
PFJlZlB0cjxXaW5kb3dQcm94eT4+IHByb3h5T3JFeGNlcHRpb24gPSBkb21XaW5kb3ctPm9wZW4o
KmRvbVdpbmRvdywgKmRvbVdpbmRvdywgc3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSwgZW1w
dHlTdHJpbmcoKSwgQkJDUmFkaW9QbGF5ZXJQb3BVcFdpbmRvd0ZlYXR1cmVTdHJpbmcpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3h5T3JFeGNlcHRpb24uaGFz
RXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwcm94eSA9IHBy
b3h5T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvKiBhYnN0cmFjdEZyYW1lID0gcHJveHktPmZyYW1lKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RGcmFtZSAmJiBp
czxGcmFtZT4oKmFic3RyYWN0RnJhbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byYgZnJhbWUgPSBkb3duY2FzdDxGcmFtZT4oKmFic3RyYWN0RnJhbWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gd29ybGQgPSBT
Y3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgiYmJjUmFkaW9QbGF5ZXJXb3JsZCIsIFNjcmlw
dENvbnRyb2xsZXI6OldvcmxkVHlwZTo6VXNlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWUuYWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdv
cmxkLmdldCgpLCBCQkNVc2VyU2NyaXB0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6
OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90
Q2FuY2VsRXZlbnQ7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShl
bGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCmluZGV4IDUxMTFhYjhkZWUyYWYxMzk5ZWRkMDcyOGM5
ZjAwZWE1OTNhN2VhY2UuLjc3NWZjMGU1N2FkZmRiYjEyZWU3YTk0MmU0ZmMyZWU4M2Q4MDE0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9RdWlya3MuaApAQCAtMTI3LDYgKzEyNyw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yQWxsTG9naW5Eb21haW5zKGNvbnN0IEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+JiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICNlbmRpZgog
CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgQkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdGF0aWNSYWRpb1BsYXllclVS
TFN0cmluZygpOworCiBwcml2YXRlOgogICAgIGJvb2wgbmVlZHNRdWlya3MoKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwCmluZGV4IGY1NzJkZWMzMjcwN2Q5OGMxMGY5ZDc1ZTBkOTI3ZjE5OWNk
YjRlMTcuLjYzODRmN2YwNzQwMzk1ZjRjOTc1MGI2YzMyMTEyYjFjMjFmMzExMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5jcHAKQEAgLTM5MCw2ICszOTAsOCBAQCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWlu
LCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cwog
ICAgICAgICBtYXAuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVn
aXN0cmFibGVEb21haW5TdHJpbmcoInBsYXlzdGF0aW9uLmNvbSIpLCBIYXNoU2V0IHsKICAgICAg
ICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVE
b21haW5TdHJpbmcoInNvbnllbnRlcnRhaW5tZW50bmV0d29yay5jb20iX3MpLAogICAgICAgICAg
ICAgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFp
blN0cmluZygic29ueS5jb20iX3MpIH0pOworICAgICAgICBtYXAuYWRkKFJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoImJiYy5jby51
ayIpLCBIYXNoU2V0IHsKKyAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRD
cmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInJhZGlvcGxheWVyLmNvLnVrIl9zKSB9
KTsKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9KCk7CiAgICAgcmV0dXJuIG1hcC5nZXQoKTsK
QEAgLTM5NywxNiArMzk5LDE2IEBAIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+PiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzCiAKIGJvb2wgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKGNv
bnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgU3ViUmVzb3VyY2VEb21h
aW4mIHJlc291cmNlRG9tYWluKQogewotICAgIGF1dG8gbG9naW5Eb21haW5zID0gV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbnNGb3JGaXJzdFBhcnR5KHRvcEZyYW1l
RG9tYWluKTsKKyAgICBhdXRvIGxvZ2luRG9tYWlucyA9IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQ
YXJ0eSh0b3BGcmFtZURvbWFpbik7CiAgICAgcmV0dXJuIGxvZ2luRG9tYWlucyAmJiBsb2dpbkRv
bWFpbnMudmFsdWUoKS5jb250YWlucyhyZXNvdXJjZURvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNX
aXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oY29uc3QgU3ViUmVzb3VyY2VEb21haW4mIHJlc291
cmNlRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4pCitib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29t
cGF0aWJpbGl0eVB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKGNvbnN0IFN1YlJl
c291cmNlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZy
YW1lRG9tYWluKQogewogICAgIHJldHVybiBsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9t
YWluKHRvcEZyYW1lRG9tYWluLCByZXNvdXJjZURvbWFpbik7CiB9CiAKLU9wdGlvbmFsPEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWlu
c0ZvckZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluKQor
T3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eShj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4pCiB7CiAgICAgYXV0byBpdCA9
IHN0b3JhZ2VBY2Nlc3NRdWlya3MoKS5maW5kKHRvcEZyYW1lRG9tYWluKTsKICAgICBpZiAoaXQg
IT0gc3RvcmFnZUFjY2Vzc1F1aXJrcygpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggYjQxYWM0
MGUzNTE3N2MwYzIyYzVjMDM3ODQzNzIzOGM1ZTFiYjczNS4uMjk3ZjYzMjU2Y2JlMWZmMWIyMWFh
MTY1MWNhZTIzMzY1NWI3ZjgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0yMTYsOCArMjE2LDggQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPj4mIHN0b3JhZ2VBY2Nlc3NRdWlya3MoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgYm9vbCBjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJp
b3JVc2VySW50ZXJhY3Rpb24oY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPj4gbG9naW5Eb21haW5zRm9yRmlyc3RQYXJ0eShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhblJlcXVlc3RT
dG9yYWdlQWNjZXNzRm9yTG9naW5PckNvbXBhdGliaWxpdHlQdXJwb3Nlc1dpdGhvdXRQcmlvclVz
ZXJJbnRlcmFjdGlvbihjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+PiBzdWJSZXNvdXJjZURvbWFpbnNJbk5lZWRPZlN0b3JhZ2VBY2Nlc3NGb3JG
aXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgbG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFpbihjb25zdCBUb3BG
cmFtZURvbWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZ2lzdHJhYmxlRG9tYWluIG1hcFRvVG9wRG9tYWluKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPFJlZ2lzdHJh
YmxlRG9tYWluPiBmaW5kQWRkaXRpb25hbExvZ2luRG9tYWluKGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgY29uc3QgU3ViUmVzb3VyY2VEb21haW4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDk3ZmRiNGNkMGNiOTJiMWE1
MDllNWViMDY0NTQxYThlNTM0NjA3MTIuLmYyZGRjODlkZjIxZDBhYjU0MmRkZmEzYjlmOTU5NjU2
ZmNmNTBhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcApAQCAtMTM5NSw3ICsxMzk1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYgc3UKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0dXMuZmlyc3QgPT0g
QWRkZWRSZWNvcmQ6Ok5vKTsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBpZiAoIU5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2Vz
V2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFp
bikpCisgICAgICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0ZvckxvZ2luT3JDb21wYXRpYmlsaXR5UHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50
ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSkKICAgICAgICAgICAgIEFT
U0VSVChoYXNIYWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIE9wZXJhdGluZ0RhdGVz
V2luZG93OjpMb25nKSk7CiAjZW5kaWYKICAgICAgICAgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlw
TGlzdChzdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNRdWVyeSwgSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4oeyB0b3BGcmFtZURvbWFpbiB9KSwgKnN1YkZyYW1lU3RhdHVzLnNlY29u
ZCk7CkBAIC0xNDIyLDcgKzE0MjIsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbQogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVChzdWJGcmFtZVN0YXR1cy5maXJzdCA9PSBBZGRlZFJlY29yZDo6
Tm8pOwogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJpb3JV
c2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSkKKyAgICAgICAg
aWYgKCFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9n
aW5PckNvbXBhdGliaWxpdHlQdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJG
cmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKQogICAgICAgICAgICAgQVNTRVJUKGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6Okxvbmcp
KTsKICNlbmRpZgogICAgICAgICBBU1NFUlQoaGFzVXNlckdyYW50ZWRTdG9yYWdlQWNjZXNzVGhy
b3VnaFByb21wdCgqc3ViRnJhbWVTdGF0dXMuc2Vjb25kLCB0b3BGcmFtZURvbWFpbikgPT0gU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpZZXMpOwpAQCAtMjExMiw3ICsyMTEyLDcgQEAgQ29v
a2llQWNjZXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVBY2Nl
c3MoY29uc3QgU3ViUmVzb3VyY2UKICAgICBpZiAoIWFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxv
Y2tlZFVuZGVyKHRvcEZyYW1lRG9tYWluKSAmJiAhaXNQcmV2YWxlbnQpCiAgICAgICAgIHJldHVy
biBDb29raWVBY2Nlc3M6OkJhc2VkT25Db29raWVQb2xpY3k7CiAKLSAgICBpZiAoIU5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0
aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YnJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFp
bikgJiYgIWhhZFVzZXJJbnRlcmFjdGlvbikKKyAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvc2Vz
V2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YnJlc291cmNlRG9tYWluLCB0b3BGcmFtZURv
bWFpbikgJiYgIWhhZFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgcmV0dXJuIENvb2tpZUFjY2Vz
czo6Q2Fubm90UmVxdWVzdDsKIAogICAgIHJldHVybiBDb29raWVBY2Nlc3M6Ok9ubHlJZkdyYW50
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmlu
ZGV4IDI2Njc2ZTY4ZDU0N2IyMWFmNmNkZDRjNzg5YjRjM2I0ZGZlNTZmOTAuLmY0MDYwZWUyOGE1
YzQxOWIwYjY2MmIyNjZhZDkwMzhhYTUzNTIyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRXBoZW1lcmFs
KGNvbnN0IFJlZ2lzdHIKIHsKICAgICBBU1NFUlQoaXNFcGhlbWVyYWwoKSk7CiAKLSAgICBpZiAo
IW1fbmV0d29ya1Nlc3Npb24gfHwgKCFtX2RvbWFpbnNXaXRoRXBoZW1lcmFsVXNlckludGVyYWN0
aW9uLmNvbnRhaW5zKHN1YkZyYW1lRG9tYWluKSAmJiAhTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
YW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50
ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSkpCisgICAgaWYgKCFtX25l
dHdvcmtTZXNzaW9uIHx8ICghbV9kb21haW5zV2l0aEVwaGVtZXJhbFVzZXJJbnRlcmFjdGlvbi5j
b250YWlucyhzdWJGcmFtZURvbWFpbikgJiYgIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVx
dWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvc2VzV2l0aG91dFBy
aW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbikpKQogICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6
Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIHNjb3BlLCB0b3BGcmFtZURvbWFp
biwgc3ViRnJhbWVEb21haW4gfSk7CiAKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiByZXF1ZXN0Q29uZmlybWF0aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4sIGZy
YW1lSUQsIHdlYlBhZ2VJRCwgc2NvcGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgbXV0YWJsZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2ZTBjZjJlN2RmYzAwZjg2
ZmI3OTQzM2M0YmYxMTZkM2UxY2JjZGY5Li5hYzk0MWMzOTdiMTg3NjliNDE3ZjMxZmFjNjBiYjhj
MTQ2NzdiNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTU1NzIsNyArNTU3MiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShGcmFt
ZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBXZWJQYQogI2VuZGlmCiAgICAg
fTsKIAotICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5p
dGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50
aWZpZXIpOworICAgIFJlZlB0cjxBUEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24+IHVzZXJJbml0aWF0
ZWRBY3Rpdml0eTsKKyAgICAKKyAgICAvLyBXZWJLaXQgY2FuY2VscyB0aGUgb3JpZ2luYWwgZ2Vz
dHVyZSB0byBvcGVuIHRoZSBCQkMgcmFkaW8gcGxheWVyIHNvCisgICAgLy8gd2UgY2FuIGNhbGwg
dGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBmaXJzdC4gV2hlbiB3ZSByZS1pbml0aWF0ZSB0aGUgb3Bl
biwKKyAgICAvLyB3ZSBzaG91bGQgbWFrZSBzdXJlIHRoZSBjbGllbnQga25vd3MgdGhhdCB0aGlz
IHdhcyB1c2VyIGluaXRpYXRlZCBzbyBpdAorICAgIC8vIGRvZXMgbm90IGJsb2NrIHRoZSBwb3B1
cC4KKyAgICBpZiAocmVxdWVzdC51cmwoKS5zdHJpbmcoKSA9PSBRdWlya3M6OnN0YXRpY1JhZGlv
UGxheWVyVVJMU3RyaW5nKCkpCisgICAgICAgIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IEFQSTo6
VXNlckluaXRpYXRlZEFjdGlvbjo6Y3JlYXRlKCk7CisgICAgZWxzZQorICAgICAgICB1c2VySW5p
dGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0
aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CisKICAgICBib29sIHNo
b3VsZE9wZW5BcHBMaW5rcyA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvLT5yZXF1ZXN0KCkudXJsKCku
aG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwogICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlv
biA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lSW5mby5wdHIoKSwgbnVsbHB0ciwgV1RGOjpudWxsb3B0
LCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVz
ZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416522</attachid>
            <date>2020-12-18 09:09:05 -0800</date>
            <delta_ts>2020-12-21 12:33:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219949-20201218090904.patch</filename>
            <type>text/plain</type>
            <size>26192</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MDFhYWY4OTQyMWJm
N2I1YzE0YjU4MDI0YTJmYjE1ZjIyZmM3My4uMDM0M2QzYzEwMTc2YjJkYjczMDYyNTNlOTdhN2Nl
YzdiODZkZDlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbm5vdCBz
ZWUgJ0FkZCB0byBteSBzdGF0aW9ucycgYnV0dG9uIGluIEJCQyBXb3JsZCBzZXJ2aWNlIFJhZGlv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzE5NTMyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSB0ZW1wb3JhcnkgcXVpcmsgdG8g
YXNzaXN0IGEgaGlnaC10cmFmZmljIHdlYnNpdGUgd2hpbGUgdGhleQorICAgICAgICBjb21wbGV0
ZSB0aGUgbGFyZ2UgdGFzayBvZiBtaWdyYXRpbmcgYXdheSBmcm9tIHNpdGUgY29tcGF0aWJpbGl0
eSB1c2luZworICAgICAgICB0aGlyZCBwYXJ0eSBjb29raWVzLiBUaGlzIHF1aXJrIHdpbGwgYmUg
cmVtb3ZlZCB3aGVuIHRoZSBzaXRlIGlzCisgICAgICAgIHVwZGF0ZWQuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBzaXRlLXNwZWNpZmljIHF1aXJrLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJr
IHRoYXQgd2lsbCBjYWxsIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgb24gYmVoYWxmIG9mCisgICAg
ICAgIEJCQyBmb3IgcmFkaW9wbGF5ZXIuY28udWsgdW5kZXIgYmJjLmNvLnVrLiBXaGVuIHRoZSB1
c2VyIGNsaWNrcyB0byBvcGVuCisgICAgICAgIHRoZSByYWRpbyBwbGF5ZXIgcG9wLXVwLCBzdG9y
YWdlIGFjY2VzcyBpcyByZXF1ZXN0ZWQuIElmIHRoZSB1c2VyIGdyYW50cworICAgICAgICBwZXJt
aXNzaW9uLCB0aGVuIHdlIG9wZW4gdGhlIHBvcC11cCB0byBzdGF0aWMucmFkaW9wbGF5ZXIuY28u
dWsgdG8gZ2V0CisgICAgICAgIGZpcnN0IHBhcnR5IHN0YXR1cywgdGhlbiBpbW1lZGlhdGVseSBy
ZWRpcmVjdCB0byB0aGUgcmFkaW8gcGxheWVyIHBhZ2UuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Vz
IHRoZSBsYW5ndWFnZSBvZiB0aGUgc2l0ZS1zcGVjaWZpYyBxdWlyayBjb2RlIGluCisgICAgICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBub3cgdGhhdCB3ZSBhcmUgY3JlYXRpbmcgcXVpcmtzIGZv
ciBpbnN0YW5jZXMKKyAgICAgICAgb3RoZXIgdGhhbiBsb2dpbiBjYXNlcy4KKworICAgICAgICAq
IGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6cmVzcG9uc2VSZWNlaXZlZCk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcGVuKToKKyAgICAgICAgRXZlbiBpZiBXZWJL
aXQgY2FuY2VscyB0aGUgcG9wLXVwIGNsaWNrIGluIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVu
dCwKKyAgICAgICAgdGhlIHBvcHVwIHN0aWxsIGFwcGVhcnMuIFNvIHdlIHNob3VsZCBjaGVjayBo
ZXJlIGlmIHRoZSBwb3AtdXAgaXMgdHJ5aW5nCisgICAgICAgIHRvIGxvYWQgYmVmb3JlIHN0b3Jh
Z2UgYWNjZXNzIGhhcyBiZWVuIGdyYW50ZWQuIElmIHNvLCB3ZSBzaG91bGQgY2FuY2VsIGl0Cisg
ICAgICAgIGFuZCB3YWl0IGZvciB0aGUgcXVpcmsgdG8gcmUtb3BlbiB0aGUgcG9wLXVwIGFmdGVy
IHByb21wdGluZyB0aGUgdXNlci4KKyAgICAgICAgQWxzbyBhZGRzIGEgbnVsbCBmcmFtZSBjaGVj
ay4KKworICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzQkJD
RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQkJDUG9wT3V0UGxheWVyRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsgY29u
c3QpOgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmg6CisgICAgICAgIFRoaXMgaXMgd2hlcmUgd2Ug
Y2hlY2sgaWYgdGhlIHBvcC11cCBidXR0b24gaGFzIGJlZW4gY2xpY2tlZCBhbmQKKyAgICAgICAg
cHJvbXB0IGZvciBzdG9yYWdlIGFjY2VzcyBpZiBuZWVkZWQuIElmIHRoZSB1c2VyIGdyYW50cyBz
dG9yYWdlCisgICAgICAgIGFjY2Vzcywgd2Ugc2hvdWxkIG9wZW4gYSBwb3B1cCB0byBzdGF0aWMu
cmFkaW9wbGF5ZXIuY28udWsgc28gaXQKKyAgICAgICAgZ2V0cyBtYXJrZWQgYXMgZmlyc3QgcGFy
dHksIHRoZW4gaW5qZWN0IHNjcmlwdCB0byByZWRpcmVjdCB0byB0aGUKKyAgICAgICAgY29ycmVj
dCBCQkMgcmFkaW8gcGxheWVyIHBhZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0b3JhZ2VBY2Nlc3NRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3ViRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5Q
dXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluRm9yRmlyc3RQYXJ0eSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaDoKKyAgICAgICAgQ2hhbmdlIHdvcmRpbmcgbm93IHRoYXQgcXVpcmtzIGFyZSBub3Qgb25s
eSBiZWluZyB1c2VkIGZvciBsb2dpbgorICAgICAgICBmbG93cy4KKwogMjAyMC0xMi0xNyAgRnVq
aWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2Vd
IFVuaWZ5IFdlYkdMIHNvdXJjZSBmaWxlcyBpbnRvIHRoZSBjb21tb24gV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBjYjJmOGRiMWUwOGJjZjlhMTA4MWY0Mzc5Zjg3Yjk0NjZjZjIz
NmMyLi44MThkOTJkMDg2ZjU1MThmMWQxNzY4ZGU5YzM1NWE0NDQ2NDZmMzU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM2IEBACisyMDIwLTEyLTE2ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVu
ZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbm5vdCBzZWUgJ0FkZCB0byBteSBzdGF0aW9ucycg
YnV0dG9uIGluIEJCQyBXb3JsZCBzZXJ2aWNlIFJhZGlvCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMzE5NTMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgaXMgYSB0ZW1wb3JhcnkgcXVpcmsgdG8gYXNzaXN0IGEgaGlnaC10cmFmZmljIHdl
YnNpdGUgd2hpbGUgdGhleQorICAgICAgICBjb21wbGV0ZSB0aGUgbGFyZ2UgdGFzayBvZiBtaWdy
YXRpbmcgYXdheSBmcm9tIHNpdGUgY29tcGF0aWJpbGl0eSB1c2luZworICAgICAgICB0aGlyZCBw
YXJ0eSBjb29raWVzLiBUaGlzIHF1aXJrIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHRoZSBzaXRlIGlz
CisgICAgICAgIHVwZGF0ZWQuCisKKyAgICAgICAgQ3JlYXRlIGEgcXVpcmsgdGhhdCB3aWxsIGNh
bGwgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBvbiBiZWhhbGYgb2YKKyAgICAgICAgQkJDIGZvciBy
YWRpb3BsYXllci5jby51ayB1bmRlciBiYmMuY28udWsuIFdoZW4gdGhlIHVzZXIgY2xpY2tzIHRv
IG9wZW4KKyAgICAgICAgdGhlIHJhZGlvIHBsYXllciBwb3AtdXAsIHN0b3JhZ2UgYWNjZXNzIGlz
IHJlcXVlc3RlZC4gSWYgdGhlIHVzZXIgZ3JhbnRzCisgICAgICAgIHBlcm1pc3Npb24sIHRoZW4g
d2Ugb3BlbiB0aGUgcG9wLXVwIHRvIHN0YXRpYy5yYWRpb3BsYXllci5jby51ayB0byBnZXQKKyAg
ICAgICAgZmlyc3QgcGFydHkgc3RhdHVzLCB0aGVuIGltbWVkaWF0ZWx5IHJlZGlyZWN0IHRvIHRo
ZSByYWRpbyBwbGF5ZXIgcGFnZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzRXBoZW1lcmFsKToKKyAgICAgICAgQ2hhbmdlIHdvcmRpbmcgbm93
IHRoYXQgcXVpcmtzIGFyZSBub3Qgb25seSBiZWluZyB1c2VkIGZvciBsb2dpbgorICAgICAgICBm
bG93cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UpOgorICAgICAgICBNYXJrIHRoZSBx
dWlyay1pbml0aWF0ZWQgcG9wLXVwIGFzIHVzZXItaW5pdGlhdGVkIHNvIGl0IGRvZXNuJ3QgZ2V0
CisgICAgICAgIGJsb2NrZWQuCisKIDIwMjAtMTItMTcgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWJNIGZvcm1hdCByZWFkZXIgZG9l
c24ndCB3b3JrIHdpdGggYSB1cmwgaW4gYSA8c291cmNlPiBlbGVtZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBkYTg1MjVhYWE1OTBlZWIzYWE4ODQ0OGJj
ZjJiZDk3MWQ1NTkxNzM1Li5hMTZiODc0ODFiM2NlYTNmNDk5NGZkYjFiYTQwYzY3Nzk1YmU4NTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTgwNSw3ICs4
MDUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291
cmNlJiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQogICAgICAgICBhdXRvJiBkb2N1bWVudCA9
ICptX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoUXVpcmtzOjppc01pY3Jvc29mdFRl
YW1zUmVkaXJlY3RVUkwocmVzcG9uc2UudXJsKCkpKSB7CiAgICAgICAgICAgICBhdXRvIGZpcnN0
UGFydHlEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihyZXNwb25zZS51cmwoKSk7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbnMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2lu
RG9tYWluc0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKKyAgICAgICAgICAgIGlm
IChhdXRvIGxvZ2luRG9tYWlucyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3ViUmVzb3VyY2VE
b21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eShmaXJzdFBhcnR5RG9tYWlu
KSkgewogICAgICAgICAgICAgICAgIGlmICghUXVpcmtzOjpoYXNTdG9yYWdlQWNjZXNzRm9yQWxs
TG9naW5Eb21haW5zKCpsb2dpbkRvbWFpbnMsIGZpcnN0UGFydHlEb21haW4pKSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZVJlZGly
ZWN0KGRvY3VtZW50LCAwLCBtaWNyb3NvZnRUZWFtc1JlZGlyZWN0VVJMKCkpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNTdkZWYz
MGUwZDVmNzdiZmE2Yjc4OWQ1ZmViZDQ2NjNkNTE4MzllYy4uYTYzOTQ5YjczZDZhZGM2ZGNlN2Y1
YjEwYmQzMDc4ODMwNDJlMzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMjUw
MSw2ICsyNTAxLDE1IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3Jl
YXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAKIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxXaW5kb3dQcm94eT4+IERPTVdpbmRvdzo6b3BlbihET01XaW5kb3cmIGFjdGl2ZVdpbmRv
dywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmdUb09wZW4s
IGNvbnN0IEF0b21TdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgU3RyaW5nJiB3aW5kb3dGZWF0dXJl
c1N0cmluZykKIHsKKyAgICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7
CisgICAgICAgIGlmIChkb2N1bWVudC0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJr
cygpICYmIHVybFN0cmluZ1RvT3BlbiA9PSBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5n
KCkpIHsKKyAgICAgICAgICAgIGF1dG8gcmFkaW9QbGF5ZXJEb21haW4gPSBSZWdpc3RyYWJsZURv
bWFpbihVUkwoVVJMKCksIFF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkpOwor
ICAgICAgICAgICAgYXV0byBCQkNEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihVUkwoVVJMKCks
IFF1aXJrczo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkpOworICAgICAgICAgICAgaWYgKCFS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyhy
YWRpb1BsYXllckRvbWFpbiwgQkJDRG9tYWluKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVm
UHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIgfTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlm
ICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiBSZWZQdHI8
V2luZG93UHJveHk+IHsgbnVsbHB0ciB9OwogCkBAIC0yNTI4LDYgKzI1MzcsOSBAQCBFeGNlcHRp
b25PcjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9NV2luZG93JiBhY3Rp
dmVXaW5kb3csIERPTVdpbgogI2VuZGlmCiAKICAgICBhdXRvKiBmcmFtZSA9IHRoaXMtPmZyYW1l
KCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIFJlZlB0cjxXaW5kb3dQcm94eT4g
eyBudWxscHRyIH07CisKICAgICBpZiAoIWZpcnN0V2luZG93LmFsbG93UG9wVXAoKSkgewogICAg
ICAgICAvLyBCZWNhdXNlIEZyYW1lVHJlZTo6ZmluZEZyYW1lRm9yTmF2aWdhdGlvbigpIHJldHVy
bnMgdHJ1ZSBmb3IgZW1wdHkgc3RyaW5ncywgd2UgbXVzdCBjaGVjayBmb3IgZW1wdHkgZnJhbWUg
bmFtZXMuCiAgICAgICAgIC8vIE90aGVyd2lzZSwgaWxsZWdpdGltYXRlIHdpbmRvdy5vcGVuKCkg
Y2FsbHMgd2l0aCBubyBuYW1lIHdpbGwgcGFzcyByaWdodCB0aHJvdWdoIHRoZSBwb3B1cCBibG9j
a2VyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IDU0ZTZkZTAzNjJmM2MwNDA2ODBmMGE2NzA4
MmE1MjdkOWRlYmU4NTMuLjE4YmRjYTU4YTgyNmVlZWQ5YzJmYzcwMzI4N2M2MzA3NjFmOWVhYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTEwMDIsNiArMTAwMiwzMiBAQCBib29sIFF1aXJr
czo6aGFzU3RvcmFnZUFjY2Vzc0ZvckFsbExvZ2luRG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lz
dHJhYmxlRG9tYWluPgogICAgIHJldHVybiB0cnVlOwogfQogCitjb25zdCBTdHJpbmcmIFF1aXJr
czo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IEJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nID0gImh0dHBzOi8vd3d3LmJiYy5jby51
ay9zb3VuZHMvcGxheWVyL2JiY193b3JsZF9zZXJ2aWNlIl9zOworICAgIHJldHVybiBCQkNSYWRp
b1BsYXllclVSTFN0cmluZzsKK30KKworY29uc3QgU3RyaW5nJiBRdWlya3M6OnN0YXRpY1JhZGlv
UGxheWVyVVJMU3RyaW5nKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBz
dGF0aWNSYWRpb1BsYXllclVSTFN0cmluZyA9ICJodHRwczovL3N0YXRpYy5yYWRpb3BsYXllci5j
by51ay8iX3M7CisgICAgcmV0dXJuIHN0YXRpY1JhZGlvUGxheWVyVVJMU3RyaW5nOworfQorCitz
dGF0aWMgYm9vbCBpc0JCQ0RvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWdpc3RyYWJsZURvbWFpbj4gQkJDRG9tYWlu
ID0gUmVnaXN0cmFibGVEb21haW4oVVJMKFVSTCgpLCBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJM
U3RyaW5nKCkpKTsKKyAgICByZXR1cm4gZG9tYWluID09IEJCQ0RvbWFpbjsKK30KKworc3RhdGlj
IGJvb2wgaXNCQkNQb3BVcFBsYXllckVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKK3sK
KyAgICBpZiAoIWVsZW1lbnQucGFyZW50RWxlbWVudCgpIHx8ICFlbGVtZW50LnBhcmVudEVsZW1l
bnQoKS0+aGFzQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGVs
ZW1lbnQucGFyZW50RWxlbWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoInBfYXVkaW9CdXR0
b25fYnV0dG9uSW5uZXIiKSB8fCBlbGVtZW50LnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygp
LmNvbnRhaW5zKCJhdWRpb0J1dHRvbiIpOworfQorCiAjZW5kaWYKIAogUXVpcmtzOjpTdG9yYWdl
QWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVudCwg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWlsLCBFbGVtZW50KiByZWxhdGVk
VGFyZ2V0KSBjb25zdApAQCAtMTAzNyw2ICsxMDYzLDggQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNz
UmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQm
IGUKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4ga2luamFMb2dpblVzZXJT
Y3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlckxvZ2luRm9ybSgpIHsgbGV0IGVsZW1lbnRzID0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnanNfaGVhZGVyLXVzZXJidXR0b24nKTsgaWYg
KGVsZW1lbnRzICYmIGVsZW1lbnRzWzBdKSB7IGVsZW1lbnRzWzBdLmNsaWNrKCk7IGNsZWFySW50
ZXJ2YWwoaW50ZXJ2YWwpOyB9IH0gbGV0IGludGVydmFsID0gc2V0SW50ZXJ2YWwodHJpZ2dlckxv
Z2luRm9ybSwgMjAwKTsiLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBV
c2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2FpdEZvck5v
dGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVzIH07CiAKICAgICBpZiAoZXZlbnRUeXBlID09
ICJjbGljayIpIHsKKyAgICAgICAgaWYgKCFtX2RvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJu
IFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CiAKICAg
ICAgICAgLy8gRW1iZWRkZWQgWW91VHViZSBjYXNlLgogICAgICAgICBpZiAoZWxlbWVudC5oYXND
bGFzcygpICYmIGRvbWFpbiA9PSB5b3VUdWJlRG9tYWluICYmICFtX2RvY3VtZW50LT5pc1RvcERv
Y3VtZW50KCkgJiYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0hhZFVzZXJJbnRl
cmFjdGlvbih5b3VUdWJlRG9tYWluKSkgewpAQCAtMTA3OSw3ICsxMTA3LDcgQEAgUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1
aXJrKEVsZW1lbnQmIGUKICAgICAgICAgLy8gRklYTUUoMjE4Nzc5KTogUmVtb3ZlIHRoaXMgcXVp
cmsgb25jZSBtaWNyb3NvZnQuY29tIGNvbXBsZXRlcyB0aGVpciBsb2dpbiBmbG93IHJlZGVzaWdu
LgogICAgICAgICBpZiAoaXNNaWNyb3NvZnREb21haW4oZG9tYWluKSAmJiBpc01pY3Jvc29mdExv
Z2luRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byBmaXJzdFBhcnR5RG9tYWlu
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXBUb1RvcERvbWFpbihSZWdpc3RyYWJsZURvbWFp
bjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QobV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpLmhvc3QoKSkpOwotICAgICAgICAgICAgaWYgKGF1dG8gbG9naW5Eb21haW5z
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbnNGb3JGaXJzdFBhcnR5KGZpcnN0
UGFydHlEb21haW4pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbnMgPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vz
c0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKICAgICAgICAgICAgICAgICBpZiAo
IWhhc1N0b3JhZ2VBY2Nlc3NGb3JBbGxMb2dpbkRvbWFpbnMoKmxvZ2luRG9tYWlucywgZmlyc3RQ
YXJ0eURvbWFpbikpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpbkRvbWFpbiA9IFJl
Z2lzdHJhYmxlRG9tYWluKCpsb2dpbkRvbWFpbnMudmFsdWUoKS5iZWdpbigpLmdldCgpKTsKICAg
ICAgICAgICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzc0Zvck5vbkRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQsIFdURk1vdmUobG9naW5Eb21haW4p
LCBbZmlyc3RQYXJ0eURvbWFpbiwgbG9naW5Eb21haW4sICZlbGVtZW50LCBwbGF0Zm9ybUV2ZW50
LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdldF0oU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgc3RvcmFnZUFjY2Vzc0dyYW50ZWQpIG11dGFibGUgewpAQCAtMTEwMCw3ICsxMTI4LDcgQEAg
UXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFn
ZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
Z2lzdHJhYmxlRG9tYWluPiBwbGF5U3RhdGlvbkRvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInBsYXlzdGF0aW9uLmNv
bSJfcyk7CiAgICAgICAgIGlmIChkb21haW4gPT0gcGxheVN0YXRpb25Eb21haW4gJiYgaXNQbGF5
c3RhdGlvbkxvZ2luRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byBmaXJzdFBh
cnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW4obV9kb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51
cmwoKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbnMgPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmxvZ2luRG9tYWluc0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIGxvZ2luRG9tYWlucyA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzRm9yRmlyc3RQYXJ0eShm
aXJzdFBhcnR5RG9tYWluKSkgewogICAgICAgICAgICAgICAgIGlmICghaGFzU3RvcmFnZUFjY2Vz
c0ZvckFsbExvZ2luRG9tYWlucygqbG9naW5Eb21haW5zLCBmaXJzdFBhcnR5RG9tYWluKSkgewog
ICAgICAgICAgICAgICAgICAgICAvLyBTZW5kIG9ubHkgb25lIGxvZ2luIGRvbWFpbiB0byBhdm9p
ZCBjaGFuZ2luZyBleGlzdGluZyBTdG9yYWdlIEFjY2VzcyBjb2RlLCB3aGljaCBjYW4gb25seSBo
YW5kbGUgYSBzaW5nbGUgZG9tYWluLgogICAgICAgICAgICAgICAgICAgICAvLyBXZSB3aWxsIG1h
dGNoIFNvbnkgbG9naW4gZG9tYWlucyB1cCB3aGVuIHByb21wdGluZyB0aGUgdXNlciBhbmQgc3Rv
cmluZyB0aGUgZG9tYWlucy4KQEAgLTExMTcsNiArMTE0NSw0MSBAQCBRdWlya3M6OlN0b3JhZ2VB
Y2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoRWxl
bWVudCYgZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFn
ZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CiAgICAgICAgIH0KKworICAgICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBCQkNSYWRpb1BsYXllclBvcFVwV2luZG93
RmVhdHVyZVN0cmluZyA9ICJmZWF0dXJlc3RyaW5nIHdpZHRoPTQwMCxoZWlnaHQ9NzMwIl9zOwor
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4gQkJDVXNlclNjcmlwdCB7
ICJmdW5jdGlvbiB0cmlnZ2VyUmVkaXJlY3QoKSB7IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBc
Imh0dHBzOi8vd3d3LmJiYy5jby51ay9zb3VuZHMvcGxheWVyL2JiY193b3JsZF9zZXJ2aWNlXCI7
IH0gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7IHRyaWdnZXJS
ZWRpcmVjdCgpOyB9KSIsIFVSTChhYm91dEJsYW5rVVJMKCkpLCBWZWN0b3I8U3RyaW5nPigpLCBW
ZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6RG9jdW1lbnRFbmQsIFVz
ZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVPbmx5LCBXYWl0Rm9yTm90
aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgfTsKKworICAgICAgICAvLyBCQkMgUmFkaW9Q
bGF5ZXIgY2FzZS4KKyAgICAgICAgaWYgKGlzQkJDRG9tYWluKGRvbWFpbikgJiYgaXNCQkNQb3BV
cFBsYXllckVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmlyc3RQYXJ0eURv
bWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKG1fZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCkp
OworICAgICAgICAgICAgaWYgKGF1dG8gc3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdWJSZXNvdXJjZURvbWFpbnNJbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KGZpcnN0UGFydHlEb21haW4pKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFoYXNTdG9yYWdlQWNjZXNzRm9yQWxsTG9naW5Eb21haW5zKCpzdWJSZXNv
dXJjZURvbWFpbnNJbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIGZpcnN0UGFydHlEb21haW4pKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gc3ViUmVzb3VyY2VEb21haW4gPSBSZWdpc3RyYWJsZURv
bWFpbigqc3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnZhbHVlKCkuYmVn
aW4oKS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBXVEZN
b3ZlKHN1YlJlc291cmNlRG9tYWluKSwgW2RvY3VtZW50ID0gbV9kb2N1bWVudCwgZmlyc3RQYXJ0
eURvbWFpbiwgc3ViUmVzb3VyY2VEb21haW5dKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHN0b3Jh
Z2VBY2Nlc3NHcmFudGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChz
dG9yYWdlQWNjZXNzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
LnNldERvbWFpbnNXaXRoQ3Jvc3NQYWdlU3RvcmFnZUFjY2Vzcyh7eyBmaXJzdFBhcnR5RG9tYWlu
LCBzdWJSZXNvdXJjZURvbWFpbiB9fSwgW2RvY3VtZW50ID0gV1RGTW92ZShkb2N1bWVudCldIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBkb21XaW5kb3cgPSBkb2N1bWVu
dC0+ZG9tV2luZG93KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb21X
aW5kb3cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbk9y
PFJlZlB0cjxXaW5kb3dQcm94eT4+IHByb3h5T3JFeGNlcHRpb24gPSBkb21XaW5kb3ctPm9wZW4o
KmRvbVdpbmRvdywgKmRvbVdpbmRvdywgc3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSwgZW1w
dHlTdHJpbmcoKSwgQkJDUmFkaW9QbGF5ZXJQb3BVcFdpbmRvd0ZlYXR1cmVTdHJpbmcpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3h5T3JFeGNlcHRpb24uaGFz
RXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwcm94eSA9IHBy
b3h5T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvKiBhYnN0cmFjdEZyYW1lID0gcHJveHktPmZyYW1lKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJzdHJhY3RGcmFtZSAmJiBp
czxGcmFtZT4oKmFic3RyYWN0RnJhbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byYgZnJhbWUgPSBkb3duY2FzdDxGcmFtZT4oKmFic3RyYWN0RnJhbWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gd29ybGQgPSBT
Y3JpcHRDb250cm9sbGVyOjpjcmVhdGVXb3JsZCgiYmJjUmFkaW9QbGF5ZXJXb3JsZCIsIFNjcmlw
dENvbnRyb2xsZXI6OldvcmxkVHlwZTo6VXNlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWUuYWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdv
cmxkLmdldCgpLCBCQkNVc2VyU2NyaXB0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6
OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90
Q2FuY2VsRXZlbnQ7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShl
bGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCmluZGV4IDUxMTFhYjhkZWUyYWYxMzk5ZWRkMDcyOGM5
ZjAwZWE1OTNhN2VhY2UuLjRjNzU2NTFkMjUwOTljMTgwNzRlNjY4MThkZDQ5OWUyMWExMjNlNTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9RdWlya3MuaApAQCAtMTI1LDYgKzEyNSw4IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHN0YXRpYyBib29sIGlzTWljcm9zb2Z0
VGVhbXNSZWRpcmVjdFVSTChjb25zdCBVUkwmKTsKICAgICBzdGF0aWMgYm9vbCBoYXNTdG9yYWdl
QWNjZXNzRm9yQWxsTG9naW5Eb21haW5zKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
JiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiBC
QkNSYWRpb1BsYXllclVSTFN0cmluZygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25z
dCBTdHJpbmcmIHN0YXRpY1JhZGlvUGxheWVyVVJMU3RyaW5nKCk7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCBmNTcyZGVjMzI3MDdkOThjMTBmOWQ3NWUwZDkyN2Yx
OTljZGI0ZTE3Li42Mzg0ZjdmMDc0MDM5NWY0Yzk3NTBiNmMzMjExMmIxYzIxZjMxMTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwCkBAIC0zOTAsNiArMzkwLDggQEAgSGFzaE1hcDxSZWdpc3RyYWJsZURv
bWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+JiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnMKICAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJv
bVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJwbGF5c3RhdGlvbi5jb20iKSwgSGFzaFNldCB7CiAg
ICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJh
YmxlRG9tYWluU3RyaW5nKCJzb255ZW50ZXJ0YWlubWVudG5ldHdvcmsuY29tIl9zKSwKICAgICAg
ICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVE
b21haW5TdHJpbmcoInNvbnkuY29tIl9zKSB9KTsKKyAgICAgICAgbWFwLmFkZChSZWdpc3RyYWJs
ZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJiYmMu
Y28udWsiKSwgSGFzaFNldCB7CisgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJyYWRpb3BsYXllci5jby51ayJf
cykgfSk7CiAgICAgICAgIHJldHVybiBtYXA7CiAgICAgfSgpOwogICAgIHJldHVybiBtYXAuZ2V0
KCk7CkBAIC0zOTcsMTYgKzM5OSwxNiBAQCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBIYXNo
U2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cwogCiBib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGluZ0RvbWFp
bihjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNvbnN0IFN1YlJlc291cmNl
RG9tYWluJiByZXNvdXJjZURvbWFpbikKIHsKLSAgICBhdXRvIGxvZ2luRG9tYWlucyA9IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5zRm9yRmlyc3RQYXJ0eSh0b3BG
cmFtZURvbWFpbik7CisgICAgYXV0byBsb2dpbkRvbWFpbnMgPSBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZp
cnN0UGFydHkodG9wRnJhbWVEb21haW4pOwogICAgIHJldHVybiBsb2dpbkRvbWFpbnMgJiYgbG9n
aW5Eb21haW5zLnZhbHVlKCkuY29udGFpbnMocmVzb3VyY2VEb21haW4pOwogfQogCi1ib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBv
c2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluKQorYm9v
bCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5P
ckNvbXBhdGliaWxpdHlQdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihjb25zdCBT
dWJSZXNvdXJjZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0
b3BGcmFtZURvbWFpbikKIHsKICAgICByZXR1cm4gbG9naW5Eb21haW5NYXRjaGVzUmVxdWVzdGlu
Z0RvbWFpbih0b3BGcmFtZURvbWFpbiwgcmVzb3VyY2VEb21haW4pOwogfQogCi1PcHRpb25hbDxI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRv
bWFpbnNGb3JGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
bikKK09wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFy
dHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluKQogewogICAgIGF1dG8g
aXQgPSBzdG9yYWdlQWNjZXNzUXVpcmtzKCkuZmluZCh0b3BGcmFtZURvbWFpbik7CiAgICAgaWYg
KGl0ICE9IHN0b3JhZ2VBY2Nlc3NRdWlya3MoKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IGI0
MWFjNDBlMzUxNzdjMGMyMmM1YzAzNzg0MzcyMzhjNWUxYmI3MzUuLjI5N2Y2MzI1NmNiZTFmZjFi
MjFhYTE2NTFjYWUyMzM2NTViN2Y4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtMjE2LDggKzIxNiw4
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4+JiBzdG9yYWdlQWNjZXNzUXVpcmtzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGJvb2wgY2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91
dFByaW9yVXNlckludGVyYWN0aW9uKGNvbnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8SGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4+IGxvZ2luRG9tYWluc0ZvckZpcnN0UGFydHkoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBjYW5SZXF1
ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luT3JDb21wYXRpYmlsaXR5UHVycG9zZXNXaXRob3V0UHJp
b3JVc2VySW50ZXJhY3Rpb24oY29uc3QgU3ViUmVzb3VyY2VEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPj4gc3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
Rm9yRmlyc3RQYXJ0eShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBib29sIGxvZ2luRG9tYWluTWF0Y2hlc1JlcXVlc3RpbmdEb21haW4oY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWdpc3RyYWJsZURvbWFpbiBtYXBUb1RvcERvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBPcHRpb25hbDxSZWdp
c3RyYWJsZURvbWFpbj4gZmluZEFkZGl0aW9uYWxMb2dpbkRvbWFpbihjb25zdCBUb3BGcmFtZURv
bWFpbiYsIGNvbnN0IFN1YlJlc291cmNlRG9tYWluJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA5N2ZkYjRjZDBjYjky
YjFhNTA5ZTVlYjA2NDU0MWE4ZTUzNDYwNzEyLi5mMmRkYzg5ZGYyMWQwYWI1NDJkZGZhM2I5Zjk1
OTY1NmZjZjUwYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTEzOTUsNyArMTM5NSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURv
bWFpbiYmIHN1CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKHN1YkZyYW1lU3RhdHVzLmZpcnN0
ID09IEFkZGVkUmVjb3JkOjpObyk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgaWYgKCFO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJw
b3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVE
b21haW4pKQorICAgICAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0
b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvc2VzV2l0aG91dFByaW9yVXNl
ckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbikpCiAgICAgICAgICAg
ICBBU1NFUlQoaGFzSGFkVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdE
YXRlc1dpbmRvdzo6TG9uZykpOwogI2VuZGlmCiAgICAgICAgIGluc2VydERvbWFpblJlbGF0aW9u
c2hpcExpc3Qoc3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zUXVlcnksIEhhc2hTZXQ8
UmVnaXN0cmFibGVEb21haW4+KHsgdG9wRnJhbWVEb21haW4gfSksICpzdWJGcmFtZVN0YXR1cy5z
ZWNvbmQpOwpAQCAtMTQyMiw3ICsxNDIyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb20KICAg
ICAgICAgfQogICAgICAgICBBU1NFUlQoc3ViRnJhbWVTdGF0dXMuZmlyc3QgPT0gQWRkZWRSZWNv
cmQ6Ok5vKTsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBpZiAoIU5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFBy
aW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbikpCisgICAg
ICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zv
ckxvZ2luT3JDb21wYXRpYmlsaXR5UHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24o
c3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSkKICAgICAgICAgICAgIEFTU0VSVChoYXNI
YWRVc2VySW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIE9wZXJhdGluZ0RhdGVzV2luZG93OjpM
b25nKSk7CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKGhhc1VzZXJHcmFudGVkU3RvcmFnZUFjY2Vz
c1Rocm91Z2hQcm9tcHQoKnN1YkZyYW1lU3RhdHVzLnNlY29uZCwgdG9wRnJhbWVEb21haW4pID09
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6WWVzKTsKQEAgLTIxMTIsNyArMjExMiw3IEBA
IENvb2tpZUFjY2VzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y29va2ll
QWNjZXNzKGNvbnN0IFN1YlJlc291cmNlCiAgICAgaWYgKCFhcmVBbGxUaGlyZFBhcnR5Q29va2ll
c0Jsb2NrZWRVbmRlcih0b3BGcmFtZURvbWFpbikgJiYgIWlzUHJldmFsZW50KQogICAgICAgICBy
ZXR1cm4gQ29va2llQWNjZXNzOjpCYXNlZE9uQ29va2llUG9saWN5OwogCi0gICAgaWYgKCFOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nl
c1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJyZXNvdXJjZURvbWFpbiwgdG9wRnJhbWVE
b21haW4pICYmICFoYWRVc2VySW50ZXJhY3Rpb24pCisgICAgaWYgKCFOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5PckNvbXBhdGliaWxpdHlQdXJw
b3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJyZXNvdXJjZURvbWFpbiwgdG9wRnJh
bWVEb21haW4pICYmICFoYWRVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBDb29raWVB
Y2Nlc3M6OkNhbm5vdFJlcXVlc3Q7CiAKICAgICByZXR1cm4gQ29va2llQWNjZXNzOjpPbmx5SWZH
cmFudGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAppbmRleCAyNjY3NmU2OGQ1NDdiMjFhZjZjZGQ0Yzc4OWI0YzNiNGRmZTU2ZjkwLi5mNDA2MGVl
MjhhNWM0MTliMGI2NjJiMjY2YWQ5MDM4YWE1MzUyMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0VwaGVt
ZXJhbChjb25zdCBSZWdpc3RyCiB7CiAgICAgQVNTRVJUKGlzRXBoZW1lcmFsKCkpOwogCi0gICAg
aWYgKCFtX25ldHdvcmtTZXNzaW9uIHx8ICghbV9kb21haW5zV2l0aEVwaGVtZXJhbFVzZXJJbnRl
cmFjdGlvbi5jb250YWlucyhzdWJGcmFtZURvbWFpbikgJiYgIU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpblB1cnBvc2VzV2l0aG91dFByaW9yVXNl
ckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbikpKQorICAgIGlmICgh
bV9uZXR3b3JrU2Vzc2lvbiB8fCAoIW1fZG9tYWluc1dpdGhFcGhlbWVyYWxVc2VySW50ZXJhY3Rp
b24uY29udGFpbnMoc3ViRnJhbWVEb21haW4pICYmICFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNh
blJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5PckNvbXBhdGliaWxpdHlQdXJwb3Nlc1dpdGhv
dXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKSkK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBzY29wZSwgdG9wRnJhbWVE
b21haW4sIHN1YkZyYW1lRG9tYWluIH0pOwogCiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4gcmVxdWVzdENvbmZpcm1hdGlvbkNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWlu
LCBmcmFtZUlELCB3ZWJQYWdlSUQsIHNjb3BlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIG11dGFibGUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNmUwY2YyZTdkZmMw
MGY4NmZiNzk0MzNjNGJmMTE2ZDNlMWNiY2RmOS4uYWM5NDFjMzk3YjE4NzY5YjQxN2YzMWZhYzYw
YmI4YzE0Njc3YjY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC01NTcyLDcgKzU1NzIsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2Uo
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgV2ViUGEKICNlbmRpZgog
ICAgIH07CiAKLSAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNl
ckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5J
ZGVudGlmaWVyKTsKKyAgICBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPiB1c2VySW5p
dGlhdGVkQWN0aXZpdHk7CisgICAgCisgICAgLy8gV2ViS2l0IGNhbmNlbHMgdGhlIG9yaWdpbmFs
IGdlc3R1cmUgdG8gb3BlbiB0aGUgQkJDIHJhZGlvIHBsYXllciBzbworICAgIC8vIHdlIGNhbiBj
YWxsIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgZmlyc3QuIFdoZW4gd2UgcmUtaW5pdGlhdGUgdGhl
IG9wZW4sCisgICAgLy8gd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGUgY2xpZW50IGtub3dzIHRoYXQg
dGhpcyB3YXMgdXNlciBpbml0aWF0ZWQgc28gaXQKKyAgICAvLyBkb2VzIG5vdCBibG9jayB0aGUg
cG9wdXAuCisgICAgaWYgKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkgPT0gUXVpcmtzOjpzdGF0aWNS
YWRpb1BsYXllclVSTFN0cmluZygpKQorICAgICAgICB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBB
UEk6OlVzZXJJbml0aWF0ZWRBY3Rpb246OmNyZWF0ZSgpOworICAgIGVsc2UKKyAgICAgICAgdXNl
ckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2
aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOworCiAgICAgYm9v
bCBzaG91bGRPcGVuQXBwTGlua3MgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mby0+cmVxdWVzdCgpLnVy
bCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKICAgICBhdXRvIG5hdmlnYXRpb25B
Y3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFtZUluZm8ucHRyKCksIG51bGxwdHIsIFdURjo6bnVs
bG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92
ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416620</attachid>
            <date>2020-12-21 12:33:08 -0800</date>
            <delta_ts>2020-12-22 11:45:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219949-20201221123307.patch</filename>
            <type>text/plain</type>
            <size>26229</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MDFhYWY4OTQyMWJm
N2I1YzE0YjU4MDI0YTJmYjE1ZjIyZmM3My4uNjgwZTExMTk0ZjVlMDVlNDMxNmU5OWJiZTE2MWIy
NzI2NGY4MThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTEyLTE2ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENhbm5vdCBz
ZWUgJ0FkZCB0byBteSBzdGF0aW9ucycgYnV0dG9uIGluIEJCQyBXb3JsZCBzZXJ2aWNlIFJhZGlv
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk5NDkK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzE5NTMyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBpcyBhIHRlbXBvcmFyeSBxdWlyayB0
byBhc3Npc3QgYSBoaWdoLXRyYWZmaWMgd2Vic2l0ZSB3aGlsZSB0aGV5CisgICAgICAgIGNvbXBs
ZXRlIHRoZSBsYXJnZSB0YXNrIG9mIG1pZ3JhdGluZyBhd2F5IGZyb20gc2l0ZSBjb21wYXRpYmls
aXR5IHVzaW5nCisgICAgICAgIHRoaXJkIHBhcnR5IGNvb2tpZXMuIFRoaXMgcXVpcmsgd2lsbCBi
ZSByZW1vdmVkIHdoZW4gdGhlIHNpdGUgaXMKKyAgICAgICAgdXBkYXRlZC4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIHNpdGUtc3BlY2lmaWMgcXVpcmsuCisKKyAgICAgICAgQ3JlYXRlIGEgcXVp
cmsgdGhhdCB3aWxsIGNhbGwgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBvbiBiZWhhbGYgb2YKKyAg
ICAgICAgQkJDIGZvciByYWRpb3BsYXllci5jby51ayB1bmRlciBiYmMuY28udWsuIFdoZW4gdGhl
IHVzZXIgY2xpY2tzIHRvIG9wZW4KKyAgICAgICAgdGhlIHJhZGlvIHBsYXllciBwb3AtdXAsIHN0
b3JhZ2UgYWNjZXNzIGlzIHJlcXVlc3RlZC4gSWYgdGhlIHVzZXIgZ3JhbnRzCisgICAgICAgIHBl
cm1pc3Npb24sIHRoZW4gd2Ugb3BlbiB0aGUgcG9wLXVwIHRvIHN0YXRpYy5yYWRpb3BsYXllci5j
by51ayB0byBnZXQKKyAgICAgICAgZmlyc3QgcGFydHkgc3RhdHVzLCB0aGVuIGltbWVkaWF0ZWx5
IHJlZGlyZWN0IHRvIHRoZSByYWRpbyBwbGF5ZXIgcGFnZS4KKworICAgICAgICBUaGlzIGNoYW5n
ZXMgdGhlIGxhbmd1YWdlIG9mIHRoZSBzaXRlLXNwZWNpZmljIHF1aXJrIGNvZGUgaW4KKyAgICAg
ICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIG5vdyB0aGF0IHdlIGFyZSBjcmVhdGluZyBxdWlya3Mg
Zm9yIGluc3RhbmNlcworICAgICAgICBvdGhlciB0aGFuIGxvZ2luIGNhc2VzLgorCisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW4pOgorICAgICAgICBFdmVuIGlmIFdl
YktpdCBjYW5jZWxzIHRoZSBwb3AtdXAgY2xpY2sgaW4gRWxlbWVudDo6ZGlzcGF0Y2hNb3VzZUV2
ZW50LAorICAgICAgICB0aGUgcG9wdXAgc3RpbGwgYXBwZWFycy4gU28gd2Ugc2hvdWxkIGNoZWNr
IGhlcmUgaWYgdGhlIHBvcC11cCBpcyB0cnlpbmcKKyAgICAgICAgdG8gbG9hZCBiZWZvcmUgc3Rv
cmFnZSBhY2Nlc3MgaGFzIGJlZW4gZ3JhbnRlZC4gSWYgc28sIHdlIHNob3VsZCBjYW5jZWwgaXQK
KyAgICAgICAgYW5kIHdhaXQgZm9yIHRoZSBxdWlyayB0byByZS1vcGVuIHRoZSBwb3AtdXAgYWZ0
ZXIgcHJvbXB0aW5nIHRoZSB1c2VyLgorICAgICAgICBBbHNvIGFkZHMgYSBudWxsIGZyYW1lIGNo
ZWNrLgorCisgICAgICAgICogcGFnZS9RdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNC
QkNEb21haW4pOgorICAgICAgICAoV2ViQ29yZTo6aXNCQkNQb3BPdXRQbGF5ZXJFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6UXVpcmtzOjpzdGF0aWNSYWRpb1BsYXllclVSTFN0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBj
b25zdCk6CisgICAgICAgICogcGFnZS9RdWlya3MuaDoKKyAgICAgICAgVGhpcyBpcyB3aGVyZSB3
ZSBjaGVjayBpZiB0aGUgcG9wLXVwIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkIGFuZAorICAgICAg
ICBwcm9tcHQgZm9yIHN0b3JhZ2UgYWNjZXNzIGlmIG5lZWRlZC4gSWYgdGhlIHVzZXIgZ3JhbnRz
IHN0b3JhZ2UKKyAgICAgICAgYWNjZXNzLCB3ZSBzaG91bGQgb3BlbiBhIHBvcHVwIHRvIHN0YXRp
Yy5yYWRpb3BsYXllci5jby51ayBzbyBpdAorICAgICAgICBnZXRzIG1hcmtlZCBhcyBmaXJzdCBw
YXJ0eSwgdGhlbiBpbmplY3Qgc2NyaXB0IHRvIHJlZGlyZWN0IHRvIHRoZQorICAgICAgICBjb3Jy
ZWN0IEJCQyByYWRpbyBwbGF5ZXIgcGFnZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3RvcmFnZUFjY2Vzc1F1aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluTWF0Y2hlc1JlcXVlc3RpbmdEb21haW4pOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0ZvckxvZ2luT3JDb21wYXRpYmlsaXR5UHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50
ZXJhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdWJE
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dp
blB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5Gb3JGaXJzdFBhcnR5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oOgorICAgICAgICBDaGFuZ2Ugd29yZGluZyBub3cgdGhhdCBxdWlya3MgYXJlIG5vdCBv
bmx5IGJlaW5nIHVzZWQgZm9yIGxvZ2luCisgICAgICAgIGZsb3dzLgorCiAyMDIwLTEyLTE3ICBG
dWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gVW5pZnkgV2ViR0wgc291cmNlIGZpbGVzIGludG8gdGhlIGNvbW1vbiBXZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiMmY4ZGIxZTA4YmNmOWExMDgxZjQzNzlmODdiOTQ2NmNm
MjM2YzIuLmU5NTg3Mzg4MDRjMDA5YzE3NGM4ZjIwNWEwYTk1M2NjZTVlYTg3MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMTItMTYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2No
ZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2Fubm90IHNlZSAnQWRkIHRvIG15IHN0YXRpb25z
JyBidXR0b24gaW4gQkJDIFdvcmxkIHNlcnZpY2UgUmFkaW8KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTk0OQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjAzMTk1MzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICBUaGlzIGlzIGEgdGVtcG9yYXJ5IHF1aXJrIHRvIGFzc2lzdCBhIGhpZ2gtdHJhZmZp
YyB3ZWJzaXRlIHdoaWxlIHRoZXkKKyAgICAgICAgY29tcGxldGUgdGhlIGxhcmdlIHRhc2sgb2Yg
bWlncmF0aW5nIGF3YXkgZnJvbSBzaXRlIGNvbXBhdGliaWxpdHkgdXNpbmcKKyAgICAgICAgdGhp
cmQgcGFydHkgY29va2llcy4gVGhpcyBxdWlyayB3aWxsIGJlIHJlbW92ZWQgd2hlbiB0aGUgc2l0
ZSBpcworICAgICAgICB1cGRhdGVkLgorCisgICAgICAgIENyZWF0ZSBhIHF1aXJrIHRoYXQgd2ls
bCBjYWxsIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkgb24gYmVoYWxmIG9mCisgICAgICAgIEJCQyBm
b3IgcmFkaW9wbGF5ZXIuY28udWsgdW5kZXIgYmJjLmNvLnVrLiBXaGVuIHRoZSB1c2VyIGNsaWNr
cyB0byBvcGVuCisgICAgICAgIHRoZSByYWRpbyBwbGF5ZXIgcG9wLXVwLCBzdG9yYWdlIGFjY2Vz
cyBpcyByZXF1ZXN0ZWQuIElmIHRoZSB1c2VyIGdyYW50cworICAgICAgICBwZXJtaXNzaW9uLCB0
aGVuIHdlIG9wZW4gdGhlIHBvcC11cCB0byBzdGF0aWMucmFkaW9wbGF5ZXIuY28udWsgdG8gZ2V0
CisgICAgICAgIGZpcnN0IHBhcnR5IHN0YXR1cywgdGhlbiBpbW1lZGlhdGVseSByZWRpcmVjdCB0
byB0aGUgcmFkaW8gcGxheWVyIHBhZ2UuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjb29raWVBY2Nlc3MpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0VwaGVtZXJhbCk6CisgICAgICAgIENoYW5nZSB3b3JkaW5n
IG5vdyB0aGF0IHF1aXJrcyBhcmUgbm90IG9ubHkgYmVpbmcgdXNlZCBmb3IgbG9naW4KKyAgICAg
ICAgZmxvd3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgTWFyayB0
aGUgcXVpcmstaW5pdGlhdGVkIHBvcC11cCBhcyB1c2VyLWluaXRpYXRlZCBzbyBpdCBkb2Vzbid0
IGdldAorICAgICAgICBibG9ja2VkLgorCiAyMDIwLTEyLTE3ICBFcmljIENhcmxzb24gIDxlcmlj
LmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViTSBmb3JtYXQgcmVhZGVy
IGRvZXNuJ3Qgd29yayB3aXRoIGEgdXJsIGluIGEgPHNvdXJjZT4gZWxlbWVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZGE4NTI1YWFhNTkwZWViM2FhODg0
NDhiY2YyYmQ5NzFkNTU5MTczNS4uYTE2Yjg3NDgxYjNjZWEzZjQ5OTRmZGIxYmE0MGM2Nzc5NWJl
ODUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC04MDUs
NyArODA1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgYXV0byYgZG9jdW1l
bnQgPSAqbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKFF1aXJrczo6aXNNaWNyb3Nv
ZnRUZWFtc1JlZGlyZWN0VVJMKHJlc3BvbnNlLnVybCgpKSkgewogICAgICAgICAgICAgYXV0byBm
aXJzdFBhcnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW4ocmVzcG9uc2UudXJsKCkpOwotICAg
ICAgICAgICAgaWYgKGF1dG8gbG9naW5Eb21haW5zID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjps
b2dpbkRvbWFpbnNGb3JGaXJzdFBhcnR5KGZpcnN0UGFydHlEb21haW4pKSB7CisgICAgICAgICAg
ICBpZiAoYXV0byBsb2dpbkRvbWFpbnMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1YlJlc291
cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURv
bWFpbikpIHsKICAgICAgICAgICAgICAgICBpZiAoIVF1aXJrczo6aGFzU3RvcmFnZUFjY2Vzc0Zv
ckFsbExvZ2luRG9tYWlucygqbG9naW5Eb21haW5zLCBmaXJzdFBhcnR5RG9tYWluKSkgewogICAg
ICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVS
ZWRpcmVjdChkb2N1bWVudCwgMCwgbWljcm9zb2Z0VGVhbXNSZWRpcmVjdFVSTCgpKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDU3
ZGVmMzBlMGQ1Zjc3YmZhNmI3ODlkNWZlYmQ0NjYzZDUxODM5ZWMuLmUzM2ZhZTM4ZWVjM2JhMTM2
Njk3YjhlZTVkMzVlOTA1M2VhODdhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAg
LTI1MDEsNiArMjUwMSwxNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8RnJhbWU+PiBET01XaW5kb3c6
OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29ucwogCiBFeGNlcHRpb25P
cjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nVG9P
cGVuLCBjb25zdCBBdG9tU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFN0cmluZyYgd2luZG93RmVh
dHVyZXNTdHJpbmcpCiB7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAg
ICBpZiAoYXV0byogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChk
b2N1bWVudC0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpICYmIHVybFN0cmlu
Z1RvT3BlbiA9PSBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKCkpIHsKKyAgICAgICAg
ICAgIGF1dG8gcmFkaW9QbGF5ZXJEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihVUkwoVVJMKCks
IFF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkpOworICAgICAgICAgICAgYXV0
byBCQkNEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihVUkwoVVJMKCksIFF1aXJrczo6QkJDUmFk
aW9QbGF5ZXJVUkxTdHJpbmcoKSkpOworICAgICAgICAgICAgaWYgKCFSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkKCkuaGFzQ3Jvc3NQYWdlU3RvcmFnZUFjY2VzcyhyYWRpb1BsYXllckRvbWFp
biwgQkJDRG9tYWluKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUmVmUHRyPFdpbmRvd1Byb3h5
PiB7IG51bGxwdHIgfTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFpc0N1
cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIFJlZlB0cjxXaW5kb3dQ
cm94eT4geyBudWxscHRyIH07CiAKQEAgLTI1MjgsNiArMjUzOSw5IEBAIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxXaW5kb3dQcm94eT4+IERPTVdpbmRvdzo6b3BlbihET01XaW5kb3cmIGFjdGl2ZVdpbmRv
dywgRE9NV2luCiAjZW5kaWYKIAogICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gUmVmUHRyPFdpbmRvd1Byb3h5PiB7IG51bGxw
dHIgfTsKKwogICAgIGlmICghZmlyc3RXaW5kb3cuYWxsb3dQb3BVcCgpKSB7CiAgICAgICAgIC8v
IEJlY2F1c2UgRnJhbWVUcmVlOjpmaW5kRnJhbWVGb3JOYXZpZ2F0aW9uKCkgcmV0dXJucyB0cnVl
IGZvciBlbXB0eSBzdHJpbmdzLCB3ZSBtdXN0IGNoZWNrIGZvciBlbXB0eSBmcmFtZSBuYW1lcy4K
ICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpbGxlZ2l0aW1hdGUgd2luZG93Lm9wZW4oKSBjYWxscyB3
aXRoIG5vIG5hbWUgd2lsbCBwYXNzIHJpZ2h0IHRocm91Z2ggdGhlIHBvcHVwIGJsb2NrZXIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1F1aXJrcy5jcHAKaW5kZXggNTRlNmRlMDM2MmYzYzA0MDY4MGYwYTY3MDgyYTUyN2Q5
ZGViZTg1My4uMTk0NjI4YWYwNjQ3MDNiMjg5YmE3ZjJhYjAzOTkwN2EyN2E1NDg5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUXVpcmtzLmNwcApAQCAtMTAwMiw2ICsxMDAyLDMzIEBAIGJvb2wgUXVpcmtzOjpoYXNT
dG9yYWdlQWNjZXNzRm9yQWxsTG9naW5Eb21haW5zKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2NvbnN0IFN0cmluZyYgUXVpcmtzOjpCQkNS
YWRpb1BsYXllclVSTFN0cmluZygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gQkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcgPSAiaHR0cHM6Ly93d3cuYmJjLmNvLnVrL3NvdW5k
cy9wbGF5ZXIvYmJjX3dvcmxkX3NlcnZpY2UiX3M7CisgICAgcmV0dXJuIEJCQ1JhZGlvUGxheWVy
VVJMU3RyaW5nOworfQorCitjb25zdCBTdHJpbmcmIFF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJV
UkxTdHJpbmcoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHN0YXRpY1Jh
ZGlvUGxheWVyVVJMU3RyaW5nID0gImh0dHBzOi8vc3RhdGljLnJhZGlvcGxheWVyLmNvLnVrLyJf
czsKKyAgICByZXR1cm4gc3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmc7Cit9CisKK3N0YXRpYyBi
b29sIGlzQkJDRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiBCQkNEb21haW4gPSBSZWdp
c3RyYWJsZURvbWFpbihVUkwoVVJMKCksIFF1aXJrczo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmco
KSkpOworICAgIHJldHVybiBkb21haW4gPT0gQkJDRG9tYWluOworfQorCitzdGF0aWMgYm9vbCBp
c0JCQ1BvcFVwUGxheWVyRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KQoreworICAgIGF1
dG8qIHBhcmVudEVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKKyAgICBpZiAoIWVs
ZW1lbnQucGFyZW50RWxlbWVudCgpIHx8ICFlbGVtZW50LnBhcmVudEVsZW1lbnQoKS0+aGFzQ2xh
c3MoKSB8fCAhcGFyZW50RWxlbWVudC0+cGFyZW50RWxlbWVudCgpIHx8ICFwYXJlbnRFbGVtZW50
LT5wYXJlbnRFbGVtZW50KCktPmhhc0NsYXNzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKS0+Y2xhc3NOYW1lcygpLmNvbnRhaW5z
KCJwX2F1ZGlvQnV0dG9uX2J1dHRvbklubmVyIikgJiYgcGFyZW50RWxlbWVudC0+cGFyZW50RWxl
bWVudCgpLT5jbGFzc05hbWVzKCkuY29udGFpbnMoImhpZGRlbiIpOworfQorCiAjZW5kaWYKIAog
UXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFn
ZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
cGxhdGZvcm1FdmVudCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0YWlsLCBF
bGVtZW50KiByZWxhdGVkVGFyZ2V0KSBjb25zdApAQCAtMTAzNyw2ICsxMDY0LDggQEAgUXVpcmtz
OjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vz
c1F1aXJrKEVsZW1lbnQmIGUKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4g
a2luamFMb2dpblVzZXJTY3JpcHQgeyAiZnVuY3Rpb24gdHJpZ2dlckxvZ2luRm9ybSgpIHsgbGV0
IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnanNfaGVhZGVyLXVz
ZXJidXR0b24nKTsgaWYgKGVsZW1lbnRzICYmIGVsZW1lbnRzWzBdKSB7IGVsZW1lbnRzWzBdLmNs
aWNrKCk7IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOyB9IH0gbGV0IGludGVydmFsID0gc2V0SW50
ZXJ2YWwodHJpZ2dlckxvZ2luRm9ybSwgMjAwKTsiLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVj
dG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRpbWU6
OkRvY3VtZW50RW5kLCBVc2VyQ29udGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1l
T25seSwgV2FpdEZvck5vdGlmaWNhdGlvbkJlZm9yZUluamVjdGluZzo6WWVzIH07CiAKICAgICBp
ZiAoZXZlbnRUeXBlID09ICJjbGljayIpIHsKKyAgICAgICAgaWYgKCFtX2RvY3VtZW50KQorICAg
ICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2Fu
Y2VsRXZlbnQ7CiAKICAgICAgICAgLy8gRW1iZWRkZWQgWW91VHViZSBjYXNlLgogICAgICAgICBp
ZiAoZWxlbWVudC5oYXNDbGFzcygpICYmIGRvbWFpbiA9PSB5b3VUdWJlRG9tYWluICYmICFtX2Rv
Y3VtZW50LT5pc1RvcERvY3VtZW50KCkgJiYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgp
Lmhhc0hhZFVzZXJJbnRlcmFjdGlvbih5b3VUdWJlRG9tYWluKSkgewpAQCAtMTA3OSw3ICsxMTA4
LDcgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFs
U3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAgLy8gRklYTUUoMjE4Nzc5KTog
UmVtb3ZlIHRoaXMgcXVpcmsgb25jZSBtaWNyb3NvZnQuY29tIGNvbXBsZXRlcyB0aGVpciBsb2dp
biBmbG93IHJlZGVzaWduLgogICAgICAgICBpZiAoaXNNaWNyb3NvZnREb21haW4oZG9tYWluKSAm
JiBpc01pY3Jvc29mdExvZ2luRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAgICAgYXV0byBm
aXJzdFBhcnR5RG9tYWluID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjptYXBUb1RvcERvbWFpbihS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QobV9kb2N1bWVudC0+dG9w
RG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLmhvc3QoKSkpOwotICAgICAgICAgICAgaWYgKGF1
dG8gbG9naW5Eb21haW5zID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpsb2dpbkRvbWFpbnNGb3JG
aXJzdFBhcnR5KGZpcnN0UGFydHlEb21haW4pKSB7CisgICAgICAgICAgICBpZiAoYXV0byBsb2dp
bkRvbWFpbnMgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1YlJlc291cmNlRG9tYWluc0luTmVl
ZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbikpIHsKICAgICAg
ICAgICAgICAgICBpZiAoIWhhc1N0b3JhZ2VBY2Nlc3NGb3JBbGxMb2dpbkRvbWFpbnMoKmxvZ2lu
RG9tYWlucywgZmlyc3RQYXJ0eURvbWFpbikpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBs
b2dpbkRvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKCpsb2dpbkRvbWFpbnMudmFsdWUoKS5iZWdp
bigpLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQsIFdURk1v
dmUobG9naW5Eb21haW4pLCBbZmlyc3RQYXJ0eURvbWFpbiwgbG9naW5Eb21haW4sICZlbGVtZW50
LCBwbGF0Zm9ybUV2ZW50LCBldmVudFR5cGUsIGRldGFpbCwgcmVsYXRlZFRhcmdldF0oU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQgc3RvcmFnZUFjY2Vzc0dyYW50ZWQpIG11dGFibGUgewpAQCAtMTEw
MCw3ICsxMTI5LDcgQEAgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dl
ck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKEVsZW1lbnQmIGUKICAgICAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiBwbGF5U3RhdGlvbkRvbWFpbiA9IFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
InBsYXlzdGF0aW9uLmNvbSJfcyk7CiAgICAgICAgIGlmIChkb21haW4gPT0gcGxheVN0YXRpb25E
b21haW4gJiYgaXNQbGF5c3RhdGlvbkxvZ2luRWxlbWVudChlbGVtZW50KSkgewogICAgICAgICAg
ICAgYXV0byBmaXJzdFBhcnR5RG9tYWluID0gUmVnaXN0cmFibGVEb21haW4obV9kb2N1bWVudC0+
dG9wRG9jdW1lbnQoKS51cmwoKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byBsb2dpbkRvbWFpbnMg
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmxvZ2luRG9tYWluc0ZvckZpcnN0UGFydHkoZmlyc3RQ
YXJ0eURvbWFpbikpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGxvZ2luRG9tYWlucyA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3ViUmVzb3VyY2VEb21haW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
Rm9yRmlyc3RQYXJ0eShmaXJzdFBhcnR5RG9tYWluKSkgewogICAgICAgICAgICAgICAgIGlmICgh
aGFzU3RvcmFnZUFjY2Vzc0ZvckFsbExvZ2luRG9tYWlucygqbG9naW5Eb21haW5zLCBmaXJzdFBh
cnR5RG9tYWluKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTZW5kIG9ubHkgb25lIGxvZ2lu
IGRvbWFpbiB0byBhdm9pZCBjaGFuZ2luZyBleGlzdGluZyBTdG9yYWdlIEFjY2VzcyBjb2RlLCB3
aGljaCBjYW4gb25seSBoYW5kbGUgYSBzaW5nbGUgZG9tYWluLgogICAgICAgICAgICAgICAgICAg
ICAvLyBXZSB3aWxsIG1hdGNoIFNvbnkgbG9naW4gZG9tYWlucyB1cCB3aGVuIHByb21wdGluZyB0
aGUgdXNlciBhbmQgc3RvcmluZyB0aGUgZG9tYWlucy4KQEAgLTExMTcsNiArMTE0Niw0NCBAQCBR
dWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdl
QWNjZXNzUXVpcmsoRWxlbWVudCYgZQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
IFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CiAgICAg
ICAgIH0KKworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBCQkNSYWRpb1Bs
YXllclBvcFVwV2luZG93RmVhdHVyZVN0cmluZyA9ICJmZWF0dXJlc3RyaW5nIHdpZHRoPTQwMCxo
ZWlnaHQ9NzMwIl9zOworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4g
QkJDVXNlclNjcmlwdCB7ICJmdW5jdGlvbiB0cmlnZ2VyUmVkaXJlY3QoKSB7IGRvY3VtZW50Lmxv
Y2F0aW9uLmhyZWYgPSBcImh0dHBzOi8vd3d3LmJiYy5jby51ay9zb3VuZHMvcGxheWVyL2JiY193
b3JsZF9zZXJ2aWNlXCI7IH0gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlv
biAoKSB7IHRyaWdnZXJSZWRpcmVjdCgpOyB9KSIsIFVSTChhYm91dEJsYW5rVVJMKCkpLCBWZWN0
b3I8U3RyaW5nPigpLCBWZWN0b3I8U3RyaW5nPigpLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZTo6
RG9jdW1lbnRFbmQsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXM6OkluamVjdEluVG9wRnJhbWVP
bmx5LCBXYWl0Rm9yTm90aWZpY2F0aW9uQmVmb3JlSW5qZWN0aW5nOjpZZXMgfTsKKworICAgICAg
ICAvLyBCQkMgUmFkaW9QbGF5ZXIgY2FzZS4KKyAgICAgICAgaWYgKGlzQkJDRG9tYWluKGRvbWFp
bikgJiYgaXNCQkNQb3BVcFBsYXllckVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIGF1
dG8gZmlyc3RQYXJ0eURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKG1fZG9jdW1lbnQtPnRvcERv
Y3VtZW50KCkudXJsKCkpOworICAgICAgICAgICAgYXV0byBzdWJSZXNvdXJjZURvbWFpbnNJbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1YlJlc291cmNlRG9t
YWluc0luTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFydHkoZmlyc3RQYXJ0eURvbWFpbik7
CisgICAgICAgICAgICBpZiAoIXN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vz
cykKKyAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpT
aG91bGROb3RDYW5jZWxFdmVudDsKKworICAgICAgICAgICAgaWYgKGhhc1N0b3JhZ2VBY2Nlc3NG
b3JBbGxMb2dpbkRvbWFpbnMoKnN1YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vz
cywgZmlyc3RQYXJ0eURvbWFpbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3Rv
cmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CisKKyAgICAgICAgICAgIGF1
dG8gc3ViUmVzb3VyY2VEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbigqc3ViUmVzb3VyY2VEb21h
aW5zSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLnZhbHVlKCkuYmVnaW4oKS5nZXQoKSk7CisgICAgICAg
ICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTm9uRG9j
dW1lbnRRdWlyaygqbV9kb2N1bWVudCwgV1RGTW92ZShzdWJSZXNvdXJjZURvbWFpbiksIFtkb2N1
bWVudCA9IG1fZG9jdW1lbnQsIGZpcnN0UGFydHlEb21haW4sIHN1YlJlc291cmNlRG9tYWluXShT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBzdG9yYWdlQWNjZXNzR3JhbnRlZCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHN0b3JhZ2VBY2Nlc3NHcmFudGVkID09IFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkOjpObykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg
ICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoQ3Jvc3NQ
YWdlU3RvcmFnZUFjY2Vzcyh7eyBmaXJzdFBhcnR5RG9tYWluLCBzdWJSZXNvdXJjZURvbWFpbiB9
fSwgW2RvY3VtZW50ID0gV1RGTW92ZShkb2N1bWVudCldIHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBkb21XaW5kb3cgPSBkb2N1bWVudC0+ZG9tV2luZG93KCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChkb21XaW5kb3cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbk9y
PFJlZlB0cjxXaW5kb3dQcm94eT4+IHByb3h5T3JFeGNlcHRpb24gPSBkb21XaW5kb3ctPm9wZW4o
KmRvbVdpbmRvdywgKmRvbVdpbmRvdywgc3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSwgZW1w
dHlTdHJpbmcoKSwgQkJDUmFkaW9QbGF5ZXJQb3BVcFdpbmRvd0ZlYXR1cmVTdHJpbmcpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3h5T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byBwcm94eSA9IHByb3h5T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBhYnN0cmFjdEZyYW1lID0gcHJveHktPmZy
YW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXM8RnJhbWU+KCphYnN0cmFjdEZy
YW1lKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGZyYW1lID0gZG93bmNh
c3Q8RnJhbWU+KCphYnN0cmFjdEZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRvIHdvcmxkID0gU2NyaXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoImJiY1JhZGlvUGxheWVy
V29ybGQiLCBTY3JpcHRDb250cm9sbGVyOjpXb3JsZFR5cGU6OlVzZXIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1lLmFkZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbih3
b3JsZC5nZXQoKSwgQkJDVXNlclNjcmlwdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVy
biBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50OworICAgICAg
ICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWly
a3MuaAppbmRleCA1MTExYWI4ZGVlMmFmMTM5OWVkZDA3MjhjOWYwMGVhNTkzYTdlYWNlLi40Yzc1
NjUxZDI1MDk5YzE4MDc0ZTY2ODE4ZGQ0OTllMjFhMTIzZTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1F1aXJrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgK
QEAgLTEyNSw2ICsxMjUsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICBzdGF0aWMgYm9vbCBpc01pY3Jvc29mdFRlYW1zUmVkaXJlY3RVUkwoY29u
c3QgVVJMJik7CiAgICAgc3RhdGljIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckFsbExvZ2luRG9t
YWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJik7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgQkJDUmFkaW9QbGF5ZXJVUkxTdHJp
bmcoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBzdGF0aWNSYWRp
b1BsYXllclVSTFN0cmluZygpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAK
aW5kZXggZjU3MmRlYzMyNzA3ZDk4YzEwZjlkNzVlMGQ5MjdmMTk5Y2RiNGUxNy4uNjM4NGY3ZjA3
NDAzOTVmNGM5NzUwYjZjMzIxMTJiMWMyMWYzMTEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
MzkwLDYgKzM5MCw4IEBAIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+PiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzCiAgICAgICAgIG1hcC5hZGQo
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0
cmluZygicGxheXN0YXRpb24uY29tIiksIEhhc2hTZXQgewogICAgICAgICAgICAgUmVnaXN0cmFi
bGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygic29u
eWVudGVydGFpbm1lbnRuZXR3b3JrLmNvbSJfcyksCiAgICAgICAgICAgICBSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJzb255LmNv
bSJfcykgfSk7CisgICAgICAgIG1hcC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygiYmJjLmNvLnVrIiksIEhhc2hTZXQgewor
ICAgICAgICAgICAgUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3Ry
YWJsZURvbWFpblN0cmluZygicmFkaW9wbGF5ZXIuY28udWsiX3MpIH0pOwogICAgICAgICByZXR1
cm4gbWFwOwogICAgIH0oKTsKICAgICByZXR1cm4gbWFwLmdldCgpOwpAQCAtMzk3LDE2ICszOTks
MTYgQEAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFp
bj4+JiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnMKIAogYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmxvZ2luRG9tYWluTWF0Y2hlc1JlcXVlc3RpbmdEb21haW4oY29uc3QgVG9wRnJhbWVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYgcmVzb3VyY2VEb21h
aW4pCiB7Ci0gICAgYXV0byBsb2dpbkRvbWFpbnMgPSBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmxvZ2luRG9tYWluc0ZvckZpcnN0UGFydHkodG9wRnJhbWVEb21haW4pOworICAgIGF1
dG8gbG9naW5Eb21haW5zID0gV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdWJSZXNv
dXJjZURvbWFpbnNJbk5lZWRPZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KHRvcEZyYW1lRG9t
YWluKTsKICAgICByZXR1cm4gbG9naW5Eb21haW5zICYmIGxvZ2luRG9tYWlucy52YWx1ZSgpLmNv
bnRhaW5zKHJlc291cmNlRG9tYWluKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJ
bnRlcmFjdGlvbihjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFpbikKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luT3JDb21wYXRpYmlsaXR5UHVycG9z
ZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rpb24oY29uc3QgU3ViUmVzb3VyY2VEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4pCiB7CiAg
ICAgcmV0dXJuIGxvZ2luRG9tYWluTWF0Y2hlc1JlcXVlc3RpbmdEb21haW4odG9wRnJhbWVEb21h
aW4sIHJlc291cmNlRG9tYWluKTsKIH0KIAotT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bG9naW5Eb21haW5zRm9yRmlyc3RQYXJ0eShj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4pCitPcHRpb25hbDxIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdWJSZXNvdXJjZURv
bWFpbnNJbk5lZWRPZlN0b3JhZ2VBY2Nlc3NGb3JGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbikKIHsKICAgICBhdXRvIGl0ID0gc3RvcmFnZUFjY2Vzc1F1
aXJrcygpLmZpbmQodG9wRnJhbWVEb21haW4pOwogICAgIGlmIChpdCAhPSBzdG9yYWdlQWNjZXNz
UXVpcmtzKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCBiNDFhYzQwZTM1MTc3YzBjMjJjNWMw
Mzc4NDM3MjM4YzVlMWJiNzM1Li4yOTdmNjMyNTZjYmUxZmYxYjIxYWExNjUxY2FlMjMzNjU1Yjdm
ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTIxNiw4ICsyMTYsOCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hN
YXA8UmVnaXN0cmFibGVEb21haW4sIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+PiYgc3RvcmFn
ZUFjY2Vzc1F1aXJrcygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGNhblJlcXVl
c3RTdG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlv
bihjb25zdCBTdWJSZXNvdXJjZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIE9wdGlvbmFsPEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
PiBsb2dpbkRvbWFpbnNGb3JGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgY2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JM
b2dpbk9yQ29tcGF0aWJpbGl0eVB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKGNv
bnN0IFN1YlJlc291cmNlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHN1
YlJlc291cmNlRG9tYWluc0luTmVlZE9mU3RvcmFnZUFjY2Vzc0ZvckZpcnN0UGFydHkoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBsb2dp
bkRvbWFpbk1hdGNoZXNSZXF1ZXN0aW5nRG9tYWluKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29u
c3QgU3ViUmVzb3VyY2VEb21haW4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVnaXN0
cmFibGVEb21haW4gbWFwVG9Ub3BEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgT3B0aW9uYWw8UmVnaXN0cmFibGVEb21haW4+IGZpbmRB
ZGRpdGlvbmFsTG9naW5Eb21haW4oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBTdWJSZXNv
dXJjZURvbWFpbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggOTdmZGI0Y2QwY2I5MmIxYTUwOWU1ZWIwNjQ1NDFhOGU1
MzQ2MDcxMi4uZjJkZGM4OWRmMjFkMGFiNTQyZGRmYTNiOWY5NTk2NTZmY2Y1MGFkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
CkBAIC0xMzk1LDcgKzEzOTUsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVChzdWJGcmFtZVN0YXR1cy5maXJzdCA9PSBBZGRlZFJlY29yZDo6Tm8p
OwogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJpb3JVc2Vy
SW50ZXJhY3Rpb24oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSkKKyAgICAgICAgaWYg
KCFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTG9naW5P
ckNvbXBhdGliaWxpdHlQdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFt
ZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKQogICAgICAgICAgICAgQVNTRVJUKGhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihzdWJGcmFtZURvbWFpbiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKTsK
ICNlbmRpZgogICAgICAgICBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KHN0b3JhZ2VBY2Nl
c3NVbmRlclRvcEZyYW1lRG9tYWluc1F1ZXJ5LCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPih7
IHRvcEZyYW1lRG9tYWluIH0pLCAqc3ViRnJhbWVTdGF0dXMuc2Vjb25kKTsKQEAgLTE0MjIsNyAr
MTQyMiw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tCiAgICAgICAgIH0KICAgICAgICAgQVNT
RVJUKHN1YkZyYW1lU3RhdHVzLmZpcnN0ID09IEFkZGVkUmVjb3JkOjpObyk7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICAgICAgaWYgKCFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RT
dG9yYWdlQWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihz
dWJGcmFtZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKQorICAgICAgICBpZiAoIU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2FuUmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JMb2dpbk9yQ29tcGF0aWJpbGl0
eVB1cnBvc2VzV2l0aG91dFByaW9yVXNlckludGVyYWN0aW9uKHN1YkZyYW1lRG9tYWluLCB0b3BG
cmFtZURvbWFpbikpCiAgICAgICAgICAgICBBU1NFUlQoaGFzSGFkVXNlckludGVyYWN0aW9uKHN1
YkZyYW1lRG9tYWluLCBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZykpOwogI2VuZGlmCiAgICAg
ICAgIEFTU0VSVChoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KCpzdWJG
cmFtZVN0YXR1cy5zZWNvbmQsIHRvcEZyYW1lRG9tYWluKSA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd246Olllcyk7CkBAIC0yMTEyLDcgKzIxMTIsNyBAQCBDb29raWVBY2Nlc3MgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNvb2tpZUFjY2Vzcyhjb25zdCBTdWJSZXNv
dXJjZQogICAgIGlmICghYXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5kZXIodG9wRnJh
bWVEb21haW4pICYmICFpc1ByZXZhbGVudCkKICAgICAgICAgcmV0dXJuIENvb2tpZUFjY2Vzczo6
QmFzZWRPbkNvb2tpZVBvbGljeTsKIAotICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
YW5SZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckxvZ2luUHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50
ZXJhY3Rpb24oc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluKSAmJiAhaGFkVXNlcklu
dGVyYWN0aW9uKQorICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0ZvckxvZ2luT3JDb21wYXRpYmlsaXR5UHVycG9zZXNXaXRob3V0UHJpb3JVc2Vy
SW50ZXJhY3Rpb24oc3VicmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluKSAmJiAhaGFkVXNl
ckludGVyYWN0aW9uKQogICAgICAgICByZXR1cm4gQ29va2llQWNjZXNzOjpDYW5ub3RSZXF1ZXN0
OwogCiAgICAgcmV0dXJuIENvb2tpZUFjY2Vzczo6T25seUlmR3JhbnRlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMjY2NzZlNjhkNTQ3
YjIxYWY2Y2RkNGM3ODliNGMzYjRkZmU1NmY5MC4uZjQwNjBlZTI4YTVjNDE5YjBiNjYyYjI2NmFk
OTAzOGFhNTM1MjI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NFcGhlbWVyYWwoY29uc3QgUmVnaXN0cgog
ewogICAgIEFTU0VSVChpc0VwaGVtZXJhbCgpKTsKIAotICAgIGlmICghbV9uZXR3b3JrU2Vzc2lv
biB8fCAoIW1fZG9tYWluc1dpdGhFcGhlbWVyYWxVc2VySW50ZXJhY3Rpb24uY29udGFpbnMoc3Vi
RnJhbWVEb21haW4pICYmICFOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNhblJlcXVlc3RTdG9yYWdl
QWNjZXNzRm9yTG9naW5QdXJwb3Nlc1dpdGhvdXRQcmlvclVzZXJJbnRlcmFjdGlvbihzdWJGcmFt
ZURvbWFpbiwgdG9wRnJhbWVEb21haW4pKSkKKyAgICBpZiAoIW1fbmV0d29ya1Nlc3Npb24gfHwg
KCFtX2RvbWFpbnNXaXRoRXBoZW1lcmFsVXNlckludGVyYWN0aW9uLmNvbnRhaW5zKHN1YkZyYW1l
RG9tYWluKSAmJiAhTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjYW5SZXF1ZXN0U3RvcmFnZUFjY2Vz
c0ZvckxvZ2luT3JDb21wYXRpYmlsaXR5UHVycG9zZXNXaXRob3V0UHJpb3JVc2VySW50ZXJhY3Rp
b24oc3ViRnJhbWVEb21haW4sIHRvcEZyYW1lRG9tYWluKSkpCiAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duOjpObywgc2NvcGUsIHRvcEZyYW1lRG9tYWluLCBzdWJGcmFtZURvbWFp
biB9KTsKIAogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IHJlcXVlc3RDb25maXJt
YXRpb25Db21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHN1YkZyYW1lRG9tYWluLCB0b3BGcmFtZURvbWFpbiwgZnJhbWVJRCwgd2ViUGFnZUlE
LCBzY29wZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDZlMGNmMmU3ZGZjMDBmODZmYjc5NDMzYzRiZjExNmQz
ZTFjYmNkZjkuLmFjOTQxYzM5N2IxODc2OWI0MTdmMzFmYWM2MGJiOGMxNDY3N2I2NjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTU3Miw3ICs1NTcyLDE3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKEZyYW1lSW5mb0RhdGEmJiBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIFdlYlBhCiAjZW5kaWYKICAgICB9OwogCi0gICAgYXV0byB1
c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShu
YXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CisgICAgUmVm
UHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4gdXNlckluaXRpYXRlZEFjdGl2aXR5OworICAg
IAorICAgIC8vIFdlYktpdCBjYW5jZWxzIHRoZSBvcmlnaW5hbCBnZXN0dXJlIHRvIG9wZW4gdGhl
IEJCQyByYWRpbyBwbGF5ZXIgc28KKyAgICAvLyB3ZSBjYW4gY2FsbCB0aGUgU3RvcmFnZSBBY2Nl
c3MgQVBJIGZpcnN0LiBXaGVuIHdlIHJlLWluaXRpYXRlIHRoZSBvcGVuLAorICAgIC8vIHdlIHNo
b3VsZCBtYWtlIHN1cmUgdGhlIGNsaWVudCBrbm93cyB0aGF0IHRoaXMgd2FzIHVzZXIgaW5pdGlh
dGVkIHNvIGl0CisgICAgLy8gZG9lcyBub3QgYmxvY2sgdGhlIHBvcHVwLgorICAgIGlmIChyZXF1
ZXN0LnVybCgpLnN0cmluZygpID09IFF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmco
KSkKKyAgICAgICAgdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gQVBJOjpVc2VySW5pdGlhdGVkQWN0
aW9uOjpjcmVhdGUoKTsKKyAgICBlbHNlCisgICAgICAgIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9
IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVz
ZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKKwogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtz
ID0gb3JpZ2luYXRpbmdGcmFtZUluZm8tPnJlcXVlc3QoKS51cmwoKS5ob3N0KCkgIT0gcmVxdWVz
dC51cmwoKS5ob3N0KCk7CiAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0
aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0
aW5nRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVz
dCksIFVSTCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2
aXR5KSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>