<?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>210162</bug_id>
          
          <creation_ts>2020-04-07 15:22:50 -0700</creation_ts>
          <short_desc>Web Automation: timeout underneath Automation.evaluateJavaScriptFunction in Selenium test frame_switching_tests.py::testShouldNotBeAbleToDoAnythingTheFrameIsDeletedFromUnderUs[Safari]</short_desc>
          <delta_ts>2020-04-24 10:50:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebDriver</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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1638840</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-04-07 15:22:50 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638841</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-04-07 15:23:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/60561009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638868</commentid>
    <comment_count>2</comment_count>
      <attachid>395756</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-04-07 16:11:53 -0700</bug_when>
    <thetext>Created attachment 395756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639294</commentid>
    <comment_count>3</comment_count>
      <attachid>395756</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-04-08 14:30:14 -0700</bug_when>
    <thetext>Comment on attachment 395756
Patch

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

r=me, the overall idea seems solid, but I do have lots of comments 😅

&gt; Source/WebKit/ChangeLog:35
&gt; +        (WebKit::WebAutomationSessionProxy::ensureObserverForFrame): For non-main frames,

NIT: for multi-line explanations, I prefer to start it on the next line, as that&apos;s where my eye naturally thinks the explanation starts 😅

&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:10822
&gt; +				990D39F5243BE64800199388 /* WebAutomationDOMWindowObserver.h in Headers */,

This should be sorted.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:27
&gt; +#include &quot;WebAutomationDOMWindowObserver.h&quot;

Please make sure all necessary includes are in this file, such that if unified sources get shuffled around this file doesn&apos;t cause build breakages due to previously implicit includes.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:36
&gt; +    ASSERT(this-&gt;frame());

Is the `this` necessary?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:37
&gt; +    if (m_window)

When would we ever want to create a `WebAutomationDOMWindowObserver` with an invalid `DOMWindow`?  Why not pass a `DOMWindow&amp;` instead?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:47
&gt; +Frame* WebAutomationDOMWindowObserver::frame() const

It seems like all this is used for is inside `ASSERT`.  Perhaps we could remove this and just `ASSERT(m_window &amp;&amp; m_window-&gt;frame())` in those places instead?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:62
&gt; +    if (m_window)

Is this really necessary?  This function is called by `DOMWindow`, so we should be guaranteed to have a `m_window`.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:73
&gt; +    if (!m_wasDetached) {

Given my comment on +95, I don&apos;t think it&apos;s possible for this to be called if `m_wasDetached`.  I&apos;m not sure we&apos;d need the member variable in that case either.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:75
&gt; +        Frame* frame = this-&gt;frame();
&gt; +        ASSERT_UNUSED(frame, frame);

Why not just `ASSERT(frame());`?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:80
&gt; +    if (m_window)

Ditto (+62)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:93
&gt; +    Frame* frame = this-&gt;frame();
&gt; +    ASSERT_UNUSED(frame, frame);

Ditto (+74)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:94
&gt; +    m_callback(*this);

Shouldn&apos;t we also `m_window-&gt;unregisterObserver(*this)` here too, given that `m_callback(*this)` removes this object from `m_observers`, therefore causing it to be destroyed, meaning that no further callbacks should be run?  Or is this because it&apos;s possible/allowed/valid for the frame to be re-attached and continue to be used?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.cpp:96
&gt; +    m_wasDetached = true;

NIT: should this be set earlier to prevent reentrancy (using the `ASSERT(!m_wasDetached)`) via `m_callback`?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.h:28
&gt; +#import &lt;WebCore/DOMWindow.h&gt;

Please add
```
    #include &lt;wtf/Forward.h&gt;
```

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.h:31
&gt; +class Element;

This doesn&apos;t seem needed.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.h:47
&gt; +    // All of these observer callbacks are interpreted as a signal that a frame has been detached and
&gt; +    // can no longer accept new commands nor finish pending commands (eg, evaluating JavaScript).

Wouldn&apos;t the same apply to `suspendForBackForwardCache`, or are frames that have been navigated away from still considered valid?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.h:53
&gt; +    WebCore::DOMWrapperWorld&amp; world() const { return m_world; }

We should forward declare or include `WebCore::DOMWrapperWorld` too.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.h:59
&gt; +    Ref&lt;WebCore::DOMWrapperWorld&gt; m_world;

Why is this needed?  It doesn&apos;t seem like it&apos;s used anywhere.  Is it just to keep it alive?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationDOMWindowObserver.h:60
&gt; +    RefPtr&lt;WebCore::Frame&gt; m_disconnectedFrame;

When is this set?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:68
&gt; +using namespace WebCore;

Shouldn&apos;t this be inside the `namespace WebKit {`?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:310
&gt; +    if (!frame.coreFrame()-&gt;window() || !frame.coreFrame()-&gt;window()-&gt;frame())

Shouldn&apos;t we also check that `frame.coreFrame()` exists?

If `frame.coreFrame()` exists, then wouldn&apos;t it be equal to `frame.coreFrame()-&gt;window()-&gt;frame()`, or can they be different objects?

Als, since you access `frame.coreFrame()-&gt;window()` three different times, perhaps it&apos;s worth pulling out into a variable?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:316
&gt; +    FrameIdentifier frameID = frame.frameID();

`auto`?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:317
&gt; +    m_frameObservers.set(frameID, WebAutomationDOMWindowObserver::create(frame.coreFrame()-&gt;window(), WebCore::mainThreadNormalWorld(), [this, frameID] (WebAutomationDOMWindowObserver&amp;) {

We should have an include for `DOMWrapperWorld`.

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:318
&gt; +        this-&gt;willDestroyGlobalObjectForFrame(frameID);

NIT: is the `this-&gt;` needed?

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:350
&gt; +    if (!frame || !frame-&gt;coreFrame()-&gt;window() || !frame-&gt;coreFrame()-&gt;window()-&gt;frame()) {

Ditto (+310)

&gt; Source/WebKit/WebProcess/Automation/WebAutomationSessionProxy.cpp:-738
&gt; -        String invalidNodeIdentifierrrorType = Inspector::Protocol::AutomationHelpers::getEnumConstantValue(Inspector::Protocol::Automation::ErrorMessage::InvalidNodeIdentifier);

LOL 🤣

Part of me want&apos;s to keep this for the lols :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645231</commentid>
    <comment_count>4</comment_count>
      <attachid>397463</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-04-24 09:57:29 -0700</bug_when>
    <thetext>Created attachment 397463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645265</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-24 10:50:45 -0700</bug_when>
    <thetext>Committed r260653: &lt;https://trac.webkit.org/changeset/260653&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 397463.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395756</attachid>
            <date>2020-04-07 16:11:53 -0700</date>
            <delta_ts>2020-04-24 09:57:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210162-20200407161152.patch</filename>
            <type>text/plain</type>
            <size>25002</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM2NTZmM2I0YTZmMTFk
ZTA2YmQ1ZmY3NzU0MDMyYWVlNjY3YjBhYy4uOGRmOWUwZWIwMzQwYTNiZTg3ODFjYjZiZmQ5MTM3
NWYxZTcxMzVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTA3ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiB0aW1l
b3V0IHVuZGVybmVhdGggQXV0b21hdGlvbi5ldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiBpbiBT
ZWxlbml1bSB0ZXN0IGZyYW1lX3N3aXRjaGluZ190ZXN0cy5weTo6dGVzdFNob3VsZE5vdEJlQWJs
ZVRvRG9Bbnl0aGluZ1RoZUZyYW1lSXNEZWxldGVkRnJvbVVuZGVyVXNbU2FmYXJpXQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMTYyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MDU2MTAwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6IEV4cG9zZSBET01XaW5kb3c6
OntyZWdpc3RlciwgdW5yZWdpc3Rlcn1PYnNlcnZlci4KKwogMjAyMC0wMy0zMCAgSmFjb2IgVXBo
b2ZmICA8amFjb2JfdXBob2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZl
cnRpbmcgcjI1OTE1OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTA1OTRlZDVkYzkyZDg2ZDc5M2Y2YjRmODc2OTEw
ODY3MjE5N2Q2ZS4uNjRkMWVkMDM0NDAxNDNhNDA0ZmJmY2IwNmMxNmQ1NjVmMmFhMmNkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMC0wNC0wNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgQXV0b21hdGlvbjogdGltZW91dCB1bmRlcm5lYXRoIEF1
dG9tYXRpb24uZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24gaW4gU2VsZW5pdW0gdGVzdCBmcmFt
ZV9zd2l0Y2hpbmdfdGVzdHMucHk6OnRlc3RTaG91bGROb3RCZUFibGVUb0RvQW55dGhpbmdUaGVG
cmFtZUlzRGVsZXRlZEZyb21VbmRlclVzW1NhZmFyaV0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMDE2MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjA1NjEwMDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2hlbiBhbiBpZnJhbWUgaXMgZGV0YWNoZWQgZnJvbSB0aGUgRE9NLCBpdCBpcyBubyBsb25n
ZXIgZXhwb3NlZCBhcyBhIGJyb3dzaW5nIGNvbnRleHQKKyAgICAgICAgYW5kIGl0J3Mgbm90IHBv
c3NpYmxlIHRvIEV2YWx1YXRlIEphdmFTY3JpcHQgb3IgcGVyZm9ybSBvdGhlciBjb21tYW5kcyB3
aXRoIGl0LiBUaGlzCisgICAgICAgIHBhdGNoIGFkZHMgZnJhbWUgbGlmZWN5Y2xlIG1vbml0b3Jp
bmcgc28gdGhhdCBwZW5kaW5nIHNjcmlwdCBldmFsdWF0aW9ucyBhcmUgY2FuY2VsbGVkCisgICAg
ICAgIHdpdGggRnJhbWVOb3RGb3VuZCBhcyBzb29uIGFzIHRoZSBpZnJhbWUgaXMgZGV0YWNoZWQg
ZnJvbSB0aGUgRE9NLiBUaGlzIGNoYW5nZSBhbHNvIGF2b2lkcworICAgICAgICBydW5uaW5nIG1v
cmUgY29tbWFuZHMgd2l0aCB0aGUgZnJhbWUgaWYgaXQncyBkZXRhY2hlZCBmcm9tIGl0cyBET01X
aW5kb3cgYW5kIHJlYWR5IHRvIGJlIEdDJ2QuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmg6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uRE9NV2luZG93
T2JzZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvbkRPTVdp
bmRvd09ic2VydmVyOjpXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXI6On5XZWJBdXRvbWF0aW9uRE9N
V2luZG93T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uRE9NV2luZG93
T2JzZXJ2ZXI6OmZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvbkRP
TVdpbmRvd09ic2VydmVyOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXI6OndpbGxEZXN0
cm95R2xvYmFsT2JqZWN0SW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25E
T01XaW5kb3dPYnNlcnZlcjo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSk6CisgICAg
ICAgIFRoaXMgY2xhc3MgaXMgYSBzdHJpcHBlZC1kb3duIGNvcHkgb2YgRE9NV2luZG93RXh0ZW5z
aW9uLCB3aGljaCBpcyB0aGUgb25seSBvdGhlcgorICAgICAgICBjbGllbnQgb2YgRE9NV2luZG93
OjpPYnNlcnZlciBpbnRlcmZhY2UuIFdoZW4gYSBmcmFtZSBpcyBkZXRhY2hlZCwgZGVzdHJveWVk
LCBvcgorICAgICAgICBuYXZpZ2F0ZXMgKGdsb2JhbCBvYmplY3QgZGV0YWNoZWQpLCB0aGVuIGNh
bGwgdGhlIGNhbGxiYWNrIGFuZCB1bnJlZ2lzdGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6On5XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkQ2xl
YXJXaW5kb3dPYmplY3RGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmVuc3Vy
ZU9ic2VydmVyRm9yRnJhbWUpOiBGb3Igbm9uLW1haW4gZnJhbWVzLAorICAgICAgICBlbnN1cmUg
d2UgYWRkIGEgZnJhbWUgb2JzZXJ2ZXIgaWYgd2UgYXJlIGFib3V0IHRvIGV2YWx1YXRlIEphdmFT
Y3JpcHQgdXBvbiB0aGUgZnJhbWUuCisgICAgICAgIFRoaXMgYWN0cyBhcyBhIHdhdGNoZG9nIGlu
IGNhc2UgdGhlIGZyYW1lIGJlY29tZXMgZGV0YWNoZWQgd2hpbGUgd2FpdGluZyBmb3IgcGVuZGlu
ZworICAgICAgICBKUyBldmFsdWF0aW9ucy4gV2hlbiBhIGZyYW1lIGlzIGRldGFjaGVkLCB0aGUg
SlMgZXZhbHVhdGlvbiBtYXkgb3IgbWF5IG5vdCBjb21wbGV0ZS4KKworICAgICAgICAoV2ViS2l0
OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KTogRml4IGhp
bGFyaW91cyB0eXBvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2Ev
SW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFTdHJhdGVneTo6Y2xlYXJOb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhU3RyYXRlZ3k6OnNldE5vd1BsYXlpbmdJbmZvKToKKyAgICAgICAgQWRkaW5nIGEg
bmV3IGZpbGUgc2VlbXMgdG8gaGF2ZSBleHBvc2VkIGEgZmV3IG1pc3NpbmcgaW5jbHVkZXMgYW5k
IG5hbWVzcGFjZSBxdWFsaWZpZXJzLgorICAgICAgICBUaGlzIGlzIGR1ZSB0byB1bmlmaWVkIHNv
dXJjZXMgY2h1bmtpbmcuCisKIDIwMjAtMDQtMDcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjUzMzQ2KTogc29tZSBBdXRvbWF0aW9uIGNvbW1h
bmRzIHRhcmdldGVkIGF0IGFuIGlmcmFtZSBkbyBub3QgcmV0dXJuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaAppbmRleCA3YWFmODQzNzYwNmU4MWQ2MWFlYzQxOWRlNzQ4MGFhM2FkN2NmNGVjLi40MGQ5
YzIzZWUzYWRjN2ViZDY5YzBhZWM0YzgyNDc0ODVhN2Y2NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKQEAgLTE0MCw4ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkgeyB9CiAgICAgfTsKIAotICAgIHZvaWQg
cmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZlciYpOwotICAgIHZvaWQgdW5yZWdpc3Rlck9ic2VydmVy
KE9ic2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3Rlck9ic2VydmVyKE9i
c2VydmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVyT2JzZXJ2ZXIoT2Jz
ZXJ2ZXImKTsKIAogICAgIHZvaWQgcmVzZXRVbmxlc3NTdXNwZW5kZWRGb3JEb2N1bWVudFN1c3Bl
bnNpb24oKTsKICAgICB2b2lkIHN1c3BlbmRGb3JCYWNrRm9yd2FyZENhY2hlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAppbmRleCA1NGViYTNlOThiNmQ4NzIxZGVjYTNmY2Y5NGMxYzE2NjBlZDI3ODZiLi44YjgzM2I3
YjE0N2ViZDQ0NDcwMTE0ZTU0MWRmYmU1ZWNmMmNmMTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTQ4Miw2
ICs0ODIsNyBAQCBXZWJQcm9jZXNzL1dlYlNsZWVwRGlzYWJsZXJDbGllbnQuY3BwCiAKIC8vIEZJ
WE1FKDIwNjI2Nik6IEF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCdzICJuYW1lc3BhY2UgUHJv
dG9jb2wiIGNvbmZsaWN0cyB3aXRoIG9iamMvcnVudGltZS5oJ3MgInR5cGVkZWYgc3RydWN0IG9i
amNfb2JqZWN0IFByb3RvY29sIgogV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwIEBuby11bmlmeQorV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25ET01XaW5kb3dPYnNlcnZlci5jcHAKIAogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0
b3JhZ2VDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VQcm92
aWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDRmY2JkM2M2MzMxYzlhNzZmNDVhODlmZTUyMmQ5YmVhMjA3ZjRlYWEuLmJkYzAw
ZTU3ZTJmYjdkZWM5ZTE0MzFmMjJkMWE1ZTdhNmJiNjI3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM4Nyw2ICsxMzg3LDcgQEAK
IAkJOTkwRDI4QjExQzY1MjA4RDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MEQy
OEFGMUM2NTIwMzkwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmggKi87
IH07CiAJCTk5MEQyOEJCMUM2NTM5RDMwMDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwRDI4
QjcxQzY1MzlBMDAwOTg2OTc3IC8qIEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi87IH07CiAJ
CTk5MEQyOEMwMUM2NTUzRjEwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkwRDI4QjMx
QzY1MjZENDAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi87IH07CisJ
CTk5MEQzOUY1MjQzQkU2NDgwMDE5OTM4OCAvKiBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MEQz
OUYzMjQzQkU2NDcwMDE5OTM4OCAvKiBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuaCAq
LzsgfTsKIAkJOTkwRTFFMDkyMzg0QUE1NzAwNDYwMkRGIC8qIF9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTkwRTFFMDgyMzg0QTg4QjAwNDYwMkRGIC8qIF9XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5MUY0OTJGMjNBODEyQzYwMDU0NjQyQiAvKiBfV0tJ
bnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTkxRjQ5MkQyM0E4MTJDNTAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRl
YnVnZ2FibGVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTkyNDlBRDUxRjFGMUU1NjAwQjYyRkJCIC8qIEF1dG9tYXRpb25Gcm9udGVuZERp
c3BhdGNoZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5MjQ5QUQzMUYxRjFFMzMwMEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRj
aGVycy5jcHAgKi87IH07CkBAIC00NDIwLDYgKzQ0MjEsOCBAQAogCQk5OTBEMjhCMzFDNjUyNkQ0
MDA5ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwRDI4QjcxQzY1MzlBMDAwOTg2OTc3IC8qIEF1dG9tYXRp
b25TZXNzaW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MEQy
OEI4MUM2NTM5QTAwMDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTBEMzlGMjI0M0JFNjQ3MDAxOTkz
ODggLyogV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MEQzOUYzMjQzQkU2NDcwMDE5OTM4OCAv
KiBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk5MEUxRTA4MjM4NEE4OEIwMDQ2MDJERiAvKiBfV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MUY0OTJEMjNBODEyQzUwMDU0NjQyQiAv
KiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTFGNDkyRTIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdn
YWJsZUluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJ
bnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTY0MDksNiArNjQxMiw4IEBACiAJCTFDMEExOTQzMUM4RkYxQTgwMEZFMEVCQiAvKiBBdXRvbWF0
aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5OTBE
MzlGMjI0M0JFNjQ3MDAxOTkzODggLyogV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmNw
cCAqLywKKwkJCQk5OTBEMzlGMzI0M0JFNjQ3MDAxOTkzODggLyogV2ViQXV0b21hdGlvbkRPTVdp
bmRvd09ic2VydmVyLmggKi8sCiAJCQkJMUMwQTE5NDQxQzhGRjFBODAwRkUwRUJCIC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwICovLAogCQkJCTFDMEExOTQ1MUM4RkYxQTgwMEZFMEVC
QiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggKi8sCiAJCQkJMUMwQTE5NUExQzkxNjY5
NTAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuanMgKi8sCkBAIC0xMDgxNCw2
ICsxMDgxOSw3IEBACiAJCQkJODMxMDQyOEIxQkQ2QjY2RjAwQTcxNUU0IC8qIE5ldHdvcmtDYWNo
ZVN1YnJlc291cmNlc0VudHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTNBMTY0RDE2MzBBOUJG
MDA1RDdEMjIgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxREQ5RjI5MTYzNjdEQTIwMDE1NzhFOSAvKiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTBEMzlGNTI0M0JFNjQ4MDAx
OTkzODggLyogV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0JDOUI4RTFDNjUyQ0EwMDBBOEZEQ0YgLyogTmV0
d29ya0RhdGFUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0JBNDdEMTFEQzJFRjVFMDA0REY0
QUQgLyogTmV0d29ya0RhdGFUYXNrQmxvYi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uRE9NV2luZG93
T2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMGYyMmVhYmYyNTVlM2Fm
ZDgxZDEyZWZhYzk1YzM4MzcwYmYzOWRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmNw
cApAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlci5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyOjpXZWJBdXRvbWF0aW9uRE9N
V2luZG93T2JzZXJ2ZXIoRE9NV2luZG93KiB3aW5kb3csIERPTVdyYXBwZXJXb3JsZCYgd29ybGQs
IFdURjo6RnVuY3Rpb248dm9pZChXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXImKT4mJiBj
YWxsYmFjaykKKyAgICA6IG1fd2luZG93KG1ha2VXZWFrUHRyKHdpbmRvdykpCisgICAgLCBtX3dv
cmxkKHdvcmxkKQorICAgICwgbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKK3sKKyAgICBB
U1NFUlQodGhpcy0+ZnJhbWUoKSk7CisgICAgaWYgKG1fd2luZG93KQorICAgICAgICBtX3dpbmRv
dy0+cmVnaXN0ZXJPYnNlcnZlcigqdGhpcyk7Cit9CisKK1dlYkF1dG9tYXRpb25ET01XaW5kb3dP
YnNlcnZlcjo6fldlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlcigpCit7CisgICAgaWYgKG1f
d2luZG93KQorICAgICAgICBtX3dpbmRvdy0+dW5yZWdpc3Rlck9ic2VydmVyKCp0aGlzKTsKK30K
KworRnJhbWUqIFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlcjo6ZnJhbWUoKSBjb25zdAor
eworICAgIHJldHVybiBtX3dpbmRvdyA/IG1fd2luZG93LT5mcmFtZSgpIDogbnVsbHB0cjsKK30K
Kwordm9pZCBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXI6OndpbGxEZXN0cm95R2xvYmFs
T2JqZWN0SW5DYWNoZWRGcmFtZSgpCit7CisgICAgQVNTRVJUKG1fZGlzY29ubmVjdGVkRnJhbWUp
OworCisgICAgUmVmPFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlcj4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CisKKyAgICBtX2NhbGxiYWNrKCp0aGlzKTsKKyAgICBtX2Rpc2Nvbm5lY3RlZEZy
YW1lID0gbnVsbHB0cjsKKworICAgIEFTU0VSVChtX3dpbmRvdyk7CisgICAgaWYgKG1fd2luZG93
KQorICAgICAgICBtX3dpbmRvdy0+dW5yZWdpc3Rlck9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3dp
bmRvdyA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVy
Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKQoreworICAgIEFTU0VSVCghbV9kaXNj
b25uZWN0ZWRGcmFtZSk7CisKKyAgICBSZWY8V2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVy
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKworICAgIGlmICghbV93YXNEZXRhY2hlZCkgeworICAg
ICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOworICAgICAgICBBU1NFUlRfVU5VU0VE
KGZyYW1lLCBmcmFtZSk7CisgICAgICAgIG1fY2FsbGJhY2soKnRoaXMpOworICAgIH0KKworICAg
IEFTU0VSVChtX3dpbmRvdyk7CisgICAgaWYgKG1fd2luZG93KQorICAgICAgICBtX3dpbmRvdy0+
dW5yZWdpc3Rlck9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3dpbmRvdyA9IG51bGxwdHI7Cit9CisK
K3ZvaWQgV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyOjp3aWxsRGV0YWNoR2xvYmFsT2Jq
ZWN0RnJvbUZyYW1lKCkKK3sKKyAgICBBU1NFUlQoIW1fZGlzY29ubmVjdGVkRnJhbWUpOworICAg
IEFTU0VSVCghbV93YXNEZXRhY2hlZCk7CisKKyAgICBSZWY8V2ViQXV0b21hdGlvbkRPTVdpbmRv
d09ic2VydmVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKKworICAgIEZyYW1lKiBmcmFtZSA9IHRo
aXMtPmZyYW1lKCk7CisgICAgQVNTRVJUX1VOVVNFRChmcmFtZSwgZnJhbWUpOworICAgIG1fY2Fs
bGJhY2soKnRoaXMpOworCisgICAgbV93YXNEZXRhY2hlZCA9IHRydWU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mN2Y3ODY1Mzg3YTA5MjVhZWEyNzQ2NGY0NWRkMzg3YjUzZTM1NTZlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvbkRPTVdpbmRvd09ic2VydmVyLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJDb3JlL0RPTVdpbmRvdy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBFbGVtZW50OworY2xhc3MgRnJhbWU7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXI+LCBwdWJsaWMg
V2ViQ29yZTo6RE9NV2luZG93OjpPYnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxX
ZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXI+IGNyZWF0ZShXZWJDb3JlOjpET01XaW5kb3cq
IHdpbmRvdywgV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgV1RGOjpGdW5jdGlvbjx2
b2lkKFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlciYpPiYmIGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2Vy
dmVyKHdpbmRvdywgd29ybGQsIFdURk1vdmUoY2FsbGJhY2spKSk7CisgICAgfQorCisgICAgfldl
YkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlcigpOworCisgICAgLy8gQWxsIG9mIHRoZXNlIG9i
c2VydmVyIGNhbGxiYWNrcyBhcmUgaW50ZXJwcmV0ZWQgYXMgYSBzaWduYWwgdGhhdCBhIGZyYW1l
IGhhcyBiZWVuIGRldGFjaGVkIGFuZAorICAgIC8vIGNhbiBubyBsb25nZXIgYWNjZXB0IG5ldyBj
b21tYW5kcyBub3IgZmluaXNoIHBlbmRpbmcgY29tbWFuZHMgKGVnLCBldmFsdWF0aW5nIEphdmFT
Y3JpcHQpLgorICAgIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCkg
ZmluYWw7CisgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKSBmaW5hbDsK
KyAgICB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKSBmaW5hbDsKKworICAg
IFdlYkNvcmU6OkZyYW1lKiBmcmFtZSgpIGNvbnN0OworICAgIFdlYkNvcmU6OkRPTVdyYXBwZXJX
b3JsZCYgd29ybGQoKSBjb25zdCB7IHJldHVybiBtX3dvcmxkOyB9CisKK3ByaXZhdGU6CisgICAg
V2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyKFdlYkNvcmU6OkRPTVdpbmRvdyosIFdlYkNv
cmU6OkRPTVdyYXBwZXJXb3JsZCYsIFdURjo6RnVuY3Rpb248dm9pZChXZWJBdXRvbWF0aW9uRE9N
V2luZG93T2JzZXJ2ZXImKT4mJik7CisKKyAgICBXZWFrUHRyPFdlYkNvcmU6OkRPTVdpbmRvdz4g
bV93aW5kb3c7CisgICAgUmVmPFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IG1fZGlzY29ubmVjdGVkRnJhbWU7CisgICAgYm9vbCBt
X3dhc0RldGFjaGVkIHsgZmFsc2UgfTsKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQXV0b21h
dGlvbkRPTVdpbmRvd09ic2VydmVyJik+IG1fY2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggNGQ3MDdmYTQ5
ZGEyNjFhNTQ4ODlmYTRkZGU0ZjliYzMyMGVmYWQ0My4uZDljYmQ5ZDJkZjFiZjI0OTlkMTg5Zjk1
MzdkNWIwNTE3NDg2OTI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkF1dG9tYXRpb25Qcm90b2NvbE9iamVjdHMuaCIK
ICNpbmNsdWRlICJDb29yZGluYXRlU3lzdGVtLmgiCisjaW5jbHVkZSAiV2ViQXV0b21hdGlvbkRP
TVdpbmRvd09ic2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25NZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlTY3JpcHRTb3VyY2UuaCIKQEAgLTY0LDYg
KzY1LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxEYXRhTGlzdEVsZW1lbnQuaD4KICNlbmRp
ZgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTE2LDYgKzExOSw4IEBAIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWRlbnRpCiAKIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6On5XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5KCkKIHsKKyAgICBtX2ZyYW1lT2JzZXJ2ZXJzLmNsZWFyKCk7CisKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiB9CiAKQEAgLTI5OCwx
MiArMzAzLDM3IEBAIFdlYkNvcmU6OkVsZW1lbnQqIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OmVsZW1lbnRGb3JOb2RlSGFuZGxlKFdlYkZyYW1lJiBmcmFtCiAgICAgcmV0dXJuICZlbGVtZW50
V3JhcHBlci0+d3JhcHBlZCgpOwogfQogCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OmVuc3VyZU9ic2VydmVyRm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQoreworICAgIC8vIElmIHRo
ZSBmcmFtZSBhbmQgRE9NV2luZG93IGhhdmUgYmVjb21lIGRpc2Nvbm5lY3RlZCwgdGhlbiBmcmFt
ZSBpcyBhbHJlYWR5IGJlaW5nIGRlc3Ryb3llZAorICAgIC8vIGFuZCB0aGVyZSBpcyBubyB3YXkg
dG8gZ2V0IGFjY2VzcyB0byB0aGUgZnJhbWUgZnJvbSB0aGUgb2JzZXJ2ZXIncyBET01XaW5kb3cg
cmVmZXJlbmNlLgorICAgIGlmICghZnJhbWUuY29yZUZyYW1lKCktPndpbmRvdygpIHx8ICFmcmFt
ZS5jb3JlRnJhbWUoKS0+d2luZG93KCktPmZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2ZyYW1lT2JzZXJ2ZXJzLmNvbnRhaW5zKGZyYW1lLmZyYW1lSUQoKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEID0gZnJhbWUuZnJhbWVJRCgp
OworICAgIG1fZnJhbWVPYnNlcnZlcnMuc2V0KGZyYW1lSUQsIFdlYkF1dG9tYXRpb25ET01XaW5k
b3dPYnNlcnZlcjo6Y3JlYXRlKGZyYW1lLmNvcmVGcmFtZSgpLT53aW5kb3coKSwgV2ViQ29yZTo6
bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIFt0aGlzLCBmcmFtZUlEXSAoV2ViQXV0b21hdGlvbkRP
TVdpbmRvd09ic2VydmVyJikgeworICAgICAgICB0aGlzLT53aWxsRGVzdHJveUdsb2JhbE9iamVj
dEZvckZyYW1lKGZyYW1lSUQpOworICAgIH0pKTsKK30KKwogdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkK
IHsKKyAgICB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckZyYW1lKGZyYW1lLmZyYW1lSUQoKSk7
Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6d2lsbERlc3Ryb3lHbG9iYWxP
YmplY3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKK3sKKyAgICAv
LyBUaGUgb2JzZXJ2ZXIgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgbGV0IGl0IGJlY29tZSBHQydkIGFu
ZCB1bnJlZ2lzdGVyIGl0c2VsZiBmcm9tIERPTVdpbmRvdy4KKyAgICBpZiAobV9mcmFtZU9ic2Vy
dmVycy5jb250YWlucyhmcmFtZUlEKSkKKyAgICAgICAgbV9mcmFtZU9ic2VydmVycy5yZW1vdmUo
ZnJhbWVJRCk7CisKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIkNhbGxiYWNrIHdhcyBub3Qg
Y2FsbGVkIGJlZm9yZSB0aGUgdW5sb2FkIGV2ZW50LiJfczsKLSAgICBTdHJpbmcgZXJyb3JUeXBl
ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFu
dFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SmF2
YVNjcmlwdEVycm9yKTsKKyAgICBTdHJpbmcgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7CiAKLSAgICBh
dXRvIHBlbmRpbmdGcmFtZUNhbGxiYWNrcyA9IG1fd2ViRnJhbWVQZW5kaW5nRXZhbHVhdGVKYXZh
U2NyaXB0Q2FsbGJhY2tzTWFwLnRha2UoZnJhbWUuZnJhbWVJRCgpKTsKKyAgICBhdXRvIHBlbmRp
bmdGcmFtZUNhbGxiYWNrcyA9IG1fd2ViRnJhbWVQZW5kaW5nRXZhbHVhdGVKYXZhU2NyaXB0Q2Fs
bGJhY2tzTWFwLnRha2UoZnJhbWVJRCk7CiAgICAgZm9yICh1aW50NjRfdCBjYWxsYmFja0lEIDog
cGVuZGluZ0ZyYW1lQ2FsbGJhY2tzKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJyb3JNZXNz
YWdlLCBlcnJvclR5cGUpLCAwKTsKIH0KQEAgLTMxNywxMiArMzQ3LDE2IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6
UGFnZUlkZW50aWZpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byogZnJhbWUgPSBv
cHRpb25hbEZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqb3B0aW9u
YWxGcmFtZUlEKSA6ICZwYWdlLT5tYWluV2ViRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKSB7Cisg
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpLT53aW5kb3coKSB8fCAhZnJhbWUt
PmNvcmVGcmFtZSgpLT53aW5kb3coKS0+ZnJhbWUoKSkgewogICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJ
RCwgeyB9LAogICAgICAgICAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBl
cnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCkpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorICAgIC8vIE5vIG5lZWQgdG8gdHJhY2sgdGhlIG1haW4gZnJhbWUsIHRoaXMgaXMgaGFu
ZGxlZCBieSBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lLgorICAgIGlmICghZnJhbWUtPmNv
cmVGcmFtZSgpLT5pc01haW5GcmFtZSgpKQorICAgICAgICBlbnN1cmVPYnNlcnZlckZvckZyYW1l
KCpmcmFtZSk7CisKICAgICBKU09iamVjdFJlZiBzY3JpcHRPYmplY3QgPSBzY3JpcHRPYmplY3RG
b3JGcmFtZSgqZnJhbWUpOwogICAgIEFTU0VSVChzY3JpcHRPYmplY3QpOwogCkBAIC03MzUsOCAr
NzY5LDggQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVt
ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2UKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWROb2RlSGFuZGxlKG5vZGVIYW5kbGUpKSB7Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkTm9kZUlk
ZW50aWZpZXJycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJz
OjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpF
cnJvck1lc3NhZ2U6OkludmFsaWROb2RlSWRlbnRpZmllcik7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGludmFsaWROb2RlSWRlbnRpZmllcnJyb3JUeXBlKTsKKyAgICAgICAgU3RyaW5nIGlu
dmFsaWROb2RlSWRlbnRpZmllckVycm9yVHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludmFsaWROb2RlSWRlbnRpZmllcik7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWROb2RlSWRlbnRpZmllckVycm9yVHlwZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCAx
ODVkMTc1N2FmZGRkZjliZWVmMWZjNzY0YjFhMWFkODBhYzA2MGZhLi5mMGJkN2M5ZTM5NTJmOTdj
YmMzNzBiYzkxNjM4ZDVkNjE5ODkwNGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5o
CkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsK
IGNsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXI7CiAK
IGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTMsNiArNTQsNyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIHNlc3Npb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXNzaW9uSWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEZvckZy
YW1lKFdlYkZyYW1lJik7CisgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckZyYW1l
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNj
cmlwdEZ1bmN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgY2FsbGJhY2tJ
RCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGNvbnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKIApAQCAt
NjIsNiArNjQsOCBAQCBwcml2YXRlOgogICAgIEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZvckZy
YW1lKFdlYkZyYW1lJik7CiAgICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudEZvck5vZGVIYW5k
bGUoV2ViRnJhbWUmLCBjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgZW5zdXJlT2JzZXJ2ZXJG
b3JGcmFtZShXZWJGcmFtZSYpOworCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
IApAQCAtODQsNiArODgsNyBAQCBwcml2YXRlOgogICAgIEpTQzo6UHJpdmF0ZU5hbWUgbV9zY3Jp
cHRPYmplY3RJZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFZlY3Rvcjx1aW50NjRfdD4+IG1fd2ViRnJhbWVQZW5kaW5nRXZhbHVhdGVKYXZhU2NyaXB0
Q2FsbGJhY2tzTWFwOworICAgIEhhc2hNYXA8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWZQ
dHI8V2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyPj4gbV9mcmFtZU9ic2VydmVyczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGY2M2Q1NzMzZTMw
MWU1OTQwNDc5MmMwNGIyNGI2MDZkMzc3ZjI1ZjQuLjAwMjE4YWE3MzAxNzhkZGMyNDFjYjVhZjVk
YjQ3MzQ4MjQzZmY0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAKKyNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IGRl
OGRmMjM0MzlmY2FjY2Q1MWI4MDI3ODdiODQyZGVlOWVhMWQ2ZTcuLjJlODYxYTFlNGUzMWUxNDc4
MmEyYjllODMxOThjMTY3YTU5NDYxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRpYVN0cmF0ZWd5LmNwcApAQCAtNjYsNyArNjYsNyBA
QCB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OmNsZWFyTm93UGxheWluZ0luZm8oKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgTWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpjbGVh
ck5vd1BsYXlpbmdJbmZvKCk7CisgICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29h
OjpjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFTdHJhdGVneTo6c2V0
Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgV2Vi
Q29yZTo6Tm93UGxheWluZ0luZm8mIG5vd1BsYXlpbmdJbmZvKQpAQCAtNzgsNyArNzgsNyBAQCB2
b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnNldE5vd1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5
aW5nQXBwbGljYXRpb24sIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAg
ICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6OnNldE5vd1BsYXlpbmdJbmZvKHNldEFzTm93UGxh
eWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5nSW5mbyk7CisgICAgV2ViQ29yZTo6TWVkaWFTZXNz
aW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5aW5nSW5mbyhzZXRBc05vd1BsYXlpbmdBcHBsaWNh
dGlvbiwgbm93UGxheWluZ0luZm8pOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397463</attachid>
            <date>2020-04-24 09:57:29 -0700</date>
            <delta_ts>2020-04-24 10:50:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210162-20200424095728.patch</filename>
            <type>text/plain</type>
            <size>24576</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwNjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGM2ZWFhNGZlZjQ2MjIy
NjZiNTBkZWIxZjRhNzI1OWMzYzBiMTRlZi4uNGI5MjYzYzA4NmI1MGRmNzRkMTM4MTVmZjIxZWQz
NzVjODZjODAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTIzICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBBdXRvbWF0aW9uOiB0aW1l
b3V0IHVuZGVybmVhdGggQXV0b21hdGlvbi5ldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbiBpbiBT
ZWxlbml1bSB0ZXN0IGZyYW1lX3N3aXRjaGluZ190ZXN0cy5weTo6dGVzdFNob3VsZE5vdEJlQWJs
ZVRvRG9Bbnl0aGluZ1RoZUZyYW1lSXNEZWxldGVkRnJvbVVuZGVyVXNbU2FmYXJpXQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwMTYyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82MDU2MTAwOT4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBS
b3Vzc28uCisKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOiBFeHBvc2UgRE9NV2luZG93Ojp7
cmVnaXN0ZXIsIHVucmVnaXN0ZXJ9T2JzZXJ2ZXIuCisKIDIwMjAtMDQtMjQgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIFRha2UgZmlyc3QgaW4t
ZmxvdyB0YWJsZS1yb3cgYmFzZWxpbmUgaW50byBhY2NvdW50IHdoZW4gY29tcHV0aW5nIGNlbGwg
YmFzZWxpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggNDQ4OGZjZmIzYWFhODliYTY3ZWNlODgzZWE2NTIwMjQwMWYx
NTYwMS4uYThjNThhYjNhN2NkN2FkZTdjMjFjNjNkMmJiYzMzMTNmOTJhZjYzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MSBAQAorMjAyMC0wNC0yMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgQXV0b21hdGlvbjogdGltZW91dCB1bmRlcm5lYXRoIEF1dG9tYXRp
b24uZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24gaW4gU2VsZW5pdW0gdGVzdCBmcmFtZV9zd2l0
Y2hpbmdfdGVzdHMucHk6OnRlc3RTaG91bGROb3RCZUFibGVUb0RvQW55dGhpbmdUaGVGcmFtZUlz
RGVsZXRlZEZyb21VbmRlclVzW1NhZmFyaV0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMDE2MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA1NjEw
MDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIFdoZW4g
YW4gaWZyYW1lIGlzIGRldGFjaGVkIGZyb20gdGhlIERPTSwgaXQgaXMgbm8gbG9uZ2VyIGV4cG9z
ZWQgYXMgYSBicm93c2luZyBjb250ZXh0CisgICAgICAgIGFuZCBpdCdzIG5vdCBwb3NzaWJsZSB0
byBFdmFsdWF0ZSBKYXZhU2NyaXB0IG9yIHBlcmZvcm0gb3RoZXIgY29tbWFuZHMgd2l0aCBpdC4g
VGhpcworICAgICAgICBwYXRjaCBhZGRzIGZyYW1lIGxpZmVjeWNsZSBtb25pdG9yaW5nIHNvIHRo
YXQgcGVuZGluZyBzY3JpcHQgZXZhbHVhdGlvbnMgYXJlIGNhbmNlbGxlZAorICAgICAgICB3aXRo
IEZyYW1lTm90Rm91bmQgYXMgc29vbiBhcyB0aGUgaWZyYW1lIGlzIGRldGFjaGVkIGZyb20gdGhl
IERPTS4gVGhpcyBjaGFuZ2UgYWxzbyBhdm9pZHMKKyAgICAgICAgcnVubmluZyBtb3JlIGNvbW1h
bmRzIHdpdGggdGhlIGZyYW1lIGlmIGl0J3MgZGV0YWNoZWQgZnJvbSBpdHMgRE9NV2luZG93IGFu
ZCByZWFkeSB0byBiZSBHQydkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVy
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNl
cnZlcjo6V2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyOjp+V2ViQXV0b21hdGlvbkRPTVdpbmRvd09i
c2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVy
OjpmcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25ET01XaW5kb3dP
YnNlcnZlcjo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyOjp3aWxsRGVzdHJveUdsb2Jh
bE9iamVjdEluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uRE9NV2luZG93
T2JzZXJ2ZXI6OndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUpOgorICAgICAgICBUaGlz
IGNsYXNzIGlzIGEgc3RyaXBwZWQtZG93biBjb3B5IG9mIERPTVdpbmRvd0V4dGVuc2lvbiwgd2hp
Y2ggaXMgdGhlIG9ubHkgb3RoZXIKKyAgICAgICAgY2xpZW50IG9mIERPTVdpbmRvdzo6T2JzZXJ2
ZXIgaW50ZXJmYWNlLiBXaGVuIGEgZnJhbWUgaXMgZGV0YWNoZWQsIGRlc3Ryb3llZCwgb3IKKyAg
ICAgICAgbmF2aWdhdGVzIChnbG9iYWwgb2JqZWN0IGRldGFjaGVkKSwgdGhlbiBjYWxsIHRoZSBj
YWxsYmFjayBhbmQgdW5yZWdpc3Rlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp+V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93
T2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Ojp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjplbnN1cmVPYnNlcnZl
ckZvckZyYW1lKTogRm9yIG5vbi1tYWluIGZyYW1lcywKKyAgICAgICAgZW5zdXJlIHdlIGFkZCBh
IGZyYW1lIG9ic2VydmVyIGlmIHdlIGFyZSBhYm91dCB0byBldmFsdWF0ZSBKYXZhU2NyaXB0IHVw
b24gdGhlIGZyYW1lLgorICAgICAgICBUaGlzIGFjdHMgYXMgYSB3YXRjaGRvZyBpbiBjYXNlIHRo
ZSBmcmFtZSBiZWNvbWVzIGRldGFjaGVkIHdoaWxlIHdhaXRpbmcgZm9yIHBlbmRpbmcKKyAgICAg
ICAgSlMgZXZhbHVhdGlvbnMuIFdoZW4gYSBmcmFtZSBpcyBkZXRhY2hlZCwgdGhlIEpTIGV2YWx1
YXRpb24gbWF5IG9yIG1heSBub3QgY29tcGxldGUuCisKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudCk6IEZpeCBoaWxhcmlvdXMg
dHlwby4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvV2ViTWVkaWFTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlh
U3RyYXRlZ3k6OmNsZWFyTm93UGxheWluZ0luZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmF0ZWd5OjpzZXROb3dQbGF5aW5nSW5mbyk6CisgICAgICAgIEFkZGluZyBhIG5ldyBmaWxl
IHNlZW1zIHRvIGhhdmUgZXhwb3NlZCBhIGZldyBtaXNzaW5nIGluY2x1ZGVzIGFuZCBuYW1lc3Bh
Y2UgcXVhbGlmaWVycy4KKyAgICAgICAgVGhpcyBpcyBkdWUgdG8gdW5pZmllZCBzb3VyY2VzIGNo
dW5raW5nLgorCiAyMDIwLTA0LTI0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vdmUgc29tZSBwb3N0LXJlbmRlcmluZ1VwZGF0ZSBjb2RlIGludG8g
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKaW5kZXggN2FhZjg0Mzc2MDZlODFkNjFhZWM0
MTlkZTc0ODBhYTNhZDdjZjRlYy4uNDBkOWMyM2VlM2FkYzdlYmQ2OWMwYWVjNGM4MjQ3NDg1YTdm
NjcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCkBAIC0xNDAsOCArMTQwLDggQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgp
IHsgfQogICAgIH07CiAKLSAgICB2b2lkIHJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKLSAg
ICB2b2lkIHVucmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZlciYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVnaXN0ZXJPYnNlcnZlcihPYnNlcnZlciYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdW5yZWdpc3Rlck9ic2VydmVyKE9ic2VydmVyJik7CiAKICAgICB2b2lkIHJlc2V0VW5sZXNz
U3VzcGVuZGVkRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiAgICAgdm9pZCBzdXNwZW5kRm9yQmFj
a0ZvcndhcmRDYWNoZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggMWFlMWQ3MWUxMjc1MjU4MjM3YjdlYTkx
NmEwNDVmMzNhYTIwOGMwNy4uYWQwMTZiZWU1N2QyZDFjOWQ4ZTgyNjdjZjExODFiN2E4ODMzYTM5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC00ODUsNiArNDg1LDcgQEAgV2ViUHJvY2Vzcy9XZWJTbGVlcERp
c2FibGVyQ2xpZW50LmNwcAogCiAvLyBGSVhNRSgyMDYyNjYpOiBBdXRvbWF0aW9uUHJvdG9jb2xP
YmplY3RzLmgncyAibmFtZXNwYWNlIFByb3RvY29sIiBjb25mbGljdHMgd2l0aCBvYmpjL3J1bnRp
bWUuaCdzICJ0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCBQcm90b2NvbCIKIFdlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBAbm8tdW5pZnkKK1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuY3BwCiAKIFdl
YlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3Mv
Q2FjaGUvV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MWE4NTNkMzk1ZmNlNGQyNDEwNDc0
YWYxNWM5YjU1ZmFmYTE5MTI2Li4wNzU1ODc3Y2UyMDQ5OTZiOWQzZDQ0ZGQzZjJhODYyMzE3YTIw
ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEzOTMsNiArMTM5Myw3IEBACiAJCTk5MEQyOEIxMUM2NTIwOEQwMDk4Njk3NyAvKiBf
V0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEMjhBRjFDNjUyMDM5MDA5ODY5NzcgLyogX1dLQXV0b21h
dGlvblNlc3Npb25JbnRlcm5hbC5oICovOyB9OwogCQk5OTBEMjhCQjFDNjUzOUQzMDA5ODY5Nzcg
LyogQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5MEQyOEI3MUM2NTM5QTAwMDk4Njk3NyAvKiBBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5oICovOyB9OwogCQk5OTBEMjhDMDFDNjU1M0YxMDA5ODY5NzcgLyogQVBJ
QXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5MEQyOEIzMUM2NTI2RDQwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9u
U2Vzc2lvbkNsaWVudC5oICovOyB9OworCQk5OTBEMzlGNTI0M0JFNjQ4MDAxOTkzODggLyogV2Vi
QXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5OTBEMzlGMzI0M0JFNjQ3MDAxOTkzODggLyogV2ViQXV0b21h
dGlvbkRPTVdpbmRvd09ic2VydmVyLmggKi87IH07CiAJCTk5MEUxRTA5MjM4NEFBNTcwMDQ2MDJE
RiAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MEUxRTA4MjM4NEE4OEIw
MDQ2MDJERiAvKiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5OTFGNDky
RjIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MUY0OTJEMjNBODEyQzUw
MDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk5MjQ5QUQ1MUYxRjFFNTYwMEI2MkZC
QiAvKiBBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI0OUFEMzFGMUYxRTMzMDBCNjJGQkIgLyog
QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwpAQCAtNDQ0Miw2ICs0NDQz
LDggQEAKIAkJOTkwRDI4QjMxQzY1MjZENDAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9u
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MEQyOEI3MUM2
NTM5QTAwMDk4Njk3NyAvKiBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTBEMjhCODFDNjUzOUEwMDA5ODY5NzcgLyogQXV0b21hdGlv
blNlc3Npb25DbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTkwRDM5RjIyNDNCRTY0NzAwMTk5Mzg4IC8qIFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNl
cnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdXRvbWF0
aW9uRE9NV2luZG93T2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
OTBEMzlGMzI0M0JFNjQ3MDAxOTkzODggLyogV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF1dG9tYXRpb25ET01XaW5k
b3dPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTBFMUUwODIzODRB
ODhCMDA0NjAyREYgLyogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTFGNDkyRDIzQTgxMkM1MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRGVidWdnYWJsZUlu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkxRjQ5MkUyM0E4MTJDNjAwNTQ2
NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDYwLDYgKzY0NjMsOCBAQAogCQkxQzBBMTk0MzFD
OEZGMUE4MDBGRTBFQkIgLyogQXV0b21hdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJOTkwRDM5RjIyNDNCRTY0NzAwMTk5Mzg4IC8qIFdlYkF1dG9t
YXRpb25ET01XaW5kb3dPYnNlcnZlci5jcHAgKi8sCisJCQkJOTkwRDM5RjMyNDNCRTY0NzAwMTk5
Mzg4IC8qIFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlci5oICovLAogCQkJCTFDMEExOTQ0
MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCAqLywKIAkJ
CQkxQzBBMTk0NTFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5o
ICovLAogCQkJCTFDMEExOTVBMUM5MTY2OTUwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmpzICovLApAQCAtMTExNjgsNiArMTExNzMsNyBAQAogCQkJCTU3RENFREIzMjE0QzYw
NTMwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTdEQ0VENzEyMTQyRUU2QzAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0MkQ2MzQxMjJB
MEVGREYwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk5MEQzOUY1MjQzQkU2NDgwMDE5OTM4OCAvKiBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2Jz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTVBNkVDMUM3OTgwQzIwMEVCNkE5MyAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDM0FFMkQxREFEQTZB
RDAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQzBBMTk1ODFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25NZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2Vy
dmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNmM1NzQxMWJiNTljNjE2YjE5ODA0N2U2Y2ZjMWEyZjdmYWI0
YmFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyLmNwcApAQCAtMCwwICsxLDk0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkF1dG9tYXRpb25E
T01XaW5kb3dPYnNlcnZlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQXV0b21h
dGlvbkRPTVdpbmRvd09ic2VydmVyOjpXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIoRE9N
V2luZG93JiB3aW5kb3csIFdURjo6RnVuY3Rpb248dm9pZChXZWJBdXRvbWF0aW9uRE9NV2luZG93
T2JzZXJ2ZXImKT4mJiBjYWxsYmFjaykKKyAgICA6IG1fd2luZG93KG1ha2VXZWFrUHRyKHdpbmRv
dykpCisgICAgLCBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQoreworICAgIEFTU0VSVCht
X3dpbmRvdy0+ZnJhbWUoKSk7CisgICAgbV93aW5kb3ctPnJlZ2lzdGVyT2JzZXJ2ZXIoKnRoaXMp
OworfQorCitXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXI6On5XZWJBdXRvbWF0aW9uRE9N
V2luZG93T2JzZXJ2ZXIoKQoreworICAgIGlmIChtX3dpbmRvdykKKyAgICAgICAgbV93aW5kb3ct
PnVucmVnaXN0ZXJPYnNlcnZlcigqdGhpcyk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvbkRPTVdp
bmRvd09ic2VydmVyOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKQorewor
ICAgIFJlZjxXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOworCisgICAgaWYgKCFtX3dhc0RldGFjaGVkKSB7CisgICAgICAgIEFTU0VSVChtX3dpbmRv
dyAmJiBtX3dpbmRvdy0+ZnJhbWUoKSk7CisgICAgICAgIG1fY2FsbGJhY2soKnRoaXMpOworICAg
IH0KKworICAgIEFTU0VSVChtX3dpbmRvdyk7CisgICAgaWYgKG1fd2luZG93KQorICAgICAgICBt
X3dpbmRvdy0+dW5yZWdpc3Rlck9ic2VydmVyKCp0aGlzKTsKKyAgICBtX3dpbmRvdyA9IG51bGxw
dHI7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyOjp3aWxsRGVzdHJv
eUdsb2JhbE9iamVjdEluRnJhbWUoKQoreworICAgIFJlZjxXZWJBdXRvbWF0aW9uRE9NV2luZG93
T2JzZXJ2ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOworCisgICAgaWYgKCFtX3dhc0RldGFjaGVk
KSB7CisgICAgICAgIEFTU0VSVChtX3dpbmRvdyAmJiBtX3dpbmRvdy0+ZnJhbWUoKSk7CisgICAg
ICAgIG1fY2FsbGJhY2soKnRoaXMpOworICAgIH0KKworICAgIEFTU0VSVChtX3dpbmRvdyk7Cisg
ICAgaWYgKG1fd2luZG93KQorICAgICAgICBtX3dpbmRvdy0+dW5yZWdpc3Rlck9ic2VydmVyKCp0
aGlzKTsKKyAgICBtX3dpbmRvdyA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvbkRP
TVdpbmRvd09ic2VydmVyOjp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkKK3sKKyAg
ICBBU1NFUlQoIW1fd2FzRGV0YWNoZWQpOworCisgICAgUmVmPFdlYkF1dG9tYXRpb25ET01XaW5k
b3dPYnNlcnZlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CisKKyAgICBtX3dhc0RldGFjaGVkID0g
dHJ1ZTsKKworICAgIG1fY2FsbGJhY2soKnRoaXMpOworCisgICAgQVNTRVJUKG1fd2luZG93KTsK
KyAgICBpZiAobV93aW5kb3cpCisgICAgICAgIG1fd2luZG93LT51bnJlZ2lzdGVyT2JzZXJ2ZXIo
KnRoaXMpOworICAgIG1fd2luZG93ID0gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRj
ZThkYjE2MDNmZDhkNDBmN2EyY2YxM2ZmMmJhODg2YWExNGIxNjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uRE9NV2lu
ZG93T2JzZXJ2ZXIuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvdy5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEZyYW1lOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyPiwgcHVibGlj
IFdlYkNvcmU6OkRPTVdpbmRvdzo6T2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyPiBjcmVhdGUoV2ViQ29yZTo6RE9NV2luZG93
JiB3aW5kb3csIFdURjo6RnVuY3Rpb248dm9pZChXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2
ZXImKT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlcih3aW5kb3csIFdURk1vdmUoY2FsbGJhY2spKSk7
CisgICAgfQorCisgICAgfldlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlcigpOworCisgICAg
Ly8gQWxsIG9mIHRoZXNlIG9ic2VydmVyIGNhbGxiYWNrcyBhcmUgaW50ZXJwcmV0ZWQgYXMgYSBz
aWduYWwgdGhhdCBhIGZyYW1lIGhhcyBiZWVuIGRldGFjaGVkIGFuZAorICAgIC8vIGNhbiBubyBs
b25nZXIgYWNjZXB0IG5ldyBjb21tYW5kcyBub3IgZmluaXNoIHBlbmRpbmcgY29tbWFuZHMgKGVn
LCBldmFsdWF0aW5nIEphdmFTY3JpcHQpLgorICAgIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RJbkNhY2hlZEZyYW1lKCkgZmluYWw7CisgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVj
dEluRnJhbWUoKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJh
bWUoKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2
ZXIoV2ViQ29yZTo6RE9NV2luZG93JiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYkF1dG9tYXRpb25E
T01XaW5kb3dPYnNlcnZlciYpPiYmKTsKKworICAgIFdlYWtQdHI8V2ViQ29yZTo6RE9NV2luZG93
PiBtX3dpbmRvdzsKKyAgICBib29sIG1fd2FzRGV0YWNoZWQgeyBmYWxzZSB9OworICAgIFdURjo6
RnVuY3Rpb248dm9pZChXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXImKT4gbV9jYWxsYmFj
azsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmNwcAppbmRleCA0ZDcwN2ZhNDlkYTI2MWE1NDg4OWZhNGRkZTRmOWJjMzIwZWZhZDQzLi4w
ODgxYTg2MzJkNjRiOTQwNTg2OWE5NjY2ZmU3NGY2N2Q1NDE0ZDAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQXV0b21h
dGlvblByb3RvY29sT2JqZWN0cy5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVTeXN0ZW0uaCIKKyNp
bmNsdWRlICJXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJB
dXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eVNj
cmlwdFNvdXJjZS5oIgpAQCAtNjQsNiArNjUsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRNTERh
dGFMaXN0RWxlbWVudC5oPgogI2VuZGlmCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0xMTYsNiArMTE5
LDggQEAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eShjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGkKIAogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6fldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkoKQogeworICAgIG1fZnJhbWVPYnNlcnZlcnMu
Y2xlYXIoKTsKKwogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpKTsKIH0KIApAQCAtMjk4LDEyICszMDMsMzcgQEAgV2ViQ29yZTo6RWxlbWVudCogV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZWxlbWVudEZvck5vZGVIYW5kbGUoV2ViRnJhbWUmIGZy
YW0KICAgICByZXR1cm4gJmVsZW1lbnRXcmFwcGVyLT53cmFwcGVkKCk7CiB9CiAKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZW5zdXJlT2JzZXJ2ZXJGb3JGcmFtZShXZWJGcmFtZSYg
ZnJhbWUpCit7CisgICAgLy8gSWYgdGhlIGZyYW1lIGFuZCBET01XaW5kb3cgaGF2ZSBiZWNvbWUg
ZGlzY29ubmVjdGVkLCB0aGVuIGZyYW1lIGlzIGFscmVhZHkgYmVpbmcgZGVzdHJveWVkCisgICAg
Ly8gYW5kIHRoZXJlIGlzIG5vIHdheSB0byBnZXQgYWNjZXNzIHRvIHRoZSBmcmFtZSBmcm9tIHRo
ZSBvYnNlcnZlcidzIERPTVdpbmRvdyByZWZlcmVuY2UuCisgICAgaWYgKCFmcmFtZS5jb3JlRnJh
bWUoKS0+d2luZG93KCkgfHwgIWZyYW1lLmNvcmVGcmFtZSgpLT53aW5kb3coKS0+ZnJhbWUoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZnJhbWVPYnNlcnZlcnMuY29udGFpbnMoZnJh
bWUuZnJhbWVJRCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBmcmFtZUlEID0gZnJh
bWUuZnJhbWVJRCgpOworICAgIG1fZnJhbWVPYnNlcnZlcnMuc2V0KGZyYW1lSUQsIFdlYkF1dG9t
YXRpb25ET01XaW5kb3dPYnNlcnZlcjo6Y3JlYXRlKCpmcmFtZS5jb3JlRnJhbWUoKS0+d2luZG93
KCksIFt0aGlzLCBmcmFtZUlEXSAoV2ViQXV0b21hdGlvbkRPTVdpbmRvd09ic2VydmVyJikgewor
ICAgICAgICB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckZyYW1lKGZyYW1lSUQpOworICAgIH0p
KTsKK30KKwogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRDbGVhcldpbmRvd09i
amVjdEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKIHsKKyAgICB3aWxsRGVzdHJveUdsb2JhbE9i
amVjdEZvckZyYW1lKGZyYW1lLmZyYW1lSUQoKSk7Cit9CisKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6d2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JGcmFtZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCkKK3sKKyAgICAvLyBUaGUgb2JzZXJ2ZXIgaXMgbm8gbG9uZ2Vy
IG5lZWRlZCwgbGV0IGl0IGJlY29tZSBHQydkIGFuZCB1bnJlZ2lzdGVyIGl0c2VsZiBmcm9tIERP
TVdpbmRvdy4KKyAgICBpZiAobV9mcmFtZU9ic2VydmVycy5jb250YWlucyhmcmFtZUlEKSkKKyAg
ICAgICAgbV9mcmFtZU9ic2VydmVycy5yZW1vdmUoZnJhbWVJRCk7CisKICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlID0gIkNhbGxiYWNrIHdhcyBub3QgY2FsbGVkIGJlZm9yZSB0aGUgdW5sb2FkIGV2
ZW50LiJfczsKLSAgICBTdHJpbmcgZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6SmF2YVNjcmlwdEVycm9yKTsKKyAgICBTdHJpbmcg
ZXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVu
dW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVz
c2FnZTo6RnJhbWVOb3RGb3VuZCk7CiAKLSAgICBhdXRvIHBlbmRpbmdGcmFtZUNhbGxiYWNrcyA9
IG1fd2ViRnJhbWVQZW5kaW5nRXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tzTWFwLnRha2UoZnJh
bWUuZnJhbWVJRCgpKTsKKyAgICBhdXRvIHBlbmRpbmdGcmFtZUNhbGxiYWNrcyA9IG1fd2ViRnJh
bWVQZW5kaW5nRXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tzTWFwLnRha2UoZnJhbWVJRCk7CiAg
ICAgZm9yICh1aW50NjRfdCBjYWxsYmFja0lEIDogcGVuZGluZ0ZyYW1lQ2FsbGJhY2tzKQogICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0
RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJyb3JNZXNzYWdlLCBlcnJvclR5cGUpLCAwKTsKIH0KQEAg
LTMxNywxMiArMzQ3LDE2IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgYXV0byogZnJhbWUgPSBvcHRpb25hbEZyYW1lSUQgPyBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqb3B0aW9uYWxGcmFtZUlEKSA6ICZwYWdlLT5tYWluV2Vi
RnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKSB7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNv
cmVGcmFtZSgpLT53aW5kb3coKSB8fCAhZnJhbWUtPmNvcmVGcmFtZSgpLT53aW5kb3coKS0+ZnJh
bWUoKSkgewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgeyB9LAogICAgICAgICAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3Vu
ZCkpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIE5vIG5lZWQgdG8gdHJh
Y2sgdGhlIG1haW4gZnJhbWUsIHRoaXMgaXMgaGFuZGxlZCBieSBkaWRDbGVhcldpbmRvd09iamVj
dEZvckZyYW1lLgorICAgIGlmICghZnJhbWUtPmNvcmVGcmFtZSgpLT5pc01haW5GcmFtZSgpKQor
ICAgICAgICBlbnN1cmVPYnNlcnZlckZvckZyYW1lKCpmcmFtZSk7CisKICAgICBKU09iamVjdFJl
ZiBzY3JpcHRPYmplY3QgPSBzY3JpcHRPYmplY3RGb3JGcmFtZSgqZnJhbWUpOwogICAgIEFTU0VS
VChzY3JpcHRPYmplY3QpOwogCkBAIC03MzUsOCArNzY5LDggQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2UKICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWROb2RlSGFuZGxlKG5vZGVIYW5kbGUpKSB7
Ci0gICAgICAgIFN0cmluZyBpbnZhbGlkTm9kZUlkZW50aWZpZXJycm9yVHlwZSA9IEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6OkludmFsaWROb2RlSWRl
bnRpZmllcik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWROb2RlSWRlbnRpZmll
cnJyb3JUeXBlKTsKKyAgICAgICAgU3RyaW5nIGludmFsaWROb2RlSWRlbnRpZmllckVycm9yVHlw
ZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb25IZWxwZXJzOjpnZXRFbnVtQ29uc3Rh
bnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpFcnJvck1lc3NhZ2U6Oklu
dmFsaWROb2RlSWRlbnRpZmllcik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGludmFsaWRO
b2RlSWRlbnRpZmllckVycm9yVHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCAxODVkMTc1N2FmZGRkZjliZWVmMWZjNzY0YjFh
MWFkODBhYzA2MGZhLi5mMGJkN2M5ZTM5NTJmOTdjYmMzNzBiYzkxNjM4ZDVkNjE5ODkwNGNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYlBhZ2U7CitjbGFzcyBXZWJB
dXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXI7CiAKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNTMsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHNlc3Npb25J
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSWRlbnRpZmllcjsgfQogCiAgICAg
dm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYkZyYW1lJik7CisgICAgdm9pZCB3
aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7
CiAKICAgICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgdWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQsIGNv
bnN0IFN0cmluZyYgZXJyb3JUeXBlKTsKIApAQCAtNjIsNiArNjQsOCBAQCBwcml2YXRlOgogICAg
IEpTT2JqZWN0UmVmIHNjcmlwdE9iamVjdEZvckZyYW1lKFdlYkZyYW1lJik7CiAgICAgV2ViQ29y
ZTo6RWxlbWVudCogZWxlbWVudEZvck5vZGVIYW5kbGUoV2ViRnJhbWUmLCBjb25zdCBTdHJpbmcm
KTsKIAorICAgIHZvaWQgZW5zdXJlT2JzZXJ2ZXJGb3JGcmFtZShXZWJGcmFtZSYpOworCiAgICAg
Ly8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIApAQCAtODQsNiArODgsNyBAQCBwcml2YXRl
OgogICAgIEpTQzo6UHJpdmF0ZU5hbWUgbV9zY3JpcHRPYmplY3RJZGVudGlmaWVyOwogCiAgICAg
SGFzaE1hcDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFZlY3Rvcjx1aW50NjRfdD4+IG1fd2Vi
RnJhbWVQZW5kaW5nRXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tzTWFwOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBSZWZQdHI8V2ViQXV0b21hdGlvbkRPTVdpbmRvd09i
c2VydmVyPj4gbV9mcmFtZU9ic2VydmVyczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZUlPU3VyZmFj
ZUJhY2tlbmQuY3BwCmluZGV4IGY2M2Q1NzMzZTMwMWU1OTQwNDc5MmMwNGIyNGI2MDZkMzc3ZjI1
ZjQuLjAwMjE4YWE3MzAxNzhkZGMyNDFjYjVhZjVkYjQ3MzQ4MjQzZmY0OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJT
aGFyZWFibGVJT1N1cmZhY2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlSU9TdXJmYWNlQmFja2Vu
ZC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAjaWYgSEFW
RShJT1NVUkZBQ0UpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
V2ViTWVkaWFTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1dlYk1lZGlhU3RyYXRlZ3kuY3BwCmluZGV4IGRlOGRmMjM0MzlmY2FjY2Q1MWI4MDI3ODdiODQy
ZGVlOWVhMWQ2ZTcuLjJlODYxYTFlNGUzMWUxNDc4MmEyYjllODMxOThjMTY3YTU5NDYxMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvV2ViTWVkaWFTdHJh
dGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9XZWJNZWRp
YVN0cmF0ZWd5LmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OmNs
ZWFyTm93UGxheWluZ0luZm8oKQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAg
TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpjbGVhck5vd1BsYXlpbmdJbmZvKCk7CisgICAgV2Vi
Q29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpjbGVhck5vd1BsYXlpbmdJbmZvKCk7CiB9
CiAKIHZvaWQgV2ViTWVkaWFTdHJhdGVneTo6c2V0Tm93UGxheWluZ0luZm8oYm9vbCBzZXRBc05v
d1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgV2ViQ29yZTo6Tm93UGxheWluZ0luZm8mIG5vd1Bs
YXlpbmdJbmZvKQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFdlYk1lZGlhU3RyYXRlZ3k6OnNldE5v
d1BsYXlpbmdJbmZvKGJvb2wgc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBNZWRpYVNlc3Npb25NYW5hZ2VyQ29jb2E6
OnNldE5vd1BsYXlpbmdJbmZvKHNldEFzTm93UGxheWluZ0FwcGxpY2F0aW9uLCBub3dQbGF5aW5n
SW5mbyk7CisgICAgV2ViQ29yZTo6TWVkaWFTZXNzaW9uTWFuYWdlckNvY29hOjpzZXROb3dQbGF5
aW5nSW5mbyhzZXRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgbm93UGxheWluZ0luZm8pOwogfQog
I2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>