<?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>130099</bug_id>
          
          <creation_ts>2014-03-11 16:22:12 -0700</creation_ts>
          <short_desc>Unify private browsing with sessions</short_desc>
          <delta_ts>2014-04-02 13:08:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Hock">mhock</reporter>
          <assigned_to name="Martin Hock">mhock</assigned_to>
          <cc>ap</cc>
    
    <cc>berto</cc>
    
    <cc>bunhere</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mkwst</cc>
    
    <cc>mrobinson</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>989450</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-11 16:22:12 -0700</bug_when>
    <thetext>Unify private browsing with sessions.

Remove private browsing setting from WebCore::Settings and replace use with sessions. Reference-count sessions in SessionTracker to properly dispose of unused sessions and to allow implementation of WebContext::somePageIsPrivateBrowsing (needed for WebIconDatabase&apos;s private browsing setting). Update corresponding WebKit2 session code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989475</commentid>
    <comment_count>1</comment_count>
      <attachid>226453</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-11 17:45:48 -0700</bug_when>
    <thetext>Created attachment 226453
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989483</commentid>
    <comment_count>2</comment_count>
      <attachid>226459</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-11 18:20:52 -0700</bug_when>
    <thetext>Created attachment 226459
style + gtk build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989841</commentid>
    <comment_count>3</comment_count>
      <attachid>226554</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-12 15:24:34 -0700</bug_when>
    <thetext>Created attachment 226554
efl + gtk build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989971</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2014-03-13 02:41:54 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990080</commentid>
    <comment_count>5</comment_count>
      <attachid>226601</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-13 11:16:50 -0700</bug_when>
    <thetext>Created attachment 226601
efl fix + restore test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991350</commentid>
    <comment_count>6</comment_count>
      <attachid>226948</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-17 13:10:53 -0700</bug_when>
    <thetext>Created attachment 226948
new window inherits session</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991382</commentid>
    <comment_count>7</comment_count>
      <attachid>226960</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-17 14:05:45 -0700</bug_when>
    <thetext>Created attachment 226960
gtk build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992578</commentid>
    <comment_count>8</comment_count>
      <attachid>226960</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-20 10:25:47 -0700</bug_when>
    <thetext>Comment on attachment 226960
gtk build fix

The refactoring looks like a good idea. This patch also includes a bug fix, which is not the right way to fix it. As discussed in person, please fix it in a separate bug.

When session ID is set in createNewPage, it should be captured in WebPageCreationParameters, and passed back to WebProcess as a response to createNewPage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992727</commentid>
    <comment_count>9</comment_count>
      <attachid>227334</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-20 14:19:31 -0700</bug_when>
    <thetext>Created attachment 227334
remove bug fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992760</commentid>
    <comment_count>10</comment_count>
      <attachid>227334</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-20 15:15:04 -0700</bug_when>
    <thetext>Comment on attachment 227334
remove bug fix

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Unless otherwise noted, the following consists solely of mechanical changes to replace querying WebCore::Settings::privateBrowsingEnabled() with Page::sessionID().isEphemeral().

In addition to this, the patch fixes session leaks by introducing refcounting.

I&apos;m very concerned about this, as I think that it&apos;s not possible to implement session refcounting for as long as we support old private browsing SPI. Having a large patch with many mechanical changes makes it very difficult to verify whether this works.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:1237
&gt; +    bool privateMode = document().page() &amp;&amp; document().page()-&gt;sessionID().isEphemeral();

SessionID still annoys me to no end. An ID can&apos;t be ephemeral, it&apos;s a concrete immutable unsigned number.

I think that for this patch, a reasonable approach would be changing page()-&gt;sessionID().isEphemeral() to page()-&gt;usesEphemeralSession(), and then we should fix the SessionID class.

&gt; Source/WebCore/page/Page.cpp:1497
&gt; +    ASSERT(m_sessionID.isValid());

I thought this change made it do that every page had a session. How can one be invalid?

&gt; Source/WebCore/page/Page.cpp:1517
&gt; +    if (sessionID != m_sessionID) {
&gt; +        m_sessionID = sessionID;
&gt; +
&gt; +        for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
&gt; +            frame-&gt;document()-&gt;privateBrowsingStateDidChange();
&gt; +
&gt; +        // Collect the PluginViews in to a vector to ensure that action the plug-in takes
&gt; +        // from below privateBrowsingStateChanged does not affect their lifetime.
&gt; +        auto views = pluginViews();
&gt; +
&gt; +        for (unsigned i = 0; i &lt; views.size(); ++i)
&gt; +            views[i]-&gt;privateBrowsingStateChanged(sessionID.isEphemeral());
&gt; +    }

It might not matter in current use, but this code is not correct in general case - we probably don&apos;t want to call privateBrowsingStateDidChange when session changes, but private browsing state doesn&apos;t change.

Also,
- we prefer early return to nesting code;
- for loops should be C++ style.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/EphemeralSessionPushStateNoHistoryCallback.cpp:47
&gt; +TEST(WebKit2, EphemeralSessionPushStateNoHistoryCallback)

Does this test for yet another bug that is fixed in this patch? Which bug is that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994344</commentid>
    <comment_count>11</comment_count>
      <attachid>227800</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-25 14:42:50 -0700</bug_when>
    <thetext>Created attachment 227800
remove changes to reference counting, change isUsingEphemeralSession to usesEphemeralSession</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994410</commentid>
    <comment_count>12</comment_count>
      <attachid>227810</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-25 15:39:03 -0700</bug_when>
    <thetext>Created attachment 227810
fix gtk build + address Page comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994413</commentid>
    <comment_count>13</comment_count>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-25 15:44:55 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 227334 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=227334&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Unless otherwise noted, the following consists solely of mechanical changes to replace querying WebCore::Settings::privateBrowsingEnabled() with Page::sessionID().isEphemeral().
&gt; 
&gt; In addition to this, the patch fixes session leaks by introducing refcounting.
&gt; 
&gt; I&apos;m very concerned about this, as I think that it&apos;s not possible to implement session refcounting for as long as we support old private browsing SPI. Having a large patch with many mechanical changes makes it very difficult to verify whether this works.

OK, I have gotten rid of the refcounting changes for this patch.

&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:1237
&gt; &gt; +    bool privateMode = document().page() &amp;&amp; document().page()-&gt;sessionID().isEphemeral();
&gt; 
&gt; SessionID still annoys me to no end. An ID can&apos;t be ephemeral, it&apos;s a concrete immutable unsigned number.
&gt; 
&gt; I think that for this patch, a reasonable approach would be changing page()-&gt;sessionID().isEphemeral() to page()-&gt;usesEphemeralSession(), and then we should fix the SessionID class.

Renamed (as well as renaming the parallel WebPage::isUsingEphemeralSession()).
 
&gt; &gt; Source/WebCore/page/Page.cpp:1497
&gt; &gt; +    ASSERT(m_sessionID.isValid());
&gt; 
&gt; I thought this change made it do that every page had a session. How can one be invalid?

You&apos;re right, this is unnecessary, so I&apos;ve removed it.

&gt; &gt; Source/WebCore/page/Page.cpp:1517
&gt; &gt; +    if (sessionID != m_sessionID) {
&gt; &gt; +        m_sessionID = sessionID;
&gt; &gt; +
&gt; &gt; +        for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext())
&gt; &gt; +            frame-&gt;document()-&gt;privateBrowsingStateDidChange();
&gt; &gt; +
&gt; &gt; +        // Collect the PluginViews in to a vector to ensure that action the plug-in takes
&gt; &gt; +        // from below privateBrowsingStateChanged does not affect their lifetime.
&gt; &gt; +        auto views = pluginViews();
&gt; &gt; +
&gt; &gt; +        for (unsigned i = 0; i &lt; views.size(); ++i)
&gt; &gt; +            views[i]-&gt;privateBrowsingStateChanged(sessionID.isEphemeral());
&gt; &gt; +    }
&gt; 
&gt; It might not matter in current use, but this code is not correct in general case - we probably don&apos;t want to call privateBrowsingStateDidChange when session changes, but private browsing state doesn&apos;t change.
&gt; 
&gt; Also,
&gt; - we prefer early return to nesting code;
&gt; - for loops should be C++ style.

I&apos;ve updated the logic to try to implement this. I don&apos;t know how to improve the first &quot;for&quot; loop since it&apos;s doing a nonstandard iteration.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKit2/EphemeralSessionPushStateNoHistoryCallback.cpp:47
&gt; &gt; +TEST(WebKit2, EphemeralSessionPushStateNoHistoryCallback)
&gt; 
&gt; Does this test for yet another bug that is fixed in this patch? Which bug is that?

This test simply reimplements PrivateBrowsingPushStateNoHistoryCallback for sessions. It didn&apos;t pass before these changes because we needed to unify private browsing with sessions, which is what this bug is fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994610</commentid>
    <comment_count>14</comment_count>
      <attachid>227810</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-26 10:16:45 -0700</bug_when>
    <thetext>Comment on attachment 227810
fix gtk build + address Page comments

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

The changes in WebPage::updatePreferences look like they break disabling private browsing. Was that intentional?

&gt; Source/WebCore/page/Page.cpp:1513
&gt; +    bool stateChanged = (sessionID.isEphemeral() != m_sessionID.isEphemeral());

I&apos;d name this variable &quot;privateBrowsingStateChanged&quot;. There is no implicit &quot;state&quot; that we are dealing with here.

&gt; Source/WebCore/page/Page.cpp:1526
&gt; +    for (auto &amp;view : pluginViews())

Space position: should be &quot;auto&amp;&quot;, not &quot;auto &amp;&quot;.

&gt; Source/WebCore/page/Settings.cpp:429
&gt;  void Settings::setPrivateBrowsingEnabled(bool privateBrowsingEnabled)

Does this need to remain a function on Settings object? It&apos;s misleading at call sites, because this is no longer a setting.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2489
&gt; -    if (m_page-&gt;isSessionIDSet())
&gt; -        settings.setPrivateBrowsingEnabled(m_page-&gt;sessionID().isEphemeral());
&gt; -    else
&gt; -        settings.setPrivateBrowsingEnabled(store.getBoolValueForKey(WebPreferencesKey::privateBrowsingEnabledKey()));
&gt; +    if (store.getBoolValueForKey(WebPreferencesKey::privateBrowsingEnabledKey()) &amp;&amp; !m_page-&gt;usesEphemeralSession())
&gt; +        m_page-&gt;setSessionID(SessionID::legacyPrivateSessionID());

This code used to disable private browsing when the preference was unset, but no longer does that. This looks like a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995014</commentid>
    <comment_count>15</comment_count>
      <attachid>227965</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-27 12:35:45 -0700</bug_when>
    <thetext>Created attachment 227965
address comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995044</commentid>
    <comment_count>16</comment_count>
      <attachid>227965</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-03-27 13:56:08 -0700</bug_when>
    <thetext>Comment on attachment 227965
address comments

Looks good to me. Please fix Gtk build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995046</commentid>
    <comment_count>17</comment_count>
      <attachid>227976</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-27 14:02:37 -0700</bug_when>
    <thetext>Created attachment 227976
fix gtk build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>995050</commentid>
    <comment_count>18</comment_count>
      <attachid>227978</attachid>
    <who name="Martin Hock">mhock</who>
    <bug_when>2014-03-27 14:10:04 -0700</bug_when>
    <thetext>Created attachment 227978
fix typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996807</commentid>
    <comment_count>19</comment_count>
      <attachid>227978</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 13:08:00 -0700</bug_when>
    <thetext>Comment on attachment 227978
fix typo

Clearing flags on attachment: 227978

Committed r166661: &lt;http://trac.webkit.org/changeset/166661&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996808</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 13:08:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226453</attachid>
            <date>2014-03-11 17:45:48 -0700</date>
            <delta_ts>2014-03-11 18:20:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>privatesetting.01.diff</filename>
            <type>text/plain</type>
            <size>82828</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMmFlNTQ3Li4wZTQ5OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVj
dFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5p
dGlhbGl6ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNl
c3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRv
IGp1c3QgcmV0dXJuIG1fc2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vz
c2lvbklEKTogQWxzbyBwZXJmb3JtIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24u
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOiBSZW1vdmUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBzZXR0aW5n
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUGFnZSByZWZsZWN0cyBz
ZXR0aW5nIHVzaW5nIHNlc3Npb24uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpnZXRWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
Ojppc0Rpc2FibGVkQnlQcml2YXRlQnJvd3NpbmcpOgorCiAyMDE0LTAzLTExICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEdldCB0aGUgaW5jb21wbGV0ZSBX
ZWJWVFQgUmVnaW9ucyBjb2RlIHRvIGJ1aWxkIGFnYWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IDc1MmUy
OWUuLjU4ZGE0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBib29sIERhdGFi
YXNlQ29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2VzcygpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAg
aWYgKCFkb2N1bWVudC0+cGFnZSgpIHx8IChkb2N1bWVudC0+cGFnZSgpLT5zZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNl
QWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3Rv
Y29sKCkpKSkKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpIHx8IChkb2N1bWVudC0+cGFn
ZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpICYmICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dz
RGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KS0+cHJvdG9jb2woKSkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA2MWI2ZjhhLi43NGUxOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5
LmgiCisjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgpAQCAtMTIxMCw4ICsx
MjExLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgVVJMJiBp
bml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudFQKICAgICBpZiAobV9zZW5kUHJvZ3Jlc3NF
dmVudHMpIAogICAgICAgICBzdGFydFByb2dyZXNzRXZlbnRUaW1lcigpOwogCi0gICAgU2V0dGlu
Z3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOwotICAgIGJvb2wgcHJpdmF0ZU1v
ZGUgPSAhc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAg
ICBib29sIHByaXZhdGVNb2RlID0gZG9jdW1lbnQoKS5wYWdlKCkgJiYgZG9jdW1lbnQoKS5wYWdl
KCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgbV9wbGF5ZXItPnNldFByaXZhdGVC
cm93c2luZ01vZGUocHJpdmF0ZU1vZGUpOwogCiAgICAgLy8gUmVzZXQgZGlzcGxheSBtb2RlIHRv
IGZvcmNlIGEgcmVjYWxjdWxhdGlvbiBvZiB3aGF0IHRvIHNob3cgYmVjYXVzZSB3ZSBhcmUgcmVz
ZXR0aW5nIHRoZSBwbGF5ZXIuCkBAIC01MTM2LDggKzUxMzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkKICAgICBpZiAoIW1fcGxheWVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgp
LnNldHRpbmdzKCk7Ci0gICAgYm9vbCBwcml2YXRlTW9kZSA9ICFzZXR0aW5ncyB8fCBzZXR0aW5n
cy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSBkb2N1
bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKTsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpwcml2YXRlQnJvd3NpbmdT
dGF0ZURpZENoYW5nZSglcykiLCBib29sU3RyaW5nKHByaXZhdGVNb2RlKSk7CiAgICAgbV9wbGF5
ZXItPnNldFByaXZhdGVCcm93c2luZ01vZGUocHJpdmF0ZU1vZGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggZTRmMjJlZS4uMjA1ZTg1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC0zNDgs
NyArMzQ4LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KEhpc3RvcnlVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiAKICAgICBGcmFtZUxvYWRlciYgZnJhbWVM
b2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpOwogCi0gICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJh
bWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBuZWVkUHJp
dmFjeSA9IG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogICAgIGNv
bnN0IFVSTCYgaGlzdG9yeVVSTCA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnVybEZv
ckhpc3RvcnkoKTsKIAogICAgIGlmICghZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+aXND
bGllbnRSZWRpcmVjdCgpKSB7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKICAgICAg
ICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVk
aXJlY3QgbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIAotICAgIGJv
b2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOworICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKTsKICAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmIChtX2ZyYW1l
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkgewpAQCAtNDMz
LDcgKzQzMyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGly
ZWN0KCkKICAgICAgICAgbV9jdXJyZW50SXRlbS0+Y2xlYXJTY3JvbGxQb2ludCgpOwogICAgIH0K
IAotICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpOworICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKICAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2Zy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlm
ICghaGlzdG9yeVVSTC5pc0VtcHR5KCkgJiYgIW5lZWRQcml2YWN5KSB7CkBAIC01MjMsNyArNTIz
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdh
dGlvbigpCiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSkKKyAgICBpZiAobV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2Uo
KTsKQEAgLTg0Nyw3ICs4NDcsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LAogCiAgICAgcGFn
ZS0+YmFja0ZvcndhcmQoKS5hZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKIAotICAgIGlmICht
X2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChtX2Zy
YW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYWRkVmlzaXRlZExpbmsoKnBhZ2UsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmlu
ZykpOwpAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VT
dGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplCiAgICAgbV9j
dXJyZW50SXRlbS0+c2V0Rm9ybURhdGEoMCk7CiAgICAgbV9jdXJyZW50SXRlbS0+c2V0Rm9ybUNv
bnRlbnRUeXBlKFN0cmluZygpKTsKIAotICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fZnJhbWUucGFn
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNzlmYmU0Zi4uMzZjMGNiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZQogICAgIGlm
ICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKIAotICAgIGlmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiAoZG9j
dW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
IHx8ICFkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+dHJl
ZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSkKKyAgICBpZiAoZG9jdW1l
bnRMb2FkZXItPmZyYW1lKCkgJiYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkgfHwgIWRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGRvY3Vt
ZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGdyb3VwID0gY2FjaGVTdG9yYWdlKCkuY2FjaGVHcm91cEZvclVSTCh1cmwpKSB7CkBAIC0x
NTEsNyArMTUxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiBwYXNzZWRNYW5pZmVzdFUKICAgICB9CiAKICAgICAvLyBE
b24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJs
ZWQuCi0gICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB8
fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0
aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgeworICAgIGlmIChmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpIHx8
ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRp
b25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkp
KSB7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNIRUNL
SU5HX0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBw
bGljYXRpb25DYWNoZUhvc3Q6OkVSUk9SX0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwoRnJhbWUqIGZyYW1lKQogICAgIEFTU0VSVCgh
ZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPmFwcGxpY2F0aW9uQ2FjaGUo
KSk7CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJy
b3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkNIRUNLSU5HX0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RM
aXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkVSUk9SX0VWRU5ULCBkb2N1bWVudExv
YWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6dXBkYXRlKEZyYW1lKiBmcmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0
ZU9wdGlvbiB1cAogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNr
IGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUtPnNldHRpbmdz
KCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgp
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLT5wYWdlKCkt
PnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCku
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgQVNTRVJUKG1fcGVuZGlu
Z01hc3RlclJlc291cmNlTG9hZGVycy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQobV9wZW5k
aW5nRW50cmllcy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIW1fY2FjaGVCZWluZ1VwZGF0
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggOWM2OWJlZi4uZTI1YWRkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6YWJvcnQoKQog
CiBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkK
IHsKLSAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiBtX2RvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCgpICYmICFtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiBt
X2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlRW5hYmxlZCgpICYmICFtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiB9CiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVy
LmNwcAppbmRleCA5M2MxZWE2Li5hMTg1Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBJY29uQ29u
dHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVjaXNpb24gaWNvbkxv
YWREZWNpc2lvbikKICAgICBBU1NFUlQoaWNvbkxvYWREZWNpc2lvbiAhPSBJY29uTG9hZFVua25v
d24pOwogCiAgICAgLy8gIEZJWE1FICg8cmRhcjovL3Byb2JsZW0vOTE2ODYwNT4pIC0gV2Ugc2hv
dWxkIHN1cHBvcnQgaW4tbWVtb3J5LW9ubHkgcHJpdmF0ZSBicm93c2luZyBpY29ucyBpbiBhc3lu
Y2hyb25vdXMgaWNvbiBkYXRhYmFzZSBtb2RlLgotICAgIGlmIChpY29uRGF0YWJhc2UoKS5zdXBw
b3J0c0FzeW5jaHJvbm91c01vZGUoKSAmJiBtX2ZyYW1lLnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGljb25EYXRhYmFzZSgpLnN1cHBvcnRzQXN5
bmNocm9ub3VzTW9kZSgpICYmIG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJh
bCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaWNvbkxvYWREZWNpc2lvbiA9PSBJY29u
TG9hZE5vKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBkMWRmNzcyLi5kNzVhYzZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBw
YWdlQ2xpZW50cykKICAgICAsIG1fbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlc0NvdW50
KDApIC8vIE5PVEU6IE9ubHkgY2FsbGVkIGZyb20gSW50ZXJuYWxzIGZvciBTcGF0aWFsIE5hdmln
YXRpb24gdGVzdGluZy4KICAgICAsIG1fZnJhbWVzSGFuZGxpbmdCZWZvcmVVbmxvYWRFdmVudCgw
KQogICAgICwgbV92aXNpdGVkTGlua1N0b3JlKHN0ZDo6bW92ZShwYWdlQ2xpZW50cy52aXNpdGVk
TGlua1N0b3JlKSkKLSAgICAsIG1fc2Vzc2lvbklEKFNlc3Npb25JRDo6ZW1wdHlTZXNzaW9uSUQo
KSkKKyAgICAsIG1fc2Vzc2lvbklEKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogewog
ICAgIEFTU0VSVChtX2VkaXRvckNsaWVudCk7CiAKQEAgLTEwNzgsMTkgKzEwNzgsMTIgQEAgdm9p
ZCBQYWdlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKQogICAgICAgICB2aWV3c1tpXS0+
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgUGFnZTo6cHJpdmF0ZUJy
b3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3ZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFu
Z2VkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAgICBib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
Ly8gRG9uJ3QgYWxsb3cgY2hhbmdpbmcgdGhlIHByaXZhdGUgYnJvd3Npbmcgc3RhdGUgaWYgd2Ug
aGF2ZSBzZXQgYSBzZXNzaW9uIElELgorICAgIEFTU0VSVChtX3Nlc3Npb25JRCA9PSBTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSB8fCBtX3Nlc3Npb25JRCA9PSBTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSk7CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7Ci0K
LSAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUg
dGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKLSAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVC
cm93c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCi0gICAg
YXV0byB2aWV3cyA9IHBsdWdpblZpZXdzKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdmlld3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIHZpZXdzW2ldLT5wcml2YXRlQnJvd3NpbmdT
dGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisgICAgc2V0U2Vzc2lvbklEKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQgPyBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQo
KSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKQEAgLTE1MTIsMTkgKzE1MDUsMjcgQEAgVmlzaXRlZExpbmtTdG9yZSYgUGFnZTo6dmlz
aXRlZExpbmtTdG9yZSgpCiAKIFNlc3Npb25JRCBQYWdlOjpzZXNzaW9uSUQoKSBjb25zdAogewot
ICAgIGlmIChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBtX3Nlc3Npb25J
RDsKKyAgICBBU1NFUlQobV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKIAotICAgIGlmIChzZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpOwotCi0gICAgcmV0dXJuIFNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOworICAgIHJldHVybiBtX3Nlc3Npb25JRDsKIH0KIAogdm9pZCBQYWdlOjpz
ZXRTZXNzaW9uSUQoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklE
LmlzVmFsaWQoKSk7Ci0gICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisgICAgaWYgKHNlc3Np
b25JRCAhPSBtX3Nlc3Npb25JRCkgeworICAgICAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsK
KworICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5wcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpOworCisgICAgICAgIC8vIENv
bGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlv
biB0aGUgcGx1Zy1pbiB0YWtlcworICAgICAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCisgICAgICAgIGF1
dG8gdmlld3MgPSBwbHVnaW5WaWV3cygpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB2aWV3cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHZpZXdzW2ldLT5wcml2YXRlQnJv
d3NpbmdTdGF0ZUNoYW5nZWQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworICAgIH0KIH0KIAog
UGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZmYyMDZh
NS4uYWNjMGQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTMxMSw3ICszMTEsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGRuc1ByZWZldGNoaW5nU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBzdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKLSAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCgpOworICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCk7CiAKICAgICB2b2lkIHNldERlYnVnZ2VyKEpTQzo6RGVidWdnZXIq
KTsKICAgICBKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXI7IH0KQEAgLTQwOCw3ICs0MDgsNiBAQCBwdWJsaWM6CiAKICAgICBTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoU2Vzc2lvbklEKTsKLSAgICBib29s
IGlzU2Vzc2lvbklEU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQuaXNWYWxpZCgpOyB9
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0R3JvdXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZS5jcHAKaW5kZXggNDdiOWJhMC4uNDc5MzZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFBhZ2VDb25zb2xlOjphZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cgogICAg
IGlmIChzb3VyY2UgPT0gTWVzc2FnZVNvdXJjZTo6Q1NTKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAobV9wYWdlLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlm
IChtX3BhZ2Uuc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBs
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB1cmwpOwpAQCAtMTQ2LDcg
KzE0Niw3IEBAIHZvaWQgUGFnZUNvbnNvbGU6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwKICAgICBib29sIGdvdE1lc3NhZ2UgPSBh
cmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoJm1fcGFnZSwgTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGV4ZWMsIGFyZ3VtZW50cyk7
CiAKLSAgICBpZiAobV9wYWdlLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQor
ICAgIGlmIChtX3BhZ2Uuc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGdvdE1lc3NhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXgg
MDU3ZTI1Yi4uNWIzMTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTE3MSw3ICsx
NzEsNiBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faXNKYXZhRW5h
YmxlZChmYWxzZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXModHJ1ZSkKICAg
ICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQotICAgICwgbV9wcml2YXRlQnJv
d3NpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9hcmVJbWFnZXNFbmFibGVkKHRydWUpCiAgICAg
LCBtX2FyZVBsdWdpbnNFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc1NjcmlwdEVuYWJsZWQoZmFs
c2UpCkBAIC00MzEsMTEgKzQzMCw3IEBAIHZvaWQgU2V0dGluZ3M6OnNldFBsdWdpbnNFbmFibGVk
KGJvb2wgYXJlUGx1Z2luc0VuYWJsZWQpCiAKIHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewotICAgIGlmIChtX3By
aXZhdGVCcm93c2luZ0VuYWJsZWQgPT0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZDsKLSAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOworICAg
IG1fcGFnZS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0
IFVSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBm
MzI3MzhiLi4yN2FkOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0xNDYsNyArMTQ2LDYg
QEAgcHVibGljOgogICAgIC8vICAtIEhUVFAgQ29va2llcwogICAgIC8vICAtIFBsdWctaW5zICh0
aGF0IHN1cHBvcnQgTlBOVnByaXZhdGVNb2RlQm9vbCkKICAgICB2b2lkIHNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQoYm9vbCk7Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkOyB9CiAKICAgICB2b2lkIHNldERO
U1ByZWZldGNoaW5nRW5hYmxlZChib29sKTsKICAgICBib29sIGRuc1ByZWZldGNoaW5nRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkOyB9CkBAIC0zMDEsNyAr
MzAwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNKYXZhRW5hYmxlZCA6IDE7CiAgICAgYm9v
bCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzIDogMTsKICAgICBib29sIG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5IDogMTsKLSAgICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA6
IDE7CiAgICAgYm9vbCBtX2FyZUltYWdlc0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hcmVQbHVn
aW5zRW5hYmxlZCA6IDE7CiAgICAgYm9vbCBtX2lzU2NyaXB0RW5hYmxlZCA6IDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBhN2VlNTMyLi45NjczMmE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEzNTQsNyArMTM1NCw3IEBAIE5QRXJy
b3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVl
KQogICAgICAgICBQYWdlKiBwYWdlID0gbV9wYXJlbnRGcmFtZS0+cGFnZSgpOwogICAgICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLSAgICAg
ICAgKigoTlBCb29sKil2YWx1ZSkgPSBwYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKTsKKyAgICAgICAgKigoTlBCb29sKil2YWx1ZSkgPSBwYWdlLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpOwogICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCBj
MWIyMzdjLi42MDYyYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
ZWFyY2hGaWVsZC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6
YWRkU2VhcmNoUmVzdWx0KCkKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoZnJhbWUoKS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSkKKyAgICBpZiAoZnJhbWUoKS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGludCBzaXplID0gc3RhdGljX2Nhc3Q8aW50PihtX3JlY2Vu
dFNlYXJjaGVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCBjNDg0
Yjk2Li44NjQ3NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTE1OCw3ICsx
NTgsNyBAQCBib29sIFN0b3JhZ2U6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5LCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKIAogYm9vbCBTdG9yYWdlOjppc0Rpc2FibGVkQnlQcml2YXRlQnJv
d3NpbmcoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+c2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1f
c3RvcmFnZUFyZWEtPnN0b3JhZ2VUeXBlKCkgPT0gTG9jYWxTdG9yYWdlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKaW5kZXggZWI3YWI5Mi4uM2ZmZGZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAg
ICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvbnNpc3RzIHNv
bGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWluZyBXZWJDb3JlOjpT
ZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9uZXcpOgorCiAyMDE0LTAzLTEwICBIeW93b24gS2ltICA8aHcxMDA4Lmtp
bUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBNb2RpZnkgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgcmVsYXRlZCBmdW5jdGlvbnMgaW4gZXdrX3ZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAppbmRleCBhMTczOWEwLi5jNjY3ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9y
ZS5oIgpAQCAtODAwLDcgKzgwMSw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9l
d2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAjZW5kaWYK
ICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQWNjZXNzQ2xpcGJvYXJkID0gcGFnZVNldHRp
bmdzLmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBwYWdlU2V0dGluZ3MuRE9NUGFz
dGVBbGxvd2VkKCk7CiAgICAgcHJpdi0+c2V0dGluZ3MucmVzaXphYmxlVGV4dGFyZWFzID0gcGFn
ZVNldHRpbmdzLnRleHRBcmVhc0FyZVJlc2l6YWJsZSgpOwotICAgIHByaXYtPnNldHRpbmdzLnBy
aXZhdGVCcm93c2luZyA9IHBhZ2VTZXR0aW5ncy5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cisg
ICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nID0gcHJpdi0+cGFnZSgpLT5zZXNzaW9u
SUQoKS5pc0VwaGVtZXJhbCgpOwogICAgIHByaXYtPnNldHRpbmdzLmNhcmV0QnJvd3NpbmcgPSBw
YWdlU2V0dGluZ3MuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5z
cGF0aWFsTmF2aWdhdGlvbiA9IHBhZ2VTZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQo
KTsKICAgICBwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgPSBwYWdlU2V0dGluZ3MubG9jYWxT
dG9yYWdlRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDI3MWI0OTYuLmUyYzMxMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sg
IDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRo
IHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRv
IHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSB3aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSk6CisKIDIwMTQtMDMtMDcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIE1vdmUgR1RLIFdlYktpdDEgY29kZSB0byBzdGQ6OnVuaXF1ZV9wdHIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcAppbmRleCBiYTc2ZGMzLi4zYzM1MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW0KIAogCiAgICAgQ3Jl
ZGVudGlhbFN0b3JhZ2VNb2RlIGNyZWRlbnRpYWxTdG9yYWdlTW9kZTsKLSAgICBpZiAoY29yZSh2
aWV3KS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKHBhZ2Ut
PnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIGNyZWRlbnRpYWxTdG9yYWdlTW9k
ZSA9IERpc2FsbG93UGVyc2lzdGVudFN0b3JhZ2U7CiAgICAgZWxzZQogICAgICAgICBjcmVkZW50
aWFsU3RvcmFnZU1vZGUgPSBBbGxvd1BlcnNpc3RlbnRTdG9yYWdlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDFmNWFjNjIuLjY0OGUyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5p
ZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkg
b2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGlu
Z3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5
SXRlbUZvclBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW06CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdl
U2Vzc2lvbik6CisKIDIwMTQtMDMtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU11bV0sxXSBDcmFzaCBpbiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoKSAtICItW05TU2V0IGFkZE9iamVjdDpdOiBvYmplY3QgY2Fubm90IGJl
IG5pbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMmRjYjI1My4uMTI2OTMzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KQEAgLTExMjAsNyArMTEyMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVw
ZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpCiAgICAgSGlzdG9yeUl0ZW0qIGhpc3RvcnlJ
dGVtID0gMDsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShtX3dlYkZyYW1lLmdldCgpKS0+
cGFnZSgpKSB7Ci0gICAgICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkpCisgICAgICAgIGlmICghcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkK
ICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gcGFnZS0+YmFja0ZvcndhcmQoKS5jdXJyZW50SXRl
bSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMGRiNGY4MC4uNzFh
Y2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0xMTMsNyArMTEzLDcgQEAgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChm
cmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQor
ICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKSkKICAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwogCiAgICAgcmV0dXJuIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKaW5kZXggM2U3MDllYy4uMGQwZjE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAg
ICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvbnNpc3RzIHNv
bGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWluZyBXZWJDb3JlOjpT
ZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxI
aXN0b3J5SXRlbUZvclBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
c3RvcmFnZVNlc3Npb24pOgorCiAyMDE0LTAzLTA2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXhwb3NlIHRoZSBjb25zb2xl
IG9iamVjdCBpbiBKU0NvbnRleHRzIHRvIGludGVyYWN0IHdpdGggV2ViIEluc3BlY3RvcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDI4NDdiNTMuLjY4NmUzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTgwMyw3ICs4MDMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9i
YWxIaXN0b3J5SXRlbUZvclBhZ2UoKQogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1l
LT53ZWJWaWV3KCk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IHdlYlZpZXctPnBhZ2UoKSkgewot
ICAgICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQor
ICAgICAgICBpZiAoIXBhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgICAg
ICBoaXN0b3J5SXRlbSA9IHBhZ2UtPmJhY2tGb3J3YXJkKCkuY3VycmVudEl0ZW0oKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggYmY1OWVlNy4uNTAxMGRmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZyYW1lKCkg
JiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYg
KGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQog
ICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlYzQx
ZjkxLi5lYzY1NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMTQtMDMtMTEgIE1h
cnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJv
d3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOiBDaGFuZ2Ug
dG8gcmVmZXJlbmNlIGNvdW50ZWQgc2Vzc2lvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjphZGRTZXNzaW9uUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlbW92ZVNlc3Npb25SZWZlcmVuY2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQuaDogUmVtb3ZlIGNvZGUgc2luY2UgU2Vzc2lvblRyYWNrZXIgaW1wbGVtZW50
cyBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gY3JlYXRpb24uCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOiBEaXR0by4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6IERpdHRv
LgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDogUmVtb3ZlIHByaXZhdGUgYnJvd3NpbmcgcGFyYW1ldGVyLCBzaW5jZSBzZXNzaW9u
cyBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCBhIGdsb2JhbCBzZXR0aW5nLgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwOiBSZWZlcmVu
Y2UgY291bnQgc2Vzc2lvbnMgbWFudWFsbHkgKG5lZWRlZCBkdWUgdG8gY3Jvc3MtcHJvY2VzcyBy
ZWZlcmVuY2VzKS4KKyAgICAgICAgKFdlYktpdDo6c3RhdGljU2Vzc2lvbkNvdW50ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKToKKyAg
ICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuaDogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuaDogQ2hhbmdlIFByaXZhdGVCcm93c2luZ0VuYWJsZWQgdG8g
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHA6IERpdHRvLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1NldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0
ZU1hYy5jcHA6CisgICAgICAgIChXS1BhZ2VJc1VSTEtub3duSFNUU0hvc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3ByaXZhdGVCcm93c2luZ0VuYWJsZWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNw
cDogQ2hhbmdlIHRvIHJlZmVyZW5jZSBjb3VudGVkIHNlc3Npb25zLgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjppbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRlY3JlbWVudFByaXZhdGVCcm93c2luZ0NvdW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c29tZVBhZ2VJc1ByaXZhdGVCcm93c2luZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29udGV4dC5oOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZyk6IEltcGxlbWVudCB1c2luZyByZWZlcmVu
Y2UgY291bnQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHA6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uRGF0YWJhc2U6OnNldERhdGFiYXNlUGF0aCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KTogRG9uJ3Qgc2VuZCBtZXNzYWdlIHRvIFdlYlBhZ2Ug
cHJvY2VzcyB0aGF0IGRvZXNuJ3QgeWV0IGV4aXN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6On5XZWJQYWdlUHJveHkpOiBDbGVhbiB1cCBzZXNzaW9uLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnNldFNlc3Npb25JbXBsKTogVHJhY2sgcmVmZXJlbmNlIGNvdW50IGFu
ZCBvcHRpb25hbGx5IHNlbmQgbWVzc2FnZSB0byBXZWJQYWdlIHByb2Nlc3MuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbik6IFNlbmQgbWVzc2FnZSB0byBXZWJQYWdl
IHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRD
aGFuZ2UpOiBTZXQgc2Vzc2lvbiBiYXNlZCBvbiBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBwcmVm
ZXJlbmNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJl
bmNlczo6YWRkUGFnZSk6IFNlc3Npb24ga2VlcHMgdHJhY2sgb2YgcmVmZXJlbmNlIGNvdW50Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cmVtb3ZlUGFnZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByZWZlcmVuY2VzOjp1cGRhdGVCb29sVmFsdWVGb3JLZXkpOiBDaGFuZ2UgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCB0byBsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6dXBkYXRlTGVnYWN5UHJpdmF0ZUJyb3dzaW5n
VmFsdWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6IFJlZmVy
ZW5jZSBjb3VudCBzZXNzaW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcDogTWVjaGFuaWNhbCBjaGFuZ2UgU2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSB0byBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorICAgICAgICAoV2ViS2l0
OjpQbHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDogUmVt
b3ZlIGNvZGUgc2luY2UgU2Vzc2lvblRyYWNrZXIgaW1wbGVtZW50cyBwcml2YXRlIGJyb3dzaW5n
IHNlc3Npb24gY3JlYXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbTogRGl0dG8uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFn
ZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6IFNldCBzZXNzaW9uIHRv
IGxlZ2FjeSBwcml2YXRlIHNlc3Npb24gaWYgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlc3Npb25JRCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogUmVtb3ZlIGVuc3VyZS9kZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbiBhcyBQYWdlIHJlZmVyZW5jZSBjb3VudHMgaXRzIHNl
c3Npb25zLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vz
cyk6IE1ha2Ugc3VyZSBpZGVudGlmaWVyIGJhc2UgaXMgc2V0LgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKwogMjAxNC0wMy0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBzaG91bGQgbm90IGJlIGV4cG9zZWQg
b24gV0tXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggNGI4NDBmNC4uNTU0Y2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTY2LDEwICsxNjYsNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlm
aWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAK
LSAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBoYW5kbGluZyB0aGlzIGhlcmUsIGEgbWVzc2FnZSBz
aG91bGQgYmUgc2VudCBsYXRlciAoc2NhbGVzIHRvIG11bHRpcGxlIHNlc3Npb25zKQotICAgIGlm
IChwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIFJlbW90ZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKLQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRl
c3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAKQEAgLTIxOSwxNCArMjE1LDE0IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNlbmRp
ZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uUmVm
ZXJlbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBTZXNzaW9u
VHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lv
bklEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewotICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNz
aW9uSUQpOworICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKHNlc3Np
b25JRCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1aW50NjRf
dCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBjN2MzYWVkLi40
YzZiNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU5l
dHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdl
YkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgYWRkU2Vzc2lvblJlZmVyZW5jZShXZWJD
b3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShXZWJDb3Jl
OjpTZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2Fk
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsRG93
bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQz
Ml90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5OTQ0OS4uMDk5NGE3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKFZlY3RvcjxTdHJp
bmc+IGxhbmd1YWdlcykKICNlbmRpZgogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgQWRkU2Vzc2lvblJl
ZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIFJlbW92ZVNlc3Npb25S
ZWZlcmVuY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAgIERvd25sb2FkUmVx
dWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgK
aW5kZXggZjVjY2NjMS4uZWJiN2Y2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw5ICs0MCw2IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsK
IAotICAgIC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNl
c3Npb25UcmFja2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMmE3YzU5NC4uMjZkODhhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbQpAQCAtNzcsMTUgKzc3LDQgQEAgUmVzb3VyY2VFcnJvciBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUK
ICAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXZvaWQgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lv
bklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwot
Ci0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCku
aXNOdWxsKCkpOwotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25U
cmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lv
bklELnNlc3Npb25JRCgpKSkpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291
cC5jcHAKaW5kZXggM2JlOWRiYy4uM2UyN2NlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHRTb3VwLmNwcApAQCAtNDYsMTEgKzQ2LDYgQEAgYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNl
c3Npb25JRCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMTQxYmE3YS4uNmJj
ZWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMzgsNyArMzgs
NiBAQCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6TmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMoKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5j
b2RlciA8PCBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShj
YWNoZU1vZGVsKTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeTsKICAgICBlbmNv
ZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAgLTY1LDggKzY0LDYg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJn
dW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb24KIAogYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3Jr
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcmVzdWx0KQogewotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnByaXZhdGVCcm93c2luZ0VuYWJsZWQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmNhY2hlTW9kZWwpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGlza0Nh
Y2hlRGlyZWN0b3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDU4YWNi
MzkuLmRhZDExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTAsNyAr
NTAsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIHZv
aWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wg
ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmKTsKIAotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKICAgICBDYWNoZU1v
ZGVsIGNhY2hlTW9kZWw7CiAKICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKaW5kZXggYmRjZmZiOS4uNjBmNGFiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBAIC00MSw2ICs0MSwx
NCBAQCBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+PiYgc3RhdGljU2Vzc2lvbgogICAgIHJldHVybiBtYXAuZ2V0KCk7CiB9CiAK
K3N0YXRpYyBIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+JiBzdGF0aWNTZXNzaW9uQ291bnRl
cigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+PiBtYXA7CisgICAgcmV0dXJu
IG1hcC5nZXQoKTsKK30KKwogc3RhdGljIEhhc2hNYXA8Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uKiwgU2Vzc2lvbklEPiYgc3RvcmFnZVNlc3Npb25Ub0lEKCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwpAQCAtODEsMjAgKzg5LDQxIEBAIFNlc3Npb25JRCBTZXNzaW9uVHJh
Y2tlcjo6c2Vzc2lvbklEKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKICAg
ICByZXR1cm4gc3RvcmFnZVNlc3Npb25Ub0lEKCkuZ2V0KCZzZXNzaW9uKTsKIH0KIAotdm9pZCBT
ZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNzaW9uKQordm9pZCBTZXNzaW9uVHJhY2tl
cjo6YWRkU2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIEFTU0VS
VChzZXNzaW9uSUQgIT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpOworCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAg
ICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lvbklELCBzdGF0aWNTZXNzaW9u
Q291bnRlcigpLmdldChzZXNzaW9uSUQpICsgMSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBBU1NFUlQoIVNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgp
KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24g
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51bWJlcihz
ZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5zZXQoc2Vz
c2lvbi5nZXQoKSwgc2Vzc2lvbklEKTsKICAgICBzdGF0aWNTZXNzaW9uTWFwKCkuc2V0KHNlc3Np
b25JRCwgc3RkOjptb3ZlKHNlc3Npb24pKTsKKyAgICBzdGF0aWNTZXNzaW9uQ291bnRlcigpLnNl
dChzZXNzaW9uSUQsIDEpOwogfQogCi12b2lkIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lv
bihTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBTZXNzaW9uVHJhY2tlcjo6cmVtb3ZlU2Vzc2lv
blJlZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgaWYgKHN0YXRpY1Nlc3Npb25NYXAoKS5jb250YWlucyhzZXNzaW9uSUQp
KSB7CisKKyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworCisgICAgQVNTRVJU
KHN0YXRpY1Nlc3Npb25NYXAoKS5jb250YWlucyhzZXNzaW9uSUQpKTsKKworICAgIHVpbnQ2NF90
IGNvdW50ZXIgPSBzdGF0aWNTZXNzaW9uQ291bnRlcigpLmdldChzZXNzaW9uSUQpOworCisgICAg
aWYgKGNvdW50ZXIgPT0gMSkgewogICAgICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5yZW1vdmUo
c2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICAgICAgc3RhdGljU2Vzc2lvbk1hcCgpLnJlbW92ZShz
ZXNzaW9uSUQpOwotICAgIH0KKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5yZW1vdmUo
c2Vzc2lvbklEKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5z
ZXQoc2Vzc2lvbklELCBjb3VudGVyIC0gMSk7CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OnNl
dElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1Nlc3Npb25UcmFja2VyLmgKaW5kZXggMGIwMzAyOS4uYTJjODliNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGdldElkZW50aWZpZXJCYXNlKCk7CiAgICAgc3RhdGljIFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQp
OwogICAgIHN0YXRpYyBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwotICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb24oV2Vi
Q29yZTo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oV2ViQ29yZTo6U2Vzc2lv
bklEKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRTZXNzaW9uUmVmZXJlbmNlKFdlYkNvcmU6OlNlc3Np
b25JRCk7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpT
ZXNzaW9uSUQpOwogICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmlu
ZyYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgK
aW5kZXggYzc5ZGE4My4uYmI2ZjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAg
ICAgbWFjcm8oRnJhbWVGbGF0dGVuaW5nRW5hYmxlZCwgZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCwg
Qm9vbCwgYm9vbCwgREVGQVVMVF9GUkFNRV9GTEFUVEVOSU5HX0VOQUJMRUQpIFwKICAgICBtYWNy
byhEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBCb29sLCBi
b29sLCBmYWxzZSkgXAogICAgIG1hY3JvKEphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIGph
dmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCi0gICAgbWFj
cm8oUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgQm9vbCwg
Ym9vbCwgZmFsc2UpIFwKKyAgICBtYWNybyhMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBs
ZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1h
Y3JvKFRleHRBcmVhc0FyZVJlc2l6YWJsZSwgdGV4dEFyZWFzQXJlUmVzaXphYmxlLCBCb29sLCBi
b29sLCBERUZBVUxUX1RFWFRfQVJFQVNfQVJFX1JFU0laQUJMRSkgXAogICAgIG1hY3JvKEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHksIGphdmFTY3JpcHRDYW5PcGVuV2luZG93
c0F1dG9tYXRpY2FsbHksIEJvb2wsIGJvb2wsIERFRkFVTFRfSkFWQVNDUklQVF9DQU5fT1BFTl9X
SU5ET1dTX0FVVE9NQVRJQ0FMTFkpIFwKICAgICBtYWNybyhIeXBlcmxpbmtBdWRpdGluZ0VuYWJs
ZWQsIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGE2
NTBlN2MuLjUwOGEyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIFdLU3RyaW5nUmVmIFdLUHJl
ZmVyZW5jZXNDb3B5RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlCiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvSW1w
bChwcmVmZXJlbmNlc1JlZiktPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7Cisg
ICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0TGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChlbmFibGVkKTsKIH0KIAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcmV0dXJu
IHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsK
IH0KIAogdm9pZCBXS1ByZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChXS1ByZWZl
cmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLmNwcAppbmRl
eCA2YTlkY2E0Li5iZTNmMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgcGlk
X3QgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2VSZWYpCiBib29sIFdL
UGFnZUlzVVJMS25vd25IU1RTSG9zdChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsKQogewog
ICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5ID0gdG9JbXBsKHBhZ2UpOwotICAgIGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHdlYlBhZ2VQcm94eS0+cGFnZUdyb3VwKCkucHJlZmVy
ZW5jZXMoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkID0gd2ViUGFnZVByb3h5LT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogCiAg
ICAgcmV0dXJuIHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmNvbnRleHQoKS5pc1VSTEtub3duSFNU
U0hvc3QodG9JbXBsKHVybCktPnN0cmluZygpLCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggZjEwYmYwNi4uN2RkNDQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTg1MiwxMiArODUyLDEyIEBAIHN0YXRpYyB2b2lkIHJl
bGVhc2VOU0RhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIC0gKEJPT0wp
X3ByaXZhdGVCcm93c2luZ0VuYWJsZWQKIHsKLSAgICByZXR1cm4gW19jb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
cmV0dXJuIFtfY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy0+bGVnYWN5
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiAtICh2b2lkKV9zZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkOihCT09MKXByaXZhdGVCcm93c2luZ0VuYWJsZWQKIHsKLSAgICBbX2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisgICAgW19jb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXS0+X3ByZWZlcmVuY2VzLT5zZXRMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcyhfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBldmVu
dHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMjExNzA0NC4u
YWUwMWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMzgz
LDggKzM4Myw2IEBAIHZvaWQgV2ViQ29udGV4dDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKQogCiAg
ICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAotICAgIHBh
cmFtZXRlcnMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IFdlYlByZWZlcmVuY2VzOjphbnlQYWdl
c0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0KICAgICBwYXJhbWV0ZXJzLmNhY2hlTW9kZWwg
PSBtX2NhY2hlTW9kZWw7CiAKICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeSA9IGRp
c2tDYWNoZURpcmVjdG9yeSgpOwpAQCAtNDU5LDQ0ICs0NTcsMzAgQEAgdm9pZCBXZWJDb250ZXh0
OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm8KIH0KICNlbmRpZgogCi12b2lkIFdlYkNvbnRleHQ6OndpbGxTdGFydFVzaW5nUHJp
dmF0ZUJyb3dzaW5nKCkKK3ZvaWQgV2ViQ29udGV4dDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0
YXRlQ2hhbmdlZCgpCiB7Ci0gICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMg
PSBhbGxDb250ZXh0cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRz
LnNpemUoKTsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIGNvbnRleHRzW2ldLT5zZXRBbnlQYWdl
R3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKHRydWUpOworICAgIHNpemVfdCBw
cm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkKKyAgICAgICAgbV9wcm9jZXNzZXNbaV0tPndpbmRvd1Nl
cnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0Ojp3aWxs
U3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkKK3ZvaWQgV2ViQ29udGV4dDo6aW5jcmVtZW50UHJp
dmF0ZUJyb3dzaW5nQ291bnQoKQogewotICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNv
bnRleHRzID0gYWxsQ29udGV4dHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBj
b250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBjb250ZXh0c1tpXS0+c2V0
QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSk7CisgICAg
aWYgKCFtX3ByaXZhdGVCcm93c2luZ0NvdW50KQorICAgICAgICBzb21lUGFnZUlzUHJpdmF0ZUJy
b3dzaW5nKHRydWUpOworICAgIG1fcHJpdmF0ZUJyb3dzaW5nQ291bnQrKzsKIH0KIAotdm9pZCBX
ZWJDb250ZXh0Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKK3ZvaWQgV2Vi
Q29udGV4dDo6ZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKQogewotICAgIHNpemVfdCBw
cm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkKLSAgICAgICAgbV9wcm9jZXNzZXNbaV0tPndpbmRvd1Nl
cnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3ByaXZhdGVCcm93c2luZ0NvdW50
LS07CisgICAgaWYgKCFtX3ByaXZhdGVCcm93c2luZ0NvdW50KQorICAgICAgICBzb21lUGFnZUlz
UHJpdmF0ZUJyb3dzaW5nKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0OjpzZXRBbnlQYWdl
R3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKK3ZvaWQgV2ViQ29udGV4dDo6c29tZVBhZ2VJc1ByaXZhdGVCcm93c2luZyhib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7CiAgICAgbV9pY29uRGF0YWJhc2UtPnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7Ci0KLSNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBuZXR3b3Jr
UHJvY2VzcygpKSB7Ci0gICAgICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAg
ICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKCkpLCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7Ci0gICAgfQotI2Vu
ZGlmIC8vIEVOQUJMRUQoTkVUV09SS19QUk9DRVNTKQotCi0gICAgaWYgKHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpCi0gICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSkpOwotICAgIGVsc2UKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOwogfQogCiB2b2lkICgqc19pbnZhbGlkTWVzc2Fn
ZUNhbGxiYWNrKShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSk7CkBAIC02MjUsOSArNjA5LDYgQEAg
V2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRRT1Mod2ViUHJvY2Vzc0xhdGVu
Y3lRT1MoKSwgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKSksIDApOwogI2VuZGlmCiAKLSAgICBp
ZiAoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSkKLSAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOwot
CiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOwogCiAgICAgaWYgKG1fcHJvY2Vzc01v
ZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKQEAgLTc3Nyw4ICs3
NTgsNiBAQCBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYQogICAgICAgICBjb25maWd1cmF0aW9uLnBy
ZWZlcmVuY2VzID0gJmNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpOwogICAg
IGlmICghY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQogICAgICAgICBjb25maWd1
cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIuZ2V0KCk7
Ci0gICAgaWYgKCFjb25maWd1cmF0aW9uLnNlc3Npb24pCi0gICAgICAgIGNvbmZpZ3VyYXRpb24u
c2Vzc2lvbiA9IGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSA/ICZBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCkgOiAmQVBJOjpTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbigpOwogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcHJv
Y2VzczsKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggNDJi
NTBhYi4uMzFhMGE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0z
MDQsOSArMzA0LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9u
U3RhdGVDaGFuZ2VkKCk7CiAKLSAgICBzdGF0aWMgdm9pZCB3aWxsU3RhcnRVc2luZ1ByaXZhdGVC
cm93c2luZygpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3Npbmco
KTsKLQogICAgIHN0YXRpYyBib29sIGlzRXBoZW1lcmFsU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9u
SUQpOwogCiAjaWYgVVNFKFNPVVApCkBAIC0zMzcsNiArMzM0LDExIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChib29sKTsKIAorICAgIHZvaWQgaW5jcmVtZW50
UHJpdmF0ZUJyb3dzaW5nQ291bnQoKTsKKyAgICB2b2lkIGRlY3JlbWVudFByaXZhdGVCcm93c2lu
Z0NvdW50KCk7CisKKyAgICBib29sIGFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSBj
b25zdCB7IHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0NvdW50ID4gMDsgfQorCiBwcml2YXRlOgog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTQxOCw3ICs0MjAsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBTdHJpbmcm
IHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOwogICAgIHZvaWQgcGx1Z0lu
RGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKIAot
ICAgIHZvaWQgc2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChi
b29sKTsKKyAgICB2b2lkIHNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcoYm9vbCk7CiAKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAvLyBQbHVnaW5JbmZvU3RvcmVDbGllbnQ6
CkBAIC01MjksNiArNTMxLDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX21lbW9y
eUNhY2hlRGlzYWJsZWQ7CisKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcm93c2luZ0NvdW50Owog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Ykljb25EYXRhYmFzZS5jcHAKaW5kZXggN2FkYWU4OS4uYTVmZDc4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBXZWJJY29uRGF0YWJhc2U6OnNldERhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAK
ICAgICAvLyBGSVhNRTogV2ViSWNvbkRhdGFiYXNlcyBhcmUgcGVyLVdlYkNvbnRleHQgYnV0IFdl
YkNvbnRleHQncyBkb24ndCBoYXZlIHRoZWlyIG93biBub3Rpb24gb2YgdGhlIGN1cnJlbnQgcHJp
dmF0ZSBicm93c2luZyBzZXR0aW5nLgogICAgIC8vIEFzIHdlIGNsZWFuIHVwIHByaXZhdGUgYnJv
d3NpbmcgdGhyb3VnaG91dCB0aGUgc3RhY2sgd2UgbmVlZCB0byBjbGVhbiBpdCB1cCBoZXJlLgot
ICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVm
ZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKKyAgICBtX2ljb25E
YXRhYmFzZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQobV93ZWJDb250ZXh0LT5hbnlQ
YWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwogCiAgICAgaWYgKCFtX2ljb25EYXRhYmFz
ZUltcGwtPm9wZW4oZGlyZWN0b3J5TmFtZShwYXRoKSwgcGF0aEdldEZpbGVOYW1lKHBhdGgpKSkg
ewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBvcGVuIFdlYktpdDIgaWNvbiBkYXRhYmFz
ZSBvbiBkaXNrIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDhhYjYzYWYuLmM0ZDdmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJl
Z2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJFbWJlZGRlZE9iamVjdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1Nlc3Npb25JREhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN0ZGlv
Lmg+CkBAIC0zMDMsNyArMzA0LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAsIG1f
aXNUcmFja2luZ1RvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdl
SUQpCi0gICAgLCBtX3Nlc3Npb24oKmNvbmZpZ3VyYXRpb24uc2Vzc2lvbikKKyAgICAsIG1fc2Vz
c2lvbihBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkpCiAgICAgLCBtX2lzUGFnZVN1c3Bl
bmRlZChmYWxzZSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAsIG1faXNTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkpCkBA
IC0zNzYsNyArMzc3LDggQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAvLyBGSVhNRTog
SWYgd2UgZXZlciBleHBvc2UgdGhlIHNlc3Npb24gc3RvcmFnZSBzaXplIGFzIGEgcHJlZmVyZW5j
ZSwgd2UgbmVlZCB0byBwYXNzIGl0IGhlcmUuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uID0gbV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5p
bmcgPyBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSA6IG51bGxwdHI7CiAgICAgbV9wcm9jZXNzLT5j
b250ZXh0KCkuc3RvcmFnZU1hbmFnZXIoKS5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSht
X3BhZ2VJRCwgY29ubmVjdGlvbiwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KTsKLSAgICBzZXRTZXNzaW9uKCpjb25maWd1cmF0aW9uLnNlc3Npb24pOworICAgIGlmIChtX3By
ZWZlcmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgICAgIHNldFNl
c3Npb25JbXBsKEFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSwgZmFsc2UpOwog
fQogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQpAQCAtMzk1LDYgKzM5Nyw3IEBAIFdl
YlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCiAjaWZuZGVmIE5ERUJVRwogICAgIHdlYlBhZ2VQ
cm94eUNvdW50ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYKKyAgICBzZXRTZXNzaW9uKEFQSTo6U2Vz
c2lvbjo6ZGVmYXVsdFNlc3Npb24oKSk7CiB9CiAKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIg
V2ViUGFnZVByb3h5Ojpwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0CkBAIC01MjcsMTUgKzUzMCwz
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NU
aW1lcigpLT5zdGFydCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbihBUEk6
OlNlc3Npb24mIHNlc3Npb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbkltcGwoQVBJ
OjpTZXNzaW9uJiBzZXNzaW9uLCBib29sIHNlbmRNZXNzYWdlVG9QYWdlKQogewotICAgIG1fc2Vz
c2lvbiA9IHNlc3Npb247Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRTZXNzaW9uSUQoc2Vzc2lvbi5nZXRJRCgpKSwgbV9wYWdlSUQpOworICAgIGlmIChzZXNzaW9u
LmdldElEKCkgIT0gbV9zZXNzaW9uLT5nZXRJRCgpKSB7CisgICAgICAgIGlmIChzZW5kTWVzc2Fn
ZVRvUGFnZSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U2Vzc2lvbklEKHNlc3Npb24uZ2V0SUQoKSksIG1fcGFnZUlEKTsKKworICAgICAgICBpZiAo
c2Vzc2lvbi5nZXRJRCgpLmlzRXBoZW1lcmFsKCkgJiYgIW1fc2Vzc2lvbi0+Z2V0SUQoKS5pc0Vw
aGVtZXJhbCgpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuaW5jcmVtZW50UHJp
dmF0ZUJyb3dzaW5nQ291bnQoKTsKKyAgICAgICAgZWxzZSBpZiAoIXNlc3Npb24uZ2V0SUQoKS5p
c0VwaGVtZXJhbCgpICYmIG1fc2Vzc2lvbi0+Z2V0SUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAg
ICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQo
KTsKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHNlc3Npb24uaXNFcGhl
bWVyYWwoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0d29ya2luZ1By
b2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKHNlc3Npb24uZ2V0SUQoKSkpOworICAgICAgICBpZiAobV9zZXNzaW9uLT5pc0VwaGVtZXJh
bCgpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0d29ya2luZ1By
b2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW1vdmVTZXNzaW9uUmVmZXJlbmNlKG1f
c2Vzc2lvbi0+Z2V0SUQoKSkpOworICAgICAgICBpZiAoc2Vzc2lvbi5pc0VwaGVtZXJhbCgpKQor
ICAgICAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3Mo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRTZXNzaW9uUmVmZXJlbmNlKHNlc3Npb24uZ2V0
SUQoKSkpOwogI2VuZGlmCisgICAgICAgIG1fc2Vzc2lvbiA9IHNlc3Npb247CisgICAgfQorfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbihBUEk6OlNlc3Npb24mIHNlc3Npb24pCit7
CisgICAgc2V0U2Vzc2lvbkltcGwoc2Vzc2lvbiwgdHJ1ZSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCkBAIC0yMDgzLDYgKzIxMDEsMTEgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fcHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSAmJiBtX3Nlc3Npb24tPmdldElEKCkgPT0gU2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkpCisgICAgICAgIHNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbigpKTsKKyAgICBlbHNlIGlmICghbV9wcmVmZXJlbmNlcy0+bGVnYWN5UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpICYmIG1fc2Vzc2lvbi0+Z2V0SUQoKSA9PSBTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSkKKyAgICAgICAgc2V0U2Vzc2lvbihBUEk6OlNlc3Npb246
OmRlZmF1bHRTZXNzaW9uKCkpOworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiAgICAg
aWYgKG1fcHJlZmVyZW5jZXMtPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgaW5z
cGVjdG9yKCktPmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCAwODc4NTg1Li5hNzQ3ZmUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMjMsNyArMzIzLDYgQEAgc3RydWN0IFdlYlBh
Z2VDb25maWd1cmF0aW9uIHsKICAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IG51bGxwdHI7
CiAgICAgV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzID0gbnVsbHB0cjsKICAgICBWaXNpdGVk
TGlua1Byb3ZpZGVyKiB2aXNpdGVkTGlua1Byb3ZpZGVyID0gbnVsbHB0cjsKLSAgICBBUEk6OlNl
c3Npb24qIHNlc3Npb24gPSBudWxscHRyOwogICAgIFdlYlBhZ2VQcm94eSogcmVsYXRlZFBhZ2Ug
PSBudWxscHRyOwogfTsKIApAQCAtOTI4LDYgKzkyNyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgc2V0U2Vzc2lvbkltcGwo
QVBJOjpTZXNzaW9uJiwgYm9vbCBzZW5kTWVzc2FnZVRvUGFnZSk7CisKICAgICAvLyBJUEM6Ok1l
c3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCAwZjdk
YTc5Li44YWEzNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJl
ZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNl
cy5jcHAKQEAgLTMyLDEwICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0vLyBGSVhN
RTogTWFuaXB1bGF0aW5nIHRoaXMgdmFyaWFibGUgaXMgbm90IHRocmVhZCBzYWZlLgotLy8gSW5z
dGVhZCBvZiB0cmFja2luZyBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGFzIGEgYm9vbGVhbiBwcmVm
ZXJlbmNlLCB3ZSBzaG91bGQgbGV0IHRoZSBjbGllbnQgcHJvdmlkZSBzdG9yYWdlIHNlc3Npb25z
IGV4cGxpY2l0bHkuCi1zdGF0aWMgdW5zaWduZWQgcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50Owot
CiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
KQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CkBAIC02MiwyNSArNTgsMTIgQEAg
dm9pZCBXZWJQcmVmZXJlbmNlczo6YWRkUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkK
IHsKICAgICBBU1NFUlQoIW1fcGFnZXMuY29udGFpbnMoJndlYlBhZ2VQcm94eSkpOwogICAgIG1f
cGFnZXMuYWRkKCZ3ZWJQYWdlUHJveHkpOwotCi0gICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSkgewotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCkKLSAgICAgICAg
ICAgIFdlYkNvbnRleHQ6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0KLSAgICAg
ICAgKytwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQ7Ci0gICAgfQogfQogCiB2b2lkIFdlYlByZWZl
cmVuY2VzOjpyZW1vdmVQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogewogICAgIEFT
U0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZ3ZWJQYWdlUHJveHkpKTsKICAgICBtX3BhZ2VzLnJlbW92
ZSgmd2ViUGFnZVByb3h5KTsKLQotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpIHsK
LSAgICAgICAgLS1wcml2YXRlQnJvd3NpbmdQYWdlQ291bnQ7Ci0gICAgICAgIGlmICghcHJpdmF0
ZUJyb3dzaW5nUGFnZUNvdW50KQotICAgICAgICAgICAgV2ViQ29udGV4dDo6d2lsbFN0b3BVc2lu
Z1ByaXZhdGVCcm93c2luZygpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBk
YXRlKCkKQEAgLTk3LDggKzgwLDggQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlU3RyaW5n
VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmEKIAogdm9pZCBX
ZWJQcmVmZXJlbmNlczo6dXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBi
b29sIHZhbHVlKQogewotICAgIGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVC
cm93c2luZ0VuYWJsZWRLZXkoKSkgewotICAgICAgICB1cGRhdGVQcml2YXRlQnJvd3NpbmdWYWx1
ZSh2YWx1ZSk7CisgICAgaWYgKGtleSA9PSBXZWJQcmVmZXJlbmNlc0tleTo6bGVnYWN5UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZEtleSgpKSB7CisgICAgICAgIHVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93
c2luZ1ZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI0LDI3ICsx
MDcsMTkgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlRmxvYXRWYWx1ZUZvcktleShjb25z
dCBTdHJpbmcmIGtleSwgZmxvYXQgdmFsdWUpCiAgICAgdXBkYXRlKCk7IC8vIEZJWE1FOiBPbmx5
IHNlbmQgb3ZlciB0aGUgY2hhbmdlZCBrZXkgYW5kIHZhbHVlLgogfQogCi12b2lkIFdlYlByZWZl
cmVuY2VzOjp1cGRhdGVQcml2YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKQordm9pZCBXZWJQ
cmVmZXJlbmNlczo6dXBkYXRlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSkK
IHsKLSAgICBwbGF0Zm9ybVVwZGF0ZUJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpLCB2YWx1ZSk7Ci0KLSAgICB1bnNpZ25lZCBwYWdl
c0NoYW5nZWQgPSBtX3BhZ2VzLnNpemUoKTsKLSAgICBpZiAoIXBhZ2VzQ2hhbmdlZCkKLSAgICAg
ICAgcmV0dXJuOworICAgIHBsYXRmb3JtVXBkYXRlQm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjpsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkS2V5KCksIHZhbHVlKTsKIAogICAg
IGlmICh2YWx1ZSkgewotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCkKLSAg
ICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0g
ICAgICAgIHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCArPSBwYWdlc0NoYW5nZWQ7Ci0gICAgfQot
Ci0gICAgdXBkYXRlKCk7IC8vIEZJWE1FOiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hhbmdlZCBrZXkg
YW5kIHZhbHVlLgotCi0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJy
b3dzaW5nUGFnZUNvdW50ID49IHBhZ2VzQ2hhbmdlZCk7Ci0gICAgICAgIHByaXZhdGVCcm93c2lu
Z1BhZ2VDb3VudCAtPSBwYWdlc0NoYW5nZWQ7Ci0gICAgICAgIGlmICghcHJpdmF0ZUJyb3dzaW5n
UGFnZUNvdW50KQotICAgICAgICAgICAgV2ViQ29udGV4dDo6d2lsbFN0b3BVc2luZ1ByaXZhdGVC
cm93c2luZygpOworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VzKQorICAgICAgICAg
ICAgaWYgKHBhZ2UtPnNlc3Npb25JRCgpID09IFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb24oQVBJOjpTZXNzaW9u
OjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpKTsKKworICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAo
YXV0byYgcGFnZSA6IG1fcGFnZXMpCisgICAgICAgICAgICBpZiAocGFnZS0+c2Vzc2lvbklEKCkg
PT0gV2ViQ29yZTo6U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpCisgICAgICAg
ICAgICAgICAgcGFnZS0+c2V0U2Vzc2lvbihBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkp
OwogICAgIH0KIH0KIApAQCAtMTY2LDkgKzE0MSw0IEBAIEZPUl9FQUNIX1dFQktJVF9QUkVGRVJF
TkNFKERFRklORV9QUkVGRVJFTkNFX0dFVFRFUl9BTkRfU0VUVEVSUykKIAogI3VuZGVmIERFRklO
RV9QUkVGRVJFTkNFX0dFVFRFUl9BTkRfU0VUVEVSUwogCi1ib29sIFdlYlByZWZlcmVuY2VzOjph
bnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkKLXsKLSAgICByZXR1cm4gcHJpdmF0ZUJy
b3dzaW5nUGFnZUNvdW50OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKaW5kZXggZGQ1ZTJkMS4uZjFlNWU2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKQEAgLTY4LDggKzY4LDYg
QEAgcHVibGljOgogICAgIC8vIEV4cG9zZWQgZm9yIFdlYktpdFRlc3RSdW5uZXIgdXNlIG9ubHku
CiAgICAgdm9pZCBmb3JjZVVwZGF0ZSgpIHsgdXBkYXRlKCk7IH0KIAotICAgIHN0YXRpYyBib29s
IGFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKLQogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBXZWJQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmKTsKICAgICBXZWJQcmVmZXJlbmNlcyhj
b25zdCBXZWJQcmVmZXJlbmNlcyYpOwpAQCAtODksNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGxhdGZvcm1VcGRhdGVEb3VibGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZG91
YmxlIHZhbHVlKTsKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlRmxvYXRWYWx1ZUZvcktleShjb25z
dCBTdHJpbmcmIGtleSwgZmxvYXQgdmFsdWUpOwogCi0gICAgdm9pZCB1cGRhdGVQcml2YXRlQnJv
d3NpbmdWYWx1ZShib29sIHZhbHVlKTsKKyAgICB2b2lkIHVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93
c2luZ1ZhbHVlKGJvb2wgdmFsdWUpOwogCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBX
ZWJQcmVmZXJlbmNlc1N0b3JlIG1fc3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDc2
ODczMGQuLjM1NGI3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMDksOSArMzA5LDEw
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUGFn
ZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vCiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNz
KTogVGhpcyB0ZXN0LW9ubHkgZnVuY3Rpb24gZG9lc24ndCB3b3JrIHdpdGggTmV0d29ya1Byb2Nl
c3MsIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Mjc0Pi4KICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCiAgICAgaWYg
KGVuYWJsZWQpCi0gICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwor
ICAgICAgICBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAgICAgZWxzZQotICAgICAgICBTZXNzaW9uVHJhY2tl
cjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwor
ICAgICAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCkpKQorICAgICAgICAgICAgU2Vzc2lvblRyYWNrZXI6OnJlbW92ZVNlc3Np
b25SZWZlcmVuY2UoU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogI2VuZGlm
CiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAo
cGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5wYWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdl
Kj46Oml0ZXJhdG9yIGl0ZXIgPSBwYWdlcy5iZWdpbigpOyBpdGVyICE9IHBhZ2VzLmVuZCgpOyAr
K2l0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKaW5kZXggZGZmODE1Yi4uYzA5MTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTUzMyw3ICsxNTMzLDcgQEAgYm9v
bCBQbHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKQogICAgIGlmICghZnJhbWUo
KS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzUGx1Z2luU3RvcmFnZShm
cmFtZSgpLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgcmV0dXJuIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
OworICAgIHJldHVybiBmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7
CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25F
bmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaAppbmRleCBkZWYyMDM4Li5iMzk2Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw5ICs0MCw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAg
ICAgfQogCi0gICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1
c2UgU2Vzc2lvblRyYWNrZXIKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0KICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVB
Y2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogICAg
IFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMjZiZmZj
NC4uY2ZlOWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lm1tCkBAIC00MiwyMiArNDIsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBB
U1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBiYXNl
OwotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkK
LSAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07
Ci0gICAgZWxzZQotICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJC
YXNlKCk7Ci0KLSAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihiYXNlICsgJy4n
ICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSkpOwotfQotCiB2b2lkIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRl
eHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogewogICAgIFtbTlNIVFRQQ29va2ll
U3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0Q29va2llQWNjZXB0UG9saWN5OnN0
YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4ocG9saWN5KV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggNzc3MzdkNC4u
ZTk0MzI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmNwcApAQCAtMzgsMTYgKzM4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNz
aW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpKTsKLX0KLQog
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJG
cmFtZSogZnJhbWUpCiAgICAgOiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lLT5jb3JlRnJh
bWUoKSkKIHsKQEAgLTU1LDcgKzQ1LDcgQEAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCiAKIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25z
dAogewotICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vz
c2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAKICAgICByZXR1cm4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDkzNDEwYjMuLjE5
NGE2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aApAQCAtNDMsOCArNDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2
b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLQog
ICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0Owog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGY2Nzk1YjEuLmRkNzdiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJQbHVn
aW5WaWV3LmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRl
LmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IldLU2hhcmVkQVBJQ2FzdC5oIgpAQCAtMjExMSwxNCArMjExMiw2IEBAIHZvaWQgV2ViUGFnZTo6
c2V0TGF5ZXJIb3N0aW5nTW9kZSh1bnNpZ25lZCBsYXllckhvc3RpbmdNb2RlKQogICAgICAgICBw
bHVnaW5WaWV3LT5zZXRMYXllckhvc3RpbmdNb2RlKG1fbGF5ZXJIb3N0aW5nTW9kZSk7CiB9CiAK
LVNlc3Npb25JRCBXZWJQYWdlOjpzZXNzaW9uSUQoKSBjb25zdAotewotICAgIGlmIChtX3BhZ2Ut
PmlzU2Vzc2lvbklEU2V0KCkpCi0gICAgICAgIHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOwot
Ci0gICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
PyBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOwotfQotCiBib29sIFdlYlBhZ2U6OmlzVXNpbmdFcGhlbWVyYWxTZXNzaW9u
KCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKQEAgLTIx
MjYsOSArMjExOSwxMyBAQCBib29sIFdlYlBhZ2U6OmlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkg
Y29uc3QKIAogdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoU2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKLSAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOworICAgIEFTU0VSVChzZXNz
aW9uSUQgIT0gbV9wYWdlLT5zZXNzaW9uSUQoKSk7CisgICAgQVNTRVJUKHNlc3Npb25JRC5pc1Zh
bGlkKCkpOworICAgIGlmIChtX3BhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCisgICAg
ICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKG1fcGFnZS0+c2Vzc2lv
bklEKCkpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2hhcmVkKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwor
ICAgICAgICBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShzZXNzaW9uSUQpOwor
ICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkKQEAgLTI0
MzMsMTAgKzI0MzAsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIHNldHRpbmdzLnNldExvY2FsU3RvcmFnZUVu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpsb2NhbFN0
b3JhZ2VFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRYU1NBdWRpdG9yRW5hYmxlZChz
dG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Onhzc0F1ZGl0b3JFbmFi
bGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHN0b3Jl
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZnJhbWVGbGF0dGVuaW5nRW5h
YmxlZEtleSgpKSk7Ci0gICAgaWYgKG1fcGFnZS0+aXNTZXNzaW9uSURTZXQoKSkKLSAgICAgICAg
c2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChtX3BhZ2UtPnNlc3Npb25JRCgpLmlz
RXBoZW1lcmFsKCkpOwotICAgIGVsc2UKLSAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBy
aXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkpOworICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXko
KSkgJiYgIW1fcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgbV9wYWdl
LT5zZXRTZXNzaW9uSUQoU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogICAg
IHNldHRpbmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVkS2V5KCkpKTsKICAg
ICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxl
ZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGV4dEFyZWFzQXJlUmVzaXphYmxl
S2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDkyNDRlNWEuLjkwMzYyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6
OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CiAgICAgdWlu
dDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KLSAgICBXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Np
b25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIGlz
VXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoV2Vi
Q29yZTo6U2Vzc2lvbklEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggM2JlOWZjZi4uNDhhMGQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0zNDgsNiArMzQ4LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFs
aXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWUK
ICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nl
c3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpn
ZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKQorICAgICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0
SWRlbnRpZmllckJhc2UoIiIpOworCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGlu
Z05ldHdvcmtTZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKIApAQCAtNDcxLDIwICs0NzQsNiBAQCB2b2lkIFdlYlByb2Nl
c3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNz
RW5hYmxlZCkKICAgICBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRB
Y2Nlc3NFbmFibGVkOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwotI2VuZGlmCi19Ci0K
LXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklE
IHNlc3Npb25JRCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwg
VVNFKFNPVVApCi0gICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7
Ci0jZW5kaWYKLX0KLQogRG93bmxvYWRNYW5hZ2VyJiBXZWJQcm9jZXNzOjpkb3dubG9hZE1hbmFn
ZXIoKQogewogICAgIEFTU0VSVCghdXNlc05ldHdvcmtQcm9jZXNzKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA5ZDNmODQ1Li5hN2Q2NDM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTY1LDkgKzE2NSw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAKLSAgICB2b2lkIGVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0KICAgICB2b2lk
IHBhZ2VEaWRFbnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGFnZVdpbGxM
ZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNmZhYjJmMi4uY2U3OTJkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtNTQsMTAgKzU0LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogI2VuZGlmCiAK
LSAgICAvLyBMZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uIGlzIHBlciBwcm9jZXNzLiBJ
bmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2UgZ3JvdXBzIG1heSB1c2UgdGhlIHByaXZhdGUgc2Vzc2lv
biBvciB0aGUgZGVmYXVsdCBvbmUgYXMgYXBwcm9wcmlhdGUuCi0gICAgRW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0KICAg
ICAjIFBsdWctaW5zLgogICAgIERpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMy
X3QgaGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzKEhhc2hNYXA8dWludDMyX3QsZG91YmxlPiBoYXNoZXMpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzNiMDJjNS4uZmJiNWQ2
MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4K
KworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBBUEkgdGVz
dCBmb3IgZXBoZW1lcmFsIHNlc3Npb25zIHNpbWlsYXIgdG8gUHJpdmF0ZUJyb3dzaW5nUHVzaFN0
YXRlTm9IaXN0b3J5Q2FsbGJhY2suCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNr
LmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTQt
MDMtMTEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEu
Y29tPgogCiAgICAgICAgIFtHVEtdW0NNYWtlXSAtLXVwZGF0ZS1ndGsgaGFzIG5vIGVmZmVjdApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiZTQxZjhjLi5kYmM3OWZlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTA3LDYgKzEwNyw3IEBACiAJCTUyQ0I0NzQxMTQ0OEZCOTMwMDg3Mzk5
NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDQjQ3NDAxNDQ4RkI5
MzAwODczOTk1IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5j
cHAgKi87IH07CiAJCTUyRTVDRTQ2MTREMjFFOUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0NTE0
RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovOyB9OwogCQk1MkU1Q0U0OTE0RDIx
RUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQ
YXJlbnRGcmFtZV9CdW5kbGUuY3BwICovOyB9OworCQk3NUYzMTM0MDE4QzE3MUI3MDA0MUNBRUMg
LyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1RjMxMzNGMThDMTcxQjcw
MDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3Bw
ICovOyB9OwogCQk3NkUxODJEQTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUx
ODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi87IH07CiAJ
CTc2RTE4MkREMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJE
QzE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9
OwogCQk3NkUxODJERjE1NDc2N0U2MDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAqLzsg
fTsKQEAgLTQzMiw2ICs0MzMsNyBAQAogCQk1MkNCNDc0MDE0NDhGQjkzMDA4NzM5OTUgLyogTG9h
ZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRp
cmVjdG9yeVVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ1MTRE
MjFFOUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYXJlbnRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyZW50RnJhbWVfQnVuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVD
IC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRl
Tm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkUx
ODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdp
bGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGlu
Zy1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0by1zdWJtaXR0aW5n
LWZvcm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjMsNiArNzY1LDcg
QEAKIAkJCQlGNkY0OUM2NzE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9D
YWNoZS5jcHAgKi8sCiAJCQkJRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4
dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAqLywKIAkJCQlDMDQ1Rjk0NDEzODVDMkU5MDBDMEYz
Q0QgLyogRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCAqLywKKwkJCQk3NUYzMTMz
RjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNh
bGxiYWNrLmNwcCAqLywKIAkJCQkxQTVGRUZEQzEyNzBFMkEzMDAwRTI5MjEgLyogRXZhbHVhdGVK
YXZhU2NyaXB0LmNwcCAqLywKIAkJCQlCQ0M4Qjk1QTEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVk
TG9hZC5jcHAgKi8sCiAJCQkJMUEwMkM4NEUxMjVENEE4NDAwRTNGNEJEIC8qIEZpbmQuY3BwICov
LApAQCAtMTE0OCw2ICsxMTUxLDcgQEAKIAkJCQkyOTcyMzRCNDE3M0FEMDQ4MDA5ODM2MDEgLyog
Q3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OTAy
OEI2MTRGQUJEOTIwMDdFNkI0MyAvKiBBY2NlcHRzRmlyc3RNb3VzZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTI5MTg2MUZGMTdCRDREQzcwMEQ0RTQxRSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRGaW5p
c2hMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNzVGMzEzNDAxOEMxNzFCNzAwNDFDQUVD
IC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyNkYxQjQ0NDE1Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUI1NUYxMUEwMTUxNjgzNEYwMDkxNTkxNiAvKiBBdHRyaWJ1
dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDBDRDlGNjMxNUJFMzEyQzAwMkRBMkNF
IC8qIEJhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hp
c3RvcnlDYWxsYmFjay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBo
ZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzAzMTk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hp
c3RvcnlDYWxsYmFjay5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wg
dGVzdERvbmU7CisKK3N0YXRpYyB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uRGF0YVJlZiBu
YXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiBuYXZpZ2F0aW5nIGlu
IFByaXZhdGUgQnJvd3NpbmcuCisgICAgRkFJTCgpOworfQorCitzdGF0aWMgdm9pZCBkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRh
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRlc3REb25lID0gdHJ1ZTsKK30KKwor
VEVTVChXZWJLaXQyLCBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2sp
Cit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29u
dGV4dENyZWF0ZSgpKTsKKworICAgIFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMCBoaXN0b3J5Q2xp
ZW50OworICAgIG1lbXNldCgmaGlzdG9yeUNsaWVudCwgMCwgc2l6ZW9mKGhpc3RvcnlDbGllbnQp
KTsKKworICAgIGhpc3RvcnlDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBoaXN0b3J5Q2xp
ZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhID0gZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGE7CisKKyAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KGNvbnRleHQuZ2V0KCks
ICZoaXN0b3J5Q2xpZW50LmJhc2UpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29u
dGV4dC5nZXQoKSk7CisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBwYWdlTG9hZGVyQ2xpZW50
OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGll
bnQpKTsKKworICAgIHBhZ2VMb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBwYWdl
TG9hZGVyQ2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQod2ViVmlldy5wYWdlKCksICZwYWdlTG9hZGVyQ2xpZW50LmJhc2UpOworCisgICAgV0tTZXNz
aW9uUmVmIHNlc3Npb24gPSBXS1Nlc3Npb25DcmVhdGUodHJ1ZSk7CisgICAgV0tQYWdlU2V0U2Vz
c2lvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvbik7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJl
Zj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJwdXNoLXN0YXRlIiwg
Imh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsK
KworICAgIFV0aWw6OnJ1bigmdGVzdERvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226459</attachid>
            <date>2014-03-11 18:20:52 -0700</date>
            <delta_ts>2014-03-12 15:24:34 -0700</delta_ts>
            <desc>style + gtk build fix</desc>
            <filename>privatesetting.02.diff</filename>
            <type>text/plain</type>
            <size>82858</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMmFlNTQ3Li4wZTQ5OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVj
dFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5p
dGlhbGl6ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNl
c3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRv
IGp1c3QgcmV0dXJuIG1fc2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vz
c2lvbklEKTogQWxzbyBwZXJmb3JtIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24u
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOiBSZW1vdmUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBzZXR0aW5n
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUGFnZSByZWZsZWN0cyBz
ZXR0aW5nIHVzaW5nIHNlc3Npb24uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpnZXRWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
Ojppc0Rpc2FibGVkQnlQcml2YXRlQnJvd3NpbmcpOgorCiAyMDE0LTAzLTExICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEdldCB0aGUgaW5jb21wbGV0ZSBX
ZWJWVFQgUmVnaW9ucyBjb2RlIHRvIGJ1aWxkIGFnYWluLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IDc1MmUy
OWUuLjU4ZGE0N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBib29sIERhdGFi
YXNlQ29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2VzcygpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAg
aWYgKCFkb2N1bWVudC0+cGFnZSgpIHx8IChkb2N1bWVudC0+cGFnZSgpLT5zZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNl
QWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3Rv
Y29sKCkpKSkKKyAgICAgICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpIHx8IChkb2N1bWVudC0+cGFn
ZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpICYmICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dz
RGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KS0+cHJvdG9jb2woKSkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA2MWI2ZjhhLi43NGUxOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5
LmgiCisjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgpAQCAtMTIxMCw4ICsx
MjExLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgVVJMJiBp
bml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudFQKICAgICBpZiAobV9zZW5kUHJvZ3Jlc3NF
dmVudHMpIAogICAgICAgICBzdGFydFByb2dyZXNzRXZlbnRUaW1lcigpOwogCi0gICAgU2V0dGlu
Z3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOwotICAgIGJvb2wgcHJpdmF0ZU1v
ZGUgPSAhc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAg
ICBib29sIHByaXZhdGVNb2RlID0gZG9jdW1lbnQoKS5wYWdlKCkgJiYgZG9jdW1lbnQoKS5wYWdl
KCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgbV9wbGF5ZXItPnNldFByaXZhdGVC
cm93c2luZ01vZGUocHJpdmF0ZU1vZGUpOwogCiAgICAgLy8gUmVzZXQgZGlzcGxheSBtb2RlIHRv
IGZvcmNlIGEgcmVjYWxjdWxhdGlvbiBvZiB3aGF0IHRvIHNob3cgYmVjYXVzZSB3ZSBhcmUgcmVz
ZXR0aW5nIHRoZSBwbGF5ZXIuCkBAIC01MTM2LDggKzUxMzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkKICAgICBpZiAoIW1fcGxheWVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgp
LnNldHRpbmdzKCk7Ci0gICAgYm9vbCBwcml2YXRlTW9kZSA9ICFzZXR0aW5ncyB8fCBzZXR0aW5n
cy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSBkb2N1
bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKTsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpwcml2YXRlQnJvd3NpbmdT
dGF0ZURpZENoYW5nZSglcykiLCBib29sU3RyaW5nKHByaXZhdGVNb2RlKSk7CiAgICAgbV9wbGF5
ZXItPnNldFByaXZhdGVCcm93c2luZ01vZGUocHJpdmF0ZU1vZGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggZTRmMjJlZS4uMjA1ZTg1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC0zNDgs
NyArMzQ4LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KEhpc3RvcnlVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiAKICAgICBGcmFtZUxvYWRlciYgZnJhbWVM
b2FkZXIgPSBtX2ZyYW1lLmxvYWRlcigpOwogCi0gICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJh
bWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBuZWVkUHJp
dmFjeSA9IG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogICAgIGNv
bnN0IFVSTCYgaGlzdG9yeVVSTCA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnVybEZv
ckhpc3RvcnkoKTsKIAogICAgIGlmICghZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+aXND
bGllbnRSZWRpcmVjdCgpKSB7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6dXBkYXRlRm9yUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKICAgICAg
ICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVk
aXJlY3QgbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIAotICAgIGJv
b2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOworICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKTsKICAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmIChtX2ZyYW1l
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkgewpAQCAtNDMz
LDcgKzQzMyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGly
ZWN0KCkKICAgICAgICAgbV9jdXJyZW50SXRlbS0+Y2xlYXJTY3JvbGxQb2ludCgpOwogICAgIH0K
IAotICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpOworICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKICAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2Zy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlm
ICghaGlzdG9yeVVSTC5pc0VtcHR5KCkgJiYgIW5lZWRQcml2YWN5KSB7CkBAIC01MjMsNyArNTIz
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdh
dGlvbigpCiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSkKKyAgICBpZiAobV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2Uo
KTsKQEAgLTg0Nyw3ICs4NDcsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LAogCiAgICAgcGFn
ZS0+YmFja0ZvcndhcmQoKS5hZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKIAotICAgIGlmICht
X2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChtX2Zy
YW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYWRkVmlzaXRlZExpbmsoKnBhZ2UsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmlu
ZykpOwpAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VT
dGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplCiAgICAgbV9j
dXJyZW50SXRlbS0+c2V0Rm9ybURhdGEoMCk7CiAgICAgbV9jdXJyZW50SXRlbS0+c2V0Rm9ybUNv
bnRlbnRUeXBlKFN0cmluZygpKTsKIAotICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fZnJhbWUucGFn
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNzlmYmU0Zi4uMzZjMGNiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZQogICAgIGlm
ICh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKIAotICAgIGlmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiAoZG9j
dW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
IHx8ICFkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+dHJl
ZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSkKKyAgICBpZiAoZG9jdW1l
bnRMb2FkZXItPmZyYW1lKCkgJiYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkgfHwgIWRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGRvY3Vt
ZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGdyb3VwID0gY2FjaGVTdG9yYWdlKCkuY2FjaGVHcm91cEZvclVSTCh1cmwpKSB7CkBAIC0x
NTEsNyArMTUxLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiBwYXNzZWRNYW5pZmVzdFUKICAgICB9CiAKICAgICAvLyBE
b24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJs
ZWQuCi0gICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB8
fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0
aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgeworICAgIGlmIChmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpIHx8
ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRp
b25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkp
KSB7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNIRUNL
SU5HX0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBw
bGljYXRpb25DYWNoZUhvc3Q6OkVSUk9SX0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwoRnJhbWUqIGZyYW1lKQogICAgIEFTU0VSVCgh
ZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPmFwcGxpY2F0aW9uQ2FjaGUo
KSk7CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJy
b3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkNIRUNLSU5HX0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RM
aXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkVSUk9SX0VWRU5ULCBkb2N1bWVudExv
YWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6dXBkYXRlKEZyYW1lKiBmcmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0
ZU9wdGlvbiB1cAogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNr
IGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUtPnNldHRpbmdz
KCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgp
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLT5wYWdlKCkt
PnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCku
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgQVNTRVJUKG1fcGVuZGlu
Z01hc3RlclJlc291cmNlTG9hZGVycy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQobV9wZW5k
aW5nRW50cmllcy5pc0VtcHR5KCkpOwogICAgICAgICBBU1NFUlQoIW1fY2FjaGVCZWluZ1VwZGF0
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggOWM2OWJlZi4uZTI1YWRkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3Bw
CkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6YWJvcnQoKQog
CiBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkK
IHsKLSAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiBtX2RvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCgpICYmICFtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiBt
X2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVXZWJBcHBsaWNhdGlv
bkNhY2hlRW5hYmxlZCgpICYmICFtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiB9CiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVy
LmNwcAppbmRleCA5M2MxZWE2Li5hMTg1Y2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBJY29uQ29u
dHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVjaXNpb24gaWNvbkxv
YWREZWNpc2lvbikKICAgICBBU1NFUlQoaWNvbkxvYWREZWNpc2lvbiAhPSBJY29uTG9hZFVua25v
d24pOwogCiAgICAgLy8gIEZJWE1FICg8cmRhcjovL3Byb2JsZW0vOTE2ODYwNT4pIC0gV2Ugc2hv
dWxkIHN1cHBvcnQgaW4tbWVtb3J5LW9ubHkgcHJpdmF0ZSBicm93c2luZyBpY29ucyBpbiBhc3lu
Y2hyb25vdXMgaWNvbiBkYXRhYmFzZSBtb2RlLgotICAgIGlmIChpY29uRGF0YWJhc2UoKS5zdXBw
b3J0c0FzeW5jaHJvbm91c01vZGUoKSAmJiBtX2ZyYW1lLnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGljb25EYXRhYmFzZSgpLnN1cHBvcnRzQXN5
bmNocm9ub3VzTW9kZSgpICYmIG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJh
bCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaWNvbkxvYWREZWNpc2lvbiA9PSBJY29u
TG9hZE5vKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBkMWRmNzcyLi5kNzVhYzZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKQEAgLTE5MSw3ICsxOTEsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDbGllbnRzJiBw
YWdlQ2xpZW50cykKICAgICAsIG1fbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlc0NvdW50
KDApIC8vIE5PVEU6IE9ubHkgY2FsbGVkIGZyb20gSW50ZXJuYWxzIGZvciBTcGF0aWFsIE5hdmln
YXRpb24gdGVzdGluZy4KICAgICAsIG1fZnJhbWVzSGFuZGxpbmdCZWZvcmVVbmxvYWRFdmVudCgw
KQogICAgICwgbV92aXNpdGVkTGlua1N0b3JlKHN0ZDo6bW92ZShwYWdlQ2xpZW50cy52aXNpdGVk
TGlua1N0b3JlKSkKLSAgICAsIG1fc2Vzc2lvbklEKFNlc3Npb25JRDo6ZW1wdHlTZXNzaW9uSUQo
KSkKKyAgICAsIG1fc2Vzc2lvbklEKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogewog
ICAgIEFTU0VSVChtX2VkaXRvckNsaWVudCk7CiAKQEAgLTEwNzgsMTkgKzEwNzgsMTIgQEAgdm9p
ZCBQYWdlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKQogICAgICAgICB2aWV3c1tpXS0+
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgUGFnZTo6cHJpdmF0ZUJy
b3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3ZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFu
Z2VkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAgICBib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
Ly8gRG9uJ3QgYWxsb3cgY2hhbmdpbmcgdGhlIHByaXZhdGUgYnJvd3Npbmcgc3RhdGUgaWYgd2Ug
aGF2ZSBzZXQgYSBzZXNzaW9uIElELgorICAgIEFTU0VSVChtX3Nlc3Npb25JRCA9PSBTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSB8fCBtX3Nlc3Npb25JRCA9PSBTZXNzaW9uSUQ6OmxlZ2Fj
eVByaXZhdGVTZXNzaW9uSUQoKSk7CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7Ci0K
LSAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUg
dGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKLSAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVC
cm93c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCi0gICAg
YXV0byB2aWV3cyA9IHBsdWdpblZpZXdzKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgdmlld3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIHZpZXdzW2ldLT5wcml2YXRlQnJvd3NpbmdT
dGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisgICAgc2V0U2Vzc2lvbklEKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQgPyBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQo
KSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKIH0KIAogI2lmICFBU1NFUlRfRElT
QUJMRUQKQEAgLTE1MTIsMTkgKzE1MDUsMjcgQEAgVmlzaXRlZExpbmtTdG9yZSYgUGFnZTo6dmlz
aXRlZExpbmtTdG9yZSgpCiAKIFNlc3Npb25JRCBQYWdlOjpzZXNzaW9uSUQoKSBjb25zdAogewot
ICAgIGlmIChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBtX3Nlc3Npb25J
RDsKKyAgICBBU1NFUlQobV9zZXNzaW9uSUQuaXNWYWxpZCgpKTsKIAotICAgIGlmIChzZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpOwotCi0gICAgcmV0dXJuIFNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOworICAgIHJldHVybiBtX3Nlc3Npb25JRDsKIH0KIAogdm9pZCBQYWdlOjpz
ZXRTZXNzaW9uSUQoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklE
LmlzVmFsaWQoKSk7Ci0gICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisgICAgaWYgKHNlc3Np
b25JRCAhPSBtX3Nlc3Npb25JRCkgeworICAgICAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsK
KworICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5wcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpOworCisgICAgICAgIC8vIENv
bGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlv
biB0aGUgcGx1Zy1pbiB0YWtlcworICAgICAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCisgICAgICAgIGF1
dG8gdmlld3MgPSBwbHVnaW5WaWV3cygpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB2aWV3cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHZpZXdzW2ldLT5wcml2YXRlQnJv
d3NpbmdTdGF0ZUNoYW5nZWQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworICAgIH0KIH0KIAog
UGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZmYyMDZh
NS4uYWNjMGQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTMxMSw3ICszMTEsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGRuc1ByZWZldGNoaW5nU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBzdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKLSAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCgpOworICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCk7CiAKICAgICB2b2lkIHNldERlYnVnZ2VyKEpTQzo6RGVidWdnZXIq
KTsKICAgICBKU0M6OkRlYnVnZ2VyKiBkZWJ1Z2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXI7IH0KQEAgLTQwOCw3ICs0MDgsNiBAQCBwdWJsaWM6CiAKICAgICBTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoU2Vzc2lvbklEKTsKLSAgICBib29s
IGlzU2Vzc2lvbklEU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQuaXNWYWxpZCgpOyB9
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0R3JvdXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZS5jcHAKaW5kZXggNDdiOWJhMC4uNDc5MzZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFBhZ2VDb25zb2xlOjphZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cgogICAg
IGlmIChzb3VyY2UgPT0gTWVzc2FnZVNvdXJjZTo6Q1NTKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAobV9wYWdlLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlm
IChtX3BhZ2Uuc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBs
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB1cmwpOwpAQCAtMTQ2LDcg
KzE0Niw3IEBAIHZvaWQgUGFnZUNvbnNvbGU6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3Nh
Z2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwKICAgICBib29sIGdvdE1lc3NhZ2UgPSBh
cmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoJm1fcGFnZSwgTWVzc2FnZVNv
dXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGV4ZWMsIGFyZ3VtZW50cyk7
CiAKLSAgICBpZiAobV9wYWdlLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQor
ICAgIGlmIChtX3BhZ2Uuc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGdvdE1lc3NhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXgg
MDU3ZTI1Yi4uNWIzMTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTE3MSw3ICsx
NzEsNiBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faXNKYXZhRW5h
YmxlZChmYWxzZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXModHJ1ZSkKICAg
ICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQotICAgICwgbV9wcml2YXRlQnJv
d3NpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9hcmVJbWFnZXNFbmFibGVkKHRydWUpCiAgICAg
LCBtX2FyZVBsdWdpbnNFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc1NjcmlwdEVuYWJsZWQoZmFs
c2UpCkBAIC00MzEsMTEgKzQzMCw3IEBAIHZvaWQgU2V0dGluZ3M6OnNldFBsdWdpbnNFbmFibGVk
KGJvb2wgYXJlUGx1Z2luc0VuYWJsZWQpCiAKIHZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewotICAgIGlmIChtX3By
aXZhdGVCcm93c2luZ0VuYWJsZWQgPT0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZDsKLSAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOworICAg
IG1fcGFnZS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0
IFVSTCYgdXNlclN0eWxlU2hlZXRMb2NhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBm
MzI3MzhiLi4yN2FkOGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0xNDYsNyArMTQ2LDYg
QEAgcHVibGljOgogICAgIC8vICAtIEhUVFAgQ29va2llcwogICAgIC8vICAtIFBsdWctaW5zICh0
aGF0IHN1cHBvcnQgTlBOVnByaXZhdGVNb2RlQm9vbCkKICAgICB2b2lkIHNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQoYm9vbCk7Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkOyB9CiAKICAgICB2b2lkIHNldERO
U1ByZWZldGNoaW5nRW5hYmxlZChib29sKTsKICAgICBib29sIGRuc1ByZWZldGNoaW5nRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkOyB9CkBAIC0zMDEsNyAr
MzAwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNKYXZhRW5hYmxlZCA6IDE7CiAgICAgYm9v
bCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzIDogMTsKICAgICBib29sIG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5IDogMTsKLSAgICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA6
IDE7CiAgICAgYm9vbCBtX2FyZUltYWdlc0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hcmVQbHVn
aW5zRW5hYmxlZCA6IDE7CiAgICAgYm9vbCBtX2lzU2NyaXB0RW5hYmxlZCA6IDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBhN2VlNTMyLi45NjczMmE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEzNTQsNyArMTM1NCw3IEBAIE5QRXJy
b3IgUGx1Z2luVmlldzo6Z2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVl
KQogICAgICAgICBQYWdlKiBwYWdlID0gbV9wYXJlbnRGcmFtZS0+cGFnZSgpOwogICAgICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLSAgICAg
ICAgKigoTlBCb29sKil2YWx1ZSkgPSBwYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKTsKKyAgICAgICAgKigoTlBCb29sKil2YWx1ZSkgPSBwYWdlLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpOwogICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCBj
MWIyMzdjLi42MDYyYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
ZWFyY2hGaWVsZC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6
YWRkU2VhcmNoUmVzdWx0KCkKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoZnJhbWUoKS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSkKKyAgICBpZiAoZnJhbWUoKS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGludCBzaXplID0gc3RhdGljX2Nhc3Q8aW50PihtX3JlY2Vu
dFNlYXJjaGVzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCBjNDg0
Yjk2Li44NjQ3NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTE1OCw3ICsx
NTgsNyBAQCBib29sIFN0b3JhZ2U6OmNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5LCBFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKIAogYm9vbCBTdG9yYWdlOjppc0Rpc2FibGVkQnlQcml2YXRlQnJv
d3NpbmcoKSBjb25zdAogewotICAgIGlmICghbV9mcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+c2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1f
c3RvcmFnZUFyZWEtPnN0b3JhZ2VUeXBlKCkgPT0gTG9jYWxTdG9yYWdlKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKaW5kZXggZWI3YWI5Mi4uM2ZmZGZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAg
ICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvbnNpc3RzIHNv
bGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWluZyBXZWJDb3JlOjpT
ZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChf
ZXdrX3ZpZXdfcHJpdl9uZXcpOgorCiAyMDE0LTAzLTEwICBIeW93b24gS2ltICA8aHcxMDA4Lmtp
bUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBNb2RpZnkgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgcmVsYXRlZCBmdW5jdGlvbnMgaW4gZXdrX3ZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAppbmRleCBhMTczOWEwLi5jNjY3ZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmll
dy5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9s
bGVyLmgiCisjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9y
ZS5oIgpAQCAtODAwLDcgKzgwMSw3IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9l
d2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAjZW5kaWYK
ICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQWNjZXNzQ2xpcGJvYXJkID0gcGFnZVNldHRp
bmdzLmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBwYWdlU2V0dGluZ3MuRE9NUGFz
dGVBbGxvd2VkKCk7CiAgICAgcHJpdi0+c2V0dGluZ3MucmVzaXphYmxlVGV4dGFyZWFzID0gcGFn
ZVNldHRpbmdzLnRleHRBcmVhc0FyZVJlc2l6YWJsZSgpOwotICAgIHByaXYtPnNldHRpbmdzLnBy
aXZhdGVCcm93c2luZyA9IHBhZ2VTZXR0aW5ncy5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cisg
ICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nID0gcHJpdi0+cGFnZSgpLT5zZXNzaW9u
SUQoKS5pc0VwaGVtZXJhbCgpOwogICAgIHByaXYtPnNldHRpbmdzLmNhcmV0QnJvd3NpbmcgPSBw
YWdlU2V0dGluZ3MuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5z
cGF0aWFsTmF2aWdhdGlvbiA9IHBhZ2VTZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQo
KTsKICAgICBwcml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgPSBwYWdlU2V0dGluZ3MubG9jYWxT
dG9yYWdlRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDI3MWI0OTYuLmUyYzMxMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sg
IDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRo
IHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRv
IHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSB3aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSk6CisKIDIwMTQtMDMtMDcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIE1vdmUgR1RLIFdlYktpdDEgY29kZSB0byBzdGQ6OnVuaXF1ZV9wdHIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcAppbmRleCBiYTc2ZGMzLi5iN2U2ZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
CkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW0KIAogCiAgICAgQ3Jl
ZGVudGlhbFN0b3JhZ2VNb2RlIGNyZWRlbnRpYWxTdG9yYWdlTW9kZTsKLSAgICBpZiAoY29yZSh2
aWV3KS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGNvcmUo
dmlldyktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIGNyZWRlbnRpYWxTdG9y
YWdlTW9kZSA9IERpc2FsbG93UGVyc2lzdGVudFN0b3JhZ2U7CiAgICAgZWxzZQogICAgICAgICBj
cmVkZW50aWFsU3RvcmFnZU1vZGUgPSBBbGxvd1BlcnNpc3RlbnRTdG9yYWdlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IDFmNWFjNjIuLjY0OGUyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAg
ICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBjb25zaXN0cyBz
b2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6
U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3aXRoIFBhZ2U6OnNlc3Npb25JRCgp
LmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxI
aXN0b3J5SXRlbUZvclBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQubW06CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
dG9yYWdlU2Vzc2lvbik6CisKIDIwMTQtMDMtMTAgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU11bV0sxXSBDcmFzaCBpbiBIVE1MTWVkaWFFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoKSAtICItW05TU2V0IGFkZE9iamVjdDpdOiBvYmplY3QgY2Fu
bm90IGJlIG5pbCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMmRjYjI1My4uMTI2OTMzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KQEAgLTExMjAsNyArMTEyMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpCiAgICAgSGlzdG9yeUl0ZW0qIGhp
c3RvcnlJdGVtID0gMDsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShtX3dlYkZyYW1lLmdl
dCgpKS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkpCisgICAgICAgIGlmICghcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKSkKICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gcGFnZS0+YmFja0ZvcndhcmQoKS5jdXJy
ZW50SXRlbSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMGRiNGY4
MC4uNzFhY2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0xMTMsNyArMTEzLDcg
QEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9y
YWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQorICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNF
cGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwogCiAgICAgcmV0
dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggM2U3MDllYy4uMGQwZjE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKwor
ICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvbnNp
c3RzIHNvbGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWluZyBXZWJD
b3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVH
bG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24pOgorCiAyMDE0LTAzLTA2ICBKb3NlcGggUGVjb3Jhcm8gIDxw
ZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXhwb3NlIHRoZSBj
b25zb2xlIG9iamVjdCBpbiBKU0NvbnRleHRzIHRvIGludGVyYWN0IHdpdGggV2ViIEluc3BlY3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDI4NDdiNTMuLjY4NmUzZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTgwMyw3ICs4MDMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRh
dGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKQogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IHdlYlZpZXctPnBhZ2Uo
KSkgewotICAgICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQorICAgICAgICBpZiAoIXBhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgICAgICBoaXN0b3J5SXRlbSA9IHBhZ2UtPmJhY2tGb3J3YXJkKCkuY3VycmVudEl0ZW0oKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggYmY1OWVlNy4uNTAxMGRm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZy
YW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisg
ICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJh
bCgpKQogICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBlYzQxZjkxLi5lYzY1NjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODEgQEAKKzIwMTQtMDMt
MTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHByaXZh
dGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOiBD
aGFuZ2UgdG8gcmVmZXJlbmNlIGNvdW50ZWQgc2Vzc2lvbi4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3M6OnJlbW92ZVNlc3Npb25SZWZlcmVuY2UpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQuaDogUmVtb3ZlIGNvZGUgc2luY2UgU2Vzc2lvblRyYWNrZXIgaW1w
bGVtZW50cyBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gY3JlYXRpb24uCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOiBEaXR0by4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHA6
IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcDogUmVtb3ZlIHByaXZhdGUgYnJvd3NpbmcgcGFyYW1ldGVyLCBzaW5jZSBz
ZXNzaW9ucyBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCBhIGdsb2JhbCBzZXR0
aW5nLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwOiBS
ZWZlcmVuY2UgY291bnQgc2Vzc2lvbnMgbWFudWFsbHkgKG5lZWRlZCBkdWUgdG8gY3Jvc3MtcHJv
Y2VzcyByZWZlcmVuY2VzKS4KKyAgICAgICAgKFdlYktpdDo6c3RhdGljU2Vzc2lvbkNvdW50ZXIp
OgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNl
KToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuaDogRGl0dG8uCisgICAgICAgICog
U2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDogQ2hhbmdlIFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgdG8gTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6IERpdHRvLgorICAgICAgICAoV0tQcmVmZXJlbmNlc1Nl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdl
UHJpdmF0ZU1hYy5jcHA6CisgICAgICAgIChXS1BhZ2VJc1VSTEtub3duSFNUU0hvc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3ByaXZhdGVCcm93c2luZ0VuYWJsZWRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcDogQ2hhbmdlIHRvIHJlZmVyZW5jZSBjb3VudGVkIHNlc3Npb25zLgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjplbnN1cmVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjppbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRlY3JlbWVudFByaXZhdGVCcm93c2luZ0Nv
dW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c29tZVBhZ2VJc1ByaXZhdGVCcm93
c2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZyk6IEltcGxlbWVudCB1c2luZyBy
ZWZlcmVuY2UgY291bnQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHA6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJJY29uRGF0YWJhc2U6OnNldERhdGFiYXNlUGF0
aCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KTogRG9uJ3Qgc2VuZCBtZXNzYWdlIHRvIFdl
YlBhZ2UgcHJvY2VzcyB0aGF0IGRvZXNuJ3QgeWV0IGV4aXN0LgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkpOiBDbGVhbiB1cCBzZXNzaW9uLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFNlc3Npb25JbXBsKTogVHJhY2sgcmVmZXJlbmNlIGNv
dW50IGFuZCBvcHRpb25hbGx5IHNlbmQgbWVzc2FnZSB0byBXZWJQYWdlIHByb2Nlc3MuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbik6IFNlbmQgbWVzc2FnZSB0byBX
ZWJQYWdlIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJlZmVyZW5j
ZXNEaWRDaGFuZ2UpOiBTZXQgc2Vzc2lvbiBiYXNlZCBvbiBsZWdhY3kgcHJpdmF0ZSBicm93c2lu
ZyBwcmVmZXJlbmNlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlczo6YWRkUGFnZSk6IFNlc3Npb24ga2VlcHMgdHJhY2sgb2YgcmVmZXJlbmNlIGNv
dW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6cmVtb3ZlUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjp1cGRhdGVCb29sVmFsdWVGb3JLZXkpOiBDaGFu
Z2UgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCB0byBsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6dXBkYXRlTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nVmFsdWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6
IFJlZmVyZW5jZSBjb3VudCBzZXNzaW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDogTWVjaGFuaWNhbCBjaGFuZ2UgU2V0dGluZ3M6OnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSB0byBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aDogUmVtb3ZlIGNvZGUgc2luY2UgU2Vzc2lvblRyYWNrZXIgaW1wbGVtZW50cyBwcml2YXRlIGJy
b3dzaW5nIHNlc3Npb24gY3JlYXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbTogRGl0dG8uCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291
cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9uSUQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6IFNldCBzZXNz
aW9uIHRvIGxlZ2FjeSBwcml2YXRlIHNlc3Npb24gaWYgbmVlZGVkLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlc3Np
b25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogUmVtb3ZlIGVuc3Vy
ZS9kZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbiBhcyBQYWdlIHJlZmVyZW5jZSBjb3VudHMg
aXRzIHNlc3Npb25zLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2Vi
UHJvY2Vzcyk6IE1ha2Ugc3VyZSBpZGVudGlmaWVyIGJhc2UgaXMgc2V0LgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKwogMjAxNC0wMy0xMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvciBzaG91bGQgbm90IGJlIGV4
cG9zZWQgb24gV0tXZWJWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNGI4NDBmNC4uNTU0Y2I0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTY2LDEwICsx
NjYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29u
c3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRJ
ZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2Vu
ZGlmCiAKLSAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBoYW5kbGluZyB0aGlzIGhlcmUsIGEgbWVz
c2FnZSBzaG91bGQgYmUgc2VudCBsYXRlciAoc2NhbGVzIHRvIG11bHRpcGxlIHNlc3Npb25zKQot
ICAgIGlmIChwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25J
RDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKLQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3Vs
ZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAKQEAgLTIxOSwxNCArMjE1LDE0IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkK
ICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNz
aW9uUmVmZXJlbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBT
ZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShzZXNzaW9uSUQpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQg
c2Vzc2lvbklEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lv
bihzZXNzaW9uSUQpOworICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNl
KHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1
aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBjN2Mz
YWVkLi40YzZiNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgYWRkU2Vzc2lvblJlZmVyZW5j
ZShXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRv
d25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2Fu
Y2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVs
KHVpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5OTQ0OS4uMDk5NGE3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKFZlY3Rv
cjxTdHJpbmc+IGxhbmd1YWdlcykKICNlbmRpZgogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgQWRkU2Vz
c2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIFJlbW92ZVNl
c3Npb25SZWZlcmVuY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAgIERvd25s
b2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0LmgKaW5kZXggZjVjY2NjMS4uZWJiN2Y2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw5ICs0
MCw2IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQoKTsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQg
dXNlIFNlc3Npb25UcmFja2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMmE3YzU5NC4uMjZkODhhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVO
ZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNzcsMTUgKzc3LDQgQEAgUmVzb3VyY2VFcnJvciBSZW1v
dGVOZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWUKICAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXZv
aWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJC
YXNlKCkuaXNOdWxsKCkpOwotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25J
RCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNl
c3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpICsgJy4nICsgU3RyaW5nOjpudW1iZXIo
c2Vzc2lvbklELnNlc3Npb25JRCgpKSkpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0U291cC5jcHAKaW5kZXggM2JlOWRiYy4uM2UyN2NlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHRTb3VwLmNwcApAQCAtNDYsMTEgKzQ2LDYgQEAgYm9vbCBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lv
bklEIHNlc3Npb25JRCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMTQxYmE3
YS4uNmJjZWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMzgs
NyArMzgsNiBAQCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6TmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMoKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0g
ICAgZW5jb2RlciA8PCBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGVuY29kZXIuZW5jb2Rl
RW51bShjYWNoZU1vZGVsKTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeTsKICAg
ICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAgLTY1LDgg
KzY0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb24KIAogYm9vbCBOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcmVzdWx0KQogewotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnByaXZhdGVCcm93c2luZ0VuYWJsZWQpKQotICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmNhY2hlTW9kZWwp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
ZGlza0NhY2hlRGlyZWN0b3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IDU4YWNiMzkuLmRhZDExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAt
NTAsNyArNTAsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewog
ICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKIAotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKICAgICBD
YWNoZU1vZGVsIGNhY2hlTW9kZWw7CiAKICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKaW5kZXggYmRjZmZiOS4uNjBm
NGFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBAIC00MSw2
ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+PiYgc3RhdGljU2Vzc2lvbgogICAgIHJldHVybiBtYXAuZ2V0KCk7
CiB9CiAKK3N0YXRpYyBIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+JiBzdGF0aWNTZXNzaW9u
Q291bnRlcigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+PiBtYXA7CisgICAg
cmV0dXJuIG1hcC5nZXQoKTsKK30KKwogc3RhdGljIEhhc2hNYXA8Y29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKiwgU2Vzc2lvbklEPiYgc3RvcmFnZVNlc3Npb25Ub0lEKCkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtODEsMjAgKzg5LDQxIEBAIFNlc3Npb25JRCBTZXNz
aW9uVHJhY2tlcjo6c2Vzc2lvbklEKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
bikKICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb25Ub0lEKCkuZ2V0KCZzZXNzaW9uKTsKIH0KIAot
dm9pZCBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6
OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNzaW9uKQordm9pZCBTZXNzaW9u
VHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAg
IEFTU0VSVChzZXNzaW9uSUQgIT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpOworCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkp
IHsKKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lvbklELCBzdGF0aWNT
ZXNzaW9uQ291bnRlcigpLmdldChzZXNzaW9uSUQpICsgMSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlQoIVNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlz
TnVsbCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNl
c3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51
bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5z
ZXQoc2Vzc2lvbi5nZXQoKSwgc2Vzc2lvbklEKTsKICAgICBzdGF0aWNTZXNzaW9uTWFwKCkuc2V0
KHNlc3Npb25JRCwgc3RkOjptb3ZlKHNlc3Npb24pKTsKKyAgICBzdGF0aWNTZXNzaW9uQ291bnRl
cigpLnNldChzZXNzaW9uSUQsIDEpOwogfQogCi12b2lkIFNlc3Npb25UcmFja2VyOjpkZXN0cm95
U2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBTZXNzaW9uVHJhY2tlcjo6cmVtb3Zl
U2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgaWYgKHN0YXRpY1Nlc3Npb25NYXAoKS5jb250YWlucyhzZXNz
aW9uSUQpKSB7CisKKyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworCisgICAg
QVNTRVJUKHN0YXRpY1Nlc3Npb25NYXAoKS5jb250YWlucyhzZXNzaW9uSUQpKTsKKworICAgIHVp
bnQ2NF90IGNvdW50ZXIgPSBzdGF0aWNTZXNzaW9uQ291bnRlcigpLmdldChzZXNzaW9uSUQpOwor
CisgICAgaWYgKGNvdW50ZXIgPT0gMSkgewogICAgICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5y
ZW1vdmUoc2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICAgICAgc3RhdGljU2Vzc2lvbk1hcCgpLnJl
bW92ZShzZXNzaW9uSUQpOwotICAgIH0KKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5y
ZW1vdmUoc2Vzc2lvbklEKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50
ZXIoKS5zZXQoc2Vzc2lvbklELCBjb3VudGVyIC0gMSk7CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNr
ZXI6OnNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKaW5kZXggMGIwMzAyOS4uYTJjODliNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKQEAgLTQyLDggKzQyLDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGdldElkZW50aWZpZXJCYXNlKCk7CiAgICAgc3Rh
dGljIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc2Vzc2lvbihXZWJDb3JlOjpTZXNz
aW9uSUQpOwogICAgIHN0YXRpYyBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwotICAgIHN0YXRpYyB2b2lkIHNldFNlc3Np
b24oV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oV2ViQ29yZTo6
U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRTZXNzaW9uUmVmZXJlbmNlKFdlYkNvcmU6
OlNlc3Npb25JRCk7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShXZWJD
b3JlOjpTZXNzaW9uSUQpOwogICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZpZXJCYXNlKGNvbnN0
IFN0cmluZyYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0
b3JlLmgKaW5kZXggYzc5ZGE4My4uYmI2ZjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAgICAgbWFjcm8oRnJhbWVGbGF0dGVuaW5nRW5hYmxlZCwgZnJhbWVGbGF0dGVuaW5nRW5h
YmxlZCwgQm9vbCwgYm9vbCwgREVGQVVMVF9GUkFNRV9GTEFUVEVOSU5HX0VOQUJMRUQpIFwKICAg
ICBtYWNybyhEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBC
b29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKEphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJs
ZWQsIGphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCi0g
ICAgbWFjcm8oUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
Qm9vbCwgYm9vbCwgZmFsc2UpIFwKKyAgICBtYWNybyhMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAog
ICAgIG1hY3JvKFRleHRBcmVhc0FyZVJlc2l6YWJsZSwgdGV4dEFyZWFzQXJlUmVzaXphYmxlLCBC
b29sLCBib29sLCBERUZBVUxUX1RFWFRfQVJFQVNfQVJFX1JFU0laQUJMRSkgXAogICAgIG1hY3Jv
KEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHksIGphdmFTY3JpcHRDYW5PcGVu
V2luZG93c0F1dG9tYXRpY2FsbHksIEJvb2wsIGJvb2wsIERFRkFVTFRfSkFWQVNDUklQVF9DQU5f
T1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFkpIFwKICAgICBtYWNybyhIeXBlcmxpbmtBdWRpdGlu
Z0VuYWJsZWQsIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmlu
ZGV4IGE2NTBlN2MuLjUwOGEyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIFdLU3RyaW5nUmVm
IFdLUHJlZmVyZW5jZXNDb3B5RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlCiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQogewotICAg
IHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxl
ZCk7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0TGVnYWN5UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZChlbmFibGVkKTsKIH0KIAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVy
biB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
cmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKTsKIH0KIAogdm9pZCBXS1ByZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLmNw
cAppbmRleCA2YTlkY2E0Li5iZTNmMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgcGlkX3QgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2VSZWYpCiBi
b29sIFdLUGFnZUlzVVJMS25vd25IU1RTSG9zdChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJs
KQogewogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5ID0gdG9JbXBsKHBhZ2UpOwotICAg
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHdlYlBhZ2VQcm94eS0+cGFnZUdyb3VwKCku
cHJlZmVyZW5jZXMoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkID0gd2ViUGFnZVByb3h5LT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgp
OwogCiAgICAgcmV0dXJuIHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmNvbnRleHQoKS5pc1VSTEtu
b3duSFNUU0hvc3QodG9JbXBsKHVybCktPnN0cmluZygpLCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggZjEwYmYwNi4uN2RkNDQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTg1MiwxMiArODUyLDEyIEBAIHN0YXRpYyB2
b2lkIHJlbGVhc2VOU0RhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIC0g
KEJPT0wpX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQKIHsKLSAgICByZXR1cm4gW19jb25maWd1cmF0
aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
CisgICAgcmV0dXJuIFtfY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy0+
bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiAtICh2b2lkKV9zZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkOihCT09MKXByaXZhdGVCcm93c2luZ0VuYWJsZWQKIHsKLSAgICBbX2Nv
bmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisgICAgW19jb25maWd1cmF0aW9uIHBy
ZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLT5zZXRMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVk
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIFdlYkNvcmU6Okxh
eW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcyhfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50
cyBldmVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggMjEx
NzA0NC4uYWUwMWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApA
QCAtMzgzLDggKzM4Myw2IEBAIHZvaWQgV2ViQ29udGV4dDo6ZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
KQogCiAgICAgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKIAot
ICAgIHBhcmFtZXRlcnMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IFdlYlByZWZlcmVuY2VzOjph
bnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0KICAgICBwYXJhbWV0ZXJzLmNhY2hl
TW9kZWwgPSBtX2NhY2hlTW9kZWw7CiAKICAgICBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eSA9IGRpc2tDYWNoZURpcmVjdG9yeSgpOwpAQCAtNDU5LDQ0ICs0NTcsMzAgQEAgdm9pZCBXZWJD
b250ZXh0OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm8KIH0KICNlbmRpZgogCi12b2lkIFdlYkNvbnRleHQ6OndpbGxTdGFydFVz
aW5nUHJpdmF0ZUJyb3dzaW5nKCkKK3ZvaWQgV2ViQ29udGV4dDo6d2luZG93U2VydmVyQ29ubmVj
dGlvblN0YXRlQ2hhbmdlZCgpCiB7Ci0gICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29u
dGV4dHMgPSBhbGxDb250ZXh0cygpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNv
bnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kpCi0gICAgICAgIGNvbnRleHRzW2ldLT5zZXRB
bnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKHRydWUpOworICAgIHNp
emVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkKKyAgICAgICAgbV9wcm9jZXNzZXNbaV0tPndp
bmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0
Ojp3aWxsU3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkKK3ZvaWQgV2ViQ29udGV4dDo6aW5jcmVt
ZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKQogewotICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0
Kj4mIGNvbnRleHRzID0gYWxsQ29udGV4dHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgY291
bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBjb250ZXh0c1tp
XS0+c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSk7
CisgICAgaWYgKCFtX3ByaXZhdGVCcm93c2luZ0NvdW50KQorICAgICAgICBzb21lUGFnZUlzUHJp
dmF0ZUJyb3dzaW5nKHRydWUpOworICAgIG1fcHJpdmF0ZUJyb3dzaW5nQ291bnQrKzsKIH0KIAot
dm9pZCBXZWJDb250ZXh0Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKK3Zv
aWQgV2ViQ29udGV4dDo6ZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKQogewotICAgIHNp
emVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBwcm9jZXNzQ291bnQ7ICsraSkKLSAgICAgICAgbV9wcm9jZXNzZXNbaV0tPndp
bmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3ByaXZhdGVCcm93c2lu
Z0NvdW50LS07CisgICAgaWYgKCFtX3ByaXZhdGVCcm93c2luZ0NvdW50KQorICAgICAgICBzb21l
UGFnZUlzUHJpdmF0ZUJyb3dzaW5nKGZhbHNlKTsKIH0KIAotdm9pZCBXZWJDb250ZXh0OjpzZXRB
bnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkKK3ZvaWQgV2ViQ29udGV4dDo6c29tZVBhZ2VJc1ByaXZhdGVCcm93c2lu
Zyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7CiAgICAgbV9pY29uRGF0YWJhc2UtPnNl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7Ci0KLSNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmICh1c2VzTmV0d29ya1Byb2Nlc3MoKSAmJiBu
ZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQot
ICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkpLCAwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV0d29ya1Byb2Nl
c3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7Ci0gICAg
fQotI2VuZGlmIC8vIEVOQUJMRUQoTkVUV09SS19QUk9DRVNTKQotCi0gICAgaWYgKHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVBy
aXZhdGVTZXNzaW9uSUQoKSkpOwotICAgIGVsc2UKLSAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNz
aW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkpOwogfQogCiB2b2lkICgqc19pbnZhbGlk
TWVzc2FnZUNhbGxiYWNrKShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSk7CkBAIC02MjUsOSArNjA5
LDYgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkK
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRRT1Mod2ViUHJvY2Vz
c0xhdGVuY3lRT1MoKSwgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKSksIDApOwogI2VuZGlmCiAK
LSAgICBpZiAoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3Npbmco
KSkKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSks
IDApOwotCiAgICAgbV9wcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOwogCiAgICAgaWYgKG1fcHJv
Y2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKQEAgLTc3
Nyw4ICs3NTgsNiBAQCBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViQ29udGV4dDo6Y3JlYXRl
V2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQYQogICAgICAgICBjb25maWd1cmF0
aW9uLnByZWZlcmVuY2VzID0gJmNvbmZpZ3VyYXRpb24ucGFnZUdyb3VwLT5wcmVmZXJlbmNlcygp
OwogICAgIGlmICghY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyKQogICAgICAgICBj
b25maWd1cmF0aW9uLnZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBtX3Zpc2l0ZWRMaW5rUHJvdmlkZXIu
Z2V0KCk7Ci0gICAgaWYgKCFjb25maWd1cmF0aW9uLnNlc3Npb24pCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb24uc2Vzc2lvbiA9IGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSA/ICZBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCkgOiAmQVBJ
OjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpOwogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gcHJvY2VzczsKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVk
U2Vjb25kYXJ5UHJvY2VzcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5k
ZXggNDJiNTBhYi4uMzFhMGE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CkBAIC0zMDQsOSArMzA0LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aW5kb3dTZXJ2ZXJDb25u
ZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CiAKLSAgICBzdGF0aWMgdm9pZCB3aWxsU3RhcnRVc2luZ1By
aXZhdGVCcm93c2luZygpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxTdG9wVXNpbmdQcml2YXRlQnJv
d3NpbmcoKTsKLQogICAgIHN0YXRpYyBib29sIGlzRXBoZW1lcmFsU2Vzc2lvbihXZWJDb3JlOjpT
ZXNzaW9uSUQpOwogCiAjaWYgVVNFKFNPVVApCkBAIC0zMzcsNiArMzM0LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0TWVtb3J5Q2FjaGVEaXNhYmxlZChib29sKTsKIAorICAgIHZvaWQgaW5j
cmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKTsKKyAgICB2b2lkIGRlY3JlbWVudFByaXZhdGVC
cm93c2luZ0NvdW50KCk7CisKKyAgICBib29sIGFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3Np
bmcoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0NvdW50ID4gMDsgfQorCiBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTQxOCw3ICs0MjAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgYWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChjb25zdCBT
dHJpbmcmIHBhZ2VPcmlnaW4sIHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOwogICAgIHZvaWQg
cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNo
KTsKIAotICAgIHZvaWQgc2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChib29sKTsKKyAgICB2b2lkIHNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcoYm9vbCk7CiAK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAvLyBQbHVnaW5JbmZvU3RvcmVD
bGllbnQ6CkBAIC01MjksNiArNTMxLDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBt
X21lbW9yeUNhY2hlRGlzYWJsZWQ7CisKKyAgICB1bnNpZ25lZCBtX3ByaXZhdGVCcm93c2luZ0Nv
dW50OwogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKaW5kZXggN2FkYWU4OS4uYTVmZDc4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKQEAgLTc5LDcgKzc5LDcg
QEAgdm9pZCBXZWJJY29uRGF0YWJhc2U6OnNldERhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIHBh
dGgpCiAKICAgICAvLyBGSVhNRTogV2ViSWNvbkRhdGFiYXNlcyBhcmUgcGVyLVdlYkNvbnRleHQg
YnV0IFdlYkNvbnRleHQncyBkb24ndCBoYXZlIHRoZWlyIG93biBub3Rpb24gb2YgdGhlIGN1cnJl
bnQgcHJpdmF0ZSBicm93c2luZyBzZXR0aW5nLgogICAgIC8vIEFzIHdlIGNsZWFuIHVwIHByaXZh
dGUgYnJvd3NpbmcgdGhyb3VnaG91dCB0aGUgc3RhY2sgd2UgbmVlZCB0byBjbGVhbiBpdCB1cCBo
ZXJlLgotICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChX
ZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKKyAgICBt
X2ljb25EYXRhYmFzZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQobV93ZWJDb250ZXh0
LT5hbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwogCiAgICAgaWYgKCFtX2ljb25E
YXRhYmFzZUltcGwtPm9wZW4oZGlyZWN0b3J5TmFtZShwYXRoKSwgcGF0aEdldEZpbGVOYW1lKHBh
dGgpKSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBvcGVuIFdlYktpdDIgaWNvbiBk
YXRhYmFzZSBvbiBkaXNrIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDhhYjYzYWYuLmM0ZDdmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC05NCw2ICs5NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1F
VHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJFbWJlZGRlZE9iamVjdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1Nlc3Npb25JREhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2Vy
Q2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUg
PHN0ZGlvLmg+CkBAIC0zMDMsNyArMzA0LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAg
ICAsIG1faXNUcmFja2luZ1RvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJ
RChwYWdlSUQpCi0gICAgLCBtX3Nlc3Npb24oKmNvbmZpZ3VyYXRpb24uc2Vzc2lvbikKKyAgICAs
IG1fc2Vzc2lvbihBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkpCiAgICAgLCBtX2lzUGFn
ZVN1c3BlbmRlZChmYWxzZSkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAsIG1faXNTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVFbmFibGVk
KCkpCkBAIC0zNzYsNyArMzc3LDggQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAvLyBG
SVhNRTogSWYgd2UgZXZlciBleHBvc2UgdGhlIHNlc3Npb24gc3RvcmFnZSBzaXplIGFzIGEgcHJl
ZmVyZW5jZSwgd2UgbmVlZCB0byBwYXNzIGl0IGhlcmUuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uID0gbV9wcm9jZXNzLT5zdGF0ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6
OlJ1bm5pbmcgPyBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSA6IG51bGxwdHI7CiAgICAgbV9wcm9j
ZXNzLT5jb250ZXh0KCkuc3RvcmFnZU1hbmFnZXIoKS5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShtX3BhZ2VJRCwgY29ubmVjdGlvbiwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKTsKLSAgICBzZXRTZXNzaW9uKCpjb25maWd1cmF0aW9uLnNlc3Npb24pOworICAgIGlm
IChtX3ByZWZlcmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgICAg
IHNldFNlc3Npb25JbXBsKEFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSwgZmFs
c2UpOwogfQogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQpAQCAtMzk1LDYgKzM5Nyw3
IEBAIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCiAjaWZuZGVmIE5ERUJVRwogICAgIHdl
YlBhZ2VQcm94eUNvdW50ZXIuZGVjcmVtZW50KCk7CiAjZW5kaWYKKyAgICBzZXRTZXNzaW9uKEFQ
STo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSk7CiB9CiAKIFBsYXRmb3JtUHJvY2Vzc0lkZW50
aWZpZXIgV2ViUGFnZVByb3h5Ojpwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0CkBAIC01MjcsMTUg
KzUzMCwzMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lv
bihBUEk6OlNlc3Npb24mIHNlc3Npb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbklt
cGwoQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCBib29sIHNlbmRNZXNzYWdlVG9QYWdlKQogewotICAg
IG1fc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRTZXNzaW9uSUQoc2Vzc2lvbi5nZXRJRCgpKSwgbV9wYWdlSUQpOworICAgIGlmIChz
ZXNzaW9uLmdldElEKCkgIT0gbV9zZXNzaW9uLT5nZXRJRCgpKSB7CisgICAgICAgIGlmIChzZW5k
TWVzc2FnZVRvUGFnZSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0U2Vzc2lvbklEKHNlc3Npb24uZ2V0SUQoKSksIG1fcGFnZUlEKTsKKworICAgICAg
ICBpZiAoc2Vzc2lvbi5nZXRJRCgpLmlzRXBoZW1lcmFsKCkgJiYgIW1fc2Vzc2lvbi0+Z2V0SUQo
KS5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuaW5jcmVt
ZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKTsKKyAgICAgICAgZWxzZSBpZiAoIXNlc3Npb24uZ2V0
SUQoKS5pc0VwaGVtZXJhbCgpICYmIG1fc2Vzc2lvbi0+Z2V0SUQoKS5pc0VwaGVtZXJhbCgpKQor
ICAgICAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5n
Q291bnQoKTsKIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHNlc3Npb24u
aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHNlc3Npb24uZ2V0SUQoKSkpOworICAgICAgICBpZiAobV9zZXNzaW9uLT5pc0Vw
aGVtZXJhbCgpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZW1vdmVTZXNzaW9uUmVmZXJl
bmNlKG1fc2Vzc2lvbi0+Z2V0SUQoKSkpOworICAgICAgICBpZiAoc2Vzc2lvbi5pc0VwaGVtZXJh
bCgpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0d29ya2luZ1By
b2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBZGRTZXNzaW9uUmVmZXJlbmNlKHNlc3Np
b24uZ2V0SUQoKSkpOwogI2VuZGlmCisgICAgICAgIG1fc2Vzc2lvbiA9IHNlc3Npb247CisgICAg
fQorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbihBUEk6OlNlc3Npb24mIHNlc3Np
b24pCit7CisgICAgc2V0U2Vzc2lvbkltcGwoc2Vzc2lvbiwgdHJ1ZSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCkBAIC0yMDgzLDYgKzIxMDEsMTEgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKICAgICBpZiAoIWlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fcHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKSAmJiBtX3Nlc3Npb24tPmdldElEKCkgPT0gU2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpCisgICAgICAgIHNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbigpKTsKKyAgICBlbHNlIGlmICghbV9wcmVmZXJlbmNlcy0+bGVnYWN5
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpICYmIG1fc2Vzc2lvbi0+Z2V0SUQoKSA9PSBTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkKKyAgICAgICAgc2V0U2Vzc2lvbihBUEk6OlNl
c3Npb246OmRlZmF1bHRTZXNzaW9uKCkpOworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIp
CiAgICAgaWYgKG1fcHJlZmVyZW5jZXMtPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAg
ICAgaW5zcGVjdG9yKCktPmVuYWJsZVJlbW90ZUluc3BlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwODc4NTg1Li5hNzQ3ZmUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMjMsNyArMzIzLDYgQEAgc3RydWN0
IFdlYlBhZ2VDb25maWd1cmF0aW9uIHsKICAgICBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCA9IG51
bGxwdHI7CiAgICAgV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzID0gbnVsbHB0cjsKICAgICBW
aXNpdGVkTGlua1Byb3ZpZGVyKiB2aXNpdGVkTGlua1Byb3ZpZGVyID0gbnVsbHB0cjsKLSAgICBB
UEk6OlNlc3Npb24qIHNlc3Npb24gPSBudWxscHRyOwogICAgIFdlYlBhZ2VQcm94eSogcmVsYXRl
ZFBhZ2UgPSBudWxscHRyOwogfTsKIApAQCAtOTI4LDYgKzkyNyw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKIAorICAgIHZvaWQgc2V0U2Vzc2lv
bkltcGwoQVBJOjpTZXNzaW9uJiwgYm9vbCBzZW5kTWVzc2FnZVRvUGFnZSk7CisKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5j
ZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAppbmRl
eCAwZjdkYTc5Li5mZTVjOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVm
ZXJlbmNlcy5jcHAKQEAgLTMyLDEwICszMiw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0v
LyBGSVhNRTogTWFuaXB1bGF0aW5nIHRoaXMgdmFyaWFibGUgaXMgbm90IHRocmVhZCBzYWZlLgot
Ly8gSW5zdGVhZCBvZiB0cmFja2luZyBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGFzIGEgYm9vbGVh
biBwcmVmZXJlbmNlLCB3ZSBzaG91bGQgbGV0IHRoZSBjbGllbnQgcHJvdmlkZSBzdG9yYWdlIHNl
c3Npb25zIGV4cGxpY2l0bHkuCi1zdGF0aWMgdW5zaWduZWQgcHJpdmF0ZUJyb3dzaW5nUGFnZUNv
dW50OwotCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CkBAIC02MiwyNSArNTgs
MTIgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6YWRkUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQ
cm94eSkKIHsKICAgICBBU1NFUlQoIW1fcGFnZXMuY29udGFpbnMoJndlYlBhZ2VQcm94eSkpOwog
ICAgIG1fcGFnZXMuYWRkKCZ3ZWJQYWdlUHJveHkpOwotCi0gICAgaWYgKHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSkgewotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCkKLSAg
ICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0K
LSAgICAgICAgKytwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQ7Ci0gICAgfQogfQogCiB2b2lkIFdl
YlByZWZlcmVuY2VzOjpyZW1vdmVQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogewog
ICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRhaW5zKCZ3ZWJQYWdlUHJveHkpKTsKICAgICBtX3BhZ2Vz
LnJlbW92ZSgmd2ViUGFnZVByb3h5KTsKLQotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVk
KCkpIHsKLSAgICAgICAgLS1wcml2YXRlQnJvd3NpbmdQYWdlQ291bnQ7Ci0gICAgICAgIGlmICgh
cHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50KQotICAgICAgICAgICAgV2ViQ29udGV4dDo6d2lsbFN0
b3BVc2luZ1ByaXZhdGVCcm93c2luZygpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNl
czo6dXBkYXRlKCkKQEAgLTk3LDggKzgwLDggQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRl
U3RyaW5nVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmEKIAog
dm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYg
a2V5LCBib29sIHZhbHVlKQogewotICAgIGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6OnBy
aXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkgewotICAgICAgICB1cGRhdGVQcml2YXRlQnJvd3Np
bmdWYWx1ZSh2YWx1ZSk7CisgICAgaWYgKGtleSA9PSBXZWJQcmVmZXJlbmNlc0tleTo6bGVnYWN5
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpKSB7CisgICAgICAgIHVwZGF0ZUxlZ2FjeVByaXZh
dGVCcm93c2luZ1ZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI0
LDI3ICsxMDcsMjAgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlRmxvYXRWYWx1ZUZvcktl
eShjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQgdmFsdWUpCiAgICAgdXBkYXRlKCk7IC8vIEZJWE1F
OiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hhbmdlZCBrZXkgYW5kIHZhbHVlLgogfQogCi12b2lkIFdl
YlByZWZlcmVuY2VzOjp1cGRhdGVQcml2YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKQordm9p
ZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2
YWx1ZSkKIHsKLSAgICBwbGF0Zm9ybVVwZGF0ZUJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpLCB2YWx1ZSk7Ci0KLSAgICB1bnNpZ25l
ZCBwYWdlc0NoYW5nZWQgPSBtX3BhZ2VzLnNpemUoKTsKLSAgICBpZiAoIXBhZ2VzQ2hhbmdlZCkK
LSAgICAgICAgcmV0dXJuOworICAgIHBsYXRmb3JtVXBkYXRlQm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5OjpsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkS2V5KCksIHZhbHVlKTsK
IAogICAgIGlmICh2YWx1ZSkgewotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3Vu
dCkKLSAgICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5n
KCk7Ci0gICAgICAgIHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCArPSBwYWdlc0NoYW5nZWQ7Ci0g
ICAgfQotCi0gICAgdXBkYXRlKCk7IC8vIEZJWE1FOiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hhbmdl
ZCBrZXkgYW5kIHZhbHVlLgotCi0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBBU1NFUlQocHJp
dmF0ZUJyb3dzaW5nUGFnZUNvdW50ID49IHBhZ2VzQ2hhbmdlZCk7Ci0gICAgICAgIHByaXZhdGVC
cm93c2luZ1BhZ2VDb3VudCAtPSBwYWdlc0NoYW5nZWQ7Ci0gICAgICAgIGlmICghcHJpdmF0ZUJy
b3dzaW5nUGFnZUNvdW50KQotICAgICAgICAgICAgV2ViQ29udGV4dDo6d2lsbFN0b3BVc2luZ1By
aXZhdGVCcm93c2luZygpOworICAgICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VzKSB7Cisg
ICAgICAgICAgICBpZiAocGFnZS0+c2Vzc2lvbklEKCkgPT0gV2ViQ29yZTo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpCisgICAgICAgICAgICAgICAgcGFnZS0+c2V0U2Vzc2lvbihBUEk6
OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCkpOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlcykgeworICAgICAgICAgICAgaWYg
KHBhZ2UtPnNlc3Npb25JRCgpID09IFdlYkNvcmU6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb24oQVBJOjpTZXNzaW9u
OjpkZWZhdWx0U2Vzc2lvbigpKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMTY2LDkgKzE0
Miw0IEBAIEZPUl9FQUNIX1dFQktJVF9QUkVGRVJFTkNFKERFRklORV9QUkVGRVJFTkNFX0dFVFRF
Ul9BTkRfU0VUVEVSUykKIAogI3VuZGVmIERFRklORV9QUkVGRVJFTkNFX0dFVFRFUl9BTkRfU0VU
VEVSUwogCi1ib29sIFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dz
aW5nKCkKLXsKLSAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2Vz
LmgKaW5kZXggZGQ1ZTJkMS4uZjFlNWU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByZWZlcmVuY2VzLmgKQEAgLTY4LDggKzY4LDYgQEAgcHVibGljOgogICAgIC8vIEV4cG9zZWQg
Zm9yIFdlYktpdFRlc3RSdW5uZXIgdXNlIG9ubHkuCiAgICAgdm9pZCBmb3JjZVVwZGF0ZSgpIHsg
dXBkYXRlKCk7IH0KIAotICAgIHN0YXRpYyBib29sIGFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJv
d3NpbmcoKTsKLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJQcmVmZXJlbmNlcyhjb25zdCBT
dHJpbmcmKTsKICAgICBXZWJQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlcyYpOwpAQCAt
ODksNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1VcGRhdGVEb3VibGVWYWx1
ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlIHZhbHVlKTsKICAgICB2b2lkIHBsYXRm
b3JtVXBkYXRlRmxvYXRWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQgdmFsdWUp
OwogCi0gICAgdm9pZCB1cGRhdGVQcml2YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKTsKKyAg
ICB2b2lkIHVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVlKGJvb2wgdmFsdWUpOwogCiAg
ICAgU3RyaW5nIG1faWRlbnRpZmllcjsKICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlIG1fc3RvcmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDc2ODczMGQuLjM1NGI3M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCkBAIC0zMDksOSArMzA5LDEwIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9v
CiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogVGhpcyB0ZXN0LW9ubHkgZnVuY3Rpb24g
ZG9lc24ndCB3b3JrIHdpdGggTmV0d29ya1Byb2Nlc3MsIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Mjc0Pi4KICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
TkVUV09SSykgfHwgVVNFKFNPVVApCiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklE
OjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOworICAgICAgICBTZXNzaW9uVHJhY2tlcjo6YWRk
U2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAg
ICAgZWxzZQotICAgICAgICBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvbklE
OjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOworICAgICAgICBpZiAoU2Vzc2lvblRyYWNrZXI6
OnNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKQorICAgICAgICAg
ICAgU2Vzc2lvblRyYWNrZXI6OnJlbW92ZVNlc3Npb25SZWZlcmVuY2UoU2Vzc2lvbklEOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKCkpOwogI2VuZGlmCiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4m
IHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdlR3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5w
YWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGl0ZXIgPSBwYWdlcy5i
ZWdpbigpOyBpdGVyICE9IHBhZ2VzLmVuZCgpOyArK2l0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZGZmODE1Yi4uYzA5MTU3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcApAQCAtMTUzMyw3ICsxNTMzLDcgQEAgYm9vbCBQbHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKQogICAgIGlmICghZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+Y2FuQWNjZXNzUGx1Z2luU3RvcmFnZShmcmFtZSgpLT5kb2N1bWVudCgpLT50b3BPcmln
aW4oKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIGZyYW1lKCktPnNldHRp
bmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBmcmFtZSgpLT5wYWdl
KCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6YXN5
bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCBkZWYyMDM4Li5iMzk2Y2U2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00
MCw5ICs0MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IHJlbW92
ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNrZXIKLSAgICBzdGF0
aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7
Ci0KICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhI
VFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJG
cmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQubW0KaW5kZXggMjZiZmZjNC4uY2ZlOWRlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC00MiwyMiArNDIsNiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi12b2lk
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFN0cmluZyBiYXNlOwotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6
Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgZWxzZQotICAgICAgICBiYXNlID0g
U2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7Ci0KLSAgICBTZXNzaW9uVHJhY2tl
cjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklE
LnNlc3Npb25JRCgpKSkpOwotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNl
dENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
cG9saWN5KQogewogICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3Rv
cmFnZV0gc2V0Q29va2llQWNjZXB0UG9saWN5OnN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2Vw
dFBvbGljeT4ocG9saWN5KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5jcHAKaW5kZXggNzc3MzdkNC4uZTk0MzI0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcApAQCAtMzgsMTYgKzM4LDYgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAg
aWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFN0cmluZzo6bnVtYmVyKHNl
c3Npb25JRC5zZXNzaW9uSUQoKSkpKTsKLX0KLQogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCiAgICAgOiBGcmFtZU5l
dHdvcmtpbmdDb250ZXh0KGZyYW1lLT5jb3JlRnJhbWUoKSkKIHsKQEAgLTU1LDcgKzQ1LDcgQEAg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJG
cmFtZSogZnJhbWUpCiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIGlmIChmcmFtZSgpICYmIGZy
YW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFt
ZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAg
ICAgcmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQoKSk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oCmluZGV4IDkzNDEwYjMuLjE5NGE2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9z
b3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDMsOCArNDMsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChm
cmFtZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLQogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3
ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY2Nzk1YjEuLmRkNzdiNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUHJpbnRJ
bmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNr
ZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlu
a1RhYmxlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgpAQCAtMjEx
MSwxNCArMjExMiw2IEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSh1bnNpZ25l
ZCBsYXllckhvc3RpbmdNb2RlKQogICAgICAgICBwbHVnaW5WaWV3LT5zZXRMYXllckhvc3RpbmdN
b2RlKG1fbGF5ZXJIb3N0aW5nTW9kZSk7CiB9CiAKLVNlc3Npb25JRCBXZWJQYWdlOjpzZXNzaW9u
SUQoKSBjb25zdAotewotICAgIGlmIChtX3BhZ2UtPmlzU2Vzc2lvbklEU2V0KCkpCi0gICAgICAg
IHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOwotCi0gICAgcmV0dXJuIG1fcGFnZS0+c2V0dGlu
Z3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotfQotCiBib29sIFdl
YlBhZ2U6OmlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKQEAgLTIxMjYsOSArMjExOSwxMyBAQCBib29sIFdlYlBh
Z2U6OmlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlOjpzZXRT
ZXNzaW9uSUQoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBtX3BhZ2UtPnNldFNlc3Npb25J
RChzZXNzaW9uSUQpOworICAgIEFTU0VSVChzZXNzaW9uSUQgIT0gbV9wYWdlLT5zZXNzaW9uSUQo
KSk7CisgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOworICAgIGlmIChtX3BhZ2UtPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCisgICAgICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVT
ZXNzaW9uUmVmZXJlbmNlKG1fcGFnZS0+c2Vzc2lvbklEKCkpOwogICAgIGlmIChzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICBTZXNzaW9uVHJhY2tlcjo6YWRk
U2Vzc2lvblJlZmVyZW5jZShzZXNzaW9uSUQpOworICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNl
c3Npb25JRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlv
biwgdWludDY0X3QgZG93bmxvYWRJRCkKQEAgLTI0MzMsMTAgKzI0MzAsOCBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQog
ICAgIHNldHRpbmdzLnNldExvY2FsU3RvcmFnZUVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpsb2NhbFN0b3JhZ2VFbmFibGVkS2V5KCkpKTsKICAgICBz
ZXR0aW5ncy5zZXRYU1NBdWRpdG9yRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6Onhzc0F1ZGl0b3JFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5z
ZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZEtleSgpKSk7Ci0gICAgaWYgKG1fcGFn
ZS0+aXNTZXNzaW9uSURTZXQoKSkKLSAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZChtX3BhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwotICAgIGVsc2UKLSAg
ICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkp
OworICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Omxl
Z2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkgJiYgIW1fcGFnZS0+c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKSkKKyAgICAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoU2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogICAgIHNldHRpbmdzLnNldERldmVsb3BlckV4dHJh
c0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkZXZl
bG9wZXJFeHRyYXNFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0RXhw
ZXJpbWVudHNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0
VGV4dEFyZWFzQXJlUmVzaXphYmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6dGV4dEFyZWFzQXJlUmVzaXphYmxlS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDkyNDRlNWEuLjkwMzYyOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkyLDcgKzE5
Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlLmdldCgpOyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSUQ7IH0KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7
CisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIGlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggM2JlOWZjZi4uNDhhMGQyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zNDgsNiArMzQ4
LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWUKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRl
bnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRp
ZgogCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgp
KQorICAgICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UoIiIpOworCiAgICAg
aWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQogICAgICAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApAQCAt
NDcxLDIwICs0NzQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVD
aGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKICAgICBtX2Z1bGxLZXlib2Fy
ZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQogCi12b2lkIFdl
YlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25J
RCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVAp
Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihzZXNzaW9uSUQpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSNpZiBQTEFURk9S
TShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAgU2Vzc2lvblRyYWNr
ZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7Ci0jZW5kaWYKLX0KLQogRG93bmxvYWRNYW5h
Z2VyJiBXZWJQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQogewogICAgIEFTU0VSVCghdXNlc05l
dHdvcmtQcm9jZXNzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCA5ZDNmODQ1Li5hN2Q2NDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aApAQCAtMTY1LDkgKzE2NSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1
aW50MzJfdCk7CiAKLSAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29y
ZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdl
YkNvcmU6OlNlc3Npb25JRCk7Ci0KICAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyh1aW50NjRf
dCBwYWdlSUQpOwogICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggNmZhYjJmMi4uY2U3OTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNTQsMTAgKzU0LDYgQEAgbWVzc2FnZXMg
LT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJv
b2wgaWdub3JlVExTRXJyb3JzKQogI2VuZGlmCiAKLSAgICAvLyBMZWdhY3kgcHJpdmF0ZSBicm93
c2luZyBzZXNzaW9uIGlzIHBlciBwcm9jZXNzLiBJbmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2UgZ3Jv
dXBzIG1heSB1c2UgdGhlIHByaXZhdGUgc2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUgYXMgYXBw
cm9wcmlhdGUuCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQotICAgIERlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNv
cmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0KICAgICAjIFBsdWctaW5zLgogICAgIERpZEFkZFBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRpb25U
aW1lKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hNYXA8dWludDMy
X3QsZG91YmxlPiBoYXNoZXMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYzNiMDJjNS4uZmJiNWQ2MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAzLTExICBN
YXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJy
b3dzaW5nIHdpdGggc2Vzc2lvbnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhbiBBUEkgdGVzdCBmb3IgZXBoZW1lcmFsIHNlc3Npb25zIHNp
bWlsYXIgdG8gUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBoZW1lcmFsU2Vz
c2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTQtMDMtMTEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgogCiAgICAgICAgIFtHVEtdW0NNYWtl
XSAtLXVwZGF0ZS1ndGsgaGFzIG5vIGVmZmVjdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
ZTQxZjhjLi5kYmM3OWZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3LDYgKzEwNyw3
IEBACiAJCTUyQ0I0NzQxMTQ0OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmlu
Z1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJDQjQ3NDAxNDQ4RkI5MzAwODczOTk1IC8qIExvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAgKi87IH07CiAJCTUyRTVDRTQ2MTREMjFF
OUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0NTE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJh
bWUuY3BwICovOyB9OwogCQk1MkU1Q0U0OTE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVf
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovOyB9
OworCQk3NUYzMTM0MDE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0
ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1RjMxMzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9u
UHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovOyB9OwogCQk3NkUxODJEQTE1NDc1NTAx
MDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2ls
bFNlbmRTdWJtaXRFdmVudC5jcHAgKi87IH07CiAJCTc2RTE4MkREMTU0NzU2OTEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEQzE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNl
bmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9OwogCQk3NkUxODJERjE1NDc2N0U2MDBGMUZB
REQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyog
YXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAqLzsgfTsKQEAgLTQzMiw2ICs0MzMsNyBAQAogCQk1
MkNCNDc0MDE0NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9u
RGlyZWN0b3J5VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ1MTREMjFFOUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFt
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJlbnRGcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ4MTREMjFFQUIwMDNCMkJE
OCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGFyZW50RnJhbWVfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3Rh
dGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkUxODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2ls
bFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbGxTZW5kU3VibWl0RXZl
bnRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREUxNTQ3
NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAiYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NjMsNiArNzY1LDcgQEAKIAkJCQlGNkY0OUM2NzE1NTQ1QzhEMDAw
N0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgKi8sCiAJCQkJRjZGNDlDNjYx
NTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAq
LywKIAkJCQlDMDQ1Rjk0NDEzODVDMkU5MDBDMEYzQ0QgLyogRG93bmxvYWREZWNpZGVEZXN0aW5h
dGlvbkNyYXNoLmNwcCAqLywKKwkJCQk3NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1l
cmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLywKIAkJCQkxQTVGRUZE
QzEyNzBFMkEzMDAwRTI5MjEgLyogRXZhbHVhdGVKYXZhU2NyaXB0LmNwcCAqLywKIAkJCQlCQ0M4
Qjk1QTEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9hZC5jcHAgKi8sCiAJCQkJMUEwMkM4NEUx
MjVENEE4NDAwRTNGNEJEIC8qIEZpbmQuY3BwICovLApAQCAtMTE0OCw2ICsxMTUxLDcgQEAKIAkJ
CQkyOTcyMzRCNDE3M0FEMDQ4MDA5ODM2MDEgLyogQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVt
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OTAyOEI2MTRGQUJEOTIwMDdFNkI0MyAvKiBBY2Nl
cHRzRmlyc3RNb3VzZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5MTg2MUZGMTdCRDREQzcwMEQ0
RTQxRSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRGaW5pc2hMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNzVGMzEzNDAxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3Rh
dGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkYxQjQ0NDE1Q0E0
MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1NUYx
MUEwMTUxNjgzNEYwMDkxNTkxNiAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDBDRDlGNjMxNUJFMzEyQzAwMkRBMkNFIC8qIEJhY2tGb3J3YXJkTGlzdC5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlz
dG9yeUNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzAz
MTk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAKQEAgLTAsMCAr
MSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUg
IlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgdGVzdERvbmU7CisKK3N0YXRpYyB2b2lkIGRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VS
ZWYgcGFnZSwgV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJlZiBm
cmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBuZXZl
ciBiZSBjYWxsZWQgd2hlbiBuYXZpZ2F0aW5nIGluIFByaXZhdGUgQnJvd3NpbmcuCisgICAgRkFJ
TCgpOworfQorCitzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
V0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQor
eworICAgIHRlc3REb25lID0gdHJ1ZTsKK30KKworVEVTVChXZWJLaXQyLCBFcGhlbWVyYWxTZXNz
aW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2spCit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKKworICAgIFdLQ29u
dGV4dEhpc3RvcnlDbGllbnRWMCBoaXN0b3J5Q2xpZW50OworICAgIG1lbXNldCgmaGlzdG9yeUNs
aWVudCwgMCwgc2l6ZW9mKGhpc3RvcnlDbGllbnQpKTsKKworICAgIGhpc3RvcnlDbGllbnQuYmFz
ZS52ZXJzaW9uID0gMDsKKyAgICBoaXN0b3J5Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhID0gZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE7CisKKyAgICBXS0NvbnRleHRT
ZXRIaXN0b3J5Q2xpZW50KGNvbnRleHQuZ2V0KCksICZoaXN0b3J5Q2xpZW50LmJhc2UpOworCisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisKKyAgICBXS1BhZ2VM
b2FkZXJDbGllbnRWMCBwYWdlTG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNs
aWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGllbnQpKTsKKworICAgIHBhZ2VMb2FkZXJDbGll
bnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmRpZFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsK
KworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCksICZwYWdlTG9h
ZGVyQ2xpZW50LmJhc2UpOworCisgICAgV0tTZXNzaW9uUmVmIHNlc3Npb24gPSBXS1Nlc3Npb25D
cmVhdGUodHJ1ZSk7CisgICAgV0tQYWdlU2V0U2Vzc2lvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lv
bik7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0
ZVVSTEZvclJlc291cmNlKCJwdXNoLXN0YXRlIiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVS
TCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmdGVzdERvbmUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226554</attachid>
            <date>2014-03-12 15:24:34 -0700</date>
            <delta_ts>2014-03-13 11:16:50 -0700</delta_ts>
            <desc>efl + gtk build fixes</desc>
            <filename>privatesetting.03.diff</filename>
            <type>text/plain</type>
            <size>77006</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNzI0MTkxLi4yZWYyNjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAg
ICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCB0
aGUgZm9sbG93aW5nIGNvbnNpc3RzIHNvbGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVw
bGFjZSBxdWVyeWluZyBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
IHdpdGggUGFnZTo6c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlQ29udGV4dDo6YWxsb3dEYXRhYmFzZUFjY2Vzcyk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclN0YW5kYXJkTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJl
Y3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpI
aXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNlU3RhdGUpOgorICAgICAgICAqIGxvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZUZvck1haW5SZXF1ZXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnVwZGF0ZSk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6IElu
aXRpYWxpemUgd2l0aCBkZWZhdWx0U2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKTogTW92ZSBpbXBsZW1lbnRhdGlvbiB0byBzZXRT
ZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXNzaW9uSUQpOiBTaW1wbGlmeSB0
byBqdXN0IHJldHVybiBtX3Nlc3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFNl
c3Npb25JRCk6IEFsc28gcGVyZm9ybSBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgYWN0aW9u
LgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZUNvbnNvbGU6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmNwcDogUmVtb3ZlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgc2V0dGlu
Zy4KKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6IFBhZ2UgcmVmbGVjdHMg
c2V0dGluZyB1c2luZyBzZXNzaW9uLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAg
ICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6Z2V0VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KToK
KyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFn
ZTo6aXNEaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKToKKwogMjAxNC0wMy0xMiAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViVlRUXSBIVE1MNSAic3Bh
Y2UiIGNhaHJhY3RlcnMgYXJvdW5kICItLT4iIGFyZSBub3QgcmVxdWlyZWQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcApp
bmRleCA3NTJlMjllLi41OGRhNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAg
Ym9vbCBEYXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0YWJhc2VBY2Nlc3MoKSBjb25zdAogewogICAg
IGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7
Ci0gICAgICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSB8fCAoZG9jdW1lbnQtPnBhZ2UoKS0+c2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjphbGxv
d3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLT5wcm90b2NvbCgpKSkpCisgICAgICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSB8fCAoZG9j
dW1lbnQtPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSAmJiAhU2NoZW1lUmVnaXN0
cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcoZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCktPnByb3RvY29sKCkpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggNjFiNmY4YS4uNzRlMThiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1
cml0eVBvbGljeS5oIgorI2luY2x1ZGUgIlNlc3Npb25JRC5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKQEAg
LTEyMTAsOCArMTIxMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNv
bnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRlbnRUCiAgICAgaWYgKG1fc2Vu
ZFByb2dyZXNzRXZlbnRzKSAKICAgICAgICAgc3RhcnRQcm9ncmVzc0V2ZW50VGltZXIoKTsKIAot
ICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkuc2V0dGluZ3MoKTsKLSAgICBib29s
IHByaXZhdGVNb2RlID0gIXNldHRpbmdzIHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCk7CisgICAgYm9vbCBwcml2YXRlTW9kZSA9IGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3Vt
ZW50KCkucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogICAgIG1fcGxheWVyLT5z
ZXRQcml2YXRlQnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKIAogICAgIC8vIFJlc2V0IGRpc3Bs
YXkgbW9kZSB0byBmb3JjZSBhIHJlY2FsY3VsYXRpb24gb2Ygd2hhdCB0byBzaG93IGJlY2F1c2Ug
d2UgYXJlIHJlc2V0dGluZyB0aGUgcGxheWVyLgpAQCAtNTEzNiw4ICs1MTM2LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpCiAgICAgaWYg
KCFtX3BsYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0g
ZG9jdW1lbnQoKS5zZXR0aW5ncygpOwotICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSAhc2V0dGluZ3Mg
fHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIHByaXZhdGVN
b2RlID0gZG9jdW1lbnQoKS5wYWdlKCkgJiYgZG9jdW1lbnQoKS5wYWdlKCktPnNlc3Npb25JRCgp
LmlzRXBoZW1lcmFsKCk7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cHJpdmF0
ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoJXMpIiwgYm9vbFN0cmluZyhwcml2YXRlTW9kZSkpOwog
ICAgIG1fcGxheWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IGU0ZjIyZWUu
LjIwNWU4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclN0
YW5kYXJkTG9hZChIaXN0b3J5VXBkYXRlVHlwZSB1cGRhdGVUeXBlKQogCiAgICAgRnJhbWVMb2Fk
ZXImIGZyYW1lTG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKTsKIAotICAgIGJvb2wgbmVlZFByaXZh
Y3kgPSBtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGJv
b2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwo
KTsKICAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRl
cigpLT51cmxGb3JIaXN0b3J5KCk7CiAKICAgICBpZiAoIWZyYW1lTG9hZGVyLmRvY3VtZW50TG9h
ZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkgewpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlz
dCgpCiAgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3Rv
cnkgZm9yIHJlZGlyZWN0IGxvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAg
ICAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5wYWdlKCktPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgY29uc3QgVVJMJiBoaXN0b3J5VVJMID0gbV9m
cmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAKICAgICBp
ZiAobV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5pc0NsaWVudFJlZGlyZWN0KCkp
IHsKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JD
bGllbnRSZWRpcmVjdCgpCiAgICAgICAgIG1fY3VycmVudEl0ZW0tPmNsZWFyU2Nyb2xsUG9pbnQo
KTsKICAgICB9CiAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5zZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5w
YWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgY29uc3QgVVJMJiBoaXN0b3J5
VVJMID0gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCk7
CiAKICAgICBpZiAoIWhpc3RvcnlVUkwuaXNFbXB0eSgpICYmICFuZWVkUHJpdmFjeSkgewpAQCAt
NTIzLDcgKzUyMyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1
bWVudE5hdmlnYXRpb24oKQogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQo
KS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBQYWdlKiBwYWdlID0gbV9m
cmFtZS5wYWdlKCk7CkBAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
cHVzaFN0YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwK
IAogICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCkuYWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7CiAK
LSAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAg
ICBpZiAobV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGFkZFZpc2l0ZWRMaW5rKCpwYWdlLCBVUkwoUGFyc2VkVVJMU3RyaW5n
LCB1cmxTdHJpbmcpKTsKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVy
OjpyZXBsYWNlU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2Jq
ZQogICAgIG1fY3VycmVudEl0ZW0tPnNldEZvcm1EYXRhKDApOwogICAgIG1fY3VycmVudEl0ZW0t
PnNldEZvcm1Db250ZW50VHlwZShTdHJpbmcoKSk7CiAKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9mcmFtZS5wYWdlKCktPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCht
X2ZyYW1lLnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDc5ZmJlNGYuLjM2YzBjYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgQXBwbGljYXRpb25DYWNoZSogQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZUZvck1haW5SZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWUKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVt
b3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAgICBpZiAoZG9jdW1lbnRMb2FkZXItPmZyYW1l
KCkgJiYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSB8fCAhZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRMb2FkZXItPmZy
YW1lKCktPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkpCisgICAg
aWYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+
cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpIHx8ICFkb2N1bWVudExvYWRlci0+ZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25D
YWNoZShkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoQXBwbGljYXRp
b25DYWNoZUdyb3VwKiBncm91cCA9IGNhY2hlU3RvcmFnZSgpLmNhY2hlR3JvdXBGb3JVUkwodXJs
KSkgewpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxl
Y3RDYWNoZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcGFzc2VkTWFuaWZlc3RVCiAgICAgfQog
CiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2lu
ZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nl
c3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSkpIHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhl
bWVyYWwoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vz
c0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKSkgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpDSEVDS0lOR19FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0TGlzdGVu
ZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFUlJPUl9FVkVOVCwgZG9jdW1lbnRMb2FkZXIp
OwogICAgICAgICByZXR1cm47CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKEZyYW1lKiBmcmFtZSkKICAg
ICBBU1NFUlQoIWRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5hcHBsaWNh
dGlvbkNhY2hlKCkpOwogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYg
cHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+c2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpDSEVDS0lOR19FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAg
ICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFUlJPUl9FVkVOVCwg
ZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICByZXR1cm47CkBAIC00MzQsNyArNDM0LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnVwZGF0ZShGcmFtZSogZnJhbWUsIEFwcGxpY2F0aW9u
Q2FjaGVVcGRhdGVPcHRpb24gdXAKICAgICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhp
bmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1l
LT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB8fCAhZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRy
ZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFt
ZS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJl
ZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIEFTU0VS
VChtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpKTsKICAgICAgICAgQVNT
RVJUKG1fcGVuZGluZ0VudHJpZXMuaXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2NhY2hl
QmVpbmdVcGRhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDljNjliZWYuLmUyNWFkZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcApAQCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OmFib3J0KCkKIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgbV9k
b2N1bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXItPmZy
YW1lKCkgJiYgbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS5vZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+
cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogfQogCiBib29sIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVCbG9ja2VkRm9yUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
Q29udHJvbGxlci5jcHAKaW5kZXggOTNjMWVhNi4uYTE4NWNiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZv
aWQgSWNvbkNvbnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNpc2lvbihJY29uTG9hZERlY2lz
aW9uIGljb25Mb2FkRGVjaXNpb24pCiAgICAgQVNTRVJUKGljb25Mb2FkRGVjaXNpb24gIT0gSWNv
bkxvYWRVbmtub3duKTsKIAogICAgIC8vICBGSVhNRSAoPHJkYXI6Ly9wcm9ibGVtLzkxNjg2MDU+
KSAtIFdlIHNob3VsZCBzdXBwb3J0IGluLW1lbW9yeS1vbmx5IHByaXZhdGUgYnJvd3NpbmcgaWNv
bnMgaW4gYXN5bmNocm9ub3VzIGljb24gZGF0YWJhc2UgbW9kZS4KLSAgICBpZiAoaWNvbkRhdGFi
YXNlKCkuc3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkgJiYgbV9mcmFtZS5wYWdlKCktPnNldHRp
bmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChpY29uRGF0YWJhc2UoKS5z
dXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSAmJiBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGljb25Mb2FkRGVjaXNp
b24gPT0gSWNvbkxvYWRObykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggZDFkZjc3Mi4uZDc1YWM2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgUGFnZTo6UGFnZShQYWdl
Q2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRp
ZGF0ZXNDb3VudCgwKSAvLyBOT1RFOiBPbmx5IGNhbGxlZCBmcm9tIEludGVybmFscyBmb3IgU3Bh
dGlhbCBOYXZpZ2F0aW9uIHRlc3RpbmcuCiAgICAgLCBtX2ZyYW1lc0hhbmRsaW5nQmVmb3JlVW5s
b2FkRXZlbnQoMCkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShzdGQ6Om1vdmUocGFnZUNsaWVu
dHMudmlzaXRlZExpbmtTdG9yZSkpCi0gICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmVtcHR5
U2Vzc2lvbklEKCkpCisgICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSkKIHsKICAgICBBU1NFUlQobV9lZGl0b3JDbGllbnQpOwogCkBAIC0xMDc4LDE5ICsxMDc4
LDEyIEBAIHZvaWQgUGFnZTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKICAgICAgICAg
dmlld3NbaV0tPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIFBhZ2U6
OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpCit2b2lkIFBhZ2U6OnByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7Ci0gICAgYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkID0gbV9zZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOworICAgIC8vIERvbid0IGFsbG93IGNoYW5naW5nIHRoZSBwcml2YXRlIGJyb3dzaW5nIHN0
YXRlIGlmIHdlIGhhdmUgc2V0IGEgc2Vzc2lvbiBJRC4KKyAgICBBU1NFUlQobV9zZXNzaW9uSUQg
PT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkgfHwgbV9zZXNzaW9uSUQgPT0gU2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogCi0gICAgZm9yIChGcmFtZSogZnJhbWUg
PSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0
KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wcml2YXRlQnJvd3NpbmdTdGF0ZURpZENo
YW5nZSgpOwotCi0gICAgLy8gQ29sbGVjdCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3Ig
dG8gZW5zdXJlIHRoYXQgYWN0aW9uIHRoZSBwbHVnLWluIHRha2VzCi0gICAgLy8gZnJvbSBiZWxv
dyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0
aW1lLgotICAgIGF1dG8gdmlld3MgPSBwbHVnaW5WaWV3cygpOwotCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHZpZXdzLnNpemUoKTsgKytpKQotICAgICAgICB2aWV3c1tpXS0+cHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOworICAgIHNldFNl
c3Npb25JRChwcml2YXRlQnJvd3NpbmdFbmFibGVkID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKICNpZiAh
QVNTRVJUX0RJU0FCTEVECkBAIC0xNTEyLDE5ICsxNTA1LDI3IEBAIFZpc2l0ZWRMaW5rU3RvcmUm
IFBhZ2U6OnZpc2l0ZWRMaW5rU3RvcmUoKQogCiBTZXNzaW9uSUQgUGFnZTo6c2Vzc2lvbklEKCkg
Y29uc3QKIHsKLSAgICBpZiAobV9zZXNzaW9uSUQuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4g
bV9zZXNzaW9uSUQ7CisgICAgQVNTRVJUKG1fc2Vzc2lvbklELmlzVmFsaWQoKSk7CiAKLSAgICBp
ZiAoc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBT
ZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKTsKLQotICAgIHJldHVybiBTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CiB9CiAKIHZv
aWQgUGFnZTo6c2V0U2Vzc2lvbklEKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJU
KHNlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOworICAg
IGlmIChzZXNzaW9uSUQgIT0gbV9zZXNzaW9uSUQpIHsKKyAgICAgICAgbV9zZXNzaW9uSUQgPSBz
ZXNzaW9uSUQ7CisKKyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKKworICAg
ICAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUg
dGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKKyAgICAgICAgLy8gZnJvbSBiZWxvdyBwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0aW1lLgor
ICAgICAgICBhdXRvIHZpZXdzID0gcGx1Z2luVmlld3MoKTsKKworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdmlld3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB2aWV3c1tpXS0+
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKyAg
ICB9CiB9CiAKIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmlu
ZGV4IGZmMjA2YTUuLmFjYzBkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zMTEsNyArMzExLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpOwogICAgIHZv
aWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7Ci0gICAgdm9pZCBwcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogCiAgICAgdm9pZCBzZXREZWJ1Z2dlcihKU0M6
OkRlYnVnZ2VyKik7CiAgICAgSlNDOjpEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVy
biBtX2RlYnVnZ2VyOyB9CkBAIC00MDgsNyArNDA4LDYgQEAgcHVibGljOgogCiAgICAgU2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Vzc2lvbklEKFNlc3Npb25JRCk7
Ci0gICAgYm9vbCBpc1Nlc3Npb25JRFNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlz
VmFsaWQoKTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdEdyb3VwKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4IDQ3YjliYTAuLjQ3OTM2ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbnNvbGUuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBQYWdlQ29uc29sZTo6
YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25z
dCBTdHIKICAgICBpZiAoc291cmNlID09IE1lc3NhZ2VTb3VyY2U6OkNTUykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSkKKyAgICBpZiAobV9wYWdlLnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5hZGRNZXNzYWdlVG9Db25zb2xl
KHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdXJsKTsK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFBhZ2VDb25zb2xlOjptZXNzYWdlV2l0aFR5cGVBbmRM
ZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsCiAgICAgYm9vbCBnb3RN
ZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7CiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCZtX3BhZ2Us
IE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBleGVjLCBh
cmd1bWVudHMpOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChnb3RNZXNzYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCmluZGV4IDdmY2NhYzAuLjczYTViZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBA
IC0xNzEsNyArMTcxLDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBt
X2lzSmF2YUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVz
KHRydWUpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSkKLSAgICAsIG1f
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fYXJlSW1hZ2VzRW5hYmxlZCh0
cnVlKQogICAgICwgbV9hcmVQbHVnaW5zRW5hYmxlZChmYWxzZSkKICAgICAsIG1faXNTY3JpcHRF
bmFibGVkKGZhbHNlKQpAQCAtNDI5LDExICs0MjgsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRQbHVn
aW5zRW5hYmxlZChib29sIGFyZVBsdWdpbnNFbmFibGVkKQogCiB2b2lkIFNldHRpbmdzOjpzZXRQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAg
ICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID09IHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHByaXZh
dGVCcm93c2luZ0VuYWJsZWQ7Ci0gICAgbV9wYWdlLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5n
ZWQoKTsKKyAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbihjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKaW5kZXggZjMyNzM4Yi4uMjdhZDhjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMTQ2
LDcgKzE0Niw2IEBAIHB1YmxpYzoKICAgICAvLyAgLSBIVFRQIENvb2tpZXMKICAgICAvLyAgLSBQ
bHVnLWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRlTW9kZUJvb2wpCiAgICAgdm9pZCBzZXRQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsgfQogCiAgICAg
dm9pZCBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBkbnNQcmVmZXRj
aGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsgfQpA
QCAtMzAxLDcgKzMwMCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAx
OwogICAgIGJvb2wgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyA6IDE7CiAgICAgYm9vbCBt
X2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7Ci0gICAgYm9vbCBtX3ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hcmVJbWFnZXNFbmFibGVkIDogMTsKICAgICBib29s
IG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc1NjcmlwdEVuYWJsZWQgOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggYTdlZTUzMi4uOTY3MzJh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMzU0LDcgKzEzNTQs
NyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2
b2lkKiB2YWx1ZSkKICAgICAgICAgUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2UoKTsK
ICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJS
T1I7Ci0gICAgICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7CisgICAgICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFnZS0+c2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJj
aEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAKaW5kZXggYzFiMjM3Yy4uNjA2MmI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUmVuZGVyU2Vh
cmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCgpCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGZyYW1lKCkuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVt
ZXJhbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgc2l6ZSA9IHN0YXRpY19jYXN0PGlu
dD4obV9yZWNlbnRTZWFyY2hlcy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAK
aW5kZXggYzQ4NGI5Ni4uODY0NzU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBA
IC0xNTgsNyArMTU4LDcgQEAgYm9vbCBTdG9yYWdlOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAKIGJvb2wgU3RvcmFnZTo6aXNEaXNhYmxlZEJ5
UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+c2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5wYWdl
KCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5zdG9yYWdlVHlwZSgpID09IExvY2FsU3RvcmFnZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCmluZGV4IGViN2FiOTIuLjNmZmRmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+
CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBj
b25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2UgcXVlcnlpbmcg
V2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3aXRoIFBhZ2U6OnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgor
ICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxNC0wMy0xMCAgSHlvd29uIEtpbSAg
PGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gTW9kaWZ5IGFjY2VsZXJh
dGVkIGNvbXBvc2l0aW5nIHJlbGF0ZWQgZnVuY3Rpb25zIGluIGV3a192aWV3LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKaW5kZXggYTE3MzlhMC4uMzIxZmIyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNlc3Npb25JRC5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiVGlsZWRC
YWNraW5nU3RvcmUuaCIKQEAgLTgwMCw3ICs4MDEsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KQogI2VuZGlmCiAgICAgcHJpdi0+c2V0dGluZ3Muc2NyaXB0c0NhbkFjY2Vzc0NsaXBib2FyZCA9
IHBhZ2VTZXR0aW5ncy5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCkgJiYgcGFnZVNldHRp
bmdzLkRPTVBhc3RlQWxsb3dlZCgpOwogICAgIHByaXYtPnNldHRpbmdzLnJlc2l6YWJsZVRleHRh
cmVhcyA9IHBhZ2VTZXR0aW5ncy50ZXh0QXJlYXNBcmVSZXNpemFibGUoKTsKLSAgICBwcml2LT5z
ZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBwYWdlU2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpOworICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVCcm93c2luZyA9IHByaXYtPnNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgcHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93c2luZyA9
IHBhZ2VTZXR0aW5ncy5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogICAgIHByaXYtPnNldHRpbmdz
LnNwYXRpYWxOYXZpZ2F0aW9uID0gcGFnZVNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZCgpOwogICAgIHByaXYtPnNldHRpbmdzLmxvY2FsU3RvcmFnZSA9IHBhZ2VTZXR0aW5ncy5sb2Nh
bFN0b3JhZ2VFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggOThjZWIwNi4uYzgwOGJiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9j
ayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdp
dGggc2Vzc2lvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgZm9sbG93aW5nIGNvbnNpc3RzIHNvbGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMg
dG8gcmVwbGFjZSBxdWVyeWluZyBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKwogMjAxNC0wMy0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gW1N0YWJsZV0gZGVhZGxvY2sgaW4gZ29iamVjdCBp
bnRyb3NwZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKaW5kZXggYmE3NmRjMy4uYjdlNmY5ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmNwcApAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkRv
Y3VtCiAKIAogICAgIENyZWRlbnRpYWxTdG9yYWdlTW9kZSBjcmVkZW50aWFsU3RvcmFnZU1vZGU7
Ci0gICAgaWYgKGNvcmUodmlldyktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
KQorICAgIGlmIChjb3JlKHZpZXcpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAg
ICBjcmVkZW50aWFsU3RvcmFnZU1vZGUgPSBEaXNhbGxvd1BlcnNpc3RlbnRTdG9yYWdlOwogICAg
IGVsc2UKICAgICAgICAgY3JlZGVudGlhbFN0b3JhZ2VNb2RlID0gQWxsb3dQZXJzaXN0ZW50U3Rv
cmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAyNzkzNDI2Li4zMDk5OGU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBw
bGUuY29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmb2xs
b3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBsYWNlIHF1
ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgd2l0aCBQ
YWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVu
dDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAoV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorCiAyMDE0LTAzLTEyICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEhvb2sgdXAgaW1hZ2UgY29u
dHJvbHMgZm9yIFdlYktpdDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMmRjYjI1My4uMTI2OTMzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0KQEAgLTExMjAsNyArMTEyMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpCiAgICAgSGlzdG9yeUl0
ZW0qIGhpc3RvcnlJdGVtID0gMDsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShtX3dlYkZy
YW1lLmdldCgpKS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgICAgIGlmICghcGFnZS0+c2Vzc2lvbklEKCkuaXNF
cGhlbWVyYWwoKSkKICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gcGFnZS0+YmFja0ZvcndhcmQo
KS5jdXJyZW50SXRlbSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXgg
MGRiNGY4MC4uNzFhY2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0xMTMsNyAr
MTEzLDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpKQorICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklE
KCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwogCiAg
ICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKaW5kZXggM2U3MDllYy4uMGQwZjE2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNv
bT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5n
IGNvbnNpc3RzIHNvbGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWlu
ZyBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1
cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorCiAyMDE0LTAzLTA2ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRXhwb3Nl
IHRoZSBjb25zb2xlIG9iamVjdCBpbiBKU0NvbnRleHRzIHRvIGludGVyYWN0IHdpdGggV2ViIElu
c3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDI4NDdiNTMuLjY4NmUzZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTgwMyw3ICs4MDMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojp1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKQogICAgIFdlYlZpZXcqIHdlYlZpZXcg
PSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IHdlYlZpZXct
PnBhZ2UoKSkgewotICAgICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpKQorICAgICAgICBpZiAoIXBhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkp
CiAgICAgICAgICAgICBoaXN0b3J5SXRlbSA9IHBhZ2UtPmJhY2tGb3J3YXJkKCkuY3VycmVudEl0
ZW0oKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggYmY1OWVlNy4u
NTAxMGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTExNCw3ICsxMTQsNyBA
QCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAg
aWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICByZXR1
cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA4ZjFkZDM2Li44NDY0NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIw
MTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5
IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOiBDaGFuZ2UgdG8gcmVmZXJlbmNlIGNvdW50ZWQgc2Vzc2lvbi4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uUmVmZXJlbmNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZVNlc3Npb25SZWZlcmVuY2UpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaDogUmVtb3ZlIGNvZGUgc2luY2UgU2Vzc2lvblRyYWNr
ZXIgaW1wbGVtZW50cyBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gY3JlYXRpb24uCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOiBEaXR0by4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291
cC5jcHA6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDogUmVtb3ZlIHByaXZhdGUgYnJvd3NpbmcgcGFyYW1ldGVyLCBz
aW5jZSBzZXNzaW9ucyBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCBhIGdsb2Jh
bCBzZXR0aW5nLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIu
Y3BwOiBSZWZlcmVuY2UgY291bnQgc2Vzc2lvbnMgbWFudWFsbHkgKG5lZWRlZCBkdWUgdG8gY3Jv
c3MtcHJvY2VzcyByZWZlcmVuY2VzKS4KKyAgICAgICAgKFdlYktpdDo6c3RhdGljU2Vzc2lvbkNv
dW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVy
ZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVm
ZXJlbmNlKToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuaDogRGl0dG8uCisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDogQ2hhbmdlIFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgdG8gTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6IERpdHRvLgorICAgICAgICAoV0tQcmVmZXJl
bmNlc1NldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tQYWdlUHJpdmF0ZU1hYy5jcHA6CisgICAgICAgIChXS1BhZ2VJc1VSTEtub3duSFNUU0hvc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOiBNZWNoYW5pY2Fs
bHkgY2hhbmdlIFNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgdG8gUGFnZTo6c2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcml2YXRlQnJv
d3NpbmdFbmFibGVkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3MuY3Bw
OiBEaXR0by4KKyAgICAgICAgKGV3a19zZXR0aW5nc19wcml2YXRlX2Jyb3dzaW5nX2VuYWJsZWRf
c2V0KToKKyAgICAgICAgKGV3a19zZXR0aW5nc19wcml2YXRlX2Jyb3dzaW5nX2VuYWJsZWRfZ2V0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHA6IERpdHRv
LgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyk6
CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5nKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6IENoYW5nZSB0byByZWZlcmVuY2Ug
Y291bnRlZCBzZXNzaW9ucy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZW5zdXJlTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp3aW5kb3dTZXJ2ZXJD
b25uZWN0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6aW5j
cmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpkZWNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OnNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRl
QnJvd3NpbmcpOiBJbXBsZW1lbnQgdXNpbmcgcmVmZXJlbmNlIGNvdW50LgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2Vi
SWNvbkRhdGFiYXNlOjpzZXREYXRhYmFzZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eSk6IERvbid0IHNlbmQgbWVzc2FnZSB0byBXZWJQYWdlIHByb2Nlc3MgdGhhdCBkb2Vzbid0IHll
dCBleGlzdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KTog
Q2xlYW4gdXAgc2Vzc2lvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNz
aW9uSW1wbCk6IFRyYWNrIHJlZmVyZW5jZSBjb3VudCBhbmQgb3B0aW9uYWxseSBzZW5kIG1lc3Nh
Z2UgdG8gV2ViUGFnZSBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
dFNlc3Npb24pOiBTZW5kIG1lc3NhZ2UgdG8gV2ViUGFnZSBwcm9jZXNzLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTogU2V0IHNlc3Npb24gYmFz
ZWQgb24gbGVnYWN5IHByaXZhdGUgYnJvd3NpbmcgcHJlZmVyZW5jZS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2Vz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmFkZFBhZ2UpOiBTZXNzaW9u
IGtlZXBzIHRyYWNrIG9mIHJlZmVyZW5jZSBjb3VudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXM6OnJlbW92ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNlczo6
dXBkYXRlQm9vbFZhbHVlRm9yS2V5KTogQ2hhbmdlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgdG8g
bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVy
ZW5jZXM6OnVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6
OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOiBSZWZlcmVuY2UgY291bnQgc2Vzc2lvbi4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6IE1lY2hhbmljYWxseSBj
aGFuZ2UgU2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdlOjpzZXNzaW9u
SUQoKS5pc0VwaGVtZXJhbCgpLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppc1ByaXZh
dGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDogUmVtb3ZlIGNvZGUgc2luY2UgU2Vzc2lv
blRyYWNrZXIgaW1wbGVtZW50cyBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gY3JlYXRpb24uCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9z
b3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Ojp1cGRhdGVQcmVmZXJlbmNlcyk6IFNldCBzZXNzaW9uIHRvIGxlZ2FjeSBwcml2YXRlIHNlc3Np
b24gaWYgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlc3Npb25JRCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDogUmVtb3ZlIGVuc3VyZS9kZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbiBhcyBQYWdlIHJlZmVyZW5jZSBjb3VudHMgaXRzIHNlc3Npb25zLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6IE1ha2Ugc3VyZSBpZGVudGlm
aWVyIGJhc2UgaXMgc2V0LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxNC0wMy0xMiAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIHRo
ZSBzY3JvbGxpbmcgdHJlZSB0cmFjayB0aGUgdmlld3BvcnQgc2l6ZSwgbm90IHRoZSB2aWV3cG9y
dCByZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKaW5kZXggNGI4NDBmNC4uNTU0Y2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTY2LDEwICsxNjYsNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZQogICAgIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFz
ZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKLSAgICAv
LyBGSVhNRTogaW5zdGVhZCBvZiBoYW5kbGluZyB0aGlzIGhlcmUsIGEgbWVzc2FnZSBzaG91bGQg
YmUgc2VudCBsYXRlciAoc2NhbGVzIHRvIG11bHRpcGxlIHNlc3Npb25zKQotICAgIGlmIChwYXJh
bWV0ZXJzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCgpKTsKLQogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdO
ZXR3b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05l
d1Rlc3RpbmdTZXNzaW9uKCk7CiAKQEAgLTIxOSwxNCArMjE1LDE0IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICNlbmRpZgogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Np
b25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uUmVmZXJlbmNl
KFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBTZXNzaW9uVHJhY2tl
cjo6YWRkU2Vzc2lvblJlZmVyZW5jZShzZXNzaW9uSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQgc2Vz
c2lvbklEKQogewotICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKHNlc3Npb25JRCk7
CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBjN2MzYWVkLi40YzZiNTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTEwOCw4ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQ
cm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAg
ICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCk7Ci0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6
OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJD
b3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgYWRkU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpT
ZXNzaW9uSUQpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNz
aW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQo
dWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5OTQ0OS4uMDk5NGE3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKFZlY3RvcjxTdHJpbmc+IGxh
bmd1YWdlcykKICNlbmRpZgogCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgQWRkU2Vzc2lvblJlZmVyZW5j
ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIFJlbW92ZVNlc3Npb25SZWZlcmVu
Y2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAgIERvd25sb2FkUmVxdWVzdCh1
aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICAg
ICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXgg
ZjVjY2NjMS4uZWJiN2Y2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw5ICs0MCw2IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoKTsKIAotICAg
IC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25U
cmFja2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vi
Q29yZTo6U2Vzc2lvbklEKTsKLQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQubW0KaW5kZXggMmE3YzU5NC4uMjZkODhhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5tbQpAQCAtNzcsMTUgKzc3LDQgQEAgUmVzb3VyY2VFcnJvciBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICBy
ZXR1cm4gV2ViS2l0OjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXZvaWQgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNl
c3Npb25JRCkKLXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotCi0gICAg
aWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkuaXNOdWxs
KCkpOwotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2Vy
OjpnZXRJZGVudGlmaWVyQmFzZSgpICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNl
c3Npb25JRCgpKSkpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAK
aW5kZXggM2JlOWRiYy4uM2UyN2NlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3Vw
LmNwcApAQCAtNDYsMTEgKzQ2LDYgQEAgYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6aXNW
YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25J
RCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMTQxYmE3YS4uNmJjZWFhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMzgsNyArMzgsNiBAQCBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMoKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNv
ZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8
PCBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShjYWNoZU1v
ZGVsKTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8
IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAgLTY1LDggKzY0LDYgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb24KIAogYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYgcmVzdWx0KQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LnByaXZhdGVCcm93c2luZ0VuYWJsZWQpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmNhY2hlTW9kZWwpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZGlza0NhY2hlRGly
ZWN0b3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDU4YWNiMzkuLmRh
ZDExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNTAsNyArNTAsNiBA
QCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIHZvaWQgZW5j
b2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KElQQzo6QXJndW1lbnREZWNvZGVyJiwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
KTsKIAotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKICAgICBDYWNoZU1vZGVsIGNh
Y2hlTW9kZWw7CiAKICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKaW5kZXggYmRjZmZiOS4uNjBmNGFiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBAIC00MSw2ICs0MSwxNCBAQCBz
dGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+PiYgc3RhdGljU2Vzc2lvbgogICAgIHJldHVybiBtYXAuZ2V0KCk7CiB9CiAKK3N0YXRp
YyBIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+JiBzdGF0aWNTZXNzaW9uQ291bnRlcigpCit7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+PiBtYXA7CisgICAgcmV0dXJuIG1hcC5n
ZXQoKTsKK30KKwogc3RhdGljIEhhc2hNYXA8Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKiwg
U2Vzc2lvbklEPiYgc3RvcmFnZVNlc3Npb25Ub0lEKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwpAQCAtODEsMjAgKzg5LDQxIEBAIFNlc3Npb25JRCBTZXNzaW9uVHJhY2tlcjo6
c2Vzc2lvbklEKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKICAgICByZXR1
cm4gc3RvcmFnZVNlc3Npb25Ub0lEKCkuZ2V0KCZzZXNzaW9uKTsKIH0KIAotdm9pZCBTZXNzaW9u
VHJhY2tlcjo6c2V0U2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNzaW9uKQordm9pZCBTZXNzaW9uVHJhY2tlcjo6YWRk
U2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIEFTU0VSVChzZXNz
aW9uSUQgIT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwor
CisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAg
c3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lvbklELCBzdGF0aWNTZXNzaW9uQ291bnRl
cigpLmdldChzZXNzaW9uSUQpICsgMSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBB
U1NFUlQoIVNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKTsKKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRy
YWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9u
SUQuc2Vzc2lvbklEKCkpKTsKICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5zZXQoc2Vzc2lvbi5n
ZXQoKSwgc2Vzc2lvbklEKTsKICAgICBzdGF0aWNTZXNzaW9uTWFwKCkuc2V0KHNlc3Npb25JRCwg
c3RkOjptb3ZlKHNlc3Npb24pKTsKKyAgICBzdGF0aWNTZXNzaW9uQ291bnRlcigpLnNldChzZXNz
aW9uSUQsIDEpOwogfQogCi12b2lkIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQordm9pZCBTZXNzaW9uVHJhY2tlcjo6cmVtb3ZlU2Vzc2lvblJlZmVy
ZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgaWYgKHN0YXRpY1Nlc3Npb25NYXAoKS5jb250YWlucyhzZXNzaW9uSUQpKSB7CisK
KyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworCisgICAgQVNTRVJUKHN0YXRp
Y1Nlc3Npb25NYXAoKS5jb250YWlucyhzZXNzaW9uSUQpKTsKKworICAgIHVpbnQ2NF90IGNvdW50
ZXIgPSBzdGF0aWNTZXNzaW9uQ291bnRlcigpLmdldChzZXNzaW9uSUQpOworCisgICAgaWYgKGNv
dW50ZXIgPT0gMSkgewogICAgICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5yZW1vdmUoc2Vzc2lv
bihzZXNzaW9uSUQpKTsKICAgICAgICAgc3RhdGljU2Vzc2lvbk1hcCgpLnJlbW92ZShzZXNzaW9u
SUQpOwotICAgIH0KKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5yZW1vdmUoc2Vzc2lv
bklEKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5zZXQoc2Vz
c2lvbklELCBjb3VudGVyIC0gMSk7CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50
aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nl
c3Npb25UcmFja2VyLmgKaW5kZXggMGIwMzAyOS4uYTJjODliNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1Nlc3Npb25UcmFja2VyLmgKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcmIGdldElkZW50aWZpZXJCYXNlKCk7CiAgICAgc3RhdGljIFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAg
IHN0YXRpYyBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYpOwotICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb24oV2ViQ29yZTo6
U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
Pik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsK
KyAgICBzdGF0aWMgdm9pZCBhZGRTZXNzaW9uUmVmZXJlbmNlKFdlYkNvcmU6OlNlc3Npb25JRCk7
CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9u
SUQpOwogICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXgg
Yzc5ZGE4My4uYmI2ZjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFj
cm8oRnJhbWVGbGF0dGVuaW5nRW5hYmxlZCwgZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCwgQm9vbCwg
Ym9vbCwgREVGQVVMVF9GUkFNRV9GTEFUVEVOSU5HX0VOQUJMRUQpIFwKICAgICBtYWNybyhEZXZl
bG9wZXJFeHRyYXNFbmFibGVkLCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBCb29sLCBib29sLCBm
YWxzZSkgXAogICAgIG1hY3JvKEphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIGphdmFTY3Jp
cHRFeHBlcmltZW50c0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCi0gICAgbWFjcm8oUHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCwgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwg
ZmFsc2UpIFwKKyAgICBtYWNybyhMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBsZWdhY3lQ
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKFRl
eHRBcmVhc0FyZVJlc2l6YWJsZSwgdGV4dEFyZWFzQXJlUmVzaXphYmxlLCBCb29sLCBib29sLCBE
RUZBVUxUX1RFWFRfQVJFQVNfQVJFX1JFU0laQUJMRSkgXAogICAgIG1hY3JvKEphdmFTY3JpcHRD
YW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHksIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9t
YXRpY2FsbHksIEJvb2wsIGJvb2wsIERFRkFVTFRfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dT
X0FVVE9NQVRJQ0FMTFkpIFwKICAgICBtYWNybyhIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQsIGh5
cGVybGlua0F1ZGl0aW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGE2NTBlN2Mu
LjUwOGEyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5j
ZXNDb3B5RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
CiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvSW1wbChwcmVm
ZXJlbmNlc1JlZiktPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CisgICAgdG9J
bXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0TGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFi
bGVkKTsKIH0KIAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChX
S1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocHJl
ZmVyZW5jZXNSZWYpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIHRvSW1w
bChwcmVmZXJlbmNlc1JlZiktPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKIH0KIAog
dm9pZCBXS1ByZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLmNwcAppbmRleCA2YTlk
Y2E0Li5iZTNmMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
bWFjL1dLUGFnZVByaXZhdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgcGlkX3QgV0tQ
YWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2VSZWYpCiBib29sIFdLUGFnZUlz
VVJMS25vd25IU1RTSG9zdChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsKQogewogICAgIFdl
YlBhZ2VQcm94eSogd2ViUGFnZVByb3h5ID0gdG9JbXBsKHBhZ2UpOwotICAgIGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCA9IHdlYlBhZ2VQcm94eS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMo
KS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkID0gd2ViUGFnZVByb3h5LT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogCiAgICAgcmV0
dXJuIHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmNvbnRleHQoKS5pc1VSTEtub3duSFNUU0hvc3Qo
dG9JbXBsKHVybCktPnN0cmluZygpLCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggZjEw
YmYwNi4uN2RkNDQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTg1MiwxMiArODUyLDEyIEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VO
U0RhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIC0gKEJPT0wpX3ByaXZh
dGVCcm93c2luZ0VuYWJsZWQKIHsKLSAgICByZXR1cm4gW19jb25maWd1cmF0aW9uIHByZWZlcmVu
Y2VzXS0+X3ByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcmV0dXJu
IFtfY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy0+bGVnYWN5UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiAtICh2b2lkKV9zZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkOihCT09MKXByaXZhdGVCcm93c2luZ0VuYWJsZWQKIHsKLSAgICBbX2NvbmZpZ3VyYXRpb24g
cHJlZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisgICAgW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+
X3ByZWZlcmVuY2VzLT5zZXRMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXZhdGVCcm93
c2luZ0VuYWJsZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZXMgbGF5b3V0TWlsZXN0b25lcyhfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBldmVudHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcApp
bmRleCAxZWRhNjc2Li43NGFmMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfc2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3NldHRpbmdzX3ByaXZhdGVfYnJvd3NpbmdfZW5hYmxlZF9zZXQoRXdrX1NldHRpbmdzKiBz
ZXR0aW5ncywgRWluYQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXR0
aW5ncywgZmFsc2UpOwogCi0gICAgc2V0dGluZ3MtPnByZWZlcmVuY2VzKCkuc2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChlbmFibGUpOworICAgIHNldHRpbmdzLT5wcmVmZXJlbmNlcygpLnNldExl
Z2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpAQCAtMzAzLDcgKzMwMyw3IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfcHJpdmF0ZV9icm93
c2luZ19lbmFibGVkX2dldChjb25zdCBFd2tfU2V0dGluZ3MqIHNldHRpbmdzCiB7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNldHRpbmdzLCBmYWxzZSk7CiAKLSAgICByZXR1
cm4gc2V0dGluZ3MtPnByZWZlcmVuY2VzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAg
IHJldHVybiBzZXR0aW5ncy0+cHJlZmVyZW5jZXMoKS5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfdGV4dF9hdXRvc2l6aW5nX2VuYWJs
ZWRfc2V0KEV3a19TZXR0aW5ncyogc2V0dGluZ3MsIEVpbmFfQm9vbCBlbmFibGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5k
ZXggZmFlY2FmNi4uNDRiMmY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAtMjA5Myw3ICsyMDkzLDcgQEAgZ2Jvb2xl
YW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyhXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NF
VFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5w
cmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBzZXR0aW5n
cy0+cHJpdi0+cHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKIH0K
IAogLyoqCkBAIC0yMTA4LDExICsyMTA4LDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfcHJpdmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAg
IFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wg
Y3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5sZWdhY3lQcml2
YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0TGVnYWN5UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpF
Q1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXByaXZhdGUtYnJvd3NpbmciKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IDIxMTcwNDQuLmFlMDFkNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTM4Myw4ICszODMsNiBAQCB2
b2lkIFdlYkNvbnRleHQ6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkKIAogICAgIE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAKLSAgICBwYXJhbWV0ZXJzLnByaXZh
dGVCcm93c2luZ0VuYWJsZWQgPSBXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZh
dGVCcm93c2luZygpOwotCiAgICAgcGFyYW1ldGVycy5jYWNoZU1vZGVsID0gbV9jYWNoZU1vZGVs
OwogCiAgICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXNrQ2FjaGVEaXJlY3Rv
cnkoKTsKQEAgLTQ1OSw0NCArNDU3LDMwIEBAIHZvaWQgV2ViQ29udGV4dDo6Z2V0RGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJvCiB9CiAj
ZW5kaWYKIAotdm9pZCBXZWJDb250ZXh0Ojp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygp
Cit2b2lkIFdlYkNvbnRleHQ6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQog
ewotICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4mIGNvbnRleHRzID0gYWxsQ29udGV4dHMo
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQgPSBjb250ZXh0cy5zaXplKCk7IGkgPCBj
b3VudDsgKytpKQotICAgICAgICBjb250ZXh0c1tpXS0+c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZl
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKyAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0g
bV9wcm9jZXNzZXMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0Nv
dW50OyArK2kpCisgICAgICAgIG1fcHJvY2Vzc2VzW2ldLT53aW5kb3dTZXJ2ZXJDb25uZWN0aW9u
U3RhdGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6d2lsbFN0b3BVc2luZ1ByaXZh
dGVCcm93c2luZygpCit2b2lkIFdlYkNvbnRleHQ6OmluY3JlbWVudFByaXZhdGVCcm93c2luZ0Nv
dW50KCkKIHsKLSAgICBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IGFsbENv
bnRleHRzKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgp
OyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgY29udGV4dHNbaV0tPnNldEFueVBhZ2VHcm91cE1p
Z2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFsc2UpOworICAgIGlmICghbV9wcml2YXRl
QnJvd3NpbmdDb3VudCkKKyAgICAgICAgc29tZVBhZ2VJc1ByaXZhdGVCcm93c2luZyh0cnVlKTsK
KyAgICBtX3ByaXZhdGVCcm93c2luZ0NvdW50Kys7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6d2lu
ZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCit2b2lkIFdlYkNvbnRleHQ6OmRlY3Jl
bWVudFByaXZhdGVCcm93c2luZ0NvdW50KCkKIHsKLSAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0g
bV9wcm9jZXNzZXMuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0Nv
dW50OyArK2kpCi0gICAgICAgIG1fcHJvY2Vzc2VzW2ldLT53aW5kb3dTZXJ2ZXJDb25uZWN0aW9u
U3RhdGVDaGFuZ2VkKCk7CisgICAgbV9wcml2YXRlQnJvd3NpbmdDb3VudC0tOworICAgIGlmICgh
bV9wcml2YXRlQnJvd3NpbmdDb3VudCkKKyAgICAgICAgc29tZVBhZ2VJc1ByaXZhdGVCcm93c2lu
ZyhmYWxzZSk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZl
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCit2b2lk
IFdlYkNvbnRleHQ6OnNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkKQogewogICAgIG1faWNvbkRhdGFiYXNlLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwotCi0jaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkgJiYgbmV0d29ya1Byb2Nlc3MoKSkgewot
ICAgICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgICAgIG5ldHdvcmtQ
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6
OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOwotICAgIH0KLSNlbmRpZiAvLyBFTkFCTEVE
KE5FVFdPUktfUFJPQ0VTUykKLQotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAg
ICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKTsK
LSAgICBlbHNlCi0gICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkpKTsKIH0KIAogdm9pZCAoKnNfaW52YWxpZE1lc3NhZ2VDYWxsYmFjaykoV0tT
dHJpbmdSZWYgbWVzc2FnZU5hbWUpOwpAQCAtNjI1LDkgKzYwOSw2IEBAIFdlYlByb2Nlc3NQcm94
eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UU9TKHdlYlByb2Nlc3NMYXRlbmN5UU9TKCksIHdlYlBy
b2Nlc3NUaHJvdWdocHV0UU9TKCkpLCAwKTsKICNlbmRpZgogCi0gICAgaWYgKFdlYlByZWZlcmVu
Y2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpCi0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKLQogICAgIG1fcHJvY2Vz
c2VzLmFwcGVuZChwcm9jZXNzKTsKIAogICAgIGlmIChtX3Byb2Nlc3NNb2RlbCA9PSBQcm9jZXNz
TW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7CkBAIC03NzcsOCArNzU4LDYgQEAgUGFzc1Jl
ZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUGEKICAgICAgICAgY29uZmlndXJhdGlvbi5wcmVmZXJlbmNlcyA9ICZj
b25maWd1cmF0aW9uLnBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKTsKICAgICBpZiAoIWNvbmZpZ3Vy
YXRpb24udmlzaXRlZExpbmtQcm92aWRlcikKICAgICAgICAgY29uZmlndXJhdGlvbi52aXNpdGVk
TGlua1Byb3ZpZGVyID0gbV92aXNpdGVkTGlua1Byb3ZpZGVyLmdldCgpOwotICAgIGlmICghY29u
ZmlndXJhdGlvbi5zZXNzaW9uKQotICAgICAgICBjb25maWd1cmF0aW9uLnNlc3Npb24gPSBjb25m
aWd1cmF0aW9uLnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyAmQVBJOjpT
ZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpIDogJkFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNl
c3Npb24oKTsKIAogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHByb2Nlc3M7CiAgICAgaWYg
KG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNoYXJlZFNlY29uZGFyeVByb2Nlc3MpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDQyYjUwYWIuLjMxYTBhOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtMzA0LDkgKzMwNCw2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgp
OwogCi0gICAgc3RhdGljIHZvaWQgd2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKLSAg
ICBzdGF0aWMgdm9pZCB3aWxsU3RvcFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0KICAgICBzdGF0
aWMgYm9vbCBpc0VwaGVtZXJhbFNlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKIAogI2lmIFVT
RShTT1VQKQpAQCAtMzM3LDYgKzMzNCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE1lbW9y
eUNhY2hlRGlzYWJsZWQoYm9vbCk7CiAKKyAgICB2b2lkIGluY3JlbWVudFByaXZhdGVCcm93c2lu
Z0NvdW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCgpOworCisg
ICAgYm9vbCBhbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlQnJvd3NpbmdDb3VudCA+IDA7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRm
b3JtSW5pdGlhbGl6ZSgpOwogCkBAIC00MTgsNyArNDIwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1
bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKICAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2Vy
SW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCk7CiAKLSAgICB2b2lkIHNldEFu
eVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCk7CisgICAgdm9p
ZCBzb21lUGFnZUlzUHJpdmF0ZUJyb3dzaW5nKGJvb2wpOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBF
X1BMVUdJTl9BUEkpCiAgICAgLy8gUGx1Z2luSW5mb1N0b3JlQ2xpZW50OgpAQCAtNTI5LDYgKzUz
MSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNoZURpc2FibGVk
OworCisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJvd3NpbmdDb3VudDsKIH07CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNv
bkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2Uu
Y3BwCmluZGV4IDdhZGFlODkuLmE1ZmQ3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJY29uRGF0YWJhc2UuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViSWNvbkRhdGFi
YXNlOjpzZXREYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogCiAgICAgLy8gRklYTUU6
IFdlYkljb25EYXRhYmFzZXMgYXJlIHBlci1XZWJDb250ZXh0IGJ1dCBXZWJDb250ZXh0J3MgZG9u
J3QgaGF2ZSB0aGVpciBvd24gbm90aW9uIG9mIHRoZSBjdXJyZW50IHByaXZhdGUgYnJvd3Npbmcg
c2V0dGluZy4KICAgICAvLyBBcyB3ZSBjbGVhbiB1cCBwcml2YXRlIGJyb3dzaW5nIHRocm91Z2hv
dXQgdGhlIHN0YWNrIHdlIG5lZWQgdG8gY2xlYW4gaXQgdXAgaGVyZS4KLSAgICBtX2ljb25EYXRh
YmFzZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBh
Z2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CisgICAgbV9pY29uRGF0YWJhc2VJbXBsLT5z
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKG1fd2ViQ29udGV4dC0+YW55UGFnZXNBcmVVc2luZ1By
aXZhdGVCcm93c2luZygpKTsKIAogICAgIGlmICghbV9pY29uRGF0YWJhc2VJbXBsLT5vcGVuKGRp
cmVjdG9yeU5hbWUocGF0aCksIHBhdGhHZXRGaWxlTmFtZShwYXRoKSkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gb3BlbiBXZWJLaXQyIGljb24gZGF0YWJhc2Ugb24gZGlzayIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4YWI2M2FmLi5j
NGQ3Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
OTQsNiArOTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVuZGVyRW1iZWRkZWRPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSURI
YXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzAzLDcg
KzMwNCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAgLCBtX2lzVHJhY2tpbmdUb3Vj
aEV2ZW50cyhmYWxzZSkKICNlbmRpZgogICAgICwgbV9wYWdlSUQocGFnZUlEKQotICAgICwgbV9z
ZXNzaW9uKCpjb25maWd1cmF0aW9uLnNlc3Npb24pCisgICAgLCBtX3Nlc3Npb24oQVBJOjpTZXNz
aW9uOjpkZWZhdWx0U2Vzc2lvbigpKQogICAgICwgbV9pc1BhZ2VTdXNwZW5kZWQoZmFsc2UpCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKFRl
eHRDaGVja2VyOjppc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpKQpAQCAtMzc2LDcgKzM3Nyw4
IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAgLy8gRklYTUU6IElmIHdlIGV2ZXIgZXhw
b3NlIHRoZSBzZXNzaW9uIHN0b3JhZ2Ugc2l6ZSBhcyBhIHByZWZlcmVuY2UsIHdlIG5lZWQgdG8g
cGFzcyBpdCBoZXJlLgogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1fcHJvY2Vz
cy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0YXRlOjpSdW5uaW5nID8gbV9wcm9jZXNz
LT5jb25uZWN0aW9uKCkgOiBudWxscHRyOwogICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnN0b3Jh
Z2VNYW5hZ2VyKCkuY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UobV9wYWdlSUQsIGNvbm5l
Y3Rpb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgc2V0U2Vz
c2lvbigqY29uZmlndXJhdGlvbi5zZXNzaW9uKTsKKyAgICBpZiAobV9wcmVmZXJlbmNlcy0+bGVn
YWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgICAgICBzZXRTZXNzaW9uSW1wbChBUEk6
OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCksIGZhbHNlKTsKIH0KIAogV2ViUGFnZVBy
b3h5Ojp+V2ViUGFnZVByb3h5KCkKQEAgLTM5NSw2ICszOTcsNyBAQCBXZWJQYWdlUHJveHk6On5X
ZWJQYWdlUHJveHkoKQogI2lmbmRlZiBOREVCVUcKICAgICB3ZWJQYWdlUHJveHlDb3VudGVyLmRl
Y3JlbWVudCgpOwogI2VuZGlmCisgICAgc2V0U2Vzc2lvbihBUEk6OlNlc3Npb246OmRlZmF1bHRT
ZXNzaW9uKCkpOwogfQogCiBQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyIFdlYlBhZ2VQcm94eTo6
cHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdApAQCAtNTI3LDE1ICs1MzAsMzAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogaXRlbSkKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RhcnQo
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldFNlc3Npb24oQVBJOjpTZXNzaW9uJiBzZXNz
aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNldFNlc3Npb25JbXBsKEFQSTo6U2Vzc2lvbiYgc2Vz
c2lvbiwgYm9vbCBzZW5kTWVzc2FnZVRvUGFnZSkKIHsKLSAgICBtX3Nlc3Npb24gPSBzZXNzaW9u
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Vzc2lvbklEKHNl
c3Npb24uZ2V0SUQoKSksIG1fcGFnZUlEKTsKKyAgICBpZiAoc2Vzc2lvbi5nZXRJRCgpICE9IG1f
c2Vzc2lvbi0+Z2V0SUQoKSkgeworICAgICAgICBpZiAoc2VuZE1lc3NhZ2VUb1BhZ2UpCisgICAg
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Npb25JRChz
ZXNzaW9uLmdldElEKCkpLCBtX3BhZ2VJRCk7CisKKyAgICAgICAgaWYgKHNlc3Npb24uZ2V0SUQo
KS5pc0VwaGVtZXJhbCgpICYmICFtX3Nlc3Npb24tPmdldElEKCkuaXNFcGhlbWVyYWwoKSkKKyAg
ICAgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLmluY3JlbWVudFByaXZhdGVCcm93c2luZ0Nv
dW50KCk7CisgICAgICAgIGVsc2UgaWYgKCFzZXNzaW9uLmdldElEKCkuaXNFcGhlbWVyYWwoKSAm
JiBtX3Nlc3Npb24tPmdldElEKCkuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vz
cy0+Y29udGV4dCgpLmRlY3JlbWVudFByaXZhdGVCcm93c2luZ0NvdW50KCk7CiAKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmIChzZXNzaW9uLmlzRXBoZW1lcmFsKCkpCi0gICAg
ICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uLmdl
dElEKCkpKTsKKyAgICAgICAgaWYgKG1fc2Vzc2lvbi0+aXNFcGhlbWVyYWwoKSkKKyAgICAgICAg
ICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShtX3Nlc3Npb24tPmdldElE
KCkpKTsKKyAgICAgICAgaWYgKHNlc3Npb24uaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIG1f
cHJvY2Vzcy0+Y29udGV4dCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6QWRkU2Vzc2lvblJlZmVyZW5jZShzZXNzaW9uLmdldElEKCkpKTsKICNlbmRp
ZgorICAgICAgICBtX3Nlc3Npb24gPSBzZXNzaW9uOworICAgIH0KK30KKwordm9pZCBXZWJQYWdl
UHJveHk6OnNldFNlc3Npb24oQVBJOjpTZXNzaW9uJiBzZXNzaW9uKQoreworICAgIHNldFNlc3Np
b25JbXBsKHNlc3Npb24sIHRydWUpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6
ZVdlYlBhZ2UoKQpAQCAtMjA4Myw2ICsyMTAxLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwcmVm
ZXJlbmNlc0RpZENoYW5nZSgpCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIGlmIChtX3ByZWZlcmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
JiYgbV9zZXNzaW9uLT5nZXRJRCgpID09IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQor
ICAgICAgICBzZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSk7
CisgICAgZWxzZSBpZiAoIW1fcHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSAmJiBtX3Nlc3Npb24tPmdldElEKCkgPT0gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKCkpCisgICAgICAgIHNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lv
bigpKTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VSVkVSKQogICAgIGlmIChtX3ByZWZlcmVu
Y2VzLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCiAgICAgICAgIGluc3BlY3RvcigpLT5lbmFi
bGVSZW1vdGVJbnNwZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMDg3ODU4NS4uYTc0N2ZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMzIzLDcgKzMyMyw2IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlv
biB7CiAgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAgPSBudWxscHRyOwogICAgIFdlYlByZWZl
cmVuY2VzKiBwcmVmZXJlbmNlcyA9IG51bGxwdHI7CiAgICAgVmlzaXRlZExpbmtQcm92aWRlciog
dmlzaXRlZExpbmtQcm92aWRlciA9IG51bGxwdHI7Ci0gICAgQVBJOjpTZXNzaW9uKiBzZXNzaW9u
ID0gbnVsbHB0cjsKICAgICBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gbnVsbHB0cjsKIH07
CiAKQEAgLTkyOCw2ICs5MjcsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIHNldFNlc3Npb25JbXBsKEFQSTo6U2Vzc2lvbiYs
IGJvb2wgc2VuZE1lc3NhZ2VUb1BhZ2UpOworCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBD
OjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggMGY3ZGE3OS4uZmU1YzllOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0zMiwx
MCArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gRklYTUU6IE1hbmlwdWxhdGlu
ZyB0aGlzIHZhcmlhYmxlIGlzIG5vdCB0aHJlYWQgc2FmZS4KLS8vIEluc3RlYWQgb2YgdHJhY2tp
bmcgcHJpdmF0ZSBicm93c2luZyBzdGF0ZSBhcyBhIGJvb2xlYW4gcHJlZmVyZW5jZSwgd2Ugc2hv
dWxkIGxldCB0aGUgY2xpZW50IHByb3ZpZGUgc3RvcmFnZSBzZXNzaW9ucyBleHBsaWNpdGx5Lgot
c3RhdGljIHVuc2lnbmVkIHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudDsKLQogV2ViUHJlZmVyZW5j
ZXM6OldlYlByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogewpAQCAtNjIsMjUgKzU4LDEyIEBAIHZvaWQgV2ViUHJlZmVy
ZW5jZXM6OmFkZFBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiB7CiAgICAgQVNTRVJU
KCFtX3BhZ2VzLmNvbnRhaW5zKCZ3ZWJQYWdlUHJveHkpKTsKICAgICBtX3BhZ2VzLmFkZCgmd2Vi
UGFnZVByb3h5KTsKLQotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpIHsKLSAgICAg
ICAgaWYgKCFwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQpCi0gICAgICAgICAgICBXZWJDb250ZXh0
Ojp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpOwotCi0gICAgICAgICsrcHJpdmF0ZUJy
b3dzaW5nUGFnZUNvdW50OwotICAgIH0KIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVtb3Zl
UGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKIHsKICAgICBBU1NFUlQobV9wYWdlcy5j
b250YWlucygmd2ViUGFnZVByb3h5KSk7CiAgICAgbV9wYWdlcy5yZW1vdmUoJndlYlBhZ2VQcm94
eSk7Ci0KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSB7Ci0gICAgICAgIC0tcHJp
dmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VD
b3VudCkKLSAgICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3Np
bmcoKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZSgpCkBAIC05Nyw4
ICs4MCw4IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhCiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OnVwZGF0ZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSkKIHsK
LSAgICBpZiAoa2V5ID09IFdlYlByZWZlcmVuY2VzS2V5Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVk
S2V5KCkpIHsKLSAgICAgICAgdXBkYXRlUHJpdmF0ZUJyb3dzaW5nVmFsdWUodmFsdWUpOworICAg
IGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWRLZXkoKSkgeworICAgICAgICB1cGRhdGVMZWdhY3lQcml2YXRlQnJvd3NpbmdWYWx1ZSh2YWx1
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNCwyNyArMTA3LDIwIEBAIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUZsb2F0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXks
IGZsb2F0IHZhbHVlKQogICAgIHVwZGF0ZSgpOyAvLyBGSVhNRTogT25seSBzZW5kIG92ZXIgdGhl
IGNoYW5nZWQga2V5IGFuZCB2YWx1ZS4KIH0KIAotdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRl
UHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSkKK3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnVw
ZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVlKGJvb2wgdmFsdWUpCiB7Ci0gICAgcGxhdGZv
cm1VcGRhdGVCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2lu
Z0VuYWJsZWRLZXkoKSwgdmFsdWUpOwotCi0gICAgdW5zaWduZWQgcGFnZXNDaGFuZ2VkID0gbV9w
YWdlcy5zaXplKCk7Ci0gICAgaWYgKCFwYWdlc0NoYW5nZWQpCi0gICAgICAgIHJldHVybjsKKyAg
ICBwbGF0Zm9ybVVwZGF0ZUJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bGVnYWN5
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpLCB2YWx1ZSk7CiAKICAgICBpZiAodmFsdWUpIHsK
LSAgICAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQpCi0gICAgICAgICAgICBXZWJD
b250ZXh0Ojp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpOwotICAgICAgICBwcml2YXRl
QnJvd3NpbmdQYWdlQ291bnQgKz0gcGFnZXNDaGFuZ2VkOwotICAgIH0KLQotICAgIHVwZGF0ZSgp
OyAvLyBGSVhNRTogT25seSBzZW5kIG92ZXIgdGhlIGNoYW5nZWQga2V5IGFuZCB2YWx1ZS4KLQot
ICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1BhZ2VDb3Vu
dCA+PSBwYWdlc0NoYW5nZWQpOwotICAgICAgICBwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQgLT0g
cGFnZXNDaGFuZ2VkOwotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCkKLSAg
ICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlcykgeworICAgICAgICAgICAgaWYgKHBhZ2Ut
PnNlc3Npb25JRCgpID09IFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQor
ICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbigpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoYXV0
byYgcGFnZSA6IG1fcGFnZXMpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5zZXNzaW9uSUQoKSA9
PSBXZWJDb3JlOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkKKyAgICAgICAg
ICAgICAgICBwYWdlLT5zZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSk7
CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE2Niw5ICsxNDIsNCBAQCBGT1JfRUFDSF9XRUJL
SVRfUFJFRkVSRU5DRShERUZJTkVfUFJFRkVSRU5DRV9HRVRURVJfQU5EX1NFVFRFUlMpCiAKICN1
bmRlZiBERUZJTkVfUFJFRkVSRU5DRV9HRVRURVJfQU5EX1NFVFRFUlMKIAotYm9vbCBXZWJQcmVm
ZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpCi17Ci0gICAgcmV0dXJu
IHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGRkNWUyZDEuLmYx
ZTVlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNl
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCkBAIC02
OCw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAvLyBFeHBvc2VkIGZvciBXZWJLaXRUZXN0UnVubmVy
IHVzZSBvbmx5LgogICAgIHZvaWQgZm9yY2VVcGRhdGUoKSB7IHVwZGF0ZSgpOyB9CiAKLSAgICBz
dGF0aWMgYm9vbCBhbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0KIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgV2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJik7CiAgICAgV2ViUHJl
ZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXMmKTsKQEAgLTg5LDcgKzg3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlRG91YmxlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXksIGRvdWJsZSB2YWx1ZSk7CiAgICAgdm9pZCBwbGF0Zm9ybVVwZGF0ZUZsb2F0VmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0IHZhbHVlKTsKIAotICAgIHZvaWQgdXBkYXRl
UHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSk7CisgICAgdm9pZCB1cGRhdGVMZWdhY3lQ
cml2YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKTsKIAogICAgIFN0cmluZyBtX2lkZW50aWZp
ZXI7CiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBtX3N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAppbmRleCA3Njg3MzBkLi4zNTRiNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzA5
LDkgKzMwOSwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvbwogICAgIC8vIEZJWE1FIChOZXR3
b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5l
dHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NTI3ND4uCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQ
KQogICAgIGlmIChlbmFibGVkKQotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Np
b25JRCgpKTsKKyAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Npb25SZWZlcmVuY2UoU2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogICAgIGVsc2UKLSAgICAgICAgU2Vz
c2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Np
b25JRCgpKTsKKyAgICAgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSkKKyAgICAgICAgICAgIFNlc3Npb25UcmFja2VyOjpy
ZW1vdmVTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgp
KTsKICNlbmRpZgogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6
cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKICAgICBmb3IgKEhh
c2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRlciAhPSBwYWdl
cy5lbmQoKTsgKytpdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IGRmZjgxNWIuLmMwOTE1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE1MzMsNyArMTUz
Myw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICBp
ZiAoIWZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdp
blN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHJldHVybiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpOwogfQogCiBib29sIFBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgKaW5kZXggZGVmMjAzOC4uYjM5NmNlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDAsOSArNDAsNiBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChm
cmFtZSkpOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiByZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMg
Y29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwotCiAgICAgc3RhdGljIHZvaWQg
c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGlj
eSk7CiAKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmlu
ZGV4IDI2YmZmYzQuLmNmZTlkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbQpAQCAtNDIsMjIgKzQyLDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQp
Ci17Ci0gICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKLQotICAgIGlmIChTZXNz
aW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
dHJpbmcgYmFzZTsKLSAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCku
aXNOdWxsKCkpCi0gICAgICAgIGJhc2UgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdOwotICAgIGVsc2UKLSAgICAgICAgYmFzZSA9IFNlc3Npb25UcmFja2VyOjpnZXRJ
ZGVudGlmaWVyQmFzZSgpOwotCi0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lv
bklELCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
YmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpKTsKLX0K
LQogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lG
b3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKIHsKICAgICBbW05T
SFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIHNldENvb2tpZUFjY2Vw
dFBvbGljeTpzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHBvbGljeSldOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3Vw
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4
IDc3NzM3ZDQuLmU5NDMyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5jcHAKQEAgLTM4LDE2ICszOCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCi17
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6
c2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTZXNzaW9uVHJhY2tl
cjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkp
KSk7Ci19Ci0KIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQoV2ViRnJhbWUqIGZyYW1lKQogICAgIDogRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFt
ZS0+Y29yZUZyYW1lKCkpCiB7CkBAIC01NSw3ICs0NSw3IEBAIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViRnJhbWUqIGZyYW1lKQogCiBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdl
KCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiAqU2Vzc2lvblRy
YWNrZXI6OnNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogCiAg
ICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3Nv
dXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCA5
MzQxMGIzLi4xOTRhNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmgKQEAgLTQzLDggKzQzLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Np
b25JRCk7Ci0KICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQo
KSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCAzZjdmY2MzLi5kYmE4OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5j
bHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlByaW50SW5mby5oIgogI2luY2x1ZGUgIlNl
c3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKQEAgLTIxMTgsMTQgKzIxMTksNiBAQCB2b2lk
IFdlYlBhZ2U6OnNldExheWVySG9zdGluZ01vZGUodW5zaWduZWQgbGF5ZXJIb3N0aW5nTW9kZSkK
ICAgICAgICAgcGx1Z2luVmlldy0+c2V0TGF5ZXJIb3N0aW5nTW9kZShtX2xheWVySG9zdGluZ01v
ZGUpOwogfQogCi1TZXNzaW9uSUQgV2ViUGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKLXsKLSAgICBp
ZiAobV9wYWdlLT5pc1Nlc3Npb25JRFNldCgpKQotICAgICAgICByZXR1cm4gbV9wYWdlLT5zZXNz
aW9uSUQoKTsKLQotICAgIHJldHVybiBtX3BhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLX0KLQogYm9vbCBXZWJQYWdlOjppc1VzaW5nRXBoZW1l
cmFsU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNlc3Npb25JRCgpLmlzRXBoZW1lcmFs
KCk7CkBAIC0yMTMzLDkgKzIxMjYsMTMgQEAgYm9vbCBXZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFs
U2Vzc2lvbigpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZTo6c2V0U2Vzc2lvbklEKFNlc3Npb25JRCBz
ZXNzaW9uSUQpCiB7Ci0gICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKKyAgICBB
U1NFUlQoc2Vzc2lvbklEICE9IG1fcGFnZS0+c2Vzc2lvbklEKCkpOworICAgIEFTU0VSVChzZXNz
aW9uSUQuaXNWYWxpZCgpKTsKKyAgICBpZiAobV9wYWdlLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJh
bCgpKQorICAgICAgICBTZXNzaW9uVHJhY2tlcjo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShtX3Bh
Z2UtPnNlc3Npb25JRCgpKTsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAg
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vz
c2lvbklEKTsKKyAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Npb25SZWZlcmVuY2Uoc2Vz
c2lvbklEKTsKKyAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2Fk
SUQpCkBAIC0yNDQwLDEwICsyNDM3LDggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNl
cyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5ncy5zZXRMb2Nh
bFN0b3JhZ2VFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6bG9jYWxTdG9yYWdlRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0WFNTQXVkaXRv
ckVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp4c3NB
dWRpdG9yRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0RnJhbWVGbGF0dGVuaW5nRW5h
YmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmZyYW1lRmxh
dHRlbmluZ0VuYWJsZWRLZXkoKSkpOwotICAgIGlmIChtX3BhZ2UtPmlzU2Vzc2lvbklEU2V0KCkp
Ci0gICAgICAgIHNldHRpbmdzLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQobV9wYWdlLT5zZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHNldHRpbmdzLnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVkS2V5KCkpKTsKKyAgICBpZiAoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpsZWdhY3lQcml2YXRlQnJvd3NpbmdF
bmFibGVkS2V5KCkpICYmICFtX3BhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCisgICAg
ICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCgpKTsKICAgICBzZXR0aW5ncy5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHN0b3JlLmdldEJv
b2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZEtl
eSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0SmF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmphdmFTY3JpcHRFeHBlcmlt
ZW50c0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFRleHRBcmVhc0FyZVJlc2l6YWJs
ZShzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRleHRBcmVhc0Fy
ZVJlc2l6YWJsZUtleSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBkMjhlOWE4Li4zNWUxMjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAKICAg
ICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsg
fQogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9Ci0gICAg
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OworICAgIFdlYkNvcmU6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOyB9CiAg
ICAgYm9vbCBpc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Vz
c2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IDNiZTlmY2YuLjQ4YTBkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzQ4LDYgKzM0OCw5IEBAIHZvaWQgV2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1lCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBhcmFtZXRl
cnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIAorICAgIGlmIChTZXNzaW9u
VHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKKyAgICAgICAgU2Vzc2lvblRy
YWNrZXI6OnNldElkZW50aWZpZXJCYXNlKCIiKTsKKwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3Vs
ZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAKQEAgLTQ3MSwyMCArNDc0LDYgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQpCiAgICAgbV9mdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkID0gZnVs
bEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0jaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQotICAgIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKLSNl
bmRpZgotfQotCi12b2lkIFdlYlByb2Nlc3M6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5F
VFdPUkspIHx8IFVTRShTT1VQKQotICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihz
ZXNzaW9uSUQpOwotI2VuZGlmCi19Ci0KIERvd25sb2FkTWFuYWdlciYgV2ViUHJvY2Vzczo6ZG93
bmxvYWRNYW5hZ2VyKCkKIHsKICAgICBBU1NFUlQoIXVzZXNOZXR3b3JrUHJvY2VzcygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggOWQzZjg0NS4uYTdkNjQzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTE2NSw5ICsxNjUsNiBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENhY2hlTW9kZWwodWludDMyX3QpOwogCi0gICAgdm9p
ZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAg
dm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwot
CiAgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lk
IHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDZmYWIyZjIuLmNl
NzkyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTU0LDEwICs1NCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9yZVRMU0Vycm9ycykK
ICNlbmRpZgogCi0gICAgLy8gTGVnYWN5IHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbiBpcyBwZXIg
cHJvY2Vzcy4gSW5kaXZpZHVhbCBwYWdlcyBvciBwYWdlIGdyb3VwcyBtYXkgdXNlIHRoZSBwcml2
YXRlIHNlc3Npb24gb3IgdGhlIGRlZmF1bHQgb25lIGFzIGFwcHJvcHJpYXRlLgotICAgIEVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAg
ICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQotCiAgICAgIyBQbHVnLWlucy4KICAgICBEaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoKHVpbnQzMl90IGhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSkKICAgICBSZXNldFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcyhIYXNoTWFwPHVpbnQzMl90LGRvdWJsZT4gaGFzaGVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226601</attachid>
            <date>2014-03-13 11:16:50 -0700</date>
            <delta_ts>2014-03-17 13:10:53 -0700</delta_ts>
            <desc>efl fix + restore test</desc>
            <filename>privatesetting.04.diff</filename>
            <type>text/plain</type>
            <size>85493</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMGMzOGY1Li5kMTJlZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVj
dFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5p
dGlhbGl6ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNl
c3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRv
IGp1c3QgcmV0dXJuIG1fc2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vz
c2lvbklEKTogQWxzbyBwZXJmb3JtIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24u
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOiBSZW1vdmUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBzZXR0aW5n
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUGFnZSByZWZsZWN0cyBz
ZXR0aW5nIHVzaW5nIHNlc3Npb24uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpnZXRWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
Ojppc0Rpc2FibGVkQnlQcml2YXRlQnJvd3NpbmcpOgorCiAyMDE0LTAzLTEzICBSYWR1IFN0YXZp
bGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4KIAogICAgICAgICBXZWJraXQgbm90IGJ1aWxkaW5nIG9u
IFhDb2RlIDUuMSBkdWUgdG8gZ2FyYmFnZSBjb2xsZWN0aW9uIG5vIGxvbmdlciBiZWluZyBzdXBw
b3J0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VDb250ZXh0LmNwcAppbmRleCA3NTJlMjllLi41OGRhNDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCkBA
IC0yMjcsNyArMjI3LDcgQEAgYm9vbCBEYXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0YWJhc2VBY2Nl
c3MoKSBjb25zdAogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1l
bnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSB8fCAoZG9j
dW1lbnQtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgJiYgIVNj
aGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGRvY3Vt
ZW50LT5zZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKSkpCisgICAgICAgIGlmICghZG9jdW1l
bnQtPnBhZ2UoKSB8fCAoZG9jdW1lbnQtPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwo
KSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRlQnJvd3Np
bmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkpKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNjFiNmY4YS4uNzRlMThiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUu
aCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgorI2luY2x1ZGUgIlNlc3Npb25JRC5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUg
IlRpbWVSYW5nZXMuaCIKQEAgLTEyMTAsOCArMTIxMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bG9hZFJlc291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29udGVudFR5cGUmIGNvbnRl
bnRUCiAgICAgaWYgKG1fc2VuZFByb2dyZXNzRXZlbnRzKSAKICAgICAgICAgc3RhcnRQcm9ncmVz
c0V2ZW50VGltZXIoKTsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkuc2V0
dGluZ3MoKTsKLSAgICBib29sIHByaXZhdGVNb2RlID0gIXNldHRpbmdzIHx8IHNldHRpbmdzLT5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlTW9kZSA9IGRvY3VtZW50
KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgp
OwogICAgIG1fcGxheWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKIAog
ICAgIC8vIFJlc2V0IGRpc3BsYXkgbW9kZSB0byBmb3JjZSBhIHJlY2FsY3VsYXRpb24gb2Ygd2hh
dCB0byBzaG93IGJlY2F1c2Ugd2UgYXJlIHJlc2V0dGluZyB0aGUgcGxheWVyLgpAQCAtNTEzNiw4
ICs1MTM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZURp
ZENoYW5nZSgpCiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOwotICAgIGJvb2wgcHJpdmF0
ZU1vZGUgPSAhc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsK
KyAgICBib29sIHByaXZhdGVNb2RlID0gZG9jdW1lbnQoKS5wYWdlKCkgJiYgZG9jdW1lbnQoKS5w
YWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoJXMpIiwgYm9vbFN0cmlu
Zyhwcml2YXRlTW9kZSkpOwogICAgIG1fcGxheWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKHBy
aXZhdGVNb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIu
Y3BwCmluZGV4IGU0ZjIyZWUuLjIwNWU4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hp
c3RvcnlDb250cm9sbGVyLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRy
b2xsZXI6OnVwZGF0ZUZvclN0YW5kYXJkTG9hZChIaXN0b3J5VXBkYXRlVHlwZSB1cGRhdGVUeXBl
KQogCiAgICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKTsKIAot
ICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpOworICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKTsKICAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBmcmFtZUxv
YWRlci5kb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAKICAgICBpZiAoIWZyYW1l
TG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkgewpAQCAtMzg1LDcg
KzM4NSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExv
Y2tlZEJhY2tGb3J3YXJkTGlzdCgpCiAgICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rv
cnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlZGlyZWN0IGxvYWQgaW4gZnJhbWUgJXMiLCBtX2Zy
YW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAjZW5kaWYKICAgICAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5zZXR0
aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQcml2YWN5ID0g
bV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgY29uc3QgVVJM
JiBoaXN0b3J5VVJMID0gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51cmxGb3JI
aXN0b3J5KCk7CiAKICAgICBpZiAobV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5p
c0NsaWVudFJlZGlyZWN0KCkpIHsKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpCiAgICAgICAgIG1fY3VycmVudEl0ZW0t
PmNsZWFyU2Nyb2xsUG9pbnQoKTsKICAgICB9CiAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9m
cmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQ
cml2YWN5ID0gbV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAg
Y29uc3QgVVJMJiBoaXN0b3J5VVJMID0gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT51cmxGb3JIaXN0b3J5KCk7CiAKICAgICBpZiAoIWhpc3RvcnlVUkwuaXNFbXB0eSgpICYmICFu
ZWVkUHJpdmFjeSkgewpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQogICAgIGlmIChtX2ZyYW1lLmRvY3Vt
ZW50KCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZnJh
bWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fZnJhbWUu
cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CkBAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBzdGF0ZU9iamVjdCwKIAogICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCkuYWRkSXRlbSh0b3BJ
dGVtLnJlbGVhc2UoKSk7CiAKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFkZFZpc2l0ZWRMaW5rKCpwYWdlLCBV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNlU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHN0YXRlT2JqZQogICAgIG1fY3VycmVudEl0ZW0tPnNldEZvcm1EYXRhKDApOwog
ICAgIG1fY3VycmVudEl0ZW0tPnNldEZvcm1Db250ZW50VHlwZShTdHJpbmcoKSk7CiAKLSAgICBp
ZiAobV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAo
bV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEFTU0VSVChtX2ZyYW1lLnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDc5
ZmJlNGYuLjM2YzBjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgQXBw
bGljYXRpb25DYWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZUZvck1haW5SZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWUKICAgICBpZiAodXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigp
KQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAgICBpZiAoZG9j
dW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5zZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB8fCAhZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUo
ZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKSkpCisgICAgaWYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIChkb2N1bWVu
dExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpIHx8ICFk
b2N1bWVudExvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzQXBwbGljYXRpb25DYWNoZShkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+dHJlZSgpLnRv
cCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICBpZiAoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGNhY2hlU3RvcmFnZSgpLmNh
Y2hlR3JvdXBGb3JVUkwodXJsKSkgewpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcGFzc2Vk
TWFuaWZlc3RVCiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sg
aWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3Mo
KS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCku
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNr
KEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDSEVDS0lOR19FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwog
ICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFUlJPUl9FVkVO
VCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICByZXR1cm47CkBAIC0yMTksNyArMjE5LDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJM
KEZyYW1lKiBmcmFtZSkKICAgICBBU1NFUlQoIWRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLT5hcHBsaWNhdGlvbkNhY2hlKCkpOwogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFu
eXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChm
cmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1l
LT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAo
ZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSB8fCAhZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUt
PnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAgICAgICBw
b3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDSEVDS0lOR19FVkVOVCwgZG9j
dW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFUlJPUl9FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICByZXR1cm47CkBAIC00
MzQsNyArNDM0LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnVwZGF0ZShGcmFtZSog
ZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVPcHRpb24gdXAKICAgICB9CiAKICAgICAvLyBE
b24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJs
ZWQuCi0gICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB8
fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0
aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgeworICAgIGlmIChmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpIHx8
ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRp
b25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkp
KSB7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNFbXB0
eSgpKTsKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0VudHJpZXMuaXNFbXB0eSgpKTsKICAgICAg
ICAgQVNTRVJUKCFtX2NhY2hlQmVpbmdVcGRhdGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDljNjli
ZWYuLmUyNWFkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUhvc3Q6OmFib3J0KCkKIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnRMb2Fk
ZXItPmZyYW1lKCkgJiYgbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS5vZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1bWVudExvYWRlci0+ZnJh
bWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIG1f
ZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0
dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1bWVu
dExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogfQog
CiBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVCbG9ja2VkRm9y
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5kZXggOTNjMWVhNi4uYTE4NWNiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcApAQCAt
MjA0LDcgKzIwNCw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNp
c2lvbihJY29uTG9hZERlY2lzaW9uIGljb25Mb2FkRGVjaXNpb24pCiAgICAgQVNTRVJUKGljb25M
b2FkRGVjaXNpb24gIT0gSWNvbkxvYWRVbmtub3duKTsKIAogICAgIC8vICBGSVhNRSAoPHJkYXI6
Ly9wcm9ibGVtLzkxNjg2MDU+KSAtIFdlIHNob3VsZCBzdXBwb3J0IGluLW1lbW9yeS1vbmx5IHBy
aXZhdGUgYnJvd3NpbmcgaWNvbnMgaW4gYXN5bmNocm9ub3VzIGljb24gZGF0YWJhc2UgbW9kZS4K
LSAgICBpZiAoaWNvbkRhdGFiYXNlKCkuc3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkgJiYgbV9m
cmFtZS5wYWdlKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlm
IChpY29uRGF0YWJhc2UoKS5zdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSAmJiBtX2ZyYW1lLnBh
Z2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGljb25Mb2FkRGVjaXNpb24gPT0gSWNvbkxvYWRObykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5k
ZXggZDFkZjc3Mi4uZDc1YWM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xOTEsNyArMTkxLDcg
QEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAgICAgLCBtX2xhc3RTcGF0
aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudCgwKSAvLyBOT1RFOiBPbmx5IGNhbGxlZCBmcm9t
IEludGVybmFscyBmb3IgU3BhdGlhbCBOYXZpZ2F0aW9uIHRlc3RpbmcuCiAgICAgLCBtX2ZyYW1l
c0hhbmRsaW5nQmVmb3JlVW5sb2FkRXZlbnQoMCkKICAgICAsIG1fdmlzaXRlZExpbmtTdG9yZShz
dGQ6Om1vdmUocGFnZUNsaWVudHMudmlzaXRlZExpbmtTdG9yZSkpCi0gICAgLCBtX3Nlc3Npb25J
RChTZXNzaW9uSUQ6OmVtcHR5U2Vzc2lvbklEKCkpCisgICAgLCBtX3Nlc3Npb25JRChTZXNzaW9u
SUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKIHsKICAgICBBU1NFUlQobV9lZGl0b3JDbGllbnQpOwog
CkBAIC0xMDc4LDE5ICsxMDc4LDEyIEBAIHZvaWQgUGFnZTo6c3RvcmFnZUJsb2NraW5nU3RhdGVD
aGFuZ2VkKCkKICAgICAgICAgdmlld3NbaV0tPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgp
OwogfQogCi12b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpCit2b2lkIFBh
Z2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpCiB7Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gbV9zZXR0aW5ncy0+cHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIC8vIERvbid0IGFsbG93IGNoYW5naW5nIHRoZSBw
cml2YXRlIGJyb3dzaW5nIHN0YXRlIGlmIHdlIGhhdmUgc2V0IGEgc2Vzc2lvbiBJRC4KKyAgICBB
U1NFUlQobV9zZXNzaW9uSUQgPT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkgfHwgbV9z
ZXNzaW9uSUQgPT0gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogCi0gICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wcml2YXRl
QnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpOwotCi0gICAgLy8gQ29sbGVjdCB0aGUgUGx1Z2luVmll
d3MgaW4gdG8gYSB2ZWN0b3IgdG8gZW5zdXJlIHRoYXQgYWN0aW9uIHRoZSBwbHVnLWluIHRha2Vz
Ci0gICAgLy8gZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgZG9lcyBub3Qg
YWZmZWN0IHRoZWlyIGxpZmV0aW1lLgotICAgIGF1dG8gdmlld3MgPSBwbHVnaW5WaWV3cygpOwot
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpZXdzLnNpemUoKTsgKytpKQotICAgICAg
ICB2aWV3c1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpOworICAgIHNldFNlc3Npb25JRChwcml2YXRlQnJvd3NpbmdFbmFibGVkID8gU2Vzc2lv
bklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9u
SUQoKSk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0xNTEyLDE5ICsxNTA1LDI3IEBA
IFZpc2l0ZWRMaW5rU3RvcmUmIFBhZ2U6OnZpc2l0ZWRMaW5rU3RvcmUoKQogCiBTZXNzaW9uSUQg
UGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZXNzaW9uSUQuaXNWYWxpZCgp
KQotICAgICAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CisgICAgQVNTRVJUKG1fc2Vzc2lvbklELmlz
VmFsaWQoKSk7CiAKLSAgICBpZiAoc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkp
Ci0gICAgICAgIHJldHVybiBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKTsKLQot
ICAgIHJldHVybiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICByZXR1cm4gbV9z
ZXNzaW9uSUQ7CiB9CiAKIHZvaWQgUGFnZTo6c2V0U2Vzc2lvbklEKFNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwotICAgIG1fc2Vzc2lvbklE
ID0gc2Vzc2lvbklEOworICAgIGlmIChzZXNzaW9uSUQgIT0gbV9zZXNzaW9uSUQpIHsKKyAgICAg
ICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisKKyAgICAgICAgZm9yIChGcmFtZSogZnJhbWUg
PSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0
KCkpCisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVE
aWRDaGFuZ2UoKTsKKworICAgICAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBh
IHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKKyAgICAgICAg
Ly8gZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgZG9lcyBub3QgYWZmZWN0
IHRoZWlyIGxpZmV0aW1lLgorICAgICAgICBhdXRvIHZpZXdzID0gcGx1Z2luVmlld3MoKTsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmlld3Muc2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICB2aWV3c1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKTsKKyAgICB9CiB9CiAKIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCmluZGV4IGZmMjA2YTUuLmFjYzBkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBA
IC0zMTEsNyArMzExLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkbnNQcmVmZXRjaGluZ1N0YXRl
Q2hhbmdlZCgpOwogICAgIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7Ci0gICAg
dm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICB2b2lkIHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogCiAgICAgdm9p
ZCBzZXREZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CiAgICAgSlNDOjpEZWJ1Z2dlciogZGVidWdn
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CkBAIC00MDgsNyArNDA4LDYgQEAgcHVi
bGljOgogCiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Vz
c2lvbklEKFNlc3Npb25JRCk7Ci0gICAgYm9vbCBpc1Nlc3Npb25JRFNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Vzc2lvbklELmlzVmFsaWQoKTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgaW5pdEdy
b3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4IDQ3YjliYTAuLjQ3OTM2
ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAg
dm9pZCBQYWdlQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2Fn
ZUxldmVsIGxldmVsLCBjb25zdCBTdHIKICAgICBpZiAoc291cmNlID09IE1lc3NhZ2VTb3VyY2U6
OkNTUykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0aW5ncygpLnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5h
ZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgdXJsKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFBhZ2VDb25zb2xlOjpt
ZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsCiAgICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNT
dHJpbmcobWVzc2FnZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdl
VG9Db25zb2xlKCZtX3BhZ2UsIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVs
LCBtZXNzYWdlLCBleGVjLCBhcmd1bWVudHMpOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0aW5ncygp
LnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnNlc3Npb25JRCgpLmlz
RXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChnb3RNZXNzYWdlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDdmY2NhYzAuLjczYTViZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCkBAIC0xNzEsNyArMTcxLDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBh
Z2UqIHBhZ2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzSmF2YUVu
YWJsZWRGb3JMb2NhbEZpbGVzKHRydWUpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eShmYWxzZSkKLSAgICAsIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1f
YXJlSW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hcmVQbHVnaW5zRW5hYmxlZChmYWxzZSkK
ICAgICAsIG1faXNTY3JpcHRFbmFibGVkKGZhbHNlKQpAQCAtNDI5LDExICs0MjgsNyBAQCB2b2lk
IFNldHRpbmdzOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGFyZVBsdWdpbnNFbmFibGVkKQogCiB2
b2lkIFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID09IHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Ci0gICAgbV9wYWdlLT5wcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRl
Q2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0
VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggZjMyNzM4Yi4uMjdhZDhjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaApAQCAtMTQ2LDcgKzE0Niw2IEBAIHB1YmxpYzoKICAgICAvLyAgLSBIVFRQIENv
b2tpZXMKICAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRlTW9kZUJv
b2wpCiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwotICAgIGJvb2wg
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZDsgfQogCiAgICAgdm9pZCBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCk7CiAg
ICAgYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Ruc1ByZWZl
dGNoaW5nRW5hYmxlZDsgfQpAQCAtMzAxLDcgKzMwMCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzSmF2YUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxl
cyA6IDE7CiAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7Ci0gICAgYm9v
bCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hcmVJbWFnZXNFbmFi
bGVkIDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9p
c1NjcmlwdEVuYWJsZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5k
ZXggYTdlZTUzMi4uOTY3MzJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3Bw
CkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZh
cmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgUGFnZSogcGFnZSA9IG1fcGFy
ZW50RnJhbWUtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgcmV0dXJu
IE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFnZS0+
c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgICAgICooKE5QQm9vbCop
dmFsdWUpID0gcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKICAgICAgICAgcmV0dXJu
IE5QRVJSX05PX0VSUk9SOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggYzFiMjM3Yy4uNjA2MmI5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBAIC04NSw3ICs4NSw3
IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCgpCiAgICAgaWYgKHZh
bHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGZyYW1lKCkuc2V0dGlu
Z3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkucGFnZSgpLT5z
ZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgc2l6
ZSA9IHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggYzQ4NGI5Ni4uODY0NzU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL1N0b3JhZ2UuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBTdG9yYWdlOjpjb250YWlu
cyhjb25zdCBTdHJpbmcmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAKIGJvb2wgU3Rv
cmFnZTo6aXNEaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QKIHsKLSAgICBpZiAoIW1f
ZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAg
aWYgKCFtX2ZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5zdG9yYWdlVHlwZSgpID09
IExvY2FsU3RvcmFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGVmMTA5Y2QuLmJhMmM2NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sg
IDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRo
IHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRv
IHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSB3aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBl
d2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxNC0w
My0xMiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBSZW1vdmUgdW51c2VkIGNhbGxJZCBwYXJhbWV0ZXIgZnJvbSBldmFsdWF0ZUluV2ViSW5z
cGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA5OTk3MGVjLi41MzYxMGY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Vzc2lvbklELmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIK
ICNpbmNsdWRlICJUaWxlZEJhY2tpbmdTdG9yZS5oIgpAQCAtODAwLDcgKzgwMSw3IEBAIHN0YXRp
YyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEpCiAjZW5kaWYKICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2Fu
QWNjZXNzQ2xpcGJvYXJkID0gcGFnZVNldHRpbmdzLmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQoKSAmJiBwYWdlU2V0dGluZ3MuRE9NUGFzdGVBbGxvd2VkKCk7CiAgICAgcHJpdi0+c2V0dGlu
Z3MucmVzaXphYmxlVGV4dGFyZWFzID0gcGFnZVNldHRpbmdzLnRleHRBcmVhc0FyZVJlc2l6YWJs
ZSgpOwotICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVCcm93c2luZyA9IHBhZ2VTZXR0aW5ncy5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dz
aW5nID0gcHJpdi0+cGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKICAgICBwcml2LT5z
ZXR0aW5ncy5jYXJldEJyb3dzaW5nID0gcGFnZVNldHRpbmdzLmNhcmV0QnJvd3NpbmdFbmFibGVk
KCk7CiAgICAgcHJpdi0+c2V0dGluZ3Muc3BhdGlhbE5hdmlnYXRpb24gPSBwYWdlU2V0dGluZ3Mu
c3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKCk7CiAgICAgcHJpdi0+c2V0dGluZ3MubG9jYWxTdG9y
YWdlID0gcGFnZVNldHRpbmdzLmxvY2FsU3RvcmFnZUVuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpp
bmRleCAzYjMyMWQxLi4zZTg2ODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVu
aWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5
IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBsYWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRp
bmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgd2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorCiAyMDE0LTAzLTEyICBCcmlhbiBCdXJn
ICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSB1bnVz
ZWQgY2FsbElkIHBhcmFtZXRlciBmcm9tIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcAppbmRleCBiYTc2ZGMzLi5iN2U2ZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC0y
NTgsNyArMjU4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW0KIAogCiAgICAgQ3JlZGVudGlh
bFN0b3JhZ2VNb2RlIGNyZWRlbnRpYWxTdG9yYWdlTW9kZTsKLSAgICBpZiAoY29yZSh2aWV3KS0+
c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGNvcmUodmlldykt
PnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIGNyZWRlbnRpYWxTdG9yYWdlTW9k
ZSA9IERpc2FsbG93UGVyc2lzdGVudFN0b3JhZ2U7CiAgICAgZWxzZQogICAgICAgICBjcmVkZW50
aWFsU3RvcmFnZU1vZGUgPSBBbGxvd1BlcnNpc3RlbnRTdG9yYWdlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IDc0NDY1NGQuLjFhMjk2ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5p
ZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkg
b2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGlu
Z3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5
SXRlbUZvclBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW06CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdl
U2Vzc2lvbik6CisKIDIwMTQtMDMtMTMgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29t
PgogCiAgICAgICAgIFdlYmtpdCBub3QgYnVpbGRpbmcgb24gWENvZGUgNS4xIGR1ZSB0byBnYXJi
YWdlIGNvbGxlY3Rpb24gbm8gbG9uZ2VyIGJlaW5nIHN1cHBvcnRlZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpp
bmRleCBmYTU3NjVhLi5iNzVkMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTEyMCw3ICsxMTIw
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1G
b3JQYWdlKCkKICAgICBIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0gPSAwOwogCiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5wYWdlKCkpIHsKLSAgICAgICAgaWYg
KCFwYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgaWYg
KCFwYWdlLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICAgICAgaGlzdG9yeUl0
ZW0gPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmN1cnJlbnRJdGVtKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbQppbmRleCAwZGI0ZjgwLi43MWFjZTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW0KQEAgLTExMyw3ICsxMTMsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJh
bWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4g
KnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAyNzRhYTRhLi4zMmUw
NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDMtMTEgIE1hcnRp
biBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Np
bmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hh
bmdlcyB0byByZXBsYWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkgd2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAo
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisKIDIw
MTQtMDMtMTIgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogUmVtb3ZlIHVudXNlZCBjYWxsSWQgcGFyYW1ldGVyIGZyb20gZXZhbHVhdGVJbldl
Ykluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDI4NDdiNTMuLjY4NmUzZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTgwMyw3ICs4MDMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKQogICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IHdlYlZp
ZXctPnBhZ2UoKSkgewotICAgICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpKQorICAgICAgICBpZiAoIXBhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFs
KCkpCiAgICAgICAgICAgICBoaXN0b3J5SXRlbSA9IHBhZ2UtPmJhY2tGb3J3YXJkKCkuY3VycmVu
dEl0ZW0oKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggYmY1OWVl
Ny4uNTAxMGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTExNCw3ICsxMTQs
NyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICBy
ZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCA5ZDRhOGUxLi5jZGIyZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAK
KzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVu
aWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOiBDaGFuZ2UgdG8gcmVmZXJlbmNlIGNvdW50ZWQgc2Vzc2lvbi4KKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphZGRTZXNzaW9uUmVmZXJlbmNlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlbW92ZVNlc3Npb25SZWZlcmVuY2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaDogUmVtb3ZlIGNvZGUgc2luY2UgU2Vzc2lvblRy
YWNrZXIgaW1wbGVtZW50cyBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gY3JlYXRpb24uCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOiBEaXR0
by4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
U291cC5jcHA6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDogUmVtb3ZlIHByaXZhdGUgYnJvd3NpbmcgcGFyYW1ldGVy
LCBzaW5jZSBzZXNzaW9ucyBpbXBsZW1lbnQgdGhlIGZ1bmN0aW9uYWxpdHkgd2l0aG91dCBhIGds
b2JhbCBzZXR0aW5nLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNr
ZXIuY3BwOiBSZWZlcmVuY2UgY291bnQgc2Vzc2lvbnMgbWFudWFsbHkgKG5lZWRlZCBkdWUgdG8g
Y3Jvc3MtcHJvY2VzcyByZWZlcmVuY2VzKS4KKyAgICAgICAgKFdlYktpdDo6c3RhdGljU2Vzc2lv
bkNvdW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6OlNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9u
UmVmZXJlbmNlKToKKyAgICAgICAgKiBTaGFyZWQvU2Vzc2lvblRyYWNrZXIuaDogRGl0dG8uCisg
ICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDogQ2hhbmdlIFByaXZhdGVCcm93
c2luZ0VuYWJsZWQgdG8gTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6IERpdHRvLgorICAgICAgICAoV0tQcmVm
ZXJlbmNlc1NldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoV0tQcmVmZXJlbmNl
c0dldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9t
YWMvV0tQYWdlUHJpdmF0ZU1hYy5jcHA6CisgICAgICAgIChXS1BhZ2VJc1VSTEtub3duSFNUU0hv
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOiBNZWNoYW5p
Y2FsbHkgY2hhbmdlIFNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgdG8gUGFnZTo6
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcml2YXRl
QnJvd3NpbmdFbmFibGVkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3Mu
Y3BwOiBEaXR0by4KKyAgICAgICAgKGV3a19zZXR0aW5nc19wcml2YXRlX2Jyb3dzaW5nX2VuYWJs
ZWRfc2V0KToKKyAgICAgICAgKGV3a19zZXR0aW5nc19wcml2YXRlX2Jyb3dzaW5nX2VuYWJsZWRf
Z2V0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHA6IERp
dHRvLgorICAgICAgICAod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2lu
Zyk6CisgICAgICAgICh3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dzaW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6IENoYW5nZSB0byByZWZlcmVu
Y2UgY291bnRlZCBzZXNzaW9ucy4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp3aW5kb3dTZXJ2
ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6
aW5jcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpkZWNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OnNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZXh0OjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29u
dGV4dDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFueVBhZ2VzQXJlVXNpbmdQcml2
YXRlQnJvd3NpbmcpOiBJbXBsZW1lbnQgdXNpbmcgcmVmZXJlbmNlIGNvdW50LgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
V2ViSWNvbkRhdGFiYXNlOjpzZXREYXRhYmFzZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eSk6IERvbid0IHNlbmQgbWVzc2FnZSB0byBXZWJQYWdlIHByb2Nlc3MgdGhhdCBkb2Vzbid0
IHlldCBleGlzdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5
KTogQ2xlYW4gdXAgc2Vzc2lvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRT
ZXNzaW9uSW1wbCk6IFRyYWNrIHJlZmVyZW5jZSBjb3VudCBhbmQgb3B0aW9uYWxseSBzZW5kIG1l
c3NhZ2UgdG8gV2ViUGFnZSBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnNldFNlc3Npb24pOiBTZW5kIG1lc3NhZ2UgdG8gV2ViUGFnZSBwcm9jZXNzLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKTogU2V0IHNlc3Npb24g
YmFzZWQgb24gbGVnYWN5IHByaXZhdGUgYnJvd3NpbmcgcHJlZmVyZW5jZS4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVu
Y2VzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmFkZFBhZ2UpOiBTZXNz
aW9uIGtlZXBzIHRyYWNrIG9mIHJlZmVyZW5jZSBjb3VudC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJlZmVyZW5jZXM6OnJlbW92ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcmVmZXJlbmNl
czo6dXBkYXRlQm9vbFZhbHVlRm9yS2V5KTogQ2hhbmdlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQg
dG8gbGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJl
ZmVyZW5jZXM6OnVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOiBSZWZlcmVuY2UgY291bnQgc2Vzc2lvbi4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6IE1lY2hhbmljYWxs
eSBjaGFuZ2UgU2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdlOjpzZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppc1By
aXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDogUmVtb3ZlIGNvZGUgc2luY2UgU2Vz
c2lvblRyYWNrZXIgaW1wbGVtZW50cyBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24gY3JlYXRpb24u
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6IFNldCBzZXNzaW9uIHRvIGxlZ2FjeSBwcml2YXRlIHNl
c3Npb24gaWYgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlc3Npb25JRCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDogUmVtb3ZlIGVuc3VyZS9kZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbiBhcyBQYWdlIHJlZmVyZW5jZSBjb3VudHMgaXRzIHNlc3Npb25zLgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6IE1ha2Ugc3VyZSBpZGVu
dGlmaWVyIGJhc2UgaXMgc2V0LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxNC0wMy0x
MyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gQ2xvc2UgdGhlIGNvbm5lY3Rpb24gd2hlbiB3ZSBmYWlsIHRvIHJlYWQgZnJvbSB0aGUg
c29ja2V0IGZvciBhbnkgdW5oYW5kbGVkIGVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNGI4NDBmNC4uNTU0Y2I0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMTY2LDEwICsxNjYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29y
a1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAgIFNlc3Npb25U
cmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50
aWZpZXIpOwogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBoYW5kbGluZyB0aGlz
IGhlcmUsIGEgbWVzc2FnZSBzaG91bGQgYmUgc2VudCBsYXRlciAoc2NhbGVzIHRvIG11bHRpcGxl
IHNlc3Npb25zKQotICAgIGlmIChwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0g
ICAgICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKLQogICAgIGlmIChwYXJh
bWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAKQEAgLTIxOSwxNCAr
MjE1LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjphZGRTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lv
bklEKTsKKyAgICBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShzZXNzaW9uSUQp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlU2Vzc2lv
blJlZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIFNlc3Npb25UcmFja2VyOjpk
ZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOworICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNz
aW9uUmVmZXJlbmNlKHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25s
b2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAppbmRleCBjN2MzYWVkLi40YzZiNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mo
Y29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGNyZWF0
ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBlbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgYWRkU2Vz
c2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lv
blJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0
KHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZvaWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBz
ZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5OTQ0OS4uMDk5
NGE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXND
aGFuZ2VkKFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKICNlbmRpZgogCi0gICAgRW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERl
c3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQp
CisgICAgQWRkU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
ICAgIFJlbW92ZVNlc3Npb25SZWZlcmVuY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IAogICAgIERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9h
ZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgKaW5kZXggZjVjY2NjMS4uZWJiN2Y2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5o
CkBAIC00MCw5ICs0MCw2IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0
d29ya2luZ0NvbnRleHQoKTsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lm
aWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLQogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMmE3YzU5NC4uMjZk
ODhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNzcsMTUgKzc3LDQgQEAgUmVzb3Vy
Y2VFcnJvciBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWUKICAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkRXJyb3IocmVxdWVz
dCk7CiB9CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NFUlQoc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Np
b25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6Omdl
dElkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNz
aW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpICsgJy4nICsgU3Ry
aW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSkpOwotfQotCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0U291cC5jcHAKaW5kZXggM2JlOWRiYy4uM2UyN2NlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcApAQCAtNDYsMTEgKzQ2LDYgQEAgYm9vbCBSZW1v
dGVOZXR3b3JraW5nQ29udGV4dDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQot
CiBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
aW5kZXggMTQxYmE3YS4uNmJjZWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcApAQCAtMzgsNyArMzgsNiBAQCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGVu
Y29kZXIuZW5jb2RlRW51bShjYWNoZU1vZGVsKTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURp
cmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKQEAgLTY1LDggKzY0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb24KIAogYm9vbCBOZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcmVzdWx0KQogewot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByaXZhdGVCcm93c2luZ0VuYWJsZWQpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0
LmNhY2hlTW9kZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuZGlza0NhY2hlRGlyZWN0b3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IDU4YWNiMzkuLmRhZDExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaApAQCAtNTAsNyArNTAsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgewogICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7
CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZDsKICAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWw7CiAKICAgICBTdHJpbmcgZGlza0NhY2hl
RGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKaW5kZXgg
YmRjZmZiOS4uNjBmNGFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Np
b25UcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIu
Y3BwCkBAIC00MSw2ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5p
cXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc3RhdGljU2Vzc2lvbgogICAgIHJldHVy
biBtYXAuZ2V0KCk7CiB9CiAKK3N0YXRpYyBIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+JiBz
dGF0aWNTZXNzaW9uQ291bnRlcigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+
PiBtYXA7CisgICAgcmV0dXJuIG1hcC5nZXQoKTsKK30KKwogc3RhdGljIEhhc2hNYXA8Y29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiwgU2Vzc2lvbklEPiYgc3RvcmFnZVNlc3Npb25Ub0lEKCkK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtODEsMjAgKzg5LDQxIEBAIFNl
c3Npb25JRCBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklEKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbikKICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb25Ub0lEKCkuZ2V0KCZzZXNz
aW9uKTsKIH0KIAotdm9pZCBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNzaW9uKQor
dm9pZCBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lv
bklEKQogewotICAgIEFTU0VSVChzZXNzaW9uSUQgIT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBBU1NFUlQoc2Vz
c2lvbklELmlzRXBoZW1lcmFsKCkpOworCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9u
KHNlc3Npb25JRCkpIHsKKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lv
bklELCBzdGF0aWNTZXNzaW9uQ291bnRlcigpLmdldChzZXNzaW9uSUQpICsgMSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIVNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlm
aWVyQmFzZSgpLmlzTnVsbCgpKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+IHNlc3Npb24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCkgKyAnLicg
KyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKTsKICAgICBzdG9yYWdlU2Vz
c2lvblRvSUQoKS5zZXQoc2Vzc2lvbi5nZXQoKSwgc2Vzc2lvbklEKTsKICAgICBzdGF0aWNTZXNz
aW9uTWFwKCkuc2V0KHNlc3Npb25JRCwgc3RkOjptb3ZlKHNlc3Npb24pKTsKKyAgICBzdGF0aWNT
ZXNzaW9uQ291bnRlcigpLnNldChzZXNzaW9uSUQsIDEpOwogfQogCi12b2lkIFNlc3Npb25UcmFj
a2VyOjpkZXN0cm95U2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBTZXNzaW9uVHJh
Y2tlcjo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYgKHN0YXRpY1Nlc3Npb25NYXAoKS5j
b250YWlucyhzZXNzaW9uSUQpKSB7CisKKyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFs
KCkpOworCisgICAgQVNTRVJUKHN0YXRpY1Nlc3Npb25NYXAoKS5jb250YWlucyhzZXNzaW9uSUQp
KTsKKworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSBzdGF0aWNTZXNzaW9uQ291bnRlcigpLmdldChz
ZXNzaW9uSUQpOworCisgICAgaWYgKGNvdW50ZXIgPT0gMSkgewogICAgICAgICBzdG9yYWdlU2Vz
c2lvblRvSUQoKS5yZW1vdmUoc2Vzc2lvbihzZXNzaW9uSUQpKTsKICAgICAgICAgc3RhdGljU2Vz
c2lvbk1hcCgpLnJlbW92ZShzZXNzaW9uSUQpOwotICAgIH0KKyAgICAgICAgc3RhdGljU2Vzc2lv
bkNvdW50ZXIoKS5yZW1vdmUoc2Vzc2lvbklEKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3RhdGlj
U2Vzc2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lvbklELCBjb3VudGVyIC0gMSk7CiB9CiAKIHZvaWQg
U2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKaW5kZXggMGIwMzAyOS4uYTJj
ODliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKQEAgLTQyLDggKzQy
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGdldElkZW50aWZpZXJCYXNl
KCk7CiAgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc2Vzc2lvbihX
ZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHN0YXRpYyBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpOwotICAgIHN0YXRpYyB2
b2lkIHNldFNlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPik7Ci0gICAgc3RhdGljIHZvaWQgZGVzdHJveVNlc3Np
b24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICBzdGF0aWMgdm9pZCBhZGRTZXNzaW9uUmVmZXJl
bmNlKFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlU2Vzc2lvblJl
ZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHN0YXRpYyB2b2lkIHNldElkZW50aWZp
ZXJCYXNlKGNvbnN0IFN0cmluZyYpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggYzc5ZGE4My4uYmI2ZjE1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBAIC0xMTMsNyArMTEzLDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oRnJhbWVGbGF0dGVuaW5nRW5hYmxlZCwgZnJhbWVG
bGF0dGVuaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgREVGQVVMVF9GUkFNRV9GTEFUVEVOSU5HX0VO
QUJMRUQpIFwKICAgICBtYWNybyhEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBkZXZlbG9wZXJFeHRy
YXNFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKEphdmFTY3JpcHRFeHBl
cmltZW50c0VuYWJsZWQsIGphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIEJvb2wsIGJvb2ws
IGZhbHNlKSBcCi0gICAgbWFjcm8oUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKKyAgICBtYWNybyhMZWdhY3lQcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBCb29sLCBib29s
LCBmYWxzZSkgXAogICAgIG1hY3JvKFRleHRBcmVhc0FyZVJlc2l6YWJsZSwgdGV4dEFyZWFzQXJl
UmVzaXphYmxlLCBCb29sLCBib29sLCBERUZBVUxUX1RFWFRfQVJFQVNfQVJFX1JFU0laQUJMRSkg
XAogICAgIG1hY3JvKEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHksIGphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHksIEJvb2wsIGJvb2wsIERFRkFVTFRfSkFW
QVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJQ0FMTFkpIFwKICAgICBtYWNybyhIeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQsIGh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCwgQm9vbCwgYm9v
bCwgdHJ1ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuY3BwCmluZGV4IGE2NTBlN2MuLjUwOGEyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTM0MSwxMiArMzQxLDEyIEBA
IFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5jZXNDb3B5RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlCiAKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFi
bGVkKQogewotICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoZW5hYmxlZCk7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0TGVnYWN5UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQog
ewotICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCk7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmxlZ2FjeVByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKTsKIH0KIAogdm9pZCBXS1ByZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVBy
aXZhdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQ
cml2YXRlTWFjLmNwcAppbmRleCA2YTlkY2E0Li5iZTNmMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgcGlkX3QgV0tQYWdlR2V0UHJvY2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVm
IHBhZ2VSZWYpCiBib29sIFdLUGFnZUlzVVJMS25vd25IU1RTSG9zdChXS1BhZ2VSZWYgcGFnZSwg
V0tVUkxSZWYgdXJsKQogewogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5ID0gdG9JbXBs
KHBhZ2UpOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHdlYlBhZ2VQcm94eS0+
cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gd2ViUGFnZVByb3h5LT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpOwogCiAgICAgcmV0dXJuIHdlYlBhZ2VQcm94eS0+cHJvY2VzcygpLmNvbnRl
eHQoKS5pc1VSTEtub3duSFNUU0hvc3QodG9JbXBsKHVybCktPnN0cmluZygpLCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggZjEwYmYwNi4uN2RkNDQwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTg1MiwxMiArODUyLDEy
IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOU0RhdGEodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQq
IGRhdGEpCiAKIC0gKEJPT0wpX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQKIHsKLSAgICByZXR1cm4g
W19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCk7CisgICAgcmV0dXJuIFtfY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10tPl9w
cmVmZXJlbmNlcy0+bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiAtICh2b2lk
KV9zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkOihCT09MKXByaXZhdGVCcm93c2luZ0VuYWJsZWQK
IHsKLSAgICBbX2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMtPnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisgICAgW19jb25m
aWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVuY2VzLT5zZXRMZWdhY3lQcml2YXRlQnJv
d3NpbmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogfQogCiBzdGF0aWMgaW5saW5l
IFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcyhfV0tSZW5kZXJpbmdQ
cm9ncmVzc0V2ZW50cyBldmVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfc2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3NldHRpbmdzLmNwcAppbmRleCAxZWRhNjc2Li43NGFmMGU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAKQEAgLTI5
NCw3ICsyOTQsNyBAQCBFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX3ByaXZhdGVfYnJvd3NpbmdfZW5h
YmxlZF9zZXQoRXdrX1NldHRpbmdzKiBzZXR0aW5ncywgRWluYQogewogICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzZXR0aW5ncywgZmFsc2UpOwogCi0gICAgc2V0dGluZ3MtPnBy
ZWZlcmVuY2VzKCkuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGUpOworICAgIHNldHRp
bmdzLT5wcmVmZXJlbmNlcygpLnNldExlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxl
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzAzLDcgKzMwMyw3IEBAIEVpbmFfQm9vbCBl
d2tfc2V0dGluZ3NfcHJpdmF0ZV9icm93c2luZ19lbmFibGVkX2dldChjb25zdCBFd2tfU2V0dGlu
Z3MqIHNldHRpbmdzCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNldHRp
bmdzLCBmYWxzZSk7CiAKLSAgICByZXR1cm4gc2V0dGluZ3MtPnByZWZlcmVuY2VzKCkucHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJlZmVyZW5jZXMoKS5s
ZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfc2V0dGlu
Z3NfdGV4dF9hdXRvc2l6aW5nX2VuYWJsZWRfc2V0KEV3a19TZXR0aW5ncyogc2V0dGluZ3MsIEVp
bmFfQm9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggZmFlY2FmNi4uNDRiMmY3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmNwcApAQCAt
MjA5Myw3ICsyMDkzLDcgQEAgZ2Jvb2xlYW4gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJp
dmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSwgRkFMU0UpOwogCi0gICAg
cmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKTsKIH0KIAogLyoqCkBAIC0yMTA4LDExICsyMTA4LDExIEBAIHZv
aWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyhXZWJLaXRTZXR0
aW5ncyogc2V0dGluZ3MsIGdib29sCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfU0VU
VElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNl
dHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZhbHVlID0gcHJpdi0+cHJlZmVyZW5jZXMt
PnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHByaXYt
PnByZWZlcmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgaWYgKGN1
cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5wcmVm
ZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGVkKTsKKyAgICBwcml2LT5w
cmVmZXJlbmNlcy0+c2V0TGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGVkKTsKICAg
ICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXByaXZhdGUtYnJv
d3NpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4
IDIxMTcwNDQuLmFlMDFkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKQEAgLTM4Myw4ICszODMsNiBAQCB2b2lkIFdlYkNvbnRleHQ6OmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCkKIAogICAgIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnM7
CiAKLSAgICBwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBXZWJQcmVmZXJlbmNl
czo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpOwotCiAgICAgcGFyYW1ldGVycy5j
YWNoZU1vZGVsID0gbV9jYWNoZU1vZGVsOwogCiAgICAgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJl
Y3RvcnkgPSBkaXNrQ2FjaGVEaXJlY3RvcnkoKTsKQEAgLTQ1OSw0NCArNDU3LDMwIEBAIHZvaWQg
V2ViQ29udGV4dDo6Z2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJvCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJDb250ZXh0Ojp3aWxsU3Rh
cnRVc2luZ1ByaXZhdGVCcm93c2luZygpCit2b2lkIFdlYkNvbnRleHQ6OndpbmRvd1NlcnZlckNv
bm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQogewotICAgIGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0Kj4m
IGNvbnRleHRzID0gYWxsQ29udGV4dHMoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMCwgY291bnQg
PSBjb250ZXh0cy5zaXplKCk7IGkgPCBjb3VudDsgKytpKQotICAgICAgICBjb250ZXh0c1tpXS0+
c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKyAg
ICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9wcm9jZXNzZXMuc2l6ZSgpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpCisgICAgICAgIG1fcHJvY2Vzc2VzW2ld
LT53aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgV2ViQ29u
dGV4dDo6d2lsbFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygpCit2b2lkIFdlYkNvbnRleHQ6Omlu
Y3JlbWVudFByaXZhdGVCcm93c2luZ0NvdW50KCkKIHsKLSAgICBjb25zdCBWZWN0b3I8V2ViQ29u
dGV4dCo+JiBjb250ZXh0cyA9IGFsbENvbnRleHRzKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDAs
IGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkKLSAgICAgICAgY29udGV4
dHNbaV0tPnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFs
c2UpOworICAgIGlmICghbV9wcml2YXRlQnJvd3NpbmdDb3VudCkKKyAgICAgICAgc29tZVBhZ2VJ
c1ByaXZhdGVCcm93c2luZyh0cnVlKTsKKyAgICBtX3ByaXZhdGVCcm93c2luZ0NvdW50Kys7CiB9
CiAKLXZvaWQgV2ViQ29udGV4dDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgp
Cit2b2lkIFdlYkNvbnRleHQ6OmRlY3JlbWVudFByaXZhdGVCcm93c2luZ0NvdW50KCkKIHsKLSAg
ICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9wcm9jZXNzZXMuc2l6ZSgpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvY2Vzc0NvdW50OyArK2kpCi0gICAgICAgIG1fcHJvY2Vzc2VzW2ld
LT53aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7CisgICAgbV9wcml2YXRlQnJv
d3NpbmdDb3VudC0tOworICAgIGlmICghbV9wcml2YXRlQnJvd3NpbmdDb3VudCkKKyAgICAgICAg
c29tZVBhZ2VJc1ByaXZhdGVCcm93c2luZyhmYWxzZSk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6
c2V0QW55UGFnZUdyb3VwTWlnaHRIYXZlUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCit2b2lkIFdlYkNvbnRleHQ6OnNvbWVQYWdlSXNQcml2YXRlQnJv
d3NpbmcoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIG1faWNvbkRhdGFiYXNl
LT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwotCi0j
aWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAgICBpZiAodXNlc05ldHdvcmtQcm9jZXNzKCkg
JiYgbmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCkKLSAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCgpKSwgMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG5ldHdvcmtQ
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZXN0cm95UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOwot
ICAgIH0KLSNlbmRpZiAvLyBFTkFCTEVEKE5FVFdPUktfUFJPQ0VTUykKLQotICAgIGlmIChwcml2
YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKCkpKTsKLSAgICBlbHNlCi0gICAgICAgIHNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
U2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpKTsKIH0KIAogdm9pZCAoKnNfaW52
YWxpZE1lc3NhZ2VDYWxsYmFjaykoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUpOwpAQCAtNjI1LDkg
KzYwOSw2IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vz
cygpCiAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UU9TKHdlYlBy
b2Nlc3NMYXRlbmN5UU9TKCksIHdlYlByb2Nlc3NUaHJvdWdocHV0UU9TKCkpLCAwKTsKICNlbmRp
ZgogCi0gICAgaWYgKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dz
aW5nKCkpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
KCkpLCAwKTsKLQogICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKIAogICAgIGlmICht
X3Byb2Nlc3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7CkBA
IC03NzcsOCArNzU4LDYgQEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYkNvbnRleHQ6OmNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUGEKICAgICAgICAgY29uZmln
dXJhdGlvbi5wcmVmZXJlbmNlcyA9ICZjb25maWd1cmF0aW9uLnBhZ2VHcm91cC0+cHJlZmVyZW5j
ZXMoKTsKICAgICBpZiAoIWNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtQcm92aWRlcikKICAgICAg
ICAgY29uZmlndXJhdGlvbi52aXNpdGVkTGlua1Byb3ZpZGVyID0gbV92aXNpdGVkTGlua1Byb3Zp
ZGVyLmdldCgpOwotICAgIGlmICghY29uZmlndXJhdGlvbi5zZXNzaW9uKQotICAgICAgICBjb25m
aWd1cmF0aW9uLnNlc3Npb24gPSBjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzLT5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkgPyAmQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpIDog
JkFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKTsKIAogICAgIFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IHByb2Nlc3M7CiAgICAgaWYgKG1fcHJvY2Vzc01vZGVsID09IFByb2Nlc3NNb2RlbFNo
YXJlZFNlY29uZGFyeVByb2Nlc3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CmluZGV4IDQyYjUwYWIuLjMxYTBhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaApAQCAtMzA0LDkgKzMwNCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2luZG93U2VydmVy
Q29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwogCi0gICAgc3RhdGljIHZvaWQgd2lsbFN0YXJ0VXNp
bmdQcml2YXRlQnJvd3NpbmcoKTsKLSAgICBzdGF0aWMgdm9pZCB3aWxsU3RvcFVzaW5nUHJpdmF0
ZUJyb3dzaW5nKCk7Ci0KICAgICBzdGF0aWMgYm9vbCBpc0VwaGVtZXJhbFNlc3Npb24oV2ViQ29y
ZTo6U2Vzc2lvbklEKTsKIAogI2lmIFVTRShTT1VQKQpAQCAtMzM3LDYgKzMzNCwxMSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldE1lbW9yeUNhY2hlRGlzYWJsZWQoYm9vbCk7CiAKKyAgICB2b2lk
IGluY3JlbWVudFByaXZhdGVCcm93c2luZ0NvdW50KCk7CisgICAgdm9pZCBkZWNyZW1lbnRQcml2
YXRlQnJvd3NpbmdDb3VudCgpOworCisgICAgYm9vbCBhbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJy
b3dzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlQnJvd3NpbmdDb3VudCA+IDA7IH0KKwog
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC00MTgsNyArNDIw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2goY29u
c3QgU3RyaW5nJiBwYWdlT3JpZ2luLCB1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoKTsKICAgICB2
b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2lu
SGFzaCk7CiAKLSAgICB2b2lkIHNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoYm9vbCk7CisgICAgdm9pZCBzb21lUGFnZUlzUHJpdmF0ZUJyb3dzaW5nKGJvb2wp
OwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLy8gUGx1Z2luSW5mb1N0
b3JlQ2xpZW50OgpAQCAtNTI5LDYgKzUzMSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIGJv
b2wgbV9tZW1vcnlDYWNoZURpc2FibGVkOworCisgICAgdW5zaWduZWQgbV9wcml2YXRlQnJvd3Np
bmdDb3VudDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCmluZGV4IDdhZGFlODkuLmE1ZmQ3OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCkBAIC03OSw3ICs3
OSw3IEBAIHZvaWQgV2ViSWNvbkRhdGFiYXNlOjpzZXREYXRhYmFzZVBhdGgoY29uc3QgU3RyaW5n
JiBwYXRoKQogCiAgICAgLy8gRklYTUU6IFdlYkljb25EYXRhYmFzZXMgYXJlIHBlci1XZWJDb250
ZXh0IGJ1dCBXZWJDb250ZXh0J3MgZG9uJ3QgaGF2ZSB0aGVpciBvd24gbm90aW9uIG9mIHRoZSBj
dXJyZW50IHByaXZhdGUgYnJvd3Npbmcgc2V0dGluZy4KICAgICAvLyBBcyB3ZSBjbGVhbiB1cCBw
cml2YXRlIGJyb3dzaW5nIHRocm91Z2hvdXQgdGhlIHN0YWNrIHdlIG5lZWQgdG8gY2xlYW4gaXQg
dXAgaGVyZS4KLSAgICBtX2ljb25EYXRhYmFzZUltcGwtPnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7Cisg
ICAgbV9pY29uRGF0YWJhc2VJbXBsLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKG1fd2ViQ29u
dGV4dC0+YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKIAogICAgIGlmICghbV9p
Y29uRGF0YWJhc2VJbXBsLT5vcGVuKGRpcmVjdG9yeU5hbWUocGF0aCksIHBhdGhHZXRGaWxlTmFt
ZShwYXRoKSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBXZWJLaXQyIGlj
b24gZGF0YWJhc2Ugb24gZGlzayIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCA4YWI2M2FmLi5jNGQ3Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTQsNiArOTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
TUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TZXNzaW9uSURIYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hl
Y2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KICNpbmNs
dWRlIDxzdGRpby5oPgpAQCAtMzAzLDcgKzMwNCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVBy
b3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWlu
CiAgICAgLCBtX2lzVHJhY2tpbmdUb3VjaEV2ZW50cyhmYWxzZSkKICNlbmRpZgogICAgICwgbV9w
YWdlSUQocGFnZUlEKQotICAgICwgbV9zZXNzaW9uKCpjb25maWd1cmF0aW9uLnNlc3Npb24pCisg
ICAgLCBtX3Nlc3Npb24oQVBJOjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpKQogICAgICwgbV9p
c1BhZ2VTdXNwZW5kZWQoZmFsc2UpCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLCBtX2lzU21h
cnRJbnNlcnREZWxldGVFbmFibGVkKFRleHRDaGVja2VyOjppc1NtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCgpKQpAQCAtMzc2LDcgKzM3Nyw4IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAg
Ly8gRklYTUU6IElmIHdlIGV2ZXIgZXhwb3NlIHRoZSBzZXNzaW9uIHN0b3JhZ2Ugc2l6ZSBhcyBh
IHByZWZlcmVuY2UsIHdlIG5lZWQgdG8gcGFzcyBpdCBoZXJlLgogICAgIElQQzo6Q29ubmVjdGlv
biogY29ubmVjdGlvbiA9IG1fcHJvY2Vzcy0+c3RhdGUoKSA9PSBXZWJQcm9jZXNzUHJveHk6OlN0
YXRlOjpSdW5uaW5nID8gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkgOiBudWxscHRyOwogICAgIG1f
cHJvY2Vzcy0+Y29udGV4dCgpLnN0b3JhZ2VNYW5hZ2VyKCkuY3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UobV9wYWdlSUQsIGNvbm5lY3Rpb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSk7Ci0gICAgc2V0U2Vzc2lvbigqY29uZmlndXJhdGlvbi5zZXNzaW9uKTsKKyAg
ICBpZiAobV9wcmVmZXJlbmNlcy0+bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAg
ICAgICBzZXRTZXNzaW9uSW1wbChBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCks
IGZhbHNlKTsKIH0KIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKQEAgLTM5NSw2ICsz
OTcsNyBAQCBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQogI2lmbmRlZiBOREVCVUcKICAg
ICB3ZWJQYWdlUHJveHlDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCisgICAgc2V0U2Vzc2lv
bihBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkpOwogfQogCiBQbGF0Zm9ybVByb2Nlc3NJ
ZGVudGlmaWVyIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdApAQCAtNTI3
LDE1ICs1MzAsMzAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlYXR0YWNoVG9XZWJQcm9jZXNzV2l0
aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSkKICAgICBtX3Byb2Nlc3MtPnJlc3Bv
bnNpdmVuZXNzVGltZXIoKS0+c3RhcnQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNldFNl
c3Npb24oQVBJOjpTZXNzaW9uJiBzZXNzaW9uKQordm9pZCBXZWJQYWdlUHJveHk6OnNldFNlc3Np
b25JbXBsKEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbiwgYm9vbCBzZW5kTWVzc2FnZVRvUGFnZSkKIHsK
LSAgICBtX3Nlc3Npb24gPSBzZXNzaW9uOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0U2Vzc2lvbklEKHNlc3Npb24uZ2V0SUQoKSksIG1fcGFnZUlEKTsKKyAgICBp
ZiAoc2Vzc2lvbi5nZXRJRCgpICE9IG1fc2Vzc2lvbi0+Z2V0SUQoKSkgeworICAgICAgICBpZiAo
c2VuZE1lc3NhZ2VUb1BhZ2UpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFNlc3Npb25JRChzZXNzaW9uLmdldElEKCkpLCBtX3BhZ2VJRCk7CisKKyAg
ICAgICAgaWYgKHNlc3Npb24uZ2V0SUQoKS5pc0VwaGVtZXJhbCgpICYmICFtX3Nlc3Npb24tPmdl
dElEKCkuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLmlu
Y3JlbWVudFByaXZhdGVCcm93c2luZ0NvdW50KCk7CisgICAgICAgIGVsc2UgaWYgKCFzZXNzaW9u
LmdldElEKCkuaXNFcGhlbWVyYWwoKSAmJiBtX3Nlc3Npb24tPmdldElEKCkuaXNFcGhlbWVyYWwo
KSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLmRlY3JlbWVudFByaXZhdGVCcm93
c2luZ0NvdW50KCk7CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQotICAgIGlmIChzZXNz
aW9uLmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihzZXNzaW9uLmdldElEKCkpKTsKKyAgICAgICAgaWYgKG1fc2Vzc2lvbi0+
aXNFcGhlbWVyYWwoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnNlbmRUb05l
dHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVtb3ZlU2Vzc2lvblJl
ZmVyZW5jZShtX3Nlc3Npb24tPmdldElEKCkpKTsKKyAgICAgICAgaWYgKHNlc3Npb24uaXNFcGhl
bWVyYWwoKSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+Y29udGV4dCgpLnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QWRkU2Vzc2lvblJlZmVyZW5jZShz
ZXNzaW9uLmdldElEKCkpKTsKICNlbmRpZgorICAgICAgICBtX3Nlc3Npb24gPSBzZXNzaW9uOwor
ICAgIH0KK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldFNlc3Npb24oQVBJOjpTZXNzaW9uJiBz
ZXNzaW9uKQoreworICAgIHNldFNlc3Npb25JbXBsKHNlc3Npb24sIHRydWUpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQpAQCAtMjA4Myw2ICsyMTAxLDExIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiAgICAgaWYgKCFpc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX3ByZWZlcmVuY2VzLT5sZWdhY3lQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKCkgJiYgbV9zZXNzaW9uLT5nZXRJRCgpID09IFNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpKQorICAgICAgICBzZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSk7CisgICAgZWxzZSBpZiAoIW1fcHJlZmVyZW5jZXMtPmxl
Z2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSAmJiBtX3Nlc3Npb24tPmdldElEKCkgPT0gU2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpCisgICAgICAgIHNldFNlc3Npb24oQVBJ
OjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpKTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1JfU0VS
VkVSKQogICAgIGlmIChtX3ByZWZlcmVuY2VzLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCiAg
ICAgICAgIGluc3BlY3RvcigpLT5lbmFibGVSZW1vdGVJbnNwZWN0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMDg3ODU4NS4uYTc0N2ZlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzIzLDcgKzMyMyw2IEBAIHN0
cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbiB7CiAgICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAg
PSBudWxscHRyOwogICAgIFdlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcyA9IG51bGxwdHI7CiAg
ICAgVmlzaXRlZExpbmtQcm92aWRlciogdmlzaXRlZExpbmtQcm92aWRlciA9IG51bGxwdHI7Ci0g
ICAgQVBJOjpTZXNzaW9uKiBzZXNzaW9uID0gbnVsbHB0cjsKICAgICBXZWJQYWdlUHJveHkqIHJl
bGF0ZWRQYWdlID0gbnVsbHB0cjsKIH07CiAKQEAgLTkyOCw2ICs5MjcsOCBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAKKyAgICB2b2lkIHNldFNl
c3Npb25JbXBsKEFQSTo6U2Vzc2lvbiYsIGJvb2wgc2VuZE1lc3NhZ2VUb1BhZ2UpOworCiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBD
OjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZl
cmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAK
aW5kZXggMGY3ZGE3OS4uZmU1YzllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJlZmVyZW5jZXMuY3BwCkBAIC0zMiwxMCArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotLy8gRklYTUU6IE1hbmlwdWxhdGluZyB0aGlzIHZhcmlhYmxlIGlzIG5vdCB0aHJlYWQgc2Fm
ZS4KLS8vIEluc3RlYWQgb2YgdHJhY2tpbmcgcHJpdmF0ZSBicm93c2luZyBzdGF0ZSBhcyBhIGJv
b2xlYW4gcHJlZmVyZW5jZSwgd2Ugc2hvdWxkIGxldCB0aGUgY2xpZW50IHByb3ZpZGUgc3RvcmFn
ZSBzZXNzaW9ucyBleHBsaWNpdGx5Lgotc3RhdGljIHVuc2lnbmVkIHByaXZhdGVCcm93c2luZ1Bh
Z2VDb3VudDsKLQogV2ViUHJlZmVyZW5jZXM6OldlYlByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewpAQCAtNjIsMjUg
KzU4LDEyIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmFkZFBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlUHJveHkpCiB7CiAgICAgQVNTRVJUKCFtX3BhZ2VzLmNvbnRhaW5zKCZ3ZWJQYWdlUHJveHkp
KTsKICAgICBtX3BhZ2VzLmFkZCgmd2ViUGFnZVByb3h5KTsKLQotICAgIGlmIChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkpIHsKLSAgICAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQp
Ci0gICAgICAgICAgICBXZWJDb250ZXh0Ojp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygp
OwotCi0gICAgICAgICsrcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotICAgIH0KIH0KIAogdm9p
ZCBXZWJQcmVmZXJlbmNlczo6cmVtb3ZlUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkK
IHsKICAgICBBU1NFUlQobV9wYWdlcy5jb250YWlucygmd2ViUGFnZVByb3h5KSk7CiAgICAgbV9w
YWdlcy5yZW1vdmUoJndlYlBhZ2VQcm94eSk7Ci0KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKSB7Ci0gICAgICAgIC0tcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotICAgICAgICBp
ZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCkKLSAgICAgICAgICAgIFdlYkNvbnRleHQ6Ondp
bGxTdG9wVXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViUHJlZmVy
ZW5jZXM6OnVwZGF0ZSgpCkBAIC05Nyw4ICs4MCw4IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVw
ZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZh
CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJp
bmcmIGtleSwgYm9vbCB2YWx1ZSkKIHsKLSAgICBpZiAoa2V5ID09IFdlYlByZWZlcmVuY2VzS2V5
Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVkS2V5KCkpIHsKLSAgICAgICAgdXBkYXRlUHJpdmF0ZUJy
b3dzaW5nVmFsdWUodmFsdWUpOworICAgIGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6Omxl
Z2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkgeworICAgICAgICB1cGRhdGVMZWdhY3lQ
cml2YXRlQnJvd3NpbmdWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTEyNCwyNyArMTA3LDIwIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUZsb2F0VmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0IHZhbHVlKQogICAgIHVwZGF0ZSgpOyAvLyBG
SVhNRTogT25seSBzZW5kIG92ZXIgdGhlIGNoYW5nZWQga2V5IGFuZCB2YWx1ZS4KIH0KIAotdm9p
ZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlUHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSkK
K3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVlKGJv
b2wgdmFsdWUpCiB7Ci0gICAgcGxhdGZvcm1VcGRhdGVCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSwgdmFsdWUpOwotCi0gICAgdW5z
aWduZWQgcGFnZXNDaGFuZ2VkID0gbV9wYWdlcy5zaXplKCk7Ci0gICAgaWYgKCFwYWdlc0NoYW5n
ZWQpCi0gICAgICAgIHJldHVybjsKKyAgICBwbGF0Zm9ybVVwZGF0ZUJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpLCB2YWx1
ZSk7CiAKICAgICBpZiAodmFsdWUpIHsKLSAgICAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdQYWdl
Q291bnQpCi0gICAgICAgICAgICBXZWJDb250ZXh0Ojp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93
c2luZygpOwotICAgICAgICBwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQgKz0gcGFnZXNDaGFuZ2Vk
OwotICAgIH0KLQotICAgIHVwZGF0ZSgpOyAvLyBGSVhNRTogT25seSBzZW5kIG92ZXIgdGhlIGNo
YW5nZWQga2V5IGFuZCB2YWx1ZS4KLQotICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgQVNTRVJU
KHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCA+PSBwYWdlc0NoYW5nZWQpOwotICAgICAgICBwcml2
YXRlQnJvd3NpbmdQYWdlQ291bnQgLT0gcGFnZXNDaGFuZ2VkOwotICAgICAgICBpZiAoIXByaXZh
dGVCcm93c2luZ1BhZ2VDb3VudCkKLSAgICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNp
bmdQcml2YXRlQnJvd3NpbmcoKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlcykg
eworICAgICAgICAgICAgaWYgKHBhZ2UtPnNlc3Npb25JRCgpID09IFdlYkNvcmU6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb24o
QVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZXMpIHsKKyAgICAgICAgICAg
IGlmIChwYWdlLT5zZXNzaW9uSUQoKSA9PSBXZWJDb3JlOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQoKSkKKyAgICAgICAgICAgICAgICBwYWdlLT5zZXRTZXNzaW9uKEFQSTo6U2Vz
c2lvbjo6ZGVmYXVsdFNlc3Npb24oKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE2Niw5
ICsxNDIsNCBAQCBGT1JfRUFDSF9XRUJLSVRfUFJFRkVSRU5DRShERUZJTkVfUFJFRkVSRU5DRV9H
RVRURVJfQU5EX1NFVFRFUlMpCiAKICN1bmRlZiBERUZJTkVfUFJFRkVSRU5DRV9HRVRURVJfQU5E
X1NFVFRFUlMKIAotYm9vbCBXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVC
cm93c2luZygpCi17Ci0gICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudDsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJl
bmNlcy5oCmluZGV4IGRkNWUyZDEuLmYxZTVlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcmVmZXJlbmNlcy5oCkBAIC02OCw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAvLyBFeHBv
c2VkIGZvciBXZWJLaXRUZXN0UnVubmVyIHVzZSBvbmx5LgogICAgIHZvaWQgZm9yY2VVcGRhdGUo
KSB7IHVwZGF0ZSgpOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBhbnlQYWdlc0FyZVVzaW5nUHJpdmF0
ZUJyb3dzaW5nKCk7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViUHJlZmVyZW5jZXMoY29u
c3QgU3RyaW5nJik7CiAgICAgV2ViUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXMmKTsK
QEAgLTg5LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlRG91Ymxl
VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSB2YWx1ZSk7CiAgICAgdm9pZCBw
bGF0Zm9ybVVwZGF0ZUZsb2F0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0IHZh
bHVlKTsKIAotICAgIHZvaWQgdXBkYXRlUHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSk7
CisgICAgdm9pZCB1cGRhdGVMZWdhY3lQcml2YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKTsK
IAogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBtX3N0
b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA3Njg3MzBkLi4zNTRiNzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcApAQCAtMzA5LDkgKzMwOSwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxl
OjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAs
IGJvbwogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0
aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5ldHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTI3ND4uCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVT
RShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQogICAgIGlmIChlbmFibGVkKQotICAgICAgICBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Np
b25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKKyAgICAgICAgU2Vzc2lvblRyYWNrZXI6
OmFkZFNlc3Npb25SZWZlcmVuY2UoU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkp
OwogICAgIGVsc2UKLSAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKFNlc3Np
b25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKKyAgICAgICAgaWYgKFNlc3Npb25UcmFj
a2VyOjpzZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSkKKyAgICAg
ICAgICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKICNlbmRpZgogICAgIGNvbnN0IEhhc2hTZXQ8UGFn
ZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigp
KS0+cGFnZXMoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdGVyID0gcGFn
ZXMuYmVnaW4oKTsgaXRlciAhPSBwYWdlcy5lbmQoKTsgKytpdGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGRmZjgxNWIuLmMw
OTE1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAKQEAgLTE1MzMsNyArMTUzMyw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXNQcml2YXRl
QnJvd3NpbmdFbmFibGVkKCkKICAgICBpZiAoIWZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dG9w
T3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBmcmFtZSgpLT5z
ZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+
cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogfQogCiBib29sIFBsdWdpblZpZXc6
OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggZGVmMjAzOC4uYjM5
NmNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApA
QCAtNDAsOSArNDAsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBy
ZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyCi0gICAg
c3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9u
SUQpOwotCiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4
dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCog
d2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IDI2YmZmYzQuLmNmZTlkZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNDIsMjIgKzQyLDYg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAot
dm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVt
ZXJhbCgpKTsKLQotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgYmFzZTsKLSAgICBpZiAoU2Vzc2lvblRyYWNr
ZXI6OmdldElkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpCi0gICAgICAgIGJhc2UgPSBbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOwotICAgIGVsc2UKLSAgICAgICAgYmFz
ZSA9IFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpOwotCi0gICAgU2Vzc2lvblRy
YWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oYmFzZSArICcuJyArIFN0cmluZzo6bnVtYmVyKHNlc3Np
b25JRC5zZXNzaW9uSUQoKSkpKTsKLX0KLQogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9s
aWN5IHBvbGljeSkKIHsKICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tp
ZVN0b3JhZ2VdIHNldENvb2tpZUFjY2VwdFBvbGljeTpzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3k+KHBvbGljeSldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IDc3NzM3ZDQuLmU5NDMyNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTM4LDE2ICszOCw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9p
ZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQot
ICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTdHJpbmc6Om51bWJl
cihzZXNzaW9uSUQuc2Vzc2lvbklEKCkpKSk7Ci19Ci0KIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViRnJhbWUqIGZyYW1lKQogICAgIDogRnJh
bWVOZXR3b3JraW5nQ29udGV4dChmcmFtZS0+Y29yZUZyYW1lKCkpCiB7CkBAIC01NSw3ICs0NSw3
IEBAIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQo
V2ViRnJhbWUqIGZyYW1lKQogCiBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAoZnJhbWUoKSAm
JiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAo
ZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAg
ICAgICAgIHJldHVybiAqU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKCkpOwogCiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaAppbmRleCA5MzQxMGIzLi4xOTRhNjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQzLDggKzQzLDYgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0KICAgICBXZWJGcmFtZUxvYWRlckNsaWVu
dCogd2ViRnJhbWVMb2FkZXJDbGllbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4OTVkYWRjLi41YTFi
ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlBy
aW50SW5mby5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgIlNlc3Npb25U
cmFja2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiVmlzaXRl
ZExpbmtUYWJsZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKQEAg
LTIxMTgsMTQgKzIxMTksNiBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVySG9zdGluZ01vZGUodW5z
aWduZWQgbGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgcGx1Z2luVmlldy0+c2V0TGF5ZXJIb3N0
aW5nTW9kZShtX2xheWVySG9zdGluZ01vZGUpOwogfQogCi1TZXNzaW9uSUQgV2ViUGFnZTo6c2Vz
c2lvbklEKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYWdlLT5pc1Nlc3Npb25JRFNldCgpKQotICAg
ICAgICByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQoKTsKLQotICAgIHJldHVybiBtX3BhZ2UtPnNl
dHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKLX0KLQogYm9v
bCBXZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CkBAIC0yMTMzLDkgKzIxMjYsMTMgQEAgYm9vbCBX
ZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZTo6
c2V0U2Vzc2lvbklEKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgbV9wYWdlLT5zZXRTZXNz
aW9uSUQoc2Vzc2lvbklEKTsKKyAgICBBU1NFUlQoc2Vzc2lvbklEICE9IG1fcGFnZS0+c2Vzc2lv
bklEKCkpOworICAgIEFTU0VSVChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKKyAgICBpZiAobV9wYWdl
LT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAgICBTZXNzaW9uVHJhY2tlcjo6cmVt
b3ZlU2Vzc2lvblJlZmVyZW5jZShtX3BhZ2UtPnNlc3Npb25JRCgpKTsKICAgICBpZiAoc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmVuc3VyZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgU2Vzc2lvblRyYWNrZXI6
OmFkZFNlc3Npb25SZWZlcmVuY2Uoc2Vzc2lvbklEKTsKKyAgICBtX3BhZ2UtPnNldFNlc3Npb25J
RChzZXNzaW9uSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lB
Y3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpCkBAIC0yNDQwLDEwICsyNDM3LDggQEAgdm9pZCBX
ZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSkKICAgICBzZXR0aW5ncy5zZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bG9jYWxTdG9yYWdlRW5hYmxlZEtleSgpKSk7CiAg
ICAgc2V0dGluZ3Muc2V0WFNTQXVkaXRvckVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojp4c3NBdWRpdG9yRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGlu
Z3Muc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OmZyYW1lRmxhdHRlbmluZ0VuYWJsZWRLZXkoKSkpOwotICAgIGlmICht
X3BhZ2UtPmlzU2Vzc2lvbklEU2V0KCkpCi0gICAgICAgIHNldHRpbmdzLnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQobV9wYWdlLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKTsKLSAgICBlbHNl
Ci0gICAgICAgIHNldHRpbmdzLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVkS2V5
KCkpKTsKKyAgICBpZiAoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjpsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkS2V5KCkpICYmICFtX3BhZ2UtPnNlc3Npb25J
RCgpLmlzRXBoZW1lcmFsKCkpCisgICAgICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKFNlc3Npb25J
RDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKICAgICBzZXR0aW5ncy5zZXREZXZlbG9wZXJF
eHRyYXNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0SmF2YVNjcmlw
dEV4cGVyaW1lbnRzRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdz
LnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OnRleHRBcmVhc0FyZVJlc2l6YWJsZUtleSgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBkMjhlOWE4Li4zNWUxMjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Miw3
ICsxOTIsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUlEOyB9Ci0gICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0OworICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2UtPnNlc3Npb25JRCgpOyB9CiAgICAgYm9vbCBpc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbigp
IGNvbnN0OwogICAgIHZvaWQgc2V0U2Vzc2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGIxNWUxMzAuLjdjZmEy
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzQ4LDYg
KzM0OCw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1lCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNl
dElkZW50aWZpZXJCYXNlKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAj
ZW5kaWYKIAorICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051
bGwoKSkKKyAgICAgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKCIiKTsKKwog
ICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAg
ICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAK
QEAgLTQ3MSwyMCArNDc0LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpmdWxsS2V5Ym9hcmRBY2Nlc3NN
b2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiAgICAgbV9mdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkID0gZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNz
aW9uSUQpCi17Ci0jaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShT
T1VQKQotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oc2Vzc2lvbklEKTsKLSNlbmRpZgotfQotCi12b2lkIFdlYlByb2Nlc3M6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCi17Ci0jaWYgUExB
VEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQKQotICAgIFNlc3Npb25U
cmFja2VyOjpkZXN0cm95U2Vzc2lvbihzZXNzaW9uSUQpOwotI2VuZGlmCi19Ci0KIERvd25sb2Fk
TWFuYWdlciYgV2ViUHJvY2Vzczo6ZG93bmxvYWRNYW5hZ2VyKCkKIHsKICAgICBBU1NFUlQoIXVz
ZXNOZXR3b3JrUHJvY2VzcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
aW5kZXggOWQzZjg0NS4uYTdkNjQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTE2NSw5ICsxNjUsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENhY2hlTW9k
ZWwodWludDMyX3QpOwogCi0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdl
YkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihXZWJDb3JlOjpTZXNzaW9uSUQpOwotCiAgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3codWlu
dDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFn
ZUlEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IDZmYWIyZjIuLmNlNzkyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTU0LDEwICs1NCw2IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldElnbm9yZVRMU0Vycm9y
cyhib29sIGlnbm9yZVRMU0Vycm9ycykKICNlbmRpZgogCi0gICAgLy8gTGVnYWN5IHByaXZhdGUg
YnJvd3Npbmcgc2Vzc2lvbiBpcyBwZXIgcHJvY2Vzcy4gSW5kaXZpZHVhbCBwYWdlcyBvciBwYWdl
IGdyb3VwcyBtYXkgdXNlIHRoZSBwcml2YXRlIHNlc3Npb24gb3IgdGhlIGRlZmF1bHQgb25lIGFz
IGFwcHJvcHJpYXRlLgotICAgIEVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKLSAgICBEZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotCiAgICAgIyBQbHVnLWlucy4KICAgICBEaWRB
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVpbnQzMl90IGhhc2gsIGRvdWJsZSBleHBpcmF0
aW9uVGltZSkKICAgICBSZXNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhIYXNoTWFwPHVp
bnQzMl90LGRvdWJsZT4gaGFzaGVzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGU0YjJkMTYuLjg0Yzc2ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMy0x
MSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0
ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gQVBJIHRlc3QgZm9yIGVwaGVtZXJhbCBzZXNzaW9u
cyBzaW1pbGFyIHRvIFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJh
bFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE0LTAzLTEyICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSB1bnVzZWQgY2Fs
bElkIHBhcmFtZXRlciBmcm9tIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggYmU0MWY4Yy4uZGJjNzlmZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEwNyw2ICsxMDcsNyBAQAogCQk1MkNCNDc0MTE0NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0I0NzQwMTQ0OEZCOTMwMDg3Mzk5NSAvKiBM
b2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwICovOyB9OwogCQk1
MkU1Q0U0NjE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJFNUNFNDUxNEQyMUU5RDAwM0IyQkQ4
IC8qIFBhcmVudEZyYW1lLmNwcCAqLzsgfTsKIAkJNTJFNUNFNDkxNEQyMUVBQjAwM0IyQkQ4IC8q
IFBhcmVudEZyYW1lX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVu
ZGxlLmNwcCAqLzsgfTsKKwkJNzVGMzEzNDAxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNl
c3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBo
ZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJNzZF
MTgyREExNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyRDkxNTQ3NTUwMTAw
RjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwICovOyB9OwogCQk3NkUxODJERDE1NDc1
NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5MTAwRjFG
QUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREYx
NTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREUxNTQ3NUE4
MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87IH07CkBAIC00MzIsNiAr
NDMzLDcgQEAKIAkJNTJDQjQ3NDAxNDQ4RkI5MzAwODczOTk1IC8qIExvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0NTE0RDIxRTlEMDAzQjJCRDgg
LyogUGFyZW50RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGFyZW50RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0ODE0
RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZyYW1lX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTc1RjMxMzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxT
ZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxi
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyRDkxNTQ3NTUwMTAw
RjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV2lsbFNlbmRTdWJtaXRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2
ZW50X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxs
U2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzYzLDYgKzc2NSw3IEBACiAJCQkJRjZGNDlD
NjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovLAog
CQkJCUY2RjQ5QzY2MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hl
X0J1bmRsZS5jcHAgKi8sCiAJCQkJQzA0NUY5NDQxMzg1QzJFOTAwQzBGM0NEIC8qIERvd25sb2Fk
RGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAgKi8sCisJCQkJNzVGMzEzM0YxOEMxNzFCNzAwNDFD
QUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8s
CiAJCQkJMUE1RkVGREMxMjcwRTJBMzAwMEUyOTIxIC8qIEV2YWx1YXRlSmF2YVNjcmlwdC5jcHAg
Ki8sCiAJCQkJQkNDOEI5NUExMjYxMUY0NzAwREU0NkE0IC8qIEZhaWxlZExvYWQuY3BwICovLAog
CQkJCTFBMDJDODRFMTI1RDRBODQwMEUzRjRCRCAvKiBGaW5kLmNwcCAqLywKQEAgLTExNDgsNiAr
MTE1MSw3IEBACiAJCQkJMjk3MjM0QjQxNzNBRDA0ODAwOTgzNjAxIC8qIEN1c3RvbVByb3RvY29s
c0ludmFsaWRTY2hlbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzkwMjhCNjE0RkFCRDkyMDA3
RTZCNDMgLyogQWNjZXB0c0ZpcnN0TW91c2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE4NjFG
RjE3QkQ0REM3MDBENEU0MUUgLyogU3RvcExvYWRpbmdGcm9tRGlkRmluaXNoTG9hZGluZy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTc1RjMxMzQwMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxT
ZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MjZGMUI0NDQxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCNTVGMTFBMDE1MTY4MzRGMDA5MTU5MTYgLyogQXR0cmlidXRlZFN0cmluZy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTAwQ0Q5RjYzMTVCRTMxMkMwMDJEQTJDRSAvKiBCYWNrRm9yd2Fy
ZExpc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2su
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25Q
dXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODMwMzE5NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2su
Y3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcu
aCIKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIHRlc3REb25lOworCitz
dGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEs
IFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgLy8gVGhp
cyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gbmF2aWdhdGluZyBpbiBQcml2YXRlIEJyb3dz
aW5nLgorICAgIEZBSUwoKTsKK30KKworc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKK3sKKyAgICB0ZXN0RG9uZSA9IHRydWU7Cit9CisKK1RFU1QoV2ViS2l0Miwg
RXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrKQoreworICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7
CisKKyAgICBXS0NvbnRleHRIaXN0b3J5Q2xpZW50VjAgaGlzdG9yeUNsaWVudDsKKyAgICBtZW1z
ZXQoJmhpc3RvcnlDbGllbnQsIDAsIHNpemVvZihoaXN0b3J5Q2xpZW50KSk7CisKKyAgICBoaXN0
b3J5Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgaGlzdG9yeUNsaWVudC5kaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOworCisg
ICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChjb250ZXh0LmdldCgpLCAmaGlzdG9yeUNsaWVu
dC5iYXNlKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwor
CisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgcGFnZUxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQo
JnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVvZihwYWdlTG9hZGVyQ2xpZW50KSk7CisKKyAgICBw
YWdlTG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgcGFnZUxvYWRlckNsaWVudC5k
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUgPSBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWU7CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFn
ZSgpLCAmcGFnZUxvYWRlckNsaWVudC5iYXNlKTsKKworICAgIFdLU2Vzc2lvblJlZiBzZXNzaW9u
ID0gV0tTZXNzaW9uQ3JlYXRlKHRydWUpOworICAgIFdLUGFnZVNldFNlc3Npb24od2ViVmlldy5w
YWdlKCksIHNlc3Npb24pOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdL
LCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgicHVzaC1zdGF0ZSIsICJodG1sIikpOworICAg
IFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpy
dW4oJnRlc3REb25lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226948</attachid>
            <date>2014-03-17 13:10:53 -0700</date>
            <delta_ts>2014-03-17 14:05:45 -0700</delta_ts>
            <desc>new window inherits session</desc>
            <filename>privatesetting.05.diff</filename>
            <type>text/plain</type>
            <size>96391</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZWY4NGRmLi5iMjFlNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVj
dFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5p
dGlhbGl6ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNl
c3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRv
IGp1c3QgcmV0dXJuIG1fc2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vz
c2lvbklEKTogQWxzbyBwZXJmb3JtIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24u
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOiBSZW1vdmUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBzZXR0aW5n
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUGFnZSByZWZsZWN0cyBz
ZXR0aW5nIHVzaW5nIHNlc3Npb24uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpnZXRWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
Ojppc0Rpc2FibGVkQnlQcml2YXRlQnJvd3NpbmcpOgorCiAyMDE0LTAxLTI5ICBTZXJnaW8gVmls
bGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlv
dXRdIGdldENvbXB1dGVkU3R5bGUoKSBub3QgdXNpbmcgYXV0aG9yJ3Mgb3JkZXIgd2hlbiBzaG93
aW5nIG5hbWVkIGdyaWQgbGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAppbmRleCBjOWE1MzY2Li4yNDJhNzIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUNvbnRleHQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9vbCBEYXRhYmFzZUNvbnRleHQ6OmFs
bG93RGF0YWJhc2VBY2Nlc3MoKSBjb25zdAogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0Rv
Y3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQt
PnBhZ2UoKSB8fCAoZG9jdW1lbnQtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKSkpCisgICAg
ICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSB8fCAoZG9jdW1lbnQtPnBhZ2UoKS0+c2Vzc2lvbklE
KCkuaXNFcGhlbWVyYWwoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNz
SW5Qcml2YXRlQnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkp
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggN2QwYzQ2Mi4u
YzNmN2E2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03
MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgorI2luY2x1ZGUg
IlNlc3Npb25JRC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKQEAgLTEyMTksOCArMTIyMCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29u
dGVudFR5cGUmIGNvbnRlbnRUCiAgICAgaWYgKG1fc2VuZFByb2dyZXNzRXZlbnRzKSAKICAgICAg
ICAgc3RhcnRQcm9ncmVzc0V2ZW50VGltZXIoKTsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IGRvY3VtZW50KCkuc2V0dGluZ3MoKTsKLSAgICBib29sIHByaXZhdGVNb2RlID0gIXNldHRpbmdz
IHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRl
TW9kZSA9IGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5zZXNzaW9uSUQo
KS5pc0VwaGVtZXJhbCgpOwogICAgIG1fcGxheWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKHBy
aXZhdGVNb2RlKTsKIAogICAgIC8vIFJlc2V0IGRpc3BsYXkgbW9kZSB0byBmb3JjZSBhIHJlY2Fs
Y3VsYXRpb24gb2Ygd2hhdCB0byBzaG93IGJlY2F1c2Ugd2UgYXJlIHJlc2V0dGluZyB0aGUgcGxh
eWVyLgpAQCAtNTE5NSw4ICs1MTk1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcml2YXRl
QnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpCiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOwot
ICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSAhc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIHByaXZhdGVNb2RlID0gZG9jdW1lbnQoKS5wYWdlKCkg
JiYgZG9jdW1lbnQoKS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2Uo
JXMpIiwgYm9vbFN0cmluZyhwcml2YXRlTW9kZSkpOwogICAgIG1fcGxheWVyLT5zZXRQcml2YXRl
QnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDZjOGM5ZTkuLjA2MzdmMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclN0YW5kYXJkTG9hZChIaXN0b3J5VXBkYXRl
VHlwZSB1cGRhdGVUeXBlKQogCiAgICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gbV9mcmFt
ZS5sb2FkZXIoKTsKIAotICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCku
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1l
LnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKICAgICBjb25zdCBVUkwmIGhpc3Rv
cnlVUkwgPSBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAK
ICAgICBpZiAoIWZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3Qo
KSkgewpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZv
clJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiAgICAgICAgIExPRyhIaXN0b3J5
LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlZGlyZWN0IGxvYWQgaW4g
ZnJhbWUgJXMiLCBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAKLSAgICBib29sIG5lZWRQcml2YWN5
ID0gbV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29s
IG5lZWRQcml2YWN5ID0gbV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7
CiAgICAgY29uc3QgVVJMJiBoaXN0b3J5VVJMID0gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAKICAgICBpZiAobV9mcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5pc0NsaWVudFJlZGlyZWN0KCkpIHsKQEAgLTQzMyw3ICs0MzMsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpCiAgICAgICAg
IG1fY3VycmVudEl0ZW0tPmNsZWFyU2Nyb2xsUG9pbnQoKTsKICAgICB9CiAKLSAgICBib29sIG5l
ZWRQcml2YWN5ID0gbV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsK
KyAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCk7CiAgICAgY29uc3QgVVJMJiBoaXN0b3J5VVJMID0gbV9mcmFtZS5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAKICAgICBpZiAoIWhpc3RvcnlVUkwu
aXNFbXB0eSgpICYmICFuZWVkUHJpdmFjeSkgewpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQogICAgIGlm
IChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisg
ICAgaWYgKG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CkBAIC04NDcsNyAr
ODQ3LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwKIAogICAgIHBhZ2UtPmJhY2tGb3J3YXJk
KCkuYWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7CiAKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9mcmFtZS5wYWdlKCktPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFkZFZpc2l0
ZWRMaW5rKCpwYWdlLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKQEAgLTg2Niw3
ICs4NjYsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNlU3RhdGUoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZQogICAgIG1fY3VycmVudEl0ZW0tPnNl
dEZvcm1EYXRhKDApOwogICAgIG1fY3VycmVudEl0ZW0tPnNldEZvcm1Db250ZW50VHlwZShTdHJp
bmcoKSk7CiAKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSkKKyAgICBpZiAobV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX2ZyYW1lLnBhZ2UoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCmluZGV4IDc5ZmJlNGYuLjM2YzBjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgQXBwbGljYXRpb25DYWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjYWNo
ZUZvck1haW5SZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWUKICAgICBpZiAodXJsLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7
CiAKLSAgICBpZiAoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgKGRvY3VtZW50TG9hZGVyLT5m
cmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB8fCAhZG9jdW1lbnRM
b2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0Fw
cGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnRyZWUoKS50b3AoKS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkpCisgICAgaWYgKGRvY3VtZW50TG9hZGVyLT5mcmFt
ZSgpICYmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpIHx8ICFkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShkb2N1bWVudExvYWRlci0+ZnJh
bWUoKS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGNh
Y2hlU3RvcmFnZSgpLmNhY2hlR3JvdXBGb3JVUkwodXJsKSkgewpAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZShGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgcGFzc2VkTWFuaWZlc3RVCiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFu
eXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChm
cmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1l
LT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAo
ZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSB8fCAhZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUt
PnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAgICAgICBw
b3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDSEVDS0lOR19FVkVOVCwgZG9j
dW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFUlJPUl9FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICByZXR1cm47CkBAIC0y
MTksNyArMjE5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0
aG91dE1hbmlmZXN0VVJMKEZyYW1lKiBmcmFtZSkKICAgICBBU1NFUlQoIWRvY3VtZW50TG9hZGVy
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5hcHBsaWNhdGlvbkNhY2hlKCkpOwogCiAgICAgLy8g
RG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFi
bGVkLgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
fHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNh
dGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSkpIHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSB8
fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0
aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDSEVD
S0lOR19FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpFUlJPUl9FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAg
ICByZXR1cm47CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnVwZGF0ZShGcmFtZSogZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVPcHRpb24gdXAKICAg
ICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJy
b3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdNYXN0ZXJSZXNvdXJj
ZUxvYWRlcnMuaXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0VudHJpZXMuaXNF
bXB0eSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2NhY2hlQmVpbmdVcGRhdGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDljNjliZWYuLmUyNWFkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtNDc2LDcgKzQ3
Niw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmFib3J0KCkKIAogYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJu
IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+
c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1
bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
CisgICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgbV9kb2N1bWVudExvYWRl
ci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQo
KSAmJiAhbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpOwogfQogCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9u
Q2FjaGVCbG9ja2VkRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5kZXggOTRh
ZGFlNy4uNDY1ZDFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250
cm9sbGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNvbnRp
bnVlTG9hZFdpdGhEZWNpc2lvbihJY29uTG9hZERlY2lzaW9uIGljb25Mb2FkRGVjaXNpb24pCiAg
ICAgQVNTRVJUKGljb25Mb2FkRGVjaXNpb24gIT0gSWNvbkxvYWRVbmtub3duKTsKIAogICAgIC8v
ICBGSVhNRSAoPHJkYXI6Ly9wcm9ibGVtLzkxNjg2MDU+KSAtIFdlIHNob3VsZCBzdXBwb3J0IGlu
LW1lbW9yeS1vbmx5IHByaXZhdGUgYnJvd3NpbmcgaWNvbnMgaW4gYXN5bmNocm9ub3VzIGljb24g
ZGF0YWJhc2UgbW9kZS4KLSAgICBpZiAoaWNvbkRhdGFiYXNlKCkuc3VwcG9ydHNBc3luY2hyb25v
dXNNb2RlKCkgJiYgbV9mcmFtZS5wYWdlKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKQorICAgIGlmIChpY29uRGF0YWJhc2UoKS5zdXBwb3J0c0FzeW5jaHJvbm91c01vZGUo
KSAmJiBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGljb25Mb2FkRGVjaXNpb24gPT0gSWNvbkxvYWRObykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggMTM5YTQ5NS4uMmQ0NjZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xOTEsNyArMTkxLDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAg
ICAgLCBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudCgwKSAvLyBOT1RFOiBP
bmx5IGNhbGxlZCBmcm9tIEludGVybmFscyBmb3IgU3BhdGlhbCBOYXZpZ2F0aW9uIHRlc3Rpbmcu
CiAgICAgLCBtX2ZyYW1lc0hhbmRsaW5nQmVmb3JlVW5sb2FkRXZlbnQoMCkKICAgICAsIG1fdmlz
aXRlZExpbmtTdG9yZShzdGQ6Om1vdmUocGFnZUNsaWVudHMudmlzaXRlZExpbmtTdG9yZSkpCi0g
ICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmVtcHR5U2Vzc2lvbklEKCkpCisgICAgLCBtX3Nl
c3Npb25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKIHsKICAgICBBU1NFUlQobV9l
ZGl0b3JDbGllbnQpOwogCkBAIC0xMDY2LDE5ICsxMDY2LDEyIEBAIHZvaWQgUGFnZTo6c3RvcmFn
ZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgdmlld3NbaV0tPnN0b3JhZ2VCbG9ja2lu
Z1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCgpCit2b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCiB7Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0g
bV9zZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIC8vIERvbid0IGFsbG93
IGNoYW5naW5nIHRoZSBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGlmIHdlIGhhdmUgc2V0IGEgc2Vz
c2lvbiBJRC4KKyAgICBBU1NFUlQobV9zZXNzaW9uSUQgPT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkgfHwgbV9zZXNzaW9uSUQgPT0gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKCkpOwogCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5wcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpOwotCi0gICAgLy8gQ29sbGVj
dCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3IgdG8gZW5zdXJlIHRoYXQgYWN0aW9uIHRo
ZSBwbHVnLWluIHRha2VzCi0gICAgLy8gZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0aW1lLgotICAgIGF1dG8gdmlld3MgPSBw
bHVnaW5WaWV3cygpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpZXdzLnNpemUo
KTsgKytpKQotICAgICAgICB2aWV3c1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpOworICAgIHNldFNlc3Npb25JRChwcml2YXRlQnJvd3NpbmdF
bmFibGVkID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0xNTAw
LDE5ICsxNDkzLDI3IEBAIFZpc2l0ZWRMaW5rU3RvcmUmIFBhZ2U6OnZpc2l0ZWRMaW5rU3RvcmUo
KQogCiBTZXNzaW9uSUQgUGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZXNz
aW9uSUQuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CisgICAgQVNTRVJU
KG1fc2Vzc2lvbklELmlzVmFsaWQoKSk7CiAKLSAgICBpZiAoc2V0dGluZ3MoKS5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKTsKLQotICAgIHJldHVybiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
KyAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CiB9CiAKIHZvaWQgUGFnZTo6c2V0U2Vzc2lvbklEKFNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwot
ICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOworICAgIGlmIChzZXNzaW9uSUQgIT0gbV9zZXNz
aW9uSUQpIHsKKyAgICAgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisKKyAgICAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0
ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKKworICAgICAgICAvLyBDb2xsZWN0IHRoZSBQbHVn
aW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4g
dGFrZXMKKyAgICAgICAgLy8gZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQg
ZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0aW1lLgorICAgICAgICBhdXRvIHZpZXdzID0gcGx1
Z2luVmlld3MoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmlld3Muc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICB2aWV3c1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFu
Z2VkKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKyAgICB9CiB9CiAKIFBhZ2U6OlBhZ2VDbGll
bnRzOjpQYWdlQ2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGE2ZjdjMzkuLmQwMGU5M2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC0zMTAsNyArMzEwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkbnNQ
cmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVD
aGFuZ2VkKCk7Ci0gICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICB2
b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpOwogCiAgICAgdm9pZCBzZXREZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CiAgICAgSlNDOjpE
ZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CkBAIC00MDcs
NyArNDA3LDYgQEAgcHVibGljOgogCiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0U2Vzc2lvbklEKFNlc3Npb25JRCk7Ci0gICAgYm9vbCBpc1Nlc3Npb25JRFNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzVmFsaWQoKTsgfQogCiBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdEdyb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4
IDM0NmIwMTMuLmUzZjJmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCkBAIC0x
MjYsNyArMTI2LDcgQEAgdm9pZCBQYWdlQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHIKICAgICBpZiAoc291cmNlID09
IE1lc3NhZ2VTb3VyY2U6OkNTUykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGFnZS5z
ZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS5jaHJv
bWUoKS5jbGllbnQoKS5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2Us
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdXJsKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IFBhZ2VDb25zb2xlOjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsCiAgICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRG
aXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCZtX3BhZ2UsIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBleGVjLCBhcmd1bWVudHMpOwogCi0gICAgaWYgKG1f
cGFnZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdl
LnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChn
b3RNZXNzYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDMyYjVhN2YuLmM2MTFl
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xNzEsNyArMTcxLDYgQEAgU2V0dGlu
Z3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCiAg
ICAgLCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKHRydWUpCiAgICAgLCBtX2xvYWRzSW1h
Z2VzQXV0b21hdGljYWxseShmYWxzZSkKLSAgICAsIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChm
YWxzZSkKICAgICAsIG1fYXJlSW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hcmVQbHVnaW5z
RW5hYmxlZChmYWxzZSkKICAgICAsIG1faXNTY3JpcHRFbmFibGVkKGZhbHNlKQpAQCAtNDI5LDEx
ICs0MjgsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGFyZVBsdWdp
bnNFbmFibGVkKQogCiB2b2lkIFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdF
bmFibGVkID09IHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Ci0gICAg
bV9wYWdlLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3BhZ2UtPnByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAogdm9p
ZCBTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBVUkwmIHVzZXJTdHls
ZVNoZWV0TG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNTE2ZjBkYy4uZDQ3Mzgw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMTQ2LDcgKzE0Niw2IEBAIHB1YmxpYzoKICAg
ICAvLyAgLSBIVFRQIENvb2tpZXMKICAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5Q
TlZwcml2YXRlTW9kZUJvb2wpCiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJv
b2wpOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsgfQogCiAgICAgdm9pZCBzZXRETlNQcmVmZXRjaGluZ0Vu
YWJsZWQoYm9vbCk7CiAgICAgYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsgfQpAQCAtMzAxLDcgKzMwMCw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc0phdmFFbmFi
bGVkRm9yTG9jYWxGaWxlcyA6IDE7CiAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eSA6IDE7Ci0gICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwogICAgIGJvb2wg
bV9hcmVJbWFnZXNFbmFibGVkIDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAx
OwogICAgIGJvb2wgbV9pc1NjcmlwdEVuYWJsZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggMjY4MDZmNi4uMTgzN2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6
OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgUGFn
ZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdlKQogICAg
ICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICooKE5QQm9vbCop
dmFsdWUpID0gcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
ICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsK
ICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggYzFiMjM3Yy4uNjA2MmI5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3Vs
dCgpCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGZyYW1lKCkuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZy
YW1lKCkucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpbnQgc2l6ZSA9IHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXpl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggYzQ4NGI5Ni4uODY0NzU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBT
dG9yYWdlOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0CiAKIGJvb2wgU3RvcmFnZTo6aXNEaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5z
dG9yYWdlVHlwZSgpID09IExvY2FsU3RvcmFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGExZWEy
OWEuLjllOTVlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0x
MSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0
ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFu
aWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKSB3aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCku
CisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZf
bmV3KToKKwogMjAxNC0wMy0xNCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlcGxhY2UgIkFwcGxlIENvbXB1dGVyLCBJbmMuIiB3aXRoICJBcHBsZSBJbmMu
IiBpbiBjb3B5cmlnaHQgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXgg
OTk5NzBlYy4uNTM2MTBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC02Niw2
ICs2Niw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1
ZGUgIlNlc3Npb25JRC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU291cE5l
dHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKQEAgLTgwMCw3
ICs4MDEsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9u
ZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogI2VuZGlmCiAgICAgcHJpdi0+c2V0
dGluZ3Muc2NyaXB0c0NhbkFjY2Vzc0NsaXBib2FyZCA9IHBhZ2VTZXR0aW5ncy5qYXZhU2NyaXB0
Q2FuQWNjZXNzQ2xpcGJvYXJkKCkgJiYgcGFnZVNldHRpbmdzLkRPTVBhc3RlQWxsb3dlZCgpOwog
ICAgIHByaXYtPnNldHRpbmdzLnJlc2l6YWJsZVRleHRhcmVhcyA9IHBhZ2VTZXR0aW5ncy50ZXh0
QXJlYXNBcmVSZXNpemFibGUoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3Npbmcg
PSBwYWdlU2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHByaXYtPnNldHRp
bmdzLnByaXZhdGVCcm93c2luZyA9IHByaXYtPnBhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFs
KCk7CiAgICAgcHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93c2luZyA9IHBhZ2VTZXR0aW5ncy5jYXJl
dEJyb3dzaW5nRW5hYmxlZCgpOwogICAgIHByaXYtPnNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9u
ID0gcGFnZVNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgpOwogICAgIHByaXYtPnNl
dHRpbmdzLmxvY2FsU3RvcmFnZSA9IHBhZ2VTZXR0aW5ncy5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKaW5kZXggYmMzMWU4Mi4uZmMyYmIxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNv
bT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5n
IGNvbnNpc3RzIHNvbGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWlu
ZyBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKwogMjAxNC0w
My0xNCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxh
Y2UgIkFwcGxlIENvbXB1dGVyLCBJbmMuIiB3aXRoICJBcHBsZSBJbmMuIiBpbiBjb3B5cmlnaHQg
aGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGJhNzZkYzMuLmI3ZTZmOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bQog
CiAKICAgICBDcmVkZW50aWFsU3RvcmFnZU1vZGUgY3JlZGVudGlhbFN0b3JhZ2VNb2RlOwotICAg
IGlmIChjb3JlKHZpZXcpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAg
ICBpZiAoY29yZSh2aWV3KS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgY3Jl
ZGVudGlhbFN0b3JhZ2VNb2RlID0gRGlzYWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKICAgICBlbHNl
CiAgICAgICAgIGNyZWRlbnRpYWxTdG9yYWdlTW9kZSA9IEFsbG93UGVyc2lzdGVudFN0b3JhZ2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKaW5kZXggYzFhMmRhMS4uNTAwNGYxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNv
bT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5n
IGNvbnNpc3RzIHNvbGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWlu
ZyBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVw
ZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKwogMjAxNC0wMy0xNiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCBkZXByZWNhdGVkQ2hhcmFjdGVy
cyB1c2UgZnJvbSBXZWJLaXQgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDM2ZGY3MDgu
LmI1YWFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMTIwLDcgKzExMjAsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKQogICAg
IEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IDA7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGNv
cmUobV93ZWJGcmFtZS5nZXQoKSktPnBhZ2UoKSkgewotICAgICAgICBpZiAoIXBhZ2UtPnNldHRp
bmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgICAgICBpZiAoIXBhZ2UtPnNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgICAgICBoaXN0b3J5SXRlbSA9IHBhZ2UtPmJh
Y2tGb3J3YXJkKCkuY3VycmVudEl0ZW0oKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCmluZGV4IDBkYjRmODAuLjcxYWNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQpA
QCAtMTEzLDcgKzExMyw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkt
PnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Np
b24oKTsKIAogICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGM0ZTAyZWUuLjQ4MjgzZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9j
a0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Np
b25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMw
MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxh
Y2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3
aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKwogMjAxNC0wMy0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCBkZXByZWNh
dGVkQ2hhcmFjdGVycyB1c2UgZnJvbSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4OGRj
MzUxLi4wODIzZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04MDMsNyArODAzLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkK
ICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSB3ZWJWaWV3LT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKCFwYWdlLT5zZXR0
aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFwYWdlLT5zZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICAgICAgaGlzdG9yeUl0ZW0gPSBwYWdlLT5i
YWNrRm9yd2FyZCgpLmN1cnJlbnRJdGVtKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuY3BwCmluZGV4IGJmNTllZTcuLjUwMTBkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCku
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBh
Z2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuICpwcml2YXRl
U2Vzc2lvbigpOwogCiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGNlZDUwNy4uOWYxODJiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDkzIEBACisyMDE0LTAzLTE3ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxl
LmNvbT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDogQ2hhbmdlIHRvIHJlZmVyZW5jZSBjb3VudGVkIHNl
c3Npb24uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkU2Vzc2lvblJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVTZXNzaW9u
UmVmZXJlbmNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmg6IFJlbW92ZSBj
b2RlIHNpbmNlIFNlc3Npb25UcmFja2VyIGltcGxlbWVudHMgcHJpdmF0ZSBicm93c2luZyBzZXNz
aW9uIGNyZWF0aW9uLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6IFJlbW92ZSBwcml2YXRl
IGJyb3dzaW5nIHBhcmFtZXRlciwgc2luY2Ugc2Vzc2lvbnMgaW1wbGVtZW50IHRoZSBmdW5jdGlv
bmFsaXR5IHdpdGhvdXQgYSBnbG9iYWwgc2V0dGluZy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
U2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcDogUmVmZXJlbmNlIGNvdW50IHNlc3Npb25zIG1hbnVh
bGx5IChuZWVkZWQgZHVlIHRvIGNyb3NzLXByb2Nlc3MgcmVmZXJlbmNlcykuCisgICAgICAgIChX
ZWJLaXQ6OnN0YXRpY1Nlc3Npb25Db3VudGVyKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRy
YWNrZXI6OmdldElkZW50aWZpZXJCYXNlKTogU2V0IGFuIHVuc2V0IGlkZW50aWZpZXIgYmFzZS4K
KyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Npb25SZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZSk6
CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmg6IERpdHRvLgorICAgICAgICAqIFNo
YXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6IENoYW5nZSBQcml2YXRlQnJvd3NpbmdFbmFibGVk
IHRvIExlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SVNlc3Npb24uaDogTWFrZSBjb25zdHJ1Y3RvciBwdWJsaWMuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOiBEaXR0by4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNT
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFn
ZVByaXZhdGVNYWMuY3BwOgorICAgICAgICAoV0tQYWdlSXNVUkxLbm93bkhTVFNIb3N0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbTogTWVjaGFuaWNhbGx5IGNo
YW5nZSBTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OnNlc3Npb25J
RCgpLmlzRXBoZW1lcmFsKCkuCisgICAgICAgICgtW1dLV2ViVmlldyBfcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcDogRGl0
dG8uCisgICAgICAgIChld2tfc2V0dGluZ3NfcHJpdmF0ZV9icm93c2luZ19lbmFibGVkX3NldCk6
CisgICAgICAgIChld2tfc2V0dGluZ3NfcHJpdmF0ZV9icm93c2luZ19lbmFibGVkX2dldCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwOiBEaXR0by4KKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3NpbmcpOgorICAg
ICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOiBDaGFuZ2UgdG8gcmVmZXJlbmNlIGNvdW50
ZWQgc2Vzc2lvbnMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6d2luZG93U2VydmVyQ29ubmVj
dGlvblN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmluY3JlbWVu
dFByaXZhdGVCcm93c2luZ0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGVj
cmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
Ojpzb21lUGFnZUlzUHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNy
ZWF0ZVdlYlBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dz
aW5nKTogSW1wbGVtZW50IHVzaW5nIHJlZmVyZW5jZSBjb3VudC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViSWNvbkRhdGFiYXNlLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkljb25E
YXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOiBE
b24ndCBzZW5kIG1lc3NhZ2UgdG8gV2ViUGFnZSBwcm9jZXNzIHRoYXQgZG9lc24ndCB5ZXQgZXhp
c3QuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6IENsZWFu
IHVwIHNlc3Npb24uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbklt
cGwpOiBUcmFjayByZWZlcmVuY2UgY291bnQgYW5kIG9wdGlvbmFsbHkgc2VuZCBtZXNzYWdlIHRv
IFdlYlBhZ2UgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNz
aW9uKTogU2VuZCBtZXNzYWdlIHRvIFdlYlBhZ2UgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSk6IFNldCBzZXNzaW9uIGJhc2VkIG9u
IGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHByZWZlcmVuY2UuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6IEluY2x1ZGUgU2Vzc2lvbklEIHdoZW4gY3JlYXRp
bmcgbmV3IHBhZ2UuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6
OmFkZFBhZ2UpOiBTZXNzaW9uIGtlZXBzIHRyYWNrIG9mIHJlZmVyZW5jZSBjb3VudC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnJlbW92ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlczo6dXBkYXRlQm9vbFZhbHVlRm9yS2V5KTogQ2hhbmdlIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQgdG8gbGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOiBSZWZlcmVuY2Ug
Y291bnQgc2Vzc2lvbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6IE1lY2hhbmljYWxseSBjaGFuZ2UgU2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSB0byBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDogUmVtb3ZlIGNvZGUg
c2luY2UgU2Vzc2lvblRyYWNrZXIgaW1wbGVtZW50cyBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24g
Y3JlYXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6IFNldCBzZXNzaW9uIHRvIGxlZ2FjeSBw
cml2YXRlIHNlc3Npb24gaWYgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlc3Npb25JRCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogUmVtb3ZlIGVuc3VyZS9kZXN0cm95UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbiBhcyBQYWdlIHJlZmVyZW5jZSBjb3VudHMgaXRzIHNlc3Npb25zLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6IE1ha2Ug
c3VyZSBpZGVudGlmaWVyIGJhc2UgaXMgc2V0LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwog
MjAxNC0wMy0xNyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bQ01ha2VdIEVuc3VyZSB0aGF0IEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcgaXMg
ZGVmaW5lZCB3aGVuIGFwcHJvcHJpYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNGI4NDBmNC4uNTU0Y2I0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTY2
LDEwICsxNjYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAgIFNlc3Npb25UcmFja2Vy
OjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIp
OwogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBoYW5kbGluZyB0aGlzIGhlcmUs
IGEgbWVzc2FnZSBzaG91bGQgYmUgc2VudCBsYXRlciAoc2NhbGVzIHRvIG11bHRpcGxlIHNlc3Np
b25zKQotICAgIGlmIChwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAg
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNl
c3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKLQogICAgIGlmIChwYXJhbWV0ZXJz
LnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAKQEAgLTIxOSwxNCArMjE1LDE0
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjph
ZGRTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsK
KyAgICBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShzZXNzaW9uSUQpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlU2Vzc2lvblJlZmVy
ZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95
U2Vzc2lvbihzZXNzaW9uSUQpOworICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVm
ZXJlbmNlKHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVx
dWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBjN2MzYWVkLi40YzZiNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgYWRkU2Vzc2lvblJl
ZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVy
ZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2
NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZv
aWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRDYWNo
ZU1vZGVsKHVpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5OTQ0OS4uMDk5NGE3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2Vk
KFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKICNlbmRpZgogCi0gICAgRW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAg
QWRkU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIFJl
bW92ZVNlc3Npb25SZWZlcmVuY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAg
IERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0LmgKaW5kZXggZjVjY2NjMS4uZWJiN2Y2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00
MCw5ICs0MCw2IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQoKTsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29k
ZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLQogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMmE3YzU5NC4uMjZkODhhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNzcsMTUgKzc3LDQgQEAgUmVzb3VyY2VFcnJv
ciBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWUKICAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9
CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6OmdldElkZW50
aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNl
c3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpICsgJy4nICsgU3RyaW5nOjpu
dW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSkpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0U291cC5jcHAKaW5kZXggM2JlOWRiYy4uM2UyN2NlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHRTb3VwLmNwcApAQCAtNDYsMTEgKzQ2LDYgQEAgYm9vbCBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
MTQxYmE3YS4uNmJjZWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtMzgsNyArMzgsNiBAQCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6TmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7Ci0gICAgZW5jb2RlciA8PCBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShjYWNoZU1vZGVsKTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAg
LTY1LDggKzY0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb24KIAogYm9vbCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcmVzdWx0KQogewotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByaXZhdGVCcm93c2luZ0VuYWJsZWQpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmNhY2hl
TW9kZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuZGlza0NhY2hlRGlyZWN0b3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CmluZGV4IDU4YWNiMzkuLmRhZDExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aApAQCAtNTAsNyArNTAsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CiAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmKTsKIAotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsK
ICAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWw7CiAKICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0
b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKaW5kZXggYmRjZmZi
OS4uYTc2NWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBA
IC00MSw2ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc3RhdGljU2Vzc2lvbgogICAgIHJldHVybiBtYXAu
Z2V0KCk7CiB9CiAKK3N0YXRpYyBIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+JiBzdGF0aWNT
ZXNzaW9uQ291bnRlcigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+PiBtYXA7
CisgICAgcmV0dXJuIG1hcC5nZXQoKTsKK30KKwogc3RhdGljIEhhc2hNYXA8Y29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uKiwgU2Vzc2lvbklEPiYgc3RvcmFnZVNlc3Npb25Ub0lEKCkKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNjQsNiArNzIsOCBAQCBjb25zdCBIYXNo
TWFwPFNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBT
ZXNzaW9uVHJhY2tlcgogCiBjb25zdCBTdHJpbmcmIFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlm
aWVyQmFzZSgpCiB7CisgICAgaWYgKGlkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpCisgICAgICAg
IGlkZW50aWZpZXJCYXNlKCkgPSAiIjsKICAgICByZXR1cm4gaWRlbnRpZmllckJhc2UoKTsKIH0K
IApAQCAtODEsMjAgKzkxLDQxIEBAIFNlc3Npb25JRCBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklE
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKICAgICByZXR1cm4gc3RvcmFn
ZVNlc3Npb25Ub0lEKCkuZ2V0KCZzZXNzaW9uKTsKIH0KIAotdm9pZCBTZXNzaW9uVHJhY2tlcjo6
c2V0U2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPiBzZXNzaW9uKQordm9pZCBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJl
ZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIEFTU0VSVChzZXNzaW9uSUQgIT0g
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CisKKyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworCisgICAgaWYg
KFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc3RhdGljU2Vz
c2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lvbklELCBzdGF0aWNTZXNzaW9uQ291bnRlcigpLmdldChz
ZXNzaW9uSUQpICsgMSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIVNl
c3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6Omdl
dElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lv
bklEKCkpKTsKICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5zZXQoc2Vzc2lvbi5nZXQoKSwgc2Vz
c2lvbklEKTsKICAgICBzdGF0aWNTZXNzaW9uTWFwKCkuc2V0KHNlc3Npb25JRCwgc3RkOjptb3Zl
KHNlc3Npb24pKTsKKyAgICBzdGF0aWNTZXNzaW9uQ291bnRlcigpLnNldChzZXNzaW9uSUQsIDEp
OwogfQogCi12b2lkIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihTZXNzaW9uSUQgc2Vz
c2lvbklEKQordm9pZCBTZXNzaW9uVHJhY2tlcjo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
aWYgKHN0YXRpY1Nlc3Npb25NYXAoKS5jb250YWlucyhzZXNzaW9uSUQpKSB7CisKKyAgICBBU1NF
UlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworCisgICAgQVNTRVJUKHN0YXRpY1Nlc3Npb25N
YXAoKS5jb250YWlucyhzZXNzaW9uSUQpKTsKKworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSBzdGF0
aWNTZXNzaW9uQ291bnRlcigpLmdldChzZXNzaW9uSUQpOworCisgICAgaWYgKGNvdW50ZXIgPT0g
MSkgewogICAgICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5yZW1vdmUoc2Vzc2lvbihzZXNzaW9u
SUQpKTsKICAgICAgICAgc3RhdGljU2Vzc2lvbk1hcCgpLnJlbW92ZShzZXNzaW9uSUQpOwotICAg
IH0KKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5yZW1vdmUoc2Vzc2lvbklEKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lvbklELCBj
b3VudGVyIC0gMSk7CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNl
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TZXNzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmgKaW5kZXggMGIwMzAyOS4uYTJjODliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Np
b25UcmFja2VyLmgKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIGdldElkZW50aWZpZXJCYXNlKCk7CiAgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogc2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHN0YXRpYyBX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYpOwotICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklE
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPik7Ci0gICAg
c3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICBzdGF0
aWMgdm9pZCBhZGRTZXNzaW9uUmVmZXJlbmNlKFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAg
IHN0YXRpYyB2b2lkIHNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggYzc5ZGE4My4u
YmI2ZjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5o
CkBAIC0xMTMsNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oRnJhbWVG
bGF0dGVuaW5nRW5hYmxlZCwgZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgREVG
QVVMVF9GUkFNRV9GTEFUVEVOSU5HX0VOQUJMRUQpIFwKICAgICBtYWNybyhEZXZlbG9wZXJFeHRy
YXNFbmFibGVkLCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAog
ICAgIG1hY3JvKEphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIGphdmFTY3JpcHRFeHBlcmlt
ZW50c0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCi0gICAgbWFjcm8oUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
KyAgICBtYWNybyhMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBsZWdhY3lQcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKFRleHRBcmVhc0Fy
ZVJlc2l6YWJsZSwgdGV4dEFyZWFzQXJlUmVzaXphYmxlLCBCb29sLCBib29sLCBERUZBVUxUX1RF
WFRfQVJFQVNfQVJFX1JFU0laQUJMRSkgXAogICAgIG1hY3JvKEphdmFTY3JpcHRDYW5PcGVuV2lu
ZG93c0F1dG9tYXRpY2FsbHksIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHks
IEJvb2wsIGJvb2wsIERFRkFVTFRfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJ
Q0FMTFkpIFwKICAgICBtYWNybyhIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQsIGh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGE2NTBlN2MuLjUwOGEyMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5jZXNDb3B5RGVm
YXVsdFRleHRFbmNvZGluZ05hbWUoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlCiAKIHZvaWQg
V0tQcmVmZXJlbmNlc1NldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvSW1wbChwcmVmZXJlbmNlc1Jl
ZiktPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CisgICAgdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+c2V0TGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGVkKTsKIH0K
IAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNS
ZWYpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKIH0KIAogdm9pZCBXS1By
ZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLmNwcAppbmRleCA2YTlkY2E0Li5iZTNm
MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFn
ZVByaXZhdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tQYWdlUHJpdmF0ZU1hYy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgcGlkX3QgV0tQYWdlR2V0UHJv
Y2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2VSZWYpCiBib29sIFdLUGFnZUlzVVJMS25vd25I
U1RTSG9zdChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsKQogewogICAgIFdlYlBhZ2VQcm94
eSogd2ViUGFnZVByb3h5ID0gdG9JbXBsKHBhZ2UpOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCA9IHdlYlBhZ2VQcm94eS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gd2Vi
UGFnZVByb3h5LT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogCiAgICAgcmV0dXJuIHdlYlBh
Z2VQcm94eS0+cHJvY2VzcygpLmNvbnRleHQoKS5pc1VSTEtub3duSFNUU0hvc3QodG9JbXBsKHVy
bCktPnN0cmluZygpLCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMTRmN2FiMC4uYWE3
NGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTg2OSwxMiArODY5LDEyIEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOU0RhdGEodW5z
aWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIC0gKEJPT0wpX3ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQKIHsKLSAgICByZXR1cm4gW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3By
ZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIFtfY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy0+bGVnYWN5UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpOwogfQogCiAtICh2b2lkKV9zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkOihCT09M
KXByaXZhdGVCcm93c2luZ0VuYWJsZWQKIHsKLSAgICBbX2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdLT5fcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCk7CisgICAgW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVu
Y2VzLT5zZXRMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0
TWlsZXN0b25lcyhfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBldmVudHMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3MuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcAppbmRleCAxZWRh
Njc2Li43NGFmMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfc2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19zZXR0aW5ncy5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBFaW5hX0Jvb2wgZXdrX3NldHRp
bmdzX3ByaXZhdGVfYnJvd3NpbmdfZW5hYmxlZF9zZXQoRXdrX1NldHRpbmdzKiBzZXR0aW5ncywg
RWluYQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXR0aW5ncywgZmFs
c2UpOwogCi0gICAgc2V0dGluZ3MtPnByZWZlcmVuY2VzKCkuc2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChlbmFibGUpOworICAgIHNldHRpbmdzLT5wcmVmZXJlbmNlcygpLnNldExlZ2FjeVByaXZh
dGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzAz
LDcgKzMwMyw3IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfcHJpdmF0ZV9icm93c2luZ19lbmFi
bGVkX2dldChjb25zdCBFd2tfU2V0dGluZ3MqIHNldHRpbmdzCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNldHRpbmdzLCBmYWxzZSk7CiAKLSAgICByZXR1cm4gc2V0dGlu
Z3MtPnByZWZlcmVuY2VzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBz
ZXR0aW5ncy0+cHJlZmVyZW5jZXMoKS5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiB9
CiAKIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfdGV4dF9hdXRvc2l6aW5nX2VuYWJsZWRfc2V0KEV3
a19TZXR0aW5ncyogc2V0dGluZ3MsIEVpbmFfQm9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggZmFlY2Fm
Ni4uNDRiMmY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFNldHRpbmdzLmNwcApAQCAtMjA5Myw3ICsyMDkzLDcgQEAgZ2Jvb2xlYW4gd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNl
dHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNl
cy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+
cHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKIH0KIAogLyoqCkBA
IC0yMTA4LDExICsyMTA4LDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcHJp
dmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZh
bHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBi
b29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3Np
bmdFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0TGVnYWN5UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChlbmFibGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLXByaXZhdGUtYnJvd3NpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUElTZXNzaW9uLmgKaW5kZXggZmZjNWIyYi4uYmZiODkzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJU2Vzc2lvbi5oCkBAIC00MSwxMCArNDEsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aXNFcGhlbWVyYWwoKSBjb25zdDsKICAgICBXZWJDb3JlOjpTZXNzaW9uSUQgZ2V0SUQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIH5TZXNzaW9uKCk7CisgICAgZXhwbGljaXQgU2Vzc2lvbihXZWJDb3Jl
OjpTZXNzaW9uSUQpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNlc3Npb24oYm9vbCBpc0Vw
aGVtZXJhbCk7Ci0gICAgZXhwbGljaXQgU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAg
IFdlYkNvcmU6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCAxN2Q5NzI0Li5lNGQ3Zjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0zODMsOCArMzgzLDYgQEAgdm9pZCBXZWJD
b250ZXh0OjplbnN1cmVOZXR3b3JrUHJvY2VzcygpCiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCi0gICAgcGFyYW1ldGVycy5wcml2YXRlQnJvd3Np
bmdFbmFibGVkID0gV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3Np
bmcoKTsKLQogICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IG1fY2FjaGVNb2RlbDsKIAogICAg
IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gZGlza0NhY2hlRGlyZWN0b3J5KCk7CkBA
IC00NTksNDQgKzQ1NywzMCBAQCB2b2lkIFdlYkNvbnRleHQ6OmdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1BybwogfQogI2VuZGlmCiAK
LXZvaWQgV2ViQ29udGV4dDo6d2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3NpbmcoKQordm9pZCBX
ZWJDb250ZXh0Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBj
b25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IGFsbENvbnRleHRzKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsr
aSkKLSAgICAgICAgY29udGV4dHNbaV0tPnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVC
cm93c2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vz
c2VzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytp
KQorICAgICAgICBtX3Byb2Nlc3Nlc1tpXS0+d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hh
bmdlZCgpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3Np
bmcoKQordm9pZCBXZWJDb250ZXh0OjppbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCgpCiB7
Ci0gICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBhbGxDb250ZXh0cygp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNv
dW50OyArK2kpCi0gICAgICAgIGNvbnRleHRzW2ldLT5zZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpZiAoIW1fcHJpdmF0ZUJyb3dzaW5n
Q291bnQpCisgICAgICAgIHNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcodHJ1ZSk7CisgICAgbV9w
cml2YXRlQnJvd3NpbmdDb3VudCsrOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OndpbmRvd1NlcnZl
ckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQordm9pZCBXZWJDb250ZXh0OjpkZWNyZW1lbnRQcml2
YXRlQnJvd3NpbmdDb3VudCgpCiB7Ci0gICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vz
c2VzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytp
KQotICAgICAgICBtX3Byb2Nlc3Nlc1tpXS0+d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hh
bmdlZCgpOworICAgIG1fcHJpdmF0ZUJyb3dzaW5nQ291bnQtLTsKKyAgICBpZiAoIW1fcHJpdmF0
ZUJyb3dzaW5nQ291bnQpCisgICAgICAgIHNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcoZmFsc2Up
OwogfQogCi12b2lkIFdlYkNvbnRleHQ6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVC
cm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQordm9pZCBXZWJDb250
ZXh0Ojpzb21lUGFnZUlzUHJpdmF0ZUJyb3dzaW5nKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCkKIHsKICAgICBtX2ljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2
YXRlQnJvd3NpbmdFbmFibGVkKTsKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAg
aWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFRChORVRXT1JL
X1BST0NFU1MpCi0KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgc2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7Ci0gICAgZWxz
ZQotICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCgpKSk7CiB9CiAKIHZvaWQgKCpzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2spKFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lKTsKQEAgLTYyNSw5ICs2MDksNiBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYkNv
bnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlNldFFPUyh3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpLCB3ZWJQcm9jZXNzVGhy
b3VnaHB1dFFPUygpKSwgMCk7CiAjZW5kaWYKIAotICAgIGlmIChXZWJQcmVmZXJlbmNlczo6YW55
UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25J
RDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7Ci0KICAgICBtX3Byb2Nlc3Nlcy5hcHBl
bmQocHJvY2Vzcyk7CiAKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5UHJvY2VzcykgewpAQCAtNzc0LDggKzc1NSw2IEBAIFBhc3NSZWZQdHI8V2Vi
UGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlBhCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSAmY29uZmlndXJh
dGlvbi5wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCk7CiAgICAgaWYgKCFjb25maWd1cmF0aW9uLnZp
c2l0ZWRMaW5rUHJvdmlkZXIpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtQcm92
aWRlciA9IG1fdmlzaXRlZExpbmtQcm92aWRlci5nZXQoKTsKLSAgICBpZiAoIWNvbmZpZ3VyYXRp
b24uc2Vzc2lvbikKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uID0gY29uZmlndXJhdGlv
bi5wcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gJkFQSTo6U2Vzc2lvbjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSA6ICZBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCk7
CiAKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzOwogICAgIGlmIChtX3Byb2Nl
c3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCA3ODkyMWRkLi4zODY0NTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTMwNCw5ICszMDQsNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIAotICAg
IHN0YXRpYyB2b2lkIHdpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0gICAgc3RhdGlj
IHZvaWQgd2lsbFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygpOwotCiAgICAgc3RhdGljIGJvb2wg
aXNFcGhlbWVyYWxTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICNpZiBVU0UoU09VUCkK
QEAgLTM0MCw2ICszMzcsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNZW1vcnlDYWNoZURp
c2FibGVkKGJvb2wpOwogCisgICAgdm9pZCBpbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCgp
OworICAgIHZvaWQgZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKTsKKworICAgIGJvb2wg
YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0
ZUJyb3dzaW5nQ291bnQgPiAwOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKIApAQCAtNDIxLDcgKzQyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRQbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQg
cGx1Z0luT3JpZ2luSGFzaCk7CiAgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0
aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOwogCi0gICAgdm9pZCBzZXRBbnlQYWdlR3Jv
dXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc29tZVBh
Z2VJc1ByaXZhdGVCcm93c2luZyhib29sKTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgIC8vIFBsdWdpbkluZm9TdG9yZUNsaWVudDoKQEAgLTUzNiw2ICs1MzgsOCBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0
aW9uYXJ5PiBtX2J1bmRsZVBhcmFtZXRlcnM7CiAjZW5kaWYKKworICAgIHVuc2lnbmVkIG1fcHJp
dmF0ZUJyb3dzaW5nQ291bnQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRleCA3YWRhZTg5Li5hNWZk
NzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcApA
QCAtNzksNyArNzksNyBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCkKIAogICAgIC8vIEZJWE1FOiBXZWJJY29uRGF0YWJhc2VzIGFyZSBw
ZXItV2ViQ29udGV4dCBidXQgV2ViQ29udGV4dCdzIGRvbid0IGhhdmUgdGhlaXIgb3duIG5vdGlv
biBvZiB0aGUgY3VycmVudCBwcml2YXRlIGJyb3dzaW5nIHNldHRpbmcuCiAgICAgLy8gQXMgd2Ug
Y2xlYW4gdXAgcHJpdmF0ZSBicm93c2luZyB0aHJvdWdob3V0IHRoZSBzdGFjayB3ZSBuZWVkIHRv
IGNsZWFuIGl0IHVwIGhlcmUuCi0gICAgbV9pY29uRGF0YWJhc2VJbXBsLT5zZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dz
aW5nKCkpOworICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChtX3dlYkNvbnRleHQtPmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CiAKICAg
ICBpZiAoIW1faWNvbkRhdGFiYXNlSW1wbC0+b3BlbihkaXJlY3RvcnlOYW1lKHBhdGgpLCBwYXRo
R2V0RmlsZU5hbWUocGF0aCkpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4g
V2ViS2l0MiBpY29uIGRhdGFiYXNlIG9uIGRpc2siKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGQ2YjJmMS4uYzAwNzc0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckVt
YmVkZGVkT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkQ3J5cHRvS2V5V3Jh
cC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklESGFzaC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVz
Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTMwMyw3ICszMDQsNyBAQCBXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIHVpbgogICAgICwgbV9pc1RyYWNraW5nVG91Y2hFdmVudHMoZmFsc2UpCiAjZW5kaWYK
ICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKLSAgICAsIG1fc2Vzc2lvbigqY29uZmlndXJhdGlvbi5z
ZXNzaW9uKQorICAgICwgbV9zZXNzaW9uKEFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSkK
ICAgICAsIG1faXNQYWdlU3VzcGVuZGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoKSkKQEAgLTM3Niw3ICszNzcsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IHVpbgogICAgIC8vIEZJWE1FOiBJZiB3ZSBldmVyIGV4cG9zZSB0aGUgc2Vzc2lvbiBzdG9yYWdl
IHNpemUgYXMgYSBwcmVmZXJlbmNlLCB3ZSBuZWVkIHRvIHBhc3MgaXQgaGVyZS4KICAgICBJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vz
c1Byb3h5OjpTdGF0ZTo6UnVubmluZyA/IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpIDogbnVsbHB0
cjsKICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdG9yYWdlTWFuYWdlcigpLmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKG1fcGFnZUlELCBjb25uZWN0aW9uLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIHNldFNlc3Npb24oKmNvbmZpZ3VyYXRpb24uc2Vz
c2lvbik7CisgICAgaWYgKG1fcHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSkKKyAgICAgICAgc2V0U2Vzc2lvbkltcGwoQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbigpLCBmYWxzZSk7CiB9CiAKIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCkBA
IC0zOTUsNiArMzk3LDcgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKICNpZm5kZWYg
TkRFQlVHCiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgorICAg
IHNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpKTsKIH0KIAogUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllciBXZWJQYWdlUHJveHk6OnByb2Nlc3NJZGVudGlmaWVyKCkgY29u
c3QKQEAgLTUyNywxNSArNTMwLDMwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2Vi
UHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCiAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzZXRTZXNzaW9uSW1wbChBUEk6OlNlc3Npb24mIHNlc3Npb24sIGJvb2wgc2VuZE1lc3NhZ2VU
b1BhZ2UpCiB7Ci0gICAgbV9zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Npb25JRChzZXNzaW9uLmdldElEKCkpLCBtX3BhZ2VJ
RCk7CisgICAgaWYgKHNlc3Npb24uZ2V0SUQoKSAhPSBtX3Nlc3Npb24tPmdldElEKCkpIHsKKyAg
ICAgICAgaWYgKHNlbmRNZXNzYWdlVG9QYWdlKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTZXNzaW9uSUQoc2Vzc2lvbi5nZXRJRCgpKSwgbV9wYWdl
SUQpOworCisgICAgICAgIGlmIChzZXNzaW9uLmdldElEKCkuaXNFcGhlbWVyYWwoKSAmJiAhbV9z
ZXNzaW9uLT5nZXRJRCgpLmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPmNv
bnRleHQoKS5pbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCgpOworICAgICAgICBlbHNlIGlm
ICghc2Vzc2lvbi5nZXRJRCgpLmlzRXBoZW1lcmFsKCkgJiYgbV9zZXNzaW9uLT5nZXRJRCgpLmlz
RXBoZW1lcmFsKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5kZWNyZW1lbnRQ
cml2YXRlQnJvd3NpbmdDb3VudCgpOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAg
ICBpZiAoc2Vzc2lvbi5pc0VwaGVtZXJhbCgpKQotICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQo
KS5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbi5nZXRJRCgpKSk7CisgICAgICAgIGlmICht
X3Nlc3Npb24tPmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQo
KS5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92
ZVNlc3Npb25SZWZlcmVuY2UobV9zZXNzaW9uLT5nZXRJRCgpKSk7CisgICAgICAgIGlmIChzZXNz
aW9uLmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zZW5k
VG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFNlc3Npb25S
ZWZlcmVuY2Uoc2Vzc2lvbi5nZXRJRCgpKSk7CiAjZW5kaWYKKyAgICAgICAgbV9zZXNzaW9uID0g
c2Vzc2lvbjsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRTZXNzaW9uKEFQSTo6
U2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBzZXRTZXNzaW9uSW1wbChzZXNzaW9uLCB0cnVlKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKQEAgLTIwODMsNiAr
MjEwMSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogICAg
IGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9wcmVmZXJlbmNl
cy0+bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpICYmIG1fc2Vzc2lvbi0+Z2V0SUQoKSA9
PSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKKyAgICAgICAgc2V0U2Vzc2lvbihBUEk6
OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCkpOworICAgIGVsc2UgaWYgKCFtX3ByZWZl
cmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgJiYgbV9zZXNzaW9uLT5nZXRJ
RCgpID09IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKQorICAgICAgICBzZXRT
ZXNzaW9uKEFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSk7CisKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKICAgICBpZiAobV9wcmVmZXJlbmNlcy0+ZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCgpKQogICAgICAgICBpbnNwZWN0b3IoKS0+ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbigpOwpA
QCAtMjYyMyw3ICsyNjQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKIAogLy8gVUlDbGll
bnQKIAotdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIHVpbnQz
Ml90IG9wYXF1ZU1vZGlmaWVycywgaW50MzJfdCBvcGFxdWVNb3VzZUJ1dHRvbiwgdWludDY0X3Qm
IG5ld1BhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgbmV3UGFnZVBhcmFtZXRlcnMp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgdWludDMyX3Qg
b3BhcXVlTW9kaWZpZXJzLCBpbnQzMl90IG9wYXF1ZU1vdXNlQnV0dG9uLCBTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCYgbmV3UGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBu
ZXdQYWdlUGFyYW1ldGVycykKIHsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlID0g
bV91aUNsaWVudC0+Y3JlYXRlTmV3UGFnZSh0aGlzLCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywg
c3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ob3BhcXVlTW9kaWZpZXJzKSwgc3RhdGlj
X2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihvcGFxdWVNb3VzZUJ1dHRvbikpOwogICAgIGlm
ICghbmV3UGFnZSkgewpAQCAtMjYzMSw2ICsyNjU0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNy
ZWF0ZU5ld1BhZ2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dG
ZWEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFQSTo6U2Vzc2lvbiBzZXNzaW9uID0g
QVBJOjpTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgbmV3UGFnZS0+c2V0U2Vzc2lvbkltcGwoc2Vz
c2lvbiwgZmFsc2UpOworCiAgICAgbmV3UGFnZUlEID0gbmV3UGFnZS0+cGFnZUlEKCk7CiAgICAg
bmV3UGFnZVBhcmFtZXRlcnMgPSBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKTsKICAgICBw
cm9jZXNzKCkuY29udGV4dCgpLnN0b3JhZ2VNYW5hZ2VyKCkuY2xvbmVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShtX3BhZ2VJRCwgbmV3UGFnZS0+cGFnZUlEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDgyYTEyNWEuLjE4Yzg0ZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTMyMyw3ICszMjMsNiBAQCBzdHJ1Y3QgV2Vi
UGFnZUNvbmZpZ3VyYXRpb24gewogICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0
cjsKICAgICBXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwogICAgIFZpc2l0
ZWRMaW5rUHJvdmlkZXIqIHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwotICAgIEFQSTo6
U2Vzc2lvbiogc2Vzc2lvbiA9IG51bGxwdHI7CiAgICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFn
ZSA9IG51bGxwdHI7CiB9OwogCkBAIC05MjgsNiArOTI3LDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCBzZXRTZXNzaW9uSW1w
bChBUEk6OlNlc3Npb24mLCBib29sIHNlbmRNZXNzYWdlVG9QYWdlKTsKKwogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2Fn
ZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlk
ZTsKQEAgLTk4MSw3ICs5ODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFN1Ym1pdEZvcm0o
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIElQQzo6TWVzc2FnZURlY29kZXImKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZv
aWQgY3JlYXRlTmV3UGFnZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIHVpbnQzMl90IG1vZGlmaWVycywgaW50MzJfdCBtb3Vz
ZUJ1dHRvbiwgdWludDY0X3QmIG5ld1BhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYp
OworICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIHVpbnQzMl90IG1vZGlmaWVycywgaW50
MzJfdCBtb3VzZUJ1dHRvbiwgV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCYgbmV3UGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBzaG93UGFnZSgpOwogICAg
IHZvaWQgY2xvc2VQYWdlKGJvb2wgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIpOwogICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYsIFJlZlB0
cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBs
eT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggZWU4NTllOC4uYjIzNjE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBVSSBtZXNzYWdlcwotICAgIENyZWF0ZU5l
d1BhZ2UoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzIHdpbmRvd0ZlYXR1cmVzLCB1aW50MzJfdCBtb2RpZmllcnMsIGludDMyX3QgbW91c2VC
dXR0b24pIC0+ICh1aW50NjRfdCBuZXdQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBuZXdQYWdlUGFyYW1ldGVycykKKyAgICBDcmVhdGVOZXdQYWdlKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0
dXJlcywgdWludDMyX3QgbW9kaWZpZXJzLCBpbnQzMl90IG1vdXNlQnV0dG9uLCBXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6OldlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgbmV3UGFnZVBhcmFtZXRlcnMpCiAgICAgU2hvd1BhZ2UoKQog
ICAgIENsb3NlUGFnZShib29sIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIFJ1bkphdmFT
Y3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkgRGVsYXll
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggMGY3
ZGE3OS4uZmU1YzllOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
ZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5j
ZXMuY3BwCkBAIC0zMiwxMCArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gRklY
TUU6IE1hbmlwdWxhdGluZyB0aGlzIHZhcmlhYmxlIGlzIG5vdCB0aHJlYWQgc2FmZS4KLS8vIElu
c3RlYWQgb2YgdHJhY2tpbmcgcHJpdmF0ZSBicm93c2luZyBzdGF0ZSBhcyBhIGJvb2xlYW4gcHJl
ZmVyZW5jZSwgd2Ugc2hvdWxkIGxldCB0aGUgY2xpZW50IHByb3ZpZGUgc3RvcmFnZSBzZXNzaW9u
cyBleHBsaWNpdGx5Lgotc3RhdGljIHVuc2lnbmVkIHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudDsK
LQogV2ViUHJlZmVyZW5jZXM6OldlYlByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewpAQCAtNjIsMjUgKzU4LDEyIEBA
IHZvaWQgV2ViUHJlZmVyZW5jZXM6OmFkZFBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkp
CiB7CiAgICAgQVNTRVJUKCFtX3BhZ2VzLmNvbnRhaW5zKCZ3ZWJQYWdlUHJveHkpKTsKICAgICBt
X3BhZ2VzLmFkZCgmd2ViUGFnZVByb3h5KTsKLQotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkpIHsKLSAgICAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQpCi0gICAgICAg
ICAgICBXZWJDb250ZXh0Ojp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpOwotCi0gICAg
ICAgICsrcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotICAgIH0KIH0KIAogdm9pZCBXZWJQcmVm
ZXJlbmNlczo6cmVtb3ZlUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKIHsKICAgICBB
U1NFUlQobV9wYWdlcy5jb250YWlucygmd2ViUGFnZVByb3h5KSk7CiAgICAgbV9wYWdlcy5yZW1v
dmUoJndlYlBhZ2VQcm94eSk7Ci0KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSB7
Ci0gICAgICAgIC0tcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotICAgICAgICBpZiAoIXByaXZh
dGVCcm93c2luZ1BhZ2VDb3VudCkKLSAgICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNp
bmdQcml2YXRlQnJvd3NpbmcoKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVw
ZGF0ZSgpCkBAIC05Nyw4ICs4MCw4IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmlu
Z1ZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhCiAKIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwg
Ym9vbCB2YWx1ZSkKIHsKLSAgICBpZiAoa2V5ID09IFdlYlByZWZlcmVuY2VzS2V5Ojpwcml2YXRl
QnJvd3NpbmdFbmFibGVkS2V5KCkpIHsKLSAgICAgICAgdXBkYXRlUHJpdmF0ZUJyb3dzaW5nVmFs
dWUodmFsdWUpOworICAgIGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeVByaXZh
dGVCcm93c2luZ0VuYWJsZWRLZXkoKSkgeworICAgICAgICB1cGRhdGVMZWdhY3lQcml2YXRlQnJv
d3NpbmdWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNCwyNyAr
MTA3LDIwIEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUZsb2F0VmFsdWVGb3JLZXkoY29u
c3QgU3RyaW5nJiBrZXksIGZsb2F0IHZhbHVlKQogICAgIHVwZGF0ZSgpOyAvLyBGSVhNRTogT25s
eSBzZW5kIG92ZXIgdGhlIGNoYW5nZWQga2V5IGFuZCB2YWx1ZS4KIH0KIAotdm9pZCBXZWJQcmVm
ZXJlbmNlczo6dXBkYXRlUHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSkKK3ZvaWQgV2Vi
UHJlZmVyZW5jZXM6OnVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVlKGJvb2wgdmFsdWUp
CiB7Ci0gICAgcGxhdGZvcm1VcGRhdGVCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSwgdmFsdWUpOwotCi0gICAgdW5zaWduZWQgcGFn
ZXNDaGFuZ2VkID0gbV9wYWdlcy5zaXplKCk7Ci0gICAgaWYgKCFwYWdlc0NoYW5nZWQpCi0gICAg
ICAgIHJldHVybjsKKyAgICBwbGF0Zm9ybVVwZGF0ZUJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpLCB2YWx1ZSk7CiAKICAg
ICBpZiAodmFsdWUpIHsKLSAgICAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQpCi0g
ICAgICAgICAgICBXZWJDb250ZXh0Ojp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpOwot
ICAgICAgICBwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQgKz0gcGFnZXNDaGFuZ2VkOwotICAgIH0K
LQotICAgIHVwZGF0ZSgpOyAvLyBGSVhNRTogT25seSBzZW5kIG92ZXIgdGhlIGNoYW5nZWQga2V5
IGFuZCB2YWx1ZS4KLQotICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVC
cm93c2luZ1BhZ2VDb3VudCA+PSBwYWdlc0NoYW5nZWQpOwotICAgICAgICBwcml2YXRlQnJvd3Np
bmdQYWdlQ291bnQgLT0gcGFnZXNDaGFuZ2VkOwotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2lu
Z1BhZ2VDb3VudCkKLSAgICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNpbmdQcml2YXRl
QnJvd3NpbmcoKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlcykgeworICAgICAg
ICAgICAgaWYgKHBhZ2UtPnNlc3Npb25JRCgpID09IFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb24oQVBJOjpTZXNz
aW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7Cisg
ICAgICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZXMpIHsKKyAgICAgICAgICAgIGlmIChwYWdl
LT5zZXNzaW9uSUQoKSA9PSBXZWJDb3JlOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9u
SUQoKSkKKyAgICAgICAgICAgICAgICBwYWdlLT5zZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbjo6ZGVm
YXVsdFNlc3Npb24oKSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE2Niw5ICsxNDIsNCBA
QCBGT1JfRUFDSF9XRUJLSVRfUFJFRkVSRU5DRShERUZJTkVfUFJFRkVSRU5DRV9HRVRURVJfQU5E
X1NFVFRFUlMpCiAKICN1bmRlZiBERUZJTkVfUFJFRkVSRU5DRV9HRVRURVJfQU5EX1NFVFRFUlMK
IAotYm9vbCBXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygp
Ci17Ci0gICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudDsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJl
ZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCmlu
ZGV4IGRkNWUyZDEuLmYxZTVlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcmVmZXJlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVm
ZXJlbmNlcy5oCkBAIC02OCw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAvLyBFeHBvc2VkIGZvciBX
ZWJLaXRUZXN0UnVubmVyIHVzZSBvbmx5LgogICAgIHZvaWQgZm9yY2VVcGRhdGUoKSB7IHVwZGF0
ZSgpOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBhbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5n
KCk7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5n
Jik7CiAgICAgV2ViUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXMmKTsKQEAgLTg5LDcg
Kzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlRG91YmxlVmFsdWVGb3JL
ZXkoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSB2YWx1ZSk7CiAgICAgdm9pZCBwbGF0Zm9ybVVw
ZGF0ZUZsb2F0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0IHZhbHVlKTsKIAot
ICAgIHZvaWQgdXBkYXRlUHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSk7CisgICAgdm9p
ZCB1cGRhdGVMZWdhY3lQcml2YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKTsKIAogICAgIFN0
cmluZyBtX2lkZW50aWZpZXI7CiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBtX3N0b3JlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAppbmRleCA3Njg3MzBkLi4zNTRiNzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcApAQCAtMzA5LDkgKzMwOSwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvbwogICAg
IC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0aW9uIGRvZXNu
J3Qgd29yayB3aXRoIE5ldHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExNTI3ND4uCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdP
UkspIHx8IFVTRShTT1VQKQogICAgIGlmIChlbmFibGVkKQotICAgICAgICBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKKyAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Np
b25SZWZlcmVuY2UoU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogICAgIGVs
c2UKLSAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRDo6bGVn
YWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKKyAgICAgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNz
aW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSkKKyAgICAgICAgICAgIFNl
c3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRDo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCgpKTsKICNlbmRpZgogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdl
cyA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMo
KTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdGVyID0gcGFnZXMuYmVnaW4o
KTsgaXRlciAhPSBwYWdlcy5lbmQoKTsgKytpdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGRmZjgxNWIuLmMwOTE1N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTE1MzMsNyArMTUzMyw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXNQcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkKICAgICBpZiAoIWZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBmcmFtZSgpLT5zZXR0aW5ncygp
LnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgpLT5z
ZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogfQogCiBib29sIFBsdWdpblZpZXc6OmFzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAKaW5kZXggMGNkOTMzOS4uYWYxMzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApA
QCAtMjExLDEzICsyMTEsMTQgQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXMKIAogICAgIHVpbnQ2
NF90IG5ld1BhZ2VJRCA9IDA7CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZShyZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLCB3aW5kb3dGZWF0dXJlcywgbW9kaWZpZXJzLCBtb3VzZUJ1
dHRvbiksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1Bh
Z2VJRCwgcGFyYW1ldGVycyksIG1fcGFnZS0+cGFnZUlEKCkpKQorICAgIGlmICghV2ViUHJvY2Vz
czo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZShyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCB3
aW5kb3dGZWF0dXJlcywgbW9kaWZpZXJzLCBtb3VzZUJ1dHRvbiwgZnJhbWUtPnBhZ2UoKS0+c2Vz
c2lvbklEKCkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpSZXBseShu
ZXdQYWdlSUQsIHBhcmFtZXRlcnMpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBpZiAoIW5ld1BhZ2VJRCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5jcmVhdGVXZWJQYWdlKG5ld1BhZ2VJRCwgcGFyYW1ldGVycyk7Cisg
ICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViUGFnZShuZXdQYWdlSUQpLT5zZXRTZXNzaW9uSUQo
ZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS53ZWJQYWdlKG5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCBkZWYyMDM4Li5iMzk2Y2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw5
ICs0MCw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IHJlbW92ZSBw
bGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNrZXIKLSAgICBzdGF0aWMg
dm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0K
ICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQ
Q29va2llQWNjZXB0UG9saWN5KTsKIAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFt
ZUxvYWRlckNsaWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQubW0KaW5kZXggMjZiZmZjNC4uY2ZlOWRlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC00MiwyMiArNDIsNiBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi12b2lkIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
OwotCi0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFN0cmluZyBiYXNlOwotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0
SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07Ci0gICAgZWxzZQotICAgICAgICBiYXNlID0gU2Vz
c2lvblRyYWNrZXI6OmdldElkZW50aWZpZXJCYXNlKCk7Ci0KLSAgICBTZXNzaW9uVHJhY2tlcjo6
c2V0U2Vzc2lvbihzZXNzaW9uSUQsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbihiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNl
c3Npb25JRCgpKSkpOwotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENv
b2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5KQogewogICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFn
ZV0gc2V0Q29va2llQWNjZXB0UG9saWN5OnN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeT4ocG9saWN5KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5jcHAKaW5kZXggNzc3MzdkNC4uZTk0MzI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcApAQCAtMzgsMTYgKzM4LDYgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lv
bklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYg
KFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFN0cmluZzo6bnVtYmVyKHNlc3Np
b25JRC5zZXNzaW9uSUQoKSkpKTsKLX0KLQogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCiAgICAgOiBGcmFtZU5ldHdv
cmtpbmdDb250ZXh0KGZyYW1lLT5jb3JlRnJhbWUoKSkKIHsKQEAgLTU1LDcgKzQ1LDcgQEAgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFt
ZSogZnJhbWUpCiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIGlmIChmcmFtZSgpICYmIGZyYW1l
KCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFtZSgp
ICYmIGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAg
cmV0dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKSk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oCmluZGV4IDkzNDEwYjMuLjE5NGE2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3Vw
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDMsOCArNDMsNiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFt
ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLQogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJG
cmFtZUxvYWRlckNsaWVudCgpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDExOWUyZWIuLjdhN2QzNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUw
LDYgKzUwLDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZv
LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIu
aCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgpAQCAtMjExOSwx
NCArMjEyMCw2IEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSh1bnNpZ25lZCBs
YXllckhvc3RpbmdNb2RlKQogICAgICAgICBwbHVnaW5WaWV3LT5zZXRMYXllckhvc3RpbmdNb2Rl
KG1fbGF5ZXJIb3N0aW5nTW9kZSk7CiB9CiAKLVNlc3Npb25JRCBXZWJQYWdlOjpzZXNzaW9uSUQo
KSBjb25zdAotewotICAgIGlmIChtX3BhZ2UtPmlzU2Vzc2lvbklEU2V0KCkpCi0gICAgICAgIHJl
dHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOwotCi0gICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3Mo
KS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotfQotCiBib29sIFdlYlBh
Z2U6OmlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKTsKQEAgLTIxMzQsOSArMjEyNywxNCBAQCBib29sIFdlYlBhZ2U6
OmlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlOjpzZXRTZXNz
aW9uSUQoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChz
ZXNzaW9uSUQpOwotICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQp
OworICAgIGlmIChzZXNzaW9uSUQgIT0gbV9wYWdlLT5zZXNzaW9uSUQoKSkgeworICAgICAgICBB
U1NFUlQoc2Vzc2lvbklELmlzVmFsaWQoKSk7CisgICAgICAgIGlmIChtX3BhZ2UtPnNlc3Npb25J
RCgpLmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBTZXNzaW9uVHJhY2tlcjo6cmVtb3ZlU2Vz
c2lvblJlZmVyZW5jZShtX3BhZ2UtPnNlc3Npb25JRCgpKTsKKyAgICAgICAgaWYgKHNlc3Npb25J
RC5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Npb25S
ZWZlcmVuY2Uoc2Vzc2lvbklEKTsKKyAgICAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lv
bklEKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFj
dGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkKQEAgLTI0NDEsMTAgKzI0MzksOCBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
KQogICAgIHNldHRpbmdzLnNldExvY2FsU3RvcmFnZUVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpsb2NhbFN0b3JhZ2VFbmFibGVkS2V5KCkpKTsKICAg
ICBzZXR0aW5ncy5zZXRYU1NBdWRpdG9yRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6Onhzc0F1ZGl0b3JFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5n
cy5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZEtleSgpKSk7Ci0gICAgaWYgKG1f
cGFnZS0+aXNTZXNzaW9uSURTZXQoKSkKLSAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChtX3BhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwotICAgIGVsc2UK
LSAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRCb29s
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXko
KSkpOworICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6
OmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkgJiYgIW1fcGFnZS0+c2Vzc2lvbklE
KCkuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoU2Vzc2lvbklE
OjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogICAgIHNldHRpbmdzLnNldERldmVsb3BlckV4
dHJhc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpk
ZXZlbG9wZXJFeHRyYXNFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0
RXhwZXJpbWVudHNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Mu
c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6dGV4dEFyZWFzQXJlUmVzaXphYmxlS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDNhMThlNDEuLjBjYTJmYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkyLDcg
KzE5Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlSUQ7IH0KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29u
c3Q7CisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIGlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggY2JiZGU4My4uNjRmZjg1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zNDgsNiAr
MzQ4LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWUKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0
SWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNl
bmRpZgogCisgICAgaWYgKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVs
bCgpKQorICAgICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UoIiIpOworCiAg
ICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQogICAgICAg
ICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApA
QCAtNDcxLDIwICs0NzQsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01v
ZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKICAgICBtX2Z1bGxLZXli
b2FyZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQogCi12b2lk
IFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Np
b25JRCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNP
VVApCi0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihzZXNzaW9uSUQpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAgU2Vzc2lvblRy
YWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7Ci0jZW5kaWYKLX0KLQogRG93bmxvYWRN
YW5hZ2VyJiBXZWJQcm9jZXNzOjpkb3dubG9hZE1hbmFnZXIoKQogewogICAgIEFTU0VSVCghdXNl
c05ldHdvcmtQcm9jZXNzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApp
bmRleCBlZWU5ODAxLi4wMjQ4M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMTYzLDkgKzE2Myw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2Rl
bCh1aW50MzJfdCk7CiAKLSAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2Vi
Q29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0KICAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyh1aW50
NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdl
SUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KaW5kZXggMWZlOGNkNi4uZGZmNmZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDksMTAgKzQ5LDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SWdub3JlVExTRXJyb3Jz
KGJvb2wgaWdub3JlVExTRXJyb3JzKQogI2VuZGlmCiAKLSAgICAvLyBMZWdhY3kgcHJpdmF0ZSBi
cm93c2luZyBzZXNzaW9uIGlzIHBlciBwcm9jZXNzLiBJbmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2Ug
Z3JvdXBzIG1heSB1c2UgdGhlIHByaXZhdGUgc2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUgYXMg
YXBwcm9wcmlhdGUuCi0gICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0KICAgICAjIFBsdWctaW5zLgogICAgIERpZEFk
ZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRp
b25UaW1lKQogICAgIFJlc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hNYXA8dWlu
dDMyX3QsZG91YmxlPiBoYXNoZXMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMzQ3M2M0ZC4uM2YxOGRlNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE0LTAzLTEx
ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSBwcml2YXRl
IGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhbiBBUEkgdGVzdCBmb3IgZXBoZW1lcmFsIHNlc3Npb25z
IHNpbWlsYXIgdG8gUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2sKKyAg
ICAgICAgYW5kIGFub3RoZXIgb25lIHRvIHRlc3QgY29va2llcyBpbiBkaWZmZXJlbnQgc2Vzc2lv
bnMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFj
L0VwaGVtZXJhbFNlc3Npb25Db29raWVzLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpydW5KYXZhU2NyaXB0QWxlcnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25Q
dXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE0LTAzLTE3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIHNvcnQtZXhwb3J0LWZpbGUgLS1oZWxwIGRvZXNuJ3Qg
d29yayAobWlzc2luZyAndXNlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmU0MWY4Yy4u
NjgyNDUzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNyw2ICsxMDcsOCBAQAogCQk1
MkNCNDc0MTE0NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9u
RGlyZWN0b3J5VVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyQ0I0NzQwMTQ0OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmlu
Z1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwICovOyB9OwogCQk1MkU1Q0U0NjE0RDIxRTlEMDAzQjJC
RDggLyogUGFyZW50RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTJFNUNFNDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAq
LzsgfTsKIAkJNTJFNUNFNDkxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0
ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLzsgfTsKKwkJNzVC
OTFERTgxOEQ3NzcyQzAwQTk4Njg3IC8qIEVwaGVtZXJhbFNlc3Npb25Db29raWVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1QjkxREU3MThENzc3
MkMwMEE5ODY4NyAvKiBFcGhlbWVyYWxTZXNzaW9uQ29va2llcy5jcHAgKi87IH07CisJCTc1RjMx
MzQwMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVO
b0hpc3RvcnlDYWxsYmFjay5jcHAgKi87IH07CiAJCTc2RTE4MkRBMTU0NzU1MDEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc2RTE4MkQ5MTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1p
dEV2ZW50LmNwcCAqLzsgfTsKIAkJNzZFMTgyREQxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5k
U3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2
ZW50X0J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkRGMTU0NzY3RTYwMEYxRkFERCAvKiBhdXRv
LXN1Ym1pdHRpbmctZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAvKiBhdXRvLXN1Ym1p
dHRpbmctZm9ybS5odG1sICovOyB9OwpAQCAtNDMyLDYgKzQzNCw4IEBACiAJCTUyQ0I0NzQwMTQ0
OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlV
UkwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9hZEFsdGVybmF0
ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTJFNUNFNDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJFNUNFNDgxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVu
dEZyYW1lX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
YXJlbnRGcmFtZV9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NUI5
MURFNzE4RDc3NzJDMDBBOTg2ODcgLyogRXBoZW1lcmFsU2Vzc2lvbkNvb2tpZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvbkNvb2tpZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NUYzMTMzRjE4QzE3MUI3MDA0MUNB
RUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVwaGVtZXJhbFNlc3Npb25QdXNoU3Rh
dGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2
RTE4MkQ5MTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkUxODJEQzE1NDc1NjkxMDBGMUZBREQgLyog
V2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0
aW5nLWZvcm0uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhdXRvLXN1Ym1pdHRp
bmctZm9ybS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2Myw2ICs3Njcs
NyBAQAogCQkJCUY2RjQ5QzY3MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25O
b0NhY2hlLmNwcCAqLywKIAkJCQlGNkY0OUM2NjE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93
RXh0ZW5zaW9uTm9DYWNoZV9CdW5kbGUuY3BwICovLAogCQkJCUMwNDVGOTQ0MTM4NUMyRTkwMEMw
RjNDRCAvKiBEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwICovLAorCQkJCTc1RjMx
MzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5
Q2FsbGJhY2suY3BwICovLAogCQkJCTFBNUZFRkRDMTI3MEUyQTMwMDBFMjkyMSAvKiBFdmFsdWF0
ZUphdmFTY3JpcHQuY3BwICovLAogCQkJCUJDQzhCOTVBMTI2MTFGNDcwMERFNDZBNCAvKiBGYWls
ZWRMb2FkLmNwcCAqLywKIAkJCQkxQTAyQzg0RTEyNUQ0QTg0MDBFM0Y0QkQgLyogRmluZC5jcHAg
Ki8sCkBAIC0xMDQ0LDYgKzEwNDksNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKIAkJCQlCQ0FBNDg1NzE0QTA0NEQ0MDA4OEZBQzQgLyogRWRpdG9yQ29tbWFuZHMubW0g
Ki8sCisJCQkJNzVCOTFERTcxOEQ3NzcyQzAwQTk4Njg3IC8qIEVwaGVtZXJhbFNlc3Npb25Db29r
aWVzLmNwcCAqLywKIAkJCQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1Nj
YWxlRmFjdG9yLm1tICovLAogCQkJCUMwQzVEM0JEMTQ1OThCNkYwMEE4MDJBNiAvKiBHZXRCYWNr
aW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tICovLAogCQkJCTFBRUY5OTQ4MTdBMDlGNTMwMDk5OEVG
MCAvKiBHZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcCAqLywKQEAgLTExNDgsNiAr
MTE1NCw3IEBACiAJCQkJMjk3MjM0QjQxNzNBRDA0ODAwOTgzNjAxIC8qIEN1c3RvbVByb3RvY29s
c0ludmFsaWRTY2hlbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzkwMjhCNjE0RkFCRDkyMDA3
RTZCNDMgLyogQWNjZXB0c0ZpcnN0TW91c2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE4NjFG
RjE3QkQ0REM3MDBENEU0MUUgLyogU3RvcExvYWRpbmdGcm9tRGlkRmluaXNoTG9hZGluZy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTc1RjMxMzQwMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxT
ZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MjZGMUI0NDQxNUNBNDM0RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCNTVGMTFBMDE1MTY4MzRGMDA5MTU5MTYgLyogQXR0cmlidXRlZFN0cmluZy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTAwQ0Q5RjYzMTVCRTMxMkMwMDJEQTJDRSAvKiBCYWNrRm9yd2Fy
ZExpc3QubW0gaW4gU291cmNlcyAqLywKQEAgLTExNjcsNiArMTE3NCw3IEBACiAJCQkJMzc1MUFG
N0MxNjk1MThGODAwNzY0MzE5IC8qIERPTU5vZGVGcm9tSlNPYmplY3QubW0gaW4gU291cmNlcyAq
LywKIAkJCQkzN0RDNjc4RDE0MEQ3QzUwMDBBQkNDREIgLyogRE9NUmFuZ2VPZlN0cmluZy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTUxMzkzRTIwMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dF
eHRlbnNpb25CYXNpYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NUI5MURFODE4RDc3NzJDMDBB
OTg2ODcgLyogRXBoZW1lcmFsU2Vzc2lvbkNvb2tpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RjZGNDlDNjkxNTU0NUM4RTAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzA0NUY5NDUxMzg1QzJFQTAwQzBGM0NEIC8qIERvd25sb2Fk
RGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0E0MjdBQjE4
MERBMjY0MDBDRDI0RDcgLyogUmVmLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVO
b0hpc3RvcnlDYWxsYmFjay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzAzMTk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVO
b0hpc3RvcnlDYWxsYmFjay5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJv
b2wgdGVzdERvbmU7CisKK3N0YXRpYyB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uRGF0YVJl
ZiBuYXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiBuYXZpZ2F0aW5n
IGluIFByaXZhdGUgQnJvd3NpbmcuCisgICAgRkFJTCgpOworfQorCitzdGF0aWMgdm9pZCBkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJE
YXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRlc3REb25lID0gdHJ1ZTsKK30K
KworVEVTVChXZWJLaXQyLCBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJh
Y2spCit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdL
Q29udGV4dENyZWF0ZSgpKTsKKworICAgIFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMCBoaXN0b3J5
Q2xpZW50OworICAgIG1lbXNldCgmaGlzdG9yeUNsaWVudCwgMCwgc2l6ZW9mKGhpc3RvcnlDbGll
bnQpKTsKKworICAgIGhpc3RvcnlDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBoaXN0b3J5
Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhID0gZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGE7CisKKyAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KGNvbnRleHQuZ2V0
KCksICZoaXN0b3J5Q2xpZW50LmJhc2UpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSk7CisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBwYWdlTG9hZGVyQ2xp
ZW50OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJD
bGllbnQpKTsKKworICAgIHBhZ2VMb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBw
YWdlTG9hZGVyQ2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJD
bGllbnQod2ViVmlldy5wYWdlKCksICZwYWdlTG9hZGVyQ2xpZW50LmJhc2UpOworCisgICAgV0tT
ZXNzaW9uUmVmIHNlc3Npb24gPSBXS1Nlc3Npb25DcmVhdGUodHJ1ZSk7CisgICAgV0tQYWdlU2V0
U2Vzc2lvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvbik7CisKKyAgICBXS1JldGFpblB0cjxXS1VS
TFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJwdXNoLXN0YXRl
IiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgp
KTsKKworICAgIFV0aWw6OnJ1bigmdGVzdERvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
bWFjL0VwaGVtZXJhbFNlc3Npb25Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9tYWMvRXBoZW1lcmFsU2Vzc2lvbkNvb2tpZXMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNjUzZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0VwaGVtZXJhbFNlc3Npb25Db29raWVzLmNw
cApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcu
aCIKKworI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlUHJpdmF0ZU1hYy5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tDb250ZXh0UHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIu
aD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCB0ZXN0RG9uZTsK
Kworc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgdGVzdERvbmUgPSB0cnVlOworfQorCitURVNUKFdlYktpdDIsIEVwaGVtZXJhbFNl
c3Npb25Db29raWVzKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChB
ZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7CisgICAgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVs
KGNvbnRleHQuZ2V0KCksIGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2Vz
KTsKKyAgICBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoY29udGV4dC5nZXQoKSwgdHJ1
ZSk7CisKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldzEoY29udGV4dC5nZXQoKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tVUkxSZWY+IGJhc2VVUkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJodHRwOi8vMTI3LjAuMC4xOjAiKSk7CisKKyAgICBXS1BhZ2VVSUNsaWVudFYw
IHVpQ2xpZW50OworICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwor
CisgICAgdWlDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2Ny
aXB0QWxlcnQgPSBydW5KYXZhU2NyaXB0QWxlcnQ7CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQod2ViVmlldzEucGFnZSgpLCAmdWlDbGllbnQuYmFzZSk7CisKKyAgICBXS1Nlc3Npb25SZWYg
c2Vzc2lvbiA9IFdLU2Vzc2lvbkNyZWF0ZSh0cnVlKTsKKyAgICBXS1BhZ2VTZXRTZXNzaW9uKHdl
YlZpZXcxLnBhZ2UoKSwgc2Vzc2lvbik7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
aHRtbFN0cmluZzEgPSBVdGlsOjp0b1dLKCI8Ym9keT48c2NyaXB0PmRvY3VtZW50LmNvb2tpZT0n
Zm9vPWJhcic7IGlmIChkb2N1bWVudC5jb29raWUgPT09ICdmb289YmFyJykgYWxlcnQoJ2Zvbycp
Ozwvc2NyaXB0PjwvYm9keT4iKTsKKyAgICBXS1BhZ2VMb2FkSFRNTFN0cmluZyh3ZWJWaWV3MS5w
YWdlKCksIGh0bWxTdHJpbmcxLmdldCgpLCBiYXNlVVJMLmdldCgpKTsKKworICAgIFV0aWw6OnJ1
bigmdGVzdERvbmUpOworICAgIHRlc3REb25lID0gZmFsc2U7CisKKyAgICBQbGF0Zm9ybVdlYlZp
ZXcgd2ViVmlldzIoY29udGV4dC5nZXQoKSk7CisgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHdl
YlZpZXcyLnBhZ2UoKSwgJnVpQ2xpZW50LmJhc2UpOworICAgIFdLUGFnZVNldFNlc3Npb24od2Vi
VmlldzIucGFnZSgpLCBzZXNzaW9uKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBo
dG1sU3RyaW5nMiA9IFV0aWw6OnRvV0soIjxib2R5PjxzY3JpcHQ+aWYgKGRvY3VtZW50LmNvb2tp
ZSA9PT0gJ2Zvbz1iYXInKSBhbGVydCgnYmFyJyk7PC9zY3JpcHQ+PC9ib2R5PiIpOworICAgIFdL
UGFnZUxvYWRIVE1MU3RyaW5nKHdlYlZpZXcyLnBhZ2UoKSwgaHRtbFN0cmluZzIuZ2V0KCksIGJh
c2VVUkwuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RG9uZSk7CisgICAgdGVzdERvbmUg
PSBmYWxzZTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3Myhjb250ZXh0LmdldCgpKTsK
KyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQod2ViVmlldzMucGFnZSgpLCAmdWlDbGllbnQuYmFz
ZSk7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaHRtbFN0cmluZzMgPSBVdGlsOjp0
b1dLKCI8Ym9keT48c2NyaXB0PmlmICghKGRvY3VtZW50LmNvb2tpZSA9PT0gJ2Zvbz1iYXInKSkg
YWxlcnQoJ2JheicpOzwvc2NyaXB0PjwvYm9keT4iKTsKKyAgICBXS1BhZ2VMb2FkSFRNTFN0cmlu
Zyh3ZWJWaWV3My5wYWdlKCksIGh0bWxTdHJpbmczLmdldCgpLCBiYXNlVVJMLmdldCgpKTsKKwor
ICAgIFV0aWw6OnJ1bigmdGVzdERvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226960</attachid>
            <date>2014-03-17 14:05:45 -0700</date>
            <delta_ts>2014-03-20 14:19:31 -0700</delta_ts>
            <desc>gtk build fix</desc>
            <filename>privatesetting.06.diff</filename>
            <type>text/plain</type>
            <size>96376</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzZWY4NGRmLi5iMjFlNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVj
dFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5p
dGlhbGl6ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNl
c3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRv
IGp1c3QgcmV0dXJuIG1fc2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vz
c2lvbklEKTogQWxzbyBwZXJmb3JtIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24u
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOiBSZW1vdmUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBzZXR0aW5n
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUGFnZSByZWZsZWN0cyBz
ZXR0aW5nIHVzaW5nIHNlc3Npb24uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpnZXRWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
Ojppc0Rpc2FibGVkQnlQcml2YXRlQnJvd3NpbmcpOgorCiAyMDE0LTAxLTI5ICBTZXJnaW8gVmls
bGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlv
dXRdIGdldENvbXB1dGVkU3R5bGUoKSBub3QgdXNpbmcgYXV0aG9yJ3Mgb3JkZXIgd2hlbiBzaG93
aW5nIG5hbWVkIGdyaWQgbGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAppbmRleCBjOWE1MzY2Li4yNDJhNzIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZUNvbnRleHQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9vbCBEYXRhYmFzZUNvbnRleHQ6OmFs
bG93RGF0YWJhc2VBY2Nlc3MoKSBjb25zdAogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0Rv
Y3VtZW50KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQt
PnBhZ2UoKSB8fCAoZG9jdW1lbnQtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0
ZUJyb3dzaW5nKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKSkpCisgICAg
ICAgIGlmICghZG9jdW1lbnQtPnBhZ2UoKSB8fCAoZG9jdW1lbnQtPnBhZ2UoKS0+c2Vzc2lvbklE
KCkuaXNFcGhlbWVyYWwoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNz
SW5Qcml2YXRlQnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkp
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggN2QwYzQ2Mi4u
YzNmN2E2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC03
MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNj
cmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgorI2luY2x1ZGUg
IlNlc3Npb25JRC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKQEAgLTEyMTksOCArMTIyMCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnN0IFVSTCYgaW5pdGlhbFVSTCwgQ29u
dGVudFR5cGUmIGNvbnRlbnRUCiAgICAgaWYgKG1fc2VuZFByb2dyZXNzRXZlbnRzKSAKICAgICAg
ICAgc3RhcnRQcm9ncmVzc0V2ZW50VGltZXIoKTsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IGRvY3VtZW50KCkuc2V0dGluZ3MoKTsKLSAgICBib29sIHByaXZhdGVNb2RlID0gIXNldHRpbmdz
IHx8IHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRl
TW9kZSA9IGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5zZXNzaW9uSUQo
KS5pc0VwaGVtZXJhbCgpOwogICAgIG1fcGxheWVyLT5zZXRQcml2YXRlQnJvd3NpbmdNb2RlKHBy
aXZhdGVNb2RlKTsKIAogICAgIC8vIFJlc2V0IGRpc3BsYXkgbW9kZSB0byBmb3JjZSBhIHJlY2Fs
Y3VsYXRpb24gb2Ygd2hhdCB0byBzaG93IGJlY2F1c2Ugd2UgYXJlIHJlc2V0dGluZyB0aGUgcGxh
eWVyLgpAQCAtNTE5NSw4ICs1MTk1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpwcml2YXRl
QnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpCiAgICAgaWYgKCFtX3BsYXllcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOwot
ICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSAhc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIHByaXZhdGVNb2RlID0gZG9jdW1lbnQoKS5wYWdlKCkg
JiYgZG9jdW1lbnQoKS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2Uo
JXMpIiwgYm9vbFN0cmluZyhwcml2YXRlTW9kZSkpOwogICAgIG1fcGxheWVyLT5zZXRQcml2YXRl
QnJvd3NpbmdNb2RlKHByaXZhdGVNb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDZjOGM5ZTkuLjA2MzdmMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMzQ4LDcgKzM0OCw3IEBAIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclN0YW5kYXJkTG9hZChIaXN0b3J5VXBkYXRl
VHlwZSB1cGRhdGVUeXBlKQogCiAgICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gbV9mcmFt
ZS5sb2FkZXIoKTsKIAotICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCku
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1l
LnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKICAgICBjb25zdCBVUkwmIGhpc3Rv
cnlVUkwgPSBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAK
ICAgICBpZiAoIWZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3Qo
KSkgewpAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZv
clJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiAgICAgICAgIExPRyhIaXN0b3J5
LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlZGlyZWN0IGxvYWQgaW4g
ZnJhbWUgJXMiLCBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAKLSAgICBib29sIG5lZWRQcml2YWN5
ID0gbV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29s
IG5lZWRQcml2YWN5ID0gbV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7
CiAgICAgY29uc3QgVVJMJiBoaXN0b3J5VVJMID0gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExv
YWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAKICAgICBpZiAobV9mcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5pc0NsaWVudFJlZGlyZWN0KCkpIHsKQEAgLTQzMyw3ICs0MzMsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpCiAgICAgICAg
IG1fY3VycmVudEl0ZW0tPmNsZWFyU2Nyb2xsUG9pbnQoKTsKICAgICB9CiAKLSAgICBib29sIG5l
ZWRQcml2YWN5ID0gbV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsK
KyAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCk7CiAgICAgY29uc3QgVVJMJiBoaXN0b3J5VVJMID0gbV9mcmFtZS5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpLT51cmxGb3JIaXN0b3J5KCk7CiAKICAgICBpZiAoIWhpc3RvcnlVUkwu
aXNFbXB0eSgpICYmICFuZWVkUHJpdmFjeSkgewpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQogICAgIGlm
IChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisg
ICAgaWYgKG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CkBAIC04NDcsNyAr
ODQ3LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cHVzaFN0YXRlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCwKIAogICAgIHBhZ2UtPmJhY2tGb3J3YXJk
KCkuYWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7CiAKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9mcmFtZS5wYWdlKCktPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFkZFZpc2l0
ZWRMaW5rKCpwYWdlLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmxTdHJpbmcpKTsKQEAgLTg2Niw3
ICs4NjYsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXBsYWNlU3RhdGUoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZQogICAgIG1fY3VycmVudEl0ZW0tPnNl
dEZvcm1EYXRhKDApOwogICAgIG1fY3VycmVudEl0ZW0tPnNldEZvcm1Db250ZW50VHlwZShTdHJp
bmcoKSk7CiAKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSkKKyAgICBpZiAobV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX2ZyYW1lLnBhZ2UoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCmluZGV4IDc5ZmJlNGYuLjM2YzBjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgQXBwbGljYXRpb25DYWNoZSogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjYWNo
ZUZvck1haW5SZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWUKICAgICBpZiAodXJsLmhhc0ZyYWdt
ZW50SWRlbnRpZmllcigpKQogICAgICAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7
CiAKLSAgICBpZiAoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgKGRvY3VtZW50TG9hZGVyLT5m
cmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB8fCAhZG9jdW1lbnRM
b2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0Fw
cGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnRyZWUoKS50b3AoKS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkpCisgICAgaWYgKGRvY3VtZW50TG9hZGVyLT5mcmFt
ZSgpICYmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpIHx8ICFkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShkb2N1bWVudExvYWRlci0+ZnJh
bWUoKS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBpZiAoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGNh
Y2hlU3RvcmFnZSgpLmNhY2hlR3JvdXBGb3JVUkwodXJsKSkgewpAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZShGcmFtZSogZnJhbWUsIGNv
bnN0IFVSTCYgcGFzc2VkTWFuaWZlc3RVCiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFu
eXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChm
cmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1l
LT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAo
ZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSB8fCAhZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUt
PnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAgICAgICBw
b3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDSEVDS0lOR19FVkVOVCwgZG9j
dW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFUlJPUl9FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICByZXR1cm47CkBAIC0y
MTksNyArMjE5LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0
aG91dE1hbmlmZXN0VVJMKEZyYW1lKiBmcmFtZSkKICAgICBBU1NFUlQoIWRvY3VtZW50TG9hZGVy
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5hcHBsaWNhdGlvbkNhY2hlKCkpOwogCiAgICAgLy8g
RG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFi
bGVkLgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
fHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNh
dGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSkpIHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSB8
fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0
aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgewogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDSEVD
S0lOR19FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjpFUlJPUl9FVkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAg
ICByZXR1cm47CkBAIC00MzQsNyArNDM0LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnVwZGF0ZShGcmFtZSogZnJhbWUsIEFwcGxpY2F0aW9uQ2FjaGVVcGRhdGVPcHRpb24gdXAKICAg
ICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJy
b3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdNYXN0ZXJSZXNvdXJj
ZUxvYWRlcnMuaXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0VudHJpZXMuaXNF
bXB0eSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2NhY2hlQmVpbmdVcGRhdGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwCmluZGV4IDljNjliZWYuLmUyNWFkZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtNDc2LDcgKzQ3
Niw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmFib3J0KCkKIAogYm9vbCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJu
IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+
c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSAmJiAhbV9kb2N1
bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
CisgICAgcmV0dXJuIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYgbV9kb2N1bWVudExvYWRl
ci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQo
KSAmJiAhbV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpOwogfQogCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9u
Q2FjaGVCbG9ja2VkRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5kZXggOTRh
ZGFlNy4uNDY1ZDFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250
cm9sbGVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNvbnRp
bnVlTG9hZFdpdGhEZWNpc2lvbihJY29uTG9hZERlY2lzaW9uIGljb25Mb2FkRGVjaXNpb24pCiAg
ICAgQVNTRVJUKGljb25Mb2FkRGVjaXNpb24gIT0gSWNvbkxvYWRVbmtub3duKTsKIAogICAgIC8v
ICBGSVhNRSAoPHJkYXI6Ly9wcm9ibGVtLzkxNjg2MDU+KSAtIFdlIHNob3VsZCBzdXBwb3J0IGlu
LW1lbW9yeS1vbmx5IHByaXZhdGUgYnJvd3NpbmcgaWNvbnMgaW4gYXN5bmNocm9ub3VzIGljb24g
ZGF0YWJhc2UgbW9kZS4KLSAgICBpZiAoaWNvbkRhdGFiYXNlKCkuc3VwcG9ydHNBc3luY2hyb25v
dXNNb2RlKCkgJiYgbV9mcmFtZS5wYWdlKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKQorICAgIGlmIChpY29uRGF0YWJhc2UoKS5zdXBwb3J0c0FzeW5jaHJvbm91c01vZGUo
KSAmJiBtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGljb25Mb2FkRGVjaXNpb24gPT0gSWNvbkxvYWRObykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggMTM5YTQ5NS4uMmQ0NjZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBA
IC0xOTEsNyArMTkxLDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAg
ICAgLCBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudCgwKSAvLyBOT1RFOiBP
bmx5IGNhbGxlZCBmcm9tIEludGVybmFscyBmb3IgU3BhdGlhbCBOYXZpZ2F0aW9uIHRlc3Rpbmcu
CiAgICAgLCBtX2ZyYW1lc0hhbmRsaW5nQmVmb3JlVW5sb2FkRXZlbnQoMCkKICAgICAsIG1fdmlz
aXRlZExpbmtTdG9yZShzdGQ6Om1vdmUocGFnZUNsaWVudHMudmlzaXRlZExpbmtTdG9yZSkpCi0g
ICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmVtcHR5U2Vzc2lvbklEKCkpCisgICAgLCBtX3Nl
c3Npb25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKIHsKICAgICBBU1NFUlQobV9l
ZGl0b3JDbGllbnQpOwogCkBAIC0xMDY2LDE5ICsxMDY2LDEyIEBAIHZvaWQgUGFnZTo6c3RvcmFn
ZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgdmlld3NbaV0tPnN0b3JhZ2VCbG9ja2lu
Z1N0YXRlQ2hhbmdlZCgpOwogfQogCi12b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCgpCit2b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCiB7Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0g
bV9zZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIC8vIERvbid0IGFsbG93
IGNoYW5naW5nIHRoZSBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGlmIHdlIGhhdmUgc2V0IGEgc2Vz
c2lvbiBJRC4KKyAgICBBU1NFUlQobV9zZXNzaW9uSUQgPT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkgfHwgbV9zZXNzaW9uSUQgPT0gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lv
bklEKCkpOwogCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5wcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpOwotCi0gICAgLy8gQ29sbGVj
dCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3IgdG8gZW5zdXJlIHRoYXQgYWN0aW9uIHRo
ZSBwbHVnLWluIHRha2VzCi0gICAgLy8gZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0aW1lLgotICAgIGF1dG8gdmlld3MgPSBw
bHVnaW5WaWV3cygpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpZXdzLnNpemUo
KTsgKytpKQotICAgICAgICB2aWV3c1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpOworICAgIHNldFNlc3Npb25JRChwcml2YXRlQnJvd3NpbmdF
bmFibGVkID8gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6
OmRlZmF1bHRTZXNzaW9uSUQoKSk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0xNTAw
LDE5ICsxNDkzLDI3IEBAIFZpc2l0ZWRMaW5rU3RvcmUmIFBhZ2U6OnZpc2l0ZWRMaW5rU3RvcmUo
KQogCiBTZXNzaW9uSUQgUGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZXNz
aW9uSUQuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CisgICAgQVNTRVJU
KG1fc2Vzc2lvbklELmlzVmFsaWQoKSk7CiAKLSAgICBpZiAoc2V0dGluZ3MoKS5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uSUQoKTsKLQotICAgIHJldHVybiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
KyAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CiB9CiAKIHZvaWQgUGFnZTo6c2V0U2Vzc2lvbklEKFNl
c3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkpOwot
ICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOworICAgIGlmIChzZXNzaW9uSUQgIT0gbV9zZXNz
aW9uSUQpIHsKKyAgICAgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisKKyAgICAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpCisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0
ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKKworICAgICAgICAvLyBDb2xsZWN0IHRoZSBQbHVn
aW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4g
dGFrZXMKKyAgICAgICAgLy8gZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQg
ZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0aW1lLgorICAgICAgICBhdXRvIHZpZXdzID0gcGx1
Z2luVmlld3MoKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmlld3Muc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICB2aWV3c1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFu
Z2VkKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKyAgICB9CiB9CiAKIFBhZ2U6OlBhZ2VDbGll
bnRzOjpQYWdlQ2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGE2ZjdjMzkuLmQwMGU5M2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCkBAIC0zMTAsNyArMzEwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkbnNQ
cmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVD
aGFuZ2VkKCk7Ci0gICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICB2
b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpOwogCiAgICAgdm9pZCBzZXREZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CiAgICAgSlNDOjpE
ZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CkBAIC00MDcs
NyArNDA3LDYgQEAgcHVibGljOgogCiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0U2Vzc2lvbklEKFNlc3Npb25JRCk7Ci0gICAgYm9vbCBpc1Nlc3Npb25JRFNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzVmFsaWQoKTsgfQogCiBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdEdyb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4
IDM0NmIwMTMuLmUzZjJmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCkBAIC0x
MjYsNyArMTI2LDcgQEAgdm9pZCBQYWdlQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHIKICAgICBpZiAoc291cmNlID09
IE1lc3NhZ2VTb3VyY2U6OkNTUykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGFnZS5z
ZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS5jaHJv
bWUoKS5jbGllbnQoKS5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2Us
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdXJsKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lk
IFBhZ2VDb25zb2xlOjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBN
ZXNzYWdlTGV2ZWwgbGV2ZWwsCiAgICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRG
aXJzdEFyZ3VtZW50QXNTdHJpbmcobWVzc2FnZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKCZtX3BhZ2UsIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVB
UEksIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBleGVjLCBhcmd1bWVudHMpOwogCi0gICAgaWYgKG1f
cGFnZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdl
LnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChn
b3RNZXNzYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDMyYjVhN2YuLmM2MTFl
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xNzEsNyArMTcxLDYgQEAgU2V0dGlu
Z3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCiAg
ICAgLCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKHRydWUpCiAgICAgLCBtX2xvYWRzSW1h
Z2VzQXV0b21hdGljYWxseShmYWxzZSkKLSAgICAsIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChm
YWxzZSkKICAgICAsIG1fYXJlSW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hcmVQbHVnaW5z
RW5hYmxlZChmYWxzZSkKICAgICAsIG1faXNTY3JpcHRFbmFibGVkKGZhbHNlKQpAQCAtNDI5LDEx
ICs0MjgsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGFyZVBsdWdp
bnNFbmFibGVkKQogCiB2b2lkIFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdF
bmFibGVkID09IHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Ci0gICAg
bV9wYWdlLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3BhZ2UtPnByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAogdm9p
ZCBTZXR0aW5nczo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBVUkwmIHVzZXJTdHls
ZVNoZWV0TG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNTE2ZjBkYy4uZDQ3Mzgw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMTQ2LDcgKzE0Niw2IEBAIHB1YmxpYzoKICAg
ICAvLyAgLSBIVFRQIENvb2tpZXMKICAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5Q
TlZwcml2YXRlTW9kZUJvb2wpCiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJv
b2wpOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsgfQogCiAgICAgdm9pZCBzZXRETlNQcmVmZXRjaGluZ0Vu
YWJsZWQoYm9vbCk7CiAgICAgYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsgfQpAQCAtMzAxLDcgKzMwMCw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc0phdmFFbmFi
bGVkRm9yTG9jYWxGaWxlcyA6IDE7CiAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eSA6IDE7Ci0gICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwogICAgIGJvb2wg
bV9hcmVJbWFnZXNFbmFibGVkIDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAx
OwogICAgIGJvb2wgbV9pc1NjcmlwdEVuYWJsZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggMjY4MDZmNi4uMTgzN2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L1BsdWdpblZpZXcuY3BwCkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6
OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgUGFn
ZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdlKQogICAg
ICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICooKE5QQm9vbCop
dmFsdWUpID0gcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
ICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsK
ICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggYzFiMjM3Yy4uNjA2MmI5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3Vs
dCgpCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGZyYW1lKCkuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZy
YW1lKCkucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpbnQgc2l6ZSA9IHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXpl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggYzQ4NGI5Ni4uODY0NzU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBT
dG9yYWdlOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0CiAKIGJvb2wgU3RvcmFnZTo6aXNEaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5z
dG9yYWdlVHlwZSgpID09IExvY2FsU3RvcmFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGExZWEy
OWEuLjllOTVlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0x
MSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0
ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFu
aWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKSB3aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCku
CisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZf
bmV3KToKKwogMjAxNC0wMy0xNCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlcGxhY2UgIkFwcGxlIENvbXB1dGVyLCBJbmMuIiB3aXRoICJBcHBsZSBJbmMu
IiBpbiBjb3B5cmlnaHQgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXgg
OTk5NzBlYy4uNTM2MTBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC02Niw2
ICs2Niw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1
ZGUgIlNlc3Npb25JRC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU291cE5l
dHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKQEAgLTgwMCw3
ICs4MDEsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9u
ZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogI2VuZGlmCiAgICAgcHJpdi0+c2V0
dGluZ3Muc2NyaXB0c0NhbkFjY2Vzc0NsaXBib2FyZCA9IHBhZ2VTZXR0aW5ncy5qYXZhU2NyaXB0
Q2FuQWNjZXNzQ2xpcGJvYXJkKCkgJiYgcGFnZVNldHRpbmdzLkRPTVBhc3RlQWxsb3dlZCgpOwog
ICAgIHByaXYtPnNldHRpbmdzLnJlc2l6YWJsZVRleHRhcmVhcyA9IHBhZ2VTZXR0aW5ncy50ZXh0
QXJlYXNBcmVSZXNpemFibGUoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3Npbmcg
PSBwYWdlU2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHByaXYtPnNldHRp
bmdzLnByaXZhdGVCcm93c2luZyA9IHByaXYtPnBhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFs
KCk7CiAgICAgcHJpdi0+c2V0dGluZ3MuY2FyZXRCcm93c2luZyA9IHBhZ2VTZXR0aW5ncy5jYXJl
dEJyb3dzaW5nRW5hYmxlZCgpOwogICAgIHByaXYtPnNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9u
ID0gcGFnZVNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgpOwogICAgIHByaXYtPnNl
dHRpbmdzLmxvY2FsU3RvcmFnZSA9IHBhZ2VTZXR0aW5ncy5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKaW5kZXggYmMzMWU4Mi4uZmMyYmIxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNv
bT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5n
IGNvbnNpc3RzIHNvbGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWlu
ZyBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKwogMjAxNC0w
My0xNCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxh
Y2UgIkFwcGxlIENvbXB1dGVyLCBJbmMuIiB3aXRoICJBcHBsZSBJbmMuIiBpbiBjb3B5cmlnaHQg
aGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGJhNzZkYzMuLmI3ZTZmOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bQog
CiAKICAgICBDcmVkZW50aWFsU3RvcmFnZU1vZGUgY3JlZGVudGlhbFN0b3JhZ2VNb2RlOwotICAg
IGlmIChjb3JlKHZpZXcpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAg
ICBpZiAoY29yZSh2aWV3KS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgY3Jl
ZGVudGlhbFN0b3JhZ2VNb2RlID0gRGlzYWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKICAgICBlbHNl
CiAgICAgICAgIGNyZWRlbnRpYWxTdG9yYWdlTW9kZSA9IEFsbG93UGVyc2lzdGVudFN0b3JhZ2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cKaW5kZXggYzFhMmRhMS4uNTAwNGYxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNv
bT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5n
IGNvbnNpc3RzIHNvbGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWlu
ZyBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVw
ZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKwogMjAxNC0wMy0xNiAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCBkZXByZWNhdGVkQ2hhcmFjdGVy
cyB1c2UgZnJvbSBXZWJLaXQgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDM2ZGY3MDgu
LmI1YWFkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMTIwLDcgKzExMjAsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKQogICAg
IEhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9IDA7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGNv
cmUobV93ZWJGcmFtZS5nZXQoKSktPnBhZ2UoKSkgewotICAgICAgICBpZiAoIXBhZ2UtPnNldHRp
bmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgICAgICBpZiAoIXBhZ2UtPnNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgICAgICBoaXN0b3J5SXRlbSA9IHBhZ2UtPmJh
Y2tGb3J3YXJkKCkuY3VycmVudEl0ZW0oKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCmluZGV4IDBkYjRmODAuLjcxYWNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQpA
QCAtMTEzLDcgKzExMyw3IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCkt
PnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Np
b24oKTsKIAogICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGM0ZTAyZWUuLjQ4MjgzZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9j
a0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Np
b25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMw
MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxh
Y2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3
aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKwogMjAxNC0wMy0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCBkZXByZWNh
dGVkQ2hhcmFjdGVycyB1c2UgZnJvbSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4OGRj
MzUxLi4wODIzZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04MDMsNyArODAzLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkK
ICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSB3ZWJWaWV3LT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKCFwYWdlLT5zZXR0
aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFwYWdlLT5zZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICAgICAgaGlzdG9yeUl0ZW0gPSBwYWdlLT5i
YWNrRm9yd2FyZCgpLmN1cnJlbnRJdGVtKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuY3BwCmluZGV4IGJmNTllZTcuLjUwMTBkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIAotICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCku
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBh
Z2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuICpwcml2YXRl
U2Vzc2lvbigpOwogCiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGNlZDUwNy4uOWYxODJiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDkzIEBACisyMDE0LTAzLTE3ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxl
LmNvbT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDogQ2hhbmdlIHRvIHJlZmVyZW5jZSBjb3VudGVkIHNl
c3Npb24uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29y
a1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkU2Vzc2lvblJl
ZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVTZXNzaW9u
UmVmZXJlbmNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmg6IFJlbW92ZSBj
b2RlIHNpbmNlIFNlc3Npb25UcmFja2VyIGltcGxlbWVudHMgcHJpdmF0ZSBicm93c2luZyBzZXNz
aW9uIGNyZWF0aW9uLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1v
dGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6IFJlbW92ZSBwcml2YXRl
IGJyb3dzaW5nIHBhcmFtZXRlciwgc2luY2Ugc2Vzc2lvbnMgaW1wbGVtZW50IHRoZSBmdW5jdGlv
bmFsaXR5IHdpdGhvdXQgYSBnbG9iYWwgc2V0dGluZy4KKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
U2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcDogUmVmZXJlbmNlIGNvdW50IHNlc3Npb25zIG1hbnVh
bGx5IChuZWVkZWQgZHVlIHRvIGNyb3NzLXByb2Nlc3MgcmVmZXJlbmNlcykuCisgICAgICAgIChX
ZWJLaXQ6OnN0YXRpY1Nlc3Npb25Db3VudGVyKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRy
YWNrZXI6OmdldElkZW50aWZpZXJCYXNlKTogU2V0IGFuIHVuc2V0IGlkZW50aWZpZXIgYmFzZS4K
KyAgICAgICAgKFdlYktpdDo6U2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Npb25SZWZlcmVuY2UpOgor
ICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZSk6
CisgICAgICAgICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmg6IERpdHRvLgorICAgICAgICAqIFNo
YXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6IENoYW5nZSBQcml2YXRlQnJvd3NpbmdFbmFibGVk
IHRvIExlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SVNlc3Npb24uaDogTWFrZSBjb25zdHJ1Y3RvciBwdWJsaWMuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOiBEaXR0by4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNT
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFn
ZVByaXZhdGVNYWMuY3BwOgorICAgICAgICAoV0tQYWdlSXNVUkxLbm93bkhTVFNIb3N0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbTogTWVjaGFuaWNhbGx5IGNo
YW5nZSBTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OnNlc3Npb25J
RCgpLmlzRXBoZW1lcmFsKCkuCisgICAgICAgICgtW1dLV2ViVmlldyBfcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcDogRGl0
dG8uCisgICAgICAgIChld2tfc2V0dGluZ3NfcHJpdmF0ZV9icm93c2luZ19lbmFibGVkX3NldCk6
CisgICAgICAgIChld2tfc2V0dGluZ3NfcHJpdmF0ZV9icm93c2luZ19lbmFibGVkX2dldCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwOiBEaXR0by4KKyAg
ICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3NpbmcpOgorICAg
ICAgICAod2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOiBDaGFuZ2UgdG8gcmVmZXJlbmNlIGNvdW50
ZWQgc2Vzc2lvbnMuCisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6d2luZG93U2VydmVyQ29ubmVj
dGlvblN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmluY3JlbWVu
dFByaXZhdGVCcm93c2luZ0NvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGVj
cmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
Ojpzb21lUGFnZUlzUHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4
dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNy
ZWF0ZVdlYlBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dz
aW5nKTogSW1wbGVtZW50IHVzaW5nIHJlZmVyZW5jZSBjb3VudC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViSWNvbkRhdGFiYXNlLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkljb25E
YXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOiBE
b24ndCBzZW5kIG1lc3NhZ2UgdG8gV2ViUGFnZSBwcm9jZXNzIHRoYXQgZG9lc24ndCB5ZXQgZXhp
c3QuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSk6IENsZWFu
IHVwIHNlc3Npb24uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbklt
cGwpOiBUcmFjayByZWZlcmVuY2UgY291bnQgYW5kIG9wdGlvbmFsbHkgc2VuZCBtZXNzYWdlIHRv
IFdlYlBhZ2UgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNz
aW9uKTogU2VuZCBtZXNzYWdlIHRvIFdlYlBhZ2UgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSk6IFNldCBzZXNzaW9uIGJhc2VkIG9u
IGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHByZWZlcmVuY2UuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6IEluY2x1ZGUgU2Vzc2lvbklEIHdoZW4gY3JlYXRp
bmcgbmV3IHBhZ2UuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6
OmFkZFBhZ2UpOiBTZXNzaW9uIGtlZXBzIHRyYWNrIG9mIHJlZmVyZW5jZSBjb3VudC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnJlbW92ZVBhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcmVmZXJlbmNlczo6dXBkYXRlQm9vbFZhbHVlRm9yS2V5KTogQ2hhbmdlIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQgdG8gbGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOiBSZWZlcmVuY2Ug
Y291bnQgc2Vzc2lvbi4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHA6IE1lY2hhbmljYWxseSBjaGFuZ2UgU2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSB0byBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorICAgICAgICAoV2ViS2l0OjpQ
bHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaDogUmVtb3ZlIGNvZGUg
c2luY2UgU2Vzc2lvblRyYWNrZXIgaW1wbGVtZW50cyBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24g
Y3JlYXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6IFNldCBzZXNzaW9uIHRvIGxlZ2FjeSBw
cml2YXRlIHNlc3Npb24gaWYgbmVlZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlc3Npb25JRCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogUmVtb3ZlIGVuc3VyZS9kZXN0cm95UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbiBhcyBQYWdlIHJlZmVyZW5jZSBjb3VudHMgaXRzIHNlc3Npb25zLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6IE1ha2Ug
c3VyZSBpZGVudGlmaWVyIGJhc2UgaXMgc2V0LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwog
MjAxNC0wMy0xNyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bQ01ha2VdIEVuc3VyZSB0aGF0IEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcgaXMg
ZGVmaW5lZCB3aGVuIGFwcHJvcHJpYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNGI4NDBmNC4uNTU0Y2I0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTY2
LDEwICsxNjYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZQogICAgIFNlc3Npb25UcmFja2Vy
OjpzZXRJZGVudGlmaWVyQmFzZShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIp
OwogI2VuZGlmCiAKLSAgICAvLyBGSVhNRTogaW5zdGVhZCBvZiBoYW5kbGluZyB0aGlzIGhlcmUs
IGEgbWVzc2FnZSBzaG91bGQgYmUgc2VudCBsYXRlciAoc2NhbGVzIHRvIG11bHRpcGxlIHNlc3Np
b25zKQotICAgIGlmIChwYXJhbWV0ZXJzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAg
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNl
c3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKLQogICAgIGlmIChwYXJhbWV0ZXJz
LnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKICAgICAgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAKQEAgLTIxOSwxNCArMjE1LDE0
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjplbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjph
ZGRTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbklEKTsK
KyAgICBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShzZXNzaW9uSUQpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNz
aW9uSUQgc2Vzc2lvbklEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlU2Vzc2lvblJlZmVy
ZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIFNlc3Npb25UcmFja2VyOjpkZXN0cm95
U2Vzc2lvbihzZXNzaW9uSUQpOworICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVm
ZXJlbmNlKHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVx
dWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBjN2MzYWVkLi40YzZiNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCk7Ci0gICAgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBkZXN0cm95UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgYWRkU2Vzc2lvblJl
ZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVy
ZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KHVpbnQ2
NF90IGRvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZv
aWQgY2FuY2VsRG93bmxvYWQodWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRDYWNo
ZU1vZGVsKHVpbnQzMl90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNzQ5OTQ0OS4uMDk5NGE3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2Vk
KFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKICNlbmRpZgogCi0gICAgRW5zdXJlUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAg
QWRkU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQorICAgIFJl
bW92ZVNlc3Npb25SZWZlcmVuY2UoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogICAg
IERvd25sb2FkUmVxdWVzdCh1aW50NjRfdCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCkKICAgICBDYW5jZWxEb3dubG9hZCh1aW50NjRfdCBkb3dubG9hZElEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0LmgKaW5kZXggZjVjY2NjMS4uZWJiN2Y2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00
MCw5ICs0MCw2IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+UmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQoKTsKIAotICAgIC8vIEZJWE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29k
ZSBhbmQgdXNlIFNlc3Npb25UcmFja2VyLgotICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLQogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMmE3YzU5NC4uMjZkODhhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdv
cmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtNzcsMTUgKzc3LDQgQEAgUmVzb3VyY2VFcnJv
ciBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWUKICAgICByZXR1cm4gV2ViS2l0OjpibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9
CiAKLXZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghU2Vzc2lvblRyYWNrZXI6OmdldElkZW50
aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwotICAgIFNlc3Npb25UcmFja2VyOjpzZXRTZXNzaW9uKHNl
c3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpICsgJy4nICsgU3RyaW5nOjpu
dW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSkpOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0U291cC5jcHAKaW5kZXggM2JlOWRiYy4uM2UyN2NlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHRTb3VwLmNwcApAQCAtNDYsMTEgKzQ2LDYgQEAgYm9vbCBSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZv
aWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
U2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
MTQxYmE3YS4uNmJjZWFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtMzgsNyArMzgsNiBAQCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6TmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7Ci0gICAgZW5jb2RlciA8PCBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGVuY29kZXIu
ZW5jb2RlRW51bShjYWNoZU1vZGVsKTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9y
eTsKICAgICBlbmNvZGVyIDw8IGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKQEAg
LTY1LDggKzY0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb24KIAogYm9vbCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNv
ZGVyLCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcmVzdWx0KQogewotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnByaXZhdGVCcm93c2luZ0VuYWJsZWQpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LmNhY2hl
TW9kZWwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuZGlza0NhY2hlRGlyZWN0b3J5KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CmluZGV4IDU4YWNiMzkuLmRhZDExMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aApAQCAtNTAsNyArNTAsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CiAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmKTsKIAotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsK
ICAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWw7CiAKICAgICBTdHJpbmcgZGlza0NhY2hlRGlyZWN0
b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKaW5kZXggYmRjZmZi
OS4uYTc2NWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3BwCkBA
IC00MSw2ICs0MSwxNCBAQCBzdGF0aWMgSGFzaE1hcDxTZXNzaW9uSUQsIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+PiYgc3RhdGljU2Vzc2lvbgogICAgIHJldHVybiBtYXAu
Z2V0KCk7CiB9CiAKK3N0YXRpYyBIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+JiBzdGF0aWNT
ZXNzaW9uQ291bnRlcigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFNlc3Npb25JRCwgdWludDY0X3Q+PiBtYXA7
CisgICAgcmV0dXJuIG1hcC5nZXQoKTsKK30KKwogc3RhdGljIEhhc2hNYXA8Y29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uKiwgU2Vzc2lvbklEPiYgc3RvcmFnZVNlc3Npb25Ub0lEKCkKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNjQsNiArNzIsOCBAQCBjb25zdCBIYXNo
TWFwPFNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4+JiBT
ZXNzaW9uVHJhY2tlcgogCiBjb25zdCBTdHJpbmcmIFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlm
aWVyQmFzZSgpCiB7CisgICAgaWYgKGlkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpCisgICAgICAg
IGlkZW50aWZpZXJCYXNlKCkgPSAiIjsKICAgICByZXR1cm4gaWRlbnRpZmllckJhc2UoKTsKIH0K
IApAQCAtODEsMjAgKzkxLDQxIEBAIFNlc3Npb25JRCBTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbklE
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKICAgICByZXR1cm4gc3RvcmFn
ZVNlc3Npb25Ub0lEKCkuZ2V0KCZzZXNzaW9uKTsKIH0KIAotdm9pZCBTZXNzaW9uVHJhY2tlcjo6
c2V0U2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPiBzZXNzaW9uKQordm9pZCBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJl
ZmVyZW5jZShTZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIEFTU0VSVChzZXNzaW9uSUQgIT0g
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CisKKyAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworCisgICAgaWYg
KFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc3RhdGljU2Vz
c2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lvbklELCBzdGF0aWNTZXNzaW9uQ291bnRlcigpLmdldChz
ZXNzaW9uSUQpICsgMSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoIVNl
c3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6Omdl
dElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lv
bklEKCkpKTsKICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5zZXQoc2Vzc2lvbi5nZXQoKSwgc2Vz
c2lvbklEKTsKICAgICBzdGF0aWNTZXNzaW9uTWFwKCkuc2V0KHNlc3Npb25JRCwgc3RkOjptb3Zl
KHNlc3Npb24pKTsKKyAgICBzdGF0aWNTZXNzaW9uQ291bnRlcigpLnNldChzZXNzaW9uSUQsIDEp
OwogfQogCi12b2lkIFNlc3Npb25UcmFja2VyOjpkZXN0cm95U2Vzc2lvbihTZXNzaW9uSUQgc2Vz
c2lvbklEKQordm9pZCBTZXNzaW9uVHJhY2tlcjo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShTZXNz
aW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAg
aWYgKHN0YXRpY1Nlc3Npb25NYXAoKS5jb250YWlucyhzZXNzaW9uSUQpKSB7CisKKyAgICBBU1NF
UlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworCisgICAgQVNTRVJUKHN0YXRpY1Nlc3Npb25N
YXAoKS5jb250YWlucyhzZXNzaW9uSUQpKTsKKworICAgIHVpbnQ2NF90IGNvdW50ZXIgPSBzdGF0
aWNTZXNzaW9uQ291bnRlcigpLmdldChzZXNzaW9uSUQpOworCisgICAgaWYgKGNvdW50ZXIgPT0g
MSkgewogICAgICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5yZW1vdmUoc2Vzc2lvbihzZXNzaW9u
SUQpKTsKICAgICAgICAgc3RhdGljU2Vzc2lvbk1hcCgpLnJlbW92ZShzZXNzaW9uSUQpOwotICAg
IH0KKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5yZW1vdmUoc2Vzc2lvbklEKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lvbklELCBj
b3VudGVyIC0gMSk7CiB9CiAKIHZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNl
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9TZXNzaW9uVHJhY2tlci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFj
a2VyLmgKaW5kZXggMGIwMzAyOS4uYTJjODliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1Nlc3Npb25UcmFja2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Np
b25UcmFja2VyLmgKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIGdldElkZW50aWZpZXJCYXNlKCk7CiAgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogc2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHN0YXRpYyBX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYpOwotICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklE
LCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPik7Ci0gICAg
c3RhdGljIHZvaWQgZGVzdHJveVNlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAgICBzdGF0
aWMgdm9pZCBhZGRTZXNzaW9uUmVmZXJlbmNlKFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAg
IHN0YXRpYyB2b2lkIHNldElkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggYzc5ZGE4My4u
YmI2ZjE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5o
CkBAIC0xMTMsNyArMTEzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oRnJhbWVG
bGF0dGVuaW5nRW5hYmxlZCwgZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgREVG
QVVMVF9GUkFNRV9GTEFUVEVOSU5HX0VOQUJMRUQpIFwKICAgICBtYWNybyhEZXZlbG9wZXJFeHRy
YXNFbmFibGVkLCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAog
ICAgIG1hY3JvKEphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQsIGphdmFTY3JpcHRFeHBlcmlt
ZW50c0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCi0gICAgbWFjcm8oUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCwgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
KyAgICBtYWNybyhMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBsZWdhY3lQcml2YXRlQnJv
d3NpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKFRleHRBcmVhc0Fy
ZVJlc2l6YWJsZSwgdGV4dEFyZWFzQXJlUmVzaXphYmxlLCBCb29sLCBib29sLCBERUZBVUxUX1RF
WFRfQVJFQVNfQVJFX1JFU0laQUJMRSkgXAogICAgIG1hY3JvKEphdmFTY3JpcHRDYW5PcGVuV2lu
ZG93c0F1dG9tYXRpY2FsbHksIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHks
IEJvb2wsIGJvb2wsIERFRkFVTFRfSkFWQVNDUklQVF9DQU5fT1BFTl9XSU5ET1dTX0FVVE9NQVRJ
Q0FMTFkpIFwKICAgICBtYWNybyhIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQsIGh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IGE2NTBlN2MuLjUwOGEyMWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHAKQEAgLTM0MSwxMiArMzQxLDEyIEBAIFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5jZXNDb3B5RGVm
YXVsdFRleHRFbmNvZGluZ05hbWUoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlCiAKIHZvaWQg
V0tQcmVmZXJlbmNlc1NldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQogewotICAgIHRvSW1wbChwcmVmZXJlbmNlc1Jl
ZiktPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CisgICAgdG9JbXBsKHByZWZl
cmVuY2VzUmVmKS0+c2V0TGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGVkKTsKIH0K
IAogYm9vbCBXS1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNS
ZWYpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKIH0KIAogdm9pZCBXS1By
ZWZlcmVuY2VzU2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLmNwcAppbmRleCA2YTlkY2E0Li5iZTNm
MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFn
ZVByaXZhdGVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMv
V0tQYWdlUHJpdmF0ZU1hYy5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgcGlkX3QgV0tQYWdlR2V0UHJv
Y2Vzc0lkZW50aWZpZXIoV0tQYWdlUmVmIHBhZ2VSZWYpCiBib29sIFdLUGFnZUlzVVJMS25vd25I
U1RTSG9zdChXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsKQogewogICAgIFdlYlBhZ2VQcm94
eSogd2ViUGFnZVByb3h5ID0gdG9JbXBsKHBhZ2UpOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCA9IHdlYlBhZ2VQcm94eS0+cGFnZUdyb3VwKCkucHJlZmVyZW5jZXMoKS5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gd2Vi
UGFnZVByb3h5LT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwogCiAgICAgcmV0dXJuIHdlYlBh
Z2VQcm94eS0+cHJvY2VzcygpLmNvbnRleHQoKS5pc1VSTEtub3duSFNUU0hvc3QodG9JbXBsKHVy
bCktPnN0cmluZygpLCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMTRmN2FiMC4uYWE3
NGU4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTg2OSwxMiArODY5LDEyIEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOU0RhdGEodW5z
aWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpCiAKIC0gKEJPT0wpX3ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQKIHsKLSAgICByZXR1cm4gW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3By
ZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIFtfY29uZmln
dXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy0+bGVnYWN5UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpOwogfQogCiAtICh2b2lkKV9zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkOihCT09M
KXByaXZhdGVCcm93c2luZ0VuYWJsZWQKIHsKLSAgICBbX2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5j
ZXNdLT5fcHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCk7CisgICAgW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+X3ByZWZlcmVu
Y2VzLT5zZXRMZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbGF5b3V0
TWlsZXN0b25lcyhfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBldmVudHMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3MuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcAppbmRleCAxZWRh
Njc2Li43NGFmMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfc2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19zZXR0aW5ncy5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCBFaW5hX0Jvb2wgZXdrX3NldHRp
bmdzX3ByaXZhdGVfYnJvd3NpbmdfZW5hYmxlZF9zZXQoRXdrX1NldHRpbmdzKiBzZXR0aW5ncywg
RWluYQogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXR0aW5ncywgZmFs
c2UpOwogCi0gICAgc2V0dGluZ3MtPnByZWZlcmVuY2VzKCkuc2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChlbmFibGUpOworICAgIHNldHRpbmdzLT5wcmVmZXJlbmNlcygpLnNldExlZ2FjeVByaXZh
dGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzAz
LDcgKzMwMyw3IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfcHJpdmF0ZV9icm93c2luZ19lbmFi
bGVkX2dldChjb25zdCBFd2tfU2V0dGluZ3MqIHNldHRpbmdzCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNldHRpbmdzLCBmYWxzZSk7CiAKLSAgICByZXR1cm4gc2V0dGlu
Z3MtPnByZWZlcmVuY2VzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBz
ZXR0aW5ncy0+cHJlZmVyZW5jZXMoKS5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiB9
CiAKIEVpbmFfQm9vbCBld2tfc2V0dGluZ3NfdGV4dF9hdXRvc2l6aW5nX2VuYWJsZWRfc2V0KEV3
a19TZXR0aW5ncyogc2V0dGluZ3MsIEVpbmFfQm9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggZmFlY2Fm
Ni4uNDRiMmY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFNldHRpbmdzLmNwcApAQCAtMjA5Myw3ICsyMDkzLDcgQEAgZ2Jvb2xlYW4gd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0
dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNl
dHRpbmdzKSwgRkFMU0UpOwogCi0gICAgcmV0dXJuIHNldHRpbmdzLT5wcml2LT5wcmVmZXJlbmNl
cy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+
cHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKIH0KIAogLyoqCkBA
IC0yMTA4LDExICsyMTA4LDExIEBAIHZvaWQgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcHJp
dmF0ZV9icm93c2luZyhXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MsIGdib29sCiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfU0VUVElOR1Moc2V0dGluZ3MpKTsKIAogICAgIFdlYktpdFNl
dHRpbmdzUHJpdmF0ZSogcHJpdiA9IHNldHRpbmdzLT5wcml2OwotICAgIGJvb2wgY3VycmVudFZh
bHVlID0gcHJpdi0+cHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBi
b29sIGN1cnJlbnRWYWx1ZSA9IHByaXYtPnByZWZlcmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3Np
bmdFbmFibGVkKCk7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBlbmFibGVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChlbmFibGVkKTsKKyAgICBwcml2LT5wcmVmZXJlbmNlcy0+c2V0TGVnYWN5UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChlbmFibGVkKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qoc2V0dGlu
Z3MpLCAiZW5hYmxlLXByaXZhdGUtYnJvd3NpbmciKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUElTZXNzaW9uLmgKaW5kZXggZmZjNWIyYi4uYmZiODkzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJU2Vzc2lvbi5oCkBAIC00MSwxMCArNDEsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aXNFcGhlbWVyYWwoKSBjb25zdDsKICAgICBXZWJDb3JlOjpTZXNzaW9uSUQgZ2V0SUQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIH5TZXNzaW9uKCk7CisgICAgZXhwbGljaXQgU2Vzc2lvbihXZWJDb3Jl
OjpTZXNzaW9uSUQpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNlc3Npb24oYm9vbCBpc0Vw
aGVtZXJhbCk7Ci0gICAgZXhwbGljaXQgU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAg
IFdlYkNvcmU6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcAppbmRleCAxN2Q5NzI0Li5lNGQ3Zjc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0zODMsOCArMzgzLDYgQEAgdm9pZCBXZWJD
b250ZXh0OjplbnN1cmVOZXR3b3JrUHJvY2VzcygpCiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogCi0gICAgcGFyYW1ldGVycy5wcml2YXRlQnJvd3Np
bmdFbmFibGVkID0gV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3Np
bmcoKTsKLQogICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IG1fY2FjaGVNb2RlbDsKIAogICAg
IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gZGlza0NhY2hlRGlyZWN0b3J5KCk7CkBA
IC00NTksNDQgKzQ1NywzMCBAQCB2b2lkIFdlYkNvbnRleHQ6OmdldERhdGFiYXNlUHJvY2Vzc0Nv
bm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1BybwogfQogI2VuZGlmCiAK
LXZvaWQgV2ViQ29udGV4dDo6d2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3NpbmcoKQordm9pZCBX
ZWJDb250ZXh0Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBj
b25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IGFsbENvbnRleHRzKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsr
aSkKLSAgICAgICAgY29udGV4dHNbaV0tPnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVC
cm93c2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vz
c2VzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytp
KQorICAgICAgICBtX3Byb2Nlc3Nlc1tpXS0+d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hh
bmdlZCgpOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3Np
bmcoKQordm9pZCBXZWJDb250ZXh0OjppbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCgpCiB7
Ci0gICAgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBhbGxDb250ZXh0cygp
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNv
dW50OyArK2kpCi0gICAgICAgIGNvbnRleHRzW2ldLT5zZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpZiAoIW1fcHJpdmF0ZUJyb3dzaW5n
Q291bnQpCisgICAgICAgIHNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcodHJ1ZSk7CisgICAgbV9w
cml2YXRlQnJvd3NpbmdDb3VudCsrOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OndpbmRvd1NlcnZl
ckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQordm9pZCBXZWJDb250ZXh0OjpkZWNyZW1lbnRQcml2
YXRlQnJvd3NpbmdDb3VudCgpCiB7Ci0gICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vz
c2VzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytp
KQotICAgICAgICBtX3Byb2Nlc3Nlc1tpXS0+d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hh
bmdlZCgpOworICAgIG1fcHJpdmF0ZUJyb3dzaW5nQ291bnQtLTsKKyAgICBpZiAoIW1fcHJpdmF0
ZUJyb3dzaW5nQ291bnQpCisgICAgICAgIHNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcoZmFsc2Up
OwogfQogCi12b2lkIFdlYkNvbnRleHQ6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVC
cm93c2luZ0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQordm9pZCBXZWJDb250
ZXh0Ojpzb21lUGFnZUlzUHJpdmF0ZUJyb3dzaW5nKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCkKIHsKICAgICBtX2ljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2
YXRlQnJvd3NpbmdFbmFibGVkKTsKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAg
aWYgKHVzZXNOZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAg
aWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKCkpLCAwKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFRChORVRXT1JL
X1BST0NFU1MpCi0KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgc2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7Ci0gICAgZWxz
ZQotICAgICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25J
RCgpKSk7CiB9CiAKIHZvaWQgKCpzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2spKFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lKTsKQEAgLTYyNSw5ICs2MDksNiBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYkNv
bnRleHQ6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlNldFFPUyh3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpLCB3ZWJQcm9jZXNzVGhy
b3VnaHB1dFFPUygpKSwgMCk7CiAjZW5kaWYKIAotICAgIGlmIChXZWJQcmVmZXJlbmNlczo6YW55
UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25J
RDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7Ci0KICAgICBtX3Byb2Nlc3Nlcy5hcHBl
bmQocHJvY2Vzcyk7CiAKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hh
cmVkU2Vjb25kYXJ5UHJvY2VzcykgewpAQCAtNzc0LDggKzc1NSw2IEBAIFBhc3NSZWZQdHI8V2Vi
UGFnZVByb3h5PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlBhCiAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSAmY29uZmlndXJh
dGlvbi5wYWdlR3JvdXAtPnByZWZlcmVuY2VzKCk7CiAgICAgaWYgKCFjb25maWd1cmF0aW9uLnZp
c2l0ZWRMaW5rUHJvdmlkZXIpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtQcm92
aWRlciA9IG1fdmlzaXRlZExpbmtQcm92aWRlci5nZXQoKTsKLSAgICBpZiAoIWNvbmZpZ3VyYXRp
b24uc2Vzc2lvbikKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uID0gY29uZmlndXJhdGlv
bi5wcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gJkFQSTo6U2Vzc2lvbjo6
bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSA6ICZBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCk7
CiAKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzOwogICAgIGlmIChtX3Byb2Nl
c3NNb2RlbCA9PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCA3ODkyMWRkLi4zODY0NTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTMwNCw5ICszMDQsNiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIAotICAg
IHN0YXRpYyB2b2lkIHdpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0gICAgc3RhdGlj
IHZvaWQgd2lsbFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygpOwotCiAgICAgc3RhdGljIGJvb2wg
aXNFcGhlbWVyYWxTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICNpZiBVU0UoU09VUCkK
QEAgLTM0MCw2ICszMzcsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNZW1vcnlDYWNoZURp
c2FibGVkKGJvb2wpOwogCisgICAgdm9pZCBpbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCgp
OworICAgIHZvaWQgZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKTsKKworICAgIGJvb2wg
YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0
ZUJyb3dzaW5nQ291bnQgPiAwOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKIApAQCAtNDIxLDcgKzQyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRQbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQg
cGx1Z0luT3JpZ2luSGFzaCk7CiAgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0
aW9uKHVuc2lnbmVkIHBsdWdJbk9yaWdpbkhhc2gpOwogCi0gICAgdm9pZCBzZXRBbnlQYWdlR3Jv
dXBNaWdodEhhdmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc29tZVBh
Z2VJc1ByaXZhdGVCcm93c2luZyhib29sKTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogICAgIC8vIFBsdWdpbkluZm9TdG9yZUNsaWVudDoKQEAgLTUzNiw2ICs1MzgsOCBAQCBw
cml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0
aW9uYXJ5PiBtX2J1bmRsZVBhcmFtZXRlcnM7CiAjZW5kaWYKKworICAgIHVuc2lnbmVkIG1fcHJp
dmF0ZUJyb3dzaW5nQ291bnQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRleCA3YWRhZTg5Li5hNWZk
NzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcApA
QCAtNzksNyArNzksNyBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKGNv
bnN0IFN0cmluZyYgcGF0aCkKIAogICAgIC8vIEZJWE1FOiBXZWJJY29uRGF0YWJhc2VzIGFyZSBw
ZXItV2ViQ29udGV4dCBidXQgV2ViQ29udGV4dCdzIGRvbid0IGhhdmUgdGhlaXIgb3duIG5vdGlv
biBvZiB0aGUgY3VycmVudCBwcml2YXRlIGJyb3dzaW5nIHNldHRpbmcuCiAgICAgLy8gQXMgd2Ug
Y2xlYW4gdXAgcHJpdmF0ZSBicm93c2luZyB0aHJvdWdob3V0IHRoZSBzdGFjayB3ZSBuZWVkIHRv
IGNsZWFuIGl0IHVwIGhlcmUuCi0gICAgbV9pY29uRGF0YWJhc2VJbXBsLT5zZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dz
aW5nKCkpOworICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChtX3dlYkNvbnRleHQtPmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CiAKICAg
ICBpZiAoIW1faWNvbkRhdGFiYXNlSW1wbC0+b3BlbihkaXJlY3RvcnlOYW1lKHBhdGgpLCBwYXRo
R2V0RmlsZU5hbWUocGF0aCkpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4g
V2ViS2l0MiBpY29uIGRhdGFiYXNlIG9uIGRpc2siKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGQ2YjJmMS4uY2ZiN2MzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckVt
YmVkZGVkT2JqZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkQ3J5cHRvS2V5V3Jh
cC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklESGFzaC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVz
Lmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTMwMyw3ICszMDQsNyBAQCBXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIHVpbgogICAgICwgbV9pc1RyYWNraW5nVG91Y2hFdmVudHMoZmFsc2UpCiAjZW5kaWYK
ICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKLSAgICAsIG1fc2Vzc2lvbigqY29uZmlndXJhdGlvbi5z
ZXNzaW9uKQorICAgICwgbV9zZXNzaW9uKEFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSkK
ICAgICAsIG1faXNQYWdlU3VzcGVuZGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQoKSkKQEAgLTM3Niw3ICszNzcsOCBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IHVpbgogICAgIC8vIEZJWE1FOiBJZiB3ZSBldmVyIGV4cG9zZSB0aGUgc2Vzc2lvbiBzdG9yYWdl
IHNpemUgYXMgYSBwcmVmZXJlbmNlLCB3ZSBuZWVkIHRvIHBhc3MgaXQgaGVyZS4KICAgICBJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24gPSBtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gV2ViUHJvY2Vz
c1Byb3h5OjpTdGF0ZTo6UnVubmluZyA/IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpIDogbnVsbHB0
cjsKICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zdG9yYWdlTWFuYWdlcigpLmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKG1fcGFnZUlELCBjb25uZWN0aW9uLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIHNldFNlc3Npb24oKmNvbmZpZ3VyYXRpb24uc2Vz
c2lvbik7CisgICAgaWYgKG1fcHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSkKKyAgICAgICAgc2V0U2Vzc2lvbkltcGwoQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbigpLCBmYWxzZSk7CiB9CiAKIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCkBA
IC0zOTUsNiArMzk3LDcgQEAgV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKICNpZm5kZWYg
TkRFQlVHCiAgICAgd2ViUGFnZVByb3h5Q291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgorICAg
IHNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpKTsKIH0KIAogUGxhdGZv
cm1Qcm9jZXNzSWRlbnRpZmllciBXZWJQYWdlUHJveHk6OnByb2Nlc3NJZGVudGlmaWVyKCkgY29u
c3QKQEAgLTUyNywxNSArNTMwLDMwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2Vi
UHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCiAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbiYgc2Vzc2lvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpzZXRTZXNzaW9uSW1wbChBUEk6OlNlc3Npb24mIHNlc3Npb24sIGJvb2wgc2VuZE1lc3NhZ2VU
b1BhZ2UpCiB7Ci0gICAgbV9zZXNzaW9uID0gc2Vzc2lvbjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFNlc3Npb25JRChzZXNzaW9uLmdldElEKCkpLCBtX3BhZ2VJ
RCk7CisgICAgaWYgKHNlc3Npb24uZ2V0SUQoKSAhPSBtX3Nlc3Npb24tPmdldElEKCkpIHsKKyAg
ICAgICAgaWYgKHNlbmRNZXNzYWdlVG9QYWdlKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTZXNzaW9uSUQoc2Vzc2lvbi5nZXRJRCgpKSwgbV9wYWdl
SUQpOworCisgICAgICAgIGlmIChzZXNzaW9uLmdldElEKCkuaXNFcGhlbWVyYWwoKSAmJiAhbV9z
ZXNzaW9uLT5nZXRJRCgpLmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPmNv
bnRleHQoKS5pbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCgpOworICAgICAgICBlbHNlIGlm
ICghc2Vzc2lvbi5nZXRJRCgpLmlzRXBoZW1lcmFsKCkgJiYgbV9zZXNzaW9uLT5nZXRJRCgpLmlz
RXBoZW1lcmFsKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5kZWNyZW1lbnRQ
cml2YXRlQnJvd3NpbmdDb3VudCgpOwogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKLSAg
ICBpZiAoc2Vzc2lvbi5pc0VwaGVtZXJhbCgpKQotICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQo
KS5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lvbi5nZXRJRCgpKSk7CisgICAgICAgIGlmICht
X3Nlc3Npb24tPmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQo
KS5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlbW92
ZVNlc3Npb25SZWZlcmVuY2UobV9zZXNzaW9uLT5nZXRJRCgpKSk7CisgICAgICAgIGlmIChzZXNz
aW9uLmlzRXBoZW1lcmFsKCkpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPmNvbnRleHQoKS5zZW5k
VG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFkZFNlc3Npb25S
ZWZlcmVuY2Uoc2Vzc2lvbi5nZXRJRCgpKSk7CiAjZW5kaWYKKyAgICAgICAgbV9zZXNzaW9uID0g
c2Vzc2lvbjsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRTZXNzaW9uKEFQSTo6
U2Vzc2lvbiYgc2Vzc2lvbikKK3sKKyAgICBzZXRTZXNzaW9uSW1wbChzZXNzaW9uLCB0cnVlKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKQEAgLTIwODMsNiAr
MjEwMSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogICAg
IGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9wcmVmZXJlbmNl
cy0+bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpICYmIG1fc2Vzc2lvbi0+Z2V0SUQoKSA9
PSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKKyAgICAgICAgc2V0U2Vzc2lvbihBUEk6
OlNlc3Npb246OmxlZ2FjeVByaXZhdGVTZXNzaW9uKCkpOworICAgIGVsc2UgaWYgKCFtX3ByZWZl
cmVuY2VzLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgJiYgbV9zZXNzaW9uLT5nZXRJ
RCgpID09IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKQorICAgICAgICBzZXRT
ZXNzaW9uKEFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSk7CisKICNpZiBFTkFCTEUoSU5T
UEVDVE9SX1NFUlZFUikKICAgICBpZiAobV9wcmVmZXJlbmNlcy0+ZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCgpKQogICAgICAgICBpbnNwZWN0b3IoKS0+ZW5hYmxlUmVtb3RlSW5zcGVjdGlvbigpOwpA
QCAtMjYyMyw3ICsyNjQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKIAogLy8gVUlDbGll
bnQKIAotdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIHVpbnQz
Ml90IG9wYXF1ZU1vZGlmaWVycywgaW50MzJfdCBvcGFxdWVNb3VzZUJ1dHRvbiwgdWludDY0X3Qm
IG5ld1BhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgbmV3UGFnZVBhcmFtZXRlcnMp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgdWludDMyX3Qg
b3BhcXVlTW9kaWZpZXJzLCBpbnQzMl90IG9wYXF1ZU1vdXNlQnV0dG9uLCBTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCYgbmV3UGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBu
ZXdQYWdlUGFyYW1ldGVycykKIHsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlID0g
bV91aUNsaWVudC0+Y3JlYXRlTmV3UGFnZSh0aGlzLCByZXF1ZXN0LCB3aW5kb3dGZWF0dXJlcywg
c3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ob3BhcXVlTW9kaWZpZXJzKSwgc3RhdGlj
X2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihvcGFxdWVNb3VzZUJ1dHRvbikpOwogICAgIGlm
ICghbmV3UGFnZSkgewpAQCAtMjYzMSw2ICsyNjU0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNy
ZWF0ZU5ld1BhZ2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dG
ZWEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFQSTo6U2Vzc2lvbiBzZXNzaW9uKHNl
c3Npb25JRCk7CisgICAgbmV3UGFnZS0+c2V0U2Vzc2lvbkltcGwoc2Vzc2lvbiwgZmFsc2UpOwor
CiAgICAgbmV3UGFnZUlEID0gbmV3UGFnZS0+cGFnZUlEKCk7CiAgICAgbmV3UGFnZVBhcmFtZXRl
cnMgPSBuZXdQYWdlLT5jcmVhdGlvblBhcmFtZXRlcnMoKTsKICAgICBwcm9jZXNzKCkuY29udGV4
dCgpLnN0b3JhZ2VNYW5hZ2VyKCkuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShtX3BhZ2VJ
RCwgbmV3UGFnZS0+cGFnZUlEKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDgyYTEyNWEuLjE4Yzg0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTMyMyw3ICszMjMsNiBAQCBzdHJ1Y3QgV2ViUGFnZUNvbmZpZ3VyYXRp
b24gewogICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gbnVsbHB0cjsKICAgICBXZWJQcmVm
ZXJlbmNlcyogcHJlZmVyZW5jZXMgPSBudWxscHRyOwogICAgIFZpc2l0ZWRMaW5rUHJvdmlkZXIq
IHZpc2l0ZWRMaW5rUHJvdmlkZXIgPSBudWxscHRyOwotICAgIEFQSTo6U2Vzc2lvbiogc2Vzc2lv
biA9IG51bGxwdHI7CiAgICAgV2ViUGFnZVByb3h5KiByZWxhdGVkUGFnZSA9IG51bGxwdHI7CiB9
OwogCkBAIC05MjgsNiArOTI3LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0VXNlckFnZW50
KGNvbnN0IFN0cmluZyYpOwogCisgICAgdm9pZCBzZXRTZXNzaW9uSW1wbChBUEk6OlNlc3Npb24m
LCBib29sIHNlbmRNZXNzYWdlVG9QYWdlKTsKKwogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKQEAgLTk4MSw3ICs5
ODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQsIElQQzo6TWVz
c2FnZURlY29kZXImKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFn
ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dG
ZWF0dXJlcyYsIHVpbnQzMl90IG1vZGlmaWVycywgaW50MzJfdCBtb3VzZUJ1dHRvbiwgdWludDY0
X3QmIG5ld1BhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHZvaWQgY3Jl
YXRlTmV3UGFnZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYsIHVpbnQzMl90IG1vZGlmaWVycywgaW50MzJfdCBtb3VzZUJ1dHRv
biwgV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCYgbmV3UGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBzaG93UGFnZSgpOwogICAgIHZvaWQgY2xvc2VQYWdl
KGJvb2wgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFs
ZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYsIFJlZlB0cjxNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseT4pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZWU4
NTllOC4uYjIzNjE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgIyBVSSBtZXNzYWdlcwotICAgIENyZWF0ZU5ld1BhZ2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdpbmRvd0Zl
YXR1cmVzLCB1aW50MzJfdCBtb2RpZmllcnMsIGludDMyX3QgbW91c2VCdXR0b24pIC0+ICh1aW50
NjRfdCBuZXdQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBuZXdQYWdl
UGFyYW1ldGVycykKKyAgICBDcmVhdGVOZXdQYWdlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgdWludDMyX3Qg
bW9kaWZpZXJzLCBpbnQzMl90IG1vdXNlQnV0dG9uLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgbmV3UGFnZVBhcmFtZXRlcnMpCiAgICAgU2hvd1BhZ2UoKQogICAgIENsb3NlUGFnZShi
b29sIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkgRGVsYXllZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggMGY3ZGE3OS4uZmU1YzllOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0zMiwx
MCArMzIsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotLy8gRklYTUU6IE1hbmlwdWxhdGlu
ZyB0aGlzIHZhcmlhYmxlIGlzIG5vdCB0aHJlYWQgc2FmZS4KLS8vIEluc3RlYWQgb2YgdHJhY2tp
bmcgcHJpdmF0ZSBicm93c2luZyBzdGF0ZSBhcyBhIGJvb2xlYW4gcHJlZmVyZW5jZSwgd2Ugc2hv
dWxkIGxldCB0aGUgY2xpZW50IHByb3ZpZGUgc3RvcmFnZSBzZXNzaW9ucyBleHBsaWNpdGx5Lgot
c3RhdGljIHVuc2lnbmVkIHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudDsKLQogV2ViUHJlZmVyZW5j
ZXM6OldlYlByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKICAgICA6IG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogewpAQCAtNjIsMjUgKzU4LDEyIEBAIHZvaWQgV2ViUHJlZmVy
ZW5jZXM6OmFkZFBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiB7CiAgICAgQVNTRVJU
KCFtX3BhZ2VzLmNvbnRhaW5zKCZ3ZWJQYWdlUHJveHkpKTsKICAgICBtX3BhZ2VzLmFkZCgmd2Vi
UGFnZVByb3h5KTsKLQotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpIHsKLSAgICAg
ICAgaWYgKCFwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQpCi0gICAgICAgICAgICBXZWJDb250ZXh0
Ojp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpOwotCi0gICAgICAgICsrcHJpdmF0ZUJy
b3dzaW5nUGFnZUNvdW50OwotICAgIH0KIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6cmVtb3Zl
UGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKIHsKICAgICBBU1NFUlQobV9wYWdlcy5j
b250YWlucygmd2ViUGFnZVByb3h5KSk7CiAgICAgbV9wYWdlcy5yZW1vdmUoJndlYlBhZ2VQcm94
eSk7Ci0KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKSB7Ci0gICAgICAgIC0tcHJp
dmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VD
b3VudCkKLSAgICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3Np
bmcoKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZSgpCkBAIC05Nyw4
ICs4MCw4IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnVwZGF0ZVN0cmluZ1ZhbHVlRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhCiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OnVwZGF0ZUJvb2xWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgYm9vbCB2YWx1ZSkKIHsK
LSAgICBpZiAoa2V5ID09IFdlYlByZWZlcmVuY2VzS2V5Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVk
S2V5KCkpIHsKLSAgICAgICAgdXBkYXRlUHJpdmF0ZUJyb3dzaW5nVmFsdWUodmFsdWUpOworICAg
IGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWRLZXkoKSkgeworICAgICAgICB1cGRhdGVMZWdhY3lQcml2YXRlQnJvd3NpbmdWYWx1ZSh2YWx1
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNCwyNyArMTA3LDIwIEBAIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUZsb2F0VmFsdWVGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXks
IGZsb2F0IHZhbHVlKQogICAgIHVwZGF0ZSgpOyAvLyBGSVhNRTogT25seSBzZW5kIG92ZXIgdGhl
IGNoYW5nZWQga2V5IGFuZCB2YWx1ZS4KIH0KIAotdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRl
UHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSkKK3ZvaWQgV2ViUHJlZmVyZW5jZXM6OnVw
ZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVlKGJvb2wgdmFsdWUpCiB7Ci0gICAgcGxhdGZv
cm1VcGRhdGVCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2lu
Z0VuYWJsZWRLZXkoKSwgdmFsdWUpOwotCi0gICAgdW5zaWduZWQgcGFnZXNDaGFuZ2VkID0gbV9w
YWdlcy5zaXplKCk7Ci0gICAgaWYgKCFwYWdlc0NoYW5nZWQpCi0gICAgICAgIHJldHVybjsKKyAg
ICBwbGF0Zm9ybVVwZGF0ZUJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bGVnYWN5
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpLCB2YWx1ZSk7CiAKICAgICBpZiAodmFsdWUpIHsK
LSAgICAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQpCi0gICAgICAgICAgICBXZWJD
b250ZXh0Ojp3aWxsU3RhcnRVc2luZ1ByaXZhdGVCcm93c2luZygpOwotICAgICAgICBwcml2YXRl
QnJvd3NpbmdQYWdlQ291bnQgKz0gcGFnZXNDaGFuZ2VkOwotICAgIH0KLQotICAgIHVwZGF0ZSgp
OyAvLyBGSVhNRTogT25seSBzZW5kIG92ZXIgdGhlIGNoYW5nZWQga2V5IGFuZCB2YWx1ZS4KLQot
ICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1BhZ2VDb3Vu
dCA+PSBwYWdlc0NoYW5nZWQpOwotICAgICAgICBwcml2YXRlQnJvd3NpbmdQYWdlQ291bnQgLT0g
cGFnZXNDaGFuZ2VkOwotICAgICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCkKLSAg
ICAgICAgICAgIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlcykgeworICAgICAgICAgICAgaWYgKHBhZ2Ut
PnNlc3Npb25JRCgpID09IFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQor
ICAgICAgICAgICAgICAgIHBhZ2UtPnNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2
YXRlU2Vzc2lvbigpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAoYXV0
byYgcGFnZSA6IG1fcGFnZXMpIHsKKyAgICAgICAgICAgIGlmIChwYWdlLT5zZXNzaW9uSUQoKSA9
PSBXZWJDb3JlOjpTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkKKyAgICAgICAg
ICAgICAgICBwYWdlLT5zZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSk7
CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE2Niw5ICsxNDIsNCBAQCBGT1JfRUFDSF9XRUJL
SVRfUFJFRkVSRU5DRShERUZJTkVfUFJFRkVSRU5DRV9HRVRURVJfQU5EX1NFVFRFUlMpCiAKICN1
bmRlZiBERUZJTkVfUFJFRkVSRU5DRV9HRVRURVJfQU5EX1NFVFRFUlMKIAotYm9vbCBXZWJQcmVm
ZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpCi17Ci0gICAgcmV0dXJu
IHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGRkNWUyZDEuLmYx
ZTVlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNl
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oCkBAIC02
OCw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICAvLyBFeHBvc2VkIGZvciBXZWJLaXRUZXN0UnVubmVy
IHVzZSBvbmx5LgogICAgIHZvaWQgZm9yY2VVcGRhdGUoKSB7IHVwZGF0ZSgpOyB9CiAKLSAgICBz
dGF0aWMgYm9vbCBhbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0KIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgV2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJik7CiAgICAgV2ViUHJl
ZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXMmKTsKQEAgLTg5LDcgKzg3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlRG91YmxlVmFsdWVGb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXksIGRvdWJsZSB2YWx1ZSk7CiAgICAgdm9pZCBwbGF0Zm9ybVVwZGF0ZUZsb2F0VmFsdWVG
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0IHZhbHVlKTsKIAotICAgIHZvaWQgdXBkYXRl
UHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSk7CisgICAgdm9pZCB1cGRhdGVMZWdhY3lQ
cml2YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKTsKIAogICAgIFN0cmluZyBtX2lkZW50aWZp
ZXI7CiAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZSBtX3N0b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAppbmRleCA3Njg3MzBkLi4zNTRiNzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzA5
LDkgKzMwOSwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJvbwogICAgIC8vIEZJWE1FIChOZXR3
b3JrUHJvY2Vzcyk6IFRoaXMgdGVzdC1vbmx5IGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE5l
dHdvcmtQcm9jZXNzLCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
NTI3ND4uCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRk5FVFdPUkspIHx8IFVTRShTT1VQ
KQogICAgIGlmIChlbmFibGVkKQotICAgICAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Np
b25JRCgpKTsKKyAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Npb25SZWZlcmVuY2UoU2Vz
c2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogICAgIGVsc2UKLSAgICAgICAgU2Vz
c2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Np
b25JRCgpKTsKKyAgICAgICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25JRDo6
bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSkKKyAgICAgICAgICAgIFNlc3Npb25UcmFja2VyOjpy
ZW1vdmVTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgp
KTsKICNlbmRpZgogICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6
cGFnZUdyb3VwKHBhZ2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKICAgICBmb3IgKEhh
c2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRlciAhPSBwYWdl
cy5lbmQoKTsgKytpdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCmluZGV4IGRmZjgxNWIuLmMwOTE1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE1MzMsNyArMTUz
Myw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICBp
ZiAoIWZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdp
blN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHJldHVybiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpOwogfQogCiBib29sIFBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggMGNk
OTMzOS4uYWYxMzAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMjExLDEzICsyMTEs
MTQgQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXMKIAogICAgIHVpbnQ2NF90IG5ld1BhZ2VJRCA9
IDA7CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIGlmICgh
V2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZShyZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpLCB3aW5kb3dGZWF0dXJlcywgbW9kaWZpZXJzLCBtb3VzZUJ1dHRvbiksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVy
cyksIG1fcGFnZS0+cGFnZUlEKCkpKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Q3JlYXRlTmV3UGFnZShyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCB3aW5kb3dGZWF0dXJlcywg
bW9kaWZpZXJzLCBtb3VzZUJ1dHRvbiwgZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpSZXBseShuZXdQYWdlSUQsIHBhcmFt
ZXRlcnMpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAo
IW5ld1BhZ2VJRCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5jcmVhdGVXZWJQYWdlKG5ld1BhZ2VJRCwgcGFyYW1ldGVycyk7CisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkud2ViUGFnZShuZXdQYWdlSUQpLT5zZXRTZXNzaW9uSUQoZnJhbWUtPnBhZ2UoKS0+
c2Vzc2lvbklEKCkpOwogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKG5l
d1BhZ2VJRCktPmNvcmVQYWdlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaAppbmRleCBkZWYyMDM4Li5iMzk2Y2U2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw5ICs0MCw2IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
KGZyYW1lKSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZp
YyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNrZXIKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0KICAgICBzdGF0aWMgdm9p
ZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9s
aWN5KTsKIAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0K
aW5kZXggMjZiZmZjNC4uY2ZlOWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Lm1tCkBAIC00MiwyMiArNDIsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi12b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25J
RCkKLXsKLSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotCi0gICAgaWYgKFNl
c3Npb25UcmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFN0cmluZyBiYXNlOwotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2Uo
KS5pc051bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl07Ci0gICAgZWxzZQotICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6Omdl
dElkZW50aWZpZXJCYXNlKCk7Ci0KLSAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNz
aW9uSUQsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihiYXNlICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSkpOwot
fQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGlj
eUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogewogICAgIFtb
TlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0Q29va2llQWNj
ZXB0UG9saWN5OnN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4ocG9saWN5KV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3Nv
dXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5k
ZXggNzc3MzdkNC4uZTk0MzI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmNwcApAQCAtMzgsMTYgKzM4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkK
LXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNlc3Npb25UcmFj
a2VyOjpzZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQo
KSkpKTsKLX0KLQogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dChXZWJGcmFtZSogZnJhbWUpCiAgICAgOiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZy
YW1lLT5jb3JlRnJhbWUoKSkKIHsKQEAgLTU1LDcgKzQ1LDcgQEAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCiAKIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNl
c3Npb24oKSBjb25zdAogewotICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCku
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBh
Z2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuICpTZXNzaW9u
VHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAK
ICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
c291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4
IDkzNDEwYjMuLjE5NGE2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaApAQCAtNDMsOCArNDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vz
c2lvbklEKTsKLQogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVu
dCgpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDExOWUyZWIuLjdhN2QzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNp
bmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAi
U2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJT
aGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgpAQCAtMjExOSwxNCArMjEyMCw2IEBAIHZv
aWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSh1bnNpZ25lZCBsYXllckhvc3RpbmdNb2Rl
KQogICAgICAgICBwbHVnaW5WaWV3LT5zZXRMYXllckhvc3RpbmdNb2RlKG1fbGF5ZXJIb3N0aW5n
TW9kZSk7CiB9CiAKLVNlc3Npb25JRCBXZWJQYWdlOjpzZXNzaW9uSUQoKSBjb25zdAotewotICAg
IGlmIChtX3BhZ2UtPmlzU2Vzc2lvbklEU2V0KCkpCi0gICAgICAgIHJldHVybiBtX3BhZ2UtPnNl
c3Npb25JRCgpOwotCi0gICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkgPyBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotfQotCiBib29sIFdlYlBhZ2U6OmlzVXNpbmdFcGhl
bWVyYWxTZXNzaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKTsKQEAgLTIxMzQsOSArMjEyNywxNCBAQCBib29sIFdlYlBhZ2U6OmlzVXNpbmdFcGhlbWVy
YWxTZXNzaW9uKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoU2Vzc2lvbklE
IHNlc3Npb25JRCkKIHsKLSAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwotICAg
IGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIGlmIChzZXNz
aW9uSUQgIT0gbV9wYWdlLT5zZXNzaW9uSUQoKSkgeworICAgICAgICBBU1NFUlQoc2Vzc2lvbklE
LmlzVmFsaWQoKSk7CisgICAgICAgIGlmIChtX3BhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFs
KCkpCisgICAgICAgICAgICBTZXNzaW9uVHJhY2tlcjo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZSht
X3BhZ2UtPnNlc3Npb25JRCgpKTsKKyAgICAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
KQorICAgICAgICAgICAgU2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Npb25SZWZlcmVuY2Uoc2Vzc2lv
bklEKTsKKyAgICAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKKyAgICB9CiB9
CiAKIHZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3Qg
ZG93bmxvYWRJRCkKQEAgLTI0NDEsMTAgKzI0MzksOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVBy
ZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIHNldHRpbmdz
LnNldExvY2FsU3RvcmFnZUVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5Ojpsb2NhbFN0b3JhZ2VFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRY
U1NBdWRpdG9yRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6Onhzc0F1ZGl0b3JFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZEtleSgpKSk7Ci0gICAgaWYgKG1fcGFnZS0+aXNTZXNzaW9u
SURTZXQoKSkKLSAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChtX3Bh
Z2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwotICAgIGVsc2UKLSAgICAgICAgc2V0dGlu
Z3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkpOworICAgIGlmIChz
dG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeVByaXZhdGVC
cm93c2luZ0VuYWJsZWRLZXkoKSkgJiYgIW1fcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwo
KSkKKyAgICAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkpOwogICAgIHNldHRpbmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkZXZlbG9wZXJFeHRyYXNF
bmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFi
bGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlw
dEV4cGVyaW1lbnRzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VGV4dEFyZWFzQXJl
UmVzaXphYmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGV4
dEFyZWFzQXJlUmVzaXphYmxlS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCmluZGV4IDNhMThlNDEuLjBjYTJmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkyLDcgKzE5Miw3IEBAIHB1Ymxp
YzoKIAogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
LmdldCgpOyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH0KLSAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CisgICAgV2ViQ29y
ZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklE
KCk7IH0KICAgICBib29sIGlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggY2JiZGU4My4uNjRmZjg1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zNDgsNiArMzQ4LDkgQEAgdm9pZCBX
ZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWUKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2Uo
cGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCisgICAgaWYg
KFNlc3Npb25UcmFja2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKQorICAgICAgICBT
ZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UoIiIpOworCiAgICAgaWYgKHBhcmFtZXRl
cnMuc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApAQCAtNDcxLDIwICs0NzQs
NiBAQCB2b2lkIFdlYlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wg
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKICAgICBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJs
ZWQgPSBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSNpZiBQ
TEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9u
SUQpOwotI2VuZGlmCi19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lT
ZXNzaW9uKHNlc3Npb25JRCk7Ci0jZW5kaWYKLX0KLQogRG93bmxvYWRNYW5hZ2VyJiBXZWJQcm9j
ZXNzOjpkb3dubG9hZE1hbmFnZXIoKQogewogICAgIEFTU0VSVCghdXNlc05ldHdvcmtQcm9jZXNz
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBlZWU5ODAxLi4w
MjQ4M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTYzLDkg
KzE2Myw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAK
LSAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklE
KTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Np
b25JRCk7Ci0KICAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwog
ICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMWZl
OGNkNi4uZGZmNmZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDksMTAgKzQ5LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExT
RXJyb3JzKQogI2VuZGlmCiAKLSAgICAvLyBMZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNzaW9u
IGlzIHBlciBwcm9jZXNzLiBJbmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2UgZ3JvdXBzIG1heSB1c2Ug
dGhlIHByaXZhdGUgc2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUgYXMgYXBwcm9wcmlhdGUuCi0g
ICAgRW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQotICAgIERlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCi0KICAgICAjIFBsdWctaW5zLgogICAgIERpZEFkZFBsdWdJbkF1dG9TdGFy
dE9yaWdpbkhhc2godWludDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lKQogICAgIFJl
c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hNYXA8dWludDMyX3QsZG91YmxlPiBo
YXNoZXMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMzQ3M2M0ZC4uM2YxOGRlNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAg
PG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGgg
c2Vzc2lvbnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCBhbiBBUEkgdGVzdCBmb3IgZXBoZW1lcmFsIHNlc3Npb25zIHNpbWlsYXIgdG8gUHJp
dmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2sKKyAgICAgICAgYW5kIGFub3Ro
ZXIgb25lIHRvIHRlc3QgY29va2llcyBpbiBkaWZmZXJlbnQgc2Vzc2lvbnMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0VwaGVtZXJhbFNlc3Np
b25Db29raWVzLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpydW5KYXZhU2Ny
aXB0QWxlcnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3Rv
cnlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkTmF2aWdh
dGVXaXRoTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorCiAyMDE0LTAzLTE3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIHNvcnQtZXhwb3J0LWZpbGUgLS1oZWxwIGRvZXNuJ3Qgd29yayAobWlzc2luZyAn
dXNlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmU0MWY4Yy4uNjgyNDUzNCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNyw2ICsxMDcsOCBAQAogCQk1MkNCNDc0MTE0NDhGQjkz
MDA4NzM5OTUgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0I0NzQw
MTQ0OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3Rv
cnlVUkwuY3BwICovOyB9OwogCQk1MkU1Q0U0NjE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJF
NUNFNDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAqLzsgfTsKIAkJNTJFNUNF
NDkxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0ODE0RDIxRUFCMDAzQjJC
RDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLzsgfTsKKwkJNzVCOTFERTgxOEQ3NzcyQzAw
QTk4Njg3IC8qIEVwaGVtZXJhbFNlc3Npb25Db29raWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1QjkxREU3MThENzc3MkMwMEE5ODY4NyAvKiBF
cGhlbWVyYWxTZXNzaW9uQ29va2llcy5jcHAgKi87IH07CisJCTc1RjMxMzQwMThDMTcxQjcwMDQx
Q0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVGMzEzM0YxOEMx
NzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFj
ay5jcHAgKi87IH07CiAJCTc2RTE4MkRBMTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1p
dEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc2RTE4MkQ5MTU0NzU1MDEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcCAqLzsg
fTsKIAkJNzZFMTgyREQxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAg
Ki87IH07CiAJCTc2RTE4MkRGMTU0NzY3RTYwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9y
bS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1s
ICovOyB9OwpAQCAtNDMyLDYgKzQzNCw4IEBACiAJCTUyQ0I0NzQwMTQ0OEZCOTMwMDg3Mzk5NSAv
KiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRo
Tm9uRGlyZWN0b3J5VVJMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJFNUNF
NDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTJFNUNFNDgxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJlbnRGcmFtZV9CdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NUI5MURFNzE4RDc3NzJDMDBB
OTg2ODcgLyogRXBoZW1lcmFsU2Vzc2lvbkNvb2tpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvbkNvb2tpZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFs
U2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkQ5MTU0NzU1MDEw
MEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3NkUxODJEQzE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRF
dmVudF9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ls
bFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2Myw2ICs3NjcsNyBAQAogCQkJCUY2RjQ5
QzY3MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCAqLywK
IAkJCQlGNkY0OUM2NjE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNo
ZV9CdW5kbGUuY3BwICovLAogCQkJCUMwNDVGOTQ0MTM4NUMyRTkwMEMwRjNDRCAvKiBEb3dubG9h
ZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwICovLAorCQkJCTc1RjMxMzNGMThDMTcxQjcwMDQx
Q0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICov
LAogCQkJCTFBNUZFRkRDMTI3MEUyQTMwMDBFMjkyMSAvKiBFdmFsdWF0ZUphdmFTY3JpcHQuY3Bw
ICovLAogCQkJCUJDQzhCOTVBMTI2MTFGNDcwMERFNDZBNCAvKiBGYWlsZWRMb2FkLmNwcCAqLywK
IAkJCQkxQTAyQzg0RTEyNUQ0QTg0MDBFM0Y0QkQgLyogRmluZC5jcHAgKi8sCkBAIC0xMDQ0LDYg
KzEwNDksNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQ0FB
NDg1NzE0QTA0NEQ0MDA4OEZBQzQgLyogRWRpdG9yQ29tbWFuZHMubW0gKi8sCisJCQkJNzVCOTFE
RTcxOEQ3NzcyQzAwQTk4Njg3IC8qIEVwaGVtZXJhbFNlc3Npb25Db29raWVzLmNwcCAqLywKIAkJ
CQlDMEM1RDNCQzE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tICov
LAogCQkJCUMwQzVEM0JEMTQ1OThCNkYwMEE4MDJBNiAvKiBHZXRCYWNraW5nU2NhbGVGYWN0b3Jf
QnVuZGxlLm1tICovLAogCQkJCTFBRUY5OTQ4MTdBMDlGNTMwMDk5OEVGMCAvKiBHZXRQSURBZnRl
ckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcCAqLywKQEAgLTExNDgsNiArMTE1NCw3IEBACiAJCQkJ
Mjk3MjM0QjQxNzNBRDA0ODAwOTgzNjAxIC8qIEN1c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzkwMjhCNjE0RkFCRDkyMDA3RTZCNDMgLyogQWNjZXB0
c0ZpcnN0TW91c2UubW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE4NjFGRjE3QkQ0REM3MDBENEU0
MUUgLyogU3RvcExvYWRpbmdGcm9tRGlkRmluaXNoTG9hZGluZy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTc1RjMxMzQwMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRl
Tm9IaXN0b3J5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZGMUI0NDQxNUNBNDM0
RjAwRDFFNEJGIC8qIEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTVGMTFB
MDE1MTY4MzRGMDA5MTU5MTYgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTAwQ0Q5RjYzMTVCRTMxMkMwMDJEQTJDRSAvKiBCYWNrRm9yd2FyZExpc3QubW0gaW4gU291
cmNlcyAqLywKQEAgLTExNjcsNiArMTE3NCw3IEBACiAJCQkJMzc1MUFGN0MxNjk1MThGODAwNzY0
MzE5IC8qIERPTU5vZGVGcm9tSlNPYmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkzN0RDNjc4
RDE0MEQ3QzUwMDBBQkNDREIgLyogRE9NUmFuZ2VPZlN0cmluZy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUxMzkzRTIwMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3NUI5MURFODE4RDc3NzJDMDBBOTg2ODcgLyogRXBoZW1l
cmFsU2Vzc2lvbkNvb2tpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjZGNDlDNjkxNTU0NUM4
RTAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzA0NUY5NDUxMzg1QzJFQTAwQzBGM0NEIC8qIERvd25sb2FkRGVjaWRlRGVzdGluYXRp
b25DcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0E0MjdBQjE4MERBMjY0MDBDRDI0RDcg
LyogUmVmLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFj
ay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBoZW1lcmFsU2Vzc2lv
blB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44MzAzMTk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFj
ay5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmll
dy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgdGVzdERvbmU7CisK
K3N0YXRpYyB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0
YSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICAvLyBU
aGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiBuYXZpZ2F0aW5nIGluIFByaXZhdGUgQnJv
d3NpbmcuCisgICAgRkFJTCgpOworfQorCitzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURv
Y3VtZW50TmF2aWdhdGlvblR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKQoreworICAgIHRlc3REb25lID0gdHJ1ZTsKK30KKworVEVTVChXZWJLaXQy
LCBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2spCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgp
KTsKKworICAgIFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMCBoaXN0b3J5Q2xpZW50OworICAgIG1l
bXNldCgmaGlzdG9yeUNsaWVudCwgMCwgc2l6ZW9mKGhpc3RvcnlDbGllbnQpKTsKKworICAgIGhp
c3RvcnlDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBoaXN0b3J5Q2xpZW50LmRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhID0gZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE7CisK
KyAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KGNvbnRleHQuZ2V0KCksICZoaXN0b3J5Q2xp
ZW50LmJhc2UpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7
CisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBwYWdlTG9hZGVyQ2xpZW50OworICAgIG1lbXNl
dCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGllbnQpKTsKKworICAg
IHBhZ2VMb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBwYWdlTG9hZGVyQ2xpZW50
LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5w
YWdlKCksICZwYWdlTG9hZGVyQ2xpZW50LmJhc2UpOworCisgICAgV0tTZXNzaW9uUmVmIHNlc3Np
b24gPSBXS1Nlc3Npb25DcmVhdGUodHJ1ZSk7CisgICAgV0tQYWdlU2V0U2Vzc2lvbih3ZWJWaWV3
LnBhZ2UoKSwgc2Vzc2lvbik7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0
V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJwdXNoLXN0YXRlIiwgImh0bWwiKSk7Cisg
ICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKKworICAgIFV0aWw6
OnJ1bigmdGVzdERvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0VwaGVtZXJhbFNl
c3Npb25Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMv
RXBoZW1lcmFsU2Vzc2lvbkNvb2tpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjNmNjUzZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvbWFjL0VwaGVtZXJhbFNlc3Npb25Db29raWVzLmNwcApAQCAtMCwwICsxLDg5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKworI2luY2x1ZGUg
PFdlYktpdDIvV0tQYWdlUHJpdmF0ZU1hYy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0
UHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCB0ZXN0RG9uZTsKKworc3RhdGljIHZvaWQg
cnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQs
IFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdGVzdERv
bmUgPSB0cnVlOworfQorCitURVNUKFdlYktpdDIsIEVwaGVtZXJhbFNlc3Npb25Db29raWVzKQor
eworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRl
eHRDcmVhdGUoKSk7CisgICAgV0tDb250ZXh0U2V0UHJvY2Vzc01vZGVsKGNvbnRleHQuZ2V0KCks
IGtXS1Byb2Nlc3NNb2RlbE11bHRpcGxlU2Vjb25kYXJ5UHJvY2Vzc2VzKTsKKyAgICBXS0NvbnRl
eHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoY29udGV4dC5nZXQoKSwgdHJ1ZSk7CisKKyAgICBQbGF0
Zm9ybVdlYlZpZXcgd2ViVmlldzEoY29udGV4dC5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IGJhc2VVUkwgPSBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJodHRw
Oi8vMTI3LjAuMC4xOjAiKSk7CisKKyAgICBXS1BhZ2VVSUNsaWVudFYwIHVpQ2xpZW50OworICAg
IG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOworCisgICAgdWlDbGllbnQu
YmFzZS52ZXJzaW9uID0gMDsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQgPSBydW5K
YXZhU2NyaXB0QWxlcnQ7CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQod2ViVmlldzEucGFn
ZSgpLCAmdWlDbGllbnQuYmFzZSk7CisKKyAgICBXS1Nlc3Npb25SZWYgc2Vzc2lvbiA9IFdLU2Vz
c2lvbkNyZWF0ZSh0cnVlKTsKKyAgICBXS1BhZ2VTZXRTZXNzaW9uKHdlYlZpZXcxLnBhZ2UoKSwg
c2Vzc2lvbik7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaHRtbFN0cmluZzEgPSBV
dGlsOjp0b1dLKCI8Ym9keT48c2NyaXB0PmRvY3VtZW50LmNvb2tpZT0nZm9vPWJhcic7IGlmIChk
b2N1bWVudC5jb29raWUgPT09ICdmb289YmFyJykgYWxlcnQoJ2ZvbycpOzwvc2NyaXB0PjwvYm9k
eT4iKTsKKyAgICBXS1BhZ2VMb2FkSFRNTFN0cmluZyh3ZWJWaWV3MS5wYWdlKCksIGh0bWxTdHJp
bmcxLmdldCgpLCBiYXNlVVJMLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmdGVzdERvbmUpOwor
ICAgIHRlc3REb25lID0gZmFsc2U7CisKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldzIoY29u
dGV4dC5nZXQoKSk7CisgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHdlYlZpZXcyLnBhZ2UoKSwg
JnVpQ2xpZW50LmJhc2UpOworICAgIFdLUGFnZVNldFNlc3Npb24od2ViVmlldzIucGFnZSgpLCBz
ZXNzaW9uKTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBodG1sU3RyaW5nMiA9IFV0
aWw6OnRvV0soIjxib2R5PjxzY3JpcHQ+aWYgKGRvY3VtZW50LmNvb2tpZSA9PT0gJ2Zvbz1iYXIn
KSBhbGVydCgnYmFyJyk7PC9zY3JpcHQ+PC9ib2R5PiIpOworICAgIFdLUGFnZUxvYWRIVE1MU3Ry
aW5nKHdlYlZpZXcyLnBhZ2UoKSwgaHRtbFN0cmluZzIuZ2V0KCksIGJhc2VVUkwuZ2V0KCkpOwor
CisgICAgVXRpbDo6cnVuKCZ0ZXN0RG9uZSk7CisgICAgdGVzdERvbmUgPSBmYWxzZTsKKworICAg
IFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3Myhjb250ZXh0LmdldCgpKTsKKyAgICBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQod2ViVmlldzMucGFnZSgpLCAmdWlDbGllbnQuYmFzZSk7CisKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gaHRtbFN0cmluZzMgPSBVdGlsOjp0b1dLKCI8Ym9keT48c2Ny
aXB0PmlmICghKGRvY3VtZW50LmNvb2tpZSA9PT0gJ2Zvbz1iYXInKSkgYWxlcnQoJ2JheicpOzwv
c2NyaXB0PjwvYm9keT4iKTsKKyAgICBXS1BhZ2VMb2FkSFRNTFN0cmluZyh3ZWJWaWV3My5wYWdl
KCksIGh0bWxTdHJpbmczLmdldCgpLCBiYXNlVVJMLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigm
dGVzdERvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="251218"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227334</attachid>
            <date>2014-03-20 14:19:31 -0700</date>
            <delta_ts>2014-03-25 14:42:50 -0700</delta_ts>
            <desc>remove bug fix</desc>
            <filename>privatesetting.04a.diff</filename>
            <type>text/plain</type>
            <size>85276</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NTJmOTY0Li4zZDNlMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVj
dFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5p
dGlhbGl6ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNl
c3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRv
IGp1c3QgcmV0dXJuIG1fc2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vz
c2lvbklEKTogQWxzbyBwZXJmb3JtIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24u
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOiBSZW1vdmUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBzZXR0aW5n
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUGFnZSByZWZsZWN0cyBz
ZXR0aW5nIHVzaW5nIHNlc3Npb24uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpnZXRWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
Ojppc0Rpc2FibGVkQnlQcml2YXRlQnJvd3NpbmcpOgorCiAyMDE0LTAzLTIwICBCcmlhbiBCdXJn
ICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBSZXBsYXk6IGZpeCBzb21lIG92ZXJz
aWdodHMgaW4gdGhlIHJlcGxheSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXggYzlhNTM2Ni4uMjQy
YTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VDb250ZXh0LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIGJvb2wgRGF0YWJhc2VDb250
ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKCkgY29uc3QKIHsKICAgICBpZiAobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAgICBpZiAoIWRv
Y3VtZW50LT5wYWdlKCkgfHwgKGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdzKCkucHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dzRGF0YWJhc2VBY2Nlc3NJ
blByaXZhdGVCcm93c2luZyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+cHJvdG9jb2woKSkp
KQorICAgICAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgKGRvY3VtZW50LT5wYWdlKCktPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFz
ZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5wcm90
b2NvbCgpKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGYw
MGUwZWQuLmNkYmFlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKKyNp
bmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNo
YWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCkBAIC0xMjMzLDggKzEyMzQsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBVUkwmIGluaXRpYWxV
UkwsIENvbnRlbnRUeXBlJiBjb250ZW50VAogICAgIGlmIChtX3NlbmRQcm9ncmVzc0V2ZW50cykg
CiAgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CiAKLSAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgYm9vbCBwcml2YXRlTW9kZSA9ICFz
ZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGJvb2wg
cHJpdmF0ZU1vZGUgPSBkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+c2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dzaW5n
TW9kZShwcml2YXRlTW9kZSk7CiAKICAgICAvLyBSZXNldCBkaXNwbGF5IG1vZGUgdG8gZm9yY2Ug
YSByZWNhbGN1bGF0aW9uIG9mIHdoYXQgdG8gc2hvdyBiZWNhdXNlIHdlIGFyZSByZXNldHRpbmcg
dGhlIHBsYXllci4KQEAgLTUyMjMsOCArNTIyMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKQogICAgIGlmICghbV9wbGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkuc2V0dGlu
Z3MoKTsKLSAgICBib29sIHByaXZhdGVNb2RlID0gIXNldHRpbmdzIHx8IHNldHRpbmdzLT5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlTW9kZSA9IGRvY3VtZW50KCku
cGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlk
Q2hhbmdlKCVzKSIsIGJvb2xTdHJpbmcocHJpdmF0ZU1vZGUpKTsKICAgICBtX3BsYXllci0+c2V0
UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA2YzhjOWU5Li4wNjM3ZjE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTM0OCw3ICszNDgs
NyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQoSGlzdG9y
eVVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKIAogICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9
IG1fZnJhbWUubG9hZGVyKCk7CiAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5zZXR0
aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQcml2YWN5ID0g
bV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7CiAgICAgY29uc3QgVVJM
JiBoaXN0b3J5VVJMID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9y
eSgpOwogCiAgICAgaWYgKCFmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5pc0NsaWVudFJl
ZGlyZWN0KCkpIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAgICAgICBMT0co
SGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBs
b2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT50aXRs
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCi0gICAgYm9vbCBuZWVk
UHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cisg
ICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVt
ZXJhbCgpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKG1fZnJhbWUubG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CkBAIC00MzMsNyArNDMz
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3QoKQog
ICAgICAgICBtX2N1cnJlbnRJdGVtLT5jbGVhclNjcm9sbFBvaW50KCk7CiAgICAgfQogCi0gICAg
Ym9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCk7CisgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQo
KS5pc0VwaGVtZXJhbCgpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKCFoaXN0
b3J5VVJMLmlzRW1wdHkoKSAmJiAhbmVlZFByaXZhY3kpIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkK
ICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQorICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwpAQCAt
ODQ3LDcgKzg0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVm
UHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsCiAKICAgICBwYWdlLT5iYWNr
Rm9yd2FyZCgpLmFkZEl0ZW0odG9wSXRlbS5yZWxlYXNlKCkpOwogCi0gICAgaWYgKG1fZnJhbWUu
c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFn
ZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBh
ZGRWaXNpdGVkTGluaygqcGFnZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CkBA
IC04NjYsNyArODY2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamUKICAgICBtX2N1cnJlbnRJ
dGVtLT5zZXRGb3JtRGF0YSgwKTsKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRGb3JtQ29udGVudFR5
cGUoU3RyaW5nKCkpOwogCi0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVt
ZXJhbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAppbmRleCA3OWZiZTRmLi4zNmMwY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApA
QCAtMTAzLDcgKzEwMyw3IEBAIEFwcGxpY2F0aW9uQ2FjaGUqIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6Y2FjaGVGb3JNYWluUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlCiAgICAgaWYgKHVybC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRp
ZmllcigpOwogCi0gICAgaWYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIChkb2N1bWVudExv
YWRlci0+ZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWRv
Y3VtZW50TG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5B
Y2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCkudG9w
KCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpKQorICAgIGlmIChkb2N1bWVudExvYWRl
ci0+ZnJhbWUoKSAmJiAoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklE
KCkuaXNFcGhlbWVyYWwoKSB8fCAhZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRMb2Fk
ZXItPmZyYW1lKCktPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3Jv
dXAgPSBjYWNoZVN0b3JhZ2UoKS5jYWNoZUdyb3VwRm9yVVJMKHVybCkpIHsKQEAgLTE1MSw3ICsx
NTEsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZy
YW1lLCBjb25zdCBVUkwmIHBhc3NlZE1hbmlmZXN0VQogICAgIH0KIAogICAgIC8vIERvbid0IGFj
Y2VzcyBhbnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAg
ICBpZiAoZnJhbWUtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNo
ZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7Cisg
ICAgaWYgKGZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkgfHwgIWZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hl
KGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAg
ICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZF
TlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6RVJST1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RD
YWNoZVdpdGhvdXRNYW5pZmVzdFVSTChGcmFtZSogZnJhbWUpCiAgICAgQVNTRVJUKCFkb2N1bWVu
dExvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+YXBwbGljYXRpb25DYWNoZSgpKTsKIAog
ICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3Npbmcg
aXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNz
QXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NB
cHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSkpIHsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVy
VGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RVJST1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjp1cGRhdGUoRnJhbWUqIGZyYW1lLCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9u
IHVwCiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJp
dmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+c2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAgICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVy
UmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRy
aWVzLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VSVCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcAppbmRleCA5YzY5YmVmLi5lMjVhZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTQ3
Niw3ICs0NzYsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjphYm9ydCgpCiAKIGJvb2wg
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKQogewotICAg
IHJldHVybiBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZy
YW1lKCktPnNldHRpbmdzKCkub2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYg
IW1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpOworICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1l
bnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkub2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVF
bmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklE
KCkuaXNFcGhlbWVyYWwoKTsKIH0KIAogYm9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBs
aWNhdGlvbkNhY2hlQmxvY2tlZEZvclJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDk0YWRhZTcuLjQ2NWQxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9p
Y29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9J
Y29uQ29udHJvbGxlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIEljb25Db250cm9sbGVy
Ojpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24oSWNvbkxvYWREZWNpc2lvbiBpY29uTG9hZERlY2lz
aW9uKQogICAgIEFTU0VSVChpY29uTG9hZERlY2lzaW9uICE9IEljb25Mb2FkVW5rbm93bik7CiAK
ICAgICAvLyAgRklYTUUgKDxyZGFyOi8vcHJvYmxlbS85MTY4NjA1PikgLSBXZSBzaG91bGQgc3Vw
cG9ydCBpbi1tZW1vcnktb25seSBwcml2YXRlIGJyb3dzaW5nIGljb25zIGluIGFzeW5jaHJvbm91
cyBpY29uIGRhdGFiYXNlIG1vZGUuCi0gICAgaWYgKGljb25EYXRhYmFzZSgpLnN1cHBvcnRzQXN5
bmNocm9ub3VzTW9kZSgpICYmIG1fZnJhbWUucGFnZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoaWNvbkRhdGFiYXNlKCkuc3VwcG9ydHNBc3luY2hyb25v
dXNNb2RlKCkgJiYgbV9mcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChpY29uTG9hZERlY2lzaW9uID09IEljb25Mb2FkTm8p
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDNmYTliMWMuLjlmYzYwZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMTkxLDcgKzE5MSw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGll
bnRzKQogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVzQ291bnQoMCkgLy8g
Tk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0
ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0JlZm9yZVVubG9hZEV2ZW50KDApCiAgICAg
LCBtX3Zpc2l0ZWRMaW5rU3RvcmUoc3RkOjptb3ZlKHBhZ2VDbGllbnRzLnZpc2l0ZWRMaW5rU3Rv
cmUpKQotICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpKQorICAg
ICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiB7CiAgICAgQVNT
RVJUKG1fZWRpdG9yQ2xpZW50KTsKIApAQCAtMTA2NywxOSArMTA2NywxMiBAQCB2b2lkIFBhZ2U6
OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpCiAgICAgICAgIHZpZXdzW2ldLT5zdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdT
dGF0ZUNoYW5nZWQoKQordm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCA9IG1fc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICAvLyBEb24n
dCBhbGxvdyBjaGFuZ2luZyB0aGUgcHJpdmF0ZSBicm93c2luZyBzdGF0ZSBpZiB3ZSBoYXZlIHNl
dCBhIHNlc3Npb24gSUQuCisgICAgQVNTRVJUKG1fc2Vzc2lvbklEID09IFNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpIHx8IG1fc2Vzc2lvbklEID09IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0
ZVNlc3Npb25JRCgpKTsKIAotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBmcmFt
ZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKLQotICAgIC8v
IENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFj
dGlvbiB0aGUgcGx1Zy1pbiB0YWtlcwotICAgIC8vIGZyb20gYmVsb3cgcHJpdmF0ZUJyb3dzaW5n
U3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZldGltZS4KLSAgICBhdXRvIHZp
ZXdzID0gcGx1Z2luVmlld3MoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2aWV3
cy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlld3NbaV0tPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKKyAgICBzZXRTZXNzaW9uSUQocHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCA/IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpIDogU2Vz
c2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRApA
QCAtMTUwMSwxOSArMTQ5NCwyNyBAQCBWaXNpdGVkTGlua1N0b3JlJiBQYWdlOjp2aXNpdGVkTGlu
a1N0b3JlKCkKIAogU2Vzc2lvbklEIFBhZ2U6OnNlc3Npb25JRCgpIGNvbnN0CiB7Ci0gICAgaWYg
KG1fc2Vzc2lvbklELmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIG1fc2Vzc2lvbklEOworICAg
IEFTU0VSVChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwogCi0gICAgaWYgKHNldHRpbmdzKCkucHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm4gU2Vzc2lvbklEOjpsZWdhY3lQ
cml2YXRlU2Vzc2lvbklEKCk7Ci0KLSAgICByZXR1cm4gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCk7CisgICAgcmV0dXJuIG1fc2Vzc2lvbklEOwogfQogCiB2b2lkIFBhZ2U6OnNldFNlc3Np
b25JRChTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNWYWxp
ZCgpKTsKLSAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25JRDsKKyAgICBpZiAoc2Vzc2lvbklEICE9
IG1fc2Vzc2lvbklEKSB7CisgICAgICAgIG1fc2Vzc2lvbklEID0gc2Vzc2lvbklEOworCisgICAg
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICAgICAgLy8gQ29sbGVjdCB0
aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3IgdG8gZW5zdXJlIHRoYXQgYWN0aW9uIHRoZSBw
bHVnLWluIHRha2VzCisgICAgICAgIC8vIGZyb20gYmVsb3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVD
aGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZldGltZS4KKyAgICAgICAgYXV0byB2aWV3
cyA9IHBsdWdpblZpZXdzKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZp
ZXdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgdmlld3NbaV0tPnByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CisgICAgfQogfQogCiBQYWdlOjpQ
YWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBhNmY3YzM5Li5kMDBl
OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzEwLDcgKzMxMCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICB2b2lkIHN0b3JhZ2VCbG9ja2lu
Z1N0YXRlQ2hhbmdlZCgpOwotICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCk7
CisgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkKTsKIAogICAgIHZvaWQgc2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopOwogICAg
IEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQpA
QCAtNDA3LDcgKzQwNyw2IEBAIHB1YmxpYzoKIAogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQoKSBj
b25zdDsKICAgICB2b2lkIHNldFNlc3Npb25JRChTZXNzaW9uSUQpOwotICAgIGJvb2wgaXNTZXNz
aW9uSURTZXQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRC5pc1ZhbGlkKCk7IH0KIAogcHJp
dmF0ZToKICAgICB2b2lkIGluaXRHcm91cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uc29sZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNw
cAppbmRleCAzNDZiMDEzLi5lM2YyZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VDb25zb2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNw
cApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgUGFnZUNvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyCiAgICAgaWYgKHNv
dXJjZSA9PSBNZXNzYWdlU291cmNlOjpDU1MpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICht
X3BhZ2Uuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fcGFn
ZS5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Bh
Z2UuY2hyb21lKCkuY2xpZW50KCkuYWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHVybCk7CkBAIC0xNDYsNyArMTQ2LDcg
QEAgdm9pZCBQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUg
dHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLAogICAgIGJvb2wgZ290TWVzc2FnZSA9IGFyZ3VtZW50
cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3NhZ2UpOwogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgmbV9wYWdlLCBNZXNzYWdlU291cmNlOjpD
b25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgZXhlYywgYXJndW1lbnRzKTsKIAotICAg
IGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYg
KG1fcGFnZS5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoZ290TWVzc2FnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCAzMmI1YTdm
Li5jNjExZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtMTcxLDcgKzE3MSw2IEBA
IFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9pc0phdmFFbmFibGVkKGZh
bHNlKQogICAgICwgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyh0cnVlKQogICAgICwgbV9s
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCi0gICAgLCBtX3ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoZmFsc2UpCiAgICAgLCBtX2FyZUltYWdlc0VuYWJsZWQodHJ1ZSkKICAgICAsIG1fYXJl
UGx1Z2luc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzU2NyaXB0RW5hYmxlZChmYWxzZSkKQEAg
LTQyOSwxMSArNDI4LDcgQEAgdm9pZCBTZXR0aW5nczo6c2V0UGx1Z2luc0VuYWJsZWQoYm9vbCBh
cmVQbHVnaW5zRW5hYmxlZCkKIAogdm9pZCBTZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7Ci0gICAgaWYgKG1fcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCA9PSBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBwcml2YXRlQnJvd3NpbmdFbmFibGVk
OwotICAgIG1fcGFnZS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCk7CisgICAgbV9wYWdl
LT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiB9
CiAKIHZvaWQgU2V0dGluZ3M6OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3QgVVJMJiB1
c2VyU3R5bGVTaGVldExvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDUxNmYwZGMu
LmQ0NzM4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTE0Niw3ICsxNDYsNiBAQCBwdWJs
aWM6CiAgICAgLy8gIC0gSFRUUCBDb29raWVzCiAgICAgLy8gIC0gUGx1Zy1pbnMgKHRoYXQgc3Vw
cG9ydCBOUE5WcHJpdmF0ZU1vZGVCb29sKQogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChib29sKTsKLSAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7IH0KIAogICAgIHZvaWQgc2V0RE5TUHJlZmV0
Y2hpbmdFbmFibGVkKGJvb2wpOwogICAgIGJvb2wgZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQ7IH0KQEAgLTMwMSw3ICszMDAsNiBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0phdmFFbmFibGVkIDogMTsKICAgICBib29sIG1faXNK
YXZhRW5hYmxlZEZvckxvY2FsRmlsZXMgOiAxOwogICAgIGJvb2wgbV9sb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHkgOiAxOwotICAgIGJvb2wgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkIDogMTsKICAg
ICBib29sIG1fYXJlSW1hZ2VzRW5hYmxlZCA6IDE7CiAgICAgYm9vbCBtX2FyZVBsdWdpbnNFbmFi
bGVkIDogMTsKICAgICBib29sIG1faXNTY3JpcHRFbmFibGVkIDogMTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDI2ODA2ZjYuLjE4MzdmZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTM1NCw3ICsxMzU0LDcgQEAgTlBFcnJvciBQbHVn
aW5WaWV3OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCiAgICAg
ICAgIFBhZ2UqIHBhZ2UgPSBtX3BhcmVudEZyYW1lLT5wYWdlKCk7CiAgICAgICAgIGlmICghcGFn
ZSkKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotICAgICAgICAqKChO
UEJvb2wqKXZhbHVlKSA9IHBhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
OworICAgICAgICAqKChOUEJvb2wqKXZhbHVlKSA9IHBhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCk7CiAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IGMxYjIzN2Mu
LjYwNjJiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFy
Y2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFy
Y2hSZXN1bHQoKQogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChmcmFtZSgpLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAg
IGlmIChmcmFtZSgpLnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaW50IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVjZW50U2VhcmNo
ZXMuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IGM0ODRiOTYuLjg2
NDc1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBA
IGJvb2wgU3RvcmFnZTo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXksIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAogCiBib29sIFN0b3JhZ2U6OmlzRGlzYWJsZWRCeVByaXZhdGVCcm93c2luZygp
IGNvbnN0CiB7Ci0gICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCkucHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpKQorICAgIGlmICghbV9mcmFtZS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9zdG9yYWdl
QXJlYS0+c3RvcmFnZVR5cGUoKSA9PSBMb2NhbFN0b3JhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCBhMWVhMjlhLi45ZTk1ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5
IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9m
IG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBsYWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdz
Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgd2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVt
ZXJhbCgpLgorCisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmll
d19wcml2X25ldyk6CisKIDIwMTQtMDMtMTQgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXBsYWNlICJBcHBsZSBDb21wdXRlciwgSW5jLiIgd2l0aCAiQXBw
bGUgSW5jLiIgaW4gY29weXJpZ2h0IGhlYWRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
CmluZGV4IDk5OTcwZWMuLjUzNjEwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApA
QCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgiCkBA
IC04MDAsNyArODAxLDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3
X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICNlbmRpZgogICAgIHBy
aXYtPnNldHRpbmdzLnNjcmlwdHNDYW5BY2Nlc3NDbGlwYm9hcmQgPSBwYWdlU2V0dGluZ3MuamF2
YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCgpICYmIHBhZ2VTZXR0aW5ncy5ET01QYXN0ZUFsbG93
ZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVUZXh0YXJlYXMgPSBwYWdlU2V0dGlu
Z3MudGV4dEFyZWFzQXJlUmVzaXphYmxlKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJy
b3dzaW5nID0gcGFnZVNldHRpbmdzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBwcml2
LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBwcml2LT5wYWdlLT5zZXNzaW9uSUQoKS5pc0Vw
aGVtZXJhbCgpOwogICAgIHByaXYtPnNldHRpbmdzLmNhcmV0QnJvd3NpbmcgPSBwYWdlU2V0dGlu
Z3MuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5zcGF0aWFsTmF2
aWdhdGlvbiA9IHBhZ2VTZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoKTsKICAgICBw
cml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgPSBwYWdlU2V0dGluZ3MubG9jYWxTdG9yYWdlRW5h
YmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGFmM2QwZWYuLjQzZTY2MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9ja0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25z
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZv
bGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2Ug
cXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3aXRo
IFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisK
IDIwMTQtMDMtMTggIEphZSBIeXVuIFBhcmsgIDxqYWVwYXJrQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0dUS11bQ01ha2VdIEZpeCBXZWJLaXQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5ncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCmluZGV4IDllN2VkYzQuLjUzZmIzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAK
QEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bQogCiAKICAgICBDcmVk
ZW50aWFsU3RvcmFnZU1vZGUgY3JlZGVudGlhbFN0b3JhZ2VNb2RlOwotICAgIGlmIChjb3JlKHZp
ZXcpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoY29yZSh2
aWV3KS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgY3JlZGVudGlhbFN0b3Jh
Z2VNb2RlID0gRGlzYWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKICAgICBlbHNlCiAgICAgICAgIGNy
ZWRlbnRpYWxTdG9yYWdlTW9kZSA9IEFsbG93UGVyc2lzdGVudFN0b3JhZ2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggZGRlNTJjOC4uMGU2YjEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAg
ICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvbnNpc3RzIHNv
bGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWluZyBXZWJDb3JlOjpT
ZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhp
c3RvcnlJdGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKToKKwogMjAxNC0wMy0yMCAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gR2V0IGNvZGUgdG8gY29tcGlsZSBvbiBvbGRlciBp
T1MgdmVyc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggMTY5MTM5Zi4uMTM5NmM0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KQEAgLTExMjAsNyArMTEyMCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpCiAgICAgSGlzdG9yeUl0ZW0qIGhp
c3RvcnlJdGVtID0gMDsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gY29yZShtX3dlYkZyYW1lLmdl
dCgpKS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkpCisgICAgICAgIGlmICghcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKSkKICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gcGFnZS0+YmFja0ZvcndhcmQoKS5jdXJy
ZW50SXRlbSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXggMGRiNGY4
MC4uNzFhY2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCkBAIC0xMTMsNyArMTEzLDcg
QEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9y
YWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAg
IGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQorICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+c2Vzc2lvbklEKCkuaXNF
cGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwogCiAgICAgcmV0
dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggZmVlYWYwNS4uZTIwZDU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKwor
ICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvbnNp
c3RzIHNvbGVseSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWluZyBXZWJD
b3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVH
bG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24pOgorCiAyMDE0LTAzLTE3ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgcHJlZmVyZW5jZSB0byBlbmFibGUg
YWRkaXRpb25hbCBBVkZvdW5kYXRpb24gb3B0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDg4
ZGMzNTEuLjA4MjNkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTgwMyw3ICs4MDMsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2Uo
KQogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CiAKICAgICBp
ZiAoUGFnZSogcGFnZSA9IHdlYlZpZXctPnBhZ2UoKSkgewotICAgICAgICBpZiAoIXBhZ2UtPnNl
dHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgICAgICBpZiAoIXBhZ2UtPnNl
c3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCiAgICAgICAgICAgICBoaXN0b3J5SXRlbSA9IHBhZ2Ut
PmJhY2tGb3J3YXJkKCkuY3VycmVudEl0ZW0oKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHAKaW5kZXggYmY1OWVlNy4uNTAxMGRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3Mo
KS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+
cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gKnByaXZh
dGVTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMDc0ZmJjLi42ZWE0ZDQzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFw
cGxlLmNvbT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDogQ2hhbmdlIHRvIHJlZmVyZW5jZSBjb3VudGVk
IHNlc3Npb24uCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YWRkU2Vzc2lv
blJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZW1vdmVTZXNz
aW9uUmVmZXJlbmNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lmg6IFJlbW92
ZSBjb2RlIHNpbmNlIFNlc3Npb25UcmFja2VyIGltcGxlbWVudHMgcHJpdmF0ZSBicm93c2luZyBz
ZXNzaW9uIGNyZWF0aW9uLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5tbTogRGl0dG8uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3BwOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6IFJlbW92ZSBwcml2
YXRlIGJyb3dzaW5nIHBhcmFtZXRlciwgc2luY2Ugc2Vzc2lvbnMgaW1wbGVtZW50IHRoZSBmdW5j
dGlvbmFsaXR5IHdpdGhvdXQgYSBnbG9iYWwgc2V0dGluZy4KKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAg
ICogU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcDogUmVmZXJlbmNlIGNvdW50IHNlc3Npb25zIG1h
bnVhbGx5IChuZWVkZWQgZHVlIHRvIGNyb3NzLXByb2Nlc3MgcmVmZXJlbmNlcykuCisgICAgICAg
IChXZWJLaXQ6OnN0YXRpY1Nlc3Npb25Db3VudGVyKToKKyAgICAgICAgKFdlYktpdDo6U2Vzc2lv
blRyYWNrZXI6OmFkZFNlc3Npb25SZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9u
VHJhY2tlcjo6cmVtb3ZlU2Vzc2lvblJlZmVyZW5jZSk6CisgICAgICAgICogU2hhcmVkL1Nlc3Np
b25UcmFja2VyLmg6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
Lmg6IENoYW5nZSBQcml2YXRlQnJvd3NpbmdFbmFibGVkIHRvIExlZ2FjeVByaXZhdGVCcm93c2lu
Z0VuYWJsZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToK
KyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMuY3BwOgorICAgICAgICAo
V0tQYWdlSXNVUkxLbm93bkhTVFNIb3N0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbTogTWVjaGFuaWNhbGx5IGNoYW5nZSBTZXR0aW5nczo6cHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpIHRvIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisgICAgICAg
ICgtW1dLV2ViVmlldyBfcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX3NldFByaXZhdGVCcm93c2luZ0VuYWJsZWQ6XSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcDogRGl0dG8uCisgICAgICAgIChld2tfc2V0dGluZ3Nf
cHJpdmF0ZV9icm93c2luZ19lbmFibGVkX3NldCk6CisgICAgICAgIChld2tfc2V0dGluZ3NfcHJp
dmF0ZV9icm93c2luZ19lbmFibGVkX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0U2V0dGluZ3MuY3BwOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX3ByaXZhdGVfYnJvd3NpbmcpOgorICAgICAgICAod2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfcHJpdmF0ZV9icm93c2luZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwOiBDaGFuZ2UgdG8gcmVmZXJlbmNlIGNvdW50ZWQgc2Vzc2lvbnMuCisgICAgICAgIChXZWJL
aXQ6OldlYkNvbnRleHQ6OmVuc3VyZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OmluY3JlbWVudFByaXZhdGVCcm93c2luZ0NvdW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpzb21lUGFnZUlzUHJpdmF0ZUJyb3dzaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKTogSW1wbGVtZW50IHVzaW5nIHJlZmVy
ZW5jZSBjb3VudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcDogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkljb25EYXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOiBEb24ndCBzZW5kIG1lc3NhZ2UgdG8gV2ViUGFn
ZSBwcm9jZXNzIHRoYXQgZG9lc24ndCB5ZXQgZXhpc3QuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6fldlYlBhZ2VQcm94eSk6IENsZWFuIHVwIHNlc3Npb24uCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbkltcGwpOiBUcmFjayByZWZlcmVuY2UgY291bnQg
YW5kIG9wdGlvbmFsbHkgc2VuZCBtZXNzYWdlIHRvIFdlYlBhZ2UgcHJvY2Vzcy4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRTZXNzaW9uKTogU2VuZCBtZXNzYWdlIHRvIFdlYlBh
Z2UgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc0Rp
ZENoYW5nZSk6IFNldCBzZXNzaW9uIGJhc2VkIG9uIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIHBy
ZWZlcmVuY2UuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZl
cmVuY2VzOjphZGRQYWdlKTogU2Vzc2lvbiBrZWVwcyB0cmFjayBvZiByZWZlcmVuY2UgY291bnQu
CisgICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpyZW1vdmVQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OnVwZGF0ZUJvb2xWYWx1ZUZvcktleSk6IENoYW5nZSBw
cml2YXRlQnJvd3NpbmdFbmFibGVkIHRvIGxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjp1cGRhdGVMZWdhY3lQcml2YXRlQnJvd3Np
bmdWYWx1ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUmVm
ZXJlbmNlIGNvdW50IHNlc3Npb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwOiBNZWNoYW5pY2FsbHkgY2hhbmdlIFNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkgdG8gUGFnZTo6c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKS4KKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6
IFJlbW92ZSBjb2RlIHNpbmNlIFNlc3Npb25UcmFja2VyIGltcGxlbWVudHMgcHJpdmF0ZSBicm93
c2luZyBzZXNzaW9uIGNyZWF0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW06IERpdHRvLgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cDogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Vzc2lvbklEKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOiBTZXQgc2Vzc2lv
biB0byBsZWdhY3kgcHJpdmF0ZSBzZXNzaW9uIGlmIG5lZWRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXNzaW9u
SUQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6IFJlbW92ZSBlbnN1cmUv
ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24gYXMgUGFnZSByZWZlcmVuY2UgY291bnRzIGl0
cyBzZXNzaW9ucy4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlBy
b2Nlc3MpOiBNYWtlIHN1cmUgaWRlbnRpZmllciBiYXNlIGlzIHNldC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW46CisKIDIwMTQtMDMtMTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CiAKICAgICAgICAgW01hY10gU3VwcG9ydCBhc3luY2hyb25vdXMgTlNUZXh0SW5wdXRDbGll
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCBlZDgzMzJhLi40ZDMzMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xNjYsMTAgKzE2Niw2IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1lCiAgICAgU2Vzc2lvblRyYWNrZXI6OnNldElkZW50aWZpZXJCYXNlKHBh
cmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAjZW5kaWYKIAotICAgIC8vIEZJ
WE1FOiBpbnN0ZWFkIG9mIGhhbmRsaW5nIHRoaXMgaGVyZSwgYSBtZXNzYWdlIHNob3VsZCBiZSBz
ZW50IGxhdGVyIChzY2FsZXMgdG8gbXVsdGlwbGUgc2Vzc2lvbnMpCi0gICAgaWYgKHBhcmFtZXRl
cnMucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRl
U2Vzc2lvbklEKCkpOwotCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNlVGVzdGluZ05ldHdv
cmtTZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVz
dGluZ1Nlc3Npb24oKTsKIApAQCAtMjE5LDE0ICsyMTUsMTQgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogI2VuZGlmCiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklE
IHNlc3Npb25JRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFNlc3Npb25SZWZlcmVuY2UoU2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOworICAgIFNlc3Npb25UcmFja2VyOjph
ZGRTZXNzaW9uUmVmZXJlbmNlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKFNlc3Npb25JRCBzZXNzaW9u
SUQpCiB7Ci0gICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Npb25JRCk7Cisg
ICAgU2Vzc2lvblRyYWNrZXI6OnJlbW92ZVNlc3Npb25SZWZlcmVuY2Uoc2Vzc2lvbklEKTsKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KHVpbnQ2NF90IGRvd25sb2Fk
SUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGM3YzNhZWQuLjRjNmI1NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAt
MTA4LDggKzEwOCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nl
c3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKICAgICB2
b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYpOwogICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKTsKLSAgICB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vz
c2lvbklEKTsKLSAgICB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6
OlNlc3Npb25JRCk7CisgICAgdm9pZCBhZGRTZXNzaW9uUmVmZXJlbmNlKFdlYkNvcmU6OlNlc3Np
b25JRCk7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uUmVmZXJlbmNlKFdlYkNvcmU6OlNlc3Npb25J
RCk7CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QodWludDY0X3QgZG93bmxvYWRJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZCh1aW50
NjRfdCBkb3dubG9hZElEKTsKICAgICB2b2lkIHNldENhY2hlTW9kZWwodWludDMyX3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCA3NDk5NDQ5Li4wOTk0YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MzQsOCArMzQsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoVmVjdG9yPFN0cmluZz4gbGFuZ3Vh
Z2VzKQogI2VuZGlmCiAKLSAgICBFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCi0gICAgRGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
V2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICBBZGRTZXNzaW9uUmVmZXJlbmNlKFdl
YkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQpCisgICAgUmVtb3ZlU2Vzc2lvblJlZmVyZW5jZShX
ZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiAgICAgRG93bmxvYWRSZXF1ZXN0KHVpbnQ2
NF90IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0KQogICAgIENh
bmNlbERvd25sb2FkKHVpbnQ2NF90IGRvd25sb2FkSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCBmNWNj
Y2MxLi5lYmI3ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQwLDkgKzQwLDYgQEAgcHVibGljOgog
ICAgIH0KICAgICB2aXJ0dWFsIH5SZW1vdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCi0gICAgLy8g
RklYTUU6IFJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2RlIGFuZCB1c2UgU2Vzc2lvblRyYWNr
ZXIuCi0gICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3Jl
OjpTZXNzaW9uSUQpOwotCiAgICAgdmlydHVhbCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Q7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbSBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5n
Q29udGV4dC5tbQppbmRleCAyYTdjNTk0Li4yNmQ4OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCkBAIC03NywxNSArNzcsNCBAQCBSZXNvdXJjZUVycm9yIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIHJldHVy
biBXZWJLaXQ6OmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKIH0KIAotdm9pZCBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lv
bklEKQotewotICAgIEFTU0VSVChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7Ci0KLSAgICBpZiAo
U2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQVNTRVJUKCFTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7
Ci0gICAgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Npb24oc2Vzc2lvbklELCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvblRyYWNrZXI6Omdl
dElkZW50aWZpZXJCYXNlKCkgKyAnLicgKyBTdHJpbmc6Om51bWJlcihzZXNzaW9uSUQuc2Vzc2lv
bklEKCkpKSk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL3NvdXAvUmVtb3RlTmV0d29ya2luZ0NvbnRleHRTb3VwLmNwcAppbmRl
eCA2ZGE0ZDY4Li4zZTI3Y2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0U291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9SZW1vdGVOZXR3b3JraW5nQ29udGV4dFNvdXAuY3Bw
CkBAIC00NiwxMSArNDYsNiBAQCBib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojppc1ZhbGlk
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDE0MWJhN2EuLjZiY2VhYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM4LDcgKzM4LDYgQEAgTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKCkKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oY2FjaGVNb2RlbCk7CiAgICAgZW5j
b2RlciA8PCBkaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBkaXNrQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CkBAIC02NSw4ICs2NCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
cikgY29uCiAKIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVFbnVtKHJlc3VsdC5jYWNoZU1vZGVsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRpc2tDYWNoZURpcmVjdG9yeSkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA1OGFjYjM5Li5kYWQxMTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTUwLDcgKzUwLDYgQEAgc3RydWN0IE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICB2b2lkIGVuY29kZShJUEM6OkFyZ3Vt
ZW50RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50
RGVjb2RlciYsIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKLSAgICBib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CiAgICAgQ2FjaGVNb2RlbCBjYWNoZU1vZGVsOwogCiAg
ICAgU3RyaW5nIGRpc2tDYWNoZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lv
blRyYWNrZXIuY3BwCmluZGV4IGJkY2ZmYjkuLjYwZjRhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1Nlc3Npb25UcmFja2VyLmNwcApAQCAtNDEsNiArNDEsMTQgQEAgc3RhdGljIEhhc2hNYXA8
U2Vzc2lvbklELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPj4mIHN0YXRp
Y1Nlc3Npb24KICAgICByZXR1cm4gbWFwLmdldCgpOwogfQogCitzdGF0aWMgSGFzaE1hcDxTZXNz
aW9uSUQsIHVpbnQ2NF90PiYgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKQoreworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxT
ZXNzaW9uSUQsIHVpbnQ2NF90Pj4gbWFwOworICAgIHJldHVybiBtYXAuZ2V0KCk7Cit9CisKIHN0
YXRpYyBIYXNoTWFwPGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiosIFNlc3Npb25JRD4mIHN0
b3JhZ2VTZXNzaW9uVG9JRCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTgxLDIwICs4OSw0MSBAQCBTZXNzaW9uSUQgU2Vzc2lvblRyYWNrZXI6OnNlc3Npb25JRChjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNz
aW9uVG9JRCgpLmdldCgmc2Vzc2lvbik7CiB9CiAKLXZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldFNl
c3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4gc2Vzc2lvbikKK3ZvaWQgU2Vzc2lvblRyYWNrZXI6OmFkZFNlc3Npb25SZWZlcmVu
Y2UoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKLSAgICBBU1NFUlQoc2Vzc2lvbklEICE9IFNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OworCisgICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKworICAgIGlmIChTZXNz
aW9uVHJhY2tlcjo6c2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIHN0YXRpY1Nlc3Npb25D
b3VudGVyKCkuc2V0KHNlc3Npb25JRCwgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5nZXQoc2Vzc2lv
bklEKSArIDEpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKCFTZXNzaW9u
VHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNzaW9uID0gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25UcmFja2VyOjpnZXRJZGVu
dGlmaWVyQmFzZSgpICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgp
KSk7CiAgICAgc3RvcmFnZVNlc3Npb25Ub0lEKCkuc2V0KHNlc3Npb24uZ2V0KCksIHNlc3Npb25J
RCk7CiAgICAgc3RhdGljU2Vzc2lvbk1hcCgpLnNldChzZXNzaW9uSUQsIHN0ZDo6bW92ZShzZXNz
aW9uKSk7CisgICAgc3RhdGljU2Vzc2lvbkNvdW50ZXIoKS5zZXQoc2Vzc2lvbklELCAxKTsKIH0K
IAotdm9pZCBTZXNzaW9uVHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25J
RCkKK3ZvaWQgU2Vzc2lvblRyYWNrZXI6OnJlbW92ZVNlc3Npb25SZWZlcmVuY2UoU2Vzc2lvbklE
IHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmIChz
dGF0aWNTZXNzaW9uTWFwKCkuY29udGFpbnMoc2Vzc2lvbklEKSkgeworCisgICAgQVNTRVJUKHNl
c3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKworICAgIEFTU0VSVChzdGF0aWNTZXNzaW9uTWFwKCku
Y29udGFpbnMoc2Vzc2lvbklEKSk7CisKKyAgICB1aW50NjRfdCBjb3VudGVyID0gc3RhdGljU2Vz
c2lvbkNvdW50ZXIoKS5nZXQoc2Vzc2lvbklEKTsKKworICAgIGlmIChjb3VudGVyID09IDEpIHsK
ICAgICAgICAgc3RvcmFnZVNlc3Npb25Ub0lEKCkucmVtb3ZlKHNlc3Npb24oc2Vzc2lvbklEKSk7
CiAgICAgICAgIHN0YXRpY1Nlc3Npb25NYXAoKS5yZW1vdmUoc2Vzc2lvbklEKTsKLSAgICB9Cisg
ICAgICAgIHN0YXRpY1Nlc3Npb25Db3VudGVyKCkucmVtb3ZlKHNlc3Npb25JRCk7CisgICAgfSBl
bHNlCisgICAgICAgIHN0YXRpY1Nlc3Npb25Db3VudGVyKCkuc2V0KHNlc3Npb25JRCwgY291bnRl
ciAtIDEpOwogfQogCiB2b2lkIFNlc3Npb25UcmFja2VyOjpzZXRJZGVudGlmaWVyQmFzZShjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2Vzc2lvblRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tlci5o
CmluZGV4IDBiMDMwMjkuLmEyYzg5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TZXNzaW9uVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJh
Y2tlci5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiBnZXRJZGVudGlmaWVyQmFzZSgpOwogICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24qIHNlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICBzdGF0aWMgV2ViQ29y
ZTo6U2Vzc2lvbklEIHNlc3Npb25JRChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCwgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4pOwotICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3lTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgc3RhdGljIHZv
aWQgYWRkU2Vzc2lvblJlZmVyZW5jZShXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHN0YXRpYyB2
b2lkIHJlbW92ZVNlc3Npb25SZWZlcmVuY2UoV2ViQ29yZTo6U2Vzc2lvbklEKTsKICAgICBzdGF0
aWMgdm9pZCBzZXRJZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4IDlhNTMyNmEuLmJmMzlk
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAt
MTEzLDcgKzExMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKEZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQsIGZyYW1lRmxhdHRlbmluZ0VuYWJsZWQsIEJvb2wsIGJvb2wsIERFRkFVTFRf
RlJBTUVfRkxBVFRFTklOR19FTkFCTEVEKSBcCiAgICAgbWFjcm8oRGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCwgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBt
YWNybyhKYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkLCBqYXZhU2NyaXB0RXhwZXJpbWVudHNF
bmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAotICAgIG1hY3JvKFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAg
bWFjcm8oTGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgbGVnYWN5UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhUZXh0QXJlYXNBcmVSZXNp
emFibGUsIHRleHRBcmVhc0FyZVJlc2l6YWJsZSwgQm9vbCwgYm9vbCwgREVGQVVMVF9URVhUX0FS
RUFTX0FSRV9SRVNJWkFCTEUpIFwKICAgICBtYWNybyhKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NB
dXRvbWF0aWNhbGx5LCBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5LCBCb29s
LCBib29sLCBERUZBVUxUX0pBVkFTQ1JJUFRfQ0FOX09QRU5fV0lORE9XU19BVVRPTUFUSUNBTExZ
KSBcCiAgICAgbWFjcm8oSHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkLCBoeXBlcmxpbmtBdWRpdGlu
Z0VuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCA5ZTRlZWEzLi4wMGQxZGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBA
IC0zNDEsMTIgKzM0MSwxMiBAQCBXS1N0cmluZ1JlZiBXS1ByZWZlcmVuY2VzQ29weURlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZQogCiB2b2lkIFdLUHJl
ZmVyZW5jZXNTZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVy
ZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5z
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOworICAgIHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNldExlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIGJv
b2wgV0tQcmVmZXJlbmNlc0dldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNS
ZWYpLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiB9CiAKIHZvaWQgV0tQcmVmZXJl
bmNlc1NldERldmVsb3BlckV4dHJhc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZiwgYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5jcHAKaW5kZXggNmE5ZGNhNC4uYmUzZjAxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFn
ZVByaXZhdGVNYWMuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHBpZF90IFdLUGFnZUdldFByb2Nlc3NJ
ZGVudGlmaWVyKFdLUGFnZVJlZiBwYWdlUmVmKQogYm9vbCBXS1BhZ2VJc1VSTEtub3duSFNUU0hv
c3QoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVmIHVybCkKIHsKICAgICBXZWJQYWdlUHJveHkqIHdl
YlBhZ2VQcm94eSA9IHRvSW1wbChwYWdlKTsKLSAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgPSB3ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgpLnByZWZlcmVuY2VzKCkucHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpOworICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHdlYlBhZ2VQ
cm94eS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKIAogICAgIHJldHVybiB3ZWJQYWdlUHJv
eHktPnByb2Nlc3MoKS5jb250ZXh0KCkuaXNVUkxLbm93bkhTVFNIb3N0KHRvSW1wbCh1cmwpLT5z
dHJpbmcoKSwgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IGM2NTViMDguLmE0ODU5MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC04ODEsMTIgKzg4MSwxMiBAQCBzdGF0aWMgdm9pZCByZWxlYXNlTlNEYXRhKHVuc2lnbmVk
IGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKQogCiAtIChCT09MKV9wcml2YXRlQnJvd3NpbmdFbmFi
bGVkCiB7Ci0gICAgcmV0dXJuIFtfY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJl
bmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBbX2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdLT5fcHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKTsKIH0KIAogLSAodm9pZClfc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDooQk9PTClwcml2
YXRlQnJvd3NpbmdFbmFibGVkCiB7Ci0gICAgW19jb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXS0+
X3ByZWZlcmVuY2VzLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpOworICAgIFtfY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10tPl9wcmVmZXJlbmNlcy0+
c2V0TGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsK
IH0KIAogLSAoQk9PTClfYWxsb3dzUmVtb3RlSW5zcGVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5ncy5jcHAKaW5kZXggMWVkYTY3Ni4uNzRh
ZjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Nl
dHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0
dGluZ3MuY3BwCkBAIC0yOTQsNyArMjk0LDcgQEAgRWluYV9Cb29sIGV3a19zZXR0aW5nc19wcml2
YXRlX2Jyb3dzaW5nX2VuYWJsZWRfc2V0KEV3a19TZXR0aW5ncyogc2V0dGluZ3MsIEVpbmEKIHsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2V0dGluZ3MsIGZhbHNlKTsKIAot
ICAgIHNldHRpbmdzLT5wcmVmZXJlbmNlcygpLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5h
YmxlKTsKKyAgICBzZXR0aW5ncy0+cHJlZmVyZW5jZXMoKS5zZXRMZWdhY3lQcml2YXRlQnJvd3Np
bmdFbmFibGVkKGVuYWJsZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMwMyw3ICszMDMs
NyBAQCBFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX3ByaXZhdGVfYnJvd3NpbmdfZW5hYmxlZF9nZXQo
Y29uc3QgRXdrX1NldHRpbmdzKiBzZXR0aW5ncwogewogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOX1ZBTChzZXR0aW5ncywgZmFsc2UpOwogCi0gICAgcmV0dXJuIHNldHRpbmdzLT5wcmVm
ZXJlbmNlcygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gc2V0dGluZ3Mt
PnByZWZlcmVuY2VzKCkubGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiBFaW5h
X0Jvb2wgZXdrX3NldHRpbmdzX3RleHRfYXV0b3NpemluZ19lbmFibGVkX3NldChFd2tfU2V0dGlu
Z3MqIHNldHRpbmdzLCBFaW5hX0Jvb2wgZW5hYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IGZhZWNhZjYuLjQ0YjJm
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNl
dHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRT
ZXR0aW5ncy5jcHAKQEAgLTIwOTMsNyArMjA5Myw3IEBAIGdib29sZWFuIHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3NpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzKQog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19TRVRUSU5HUyhzZXR0aW5ncyks
IEZBTFNFKTsKIAotICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdi0+cHJlZmVyZW5jZXMtPnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gc2V0dGluZ3MtPnByaXYtPnByZWZlcmVu
Y2VzLT5sZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiB9CiAKIC8qKgpAQCAtMjEwOCwx
MSArMjEwOCwxMSBAQCB2b2lkIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3ByaXZhdGVfYnJv
d3NpbmcoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBnYm9vbAogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1NFVFRJTkdTKHNldHRpbmdzKSk7CiAKICAgICBXZWJLaXRTZXR0aW5nc1By
aXZhdGUqIHByaXYgPSBzZXR0aW5ncy0+cHJpdjsKLSAgICBib29sIGN1cnJlbnRWYWx1ZSA9IHBy
aXYtPnByZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBjdXJy
ZW50VmFsdWUgPSBwcml2LT5wcmVmZXJlbmNlcy0+bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOwogICAgIGlmIChjdXJyZW50VmFsdWUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxl
ZCk7CisgICAgcHJpdi0+cHJlZmVyZW5jZXMtPnNldExlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoZW5hYmxlZCk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1wcml2YXRlLWJyb3dzaW5nIik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcAppbmRleCAxN2Q5NzI0Li5lNGQ3Zjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0zODMsOCArMzgzLDYgQEAgdm9pZCBXZWJDb250ZXh0Ojpl
bnN1cmVOZXR3b3JrUHJvY2VzcygpCiAKICAgICBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwogCi0gICAgcGFyYW1ldGVycy5wcml2YXRlQnJvd3NpbmdFbmFibGVk
ID0gV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKLQog
ICAgIHBhcmFtZXRlcnMuY2FjaGVNb2RlbCA9IG1fY2FjaGVNb2RlbDsKIAogICAgIHBhcmFtZXRl
cnMuZGlza0NhY2hlRGlyZWN0b3J5ID0gZGlza0NhY2hlRGlyZWN0b3J5KCk7CkBAIC00NTksNDQg
KzQ1NywzMCBAQCB2b2lkIFdlYkNvbnRleHQ6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24o
UGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1BybwogfQogI2VuZGlmCiAKLXZvaWQgV2Vi
Q29udGV4dDo6d2lsbFN0YXJ0VXNpbmdQcml2YXRlQnJvd3NpbmcoKQordm9pZCBXZWJDb250ZXh0
Ojp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKIHsKLSAgICBjb25zdCBWZWN0
b3I8V2ViQ29udGV4dCo+JiBjb250ZXh0cyA9IGFsbENvbnRleHRzKCk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDAsIGNvdW50ID0gY29udGV4dHMuc2l6ZSgpOyBpIDwgY291bnQ7ICsraSkKLSAgICAg
ICAgY29udGV4dHNbaV0tPnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0Vu
YWJsZWQodHJ1ZSk7CisgICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vzc2VzLnNpemUo
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytpKQorICAgICAg
ICBtX3Byb2Nlc3Nlc1tpXS0+d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwog
fQogCi12b2lkIFdlYkNvbnRleHQ6OndpbGxTdG9wVXNpbmdQcml2YXRlQnJvd3NpbmcoKQordm9p
ZCBXZWJDb250ZXh0OjppbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCgpCiB7Ci0gICAgY29u
c3QgVmVjdG9yPFdlYkNvbnRleHQqPiYgY29udGV4dHMgPSBhbGxDb250ZXh0cygpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBjb3VudCA9IGNvbnRleHRzLnNpemUoKTsgaSA8IGNvdW50OyArK2kp
Ci0gICAgICAgIGNvbnRleHRzW2ldLT5zZXRBbnlQYWdlR3JvdXBNaWdodEhhdmVQcml2YXRlQnJv
d3NpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBpZiAoIW1fcHJpdmF0ZUJyb3dzaW5nQ291bnQpCisg
ICAgICAgIHNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcodHJ1ZSk7CisgICAgbV9wcml2YXRlQnJv
d3NpbmdDb3VudCsrOwogfQogCi12b2lkIFdlYkNvbnRleHQ6OndpbmRvd1NlcnZlckNvbm5lY3Rp
b25TdGF0ZUNoYW5nZWQoKQordm9pZCBXZWJDb250ZXh0OjpkZWNyZW1lbnRQcml2YXRlQnJvd3Np
bmdDb3VudCgpCiB7Ci0gICAgc2l6ZV90IHByb2Nlc3NDb3VudCA9IG1fcHJvY2Vzc2VzLnNpemUo
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb2Nlc3NDb3VudDsgKytpKQotICAgICAg
ICBtX3Byb2Nlc3Nlc1tpXS0+d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwor
ICAgIG1fcHJpdmF0ZUJyb3dzaW5nQ291bnQtLTsKKyAgICBpZiAoIW1fcHJpdmF0ZUJyb3dzaW5n
Q291bnQpCisgICAgICAgIHNvbWVQYWdlSXNQcml2YXRlQnJvd3NpbmcoZmFsc2UpOwogfQogCi12
b2lkIFdlYkNvbnRleHQ6OnNldEFueVBhZ2VHcm91cE1pZ2h0SGF2ZVByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQordm9pZCBXZWJDb250ZXh0Ojpzb21l
UGFnZUlzUHJpdmF0ZUJyb3dzaW5nKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKICAg
ICBtX2ljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2YXRlQnJvd3Np
bmdFbmFibGVkKTsKLQotI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCi0gICAgaWYgKHVzZXNO
ZXR3b3JrUHJvY2VzcygpICYmIG5ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNz
aW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSksIDApOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
RGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vz
c2lvbklEKCkpLCAwKTsKLSAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFRChORVRXT1JLX1BST0NFU1Mp
Ci0KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgc2VuZFRvQWxsUHJv
Y2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7Ci0gICAgZWxzZQotICAgICAg
ICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKSk7CiB9
CiAKIHZvaWQgKCpzX2ludmFsaWRNZXNzYWdlQ2FsbGJhY2spKFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lKTsKQEAgLTYyNSw5ICs2MDksNiBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYkNvbnRleHQ6OmNy
ZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OlNldFFPUyh3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpLCB3ZWJQcm9jZXNzVGhyb3VnaHB1dFFP
UygpKSwgMCk7CiAjZW5kaWYKIAotICAgIGlmIChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVV
c2luZ1ByaXZhdGVCcm93c2luZygpKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpKSwgMCk7Ci0KICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQocHJvY2Vz
cyk7CiAKICAgICBpZiAobV9wcm9jZXNzTW9kZWwgPT0gUHJvY2Vzc01vZGVsU2hhcmVkU2Vjb25k
YXJ5UHJvY2VzcykgewpAQCAtNzc0LDggKzc1NSw2IEBAIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5
PiBXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBh
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgPSAmY29uZmlndXJhdGlvbi5wYWdl
R3JvdXAtPnByZWZlcmVuY2VzKCk7CiAgICAgaWYgKCFjb25maWd1cmF0aW9uLnZpc2l0ZWRMaW5r
UHJvdmlkZXIpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtQcm92aWRlciA9IG1f
dmlzaXRlZExpbmtQcm92aWRlci5nZXQoKTsKLSAgICBpZiAoIWNvbmZpZ3VyYXRpb24uc2Vzc2lv
bikKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXNzaW9uID0gY29uZmlndXJhdGlvbi5wcmVmZXJl
bmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gJkFQSTo6U2Vzc2lvbjo6bGVnYWN5UHJp
dmF0ZVNlc3Npb24oKSA6ICZBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCk7CiAKICAgICBS
ZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwcm9jZXNzOwogICAgIGlmIChtX3Byb2Nlc3NNb2RlbCA9
PSBQcm9jZXNzTW9kZWxTaGFyZWRTZWNvbmRhcnlQcm9jZXNzKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaAppbmRleCA3ODkyMWRkLi4zODY0NTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTMwNCw5ICszMDQsNiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIAotICAgIHN0YXRpYyB2
b2lkIHdpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0gICAgc3RhdGljIHZvaWQgd2ls
bFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygpOwotCiAgICAgc3RhdGljIGJvb2wgaXNFcGhlbWVy
YWxTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7CiAKICNpZiBVU0UoU09VUCkKQEAgLTM0MCw2
ICszMzcsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRNZW1vcnlDYWNoZURpc2FibGVkKGJv
b2wpOwogCisgICAgdm9pZCBpbmNyZW1lbnRQcml2YXRlQnJvd3NpbmdDb3VudCgpOworICAgIHZv
aWQgZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKTsKKworICAgIGJvb2wgYW55UGFnZXNB
cmVVc2luZ1ByaXZhdGVCcm93c2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyb3dzaW5n
Q291bnQgPiAwOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
IApAQCAtNDIxLDcgKzQyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRQbHVnSW5BdXRvU3Rh
cnRPcmlnaW5IYXNoKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgdW5zaWduZWQgcGx1Z0luT3Jp
Z2luSGFzaCk7CiAgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHVuc2ln
bmVkIHBsdWdJbk9yaWdpbkhhc2gpOwogCi0gICAgdm9pZCBzZXRBbnlQYWdlR3JvdXBNaWdodEhh
dmVQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc29tZVBhZ2VJc1ByaXZh
dGVCcm93c2luZyhib29sKTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAg
IC8vIFBsdWdpbkluZm9TdG9yZUNsaWVudDoKQEAgLTUzNiw2ICs1MzgsOCBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBt
X2J1bmRsZVBhcmFtZXRlcnM7CiAjZW5kaWYKKworICAgIHVuc2lnbmVkIG1fcHJpdmF0ZUJyb3dz
aW5nQ291bnQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRleCA3YWRhZTg5Li5hNWZkNzhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcApAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6c2V0RGF0YWJhc2VQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIAogICAgIC8vIEZJWE1FOiBXZWJJY29uRGF0YWJhc2VzIGFyZSBwZXItV2ViQ29u
dGV4dCBidXQgV2ViQ29udGV4dCdzIGRvbid0IGhhdmUgdGhlaXIgb3duIG5vdGlvbiBvZiB0aGUg
Y3VycmVudCBwcml2YXRlIGJyb3dzaW5nIHNldHRpbmcuCiAgICAgLy8gQXMgd2UgY2xlYW4gdXAg
cHJpdmF0ZSBicm93c2luZyB0aHJvdWdob3V0IHRoZSBzdGFjayB3ZSBuZWVkIHRvIGNsZWFuIGl0
IHVwIGhlcmUuCi0gICAgbV9pY29uRGF0YWJhc2VJbXBsLT5zZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkpOwor
ICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChtX3dlYkNv
bnRleHQtPmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CiAKICAgICBpZiAoIW1f
aWNvbkRhdGFiYXNlSW1wbC0+b3BlbihkaXJlY3RvcnlOYW1lKHBhdGgpLCBwYXRoR2V0RmlsZU5h
bWUocGF0aCkpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gV2ViS2l0MiBp
Y29uIGRhdGFiYXNlIG9uIGRpc2siKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggMDU3NWM0My4uZTgwM2MxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk0LDYgKzk0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklESGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENo
ZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5j
bHVkZSA8c3RkaW8uaD4KQEAgLTMwMyw3ICszMDQsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVp
bgogICAgICwgbV9pc1RyYWNraW5nVG91Y2hFdmVudHMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKLSAgICAsIG1fc2Vzc2lvbigqY29uZmlndXJhdGlvbi5zZXNzaW9uKQor
ICAgICwgbV9zZXNzaW9uKEFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24oKSkKICAgICAsIG1f
aXNQYWdlU3VzcGVuZGVkKGZhbHNlKQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAg
ICwgbV9hbGxvd3NSZW1vdGVJbnNwZWN0aW9uKHRydWUpCkBAIC0zNzksNyArMzgwLDggQEAgV2Vi
UGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzLCB1aW4KICAgICAvLyBGSVhNRTogSWYgd2UgZXZlciBleHBvc2UgdGhl
IHNlc3Npb24gc3RvcmFnZSBzaXplIGFzIGEgcHJlZmVyZW5jZSwgd2UgbmVlZCB0byBwYXNzIGl0
IGhlcmUuCiAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gbV9wcm9jZXNzLT5zdGF0
ZSgpID09IFdlYlByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcgPyBtX3Byb2Nlc3MtPmNvbm5l
Y3Rpb24oKSA6IG51bGxwdHI7CiAgICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuc3RvcmFnZU1hbmFn
ZXIoKS5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShtX3BhZ2VJRCwgY29ubmVjdGlvbiwg
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBzZXRTZXNzaW9uKCpj
b25maWd1cmF0aW9uLnNlc3Npb24pOworICAgIGlmIChtX3ByZWZlcmVuY2VzLT5sZWdhY3lQcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgICAgIHNldFNlc3Npb25JbXBsKEFQSTo6U2Vzc2lv
bjo6bGVnYWN5UHJpdmF0ZVNlc3Npb24oKSwgZmFsc2UpOwogfQogCiBXZWJQYWdlUHJveHk6On5X
ZWJQYWdlUHJveHkoKQpAQCAtMzk4LDYgKzQwMCw3IEBAIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQ
cm94eSgpCiAjaWZuZGVmIE5ERUJVRwogICAgIHdlYlBhZ2VQcm94eUNvdW50ZXIuZGVjcmVtZW50
KCk7CiAjZW5kaWYKKyAgICBzZXRTZXNzaW9uKEFQSTo6U2Vzc2lvbjo6ZGVmYXVsdFNlc3Npb24o
KSk7CiB9CiAKIFBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgV2ViUGFnZVByb3h5Ojpwcm9jZXNz
SWRlbnRpZmllcigpIGNvbnN0CkBAIC01MzAsMTUgKzUzMywzMCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVhdHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBp
dGVtKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdGFydCgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbihBUEk6OlNlc3Npb24mIHNlc3Npb24pCit2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Vzc2lvbkltcGwoQVBJOjpTZXNzaW9uJiBzZXNzaW9uLCBi
b29sIHNlbmRNZXNzYWdlVG9QYWdlKQogewotICAgIG1fc2Vzc2lvbiA9IHNlc3Npb247Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTZXNzaW9uSUQoc2Vzc2lvbi5n
ZXRJRCgpKSwgbV9wYWdlSUQpOworICAgIGlmIChzZXNzaW9uLmdldElEKCkgIT0gbV9zZXNzaW9u
LT5nZXRJRCgpKSB7CisgICAgICAgIGlmIChzZW5kTWVzc2FnZVRvUGFnZSkKKyAgICAgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Vzc2lvbklEKHNlc3Npb24u
Z2V0SUQoKSksIG1fcGFnZUlEKTsKKworICAgICAgICBpZiAoc2Vzc2lvbi5nZXRJRCgpLmlzRXBo
ZW1lcmFsKCkgJiYgIW1fc2Vzc2lvbi0+Z2V0SUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAgICAg
ICAgbV9wcm9jZXNzLT5jb250ZXh0KCkuaW5jcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKTsK
KyAgICAgICAgZWxzZSBpZiAoIXNlc3Npb24uZ2V0SUQoKS5pc0VwaGVtZXJhbCgpICYmIG1fc2Vz
c2lvbi0+Z2V0SUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5jb250
ZXh0KCkuZGVjcmVtZW50UHJpdmF0ZUJyb3dzaW5nQ291bnQoKTsKIAogI2lmIEVOQUJMRShORVRX
T1JLX1BST0NFU1MpCi0gICAgaWYgKHNlc3Npb24uaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgbV9w
cm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpFbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHNlc3Npb24uZ2V0SUQoKSkp
OworICAgICAgICBpZiAobV9zZXNzaW9uLT5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgbV9w
cm9jZXNzLT5jb250ZXh0KCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpSZW1vdmVTZXNzaW9uUmVmZXJlbmNlKG1fc2Vzc2lvbi0+Z2V0SUQoKSkpOwor
ICAgICAgICBpZiAoc2Vzc2lvbi5pc0VwaGVtZXJhbCgpKQorICAgICAgICAgICAgbV9wcm9jZXNz
LT5jb250ZXh0KCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpBZGRTZXNzaW9uUmVmZXJlbmNlKHNlc3Npb24uZ2V0SUQoKSkpOwogI2VuZGlmCisgICAg
ICAgIG1fc2Vzc2lvbiA9IHNlc3Npb247CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0U2Vzc2lvbihBUEk6OlNlc3Npb24mIHNlc3Npb24pCit7CisgICAgc2V0U2Vzc2lvbkltcGwo
c2Vzc2lvbiwgdHJ1ZSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFn
ZSgpCkBAIC0yMTA0LDYgKzIxMjIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2Vz
RGlkQ2hhbmdlKCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAg
aWYgKG1fcHJlZmVyZW5jZXMtPmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSAmJiBtX3Nl
c3Npb24tPmdldElEKCkgPT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCisgICAgICAg
IHNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpsZWdhY3lQcml2YXRlU2Vzc2lvbigpKTsKKyAgICBl
bHNlIGlmICghbV9wcmVmZXJlbmNlcy0+bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpICYm
IG1fc2Vzc2lvbi0+Z2V0SUQoKSA9PSBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQo
KSkKKyAgICAgICAgc2V0U2Vzc2lvbihBUEk6OlNlc3Npb246OmRlZmF1bHRTZXNzaW9uKCkpOwor
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiAgICAgaWYgKG1fcHJlZmVyZW5jZXMtPmRl
dmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgaW5zcGVjdG9yKCktPmVuYWJsZVJlbW90
ZUluc3BlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA1MWU5MGRjYy4uZGI5MDRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtNDIxLDcgKzQyMSw2IEBAIHN0cnVjdCBXZWJQYWdlQ29uZmlndXJhdGlvbiB7CiAg
ICAgV2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAgPSBudWxscHRyOwogICAgIFdlYlByZWZlcmVuY2Vz
KiBwcmVmZXJlbmNlcyA9IG51bGxwdHI7CiAgICAgVmlzaXRlZExpbmtQcm92aWRlciogdmlzaXRl
ZExpbmtQcm92aWRlciA9IG51bGxwdHI7Ci0gICAgQVBJOjpTZXNzaW9uKiBzZXNzaW9uID0gbnVs
bHB0cjsKICAgICBXZWJQYWdlUHJveHkqIHJlbGF0ZWRQYWdlID0gbnVsbHB0cjsKIH07CiAKQEAg
LTEwNDgsNiArMTA0Nyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25z
dCBTdHJpbmcmKTsKIAorICAgIHZvaWQgc2V0U2Vzc2lvbkltcGwoQVBJOjpTZXNzaW9uJiwgYm9v
bCBzZW5kTWVzc2FnZVRvUGFnZSk7CisKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCAwZjdkYTc5Li5mZTVjOWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTMyLDEwICsz
Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi0vLyBGSVhNRTogTWFuaXB1bGF0aW5nIHRo
aXMgdmFyaWFibGUgaXMgbm90IHRocmVhZCBzYWZlLgotLy8gSW5zdGVhZCBvZiB0cmFja2luZyBw
cml2YXRlIGJyb3dzaW5nIHN0YXRlIGFzIGEgYm9vbGVhbiBwcmVmZXJlbmNlLCB3ZSBzaG91bGQg
bGV0IHRoZSBjbGllbnQgcHJvdmlkZSBzdG9yYWdlIHNlc3Npb25zIGV4cGxpY2l0bHkuCi1zdGF0
aWMgdW5zaWduZWQgcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotCiBXZWJQcmVmZXJlbmNlczo6
V2ViUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCiB7CkBAIC02MiwyNSArNTgsMTIgQEAgdm9pZCBXZWJQcmVmZXJlbmNl
czo6YWRkUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKIHsKICAgICBBU1NFUlQoIW1f
cGFnZXMuY29udGFpbnMoJndlYlBhZ2VQcm94eSkpOwogICAgIG1fcGFnZXMuYWRkKCZ3ZWJQYWdl
UHJveHkpOwotCi0gICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkgewotICAgICAgICBp
ZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCkKLSAgICAgICAgICAgIFdlYkNvbnRleHQ6Ondp
bGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0KLSAgICAgICAgKytwcml2YXRlQnJvd3Np
bmdQYWdlQ291bnQ7Ci0gICAgfQogfQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpyZW1vdmVQYWdl
KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQogewogICAgIEFTU0VSVChtX3BhZ2VzLmNvbnRh
aW5zKCZ3ZWJQYWdlUHJveHkpKTsKICAgICBtX3BhZ2VzLnJlbW92ZSgmd2ViUGFnZVByb3h5KTsK
LQotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpIHsKLSAgICAgICAgLS1wcml2YXRl
QnJvd3NpbmdQYWdlQ291bnQ7Ci0gICAgICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50
KQotICAgICAgICAgICAgV2ViQ29udGV4dDo6d2lsbFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygp
OwotICAgIH0KIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlKCkKQEAgLTk3LDggKzgw
LDggQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRlU3RyaW5nVmFsdWVGb3JLZXkoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmEKIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6dXBk
YXRlQm9vbFZhbHVlRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBib29sIHZhbHVlKQogewotICAg
IGlmIChrZXkgPT0gV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXko
KSkgewotICAgICAgICB1cGRhdGVQcml2YXRlQnJvd3NpbmdWYWx1ZSh2YWx1ZSk7CisgICAgaWYg
KGtleSA9PSBXZWJQcmVmZXJlbmNlc0tleTo6bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtl
eSgpKSB7CisgICAgICAgIHVwZGF0ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1ZhbHVlKHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI0LDI3ICsxMDcsMjAgQEAgdm9pZCBXZWJQ
cmVmZXJlbmNlczo6dXBkYXRlRmxvYXRWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtleSwgZmxv
YXQgdmFsdWUpCiAgICAgdXBkYXRlKCk7IC8vIEZJWE1FOiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hh
bmdlZCBrZXkgYW5kIHZhbHVlLgogfQogCi12b2lkIFdlYlByZWZlcmVuY2VzOjp1cGRhdGVQcml2
YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKQordm9pZCBXZWJQcmVmZXJlbmNlczo6dXBkYXRl
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nVmFsdWUoYm9vbCB2YWx1ZSkKIHsKLSAgICBwbGF0Zm9ybVVw
ZGF0ZUJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZEtleSgpLCB2YWx1ZSk7Ci0KLSAgICB1bnNpZ25lZCBwYWdlc0NoYW5nZWQgPSBtX3BhZ2Vz
LnNpemUoKTsKLSAgICBpZiAoIXBhZ2VzQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJuOworICAgIHBs
YXRmb3JtVXBkYXRlQm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpsZWdhY3lQcml2
YXRlQnJvd3NpbmdFbmFibGVkS2V5KCksIHZhbHVlKTsKIAogICAgIGlmICh2YWx1ZSkgewotICAg
ICAgICBpZiAoIXByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCkKLSAgICAgICAgICAgIFdlYkNvbnRl
eHQ6OndpbGxTdGFydFVzaW5nUHJpdmF0ZUJyb3dzaW5nKCk7Ci0gICAgICAgIHByaXZhdGVCcm93
c2luZ1BhZ2VDb3VudCArPSBwYWdlc0NoYW5nZWQ7Ci0gICAgfQotCi0gICAgdXBkYXRlKCk7IC8v
IEZJWE1FOiBPbmx5IHNlbmQgb3ZlciB0aGUgY2hhbmdlZCBrZXkgYW5kIHZhbHVlLgotCi0gICAg
aWYgKCF2YWx1ZSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50ID49
IHBhZ2VzQ2hhbmdlZCk7Ci0gICAgICAgIHByaXZhdGVCcm93c2luZ1BhZ2VDb3VudCAtPSBwYWdl
c0NoYW5nZWQ7Ci0gICAgICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nUGFnZUNvdW50KQotICAgICAg
ICAgICAgV2ViQ29udGV4dDo6d2lsbFN0b3BVc2luZ1ByaXZhdGVCcm93c2luZygpOworICAgICAg
ICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VzKSB7CisgICAgICAgICAgICBpZiAocGFnZS0+c2Vz
c2lvbklEKCkgPT0gV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCisgICAg
ICAgICAgICAgICAgcGFnZS0+c2V0U2Vzc2lvbihBUEk6OlNlc3Npb246OmxlZ2FjeVByaXZhdGVT
ZXNzaW9uKCkpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChhdXRvJiBw
YWdlIDogbV9wYWdlcykgeworICAgICAgICAgICAgaWYgKHBhZ2UtPnNlc3Npb25JRCgpID09IFdl
YkNvcmU6OlNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKQorICAgICAgICAgICAg
ICAgIHBhZ2UtPnNldFNlc3Npb24oQVBJOjpTZXNzaW9uOjpkZWZhdWx0U2Vzc2lvbigpKTsKKyAg
ICAgICAgfQogICAgIH0KIH0KIApAQCAtMTY2LDkgKzE0Miw0IEBAIEZPUl9FQUNIX1dFQktJVF9Q
UkVGRVJFTkNFKERFRklORV9QUkVGRVJFTkNFX0dFVFRFUl9BTkRfU0VUVEVSUykKIAogI3VuZGVm
IERFRklORV9QUkVGRVJFTkNFX0dFVFRFUl9BTkRfU0VUVEVSUwogCi1ib29sIFdlYlByZWZlcmVu
Y2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0ZUJyb3dzaW5nKCkKLXsKLSAgICByZXR1cm4gcHJp
dmF0ZUJyb3dzaW5nUGFnZUNvdW50OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcmVmZXJlbmNlcy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKaW5kZXggZGQ1ZTJkMS4uZjFlNWU2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByZWZlcmVuY2VzLmgKQEAgLTY4LDgg
KzY4LDYgQEAgcHVibGljOgogICAgIC8vIEV4cG9zZWQgZm9yIFdlYktpdFRlc3RSdW5uZXIgdXNl
IG9ubHkuCiAgICAgdm9pZCBmb3JjZVVwZGF0ZSgpIHsgdXBkYXRlKCk7IH0KIAotICAgIHN0YXRp
YyBib29sIGFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKTsKLQogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBXZWJQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmKTsKICAgICBXZWJQcmVmZXJl
bmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlcyYpOwpAQCAtODksNyArODcsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGxhdGZvcm1VcGRhdGVEb3VibGVWYWx1ZUZvcktleShjb25zdCBTdHJpbmcmIGtl
eSwgZG91YmxlIHZhbHVlKTsKICAgICB2b2lkIHBsYXRmb3JtVXBkYXRlRmxvYXRWYWx1ZUZvcktl
eShjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQgdmFsdWUpOwogCi0gICAgdm9pZCB1cGRhdGVQcml2
YXRlQnJvd3NpbmdWYWx1ZShib29sIHZhbHVlKTsKKyAgICB2b2lkIHVwZGF0ZUxlZ2FjeVByaXZh
dGVCcm93c2luZ1ZhbHVlKGJvb2wgdmFsdWUpOwogCiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsK
ICAgICBXZWJQcmVmZXJlbmNlc1N0b3JlIG1fc3RvcmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmlu
ZGV4IDc3ZWI1MzcuLjI1YWJmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMTAsOSAr
MzEwLDEwIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQo
V2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vCiAgICAgLy8gRklYTUUgKE5ldHdvcmtQ
cm9jZXNzKTogVGhpcyB0ZXN0LW9ubHkgZnVuY3Rpb24gZG9lc24ndCB3b3JrIHdpdGggTmV0d29y
a1Byb2Nlc3MsIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1Mjc0
Pi4KICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCiAg
ICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
KCkpOworICAgICAgICBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAgICAgZWxzZQotICAgICAgICBTZXNzaW9u
VHJhY2tlcjo6ZGVzdHJveVNlc3Npb24oU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
KCkpOworICAgICAgICBpZiAoU2Vzc2lvblRyYWNrZXI6OnNlc3Npb24oU2Vzc2lvbklEOjpsZWdh
Y3lQcml2YXRlU2Vzc2lvbklEKCkpKQorICAgICAgICAgICAgU2Vzc2lvblRyYWNrZXI6OnJlbW92
ZVNlc3Npb25SZWZlcmVuY2UoU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwog
I2VuZGlmCiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4mIHBhZ2VzID0gUGFnZUdyb3VwOjpwYWdl
R3JvdXAocGFnZUdyb3VwLT5pZGVudGlmaWVyKCkpLT5wYWdlcygpOwogICAgIGZvciAoSGFzaFNl
dDxQYWdlKj46Oml0ZXJhdG9yIGl0ZXIgPSBwYWdlcy5iZWdpbigpOyBpdGVyICE9IHBhZ2VzLmVu
ZCgpOyArK2l0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggOTNiMGJhZC4uNTBiNjg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTUzNSw3ICsxNTM1LDcg
QEAgYm9vbCBQbHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKQogICAgIGlmICgh
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzUGx1Z2luU3Rv
cmFnZShmcmFtZSgpLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgcmV0dXJuIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpOworICAgIHJldHVybiBmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCk7CiB9CiAKIGJvb2wgUGx1Z2luVmlldzo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb25FbmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaAppbmRleCBkZWYyMDM4Li5iMzk2Y2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw5ICs0MCw2IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1l
KSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IHJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb2Rl
IGFuZCB1c2UgU2Vzc2lvblRyYWNrZXIKLSAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0KICAgICBzdGF0aWMgdm9pZCBzZXRD
b29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5KTsK
IAogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KaW5kZXgg
MjZiZmZjNC4uY2ZlOWRlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCkBAIC00MiwyMiArNDIsNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsK
LSAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwotCi0gICAgaWYgKFNlc3Npb25U
cmFja2VyOjpzZXNzaW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmlu
ZyBiYXNlOwotICAgIGlmIChTZXNzaW9uVHJhY2tlcjo6Z2V0SWRlbnRpZmllckJhc2UoKS5pc051
bGwoKSkKLSAgICAgICAgYmFzZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRp
Zmllcl07Ci0gICAgZWxzZQotICAgICAgICBiYXNlID0gU2Vzc2lvblRyYWNrZXI6OmdldElkZW50
aWZpZXJCYXNlKCk7Ci0KLSAgICBTZXNzaW9uVHJhY2tlcjo6c2V0U2Vzc2lvbihzZXNzaW9uSUQs
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihiYXNl
ICsgJy4nICsgU3RyaW5nOjpudW1iZXIoc2Vzc2lvbklELnNlc3Npb25JRCgpKSkpOwotfQotCiB2
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFs
bENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogewogICAgIFtbTlNIVFRQ
Q29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0Q29va2llQWNjZXB0UG9s
aWN5OnN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4ocG9saWN5KV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggNzc3
MzdkNC4uZTk0MzI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmNwcApAQCAtMzgsMTYgKzM4LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgaWYgKFNlc3Npb25UcmFja2VyOjpzZXNz
aW9uKHNlc3Npb25JRCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNlc3Npb25UcmFja2VyOjpz
ZXRTZXNzaW9uKHNlc3Npb25JRCwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKFN0cmluZzo6bnVtYmVyKHNlc3Npb25JRC5zZXNzaW9uSUQoKSkpKTsK
LX0KLQogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dChXZWJGcmFtZSogZnJhbWUpCiAgICAgOiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lLT5j
b3JlRnJhbWUoKSkKIHsKQEAgLTU1LDcgKzQ1LDcgQEAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFtZSogZnJhbWUpCiAKIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24o
KSBjb25zdAogewotICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+
c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuICpTZXNzaW9uVHJhY2tl
cjo6c2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAKICAgICBy
ZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDkzNDEw
YjMuLjE5NGE2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaApAQCAtNDMsOCArNDMsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFtZSkpOwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklE
KTsKLQogICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCgpIGNv
bnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDIzMjU4NmIuLjcwZTNlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRl
ICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lv
blN0YXRlLmgiCisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTaGFyZWFi
bGVCaXRtYXAuaCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oIgogI2lu
Y2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgpAQCAtMjE2MCwxNCArMjE2MSw2IEBAIHZvaWQgV2Vi
UGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZSh1bnNpZ25lZCBsYXllckhvc3RpbmdNb2RlKQogICAg
ICAgICBwbHVnaW5WaWV3LT5zZXRMYXllckhvc3RpbmdNb2RlKG1fbGF5ZXJIb3N0aW5nTW9kZSk7
CiB9CiAKLVNlc3Npb25JRCBXZWJQYWdlOjpzZXNzaW9uSUQoKSBjb25zdAotewotICAgIGlmICht
X3BhZ2UtPmlzU2Vzc2lvbklEU2V0KCkpCi0gICAgICAgIHJldHVybiBtX3BhZ2UtPnNlc3Npb25J
RCgpOwotCi0gICAgcmV0dXJuIG1fcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkgPyBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpOwotfQotCiBib29sIFdlYlBhZ2U6OmlzVXNpbmdFcGhlbWVyYWxT
ZXNzaW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsK
QEAgLTIxNzUsOSArMjE2OCwxMyBAQCBib29sIFdlYlBhZ2U6OmlzVXNpbmdFcGhlbWVyYWxTZXNz
aW9uKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlOjpzZXRTZXNzaW9uSUQoU2Vzc2lvbklEIHNlc3Np
b25JRCkKIHsKLSAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOworICAgIEFTU0VS
VChzZXNzaW9uSUQgIT0gbV9wYWdlLT5zZXNzaW9uSUQoKSk7CisgICAgQVNTRVJUKHNlc3Npb25J
RC5pc1ZhbGlkKCkpOworICAgIGlmIChtX3BhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkp
CisgICAgICAgIFNlc3Npb25UcmFja2VyOjpyZW1vdmVTZXNzaW9uUmVmZXJlbmNlKG1fcGFnZS0+
c2Vzc2lvbklEKCkpOwogICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9u
SUQpOworICAgICAgICBTZXNzaW9uVHJhY2tlcjo6YWRkU2Vzc2lvblJlZmVyZW5jZShzZXNzaW9u
SUQpOworICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCkK
QEAgLTI0ODIsMTAgKzI0NzksOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIHNldHRpbmdzLnNldExvY2FsU3Rv
cmFnZUVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojps
b2NhbFN0b3JhZ2VFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRYU1NBdWRpdG9yRW5h
YmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6Onhzc0F1ZGl0
b3JFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVk
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZnJhbWVGbGF0dGVu
aW5nRW5hYmxlZEtleSgpKSk7Ci0gICAgaWYgKG1fcGFnZS0+aXNTZXNzaW9uSURTZXQoKSkKLSAg
ICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChtX3BhZ2UtPnNlc3Npb25J
RCgpLmlzRXBoZW1lcmFsKCkpOwotICAgIGVsc2UKLSAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkpOworICAgIGlmIChzdG9yZS5nZXRCb29s
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxlZ2FjeVByaXZhdGVCcm93c2luZ0VuYWJs
ZWRLZXkoKSkgJiYgIW1fcGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKKyAgICAgICAg
bV9wYWdlLT5zZXRTZXNzaW9uSUQoU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkp
OwogICAgIHNldHRpbmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVkS2V5KCkp
KTsKICAgICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdEV4cGVyaW1lbnRz
RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHN0
b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGV4dEFyZWFzQXJlUmVz
aXphYmxlS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDQ0YjZjYmYuLjQ0NjE3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKIAogICAgIFdl
YkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9CiAg
ICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KLSAgICBXZWJD
b3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6U2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBi
b29sIGlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZXNzaW9u
SUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggNTlhY2Q2NC4uMDdhMzg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zNDgsNiArMzQ4LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpp
bml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWUKICAgICBTZXNzaW9uVHJhY2tlcjo6c2V0SWRlbnRpZmllckJhc2UocGFyYW1ldGVycy51
aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICNlbmRpZgogCisgICAgaWYgKFNlc3Npb25UcmFj
a2VyOjpnZXRJZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKQorICAgICAgICBTZXNzaW9uVHJhY2tl
cjo6c2V0SWRlbnRpZmllckJhc2UoIiIpOworCiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkVXNl
VGVzdGluZ05ldHdvcmtTZXNzaW9uKQogICAgICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIApAQCAtNDcxLDIwICs0NzQsNiBAQCB2b2lkIFdl
YlByb2Nlc3M6OmZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJk
QWNjZXNzRW5hYmxlZCkKICAgICBtX2Z1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSBmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oU2Vzc2lvbklEIHNlc3Npb25JRCkKLXsKLSNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykgfHwgVVNFKFNPVVApCi0gICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihzZXNzaW9uSUQpOwotI2VuZGlm
Ci19Ci0KLXZvaWQgV2ViUHJvY2Vzczo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oU2Vz
c2lvbklEIHNlc3Npb25JRCkKLXsKLSNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGTkVUV09S
SykgfHwgVVNFKFNPVVApCi0gICAgU2Vzc2lvblRyYWNrZXI6OmRlc3Ryb3lTZXNzaW9uKHNlc3Np
b25JRCk7Ci0jZW5kaWYKLX0KLQogRG93bmxvYWRNYW5hZ2VyJiBXZWJQcm9jZXNzOjpkb3dubG9h
ZE1hbmFnZXIoKQogewogICAgIEFTU0VSVCghdXNlc05ldHdvcmtQcm9jZXNzKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwOGEyMGNiLi5kMzc3ZWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTYzLDkgKzE2Myw2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbCh1aW50MzJfdCk7CiAKLSAgICB2b2lkIGVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lk
IGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0KICAg
ICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcGFn
ZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYTZmYTVlMC4uNzNjMGEz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtNDksMTAgKzQ5LDYgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgU2V0SWdub3JlVExTRXJyb3JzKGJvb2wgaWdub3JlVExTRXJyb3JzKQogI2Vu
ZGlmCiAKLSAgICAvLyBMZWdhY3kgcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uIGlzIHBlciBwcm9j
ZXNzLiBJbmRpdmlkdWFsIHBhZ2VzIG9yIHBhZ2UgZ3JvdXBzIG1heSB1c2UgdGhlIHByaXZhdGUg
c2Vzc2lvbiBvciB0aGUgZGVmYXVsdCBvbmUgYXMgYXBwcm9wcmlhdGUuCi0gICAgRW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQotICAgIERl
c3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQp
Ci0KICAgICAjIFBsdWctaW5zLgogICAgIERpZEFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2go
dWludDMyX3QgaGFzaCwgZG91YmxlIGV4cGlyYXRpb25UaW1lKQogICAgIFJlc2V0UGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzKEhhc2hNYXA8dWludDMyX3QsZG91YmxlPiBoYXNoZXMpCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjMyN2I4NS4u
OGM3ZjUzNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxl
LmNvbT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBB
UEkgdGVzdCBmb3IgZXBoZW1lcmFsIHNlc3Npb25zIHNpbWlsYXIgdG8gUHJpdmF0ZUJyb3dzaW5n
UHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNh
bGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisK
IDIwMTQtMDMtMjAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdW0NNYWtlXSBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBDbGFuZwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBiZTQxZjhjLi5kYmM3OWZlIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTA3LDYgKzEwNyw3IEBACiAJCTUyQ0I0NzQxMTQ0OEZCOTMwMDg3Mzk5NSAv
KiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDQjQ3NDAxNDQ4RkI5MzAw
ODczOTk1IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAg
Ki87IH07CiAJCTUyRTVDRTQ2MTREMjFFOUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0NTE0RDIx
RTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovOyB9OwogCQk1MkU1Q0U0OTE0RDIxRUFC
MDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJl
bnRGcmFtZV9CdW5kbGUuY3BwICovOyB9OworCQk3NUYzMTM0MDE4QzE3MUI3MDA0MUNBRUMgLyog
RXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1RjMxMzNGMThDMTcxQjcwMDQx
Q0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICov
OyB9OwogCQk3NkUxODJEQTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJE
OTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi87IH07CiAJCTc2
RTE4MkREMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEQzE1
NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9Owog
CQk3NkUxODJERjE1NDc2N0U2MDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUx
ODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAqLzsgfTsK
QEAgLTQzMiw2ICs0MzMsNyBAQAogCQk1MkNCNDc0MDE0NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVj
dG9yeVVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ1MTREMjFF
OUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQYXJlbnRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyZW50RnJhbWVfQnVuZGxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8q
IEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9I
aXN0b3J5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkUxODJE
OTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxT
ZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1m
b3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0by1zdWJtaXR0aW5nLWZv
cm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjMsNiArNzY1LDcgQEAK
IAkJCQlGNkY0OUM2NzE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNo
ZS5jcHAgKi8sCiAJCQkJRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVu
c2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAqLywKIAkJCQlDMDQ1Rjk0NDEzODVDMkU5MDBDMEYzQ0Qg
LyogRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCAqLywKKwkJCQk3NUYzMTMzRjE4
QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxi
YWNrLmNwcCAqLywKIAkJCQkxQTVGRUZEQzEyNzBFMkEzMDAwRTI5MjEgLyogRXZhbHVhdGVKYXZh
U2NyaXB0LmNwcCAqLywKIAkJCQlCQ0M4Qjk1QTEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9h
ZC5jcHAgKi8sCiAJCQkJMUEwMkM4NEUxMjVENEE4NDAwRTNGNEJEIC8qIEZpbmQuY3BwICovLApA
QCAtMTE0OCw2ICsxMTUxLDcgQEAKIAkJCQkyOTcyMzRCNDE3M0FEMDQ4MDA5ODM2MDEgLyogQ3Vz
dG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OTAyOEI2
MTRGQUJEOTIwMDdFNkI0MyAvKiBBY2NlcHRzRmlyc3RNb3VzZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTI5MTg2MUZGMTdCRDREQzcwMEQ0RTQxRSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRGaW5pc2hM
b2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNzVGMzEzNDAxOEMxNzFCNzAwNDFDQUVDIC8q
IEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkyNkYxQjQ0NDE1Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUI1NUYxMUEwMTUxNjgzNEYwMDkxNTkxNiAvKiBBdHRyaWJ1dGVk
U3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDBDRDlGNjMxNUJFMzEyQzAwMkRBMkNFIC8q
IEJhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3Rv
cnlDYWxsYmFjay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBoZW1l
cmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44MzAzMTk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3Rv
cnlDYWxsYmFjay5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0
YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgdGVz
dERvbmU7CisKK3N0YXRpYyB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZp
Z2F0aW9uRGF0YSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiBuYXZpZ2F0aW5nIGluIFBy
aXZhdGUgQnJvd3NpbmcuCisgICAgRkFJTCgpOworfQorCitzdGF0aWMgdm9pZCBkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRlc3REb25lID0gdHJ1ZTsKK30KKworVEVT
VChXZWJLaXQyLCBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2spCit7
CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4
dENyZWF0ZSgpKTsKKworICAgIFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMCBoaXN0b3J5Q2xpZW50
OworICAgIG1lbXNldCgmaGlzdG9yeUNsaWVudCwgMCwgc2l6ZW9mKGhpc3RvcnlDbGllbnQpKTsK
KworICAgIGhpc3RvcnlDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBoaXN0b3J5Q2xpZW50
LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhID0gZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGE7CisKKyAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KGNvbnRleHQuZ2V0KCksICZo
aXN0b3J5Q2xpZW50LmJhc2UpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4
dC5nZXQoKSk7CisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBwYWdlTG9hZGVyQ2xpZW50Owor
ICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGllbnQp
KTsKKworICAgIHBhZ2VMb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBwYWdlTG9h
ZGVyQ2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
d2ViVmlldy5wYWdlKCksICZwYWdlTG9hZGVyQ2xpZW50LmJhc2UpOworCisgICAgV0tTZXNzaW9u
UmVmIHNlc3Npb24gPSBXS1Nlc3Npb25DcmVhdGUodHJ1ZSk7CisgICAgV0tQYWdlU2V0U2Vzc2lv
bih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvbik7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4g
dXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJwdXNoLXN0YXRlIiwgImh0
bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKKwor
ICAgIFV0aWw6OnJ1bigmdGVzdERvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227800</attachid>
            <date>2014-03-25 14:42:50 -0700</date>
            <delta_ts>2014-03-25 15:39:03 -0700</delta_ts>
            <desc>remove changes to reference counting, change isUsingEphemeralSession to usesEphemeralSession</desc>
            <filename>unifyprivate.01.diff</filename>
            <type>text/plain</type>
            <size>42529</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjN2QxZmI4Li4wZTI3NzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVj
dFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJM
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5p
dGlhbGl6ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNl
c3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRv
IGp1c3QgcmV0dXJuIG1fc2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vz
c2lvbklEKTogQWxzbyBwZXJmb3JtIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24u
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOiBSZW1vdmUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBzZXR0aW5n
LgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUGFnZSByZWZsZWN0cyBz
ZXR0aW5nIHVzaW5nIHNlc3Npb24uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3
OjpnZXRWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOgor
ICAgICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
Ojppc0Rpc2FibGVkQnlQcml2YXRlQnJvd3NpbmcpOgorCiAyMDE0LTAzLTI0ICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEb3dubG9hZCBzdXBwb3J0IGJ5
IENGVVJMRG93bmxvYWRSZWYgdW5kZXIgVVNFKENGTkVUV09SSykuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXgg
YzlhNTM2Ni4uYmY3MzBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIGJvb2wg
RGF0YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKCkgY29uc3QKIHsKICAgICBpZiAo
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAg
ICAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgKGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdz
KCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dzRGF0
YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+
cHJvdG9jb2woKSkpKQorICAgICAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgKGRvY3VtZW50
LT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjphbGxv
d3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGRvY3VtZW50LT5zZWN1cml0eU9yaWdp
bigpLT5wcm90b2NvbCgpKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IGYwMGUwZWQuLjkzNTlkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xp
Y3kuaCIKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCkBAIC0xMjMzLDgg
KzEyMzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBVUkwm
IGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VAogICAgIGlmIChtX3NlbmRQcm9ncmVz
c0V2ZW50cykgCiAgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CiAKLSAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgYm9vbCBwcml2YXRl
TW9kZSA9ICFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwor
ICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSBkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBh
Z2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJy
b3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiAKICAgICAvLyBSZXNldCBkaXNwbGF5IG1vZGUgdG8g
Zm9yY2UgYSByZWNhbGN1bGF0aW9uIG9mIHdoYXQgdG8gc2hvdyBiZWNhdXNlIHdlIGFyZSByZXNl
dHRpbmcgdGhlIHBsYXllci4KQEAgLTUyMjMsOCArNTIyMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKQogICAgIGlmICghbV9wbGF5ZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCku
c2V0dGluZ3MoKTsKLSAgICBib29sIHByaXZhdGVNb2RlID0gIXNldHRpbmdzIHx8IHNldHRpbmdz
LT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlTW9kZSA9IGRvY3Vt
ZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigp
OwogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRl
RGlkQ2hhbmdlKCVzKSIsIGJvb2xTdHJpbmcocHJpdmF0ZU1vZGUpKTsKICAgICBtX3BsYXllci0+
c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA2YzhjOWU5Li4zNzQwNzg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTM0OCw3ICsz
NDgsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQoSGlz
dG9yeVVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKIAogICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRl
ciA9IG1fZnJhbWUubG9hZGVyKCk7CiAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5z
ZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQcml2YWN5
ID0gbV9mcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgY29uc3QgVVJM
JiBoaXN0b3J5VVJMID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9y
eSgpOwogCiAgICAgaWYgKCFmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5pc0NsaWVudFJl
ZGlyZWN0KCkpIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1
cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAgICAgICBMT0co
SGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBs
b2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT50aXRs
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCi0gICAgYm9vbCBuZWVk
UHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Cisg
ICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lv
bigpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1l
bnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CkBAIC00MzMsNyArNDMzLDcg
QEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3QoKQogICAg
ICAgICBtX2N1cnJlbnRJdGVtLT5jbGVhclNjcm9sbFBvaW50KCk7CiAgICAgfQogCi0gICAgYm9v
bCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCk7CisgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKCFoaXN0b3J5VVJM
LmlzRW1wdHkoKSAmJiAhbmVlZFByaXZhY3kpIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIEhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKICAgICBp
ZiAobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQor
ICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwpAQCAtODQ3LDcgKzg0
Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsCiAKICAgICBwYWdlLT5iYWNrRm9yd2FyZCgp
LmFkZEl0ZW0odG9wSXRlbS5yZWxlYXNlKCkpOwogCi0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3Mo
KS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2Vz
RXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBhZGRWaXNpdGVkTGlu
aygqcGFnZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CkBAIC04NjYsNyArODY2
LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamUKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRGb3Jt
RGF0YSgwKTsKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRGb3JtQ29udGVudFR5cGUoU3RyaW5nKCkp
OwogCi0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkp
CisgICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApp
bmRleCA3OWZiZTRmLi5jOGMwMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTAzLDcgKzEwMyw3
IEBAIEFwcGxpY2F0aW9uQ2FjaGUqIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVGb3JNYWlu
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKSkKICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAg
aWYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+
c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWRvY3VtZW50TG9hZGVyLT5m
cmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlv
bkNhY2hlKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpKQorICAgIGlmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiAo
ZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8
fCAhZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnRyZWUo
KS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBjYWNoZVN0b3JhZ2Uo
KS5jYWNoZUdyb3VwRm9yVVJMKHVybCkpIHsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHBh
c3NlZE1hbmlmZXN0VQogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBk
aXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUtPnNldHRp
bmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRv
cCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLT5wYWdl
KCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCku
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgcG9zdExpc3RlbmVyVGFz
ayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsK
ICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RVJST1JfRVZF
TlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIxOSw3IEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVS
TChGcmFtZSogZnJhbWUpCiAgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS0+YXBwbGljYXRpb25DYWNoZSgpKTsKIAogICAgIC8vIERvbid0IGFjY2VzcyBh
bnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAo
ZnJhbWUtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFt
ZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYg
KGZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50
cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgcG9z
dExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3Vt
ZW50TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6RVJST1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDM0
LDcgKzQzNCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJhbWUqIGZy
YW1lLCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAgLy8gRG9u
J3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVk
LgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwg
IWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlv
bkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkp
IHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2Fj
aGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewog
ICAgICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSk7
CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7CiAgICAgICAgIEFT
U0VSVCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA5YzY5YmVmLi43
ZmU1NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjphYm9ydCgpCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBw
bGljYXRpb25DYWNoZUVuYWJsZWQoKQogewotICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyLT5m
cmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkub2ZmbGluZVdl
YkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkt
PnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBtX2RvY3Vt
ZW50TG9hZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdz
KCkub2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2Fk
ZXItPmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKIH0KIAogYm9vbCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tlZEZvclJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDk0YWRhZTcuLmU0YWRlYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTIwNCw3ICsy
MDQsNyBAQCB2b2lkIEljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24oSWNv
bkxvYWREZWNpc2lvbiBpY29uTG9hZERlY2lzaW9uKQogICAgIEFTU0VSVChpY29uTG9hZERlY2lz
aW9uICE9IEljb25Mb2FkVW5rbm93bik7CiAKICAgICAvLyAgRklYTUUgKDxyZGFyOi8vcHJvYmxl
bS85MTY4NjA1PikgLSBXZSBzaG91bGQgc3VwcG9ydCBpbi1tZW1vcnktb25seSBwcml2YXRlIGJy
b3dzaW5nIGljb25zIGluIGFzeW5jaHJvbm91cyBpY29uIGRhdGFiYXNlIG1vZGUuCi0gICAgaWYg
KGljb25EYXRhYmFzZSgpLnN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpICYmIG1fZnJhbWUucGFn
ZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoaWNvbkRh
dGFiYXNlKCkuc3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkgJiYgbV9mcmFtZS5wYWdlKCktPnVz
ZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpY29uTG9h
ZERlY2lzaW9uID09IEljb25Mb2FkTm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGIzYjE1ODku
LjJiMTE3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFBhZ2U6OlBh
Z2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRp
b25DYW5kaWRhdGVzQ291bnQoMCkgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMg
Zm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0Jl
Zm9yZVVubG9hZEV2ZW50KDApCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoc3RkOjptb3ZlKHBh
Z2VDbGllbnRzLnZpc2l0ZWRMaW5rU3RvcmUpKQotICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklE
OjplbXB0eVNlc3Npb25JRCgpKQorICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCkpCiB7CiAgICAgQVNTRVJUKG1fZWRpdG9yQ2xpZW50KTsKIApAQCAtMTA3Niwx
OSArMTA3NiwxMiBAQCB2b2lkIFBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpCiAg
ICAgICAgIHZpZXdzW2ldLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9p
ZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQordm9pZCBQYWdlOjpwcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewotICAg
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fc2V0dGluZ3MtPnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKTsKKyAgICAvLyBEb24ndCBhbGxvdyBjaGFuZ2luZyB0aGUgcHJpdmF0ZSBicm93
c2luZyBzdGF0ZSBpZiB3ZSBoYXZlIHNldCBhIHNlc3Npb24gSUQuCisgICAgQVNTRVJUKG1fc2Vz
c2lvbklEID09IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpIHx8IG1fc2Vzc2lvbklEID09
IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKIAotICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3Rh
dGVEaWRDaGFuZ2UoKTsKLQotICAgIC8vIENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEg
dmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0YWtlcwotICAgIC8vIGZy
b20gYmVsb3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVp
ciBsaWZldGltZS4KLSAgICBhdXRvIHZpZXdzID0gcGx1Z2luVmlld3MoKTsKLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2aWV3cy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlld3NbaV0t
PnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKKyAg
ICBzZXRTZXNzaW9uSUQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA/IFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQog
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMTUxMCwxOSArMTUwMywyNyBAQCBWaXNpdGVkTGlu
a1N0b3JlJiBQYWdlOjp2aXNpdGVkTGlua1N0b3JlKCkKIAogU2Vzc2lvbklEIFBhZ2U6OnNlc3Np
b25JRCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2Vzc2lvbklELmlzVmFsaWQoKSkKLSAgICAgICAg
cmV0dXJuIG1fc2Vzc2lvbklEOworICAgIEFTU0VSVChtX3Nlc3Npb25JRC5pc1ZhbGlkKCkpOwog
Ci0gICAgaWYgKHNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQotICAgICAgICBy
ZXR1cm4gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCk7Ci0KLSAgICByZXR1cm4g
U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcmV0dXJuIG1fc2Vzc2lvbklEOwog
fQogCiB2b2lkIFBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IEFTU0VSVChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKLSAgICBtX3Nlc3Npb25JRCA9IHNlc3Npb25J
RDsKKyAgICBpZiAoc2Vzc2lvbklEICE9IG1fc2Vzc2lvbklEKSB7CisgICAgICAgIG1fc2Vzc2lv
bklEID0gc2Vzc2lvbklEOworCisgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFt
ZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAgICAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7
CisKKyAgICAgICAgLy8gQ29sbGVjdCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3IgdG8g
ZW5zdXJlIHRoYXQgYWN0aW9uIHRoZSBwbHVnLWluIHRha2VzCisgICAgICAgIC8vIGZyb20gYmVs
b3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZl
dGltZS4KKyAgICAgICAgYXV0byB2aWV3cyA9IHBsdWdpblZpZXdzKCk7CisKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpZXdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgdmll
d3NbaV0tPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChzZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSk7CisgICAgfQogfQogCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCBmZWMwMDJjLi5lODBhOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzEzLDcgKzMx
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsK
ICAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOwotICAgIHZvaWQgcHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCk7CisgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIAogICAgIHZvaWQgc2V0RGVidWdn
ZXIoSlNDOjpEZWJ1Z2dlciopOwogICAgIEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1YmxpYzoKIAogICAg
IFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKICAgICB2b2lkIHNldFNlc3Npb25JRChTZXNz
aW9uSUQpOwotICAgIGJvb2wgaXNTZXNzaW9uSURTZXQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Np
b25JRC5pc1ZhbGlkKCk7IH0KKyAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKTsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgaW5pdEdyb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4IDM0NmIw
MTMuLmVhNDVlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCkBAIC0xMjYsNyAr
MTI2LDcgQEAgdm9pZCBQYWdlQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJj
ZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHIKICAgICBpZiAoc291cmNlID09IE1lc3Nh
Z2VTb3VyY2U6OkNTUykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnVzZXNFcGhlbWVy
YWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS5jaHJvbWUoKS5jbGll
bnQoKS5hZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgdXJsKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFBhZ2VDb25z
b2xlOjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsCiAgICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3Vt
ZW50QXNTdHJpbmcobWVzc2FnZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRN
ZXNzYWdlVG9Db25zb2xlKCZtX3BhZ2UsIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBleGVjLCBhcmd1bWVudHMpOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0
aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnVzZXNFcGhl
bWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChnb3RNZXNzYWdlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDMyYjVhN2YuLmM2MTFlNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xNzEsNyArMTcxLDYgQEAgU2V0dGluZ3M6OlNldHRpbmdz
KFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzSmF2
YUVuYWJsZWRGb3JMb2NhbEZpbGVzKHRydWUpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseShmYWxzZSkKLSAgICAsIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKICAgICAs
IG1fYXJlSW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hcmVQbHVnaW5zRW5hYmxlZChmYWxz
ZSkKICAgICAsIG1faXNTY3JpcHRFbmFibGVkKGZhbHNlKQpAQCAtNDI5LDExICs0MjgsNyBAQCB2
b2lkIFNldHRpbmdzOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGFyZVBsdWdpbnNFbmFibGVkKQog
CiB2b2lkIFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID09IHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Ci0gICAgbV9wYWdlLT5wcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6
c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNTE2ZjBkYy4uZDQ3MzgwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaApAQCAtMTQ2LDcgKzE0Niw2IEBAIHB1YmxpYzoKICAgICAvLyAgLSBIVFRQ
IENvb2tpZXMKICAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRlTW9k
ZUJvb2wpCiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwotICAgIGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZDsgfQogCiAgICAgdm9pZCBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCk7
CiAgICAgYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Ruc1By
ZWZldGNoaW5nRW5hYmxlZDsgfQpAQCAtMzAxLDcgKzMwMCw2IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2lzSmF2YUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxG
aWxlcyA6IDE7CiAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7Ci0gICAg
Ym9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hcmVJbWFnZXNF
bmFibGVkIDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAxOwogICAgIGJvb2wg
bV9pc1NjcmlwdEVuYWJsZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
aW5kZXggMjY4MDZmNi4uOTQ4YzM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5Q
TlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgUGFnZSogcGFnZSA9IG1f
cGFyZW50RnJhbWUtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgcmV0
dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFn
ZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgICAgICooKE5QQm9v
bCopdmFsdWUpID0gcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKICAgICAgICAgcmV0dXJu
IE5QRVJSX05PX0VSUk9SOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggYzFiMjM3Yy4uNDU0MWI4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBAIC04NSw3ICs4NSw3
IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCgpCiAgICAgaWYgKHZh
bHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGZyYW1lKCkuc2V0dGlu
Z3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkucGFnZSgpLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgc2l6ZSA9
IHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvU3RvcmFnZS5jcHAKaW5kZXggYzQ4NGI5Ni4uODFiYWU2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2UuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBTdG9yYWdlOjpjb250YWlucyhj
b25zdCBTdHJpbmcmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAKIGJvb2wgU3RvcmFn
ZTo6aXNEaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJh
bWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYg
KCFtX2ZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5zdG9yYWdlVHlwZSgpID09IExvY2Fs
U3RvcmFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGE1YTVlNjkuLmU5MDgwNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9j
a0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Np
b25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMw
MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxh
Y2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3
aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxNC0wMy0yMyAg
SHlvd29uIEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgTW92ZSBhbGwg
RUZMIHR5cGVkZWZzIGludG8gRWZsVHlwZWRlZnMuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCmluZGV4IDU3NjU0NTguLmU3NWNkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNw
cApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVk
ZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgi
CkBAIC04MDAsNyArODAxLDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192
aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICNlbmRpZgogICAg
IHByaXYtPnNldHRpbmdzLnNjcmlwdHNDYW5BY2Nlc3NDbGlwYm9hcmQgPSBwYWdlU2V0dGluZ3Mu
amF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCgpICYmIHBhZ2VTZXR0aW5ncy5ET01QYXN0ZUFs
bG93ZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVUZXh0YXJlYXMgPSBwYWdlU2V0
dGluZ3MudGV4dEFyZWFzQXJlUmVzaXphYmxlKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0
ZUJyb3dzaW5nID0gcGFnZVNldHRpbmdzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBw
cml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBwcml2LT5wYWdlLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpOwogICAgIHByaXYtPnNldHRpbmdzLmNhcmV0QnJvd3NpbmcgPSBwYWdlU2V0dGlu
Z3MuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5zcGF0aWFsTmF2
aWdhdGlvbiA9IHBhZ2VTZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoKTsKICAgICBw
cml2LT5zZXR0aW5ncy5sb2NhbFN0b3JhZ2UgPSBwYWdlU2V0dGluZ3MubG9jYWxTdG9yYWdlRW5h
YmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGFmM2QwZWYuLjQzZTY2MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0xMSAgTWFydGluIEhvY2sgIDxtaG9ja0Bh
cHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25z
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZv
bGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2Ug
cXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3aXRo
IFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisK
IDIwMTQtMDMtMTggIEphZSBIeXVuIFBhcmsgIDxqYWVwYXJrQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0dUS11bQ01ha2VdIEZpeCBXZWJLaXQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5ncwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCmluZGV4IDllN2VkYzQuLmJiOTgyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAK
QEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bQogCiAKICAgICBDcmVk
ZW50aWFsU3RvcmFnZU1vZGUgY3JlZGVudGlhbFN0b3JhZ2VNb2RlOwotICAgIGlmIChjb3JlKHZp
ZXcpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoY29yZSh2
aWV3KS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgY3JlZGVudGlhbFN0b3JhZ2VN
b2RlID0gRGlzYWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKICAgICBlbHNlCiAgICAgICAgIGNyZWRl
bnRpYWxTdG9yYWdlTW9kZSA9IEFsbG93UGVyc2lzdGVudFN0b3JhZ2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggZGI5YjcyMS4uODZlZmU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE0LTAzLTExICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAgICBV
bmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvbnNpc3RzIHNvbGVs
eSBvZiBtZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWluZyBXZWJDb3JlOjpTZXR0
aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lvbklEKCkuaXNF
cGhlbWVyYWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3Rv
cnlJdGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKToKKwogMjAxNC0wMy0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gRG93bmxvYWQgc3VwcG9ydCBieSBDRlVSTERvd25sb2FkUmVmIHVu
ZGVyIFVTRShDRk5FVFdPUkspLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA1MTkyNjQwLi5lZTNjYTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkKICAgICBIaXN0b3J5
SXRlbSogaGlzdG9yeUl0ZW0gPSAwOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2Vi
RnJhbWUuZ2V0KCkpLT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFwYWdlLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpKQogICAgICAgICAgICAgaGlzdG9yeUl0ZW0gPSBwYWdlLT5iYWNrRm9yd2Fy
ZCgpLmN1cnJlbnRJdGVtKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRl
eCAwZGI0ZjgwLi43MWFjZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTExMyw3
ICsxMTMsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogCi0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9u
SUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAK
ICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCBhNzJmOWY0Li42MGQ5MjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUu
Y29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmb2xsb3dp
bmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBsYWNlIHF1ZXJ5
aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgd2l0aCBQYWdl
OjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisKIDIwMTQtMDMtMjIgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTdHJpbmc6OmRlcHJlY2F0ZWRD
aGFyYWN0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODhkYzM1MS4uMjg0MDY3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtODAzLDcgKzgwMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpCiAgICAgV2ViVmlldyogd2ViVmll
dyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gd2ViVmll
dy0+cGFnZSgpKSB7Ci0gICAgICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkpCisgICAgICAgIGlmICghcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkK
ICAgICAgICAgICAgIGhpc3RvcnlJdGVtID0gcGFnZS0+YmFja0ZvcndhcmQoKS5jdXJyZW50SXRl
bSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAppbmRleCBiZjU5ZWU3Li43
MTMzOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFn
ZVNlc3Npb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBp
ZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSkKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNz
aW9uKCkpCiAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKIAogICAgIHJldHVybiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDEzN2Q2MTcuLjk0YTFjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNC0w
My0yNSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJp
dmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VJc1VzaW5nRXBoZW1lcmFsU2Vz
c2lvbik6IFVzZSByZW5hbWVkIHVzZXNFcGhlbWVyYWxTZXNzaW9uLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDogTWVjaGFuaWNhbGx5IGNoYW5nZSBTZXR0aW5n
czo6UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmlzUHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjp1c2VzRXBoZW1lcmFsU2Vzc2lvbik6IFJlbmFtZWQgZnJvbSBp
c1VzaW5nRXBoZW1lcmFsU2Vzc2lvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0U2Vz
c2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOiBT
ZXQgc2Vzc2lvbiB0byBsZWdhY3kgcHJpdmF0ZSBzZXNzaW9uIGlmIG5lZWRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lvbklEKTogTW92ZWQgdG8gaGVhZGVyLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbik6IFJlbmFtZWQgdG8gdXNl
c0VwaGVtZXJhbFNlc3Npb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lvbklEKTogSnVzdCBjYWxsIGRvd24g
dG8gbV9wYWdlLgorCiAyMDE0LTAzLTI0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBEb3dubG9hZCBzdXBwb3J0IGJ5IENGVVJMRG93bmxvYWRSZWYgdW5k
ZXIgVVNFKENGTkVUV09SSykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggNjcx
Y2I1Yy4uZmJmOTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNTYxLDUg
KzU2MSw1IEBAIHZvaWQgV0tCdW5kbGVQYWdlU3RvcEV4dGVuZGluZ0luY3JlbWVudGFsUmVuZGVy
aW5nU3VwcHJlc3Npb24oV0tCdW5kbGVQYWdlUmVmIHBhCiAKIGJvb2wgV0tCdW5kbGVQYWdlSXNV
c2luZ0VwaGVtZXJhbFNlc3Npb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYpCiB7Ci0gICAgcmV0
dXJuIHRvSW1wbChwYWdlUmVmKS0+aXNVc2luZ0VwaGVtZXJhbFNlc3Npb24oKTsKKyAgICByZXR1
cm4gdG9JbXBsKHBhZ2VSZWYpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDkzYjBi
YWQuLjllZGVkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKQEAgLTE1MzUsNyArMTUzNSw3IEBAIGJvb2wgUGx1Z2luVmlldzo6aXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICBpZiAoIWZyYW1lKCktPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1lbnQo
KS0+dG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBmcmFt
ZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gZnJh
bWUoKS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQogCiBib29sIFBsdWdpblZp
ZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTYzMmQy
MS4uNTk2NjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNs
dWRlICJQcmludEluZm8uaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKKyNpbmNsdWRlICJT
ZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUg
IlZpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0
LmgiCkBAIC0yMTY4LDI0ICsyMTY5LDE4IEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5n
TW9kZSh1bnNpZ25lZCBsYXllckhvc3RpbmdNb2RlKQogICAgICAgICBwbHVnaW5WaWV3LT5zZXRM
YXllckhvc3RpbmdNb2RlKG1fbGF5ZXJIb3N0aW5nTW9kZSk7CiB9CiAKLVNlc3Npb25JRCBXZWJQ
YWdlOjpzZXNzaW9uSUQoKSBjb25zdAorYm9vbCBXZWJQYWdlOjp1c2VzRXBoZW1lcmFsU2Vzc2lv
bigpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcGFnZS0+aXNTZXNzaW9uSURTZXQoKSkKLSAgICAgICAg
cmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7Ci0KLSAgICByZXR1cm4gbV9wYWdlLT5zZXR0aW5n
cygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSA/IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7Ci19Ci0KLWJvb2wgV2Vi
UGFnZTo6aXNVc2luZ0VwaGVtZXJhbFNlc3Npb24oKSBjb25zdAotewotICAgIHJldHVybiBzZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpOworICAgIHJldHVybiBtX3BhZ2UtPnVzZXNFcGhlbWVyYWxT
ZXNzaW9uKCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6c2V0U2Vzc2lvbklEKFNlc3Npb25JRCBzZXNz
aW9uSUQpCiB7Ci0gICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsKKyAgICBBU1NF
UlQoc2Vzc2lvbklEICE9IG1fcGFnZS0+c2Vzc2lvbklEKCkpOworICAgIEFTU0VSVChzZXNzaW9u
SUQuaXNWYWxpZCgpKTsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vzc2lv
bklEKTsKKyAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQp
CkBAIC0yNDkwLDEwICsyNDg1LDggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5ncy5zZXRMb2NhbFN0
b3JhZ2VFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
bG9jYWxTdG9yYWdlRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0WFNTQXVkaXRvckVu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp4c3NBdWRp
dG9yRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxl
ZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmZyYW1lRmxhdHRl
bmluZ0VuYWJsZWRLZXkoKSkpOwotICAgIGlmIChtX3BhZ2UtPmlzU2Vzc2lvbklEU2V0KCkpCi0g
ICAgICAgIHNldHRpbmdzLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQobV9wYWdlLT5zZXNzaW9u
SUQoKS5pc0VwaGVtZXJhbCgpKTsKLSAgICBlbHNlCi0gICAgICAgIHNldHRpbmdzLnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVkS2V5KCkpKTsKKyAgICBpZiAoc3RvcmUuZ2V0Qm9v
bFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpwcml2YXRlQnJvd3NpbmdFbmFibGVkS2V5
KCkpICYmICFtX3BhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCisgICAgICAgIG1fcGFnZS0+
c2V0U2Vzc2lvbklEKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKICAgICBz
ZXR0aW5ncy5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZEtleSgpKSk7CiAgICAg
c2V0dGluZ3Muc2V0SmF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWRL
ZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRleHRBcmVhc0FyZVJlc2l6YWJsZUtl
eSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCAwYjE1NTMxLi5mMmFlYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTE5Myw4ICsxOTMsOCBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpQ
YWdlKiBjb3JlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQogICAgIHVpbnQ2
NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9Ci0gICAgV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwotICAgIGJvb2wgaXNVc2luZ0VwaGVtZXJhbFNlc3Np
b24oKSBjb25zdDsKKyAgICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQoKTsgfQorICAgIGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Np
b24oKSBjb25zdDsKICAgICB2b2lkIHNldFNlc3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQpOwog
CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ZDgzNjE3Li43YWEyOTY5
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTQtMDMtMTEgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgor
CisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0
IGZvciBlcGhlbWVyYWwgc2Vzc2lvbnMgc2ltaWxhciB0byBQcml2YXRlQnJvd3NpbmdQdXNoU3Rh
dGVOb0hpc3RvcnlDYWxsYmFjay4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2su
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNC0w
My0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRG93
bmxvYWQgc3VwcG9ydCBieSBDRlVSTERvd25sb2FkUmVmIHVuZGVyIFVTRShDRk5FVFdPUkspLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4YmJiNTcwLi5lMWFlN2YwIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTA3LDYgKzEwNyw3IEBACiAJCTUyQ0I0NzQxMTQ0OEZCOTMwMDg3Mzk5
NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJDQjQ3NDAxNDQ4RkI5
MzAwODczOTk1IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5j
cHAgKi87IH07CiAJCTUyRTVDRTQ2MTREMjFFOUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0NTE0
RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovOyB9OwogCQk1MkU1Q0U0OTE0RDIx
RUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQ
YXJlbnRGcmFtZV9CdW5kbGUuY3BwICovOyB9OworCQk3NUYzMTM0MDE4QzE3MUI3MDA0MUNBRUMg
LyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1RjMxMzNGMThDMTcxQjcw
MDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3Bw
ICovOyB9OwogCQk3NkUxODJEQTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUx
ODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi87IH07CiAJ
CTc2RTE4MkREMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJE
QzE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9
OwogCQk3NkUxODJERjE1NDc2N0U2MDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAqLzsg
fTsKQEAgLTQzMyw2ICs0MzQsNyBAQAogCQk1MkNCNDc0MDE0NDhGQjkzMDA4NzM5OTUgLyogTG9h
ZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRp
cmVjdG9yeVVSTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ1MTRE
MjFFOUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQYXJlbnRGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyZW50RnJhbWVfQnVuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVD
IC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRl
Tm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkUx
ODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdp
bGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGlu
Zy1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0by1zdWJtaXR0aW5n
LWZvcm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NjYsNiArNzY4LDcg
QEAKIAkJCQlGNkY0OUM2NzE1NTQ1QzhEMDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9D
YWNoZS5jcHAgKi8sCiAJCQkJRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4
dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAqLywKIAkJCQlDMDQ1Rjk0NDEzODVDMkU5MDBDMEYz
Q0QgLyogRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCAqLywKKwkJCQk3NUYzMTMz
RjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNh
bGxiYWNrLmNwcCAqLywKIAkJCQkxQTVGRUZEQzEyNzBFMkEzMDAwRTI5MjEgLyogRXZhbHVhdGVK
YXZhU2NyaXB0LmNwcCAqLywKIAkJCQlCQ0M4Qjk1QTEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVk
TG9hZC5jcHAgKi8sCiAJCQkJMUEwMkM4NEUxMjVENEE4NDAwRTNGNEJEIC8qIEZpbmQuY3BwICov
LApAQCAtMTE1MSw2ICsxMTU0LDcgQEAKIAkJCQkyOTcyMzRCNDE3M0FEMDQ4MDA5ODM2MDEgLyog
Q3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OTAy
OEI2MTRGQUJEOTIwMDdFNkI0MyAvKiBBY2NlcHRzRmlyc3RNb3VzZS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTI5MTg2MUZGMTdCRDREQzcwMEQ0RTQxRSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRGaW5p
c2hMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNzVGMzEzNDAxOEMxNzFCNzAwNDFDQUVD
IC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyNkYxQjQ0NDE1Q0E0MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUI1NUYxMUEwMTUxNjgzNEYwMDkxNTkxNiAvKiBBdHRyaWJ1
dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDBDRDlGNjMxNUJFMzEyQzAwMkRBMkNF
IC8qIEJhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hp
c3RvcnlDYWxsYmFjay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBo
ZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzAzMTk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hp
c3RvcnlDYWxsYmFjay5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dL
UmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wg
dGVzdERvbmU7CisKK3N0YXRpYyB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uRGF0YVJlZiBu
YXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiBuYXZpZ2F0aW5nIGlu
IFByaXZhdGUgQnJvd3NpbmcuCisgICAgRkFJTCgpOworfQorCitzdGF0aWMgdm9pZCBkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRh
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIHRlc3REb25lID0gdHJ1ZTsKK30KKwor
VEVTVChXZWJLaXQyLCBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2sp
Cit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29u
dGV4dENyZWF0ZSgpKTsKKworICAgIFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMCBoaXN0b3J5Q2xp
ZW50OworICAgIG1lbXNldCgmaGlzdG9yeUNsaWVudCwgMCwgc2l6ZW9mKGhpc3RvcnlDbGllbnQp
KTsKKworICAgIGhpc3RvcnlDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBoaXN0b3J5Q2xp
ZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhID0gZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGE7CisKKyAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KGNvbnRleHQuZ2V0KCks
ICZoaXN0b3J5Q2xpZW50LmJhc2UpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29u
dGV4dC5nZXQoKSk7CisKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnRWMCBwYWdlTG9hZGVyQ2xpZW50
OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGll
bnQpKTsKKworICAgIHBhZ2VMb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBwYWdl
TG9hZGVyQ2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQod2ViVmlldy5wYWdlKCksICZwYWdlTG9hZGVyQ2xpZW50LmJhc2UpOworCisgICAgV0tTZXNz
aW9uUmVmIHNlc3Npb24gPSBXS1Nlc3Npb25DcmVhdGUodHJ1ZSk7CisgICAgV0tQYWdlU2V0U2Vz
c2lvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lvbik7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJl
Zj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJwdXNoLXN0YXRlIiwg
Imh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsK
KworICAgIFV0aWw6OnJ1bigmdGVzdERvbmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227810</attachid>
            <date>2014-03-25 15:39:03 -0700</date>
            <delta_ts>2014-03-27 12:35:45 -0700</delta_ts>
            <desc>fix gtk build + address Page comments</desc>
            <filename>unifyprivate.02.diff</filename>
            <type>text/plain</type>
            <size>43340</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjN2QxZmI4Li4xYjBmYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDMtMjUgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjp1c2VzRXBoZW1lcmFsU2Vzc2lvbigpLgorCisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdp
dGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRy
b2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAgICAg
ICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQp
OgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAgICAg
ICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5pdGlh
bGl6ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNlc3Np
b25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRvIGp1
c3QgcmV0dXJuIG1fc2Vzc2lvbklELgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vzc2lv
bklEKTogQWxzbyBwZXJmb3JtIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24uCisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZTo6YWRkTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAqIHBh
Z2UvU2V0dGluZ3MuY3BwOiBSZW1vdmUgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCBzZXR0aW5nLgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKTogUGFnZSByZWZsZWN0cyBzZXR0
aW5nIHVzaW5nIHNlc3Npb24uCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAq
IHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpn
ZXRWYWx1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQpOgorICAg
ICAgICAqIHN0b3JhZ2UvU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlOjpp
c0Rpc2FibGVkQnlQcml2YXRlQnJvd3NpbmcpOgorCiAyMDE0LTAzLTI0ICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEb3dubG9hZCBzdXBwb3J0IGJ5IENG
VVJMRG93bmxvYWRSZWYgdW5kZXIgVVNFKENGTkVUV09SSykuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKaW5kZXggYzlh
NTM2Ni4uYmY3MzBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcApAQCAtMjI3LDcgKzIyNyw3IEBAIGJvb2wgRGF0
YWJhc2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKCkgY29uc3QKIHsKICAgICBpZiAobV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwotICAgICAg
ICBpZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgKGRvY3VtZW50LT5wYWdlKCktPnNldHRpbmdzKCku
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpICYmICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dzRGF0YWJh
c2VBY2Nlc3NJblByaXZhdGVCcm93c2luZyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+cHJv
dG9jb2woKSkpKQorICAgICAgICBpZiAoIWRvY3VtZW50LT5wYWdlKCkgfHwgKGRvY3VtZW50LT5w
YWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NE
YXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
LT5wcm90b2NvbCgpKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IGYwMGUwZWQuLjkzNTlkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3ku
aCIKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCkBAIC0xMjMzLDggKzEy
MzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25zdCBVUkwmIGlu
aXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VAogICAgIGlmIChtX3NlbmRQcm9ncmVzc0V2
ZW50cykgCiAgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CiAKLSAgICBTZXR0aW5n
cyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgYm9vbCBwcml2YXRlTW9k
ZSA9ICFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAg
IGJvb2wgcHJpdmF0ZU1vZGUgPSBkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2Uo
KS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dz
aW5nTW9kZShwcml2YXRlTW9kZSk7CiAKICAgICAvLyBSZXNldCBkaXNwbGF5IG1vZGUgdG8gZm9y
Y2UgYSByZWNhbGN1bGF0aW9uIG9mIHdoYXQgdG8gc2hvdyBiZWNhdXNlIHdlIGFyZSByZXNldHRp
bmcgdGhlIHBsYXllci4KQEAgLTUyMjMsOCArNTIyMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKQogICAgIGlmICghbV9wbGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCkuc2V0
dGluZ3MoKTsKLSAgICBib29sIHByaXZhdGVNb2RlID0gIXNldHRpbmdzIHx8IHNldHRpbmdzLT5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlTW9kZSA9IGRvY3VtZW50
KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlk
Q2hhbmdlKCVzKSIsIGJvb2xTdHJpbmcocHJpdmF0ZU1vZGUpKTsKICAgICBtX3BsYXllci0+c2V0
UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA2YzhjOWU5Li4zNzQwNzg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTM0OCw3ICszNDgs
NyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQoSGlzdG9y
eVVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKIAogICAgIEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciA9
IG1fZnJhbWUubG9hZGVyKCk7CiAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9mcmFtZS5zZXR0
aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQcml2YWN5ID0g
bV9mcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgY29uc3QgVVJMJiBo
aXN0b3J5VVJMID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgp
OwogCiAgICAgaWYgKCFmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5pc0NsaWVudFJlZGly
ZWN0KCkpIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRh
dGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAgICAgICBMT0coSGlz
dG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRpcmVjdCBsb2Fk
IGluIGZyYW1lICVzIiwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT50aXRsZSgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCi0gICAgYm9vbCBuZWVkUHJp
dmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
Ym9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigp
OwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CkBAIC00MzMsNyArNDMzLDcgQEAg
dm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3QoKQogICAgICAg
ICBtX2N1cnJlbnRJdGVtLT5jbGVhclNjcm9sbFBvaW50KCk7CiAgICAgfQogCi0gICAgYm9vbCBu
ZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
CisgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vz
c2lvbigpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCkuZG9j
dW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKCFoaXN0b3J5VVJMLmlz
RW1wdHkoKSAmJiAhbmVlZFByaXZhY3kpIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKICAgICBpZiAo
bV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAg
IGlmIChtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwpAQCAtODQ3LDcgKzg0Nyw3
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsCiAKICAgICBwYWdlLT5iYWNrRm9yd2FyZCgpLmFk
ZEl0ZW0odG9wSXRlbS5yZWxlYXNlKCkpOwogCi0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2VzRXBo
ZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBhZGRWaXNpdGVkTGluaygq
cGFnZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CkBAIC04NjYsNyArODY2LDcg
QEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamUKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRGb3JtRGF0
YSgwKTsKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRGb3JtQ29udGVudFR5cGUoU3RyaW5nKCkpOwog
Ci0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisg
ICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRl
eCA3OWZiZTRmLi5jOGMwMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBA
IEFwcGxpY2F0aW9uQ2FjaGUqIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVGb3JNYWluUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50aWZp
ZXIoKSkKICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAgaWYg
KGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+c2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWRvY3VtZW50TG9hZGVyLT5mcmFt
ZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNh
Y2hlKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSkpKQorICAgIGlmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiAoZG9j
dW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAh
ZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnRyZWUoKS50
b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBjYWNoZVN0b3JhZ2UoKS5j
YWNoZUdyb3VwRm9yVVJMKHVybCkpIHsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHBhc3Nl
ZE1hbmlmZXN0VQogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNr
IGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUtPnNldHRpbmdz
KCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgp
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLT5wYWdlKCkt
PnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAg
ICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RVJST1JfRVZFTlQs
IGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5pZmVzdFVSTChG
cmFtZSogZnJhbWUpCiAgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25DYWNo
ZUhvc3QoKS0+YXBwbGljYXRpb25DYWNoZSgpKTsKIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0
aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJh
bWUtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+
dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZy
YW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVl
KCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3VtZW50
TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
RVJST1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDM0LDcg
KzQzNCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJhbWUqIGZyYW1l
LCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAgLy8gRG9uJ3Qg
YWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgot
ICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWZy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNh
Y2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsK
KyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUo
ZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAg
ICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSk7CiAg
ICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7CiAgICAgICAgIEFTU0VS
VCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA5YzY5YmVmLi43ZmU1
NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjphYm9ydCgpCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQoKQogewotICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyLT5mcmFt
ZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkub2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNl
dHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBtX2RvY3VtZW50
TG9hZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCku
b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXIt
PmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKIH0KIAogYm9vbCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tlZEZvclJlcXVlc3QoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDk0YWRhZTcuLmU0YWRlYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTIwNCw3ICsyMDQs
NyBAQCB2b2lkIEljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24oSWNvbkxv
YWREZWNpc2lvbiBpY29uTG9hZERlY2lzaW9uKQogICAgIEFTU0VSVChpY29uTG9hZERlY2lzaW9u
ICE9IEljb25Mb2FkVW5rbm93bik7CiAKICAgICAvLyAgRklYTUUgKDxyZGFyOi8vcHJvYmxlbS85
MTY4NjA1PikgLSBXZSBzaG91bGQgc3VwcG9ydCBpbi1tZW1vcnktb25seSBwcml2YXRlIGJyb3dz
aW5nIGljb25zIGluIGFzeW5jaHJvbm91cyBpY29uIGRhdGFiYXNlIG1vZGUuCi0gICAgaWYgKGlj
b25EYXRhYmFzZSgpLnN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpICYmIG1fZnJhbWUucGFnZSgp
LT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoaWNvbkRhdGFi
YXNlKCkuc3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkgJiYgbV9mcmFtZS5wYWdlKCktPnVzZXNF
cGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChpY29uTG9hZERl
Y2lzaW9uID09IEljb25Mb2FkTm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGIzYjE1ODkuLjI1
NjBkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFBhZ2U6OlBhZ2Uo
UGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9sYXN0U3BhdGlhbE5hdmlnYXRpb25D
YW5kaWRhdGVzQ291bnQoMCkgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRlcm5hbHMgZm9y
IFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5kbGluZ0JlZm9y
ZVVubG9hZEV2ZW50KDApCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoc3RkOjptb3ZlKHBhZ2VD
bGllbnRzLnZpc2l0ZWRMaW5rU3RvcmUpKQotICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpl
bXB0eVNlc3Npb25JRCgpKQorICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpCiB7CiAgICAgQVNTRVJUKG1fZWRpdG9yQ2xpZW50KTsKIApAQCAtMTA3NiwxOSAr
MTA3NiwxMiBAQCB2b2lkIFBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpCiAgICAg
ICAgIHZpZXdzW2ldLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBQ
YWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQordm9pZCBQYWdlOjpwcml2YXRlQnJv
d3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewotICAgIGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKTsKKyAgICAvLyBEb24ndCBhbGxvdyBjaGFuZ2luZyB0aGUgcHJpdmF0ZSBicm93c2lu
ZyBzdGF0ZSBpZiB3ZSBoYXZlIHNldCBhIHNlc3Npb24gSUQuCisgICAgQVNTRVJUKG1fc2Vzc2lv
bklEID09IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpIHx8IG1fc2Vzc2lvbklEID09IFNl
c3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKIAotICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVE
aWRDaGFuZ2UoKTsKLQotICAgIC8vIENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVj
dG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0YWtlcwotICAgIC8vIGZyb20g
YmVsb3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBs
aWZldGltZS4KLSAgICBhdXRvIHZpZXdzID0gcGx1Z2luVmlld3MoKTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB2aWV3cy5zaXplKCk7ICsraSkKLSAgICAgICAgdmlld3NbaV0tPnBy
aXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKKyAgICBz
ZXRTZXNzaW9uSUQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA/IFNlc3Npb25JRDo6bGVnYWN5UHJp
dmF0ZVNlc3Npb25JRCgpIDogU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOwogfQogCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtMTUxMCwxOSArMTUwMywyOSBAQCBWaXNpdGVkTGlua1N0
b3JlJiBQYWdlOjp2aXNpdGVkTGlua1N0b3JlKCkKIAogU2Vzc2lvbklEIFBhZ2U6OnNlc3Npb25J
RCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2Vzc2lvbklELmlzVmFsaWQoKSkKLSAgICAgICAgcmV0
dXJuIG1fc2Vzc2lvbklEOwotCi0gICAgaWYgKHNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKQotICAgICAgICByZXR1cm4gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklE
KCk7Ci0KLSAgICByZXR1cm4gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcmV0
dXJuIG1fc2Vzc2lvbklEOwogfQogCiB2b2lkIFBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewogICAgIEFTU0VSVChzZXNzaW9uSUQuaXNWYWxpZCgpKTsKKworICAgIGJv
b2wgc3RhdGVDaGFuZ2VkID0gKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpICE9IG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpOworCiAgICAgbV9zZXNzaW9uSUQgPSBzZXNzaW9uSUQ7CisKKyAgICBp
ZiAoIXN0YXRlQ2hhbmdlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VO
ZXh0KCkpCisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wcml2YXRlQnJvd3NpbmdTdGF0ZURp
ZENoYW5nZSgpOworCisgICAgLy8gQ29sbGVjdCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0
b3IgdG8gZW5zdXJlIHRoYXQgYWN0aW9uIHRoZSBwbHVnLWluIHRha2VzCisgICAgLy8gZnJvbSBi
ZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxp
ZmV0aW1lLgorCisgICAgZm9yIChhdXRvICZ2aWV3IDogcGx1Z2luVmlld3MoKSkKKyAgICAgICAg
dmlldy0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgp
KTsKKwogfQogCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApp
bmRleCBmZWMwMDJjLi5lODBhOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzEzLDcgKzMxMyw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICB2
b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOwotICAgIHZvaWQgcHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKCk7CisgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIAogICAgIHZvaWQgc2V0RGVidWdnZXIoSlND
OjpEZWJ1Z2dlciopOwogICAgIEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKCkgY29uc3QgeyByZXR1
cm4gbV9kZWJ1Z2dlcjsgfQpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1YmxpYzoKIAogICAgIFNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdDsKICAgICB2b2lkIHNldFNlc3Npb25JRChTZXNzaW9uSUQp
OwotICAgIGJvb2wgaXNTZXNzaW9uSURTZXQoKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRC5p
c1ZhbGlkKCk7IH0KKyAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKTsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgaW5p
dEdyb3VwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4IDM0NmIwMTMuLmVh
NDVlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCkBAIC0xMjYsNyArMTI2LDcg
QEAgdm9pZCBQYWdlQ29uc29sZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHIKICAgICBpZiAoc291cmNlID09IE1lc3NhZ2VTb3Vy
Y2U6OkNTUykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnVzZXNFcGhlbWVyYWxTZXNz
aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5h
ZGRNZXNzYWdlVG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgdXJsKTsKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFBhZ2VDb25zb2xlOjpt
ZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsCiAgICAgYm9vbCBnb3RNZXNzYWdlID0gYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNT
dHJpbmcobWVzc2FnZSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdl
VG9Db25zb2xlKCZtX3BhZ2UsIE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIHR5cGUsIGxldmVs
LCBtZXNzYWdlLCBleGVjLCBhcmd1bWVudHMpOwogCi0gICAgaWYgKG1fcGFnZS5zZXR0aW5ncygp
LnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAobV9wYWdlLnVzZXNFcGhlbWVyYWxT
ZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChnb3RNZXNzYWdlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDMyYjVhN2YuLmM2MTFlNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCkBAIC0xNzEsNyArMTcxLDYgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2Uq
IHBhZ2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzSmF2YUVuYWJs
ZWRGb3JMb2NhbEZpbGVzKHRydWUpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseShm
YWxzZSkKLSAgICAsIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fYXJl
SW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hcmVQbHVnaW5zRW5hYmxlZChmYWxzZSkKICAg
ICAsIG1faXNTY3JpcHRFbmFibGVkKGZhbHNlKQpAQCAtNDI5LDExICs0MjgsNyBAQCB2b2lkIFNl
dHRpbmdzOjpzZXRQbHVnaW5zRW5hYmxlZChib29sIGFyZVBsdWdpbnNFbmFibGVkKQogCiB2b2lk
IFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKIHsKLSAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID09IHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Ci0gICAgbV9wYWdlLT5wcml2YXRlQnJv
d3NpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0VXNl
clN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0TG9jYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNTE2ZjBkYy4uZDQ3MzgwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaApAQCAtMTQ2LDcgKzE0Niw2IEBAIHB1YmxpYzoKICAgICAvLyAgLSBIVFRQIENvb2tp
ZXMKICAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBwb3J0IE5QTlZwcml2YXRlTW9kZUJvb2wp
CiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwotICAgIGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZDsgfQogCiAgICAgdm9pZCBzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoYm9vbCk7CiAgICAg
Ym9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Ruc1ByZWZldGNo
aW5nRW5hYmxlZDsgfQpAQCAtMzAxLDcgKzMwMCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
SmF2YUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyA6
IDE7CiAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7Ci0gICAgYm9vbCBt
X3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hcmVJbWFnZXNFbmFibGVk
IDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc1Nj
cmlwdEVuYWJsZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
MjY4MDZmNi4uOTQ4YzM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBA
IC0xMzU0LDcgKzEzNTQsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlh
YmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgUGFnZSogcGFnZSA9IG1fcGFyZW50
RnJhbWUtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgcmV0dXJuIE5Q
RVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFnZS0+c2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgICAgICooKE5QQm9vbCopdmFs
dWUpID0gcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKICAgICAgICAgcmV0dXJuIE5QRVJS
X05PX0VSUk9SOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
ZWFyY2hGaWVsZC5jcHAKaW5kZXggYzFiMjM3Yy4uNDU0MWI4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZv
aWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCgpCiAgICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGZyYW1lKCkuc2V0dGluZ3MoKS5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkucGFnZSgpLT51c2VzRXBo
ZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgc2l6ZSA9IHN0YXRp
Y19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3Rv
cmFnZS5jcHAKaW5kZXggYzQ4NGI5Ni4uODFiYWU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBTdG9yYWdlOjpjb250YWlucyhjb25zdCBT
dHJpbmcmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAKIGJvb2wgU3RvcmFnZTo6aXNE
aXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUtPnBh
Z2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKCFtX2Zy
YW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5zdG9yYWdlVHlwZSgpID09IExvY2FsU3RvcmFn
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGE1YTVlNjkuLjU3NmJlMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0yNSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBs
ZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZvbGxv
d2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2UgcXVl
cnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3aXRoIFBh
Z2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBld2svZXdrX3ZpZXcu
Y3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKwogMjAxNC0wMy0yMyAgSHlvd29u
IEtpbSAgPGh3MTAwOC5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgTW92ZSBhbGwgRUZMIHR5
cGVkZWZzIGludG8gRWZsVHlwZWRlZnMuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmlu
ZGV4IDU3NjU0NTguLmU3NWNkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAt
NjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNv
dXBOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlRpbGVkQmFja2luZ1N0b3JlLmgiCkBAIC04
MDAsNyArODAxLDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3By
aXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICNlbmRpZgogICAgIHByaXYt
PnNldHRpbmdzLnNjcmlwdHNDYW5BY2Nlc3NDbGlwYm9hcmQgPSBwYWdlU2V0dGluZ3MuamF2YVNj
cmlwdENhbkFjY2Vzc0NsaXBib2FyZCgpICYmIHBhZ2VTZXR0aW5ncy5ET01QYXN0ZUFsbG93ZWQo
KTsKICAgICBwcml2LT5zZXR0aW5ncy5yZXNpemFibGVUZXh0YXJlYXMgPSBwYWdlU2V0dGluZ3Mu
dGV4dEFyZWFzQXJlUmVzaXphYmxlKCk7Ci0gICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dz
aW5nID0gcGFnZVNldHRpbmdzLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBwcml2LT5z
ZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBwcml2LT5wYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lv
bigpOwogICAgIHByaXYtPnNldHRpbmdzLmNhcmV0QnJvd3NpbmcgPSBwYWdlU2V0dGluZ3MuY2Fy
ZXRCcm93c2luZ0VuYWJsZWQoKTsKICAgICBwcml2LT5zZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlv
biA9IHBhZ2VTZXR0aW5ncy5zcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoKTsKICAgICBwcml2LT5z
ZXR0aW5ncy5sb2NhbFN0b3JhZ2UgPSBwYWdlU2V0dGluZ3MubG9jYWxTdG9yYWdlRW5hYmxlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCmluZGV4IGFmM2QwZWYuLjdkZjE0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0yNSAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5j
b20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGZvbGxvd2lu
ZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxhY2UgcXVlcnlp
bmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3aXRoIFBhZ2U6
OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisKIDIwMTQt
MDMtMTggIEphZSBIeXVuIFBhcmsgIDxqYWVwYXJrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0dU
S11bQ01ha2VdIEZpeCBXZWJLaXQgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5ncwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCmluZGV4IDllN2VkYzQuLmJiOTgyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTI1
OCw3ICsyNTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bQogCiAKICAgICBDcmVkZW50aWFs
U3RvcmFnZU1vZGUgY3JlZGVudGlhbFN0b3JhZ2VNb2RlOwotICAgIGlmIChjb3JlKHZpZXcpLT5z
ZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAoY29yZSh2aWV3KS0+
dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgY3JlZGVudGlhbFN0b3JhZ2VNb2RlID0g
RGlzYWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKICAgICBlbHNlCiAgICAgICAgIGNyZWRlbnRpYWxT
dG9yYWdlTW9kZSA9IEFsbG93UGVyc2lzdGVudFN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXgg
ZGI5YjcyMS4uODMzMTc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0
LTAzLTI1ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSBw
cml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgZm9sbG93aW5nIGNvbnNpc3RzIHNvbGVseSBvZiBt
ZWNoYW5pY2FsIGNoYW5nZXMgdG8gcmVwbGFjZSBxdWVyeWluZyBXZWJDb3JlOjpTZXR0aW5nczo6
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHdpdGggUGFnZTo6c2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlJdGVt
Rm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKToKKwogMjAxNC0wMy0yNCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gRG93bmxvYWQgc3VwcG9ydCBieSBDRlVSTERvd25sb2FkUmVmIHVuZGVyIFVT
RShDRk5FVFdPUkspLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA1MTkyNjQwLi5lZTNjYTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQpAQCAtMTEwOCw3ICsxMTA4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkKICAgICBIaXN0b3J5SXRlbSog
aGlzdG9yeUl0ZW0gPSAwOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlKG1fd2ViRnJhbWUu
Z2V0KCkpLT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLnByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFwYWdlLT5zZXNzaW9uSUQoKS5pc0VwaGVt
ZXJhbCgpKQogICAgICAgICAgICAgaGlzdG9yeUl0ZW0gPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmN1
cnJlbnRJdGVtKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQppbmRleCAwZGI0
ZjgwLi43MWFjZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KQEAgLTExMyw3ICsxMTMs
NyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5p
c0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gKnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICBy
ZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCBhNzJmOWY0Li44YWRhYmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMTQtMDMtMjUgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgor
CisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmb2xsb3dpbmcgY29u
c2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBsYWNlIHF1ZXJ5aW5nIFdl
YkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgd2l0aCBQYWdlOjpzZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0
ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisKIDIwMTQtMDMtMjIgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTdHJpbmc6OmRlcHJlY2F0ZWRDaGFyYWN0
ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggODhkYzM1MS4uMjg0MDY3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtODAzLDcgKzgwMyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVw
ZGF0ZUdsb2JhbEhpc3RvcnlJdGVtRm9yUGFnZSgpCiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1f
d2ViRnJhbWUtPndlYlZpZXcoKTsKIAogICAgIGlmIChQYWdlKiBwYWdlID0gd2ViVmlldy0+cGFn
ZSgpKSB7Ci0gICAgICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkpCisgICAgICAgIGlmICghcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAg
ICAgICAgIGhpc3RvcnlJdGVtID0gcGFnZS0+YmFja0ZvcndhcmQoKS5jdXJyZW50SXRlbSgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAppbmRleCBiZjU5ZWU3Li43MTMzOTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBpZiAoZnJh
bWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAg
ICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkp
CiAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKIAogICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDEz
N2Q2MTcuLjNhYWExYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNC0wMy0yNSAg
TWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBi
cm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VJc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbik6
IFVzZSByZW5hbWVkIHVzZXNFcGhlbWVyYWxTZXNzaW9uLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDogTWVjaGFuaWNhbGx5IGNoYW5nZSBTZXR0aW5nczo6UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6Oi51c2VzRXBoZW1lcmFsU2Vzc2lvbigpLgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmNwcDogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1c2VzRXBoZW1lcmFsU2Vzc2lvbik6
IFJlbmFtZWQgZnJvbSBpc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbi4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6c2V0U2Vzc2lvbklEKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOiBTZXQgc2Vzc2lvbiB0byBsZWdhY3kgcHJpdmF0ZSBzZXNzaW9uIGlmIG5l
ZWRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lvbklEKTogTW92ZWQgdG8gaGVh
ZGVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbik6
IFJlbmFtZWQgdG8gdXNlc0VwaGVtZXJhbFNlc3Npb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lvbklEKTog
SnVzdCBjYWxsIGRvd24gdG8gbV9wYWdlLgorCiAyMDE0LTAzLTI0ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBEb3dubG9hZCBzdXBwb3J0IGJ5IENGVVJM
RG93bmxvYWRSZWYgdW5kZXIgVVNFKENGTkVUV09SSykuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFn
ZS5jcHAKaW5kZXggNjcxY2I1Yy4uZmJmOTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmNwcApAQCAtNTYxLDUgKzU2MSw1IEBAIHZvaWQgV0tCdW5kbGVQYWdlU3RvcEV4dGVuZGluZ0lu
Y3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24oV0tCdW5kbGVQYWdlUmVmIHBhCiAKIGJvb2wg
V0tCdW5kbGVQYWdlSXNVc2luZ0VwaGVtZXJhbFNlc3Npb24oV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+aXNVc2luZ0VwaGVtZXJhbFNlc3Np
b24oKTsKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCmluZGV4IDkzYjBiYWQuLjllZGVkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTE1MzUsNyArMTUzNSw3IEBAIGJvb2wg
UGx1Z2luVmlldzo6aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICBpZiAoIWZyYW1lKCkt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIHJldHVybiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsK
KyAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQog
CiBib29sIFBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxl
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHAKaW5kZXggNzc3MzdkNC4uMTQxZDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZyYW1lKiBmcmFt
ZSkKIAogTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJh
bWUoKS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gKlNl
c3Npb25UcmFja2VyOjpzZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgp
KTsKIAogICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDU2MzJkMjEuLjU5NjY0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJQbHVnaW5W
aWV3LmgiCiAjaW5jbHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgi
CisjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAu
aCIKICNpbmNsdWRlICJWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldL
U2hhcmVkQVBJQ2FzdC5oIgpAQCAtMjE2OCwyNCArMjE2OSwxOCBAQCB2b2lkIFdlYlBhZ2U6OnNl
dExheWVySG9zdGluZ01vZGUodW5zaWduZWQgbGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgcGx1
Z2luVmlldy0+c2V0TGF5ZXJIb3N0aW5nTW9kZShtX2xheWVySG9zdGluZ01vZGUpOwogfQogCi1T
ZXNzaW9uSUQgV2ViUGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKK2Jvb2wgV2ViUGFnZTo6dXNlc0Vw
aGVtZXJhbFNlc3Npb24oKSBjb25zdAogewotICAgIGlmIChtX3BhZ2UtPmlzU2Vzc2lvbklEU2V0
KCkpCi0gICAgICAgIHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOwotCi0gICAgcmV0dXJuIG1f
cGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPyBTZXNzaW9uSUQ6Omxl
Z2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwot
fQotCi1ib29sIFdlYlBhZ2U6OmlzVXNpbmdFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKTsKKyAgICByZXR1cm4gbV9wYWdlLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldFNlc3Npb25JRChT
ZXNzaW9uSUQgc2Vzc2lvbklEKQogewotICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25J
RCk7CisgICAgQVNTRVJUKHNlc3Npb25JRCAhPSBtX3BhZ2UtPnNlc3Npb25JRCgpKTsKKyAgICBB
U1NFUlQoc2Vzc2lvbklELmlzVmFsaWQoKSk7CiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJh
bCgpKQogICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5lbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKHNlc3Npb25JRCk7CisgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklEKTsK
IH0KIAogdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBkb3dubG9hZElEKQpAQCAtMjQ5MCwxMCArMjQ4NSw4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0dGlu
Z3Muc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OmxvY2FsU3RvcmFnZUVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNl
dFhTU0F1ZGl0b3JFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6eHNzQXVkaXRvckVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldEZyYW1lRmxh
dHRlbmluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjpmcmFtZUZsYXR0ZW5pbmdFbmFibGVkS2V5KCkpKTsKLSAgICBpZiAobV9wYWdlLT5pc1Nlc3Np
b25JRFNldCgpKQotICAgICAgICBzZXR0aW5ncy5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKG1f
cGFnZS0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSk7Ci0gICAgZWxzZQotICAgICAgICBzZXR0
aW5ncy5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpKSk7CisgICAgaWYg
KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6cHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZEtleSgpKSAmJiAhbV9wYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQorICAg
ICAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9u
SUQoKSk7CiAgICAgc2V0dGluZ3Muc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRldmVsb3BlckV4dHJhc0VuYWJsZWRL
ZXkoKSkpOwogICAgIHNldHRpbmdzLnNldEphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWQoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpqYXZhU2NyaXB0RXhwZXJp
bWVudHNFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRUZXh0QXJlYXNBcmVSZXNpemFi
bGUoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp0ZXh0QXJlYXNB
cmVSZXNpemFibGVLZXkoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggMGIxNTUzMS4uZjJhZWIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTMsOCArMTkzLDggQEAgcHVibGljOgogCiAg
ICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7
IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQotICAg
IFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKLSAgICBib29sIGlzVXNpbmdF
cGhlbWVyYWxTZXNzaW9uKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0KKyAgICBib29sIHVzZXNF
cGhlbWVyYWxTZXNzaW9uKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoV2ViQ29yZTo6
U2Vzc2lvbklEKTsKIAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Q4
MzYxNy4uZTE4ZDY4YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE0LTAzLTI1ICBNYXJ0aW4gSG9jayAgPG1ob2Nr
QGFwcGxlLmNvbT4KKworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lv
bnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhbiBBUEkgdGVzdCBmb3IgZXBoZW1lcmFsIHNlc3Npb25zIHNpbWlsYXIgdG8gUHJpdmF0ZUJy
b3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlz
dG9yeUNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisKIDIwMTQtMDMtMjQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtpT1NdIERvd25sb2FkIHN1cHBvcnQgYnkgQ0ZVUkxEb3dubG9hZFJlZiB1bmRlciBVU0Uo
Q0ZORVRXT1JLKS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGJiYjU3MC4uZTFhZTdmMCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNyw2ICsxMDcsNyBAQAogCQk1MkNCNDc0MTE0
NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0b3J5
VVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
Q0I0NzQwMTQ0OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25E
aXJlY3RvcnlVUkwuY3BwICovOyB9OwogCQk1MkU1Q0U0NjE0RDIxRTlEMDAzQjJCRDggLyogUGFy
ZW50RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTJFNUNFNDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAqLzsgfTsKIAkJ
NTJFNUNFNDkxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0ODE0RDIxRUFC
MDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLzsgfTsKKwkJNzVGMzEzNDAxOEMx
NzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUYz
MTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9y
eUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJNzZFMTgyREExNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxT
ZW5kU3VibWl0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQu
Y3BwICovOyB9OwogCQk3NkUxODJERDE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRF
dmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVu
ZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREYxNTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0
dGluZy1mb3JtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1m
b3JtLmh0bWwgKi87IH07CkBAIC00MzMsNiArNDM0LDcgQEAKIAkJNTJDQjQ3NDAxNDQ4RkI5MzAw
ODczOTk1IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MkU1Q0U0NTE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyZW50RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVf
QnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVudEZy
YW1lX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1RjMxMzNGMThD
MTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJh
Y2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vz
c2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lsbFNlbmRTdWJtaXRF
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRDMTU0NzU2OTEw
MEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAvKiBh
dXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImF1
dG8tc3VibWl0dGluZy1mb3JtLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzY2LDYgKzc2OCw3IEBACiAJCQkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRv
d0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovLAogCQkJCUY2RjQ5QzY2MTU1NDVDOEQwMDA3RjM5RCAv
KiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgKi8sCiAJCQkJQzA0NUY5NDQx
Mzg1QzJFOTAwQzBGM0NEIC8qIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAgKi8s
CisJCQkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3Rh
dGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8sCiAJCQkJMUE1RkVGREMxMjcwRTJBMzAwMEUyOTIx
IC8qIEV2YWx1YXRlSmF2YVNjcmlwdC5jcHAgKi8sCiAJCQkJQkNDOEI5NUExMjYxMUY0NzAwREU0
NkE0IC8qIEZhaWxlZExvYWQuY3BwICovLAogCQkJCTFBMDJDODRFMTI1RDRBODQwMEUzRjRCRCAv
KiBGaW5kLmNwcCAqLywKQEAgLTExNTEsNiArMTE1NCw3IEBACiAJCQkJMjk3MjM0QjQxNzNBRDA0
ODAwOTgzNjAxIC8qIEN1c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWUubW0gaW4gU291cmNlcyAq
LywKIAkJCQkzNzkwMjhCNjE0RkFCRDkyMDA3RTZCNDMgLyogQWNjZXB0c0ZpcnN0TW91c2UubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyOTE4NjFGRjE3QkQ0REM3MDBENEU0MUUgLyogU3RvcExvYWRp
bmdGcm9tRGlkRmluaXNoTG9hZGluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTc1RjMxMzQwMThD
MTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZGMUI0NDQxNUNBNDM0RjAwRDFFNEJGIC8qIEF0
b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTVGMTFBMDE1MTY4MzRGMDA5MTU5
MTYgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTAwQ0Q5RjYzMTVC
RTMxMkMwMDJEQTJDRSAvKiBCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNzaW9u
UHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMwMzE5NAotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNzaW9u
UHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K3N0YXRpYyBib29sIHRlc3REb25lOworCitzdGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdh
dGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCit7CisgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4g
bmF2aWdhdGluZyBpbiBQcml2YXRlIEJyb3dzaW5nLgorICAgIEZBSUwoKTsKK30KKworc3RhdGlj
IHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0ZXN0RG9uZSA9
IHRydWU7Cit9CisKK1RFU1QoV2ViS2l0MiwgRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlz
dG9yeUNhbGxiYWNrKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChB
ZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7CisKKyAgICBXS0NvbnRleHRIaXN0b3J5Q2xpZW50
VjAgaGlzdG9yeUNsaWVudDsKKyAgICBtZW1zZXQoJmhpc3RvcnlDbGllbnQsIDAsIHNpemVvZiho
aXN0b3J5Q2xpZW50KSk7CisKKyAgICBoaXN0b3J5Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Cisg
ICAgaGlzdG9yeUNsaWVudC5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhOworCisgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChj
b250ZXh0LmdldCgpLCAmaGlzdG9yeUNsaWVudC5iYXNlKTsKKworICAgIFBsYXRmb3JtV2ViVmll
dyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworCisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgcGFn
ZUxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVvZihw
YWdlTG9hZGVyQ2xpZW50KSk7CisKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9
IDA7CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUgPSBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU7CisKKyAgICBXS1BhZ2VTZXRQ
YWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmcGFnZUxvYWRlckNsaWVudC5iYXNlKTsK
KworICAgIFdLU2Vzc2lvblJlZiBzZXNzaW9uID0gV0tTZXNzaW9uQ3JlYXRlKHRydWUpOworICAg
IFdLUGFnZVNldFNlc3Npb24od2ViVmlldy5wYWdlKCksIHNlc3Npb24pOworCisgICAgV0tSZXRh
aW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgi
cHVzaC1zdGF0ZSIsICJodG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCks
IHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3REb25lKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227965</attachid>
            <date>2014-03-27 12:35:45 -0700</date>
            <delta_ts>2014-03-27 14:02:37 -0700</delta_ts>
            <desc>address comments</desc>
            <filename>unifyprivate.03.diff</filename>
            <type>text/plain</type>
            <size>50822</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MTg1NWY3Li5hZmFhNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRo
ZSBmb2xsb3dpbmcgY29uc2lzdHMgc29sZWx5IG9mIG1lY2hhbmljYWwgY2hhbmdlcyB0byByZXBs
YWNlIHF1ZXJ5aW5nIFdlYkNvcmU6OlNldHRpbmdzOjpwcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
d2l0aCBQYWdlOjp1c2VzRXBoZW1lcmFsU2Vzc2lvbigpLgorCisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VDb250ZXh0OjphbGxvd0RhdGFiYXNlQWNjZXNzKToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5p
bjogUmVtb3ZlIFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkLCBhZGQgUGFnZTo6
bGVnYWN5UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhM
b2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xs
ZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlD
b250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFpblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlV2l0aG91dE1hbmlmZXN0VVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOgor
ICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNpb24pOgorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKTogSW5pdGlhbGl6
ZSB3aXRoIGRlZmF1bHRTZXNzaW9uSUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpsZWdhY3lQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKTogTGVnYWN5IHNldHRpbmcgZm9yIHByaXZhdGUgYnJvd3Np
bmcuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQp
OiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIHNldFNlc3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OnNlc3Npb25JRCk6IFNpbXBsaWZ5IHRvIGp1c3QgcmV0dXJuIG1fc2Vzc2lvbklELgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2Vzc2lvbklEKTogQWxzbyBwZXJmb3JtIHByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBhY3Rpb24uYQorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmNoZWNrU3ViZnJhbWVDb3VudENvbnNpc3RlbmN5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDb25zb2xlOjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2VDb25zb2xlOjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgICogcGFnZS9TZXR0
aW5ncy5jcHA6IFJlbW92ZSBwcml2YXRlQnJvd3NpbmdFbmFibGVkIHNldHRpbmcuCisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOiBQYWdlIHJlZmxlY3RzIHNldHRpbmcgdXNp
bmcgc2Vzc2lvbi4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICogcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFZhbHVl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJlc3VsdCk6CisgICAgICAgICog
c3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6OmlzRGlzYWJs
ZWRCeVByaXZhdGVCcm93c2luZyk6CisKIDIwMTQtMDMtMjcgIEZyw6lkw6lyaWMgV2FuZyAgPGZy
ZWQud2FuZ0BmcmVlLmZyPgogCiAgICAgICAgIE9wZXJhdG9yIHN0cmV0Y2hpbmc6IGV4cG9zZSBh
IG1hdGggZGF0YSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAppbmRleCBjOWE1MzY2Li5iZjczMGM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRl
eHQuY3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgYm9vbCBEYXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0
YWJhc2VBY2Nlc3MoKSBjb25zdAogewogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmlzRG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnQtPnBhZ2Uo
KSB8fCAoZG9jdW1lbnQtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCkgJiYgIVNjaGVtZVJlZ2lzdHJ5OjphbGxvd3NEYXRhYmFzZUFjY2Vzc0luUHJpdmF0ZUJyb3dz
aW5nKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKSkpCisgICAgICAgIGlm
ICghZG9jdW1lbnQtPnBhZ2UoKSB8fCAoZG9jdW1lbnQtPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNl
c3Npb24oKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRl
QnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkpKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgppbmRleCBiMTgwNDFjLi4zYTU3YjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpA
QCAtMTA1OCw2ICsxMDU4LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UyNGZpbmRTdHJpbmdNYXRjaGlu
Z1Jhbmdlc0VSS04zV1RGNlN0cmluZ0VoaVBOUzFfNlZlY3RvcklOUzFfNlIKIF9fWk43V2ViQ29y
ZTRQYWdlMjRyZXN1bWVTY3JpcHRlZEFuaW1hdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UyNHNj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dEV2CiBfX1pON1dlYkNvcmU0UGFnZTI1c3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uc0V2CitfX1pON1dlYkNvcmU0UGFnZTI3ZW5hYmxlTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nRWIKIF9fWk43V2ViQ29yZTRQYWdlMjdpbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3NF
dgogX19aTjdXZWJDb3JlNFBhZ2UzMnNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkRWIK
IF9fWk43V2ViQ29yZTRQYWdlMzNzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnNBc1RleHRFdgpA
QCAtMTI2OSw3ICsxMjcwLDYgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRTdG9yYWdlQmxv
Y2tpbmdQb2xpY3lFTlNfMTRTZWN1cml0eU9yaWdpbjIxU3RvcmFnZUJsb2MKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczI0c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczI0c2V0VXNlc092ZXJsYXlTY3JvbGxiYXJzRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI1
c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZUVpCi1fX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uRVJLTlNfM1VSTEUKIF9fWk43V2ViQ29yZThTZXR0aW5nczI2ZGVmYXVs
dE1pbkRPTVRpbWVySW50ZXJ2YWxFdgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZzZXRTaW1wbGVM
aW5lTGF5b3V0RW5hYmxlZEViCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBjNmIwYjFjLi42ZTc0NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5UG9s
aWN5LmgiCisjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgpAQCAtMTI2MSw4
ICsxMjYyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29uc3QgVVJM
JiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudFQKICAgICBpZiAobV9zZW5kUHJvZ3Jl
c3NFdmVudHMpIAogICAgICAgICBzdGFydFByb2dyZXNzRXZlbnRUaW1lcigpOwogCi0gICAgU2V0
dGluZ3MqIHNldHRpbmdzID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpOwotICAgIGJvb2wgcHJpdmF0
ZU1vZGUgPSAhc2V0dGluZ3MgfHwgc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsK
KyAgICBib29sIHByaXZhdGVNb2RlID0gZG9jdW1lbnQoKS5wYWdlKCkgJiYgZG9jdW1lbnQoKS5w
YWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgbV9wbGF5ZXItPnNldFByaXZhdGVC
cm93c2luZ01vZGUocHJpdmF0ZU1vZGUpOwogCiAgICAgLy8gUmVzZXQgZGlzcGxheSBtb2RlIHRv
IGZvcmNlIGEgcmVjYWxjdWxhdGlvbiBvZiB3aGF0IHRvIHNob3cgYmVjYXVzZSB3ZSBhcmUgcmVz
ZXR0aW5nIHRoZSBwbGF5ZXIuCkBAIC01MjY2LDggKzUyNjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkKICAgICBpZiAoIW1fcGxheWVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgp
LnNldHRpbmdzKCk7Ci0gICAgYm9vbCBwcml2YXRlTW9kZSA9ICFzZXR0aW5ncyB8fCBzZXR0aW5n
cy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSBkb2N1
bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24o
KTsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpwcml2YXRlQnJvd3NpbmdTdGF0
ZURpZENoYW5nZSglcykiLCBib29sU3RyaW5nKHByaXZhdGVNb2RlKSk7CiAgICAgbV9wbGF5ZXIt
PnNldFByaXZhdGVCcm93c2luZ01vZGUocHJpdmF0ZU1vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggNmM4YzllOS4uMzc0MDc4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBAIC0zNDgsNyAr
MzQ4LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2FkKEhp
c3RvcnlVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiAKICAgICBGcmFtZUxvYWRlciYgZnJhbWVMb2Fk
ZXIgPSBtX2ZyYW1lLmxvYWRlcigpOwogCi0gICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUu
c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBuZWVkUHJpdmFj
eSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogICAgIGNvbnN0IFVS
TCYgaGlzdG9yeVVSTCA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3Rv
cnkoKTsKIAogICAgIGlmICghZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRS
ZWRpcmVjdCgpKSB7CkBAIC0zODUsNyArMzg1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
dXBkYXRlRm9yUmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKICAgICAgICAgTE9H
KEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgcmVkaXJlY3Qg
bG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dGl0
bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgIAotICAgIGJvb2wgbmVl
ZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwor
ICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKTsKICAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPmlzQ2xpZW50UmVkaXJlY3QoKSkgewpAQCAtNDMzLDcgKzQzMyw3
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCkKICAg
ICAgICAgbV9jdXJyZW50SXRlbS0+Y2xlYXJTY3JvbGxQb2ludCgpOwogICAgIH0KIAotICAgIGJv
b2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOworICAgIGJvb2wgbmVlZFByaXZhY3kgPSBtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJh
bFNlc3Npb24oKTsKICAgICBjb25zdCBVUkwmIGhpc3RvcnlVUkwgPSBtX2ZyYW1lLmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCktPnVybEZvckhpc3RvcnkoKTsKIAogICAgIGlmICghaGlzdG9yeVVS
TC5pc0VtcHR5KCkgJiYgIW5lZWRQcml2YWN5KSB7CkBAIC01MjMsNyArNTIzLDcgQEAgdm9pZCBI
aXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiAgICAg
aWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAobV9mcmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkK
KyAgICBpZiAobV9mcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKQEAgLTg0Nyw3ICs4
NDcsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpwdXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LAogCiAgICAgcGFnZS0+YmFja0ZvcndhcmQo
KS5hZGRJdGVtKHRvcEl0ZW0ucmVsZWFzZSgpKTsKIAotICAgIGlmIChtX2ZyYW1lLnNldHRpbmdz
KCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+dXNl
c0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYWRkVmlzaXRlZExp
bmsoKnBhZ2UsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybFN0cmluZykpOwpAQCAtODY2LDcgKzg2
Niw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlcGxhY2VTdGF0ZShQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplCiAgICAgbV9jdXJyZW50SXRlbS0+c2V0Rm9y
bURhdGEoMCk7CiAgICAgbV9jdXJyZW50SXRlbS0+c2V0Rm9ybUNvbnRlbnRUeXBlKFN0cmluZygp
KTsKIAotICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
KQorICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fZnJhbWUucGFnZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAK
aW5kZXggNzlmYmU0Zi4uYzhjMDM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRm9yTWFp
blJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZQogICAgIGlmICh1cmwuaGFzRnJhZ21lbnRJZGVu
dGlmaWVyKCkpCiAgICAgICAgIHVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAotICAg
IGlmIChkb2N1bWVudExvYWRlci0+ZnJhbWUoKSAmJiAoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkt
PnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFkb2N1bWVudExvYWRlci0+
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRp
b25DYWNoZShkb2N1bWVudExvYWRlci0+ZnJhbWUoKS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCkpKSkKKyAgICBpZiAoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkgJiYg
KGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkg
fHwgIWRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50cmVl
KCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3VwID0gY2FjaGVTdG9yYWdl
KCkuY2FjaGVHcm91cEZvclVSTCh1cmwpKSB7CkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBw
YXNzZWRNYW5pZmVzdFUKICAgICB9CiAKICAgICAvLyBEb24ndCBhY2Nlc3MgYW55dGhpbmcgb24g
ZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYgKGZyYW1lLT5zZXR0
aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50
b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS0+cGFn
ZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgp
LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRh
c2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNIRUNLSU5HX0VWRU5ULCBkb2N1bWVudExvYWRlcik7
CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkVSUk9SX0VW
RU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RV
UkwoRnJhbWUqIGZyYW1lKQogICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0aW9u
Q2FjaGVIb3N0KCktPmFwcGxpY2F0aW9uQ2FjaGUoKSk7CiAKICAgICAvLyBEb24ndCBhY2Nlc3Mg
YW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAgaWYg
KGZyYW1lLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB8fCAhZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJh
bWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlm
IChmcmFtZS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+
dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIHBv
c3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNIRUNLSU5HX0VWRU5ULCBkb2N1
bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhv
c3Q6OkVSUk9SX0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTQz
NCw3ICs0MzQsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBkYXRlKEZyYW1lKiBm
cmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbiB1cAogICAgIH0KIAogICAgIC8vIERv
bid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxl
ZC4KLSAgICBpZiAoZnJhbWUtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8
ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRp
b25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkp
KSB7CisgICAgaWYgKGZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNh
Y2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsK
ICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVycy5pc0VtcHR5KCkp
OwogICAgICAgICBBU1NFUlQobV9wZW5kaW5nRW50cmllcy5pc0VtcHR5KCkpOwogICAgICAgICBB
U1NFUlQoIW1fY2FjaGVCZWluZ1VwZGF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKaW5kZXggOWM2OWJlZi4u
N2ZlNTYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6YWJvcnQoKQogCiBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0Fw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkKIHsKLSAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlci0+
ZnJhbWUoKSAmJiBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5zZXR0aW5ncygpLm9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpICYmICFtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgp
LT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gbV9kb2N1
bWVudExvYWRlci0+ZnJhbWUoKSAmJiBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5zZXR0aW5n
cygpLm9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpICYmICFtX2RvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiB9CiAKIGJvb2wg
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25Db250cm9sbGVyLmNwcAppbmRleCA5NGFkYWU3Li5lNGFkZWFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCkBAIC0yMDQsNyAr
MjA0LDcgQEAgdm9pZCBJY29uQ29udHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKElj
b25Mb2FkRGVjaXNpb24gaWNvbkxvYWREZWNpc2lvbikKICAgICBBU1NFUlQoaWNvbkxvYWREZWNp
c2lvbiAhPSBJY29uTG9hZFVua25vd24pOwogCiAgICAgLy8gIEZJWE1FICg8cmRhcjovL3Byb2Js
ZW0vOTE2ODYwNT4pIC0gV2Ugc2hvdWxkIHN1cHBvcnQgaW4tbWVtb3J5LW9ubHkgcHJpdmF0ZSBi
cm93c2luZyBpY29ucyBpbiBhc3luY2hyb25vdXMgaWNvbiBkYXRhYmFzZSBtb2RlLgotICAgIGlm
IChpY29uRGF0YWJhc2UoKS5zdXBwb3J0c0FzeW5jaHJvbm91c01vZGUoKSAmJiBtX2ZyYW1lLnBh
Z2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGljb25E
YXRhYmFzZSgpLnN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpICYmIG1fZnJhbWUucGFnZSgpLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaWNvbkxv
YWREZWNpc2lvbiA9PSBJY29uTG9hZE5vKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBmODNjYjE0
Li42MmU5ZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBQYWdlOjpQ
YWdlKFBhZ2VDbGllbnRzJiBwYWdlQ2xpZW50cykKICAgICAsIG1fbGFzdFNwYXRpYWxOYXZpZ2F0
aW9uQ2FuZGlkYXRlc0NvdW50KDApIC8vIE5PVEU6IE9ubHkgY2FsbGVkIGZyb20gSW50ZXJuYWxz
IGZvciBTcGF0aWFsIE5hdmlnYXRpb24gdGVzdGluZy4KICAgICAsIG1fZnJhbWVzSGFuZGxpbmdC
ZWZvcmVVbmxvYWRFdmVudCgwKQogICAgICwgbV92aXNpdGVkTGlua1N0b3JlKHN0ZDo6bW92ZShw
YWdlQ2xpZW50cy52aXNpdGVkTGlua1N0b3JlKSkKLSAgICAsIG1fc2Vzc2lvbklEKFNlc3Npb25J
RDo6ZW1wdHlTZXNzaW9uSUQoKSkKKyAgICAsIG1fc2Vzc2lvbklEKFNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKQogewogICAgIEFTU0VSVChtX2VkaXRvckNsaWVudCk7CiAKQEAgLTEwODAs
MTkgKzEwODAsMTIgQEAgdm9pZCBQYWdlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKQog
ICAgICAgICB2aWV3c1tpXS0+c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7CiB9CiAKLXZv
aWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3ZvaWQgUGFnZTo6ZW5hYmxl
TGVnYWN5UHJpdmF0ZUJyb3dzaW5nKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAg
ICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCk7CisgICAgLy8gRG9uJ3QgYWxsb3cgY2hhbmdpbmcgdGhlIGxlZ2FjeSBwcml2
YXRlIGJyb3dzaW5nIHN0YXRlIGlmIHdlIGhhdmUgc2V0IGEgc2Vzc2lvbiBJRC4KKyAgICBBU1NF
UlQobV9zZXNzaW9uSUQgPT0gU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkgfHwgbV9zZXNz
aW9uSUQgPT0gU2Vzc2lvbklEOjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkpOwogCi0gICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wcml2YXRlQnJv
d3NpbmdTdGF0ZURpZENoYW5nZSgpOwotCi0gICAgLy8gQ29sbGVjdCB0aGUgUGx1Z2luVmlld3Mg
aW4gdG8gYSB2ZWN0b3IgdG8gZW5zdXJlIHRoYXQgYWN0aW9uIHRoZSBwbHVnLWluIHRha2VzCi0g
ICAgLy8gZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgZG9lcyBub3QgYWZm
ZWN0IHRoZWlyIGxpZmV0aW1lLgotICAgIGF1dG8gdmlld3MgPSBwbHVnaW5WaWV3cygpOwotCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZpZXdzLnNpemUoKTsgKytpKQotICAgICAgICB2
aWV3c1tpXS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpOworICAgIHNldFNlc3Npb25JRChwcml2YXRlQnJvd3NpbmdFbmFibGVkID8gU2Vzc2lvbklE
OjpsZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0xNTE0LDE5ICsxNTA3LDI5IEBAIFZp
c2l0ZWRMaW5rU3RvcmUmIFBhZ2U6OnZpc2l0ZWRMaW5rU3RvcmUoKQogCiBTZXNzaW9uSUQgUGFn
ZTo6c2Vzc2lvbklEKCkgY29uc3QKIHsKLSAgICBpZiAobV9zZXNzaW9uSUQuaXNWYWxpZCgpKQot
ICAgICAgICByZXR1cm4gbV9zZXNzaW9uSUQ7Ci0KLSAgICBpZiAoc2V0dGluZ3MoKS5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZh
dGVTZXNzaW9uSUQoKTsKLQotICAgIHJldHVybiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KTsKKyAgICByZXR1cm4gbV9zZXNzaW9uSUQ7CiB9CiAKIHZvaWQgUGFnZTo6c2V0U2Vzc2lvbklE
KFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKHNlc3Npb25JRC5pc1ZhbGlkKCkp
OworCisgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgPSAoc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkgIT0gbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CisKICAgICBtX3Nlc3Np
b25JRCA9IHNlc3Npb25JRDsKKworICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
KQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAg
ICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhh
dCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKKyAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCisKKyAgICBm
b3IgKGF1dG8mIHZpZXcgOiBwbHVnaW5WaWV3cygpKQorICAgICAgICB2aWV3LT5wcml2YXRlQnJv
d3NpbmdTdGF0ZUNoYW5nZWQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOworCiB9CiAKIFBhZ2U6
OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IGZlYzAwMmMuLjM5
MDJhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zMTMsNyArMzEzLDYgQEAgcHVibGljOgogCiAgICAg
dm9pZCBkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQgc3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkKCk7Ci0gICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQo
KTsKIAogICAgIHZvaWQgc2V0RGVidWdnZXIoSlNDOjpEZWJ1Z2dlciopOwogICAgIEpTQzo6RGVi
dWdnZXIqIGRlYnVnZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlcjsgfQpAQCAtNDEwLDcg
KzQwOSw4IEBAIHB1YmxpYzoKIAogICAgIFNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKICAg
ICB2b2lkIHNldFNlc3Npb25JRChTZXNzaW9uSUQpOwotICAgIGJvb2wgaXNTZXNzaW9uSURTZXQo
KSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRC5pc1ZhbGlkKCk7IH0KKyAgICB2b2lkIGVuYWJs
ZUxlZ2FjeVByaXZhdGVCcm93c2luZyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOworICAg
IGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nlc3Npb25JRC5p
c0VwaGVtZXJhbCgpOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0R3JvdXAoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKaW5kZXggMzQ2YjAxMy4uZWE0NWUwYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uc29sZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFBhZ2VDb25z
b2xlOjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWws
IGNvbnN0IFN0cgogICAgIGlmIChzb3VyY2UgPT0gTWVzc2FnZVNvdXJjZTo6Q1NTKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9wYWdlLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpKQorICAgIGlmIChtX3BhZ2UudXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLmFkZE1lc3NhZ2VUb0NvbnNv
bGUoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB1cmwp
OwpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgUGFnZUNvbnNvbGU6Om1lc3NhZ2VXaXRoVHlwZUFu
ZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwKICAgICBib29sIGdv
dE1lc3NhZ2UgPSBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoJm1fcGFn
ZSwgTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGV4ZWMs
IGFyZ3VtZW50cyk7CiAKLSAgICBpZiAobV9wYWdlLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpKQorICAgIGlmIChtX3BhZ2UudXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGdvdE1lc3NhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKaW5kZXggMzJiNWE3Zi4uZTZkMmVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAg
LTE3MSw3ICsxNzEsNiBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1f
aXNKYXZhRW5hYmxlZChmYWxzZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMo
dHJ1ZSkKICAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQotICAgICwgbV9w
cml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9hcmVJbWFnZXNFbmFibGVkKHRy
dWUpCiAgICAgLCBtX2FyZVBsdWdpbnNFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc1NjcmlwdEVu
YWJsZWQoZmFsc2UpCkBAIC00MjcsMTUgKzQyNiw2IEBAIHZvaWQgU2V0dGluZ3M6OnNldFBsdWdp
bnNFbmFibGVkKGJvb2wgYXJlUGx1Z2luc0VuYWJsZWQpCiAgICAgUGFnZTo6cmVmcmVzaFBsdWdp
bnMoZmFsc2UpOwogfQogCi12b2lkIFNldHRpbmdzOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLXsKLSAgICBpZiAobV9wcml2YXRlQnJvd3Np
bmdFbmFibGVkID09IHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7Ci0g
ICAgbV9wYWdlLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKLX0KLQogdm9pZCBTZXR0
aW5nczo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihjb25zdCBVUkwmIHVzZXJTdHlsZVNoZWV0
TG9jYXRpb24pCiB7CiAgICAgaWYgKG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9PSB1c2VyU3R5
bGVTaGVldExvY2F0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDUxNmYwZGMuLmQ0NzM4
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTE0Niw3ICsxNDYsNiBAQCBwdWJsaWM6CiAg
ICAgLy8gIC0gSFRUUCBDb29raWVzCiAgICAgLy8gIC0gUGx1Zy1pbnMgKHRoYXQgc3VwcG9ydCBO
UE5WcHJpdmF0ZU1vZGVCb29sKQogICAgIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChi
b29sKTsKLSAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7IH0KIAogICAgIHZvaWQgc2V0RE5TUHJlZmV0Y2hpbmdF
bmFibGVkKGJvb2wpOwogICAgIGJvb2wgZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQ7IH0KQEAgLTMwMSw3ICszMDAsNiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9pc0phdmFFbmFibGVkIDogMTsKICAgICBib29sIG1faXNKYXZhRW5h
YmxlZEZvckxvY2FsRmlsZXMgOiAxOwogICAgIGJvb2wgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkgOiAxOwotICAgIGJvb2wgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkIDogMTsKICAgICBib29s
IG1fYXJlSW1hZ2VzRW5hYmxlZCA6IDE7CiAgICAgYm9vbCBtX2FyZVBsdWdpbnNFbmFibGVkIDog
MTsKICAgICBib29sIG1faXNTY3JpcHRFbmFibGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IDI2ODA2ZjYuLjk0OGMzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcApAQCAtMTM1NCw3ICsxMzU0LDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3
OjpnZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCiAgICAgICAgIFBh
Z2UqIHBhZ2UgPSBtX3BhcmVudEZyYW1lLT5wYWdlKCk7CiAgICAgICAgIGlmICghcGFnZSkKICAg
ICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwotICAgICAgICAqKChOUEJvb2wq
KXZhbHVlKSA9IHBhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAg
ICAgICAqKChOUEJvb2wqKXZhbHVlKSA9IHBhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAg
ICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IGMxYjIzN2MuLjQ1NDFiOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApA
QCAtODUsNyArODUsNyBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjphZGRTZWFyY2hSZXN1bHQo
KQogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChm
cmFtZSgpLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFt
ZSgpLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaW50IHNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVjZW50U2VhcmNoZXMuc2l6ZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IGM0ODRiOTYuLjgxYmFlNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIGJvb2wgU3RvcmFn
ZTo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXksIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAog
CiBib29sIFN0b3JhZ2U6OmlzRGlzYWJsZWRCeVByaXZhdGVCcm93c2luZygpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQorICAgIGlmICghbV9mcmFtZS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9zdG9yYWdlQXJlYS0+c3RvcmFnZVR5
cGUoKSA9PSBMb2NhbFN0b3JhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBhNWE1ZTY5Li4zODJl
NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTQtMDMtMjcgIE1hcnRp
biBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Np
bmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25l
dyk6IENoYW5nZSBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRv
IFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisgICAgICAgIChld2tfdmlld19zZXR0
aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KTogQ2hhbmdlIFdlYkNvcmU6OlNldHRpbmdzOjpzZXRQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKCkgdG8gUGFnZTo6ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dz
aW5nKCkuCisKIDIwMTQtMDMtMjMgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIE1vdmUgYWxsIEVGTCB0eXBlZGVmcyBpbnRvIEVmbFR5cGVkZWZzLmguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA1NzY1NDU4Li4zOWQ1MzA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJSZXNv
dXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2Vzc2lvbklELmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRl
ICJUaWxlZEJhY2tpbmdTdG9yZS5oIgpAQCAtODAwLDcgKzgwMSw3IEBAIHN0YXRpYyBFd2tfVmll
d19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBz
bWFydERhdGEpCiAjZW5kaWYKICAgICBwcml2LT5zZXR0aW5ncy5zY3JpcHRzQ2FuQWNjZXNzQ2xp
cGJvYXJkID0gcGFnZVNldHRpbmdzLmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoKSAmJiBw
YWdlU2V0dGluZ3MuRE9NUGFzdGVBbGxvd2VkKCk7CiAgICAgcHJpdi0+c2V0dGluZ3MucmVzaXph
YmxlVGV4dGFyZWFzID0gcGFnZVNldHRpbmdzLnRleHRBcmVhc0FyZVJlc2l6YWJsZSgpOwotICAg
IHByaXYtPnNldHRpbmdzLnByaXZhdGVCcm93c2luZyA9IHBhZ2VTZXR0aW5ncy5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCk7CisgICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nID0gcHJp
di0+cGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKICAgICBwcml2LT5zZXR0aW5ncy5jYXJl
dEJyb3dzaW5nID0gcGFnZVNldHRpbmdzLmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAgICAgcHJp
di0+c2V0dGluZ3Muc3BhdGlhbE5hdmlnYXRpb24gPSBwYWdlU2V0dGluZ3Muc3BhdGlhbE5hdmln
YXRpb25FbmFibGVkKCk7CiAgICAgcHJpdi0+c2V0dGluZ3MubG9jYWxTdG9yYWdlID0gcGFnZVNl
dHRpbmdzLmxvY2FsU3RvcmFnZUVuYWJsZWQoKTsKQEAgLTI0MjMsNyArMjQyNCw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld19zZXR0aW5nX3ByaXZhdGVfYnJvd3Npbmdfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBFaW5hX0Jvb2wKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CiAgICAgZW5hYmxlID0gISFlbmFibGU7CiAgICAgaWYgKHByaXYt
PnNldHRpbmdzLnByaXZhdGVCcm93c2luZyAhPSBlbmFibGUpIHsKLSAgICAgICAgcHJpdi0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZSk7CisgICAgICAg
IHByaXYtPnBhZ2UtPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZyhlbmFibGUpOwogICAgICAg
ICBwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBlbmFibGU7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDkxOGJkNDIuLmI5OTFmNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMy0yNyAgTWFydGluIEhvY2sgIDxtaG9j
a0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Np
b25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMw
MDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRvIHJlcGxh
Y2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB3
aXRoIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisKIDIwMTQtMDMtMjUgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIFJlbW92ZSB0aGUgYXV0b3Rvb2xzIGJ1aWxkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAKaW5kZXggOWU3ZWRjNC4uYmI5ODIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtMjU4LDcg
KzI1OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkRvY3VtCiAKIAogICAgIENyZWRlbnRpYWxTdG9y
YWdlTW9kZSBjcmVkZW50aWFsU3RvcmFnZU1vZGU7Ci0gICAgaWYgKGNvcmUodmlldyktPnNldHRp
bmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChjb3JlKHZpZXcpLT51c2Vz
RXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICBjcmVkZW50aWFsU3RvcmFnZU1vZGUgPSBEaXNh
bGxvd1BlcnNpc3RlbnRTdG9yYWdlOwogICAgIGVsc2UKICAgICAgICAgY3JlZGVudGlhbFN0b3Jh
Z2VNb2RlID0gQWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxNGRk
ZjhjLi5mNzE0NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDMt
MjcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHByaXZh
dGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW06IENoYW5nZSBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRv
IFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tOiBEaXR0by4KKyAgICAgICAg
KFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXcubW06IENoYW5nZSBXZWJDb3JlOjpTZXR0aW5nczo6c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZygpLgor
ICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTQtMDMtMjcg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hPbmVNZXNzYWdlKCkgY2FuIGJlIHJlLWVudGVyZWQgd2hpbGUgaGFuZGxpbmcg
Q21kLWtleSBtZW51CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGY3NWYxODUuLjA0MGE2ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCkBAIC0xMTE0LDcgKzExMTQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojp1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKQogICAgIEhpc3RvcnlJdGVtKiBo
aXN0b3J5SXRlbSA9IDA7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGNvcmUobV93ZWJGcmFtZS5n
ZXQoKSktPnBhZ2UoKSkgewotICAgICAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpKQorICAgICAgICBpZiAoIXBhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1l
cmFsKCkpCiAgICAgICAgICAgICBoaXN0b3J5SXRlbSA9IHBhZ2UtPmJhY2tGb3J3YXJkKCkuY3Vy
cmVudEl0ZW0oKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCmluZGV4IDBkYjRm
ODAuLjcxYWNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQpAQCAtMTEzLDcgKzExMyw3
IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3Rv
cmFnZVNlc3Npb24oKSBjb25zdAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAg
ICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSkKKyAgICBpZiAoZnJhbWUoKSAmJiBmcmFtZSgpLT5wYWdlKCktPnNlc3Npb25JRCgpLmlz
RXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiAqcHJpdmF0ZVNlc3Npb24oKTsKIAogICAgIHJl
dHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGQyYWZjYzYuLjdiMWNiODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTIyNDcsNyArMjI0Nyw3IEBAIHN0YXRp
YyBib29sIG5lZWRzU2VsZlJldGFpbldoaWxlTG9hZGluZ1F1aXJrKCkKICNpZiAhUExBVEZPUk0o
SU9TKQogICAgIHNldHRpbmdzLnNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKFtw
cmVmZXJlbmNlcyBleHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZF0pOwogI2VuZGlmCi0g
ICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZF0pOworICAgIF9wcml2YXRlLT5wYWdlLT5lbmFibGVMZWdhY3lQcml2
YXRlQnJvd3NpbmcoW3ByZWZlcmVuY2VzIHByaXZhdGVCcm93c2luZ0VuYWJsZWRdKTsKICAgICBz
ZXR0aW5ncy5zZXRTYW5zU2VyaWZGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzYW5zU2VyaWZGb250
RmFtaWx5XSk7CiAgICAgc2V0dGluZ3Muc2V0U2VyaWZGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBz
ZXJpZkZvbnRGYW1pbHldKTsKICAgICBzZXR0aW5ncy5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoW3By
ZWZlcmVuY2VzIHN0YW5kYXJkRm9udEZhbWlseV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGE3MmY5
ZjQuLjljY2YyOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMy0y
NyAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0
ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6IENoYW5nZSBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRv
IFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkuCisgICAgICAgIChXZWJGcmFtZUxvYWRl
ckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDogRGl0dG8uCisgICAgICAg
IChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICog
V2ViVmlldy5jcHA6IENoYW5nZSBXZWJDb3JlOjpTZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZygpLgorICAgICAg
ICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxNC0wMy0yMiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cmluZzo6ZGVw
cmVjYXRlZENoYXJhY3RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA4OGRjMzUxLi4yODQwNjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQYWdlKCkKICAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSB3ZWJWaWV3LT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFwYWdlLT51c2VzRXBoZW1lcmFsU2Vz
c2lvbigpKQogICAgICAgICAgICAgaGlzdG9yeUl0ZW0gPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmN1
cnJlbnRJdGVtKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IGJm
NTllZTcuLjcxMzM5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC0xMTQsNyAr
MTE0LDcgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpKQorICAgIGlmIChmcmFtZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVt
ZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwogCiAgICAg
cmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCmluZGV4IDcwNTEzY2QyLi41YTg0NzY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcApAQCAtNDc4Nyw3ICs0Nzg3LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJl
bmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgIGVsc2UKICAg
ICAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKTsKICNlbmRpZgotICAgIHNldHRpbmdzLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQo
ISFlbmFibGVkKTsKKyAgICBtX3BhZ2UtPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZyghIWVu
YWJsZWQpOwogCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+c2Fuc1NlcmlmRm9udEZhbWlseSgmc3Ry
KTsKICAgICBpZiAoRkFJTEVEKGhyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMWY5NDUyLi41NDcwMzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBIb2NrICA8bWhv
Y2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNz
aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOiBDaGFuZ2Ug
V2ViUGFnZTo6aXNVc2luZ0VwaGVtZXJhbFNlc3Npb24oKSB0byBXZWJQYWdlOjp1c2VzRXBoZW1l
cmFsU2Vzc2lvbigpLgorICAgICAgICAoV0tCdW5kbGVQYWdlSXNVc2luZ0VwaGVtZXJhbFNlc3Np
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwOiBDaGFuZ2UgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdl
OjplbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoKS4KKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDogQ2hhbmdlIFNldHRpbmdzOjpwcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkgdG8gUGFnZTo6dXNlc0VwaGVtZXJhbFNlc3Npb24oKS4KKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5j
cHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
dG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1c2VzRXBoZW1lcmFsU2Vzc2lvbik6IFJlbmFt
ZWQgZnJvbSBpc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2V0U2Vzc2lvbklEKTogRW5zdXJlIHNlc3Npb24gYmVmb3JlIHNldHRpbmcuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogU2V0IHNlc3Npb24gdG8gbGVn
YWN5IHByaXZhdGUgc2Vzc2lvbiBpZiBuZWVkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnNlc3Npb25JRCk6IE1vdmVkIHRvIGhlYWRlci4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
aXNVc2luZ0VwaGVtZXJhbFNlc3Npb24pOiBSZW5hbWVkIHRvIHVzZXNFcGhlbWVyYWxTZXNzaW9u
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNlc3Npb25JRCk6IEp1c3QgY2FsbCBkb3duIHRvIG1fcGFnZS4KKwogMjAx
NC0wMy0yNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbmFtZSBXS0ZyYW1lSGFuZGxlIHRvIF9XS0ZyYW1lSGFuZGxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKaW5kZXggNjcxY2I1Yy4uZmJmOTJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcApAQCAtNTYxLDUgKzU2MSw1IEBAIHZvaWQgV0tCdW5kbGVQYWdlU3RvcEV4dGVu
ZGluZ0luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb24oV0tCdW5kbGVQYWdlUmVmIHBhCiAK
IGJvb2wgV0tCdW5kbGVQYWdlSXNVc2luZ0VwaGVtZXJhbFNlc3Npb24oV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+aXNVc2luZ0VwaGVtZXJh
bFNlc3Npb24oKTsKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT51c2VzRXBoZW1lcmFsU2Vz
c2lvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCAxNTNiNjcyLi4zNGIzY2EwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VH
cm91cCwgYm9vCiAjZW5kaWYKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBQYWdl
R3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnBhZ2VzKCk7CiAgICAg
Zm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXRlciA9IHBhZ2VzLmJlZ2luKCk7IGl0ZXIg
IT0gcGFnZXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgKCppdGVyKS0+c2V0dGluZ3MoKS5zZXRQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOworICAgICAgICAoKml0ZXIpLT5lbmFibGVM
ZWdhY3lQcml2YXRlQnJvd3NpbmcoZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIGJv
b2wgZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5WaWV3LmNwcAppbmRleCBkNzVhYzEzLi5jN2EwZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xNTM0LDcgKzE1MzQsNyBA
QCBib29sIFBsdWdpblZpZXc6OmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpCiAgICAgaWYgKCFm
cmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NQbHVnaW5TdG9y
YWdlKGZyYW1lKCktPmRvY3VtZW50KCktPnRvcE9yaWdpbigpKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCk7CisgICAgcmV0dXJuIGZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24o
KTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3Ojphc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bkVuYWJsZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuY3BwCmluZGV4IDc3NzM3ZDQuLjE0MWQxNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJGcmFt
ZSogZnJhbWUpCiAKIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIGlmIChmcmFtZSgpICYmIGZyYW1l
KCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFtZSgp
ICYmIGZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAgcmV0
dXJuICpTZXNzaW9uVHJhY2tlcjo6c2Vzc2lvbihTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNz
aW9uSUQoKSk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA1ZDQxMzMyLi5hMmE1MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAi
UGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlByaW50SW5mby5oIgogI2luY2x1ZGUgIlNlc3Npb25T
dGF0ZS5oIgorI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxl
Qml0bWFwLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKQEAgLTIxNzUsMjQgKzIxNzYsMTEgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRMYXllckhvc3RpbmdNb2RlKHVuc2lnbmVkIGxheWVySG9zdGluZ01vZGUpCiAgICAg
ICAgIHBsdWdpblZpZXctPnNldExheWVySG9zdGluZ01vZGUobV9sYXllckhvc3RpbmdNb2RlKTsK
IH0KIAotU2Vzc2lvbklEIFdlYlBhZ2U6OnNlc3Npb25JRCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1f
cGFnZS0+aXNTZXNzaW9uSURTZXQoKSkKLSAgICAgICAgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklE
KCk7Ci0KLSAgICByZXR1cm4gbV9wYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSA/IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpIDogU2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCk7Ci19Ci0KLWJvb2wgV2ViUGFnZTo6aXNVc2luZ0VwaGVtZXJhbFNl
c3Npb24oKSBjb25zdAotewotICAgIHJldHVybiBzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpOwot
fQotCiB2b2lkIFdlYlBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2Vzc2lvbklEKQogewot
ICAgIG1fcGFnZS0+c2V0U2Vzc2lvbklEKHNlc3Npb25JRCk7CiAgICAgaWYgKHNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKQogICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5lbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vz
c2lvbklEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9u
LCB1aW50NjRfdCBkb3dubG9hZElEKQpAQCAtMjQ5NywxMCArMjQ4NSwxMCBAQCB2b2lkIFdlYlBh
Z2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQog
ICAgIHNldHRpbmdzLnNldExvY2FsU3RvcmFnZUVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpsb2NhbFN0b3JhZ2VFbmFibGVkS2V5KCkpKTsKICAgICBz
ZXR0aW5ncy5zZXRYU1NBdWRpdG9yRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6Onhzc0F1ZGl0b3JFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5z
ZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6ZnJhbWVGbGF0dGVuaW5nRW5hYmxlZEtleSgpKSk7Ci0gICAgaWYgKG1fcGFn
ZS0+aXNTZXNzaW9uSURTZXQoKSkKLSAgICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZChtX3BhZ2UtPnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpOwotICAgIGVsc2UKLSAg
ICAgICAgc2V0dGluZ3Muc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnByaXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkp
OworICAgIGlmIChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBy
aXZhdGVCcm93c2luZ0VuYWJsZWRLZXkoKSkgJiYgIXVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCisg
ICAgICAgIHNldFNlc3Npb25JRChTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7
CisgICAgZWxzZSBpZiAoIXN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpKSAmJiBzZXNzaW9uSUQoKSA9PSBTZXNzaW9u
SUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSkKKyAgICAgICAgc2V0U2Vzc2lvbklEKFNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBzZXR0aW5ncy5zZXREZXZlbG9wZXJFeHRy
YXNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0SmF2YVNjcmlwdEV4
cGVyaW1lbnRzRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OmphdmFTY3JpcHRFeHBlcmltZW50c0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNl
dFRleHRBcmVhc0FyZVJlc2l6YWJsZShzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OnRleHRBcmVhc0FyZVJlc2l6YWJsZUtleSgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiNmY4ZDlkLi5mOWI4ZTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE5Myw4ICsx
OTMsOSBAQCBwdWJsaWM6CiAKICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZS5nZXQoKTsgfQogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUlEOyB9Ci0gICAgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
OwotICAgIGJvb2wgaXNVc2luZ0VwaGVtZXJhbFNlc3Npb24oKSBjb25zdDsKKyAgICBXZWJDb3Jl
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQo
KTsgfQorICAgIGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7IH0KKwogICAgIHZvaWQgc2V0U2Vzc2lvbklEKFdl
YkNvcmU6OlNlc3Npb25JRCk7CiAKICAgICB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDY0NWYzNTMuLmFmNDA3OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNC0wMy0yNyAgTWFydGluIEhvY2sg
IDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRo
IHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGFuIEFQSSB0ZXN0IGZvciBlcGhlbWVyYWwgc2Vzc2lvbnMgc2ltaWxhciB0byBQcml2
YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5v
SGlzdG9yeUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Qcml2YXRlQnJvd3NpbmdQ
dXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA6IEFsc28gdGVzdCB0byBtYWtlIHN1cmUgcHJp
dmF0ZSBicm93c2luZyBjYW4gYmUgZGlzYWJsZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpk
aWROYXZpZ2F0ZVdpdGhvdXROYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisKIDIwMTQtMDMtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYV0gRXhwb3NlIERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKCkgYW5k
IERvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4
YmJiNTcwLi5lMWFlN2YwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA3LDYgKzEwNyw3
IEBACiAJCTUyQ0I0NzQxMTQ0OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmlu
Z1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTJDQjQ3NDAxNDQ4RkI5MzAwODczOTk1IC8qIExvYWRBbHRlcm5hdGVI
VE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHAgKi87IH07CiAJCTUyRTVDRTQ2MTREMjFF
OUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0NTE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJh
bWUuY3BwICovOyB9OwogCQk1MkU1Q0U0OTE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVf
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyRTVDRTQ4MTREMjFFQUIwMDNCMkJEOCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovOyB9
OworCQk3NUYzMTM0MDE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0
ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1RjMxMzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9u
UHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovOyB9OwogCQk3NkUxODJEQTE1NDc1NTAx
MDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2ls
bFNlbmRTdWJtaXRFdmVudC5jcHAgKi87IH07CiAJCTc2RTE4MkREMTU0NzU2OTEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEQzE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNl
bmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9OwogCQk3NkUxODJERjE1NDc2N0U2MDBGMUZB
REQgLyogYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJERTE1NDc1QTgzMDBGMUZBREQgLyog
YXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCAqLzsgfTsKQEAgLTQzMyw2ICs0MzQsNyBAQAogCQk1
MkNCNDc0MDE0NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9u
RGlyZWN0b3J5VVJMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ1MTREMjFFOUQwMDNCMkJEOCAvKiBQYXJlbnRGcmFt
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJlbnRGcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyRTVDRTQ4MTREMjFFQUIwMDNCMkJE
OCAvKiBQYXJlbnRGcmFtZV9CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGFyZW50RnJhbWVfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3Rh
dGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NkUxODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2ls
bFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbGxTZW5kU3VibWl0RXZl
bnRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREUxNTQ3
NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAiYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03NjYsNiArNzY4LDcgQEAKIAkJCQlGNkY0OUM2NzE1NTQ1QzhEMDAw
N0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgKi8sCiAJCQkJRjZGNDlDNjYx
NTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCAq
LywKIAkJCQlDMDQ1Rjk0NDEzODVDMkU5MDBDMEYzQ0QgLyogRG93bmxvYWREZWNpZGVEZXN0aW5h
dGlvbkNyYXNoLmNwcCAqLywKKwkJCQk3NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1l
cmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLywKIAkJCQkxQTVGRUZE
QzEyNzBFMkEzMDAwRTI5MjEgLyogRXZhbHVhdGVKYXZhU2NyaXB0LmNwcCAqLywKIAkJCQlCQ0M4
Qjk1QTEyNjExRjQ3MDBERTQ2QTQgLyogRmFpbGVkTG9hZC5jcHAgKi8sCiAJCQkJMUEwMkM4NEUx
MjVENEE4NDAwRTNGNEJEIC8qIEZpbmQuY3BwICovLApAQCAtMTE1MSw2ICsxMTU0LDcgQEAKIAkJ
CQkyOTcyMzRCNDE3M0FEMDQ4MDA5ODM2MDEgLyogQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVt
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OTAyOEI2MTRGQUJEOTIwMDdFNkI0MyAvKiBBY2Nl
cHRzRmlyc3RNb3VzZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5MTg2MUZGMTdCRDREQzcwMEQ0
RTQxRSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRGaW5pc2hMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNzVGMzEzNDAxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3Rh
dGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNkYxQjQ0NDE1Q0E0
MzRGMDBEMUU0QkYgLyogQXRvbWljU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1NUYx
MUEwMTUxNjgzNEYwMDkxNTkxNiAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDBDRDlGNjMxNUJFMzEyQzAwMkRBMkNFIC8qIEJhY2tGb3J3YXJkTGlzdC5tbSBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlz
dG9yeUNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzAz
MTk0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAKQEAgLTAsMCAr
MSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUg
IlRlc3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgdGVzdERvbmU7CisKK3N0YXRpYyB2b2lkIGRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VS
ZWYgcGFnZSwgV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJlZiBm
cmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBuZXZl
ciBiZSBjYWxsZWQgd2hlbiBuYXZpZ2F0aW5nIGluIFByaXZhdGUgQnJvd3NpbmcuCisgICAgRkFJ
TCgpOworfQorCitzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
V0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUgdHlwZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQor
eworICAgIHRlc3REb25lID0gdHJ1ZTsKK30KKworVEVTVChXZWJLaXQyLCBFcGhlbWVyYWxTZXNz
aW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2spCit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgpKTsKKworICAgIFdLQ29u
dGV4dEhpc3RvcnlDbGllbnRWMCBoaXN0b3J5Q2xpZW50OworICAgIG1lbXNldCgmaGlzdG9yeUNs
aWVudCwgMCwgc2l6ZW9mKGhpc3RvcnlDbGllbnQpKTsKKworICAgIGhpc3RvcnlDbGllbnQuYmFz
ZS52ZXJzaW9uID0gMDsKKyAgICBoaXN0b3J5Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhID0gZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE7CisKKyAgICBXS0NvbnRleHRT
ZXRIaXN0b3J5Q2xpZW50KGNvbnRleHQuZ2V0KCksICZoaXN0b3J5Q2xpZW50LmJhc2UpOworCisg
ICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CisKKyAgICBXS1BhZ2VM
b2FkZXJDbGllbnRWMCBwYWdlTG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgmcGFnZUxvYWRlckNs
aWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJDbGllbnQpKTsKKworICAgIHBhZ2VMb2FkZXJDbGll
bnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmRpZFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsK
KworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCksICZwYWdlTG9h
ZGVyQ2xpZW50LmJhc2UpOworCisgICAgV0tTZXNzaW9uUmVmIHNlc3Npb24gPSBXS1Nlc3Npb25D
cmVhdGUodHJ1ZSk7CisgICAgV0tQYWdlU2V0U2Vzc2lvbih3ZWJWaWV3LnBhZ2UoKSwgc2Vzc2lv
bik7CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0
ZVVSTEZvclJlc291cmNlKCJwdXNoLXN0YXRlIiwgImh0bWwiKSk7CisgICAgV0tQYWdlTG9hZFVS
TCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmdGVzdERvbmUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0
b3J5Q2FsbGJhY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1ByaXZh
dGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcAppbmRleCAzZDBkYjNkLi5i
NTBmMTQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJp
dmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Qcml2YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3Rv
cnlDYWxsYmFjay5jcHAKQEAgLTMxLDE3ICszMSwyMyBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKLXN0YXRpYyBib29sIHRlc3REb25lOworc3RhdGljIGJvb2wgZGlkTmF2aWdhdGU7
CitzdGF0aWMgYm9vbCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOwogCi1zdGF0aWMgdm9pZCBk
aWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdl
UmVmIHBhZ2UsIFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEsIFdLRnJhbWVSZWYg
ZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitzdGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdp
dGhvdXROYXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlUmVmIHBhZ2Us
IFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEsIFdLRnJhbWVSZWYgZnJhbWUsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgYmUgY2Fs
bGVkIHdoZW4gbmF2aWdhdGluZyBpbiBQcml2YXRlIEJyb3dzaW5nLgogICAgIEZBSUwoKTsKIH0K
IAorc3RhdGljIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV0tDb250ZXh0UmVm
IGNvbnRleHQsIFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25E
YXRhLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIGRp
ZE5hdmlnYXRlID0gdHJ1ZTsKK30KKwogc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbykKIHsKLSAgICB0ZXN0RG9uZSA9IHRydWU7CisgICAgZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbiA9IHRydWU7CiB9CiAKIFRFU1QoV2ViS2l0MiwgUHJpdmF0ZUJyb3dzaW5nUHVz
aFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2spCkBAIC01Miw3ICs1OCw3IEBAIFRFU1QoV2ViS2l0Miwg
UHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2spCiAgICAgbWVtc2V0KCZo
aXN0b3J5Q2xpZW50LCAwLCBzaXplb2YoaGlzdG9yeUNsaWVudCkpOwogCiAgICAgaGlzdG9yeUNs
aWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGhpc3RvcnlDbGllbnQuZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEgPSBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YTsKKyAgICBoaXN0
b3J5Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhID0gZGlkTmF2aWdhdGVXaXRo
b3V0TmF2aWdhdGlvbkRhdGE7CiAKICAgICBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KGNvbnRl
eHQuZ2V0KCksICZoaXN0b3J5Q2xpZW50LmJhc2UpOwogCkBAIC03NSw3ICs4MSwxNiBAQCBURVNU
KFdlYktpdDIsIFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrKQogICAg
IFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwoQWRvcHRXSywgVXRpbDo6Y3JlYXRlVVJMRm9yUmVz
b3VyY2UoInB1c2gtc3RhdGUiLCAiaHRtbCIpKTsKICAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcu
cGFnZSgpLCB1cmwuZ2V0KCkpOwogCi0gICAgVXRpbDo6cnVuKCZ0ZXN0RG9uZSk7CisgICAgVXRp
bDo6cnVuKCZkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKTsKKworICAgIFdLUHJlZmVyZW5jZXNT
ZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByZWZlcmVuY2VzLmdldCgpLCBmYWxzZSk7CisKKyAg
ICBoaXN0b3J5Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhID0gZGlkTmF2aWdh
dGVXaXRoTmF2aWdhdGlvbkRhdGE7CisgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChjb250
ZXh0LmdldCgpLCAmaGlzdG9yeUNsaWVudC5iYXNlKTsKKworICAgIFdLUGFnZUxvYWRVUkwod2Vi
Vmlldy5wYWdlKCksIHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJmRpZE5hdmlnYXRlKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="252219"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="252232"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227976</attachid>
            <date>2014-03-27 14:02:37 -0700</date>
            <delta_ts>2014-03-27 14:10:04 -0700</delta_ts>
            <desc>fix gtk build</desc>
            <filename>unifyprivate.04a.diff</filename>
            <type>text/plain</type>
            <size>52632</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MTg1NWY3Li5hZmFhNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgVW5sZXNzIG90aGVyd2lzZSBub3Rl
ZCwgdGhlIGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRv
IHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSB3aXRoIFBhZ2U6OnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0YWJhc2VBY2Nlc3MpOgorICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOiBSZW1vdmUgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGFkZCBQ
YWdlOjpsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0
V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29u
dHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlz
dG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVGb3JNYWluUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNpc2lvbik6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOiBJbml0
aWFsaXplIHdpdGggZGVmYXVsdFNlc3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omxl
Z2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQpOiBMZWdhY3kgc2V0dGluZyBmb3IgcHJpdmF0ZSBi
cm93c2luZy4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gc2V0U2Vzc2lvbklELgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6c2Vzc2lvbklEKTogU2ltcGxpZnkgdG8ganVzdCByZXR1cm4gbV9zZXNzaW9u
SUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTZXNzaW9uSUQpOiBBbHNvIHBlcmZvcm0g
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGFjdGlvbi5hCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Y2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3kpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNvbnNvbGU6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiBwYWdl
L1NldHRpbmdzLmNwcDogUmVtb3ZlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgc2V0dGluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6IFBhZ2UgcmVmbGVjdHMgc2V0dGlu
ZyB1c2luZyBzZXNzaW9uLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBw
bHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0
VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6aXNE
aXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKToKKwogMjAxNC0wMy0yNyAgRnLDqWTDqXJpYyBXYW5n
ICA8ZnJlZC53YW5nQGZyZWUuZnI+CiAKICAgICAgICAgT3BlcmF0b3Igc3RyZXRjaGluZzogZXhw
b3NlIGEgbWF0aCBkYXRhIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGM5YTUzNjYuLmJmNzMwYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
Q29udGV4dC5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBib29sIERhdGFiYXNlQ29udGV4dDo6YWxs
b3dEYXRhYmFzZUFjY2VzcygpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9j
dW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgaWYgKCFkb2N1bWVudC0+
cGFnZSgpIHx8IChkb2N1bWVudC0+cGFnZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRl
QnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkpKSkKKyAgICAg
ICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpIHx8IChkb2N1bWVudC0+cGFnZSgpLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpICYmICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dzRGF0YWJhc2VBY2Nlc3NJblBy
aXZhdGVCcm93c2luZyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+cHJvdG9jb2woKSkpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGIxODA0MWMuLjNhNTdiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0xMDU4LDYgKzEwNTgsNyBAQCBfX1pON1dlYkNvcmU0UGFnZTI0ZmluZFN0cmluZ01h
dGNoaW5nUmFuZ2VzRVJLTjNXVEY2U3RyaW5nRWhpUE5TMV82VmVjdG9ySU5TMV82UgogX19aTjdX
ZWJDb3JlNFBhZ2UyNHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFn
ZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMjVzdXNwZW5k
U2NyaXB0ZWRBbmltYXRpb25zRXYKK19fWk43V2ViQ29yZTRQYWdlMjdlbmFibGVMZWdhY3lQcml2
YXRlQnJvd3NpbmdFYgogX19aTjdXZWJDb3JlNFBhZ2UyN2ludmFsaWRhdGVTdHlsZXNGb3JBbGxM
aW5rc0V2CiBfX1pON1dlYkNvcmU0UGFnZTMyc2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJs
ZWRFYgogX19aTjdXZWJDb3JlNFBhZ2UzM3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dEV2CkBAIC0xMjY5LDcgKzEyNzAsNiBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeUVOU18xNFNlY3VyaXR5T3JpZ2luMjFTdG9yYWdlQmxvYwogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMjRzZXRUZXh0QXJlYXNBcmVSZXNpemFibGVFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjRzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnNFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMjVzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplRWkKLV9fWk43V2ViQ29yZThTZXR0aW5nczI1
c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb25FUktOU18zVVJMRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZk
ZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNnNldFNp
bXBsZUxpbmVMYXlvdXRFbmFibGVkRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGM2YjBiMWMuLjZlNzQ3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlQb2xpY3kuaCIKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCkBAIC0x
MjYxLDggKzEyNjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25z
dCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VAogICAgIGlmIChtX3NlbmRQ
cm9ncmVzc0V2ZW50cykgCiAgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CiAKLSAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgYm9vbCBw
cml2YXRlTW9kZSA9ICFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOworICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSBkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVu
dCgpLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKICAgICBtX3BsYXllci0+c2V0UHJp
dmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiAKICAgICAvLyBSZXNldCBkaXNwbGF5IG1v
ZGUgdG8gZm9yY2UgYSByZWNhbGN1bGF0aW9uIG9mIHdoYXQgdG8gc2hvdyBiZWNhdXNlIHdlIGFy
ZSByZXNldHRpbmcgdGhlIHBsYXllci4KQEAgLTUyNjYsOCArNTI2Niw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKQogICAgIGlmICghbV9w
bGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKTsKLSAgICBib29sIHByaXZhdGVNb2RlID0gIXNldHRpbmdzIHx8IHNl
dHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlTW9kZSA9
IGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vz
c2lvbigpOwogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2lu
Z1N0YXRlRGlkQ2hhbmdlKCVzKSIsIGJvb2xTdHJpbmcocHJpdmF0ZU1vZGUpKTsKICAgICBtX3Bs
YXllci0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA2YzhjOWU5Li4zNzQwNzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTM0
OCw3ICszNDgsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExv
YWQoSGlzdG9yeVVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKIAogICAgIEZyYW1lTG9hZGVyJiBmcmFt
ZUxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCk7CiAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9m
cmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQ
cml2YWN5ID0gbV9mcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgY29u
c3QgVVJMJiBoaXN0b3J5VVJMID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9y
SGlzdG9yeSgpOwogCiAgICAgaWYgKCFmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5pc0Ns
aWVudFJlZGlyZWN0KCkpIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAgICAg
ICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRp
cmVjdCBsb2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCi0gICAgYm9v
bCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCk7CisgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKG1fZnJhbWUubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CkBAIC00MzMsNyAr
NDMzLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3Qo
KQogICAgICAgICBtX2N1cnJlbnRJdGVtLT5jbGVhclNjcm9sbFBvaW50KCk7CiAgICAgfQogCi0g
ICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCk7CisgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBo
ZW1lcmFsU2Vzc2lvbigpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKCFoaXN0
b3J5VVJMLmlzRW1wdHkoKSAmJiAhbmVlZFByaXZhY3kpIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkK
ICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQorICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwpAQCAtODQ3
LDcgKzg0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsCiAKICAgICBwYWdlLT5iYWNrRm9y
d2FyZCgpLmFkZEl0ZW0odG9wSXRlbS5yZWxlYXNlKCkpOwogCi0gICAgaWYgKG1fZnJhbWUuc2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFnZSgp
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBhZGRWaXNp
dGVkTGluaygqcGFnZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CkBAIC04NjYs
NyArODY2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamUKICAgICBtX2N1cnJlbnRJdGVtLT5z
ZXRGb3JtRGF0YSgwKTsKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRGb3JtQ29udGVudFR5cGUoU3Ry
aW5nKCkpOwogCi0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCA3OWZiZTRmLi5jOGMwMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIEFwcGxpY2F0aW9uQ2FjaGUqIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVG
b3JNYWluUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlCiAgICAgaWYgKHVybC5oYXNGcmFnbWVu
dElkZW50aWZpZXIoKSkKICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwog
Ci0gICAgaWYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIChkb2N1bWVudExvYWRlci0+ZnJh
bWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWRvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBs
aWNhdGlvbkNhY2hlKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCkudG9wKCkuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpKQorICAgIGlmIChkb2N1bWVudExvYWRlci0+ZnJhbWUo
KSAmJiAoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKSB8fCAhZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkt
PnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkpCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBjYWNoZVN0
b3JhZ2UoKS5jYWNoZUdyb3VwRm9yVVJMKHVybCkpIHsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHBhc3NlZE1hbmlmZXN0VQogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGlu
ZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUt
PnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJl
ZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1l
LT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCku
dG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgcG9zdExpc3Rl
bmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3VtZW50TG9h
ZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RVJS
T1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIx
OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5p
ZmVzdFVSTChGcmFtZSogZnJhbWUpCiAgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlci0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+YXBwbGljYXRpb25DYWNoZSgpKTsKIAogICAgIC8vIERvbid0IGFj
Y2VzcyBhbnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAg
ICBpZiAoZnJhbWUtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNo
ZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7Cisg
ICAgaWYgKGZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZy
YW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAg
ICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQs
IGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6RVJST1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJh
bWUqIGZyYW1lLCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAg
Ly8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBl
bmFibGVkLgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBs
aWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSkpIHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8
fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0
aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgewogICAgICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmlzRW1w
dHkoKSk7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7CiAgICAg
ICAgIEFTU0VSVCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA5YzY5
YmVmLi43ZmU1NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjphYm9ydCgpCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKQogewotICAgIHJldHVybiBtX2RvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkub2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmZy
YW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBt
X2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNl
dHRpbmdzKCkub2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1l
bnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKIH0KIAog
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tlZEZvclJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDk0YWRhZTcuLmU0YWRlYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTIw
NCw3ICsyMDQsNyBAQCB2b2lkIEljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNp
b24oSWNvbkxvYWREZWNpc2lvbiBpY29uTG9hZERlY2lzaW9uKQogICAgIEFTU0VSVChpY29uTG9h
ZERlY2lzaW9uICE9IEljb25Mb2FkVW5rbm93bik7CiAKICAgICAvLyAgRklYTUUgKDxyZGFyOi8v
cHJvYmxlbS85MTY4NjA1PikgLSBXZSBzaG91bGQgc3VwcG9ydCBpbi1tZW1vcnktb25seSBwcml2
YXRlIGJyb3dzaW5nIGljb25zIGluIGFzeW5jaHJvbm91cyBpY29uIGRhdGFiYXNlIG1vZGUuCi0g
ICAgaWYgKGljb25EYXRhYmFzZSgpLnN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpICYmIG1fZnJh
bWUucGFnZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAo
aWNvbkRhdGFiYXNlKCkuc3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkgJiYgbV9mcmFtZS5wYWdl
KCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChp
Y29uTG9hZERlY2lzaW9uID09IEljb25Mb2FkTm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGY4
M2NiMTQuLjYyZTlkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFBh
Z2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9sYXN0U3BhdGlhbE5h
dmlnYXRpb25DYW5kaWRhdGVzQ291bnQoMCkgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRl
cm5hbHMgZm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5k
bGluZ0JlZm9yZVVubG9hZEV2ZW50KDApCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoc3RkOjpt
b3ZlKHBhZ2VDbGllbnRzLnZpc2l0ZWRMaW5rU3RvcmUpKQotICAgICwgbV9zZXNzaW9uSUQoU2Vz
c2lvbklEOjplbXB0eVNlc3Npb25JRCgpKQorICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpCiB7CiAgICAgQVNTRVJUKG1fZWRpdG9yQ2xpZW50KTsKIApAQCAt
MTA4MCwxOSArMTA4MCwxMiBAQCB2b2lkIFBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdl
ZCgpCiAgICAgICAgIHZpZXdzW2ldLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKIH0K
IAotdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQordm9pZCBQYWdlOjpl
bmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQog
ewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fc2V0dGluZ3MtPnByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKTsKKyAgICAvLyBEb24ndCBhbGxvdyBjaGFuZ2luZyB0aGUgbGVnYWN5
IHByaXZhdGUgYnJvd3Npbmcgc3RhdGUgaWYgd2UgaGF2ZSBzZXQgYSBzZXNzaW9uIElELgorICAg
IEFTU0VSVChtX3Nlc3Npb25JRCA9PSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSB8fCBt
X3Nlc3Npb25JRCA9PSBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAKLSAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnByaXZh
dGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7Ci0KLSAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5W
aWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFr
ZXMKLSAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5v
dCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCi0gICAgYXV0byB2aWV3cyA9IHBsdWdpblZpZXdzKCk7
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmlld3Muc2l6ZSgpOyArK2kpCi0gICAg
ICAgIHZpZXdzW2ldLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCk7CisgICAgc2V0U2Vzc2lvbklEKHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPyBTZXNz
aW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTE1MTQsMTkgKzE1MDcsMjkg
QEAgVmlzaXRlZExpbmtTdG9yZSYgUGFnZTo6dmlzaXRlZExpbmtTdG9yZSgpCiAKIFNlc3Npb25J
RCBQYWdlOjpzZXNzaW9uSUQoKSBjb25zdAogewotICAgIGlmIChtX3Nlc3Npb25JRC5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBtX3Nlc3Npb25JRDsKLQotICAgIGlmIChzZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpOwotCi0gICAgcmV0dXJuIFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpOworICAgIHJldHVybiBtX3Nlc3Npb25JRDsKIH0KIAogdm9pZCBQYWdlOjpzZXRTZXNz
aW9uSUQoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzVmFs
aWQoKSk7CisKKyAgICBib29sIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCA9IChzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSAhPSBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKwogICAgIG1f
c2Vzc2lvbklEID0gc2Vzc2lvbklEOworCisgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsK
KworICAgIC8vIENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3Vy
ZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0YWtlcworICAgIC8vIGZyb20gYmVsb3cgcHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZldGltZS4KKwor
ICAgIGZvciAoYXV0byYgdmlldyA6IHBsdWdpblZpZXdzKCkpCisgICAgICAgIHZpZXctPnByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CisKIH0KIAog
UGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZmVjMDAy
Yy4uMzkwMmE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTMxMyw3ICszMTMsNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGRuc1ByZWZldGNoaW5nU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBzdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKLSAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCgpOwogCiAgICAgdm9pZCBzZXREZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CiAgICAgSlND
OjpEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CkBAIC00
MTAsNyArNDA5LDggQEAgcHVibGljOgogCiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0U2Vzc2lvbklEKFNlc3Npb25JRCk7Ci0gICAgYm9vbCBpc1Nlc3Npb25J
RFNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzVmFsaWQoKTsgfQorICAgIHZvaWQg
ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7
CisgICAgYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCk7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRHcm91cCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcAppbmRleCAzNDZiMDEzLi5lYTQ1ZTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyCiAgICAgaWYgKHNvdXJjZSA9PSBNZXNzYWdlU291cmNlOjpDU1MpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkpCisgICAgaWYgKG1fcGFnZS51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCkuYWRkTWVzc2FnZVRv
Q29uc29sZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHVybCk7CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhU
eXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLAogICAgIGJv
b2wgZ290TWVzc2FnZSA9IGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3Nh
Z2UpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgm
bV9wYWdlLCBNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
ZXhlYywgYXJndW1lbnRzKTsKIAotICAgIGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fcGFnZS51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZ290TWVzc2FnZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAppbmRleCAzMmI1YTdmLi5lNmQyZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cApAQCAtMTcxLDcgKzE3MSw2IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAg
ICwgbV9pc0phdmFFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxG
aWxlcyh0cnVlKQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCi0gICAg
LCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2FyZUltYWdlc0VuYWJs
ZWQodHJ1ZSkKICAgICAsIG1fYXJlUGx1Z2luc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzU2Ny
aXB0RW5hYmxlZChmYWxzZSkKQEAgLTQyNywxNSArNDI2LDYgQEAgdm9pZCBTZXR0aW5nczo6c2V0
UGx1Z2luc0VuYWJsZWQoYm9vbCBhcmVQbHVnaW5zRW5hYmxlZCkKICAgICBQYWdlOjpyZWZyZXNo
UGx1Z2lucyhmYWxzZSk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotewotICAgIGlmIChtX3ByaXZhdGVC
cm93c2luZ0VuYWJsZWQgPT0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZDsKLSAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOwotfQotCiB2b2lk
IFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYgdXNlclN0eWxl
U2hlZXRMb2NhdGlvbikKIHsKICAgICBpZiAobV91c2VyU3R5bGVTaGVldExvY2F0aW9uID09IHVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNTE2ZjBkYy4u
ZDQ3MzgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMTQ2LDcgKzE0Niw2IEBAIHB1Ymxp
YzoKICAgICAvLyAgLSBIVFRQIENvb2tpZXMKICAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBw
b3J0IE5QTlZwcml2YXRlTW9kZUJvb2wpCiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKGJvb2wpOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsgfQogCiAgICAgdm9pZCBzZXRETlNQcmVmZXRj
aGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsgfQpAQCAtMzAxLDcgKzMwMCw2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc0ph
dmFFbmFibGVkRm9yTG9jYWxGaWxlcyA6IDE7CiAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSA6IDE7Ci0gICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwogICAg
IGJvb2wgbV9hcmVJbWFnZXNFbmFibGVkIDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJs
ZWQgOiAxOwogICAgIGJvb2wgbV9pc1NjcmlwdEVuYWJsZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMjY4MDZmNi4uOTQ4YzM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBOUEVycm9yIFBsdWdp
blZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAg
ICAgUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdl
KQogICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICooKE5Q
Qm9vbCopdmFsdWUpID0gcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
CisgICAgICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24o
KTsKICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggYzFiMjM3Yy4uNDU0
MWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJl
c3VsdCgpCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGZyYW1lKCkuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYg
KGZyYW1lKCkucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpbnQgc2l6ZSA9IHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXpl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggYzQ4NGI5Ni4uODFiYWU2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBT
dG9yYWdlOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0CiAKIGJvb2wgU3RvcmFnZTo6aXNEaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9u
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5zdG9y
YWdlVHlwZSgpID09IExvY2FsU3RvcmFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGE1YTVlNjku
LjM4MmU0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNC0wMy0yNyAg
TWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBi
cm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KKworICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3Zp
ZXdfcHJpdl9uZXcpOiBDaGFuZ2UgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSB0byBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldCk6IENoYW5nZSBXZWJDb3JlOjpTZXR0
aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJsZUxlZ2FjeVBy
aXZhdGVCcm93c2luZygpLgorCiAyMDE0LTAzLTIzICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBNb3ZlIGFsbCBFRkwgdHlwZWRlZnMgaW50byBFZmxUeXBl
ZGVmcy5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggNTc2NTQ1OC4uMzlkNTMw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNlc3Npb25JRC5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKQEAgLTgwMCw3ICs4MDEsNyBAQCBzdGF0
aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhKQogI2VuZGlmCiAgICAgcHJpdi0+c2V0dGluZ3Muc2NyaXB0c0Nh
bkFjY2Vzc0NsaXBib2FyZCA9IHBhZ2VTZXR0aW5ncy5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJv
YXJkKCkgJiYgcGFnZVNldHRpbmdzLkRPTVBhc3RlQWxsb3dlZCgpOwogICAgIHByaXYtPnNldHRp
bmdzLnJlc2l6YWJsZVRleHRhcmVhcyA9IHBhZ2VTZXR0aW5ncy50ZXh0QXJlYXNBcmVSZXNpemFi
bGUoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBwYWdlU2V0dGluZ3Mu
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVCcm93
c2luZyA9IHByaXYtPnBhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgcHJpdi0+c2V0
dGluZ3MuY2FyZXRCcm93c2luZyA9IHBhZ2VTZXR0aW5ncy5jYXJldEJyb3dzaW5nRW5hYmxlZCgp
OwogICAgIHByaXYtPnNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9uID0gcGFnZVNldHRpbmdzLnNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgpOwogICAgIHByaXYtPnNldHRpbmdzLmxvY2FsU3RvcmFn
ZSA9IHBhZ2VTZXR0aW5ncy5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7CkBAIC0yNDIzLDcgKzI0MjQs
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgRWluYV9Cb29sCiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAg
IGlmIChwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgIT0gZW5hYmxlKSB7Ci0gICAgICAg
IHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGUp
OworICAgICAgICBwcml2LT5wYWdlLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoZW5hYmxl
KTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nID0gZW5hYmxlOwogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA5MThiZDQyLi4wOWVlNWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBI
b2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcg
d2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3Yu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6IENo
YW5nZSBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6
dXNlc0VwaGVtZXJhbFNlc3Npb24oKS4KKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6IENoYW5nZSBTZXR0aW5nczo6c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJsZVByaXZhdGVCcm93c2luZygpLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKwogMjAxNC0wMy0yNSAgTWFydGluIFJvYmluc29uICA8
bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIHRoZSBhdXRvdG9v
bHMgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA5ZTdlZGM0Li5iYjk4MjJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW0K
IAogCiAgICAgQ3JlZGVudGlhbFN0b3JhZ2VNb2RlIGNyZWRlbnRpYWxTdG9yYWdlTW9kZTsKLSAg
ICBpZiAoY29yZSh2aWV3KS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisg
ICAgaWYgKGNvcmUodmlldyktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIGNyZWRl
bnRpYWxTdG9yYWdlTW9kZSA9IERpc2FsbG93UGVyc2lzdGVudFN0b3JhZ2U7CiAgICAgZWxzZQog
ICAgICAgICBjcmVkZW50aWFsU3RvcmFnZU1vZGUgPSBBbGxvd1BlcnNpc3RlbnRTdG9yYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGE4ZWVhMzYu
LjVmNmJhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
QEAgLTM2MDEsNyArMzYwMSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVf
c2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBjb3JlU2V0dGluZ3Muc2V0VGV4
dEFyZWFzQXJlUmVzaXphYmxlKHNldHRpbmdzUHJpdmF0ZS0+cmVzaXphYmxlVGV4dEFyZWFzKTsK
ICAgICBjb3JlU2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihVUkwoVVJMKCksIHNl
dHRpbmdzUHJpdmF0ZS0+dXNlclN0eWxlc2hlZXRVUkkuZGF0YSgpKSk7CiAgICAgY29yZVNldHRp
bmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVEZXZl
bG9wZXJFeHRyYXMpOwotICAgIGNvcmVTZXR0aW5ncy5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nKTsKKyAgICBjb3JlKHdlYlZp
ZXcpLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3Npbmcoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVQ
cml2YXRlQnJvd3NpbmcpOwogICAgIGNvcmVTZXR0aW5ncy5zZXRDYXJldEJyb3dzaW5nRW5hYmxl
ZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUNhcmV0QnJvd3NpbmcpOwogICAgIGNvcmVTZXR0aW5n
cy5zZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlSFRNTDVMb2Nh
bFN0b3JhZ2UpOwogICAgIGNvcmVTZXR0aW5ncy5zZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgo
c2V0dGluZ3NQcml2YXRlLT5odG1sNUxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5kYXRhKCkpOwpA
QCAtMzczMyw3ICszNzMzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldHRpbmdz
X25vdGlmeShXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MsIEdQYXIKICAgICBlbHNlIGlm
IChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiKSkKICAg
ICAgICAgc2V0dGluZ3Muc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dldF9ib29s
ZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFi
bGUtcHJpdmF0ZS1icm93c2luZyIpKQotICAgICAgICBzZXR0aW5ncy5zZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CisgICAgICAgIGNvZGUod2Vi
VmlldyktPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZyhnX3ZhbHVlX2dldF9ib29sZWFuKCZ2
YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtY2Fy
ZXQtYnJvd3NpbmciKSkKICAgICAgICAgc2V0dGluZ3Muc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQo
Z192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDE0ZGRmOGMuLmY3MTQ3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxNC0wMy0yNyAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+
CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOiBDaGFuZ2UgV2ViQ29yZTo6U2V0dGluZ3M6
OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJh
bCgpLgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlJ
dGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbTogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
dG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOiBDaGFuZ2UgV2Vi
Q29yZTo6U2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdlOjplbmFi
bGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoKS4KKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5j
ZXNDaGFuZ2VkOl0pOgorCiAyMDE0LTAzLTI3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgogCiAgICAgICAgIENvbm5lY3Rpb246OmRpc3BhdGNoT25lTWVzc2FnZSgpIGNhbiBi
ZSByZS1lbnRlcmVkIHdoaWxlIGhhbmRsaW5nIENtZC1rZXkgbWVudQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpp
bmRleCBmNzVmMTg1Li4wNDBhNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTExNCw3ICsxMTE0
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1G
b3JQYWdlKCkKICAgICBIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0gPSAwOwogCiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5wYWdlKCkpIHsKLSAgICAgICAgaWYg
KCFwYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgaWYg
KCFwYWdlLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICAgICAgaGlzdG9yeUl0
ZW0gPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmN1cnJlbnRJdGVtKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbQppbmRleCAwZGI0ZjgwLi43MWFjZTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW0KQEAgLTExMyw3ICsxMTMsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJh
bWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4g
KnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpp
bmRleCBkMmFmY2M2Li43YjFjYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxv
YWRpbmdRdWlyaygpCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBzZXR0aW5ncy5zZXRFeHBlcmlt
ZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZChbcHJlZmVyZW5jZXMgZXhwZXJpbWVudGFsTm90aWZp
Y2F0aW9uc0VuYWJsZWRdKTsKICNlbmRpZgotICAgIHNldHRpbmdzLnNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoW3ByZWZlcmVuY2VzIHByaXZhdGVCcm93c2luZ0VuYWJsZWRdKTsKKyAgICBfcHJp
dmF0ZS0+cGFnZS0+ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nKFtwcmVmZXJlbmNlcyBwcml2
YXRlQnJvd3NpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0U2Fuc1NlcmlmRm9udEZhbWls
eShbcHJlZmVyZW5jZXMgc2Fuc1NlcmlmRm9udEZhbWlseV0pOwogICAgIHNldHRpbmdzLnNldFNl
cmlmRm9udEZhbWlseShbcHJlZmVyZW5jZXMgc2VyaWZGb250RmFtaWx5XSk7CiAgICAgc2V0dGlu
Z3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHld
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCBhNzJmOWY0Li45Y2NmMjk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUu
Y29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6IENoYW5nZSBXZWJDb3JlOjpTZXR0
aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCkuCisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlz
dG9yeUl0ZW1Gb3JQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogV2ViVmlldy5jcHA6IENoYW5nZSBXZWJD
b3JlOjpTZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJs
ZUxlZ2FjeVByaXZhdGVCcm93c2luZygpLgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVy
ZW5jZXNDaGFuZ2VkKToKKwogMjAxNC0wMy0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIFN0cmluZzo6ZGVwcmVjYXRlZENoYXJhY3RlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA4OGRjMzUxLi4yODQwNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC04MDMsNyArODAzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFs
SGlzdG9yeUl0ZW1Gb3JQYWdlKCkKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+
d2ViVmlldygpOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB3ZWJWaWV3LT5wYWdlKCkpIHsKLSAg
ICAgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAg
ICAgICAgaWYgKCFwYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICAgICAgaGlz
dG9yeUl0ZW0gPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmN1cnJlbnRJdGVtKCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IGJmNTllZTcuLjcxMzM5N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChmcmFtZSgpICYmIGZy
YW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFt
ZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAg
cmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwogCiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDcw
NTEzY2QyLi41YTg0NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNDc4Nyw3ICs0Nzg3LDcg
QEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQogICAgIGVsc2UKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKICNlbmRpZgotICAgIHNl
dHRpbmdzLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoISFlbmFibGVkKTsKKyAgICBtX3BhZ2Ut
PmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZyghIWVuYWJsZWQpOwogCiAgICAgaHIgPSBwcmVm
ZXJlbmNlcy0+c2Fuc1NlcmlmRm9udEZhbWlseSgmc3RyKTsKICAgICBpZiAoRkFJTEVEKGhyKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMWY5NDUyLi41NDcwMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6IENoYW5nZSBXZWJQYWdlOjppc1VzaW5nRXBo
ZW1lcmFsU2Vzc2lvbigpIHRvIFdlYlBhZ2U6OnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkuCisgICAg
ICAgIChXS0J1bmRsZVBhZ2VJc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6IENoYW5nZSBTZXR0aW5n
czo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJsZUxlZ2FjeVByaXZh
dGVCcm93c2luZygpLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOiBDaGFuZ2UgU2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdl
Ojp1c2VzRXBoZW1lcmFsU2Vzc2lvbigpLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpp
c1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVzZXNFcGhlbWVyYWxTZXNzaW9uKTogUmVuYW1lZCBmcm9tIGlzVXNpbmdFcGhl
bWVyYWxTZXNzaW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9uSUQpOiBF
bnN1cmUgc2Vzc2lvbiBiZWZvcmUgc2V0dGluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXMpOiBTZXQgc2Vzc2lvbiB0byBsZWdhY3kgcHJpdmF0ZSBzZXNzaW9u
IGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lvbklEKTogTW92ZWQg
dG8gaGVhZGVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFsU2Vz
c2lvbik6IFJlbmFtZWQgdG8gdXNlc0VwaGVtZXJhbFNlc3Npb24uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lv
bklEKTogSnVzdCBjYWxsIGRvd24gdG8gbV9wYWdlLgorCiAyMDE0LTAzLTI3ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFdLRnJhbWVIYW5k
bGUgdG8gX1dLRnJhbWVIYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA2
NzFjYjVjLi5mYmY5MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC01NjEs
NSArNTYxLDUgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTdG9wRXh0ZW5kaW5nSW5jcmVtZW50YWxSZW5k
ZXJpbmdTdXBwcmVzc2lvbihXS0J1bmRsZVBhZ2VSZWYgcGEKIAogYm9vbCBXS0J1bmRsZVBhZ2VJ
c1VzaW5nRXBoZW1lcmFsU2Vzc2lvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5pc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbigpOworICAgIHJl
dHVybiB0b0ltcGwocGFnZVJlZiktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCmluZGV4IDE1M2I2NzIuLjM0YjNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib28KICNlbmRpZgog
ICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBh
Z2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+
OjppdGVyYXRvciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRlciAhPSBwYWdlcy5lbmQoKTsgKytp
dGVyKQotICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygpLnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoZW5hYmxlZCk7CisgICAgICAgICgqaXRlciktPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2lu
ZyhlbmFibGVkKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UG9wdXBCbG9ja2luZ0Vu
YWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ3
NWFjMTMuLmM3YTBlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKQEAgLTE1MzQsNyArMTUzNCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICBpZiAoIWZyYW1lKCktPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+dG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBm
cmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4g
ZnJhbWUoKS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQogCiBib29sIFBsdWdp
blZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXgg
Nzc3MzdkNC4uMTQxZDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZyYW1lKiBmcmFtZSkKIAogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0CiB7Ci0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgp
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gKlNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKIAogICAgIHJl
dHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDVkNDEz
MzIuLmEyYTUyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5j
bHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAi
U2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2Fz
dC5oIgpAQCAtMjE3NSwyNCArMjE3NiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVySG9zdGlu
Z01vZGUodW5zaWduZWQgbGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgcGx1Z2luVmlldy0+c2V0
TGF5ZXJIb3N0aW5nTW9kZShtX2xheWVySG9zdGluZ01vZGUpOwogfQogCi1TZXNzaW9uSUQgV2Vi
UGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYWdlLT5pc1Nlc3Npb25JRFNl
dCgpKQotICAgICAgICByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQoKTsKLQotICAgIHJldHVybiBt
X3BhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
LX0KLQotYm9vbCBXZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6
c2V0U2Vzc2lvbklEKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgbV9wYWdlLT5zZXRTZXNz
aW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vz
c2lvbklEKTsKKyAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2Fk
SUQpCkBAIC0yNDk3LDEwICsyNDg1LDEwIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5j
ZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0dGluZ3Muc2V0TG9j
YWxTdG9yYWdlRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OmxvY2FsU3RvcmFnZUVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFhTU0F1ZGl0
b3JFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6eHNz
QXVkaXRvckVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldEZyYW1lRmxhdHRlbmluZ0Vu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpmcmFtZUZs
YXR0ZW5pbmdFbmFibGVkS2V5KCkpKTsKLSAgICBpZiAobV9wYWdlLT5pc1Nlc3Npb25JRFNldCgp
KQotICAgICAgICBzZXR0aW5ncy5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKG1fcGFnZS0+c2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKSk7Ci0gICAgZWxzZQotICAgICAgICBzZXR0aW5ncy5zZXRQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpKSk7CisgICAgaWYgKHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZEtleSgpKSAmJiAhdXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKKyAgICAgICAgc2V0U2Vzc2lvbklE
KFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKKyAgICBlbHNlIGlmICghc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpwcml2YXRlQnJvd3NpbmdF
bmFibGVkS2V5KCkpICYmIHNlc3Npb25JRCgpID09IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpKQorICAgICAgICBzZXRTZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOwogICAgIHNldHRpbmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVk
S2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKHN0
b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdEV4cGVy
aW1lbnRzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VGV4dEFyZWFzQXJlUmVzaXph
YmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGV4dEFyZWFz
QXJlUmVzaXphYmxlS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGI2ZjhkOWQuLmY5YjhlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkzLDggKzE5Myw5IEBAIHB1YmxpYzoKIAog
ICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgp
OyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KLSAg
ICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1VzaW5n
RXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0OworICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOyB9CisgICAgYm9vbCB1c2Vz
RXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+dXNlc0VwaGVtZXJhbFNl
c3Npb24oKTsgfQorCiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsK
IAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjQ1ZjM1My4uYWY0MDc5
MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDE0LTAzLTI3ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4K
KworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZCBhbiBBUEkg
dGVzdCBmb3IgZXBoZW1lcmFsIHNlc3Npb25zIHNpbWlsYXIgdG8gUHJpdmF0ZUJyb3dzaW5nUHVz
aFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFj
ay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0
b3J5Q2FsbGJhY2suY3BwOiBBbHNvIHRlc3QgdG8gbWFrZSBzdXJlIHByaXZhdGUgYnJvd3Npbmcg
Y2FuIGJlIGRpc2FibGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkTmF2aWdhdGVXaXRo
b3V0TmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDE0LTAzLTI2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIEV4cG9zZSBEb3dubG9hZENsaWVudDo6ZGlkRmFpbCgpIGFuZCBEb3dubG9hZENsaWVu
dDo6ZGlkQ2FuY2VsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGJiYjU3MC4uZTFhZTdm
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNyw2ICsxMDcsNyBAQAogCQk1MkNCNDc0
MTE0NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0
b3J5VVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyQ0I0NzQwMTQ0OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhO
b25EaXJlY3RvcnlVUkwuY3BwICovOyB9OwogCQk1MkU1Q0U0NjE0RDIxRTlEMDAzQjJCRDggLyog
UGFyZW50RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJFNUNFNDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAqLzsgfTsK
IAkJNTJFNUNFNDkxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0ODE0RDIx
RUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLzsgfTsKKwkJNzVGMzEzNDAx
OEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlz
dG9yeUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJNzZFMTgyREExNTQ3NTUwMTAwRjFGQUREIC8qIFdp
bGxTZW5kU3VibWl0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZl
bnQuY3BwICovOyB9OwogCQk3NkUxODJERDE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJt
aXRFdmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRf
QnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREYxNTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3Vi
bWl0dGluZy1mb3JtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGlu
Zy1mb3JtLmh0bWwgKi87IH07CkBAIC00MzMsNiArNDM0LDcgQEAKIAkJNTJDQjQ3NDAxNDQ4RkI5
MzAwODczOTk1IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkQWx0ZXJuYXRlSFRN
TFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MkU1Q0U0NTE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyZW50RnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJh
bWVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVu
dEZyYW1lX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1RjMxMzNG
MThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFs
U2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lsbFNlbmRTdWJt
aXRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRDMTU0NzU2
OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAv
KiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
ImF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzY2LDYgKzc2OCw3IEBACiAJCQkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdp
bmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovLAogCQkJCUY2RjQ5QzY2MTU1NDVDOEQwMDA3RjM5
RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgKi8sCiAJCQkJQzA0NUY5
NDQxMzg1QzJFOTAwQzBGM0NEIC8qIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAg
Ki8sCisJCQkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNo
U3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8sCiAJCQkJMUE1RkVGREMxMjcwRTJBMzAwMEUy
OTIxIC8qIEV2YWx1YXRlSmF2YVNjcmlwdC5jcHAgKi8sCiAJCQkJQkNDOEI5NUExMjYxMUY0NzAw
REU0NkE0IC8qIEZhaWxlZExvYWQuY3BwICovLAogCQkJCTFBMDJDODRFMTI1RDRBODQwMEUzRjRC
RCAvKiBGaW5kLmNwcCAqLywKQEAgLTExNTEsNiArMTE1NCw3IEBACiAJCQkJMjk3MjM0QjQxNzNB
RDA0ODAwOTgzNjAxIC8qIEN1c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWUubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzNzkwMjhCNjE0RkFCRDkyMDA3RTZCNDMgLyogQWNjZXB0c0ZpcnN0TW91c2Uu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE4NjFGRjE3QkQ0REM3MDBENEU0MUUgLyogU3RvcExv
YWRpbmdGcm9tRGlkRmluaXNoTG9hZGluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTc1RjMxMzQw
MThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZGMUI0NDQxNUNBNDM0RjAwRDFFNEJGIC8q
IEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTVGMTFBMDE1MTY4MzRGMDA5
MTU5MTYgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTAwQ0Q5RjYz
MTVCRTMxMkMwMDJEQTJDRSAvKiBCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNz
aW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMwMzE5NAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNz
aW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5j
bHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK3N0YXRpYyBib29sIHRlc3REb25lOworCitzdGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdpdGhO
YXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlUmVmIHBhZ2UsIFdLTmF2
aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdo
ZW4gbmF2aWdhdGluZyBpbiBQcml2YXRlIEJyb3dzaW5nLgorICAgIEZBSUwoKTsKK30KKworc3Rh
dGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0ZXN0RG9u
ZSA9IHRydWU7Cit9CisKK1RFU1QoV2ViS2l0MiwgRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5v
SGlzdG9yeUNhbGxiYWNrKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4
dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7CisKKyAgICBXS0NvbnRleHRIaXN0b3J5Q2xp
ZW50VjAgaGlzdG9yeUNsaWVudDsKKyAgICBtZW1zZXQoJmhpc3RvcnlDbGllbnQsIDAsIHNpemVv
ZihoaXN0b3J5Q2xpZW50KSk7CisKKyAgICBoaXN0b3J5Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
CisgICAgaGlzdG9yeUNsaWVudC5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOworCisgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVu
dChjb250ZXh0LmdldCgpLCAmaGlzdG9yeUNsaWVudC5iYXNlKTsKKworICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworCisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAg
cGFnZUxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVv
ZihwYWdlTG9hZGVyQ2xpZW50KSk7CisKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmJhc2UudmVyc2lv
biA9IDA7CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWUgPSBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU7CisKKyAgICBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmcGFnZUxvYWRlckNsaWVudC5iYXNl
KTsKKworICAgIFdLU2Vzc2lvblJlZiBzZXNzaW9uID0gV0tTZXNzaW9uQ3JlYXRlKHRydWUpOwor
ICAgIFdLUGFnZVNldFNlc3Npb24od2ViVmlldy5wYWdlKCksIHNlc3Npb24pOworCisgICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJj
ZSgicHVzaC1zdGF0ZSIsICJodG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdl
KCksIHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3REb25lKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL1ByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Qcml2YXRlQnJvd3NpbmdQdXNo
U3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAKaW5kZXggM2QwZGIzZC4uYjUwZjE0MSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1ByaXZhdGVCcm93c2luZ1B1
c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3Bw
CkBAIC0zMSwxNyArMzEsMjMgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0
aWMgYm9vbCB0ZXN0RG9uZTsKK3N0YXRpYyBib29sIGRpZE5hdmlnYXRlOworc3RhdGljIGJvb2wg
ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbjsKIAotc3RhdGljIHZvaWQgZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZVJlZiBwYWdlLCBXS05h
dmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQorc3RhdGljIHZvaWQgZGlkTmF2aWdhdGVXaXRob3V0TmF2aWdhdGlv
bkRhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25E
YXRhUmVmIG5hdmlnYXRpb25EYXRhLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewogICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVuIG5hdmln
YXRpbmcgaW4gUHJpdmF0ZSBCcm93c2luZy4KICAgICBGQUlMKCk7CiB9CiAKK3N0YXRpYyB2b2lk
IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1Bh
Z2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJl
ZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBkaWROYXZpZ2F0ZSA9IHRy
dWU7Cit9CisKIHN0YXRpYyB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZSB0eXBlLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7
Ci0gICAgdGVzdERvbmUgPSB0cnVlOworICAgIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSB0
cnVlOwogfQogCiBURVNUKFdlYktpdDIsIFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9y
eUNhbGxiYWNrKQpAQCAtNTIsNyArNTgsNyBAQCBURVNUKFdlYktpdDIsIFByaXZhdGVCcm93c2lu
Z1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrKQogICAgIG1lbXNldCgmaGlzdG9yeUNsaWVudCwg
MCwgc2l6ZW9mKGhpc3RvcnlDbGllbnQpKTsKIAogICAgIGhpc3RvcnlDbGllbnQuYmFzZS52ZXJz
aW9uID0gMDsKLSAgICBoaXN0b3J5Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
ID0gZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE7CisgICAgaGlzdG9yeUNsaWVudC5kaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5hdmlnYXRlV2l0aG91dE5hdmlnYXRpb25E
YXRhOwogCiAgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChjb250ZXh0LmdldCgpLCAmaGlz
dG9yeUNsaWVudC5iYXNlKTsKIApAQCAtNzUsNyArODEsMTYgQEAgVEVTVChXZWJLaXQyLCBQcml2
YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjaykKICAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJwdXNoLXN0
YXRlIiwgImh0bWwiKSk7CiAgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdl
dCgpKTsKIAotICAgIFV0aWw6OnJ1bigmdGVzdERvbmUpOworICAgIFV0aWw6OnJ1bigmZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbik7CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChwcmVmZXJlbmNlcy5nZXQoKSwgZmFsc2UpOworCisgICAgaGlzdG9yeUNsaWVu
dC5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhOworICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoY29udGV4dC5nZXQoKSwgJmhp
c3RvcnlDbGllbnQuYmFzZSk7CisKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1
cmwuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZkaWROYXZpZ2F0ZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227978</attachid>
            <date>2014-03-27 14:10:04 -0700</date>
            <delta_ts>2014-04-02 13:08:00 -0700</delta_ts>
            <desc>fix typo</desc>
            <filename>unifyprivate.05a.diff</filename>
            <type>text/plain</type>
            <size>52632</size>
            <attacher name="Martin Hock">mhock</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1MTg1NWY3Li5hZmFhNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgVW5sZXNzIG90aGVyd2lzZSBub3Rl
ZCwgdGhlIGZvbGxvd2luZyBjb25zaXN0cyBzb2xlbHkgb2YgbWVjaGFuaWNhbCBjaGFuZ2VzIHRv
IHJlcGxhY2UgcXVlcnlpbmcgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKSB3aXRoIFBhZ2U6OnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZUNvbnRleHQ6OmFsbG93RGF0YWJhc2VBY2Nlc3MpOgorICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOiBSZW1vdmUgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGFkZCBQ
YWdlOjpsZWdhY3lQcml2YXRlQnJvd3NpbmdFbmFibGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0
V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29u
dHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlz
dG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVGb3JNYWluUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZlc3RVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUpOgorICAg
ICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNpc2lvbik6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOiBJbml0
aWFsaXplIHdpdGggZGVmYXVsdFNlc3Npb25JRC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omxl
Z2FjeVByaXZhdGVCcm93c2luZ0VuYWJsZWQpOiBMZWdhY3kgc2V0dGluZyBmb3IgcHJpdmF0ZSBi
cm93c2luZy4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gc2V0U2Vzc2lvbklELgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6c2Vzc2lvbklEKTogU2ltcGxpZnkgdG8ganVzdCByZXR1cm4gbV9zZXNzaW9u
SUQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRTZXNzaW9uSUQpOiBBbHNvIHBlcmZvcm0g
cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGFjdGlvbi5hCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Y2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3kpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGU6OmFkZE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZUNvbnNvbGU6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKToKKyAgICAgICAgKiBwYWdl
L1NldHRpbmdzLmNwcDogUmVtb3ZlIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgc2V0dGluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6IFBhZ2UgcmVmbGVjdHMgc2V0dGlu
ZyB1c2luZyBzZXNzaW9uLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKiBw
bHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0
VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6YWRkU2VhcmNoUmVzdWx0KToKKyAgICAg
ICAgKiBzdG9yYWdlL1N0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6aXNE
aXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKToKKwogMjAxNC0wMy0yNyAgRnLDqWTDqXJpYyBXYW5n
ICA8ZnJlZC53YW5nQGZyZWUuZnI+CiAKICAgICAgICAgT3BlcmF0b3Igc3RyZXRjaGluZzogZXhw
b3NlIGEgbWF0aCBkYXRhIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCmluZGV4IGM5YTUzNjYuLmJmNzMwYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
Q29udGV4dC5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCBib29sIERhdGFiYXNlQ29udGV4dDo6YWxs
b3dEYXRhYmFzZUFjY2VzcygpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9j
dW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICAgICAgaWYgKCFkb2N1bWVudC0+
cGFnZSgpIHx8IChkb2N1bWVudC0+cGFnZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OmFsbG93c0RhdGFiYXNlQWNjZXNzSW5Qcml2YXRl
QnJvd3NpbmcoZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkpKSkKKyAgICAg
ICAgaWYgKCFkb2N1bWVudC0+cGFnZSgpIHx8IChkb2N1bWVudC0+cGFnZSgpLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpICYmICFTY2hlbWVSZWdpc3RyeTo6YWxsb3dzRGF0YWJhc2VBY2Nlc3NJblBy
aXZhdGVCcm93c2luZyhkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+cHJvdG9jb2woKSkpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCmluZGV4IGIxODA0MWMuLjNhNTdiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0xMDU4LDYgKzEwNTgsNyBAQCBfX1pON1dlYkNvcmU0UGFnZTI0ZmluZFN0cmluZ01h
dGNoaW5nUmFuZ2VzRVJLTjNXVEY2U3RyaW5nRWhpUE5TMV82VmVjdG9ySU5TMV82UgogX19aTjdX
ZWJDb3JlNFBhZ2UyNHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmU0UGFn
ZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXYKIF9fWk43V2ViQ29yZTRQYWdlMjVzdXNwZW5k
U2NyaXB0ZWRBbmltYXRpb25zRXYKK19fWk43V2ViQ29yZTRQYWdlMjdlbmFibGVMZWdhY3lQcml2
YXRlQnJvd3NpbmdFYgogX19aTjdXZWJDb3JlNFBhZ2UyN2ludmFsaWRhdGVTdHlsZXNGb3JBbGxM
aW5rc0V2CiBfX1pON1dlYkNvcmU0UGFnZTMyc2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJs
ZWRFYgogX19aTjdXZWJDb3JlNFBhZ2UzM3N5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29uc0FzVGV4
dEV2CkBAIC0xMjY5LDcgKzEyNzAsNiBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeUVOU18xNFNlY3VyaXR5T3JpZ2luMjFTdG9yYWdlQmxvYwogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMjRzZXRUZXh0QXJlYXNBcmVSZXNpemFibGVFYgogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMjRzZXRVc2VzT3ZlcmxheVNjcm9sbGJhcnNFYgogX19aTjdXZWJDb3JlOFNldHRp
bmdzMjVzZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplRWkKLV9fWk43V2ViQ29yZThTZXR0aW5nczI1
c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb25FUktOU18zVVJMRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjZk
ZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbEV2CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNnNldFNp
bXBsZUxpbmVMYXlvdXRFbmFibGVkRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IGM2YjBiMWMuLjZlNzQ3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNzIsNiArNzIsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlQb2xpY3kuaCIKKyNpbmNsdWRlICJTZXNzaW9uSUQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCkBAIC0x
MjYxLDggKzEyNjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShjb25z
dCBVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50VAogICAgIGlmIChtX3NlbmRQ
cm9ncmVzc0V2ZW50cykgCiAgICAgICAgIHN0YXJ0UHJvZ3Jlc3NFdmVudFRpbWVyKCk7CiAKLSAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBkb2N1bWVudCgpLnNldHRpbmdzKCk7Ci0gICAgYm9vbCBw
cml2YXRlTW9kZSA9ICFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOworICAgIGJvb2wgcHJpdmF0ZU1vZGUgPSBkb2N1bWVudCgpLnBhZ2UoKSAmJiBkb2N1bWVu
dCgpLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKICAgICBtX3BsYXllci0+c2V0UHJp
dmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiAKICAgICAvLyBSZXNldCBkaXNwbGF5IG1v
ZGUgdG8gZm9yY2UgYSByZWNhbGN1bGF0aW9uIG9mIHdoYXQgdG8gc2hvdyBiZWNhdXNlIHdlIGFy
ZSByZXNldHRpbmcgdGhlIHBsYXllci4KQEAgLTUyNjYsOCArNTI2Niw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKQogICAgIGlmICghbV9w
bGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3Vt
ZW50KCkuc2V0dGluZ3MoKTsKLSAgICBib29sIHByaXZhdGVNb2RlID0gIXNldHRpbmdzIHx8IHNl
dHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBwcml2YXRlTW9kZSA9
IGRvY3VtZW50KCkucGFnZSgpICYmIGRvY3VtZW50KCkucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vz
c2lvbigpOwogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2lu
Z1N0YXRlRGlkQ2hhbmdlKCVzKSIsIGJvb2xTdHJpbmcocHJpdmF0ZU1vZGUpKTsKICAgICBtX3Bs
YXllci0+c2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShwcml2YXRlTW9kZSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCA2YzhjOWU5Li4zNzQwNzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTM0
OCw3ICszNDgsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExv
YWQoSGlzdG9yeVVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKIAogICAgIEZyYW1lTG9hZGVyJiBmcmFt
ZUxvYWRlciA9IG1fZnJhbWUubG9hZGVyKCk7CiAKLSAgICBib29sIG5lZWRQcml2YWN5ID0gbV9m
cmFtZS5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIG5lZWRQ
cml2YWN5ID0gbV9mcmFtZS5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgY29u
c3QgVVJMJiBoaXN0b3J5VVJMID0gZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9y
SGlzdG9yeSgpOwogCiAgICAgaWYgKCFmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5pc0Ns
aWVudFJlZGlyZWN0KCkpIHsKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAgICAg
ICBMT0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciByZWRp
cmVjdCBsb2FkIGluIGZyYW1lICVzIiwgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgCi0gICAgYm9v
bCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCk7CisgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKG1fZnJhbWUubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7CkBAIC00MzMsNyAr
NDMzLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3Qo
KQogICAgICAgICBtX2N1cnJlbnRJdGVtLT5jbGVhclNjcm9sbFBvaW50KCk7CiAgICAgfQogCi0g
ICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCk7CisgICAgYm9vbCBuZWVkUHJpdmFjeSA9IG1fZnJhbWUucGFnZSgpLT51c2VzRXBo
ZW1lcmFsU2Vzc2lvbigpOwogICAgIGNvbnN0IFVSTCYgaGlzdG9yeVVSTCA9IG1fZnJhbWUubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpOwogCiAgICAgaWYgKCFoaXN0
b3J5VVJMLmlzRW1wdHkoKSAmJiAhbmVlZFByaXZhY3kpIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkK
ICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2ZyYW1lLnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQorICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwpAQCAtODQ3
LDcgKzg0Nyw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZShQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmplY3QsCiAKICAgICBwYWdlLT5iYWNrRm9y
d2FyZCgpLmFkZEl0ZW0odG9wSXRlbS5yZWxlYXNlKCkpOwogCi0gICAgaWYgKG1fZnJhbWUuc2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFnZSgp
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBhZGRWaXNp
dGVkTGluaygqcGFnZSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsU3RyaW5nKSk7CkBAIC04NjYs
NyArODY2LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVwbGFjZVN0YXRlKFBhc3NSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamUKICAgICBtX2N1cnJlbnRJdGVtLT5z
ZXRGb3JtRGF0YSgwKTsKICAgICBtX2N1cnJlbnRJdGVtLT5zZXRGb3JtQ29udGVudFR5cGUoU3Ry
aW5nKCkpOwogCi0gICAgaWYgKG1fZnJhbWUuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCkpCisgICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFtZS5wYWdlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAppbmRleCA3OWZiZTRmLi5jOGMwMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIEFwcGxpY2F0aW9uQ2FjaGUqIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVG
b3JNYWluUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlCiAgICAgaWYgKHVybC5oYXNGcmFnbWVu
dElkZW50aWZpZXIoKSkKICAgICAgICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwog
Ci0gICAgaWYgKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIChkb2N1bWVudExvYWRlci0+ZnJh
bWUoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgfHwgIWRvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBs
aWNhdGlvbkNhY2hlKGRvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT50cmVlKCkudG9wKCkuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpKQorICAgIGlmIChkb2N1bWVudExvYWRlci0+ZnJhbWUo
KSAmJiAoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKSB8fCAhZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZG9jdW1lbnRMb2FkZXItPmZyYW1lKCkt
PnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkpCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgaWYgKEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogZ3JvdXAgPSBjYWNoZVN0
b3JhZ2UoKS5jYWNoZUdyb3VwRm9yVVJMKHVybCkpIHsKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIHBhc3NlZE1hbmlmZXN0VQogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGlu
ZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUt
PnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJl
ZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1l
LT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCku
dG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgcG9zdExpc3Rl
bmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3VtZW50TG9h
ZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RVJS
T1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIx
OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZWxlY3RDYWNoZVdpdGhvdXRNYW5p
ZmVzdFVSTChGcmFtZSogZnJhbWUpCiAgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlci0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+YXBwbGljYXRpb25DYWNoZSgpKTsKIAogICAgIC8vIERvbid0IGFj
Y2VzcyBhbnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAg
ICBpZiAoZnJhbWUtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHx8ICFmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNo
ZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7Cisg
ICAgaWYgKGZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZy
YW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAg
ICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQs
IGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6RVJST1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJh
bWUqIGZyYW1lLCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAg
Ly8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBl
bmFibGVkLgotICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBs
aWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSkpIHsKKyAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8
fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0
aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgewogICAgICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmlzRW1w
dHkoKSk7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7CiAgICAg
ICAgIEFTU0VSVCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA5YzY5
YmVmLi43ZmU1NjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0OjphYm9ydCgpCiAKIGJvb2wgQXBwbGljYXRpb25DYWNoZUhvc3Q6
OmlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKQogewotICAgIHJldHVybiBtX2RvY3VtZW50TG9h
ZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNldHRpbmdzKCkub2Zm
bGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1lbnRMb2FkZXItPmZy
YW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHJldHVybiBt
X2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpICYmIG1fZG9jdW1lbnRMb2FkZXItPmZyYW1lKCktPnNl
dHRpbmdzKCkub2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgJiYgIW1fZG9jdW1l
bnRMb2FkZXItPmZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKIH0KIAog
Ym9vbCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6aXNBcHBsaWNhdGlvbkNhY2hlQmxvY2tlZEZvclJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDk0YWRhZTcuLmU0YWRlYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTIw
NCw3ICsyMDQsNyBAQCB2b2lkIEljb25Db250cm9sbGVyOjpjb250aW51ZUxvYWRXaXRoRGVjaXNp
b24oSWNvbkxvYWREZWNpc2lvbiBpY29uTG9hZERlY2lzaW9uKQogICAgIEFTU0VSVChpY29uTG9h
ZERlY2lzaW9uICE9IEljb25Mb2FkVW5rbm93bik7CiAKICAgICAvLyAgRklYTUUgKDxyZGFyOi8v
cHJvYmxlbS85MTY4NjA1PikgLSBXZSBzaG91bGQgc3VwcG9ydCBpbi1tZW1vcnktb25seSBwcml2
YXRlIGJyb3dzaW5nIGljb25zIGluIGFzeW5jaHJvbm91cyBpY29uIGRhdGFiYXNlIG1vZGUuCi0g
ICAgaWYgKGljb25EYXRhYmFzZSgpLnN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpICYmIG1fZnJh
bWUucGFnZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICBpZiAo
aWNvbkRhdGFiYXNlKCkuc3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkgJiYgbV9mcmFtZS5wYWdl
KCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChp
Y29uTG9hZERlY2lzaW9uID09IEljb25Mb2FkTm8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGY4
M2NiMTQuLjYyZTlkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFBh
Z2U6OlBhZ2UoUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQogICAgICwgbV9sYXN0U3BhdGlhbE5h
dmlnYXRpb25DYW5kaWRhdGVzQ291bnQoMCkgLy8gTk9URTogT25seSBjYWxsZWQgZnJvbSBJbnRl
cm5hbHMgZm9yIFNwYXRpYWwgTmF2aWdhdGlvbiB0ZXN0aW5nLgogICAgICwgbV9mcmFtZXNIYW5k
bGluZ0JlZm9yZVVubG9hZEV2ZW50KDApCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoc3RkOjpt
b3ZlKHBhZ2VDbGllbnRzLnZpc2l0ZWRMaW5rU3RvcmUpKQotICAgICwgbV9zZXNzaW9uSUQoU2Vz
c2lvbklEOjplbXB0eVNlc3Npb25JRCgpKQorICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCkpCiB7CiAgICAgQVNTRVJUKG1fZWRpdG9yQ2xpZW50KTsKIApAQCAt
MTA4MCwxOSArMTA4MCwxMiBAQCB2b2lkIFBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdl
ZCgpCiAgICAgICAgIHZpZXdzW2ldLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKIH0K
IAotdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQordm9pZCBQYWdlOjpl
bmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQog
ewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fc2V0dGluZ3MtPnByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKTsKKyAgICAvLyBEb24ndCBhbGxvdyBjaGFuZ2luZyB0aGUgbGVnYWN5
IHByaXZhdGUgYnJvd3Npbmcgc3RhdGUgaWYgd2UgaGF2ZSBzZXQgYSBzZXNzaW9uIElELgorICAg
IEFTU0VSVChtX3Nlc3Npb25JRCA9PSBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSB8fCBt
X3Nlc3Npb25JRCA9PSBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSk7CiAKLSAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnByaXZh
dGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7Ci0KLSAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5W
aWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFr
ZXMKLSAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5v
dCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCi0gICAgYXV0byB2aWV3cyA9IHBsdWdpblZpZXdzKCk7
Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmlld3Muc2l6ZSgpOyArK2kpCi0gICAg
ICAgIHZpZXdzW2ldLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCk7CisgICAgc2V0U2Vzc2lvbklEKHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPyBTZXNz
aW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpKTsKIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTE1MTQsMTkgKzE1MDcsMjkg
QEAgVmlzaXRlZExpbmtTdG9yZSYgUGFnZTo6dmlzaXRlZExpbmtTdG9yZSgpCiAKIFNlc3Npb25J
RCBQYWdlOjpzZXNzaW9uSUQoKSBjb25zdAogewotICAgIGlmIChtX3Nlc3Npb25JRC5pc1ZhbGlk
KCkpCi0gICAgICAgIHJldHVybiBtX3Nlc3Npb25JRDsKLQotICAgIGlmIChzZXR0aW5ncygpLnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIFNlc3Npb25JRDo6bGVnYWN5
UHJpdmF0ZVNlc3Npb25JRCgpOwotCi0gICAgcmV0dXJuIFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpOworICAgIHJldHVybiBtX3Nlc3Npb25JRDsKIH0KIAogdm9pZCBQYWdlOjpzZXRTZXNz
aW9uSUQoU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzVmFs
aWQoKSk7CisKKyAgICBib29sIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCA9IChzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSAhPSBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKKwogICAgIG1f
c2Vzc2lvbklEID0gc2Vzc2lvbklEOworCisgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQorICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsK
KworICAgIC8vIENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3Vy
ZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0YWtlcworICAgIC8vIGZyb20gYmVsb3cgcHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZldGltZS4KKwor
ICAgIGZvciAoYXV0byYgdmlldyA6IHBsdWdpblZpZXdzKCkpCisgICAgICAgIHZpZXctPnByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSk7CisKIH0KIAog
UGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZmVjMDAy
Yy4uMzkwMmE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTMxMyw3ICszMTMsNiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGRuc1ByZWZldGNoaW5nU3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBzdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKLSAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCgpOwogCiAgICAgdm9pZCBzZXREZWJ1Z2dlcihKU0M6OkRlYnVnZ2VyKik7CiAgICAgSlND
OjpEZWJ1Z2dlciogZGVidWdnZXIoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyOyB9CkBAIC00
MTAsNyArNDA5LDggQEAgcHVibGljOgogCiAgICAgU2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0U2Vzc2lvbklEKFNlc3Npb25JRCk7Ci0gICAgYm9vbCBpc1Nlc3Npb25J
RFNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklELmlzVmFsaWQoKTsgfQorICAgIHZvaWQg
ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7
CisgICAgYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCk7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRHcm91cCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcAppbmRleCAzNDZiMDEzLi5lYTQ1ZTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyCiAgICAgaWYgKHNvdXJjZSA9PSBNZXNzYWdlU291cmNlOjpDU1MpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCkpCisgICAgaWYgKG1fcGFnZS51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCkuYWRkTWVzc2FnZVRv
Q29uc29sZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHVybCk7CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBQYWdlQ29uc29sZTo6bWVzc2FnZVdpdGhU
eXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLAogICAgIGJv
b2wgZ290TWVzc2FnZSA9IGFyZ3VtZW50cy0+Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKG1lc3Nh
Z2UpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSgm
bV9wYWdlLCBNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
ZXhlYywgYXJndW1lbnRzKTsKIAotICAgIGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5wcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkpCisgICAgaWYgKG1fcGFnZS51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZ290TWVzc2FnZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAppbmRleCAzMmI1YTdmLi5lNmQyZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cApAQCAtMTcxLDcgKzE3MSw2IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAg
ICwgbV9pc0phdmFFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxG
aWxlcyh0cnVlKQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCi0gICAg
LCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2FyZUltYWdlc0VuYWJs
ZWQodHJ1ZSkKICAgICAsIG1fYXJlUGx1Z2luc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzU2Ny
aXB0RW5hYmxlZChmYWxzZSkKQEAgLTQyNywxNSArNDI2LDYgQEAgdm9pZCBTZXR0aW5nczo6c2V0
UGx1Z2luc0VuYWJsZWQoYm9vbCBhcmVQbHVnaW5zRW5hYmxlZCkKICAgICBQYWdlOjpyZWZyZXNo
UGx1Z2lucyhmYWxzZSk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQotewotICAgIGlmIChtX3ByaXZhdGVC
cm93c2luZ0VuYWJsZWQgPT0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkID0gcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZDsKLSAgICBtX3BhZ2UtPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpOwotfQotCiB2b2lk
IFNldHRpbmdzOjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFVSTCYgdXNlclN0eWxl
U2hlZXRMb2NhdGlvbikKIHsKICAgICBpZiAobV91c2VyU3R5bGVTaGVldExvY2F0aW9uID09IHVz
ZXJTdHlsZVNoZWV0TG9jYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNTE2ZjBkYy4u
ZDQ3MzgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMTQ2LDcgKzE0Niw2IEBAIHB1Ymxp
YzoKICAgICAvLyAgLSBIVFRQIENvb2tpZXMKICAgICAvLyAgLSBQbHVnLWlucyAodGhhdCBzdXBw
b3J0IE5QTlZwcml2YXRlTW9kZUJvb2wpCiAgICAgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdFbmFi
bGVkKGJvb2wpOwotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsgfQogCiAgICAgdm9pZCBzZXRETlNQcmVmZXRj
aGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBkbnNQcmVmZXRjaGluZ0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZDsgfQpAQCAtMzAxLDcgKzMwMCw2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9pc0ph
dmFFbmFibGVkRm9yTG9jYWxGaWxlcyA6IDE7CiAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSA6IDE7Ci0gICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwogICAg
IGJvb2wgbV9hcmVJbWFnZXNFbmFibGVkIDogMTsKICAgICBib29sIG1fYXJlUGx1Z2luc0VuYWJs
ZWQgOiAxOwogICAgIGJvb2wgbV9pc1NjcmlwdEVuYWJsZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMjY4MDZmNi4uOTQ4YzM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMzU0LDcgKzEzNTQsNyBAQCBOUEVycm9yIFBsdWdp
blZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAg
ICAgUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2UoKTsKICAgICAgICAgaWYgKCFwYWdl
KQogICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgICAgICooKE5Q
Qm9vbCopdmFsdWUpID0gcGFnZS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
CisgICAgICAgICooKE5QQm9vbCopdmFsdWUpID0gcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24o
KTsKICAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggYzFiMjM3Yy4uNDU0
MWI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZp
ZWxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmllbGQ6OmFkZFNlYXJjaFJl
c3VsdCgpCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGZyYW1lKCkuc2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYg
KGZyYW1lKCkucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpbnQgc2l6ZSA9IHN0YXRpY19jYXN0PGludD4obV9yZWNlbnRTZWFyY2hlcy5zaXpl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKaW5kZXggYzQ4NGI5Ni4uODFiYWU2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgYm9vbCBT
dG9yYWdlOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0CiAKIGJvb2wgU3RvcmFnZTo6aXNEaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QK
IHsKLSAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdF
bmFibGVkKCkpCisgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9u
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5zdG9y
YWdlVHlwZSgpID09IExvY2FsU3RvcmFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IGE1YTVlNjku
LjM4MmU0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNC0wMy0yNyAg
TWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBi
cm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KKworICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3Zp
ZXdfcHJpdl9uZXcpOiBDaGFuZ2UgV2ViQ29yZTo6U2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSB0byBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpLgorICAgICAgICAoZXdr
X3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldCk6IENoYW5nZSBXZWJDb3JlOjpTZXR0
aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJsZUxlZ2FjeVBy
aXZhdGVCcm93c2luZygpLgorCiAyMDE0LTAzLTIzICBIeW93b24gS2ltICA8aHcxMDA4LmtpbUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBNb3ZlIGFsbCBFRkwgdHlwZWRlZnMgaW50byBFZmxUeXBl
ZGVmcy5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggNTc2NTQ1OC4uMzlkNTMw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC02Niw2ICs2Niw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNlc3Npb25JRC5o
IgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiVGlsZWRCYWNraW5nU3RvcmUuaCIKQEAgLTgwMCw3ICs4MDEsNyBAQCBzdGF0
aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc21hcnREYXRhKQogI2VuZGlmCiAgICAgcHJpdi0+c2V0dGluZ3Muc2NyaXB0c0Nh
bkFjY2Vzc0NsaXBib2FyZCA9IHBhZ2VTZXR0aW5ncy5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJv
YXJkKCkgJiYgcGFnZVNldHRpbmdzLkRPTVBhc3RlQWxsb3dlZCgpOwogICAgIHByaXYtPnNldHRp
bmdzLnJlc2l6YWJsZVRleHRhcmVhcyA9IHBhZ2VTZXR0aW5ncy50ZXh0QXJlYXNBcmVSZXNpemFi
bGUoKTsKLSAgICBwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgPSBwYWdlU2V0dGluZ3Mu
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHByaXYtPnNldHRpbmdzLnByaXZhdGVCcm93
c2luZyA9IHByaXYtPnBhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiAgICAgcHJpdi0+c2V0
dGluZ3MuY2FyZXRCcm93c2luZyA9IHBhZ2VTZXR0aW5ncy5jYXJldEJyb3dzaW5nRW5hYmxlZCgp
OwogICAgIHByaXYtPnNldHRpbmdzLnNwYXRpYWxOYXZpZ2F0aW9uID0gcGFnZVNldHRpbmdzLnNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCgpOwogICAgIHByaXYtPnNldHRpbmdzLmxvY2FsU3RvcmFn
ZSA9IHBhZ2VTZXR0aW5ncy5sb2NhbFN0b3JhZ2VFbmFibGVkKCk7CkBAIC0yNDIzLDcgKzI0MjQs
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19wcml2YXRlX2Jyb3dzaW5nX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgRWluYV9Cb29sCiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogICAgIGVuYWJsZSA9ICEhZW5hYmxlOwogICAg
IGlmIChwcml2LT5zZXR0aW5ncy5wcml2YXRlQnJvd3NpbmcgIT0gZW5hYmxlKSB7Ci0gICAgICAg
IHByaXYtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGUp
OworICAgICAgICBwcml2LT5wYWdlLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoZW5hYmxl
KTsKICAgICAgICAgcHJpdi0+c2V0dGluZ3MucHJpdmF0ZUJyb3dzaW5nID0gZW5hYmxlOwogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA5MThiZDQyLi4wOWVlNWE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBI
b2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcg
d2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3Yu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6IENo
YW5nZSBXZWJDb3JlOjpTZXR0aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6
dXNlc0VwaGVtZXJhbFNlc3Npb24oKS4KKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6IENoYW5nZSBTZXR0aW5nczo6c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJsZVByaXZhdGVCcm93c2luZygpLgorICAgICAg
ICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKwogMjAxNC0wMy0yNSAgTWFydGluIFJvYmluc29uICA8
bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVtb3ZlIHRoZSBhdXRvdG9v
bHMgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA5ZTdlZGM0Li5iYjk4MjJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW0K
IAogCiAgICAgQ3JlZGVudGlhbFN0b3JhZ2VNb2RlIGNyZWRlbnRpYWxTdG9yYWdlTW9kZTsKLSAg
ICBpZiAoY29yZSh2aWV3KS0+c2V0dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisg
ICAgaWYgKGNvcmUodmlldyktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCiAgICAgICAgIGNyZWRl
bnRpYWxTdG9yYWdlTW9kZSA9IERpc2FsbG93UGVyc2lzdGVudFN0b3JhZ2U7CiAgICAgZWxzZQog
ICAgICAgICBjcmVkZW50aWFsU3RvcmFnZU1vZGUgPSBBbGxvd1BlcnNpc3RlbnRTdG9yYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGE4ZWVhMzYu
LjE3MzQxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
QEAgLTM2MDEsNyArMzYwMSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVf
c2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBjb3JlU2V0dGluZ3Muc2V0VGV4
dEFyZWFzQXJlUmVzaXphYmxlKHNldHRpbmdzUHJpdmF0ZS0+cmVzaXphYmxlVGV4dEFyZWFzKTsK
ICAgICBjb3JlU2V0dGluZ3Muc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihVUkwoVVJMKCksIHNl
dHRpbmdzUHJpdmF0ZS0+dXNlclN0eWxlc2hlZXRVUkkuZGF0YSgpKSk7CiAgICAgY29yZVNldHRp
bmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVEZXZl
bG9wZXJFeHRyYXMpOwotICAgIGNvcmVTZXR0aW5ncy5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nKTsKKyAgICBjb3JlKHdlYlZp
ZXcpLT5lbmFibGVMZWdhY3lQcml2YXRlQnJvd3Npbmcoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVQ
cml2YXRlQnJvd3NpbmcpOwogICAgIGNvcmVTZXR0aW5ncy5zZXRDYXJldEJyb3dzaW5nRW5hYmxl
ZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUNhcmV0QnJvd3NpbmcpOwogICAgIGNvcmVTZXR0aW5n
cy5zZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlSFRNTDVMb2Nh
bFN0b3JhZ2UpOwogICAgIGNvcmVTZXR0aW5ncy5zZXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgo
c2V0dGluZ3NQcml2YXRlLT5odG1sNUxvY2FsU3RvcmFnZURhdGFiYXNlUGF0aC5kYXRhKCkpOwpA
QCAtMzczMyw3ICszNzMzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldHRpbmdz
X25vdGlmeShXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MsIEdQYXIKICAgICBlbHNlIGlm
IChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiKSkKICAg
ICAgICAgc2V0dGluZ3Muc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dldF9ib29s
ZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFi
bGUtcHJpdmF0ZS1icm93c2luZyIpKQotICAgICAgICBzZXR0aW5ncy5zZXRQcml2YXRlQnJvd3Np
bmdFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CisgICAgICAgIGNvcmUod2Vi
VmlldyktPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZyhnX3ZhbHVlX2dldF9ib29sZWFuKCZ2
YWx1ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtY2Fy
ZXQtYnJvd3NpbmciKSkKICAgICAgICAgc2V0dGluZ3Muc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQo
Z192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUpKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDE0ZGRmOGMuLmY3MTQ3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxNC0wMy0yNyAgTWFydGluIEhvY2sgIDxtaG9ja0BhcHBsZS5jb20+
CisKKyAgICAgICAgVW5pZnkgcHJpdmF0ZSBicm93c2luZyB3aXRoIHNlc3Npb25zLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDk5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOiBDaGFuZ2UgV2ViQ29yZTo6U2V0dGluZ3M6
OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdlOjpzZXNzaW9uSUQoKS5pc0VwaGVtZXJh
bCgpLgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlJ
dGVtRm9yUGFnZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbTogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
dG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOiBDaGFuZ2UgV2Vi
Q29yZTo6U2V0dGluZ3M6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdlOjplbmFi
bGVMZWdhY3lQcml2YXRlQnJvd3NpbmcoKS4KKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5j
ZXNDaGFuZ2VkOl0pOgorCiAyMDE0LTAzLTI3ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgogCiAgICAgICAgIENvbm5lY3Rpb246OmRpc3BhdGNoT25lTWVzc2FnZSgpIGNhbiBi
ZSByZS1lbnRlcmVkIHdoaWxlIGhhbmRsaW5nIENtZC1rZXkgbWVudQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpp
bmRleCBmNzVmMTg1Li4wNDBhNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTExNCw3ICsxMTE0
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1G
b3JQYWdlKCkKICAgICBIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0gPSAwOwogCiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5wYWdlKCkpIHsKLSAgICAgICAgaWYg
KCFwYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAgICAgICAgaWYg
KCFwYWdlLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICAgICAgaGlzdG9yeUl0
ZW0gPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmN1cnJlbnRJdGVtKCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbQppbmRleCAwZGI0ZjgwLi43MWFjZTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW0KQEAgLTExMyw3ICsxMTMsNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0
dGluZ3MoKS5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJh
bWUoKS0+cGFnZSgpLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4g
KnByaXZhdGVTZXNzaW9uKCk7CiAKICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpp
bmRleCBkMmFmY2M2Li43YjFjYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC0yMjQ3LDcgKzIyNDcsNyBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlbGZSZXRhaW5XaGlsZUxv
YWRpbmdRdWlyaygpCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBzZXR0aW5ncy5zZXRFeHBlcmlt
ZW50YWxOb3RpZmljYXRpb25zRW5hYmxlZChbcHJlZmVyZW5jZXMgZXhwZXJpbWVudGFsTm90aWZp
Y2F0aW9uc0VuYWJsZWRdKTsKICNlbmRpZgotICAgIHNldHRpbmdzLnNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoW3ByZWZlcmVuY2VzIHByaXZhdGVCcm93c2luZ0VuYWJsZWRdKTsKKyAgICBfcHJp
dmF0ZS0+cGFnZS0+ZW5hYmxlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nKFtwcmVmZXJlbmNlcyBwcml2
YXRlQnJvd3NpbmdFbmFibGVkXSk7CiAgICAgc2V0dGluZ3Muc2V0U2Fuc1NlcmlmRm9udEZhbWls
eShbcHJlZmVyZW5jZXMgc2Fuc1NlcmlmRm9udEZhbWlseV0pOwogICAgIHNldHRpbmdzLnNldFNl
cmlmRm9udEZhbWlseShbcHJlZmVyZW5jZXMgc2VyaWZGb250RmFtaWx5XSk7CiAgICAgc2V0dGlu
Z3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHld
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwppbmRleCBhNzJmOWY0Li45Y2NmMjk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUu
Y29tPgorCisgICAgICAgIFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6IENoYW5nZSBXZWJDb3JlOjpTZXR0
aW5nczo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OnNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCkuCisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlz
dG9yeUl0ZW1Gb3JQYWdlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzdG9yYWdlU2Vzc2lvbik6CisgICAgICAgICogV2ViVmlldy5jcHA6IENoYW5nZSBXZWJD
b3JlOjpTZXR0aW5nczo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJs
ZUxlZ2FjeVByaXZhdGVCcm93c2luZygpLgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVy
ZW5jZXNDaGFuZ2VkKToKKwogMjAxNC0wMy0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIFN0cmluZzo6ZGVwcmVjYXRlZENoYXJhY3RlcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCA4OGRjMzUxLi4yODQwNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC04MDMsNyArODAzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFs
SGlzdG9yeUl0ZW1Gb3JQYWdlKCkKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+
d2ViVmlldygpOwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB3ZWJWaWV3LT5wYWdlKCkpIHsKLSAg
ICAgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSkKKyAg
ICAgICAgaWYgKCFwYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICAgICAgaGlz
dG9yeUl0ZW0gPSBwYWdlLT5iYWNrRm9yd2FyZCgpLmN1cnJlbnRJdGVtKCk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IGJmNTllZTcuLjcxMzM5N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChmcmFtZSgpICYmIGZy
YW1lKCktPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpKQorICAgIGlmIChmcmFt
ZSgpICYmIGZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAgICAgICAg
cmV0dXJuICpwcml2YXRlU2Vzc2lvbigpOwogCiAgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDcw
NTEzY2QyLi41YTg0NzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNDc4Nyw3ICs0Nzg3LDcg
QEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQogICAgIGVsc2UKICAgICAgICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKICNlbmRpZgotICAgIHNl
dHRpbmdzLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoISFlbmFibGVkKTsKKyAgICBtX3BhZ2Ut
PmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZyghIWVuYWJsZWQpOwogCiAgICAgaHIgPSBwcmVm
ZXJlbmNlcy0+c2Fuc1NlcmlmRm9udEZhbWlseSgmc3RyKTsKICAgICBpZiAoRkFJTEVEKGhyKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMWY5NDUyLi41NDcwMzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTQtMDMtMjcgIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgorCisgICAgICAg
IFVuaWZ5IHByaXZhdGUgYnJvd3Npbmcgd2l0aCBzZXNzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA5OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6IENoYW5nZSBXZWJQYWdlOjppc1VzaW5nRXBo
ZW1lcmFsU2Vzc2lvbigpIHRvIFdlYlBhZ2U6OnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkuCisgICAg
ICAgIChXS0J1bmRsZVBhZ2VJc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6IENoYW5nZSBTZXR0aW5n
czo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIHRvIFBhZ2U6OmVuYWJsZUxlZ2FjeVByaXZh
dGVCcm93c2luZygpLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwOiBDaGFuZ2UgU2V0dGluZ3M6OnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSB0byBQYWdl
Ojp1c2VzRXBoZW1lcmFsU2Vzc2lvbigpLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpp
c1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcDogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnVzZXNFcGhlbWVyYWxTZXNzaW9uKTogUmVuYW1lZCBmcm9tIGlzVXNpbmdFcGhl
bWVyYWxTZXNzaW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRTZXNzaW9uSUQpOiBF
bnN1cmUgc2Vzc2lvbiBiZWZvcmUgc2V0dGluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXMpOiBTZXQgc2Vzc2lvbiB0byBsZWdhY3kgcHJpdmF0ZSBzZXNzaW9u
IGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lvbklEKTogTW92ZWQg
dG8gaGVhZGVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFsU2Vz
c2lvbik6IFJlbmFtZWQgdG8gdXNlc0VwaGVtZXJhbFNlc3Npb24uCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Vzc2lv
bklEKTogSnVzdCBjYWxsIGRvd24gdG8gbV9wYWdlLgorCiAyMDE0LTAzLTI3ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIFdLRnJhbWVIYW5k
bGUgdG8gX1dLRnJhbWVIYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCA2
NzFjYjVjLi5mYmY5MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC01NjEs
NSArNTYxLDUgQEAgdm9pZCBXS0J1bmRsZVBhZ2VTdG9wRXh0ZW5kaW5nSW5jcmVtZW50YWxSZW5k
ZXJpbmdTdXBwcmVzc2lvbihXS0J1bmRsZVBhZ2VSZWYgcGEKIAogYm9vbCBXS0J1bmRsZVBhZ2VJ
c1VzaW5nRXBoZW1lcmFsU2Vzc2lvbihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKIHsKLSAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5pc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbigpOworICAgIHJl
dHVybiB0b0ltcGwocGFnZVJlZiktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCmluZGV4IDE1M2I2NzIuLjM0YjNjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBib28KICNlbmRpZgog
ICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IFBhZ2VHcm91cDo6cGFnZUdyb3VwKHBh
Z2VHcm91cC0+aWRlbnRpZmllcigpKS0+cGFnZXMoKTsKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+
OjppdGVyYXRvciBpdGVyID0gcGFnZXMuYmVnaW4oKTsgaXRlciAhPSBwYWdlcy5lbmQoKTsgKytp
dGVyKQotICAgICAgICAoKml0ZXIpLT5zZXR0aW5ncygpLnNldFByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoZW5hYmxlZCk7CisgICAgICAgICgqaXRlciktPmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2lu
ZyhlbmFibGVkKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0UG9wdXBCbG9ja2luZ0Vu
YWJsZWQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgYm9vbCBlbmFibGVkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGQ3
NWFjMTMuLmM3YTBlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHAKQEAgLTE1MzQsNyArMTUzNCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICBpZiAoIWZyYW1lKCktPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1l
bnQoKS0+dG9wT3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBm
cmFtZSgpLT5zZXR0aW5ncygpLnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4g
ZnJhbWUoKS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQogCiBib29sIFBsdWdp
blZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXgg
Nzc3MzdkNC4uMTQxZDE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkZyYW1lKiBmcmFtZSkKIAogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0CiB7Ci0gICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCkpCisgICAgaWYgKGZyYW1lKCkgJiYgZnJhbWUoKS0+cGFnZSgp
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gKlNlc3Npb25UcmFja2Vy
OjpzZXNzaW9uKFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKIAogICAgIHJl
dHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDVkNDEz
MzIuLmEyYTUyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5j
bHVkZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSAi
U2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIldLU2hhcmVkQVBJQ2Fz
dC5oIgpAQCAtMjE3NSwyNCArMjE3NiwxMSBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVySG9zdGlu
Z01vZGUodW5zaWduZWQgbGF5ZXJIb3N0aW5nTW9kZSkKICAgICAgICAgcGx1Z2luVmlldy0+c2V0
TGF5ZXJIb3N0aW5nTW9kZShtX2xheWVySG9zdGluZ01vZGUpOwogfQogCi1TZXNzaW9uSUQgV2Vi
UGFnZTo6c2Vzc2lvbklEKCkgY29uc3QKLXsKLSAgICBpZiAobV9wYWdlLT5pc1Nlc3Npb25JRFNl
dCgpKQotICAgICAgICByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQoKTsKLQotICAgIHJldHVybiBt
X3BhZ2UtPnNldHRpbmdzKCkucHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID8gU2Vzc2lvbklEOjps
ZWdhY3lQcml2YXRlU2Vzc2lvbklEKCkgOiBTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
LX0KLQotYm9vbCBXZWJQYWdlOjppc1VzaW5nRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCk7Ci19Ci0KIHZvaWQgV2ViUGFnZTo6
c2V0U2Vzc2lvbklEKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgbV9wYWdlLT5zZXRTZXNz
aW9uSUQoc2Vzc2lvbklEKTsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oc2Vz
c2lvbklEKTsKKyAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9uSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2Fk
SUQpCkBAIC0yNDk3LDEwICsyNDg1LDEwIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5j
ZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0dGluZ3Muc2V0TG9j
YWxTdG9yYWdlRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OmxvY2FsU3RvcmFnZUVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFhTU0F1ZGl0
b3JFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6eHNz
QXVkaXRvckVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldEZyYW1lRmxhdHRlbmluZ0Vu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpmcmFtZUZs
YXR0ZW5pbmdFbmFibGVkS2V5KCkpKTsKLSAgICBpZiAobV9wYWdlLT5pc1Nlc3Npb25JRFNldCgp
KQotICAgICAgICBzZXR0aW5ncy5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKG1fcGFnZS0+c2Vz
c2lvbklEKCkuaXNFcGhlbWVyYWwoKSk7Ci0gICAgZWxzZQotICAgICAgICBzZXR0aW5ncy5zZXRQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZEtleSgpKSk7CisgICAgaWYgKHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6cHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZEtleSgpKSAmJiAhdXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKKyAgICAgICAgc2V0U2Vzc2lvbklE
KFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNlc3Npb25JRCgpKTsKKyAgICBlbHNlIGlmICghc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpwcml2YXRlQnJvd3NpbmdF
bmFibGVkS2V5KCkpICYmIHNlc3Npb25JRCgpID09IFNlc3Npb25JRDo6bGVnYWN5UHJpdmF0ZVNl
c3Npb25JRCgpKQorICAgICAgICBzZXRTZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpOwogICAgIHNldHRpbmdzLnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpkZXZlbG9wZXJFeHRyYXNFbmFibGVk
S2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRKYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKHN0
b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6amF2YVNjcmlwdEV4cGVy
aW1lbnRzRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0VGV4dEFyZWFzQXJlUmVzaXph
YmxlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGV4dEFyZWFz
QXJlUmVzaXphYmxlS2V5KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGI2ZjhkOWQuLmY5YjhlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTkzLDggKzE5Myw5IEBAIHB1YmxpYzoKIAog
ICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgp
OyB9CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KLSAg
ICBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1VzaW5n
RXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0OworICAgIFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9u
SUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOyB9CisgICAgYm9vbCB1c2Vz
RXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+dXNlc0VwaGVtZXJhbFNl
c3Npb24oKTsgfQorCiAgICAgdm9pZCBzZXRTZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEKTsK
IAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjQ1ZjM1My4uYWY0MDc5
MiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDE0LTAzLTI3ICBNYXJ0aW4gSG9jayAgPG1ob2NrQGFwcGxlLmNvbT4K
KworICAgICAgICBVbmlmeSBwcml2YXRlIGJyb3dzaW5nIHdpdGggc2Vzc2lvbnMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwOTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIEFkZCBhbiBBUEkg
dGVzdCBmb3IgZXBoZW1lcmFsIHNlc3Npb25zIHNpbWlsYXIgdG8gUHJpdmF0ZUJyb3dzaW5nUHVz
aFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFj
ay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0
b3J5Q2FsbGJhY2suY3BwOiBBbHNvIHRlc3QgdG8gbWFrZSBzdXJlIHByaXZhdGUgYnJvd3Npbmcg
Y2FuIGJlIGRpc2FibGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkTmF2aWdhdGVXaXRo
b3V0TmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDE0LTAzLTI2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIEV4cG9zZSBEb3dubG9hZENsaWVudDo6ZGlkRmFpbCgpIGFuZCBEb3dubG9hZENsaWVu
dDo6ZGlkQ2FuY2VsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGJiYjU3MC4uZTFhZTdm
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNyw2ICsxMDcsNyBAQAogCQk1MkNCNDc0
MTE0NDhGQjkzMDA4NzM5OTUgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmdXaXRoTm9uRGlyZWN0
b3J5VVJMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyQ0I0NzQwMTQ0OEZCOTMwMDg3Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhO
b25EaXJlY3RvcnlVUkwuY3BwICovOyB9OwogCQk1MkU1Q0U0NjE0RDIxRTlEMDAzQjJCRDggLyog
UGFyZW50RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJFNUNFNDUxNEQyMUU5RDAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lLmNwcCAqLzsgfTsK
IAkJNTJFNUNFNDkxNEQyMUVBQjAwM0IyQkQ4IC8qIFBhcmVudEZyYW1lX0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkU1Q0U0ODE0RDIx
RUFCMDAzQjJCRDggLyogUGFyZW50RnJhbWVfQnVuZGxlLmNwcCAqLzsgfTsKKwkJNzVGMzEzNDAx
OEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlz
dG9yeUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJNzZFMTgyREExNTQ3NTUwMTAwRjFGQUREIC8qIFdp
bGxTZW5kU3VibWl0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZl
bnQuY3BwICovOyB9OwogCQk3NkUxODJERDE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJt
aXRFdmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRf
QnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREYxNTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3Vi
bWl0dGluZy1mb3JtLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGlu
Zy1mb3JtLmh0bWwgKi87IH07CkBAIC00MzMsNiArNDM0LDcgQEAKIAkJNTJDQjQ3NDAxNDQ4RkI5
MzAwODczOTk1IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aE5vbkRpcmVjdG9yeVVSTC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2FkQWx0ZXJuYXRlSFRN
TFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MkU1Q0U0NTE0RDIxRTlEMDAzQjJCRDggLyogUGFyZW50RnJhbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyZW50RnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MkU1Q0U0ODE0RDIxRUFCMDAzQjJCRDggLyogUGFyZW50RnJh
bWVfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcmVu
dEZyYW1lX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1RjMxMzNG
MThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFs
U2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzZFMTgyRDkxNTQ3NTUwMTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2lsbFNlbmRTdWJt
aXRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRDMTU0NzU2
OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2RTE4MkRFMTU0NzVBODMwMEYxRkFERCAv
KiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0g
ImF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzY2LDYgKzc2OCw3IEBACiAJCQkJRjZGNDlDNjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdp
bmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovLAogCQkJCUY2RjQ5QzY2MTU1NDVDOEQwMDA3RjM5
RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgKi8sCiAJCQkJQzA0NUY5
NDQxMzg1QzJFOTAwQzBGM0NEIC8qIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAg
Ki8sCisJCQkJNzVGMzEzM0YxOEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNo
U3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgKi8sCiAJCQkJMUE1RkVGREMxMjcwRTJBMzAwMEUy
OTIxIC8qIEV2YWx1YXRlSmF2YVNjcmlwdC5jcHAgKi8sCiAJCQkJQkNDOEI5NUExMjYxMUY0NzAw
REU0NkE0IC8qIEZhaWxlZExvYWQuY3BwICovLAogCQkJCTFBMDJDODRFMTI1RDRBODQwMEUzRjRC
RCAvKiBGaW5kLmNwcCAqLywKQEAgLTExNTEsNiArMTE1NCw3IEBACiAJCQkJMjk3MjM0QjQxNzNB
RDA0ODAwOTgzNjAxIC8qIEN1c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWUubW0gaW4gU291cmNl
cyAqLywKIAkJCQkzNzkwMjhCNjE0RkFCRDkyMDA3RTZCNDMgLyogQWNjZXB0c0ZpcnN0TW91c2Uu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkyOTE4NjFGRjE3QkQ0REM3MDBENEU0MUUgLyogU3RvcExv
YWRpbmdGcm9tRGlkRmluaXNoTG9hZGluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTc1RjMxMzQw
MThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZGMUI0NDQxNUNBNDM0RjAwRDFFNEJGIC8q
IEF0b21pY1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTVGMTFBMDE1MTY4MzRGMDA5
MTU5MTYgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTAwQ0Q5RjYz
MTVCRTMxMkMwMDJEQTJDRSAvKiBCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNz
aW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0VwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMwMzE5NAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FcGhlbWVyYWxTZXNz
aW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5j
bHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK3N0YXRpYyBib29sIHRlc3REb25lOworCitzdGF0aWMgdm9pZCBkaWROYXZpZ2F0ZVdpdGhO
YXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlUmVmIHBhZ2UsIFdLTmF2
aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdo
ZW4gbmF2aWdhdGluZyBpbiBQcml2YXRlIEJyb3dzaW5nLgorICAgIEZBSUwoKTsKK30KKworc3Rh
dGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiBwYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICB0ZXN0RG9u
ZSA9IHRydWU7Cit9CisKK1RFU1QoV2ViS2l0MiwgRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5v
SGlzdG9yeUNhbGxiYWNrKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4
dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7CisKKyAgICBXS0NvbnRleHRIaXN0b3J5Q2xp
ZW50VjAgaGlzdG9yeUNsaWVudDsKKyAgICBtZW1zZXQoJmhpc3RvcnlDbGllbnQsIDAsIHNpemVv
ZihoaXN0b3J5Q2xpZW50KSk7CisKKyAgICBoaXN0b3J5Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
CisgICAgaGlzdG9yeUNsaWVudC5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5h
dmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhOworCisgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVu
dChjb250ZXh0LmdldCgpLCAmaGlzdG9yeUNsaWVudC5iYXNlKTsKKworICAgIFBsYXRmb3JtV2Vi
VmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworCisgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAg
cGFnZUxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJnBhZ2VMb2FkZXJDbGllbnQsIDAsIHNpemVv
ZihwYWdlTG9hZGVyQ2xpZW50KSk7CisKKyAgICBwYWdlTG9hZGVyQ2xpZW50LmJhc2UudmVyc2lv
biA9IDA7CisgICAgcGFnZUxvYWRlckNsaWVudC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWUgPSBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU7CisKKyAgICBXS1BhZ2VT
ZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmcGFnZUxvYWRlckNsaWVudC5iYXNl
KTsKKworICAgIFdLU2Vzc2lvblJlZiBzZXNzaW9uID0gV0tTZXNzaW9uQ3JlYXRlKHRydWUpOwor
ICAgIFdLUGFnZVNldFNlc3Npb24od2ViVmlldy5wYWdlKCksIHNlc3Npb24pOworCisgICAgV0tS
ZXRhaW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdLLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJj
ZSgicHVzaC1zdGF0ZSIsICJodG1sIikpOworICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdl
KCksIHVybC5nZXQoKSk7CisKKyAgICBVdGlsOjpydW4oJnRlc3REb25lKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL1ByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Qcml2YXRlQnJvd3NpbmdQdXNo
U3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAKaW5kZXggM2QwZGIzZC4uYjUwZjE0MSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1ByaXZhdGVCcm93c2luZ1B1
c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvUHJpdmF0ZUJyb3dzaW5nUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3Bw
CkBAIC0zMSwxNyArMzEsMjMgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0
aWMgYm9vbCB0ZXN0RG9uZTsKK3N0YXRpYyBib29sIGRpZE5hdmlnYXRlOworc3RhdGljIGJvb2wg
ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbjsKIAotc3RhdGljIHZvaWQgZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZVJlZiBwYWdlLCBXS05h
dmlnYXRpb25EYXRhUmVmIG5hdmlnYXRpb25EYXRhLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQorc3RhdGljIHZvaWQgZGlkTmF2aWdhdGVXaXRob3V0TmF2aWdhdGlv
bkRhdGEoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25E
YXRhUmVmIG5hdmlnYXRpb25EYXRhLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewogICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCB3aGVuIG5hdmln
YXRpbmcgaW4gUHJpdmF0ZSBCcm93c2luZy4KICAgICBGQUlMKCk7CiB9CiAKK3N0YXRpYyB2b2lk
IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1Bh
Z2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uRGF0YVJlZiBuYXZpZ2F0aW9uRGF0YSwgV0tGcmFtZVJl
ZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBkaWROYXZpZ2F0ZSA9IHRy
dWU7Cit9CisKIHN0YXRpYyB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZSB0eXBlLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7
Ci0gICAgdGVzdERvbmUgPSB0cnVlOworICAgIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSB0
cnVlOwogfQogCiBURVNUKFdlYktpdDIsIFByaXZhdGVCcm93c2luZ1B1c2hTdGF0ZU5vSGlzdG9y
eUNhbGxiYWNrKQpAQCAtNTIsNyArNTgsNyBAQCBURVNUKFdlYktpdDIsIFByaXZhdGVCcm93c2lu
Z1B1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrKQogICAgIG1lbXNldCgmaGlzdG9yeUNsaWVudCwg
MCwgc2l6ZW9mKGhpc3RvcnlDbGllbnQpKTsKIAogICAgIGhpc3RvcnlDbGllbnQuYmFzZS52ZXJz
aW9uID0gMDsKLSAgICBoaXN0b3J5Q2xpZW50LmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRh
ID0gZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE7CisgICAgaGlzdG9yeUNsaWVudC5kaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5hdmlnYXRlV2l0aG91dE5hdmlnYXRpb25E
YXRhOwogCiAgICAgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChjb250ZXh0LmdldCgpLCAmaGlz
dG9yeUNsaWVudC5iYXNlKTsKIApAQCAtNzUsNyArODEsMTYgQEAgVEVTVChXZWJLaXQyLCBQcml2
YXRlQnJvd3NpbmdQdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjaykKICAgICBXS1JldGFpblB0cjxX
S1VSTFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJwdXNoLXN0
YXRlIiwgImh0bWwiKSk7CiAgICAgV0tQYWdlTG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdl
dCgpKTsKIAotICAgIFV0aWw6OnJ1bigmdGVzdERvbmUpOworICAgIFV0aWw6OnJ1bigmZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbik7CisKKyAgICBXS1ByZWZlcmVuY2VzU2V0UHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZChwcmVmZXJlbmNlcy5nZXQoKSwgZmFsc2UpOworCisgICAgaGlzdG9yeUNsaWVu
dC5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSA9IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhOworICAgIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoY29udGV4dC5nZXQoKSwgJmhp
c3RvcnlDbGllbnQuYmFzZSk7CisKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1
cmwuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZkaWROYXZpZ2F0ZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>