<?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>212885</bug_id>
          
          <creation_ts>2020-06-07 13:02:26 -0700</creation_ts>
          <short_desc>[IPC] Adopt enum class for DragSourceAction</short_desc>
          <delta_ts>2020-06-11 13:38:43 -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>DOM</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212115</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212507</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212605</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212870</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=213093</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213086</blocked>
    
    <blocked>211988</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1660097</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-07 13:02:26 -0700</bug_when>
    <thetext>Adopt enum class for DragSourceAction.

Much like Bug 212605, this uses both Optional&lt;DragSourceAction&gt; and OptionSet&lt;DragSourceAction&gt; based on how the code uses the enum values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660098</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-07 13:02:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/64094134&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660099</commentid>
    <comment_count>2</comment_count>
      <attachid>401303</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-07 13:03:31 -0700</bug_when>
    <thetext>Created attachment 401303
Patch v1 (for EWS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660100</commentid>
    <comment_count>3</comment_count>
      <attachid>401304</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-07 13:08:02 -0700</bug_when>
    <thetext>Created attachment 401304
Patch v2 (EWS)

Fix check-webkit-style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660113</commentid>
    <comment_count>4</comment_count>
      <attachid>401306</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-07 16:41:30 -0700</bug_when>
    <thetext>Created attachment 401306
Patch v3 (EWS)

Try to fix Windows builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660343</commentid>
    <comment_count>5</comment_count>
      <attachid>401363</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-08 13:13:52 -0700</bug_when>
    <thetext>Created attachment 401363
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660388</commentid>
    <comment_count>6</comment_count>
      <attachid>401372</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-08 14:26:43 -0700</bug_when>
    <thetext>Created attachment 401372
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660390</commentid>
    <comment_count>7</comment_count>
      <attachid>401372</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-08 14:29:05 -0700</bug_when>
    <thetext>Comment on attachment 401372
Patch v5

LOL...couldn&apos;t figure out why the patch doubled in size from v3 to v4, but that was due to the ChangeLogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660402</commentid>
    <comment_count>8</comment_count>
      <attachid>401372</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-08 14:41:49 -0700</bug_when>
    <thetext>Comment on attachment 401372
Patch v5

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

&gt; Source/WebCore/page/DragState.h:38
&gt; +    OptionSet&lt;DragSourceAction&gt; type;

Reading the code it seems like this is a single value, not a set. Can we try making this Optional instead of OptionSet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660473</commentid>
    <comment_count>9</comment_count>
      <attachid>401372</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-08 16:16:46 -0700</bug_when>
    <thetext>Comment on attachment 401372
Patch v5

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

&gt;&gt; Source/WebCore/page/DragState.h:38
&gt;&gt; +    OptionSet&lt;DragSourceAction&gt; type;
&gt; 
&gt; Reading the code it seems like this is a single value, not a set. Can we try making this Optional instead of OptionSet?

I don&apos;t know how to convert code in EventHandler::handleDrag() if I change DragState.type to Optional&lt;DragSourceAction&gt;.

&gt; Source/WebCore/page/EventHandler.cpp:3824
&gt;      // For drags starting in the selection, the user must wait between the mousedown and mousedrag,
&gt;      // or else we bail on the dragging stuff and allow selection to occur
&gt; -    if (m_mouseDownMayStartDrag &amp;&amp; m_dragMayStartSelectionInstead &amp;&amp; (dragState().type &amp; DragSourceActionSelection) &amp;&amp; event.event().timestamp() - m_mouseDownTimestamp &lt; TextDragDelay) {
&gt; +    if (m_mouseDownMayStartDrag &amp;&amp; m_dragMayStartSelectionInstead &amp;&amp; dragState().type.contains(DragSourceAction::Selection) &amp;&amp; event.event().timestamp() - m_mouseDownTimestamp &lt; TextDragDelay) {
&gt;          ASSERT(event.event().type() == PlatformEvent::MouseMoved);
&gt; -        if ((dragState().type &amp; DragSourceActionImage)) {
&gt; +        if (dragState().type.contains(DragSourceAction::Image)) {
&gt;              // ... unless the mouse is over an image, then we start dragging just the image
&gt; -            dragState().type = DragSourceActionImage;
&gt; -        } else if (!(dragState().type &amp; (DragSourceActionDHTML | DragSourceActionLink))) {
&gt; +            dragState().type = DragSourceAction::Image;
&gt; +        } else if (!dragState().type.containsAny({ DragSourceAction::DHTML, DragSourceAction::Link })) {
&gt;              // ... but only bail if we&apos;re not over an unselectable element.

I don&apos;t know how to convert this code if DragState.type is not OptionSet&lt;DragSourceAction&gt;.  It assumes multiple values are set in DragState.type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660483</commentid>
    <comment_count>10</comment_count>
      <attachid>401372</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-08 16:29:46 -0700</bug_when>
    <thetext>Comment on attachment 401372
Patch v5

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

&gt;&gt; Source/WebCore/page/EventHandler.cpp:3824
&gt;&gt;              // ... but only bail if we&apos;re not over an unselectable element.
&gt; 
&gt; I don&apos;t know how to convert this code if DragState.type is not OptionSet&lt;DragSourceAction&gt;.  It assumes multiple values are set in DragState.type.

No, while the code was written in a way that would work if both were set, what it actually does is that it checks if it is *either* of two values. The type is never *set* to more than one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660497</commentid>
    <comment_count>11</comment_count>
      <attachid>401372</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-08 16:54:09 -0700</bug_when>
    <thetext>Comment on attachment 401372
Patch v5

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

&gt;&gt;&gt; Source/WebCore/page/EventHandler.cpp:3824
&gt;&gt;&gt; -    if (m_mouseDownMayStartDrag &amp;&amp; m_dragMayStartSelectionInstead &amp;&amp; (dragState().type &amp; DragSourceActionSelection) &amp;&amp; event.event().timestamp() - m_mouseDownTimestamp &lt; TextDragDelay) {
&gt;&gt;&gt; +    if (m_mouseDownMayStartDrag &amp;&amp; m_dragMayStartSelectionInstead &amp;&amp; dragState().type.contains(DragSourceAction::Selection) &amp;&amp; event.event().timestamp() - m_mouseDownTimestamp &lt; TextDragDelay) {
&gt;&gt;&gt;          ASSERT(event.event().type() == PlatformEvent::MouseMoved);
&gt;&gt;&gt; -        if ((dragState().type &amp; DragSourceActionImage)) {
&gt;&gt;&gt; +        if (dragState().type.contains(DragSourceAction::Image)) {
&gt;&gt;&gt;              // ... unless the mouse is over an image, then we start dragging just the image
&gt;&gt;&gt; -            dragState().type = DragSourceActionImage;
&gt;&gt;&gt; -        } else if (!(dragState().type &amp; (DragSourceActionDHTML | DragSourceActionLink))) {
&gt;&gt;&gt; +            dragState().type = DragSourceAction::Image;
&gt;&gt;&gt; +        } else if (!dragState().type.containsAny({ DragSourceAction::DHTML, DragSourceAction::Link })) {
&gt;&gt;&gt;              // ... but only bail if we&apos;re not over an unselectable element.
&gt;&gt; 
&gt;&gt; I don&apos;t know how to convert this code if DragState.type is not OptionSet&lt;DragSourceAction&gt;.  It assumes multiple values are set in DragState.type.
&gt; 
&gt; No, while the code was written in a way that would work if both were set, what it actually does is that it checks if it is *either* of two values. The type is never *set* to more than one.

Well, I wasn&apos;t referring just to this line:

        } else if (!dragState().type.containsAny({ DragSourceAction::DHTML, DragSourceAction::Link })) {

I was referring to the outer `if` block:

    if ([...] &amp;&amp; dragState().type.contains(DragSourceAction::Selection) &amp;&amp; [...]) {
        [.A.]
        if (dragState().type.contains(DragSourceAction::Image)) {
            [.B.]
        } else if (!dragState().type.containsAny({ DragSourceAction::DHTML, DragSourceAction::Link })) {
            [.C.]
        } else {
            [.D.]
        }
    }

Since one one value of DragState::type can be set, I can just delete most of this code like this?

    if ([...] &amp;&amp; dragState().type.contains(DragSourceAction::Selection) &amp;&amp; [...]) {
        [.A.]
        [.D.]
    }

Is that what you&apos;re talking about?

I originally hesitated in doing this because this is a refactoring patch, and (to me) it feels wrong to simply remove code like this when refactoring, but I can do it if that&apos;s what you want me to try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1660499</commentid>
    <comment_count>12</comment_count>
      <attachid>401372</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-08 16:58:16 -0700</bug_when>
    <thetext>Comment on attachment 401372
Patch v5

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

&gt;&gt;&gt;&gt; Source/WebCore/page/EventHandler.cpp:3824
&gt;&gt;&gt;&gt;              // ... but only bail if we&apos;re not over an unselectable element.
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t know how to convert this code if DragState.type is not OptionSet&lt;DragSourceAction&gt;.  It assumes multiple values are set in DragState.type.
&gt;&gt; 
&gt;&gt; No, while the code was written in a way that would work if both were set, what it actually does is that it checks if it is *either* of two values. The type is never *set* to more than one.
&gt; 
&gt; Well, I wasn&apos;t referring just to this line:
&gt; 
&gt;         } else if (!dragState().type.containsAny({ DragSourceAction::DHTML, DragSourceAction::Link })) {
&gt; 
&gt; I was referring to the outer `if` block:
&gt; 
&gt;     if ([...] &amp;&amp; dragState().type.contains(DragSourceAction::Selection) &amp;&amp; [...]) {
&gt;         [.A.]
&gt;         if (dragState().type.contains(DragSourceAction::Image)) {
&gt;             [.B.]
&gt;         } else if (!dragState().type.containsAny({ DragSourceAction::DHTML, DragSourceAction::Link })) {
&gt;             [.C.]
&gt;         } else {
&gt;             [.D.]
&gt;         }
&gt;     }
&gt; 
&gt; Since one one value of DragState::type can be set, I can just delete most of this code like this?
&gt; 
&gt;     if ([...] &amp;&amp; dragState().type.contains(DragSourceAction::Selection) &amp;&amp; [...]) {
&gt;         [.A.]
&gt;         [.D.]
&gt;     }
&gt; 
&gt; Is that what you&apos;re talking about?
&gt; 
&gt; I originally hesitated in doing this because this is a refactoring patch, and (to me) it feels wrong to simply remove code like this when refactoring, but I can do it if that&apos;s what you want me to try.

Refactoring this to be explicitly &quot;OptionSet&quot; when before it was not explicit is making the confusion worse, so I think we need to straighten this out first.

I guess there is some code can set the type to more than one thing. But this seems disorganized and messy. I think it’s not really a general set. It’s just one type plus possibly &quot;selection&quot;. Seems really messy. I suppose you aren’t making it worse, but all this &quot;hasExactlyOneBitSet&quot; stuff is just what happens when we make the data structure too confusing. Clearly the &quot;selection&quot; is an independent flag, and need not be included in an option set.

Anyway, OK if you don’t want to clear this up, but I think it’s messy to use a &quot;set&quot; for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661465</commentid>
    <comment_count>13</comment_count>
      <attachid>401611</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-10 18:04:33 -0700</bug_when>
    <thetext>Created attachment 401611
Patch v5 with Optional&lt;DragSourceAction&gt; in DragState

Posting for review/EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661468</commentid>
    <comment_count>14</comment_count>
      <attachid>401611</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-10 18:20:46 -0700</bug_when>
    <thetext>Comment on attachment 401611
Patch v5 with Optional&lt;DragSourceAction&gt; in DragState

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

Experiment to change DragState::type (now ::action) from OptionSet&lt;&gt; to Optional&lt;&gt;.

I didn&apos;t update ChangeLog; just testing code changes.

Note that we can&apos;t completely remove DragSourceAction::Selection since it&apos;s used elsewhere.

Does this look better, Darin?  Any concerns about the changes I pointed out?

&gt; Source/WTF/wtf/OptionSet.h:216
&gt; +    constexpr bool hasExactlyOneBitSet() const
&gt; +    {
&gt; +        return m_storage &amp;&amp; !(m_storage &amp; (m_storage - 1));
&gt; +    }
&gt; +
&gt; +    constexpr Optional&lt;E&gt; toSingleValue() const
&gt; +    {
&gt; +        return hasExactlyOneBitSet() ? Optional&lt;E&gt;(static_cast&lt;E&gt;(m_storage)) : WTF::nullopt;
&gt; +    }

These can be removed now since they&apos;re not used, too.

&gt; Source/WebCore/page/DragState.h:39
&gt; +    bool includesSelectionAction { false };
&gt; +    Optional&lt;DragSourceAction&gt; action;

Added .includesSelectionAction to hold DragSourceAction::Selection state.
Renamed .type to .action after changing from OptionSet&lt;&gt; to Optional&lt;&gt;.

&gt; Source/WebCore/page/EventHandler.cpp:3650
&gt; +    ASSERT(dragState().includesSelectionAction ^ !!dragState().action);

Based on how this method worked before, only one of dragState().includesSelectionAction and dragState().action should be set.

&gt; Source/WebCore/page/EventHandler.cpp:3658
&gt; -    switch (dragState().type) {
&gt; -    case DragSourceActionSelection:
&gt; +    if (dragState().includesSelectionAction)
&gt;          threshold = TextDragHysteresis;
&gt; -        break;
&gt; -    case DragSourceActionImage:
&gt; +    else if (dragState().action) {
&gt; +        switch (*dragState().action) {
&gt; +        case DragSourceAction::Selection:
&gt; +            ASSERT_NOT_REACHED();
&gt; +            break;

This got kind of weird since we still need case DragSourceAction::Selection in the switch statement (so we&apos;re checking every value), but it&apos;s now an ASSERT_NOT_REACHED().

&gt; Source/WebCore/page/EventHandler.cpp:3779
&gt; +    OptionSet&lt;DragSourceAction&gt; actionMask = dragState().action;
&gt; +    if (dragState().includesSelectionAction)
&gt; +        actionMask.add(DragSourceAction::Selection);
&gt;      if (auto* page = m_frame.page())
&gt; -        page-&gt;dragController().prepareForDragStart(m_frame, dragState().type, *dragState().source, dataTransfer, m_mouseDownContentsPosition);
&gt; +        page-&gt;dragController().prepareForDragStart(m_frame, actionMask, *dragState().source, dataTransfer, m_mouseDownContentsPosition);

Had to manually add back DragSourceAction::Selection here using a local variable.

&gt; Source/WebCore/page/EventHandler.cpp:3849
&gt; -    if (!ExactlyOneBitSet(dragState().type)) {
&gt; -        ASSERT(dragState().type &amp; DragSourceActionSelection);
&gt; -        ASSERT(ExactlyOneBitSet(static_cast&lt;DragSourceAction&gt;(dragState().type &amp; ~DragSourceActionSelection)));
&gt; -
&gt; -        dragState().type = DragSourceActionSelection;
&gt; +    if (dragState().action) {
&gt; +        ASSERT(dragState().includesSelectionAction);
&gt; +        dragState().action = WTF::nullopt;

This changed because DragState::action can&apos;t have more than one value, so if it&apos;s set, we need to clear it.

Should probably also do this here:

        dragState().includesSelectionAction = true;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661471</commentid>
    <comment_count>15</comment_count>
      <attachid>401613</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-10 18:24:17 -0700</bug_when>
    <thetext>Created attachment 401613
Patch v5 with Optional&lt;DragSourceAction&gt; in DragState v2

Added &quot;dragState().includesSelectionAction = true;;&quot; to this:

    if (dragState().action) {
        ASSERT(dragState().includesSelectionAction);
        dragState().action = WTF::nullopt;
        dragState().includesSelectionAction = true;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661644</commentid>
    <comment_count>16</comment_count>
      <attachid>401372</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-11 10:57:22 -0700</bug_when>
    <thetext>Comment on attachment 401372
Patch v5

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/page/EventHandler.cpp:3824
&gt;&gt;&gt;&gt;&gt;              // ... but only bail if we&apos;re not over an unselectable element.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I don&apos;t know how to convert this code if DragState.type is not OptionSet&lt;DragSourceAction&gt;.  It assumes multiple values are set in DragState.type.
&gt;&gt;&gt; 
&gt;&gt;&gt; No, while the code was written in a way that would work if both were set, what it actually does is that it checks if it is *either* of two values. The type is never *set* to more than one.
&gt;&gt; 
&gt;&gt; Well, I wasn&apos;t referring just to this line:
&gt;&gt; 
&gt;&gt;         } else if (!dragState().type.containsAny({ DragSourceAction::DHTML, DragSourceAction::Link })) {
&gt;&gt; 
&gt;&gt; I was referring to the outer `if` block:
&gt;&gt; 
&gt;&gt;     if ([...] &amp;&amp; dragState().type.contains(DragSourceAction::Selection) &amp;&amp; [...]) {
&gt;&gt;         [.A.]
&gt;&gt;         if (dragState().type.contains(DragSourceAction::Image)) {
&gt;&gt;             [.B.]
&gt;&gt;         } else if (!dragState().type.containsAny({ DragSourceAction::DHTML, DragSourceAction::Link })) {
&gt;&gt;             [.C.]
&gt;&gt;         } else {
&gt;&gt;             [.D.]
&gt;&gt;         }
&gt;&gt;     }
&gt;&gt; 
&gt;&gt; Since one one value of DragState::type can be set, I can just delete most of this code like this?
&gt;&gt; 
&gt;&gt;     if ([...] &amp;&amp; dragState().type.contains(DragSourceAction::Selection) &amp;&amp; [...]) {
&gt;&gt;         [.A.]
&gt;&gt;         [.D.]
&gt;&gt;     }
&gt;&gt; 
&gt;&gt; Is that what you&apos;re talking about?
&gt;&gt; 
&gt;&gt; I originally hesitated in doing this because this is a refactoring patch, and (to me) it feels wrong to simply remove code like this when refactoring, but I can do it if that&apos;s what you want me to try.
&gt; 
&gt; Refactoring this to be explicitly &quot;OptionSet&quot; when before it was not explicit is making the confusion worse, so I think we need to straighten this out first.
&gt; 
&gt; I guess there is some code can set the type to more than one thing. But this seems disorganized and messy. I think it’s not really a general set. It’s just one type plus possibly &quot;selection&quot;. Seems really messy. I suppose you aren’t making it worse, but all this &quot;hasExactlyOneBitSet&quot; stuff is just what happens when we make the data structure too confusing. Clearly the &quot;selection&quot; is an independent flag, and need not be included in an option set.
&gt; 
&gt; Anyway, OK if you don’t want to clear this up, but I think it’s messy to use a &quot;set&quot; for this.

Current plan:  I&apos;m going to land &quot;Patch v5&quot; as-is, and file a follow-up bug to track your concern.  Will also add a FIXME to DragState::type referencing the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661678</commentid>
    <comment_count>17</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-11 11:55:54 -0700</bug_when>
    <thetext>Committed r262913: &lt;https://trac.webkit.org/changeset/262913&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401303</attachid>
            <date>2020-06-07 13:03:31 -0700</date>
            <delta_ts>2020-06-07 13:08:02 -0700</delta_ts>
            <desc>Patch v1 (for EWS)</desc>
            <filename>bug-212885-v1.diff</filename>
            <type>text/plain</type>
            <size>62964</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oIGIvU291cmNlL1dURi93dGYv
T3B0aW9uU2V0LmgKaW5kZXggMmRjZjQzYzJlNjIuLjVkZGUwN2UxZjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQu
aApAQCAtMjA1LDYgKzIwNSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fc3RvcmFnZSAmPSB+b3B0
aW9uU2V0Lm1fc3RvcmFnZTsKICAgICB9CiAKKyAgICBjb25zdGV4cHIgYm9vbCBoYXNFeGFjdGx5
T25lQml0U2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0b3JhZ2UgJiYgISht
X3N0b3JhZ2UgJiAobV9zdG9yYWdlIC0gMSkpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBPcHRp
b25hbDxFPiBhc1NpbmdsZVZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBoYXNF
eGFjdGx5T25lQml0U2V0KCkgPyBPcHRpb25hbDxFPihzdGF0aWNfY2FzdDxFPihtX3N0b3JhZ2Up
KSA6IFdURjo6bnVsbG9wdDsKKyAgICB9CisKICAgICBjb25zdGV4cHIgZnJpZW5kIGJvb2wgb3Bl
cmF0b3I9PShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggNzliMGIzMTkzMTAuLjg3ZDBiODYzOTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIGNsYXNzIEVt
cHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgZmluYWwgOiBwdWJsaWMgRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQgewogY2xhc3MgRW1wdHlEcmFnQ2xpZW50IGZpbmFsIDogcHVibGljIERyYWdDbGll
bnQgewogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFBl
cmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50Jiwg
RGF0YVRyYW5zZmVyJikgZmluYWwgeyB9Ci0gICAgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNl
QWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikgZmluYWwgeyByZXR1cm4gRHJhZ1Nv
dXJjZUFjdGlvbk5vbmU7IH0KKyAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGZpbmFsIHsgcmV0dXJuIHsg
fTsgfQogICAgIHZvaWQgc3RhcnREcmFnKERyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYp
IGZpbmFsIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGU3NDU2MzUy
MzFhLi5hNTNkM2VkNjIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAtNDQsMjEg
KzQ0LDM1IEBAIGNvbnN0ZXhwciBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBhbnlE
cmFnRGVzdGluYXRpb25BY3Rpb24oKQogICAgIHJldHVybiBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uPiB7IERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUwsIERyYWdEZXN0aW5hdGlv
bkFjdGlvbjo6RWRpdCwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkIH07CiB9CiAKLS8vIFdl
YkNvcmVEcmFnU291cmNlQWN0aW9uIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBXZWJEcmFn
U291cmNlQWN0aW9uLgotdHlwZWRlZiBlbnVtIHsKLSAgICBEcmFnU291cmNlQWN0aW9uTm9uZSAg
ICAgICAgID0gMCwKLSAgICBEcmFnU291cmNlQWN0aW9uREhUTUwgICAgICAgID0gMSwKLSAgICBE
cmFnU291cmNlQWN0aW9uSW1hZ2UgICAgICAgID0gMiwKLSAgICBEcmFnU291cmNlQWN0aW9uTGlu
ayAgICAgICAgID0gNCwKLSAgICBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uICAgID0gOCwKKy8v
IFNlZSBXZWJEcmFnU291cmNlQWN0aW9uLgorZW51bSBjbGFzcyBEcmFnU291cmNlQWN0aW9uIDog
dWludDhfdCB7CisgICAgREhUTUwgICAgICA9IDEsCisgICAgSW1hZ2UgICAgICA9IDIsCisgICAg
TGluayAgICAgICA9IDQsCisgICAgU2VsZWN0aW9uICA9IDgsCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCAgID0gMTYsCisgICAg
QXR0YWNobWVudCA9IDE2LAogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0g
ICAgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yICAgICAgICA9IDMyLAorICAgIENvbG9yICAgICAgPSAz
MiwKICNlbmRpZgotICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAot
fSBEcmFnU291cmNlQWN0aW9uOworfTsKKworY29uc3RleHByIE9wdGlvblNldDxEcmFnU291cmNl
QWN0aW9uPiBhbnlEcmFnU291cmNlQWN0aW9uKCkKK3sKKyAgICByZXR1cm4gT3B0aW9uU2V0PERy
YWdTb3VyY2VBY3Rpb24+IHsKKyAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsCisgICAg
ICAgIERyYWdTb3VyY2VBY3Rpb246OkltYWdlLAorICAgICAgICBEcmFnU291cmNlQWN0aW9uOjpM
aW5rLAorICAgICAgICBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24KKyNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQorICAgICAgICAsRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudAor
I2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgICAgICxEcmFnU291cmNl
QWN0aW9uOjpDb2xvcgorI2VuZGlmCisgICAgfTsKK30KIAogLy8gU2VlIE5TRHJhZ09wZXJhdGlv
biwgX1VJRHJhZ09wZXJhdGlvbiBhbmQgVUlEcm9wT3BlcmF0aW9uLgogZW51bSBjbGFzcyBEcmFn
T3BlcmF0aW9uIDogdWludDhfdCB7CkBAIC0xMDgsNiArMTIyLDIyIEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gewogICAgID47CiB9OwogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uLAorICAgICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpESFRNTCwKKyAg
ICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UsCisgICAgICAgIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb246OkxpbmssCisgICAgICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b246OlNlbGVjdGlvbgorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgICAgICxX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50CisjZW5kaWYKKyNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAgLFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkNv
bG9yCisjZW5kaWYKKyAgICA+OworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJh
aXRzPFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgIHVzaW5nIHZhbHVlcyA9
IE9wdGlvblNldFZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAppbmRleCA3YWE4ZWU1ODY1ZC4uOTk4YjdiZjk1MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50
JiwgRGF0YVRyYW5zZmVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb25jbHVkZUVkaXRE
cmFnKCkgeyB9Ci0gICAgdmlydHVhbCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpID0gMDsKKyAgICB2aXJ0
dWFsIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBv
aW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KSA9IDA7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0RHJhZyhEcmFnSXRlbSwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRyYWdFbmRlZCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAppbmRleCAyZjMwMjA4ZTUwMS4uNDJhYzNmYTY3MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00ODMsNyArNDgzLDcgQEAgRHJhZ0hhbmRsaW5n
TWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhLCBPcHQKICAgICByZXR1cm4gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwogfQogCi1E
cmFnU291cmNlQWN0aW9uIERyYWdDb250cm9sbGVyOjpkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24o
Y29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpCitPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2lu
dCYgcm9vdFZpZXdQb2ludCkKIHsKICAgICBtX2RyYWdTb3VyY2VBY3Rpb24gPSBjbGllbnQoKS5k
cmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KHJvb3RWaWV3UG9pbnQpOwogICAgIHJldHVybiBt
X2RyYWdTb3VyY2VBY3Rpb247CkBAIC03NjksNyArNzY5LDcgQEAgc3RhdGljIFJlZlB0cjxIVE1M
QXR0YWNobWVudEVsZW1lbnQ+IGVuY2xvc2luZ0F0dGFjaG1lbnRFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQKIAogRWxlbWVudCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQoY29uc3Qg
RnJhbWUqIHNvdXJjZUZyYW1lLCBFbGVtZW50KiBzdGFydEVsZW1lbnQsIGNvbnN0IEludFBvaW50
JiBkcmFnT3JpZ2luLCBEcmFnU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHN0YXRlLnR5cGUg
PSAoc291cmNlRnJhbWUtPnNlbGVjdGlvbigpLmNvbnRhaW5zKGRyYWdPcmlnaW4pKSA/IERyYWdT
b3VyY2VBY3Rpb25TZWxlY3Rpb24gOiBEcmFnU291cmNlQWN0aW9uTm9uZTsKKyAgICBzdGF0ZS50
eXBlID0gc291cmNlRnJhbWUtPnNlbGVjdGlvbigpLmNvbnRhaW5zKGRyYWdPcmlnaW4pID8gRHJh
Z1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uIDogT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+KHsg
fSk7CiAgICAgaWYgKCFzdGFydEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC03ODMsNyArNzgzLDcgQEAgRWxlbWVudCog
RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1l
LCBFbGVtZW50KiBzdGEKICAgICAgICAgfQogCiAgICAgICAgIGlmICghaXNBdHRhY2htZW50RWxl
bWVudEluQ3VycmVudFNlbGVjdGlvbiB8fCBpc1NpbmdsZUF0dGFjaG1lbnRTZWxlY3Rpb24pIHsK
LSAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudDsKKyAg
ICAgICAgICAgIHN0YXRlLnR5cGUgPSBEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50OwogICAg
ICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03
OTUsMzIgKzc5NSwzMiBAQCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVu
dChjb25zdCBGcmFtZSogc291cmNlRnJhbWUsIEVsZW1lbnQqIHN0YQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgVXNlckRyYWcgZHJhZ01vZGUgPSByZW5kZXJlci0+c3R5bGUoKS51
c2VyRHJhZygpOwotICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VB
Y3Rpb25ESFRNTCkgJiYgZHJhZ01vZGUgPT0gVXNlckRyYWc6OkVsZW1lbnQpIHsKLSAgICAgICAg
ICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBl
IHwgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKTsKKyAgICAgICAgaWYgKG1fZHJhZ1NvdXJjZUFjdGlv
bi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpESFRNTCkgJiYgZHJhZ01vZGUgPT0gVXNlckRy
YWc6OkVsZW1lbnQpIHsKKyAgICAgICAgICAgIHN0YXRlLnR5cGUuYWRkKERyYWdTb3VyY2VBY3Rp
b246OkRIVE1MKTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9CiAgICAg
ICAgIGlmIChkcmFnTW9kZSA9PSBVc2VyRHJhZzo6QXV0bykgewotICAgICAgICAgICAgaWYgKCht
X2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpCisgICAgICAgICAgICBp
ZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpJbWFnZSkp
CiAgICAgICAgICAgICAgICAgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4oKmVsZW1lbnQpCiAgICAg
ICAgICAgICAgICAgJiYgaW1hZ2VFbGVtZW50SXNEcmFnZ2FibGUoZG93bmNhc3Q8SFRNTEltYWdl
RWxlbWVudD4oKmVsZW1lbnQpLCAqc291cmNlRnJhbWUpKSB7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFn
U291cmNlQWN0aW9uSW1hZ2UpOworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUuYWRkKERyYWdT
b3VyY2VBY3Rpb246OkltYWdlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1Nv
dXJjZUFjdGlvbkxpbmspICYmIGlzRHJhZ2dhYmxlTGluaygqZWxlbWVudCkpIHsKLSAgICAgICAg
ICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUu
dHlwZSB8IERyYWdTb3VyY2VBY3Rpb25MaW5rKTsKKyAgICAgICAgICAgIGlmIChtX2RyYWdTb3Vy
Y2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6TGluaykgJiYgaXNEcmFnZ2FibGVM
aW5rKCplbGVtZW50KSkgeworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUuYWRkKERyYWdTb3Vy
Y2VBY3Rpb246OkxpbmspOwogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAg
ICAgICAgfQogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgICAgICBpZiAo
KG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50KQorICAgICAg
ICAgICAgaWYgKG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpB
dHRhY2htZW50KQogICAgICAgICAgICAgICAgICYmIGlzPEhUTUxBdHRhY2htZW50RWxlbWVudD4o
KmVsZW1lbnQpCiAgICAgICAgICAgICAgICAgJiYgZG93bmNhc3Q8SFRNTEF0dGFjaG1lbnRFbGVt
ZW50PigqZWxlbWVudCkuZmlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0
YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9u
QXR0YWNobWVudCk7CisgICAgICAgICAgICAgICAgc3RhdGUudHlwZS5hZGQoRHJhZ1NvdXJjZUFj
dGlvbjo6QXR0YWNobWVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAg
ICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICAgICAg
ICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yKSAmJiBp
c0VuYWJsZWRDb2xvcklucHV0KCplbGVtZW50KSkgewotICAgICAgICAgICAgICAgIHN0YXRlLnR5
cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJj
ZUFjdGlvbkNvbG9yKTsKKyAgICAgICAgICAgIGlmIChtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFp
bnMoRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IpICYmIGlzRW5hYmxlZENvbG9ySW5wdXQoKmVsZW1l
bnQpKSB7CisgICAgICAgICAgICAgICAgc3RhdGUudHlwZS5hZGQoRHJhZ1NvdXJjZUFjdGlvbjo6
Q29sb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICAgICAgfQog
I2VuZGlmCkBAIC04MjgsNyArODI4LDcgQEAgRWxlbWVudCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdn
YWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBFbGVtZW50KiBzdGEKICAgICB9
CiAKICAgICAvLyBXZSBlaXRoZXIgaGF2ZSBub3RoaW5nIHRvIGRyYWcgb3Igd2UgaGF2ZSBhIHNl
bGVjdGlvbiBhbmQgd2UncmUgbm90IG92ZXIgYSBkcmFnZ2FibGUgZWxlbWVudC4KLSAgICBpZiAo
c3RhdGUudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gJiYgbV9kcmFnU291cmNlQWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKKyAgICBpZiAoc3RhdGUudHlwZS5jb250
YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pICYmIG1fZHJhZ1NvdXJjZUFjdGlvbi5j
b250YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pKQogICAgICAgICByZXR1cm4gc3Rh
cnRFbGVtZW50OwogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MDEsNyArOTAxLDcgQEAgc3Rh
dGljIEludFBvaW50IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKEZyYW1lJiBzcmMpCiAgICAgcmV0
dXJuIEludFBvaW50KHhwb3MsIHlwb3MpOwogfQogCi12b2lkIERyYWdDb250cm9sbGVyOjpwcmVw
YXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIERyYWdTb3VyY2VBY3Rpb24gYWN0aW9uLCBF
bGVtZW50JiBlbGVtZW50LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgY29uc3QgSW50UG9p
bnQmIGRyYWdPcmlnaW4pIGNvbnN0Cit2b2lkIERyYWdDb250cm9sbGVyOjpwcmVwYXJlRm9yRHJh
Z1N0YXJ0KEZyYW1lJiBzb3VyY2UsIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBhY3Rpb25N
YXNrLCBFbGVtZW50JiBlbGVtZW50LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4pIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKFdJTikKICAgICBS
ZWY8RnJhbWU+IHByb3RlY3Rvcihzb3VyY2UpOwpAQCAtOTExLDcgKzkxMSw3IEBAIHZvaWQgRHJh
Z0NvbnRyb2xsZXI6OnByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZSwgRHJhZ1NvdXJj
ZUFjdGlvbiBhY3Rpb24sCiAKICAgICBhdXRvJiBwYXN0ZWJvYXJkID0gZGF0YVRyYW5zZmVyLnBh
c3RlYm9hcmQoKTsKICAgICBhdXRvJiBlZGl0b3IgPSBzb3VyY2UuZWRpdG9yKCk7Ci0gICAgaWYg
KGFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSB7CisgICAgaWYgKGFjdGlvbk1h
c2sgPT0gRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSB7CiAgICAgICAgIGlmIChlbmNsb3Np
bmdUZXh0Rm9ybUNvbnRyb2woc291cmNlLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkp
KQogICAgICAgICAgICAgcGFzdGVib2FyZC53cml0ZVBsYWluVGV4dChlZGl0b3Iuc2VsZWN0ZWRU
ZXh0Rm9yRGF0YVRyYW5zZmVyKCksIFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0UmVwbGFjZSk7CiAg
ICAgICAgIGVsc2UKQEAgLTkyMSwxOCArOTIxLDE4IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnBy
ZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZSwgRHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24s
CiAKICAgICBhdXRvKiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwogICAgIGF1dG8gaW1hZ2VV
UkwgPSBoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUltYWdlVVJMKCk7Ci0gICAgaWYgKChhY3Rpb24g
JiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpICYmICFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgaW1hZ2Ug
JiYgIWltYWdlLT5pc051bGwoKSkgeworICAgIGlmIChhY3Rpb25NYXNrLmNvbnRhaW5zKERyYWdT
b3VyY2VBY3Rpb246OkltYWdlKSAmJiAhaW1hZ2VVUkwuaXNFbXB0eSgpICYmIGltYWdlICYmICFp
bWFnZS0+aXNOdWxsKCkpIHsKICAgICAgICAgZWRpdG9yLndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQo
cGFzdGVib2FyZCwgZWxlbWVudCwgaW1hZ2VVUkwsIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBhdXRvIGxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUxpbmtVUkwo
KTsKLSAgICBpZiAoKGFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKSAmJiAhbGlua1VSTC5p
c0VtcHR5KCkgJiYgc291cmNlLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxh
eShsaW5rVVJMKSkKKyAgICBpZiAoYWN0aW9uTWFzay5jb250YWlucyhEcmFnU291cmNlQWN0aW9u
OjpMaW5rKSAmJiAhbGlua1VSTC5pc0VtcHR5KCkgJiYgc291cmNlLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkuY2FuRGlzcGxheShsaW5rVVJMKSkKICAgICAgICAgZWRpdG9yLmNvcHlVUkwo
bGlua1VSTCwgaGl0VGVzdFJlc3VsdC0+dGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2Uo
KSwgcGFzdGVib2FyZCk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBvbiBX
aW5kb3dzIGJ5IGltcGxlbWVudGluZyBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
IGFuZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQuCiAgICAgVU5VU0VEX1BBUkFNKHNv
dXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGFjdGlvbik7CisgICAgVU5VU0VEX1BBUkFNKGFjdGlv
bk1hc2spOwogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKICAgICBVTlVTRURfUEFSQU0oZGF0
YVRyYW5zZmVyKTsKICAgICBVTlVTRURfUEFSQU0oZHJhZ09yaWdpbik7CkBAIC05ODMsNyArOTgz
LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERy
YWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICBBU1NFUlQoc3RhdGUuZGF0YVRyYW5z
ZmVyKTsKIAogICAgIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyID0gKnN0YXRlLmRhdGFUcmFu
c2ZlcjsKLSAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uREhUTUwpIHsKKyAg
ICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uOjpESFRNTCkgewogICAgICAgICBk
cmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBkYXRhVHJhbnNmZXIuY3JlYXRlRHJhZ0ltYWdlKGRyYWdJ
bWFnZU9mZnNldCkgfTsKICAgICAgICAgLy8gV2UgYWxsb3cgREhUTUwvSlMgdG8gc2V0IHRoZSBk
cmFnIGltYWdlLCBldmVuIGlmIGl0cyBhIGxpbmssIGltYWdlIG9yIHRleHQgd2UncmUgZHJhZ2dp
bmcuCiAgICAgICAgIC8vIFRoaXMgaXMgaW4gdGhlIHNwaXJpdCBvZiB0aGUgSUUgQVBJLCB3aGlj
aCBhbGxvd3Mgb3ZlcnJpZGluZyBvZiBwYXN0ZWJvYXJkIGRhdGEgYW5kIERyYWdPcC4KQEAgLTk5
Myw3ICs5OTMsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywg
Y29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiB8fCAhaW1h
Z2VVUkwuaXNFbXB0eSgpIHx8ICFsaW5rVVJMLmlzRW1wdHkoKSkgeworICAgIGlmIChzdGF0ZS50
eXBlID09IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbiB8fCAhaW1hZ2VVUkwuaXNFbXB0eSgp
IHx8ICFsaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBTZWxlY3Rpb24sIGltYWdlLCBh
bmQgbGluayBkcmFncyByZWNlaXZlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJh
dGlvbnMgdGhhdAogICAgICAgICAvLyBmb2xsb3dzIGZyb206CiAgICAgICAgIC8vIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0/cmV2PTQ4NTI2I0wzNDMwCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBib29sIERyYWdDb250
cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0
aW9uU2V0PERyYQogCiAgICAgSW50UmVjdCBkcmFnSW1hZ2VCb3VuZHM7CiAgICAgSW1hZ2UqIGlt
YWdlID0gZ2V0SW1hZ2UoZWxlbWVudCk7Ci0gICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJj
ZUFjdGlvblNlbGVjdGlvbikgeworICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rp
b246OlNlbGVjdGlvbikgewogICAgICAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBwYXN0ZWJvYXJk
V3JpdGVyRGF0YTsKIAogICAgICAgICBpZiAoaGFzRGF0YSA9PSBIYXNOb25EZWZhdWx0UGFzdGVi
b2FyZERhdGE6Ok5vKSB7CkBAIC0xMDQ5LDcgKzEwNDksNyBAQCBib29sIERyYWdDb250cm9sbGVy
OjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0
PERyYQogCiAgICAgICAgICAgICBzcmMuZWRpdG9yKCkuZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3Rl
Ym9hcmQoKTsKICAgICAgICAgfQotICAgICAgICBjbGllbnQoKS53aWxsUGVyZm9ybURyYWdTb3Vy
Y2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiwgZHJhZ09yaWdpbiwgZGF0YVRyYW5z
ZmVyKTsKKyAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdT
b3VyY2VBY3Rpb246OlNlbGVjdGlvbiwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKICAgICAg
ICAgaWYgKCFkcmFnSW1hZ2UpIHsKICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JEYXRhIHRleHRJ
bmRpY2F0b3I7CiAgICAgICAgICAgICBkcmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBkaXNzb2x2ZURy
YWdJbWFnZVRvRnJhY3Rpb24oY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9uKHNyYywgdGV4dElu
ZGljYXRvciksIERyYWdJbWFnZUFscGhhKSB9OwpAQCAtMTA3Miw3ICsxMDcyLDcgQEAgYm9vbCBE
cmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3Rh
dGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgZHJhZ0l0ZW0uaW1hZ2UgPSBXVEZNb3ZlKGRyYWdJ
bWFnZSk7CiAgICAgICAgIGRyYWdJdGVtLmRhdGEgPSBXVEZNb3ZlKHBhc3RlYm9hcmRXcml0ZXJE
YXRhKTsKIAotICAgICAgICBiZWdpbkRyYWcoV1RGTW92ZShkcmFnSXRlbSksIHNyYywgZHJhZ09y
aWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2ZlciwgRHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbik7CisgICAgICAgIGJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVtKSwgc3JjLCBkcmFn
T3JpZ2luLCBtb3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5zZmVyLCBEcmFnU291cmNlQWN0aW9u
OjpTZWxlY3Rpb24pOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEwODIsNyAr
MTA4Miw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIWltYWdlVVJMLmlzRW1wdHkoKSAmJiBpbWFnZSAmJiAhaW1hZ2Ut
PmlzTnVsbCgpICYmIChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2Up
KSB7CisgICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgaW1hZ2UgJiYgIWltYWdlLT5pc051
bGwoKSAmJiBtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6SW1h
Z2UpKSB7CiAgICAgICAgIC8vIFdlIHNob3VsZG4ndCBiZSBzdGFydGluZyBhIGRyYWcgZm9yIGFu
IGltYWdlIHRoYXQgY2FuJ3QgcHJvdmlkZSBhbiBleHRlbnNpb24uCiAgICAgICAgIC8vIFRoaXMg
aXMgYW4gZWFybHkgZGV0ZWN0aW9uIGZvciBwcm9ibGVtcyBlbmNvdW50ZXJlZCBsYXRlciB1cG9u
IGRyb3AuCiAgICAgICAgIEFTU0VSVCghaW1hZ2UtPmZpbGVuYW1lRXh0ZW5zaW9uKCkuaXNFbXB0
eSgpKTsKQEAgLTExMDEsNyArMTEwMSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAg
ICAgICAgICAgICAgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGRhdGFUcmFuc2ZlciwgZWxlbWVu
dCwgIWxpbmtVUkwuaXNFbXB0eSgpID8gbGlua1VSTCA6IGltYWdlVVJMLCBoaXRUZXN0UmVzdWx0
LT5hbHREaXNwbGF5U3RyaW5nKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgY2xpZW50KCkud2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFnZSwgZHJhZ09yaWdp
biwgZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OkltYWdlLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIp
OwogCiAgICAgICAgIGlmICghZHJhZ0ltYWdlKQogICAgICAgICAgICAgZG9JbWFnZURyYWcoZWxl
bWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJlc3VsdC0+aW1hZ2VSZWN0KCksIHNyYywgbV9kcmFn
T2Zmc2V0LCBzdGF0ZSwgV1RGTW92ZShhdHRhY2htZW50SW5mbykpOwpAQCAtMTExMyw3ICsxMTEz
LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERy
YWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSAmJiAobV9kcmFnU291cmNlQWN0aW9uICYg
RHJhZ1NvdXJjZUFjdGlvbkxpbmspKSB7CisgICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSAmJiBt
X2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6TGluaykpIHsKICAg
ICAgICAgUGFzdGVib2FyZFdyaXRlckRhdGEgcGFzdGVib2FyZFdyaXRlckRhdGE7CiAKICAgICAg
ICAgU3RyaW5nIHRleHRDb250ZW50V2l0aFNpbXBsaWZpZWRXaGl0ZVNwYWNlID0gaGl0VGVzdFJl
c3VsdC0+dGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKQEAgLTExNDUsNyArMTE0
NSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBE
cmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgICAgICAgICAgc3JjLnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVu
dHNPZk5vZGUobm9kZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgY2xpZW50KCkud2lsbFBlcmZv
cm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25MaW5rLCBkcmFnT3JpZ2luLCBkYXRh
VHJhbnNmZXIpOworICAgICAgICBjbGllbnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24o
RHJhZ1NvdXJjZUFjdGlvbjo6TGluaywgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKICAgICAg
ICAgaWYgKCFkcmFnSW1hZ2UpIHsKICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JEYXRhIHRleHRJ
bmRpY2F0b3I7CiAgICAgICAgICAgICBkcmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBjcmVhdGVEcmFn
SW1hZ2VGb3JMaW5rKGVsZW1lbnQsIGxpbmtVUkwsIHRleHRDb250ZW50V2l0aFNpbXBsaWZpZWRX
aGl0ZVNwYWNlLCB0ZXh0SW5kaWNhdG9yLCBzcmMuc2V0dGluZ3MoKS5mb250UmVuZGVyaW5nTW9k
ZSgpLCBtX3BhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSkgfTsKQEAgLTExNjgsMTMgKzExNjgsMTMg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgZHJhZ0l0ZW0uaW1hZ2UgPSBXVEZN
b3ZlKGRyYWdJbWFnZSk7CiAgICAgICAgIGRyYWdJdGVtLmRhdGEgPSBXVEZNb3ZlKHBhc3RlYm9h
cmRXcml0ZXJEYXRhKTsKIAotICAgICAgICBiZWdpbkRyYWcoV1RGTW92ZShkcmFnSXRlbSksIHNy
YywgZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2ZlciwgRHJhZ1NvdXJj
ZUFjdGlvblNlbGVjdGlvbik7CisgICAgICAgIGJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVtKSwg
c3JjLCBkcmFnT3JpZ2luLCBtb3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5zZmVyLCBEcmFnU291
cmNlQWN0aW9uOjpTZWxlY3Rpb24pOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAog
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgaWYgKGlzPEhUTUxBdHRhY2htZW50
RWxlbWVudD4oZWxlbWVudCkgJiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlv
bkF0dGFjaG1lbnQpIHsKKyAgICBpZiAoaXM8SFRNTEF0dGFjaG1lbnRFbGVtZW50PihlbGVtZW50
KSAmJiBtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNo
bWVudCkpIHsKICAgICAgICAgYXV0byYgYXR0YWNobWVudCA9IGRvd25jYXN0PEhUTUxBdHRhY2ht
ZW50RWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgIGF1dG8qIGF0dGFjaG1lbnRSZW5kZXJlciA9
IGF0dGFjaG1lbnQucmVuZGVyZXIoKTsKIApAQCAtMTE5Niw3ICsxMTk2LDcgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUs
IE9wdGlvblNldDxEcmEKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjbGll
bnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1l
bnQsIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CisgICAgICAgIGNsaWVudCgpLndpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50LCBkcmFnT3Jp
Z2luLCBkYXRhVHJhbnNmZXIpOwogICAgICAgICAKICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsK
ICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JEYXRhIHRleHRJbmRpY2F0b3I7CkBAIC0xMjIwLDcg
KzEyMjAsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29u
c3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogCiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfQ09MT1IpCiAgICAgYm9vbCBpc0NvbG9yQ29udHJvbCA9IGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KHN0YXRlLnNvdXJjZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKnN0YXRlLnNvdXJj
ZSkuaXNDb2xvckNvbnRyb2woKTsKLSAgICBpZiAoaXNDb2xvckNvbnRyb2wgJiYgbV9kcmFnU291
cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yKSB7CisgICAgaWYgKGlzQ29sb3JDb250
cm9sICYmIG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpDb2xv
cikpIHsKICAgICAgICAgYXV0byYgaW5wdXQgPSBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigq
c3RhdGUuc291cmNlKTsKICAgICAgICAgYXV0byBjb2xvciA9IGlucHV0LnZhbHVlQXNDb2xvcigp
OwogCkBAIC0xMjMxLDE1ICsxMjMxLDE1IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAg
ICAgIGRyYWdJbWFnZU9mZnNldCA9IEludFBvaW50IHsgZHJhZ0ltYWdlU2l6ZShkcmFnSW1hZ2Uu
Z2V0KCkpIH07CiAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yREhUTUxEcmFnKG1vdXNlRHJh
Z2dlZFBvaW50LCBkcmFnT3JpZ2luLCBkcmFnSW1hZ2VPZmZzZXQsIGZhbHNlKTsKIAotICAgICAg
ICBjbGllbnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbkNv
bG9yLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOworICAgICAgICBjbGllbnQoKS53aWxsUGVy
Zm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IsIGRyYWdPcmlnaW4s
IGRhdGFUcmFuc2Zlcik7CiAgICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSks
IGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNyYywgc3RhdGUsIHsgfSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFj
dGlvbkRIVE1MICYmIGRyYWdJbWFnZSkgewotICAgICAgICBBU1NFUlQobV9kcmFnU291cmNlQWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKTsKLSAgICAgICAgY2xpZW50KCkud2lsbFBlcmZv
cm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25ESFRNTCwgZHJhZ09yaWdpbiwgZGF0
YVRyYW5zZmVyKTsKKyAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uOjpESFRN
TCAmJiBkcmFnSW1hZ2UpIHsKKyAgICAgICAgQVNTRVJUKG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250
YWlucyhEcmFnU291cmNlQWN0aW9uOjpESFRNTCkpOworICAgICAgICBjbGllbnQoKS53aWxsUGVy
Zm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsIGRyYWdPcmlnaW4s
IGRhdGFUcmFuc2Zlcik7CiAgICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSks
IGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNyYywgc3RhdGUsIHsgfSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw4IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRv
U3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25z
CiAKICAgICBEcmFnSXRlbSBpdGVtOwogICAgIGl0ZW0uaW1hZ2UgPSBXVEZNb3ZlKGltYWdlKTsK
LSAgICBpdGVtLnNvdXJjZUFjdGlvbiA9IHN0YXRlLnR5cGU7CisgICAgQVNTRVJUKHN0YXRlLnR5
cGUuaGFzRXhhY3RseU9uZUJpdFNldCgpKTsKKyAgICBpdGVtLnNvdXJjZUFjdGlvbiA9IHN0YXRl
LnR5cGUuYXNTaW5nbGVWYWx1ZSgpOwogICAgIGl0ZW0ucHJvbWlzZWRBdHRhY2htZW50SW5mbyA9
IFdURk1vdmUocHJvbWlzZWRBdHRhY2htZW50SW5mbyk7CiAKICAgICBhdXRvIGV2ZW50UG9zaXRp
b25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9Sb290Vmll
dyhldmVudFBvcyk7CkBAIC0xMzM5LDcgKzEzNDAsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpk
b1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29u
cwogICAgIGl0ZW0uZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyA9IHZpZXdQcm90ZWN0
b3ItPmNvbnRlbnRzVG9XaW5kb3coaXRlbS5kcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRl
cyk7CiAgICAgaWYgKGF1dG8gZWxlbWVudCA9IHN0YXRlLnNvdXJjZSkgewogICAgICAgICBhdXRv
IGRhdGFUcmFuc2ZlckltYWdlRWxlbWVudCA9IHN0YXRlLmRhdGFUcmFuc2Zlci0+ZHJhZ0ltYWdl
RWxlbWVudCgpOwotICAgICAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uREhU
TUwpIHsKKyAgICAgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwp
IHsKICAgICAgICAgICAgIC8vIElmIHRoZSBkcmFnIGltYWdlIGhhcyBiZWVuIGN1c3RvbWl6ZWQs
IGZhbGwgYmFjayB0byBwb3NpdGlvbmluZyB0aGUgcHJldmlldyByZWxhdGl2ZSB0byB0aGUgZHJh
ZyBldmVudCBsb2NhdGlvbi4KICAgICAgICAgICAgIEludFNpemUgZHJhZ1ByZXZpZXdTaXplOwog
ICAgICAgICAgICAgaWYgKGRhdGFUcmFuc2ZlckltYWdlRWxlbWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaAppbmRleCBlYTQ5OWUwZWJkNi4uOTIyNGFiMjA2Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTc2LDEyICs3NiwxMiBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgVVJMJiBkcmFnZ2luZ0ltYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2lu
Z0ltYWdlVVJMOyB9CiAgICAgdm9pZCBzZXREcmFnT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZz
ZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgY29uc3QgSW50UG9pbnQmIGRyYWdP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2RyYWdPZmZzZXQ7IH0KLSAgICBEcmFnU291cmNlQWN0
aW9uIGRyYWdTb3VyY2VBY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247
IH0KKyAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsgfQogICAgIERyYWdIYW5kbGluZ01ldGhv
ZCBkcmFnSGFuZGxpbmdNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2RyYWdIYW5kbGluZ01ldGhv
ZDsgfQogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50VW5kZXJNb3VzZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZG9jdW1lbnRVbmRlck1vdXNlLmdldCgpOyB9CiAgICAgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1f
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsgfQotICAgIERyYWdTb3VyY2VBY3Rpb24gZGVsZWdh
dGVEcmFnU291cmNlQWN0aW9uKGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KTsKKyAgICBP
cHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKGNvbnN0
IEludFBvaW50JiByb290Vmlld1BvaW50KTsKIAogICAgIEVsZW1lbnQqIGRyYWdnYWJsZUVsZW1l
bnQoY29uc3QgRnJhbWUqLCBFbGVtZW50KiBzdGFydCwgY29uc3QgSW50UG9pbnQmLCBEcmFnU3Rh
dGUmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdFbmRlZCgpOwpAQCAtOTQs
NyArOTQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5hbGl6ZURyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVyKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29uc3QgVmVjdG9y
PEludFNpemU+JiBpbWFnZVNpemVzKTsKIAotICAgIHZvaWQgcHJlcGFyZUZvckRyYWdTdGFydChG
cmFtZSYgc291cmNlRnJhbWUsIERyYWdTb3VyY2VBY3Rpb24sIEVsZW1lbnQmIHNvdXJjZUVsZW1l
bnQsIERhdGFUcmFuc2ZlciYsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdDsKKyAg
ICB2b2lkIHByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZUZyYW1lLCBPcHRpb25TZXQ8
RHJhZ1NvdXJjZUFjdGlvbj4sIEVsZW1lbnQmIHNvdXJjZUVsZW1lbnQsIERhdGFUcmFuc2ZlciYs
IGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdDsKICAgICBib29sIHN0YXJ0RHJhZyhG
cmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09y
aWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKICAgICBzdGF0aWMgY29uc3QgSW50
U2l6ZSYgbWF4RHJhZ0ltYWdlU2l6ZSgpOwogCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToK
ICAgICBEcmFnSGFuZGxpbmdNZXRob2QgbV9kcmFnSGFuZGxpbmdNZXRob2QgeyBEcmFnSGFuZGxp
bmdNZXRob2Q6Ok5vbmUgfTsKIAogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+
IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKLSAgICBEcmFnU291cmNlQWN0aW9uIG1fZHJh
Z1NvdXJjZUFjdGlvbiB7IERyYWdTb3VyY2VBY3Rpb25Ob25lIH07CisgICAgT3B0aW9uU2V0PERy
YWdTb3VyY2VBY3Rpb24+IG1fZHJhZ1NvdXJjZUFjdGlvbjsKICAgICBib29sIG1fZGlkSW5pdGlh
dGVEcmFnIHsgZmFsc2UgfTsKICAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9zb3VyY2VE
cmFnT3BlcmF0aW9uTWFzazsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMg
ZnJvbSBhIG1vdXNlIGRvd24gd2l0aGluIFdlYktpdC4KICAgICBJbnRQb2ludCBtX2RyYWdPZmZz
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaAppbmRleCA2ZDE2MjU5MDBlMy4uMmJjMDJjZTJmODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgRHJhZ1N0YXRlIHsKICAgICBSZWZQdHI8RWxlbWVudD4gc291cmNlOyAv
LyBFbGVtZW50IHRoYXQgbWF5IGJlIGEgZHJhZyBzb3VyY2UsIGZvciB0aGUgY3VycmVudCBtb3Vz
ZSBnZXN0dXJlLgogICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudHM7Ci0gICAgRHJhZ1NvdXJj
ZUFjdGlvbiB0eXBlOworICAgIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiB0eXBlOwogICAg
IFJlZlB0cjxEYXRhVHJhbnNmZXI+IGRhdGFUcmFuc2ZlcjsgLy8gVXNlZCBvbiBvbmx5IHRoZSBz
b3VyY2Ugc2lkZSBvZiBkcmFnZ2luZy4KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAppbmRleCAxNGJjYzViOGYyZS4uYTM2YTNmMWRiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTExOTAsMTUgKzExOTAsMTUgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OnBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKLURyYWdTb3VyY2VBY3Rpb24gRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0aW9u
c0FsbG93ZWQoKSBjb25zdAorT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKIHsKICAgICBQYWdlKiBw
YWdlID0gbV9mcmFtZS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gRHJh
Z1NvdXJjZUFjdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBE
cmFnU291cmNlQWN0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBw
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbih2aWV3LT5jb250
ZW50c1RvUm9vdFZpZXcobV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uKSk7CiB9CkBAIC0zNjQ3
LDM1ICszNjQ3LDM2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVk
KGNvbnN0IEludFBvaW50JiBmbG9hdERyYWdWaWV3cG9ydExvY2F0CiAKIGJvb2wgRXZlbnRIYW5k
bGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdWaWV3cG9y
dExvY2F0aW9uKSBjb25zdAogeworICAgIGF1dG8gZHJhZ09wZXJhdGlvbiA9IGRyYWdTdGF0ZSgp
LnR5cGUuYXNTaW5nbGVWYWx1ZSgpOworICAgIEFTU0VSVChkcmFnT3BlcmF0aW9uKTsKICAgICBp
bnQgdGhyZXNob2xkID0gR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwotICAgIHN3aXRjaCAoZHJhZ1N0
YXRlKCkudHlwZSkgewotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjoKLSAgICAg
ICAgdGhyZXNob2xkID0gVGV4dERyYWdIeXN0ZXJlc2lzOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIERyYWdTb3VyY2VBY3Rpb25JbWFnZToKKyAgICBpZiAoZHJhZ09wZXJhdGlvbikgeworICAg
ICAgICBzd2l0Y2ggKCpkcmFnT3BlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgRHJhZ1NvdXJjZUFj
dGlvbjo6U2VsZWN0aW9uOgorICAgICAgICAgICAgdGhyZXNob2xkID0gVGV4dERyYWdIeXN0ZXJl
c2lzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6
SW1hZ2U6CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBjYXNlIERyYWdTb3Vy
Y2VBY3Rpb25BdHRhY2htZW50OgorICAgICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246OkF0dGFj
aG1lbnQ6CiAjZW5kaWYKLSAgICAgICAgdGhyZXNob2xkID0gSW1hZ2VEcmFnSHlzdGVyZXNpczsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEcmFnU291cmNlQWN0aW9uTGluazoKLSAgICAgICAg
dGhyZXNob2xkID0gTGlua0RyYWdIeXN0ZXJlc2lzOwotICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIHRocmVzaG9sZCA9IEltYWdlRHJhZ0h5c3RlcmVzaXM7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpMaW5rOgorICAgICAgICAgICAgdGhyZXNo
b2xkID0gTGlua0RyYWdIeXN0ZXJlc2lzOworICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfQ09MT1IpCi0gICAgY2FzZSBEcmFnU291cmNlQWN0aW9uQ29sb3I6Ci0gICAg
ICAgIHRocmVzaG9sZCA9IENvbG9yRHJhZ0h5c3RlcnNpczsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3I6CisgICAgICAgICAgICB0aHJlc2hvbGQg
PSBDb2xvckRyYWdIeXN0ZXJzaXM7CisgICAgICAgICAgICBicmVhazsKICNlbmRpZgotICAgIGNh
c2UgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIERyYWdT
b3VyY2VBY3Rpb25Ob25lOgotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkFueToKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6REhU
TUw6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJl
dHVybiBtb3VzZU1vdmVtZW50RXhjZWVkc1RocmVzaG9sZChkcmFnVmlld3BvcnRMb2NhdGlvbiwg
dGhyZXNob2xkKTsKIH0KLSAgICAKKwogdm9pZCBFdmVudEhhbmRsZXI6OmludmFsaWRhdGVEYXRh
VHJhbnNmZXIoKQogewogICAgIGlmICghZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyKQpAQCAtMzcx
NSw3ICszNzE2LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZygpCiAgICAgICAg
IHJldHVybjsKIAogICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBkcmFnZ2VkQ29udGVudFJhbmdl
OwotICAgIGlmIChkcmFnU3RhdGUoKS50eXBlICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikK
KyAgICBpZiAoZHJhZ1N0YXRlKCkudHlwZS5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxl
Y3Rpb24pKQogICAgICAgICBkcmFnZ2VkQ29udGVudFJhbmdlID0gbV9mcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGVsc2UKICAgICAgICAgZHJh
Z2dlZENvbnRlbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoKmRyYWdTb3VyY2UpOwpA
QCAtMzc3NSwxMSArMzc3Niw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdTdGFy
dEV2ZW50T25Tb3VyY2VFbGVtZW50KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zCiAgICAgcmV0dXJu
ICFkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ3N0YXJ0RXZlbnQsICpkcmFnU3Rh
dGUoKS5zb3VyY2UsIG1fbW91c2VEb3duRXZlbnQsIGRhdGFUcmFuc2ZlcikgJiYgIW1fZnJhbWUu
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKTsKIH0KIAotc3RhdGlj
IGJvb2wgRXhhY3RseU9uZUJpdFNldChEcmFnU291cmNlQWN0aW9uIG4pCi17Ci0gICAgcmV0dXJu
IG4gJiYgIShuICYgKG4gLSAxKSk7Ci19Ci0KIFJlZlB0cjxFbGVtZW50PiBFdmVudEhhbmRsZXI6
OmRyYWdnZWRFbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZHJhZ1N0YXRlKCkuc291cmNl
OwpAQCAtMzgwMyw3ICszNzk5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAKICAg
ICAvLyBDYXJlZnVsIHRoYXQgdGhlIGRyYWcgc3RhcnRpbmcgbG9naWMgc3RheXMgaW4gc3luYyB3
aXRoIGV2ZW50TWF5U3RhcnREcmFnKCkuCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFn
ICYmICFkcmFnU3RhdGUoKS5zb3VyY2UpIHsKLSAgICAgICAgZHJhZ1N0YXRlKCkuc2hvdWxkRGlz
cGF0Y2hFdmVudHMgPSAodXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgJiBEcmFnU291
cmNlQWN0aW9uREhUTUwpOworICAgICAgICBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50
cyA9IHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpLmNvbnRhaW5zKERyYWdTb3VyY2VB
Y3Rpb246OkRIVE1MKTsKIAogICAgICAgICAvLyBUcnkgdG8gZmluZCBhbiBlbGVtZW50IHRoYXQg
d2FudHMgdG8gYmUgZHJhZ2dlZC4KICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobV9tb3Vz
ZURvd25Db250ZW50c1Bvc2l0aW9uKTsKQEAgLTM4MTQsMTcgKzM4MTAsMTcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYg
ZXZlbnQsIENoZWNrRHIKICAgICAgICAgaWYgKCFkcmFnU3RhdGUoKS5zb3VyY2UpCiAgICAgICAg
ICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOyAvLyBubyBlbGVtZW50IGlzIGRy
YWdnYWJsZQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2RyYWdNYXlTdGFydFNlbGVjdGlv
bkluc3RlYWQgPSAoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24p
OworICAgICAgICAgICAgbV9kcmFnTWF5U3RhcnRTZWxlY3Rpb25JbnN0ZWFkID0gZHJhZ1N0YXRl
KCkudHlwZS5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pOwogICAgIH0KICAg
ICAKICAgICAvLyBGb3IgZHJhZ3Mgc3RhcnRpbmcgaW4gdGhlIHNlbGVjdGlvbiwgdGhlIHVzZXIg
bXVzdCB3YWl0IGJldHdlZW4gdGhlIG1vdXNlZG93biBhbmQgbW91c2VkcmFnLAogICAgIC8vIG9y
IGVsc2Ugd2UgYmFpbCBvbiB0aGUgZHJhZ2dpbmcgc3R1ZmYgYW5kIGFsbG93IHNlbGVjdGlvbiB0
byBvY2N1cgotICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiBtX2RyYWdNYXlTdGFy
dFNlbGVjdGlvbkluc3RlYWQgJiYgKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9u
U2VsZWN0aW9uKSAmJiBldmVudC5ldmVudCgpLnRpbWVzdGFtcCgpIC0gbV9tb3VzZURvd25UaW1l
c3RhbXAgPCBUZXh0RHJhZ0RlbGF5KSB7CisgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFn
ICYmIG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVhZCAmJiBkcmFnU3RhdGUoKS50eXBlLmNv
bnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbikgJiYgZXZlbnQuZXZlbnQoKS50aW1l
c3RhbXAoKSAtIG1fbW91c2VEb3duVGltZXN0YW1wIDwgVGV4dERyYWdEZWxheSkgewogICAgICAg
ICBBU1NFUlQoZXZlbnQuZXZlbnQoKS50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3Zl
ZCk7Ci0gICAgICAgIGlmICgoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25JbWFn
ZSkpIHsKKyAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLnR5cGUuY29udGFpbnMoRHJhZ1NvdXJjZUFj
dGlvbjo6SW1hZ2UpKSB7CiAgICAgICAgICAgICAvLyAuLi4gdW5sZXNzIHRoZSBtb3VzZSBpcyBv
dmVyIGFuIGltYWdlLCB0aGVuIHdlIHN0YXJ0IGRyYWdnaW5nIGp1c3QgdGhlIGltYWdlCi0gICAg
ICAgICAgICBkcmFnU3RhdGUoKS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvbkltYWdlOwotICAgICAg
ICB9IGVsc2UgaWYgKCEoZHJhZ1N0YXRlKCkudHlwZSAmIChEcmFnU291cmNlQWN0aW9uREhUTUwg
fCBEcmFnU291cmNlQWN0aW9uTGluaykpKSB7CisgICAgICAgICAgICBkcmFnU3RhdGUoKS50eXBl
ID0gRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2U7CisgICAgICAgIH0gZWxzZSBpZiAoIWRyYWdTdGF0
ZSgpLnR5cGUuY29udGFpbnNBbnkoeyBEcmFnU291cmNlQWN0aW9uOjpESFRNTCwgRHJhZ1NvdXJj
ZUFjdGlvbjo6TGluayB9KSkgewogICAgICAgICAgICAgLy8gLi4uIGJ1dCBvbmx5IGJhaWwgaWYg
d2UncmUgbm90IG92ZXIgYW4gdW5zZWxlY3RhYmxlIGVsZW1lbnQuCiAgICAgICAgICAgICBtX21v
dXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogICAgICAgICAgICAgZHJhZ1N0YXRlKCkuc291
cmNlID0gbnVsbHB0cjsKQEAgLTM4NDUsMTEgKzM4NDEsMTUgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENo
ZWNrRHIKICAgICAgICAgcmV0dXJuICFtb3VzZURvd25NYXlTdGFydFNlbGVjdCgpICYmICFtX21v
dXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbDsKICAgICBBU1NFUlQoZHJhZ1N0YXRlKCkuc291cmNl
KTsKIAotICAgIGlmICghRXhhY3RseU9uZUJpdFNldChkcmFnU3RhdGUoKS50eXBlKSkgewotICAg
ICAgICBBU1NFUlQoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24p
OwotICAgICAgICBBU1NFUlQoRXhhY3RseU9uZUJpdFNldChzdGF0aWNfY2FzdDxEcmFnU291cmNl
QWN0aW9uPihkcmFnU3RhdGUoKS50eXBlICYgfkRyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pKSk7
CisgICAgaWYgKCFkcmFnU3RhdGUoKS50eXBlLmhhc0V4YWN0bHlPbmVCaXRTZXQoKSkgeworICAg
ICAgICBBU1NFUlQoZHJhZ1N0YXRlKCkudHlwZS5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpT
ZWxlY3Rpb24pKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGF1dG8gYWN0aW9uTWFza0NvcHkg
PSBkcmFnU3RhdGUoKS50eXBlOworICAgICAgICBhY3Rpb25NYXNrQ29weS5yZW1vdmUoRHJhZ1Nv
dXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKGFjdGlvbk1hc2tDb3B5Lmhh
c0V4YWN0bHlPbmVCaXRTZXQoKSk7CisjZW5kaWYKIAotICAgICAgICBkcmFnU3RhdGUoKS50eXBl
ID0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjsKKyAgICAgICAgZHJhZ1N0YXRlKCkudHlwZSA9
IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbjsKICAgICB9CiAKICAgICAvLyBXZSBhcmUgc3Rh
cnRpbmcgYSB0ZXh0L2ltYWdlL3VybCBkcmFnLCBzbyB0aGUgY3Vyc29yIHNob3VsZCBiZSBhbiBh
cnJvdwpAQCAtMzg4MSw3ICszODgxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWco
Y29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAg
ICAgICAgIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA9IEhhc05vbkRlZmF1bHRQYXN0ZWJv
YXJkRGF0YTo6WWVzOwogICAgICAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPm1vdmVEcmFn
U3RhdGUoV1RGTW92ZShkcmFnU3RhcnREYXRhVHJhbnNmZXIpKTsKIAotICAgICAgICBpZiAoZHJh
Z1N0YXRlKCkuc291cmNlICYmIGRyYWdTdGF0ZSgpLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRI
VE1MICYmICFkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPmhhc0RyYWdJbWFnZSgpKSB7CisgICAg
ICAgIGlmIChkcmFnU3RhdGUoKS5zb3VyY2UgJiYgZHJhZ1N0YXRlKCkudHlwZSA9PSBEcmFnU291
cmNlQWN0aW9uOjpESFRNTCAmJiAhZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5oYXNEcmFnSW1h
Z2UoKSkgewogICAgICAgICAgICAgZHJhZ1N0YXRlKCkuc291cmNlLT5kb2N1bWVudCgpLnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRyYWdT
dGF0ZSgpLnNvdXJjZS0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gYWJzb2x1
dGVQb3NpdGlvbiA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCmluZGV4IDI3Y2FlNjFlZDExLi5mN2ExNmMxZTA2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5oCkBAIC00NjUsNyArNDY1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCYp
OwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBEcmFnU291cmNlQWN0aW9uIHVwZGF0
ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNvbnN0OworICAgIE9wdGlvblNldDxEcmFnU291
cmNlQWN0aW9uPiB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdDsKICAgICBi
b29sIHN1cHBvcnRzU2VsZWN0aW9uVXBkYXRlc09uTW91c2VEcmFnKCkgY29uc3Q7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKaW5kZXggZTU4NTljNDJjZjkuLjFkMWYyYTc4
OTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmgKQEAgLTQxLDcgKzQxLDcgQEAgc3Ry
dWN0IERyYWdJdGVtIGZpbmFsIHsKICAgICAvLyBXaGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlIHBv
c2l0aW9uZWQgcmVsYXRpdmUgdG8gdGhlIGN1cnNvci4KICAgICBGbG9hdFBvaW50IGltYWdlQW5j
aG9yUG9pbnQ7CiAKLSAgICBEcmFnU291cmNlQWN0aW9uIHNvdXJjZUFjdGlvbiB7IERyYWdTb3Vy
Y2VBY3Rpb25Ob25lIH07CisgICAgT3B0aW9uYWw8RHJhZ1NvdXJjZUFjdGlvbj4gc291cmNlQWN0
aW9uOwogICAgIEludFBvaW50IGV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKICAg
ICBJbnRQb2ludCBkcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKICAgICBJbnRQb2lu
dCBkcmFnTG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzOwpAQCAtNjEsNyArNjEsNyBAQCB2b2lk
IERyYWdJdGVtOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICAvLyBGSVhN
RSgxNzM4MTUpOiBXZSBzaG91bGQgZW5jb2RlIGFuZCBkZWNvZGUgUGFzdGVib2FyZFdyaXRlckRh
dGEgYW5kIHBsYXRmb3JtIGRyYWcgaW1hZ2UgZGF0YQogICAgIC8vIGhlcmUgdG9vLCBhcyBwYXJ0
IG9mIG1vdmluZyBvZmYgb2YgdGhlIGxlZ2FjeSBkcmFnZ2luZyBjb2RlcGF0aC4KLSAgICBlbmNv
ZGVyLmVuY29kZUVudW0oc291cmNlQWN0aW9uKTsKKyAgICBlbmNvZGVyIDw8IHNvdXJjZUFjdGlv
bjsKICAgICBlbmNvZGVyIDw8IGltYWdlQW5jaG9yUG9pbnQgPDwgZXZlbnRQb3NpdGlvbkluQ29u
dGVudENvb3JkaW5hdGVzIDw8IGRyYWdMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzIDw8IGRy
YWdMb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMgPDwgdGl0bGUgPDwgdXJsIDw8IGRyYWdQcmV2
aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiAgICAgYm9vbCBoYXNJbmRpY2F0b3JEYXRh
ID0gaW1hZ2UuaGFzSW5kaWNhdG9yRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFzSW5kaWNhdG9y
RGF0YTsKQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBEcmFnSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBEcmFnSXRlbTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIERyYWdJdGVtJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUVudW0ocmVzdWx0LnNvdXJjZUFjdGlvbikpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQuc291cmNlQWN0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmltYWdlQW5jaG9yUG9pbnQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAx
YmZkMjgyNTlmOC4uNjJjNTA4ZTMxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtNTkxLDYgKzU5MSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUp
OgogICAgICAgICAnV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6IFsnIkRv
Y3VtZW50RWRpdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6OkRyYWdIYW5kbGlu
Z01ldGhvZCc6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OkRyYWdPcGVyYXRpb24nOiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCisgICAgICAgICdX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uJzogWyc8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPiddLAog
ICAgICAgICAnV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyc6IFsnPFdlYkNvcmUvSlNET01FeGNl
cHRpb25IYW5kbGluZy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5n
cyc6IFsnPFdlYkNvcmUvRmlsZUNob29zZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNoYXJl
RGF0YVdpdGhQYXJzZWRVUkwnOiBbJzxXZWJDb3JlL1NoYXJlRGF0YS5oPiddLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NzIyYjllZGRlNC4uNDYwYThmOTk5Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04MjcsOCArODI3LDgg
QEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgdm9pZCBkaWRIYW5kbGVE
cmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRlZCk7CiAgICAgdm9pZCBkaWRIYW5kbGVBZGRpdGlv
bmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKTsKLSAgICB2b2lkIHJlcXVlc3REcmFnU3Rh
cnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxs
b3dlZEFjdGlvbnMpOwotICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNz
aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFs
bG93ZWRBY3Rpb25zKTsKKyAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0
aW9uc01hc2spOworICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9u
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKICAgICB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBs
YWNlaG9sZGVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVwbHkpOwogICAgIHZvaWQgd2lsbFJlY2VpdmVF
ZGl0RHJhZ1NuYXBzaG90KCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRWRpdERyYWdTbmFwc2hvdChP
cHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCmluZGV4IGQy
ZTBiOTA5ZmVjLi5iN2Y4N2I0NDcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaApAQCAtNDYsNyArNDYsNyBAQCBz
dHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IERy
YWdTb3VyY2VTdGF0ZSB7Ci0gICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24geyBX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uTm9uZSB9OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uPiBhY3Rpb247CiAgICAgQ0dQb2ludCBhZGp1c3RlZE9yaWdpbiB7IENH
UG9pbnRaZXJvIH07CiAgICAgQ0dSZWN0IGRyYWdQcmV2aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgeyBDR1JlY3RaZXJvIH07CiAgICAgUmV0YWluUHRyPFVJSW1hZ2U+IGltYWdlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUubW0KaW5kZXggZmY0ZTRmZDE0ZjEuLjkwMmRiOGU0YzZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0K
QEAgLTk5LDExICs5OSwxMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VEcmFnSW1hZ2VUb0NyZWF0
ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBpZiAoc291cmNl
LmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikKKyAgICBpZiAoc291cmNlLmFjdGlvbi5j
b250YWlucyhEcmFnU291cmNlQWN0aW9uOjpDb2xvcikpCiAgICAgICAgIHJldHVybiB0cnVlOwog
I2VuZGlmCiAKLSAgICByZXR1cm4gc291cmNlLmFjdGlvbiAmIChEcmFnU291cmNlQWN0aW9uREhU
TUwgfCBEcmFnU291cmNlQWN0aW9uSW1hZ2UpOworICAgIHJldHVybiBzb3VyY2UuYWN0aW9uLmNv
bnRhaW5zQW55KHsgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsIERyYWdTb3VyY2VBY3Rpb246Oklt
YWdlIH0pOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRVc2VWaXNpYmxlUGF0aFRvQ3JlYXRlUHJl
dmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVN0YXRlJiBzb3VyY2UpCkBAIC0xMTIs
NyArMTEyLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlVmlzaWJsZVBhdGhUb0NyZWF0ZVByZXZp
ZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGEKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgaWYgKHNvdXJjZS5hY3Rpb24g
JiBEcmFnU291cmNlQWN0aW9uQ29sb3IpCisgICAgaWYgKHNvdXJjZS5hY3Rpb24uY29udGFpbnMo
RHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgog
CkBAIC0xMjQsMTEgKzEyNCwxMSBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VUZXh0SW5kaWNhdG9y
VG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBEcmFnU291cmNlUwogICAgIGlmICgh
c291cmNlLmluZGljYXRvckRhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChz
b3VyY2UuYWN0aW9uICYgKERyYWdTb3VyY2VBY3Rpb25MaW5rIHwgRHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbikpCisgICAgaWYgKHNvdXJjZS5hY3Rpb24uY29udGFpbnNBbnkoeyBEcmFnU291cmNl
QWN0aW9uOjpMaW5rLCBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24gfSkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBpZiAoc291
cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50KQorICAgIGlmIChzb3VyY2Uu
YWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgogCkBAIC0xNDEsMTEgKzE0MSwxMSBAQCBzdGF0aWMgYm9vbCBj
YW5VcGRhdGVQcmV2aWV3Rm9yQWN0aXZlRHJhZ1NvdXJjZShjb25zdCBEcmFnU291cmNlU3RhdGUm
IHNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
Q09MT1IpCi0gICAgaWYgKHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQ29sb3IpCisg
ICAgaWYgKHNvdXJjZS5hY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAgaWYgKHNvdXJjZS5hY3Rpb24gJiBE
cmFnU291cmNlQWN0aW9uTGluayAmJiAhKHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9u
SW1hZ2UpKQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246
OkxpbmspICYmICFzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkltYWdl
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjcsNyAr
MTY3LDcgQEAgT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBEcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGU6OmFjdGl2ZURyYWdTb3VyY2VGb3JJdGVtKFVJRHIKIGJvb2wgRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlOjphbnlBY3RpdmVEcmFnU291cmNlSXMoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBh
Y3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBtX2FjdGl2ZURyYWdTb3Vy
Y2VzKSB7Ci0gICAgICAgIGlmIChzb3VyY2UuYWN0aW9uICYgYWN0aW9uKQorICAgICAgICBpZiAo
c291cmNlLmFjdGlvbi5jb250YWlucyhhY3Rpb24pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIERyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZTo6c3RhZ2VEcmFnSXRlbShjb25zdCBEcmFnSXRlbSYgaXRlbSwg
VUlJbWFnZSAqZHJhZwogCiAgICAgbV9hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCA9IGl0ZW0u
ZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVzOwogICAgIG1fc3RhZ2VkRHJhZ1NvdXJj
ZSA9IHt7Ci0gICAgICAgIHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KGl0ZW0uc291cmNl
QWN0aW9uKSwKKyAgICAgICAgaXRlbS5zb3VyY2VBY3Rpb24sCiAgICAgICAgIGl0ZW0uZXZlbnRQ
b3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVzLAogICAgICAgICBpdGVtLmRyYWdQcmV2aWV3RnJh
bWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMsCiAgICAgICAgIGRyYWdJbWFnZSwKQEAgLTM1Nyw3ICsz
NTcsNyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6c3RhZ2VEcmFnSXRlbShjb25z
dCBEcmFnSXRlbSYgaXRlbSwgVUlJbWFnZSAqZHJhZwogCiBib29sIERyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZTo6aGFzU3RhZ2VkRHJhZ1NvdXJjZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3Rh
Z2VkRHJhZ1NvdXJjZSAmJiBzdGFnZWREcmFnU291cmNlKCkuYWN0aW9uICE9IFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb25Ob25lOworICAgIHJldHVybiBtX3N0YWdlZERyYWdTb3VyY2UgJiYgIXN0
YWdlZERyYWdTb3VyY2UoKS5hY3Rpb24uaXNFbXB0eSgpOwogfQogCiB2b2lkIERyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZTo6Y2xlYXJTdGFnZWREcmFnU291cmNlKERpZEJlY29tZUFjdGl2ZSBkaWRC
ZWNvbWVBY3RpdmUpCkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBEcmFnRHJvcEludGVyYWN0aW9u
U3RhdGU6OnVwZGF0ZVByZXZpZXdzRm9yQWN0aXZlRHJhZ1NvdXJjZXMoKQogICAgICAgICBpZiAo
IWRyYWdJdGVtKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHNvdXJjZS5h
Y3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykgeworICAgICAgICBpZiAoc291cmNlLmFjdGlv
bi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpMaW5rKSkgewogICAgICAgICAgICAgZHJhZ0l0
ZW0ucHJldmlld1Byb3ZpZGVyID0gW3RpdGxlID0gcmV0YWluUHRyKChOU1N0cmluZyAqKXNvdXJj
ZS5saW5rVGl0bGUpLCB1cmwgPSByZXRhaW5QdHIoKE5TVVJMICopc291cmNlLmxpbmtVUkwpLCBj
ZW50ZXIgPSBzb3VyY2UuYWRqdXN0ZWRPcmlnaW5dICgpIC0+IFVJRHJhZ1ByZXZpZXcgKiB7CiAg
ICAgICAgICAgICAgICAgVUlVUkxEcmFnUHJldmlld1ZpZXcgKnByZXZpZXdWaWV3ID0gW1VJVVJM
RHJhZ1ByZXZpZXdWaWV3IHZpZXdXaXRoVGl0bGU6dGl0bGUuZ2V0KCkgVVJMOnVybC5nZXQoKV07
CiAgICAgICAgICAgICAgICAgcHJldmlld1ZpZXcuY2VudGVyID0gY2VudGVyOwpAQCAtNDAyLDcg
KzQwMiw3IEBAIHZvaWQgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjp1cGRhdGVQcmV2aWV3c0Zv
ckFjdGl2ZURyYWdTb3VyY2VzKCkKICAgICAgICAgICAgIH07CiAgICAgICAgIH0KICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICAgICAgZWxzZSBpZiAoc291cmNlLmFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25Db2xvcikgeworICAgICAgICBlbHNlIGlmIChzb3VyY2UuYWN0aW9uLmNv
bnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkNvbG9yKSkgewogICAgICAgICAgICAgZHJhZ0l0ZW0u
cHJldmlld1Byb3ZpZGVyID0gW2ltYWdlID0gc291cmNlLmltYWdlXSAoKSAtPiBVSURyYWdQcmV2
aWV3ICogewogICAgICAgICAgICAgICAgIFVJSW1hZ2VWaWV3ICppbWFnZVZpZXcgPSBbW1tVSUlt
YWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWFnZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwog
ICAgICAgICAgICAgICAgIFVJRHJhZ1ByZXZpZXdQYXJhbWV0ZXJzICpwYXJhbWV0ZXJzID0gW1tb
VUlEcmFnUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoVGV4dExpbmVSZWN0czpAWyBb
TlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W2ltYWdlVmlldyBib3VuZHNdXSBdXSBhdXRvcmVsZWFz
ZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkMmI0ZjczOGVkNC4uOTM2YTk0Zjc0MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQpAQCAtNzI0MCw3ICs3MjQwLDcgQEAgLSAodm9pZCl0ZWFyZG93bkRyYWdBbmREcm9w
SW50ZXJhY3Rpb25zCiAKIC0gKHZvaWQpX3N0YXJ0RHJhZzooUmV0YWluUHRyPENHSW1hZ2VSZWY+
KWltYWdlIGl0ZW06KGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJilpdGVtCiB7Ci0gICAgQVNTRVJU
KGl0ZW0uc291cmNlQWN0aW9uICE9IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb25Ob25lKTsKKyAg
ICBBU1NFUlQoaXRlbS5zb3VyY2VBY3Rpb24pOwogCiAgICAgaWYgKGl0ZW0ucHJvbWlzZWRBdHRh
Y2htZW50SW5mbykKICAgICAgICAgW3NlbGYgX3ByZXBhcmVUb0RyYWdQcm9taXNlZEF0dGFjaG1l
bnQ6aXRlbS5wcm9taXNlZEF0dGFjaG1lbnRJbmZvXTsKQEAgLTc1NDEsMTIgKzc1NDEsMTIgQEAg
LSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyb3BT
ZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2kKICAgICByZXR1cm4gV0tEcmFnRGVzdGluYXRpb25BY3Rp
b25BbnkgJiB+V0tEcmFnRGVzdGluYXRpb25BY3Rpb25Mb2FkOwogfQogCi0tIChXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uKV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMKKy0gKE9wdGlvblNldDxX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPilfYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zCiB7Ci0g
ICAgYXV0byBhbGxvd2VkQWN0aW9ucyA9IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb25Bbnk7Cisg
ICAgYXV0byBhbGxvd2VkQWN0aW9ucyA9IFdlYkNvcmU6OmFueURyYWdTb3VyY2VBY3Rpb24oKTsK
ICAgICBpZiAoIXNlbGYuaXNGaXJzdFJlc3BvbmRlciB8fCAhX3N1cHByZXNzU2VsZWN0aW9uQXNz
aXN0YW50UmVhc29ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgc3RhcnRp
bmcgYSBkcmFnIG9uIGEgc2VsZWN0aW9uIHdoZW4gc2VsZWN0aW9uIHZpZXdzIGFyZSBub3Qgdmlz
aWJsZS4KLSAgICAgICAgYWxsb3dlZEFjdGlvbnMgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uPihhbGxvd2VkQWN0aW9ucyAmIH5XZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
U2VsZWN0aW9uKTsKKyAgICAgICAgYWxsb3dlZEFjdGlvbnMucmVtb3ZlKFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb246OlNlbGVjdGlvbik7CiAgICAgfQogICAgIHJldHVybiBhbGxvd2VkQWN0aW9u
czsKIH0KQEAgLTgwMTcsNyArODAxNyw3IEBAIC0gKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKWRy
YWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwcmV2CiAtICh2
b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiB3aWxs
QW5pbWF0ZUxpZnRXaXRoQW5pbWF0b3I6KGlkIDxVSURyYWdBbmltYXRpbmc+KWFuaW1hdG9yIHNl
c3Npb246KGlkIDxVSURyYWdTZXNzaW9uPilzZXNzaW9uCiB7CiAgICAgUkVMRUFTRV9MT0coRHJh
Z0FuZERyb3AsICJEcmFnIHNlc3Npb24gd2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW1hdG9yOiAlcCIs
IHNlc3Npb24pOwotICAgIGlmIChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFueUFjdGl2ZURy
YWdTb3VyY2VJcyhXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSkgeworICAgIGlm
IChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFueUFjdGl2ZURyYWdTb3VyY2VJcyhXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pKSB7CiAgICAgICAgIFtzZWxmIGNhbmNlbEFj
dGl2ZVRleHRJbnRlcmFjdGlvbkdlc3R1cmVzXTsKICAgICAgICAgaWYgKCFfc2hvdWxkUmVzdG9y
ZUNhbGxvdXRCYXJBZnRlckRyb3ApIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIFNQSSBz
aG91bGQgYmUgcmVuYW1lZCBpbiBVSUtpdCB0byByZWZsZWN0IGEgbW9yZSBnZW5lcmFsIHB1cnBv
c2Ugb2YgaGlkaW5nIGludGVyYWN0aW9uIGFzc2lzdGFudCBjb250cm9scy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDYxNGRjYmYzN2Mw
Li4zNGYwNTE5YmU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCkBAIC0xMjU3LDE2ICsxMjU3LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKQogICAgIHBhZ2VD
bGllbnQoKS5kaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChhZGRlZCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFsbG93ZWRBY3Rpb25zKQordm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCiB7CiAg
ICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVxdWVzdERyYWdTdGFydChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9z
aXRpb24sIGFsbG93ZWRBY3Rpb25zKSwgbV93ZWJQYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REcmFnU3RhcnQoY2xpZW50UG9zaXRpb24s
IGdsb2JhbFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9uc01hc2spLCBtX3dlYlBhZ2VJRCk7CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24o
Y29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9z
aXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxsb3dlZEFjdGlvbnMpCit2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IElu
dFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKQog
ewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihj
bGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rpb25zKSwgbV93ZWJQYWdl
SUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RB
ZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRp
b24sIGFsbG93ZWRBY3Rpb25zTWFzayksIG1fd2ViUGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8SW50U2l6
ZT4mIGltYWdlU2l6ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPEludFJl
Y3Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCA4MWI3OWE3N2M4Ny4uMmViMDg4NmYxM2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50
UG9pbnQKIHsKIH0KIAotRHJhZ1NvdXJjZUFjdGlvbiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNl
QWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKK09wdGlvblNldDxEcmFnU291cmNl
QWN0aW9uPiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0
IEludFBvaW50JikKIHsKICAgICByZXR1cm4gbV9wYWdlLT5hbGxvd2VkRHJhZ1NvdXJjZUFjdGlv
bnMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDI3YzRiMjcyYTczLi40ZGJhMGQ4YWJkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9p
ZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3
aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImKSBvdmVycmlkZTsK
LSAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlkZTsKKyAgICBP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbk1hc2tG
b3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdlYkNvcmU6OkRhdGFUcmFu
c2ZlciYsIFdlYkNvcmU6OkZyYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDb25jbHVkZUVk
aXREcmFnKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggYTRiMTU3ODY2YmUuLjA0OTU2MDJmMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05MTUsNyArOTE1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgd2lsbFN0YXJ0RHJhZygpIHsgQVNTRVJUKCFtX2lzU3RhcnRpbmdEcmFnKTsgbV9p
c1N0YXJ0aW5nRHJhZyA9IHRydWU7IH0KICAgICB2b2lkIGRpZFN0YXJ0RHJhZygpOwogICAgIHZv
aWQgZHJhZ0NhbmNlbGxlZCgpOwotICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxsb3dl
ZERyYWdTb3VyY2VBY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkRHJhZ1NvdXJjZUFj
dGlvbnM7IH0KKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dl
ZERyYWdTb3VyY2VBY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkRHJhZ1NvdXJjZUFj
dGlvbnM7IH0KICNlbmRpZgogCiAgICAgdm9pZCBiZWdpblByaW50aW5nKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJik7CkBAIC0xNDA2LDggKzE0MDYsOCBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKLSAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9z
aXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKTsKLSAgICB2b2lkIHJlcXVlc3RBZGRpdGlv
bmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qg
YWxsb3dlZEFjdGlvbnMpOworICAgIHZvaWQgcmVxdWVzdERyYWdTdGFydChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRB
Y3Rpb25zTWFzayk7CisgICAgdm9pZCByZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Np
b24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spOwogICAgIHZvaWQgaW5zZXJ0RHJvcHBlZEltYWdl
UGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgT3B0aW9uYWw8V2Vi
Q29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiByZXBseSk7CiAgICAgdm9pZCBjb21wdXRlQW5k
U2VuZEVkaXREcmFnU25hcHNob3QoKTsKICNlbmRpZgpAQCAtMTkzMyw3ICsxOTMzLDcgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBtX2lzU3RhcnRpbmdE
cmFnIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIG1fYWxsb3dlZERy
YWdTb3VyY2VBY3Rpb25zIHsgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbkFueSB9OworICAgIE9w
dGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBtX2FsbG93ZWREcmFnU291cmNlQWN0
aW9ucyB7IFdlYkNvcmU6OmFueURyYWdTb3VyY2VBY3Rpb24oKSB9OwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXgg
YWU5Mjc0NzYzODguLjE2YWYzMTdlODg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTMyMSw4ICszMjEsOCBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFJlcXVlc3REcmFnU3RhcnQoV2ViQ29yZTo6
SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9u
LCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKLSAgICBSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9y
RHJhZ1Nlc3Npb24oV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6Oklu
dFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKKyAgICBSZXF1
ZXN0RHJhZ1N0YXJ0KFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IGFsbG93ZWRBY3Rpb25zTWFzaykKKyAgICBSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJh
Z1Nlc3Npb24oV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4g
YWxsb3dlZEFjdGlvbnNNYXNrKQogICAgIEluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhW
ZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gaW1hZ2VTaXplKSAtPiAoVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+IGRyb3BQcmV2aWV3UmVjdHMsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JE
YXRhPiB0ZXh0SW5kaWNhdG9yKSBBc3luYwogICAgIERpZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggNTgwMzRiNzFjMTEuLjcwYzhmMmFhZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtOTA5LDE2ICs5MDks
MTYgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihXZWJL
aXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIH0KIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNU
SU9OKQotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxv
d2VkQWN0aW9ucykKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdERyYWdTdGFydChjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzaykKIHsKLSAg
ICBTZXRGb3JTY29wZTxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc0Zv
clNjb3BlKG1fYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uPihhbGxvd2VkQWN0aW9ucykpOworICAgIFNldEZvclNjb3BlPE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPj4gYWxsb3dlZEFjdGlvbnNGb3JTY29wZSht
X2FsbG93ZWREcmFnU291cmNlQWN0aW9ucywgYWxsb3dlZEFjdGlvbnNNYXNrKTsKICAgICBib29s
IGRpZFN0YXJ0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS50cnlUb0JlZ2lu
RHJhZ0F0UG9pbnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uKTsKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZURyYWdTdGFydFJlcXVlc3QoZGlkU3RhcnQp
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Np
b24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0
QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCiB7Ci0gICAgU2V0Rm9yU2NvcGU8
V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNGb3JTY29wZShtX2FsbG93
ZWREcmFnU291cmNlQWN0aW9ucywgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
bj4oYWxsb3dlZEFjdGlvbnMpKTsKKyAgICBTZXRGb3JTY29wZTxPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbj4+IGFsbG93ZWRBY3Rpb25zRm9yU2NvcGUobV9hbGxvd2VkRHJhZ1Nv
dXJjZUFjdGlvbnMsIGFsbG93ZWRBY3Rpb25zTWFzayk7CiAgICAgLy8gVG8gYXVnbWVudCB0aGUg
cGxhdGZvcm0gZHJhZyBzZXNzaW9uIHdpdGggYWRkaXRpb25hbCBpdGVtcywgZW5kIHRoZSBjdXJy
ZW50IGRyYWcgc2Vzc2lvbiBhbmQgYmVnaW4gYSBuZXcgZHJhZyBzZXNzaW9uIHdpdGggdGhlIG5l
dyBkcmFnIGl0ZW0uCiAgICAgLy8gVGhpcyBwcm9jZXNzIGlzIG9wYXF1ZSB0byB0aGUgVUkgcHJv
Y2Vzcywgd2hpY2ggc3RpbGwgbWFpbnRhaW5zIHRoZSBvbGQgZHJhZyBpdGVtIGluIGl0cyBkcmFn
IHNlc3Npb24uIFNpbWlsYXJseSwgdGhpcyBwZXJzaXN0ZW50IGRyYWcgc2Vzc2lvbgogICAgIC8v
IGlzIG9wYXF1ZSB0byB0aGUgd2ViIHByb2Nlc3MsIHdoaWNoIG9ubHkgc2VlcyB0aGF0IHRoZSBj
dXJyZW50IGRyYWcgaGFzIGVuZGVkLCBhbmQgdGhhdCBhIG5ldyBvbmUgaXMgYmVnaW5uaW5nLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCmluZGV4IDE1ZGNiYTU0NDIxLi4zNGE3NWZmYWIxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApA
QCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFj
dGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uPiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdGFydERyYWcoV2Vi
Q29yZTo6RHJhZ0l0ZW0sIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGJlZ2luRHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29y
ZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEb3duUG9zaXRpb24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURyYWdnZWRQb3NpdGlvbiwgV2ViQ29yZTo6RGF0
YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5tbQppbmRleCAzZDFhMGEzNWZmMi4uNDJhYzI3YmZjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAt
NjgsNiArNjgsMjIgQEAgV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJW
aWV3KQogCiAjaWYgUExBVEZPUk0oTUFDKQogCitzdGF0aWMgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24+IGNvcmVEcmFnU291cmNlQWN0aW9uTWFzayhXZWJEcmFnU291cmNlQWN0
aW9uIGFjdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4g
cmVzdWx0OworCisgICAgaWYgKGFjdGlvbiAmIFdlYkRyYWdTb3VyY2VBY3Rpb25ESFRNTCkKKyAg
ICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpESFRNTCk7CisgICAg
aWYgKGFjdGlvbiAmIFdlYkRyYWdTb3VyY2VBY3Rpb25JbWFnZSkKKyAgICAgICAgcmVzdWx0LmFk
ZChXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpJbWFnZSk7CisgICAgaWYgKGFjdGlvbiAmIFdl
YkRyYWdTb3VyY2VBY3Rpb25MaW5rKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb246OkxpbmspOworICAgIGlmIChhY3Rpb24gJiBXZWJEcmFnU291cmNlQWN0aW9u
U2VsZWN0aW9uKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246
OlNlbGVjdGlvbik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgV2ViRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uIGtpdChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9u
KQogewogICAgIHN3aXRjaCAoYWN0aW9uKSB7CkBAIC0xMDQsMTUgKzEyMCwxNSBAQCB2b2lkIFdl
YkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdAogfQogCiAKLVdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gV2ViRHJh
Z0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcm9v
dFZpZXdQb2ludCkKK09wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBXZWJEcmFn
Q2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiByb290
Vmlld1BvaW50KQogewogICAgIE5TUG9pbnQgdmlld1BvaW50ID0gW21fd2ViVmlldyBfY29udmVy
dFBvaW50RnJvbVJvb3RWaWV3OnJvb3RWaWV3UG9pbnRdOwotICAgIHJldHVybiAoRHJhZ1NvdXJj
ZUFjdGlvbilbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZp
ZXcgZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludDp2aWV3UG9pbnRdOworICAgIHJldHVybiBj
b3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2soW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJd
IHdlYlZpZXc6bV93ZWJWaWV3IGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQ6dmlld1BvaW50
XSk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9u
KFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgbW91c2VEb3duUG9pbnQsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQog
ewotICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmll
dyB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb246KFdlYkRyYWdTb3VyY2VBY3Rpb24pYWN0aW9u
IGZyb21Qb2ludDptb3VzZURvd25Qb2ludCB3aXRoUGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIHBh
c3RlYm9hcmRXaXRoTmFtZTpkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLm5hbWUoKV1dOworICAg
IFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxs
UGVyZm9ybURyYWdTb3VyY2VBY3Rpb246a2l0KGFjdGlvbikgZnJvbVBvaW50Om1vdXNlRG93blBv
aW50IHdpdGhQYXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOmRhdGFU
cmFuc2Zlci5wYXN0ZWJvYXJkKCkubmFtZSgpXV07CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6
c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2Zlciwg
RnJhbWUmIGZyYW1lKQpAQCAtMTI0LDcgKzE0MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3Rh
cnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJh
CiAgICAgaWYgKCFbaHRtbFZpZXcuZ2V0KCkgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xh
c3NdXSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIE5TRXZlbnQgKmV2ZW50ID0gZHJhZ0l0
ZW0uc291cmNlQWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb25MaW5rID8gZnJhbWUuZXZlbnRIYW5k
bGVyKCkuY3VycmVudE5TRXZlbnQoKSA6IFtodG1sVmlldy5nZXQoKSBfbW91c2VEb3duRXZlbnRd
OworICAgIE5TRXZlbnQgKmV2ZW50ID0gKGRyYWdJdGVtLnNvdXJjZUFjdGlvbiAmJiAqZHJhZ0l0
ZW0uc291cmNlQWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb246OkxpbmspID8gZnJhbWUuZXZlbnRI
YW5kbGVyKCkuY3VycmVudE5TRXZlbnQoKSA6IFtodG1sVmlldy5nZXQoKSBfbW91c2VEb3duRXZl
bnRdOwogICAgIFdlYkhUTUxWaWV3KiB0b3BIVE1MVmlldyA9IGdldFRvcEhUTUxWaWV3KCZmcmFt
ZSk7CiAgICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3PiB0b3BWaWV3UHJvdGVjdG9yID0gdG9wSFRN
TFZpZXc7CiAgICAgCkBAIC0xOTcsOSArMjEzLDkgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3QK
IHsKIH0KIAotV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBXZWJEcmFnQ2xpZW50OjpkcmFnU291
cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKK09wdGlvblNldDxXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uPiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0Zv
clBvaW50KGNvbnN0IEludFBvaW50JikKIHsKLSAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5v
bmU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9y
bURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImKQpAQCAtMjMyLDkgKzI0OCw5IEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0CiB7CiB9CiAKLVdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQ
b2ludCYpCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gV2ViRHJhZ0NsaWVu
dDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCiB7Ci0gICAg
cmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Bbnk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmFueURyYWdT
b3VyY2VBY3Rpb24oKTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdT
b3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBE
YXRhVHJhbnNmZXImKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IDJjMjg2OWI5YzUzLi40ODNjNjQ2MmE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjc1LDYgKzY3NSwzNCBAQCBzdGF0aWMgX1VJRHJh
Z09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJh
dGlvbikKICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7CiB9CiAjZW5kaWYgLy8gVVNF
KEFQUEtJVCkKKworV2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbj4gYWN0aW9uKQoreworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1
cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisKKyAgICBzd2l0Y2ggKCphY3Rpb24pIHsKKyAg
ICBjYXNlIChXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpESFRNTCk6CisgICAgICAgIHJldHVy
biBXZWJEcmFnU291cmNlQWN0aW9uREhUTUw7CisgICAgY2FzZSAoV2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbjo6SW1hZ2UpOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkltYWdl
OworICAgIGNhc2UgKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkxpbmspOgorICAgICAgICBy
ZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkxpbms7CisgICAgY2FzZSAoV2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbjo6U2VsZWN0aW9uKToKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb247CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBjYXNlIChX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50KToKKyAgICAgICAgYnJlYWs7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBjYXNlIChXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uOjpDb2xvcik6CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rp
b25Ob25lOworfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKIFdlYkNvcmU6OkZp
bmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCkBAIC0xOTYwLDcg
KzE5ODgsNyBAQCAtICh2b2lkKV9zdGFydERyYWc6KGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJilk
cmFnSXRlbQogICAgIF9wcml2YXRlLT5kcmFnZ2VkTGlua1VSTCA9IGRyYWdJdGVtLnVybC5pc0Vt
cHR5KCkgPyBuaWwgOiAoTlNVUkwgKilkcmFnSXRlbS51cmw7CiAgICAgX3ByaXZhdGUtPmRyYWdn
ZWRMaW5rVGl0bGUgPSBkcmFnSXRlbS50aXRsZS5pc0VtcHR5KCkgPyBuaWwgOiAoTlNTdHJpbmcg
KilkcmFnSXRlbS50aXRsZTsKICAgICBfcHJpdmF0ZS0+ZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZp
ZXdDb29yZGluYXRlcyA9IGRyYWdJdGVtLmRyYWdQcmV2aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRp
bmF0ZXM7Ci0gICAgX3ByaXZhdGUtPmRyYWdTb3VyY2VBY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJE
cmFnU291cmNlQWN0aW9uPihkcmFnSXRlbS5zb3VyY2VBY3Rpb24pOworICAgIF9wcml2YXRlLT5k
cmFnU291cmNlQWN0aW9uID0ga2l0KGRyYWdJdGVtLnNvdXJjZUFjdGlvbik7CiB9CiAKIC0gKENH
UmVjdClfZGF0YUludGVyYWN0aW9uQ2FyZXRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCBlYTFmMmYzMWU1Yi4uNTYyNTBm
ZDc0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
d0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
SW50ZXJuYWwuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIK
ICNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVybmFsLmgi
CisjaW1wb3J0ICJXZWJVSURlbGVnYXRlLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogCkBAIC05
OCw2ICs5OSw4IEBAIHVzaW5nIENvY29hRHJhZ09wZXJhdGlvbiA9IHVpbnQ2NF90OwogI2VuZGlm
CiAKIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soQ29jb2FEcmFnT3BlcmF0aW9uKTsKKworV2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQoT3B0aW9u
YWw8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4pOwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25z
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggNWIxOTNhN2RhYTMuLjE0Nzc3ZmZkZTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFn
Q2xpZW50LmNwcApAQCAtNzIsNiArNzIsNDYgQEAgc3RhdGljIFdlYkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiBraXQoRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbikKICAgICByZXR1cm4gV2ViRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKIH0KIAorc3RhdGljIE9wdGlvblNldDxEcmFnU291cmNl
QWN0aW9uPiBjb3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2soV2ViRHJhZ1NvdXJjZUFjdGlvbiBhY3Rp
b25NYXNrKQoreworICAgIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiByZXN1bHQ7CisKKyAg
ICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rpb25ESFRNTCkKKyAgICAgICAgcmVz
dWx0LmFkZChEcmFnU291cmNlQWN0aW9uOjpESFRNTCk7CisgICAgaWYgKGFjdGlvbk1hc2sgJiBX
ZWJEcmFnU291cmNlQWN0aW9uSW1hZ2UpCisgICAgICAgIHJlc3VsdC5hZGQoRHJhZ1NvdXJjZUFj
dGlvbjo6SW1hZ2UpOworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ1NvdXJjZUFjdGlvbkxp
bmspCisgICAgICAgIHJlc3VsdC5hZGQoRHJhZ1NvdXJjZUFjdGlvbjo6TGluayk7CisgICAgaWYg
KGFjdGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKQorICAgICAgICByZXN1
bHQuYWRkKERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbik7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitzdGF0aWMgV2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQoRHJhZ1NvdXJjZUFjdGlvbiBh
Y3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICBjYXNlIERyYWdTb3VyY2VBY3Rp
b246OkRIVE1MOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkRIVE1MOworICAg
IGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2U6CisgICAgICAgIHJldHVybiBXZWJEcmFnU291
cmNlQWN0aW9uSW1hZ2U7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpMaW5rOgorICAgICAg
ICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkxpbms7CisgICAgY2FzZSBEcmFnU291cmNlQWN0
aW9uOjpTZWxlY3Rpb246CisgICAgICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgY2FzZSBEcmFnU291cmNl
QWN0aW9uOjpBdHRhY2htZW50OgorICAgICAgICBicmVhazsKKyNlbmRpZgorI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3I6CisgICAg
ICAgIGJyZWFrOworI2VuZGlmCisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uTm9uZTsKK30KKwogV2ViRHJhZ0NsaWVudDo6V2Vi
RHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpIAog
ewpAQCAtOTAsMTEgKzEzMCwxMSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3RpbwogRHJhZ1NvdXJj
ZUFjdGlvbiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0
IEludFBvaW50JiB3aW5kb3dQb2ludCkKIHsKICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+IGRl
bGVnYXRlUmVmID0gMDsKLSAgICBXZWJEcmFnU291cmNlQWN0aW9uIGFjdGlvbiA9IFdlYkRyYWdT
b3VyY2VBY3Rpb25Bbnk7CisgICAgV2ViRHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb25NYXNrID0gV2Vi
RHJhZ1NvdXJjZUFjdGlvbkFueTsKICAgICBQT0lOVCBsb2NhbHB0ID0gY29yZShtX3dlYlZpZXcp
LT5tYWluRnJhbWUoKS52aWV3KCktPndpbmRvd1RvQ29udGVudHMod2luZG93UG9pbnQpOwogICAg
IGlmIChTVUNDRUVERUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZkZWxlZ2F0ZVJlZikpKQotICAg
ICAgICBkZWxlZ2F0ZVJlZi0+ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChtX3dlYlZpZXcs
ICZsb2NhbHB0LCAmYWN0aW9uKTsKLSAgICByZXR1cm4gKERyYWdTb3VyY2VBY3Rpb24pYWN0aW9u
OworICAgICAgICBkZWxlZ2F0ZVJlZi0+ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChtX3dl
YlZpZXcsICZsb2NhbHB0LCAmYWN0aW9uTWFzayk7CisgICAgcmV0dXJuIGNvcmVEcmFnU291cmNl
QWN0aW9uTWFzayhhY3Rpb25NYXNrKTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVy
Zm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24sIGNvbnN0IEludFBv
aW50JiBpbnRQb2ludCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCkBAIC0xMDcsNyArMTQ3
LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJh
Z1NvdXJjZUFjdGlvbiBhY3Rpb24sIGNvbnN0IEkKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGRh
dGFPYmplY3QgPSBkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmRhdGFPYmplY3QoKTsKIAogICAg
IENPTVB0cjxJRGF0YU9iamVjdD4gbmV3RGF0YU9iamVjdDsKLSAgICBIUkVTVUxUIHJlc3VsdCA9
IHVpRGVsZWdhdGUtPndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihtX3dlYlZpZXcsIHN0YXRp
Y19jYXN0PFdlYkRyYWdTb3VyY2VBY3Rpb24+KGFjdGlvbiksICZwb2ludCwgZGF0YU9iamVjdC5n
ZXQoKSwgJm5ld0RhdGFPYmplY3QpOworICAgIEhSRVNVTFQgcmVzdWx0ID0gdWlEZWxlZ2F0ZS0+
d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKG1fd2ViVmlldywga2l0KGFjdGlvbiksICZwb2lu
dCwgZGF0YU9iamVjdC5nZXQoKSwgJm5ld0RhdGFPYmplY3QpOwogICAgIGlmIChyZXN1bHQgPT0g
U19PSyAmJiBuZXdEYXRhT2JqZWN0ICE9IGRhdGFPYmplY3QpCiAgICAgICAgIGNvbnN0X2Nhc3Q8
UGFzdGVib2FyZCY+KGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkpLnNldEV4dGVybmFsRGF0YU9i
amVjdChuZXdEYXRhT2JqZWN0LmdldCgpKTsKIH0KQEAgLTE0Myw3ICsxODMsNyBAQCB2b2lkIFdl
YkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFU
cmFuc2ZlciwgRnJhbWUmCiAgICAgICAgICAgICAgICAgc2RpLmhibXBEcmFnSW1hZ2UgPSBpbWFn
ZS5nZXQoKTsKICAgICAgICAgICAgICAgICBzZGkucHRPZmZzZXQueCA9IGRyYWdQb2ludC54KCkg
LSBpbWFnZU9yaWdpbi54KCk7CiAgICAgICAgICAgICAgICAgc2RpLnB0T2Zmc2V0LnkgPSBkcmFn
UG9pbnQueSgpIC0gaW1hZ2VPcmlnaW4ueSgpOwotICAgICAgICAgICAgICAgIGlmIChpdGVtLnNv
dXJjZUFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uTGluaykKKyAgICAgICAgICAgICAgICBpZiAo
aXRlbS5zb3VyY2VBY3Rpb24gJiYgKml0ZW0uc291cmNlQWN0aW9uID09IERyYWdTb3VyY2VBY3Rp
b246OkxpbmspCiAgICAgICAgICAgICAgICAgICAgIHNkaS5wdE9mZnNldC55ID0gYi5ibUhlaWdo
dCAtIHNkaS5wdE9mZnNldC55OwogCiAgICAgICAgICAgICAgICAgaGVscGVyLT5Jbml0aWFsaXpl
RnJvbUJpdG1hcCgmc2RpLCBkYXRhT2JqZWN0LmdldCgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401304</attachid>
            <date>2020-06-07 13:08:02 -0700</date>
            <delta_ts>2020-06-07 16:41:30 -0700</delta_ts>
            <desc>Patch v2 (EWS)</desc>
            <filename>bug-212885-v2.diff</filename>
            <type>text/plain</type>
            <size>62956</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oIGIvU291cmNlL1dURi93dGYv
T3B0aW9uU2V0LmgKaW5kZXggMmRjZjQzYzJlNjIuLjVkZGUwN2UxZjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQu
aApAQCAtMjA1LDYgKzIwNSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fc3RvcmFnZSAmPSB+b3B0
aW9uU2V0Lm1fc3RvcmFnZTsKICAgICB9CiAKKyAgICBjb25zdGV4cHIgYm9vbCBoYXNFeGFjdGx5
T25lQml0U2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0b3JhZ2UgJiYgISht
X3N0b3JhZ2UgJiAobV9zdG9yYWdlIC0gMSkpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBPcHRp
b25hbDxFPiBhc1NpbmdsZVZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBoYXNF
eGFjdGx5T25lQml0U2V0KCkgPyBPcHRpb25hbDxFPihzdGF0aWNfY2FzdDxFPihtX3N0b3JhZ2Up
KSA6IFdURjo6bnVsbG9wdDsKKyAgICB9CisKICAgICBjb25zdGV4cHIgZnJpZW5kIGJvb2wgb3Bl
cmF0b3I9PShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggNzliMGIzMTkzMTAuLjg3ZDBiODYzOTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIGNsYXNzIEVt
cHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgZmluYWwgOiBwdWJsaWMgRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQgewogY2xhc3MgRW1wdHlEcmFnQ2xpZW50IGZpbmFsIDogcHVibGljIERyYWdDbGll
bnQgewogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFBl
cmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50Jiwg
RGF0YVRyYW5zZmVyJikgZmluYWwgeyB9Ci0gICAgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNl
QWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikgZmluYWwgeyByZXR1cm4gRHJhZ1Nv
dXJjZUFjdGlvbk5vbmU7IH0KKyAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGZpbmFsIHsgcmV0dXJuIHsg
fTsgfQogICAgIHZvaWQgc3RhcnREcmFnKERyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYp
IGZpbmFsIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGU3NDU2MzUy
MzFhLi45ZDJkODNhNGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAtNDQsMjEg
KzQ0LDM1IEBAIGNvbnN0ZXhwciBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBhbnlE
cmFnRGVzdGluYXRpb25BY3Rpb24oKQogICAgIHJldHVybiBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uPiB7IERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUwsIERyYWdEZXN0aW5hdGlv
bkFjdGlvbjo6RWRpdCwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkIH07CiB9CiAKLS8vIFdl
YkNvcmVEcmFnU291cmNlQWN0aW9uIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBXZWJEcmFn
U291cmNlQWN0aW9uLgotdHlwZWRlZiBlbnVtIHsKLSAgICBEcmFnU291cmNlQWN0aW9uTm9uZSAg
ICAgICAgID0gMCwKLSAgICBEcmFnU291cmNlQWN0aW9uREhUTUwgICAgICAgID0gMSwKLSAgICBE
cmFnU291cmNlQWN0aW9uSW1hZ2UgICAgICAgID0gMiwKLSAgICBEcmFnU291cmNlQWN0aW9uTGlu
ayAgICAgICAgID0gNCwKLSAgICBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uICAgID0gOCwKKy8v
IFNlZSBXZWJEcmFnU291cmNlQWN0aW9uLgorZW51bSBjbGFzcyBEcmFnU291cmNlQWN0aW9uIDog
dWludDhfdCB7CisgICAgREhUTUwgICAgICA9IDEsCisgICAgSW1hZ2UgICAgICA9IDIsCisgICAg
TGluayAgICAgICA9IDQsCisgICAgU2VsZWN0aW9uICA9IDgsCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCAgID0gMTYsCisgICAg
QXR0YWNobWVudCA9IDE2LAogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0g
ICAgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yICAgICAgICA9IDMyLAorICAgIENvbG9yICAgICAgPSAz
MiwKICNlbmRpZgotICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAot
fSBEcmFnU291cmNlQWN0aW9uOworfTsKKworY29uc3RleHByIE9wdGlvblNldDxEcmFnU291cmNl
QWN0aW9uPiBhbnlEcmFnU291cmNlQWN0aW9uKCkKK3sKKyAgICByZXR1cm4gT3B0aW9uU2V0PERy
YWdTb3VyY2VBY3Rpb24+IHsKKyAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsCisgICAg
ICAgIERyYWdTb3VyY2VBY3Rpb246OkltYWdlLAorICAgICAgICBEcmFnU291cmNlQWN0aW9uOjpM
aW5rLAorICAgICAgICBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24KKyNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQorICAgICAgICAsIERyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQK
KyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgICAgICAsIERyYWdTb3Vy
Y2VBY3Rpb246OkNvbG9yCisjZW5kaWYKKyAgICB9OworfQogCiAvLyBTZWUgTlNEcmFnT3BlcmF0
aW9uLCBfVUlEcmFnT3BlcmF0aW9uIGFuZCBVSURyb3BPcGVyYXRpb24uCiBlbnVtIGNsYXNzIERy
YWdPcGVyYXRpb24gOiB1aW50OF90IHsKQEAgLTEwOCw2ICsxMjIsMjIgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiB7CiAgICAgPjsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24sCisgICAgICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkRIVE1MLAor
ICAgICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpJbWFnZSwKKyAgICAgICAgV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbjo6TGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbjo6U2VsZWN0aW9uCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAg
LCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50CisjZW5kaWYKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAgLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
OjpDb2xvcgorI2VuZGlmCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNl
dFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAgICB1c2luZyB2YWx1
ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5kZXggN2FhOGVlNTg2NWQuLjk5OGI3YmY5
NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdE
ZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgRHJhZ0RhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQ
b2ludCYsIERhdGFUcmFuc2ZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29uY2x1ZGVF
ZGl0RHJhZygpIHsgfQotICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0
aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KSA9IDA7CisgICAg
dmlydHVhbCBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbk1hc2tG
b3JQb2ludChjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCkgPSAwOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBzdGFydERyYWcoRHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZyYW1lJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkcmFnRW5kZWQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKaW5kZXggMmYzMDIwOGU1MDEuLjQyYWMzZmE2NzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDgzLDcgKzQ4Myw3IEBAIERyYWdIYW5k
bGluZ01ldGhvZCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSwgT3B0CiAgICAgcmV0dXJuIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKIH0K
IAotRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KQorT3B0aW9uU2V0PERyYWdTb3VyY2VB
Y3Rpb24+IERyYWdDb250cm9sbGVyOjpkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50
UG9pbnQmIHJvb3RWaWV3UG9pbnQpCiB7CiAgICAgbV9kcmFnU291cmNlQWN0aW9uID0gY2xpZW50
KCkuZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChyb290Vmlld1BvaW50KTsKICAgICByZXR1
cm4gbV9kcmFnU291cmNlQWN0aW9uOwpAQCAtNzY5LDcgKzc2OSw3IEBAIHN0YXRpYyBSZWZQdHI8
SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBlbmNsb3NpbmdBdHRhY2htZW50RWxlbWVudChFbGVtZW50
JiBlbGVtZW50CiAKIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KGNv
bnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3RhcnRFbGVtZW50LCBjb25zdCBJbnRQ
b2ludCYgZHJhZ09yaWdpbiwgRHJhZ1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBzdGF0ZS50
eXBlID0gKHNvdXJjZUZyYW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhkcmFnT3JpZ2luKSkgPyBE
cmFnU291cmNlQWN0aW9uU2VsZWN0aW9uIDogRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisgICAgc3Rh
dGUudHlwZSA9IHNvdXJjZUZyYW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhkcmFnT3JpZ2luKSA/
IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbiA6IE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9u
Pih7IH0pOwogICAgIGlmICghc3RhcnRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtNzgzLDcgKzc4Myw3IEBAIEVsZW1l
bnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VG
cmFtZSwgRWxlbWVudCogc3RhCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWlzQXR0YWNobWVu
dEVsZW1lbnRJbkN1cnJlbnRTZWxlY3Rpb24gfHwgaXNTaW5nbGVBdHRhY2htZW50U2VsZWN0aW9u
KSB7Ci0gICAgICAgICAgICBzdGF0ZS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQ7
CisgICAgICAgICAgICBzdGF0ZS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudDsK
ICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50LmdldCgpOwogICAgICAgICB9CiAgICAgfQpA
QCAtNzk1LDMyICs3OTUsMzIgQEAgRWxlbWVudCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVs
ZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBFbGVtZW50KiBzdGEKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIFVzZXJEcmFnIGRyYWdNb2RlID0gcmVuZGVyZXItPnN0eWxl
KCkudXNlckRyYWcoKTsKLSAgICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291
cmNlQWN0aW9uREhUTUwpICYmIGRyYWdNb2RlID09IFVzZXJEcmFnOjpFbGVtZW50KSB7Ci0gICAg
ICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUu
dHlwZSB8IERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7CisgICAgICAgIGlmIChtX2RyYWdTb3VyY2VB
Y3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpICYmIGRyYWdNb2RlID09IFVz
ZXJEcmFnOjpFbGVtZW50KSB7CisgICAgICAgICAgICBzdGF0ZS50eXBlLmFkZChEcmFnU291cmNl
QWN0aW9uOjpESFRNTCk7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfQog
ICAgICAgICBpZiAoZHJhZ01vZGUgPT0gVXNlckRyYWc6OkF1dG8pIHsKLSAgICAgICAgICAgIGlm
ICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKQorICAgICAgICAg
ICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6SW1h
Z2UpKQogICAgICAgICAgICAgICAgICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KQog
ICAgICAgICAgICAgICAgICYmIGltYWdlRWxlbWVudElzRHJhZ2dhYmxlKGRvd25jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQ+KCplbGVtZW50KSwgKnNvdXJjZUZyYW1lKSkgewotICAgICAgICAgICAgICAg
IHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwg
RHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS50eXBlLmFkZChE
cmFnU291cmNlQWN0aW9uOjpJbWFnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25MaW5rKSAmJiBpc0RyYWdnYWJsZUxpbmsoKmVsZW1lbnQpKSB7Ci0gICAg
ICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0
YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uTGluayk7CisgICAgICAgICAgICBpZiAobV9kcmFn
U291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkxpbmspICYmIGlzRHJhZ2dh
YmxlTGluaygqZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS50eXBlLmFkZChEcmFn
U291cmNlQWN0aW9uOjpMaW5rKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAg
ICAgICAgICAgIH0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgICAgICAgICAg
aWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCkKKyAg
ICAgICAgICAgIGlmIChtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlv
bjo6QXR0YWNobWVudCkKICAgICAgICAgICAgICAgICAmJiBpczxIVE1MQXR0YWNobWVudEVsZW1l
bnQ+KCplbGVtZW50KQogICAgICAgICAgICAgICAgICYmIGRvd25jYXN0PEhUTUxBdHRhY2htZW50
RWxlbWVudD4oKmVsZW1lbnQpLmZpbGUoKSkgewotICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUg
PSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFj
dGlvbkF0dGFjaG1lbnQpOworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUuYWRkKERyYWdTb3Vy
Y2VBY3Rpb246OkF0dGFjaG1lbnQpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50Owog
ICAgICAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAg
ICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikg
JiYgaXNFbmFibGVkQ29sb3JJbnB1dCgqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICBzdGF0
ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdT
b3VyY2VBY3Rpb25Db2xvcik7CisgICAgICAgICAgICBpZiAobV9kcmFnU291cmNlQWN0aW9uLmNv
bnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkNvbG9yKSAmJiBpc0VuYWJsZWRDb2xvcklucHV0KCpl
bGVtZW50KSkgeworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUuYWRkKERyYWdTb3VyY2VBY3Rp
b246OkNvbG9yKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAg
IH0KICNlbmRpZgpAQCAtODI4LDcgKzgyOCw3IEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpk
cmFnZ2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3RhCiAg
ICAgfQogCiAgICAgLy8gV2UgZWl0aGVyIGhhdmUgbm90aGluZyB0byBkcmFnIG9yIHdlIGhhdmUg
YSBzZWxlY3Rpb24gYW5kIHdlJ3JlIG5vdCBvdmVyIGEgZHJhZ2dhYmxlIGVsZW1lbnQuCi0gICAg
aWYgKHN0YXRlLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uICYmIG1fZHJhZ1NvdXJj
ZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pCisgICAgaWYgKHN0YXRlLnR5cGUu
Y29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSAmJiBtX2RyYWdTb3VyY2VBY3Rp
b24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSkKICAgICAgICAgcmV0dXJu
IHN0YXJ0RWxlbWVudDsKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTAxLDcgKzkwMSw3IEBA
IHN0YXRpYyBJbnRQb2ludCBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhGcmFtZSYgc3JjKQogICAg
IHJldHVybiBJbnRQb2ludCh4cG9zLCB5cG9zKTsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6
cHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLCBEcmFnU291cmNlQWN0aW9uIGFjdGlv
biwgRWxlbWVudCYgZWxlbWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIGNvbnN0IElu
dFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdAordm9pZCBEcmFnQ29udHJvbGxlcjo6cHJlcGFyZUZv
ckRyYWdTdGFydChGcmFtZSYgc291cmNlLCBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gYWN0
aW9uTWFzaywgRWxlbWVudCYgZWxlbWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIGNv
bnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdAogewogI2lmICFQTEFURk9STShXSU4pCiAg
ICAgUmVmPEZyYW1lPiBwcm90ZWN0b3Ioc291cmNlKTsKQEAgLTkxMSw3ICs5MTEsNyBAQCB2b2lk
IERyYWdDb250cm9sbGVyOjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIERyYWdT
b3VyY2VBY3Rpb24gYWN0aW9uLAogCiAgICAgYXV0byYgcGFzdGVib2FyZCA9IGRhdGFUcmFuc2Zl
ci5wYXN0ZWJvYXJkKCk7CiAgICAgYXV0byYgZWRpdG9yID0gc291cmNlLmVkaXRvcigpOwotICAg
IGlmIChhY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgeworICAgIGlmIChhY3Rp
b25NYXNrID09IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbikgewogICAgICAgICBpZiAoZW5j
bG9zaW5nVGV4dEZvcm1Db250cm9sKHNvdXJjZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFy
dCgpKSkKICAgICAgICAgICAgIHBhc3RlYm9hcmQud3JpdGVQbGFpblRleHQoZWRpdG9yLnNlbGVj
dGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpLCBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2Up
OwogICAgICAgICBlbHNlCkBAIC05MjEsMTggKzkyMSwxOCBAQCB2b2lkIERyYWdDb250cm9sbGVy
OjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIERyYWdTb3VyY2VBY3Rpb24gYWN0
aW9uLAogCiAgICAgYXV0byogaW1hZ2UgPSBnZXRJbWFnZShlbGVtZW50KTsKICAgICBhdXRvIGlt
YWdlVVJMID0gaGl0VGVzdFJlc3VsdC0+YWJzb2x1dGVJbWFnZVVSTCgpOwotICAgIGlmICgoYWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSAmJiAhaW1hZ2VVUkwuaXNFbXB0eSgpICYmIGlt
YWdlICYmICFpbWFnZS0+aXNOdWxsKCkpIHsKKyAgICBpZiAoYWN0aW9uTWFzay5jb250YWlucyhE
cmFnU291cmNlQWN0aW9uOjpJbWFnZSkgJiYgIWltYWdlVVJMLmlzRW1wdHkoKSAmJiBpbWFnZSAm
JiAhaW1hZ2UtPmlzTnVsbCgpKSB7CiAgICAgICAgIGVkaXRvci53cml0ZUltYWdlVG9QYXN0ZWJv
YXJkKHBhc3RlYm9hcmQsIGVsZW1lbnQsIGltYWdlVVJMLCB7IH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgYXV0byBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC0+YWJzb2x1dGVMaW5r
VVJMKCk7Ci0gICAgaWYgKChhY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykgJiYgIWxpbmtV
UkwuaXNFbXB0eSgpICYmIHNvdXJjZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRp
c3BsYXkobGlua1VSTCkpCisgICAgaWYgKGFjdGlvbk1hc2suY29udGFpbnMoRHJhZ1NvdXJjZUFj
dGlvbjo6TGluaykgJiYgIWxpbmtVUkwuaXNFbXB0eSgpICYmIHNvdXJjZS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkobGlua1VSTCkpCiAgICAgICAgIGVkaXRvci5jb3B5
VVJMKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQtPnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNw
YWNlKCksIHBhc3RlYm9hcmQpOwogI2Vsc2UKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsg
b24gV2luZG93cyBieSBpbXBsZW1lbnRpbmcgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCBhbmQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkLgogICAgIFVOVVNFRF9QQVJB
TShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShhY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShh
Y3Rpb25NYXNrKTsKICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CiAgICAgVU5VU0VEX1BBUkFN
KGRhdGFUcmFuc2Zlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYWdPcmlnaW4pOwpAQCAtOTgzLDcg
Kzk4Myw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgQVNTRVJUKHN0YXRlLmRhdGFU
cmFuc2Zlcik7CiAKICAgICBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciA9ICpzdGF0ZS5kYXRh
VHJhbnNmZXI7Ci0gICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSB7
CisgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpIHsKICAgICAg
ICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgZGF0YVRyYW5zZmVyLmNyZWF0ZURyYWdJbWFnZShk
cmFnSW1hZ2VPZmZzZXQpIH07CiAgICAgICAgIC8vIFdlIGFsbG93IERIVE1ML0pTIHRvIHNldCB0
aGUgZHJhZyBpbWFnZSwgZXZlbiBpZiBpdHMgYSBsaW5rLCBpbWFnZSBvciB0ZXh0IHdlJ3JlIGRy
YWdnaW5nLgogICAgICAgICAvLyBUaGlzIGlzIGluIHRoZSBzcGlyaXQgb2YgdGhlIElFIEFQSSwg
d2hpY2ggYWxsb3dzIG92ZXJyaWRpbmcgb2YgcGFzdGVib2FyZCBkYXRhIGFuZCBEcmFnT3AuCkBA
IC05OTMsNyArOTkzLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gfHwg
IWltYWdlVVJMLmlzRW1wdHkoKSB8fCAhbGlua1VSTC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoc3Rh
dGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24gfHwgIWltYWdlVVJMLmlzRW1w
dHkoKSB8fCAhbGlua1VSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gU2VsZWN0aW9uLCBpbWFn
ZSwgYW5kIGxpbmsgZHJhZ3MgcmVjZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBv
cGVyYXRpb25zIHRoYXQKICAgICAgICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAgICAvLyBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tP3Jldj00ODUyNiNMMzQzMApAQCAtMTAwNyw3ICsxMDA3LDcgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUs
IE9wdGlvblNldDxEcmEKIAogICAgIEludFJlY3QgZHJhZ0ltYWdlQm91bmRzOwogICAgIEltYWdl
KiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwotICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdT
b3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsKKyAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNl
QWN0aW9uOjpTZWxlY3Rpb24pIHsKICAgICAgICAgUGFzdGVib2FyZFdyaXRlckRhdGEgcGFzdGVi
b2FyZFdyaXRlckRhdGE7CiAKICAgICAgICAgaWYgKGhhc0RhdGEgPT0gSGFzTm9uRGVmYXVsdFBh
c3RlYm9hcmREYXRhOjpObykgewpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlv
blNldDxEcmEKIAogICAgICAgICAgICAgc3JjLmVkaXRvcigpLmRpZFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFn
U291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGRhdGFU
cmFuc2Zlcik7CisgICAgICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihE
cmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CiAg
ICAgICAgIGlmICghZHJhZ0ltYWdlKSB7CiAgICAgICAgICAgICBUZXh0SW5kaWNhdG9yRGF0YSB0
ZXh0SW5kaWNhdG9yOwogICAgICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgZGlzc29s
dmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihzcmMsIHRl
eHRJbmRpY2F0b3IpLCBEcmFnSW1hZ2VBbHBoYSkgfTsKQEAgLTEwNzIsNyArMTA3Miw3IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUm
IHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIGRyYWdJdGVtLmltYWdlID0gV1RGTW92ZShk
cmFnSW1hZ2UpOwogICAgICAgICBkcmFnSXRlbS5kYXRhID0gV1RGTW92ZShwYXN0ZWJvYXJkV3Jp
dGVyRGF0YSk7CiAKLSAgICAgICAgYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0pLCBzcmMsIGRy
YWdPcmlnaW4sIG1vdXNlRHJhZ2dlZFBvaW50LCBkYXRhVHJhbnNmZXIsIERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pOworICAgICAgICBiZWdpbkRyYWcoV1RGTW92ZShkcmFnSXRlbSksIHNyYywg
ZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2ZlciwgRHJhZ1NvdXJjZUFj
dGlvbjo6U2VsZWN0aW9uKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMDgy
LDcgKzEwODIsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywg
Y29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgaW1hZ2UgJiYgIWlt
YWdlLT5pc051bGwoKSAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbklt
YWdlKSkgeworICAgIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpICYmIGltYWdlICYmICFpbWFnZS0+
aXNOdWxsKCkgJiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246
OkltYWdlKSkgewogICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBkcmFnIGZv
ciBhbiBpbWFnZSB0aGF0IGNhbid0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uLgogICAgICAgICAvLyBU
aGlzIGlzIGFuIGVhcmx5IGRldGVjdGlvbiBmb3IgcHJvYmxlbXMgZW5jb3VudGVyZWQgbGF0ZXIg
dXBvbiBkcm9wLgogICAgICAgICBBU1NFUlQoIWltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpLmlz
RW1wdHkoKSk7CkBAIC0xMTAxLDcgKzExMDEsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQog
ICAgICAgICAgICAgICAgIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShkYXRhVHJhbnNmZXIsIGVs
ZW1lbnQsICFsaW5rVVJMLmlzRW1wdHkoKSA/IGxpbmtVUkwgOiBpbWFnZVVSTCwgaGl0VGVzdFJl
c3VsdC0+YWx0RGlzcGxheVN0cmluZygpKTsKICAgICAgICAgfQogCi0gICAgICAgIGNsaWVudCgp
LndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uSW1hZ2UsIGRyYWdP
cmlnaW4sIGRhdGFUcmFuc2Zlcik7CisgICAgICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1Nv
dXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uOjpJbWFnZSwgZHJhZ09yaWdpbiwgZGF0YVRyYW5z
ZmVyKTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkKICAgICAgICAgICAgIGRvSW1hZ2VEcmFn
KGVsZW1lbnQsIGRyYWdPcmlnaW4sIGhpdFRlc3RSZXN1bHQtPmltYWdlUmVjdCgpLCBzcmMsIG1f
ZHJhZ09mZnNldCwgc3RhdGUsIFdURk1vdmUoYXR0YWNobWVudEluZm8pKTsKQEAgLTExMTMsNyAr
MTExMyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkgJiYgKG1fZHJhZ1NvdXJjZUFjdGlv
biAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKSkgeworICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkg
JiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkxpbmspKSB7
CiAgICAgICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhIHBhc3RlYm9hcmRXcml0ZXJEYXRhOwogCiAg
ICAgICAgIFN0cmluZyB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSA9IGhpdFRl
c3RSZXN1bHQtPnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CkBAIC0xMTQ1LDcg
KzExNDUsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29u
c3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAgICAgICAgICAgIHNyYy5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNv
bnRlbnRzT2ZOb2RlKG5vZGUpKTsKICAgICAgICAgfQogCi0gICAgICAgIGNsaWVudCgpLndpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uTGluaywgZHJhZ09yaWdpbiwg
ZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0
aW9uKERyYWdTb3VyY2VBY3Rpb246OkxpbmssIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CiAg
ICAgICAgIGlmICghZHJhZ0ltYWdlKSB7CiAgICAgICAgICAgICBUZXh0SW5kaWNhdG9yRGF0YSB0
ZXh0SW5kaWNhdG9yOwogICAgICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgY3JlYXRl
RHJhZ0ltYWdlRm9yTGluayhlbGVtZW50LCBsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1wbGlm
aWVkV2hpdGVTcGFjZSwgdGV4dEluZGljYXRvciwgc3JjLnNldHRpbmdzKCkuZm9udFJlbmRlcmlu
Z01vZGUoKSwgbV9wYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpIH07CkBAIC0xMTY4LDEzICsxMTY4
LDEzIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBE
cmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIGRyYWdJdGVtLmltYWdlID0g
V1RGTW92ZShkcmFnSW1hZ2UpOwogICAgICAgICBkcmFnSXRlbS5kYXRhID0gV1RGTW92ZShwYXN0
ZWJvYXJkV3JpdGVyRGF0YSk7CiAKLSAgICAgICAgYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0p
LCBzcmMsIGRyYWdPcmlnaW4sIG1vdXNlRHJhZ2dlZFBvaW50LCBkYXRhVHJhbnNmZXIsIERyYWdT
b3VyY2VBY3Rpb25TZWxlY3Rpb24pOworICAgICAgICBiZWdpbkRyYWcoV1RGTW92ZShkcmFnSXRl
bSksIHNyYywgZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2ZlciwgRHJh
Z1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIGlmIChpczxIVE1MQXR0YWNo
bWVudEVsZW1lbnQ+KGVsZW1lbnQpICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VB
Y3Rpb25BdHRhY2htZW50KSB7CisgICAgaWYgKGlzPEhUTUxBdHRhY2htZW50RWxlbWVudD4oZWxl
bWVudCkgJiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkF0
dGFjaG1lbnQpKSB7CiAgICAgICAgIGF1dG8mIGF0dGFjaG1lbnQgPSBkb3duY2FzdDxIVE1MQXR0
YWNobWVudEVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICBhdXRvKiBhdHRhY2htZW50UmVuZGVy
ZXIgPSBhdHRhY2htZW50LnJlbmRlcmVyKCk7CiAKQEAgLTExOTYsNyArMTE5Niw3IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0
YXRlLCBPcHRpb25TZXQ8RHJhCiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Y2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25BdHRh
Y2htZW50LCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOworICAgICAgICBjbGllbnQoKS53aWxs
UGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudCwgZHJh
Z09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKICAgICAgICAgCiAgICAgICAgIGlmICghZHJhZ0ltYWdl
KSB7CiAgICAgICAgICAgICBUZXh0SW5kaWNhdG9yRGF0YSB0ZXh0SW5kaWNhdG9yOwpAQCAtMTIy
MCw3ICsxMjIwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogICAgIGJvb2wgaXNDb2xvckNvbnRyb2wgPSBpczxIVE1MSW5wdXRFbGVt
ZW50PihzdGF0ZS5zb3VyY2UpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpzdGF0ZS5z
b3VyY2UpLmlzQ29sb3JDb250cm9sKCk7Ci0gICAgaWYgKGlzQ29sb3JDb250cm9sICYmIG1fZHJh
Z1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikgeworICAgIGlmIChpc0NvbG9y
Q29udHJvbCAmJiBtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6
Q29sb3IpKSB7CiAgICAgICAgIGF1dG8mIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKnN0YXRlLnNvdXJjZSk7CiAgICAgICAgIGF1dG8gY29sb3IgPSBpbnB1dC52YWx1ZUFzQ29s
b3IoKTsKIApAQCAtMTIzMSwxNSArMTIzMSwxNSBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQog
ICAgICAgICBkcmFnSW1hZ2VPZmZzZXQgPSBJbnRQb2ludCB7IGRyYWdJbWFnZVNpemUoZHJhZ0lt
YWdlLmdldCgpKSB9OwogICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvckRIVE1MRHJhZyhtb3Vz
ZURyYWdnZWRQb2ludCwgZHJhZ09yaWdpbiwgZHJhZ0ltYWdlT2Zmc2V0LCBmYWxzZSk7CiAKLSAg
ICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b25Db2xvciwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgY2xpZW50KCkud2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OkNvbG9yLCBkcmFnT3Jp
Z2luLCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1h
Z2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBzcmMsIHN0YXRlLCB7IH0pOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3Vy
Y2VBY3Rpb25ESFRNTCAmJiBkcmFnSW1hZ2UpIHsKLSAgICAgICAgQVNTRVJUKG1fZHJhZ1NvdXJj
ZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7Ci0gICAgICAgIGNsaWVudCgpLndpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uREhUTUwsIGRyYWdPcmlnaW4s
IGRhdGFUcmFuc2Zlcik7CisgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbjo6
REhUTUwgJiYgZHJhZ0ltYWdlKSB7CisgICAgICAgIEFTU0VSVChtX2RyYWdTb3VyY2VBY3Rpb24u
Y29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpKTsKKyAgICAgICAgY2xpZW50KCkud2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OkRIVE1MLCBkcmFnT3Jp
Z2luLCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1h
Z2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBzcmMsIHN0YXRlLCB7IH0pOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC0xMzI5LDcgKzEzMjksOCBAQCB2b2lkIERyYWdDb250cm9sbGVy
Ojpkb1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywg
Y29ucwogCiAgICAgRHJhZ0l0ZW0gaXRlbTsKICAgICBpdGVtLmltYWdlID0gV1RGTW92ZShpbWFn
ZSk7Ci0gICAgaXRlbS5zb3VyY2VBY3Rpb24gPSBzdGF0ZS50eXBlOworICAgIEFTU0VSVChzdGF0
ZS50eXBlLmhhc0V4YWN0bHlPbmVCaXRTZXQoKSk7CisgICAgaXRlbS5zb3VyY2VBY3Rpb24gPSBz
dGF0ZS50eXBlLmFzU2luZ2xlVmFsdWUoKTsKICAgICBpdGVtLnByb21pc2VkQXR0YWNobWVudElu
Zm8gPSBXVEZNb3ZlKHByb21pc2VkQXR0YWNobWVudEluZm8pOwogCiAgICAgYXV0byBldmVudFBv
c2l0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9v
dFZpZXcoZXZlbnRQb3MpOwpAQCAtMTMzOSw3ICsxMzQwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxl
cjo6ZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2Ms
IGNvbnMKICAgICBpdGVtLmRyYWdMb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMgPSB2aWV3UHJv
dGVjdG9yLT5jb250ZW50c1RvV2luZG93KGl0ZW0uZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRp
bmF0ZXMpOwogICAgIGlmIChhdXRvIGVsZW1lbnQgPSBzdGF0ZS5zb3VyY2UpIHsKICAgICAgICAg
YXV0byBkYXRhVHJhbnNmZXJJbWFnZUVsZW1lbnQgPSBzdGF0ZS5kYXRhVHJhbnNmZXItPmRyYWdJ
bWFnZUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MKSB7CisgICAgICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb246OkRI
VE1MKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgZHJhZyBpbWFnZSBoYXMgYmVlbiBjdXN0b21p
emVkLCBmYWxsIGJhY2sgdG8gcG9zaXRpb25pbmcgdGhlIHByZXZpZXcgcmVsYXRpdmUgdG8gdGhl
IGRyYWcgZXZlbnQgbG9jYXRpb24uCiAgICAgICAgICAgICBJbnRTaXplIGRyYWdQcmV2aWV3U2l6
ZTsKICAgICAgICAgICAgIGlmIChkYXRhVHJhbnNmZXJJbWFnZUVsZW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggZWE0OTllMGViZDYuLjkyMjRhYjIwNmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC03NiwxMiArNzYsMTIgQEAgcHVibGlj
OgogICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJh
Z2dpbmdJbWFnZVVSTDsgfQogICAgIHZvaWQgc2V0RHJhZ09mZnNldChjb25zdCBJbnRQb2ludCYg
b2Zmc2V0KSB7IG1fZHJhZ09mZnNldCA9IG9mZnNldDsgfQogICAgIGNvbnN0IEludFBvaW50JiBk
cmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0OyB9Ci0gICAgRHJhZ1NvdXJj
ZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnU291cmNlQWN0
aW9uOyB9CisgICAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGRyYWdTb3VyY2VBY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247IH0KICAgICBEcmFnSGFuZGxpbmdN
ZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnSGFuZGxpbmdN
ZXRob2Q7IH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudFVuZGVyTW91c2UoKSBjb25zdCB7IHJl
dHVybiBtX2RvY3VtZW50VW5kZXJNb3VzZS5nZXQoKTsgfQogICAgIE9wdGlvblNldDxEcmFnRGVz
dGluYXRpb25BY3Rpb24+IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBjb25zdCB7IHJldHVy
biBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7IH0KLSAgICBEcmFnU291cmNlQWN0aW9uIGRl
bGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCk7Cisg
ICAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihj
b25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCk7CiAKICAgICBFbGVtZW50KiBkcmFnZ2FibGVF
bGVtZW50KGNvbnN0IEZyYW1lKiwgRWxlbWVudCogc3RhcnQsIGNvbnN0IEludFBvaW50JiwgRHJh
Z1N0YXRlJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRW5kZWQoKTsKQEAg
LTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluYWxpemVE
cm9wcGVkSW1hZ2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZl
Y3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcyk7CiAKLSAgICB2b2lkIHByZXBhcmVGb3JEcmFnU3Rh
cnQoRnJhbWUmIHNvdXJjZUZyYW1lLCBEcmFnU291cmNlQWN0aW9uLCBFbGVtZW50JiBzb3VyY2VF
bGVtZW50LCBEYXRhVHJhbnNmZXImLCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikgY29uc3Q7
CisgICAgdm9pZCBwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2VGcmFtZSwgT3B0aW9u
U2V0PERyYWdTb3VyY2VBY3Rpb24+LCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBEYXRhVHJhbnNm
ZXImLCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikgY29uc3Q7CiAgICAgYm9vbCBzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRy
YWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNvbnN0
IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKIApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZh
dGU6CiAgICAgRHJhZ0hhbmRsaW5nTWV0aG9kIG1fZHJhZ0hhbmRsaW5nTWV0aG9kIHsgRHJhZ0hh
bmRsaW5nTWV0aG9kOjpOb25lIH07CiAKICAgICBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7Ci0gICAgRHJhZ1NvdXJjZUFjdGlvbiBt
X2RyYWdTb3VyY2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9uTm9uZSB9OworICAgIE9wdGlvblNl
dDxEcmFnU291cmNlQWN0aW9uPiBtX2RyYWdTb3VyY2VBY3Rpb247CiAgICAgYm9vbCBtX2RpZElu
aXRpYXRlRHJhZyB7IGZhbHNlIH07CiAgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG1fc291
cmNlRHJhZ09wZXJhdGlvbk1hc2s7IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3Rh
cnRzIGZyb20gYSBtb3VzZSBkb3duIHdpdGhpbiBXZWJLaXQuCiAgICAgSW50UG9pbnQgbV9kcmFn
T2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKaW5kZXggNmQxNjI1OTAwZTMuLjJiYzAyY2Uy
ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IERyYWdTdGF0ZSB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IHNvdXJj
ZTsgLy8gRWxlbWVudCB0aGF0IG1heSBiZSBhIGRyYWcgc291cmNlLCBmb3IgdGhlIGN1cnJlbnQg
bW91c2UgZ2VzdHVyZS4KICAgICBib29sIHNob3VsZERpc3BhdGNoRXZlbnRzOwotICAgIERyYWdT
b3VyY2VBY3Rpb24gdHlwZTsKKyAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gdHlwZTsK
ICAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBkYXRhVHJhbnNmZXI7IC8vIFVzZWQgb24gb25seSB0
aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggMTRiY2M1YjhmMmUuLmEzNmEzZjFkYjg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMTkwLDE1ICsxMTkwLDE1IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpwYW5TY3JvbGxJblByb2dyZXNzKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi1EcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFj
dGlvbnNBbGxvd2VkKCkgY29uc3QKK09wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBFdmVudEhh
bmRsZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNvbnN0CiB7CiAgICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJu
IERyYWdTb3VyY2VBY3Rpb25Ob25lOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1
cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1
cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24odmlldy0+
Y29udGVudHNUb1Jvb3RWaWV3KG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbikpOwogfQpAQCAt
MzY0NywzNSArMzY0NywzNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNl
ZWRlZChjb25zdCBJbnRQb2ludCYgZmxvYXREcmFnVmlld3BvcnRMb2NhdAogCiBib29sIEV2ZW50
SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBGbG9hdFBvaW50JiBkcmFnVmll
d3BvcnRMb2NhdGlvbikgY29uc3QKIHsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb24gPSBkcmFnU3Rh
dGUoKS50eXBlLmFzU2luZ2xlVmFsdWUoKTsKKyAgICBBU1NFUlQoZHJhZ09wZXJhdGlvbik7CiAg
ICAgaW50IHRocmVzaG9sZCA9IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKLSAgICBzd2l0Y2ggKGRy
YWdTdGF0ZSgpLnR5cGUpIHsKLSAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb246Ci0g
ICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlzdGVyZXNpczsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBEcmFnU291cmNlQWN0aW9uSW1hZ2U6CisgICAgaWYgKGRyYWdPcGVyYXRpb24pIHsK
KyAgICAgICAgc3dpdGNoICgqZHJhZ09wZXJhdGlvbikgeworICAgICAgICBjYXNlIERyYWdTb3Vy
Y2VBY3Rpb246OlNlbGVjdGlvbjoKKyAgICAgICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlz
dGVyZXNpczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERyYWdTb3VyY2VBY3Rp
b246OkltYWdlOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgY2FzZSBEcmFn
U291cmNlQWN0aW9uQXR0YWNobWVudDoKKyAgICAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpB
dHRhY2htZW50OgogI2VuZGlmCi0gICAgICAgIHRocmVzaG9sZCA9IEltYWdlRHJhZ0h5c3RlcmVz
aXM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkxpbms6Ci0gICAg
ICAgIHRocmVzaG9sZCA9IExpbmtEcmFnSHlzdGVyZXNpczsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB0aHJlc2hvbGQgPSBJbWFnZURyYWdIeXN0ZXJlc2lzOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6TGluazoKKyAgICAgICAgICAgIHRo
cmVzaG9sZCA9IExpbmtEcmFnSHlzdGVyZXNpczsKKyAgICAgICAgICAgIGJyZWFrOwogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yOgot
ICAgICAgICB0aHJlc2hvbGQgPSBDb2xvckRyYWdIeXN0ZXJzaXM7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246OkNvbG9yOgorICAgICAgICAgICAgdGhyZXNo
b2xkID0gQ29sb3JEcmFnSHlzdGVyc2lzOworICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAg
ICBjYXNlIERyYWdTb3VyY2VBY3Rpb25ESFRNTDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBE
cmFnU291cmNlQWN0aW9uTm9uZToKLSAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25Bbnk6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246
OkRIVE1MOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAg
ICByZXR1cm4gbW91c2VNb3ZlbWVudEV4Y2VlZHNUaHJlc2hvbGQoZHJhZ1ZpZXdwb3J0TG9jYXRp
b24sIHRocmVzaG9sZCk7CiB9Ci0gICAgCisKIHZvaWQgRXZlbnRIYW5kbGVyOjppbnZhbGlkYXRl
RGF0YVRyYW5zZmVyKCkKIHsKICAgICBpZiAoIWRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlcikKQEAg
LTM3MTUsNyArMzcxNiw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkaWRTdGFydERyYWcoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZHJhZ2dlZENvbnRlbnRS
YW5nZTsKLSAgICBpZiAoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rp
b24pCisgICAgaWYgKGRyYWdTdGF0ZSgpLnR5cGUuY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6
U2VsZWN0aW9uKSkKICAgICAgICAgZHJhZ2dlZENvbnRlbnRSYW5nZSA9IG1fZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBlbHNlCiAgICAgICAg
IGRyYWdnZWRDb250ZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKCpkcmFnU291cmNl
KTsKQEAgLTM3NzUsMTEgKzM3NzYsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFn
U3RhcnRFdmVudE9uU291cmNlRWxlbWVudChEYXRhVHJhbnNmZXImIGRhdGFUcmFucwogICAgIHJl
dHVybiAhZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50LCAqZHJh
Z1N0YXRlKCkuc291cmNlLCBtX21vdXNlRG93bkV2ZW50LCBkYXRhVHJhbnNmZXIpICYmICFtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7CiB9CiAKLXN0
YXRpYyBib29sIEV4YWN0bHlPbmVCaXRTZXQoRHJhZ1NvdXJjZUFjdGlvbiBuKQotewotICAgIHJl
dHVybiBuICYmICEobiAmIChuIC0gMSkpOwotfQotCiBSZWZQdHI8RWxlbWVudD4gRXZlbnRIYW5k
bGVyOjpkcmFnZ2VkRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRyYWdTdGF0ZSgpLnNv
dXJjZTsKQEAgLTM4MDMsNyArMzc5OSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFn
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAg
CiAgICAgLy8gQ2FyZWZ1bCB0aGF0IHRoZSBkcmFnIHN0YXJ0aW5nIGxvZ2ljIHN0YXlzIGluIHN5
bmMgd2l0aCBldmVudE1heVN0YXJ0RHJhZygpLgogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0
RHJhZyAmJiAhZHJhZ1N0YXRlKCkuc291cmNlKSB7Ci0gICAgICAgIGRyYWdTdGF0ZSgpLnNob3Vs
ZERpc3BhdGNoRXZlbnRzID0gKHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpICYgRHJh
Z1NvdXJjZUFjdGlvbkRIVE1MKTsKKyAgICAgICAgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hF
dmVudHMgPSB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKS5jb250YWlucyhEcmFnU291
cmNlQWN0aW9uOjpESFRNTCk7CiAKICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0
aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQuCiAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1f
bW91c2VEb3duQ29udGVudHNQb3NpdGlvbik7CkBAIC0zODE0LDE3ICszODEwLDE3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgIGlmICghZHJhZ1N0YXRlKCkuc291cmNlKQogICAg
ICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVudCBp
cyBkcmFnZ2FibGUKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9kcmFnTWF5U3RhcnRTZWxl
Y3Rpb25JbnN0ZWFkID0gKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uKTsKKyAgICAgICAgICAgIG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVhZCA9IGRyYWdT
dGF0ZSgpLnR5cGUuY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKICAgICB9
CiAgICAgCiAgICAgLy8gRm9yIGRyYWdzIHN0YXJ0aW5nIGluIHRoZSBzZWxlY3Rpb24sIHRoZSB1
c2VyIG11c3Qgd2FpdCBiZXR3ZWVuIHRoZSBtb3VzZWRvd24gYW5kIG1vdXNlZHJhZywKICAgICAv
LyBvciBlbHNlIHdlIGJhaWwgb24gdGhlIGRyYWdnaW5nIHN0dWZmIGFuZCBhbGxvdyBzZWxlY3Rp
b24gdG8gb2NjdXIKLSAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgbV9kcmFnTWF5
U3RhcnRTZWxlY3Rpb25JbnN0ZWFkICYmIChkcmFnU3RhdGUoKS50eXBlICYgRHJhZ1NvdXJjZUFj
dGlvblNlbGVjdGlvbikgJiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3du
VGltZXN0YW1wIDwgVGV4dERyYWdEZWxheSkgeworICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0
RHJhZyAmJiBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbkluc3RlYWQgJiYgZHJhZ1N0YXRlKCkudHlw
ZS5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pICYmIGV2ZW50LmV2ZW50KCku
dGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKICAg
ICAgICAgQVNTRVJUKGV2ZW50LmV2ZW50KCkudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQpOwotICAgICAgICBpZiAoKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9u
SW1hZ2UpKSB7CisgICAgICAgIGlmIChkcmFnU3RhdGUoKS50eXBlLmNvbnRhaW5zKERyYWdTb3Vy
Y2VBY3Rpb246OkltYWdlKSkgewogICAgICAgICAgICAgLy8gLi4uIHVubGVzcyB0aGUgbW91c2Ug
aXMgb3ZlciBhbiBpbWFnZSwgdGhlbiB3ZSBzdGFydCBkcmFnZ2luZyBqdXN0IHRoZSBpbWFnZQot
ICAgICAgICAgICAgZHJhZ1N0YXRlKCkudHlwZSA9IERyYWdTb3VyY2VBY3Rpb25JbWFnZTsKLSAg
ICAgICAgfSBlbHNlIGlmICghKGRyYWdTdGF0ZSgpLnR5cGUgJiAoRHJhZ1NvdXJjZUFjdGlvbkRI
VE1MIHwgRHJhZ1NvdXJjZUFjdGlvbkxpbmspKSkgeworICAgICAgICAgICAgZHJhZ1N0YXRlKCku
dHlwZSA9IERyYWdTb3VyY2VBY3Rpb246OkltYWdlOworICAgICAgICB9IGVsc2UgaWYgKCFkcmFn
U3RhdGUoKS50eXBlLmNvbnRhaW5zQW55KHsgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsIERyYWdT
b3VyY2VBY3Rpb246OkxpbmsgfSkpIHsKICAgICAgICAgICAgIC8vIC4uLiBidXQgb25seSBiYWls
IGlmIHdlJ3JlIG5vdCBvdmVyIGFuIHVuc2VsZWN0YWJsZSBlbGVtZW50LgogICAgICAgICAgICAg
bV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKICAgICAgICAgICAgIGRyYWdTdGF0ZSgp
LnNvdXJjZSA9IG51bGxwdHI7CkBAIC0zODQ1LDExICszODQxLDE1IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50
LCBDaGVja0RyCiAgICAgICAgIHJldHVybiAhbW91c2VEb3duTWF5U3RhcnRTZWxlY3QoKSAmJiAh
bV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7CiAgICAgQVNTRVJUKGRyYWdTdGF0ZSgpLnNv
dXJjZSk7CiAKLSAgICBpZiAoIUV4YWN0bHlPbmVCaXRTZXQoZHJhZ1N0YXRlKCkudHlwZSkpIHsK
LSAgICAgICAgQVNTRVJUKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uKTsKLSAgICAgICAgQVNTRVJUKEV4YWN0bHlPbmVCaXRTZXQoc3RhdGljX2Nhc3Q8RHJhZ1Nv
dXJjZUFjdGlvbj4oZHJhZ1N0YXRlKCkudHlwZSAmIH5EcmFnU291cmNlQWN0aW9uU2VsZWN0aW9u
KSkpOworICAgIGlmICghZHJhZ1N0YXRlKCkudHlwZS5oYXNFeGFjdGx5T25lQml0U2V0KCkpIHsK
KyAgICAgICAgQVNTRVJUKGRyYWdTdGF0ZSgpLnR5cGUuY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlv
bjo6U2VsZWN0aW9uKSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBhdXRvIGFjdGlvbk1hc2tD
b3B5ID0gZHJhZ1N0YXRlKCkudHlwZTsKKyAgICAgICAgYWN0aW9uTWFza0NvcHkucmVtb3ZlKERy
YWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbik7CisgICAgICAgIEFTU0VSVChhY3Rpb25NYXNrQ29w
eS5oYXNFeGFjdGx5T25lQml0U2V0KCkpOworI2VuZGlmCiAKLSAgICAgICAgZHJhZ1N0YXRlKCku
dHlwZSA9IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb247CisgICAgICAgIGRyYWdTdGF0ZSgpLnR5
cGUgPSBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb247CiAgICAgfQogCiAgICAgLy8gV2UgYXJl
IHN0YXJ0aW5nIGEgdGV4dC9pbWFnZS91cmwgZHJhZywgc28gdGhlIGN1cnNvciBzaG91bGQgYmUg
YW4gYXJyb3cKQEAgLTM4ODEsNyArMzg4MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVE
cmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAg
ICAgICAgICAgICBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBIYXNOb25EZWZhdWx0UGFz
dGVib2FyZERhdGE6OlllczsKICAgICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5tb3Zl
RHJhZ1N0YXRlKFdURk1vdmUoZHJhZ1N0YXJ0RGF0YVRyYW5zZmVyKSk7CiAKLSAgICAgICAgaWYg
KGRyYWdTdGF0ZSgpLnNvdXJjZSAmJiBkcmFnU3RhdGUoKS50eXBlID09IERyYWdTb3VyY2VBY3Rp
b25ESFRNTCAmJiAhZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5oYXNEcmFnSW1hZ2UoKSkgewor
ICAgICAgICBpZiAoZHJhZ1N0YXRlKCkuc291cmNlICYmIGRyYWdTdGF0ZSgpLnR5cGUgPT0gRHJh
Z1NvdXJjZUFjdGlvbjo6REhUTUwgJiYgIWRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+aGFzRHJh
Z0ltYWdlKCkpIHsKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLnNvdXJjZS0+ZG9jdW1lbnQoKS51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBk
cmFnU3RhdGUoKS5zb3VyY2UtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGFi
c29sdXRlUG9zaXRpb24gPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAppbmRleCAyN2NhZTYxZWQxMS4uZjdhMTZjMWUwNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDY1LDcgKzQ2NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZl
bnQmKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRHJhZ1NvdXJjZUFjdGlvbiB1
cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8RHJh
Z1NvdXJjZUFjdGlvbj4gdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3Q7CiAg
ICAgYm9vbCBzdXBwb3J0c1NlbGVjdGlvblVwZGF0ZXNPbk1vdXNlRHJhZygpIGNvbnN0OwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCmluZGV4IGU1ODU5YzQyY2Y5Li4xZDFm
MmE3ODk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCkBAIC00MSw3ICs0MSw3IEBA
IHN0cnVjdCBEcmFnSXRlbSBmaW5hbCB7CiAgICAgLy8gV2hlcmUgdGhlIGltYWdlIHNob3VsZCBi
ZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjdXJzb3IuCiAgICAgRmxvYXRQb2ludCBpbWFn
ZUFuY2hvclBvaW50OwogCi0gICAgRHJhZ1NvdXJjZUFjdGlvbiBzb3VyY2VBY3Rpb24geyBEcmFn
U291cmNlQWN0aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPERyYWdTb3VyY2VBY3Rpb24+IHNvdXJj
ZUFjdGlvbjsKICAgICBJbnRQb2ludCBldmVudFBvc2l0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7
CiAgICAgSW50UG9pbnQgZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CiAgICAgSW50
UG9pbnQgZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlczsKQEAgLTYxLDcgKzYxLDcgQEAg
dm9pZCBEcmFnSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUUoMTczODE1KTogV2Ugc2hvdWxkIGVuY29kZSBhbmQgZGVjb2RlIFBhc3RlYm9hcmRXcml0
ZXJEYXRhIGFuZCBwbGF0Zm9ybSBkcmFnIGltYWdlIGRhdGEKICAgICAvLyBoZXJlIHRvbywgYXMg
cGFydCBvZiBtb3Zpbmcgb2ZmIG9mIHRoZSBsZWdhY3kgZHJhZ2dpbmcgY29kZXBhdGguCi0gICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKHNvdXJjZUFjdGlvbik7CisgICAgZW5jb2RlciA8PCBzb3VyY2VB
Y3Rpb247CiAgICAgZW5jb2RlciA8PCBpbWFnZUFuY2hvclBvaW50IDw8IGV2ZW50UG9zaXRpb25J
bkNvbnRlbnRDb29yZGluYXRlcyA8PCBkcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyA8
PCBkcmFnTG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzIDw8IHRpdGxlIDw8IHVybCA8PCBkcmFn
UHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGJvb2wgaGFzSW5kaWNhdG9y
RGF0YSA9IGltYWdlLmhhc0luZGljYXRvckRhdGEoKTsKICAgICBlbmNvZGVyIDw8IGhhc0luZGlj
YXRvckRhdGE7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRHJhZ0l0ZW06OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIGJvb2wgRHJhZ0l0ZW06
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFnSXRlbSYgcmVzdWx0KQogewotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5zb3VyY2VBY3Rpb24pKQorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnNvdXJjZUFjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbWFnZUFuY2hvclBvaW50KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggMWJmZDI4MjU5ZjguLjYyYzUwOGUzMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTU5MSw2ICs1OTEsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0
eXBlKToKICAgICAgICAgJ1dlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QnOiBb
JyJEb2N1bWVudEVkaXRpbmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJDb3JlOjpEcmFnSGFu
ZGxpbmdNZXRob2QnOiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uJzogWyc8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPiddLAorICAgICAg
ICAnV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbic6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4n
XSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMnOiBbJzxXZWJDb3JlL0pTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0
dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpT
aGFyZURhdGFXaXRoUGFyc2VkVVJMJzogWyc8V2ViQ29yZS9TaGFyZURhdGEuaD4nXSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDcyMmI5ZWRkZTQuLjQ2MGE4Zjk5
OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODI3LDggKzgy
Nyw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHZvaWQgZGlkSGFu
ZGxlRHJhZ1N0YXJ0UmVxdWVzdChib29sIHN0YXJ0ZWQpOwogICAgIHZvaWQgZGlkSGFuZGxlQWRk
aXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCk7Ci0gICAgdm9pZCByZXF1ZXN0RHJh
Z1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
IGFsbG93ZWRBY3Rpb25zKTsKLSAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFn
U2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
biBhbGxvd2VkQWN0aW9ucyk7CisgICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dl
ZEFjdGlvbnNNYXNrKTsKKyAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vz
c2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzayk7CiAgICAgdm9pZCBpbnNlcnREcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+JiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBPcHRpb25hbDxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KTsKICAgICB2b2lkIHdpbGxSZWNl
aXZlRWRpdERyYWdTbmFwc2hvdCgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3QoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAppbmRl
eCBkMmUwYjkwOWZlYy4uYjdmODdiNDQ3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVj
dCBEcmFnU291cmNlU3RhdGUgewotICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9u
IHsgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbk5vbmUgfTsKKyAgICBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWN0aW9uOwogICAgIENHUG9pbnQgYWRqdXN0ZWRPcmlnaW4g
eyBDR1BvaW50WmVybyB9OwogICAgIENHUmVjdCBkcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nv
b3JkaW5hdGVzIHsgQ0dSZWN0WmVybyB9OwogICAgIFJldGFpblB0cjxVSUltYWdlPiBpbWFnZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLm1tCmluZGV4IGZmNGU0ZmQxNGYxLi45MDJkYjhlNGM2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
Lm1tCkBAIC05OSwxMSArOTksMTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlRHJhZ0ltYWdlVG9D
cmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBEcmFnU291cmNlU3RhdGUKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgaWYgKHNv
dXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQ29sb3IpCisgICAgaWYgKHNvdXJjZS5hY3Rp
b24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHNvdXJjZS5hY3Rpb24gJiAoRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MIHwgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKKyAgICByZXR1cm4gc291cmNlLmFjdGlv
bi5jb250YWluc0FueSh7IERyYWdTb3VyY2VBY3Rpb246OkRIVE1MLCBEcmFnU291cmNlQWN0aW9u
OjpJbWFnZSB9KTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkVXNlVmlzaWJsZVBhdGhUb0NyZWF0
ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNlKQpAQCAt
MTEyLDcgKzExMiw3IEBAIHN0YXRpYyBib29sIHNob3VsZFVzZVZpc2libGVQYXRoVG9DcmVhdGVQ
cmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBEcmFnU291cmNlU3RhCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGlmIChzb3VyY2UuYWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yKQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRh
aW5zKERyYWdTb3VyY2VBY3Rpb246OkNvbG9yKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKIApAQCAtMTI0LDExICsxMjQsMTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlVGV4dEluZGlj
YXRvclRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVMKICAgICBp
ZiAoIXNvdXJjZS5pbmRpY2F0b3JEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoc291cmNlLmFjdGlvbiAmIChEcmFnU291cmNlQWN0aW9uTGluayB8IERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pKQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zQW55KHsgRHJhZ1Nv
dXJjZUFjdGlvbjo6TGluaywgRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uIH0pKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgaWYg
KHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCkKKyAgICBpZiAoc291
cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50KSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIApAQCAtMTQxLDExICsxNDEsMTEgQEAgc3RhdGljIGJv
b2wgY2FuVXBkYXRlUHJldmlld0ZvckFjdGl2ZURyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVN0
YXRlJiBzb3VyY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQotICAgIGlmIChzb3VyY2UuYWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNvbG9y
KQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkNvbG9y
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgIGlmIChzb3VyY2UuYWN0aW9u
ICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmsgJiYgIShzb3VyY2UuYWN0aW9uICYgRHJhZ1NvdXJjZUFj
dGlvbkltYWdlKSkKKyAgICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0
aW9uOjpMaW5rKSAmJiAhc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpJ
bWFnZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTY3
LDcgKzE2Nyw3IEBAIE9wdGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlOjphY3RpdmVEcmFnU291cmNlRm9ySXRlbShVSURyCiBib29sIERyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZTo6YW55QWN0aXZlRHJhZ1NvdXJjZUlzKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24gYWN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byYgc291cmNlIDogbV9hY3RpdmVEcmFn
U291cmNlcykgewotICAgICAgICBpZiAoc291cmNlLmFjdGlvbiAmIGFjdGlvbikKKyAgICAgICAg
aWYgKHNvdXJjZS5hY3Rpb24uY29udGFpbnMoYWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBE
cmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnN0YWdlRHJhZ0l0ZW0oY29uc3QgRHJhZ0l0ZW0mIGl0
ZW0sIFVJSW1hZ2UgKmRyYWcKIAogICAgIG1fYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQgPSBp
dGVtLmV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKICAgICBtX3N0YWdlZERyYWdT
b3VyY2UgPSB7ewotICAgICAgICBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihpdGVtLnNv
dXJjZUFjdGlvbiksCisgICAgICAgIGl0ZW0uc291cmNlQWN0aW9uLAogICAgICAgICBpdGVtLmV2
ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlcywKICAgICAgICAgaXRlbS5kcmFnUHJldmll
d0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLAogICAgICAgICBkcmFnSW1hZ2UsCkBAIC0zNTcs
NyArMzU3LDcgQEAgdm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnN0YWdlRHJhZ0l0ZW0o
Y29uc3QgRHJhZ0l0ZW0mIGl0ZW0sIFVJSW1hZ2UgKmRyYWcKIAogYm9vbCBEcmFnRHJvcEludGVy
YWN0aW9uU3RhdGU6Omhhc1N0YWdlZERyYWdTb3VyY2UoKSBjb25zdAogewotICAgIHJldHVybiBt
X3N0YWdlZERyYWdTb3VyY2UgJiYgc3RhZ2VkRHJhZ1NvdXJjZSgpLmFjdGlvbiAhPSBXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uTm9uZTsKKyAgICByZXR1cm4gbV9zdGFnZWREcmFnU291cmNlICYm
ICFzdGFnZWREcmFnU291cmNlKCkuYWN0aW9uLmlzRW1wdHkoKTsKIH0KIAogdm9pZCBEcmFnRHJv
cEludGVyYWN0aW9uU3RhdGU6OmNsZWFyU3RhZ2VkRHJhZ1NvdXJjZShEaWRCZWNvbWVBY3RpdmUg
ZGlkQmVjb21lQWN0aXZlKQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlOjp1cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCkKICAgICAgICAg
aWYgKCFkcmFnSXRlbSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzb3Vy
Y2UuYWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspIHsKKyAgICAgICAgaWYgKHNvdXJjZS5h
Y3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6TGluaykpIHsKICAgICAgICAgICAgIGRy
YWdJdGVtLnByZXZpZXdQcm92aWRlciA9IFt0aXRsZSA9IHJldGFpblB0cigoTlNTdHJpbmcgKilz
b3VyY2UubGlua1RpdGxlKSwgdXJsID0gcmV0YWluUHRyKChOU1VSTCAqKXNvdXJjZS5saW5rVVJM
KSwgY2VudGVyID0gc291cmNlLmFkanVzdGVkT3JpZ2luXSAoKSAtPiBVSURyYWdQcmV2aWV3ICog
ewogICAgICAgICAgICAgICAgIFVJVVJMRHJhZ1ByZXZpZXdWaWV3ICpwcmV2aWV3VmlldyA9IFtV
SVVSTERyYWdQcmV2aWV3VmlldyB2aWV3V2l0aFRpdGxlOnRpdGxlLmdldCgpIFVSTDp1cmwuZ2V0
KCldOwogICAgICAgICAgICAgICAgIHByZXZpZXdWaWV3LmNlbnRlciA9IGNlbnRlcjsKQEAgLTQw
Miw3ICs0MDIsNyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmll
d3NGb3JBY3RpdmVEcmFnU291cmNlcygpCiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgICAgIGVsc2UgaWYgKHNvdXJjZS5hY3Rpb24g
JiBEcmFnU291cmNlQWN0aW9uQ29sb3IpIHsKKyAgICAgICAgZWxzZSBpZiAoc291cmNlLmFjdGlv
bi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpDb2xvcikpIHsKICAgICAgICAgICAgIGRyYWdJ
dGVtLnByZXZpZXdQcm92aWRlciA9IFtpbWFnZSA9IHNvdXJjZS5pbWFnZV0gKCkgLT4gVUlEcmFn
UHJldmlldyAqIHsKICAgICAgICAgICAgICAgICBVSUltYWdlVmlldyAqaW1hZ2VWaWV3ID0gW1tb
VUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1hZ2UuZ2V0KCldIGF1dG9yZWxlYXNl
XTsKICAgICAgICAgICAgICAgICBVSURyYWdQcmV2aWV3UGFyYW1ldGVycyAqcGFyYW1ldGVycyA9
IFtbW1VJRHJhZ1ByZXZpZXdQYXJhbWV0ZXJzIGFsbG9jXSBpbml0V2l0aFRleHRMaW5lUmVjdHM6
QFsgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0OltpbWFnZVZpZXcgYm91bmRzXV0gXV0gYXV0b3Jl
bGVhc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZDJiNGY3MzhlZDQuLjkzNmE5NGY3NDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTcyNDAsNyArNzI0MCw3IEBAIC0gKHZvaWQpdGVhcmRvd25EcmFnQW5k
RHJvcEludGVyYWN0aW9ucwogCiAtICh2b2lkKV9zdGFydERyYWc6KFJldGFpblB0cjxDR0ltYWdl
UmVmPilpbWFnZSBpdGVtOihjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYpaXRlbQogewotICAgIEFT
U0VSVChpdGVtLnNvdXJjZUFjdGlvbiAhPSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uTm9uZSk7
CisgICAgQVNTRVJUKGl0ZW0uc291cmNlQWN0aW9uKTsKIAogICAgIGlmIChpdGVtLnByb21pc2Vk
QXR0YWNobWVudEluZm8pCiAgICAgICAgIFtzZWxmIF9wcmVwYXJlVG9EcmFnUHJvbWlzZWRBdHRh
Y2htZW50Oml0ZW0ucHJvbWlzZWRBdHRhY2htZW50SW5mb107CkBAIC03NTQxLDEyICs3NTQxLDEy
IEBAIC0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JE
cm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3NpCiAgICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uQW55ICYgfldLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKIH0KIAotLSAoV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbilfYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zCistIChPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4pX2FsbG93ZWREcmFnU291cmNlQWN0aW9ucwog
ewotICAgIGF1dG8gYWxsb3dlZEFjdGlvbnMgPSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uQW55
OworICAgIGF1dG8gYWxsb3dlZEFjdGlvbnMgPSBXZWJDb3JlOjphbnlEcmFnU291cmNlQWN0aW9u
KCk7CiAgICAgaWYgKCFzZWxmLmlzRmlyc3RSZXNwb25kZXIgfHwgIV9zdXBwcmVzc1NlbGVjdGlv
bkFzc2lzdGFudFJlYXNvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIERvbid0IGFsbG93IHN0
YXJ0aW5nIGEgZHJhZyBvbiBhIHNlbGVjdGlvbiB3aGVuIHNlbGVjdGlvbiB2aWV3cyBhcmUgbm90
IHZpc2libGUuCi0gICAgICAgIGFsbG93ZWRBY3Rpb25zID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbj4oYWxsb3dlZEFjdGlvbnMgJiB+V2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvblNlbGVjdGlvbik7CisgICAgICAgIGFsbG93ZWRBY3Rpb25zLnJlbW92ZShXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pOwogICAgIH0KICAgICByZXR1cm4gYWxsb3dlZEFj
dGlvbnM7CiB9CkBAIC04MDE3LDcgKzgwMTcsNyBAQCAtIChVSVRhcmdldGVkRHJhZ1ByZXZpZXcg
KilkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldgog
LSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24g
d2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW1hdG9yOihpZCA8VUlEcmFnQW5pbWF0aW5nPilhbmltYXRv
ciBzZXNzaW9uOihpZCA8VUlEcmFnU2Vzc2lvbj4pc2Vzc2lvbgogewogICAgIFJFTEVBU0VfTE9H
KERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIHdpbGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjog
JXAiLCBzZXNzaW9uKTsKLSAgICBpZiAoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hbnlBY3Rp
dmVEcmFnU291cmNlSXMoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikpIHsKKyAg
ICBpZiAoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hbnlBY3RpdmVEcmFnU291cmNlSXMoV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSkgewogICAgICAgICBbc2VsZiBjYW5j
ZWxBY3RpdmVUZXh0SW50ZXJhY3Rpb25HZXN0dXJlc107CiAgICAgICAgIGlmICghX3Nob3VsZFJl
c3RvcmVDYWxsb3V0QmFyQWZ0ZXJEcm9wKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBT
UEkgc2hvdWxkIGJlIHJlbmFtZWQgaW4gVUlLaXQgdG8gcmVmbGVjdCBhIG1vcmUgZ2VuZXJhbCBw
dXJwb3NlIG9mIGhpZGluZyBpbnRlcmFjdGlvbiBhc3Npc3RhbnQgY29udHJvbHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA2MTRkY2Jm
MzdjMC4uMzRmMDUxOWJlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQpAQCAtMTI1NywxNiArMTI1NywxNiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCkKICAgICBw
YWdlQ2xpZW50KCkuZGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYWRkZWQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERyYWdTdGFydChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2VkQWN0aW9ucykKK3ZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKQog
ewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REcmFnU3RhcnQoY2xpZW50UG9zaXRpb24sIGdsb2Jh
bFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9ucyksIG1fd2ViUGFnZUlEKTsKKyAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RHJhZ1N0YXJ0KGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnNNYXNrKSwgbV93ZWJQYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNz
aW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFsbG93ZWRBY3Rpb25zKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFz
aykKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Np
b24oY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9ucyksIG1fd2Vi
UGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1
ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY2xpZW50UG9zaXRpb24sIGdsb2JhbFBv
c2l0aW9uLCBhbGxvd2VkQWN0aW9uc01hc2spLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPElu
dFNpemU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggODFiNzlhNzdjODcuLjJlYjA4ODZm
MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0
IEludFBvaW50CiB7CiB9CiAKLURyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCitPcHRpb25TZXQ8RHJhZ1Nv
dXJjZUFjdGlvbj4gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChj
b25zdCBJbnRQb2ludCYpCiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+YWxsb3dlZERyYWdTb3VyY2VB
Y3Rpb25zKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCAyN2M0YjI3MmE3My4uNGRiYTBkOGFiZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJp
ZGU7Ci0gICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0Zv
clBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7Cisg
ICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJdGVtLCBXZWJDb3JlOjpEYXRh
VHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29uY2x1
ZGVFZGl0RHJhZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGE0YjE1Nzg2NmJlLi4wNDk1NjAyZjBlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTE1LDcgKzkxNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdpbGxTdGFydERyYWcoKSB7IEFTU0VSVCghbV9pc1N0YXJ0aW5nRHJhZyk7
IG1faXNTdGFydGluZ0RyYWcgPSB0cnVlOyB9CiAgICAgdm9pZCBkaWRTdGFydERyYWcoKTsKICAg
ICB2b2lkIGRyYWdDYW5jZWxsZWQoKTsKLSAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFs
bG93ZWREcmFnU291cmNlQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZERyYWdTb3Vy
Y2VBY3Rpb25zOyB9CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFs
bG93ZWREcmFnU291cmNlQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZERyYWdTb3Vy
Y2VBY3Rpb25zOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgYmVnaW5QcmludGluZyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYpOwpAQCAtMTQwNiw4ICsxNDA2LDggQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCi0gICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucyk7Ci0gICAgdm9pZCByZXF1ZXN0QWRk
aXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2
NF90IGFsbG93ZWRBY3Rpb25zKTsKKyAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxv
d2VkQWN0aW9uc01hc2spOworICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdT
ZXNzaW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKICAgICB2b2lkIGluc2VydERyb3BwZWRJ
bWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIE9wdGlvbmFs
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVwbHkpOwogICAgIHZvaWQgY29tcHV0
ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KCk7CiAjZW5kaWYKQEAgLTE5MzMsNyArMTkzMyw3IEBA
IHByaXZhdGU6CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgbV9pc1N0YXJ0
aW5nRHJhZyB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBtX2FsbG93
ZWREcmFnU291cmNlQWN0aW9ucyB7IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb25BbnkgfTsKKyAg
ICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gbV9hbGxvd2VkRHJhZ1NvdXJj
ZUFjdGlvbnMgeyBXZWJDb3JlOjphbnlEcmFnU291cmNlQWN0aW9uKCkgfTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmlu
ZGV4IGFlOTI3NDc2Mzg4Li4xNmFmMzE3ZTg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMjEsOCArMzIxLDgg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBSZXF1ZXN0RHJhZ1N0YXJ0KFdlYkNv
cmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3Np
dGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpCi0gICAgUmVxdWVzdEFkZGl0aW9uYWxJdGVt
c0ZvckRyYWdTZXNzaW9uKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpCisgICAg
UmVxdWVzdERyYWdTdGFydChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCisgICAgUmVxdWVzdEFkZGl0aW9uYWxJdGVtc0Zv
ckRyYWdTZXNzaW9uKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IGFsbG93ZWRBY3Rpb25zTWFzaykKICAgICBJbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnMoVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IGltYWdlU2l6ZSkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiBkcm9wUHJldmlld1JlY3RzLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yRGF0YT4gdGV4dEluZGljYXRvcikgQXN5bmMKICAgICBEaWRDb25jbHVkZURyb3AoKQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDU4MDM0YjcxYzExLi43MGM4ZjJhYWZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTkwOSwxNiAr
OTA5LDE2IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24o
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB9CiAKICNpZiBFTkFCTEUoREFUQV9JTlRF
UkFDVElPTikKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdERyYWdTdGFydChjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qg
YWxsb3dlZEFjdGlvbnMpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3REcmFnU3RhcnQoY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9w
dGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCiB7
Ci0gICAgU2V0Rm9yU2NvcGU8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlv
bnNGb3JTY29wZShtX2FsbG93ZWREcmFnU291cmNlQWN0aW9ucywgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbj4oYWxsb3dlZEFjdGlvbnMpKTsKKyAgICBTZXRGb3JTY29wZTxP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4+IGFsbG93ZWRBY3Rpb25zRm9yU2Nv
cGUobV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMsIGFsbG93ZWRBY3Rpb25zTWFzayk7CiAgICAg
Ym9vbCBkaWRTdGFydCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkudHJ5VG9C
ZWdpbkRyYWdBdFBvaW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbik7CiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0KGRpZFN0
YXJ0KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdT
ZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKK3ZvaWQgV2ViUGFnZTo6cmVx
dWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKQogewotICAgIFNldEZvclNj
b3BlPFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zRm9yU2NvcGUobV9h
bGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdTb3VyY2VB
Y3Rpb24+KGFsbG93ZWRBY3Rpb25zKSk7CisgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24+PiBhbGxvd2VkQWN0aW9uc0ZvclNjb3BlKG1fYWxsb3dlZERy
YWdTb3VyY2VBY3Rpb25zLCBhbGxvd2VkQWN0aW9uc01hc2spOwogICAgIC8vIFRvIGF1Z21lbnQg
dGhlIHBsYXRmb3JtIGRyYWcgc2Vzc2lvbiB3aXRoIGFkZGl0aW9uYWwgaXRlbXMsIGVuZCB0aGUg
Y3VycmVudCBkcmFnIHNlc3Npb24gYW5kIGJlZ2luIGEgbmV3IGRyYWcgc2Vzc2lvbiB3aXRoIHRo
ZSBuZXcgZHJhZyBpdGVtLgogICAgIC8vIFRoaXMgcHJvY2VzcyBpcyBvcGFxdWUgdG8gdGhlIFVJ
IHByb2Nlc3MsIHdoaWNoIHN0aWxsIG1haW50YWlucyB0aGUgb2xkIGRyYWcgaXRlbSBpbiBpdHMg
ZHJhZyBzZXNzaW9uLiBTaW1pbGFybHksIHRoaXMgcGVyc2lzdGVudCBkcmFnIHNlc3Npb24KICAg
ICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGljaCBvbmx5IHNlZXMgdGhhdCB0
aGUgY3VycmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcgb25lIGlzIGJlZ2lubmlu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaAppbmRleCAxNWRjYmE1NDQyMS4uMzRhNzVmZmFiMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdE
ZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OkRyYWdEYXRhJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3Vy
Y2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlkZTsKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OkRyYWdJdGVtLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFt
ZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBiZWdpbkRyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdl
YkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9zaXRpb24sIFdlYkNvcmU6
OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQubW0KaW5kZXggM2QxYTBhMzVmZjIuLjQyYWMyN2JmYzY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0K
QEAgLTY4LDYgKzY4LDIyIEBAIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyog
d2ViVmlldykKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorc3RhdGljIE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uPiBjb3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2soV2ViRHJhZ1NvdXJj
ZUFjdGlvbiBhY3Rpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IHJlc3VsdDsKKworICAgIGlmIChhY3Rpb24gJiBXZWJEcmFnU291cmNlQWN0aW9uREhUTUwp
CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpOwor
ICAgIGlmIChhY3Rpb24gJiBXZWJEcmFnU291cmNlQWN0aW9uSW1hZ2UpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UpOworICAgIGlmIChhY3Rpb24g
JiBXZWJEcmFnU291cmNlQWN0aW9uTGluaykKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uOjpMaW5rKTsKKyAgICBpZiAoYWN0aW9uICYgV2ViRHJhZ1NvdXJjZUFj
dGlvblNlbGVjdGlvbikKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uOjpTZWxlY3Rpb24pOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFdlYkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBraXQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFj
dGlvbikKIHsKICAgICBzd2l0Y2ggKGFjdGlvbikgewpAQCAtMTA0LDE1ICsxMjAsMTUgQEAgdm9p
ZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3QKIH0KIAogCi1XZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIFdl
YkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IHJvb3RWaWV3UG9pbnQpCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gV2Vi
RHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
cm9vdFZpZXdQb2ludCkKIHsKICAgICBOU1BvaW50IHZpZXdQb2ludCA9IFttX3dlYlZpZXcgX2Nv
bnZlcnRQb2ludEZyb21Sb290Vmlldzpyb290Vmlld1BvaW50XTsKLSAgICByZXR1cm4gKERyYWdT
b3VyY2VBY3Rpb24pW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93
ZWJWaWV3IGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQ6dmlld1BvaW50XTsKKyAgICByZXR1
cm4gY29yZURyYWdTb3VyY2VBY3Rpb25NYXNrKFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2Fy
ZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50OnZpZXdQ
b2ludF0pOwogfQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFj
dGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIG1vdXNlRG93blBvaW50LCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2Zl
cikKIHsKLSAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dl
YlZpZXcgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uOihXZWJEcmFnU291cmNlQWN0aW9uKWFj
dGlvbiBmcm9tUG9pbnQ6bW91c2VEb3duUG9pbnQgd2l0aFBhc3RlYm9hcmQ6W05TUGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkV2l0aE5hbWU6ZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5uYW1lKCldXTsK
KyAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcg
d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uOmtpdChhY3Rpb24pIGZyb21Qb2ludDptb3VzZURv
d25Qb2ludCB3aXRoUGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpk
YXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLm5hbWUoKV1dOwogfQogCiB2b2lkIFdlYkRyYWdDbGll
bnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNm
ZXIsIEZyYW1lJiBmcmFtZSkKQEAgLTEyNCw3ICsxNDAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6
OnN0YXJ0RHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIs
IEZyYQogICAgIGlmICghW2h0bWxWaWV3LmdldCgpIGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3
IGNsYXNzXV0pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBOU0V2ZW50ICpldmVudCA9IGRy
YWdJdGVtLnNvdXJjZUFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uTGluayA/IGZyYW1lLmV2ZW50
SGFuZGxlcigpLmN1cnJlbnROU0V2ZW50KCkgOiBbaHRtbFZpZXcuZ2V0KCkgX21vdXNlRG93bkV2
ZW50XTsKKyAgICBOU0V2ZW50ICpldmVudCA9IChkcmFnSXRlbS5zb3VyY2VBY3Rpb24gJiYgKmRy
YWdJdGVtLnNvdXJjZUFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uOjpMaW5rKSA/IGZyYW1lLmV2
ZW50SGFuZGxlcigpLmN1cnJlbnROU0V2ZW50KCkgOiBbaHRtbFZpZXcuZ2V0KCkgX21vdXNlRG93
bkV2ZW50XTsKICAgICBXZWJIVE1MVmlldyogdG9wSFRNTFZpZXcgPSBnZXRUb3BIVE1MVmlldygm
ZnJhbWUpOwogICAgIFJldGFpblB0cjxXZWJIVE1MVmlldz4gdG9wVmlld1Byb3RlY3RvciA9IHRv
cEhUTUxWaWV3OwogICAgIApAQCAtMTk3LDkgKzIxMyw5IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6
d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0CiB7CiB9CiAKLVdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJh
Z1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCitPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1h
c2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCiB7Ci0gICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rp
b25Ob25lOworICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBl
cmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikKQEAgLTIzMiw5ICsyNDgs
OSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdAogewogfQogCi1XZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uIFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmKQorT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IFdlYkRyYWdD
bGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQogewot
ICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uQW55OworICAgIHJldHVybiBXZWJDb3JlOjphbnlE
cmFnU291cmNlQWN0aW9uKCk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50
JiwgRGF0YVRyYW5zZmVyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCAyYzI4NjliOWM1My4uZTliODliYjhjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTY3NSw2ICs2NzUsMzQgQEAgc3RhdGljIF9V
SURyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdP
cGVyYXRpb24pCiAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOwogfQogI2VuZGlmIC8v
IFVTRShBUFBLSVQpCisKK1dlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24+IGFjdGlvbikKK3sKKyAgICBpZiAoIWFjdGlvbikKKyAgICAgICAg
cmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25Ob25lOworCisgICAgc3dpdGNoICgqYWN0aW9uKSB7
CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpESFRNTDoKKyAgICAgICAgcmV0
dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25ESFRNTDsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb246OkltYWdlOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkltYWdl
OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6TGluazoKKyAgICAgICAgcmV0
dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbjo6U2VsZWN0aW9uOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbjsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGNhc2UgV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudDoKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb246OkNvbG9yOgorICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIH0KKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uTm9uZTsK
K30KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCiBXZWJDb3JlOjpGaW5kT3B0aW9u
cyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKQpAQCAtMTk2MCw3ICsxOTg4LDcg
QEAgLSAodm9pZClfc3RhcnREcmFnOihjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYpZHJhZ0l0ZW0K
ICAgICBfcHJpdmF0ZS0+ZHJhZ2dlZExpbmtVUkwgPSBkcmFnSXRlbS51cmwuaXNFbXB0eSgpID8g
bmlsIDogKE5TVVJMICopZHJhZ0l0ZW0udXJsOwogICAgIF9wcml2YXRlLT5kcmFnZ2VkTGlua1Rp
dGxlID0gZHJhZ0l0ZW0udGl0bGUuaXNFbXB0eSgpID8gbmlsIDogKE5TU3RyaW5nICopZHJhZ0l0
ZW0udGl0bGU7CiAgICAgX3ByaXZhdGUtPmRyYWdQcmV2aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBkcmFnSXRlbS5kcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwot
ICAgIF9wcml2YXRlLT5kcmFnU291cmNlQWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViRHJhZ1NvdXJj
ZUFjdGlvbj4oZHJhZ0l0ZW0uc291cmNlQWN0aW9uKTsKKyAgICBfcHJpdmF0ZS0+ZHJhZ1NvdXJj
ZUFjdGlvbiA9IGtpdChkcmFnSXRlbS5zb3VyY2VBY3Rpb24pOwogfQogCiAtIChDR1JlY3QpX2Rh
dGFJbnRlcmFjdGlvbkNhcmV0UmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggZWExZjJmMzFlNWIuLjU2MjUwZmQ3NDcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0
ICJXZWJWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgorI2ltcG9y
dCAiV2ViVUlEZWxlZ2F0ZS5oIgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIApAQCAtOTgsNiArOTks
OCBAQCB1c2luZyBDb2NvYURyYWdPcGVyYXRpb24gPSB1aW50NjRfdDsKICNlbmRpZgogCiBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29h
RHJhZ09wZXJhdGlvbik7CisKK1dlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KE9wdGlvbmFsPFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24+KTsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQog
CiBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuY3BwCmluZGV4IDViMTkzYTdkYWEzLi4xNDc3N2ZmZGU4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5j
cHAKQEAgLTcyLDYgKzcyLDQ2IEBAIHN0YXRpYyBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24ga2l0
KERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24pCiAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5h
dGlvbkFjdGlvbk5vbmU7CiB9CiAKK3N0YXRpYyBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4g
Y29yZURyYWdTb3VyY2VBY3Rpb25NYXNrKFdlYkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uTWFzaykK
K3sKKyAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gcmVzdWx0OworCisgICAgaWYgKGFj
dGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0aW9uREhUTUwpCisgICAgICAgIHJlc3VsdC5hZGQo
RHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpOworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ1Nv
dXJjZUFjdGlvbkltYWdlKQorICAgICAgICByZXN1bHQuYWRkKERyYWdTb3VyY2VBY3Rpb246Oklt
YWdlKTsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rKQorICAg
ICAgICByZXN1bHQuYWRkKERyYWdTb3VyY2VBY3Rpb246OkxpbmspOworICAgIGlmIChhY3Rpb25N
YXNrICYgV2ViRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKKyAgICAgICAgcmVzdWx0LmFkZChE
cmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
c3RhdGljIFdlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KERyYWdTb3VyY2VBY3Rpb24gYWN0aW9uKQor
eworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpESFRN
TDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25ESFRNTDsKKyAgICBjYXNlIERy
YWdTb3VyY2VBY3Rpb246OkltYWdlOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlv
bkltYWdlOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6TGluazoKKyAgICAgICAgcmV0dXJu
IFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6U2Vs
ZWN0aW9uOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjsKKyNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6
QXR0YWNobWVudDoKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246OkNvbG9yOgorICAgICAgICBicmVh
azsKKyNlbmRpZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
V2ViRHJhZ1NvdXJjZUFjdGlvbk5vbmU7Cit9CisKIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGll
bnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KSAKIHsKQEAgLTkw
LDExICsxMzAsMTEgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5h
dGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW8KIERyYWdTb3VyY2VBY3Rpb24g
V2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2lu
dCYgd2luZG93UG9pbnQpCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiBkZWxlZ2F0ZVJl
ZiA9IDA7Ci0gICAgV2ViRHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24gPSBXZWJEcmFnU291cmNlQWN0
aW9uQW55OworICAgIFdlYkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uTWFzayA9IFdlYkRyYWdTb3Vy
Y2VBY3Rpb25Bbnk7CiAgICAgUE9JTlQgbG9jYWxwdCA9IGNvcmUobV93ZWJWaWV3KS0+bWFpbkZy
YW1lKCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd1BvaW50KTsKICAgICBpZiAoU1VD
Q0VFREVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgmZGVsZWdhdGVSZWYpKSkKLSAgICAgICAgZGVs
ZWdhdGVSZWYtPmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQobV93ZWJWaWV3LCAmbG9jYWxw
dCwgJmFjdGlvbik7Ci0gICAgcmV0dXJuIChEcmFnU291cmNlQWN0aW9uKWFjdGlvbjsKKyAgICAg
ICAgZGVsZWdhdGVSZWYtPmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQobV93ZWJWaWV3LCAm
bG9jYWxwdCwgJmFjdGlvbk1hc2spOworICAgIHJldHVybiBjb3JlRHJhZ1NvdXJjZUFjdGlvbk1h
c2soYWN0aW9uTWFzayk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFn
U291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnRQb2ludCYgaW50
UG9pbnQsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQpAQCAtMTA3LDcgKzE0Nyw3IEBAIHZv
aWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VB
Y3Rpb24gYWN0aW9uLCBjb25zdCBJCiAgICAgQ09NUHRyPElEYXRhT2JqZWN0PiBkYXRhT2JqZWN0
ID0gZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5kYXRhT2JqZWN0KCk7CiAKICAgICBDT01QdHI8
SURhdGFPYmplY3Q+IG5ld0RhdGFPYmplY3Q7Ci0gICAgSFJFU1VMVCByZXN1bHQgPSB1aURlbGVn
YXRlLT53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24obV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxX
ZWJEcmFnU291cmNlQWN0aW9uPihhY3Rpb24pLCAmcG9pbnQsIGRhdGFPYmplY3QuZ2V0KCksICZu
ZXdEYXRhT2JqZWN0KTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IHVpRGVsZWdhdGUtPndpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihtX3dlYlZpZXcsIGtpdChhY3Rpb24pLCAmcG9pbnQsIGRhdGFP
YmplY3QuZ2V0KCksICZuZXdEYXRhT2JqZWN0KTsKICAgICBpZiAocmVzdWx0ID09IFNfT0sgJiYg
bmV3RGF0YU9iamVjdCAhPSBkYXRhT2JqZWN0KQogICAgICAgICBjb25zdF9jYXN0PFBhc3RlYm9h
cmQmPihkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpKS5zZXRFeHRlcm5hbERhdGFPYmplY3QobmV3
RGF0YU9iamVjdC5nZXQoKSk7CiB9CkBAIC0xNDMsNyArMTgzLDcgQEAgdm9pZCBXZWJEcmFnQ2xp
ZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIs
IEZyYW1lJgogICAgICAgICAgICAgICAgIHNkaS5oYm1wRHJhZ0ltYWdlID0gaW1hZ2UuZ2V0KCk7
CiAgICAgICAgICAgICAgICAgc2RpLnB0T2Zmc2V0LnggPSBkcmFnUG9pbnQueCgpIC0gaW1hZ2VP
cmlnaW4ueCgpOwogICAgICAgICAgICAgICAgIHNkaS5wdE9mZnNldC55ID0gZHJhZ1BvaW50Lnko
KSAtIGltYWdlT3JpZ2luLnkoKTsKLSAgICAgICAgICAgICAgICBpZiAoaXRlbS5zb3VyY2VBY3Rp
b24gPT0gRHJhZ1NvdXJjZUFjdGlvbkxpbmspCisgICAgICAgICAgICAgICAgaWYgKGl0ZW0uc291
cmNlQWN0aW9uICYmICppdGVtLnNvdXJjZUFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uOjpMaW5r
KQogICAgICAgICAgICAgICAgICAgICBzZGkucHRPZmZzZXQueSA9IGIuYm1IZWlnaHQgLSBzZGku
cHRPZmZzZXQueTsKIAogICAgICAgICAgICAgICAgIGhlbHBlci0+SW5pdGlhbGl6ZUZyb21CaXRt
YXAoJnNkaSwgZGF0YU9iamVjdC5nZXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401306</attachid>
            <date>2020-06-07 16:41:30 -0700</date>
            <delta_ts>2020-06-08 13:13:51 -0700</delta_ts>
            <desc>Patch v3 (EWS)</desc>
            <filename>bug-212885-v3.diff</filename>
            <type>text/plain</type>
            <size>64087</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oIGIvU291cmNlL1dURi93dGYv
T3B0aW9uU2V0LmgKaW5kZXggMmRjZjQzYzJlNjIuLjVkZGUwN2UxZjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQu
aApAQCAtMjA1LDYgKzIwNSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fc3RvcmFnZSAmPSB+b3B0
aW9uU2V0Lm1fc3RvcmFnZTsKICAgICB9CiAKKyAgICBjb25zdGV4cHIgYm9vbCBoYXNFeGFjdGx5
T25lQml0U2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0b3JhZ2UgJiYgISht
X3N0b3JhZ2UgJiAobV9zdG9yYWdlIC0gMSkpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBPcHRp
b25hbDxFPiBhc1NpbmdsZVZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBoYXNF
eGFjdGx5T25lQml0U2V0KCkgPyBPcHRpb25hbDxFPihzdGF0aWNfY2FzdDxFPihtX3N0b3JhZ2Up
KSA6IFdURjo6bnVsbG9wdDsKKyAgICB9CisKICAgICBjb25zdGV4cHIgZnJpZW5kIGJvb2wgb3Bl
cmF0b3I9PShPcHRpb25TZXQgbGhzLCBPcHRpb25TZXQgcmhzKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGxocy5tX3N0b3JhZ2UgPT0gcmhzLm1fc3RvcmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5jcHAKaW5kZXggNzliMGIzMTkzMTAuLjg3ZDBiODYzOTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIGNsYXNzIEVt
cHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgZmluYWwgOiBwdWJsaWMgRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQgewogY2xhc3MgRW1wdHlEcmFnQ2xpZW50IGZpbmFsIDogcHVibGljIERyYWdDbGll
bnQgewogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFBl
cmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50Jiwg
RGF0YVRyYW5zZmVyJikgZmluYWwgeyB9Ci0gICAgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNl
QWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikgZmluYWwgeyByZXR1cm4gRHJhZ1Nv
dXJjZUFjdGlvbk5vbmU7IH0KKyAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGZpbmFsIHsgcmV0dXJuIHsg
fTsgfQogICAgIHZvaWQgc3RhcnREcmFnKERyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYp
IGZpbmFsIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGU3NDU2MzUy
MzFhLi45ZDJkODNhNGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAtNDQsMjEg
KzQ0LDM1IEBAIGNvbnN0ZXhwciBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBhbnlE
cmFnRGVzdGluYXRpb25BY3Rpb24oKQogICAgIHJldHVybiBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uPiB7IERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6REhUTUwsIERyYWdEZXN0aW5hdGlv
bkFjdGlvbjo6RWRpdCwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkIH07CiB9CiAKLS8vIFdl
YkNvcmVEcmFnU291cmNlQWN0aW9uIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBXZWJEcmFn
U291cmNlQWN0aW9uLgotdHlwZWRlZiBlbnVtIHsKLSAgICBEcmFnU291cmNlQWN0aW9uTm9uZSAg
ICAgICAgID0gMCwKLSAgICBEcmFnU291cmNlQWN0aW9uREhUTUwgICAgICAgID0gMSwKLSAgICBE
cmFnU291cmNlQWN0aW9uSW1hZ2UgICAgICAgID0gMiwKLSAgICBEcmFnU291cmNlQWN0aW9uTGlu
ayAgICAgICAgID0gNCwKLSAgICBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uICAgID0gOCwKKy8v
IFNlZSBXZWJEcmFnU291cmNlQWN0aW9uLgorZW51bSBjbGFzcyBEcmFnU291cmNlQWN0aW9uIDog
dWludDhfdCB7CisgICAgREhUTUwgICAgICA9IDEsCisgICAgSW1hZ2UgICAgICA9IDIsCisgICAg
TGluayAgICAgICA9IDQsCisgICAgU2VsZWN0aW9uICA9IDgsCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCAgID0gMTYsCisgICAg
QXR0YWNobWVudCA9IDE2LAogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0g
ICAgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yICAgICAgICA9IDMyLAorICAgIENvbG9yICAgICAgPSAz
MiwKICNlbmRpZgotICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAot
fSBEcmFnU291cmNlQWN0aW9uOworfTsKKworY29uc3RleHByIE9wdGlvblNldDxEcmFnU291cmNl
QWN0aW9uPiBhbnlEcmFnU291cmNlQWN0aW9uKCkKK3sKKyAgICByZXR1cm4gT3B0aW9uU2V0PERy
YWdTb3VyY2VBY3Rpb24+IHsKKyAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsCisgICAg
ICAgIERyYWdTb3VyY2VBY3Rpb246OkltYWdlLAorICAgICAgICBEcmFnU291cmNlQWN0aW9uOjpM
aW5rLAorICAgICAgICBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24KKyNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQorICAgICAgICAsIERyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQK
KyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgICAgICAsIERyYWdTb3Vy
Y2VBY3Rpb246OkNvbG9yCisjZW5kaWYKKyAgICB9OworfQogCiAvLyBTZWUgTlNEcmFnT3BlcmF0
aW9uLCBfVUlEcmFnT3BlcmF0aW9uIGFuZCBVSURyb3BPcGVyYXRpb24uCiBlbnVtIGNsYXNzIERy
YWdPcGVyYXRpb24gOiB1aW50OF90IHsKQEAgLTEwOCw2ICsxMjIsMjIgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiB7CiAgICAgPjsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4g
eworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24sCisgICAgICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkRIVE1MLAor
ICAgICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpJbWFnZSwKKyAgICAgICAgV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbjo6TGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbjo6U2VsZWN0aW9uCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAg
LCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50CisjZW5kaWYKKyNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAgLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
OjpDb2xvcgorI2VuZGlmCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNl
dFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAgICB1c2luZyB2YWx1
ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5kZXggN2FhOGVlNTg2NWQuLjk5OGI3YmY5
NTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdE
ZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgRHJhZ0RhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQ
b2ludCYsIERhdGFUcmFuc2ZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29uY2x1ZGVF
ZGl0RHJhZygpIHsgfQotICAgIHZpcnR1YWwgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0
aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KSA9IDA7CisgICAg
dmlydHVhbCBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbk1hc2tG
b3JQb2ludChjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCkgPSAwOwogICAgIAogICAgIHZp
cnR1YWwgdm9pZCBzdGFydERyYWcoRHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZyYW1lJikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBkcmFnRW5kZWQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKaW5kZXggMmYzMDIwOGU1MDEuLjQyYWMzZmE2NzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDgzLDcgKzQ4Myw3IEBAIERyYWdIYW5k
bGluZ01ldGhvZCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSwgT3B0CiAgICAgcmV0dXJuIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKIH0K
IAotRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KQorT3B0aW9uU2V0PERyYWdTb3VyY2VB
Y3Rpb24+IERyYWdDb250cm9sbGVyOjpkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50
UG9pbnQmIHJvb3RWaWV3UG9pbnQpCiB7CiAgICAgbV9kcmFnU291cmNlQWN0aW9uID0gY2xpZW50
KCkuZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChyb290Vmlld1BvaW50KTsKICAgICByZXR1
cm4gbV9kcmFnU291cmNlQWN0aW9uOwpAQCAtNzY5LDcgKzc2OSw3IEBAIHN0YXRpYyBSZWZQdHI8
SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBlbmNsb3NpbmdBdHRhY2htZW50RWxlbWVudChFbGVtZW50
JiBlbGVtZW50CiAKIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KGNv
bnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3RhcnRFbGVtZW50LCBjb25zdCBJbnRQ
b2ludCYgZHJhZ09yaWdpbiwgRHJhZ1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICBzdGF0ZS50
eXBlID0gKHNvdXJjZUZyYW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhkcmFnT3JpZ2luKSkgPyBE
cmFnU291cmNlQWN0aW9uU2VsZWN0aW9uIDogRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisgICAgc3Rh
dGUudHlwZSA9IHNvdXJjZUZyYW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhkcmFnT3JpZ2luKSA/
IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbiA6IE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9u
Pih7IH0pOwogICAgIGlmICghc3RhcnRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpAQCAtNzgzLDcgKzc4Myw3IEBAIEVsZW1l
bnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VG
cmFtZSwgRWxlbWVudCogc3RhCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWlzQXR0YWNobWVu
dEVsZW1lbnRJbkN1cnJlbnRTZWxlY3Rpb24gfHwgaXNTaW5nbGVBdHRhY2htZW50U2VsZWN0aW9u
KSB7Ci0gICAgICAgICAgICBzdGF0ZS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQ7
CisgICAgICAgICAgICBzdGF0ZS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudDsK
ICAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50LmdldCgpOwogICAgICAgICB9CiAgICAgfQpA
QCAtNzk1LDMyICs3OTUsMzIgQEAgRWxlbWVudCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVs
ZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBFbGVtZW50KiBzdGEKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIFVzZXJEcmFnIGRyYWdNb2RlID0gcmVuZGVyZXItPnN0eWxl
KCkudXNlckRyYWcoKTsKLSAgICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291
cmNlQWN0aW9uREhUTUwpICYmIGRyYWdNb2RlID09IFVzZXJEcmFnOjpFbGVtZW50KSB7Ci0gICAg
ICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUu
dHlwZSB8IERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7CisgICAgICAgIGlmIChtX2RyYWdTb3VyY2VB
Y3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpICYmIGRyYWdNb2RlID09IFVz
ZXJEcmFnOjpFbGVtZW50KSB7CisgICAgICAgICAgICBzdGF0ZS50eXBlLmFkZChEcmFnU291cmNl
QWN0aW9uOjpESFRNTCk7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfQog
ICAgICAgICBpZiAoZHJhZ01vZGUgPT0gVXNlckRyYWc6OkF1dG8pIHsKLSAgICAgICAgICAgIGlm
ICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKQorICAgICAgICAg
ICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6SW1h
Z2UpKQogICAgICAgICAgICAgICAgICYmIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KCplbGVtZW50KQog
ICAgICAgICAgICAgICAgICYmIGltYWdlRWxlbWVudElzRHJhZ2dhYmxlKGRvd25jYXN0PEhUTUxJ
bWFnZUVsZW1lbnQ+KCplbGVtZW50KSwgKnNvdXJjZUZyYW1lKSkgewotICAgICAgICAgICAgICAg
IHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwg
RHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKKyAgICAgICAgICAgICAgICBzdGF0ZS50eXBlLmFkZChE
cmFnU291cmNlQWN0aW9uOjpJbWFnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25MaW5rKSAmJiBpc0RyYWdnYWJsZUxpbmsoKmVsZW1lbnQpKSB7Ci0gICAg
ICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0
YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uTGluayk7CisgICAgICAgICAgICBpZiAobV9kcmFn
U291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkxpbmspICYmIGlzRHJhZ2dh
YmxlTGluaygqZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS50eXBlLmFkZChEcmFn
U291cmNlQWN0aW9uOjpMaW5rKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAg
ICAgICAgICAgIH0KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgICAgICAgICAg
aWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCkKKyAg
ICAgICAgICAgIGlmIChtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlv
bjo6QXR0YWNobWVudCkKICAgICAgICAgICAgICAgICAmJiBpczxIVE1MQXR0YWNobWVudEVsZW1l
bnQ+KCplbGVtZW50KQogICAgICAgICAgICAgICAgICYmIGRvd25jYXN0PEhUTUxBdHRhY2htZW50
RWxlbWVudD4oKmVsZW1lbnQpLmZpbGUoKSkgewotICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUg
PSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFj
dGlvbkF0dGFjaG1lbnQpOworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUuYWRkKERyYWdTb3Vy
Y2VBY3Rpb246OkF0dGFjaG1lbnQpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50Owog
ICAgICAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAg
ICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikg
JiYgaXNFbmFibGVkQ29sb3JJbnB1dCgqZWxlbWVudCkpIHsKLSAgICAgICAgICAgICAgICBzdGF0
ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdT
b3VyY2VBY3Rpb25Db2xvcik7CisgICAgICAgICAgICBpZiAobV9kcmFnU291cmNlQWN0aW9uLmNv
bnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkNvbG9yKSAmJiBpc0VuYWJsZWRDb2xvcklucHV0KCpl
bGVtZW50KSkgeworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUuYWRkKERyYWdTb3VyY2VBY3Rp
b246OkNvbG9yKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAg
IH0KICNlbmRpZgpAQCAtODI4LDcgKzgyOCw3IEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpk
cmFnZ2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3RhCiAg
ICAgfQogCiAgICAgLy8gV2UgZWl0aGVyIGhhdmUgbm90aGluZyB0byBkcmFnIG9yIHdlIGhhdmUg
YSBzZWxlY3Rpb24gYW5kIHdlJ3JlIG5vdCBvdmVyIGEgZHJhZ2dhYmxlIGVsZW1lbnQuCi0gICAg
aWYgKHN0YXRlLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uICYmIG1fZHJhZ1NvdXJj
ZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pCisgICAgaWYgKHN0YXRlLnR5cGUu
Y29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSAmJiBtX2RyYWdTb3VyY2VBY3Rp
b24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSkKICAgICAgICAgcmV0dXJu
IHN0YXJ0RWxlbWVudDsKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTAxLDcgKzkwMSw3IEBA
IHN0YXRpYyBJbnRQb2ludCBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhGcmFtZSYgc3JjKQogICAg
IHJldHVybiBJbnRQb2ludCh4cG9zLCB5cG9zKTsKIH0KIAotdm9pZCBEcmFnQ29udHJvbGxlcjo6
cHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLCBEcmFnU291cmNlQWN0aW9uIGFjdGlv
biwgRWxlbWVudCYgZWxlbWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIGNvbnN0IElu
dFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdAordm9pZCBEcmFnQ29udHJvbGxlcjo6cHJlcGFyZUZv
ckRyYWdTdGFydChGcmFtZSYgc291cmNlLCBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gYWN0
aW9uTWFzaywgRWxlbWVudCYgZWxlbWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIGNv
bnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdAogewogI2lmICFQTEFURk9STShXSU4pCiAg
ICAgUmVmPEZyYW1lPiBwcm90ZWN0b3Ioc291cmNlKTsKQEAgLTkxMSw3ICs5MTEsNyBAQCB2b2lk
IERyYWdDb250cm9sbGVyOjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIERyYWdT
b3VyY2VBY3Rpb24gYWN0aW9uLAogCiAgICAgYXV0byYgcGFzdGVib2FyZCA9IGRhdGFUcmFuc2Zl
ci5wYXN0ZWJvYXJkKCk7CiAgICAgYXV0byYgZWRpdG9yID0gc291cmNlLmVkaXRvcigpOwotICAg
IGlmIChhY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgeworICAgIGlmIChhY3Rp
b25NYXNrID09IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbikgewogICAgICAgICBpZiAoZW5j
bG9zaW5nVGV4dEZvcm1Db250cm9sKHNvdXJjZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFy
dCgpKSkKICAgICAgICAgICAgIHBhc3RlYm9hcmQud3JpdGVQbGFpblRleHQoZWRpdG9yLnNlbGVj
dGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpLCBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFydFJlcGxhY2Up
OwogICAgICAgICBlbHNlCkBAIC05MjEsMTggKzkyMSwxOCBAQCB2b2lkIERyYWdDb250cm9sbGVy
OjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIERyYWdTb3VyY2VBY3Rpb24gYWN0
aW9uLAogCiAgICAgYXV0byogaW1hZ2UgPSBnZXRJbWFnZShlbGVtZW50KTsKICAgICBhdXRvIGlt
YWdlVVJMID0gaGl0VGVzdFJlc3VsdC0+YWJzb2x1dGVJbWFnZVVSTCgpOwotICAgIGlmICgoYWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSAmJiAhaW1hZ2VVUkwuaXNFbXB0eSgpICYmIGlt
YWdlICYmICFpbWFnZS0+aXNOdWxsKCkpIHsKKyAgICBpZiAoYWN0aW9uTWFzay5jb250YWlucyhE
cmFnU291cmNlQWN0aW9uOjpJbWFnZSkgJiYgIWltYWdlVVJMLmlzRW1wdHkoKSAmJiBpbWFnZSAm
JiAhaW1hZ2UtPmlzTnVsbCgpKSB7CiAgICAgICAgIGVkaXRvci53cml0ZUltYWdlVG9QYXN0ZWJv
YXJkKHBhc3RlYm9hcmQsIGVsZW1lbnQsIGltYWdlVVJMLCB7IH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgYXV0byBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC0+YWJzb2x1dGVMaW5r
VVJMKCk7Ci0gICAgaWYgKChhY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykgJiYgIWxpbmtV
UkwuaXNFbXB0eSgpICYmIHNvdXJjZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRp
c3BsYXkobGlua1VSTCkpCisgICAgaWYgKGFjdGlvbk1hc2suY29udGFpbnMoRHJhZ1NvdXJjZUFj
dGlvbjo6TGluaykgJiYgIWxpbmtVUkwuaXNFbXB0eSgpICYmIHNvdXJjZS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkobGlua1VSTCkpCiAgICAgICAgIGVkaXRvci5jb3B5
VVJMKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQtPnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNw
YWNlKCksIHBhc3RlYm9hcmQpOwogI2Vsc2UKICAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsg
b24gV2luZG93cyBieSBpbXBsZW1lbnRpbmcgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVi
b2FyZCBhbmQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkLgogICAgIFVOVVNFRF9QQVJB
TShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShhY3Rpb24pOworICAgIFVOVVNFRF9QQVJBTShh
Y3Rpb25NYXNrKTsKICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CiAgICAgVU5VU0VEX1BBUkFN
KGRhdGFUcmFuc2Zlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYWdPcmlnaW4pOwpAQCAtOTgzLDcg
Kzk4Myw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgQVNTRVJUKHN0YXRlLmRhdGFU
cmFuc2Zlcik7CiAKICAgICBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciA9ICpzdGF0ZS5kYXRh
VHJhbnNmZXI7Ci0gICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSB7
CisgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpIHsKICAgICAg
ICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgZGF0YVRyYW5zZmVyLmNyZWF0ZURyYWdJbWFnZShk
cmFnSW1hZ2VPZmZzZXQpIH07CiAgICAgICAgIC8vIFdlIGFsbG93IERIVE1ML0pTIHRvIHNldCB0
aGUgZHJhZyBpbWFnZSwgZXZlbiBpZiBpdHMgYSBsaW5rLCBpbWFnZSBvciB0ZXh0IHdlJ3JlIGRy
YWdnaW5nLgogICAgICAgICAvLyBUaGlzIGlzIGluIHRoZSBzcGlyaXQgb2YgdGhlIElFIEFQSSwg
d2hpY2ggYWxsb3dzIG92ZXJyaWRpbmcgb2YgcGFzdGVib2FyZCBkYXRhIGFuZCBEcmFnT3AuCkBA
IC05OTMsNyArOTkzLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgfQogICAg
IH0KIAotICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gfHwg
IWltYWdlVVJMLmlzRW1wdHkoKSB8fCAhbGlua1VSTC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoc3Rh
dGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24gfHwgIWltYWdlVVJMLmlzRW1w
dHkoKSB8fCAhbGlua1VSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gU2VsZWN0aW9uLCBpbWFn
ZSwgYW5kIGxpbmsgZHJhZ3MgcmVjZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBv
cGVyYXRpb25zIHRoYXQKICAgICAgICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAgICAvLyBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tP3Jldj00ODUyNiNMMzQzMApAQCAtMTAwNyw3ICsxMDA3LDcgQEAgYm9vbCBEcmFn
Q29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUs
IE9wdGlvblNldDxEcmEKIAogICAgIEludFJlY3QgZHJhZ0ltYWdlQm91bmRzOwogICAgIEltYWdl
KiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwotICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdT
b3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsKKyAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNl
QWN0aW9uOjpTZWxlY3Rpb24pIHsKICAgICAgICAgUGFzdGVib2FyZFdyaXRlckRhdGEgcGFzdGVi
b2FyZFdyaXRlckRhdGE7CiAKICAgICAgICAgaWYgKGhhc0RhdGEgPT0gSGFzTm9uRGVmYXVsdFBh
c3RlYm9hcmREYXRhOjpObykgewpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlv
blNldDxEcmEKIAogICAgICAgICAgICAgc3JjLmVkaXRvcigpLmRpZFdyaXRlU2VsZWN0aW9uVG9Q
YXN0ZWJvYXJkKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFn
U291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGRhdGFU
cmFuc2Zlcik7CisgICAgICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihE
cmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CiAg
ICAgICAgIGlmICghZHJhZ0ltYWdlKSB7CiAgICAgICAgICAgICBUZXh0SW5kaWNhdG9yRGF0YSB0
ZXh0SW5kaWNhdG9yOwogICAgICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgZGlzc29s
dmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKGNyZWF0ZURyYWdJbWFnZUZvclNlbGVjdGlvbihzcmMsIHRl
eHRJbmRpY2F0b3IpLCBEcmFnSW1hZ2VBbHBoYSkgfTsKQEAgLTEwNzIsNyArMTA3Miw3IEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUm
IHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIGRyYWdJdGVtLmltYWdlID0gV1RGTW92ZShk
cmFnSW1hZ2UpOwogICAgICAgICBkcmFnSXRlbS5kYXRhID0gV1RGTW92ZShwYXN0ZWJvYXJkV3Jp
dGVyRGF0YSk7CiAKLSAgICAgICAgYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0pLCBzcmMsIGRy
YWdPcmlnaW4sIG1vdXNlRHJhZ2dlZFBvaW50LCBkYXRhVHJhbnNmZXIsIERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pOworICAgICAgICBiZWdpbkRyYWcoV1RGTW92ZShkcmFnSXRlbSksIHNyYywg
ZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2ZlciwgRHJhZ1NvdXJjZUFj
dGlvbjo6U2VsZWN0aW9uKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMDgy
LDcgKzEwODIsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywg
Y29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgaW1hZ2UgJiYgIWlt
YWdlLT5pc051bGwoKSAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbklt
YWdlKSkgeworICAgIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpICYmIGltYWdlICYmICFpbWFnZS0+
aXNOdWxsKCkgJiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246
OkltYWdlKSkgewogICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgc3RhcnRpbmcgYSBkcmFnIGZv
ciBhbiBpbWFnZSB0aGF0IGNhbid0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uLgogICAgICAgICAvLyBU
aGlzIGlzIGFuIGVhcmx5IGRldGVjdGlvbiBmb3IgcHJvYmxlbXMgZW5jb3VudGVyZWQgbGF0ZXIg
dXBvbiBkcm9wLgogICAgICAgICBBU1NFUlQoIWltYWdlLT5maWxlbmFtZUV4dGVuc2lvbigpLmlz
RW1wdHkoKSk7CkBAIC0xMTAxLDcgKzExMDEsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQog
ICAgICAgICAgICAgICAgIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShkYXRhVHJhbnNmZXIsIGVs
ZW1lbnQsICFsaW5rVVJMLmlzRW1wdHkoKSA/IGxpbmtVUkwgOiBpbWFnZVVSTCwgaGl0VGVzdFJl
c3VsdC0+YWx0RGlzcGxheVN0cmluZygpKTsKICAgICAgICAgfQogCi0gICAgICAgIGNsaWVudCgp
LndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uSW1hZ2UsIGRyYWdP
cmlnaW4sIGRhdGFUcmFuc2Zlcik7CisgICAgICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1Nv
dXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uOjpJbWFnZSwgZHJhZ09yaWdpbiwgZGF0YVRyYW5z
ZmVyKTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkKICAgICAgICAgICAgIGRvSW1hZ2VEcmFn
KGVsZW1lbnQsIGRyYWdPcmlnaW4sIGhpdFRlc3RSZXN1bHQtPmltYWdlUmVjdCgpLCBzcmMsIG1f
ZHJhZ09mZnNldCwgc3RhdGUsIFdURk1vdmUoYXR0YWNobWVudEluZm8pKTsKQEAgLTExMTMsNyAr
MTExMyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkgJiYgKG1fZHJhZ1NvdXJjZUFjdGlv
biAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKSkgeworICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkg
JiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkxpbmspKSB7
CiAgICAgICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhIHBhc3RlYm9hcmRXcml0ZXJEYXRhOwogCiAg
ICAgICAgIFN0cmluZyB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSA9IGhpdFRl
c3RSZXN1bHQtPnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CkBAIC0xMTQ1LDcg
KzExNDUsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29u
c3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAgICAgICAgICAgIHNyYy5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNv
bnRlbnRzT2ZOb2RlKG5vZGUpKTsKICAgICAgICAgfQogCi0gICAgICAgIGNsaWVudCgpLndpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uTGluaywgZHJhZ09yaWdpbiwg
ZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0
aW9uKERyYWdTb3VyY2VBY3Rpb246OkxpbmssIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CiAg
ICAgICAgIGlmICghZHJhZ0ltYWdlKSB7CiAgICAgICAgICAgICBUZXh0SW5kaWNhdG9yRGF0YSB0
ZXh0SW5kaWNhdG9yOwogICAgICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0ltYWdlIHsgY3JlYXRl
RHJhZ0ltYWdlRm9yTGluayhlbGVtZW50LCBsaW5rVVJMLCB0ZXh0Q29udGVudFdpdGhTaW1wbGlm
aWVkV2hpdGVTcGFjZSwgdGV4dEluZGljYXRvciwgc3JjLnNldHRpbmdzKCkuZm9udFJlbmRlcmlu
Z01vZGUoKSwgbV9wYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpIH07CkBAIC0xMTY4LDEzICsxMTY4
LDEzIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBE
cmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIGRyYWdJdGVtLmltYWdlID0g
V1RGTW92ZShkcmFnSW1hZ2UpOwogICAgICAgICBkcmFnSXRlbS5kYXRhID0gV1RGTW92ZShwYXN0
ZWJvYXJkV3JpdGVyRGF0YSk7CiAKLSAgICAgICAgYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0p
LCBzcmMsIGRyYWdPcmlnaW4sIG1vdXNlRHJhZ2dlZFBvaW50LCBkYXRhVHJhbnNmZXIsIERyYWdT
b3VyY2VBY3Rpb25TZWxlY3Rpb24pOworICAgICAgICBiZWdpbkRyYWcoV1RGTW92ZShkcmFnSXRl
bSksIHNyYywgZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2ZlciwgRHJh
Z1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIGlmIChpczxIVE1MQXR0YWNo
bWVudEVsZW1lbnQ+KGVsZW1lbnQpICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VB
Y3Rpb25BdHRhY2htZW50KSB7CisgICAgaWYgKGlzPEhUTUxBdHRhY2htZW50RWxlbWVudD4oZWxl
bWVudCkgJiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkF0
dGFjaG1lbnQpKSB7CiAgICAgICAgIGF1dG8mIGF0dGFjaG1lbnQgPSBkb3duY2FzdDxIVE1MQXR0
YWNobWVudEVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICBhdXRvKiBhdHRhY2htZW50UmVuZGVy
ZXIgPSBhdHRhY2htZW50LnJlbmRlcmVyKCk7CiAKQEAgLTExOTYsNyArMTE5Niw3IEBAIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0
YXRlLCBPcHRpb25TZXQ8RHJhCiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Y2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25BdHRh
Y2htZW50LCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOworICAgICAgICBjbGllbnQoKS53aWxs
UGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudCwgZHJh
Z09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKICAgICAgICAgCiAgICAgICAgIGlmICghZHJhZ0ltYWdl
KSB7CiAgICAgICAgICAgICBUZXh0SW5kaWNhdG9yRGF0YSB0ZXh0SW5kaWNhdG9yOwpAQCAtMTIy
MCw3ICsxMjIwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogICAgIGJvb2wgaXNDb2xvckNvbnRyb2wgPSBpczxIVE1MSW5wdXRFbGVt
ZW50PihzdGF0ZS5zb3VyY2UpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpzdGF0ZS5z
b3VyY2UpLmlzQ29sb3JDb250cm9sKCk7Ci0gICAgaWYgKGlzQ29sb3JDb250cm9sICYmIG1fZHJh
Z1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikgeworICAgIGlmIChpc0NvbG9y
Q29udHJvbCAmJiBtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6
Q29sb3IpKSB7CiAgICAgICAgIGF1dG8mIGlucHV0ID0gZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKnN0YXRlLnNvdXJjZSk7CiAgICAgICAgIGF1dG8gY29sb3IgPSBpbnB1dC52YWx1ZUFzQ29s
b3IoKTsKIApAQCAtMTIzMSwxNSArMTIzMSwxNSBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQog
ICAgICAgICBkcmFnSW1hZ2VPZmZzZXQgPSBJbnRQb2ludCB7IGRyYWdJbWFnZVNpemUoZHJhZ0lt
YWdlLmdldCgpKSB9OwogICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvckRIVE1MRHJhZyhtb3Vz
ZURyYWdnZWRQb2ludCwgZHJhZ09yaWdpbiwgZHJhZ0ltYWdlT2Zmc2V0LCBmYWxzZSk7CiAKLSAg
ICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b25Db2xvciwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgY2xpZW50KCkud2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OkNvbG9yLCBkcmFnT3Jp
Z2luLCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1h
Z2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBzcmMsIHN0YXRlLCB7IH0pOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3Vy
Y2VBY3Rpb25ESFRNTCAmJiBkcmFnSW1hZ2UpIHsKLSAgICAgICAgQVNTRVJUKG1fZHJhZ1NvdXJj
ZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7Ci0gICAgICAgIGNsaWVudCgpLndpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uREhUTUwsIGRyYWdPcmlnaW4s
IGRhdGFUcmFuc2Zlcik7CisgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbjo6
REhUTUwgJiYgZHJhZ0ltYWdlKSB7CisgICAgICAgIEFTU0VSVChtX2RyYWdTb3VyY2VBY3Rpb24u
Y29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpKTsKKyAgICAgICAgY2xpZW50KCkud2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OkRIVE1MLCBkcmFnT3Jp
Z2luLCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkb1N5c3RlbURyYWcoV1RGTW92ZShkcmFnSW1h
Z2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBzcmMsIHN0YXRlLCB7IH0pOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CkBAIC0xMzI5LDcgKzEzMjksOCBAQCB2b2lkIERyYWdDb250cm9sbGVy
Ojpkb1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywg
Y29ucwogCiAgICAgRHJhZ0l0ZW0gaXRlbTsKICAgICBpdGVtLmltYWdlID0gV1RGTW92ZShpbWFn
ZSk7Ci0gICAgaXRlbS5zb3VyY2VBY3Rpb24gPSBzdGF0ZS50eXBlOworICAgIEFTU0VSVChzdGF0
ZS50eXBlLmhhc0V4YWN0bHlPbmVCaXRTZXQoKSk7CisgICAgaXRlbS5zb3VyY2VBY3Rpb24gPSBz
dGF0ZS50eXBlLmFzU2luZ2xlVmFsdWUoKTsKICAgICBpdGVtLnByb21pc2VkQXR0YWNobWVudElu
Zm8gPSBXVEZNb3ZlKHByb21pc2VkQXR0YWNobWVudEluZm8pOwogCiAgICAgYXV0byBldmVudFBv
c2l0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9v
dFZpZXcoZXZlbnRQb3MpOwpAQCAtMTMzOSw3ICsxMzQwLDcgQEAgdm9pZCBEcmFnQ29udHJvbGxl
cjo6ZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2Ms
IGNvbnMKICAgICBpdGVtLmRyYWdMb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMgPSB2aWV3UHJv
dGVjdG9yLT5jb250ZW50c1RvV2luZG93KGl0ZW0uZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRp
bmF0ZXMpOwogICAgIGlmIChhdXRvIGVsZW1lbnQgPSBzdGF0ZS5zb3VyY2UpIHsKICAgICAgICAg
YXV0byBkYXRhVHJhbnNmZXJJbWFnZUVsZW1lbnQgPSBzdGF0ZS5kYXRhVHJhbnNmZXItPmRyYWdJ
bWFnZUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MKSB7CisgICAgICAgIGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb246OkRI
VE1MKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgZHJhZyBpbWFnZSBoYXMgYmVlbiBjdXN0b21p
emVkLCBmYWxsIGJhY2sgdG8gcG9zaXRpb25pbmcgdGhlIHByZXZpZXcgcmVsYXRpdmUgdG8gdGhl
IGRyYWcgZXZlbnQgbG9jYXRpb24uCiAgICAgICAgICAgICBJbnRTaXplIGRyYWdQcmV2aWV3U2l6
ZTsKICAgICAgICAgICAgIGlmIChkYXRhVHJhbnNmZXJJbWFnZUVsZW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggZWE0OTllMGViZDYuLjkyMjRhYjIwNmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC03NiwxMiArNzYsMTIgQEAgcHVibGlj
OgogICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJh
Z2dpbmdJbWFnZVVSTDsgfQogICAgIHZvaWQgc2V0RHJhZ09mZnNldChjb25zdCBJbnRQb2ludCYg
b2Zmc2V0KSB7IG1fZHJhZ09mZnNldCA9IG9mZnNldDsgfQogICAgIGNvbnN0IEludFBvaW50JiBk
cmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0OyB9Ci0gICAgRHJhZ1NvdXJj
ZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnU291cmNlQWN0
aW9uOyB9CisgICAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGRyYWdTb3VyY2VBY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247IH0KICAgICBEcmFnSGFuZGxpbmdN
ZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnSGFuZGxpbmdN
ZXRob2Q7IH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudFVuZGVyTW91c2UoKSBjb25zdCB7IHJl
dHVybiBtX2RvY3VtZW50VW5kZXJNb3VzZS5nZXQoKTsgfQogICAgIE9wdGlvblNldDxEcmFnRGVz
dGluYXRpb25BY3Rpb24+IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBjb25zdCB7IHJldHVy
biBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7IH0KLSAgICBEcmFnU291cmNlQWN0aW9uIGRl
bGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCk7Cisg
ICAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihj
b25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCk7CiAKICAgICBFbGVtZW50KiBkcmFnZ2FibGVF
bGVtZW50KGNvbnN0IEZyYW1lKiwgRWxlbWVudCogc3RhcnQsIGNvbnN0IEludFBvaW50JiwgRHJh
Z1N0YXRlJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRW5kZWQoKTsKQEAg
LTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluYWxpemVE
cm9wcGVkSW1hZ2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZl
Y3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcyk7CiAKLSAgICB2b2lkIHByZXBhcmVGb3JEcmFnU3Rh
cnQoRnJhbWUmIHNvdXJjZUZyYW1lLCBEcmFnU291cmNlQWN0aW9uLCBFbGVtZW50JiBzb3VyY2VF
bGVtZW50LCBEYXRhVHJhbnNmZXImLCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikgY29uc3Q7
CisgICAgdm9pZCBwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2VGcmFtZSwgT3B0aW9u
U2V0PERyYWdTb3VyY2VBY3Rpb24+LCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBEYXRhVHJhbnNm
ZXImLCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikgY29uc3Q7CiAgICAgYm9vbCBzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRy
YWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNvbnN0
IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKIApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZh
dGU6CiAgICAgRHJhZ0hhbmRsaW5nTWV0aG9kIG1fZHJhZ0hhbmRsaW5nTWV0aG9kIHsgRHJhZ0hh
bmRsaW5nTWV0aG9kOjpOb25lIH07CiAKICAgICBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7Ci0gICAgRHJhZ1NvdXJjZUFjdGlvbiBt
X2RyYWdTb3VyY2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9uTm9uZSB9OworICAgIE9wdGlvblNl
dDxEcmFnU291cmNlQWN0aW9uPiBtX2RyYWdTb3VyY2VBY3Rpb247CiAgICAgYm9vbCBtX2RpZElu
aXRpYXRlRHJhZyB7IGZhbHNlIH07CiAgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG1fc291
cmNlRHJhZ09wZXJhdGlvbk1hc2s7IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3Rh
cnRzIGZyb20gYSBtb3VzZSBkb3duIHdpdGhpbiBXZWJLaXQuCiAgICAgSW50UG9pbnQgbV9kcmFn
T2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKaW5kZXggNmQxNjI1OTAwZTMuLjJiYzAyY2Uy
ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RydWN0IERyYWdTdGF0ZSB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IHNvdXJj
ZTsgLy8gRWxlbWVudCB0aGF0IG1heSBiZSBhIGRyYWcgc291cmNlLCBmb3IgdGhlIGN1cnJlbnQg
bW91c2UgZ2VzdHVyZS4KICAgICBib29sIHNob3VsZERpc3BhdGNoRXZlbnRzOwotICAgIERyYWdT
b3VyY2VBY3Rpb24gdHlwZTsKKyAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gdHlwZTsK
ICAgICBSZWZQdHI8RGF0YVRyYW5zZmVyPiBkYXRhVHJhbnNmZXI7IC8vIFVzZWQgb24gb25seSB0
aGUgc291cmNlIHNpZGUgb2YgZHJhZ2dpbmcuCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggMTRiY2M1YjhmMmUuLmEzNmEzZjFkYjg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMTkwLDE1ICsxMTkwLDE1IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpwYW5TY3JvbGxJblByb2dyZXNzKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi1EcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFj
dGlvbnNBbGxvd2VkKCkgY29uc3QKK09wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBFdmVudEhh
bmRsZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNvbnN0CiB7CiAgICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwogICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJu
IERyYWdTb3VyY2VBY3Rpb25Ob25lOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgRnJhbWVW
aWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQotICAgICAgICByZXR1
cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1
cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24odmlldy0+
Y29udGVudHNUb1Jvb3RWaWV3KG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbikpOwogfQpAQCAt
MzY0NywzNSArMzY0NywzNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNl
ZWRlZChjb25zdCBJbnRQb2ludCYgZmxvYXREcmFnVmlld3BvcnRMb2NhdAogCiBib29sIEV2ZW50
SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBGbG9hdFBvaW50JiBkcmFnVmll
d3BvcnRMb2NhdGlvbikgY29uc3QKIHsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb24gPSBkcmFnU3Rh
dGUoKS50eXBlLmFzU2luZ2xlVmFsdWUoKTsKKyAgICBBU1NFUlQoZHJhZ09wZXJhdGlvbik7CiAg
ICAgaW50IHRocmVzaG9sZCA9IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKLSAgICBzd2l0Y2ggKGRy
YWdTdGF0ZSgpLnR5cGUpIHsKLSAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb246Ci0g
ICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlzdGVyZXNpczsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBEcmFnU291cmNlQWN0aW9uSW1hZ2U6CisgICAgaWYgKGRyYWdPcGVyYXRpb24pIHsK
KyAgICAgICAgc3dpdGNoICgqZHJhZ09wZXJhdGlvbikgeworICAgICAgICBjYXNlIERyYWdTb3Vy
Y2VBY3Rpb246OlNlbGVjdGlvbjoKKyAgICAgICAgICAgIHRocmVzaG9sZCA9IFRleHREcmFnSHlz
dGVyZXNpczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERyYWdTb3VyY2VBY3Rp
b246OkltYWdlOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgY2FzZSBEcmFn
U291cmNlQWN0aW9uQXR0YWNobWVudDoKKyAgICAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpB
dHRhY2htZW50OgogI2VuZGlmCi0gICAgICAgIHRocmVzaG9sZCA9IEltYWdlRHJhZ0h5c3RlcmVz
aXM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkxpbms6Ci0gICAg
ICAgIHRocmVzaG9sZCA9IExpbmtEcmFnSHlzdGVyZXNpczsKLSAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB0aHJlc2hvbGQgPSBJbWFnZURyYWdIeXN0ZXJlc2lzOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6TGluazoKKyAgICAgICAgICAgIHRo
cmVzaG9sZCA9IExpbmtEcmFnSHlzdGVyZXNpczsKKyAgICAgICAgICAgIGJyZWFrOwogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yOgot
ICAgICAgICB0aHJlc2hvbGQgPSBDb2xvckRyYWdIeXN0ZXJzaXM7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246OkNvbG9yOgorICAgICAgICAgICAgdGhyZXNo
b2xkID0gQ29sb3JEcmFnSHlzdGVyc2lzOworICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAg
ICBjYXNlIERyYWdTb3VyY2VBY3Rpb25ESFRNTDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBE
cmFnU291cmNlQWN0aW9uTm9uZToKLSAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25Bbnk6Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246
OkRIVE1MOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAg
ICByZXR1cm4gbW91c2VNb3ZlbWVudEV4Y2VlZHNUaHJlc2hvbGQoZHJhZ1ZpZXdwb3J0TG9jYXRp
b24sIHRocmVzaG9sZCk7CiB9Ci0gICAgCisKIHZvaWQgRXZlbnRIYW5kbGVyOjppbnZhbGlkYXRl
RGF0YVRyYW5zZmVyKCkKIHsKICAgICBpZiAoIWRyYWdTdGF0ZSgpLmRhdGFUcmFuc2ZlcikKQEAg
LTM3MTUsNyArMzcxNiw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkaWRTdGFydERyYWcoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBPcHRpb25hbDxTaW1wbGVSYW5nZT4gZHJhZ2dlZENvbnRlbnRS
YW5nZTsKLSAgICBpZiAoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rp
b24pCisgICAgaWYgKGRyYWdTdGF0ZSgpLnR5cGUuY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6
U2VsZWN0aW9uKSkKICAgICAgICAgZHJhZ2dlZENvbnRlbnRSYW5nZSA9IG1fZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBlbHNlCiAgICAgICAg
IGRyYWdnZWRDb250ZW50UmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKCpkcmFnU291cmNl
KTsKQEAgLTM3NzUsMTEgKzM3NzYsNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFn
U3RhcnRFdmVudE9uU291cmNlRWxlbWVudChEYXRhVHJhbnNmZXImIGRhdGFUcmFucwogICAgIHJl
dHVybiAhZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50LCAqZHJh
Z1N0YXRlKCkuc291cmNlLCBtX21vdXNlRG93bkV2ZW50LCBkYXRhVHJhbnNmZXIpICYmICFtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7CiB9CiAKLXN0
YXRpYyBib29sIEV4YWN0bHlPbmVCaXRTZXQoRHJhZ1NvdXJjZUFjdGlvbiBuKQotewotICAgIHJl
dHVybiBuICYmICEobiAmIChuIC0gMSkpOwotfQotCiBSZWZQdHI8RWxlbWVudD4gRXZlbnRIYW5k
bGVyOjpkcmFnZ2VkRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRyYWdTdGF0ZSgpLnNv
dXJjZTsKQEAgLTM4MDMsNyArMzc5OSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFn
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAg
CiAgICAgLy8gQ2FyZWZ1bCB0aGF0IHRoZSBkcmFnIHN0YXJ0aW5nIGxvZ2ljIHN0YXlzIGluIHN5
bmMgd2l0aCBldmVudE1heVN0YXJ0RHJhZygpLgogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0
RHJhZyAmJiAhZHJhZ1N0YXRlKCkuc291cmNlKSB7Ci0gICAgICAgIGRyYWdTdGF0ZSgpLnNob3Vs
ZERpc3BhdGNoRXZlbnRzID0gKHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpICYgRHJh
Z1NvdXJjZUFjdGlvbkRIVE1MKTsKKyAgICAgICAgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hF
dmVudHMgPSB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKS5jb250YWlucyhEcmFnU291
cmNlQWN0aW9uOjpESFRNTCk7CiAKICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0
aGF0IHdhbnRzIHRvIGJlIGRyYWdnZWQuCiAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1f
bW91c2VEb3duQ29udGVudHNQb3NpdGlvbik7CkBAIC0zODE0LDE3ICszODEwLDE3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgIGlmICghZHJhZ1N0YXRlKCkuc291cmNlKQogICAg
ICAgICAgICAgbV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVudCBp
cyBkcmFnZ2FibGUKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9kcmFnTWF5U3RhcnRTZWxl
Y3Rpb25JbnN0ZWFkID0gKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uKTsKKyAgICAgICAgICAgIG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVhZCA9IGRyYWdT
dGF0ZSgpLnR5cGUuY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKICAgICB9
CiAgICAgCiAgICAgLy8gRm9yIGRyYWdzIHN0YXJ0aW5nIGluIHRoZSBzZWxlY3Rpb24sIHRoZSB1
c2VyIG11c3Qgd2FpdCBiZXR3ZWVuIHRoZSBtb3VzZWRvd24gYW5kIG1vdXNlZHJhZywKICAgICAv
LyBvciBlbHNlIHdlIGJhaWwgb24gdGhlIGRyYWdnaW5nIHN0dWZmIGFuZCBhbGxvdyBzZWxlY3Rp
b24gdG8gb2NjdXIKLSAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgbV9kcmFnTWF5
U3RhcnRTZWxlY3Rpb25JbnN0ZWFkICYmIChkcmFnU3RhdGUoKS50eXBlICYgRHJhZ1NvdXJjZUFj
dGlvblNlbGVjdGlvbikgJiYgZXZlbnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3du
VGltZXN0YW1wIDwgVGV4dERyYWdEZWxheSkgeworICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0
RHJhZyAmJiBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbkluc3RlYWQgJiYgZHJhZ1N0YXRlKCkudHlw
ZS5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pICYmIGV2ZW50LmV2ZW50KCku
dGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsKICAg
ICAgICAgQVNTRVJUKGV2ZW50LmV2ZW50KCkudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQpOwotICAgICAgICBpZiAoKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9u
SW1hZ2UpKSB7CisgICAgICAgIGlmIChkcmFnU3RhdGUoKS50eXBlLmNvbnRhaW5zKERyYWdTb3Vy
Y2VBY3Rpb246OkltYWdlKSkgewogICAgICAgICAgICAgLy8gLi4uIHVubGVzcyB0aGUgbW91c2Ug
aXMgb3ZlciBhbiBpbWFnZSwgdGhlbiB3ZSBzdGFydCBkcmFnZ2luZyBqdXN0IHRoZSBpbWFnZQot
ICAgICAgICAgICAgZHJhZ1N0YXRlKCkudHlwZSA9IERyYWdTb3VyY2VBY3Rpb25JbWFnZTsKLSAg
ICAgICAgfSBlbHNlIGlmICghKGRyYWdTdGF0ZSgpLnR5cGUgJiAoRHJhZ1NvdXJjZUFjdGlvbkRI
VE1MIHwgRHJhZ1NvdXJjZUFjdGlvbkxpbmspKSkgeworICAgICAgICAgICAgZHJhZ1N0YXRlKCku
dHlwZSA9IERyYWdTb3VyY2VBY3Rpb246OkltYWdlOworICAgICAgICB9IGVsc2UgaWYgKCFkcmFn
U3RhdGUoKS50eXBlLmNvbnRhaW5zQW55KHsgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsIERyYWdT
b3VyY2VBY3Rpb246OkxpbmsgfSkpIHsKICAgICAgICAgICAgIC8vIC4uLiBidXQgb25seSBiYWls
IGlmIHdlJ3JlIG5vdCBvdmVyIGFuIHVuc2VsZWN0YWJsZSBlbGVtZW50LgogICAgICAgICAgICAg
bV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKICAgICAgICAgICAgIGRyYWdTdGF0ZSgp
LnNvdXJjZSA9IG51bGxwdHI7CkBAIC0zODQ1LDExICszODQxLDE1IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50
LCBDaGVja0RyCiAgICAgICAgIHJldHVybiAhbW91c2VEb3duTWF5U3RhcnRTZWxlY3QoKSAmJiAh
bV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGw7CiAgICAgQVNTRVJUKGRyYWdTdGF0ZSgpLnNv
dXJjZSk7CiAKLSAgICBpZiAoIUV4YWN0bHlPbmVCaXRTZXQoZHJhZ1N0YXRlKCkudHlwZSkpIHsK
LSAgICAgICAgQVNTRVJUKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uKTsKLSAgICAgICAgQVNTRVJUKEV4YWN0bHlPbmVCaXRTZXQoc3RhdGljX2Nhc3Q8RHJhZ1Nv
dXJjZUFjdGlvbj4oZHJhZ1N0YXRlKCkudHlwZSAmIH5EcmFnU291cmNlQWN0aW9uU2VsZWN0aW9u
KSkpOworICAgIGlmICghZHJhZ1N0YXRlKCkudHlwZS5oYXNFeGFjdGx5T25lQml0U2V0KCkpIHsK
KyAgICAgICAgQVNTRVJUKGRyYWdTdGF0ZSgpLnR5cGUuY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlv
bjo6U2VsZWN0aW9uKSk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBhdXRvIGFjdGlvbk1hc2tD
b3B5ID0gZHJhZ1N0YXRlKCkudHlwZTsKKyAgICAgICAgYWN0aW9uTWFza0NvcHkucmVtb3ZlKERy
YWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbik7CisgICAgICAgIEFTU0VSVChhY3Rpb25NYXNrQ29w
eS5oYXNFeGFjdGx5T25lQml0U2V0KCkpOworI2VuZGlmCiAKLSAgICAgICAgZHJhZ1N0YXRlKCku
dHlwZSA9IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb247CisgICAgICAgIGRyYWdTdGF0ZSgpLnR5
cGUgPSBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb247CiAgICAgfQogCiAgICAgLy8gV2UgYXJl
IHN0YXJ0aW5nIGEgdGV4dC9pbWFnZS91cmwgZHJhZywgc28gdGhlIGN1cnNvciBzaG91bGQgYmUg
YW4gYXJyb3cKQEAgLTM4ODEsNyArMzg4MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVE
cmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAg
ICAgICAgICAgICBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBIYXNOb25EZWZhdWx0UGFz
dGVib2FyZERhdGE6OlllczsKICAgICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5tb3Zl
RHJhZ1N0YXRlKFdURk1vdmUoZHJhZ1N0YXJ0RGF0YVRyYW5zZmVyKSk7CiAKLSAgICAgICAgaWYg
KGRyYWdTdGF0ZSgpLnNvdXJjZSAmJiBkcmFnU3RhdGUoKS50eXBlID09IERyYWdTb3VyY2VBY3Rp
b25ESFRNTCAmJiAhZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5oYXNEcmFnSW1hZ2UoKSkgewor
ICAgICAgICBpZiAoZHJhZ1N0YXRlKCkuc291cmNlICYmIGRyYWdTdGF0ZSgpLnR5cGUgPT0gRHJh
Z1NvdXJjZUFjdGlvbjo6REhUTUwgJiYgIWRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+aGFzRHJh
Z0ltYWdlKCkpIHsKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLnNvdXJjZS0+ZG9jdW1lbnQoKS51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBk
cmFnU3RhdGUoKS5zb3VyY2UtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGFi
c29sdXRlUG9zaXRpb24gPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAppbmRleCAyN2NhZTYxZWQxMS4uZjdhMTZjMWUwNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDY1LDcgKzQ2NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZl
bnQmKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRHJhZ1NvdXJjZUFjdGlvbiB1
cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8RHJh
Z1NvdXJjZUFjdGlvbj4gdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3Q7CiAg
ICAgYm9vbCBzdXBwb3J0c1NlbGVjdGlvblVwZGF0ZXNPbk1vdXNlRHJhZygpIGNvbnN0OwogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCmluZGV4IGU1ODU5YzQyY2Y5Li4xZDFm
MmE3ODk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCkBAIC00MSw3ICs0MSw3IEBA
IHN0cnVjdCBEcmFnSXRlbSBmaW5hbCB7CiAgICAgLy8gV2hlcmUgdGhlIGltYWdlIHNob3VsZCBi
ZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjdXJzb3IuCiAgICAgRmxvYXRQb2ludCBpbWFn
ZUFuY2hvclBvaW50OwogCi0gICAgRHJhZ1NvdXJjZUFjdGlvbiBzb3VyY2VBY3Rpb24geyBEcmFn
U291cmNlQWN0aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPERyYWdTb3VyY2VBY3Rpb24+IHNvdXJj
ZUFjdGlvbjsKICAgICBJbnRQb2ludCBldmVudFBvc2l0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7
CiAgICAgSW50UG9pbnQgZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CiAgICAgSW50
UG9pbnQgZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlczsKQEAgLTYxLDcgKzYxLDcgQEAg
dm9pZCBEcmFnSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgLy8g
RklYTUUoMTczODE1KTogV2Ugc2hvdWxkIGVuY29kZSBhbmQgZGVjb2RlIFBhc3RlYm9hcmRXcml0
ZXJEYXRhIGFuZCBwbGF0Zm9ybSBkcmFnIGltYWdlIGRhdGEKICAgICAvLyBoZXJlIHRvbywgYXMg
cGFydCBvZiBtb3Zpbmcgb2ZmIG9mIHRoZSBsZWdhY3kgZHJhZ2dpbmcgY29kZXBhdGguCi0gICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKHNvdXJjZUFjdGlvbik7CisgICAgZW5jb2RlciA8PCBzb3VyY2VB
Y3Rpb247CiAgICAgZW5jb2RlciA8PCBpbWFnZUFuY2hvclBvaW50IDw8IGV2ZW50UG9zaXRpb25J
bkNvbnRlbnRDb29yZGluYXRlcyA8PCBkcmFnTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyA8
PCBkcmFnTG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzIDw8IHRpdGxlIDw8IHVybCA8PCBkcmFn
UHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGJvb2wgaGFzSW5kaWNhdG9y
RGF0YSA9IGltYWdlLmhhc0luZGljYXRvckRhdGEoKTsKICAgICBlbmNvZGVyIDw8IGhhc0luZGlj
YXRvckRhdGE7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRHJhZ0l0ZW06OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIGJvb2wgRHJhZ0l0ZW06
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFnSXRlbSYgcmVzdWx0KQogewotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5zb3VyY2VBY3Rpb24pKQorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LnNvdXJjZUFjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbWFnZUFuY2hvclBvaW50KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5k
ZXggMWJmZDI4MjU5ZjguLjYyYzUwOGUzMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHkKQEAgLTU5MSw2ICs1OTEsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0
eXBlKToKICAgICAgICAgJ1dlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QnOiBb
JyJEb2N1bWVudEVkaXRpbmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJDb3JlOjpEcmFnSGFu
ZGxpbmdNZXRob2QnOiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uJzogWyc8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPiddLAorICAgICAg
ICAnV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbic6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4n
XSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMnOiBbJzxXZWJDb3JlL0pTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0
dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpT
aGFyZURhdGFXaXRoUGFyc2VkVVJMJzogWyc8V2ViQ29yZS9TaGFyZURhdGEuaD4nXSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDcyMmI5ZWRkZTQuLjQ2MGE4Zjk5
OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODI3LDggKzgy
Nyw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHZvaWQgZGlkSGFu
ZGxlRHJhZ1N0YXJ0UmVxdWVzdChib29sIHN0YXJ0ZWQpOwogICAgIHZvaWQgZGlkSGFuZGxlQWRk
aXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCk7Ci0gICAgdm9pZCByZXF1ZXN0RHJh
Z1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
IGFsbG93ZWRBY3Rpb25zKTsKLSAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFn
U2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
biBhbGxvd2VkQWN0aW9ucyk7CisgICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dl
ZEFjdGlvbnNNYXNrKTsKKyAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vz
c2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzayk7CiAgICAgdm9pZCBpbnNlcnREcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFNpemU+JiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCBPcHRpb25hbDxX
ZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KTsKICAgICB2b2lkIHdpbGxSZWNl
aXZlRWRpdERyYWdTbmFwc2hvdCgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUVkaXREcmFnU25hcHNo
b3QoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAppbmRl
eCBkMmUwYjkwOWZlYy4uYjdmODdiNDQ3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVj
dCBEcmFnU291cmNlU3RhdGUgewotICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9u
IHsgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbk5vbmUgfTsKKyAgICBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWN0aW9uOwogICAgIENHUG9pbnQgYWRqdXN0ZWRPcmlnaW4g
eyBDR1BvaW50WmVybyB9OwogICAgIENHUmVjdCBkcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nv
b3JkaW5hdGVzIHsgQ0dSZWN0WmVybyB9OwogICAgIFJldGFpblB0cjxVSUltYWdlPiBpbWFnZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlLm1tCmluZGV4IGZmNGU0ZmQxNGYxLi45MDJkYjhlNGM2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
Lm1tCkBAIC05OSwxMSArOTksMTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlRHJhZ0ltYWdlVG9D
cmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBEcmFnU291cmNlU3RhdGUKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgaWYgKHNv
dXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQ29sb3IpCisgICAgaWYgKHNvdXJjZS5hY3Rp
b24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHNvdXJjZS5hY3Rpb24gJiAoRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MIHwgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKKyAgICByZXR1cm4gc291cmNlLmFjdGlv
bi5jb250YWluc0FueSh7IERyYWdTb3VyY2VBY3Rpb246OkRIVE1MLCBEcmFnU291cmNlQWN0aW9u
OjpJbWFnZSB9KTsKIH0KIAogc3RhdGljIGJvb2wgc2hvdWxkVXNlVmlzaWJsZVBhdGhUb0NyZWF0
ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNlKQpAQCAt
MTEyLDcgKzExMiw3IEBAIHN0YXRpYyBib29sIHNob3VsZFVzZVZpc2libGVQYXRoVG9DcmVhdGVQ
cmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBEcmFnU291cmNlU3RhCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIGlmIChzb3VyY2UuYWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yKQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRh
aW5zKERyYWdTb3VyY2VBY3Rpb246OkNvbG9yKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5k
aWYKIApAQCAtMTI0LDExICsxMjQsMTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlVGV4dEluZGlj
YXRvclRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVMKICAgICBp
ZiAoIXNvdXJjZS5pbmRpY2F0b3JEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoc291cmNlLmFjdGlvbiAmIChEcmFnU291cmNlQWN0aW9uTGluayB8IERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pKQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zQW55KHsgRHJhZ1Nv
dXJjZUFjdGlvbjo6TGluaywgRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uIH0pKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgaWYg
KHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCkKKyAgICBpZiAoc291
cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50KSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIApAQCAtMTQxLDExICsxNDEsMTEgQEAgc3RhdGljIGJv
b2wgY2FuVXBkYXRlUHJldmlld0ZvckFjdGl2ZURyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVN0
YXRlJiBzb3VyY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0NPTE9SKQotICAgIGlmIChzb3VyY2UuYWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNvbG9y
KQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkNvbG9y
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgIGlmIChzb3VyY2UuYWN0aW9u
ICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmsgJiYgIShzb3VyY2UuYWN0aW9uICYgRHJhZ1NvdXJjZUFj
dGlvbkltYWdlKSkKKyAgICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0
aW9uOjpMaW5rKSAmJiAhc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpJ
bWFnZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTY3
LDcgKzE2Nyw3IEBAIE9wdGlvbmFsPERyYWdTb3VyY2VTdGF0ZT4gRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlOjphY3RpdmVEcmFnU291cmNlRm9ySXRlbShVSURyCiBib29sIERyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZTo6YW55QWN0aXZlRHJhZ1NvdXJjZUlzKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24gYWN0aW9uKSBjb25zdAogewogICAgIGZvciAoYXV0byYgc291cmNlIDogbV9hY3RpdmVEcmFn
U291cmNlcykgewotICAgICAgICBpZiAoc291cmNlLmFjdGlvbiAmIGFjdGlvbikKKyAgICAgICAg
aWYgKHNvdXJjZS5hY3Rpb24uY29udGFpbnMoYWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBE
cmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnN0YWdlRHJhZ0l0ZW0oY29uc3QgRHJhZ0l0ZW0mIGl0
ZW0sIFVJSW1hZ2UgKmRyYWcKIAogICAgIG1fYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQgPSBp
dGVtLmV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKICAgICBtX3N0YWdlZERyYWdT
b3VyY2UgPSB7ewotICAgICAgICBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihpdGVtLnNv
dXJjZUFjdGlvbiksCisgICAgICAgIGl0ZW0uc291cmNlQWN0aW9uLAogICAgICAgICBpdGVtLmV2
ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlcywKICAgICAgICAgaXRlbS5kcmFnUHJldmll
d0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzLAogICAgICAgICBkcmFnSW1hZ2UsCkBAIC0zNTcs
NyArMzU3LDcgQEAgdm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnN0YWdlRHJhZ0l0ZW0o
Y29uc3QgRHJhZ0l0ZW0mIGl0ZW0sIFVJSW1hZ2UgKmRyYWcKIAogYm9vbCBEcmFnRHJvcEludGVy
YWN0aW9uU3RhdGU6Omhhc1N0YWdlZERyYWdTb3VyY2UoKSBjb25zdAogewotICAgIHJldHVybiBt
X3N0YWdlZERyYWdTb3VyY2UgJiYgc3RhZ2VkRHJhZ1NvdXJjZSgpLmFjdGlvbiAhPSBXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uTm9uZTsKKyAgICByZXR1cm4gbV9zdGFnZWREcmFnU291cmNlICYm
ICFzdGFnZWREcmFnU291cmNlKCkuYWN0aW9uLmlzRW1wdHkoKTsKIH0KIAogdm9pZCBEcmFnRHJv
cEludGVyYWN0aW9uU3RhdGU6OmNsZWFyU3RhZ2VkRHJhZ1NvdXJjZShEaWRCZWNvbWVBY3RpdmUg
ZGlkQmVjb21lQWN0aXZlKQpAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlOjp1cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCkKICAgICAgICAg
aWYgKCFkcmFnSXRlbSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzb3Vy
Y2UuYWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspIHsKKyAgICAgICAgaWYgKHNvdXJjZS5h
Y3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6TGluaykpIHsKICAgICAgICAgICAgIGRy
YWdJdGVtLnByZXZpZXdQcm92aWRlciA9IFt0aXRsZSA9IHJldGFpblB0cigoTlNTdHJpbmcgKilz
b3VyY2UubGlua1RpdGxlKSwgdXJsID0gcmV0YWluUHRyKChOU1VSTCAqKXNvdXJjZS5saW5rVVJM
KSwgY2VudGVyID0gc291cmNlLmFkanVzdGVkT3JpZ2luXSAoKSAtPiBVSURyYWdQcmV2aWV3ICog
ewogICAgICAgICAgICAgICAgIFVJVVJMRHJhZ1ByZXZpZXdWaWV3ICpwcmV2aWV3VmlldyA9IFtV
SVVSTERyYWdQcmV2aWV3VmlldyB2aWV3V2l0aFRpdGxlOnRpdGxlLmdldCgpIFVSTDp1cmwuZ2V0
KCldOwogICAgICAgICAgICAgICAgIHByZXZpZXdWaWV3LmNlbnRlciA9IGNlbnRlcjsKQEAgLTQw
Miw3ICs0MDIsNyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmll
d3NGb3JBY3RpdmVEcmFnU291cmNlcygpCiAgICAgICAgICAgICB9OwogICAgICAgICB9CiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgICAgIGVsc2UgaWYgKHNvdXJjZS5hY3Rpb24g
JiBEcmFnU291cmNlQWN0aW9uQ29sb3IpIHsKKyAgICAgICAgZWxzZSBpZiAoc291cmNlLmFjdGlv
bi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpDb2xvcikpIHsKICAgICAgICAgICAgIGRyYWdJ
dGVtLnByZXZpZXdQcm92aWRlciA9IFtpbWFnZSA9IHNvdXJjZS5pbWFnZV0gKCkgLT4gVUlEcmFn
UHJldmlldyAqIHsKICAgICAgICAgICAgICAgICBVSUltYWdlVmlldyAqaW1hZ2VWaWV3ID0gW1tb
VUlJbWFnZVZpZXcgYWxsb2NdIGluaXRXaXRoSW1hZ2U6aW1hZ2UuZ2V0KCldIGF1dG9yZWxlYXNl
XTsKICAgICAgICAgICAgICAgICBVSURyYWdQcmV2aWV3UGFyYW1ldGVycyAqcGFyYW1ldGVycyA9
IFtbW1VJRHJhZ1ByZXZpZXdQYXJhbWV0ZXJzIGFsbG9jXSBpbml0V2l0aFRleHRMaW5lUmVjdHM6
QFsgW05TVmFsdWUgdmFsdWVXaXRoQ0dSZWN0OltpbWFnZVZpZXcgYm91bmRzXV0gXV0gYXV0b3Jl
bGVhc2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZDJiNGY3MzhlZDQuLjkzNmE5NGY3NDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTcyNDAsNyArNzI0MCw3IEBAIC0gKHZvaWQpdGVhcmRvd25EcmFnQW5k
RHJvcEludGVyYWN0aW9ucwogCiAtICh2b2lkKV9zdGFydERyYWc6KFJldGFpblB0cjxDR0ltYWdl
UmVmPilpbWFnZSBpdGVtOihjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYpaXRlbQogewotICAgIEFT
U0VSVChpdGVtLnNvdXJjZUFjdGlvbiAhPSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uTm9uZSk7
CisgICAgQVNTRVJUKGl0ZW0uc291cmNlQWN0aW9uKTsKIAogICAgIGlmIChpdGVtLnByb21pc2Vk
QXR0YWNobWVudEluZm8pCiAgICAgICAgIFtzZWxmIF9wcmVwYXJlVG9EcmFnUHJvbWlzZWRBdHRh
Y2htZW50Oml0ZW0ucHJvbWlzZWRBdHRhY2htZW50SW5mb107CkBAIC03NTQxLDEyICs3NTQxLDEy
IEBAIC0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JE
cm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3NpCiAgICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uQW55ICYgfldLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9hZDsKIH0KIAotLSAoV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbilfYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zCistIChPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4pX2FsbG93ZWREcmFnU291cmNlQWN0aW9ucwog
ewotICAgIGF1dG8gYWxsb3dlZEFjdGlvbnMgPSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uQW55
OworICAgIGF1dG8gYWxsb3dlZEFjdGlvbnMgPSBXZWJDb3JlOjphbnlEcmFnU291cmNlQWN0aW9u
KCk7CiAgICAgaWYgKCFzZWxmLmlzRmlyc3RSZXNwb25kZXIgfHwgIV9zdXBwcmVzc1NlbGVjdGlv
bkFzc2lzdGFudFJlYXNvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIERvbid0IGFsbG93IHN0
YXJ0aW5nIGEgZHJhZyBvbiBhIHNlbGVjdGlvbiB3aGVuIHNlbGVjdGlvbiB2aWV3cyBhcmUgbm90
IHZpc2libGUuCi0gICAgICAgIGFsbG93ZWRBY3Rpb25zID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbj4oYWxsb3dlZEFjdGlvbnMgJiB+V2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvblNlbGVjdGlvbik7CisgICAgICAgIGFsbG93ZWRBY3Rpb25zLnJlbW92ZShXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pOwogICAgIH0KICAgICByZXR1cm4gYWxsb3dlZEFj
dGlvbnM7CiB9CkBAIC04MDE3LDcgKzgwMTcsNyBAQCAtIChVSVRhcmdldGVkRHJhZ1ByZXZpZXcg
KilkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldgog
LSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24g
d2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW1hdG9yOihpZCA8VUlEcmFnQW5pbWF0aW5nPilhbmltYXRv
ciBzZXNzaW9uOihpZCA8VUlEcmFnU2Vzc2lvbj4pc2Vzc2lvbgogewogICAgIFJFTEVBU0VfTE9H
KERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIHdpbGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjog
JXAiLCBzZXNzaW9uKTsKLSAgICBpZiAoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hbnlBY3Rp
dmVEcmFnU291cmNlSXMoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikpIHsKKyAg
ICBpZiAoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hbnlBY3RpdmVEcmFnU291cmNlSXMoV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSkgewogICAgICAgICBbc2VsZiBjYW5j
ZWxBY3RpdmVUZXh0SW50ZXJhY3Rpb25HZXN0dXJlc107CiAgICAgICAgIGlmICghX3Nob3VsZFJl
c3RvcmVDYWxsb3V0QmFyQWZ0ZXJEcm9wKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBT
UEkgc2hvdWxkIGJlIHJlbmFtZWQgaW4gVUlLaXQgdG8gcmVmbGVjdCBhIG1vcmUgZ2VuZXJhbCBw
dXJwb3NlIG9mIGhpZGluZyBpbnRlcmFjdGlvbiBhc3Npc3RhbnQgY29udHJvbHMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA2MTRkY2Jm
MzdjMC4uMzRmMDUxOWJlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQpAQCAtMTI1NywxNiArMTI1NywxNiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCkKICAgICBw
YWdlQ2xpZW50KCkuZGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYWRkZWQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERyYWdTdGFydChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2VkQWN0aW9ucykKK3ZvaWQg
V2ViUGFnZVByb3h5OjpyZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKQog
ewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REcmFnU3RhcnQoY2xpZW50UG9zaXRpb24sIGdsb2Jh
bFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9ucyksIG1fd2ViUGFnZUlEKTsKKyAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RHJhZ1N0YXJ0KGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnNNYXNrKSwgbV93ZWJQYWdlSUQpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNz
aW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFsbG93ZWRBY3Rpb25zKQordm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFz
aykKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Np
b24oY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9ucyksIG1fd2Vi
UGFnZUlEKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1
ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY2xpZW50UG9zaXRpb24sIGdsb2JhbFBv
c2l0aW9uLCBhbGxvd2VkQWN0aW9uc01hc2spLCBtX3dlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjppbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPElu
dFNpemU+JiBpbWFnZVNpemVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxJ
bnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggODFiNzlhNzdjODcuLjJlYjA4ODZm
MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0
IEludFBvaW50CiB7CiB9CiAKLURyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCitPcHRpb25TZXQ8RHJhZ1Nv
dXJjZUFjdGlvbj4gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChj
b25zdCBJbnRQb2ludCYpCiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+YWxsb3dlZERyYWdTb3VyY2VB
Y3Rpb25zKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCAyN2M0YjI3MmE3My4uNGRiYTBkOGFiZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIHZv
aWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJp
ZGU7Ci0gICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0Zv
clBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7Cisg
ICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJdGVtLCBXZWJDb3JlOjpEYXRh
VHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ29uY2x1
ZGVFZGl0RHJhZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGE0YjE1Nzg2NmJlLi4wNDk1NjAyZjBlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTE1LDcgKzkxNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdpbGxTdGFydERyYWcoKSB7IEFTU0VSVCghbV9pc1N0YXJ0aW5nRHJhZyk7
IG1faXNTdGFydGluZ0RyYWcgPSB0cnVlOyB9CiAgICAgdm9pZCBkaWRTdGFydERyYWcoKTsKICAg
ICB2b2lkIGRyYWdDYW5jZWxsZWQoKTsKLSAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFs
bG93ZWREcmFnU291cmNlQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZERyYWdTb3Vy
Y2VBY3Rpb25zOyB9CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFs
bG93ZWREcmFnU291cmNlQWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZERyYWdTb3Vy
Y2VBY3Rpb25zOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgYmVnaW5QcmludGluZyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYpOwpAQCAtMTQwNiw4ICsxNDA2LDggQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCi0gICAgdm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucyk7Ci0gICAgdm9pZCByZXF1ZXN0QWRk
aXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2
NF90IGFsbG93ZWRBY3Rpb25zKTsKKyAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxv
d2VkQWN0aW9uc01hc2spOworICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdT
ZXNzaW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKICAgICB2b2lkIGluc2VydERyb3BwZWRJ
bWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIE9wdGlvbmFs
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVwbHkpOwogICAgIHZvaWQgY29tcHV0
ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90KCk7CiAjZW5kaWYKQEAgLTE5MzMsNyArMTkzMyw3IEBA
IHByaXZhdGU6CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgbV9pc1N0YXJ0
aW5nRHJhZyB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBtX2FsbG93
ZWREcmFnU291cmNlQWN0aW9ucyB7IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb25BbnkgfTsKKyAg
ICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gbV9hbGxvd2VkRHJhZ1NvdXJj
ZUFjdGlvbnMgeyBXZWJDb3JlOjphbnlEcmFnU291cmNlQWN0aW9uKCkgfTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmlu
ZGV4IGFlOTI3NDc2Mzg4Li4xNmFmMzE3ZTg4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMjEsOCArMzIxLDgg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBSZXF1ZXN0RHJhZ1N0YXJ0KFdlYkNv
cmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3Np
dGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpCi0gICAgUmVxdWVzdEFkZGl0aW9uYWxJdGVt
c0ZvckRyYWdTZXNzaW9uKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpCisgICAg
UmVxdWVzdERyYWdTdGFydChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCisgICAgUmVxdWVzdEFkZGl0aW9uYWxJdGVtc0Zv
ckRyYWdTZXNzaW9uKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IGFsbG93ZWRBY3Rpb25zTWFzaykKICAgICBJbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRl
cnMoVmVjdG9yPFdlYkNvcmU6OkludFNpemU+IGltYWdlU2l6ZSkgLT4gKFZlY3RvcjxXZWJDb3Jl
OjpJbnRSZWN0PiBkcm9wUHJldmlld1JlY3RzLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yRGF0YT4gdGV4dEluZGljYXRvcikgQXN5bmMKICAgICBEaWRDb25jbHVkZURyb3AoKQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDU4MDM0YjcxYzExLi43MGM4ZjJhYWZlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTkwOSwxNiAr
OTA5LDE2IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24o
V2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB9CiAKICNpZiBFTkFCTEUoREFUQV9JTlRF
UkFDVElPTikKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdERyYWdTdGFydChjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qg
YWxsb3dlZEFjdGlvbnMpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3REcmFnU3RhcnQoY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9w
dGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCiB7
Ci0gICAgU2V0Rm9yU2NvcGU8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlv
bnNGb3JTY29wZShtX2FsbG93ZWREcmFnU291cmNlQWN0aW9ucywgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbj4oYWxsb3dlZEFjdGlvbnMpKTsKKyAgICBTZXRGb3JTY29wZTxP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4+IGFsbG93ZWRBY3Rpb25zRm9yU2Nv
cGUobV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMsIGFsbG93ZWRBY3Rpb25zTWFzayk7CiAgICAg
Ym9vbCBkaWRTdGFydCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkudHJ5VG9C
ZWdpbkRyYWdBdFBvaW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbik7CiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0KGRpZFN0
YXJ0KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdT
ZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKK3ZvaWQgV2ViUGFnZTo6cmVx
dWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKQogewotICAgIFNldEZvclNj
b3BlPFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zRm9yU2NvcGUobV9h
bGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdTb3VyY2VB
Y3Rpb24+KGFsbG93ZWRBY3Rpb25zKSk7CisgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24+PiBhbGxvd2VkQWN0aW9uc0ZvclNjb3BlKG1fYWxsb3dlZERy
YWdTb3VyY2VBY3Rpb25zLCBhbGxvd2VkQWN0aW9uc01hc2spOwogICAgIC8vIFRvIGF1Z21lbnQg
dGhlIHBsYXRmb3JtIGRyYWcgc2Vzc2lvbiB3aXRoIGFkZGl0aW9uYWwgaXRlbXMsIGVuZCB0aGUg
Y3VycmVudCBkcmFnIHNlc3Npb24gYW5kIGJlZ2luIGEgbmV3IGRyYWcgc2Vzc2lvbiB3aXRoIHRo
ZSBuZXcgZHJhZyBpdGVtLgogICAgIC8vIFRoaXMgcHJvY2VzcyBpcyBvcGFxdWUgdG8gdGhlIFVJ
IHByb2Nlc3MsIHdoaWNoIHN0aWxsIG1haW50YWlucyB0aGUgb2xkIGRyYWcgaXRlbSBpbiBpdHMg
ZHJhZyBzZXNzaW9uLiBTaW1pbGFybHksIHRoaXMgcGVyc2lzdGVudCBkcmFnIHNlc3Npb24KICAg
ICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGljaCBvbmx5IHNlZXMgdGhhdCB0
aGUgY3VycmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcgb25lIGlzIGJlZ2lubmlu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaAppbmRleCAxNWRjYmE1NDQyMS4uMzRhNzVmZmFiMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdE
ZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OkRyYWdEYXRhJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3Vy
Y2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlkZTsKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OkRyYWdJdGVtLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFt
ZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBiZWdpbkRyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdl
YkNvcmU6OkZyYW1lJiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRG93blBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEcmFnZ2VkUG9zaXRpb24sIFdlYkNvcmU6
OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0Ns
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQubW0KaW5kZXggM2QxYTBhMzVmZjIuLjQyYWMyN2JmYzY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0K
QEAgLTY4LDYgKzY4LDIyIEBAIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGllbnQoV2ViVmlldyog
d2ViVmlldykKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorc3RhdGljIE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uPiBjb3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2soV2ViRHJhZ1NvdXJj
ZUFjdGlvbiBhY3Rpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IHJlc3VsdDsKKworICAgIGlmIChhY3Rpb24gJiBXZWJEcmFnU291cmNlQWN0aW9uREhUTUwp
CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpOwor
ICAgIGlmIChhY3Rpb24gJiBXZWJEcmFnU291cmNlQWN0aW9uSW1hZ2UpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UpOworICAgIGlmIChhY3Rpb24g
JiBXZWJEcmFnU291cmNlQWN0aW9uTGluaykKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uOjpMaW5rKTsKKyAgICBpZiAoYWN0aW9uICYgV2ViRHJhZ1NvdXJjZUFj
dGlvblNlbGVjdGlvbikKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uOjpTZWxlY3Rpb24pOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFdlYkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBraXQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFj
dGlvbikKIHsKICAgICBzd2l0Y2ggKGFjdGlvbikgewpAQCAtMTA0LDE1ICsxMjAsMTUgQEAgdm9p
ZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3QKIH0KIAogCi1XZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIFdl
YkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQm
IHJvb3RWaWV3UG9pbnQpCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gV2Vi
RHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYg
cm9vdFZpZXdQb2ludCkKIHsKICAgICBOU1BvaW50IHZpZXdQb2ludCA9IFttX3dlYlZpZXcgX2Nv
bnZlcnRQb2ludEZyb21Sb290Vmlldzpyb290Vmlld1BvaW50XTsKLSAgICByZXR1cm4gKERyYWdT
b3VyY2VBY3Rpb24pW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93
ZWJWaWV3IGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQ6dmlld1BvaW50XTsKKyAgICByZXR1
cm4gY29yZURyYWdTb3VyY2VBY3Rpb25NYXNrKFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2Fy
ZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50OnZpZXdQ
b2ludF0pOwogfQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFj
dGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIG1vdXNlRG93blBvaW50LCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2Zl
cikKIHsKLSAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dl
YlZpZXcgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uOihXZWJEcmFnU291cmNlQWN0aW9uKWFj
dGlvbiBmcm9tUG9pbnQ6bW91c2VEb3duUG9pbnQgd2l0aFBhc3RlYm9hcmQ6W05TUGFzdGVib2Fy
ZCBwYXN0ZWJvYXJkV2l0aE5hbWU6ZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5uYW1lKCldXTsK
KyAgICBbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcg
d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uOmtpdChhY3Rpb24pIGZyb21Qb2ludDptb3VzZURv
d25Qb2ludCB3aXRoUGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpk
YXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLm5hbWUoKV1dOwogfQogCiB2b2lkIFdlYkRyYWdDbGll
bnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNm
ZXIsIEZyYW1lJiBmcmFtZSkKQEAgLTEyNCw3ICsxNDAsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6
OnN0YXJ0RHJhZyhEcmFnSXRlbSBkcmFnSXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIs
IEZyYQogICAgIGlmICghW2h0bWxWaWV3LmdldCgpIGlzS2luZE9mQ2xhc3M6W1dlYkhUTUxWaWV3
IGNsYXNzXV0pCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBOU0V2ZW50ICpldmVudCA9IGRy
YWdJdGVtLnNvdXJjZUFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uTGluayA/IGZyYW1lLmV2ZW50
SGFuZGxlcigpLmN1cnJlbnROU0V2ZW50KCkgOiBbaHRtbFZpZXcuZ2V0KCkgX21vdXNlRG93bkV2
ZW50XTsKKyAgICBOU0V2ZW50ICpldmVudCA9IChkcmFnSXRlbS5zb3VyY2VBY3Rpb24gJiYgKmRy
YWdJdGVtLnNvdXJjZUFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uOjpMaW5rKSA/IGZyYW1lLmV2
ZW50SGFuZGxlcigpLmN1cnJlbnROU0V2ZW50KCkgOiBbaHRtbFZpZXcuZ2V0KCkgX21vdXNlRG93
bkV2ZW50XTsKICAgICBXZWJIVE1MVmlldyogdG9wSFRNTFZpZXcgPSBnZXRUb3BIVE1MVmlldygm
ZnJhbWUpOwogICAgIFJldGFpblB0cjxXZWJIVE1MVmlldz4gdG9wVmlld1Byb3RlY3RvciA9IHRv
cEhUTUxWaWV3OwogICAgIApAQCAtMTk3LDkgKzIxMyw5IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6
d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0CiB7CiB9CiAKLVdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJh
Z1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCitPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1h
c2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCiB7Ci0gICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rp
b25Ob25lOworICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBl
cmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikKQEAgLTIzMiw5ICsyNDgs
OSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdAogewogfQogCi1XZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uIFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmKQorT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IFdlYkRyYWdD
bGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQogewot
ICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uQW55OworICAgIHJldHVybiBXZWJDb3JlOjphbnlE
cmFnU291cmNlQWN0aW9uKCk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50
JiwgRGF0YVRyYW5zZmVyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCAyYzI4NjliOWM1My4uZTliODliYjhjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTY3NSw2ICs2NzUsMzQgQEAgc3RhdGljIF9V
SURyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdP
cGVyYXRpb24pCiAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOwogfQogI2VuZGlmIC8v
IFVTRShBUFBLSVQpCisKK1dlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24+IGFjdGlvbikKK3sKKyAgICBpZiAoIWFjdGlvbikKKyAgICAgICAg
cmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25Ob25lOworCisgICAgc3dpdGNoICgqYWN0aW9uKSB7
CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpESFRNTDoKKyAgICAgICAgcmV0
dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25ESFRNTDsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb246OkltYWdlOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkltYWdl
OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6TGluazoKKyAgICAgICAgcmV0
dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbjo6U2VsZWN0aW9uOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbjsKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGNhc2UgV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudDoKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb246OkNvbG9yOgorICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIH0KKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uTm9uZTsK
K30KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCiBXZWJDb3JlOjpGaW5kT3B0aW9u
cyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKQpAQCAtMTk2MCw3ICsxOTg4LDcg
QEAgLSAodm9pZClfc3RhcnREcmFnOihjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYpZHJhZ0l0ZW0K
ICAgICBfcHJpdmF0ZS0+ZHJhZ2dlZExpbmtVUkwgPSBkcmFnSXRlbS51cmwuaXNFbXB0eSgpID8g
bmlsIDogKE5TVVJMICopZHJhZ0l0ZW0udXJsOwogICAgIF9wcml2YXRlLT5kcmFnZ2VkTGlua1Rp
dGxlID0gZHJhZ0l0ZW0udGl0bGUuaXNFbXB0eSgpID8gbmlsIDogKE5TU3RyaW5nICopZHJhZ0l0
ZW0udGl0bGU7CiAgICAgX3ByaXZhdGUtPmRyYWdQcmV2aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRp
bmF0ZXMgPSBkcmFnSXRlbS5kcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwot
ICAgIF9wcml2YXRlLT5kcmFnU291cmNlQWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViRHJhZ1NvdXJj
ZUFjdGlvbj4oZHJhZ0l0ZW0uc291cmNlQWN0aW9uKTsKKyAgICBfcHJpdmF0ZS0+ZHJhZ1NvdXJj
ZUFjdGlvbiA9IGtpdChkcmFnSXRlbS5zb3VyY2VBY3Rpb24pOwogfQogCiAtIChDR1JlY3QpX2Rh
dGFJbnRlcmFjdGlvbkNhcmV0UmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggZWExZjJmMzFlNWIuLjU2MjUwZmQ3NDcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzLmgiCiAjaW1wb3J0
ICJXZWJWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgorI2ltcG9y
dCAiV2ViVUlEZWxlZ2F0ZS5oIgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIApAQCAtOTgsNiArOTks
OCBAQCB1c2luZyBDb2NvYURyYWdPcGVyYXRpb24gPSB1aW50NjRfdDsKICNlbmRpZgogCiBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29h
RHJhZ09wZXJhdGlvbik7CisKK1dlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KE9wdGlvbmFsPFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24+KTsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQog
CiBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuY3BwCmluZGV4IDViMTkzYTdkYWEzLi5kZThjOTMxZDY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5j
cHAKQEAgLTcyLDYgKzcyLDQ2IEBAIHN0YXRpYyBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24ga2l0
KERyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24pCiAgICAgcmV0dXJuIFdlYkRyYWdEZXN0aW5h
dGlvbkFjdGlvbk5vbmU7CiB9CiAKK3N0YXRpYyBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4g
Y29yZURyYWdTb3VyY2VBY3Rpb25NYXNrKFdlYkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uTWFzaykK
K3sKKyAgICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gcmVzdWx0OworCisgICAgaWYgKGFj
dGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0aW9uREhUTUwpCisgICAgICAgIHJlc3VsdC5hZGQo
RHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpOworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ1Nv
dXJjZUFjdGlvbkltYWdlKQorICAgICAgICByZXN1bHQuYWRkKERyYWdTb3VyY2VBY3Rpb246Oklt
YWdlKTsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rKQorICAg
ICAgICByZXN1bHQuYWRkKERyYWdTb3VyY2VBY3Rpb246OkxpbmspOworICAgIGlmIChhY3Rpb25N
YXNrICYgV2ViRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKKyAgICAgICAgcmVzdWx0LmFkZChE
cmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
c3RhdGljIFdlYkRyYWdTb3VyY2VBY3Rpb24ga2l0KERyYWdTb3VyY2VBY3Rpb24gYWN0aW9uKQor
eworICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpESFRN
TDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25ESFRNTDsKKyAgICBjYXNlIERy
YWdTb3VyY2VBY3Rpb246OkltYWdlOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlv
bkltYWdlOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6TGluazoKKyAgICAgICAgcmV0dXJu
IFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6U2Vs
ZWN0aW9uOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjsKKyNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6
QXR0YWNobWVudDoKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKKyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246OkNvbG9yOgorICAgICAgICBicmVh
azsKKyNlbmRpZgorICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
V2ViRHJhZ1NvdXJjZUFjdGlvbk5vbmU7Cit9CisKIFdlYkRyYWdDbGllbnQ6OldlYkRyYWdDbGll
bnQoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KSAKIHsKQEAgLTg3
LDE0ICsxMjcsMTQgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5h
dGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW8KICAgICAgICAgZGVsZWdhdGVS
ZWYtPndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKG1fd2ViVmlldywga2l0KGFjdGlv
biksIGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKIH0KIAotRHJhZ1NvdXJjZUFjdGlvbiBXZWJE
cmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiB3
aW5kb3dQb2ludCkKK09wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBXZWJEcmFnQ2xpZW50Ojpk
cmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkK
IHsKICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+IGRlbGVnYXRlUmVmID0gMDsKLSAgICBXZWJE
cmFnU291cmNlQWN0aW9uIGFjdGlvbiA9IFdlYkRyYWdTb3VyY2VBY3Rpb25Bbnk7CisgICAgV2Vi
RHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb25NYXNrID0gV2ViRHJhZ1NvdXJjZUFjdGlvbkFueTsKICAg
ICBQT0lOVCBsb2NhbHB0ID0gY29yZShtX3dlYlZpZXcpLT5tYWluRnJhbWUoKS52aWV3KCktPndp
bmRvd1RvQ29udGVudHMod2luZG93UG9pbnQpOwogICAgIGlmIChTVUNDRUVERUQobV93ZWJWaWV3
LT51aURlbGVnYXRlKCZkZWxlZ2F0ZVJlZikpKQotICAgICAgICBkZWxlZ2F0ZVJlZi0+ZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChtX3dlYlZpZXcsICZsb2NhbHB0LCAmYWN0aW9uKTsKLSAg
ICByZXR1cm4gKERyYWdTb3VyY2VBY3Rpb24pYWN0aW9uOworICAgICAgICBkZWxlZ2F0ZVJlZi0+
ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChtX3dlYlZpZXcsICZsb2NhbHB0LCAmYWN0aW9u
TWFzayk7CisgICAgcmV0dXJuIGNvcmVEcmFnU291cmNlQWN0aW9uTWFzayhhY3Rpb25NYXNrKTsK
IH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJh
Z1NvdXJjZUFjdGlvbiBhY3Rpb24sIGNvbnN0IEludFBvaW50JiBpbnRQb2ludCwgRGF0YVRyYW5z
ZmVyJiBkYXRhVHJhbnNmZXIpCkBAIC0xMDcsNyArMTQ3LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50
Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24sIGNv
bnN0IEkKICAgICBDT01QdHI8SURhdGFPYmplY3Q+IGRhdGFPYmplY3QgPSBkYXRhVHJhbnNmZXIu
cGFzdGVib2FyZCgpLmRhdGFPYmplY3QoKTsKIAogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gbmV3
RGF0YU9iamVjdDsKLSAgICBIUkVTVUxUIHJlc3VsdCA9IHVpRGVsZWdhdGUtPndpbGxQZXJmb3Jt
RHJhZ1NvdXJjZUFjdGlvbihtX3dlYlZpZXcsIHN0YXRpY19jYXN0PFdlYkRyYWdTb3VyY2VBY3Rp
b24+KGFjdGlvbiksICZwb2ludCwgZGF0YU9iamVjdC5nZXQoKSwgJm5ld0RhdGFPYmplY3QpOwor
ICAgIEhSRVNVTFQgcmVzdWx0ID0gdWlEZWxlZ2F0ZS0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0
aW9uKG1fd2ViVmlldywga2l0KGFjdGlvbiksICZwb2ludCwgZGF0YU9iamVjdC5nZXQoKSwgJm5l
d0RhdGFPYmplY3QpOwogICAgIGlmIChyZXN1bHQgPT0gU19PSyAmJiBuZXdEYXRhT2JqZWN0ICE9
IGRhdGFPYmplY3QpCiAgICAgICAgIGNvbnN0X2Nhc3Q8UGFzdGVib2FyZCY+KGRhdGFUcmFuc2Zl
ci5wYXN0ZWJvYXJkKCkpLnNldEV4dGVybmFsRGF0YU9iamVjdChuZXdEYXRhT2JqZWN0LmdldCgp
KTsKIH0KQEAgLTE0Myw3ICsxODMsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhE
cmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmCiAgICAgICAg
ICAgICAgICAgc2RpLmhibXBEcmFnSW1hZ2UgPSBpbWFnZS5nZXQoKTsKICAgICAgICAgICAgICAg
ICBzZGkucHRPZmZzZXQueCA9IGRyYWdQb2ludC54KCkgLSBpbWFnZU9yaWdpbi54KCk7CiAgICAg
ICAgICAgICAgICAgc2RpLnB0T2Zmc2V0LnkgPSBkcmFnUG9pbnQueSgpIC0gaW1hZ2VPcmlnaW4u
eSgpOwotICAgICAgICAgICAgICAgIGlmIChpdGVtLnNvdXJjZUFjdGlvbiA9PSBEcmFnU291cmNl
QWN0aW9uTGluaykKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS5zb3VyY2VBY3Rpb24gJiYgKml0
ZW0uc291cmNlQWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb246OkxpbmspCiAgICAgICAgICAgICAg
ICAgICAgIHNkaS5wdE9mZnNldC55ID0gYi5ibUhlaWdodCAtIHNkaS5wdE9mZnNldC55OwogCiAg
ICAgICAgICAgICAgICAgaGVscGVyLT5Jbml0aWFsaXplRnJvbUJpdG1hcCgmc2RpLCBkYXRhT2Jq
ZWN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBhNTFmYzAxM2YwNS4uZjU4YzczN2VhNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlZp
ZXcqKTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNl
QWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdmlydHVh
bCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbk1h
c2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCB3
aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpOwogICAgIHZpcnR1YWwg
dm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYs
IFdlYkNvcmU6OkZyYW1lJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401363</attachid>
            <date>2020-06-08 13:13:52 -0700</date>
            <delta_ts>2020-06-08 14:26:41 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-212885-20200608131435.patch</filename>
            <type>text/plain</type>
            <size>38741</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM3NWFhYmM2NWFkYTM2
OTA2MDlmOGZkZWMyZmNmYzQ1NTk3YjUyMC4uZjE4NDQ5MmJlYjZjMjA4ZWU2ZmY0ZGFmOWFjNmY3
MzhlNDY0YzgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTA2LTA2ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW0lQQ10gQWRvcHQgZW51
bSBjbGFzcyBmb3IgRHJhZ09wZXJhdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MjEyODcwPgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQwNjk5NDA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdPcEZyb21JRU9wKToKKyAgICAgICAgKFdlYkNvcmU6
OklFT3BGcm9tRHJhZ09wKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c291cmNl
T3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmRl
c3RpbmF0aW9uT3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJh
bnNmZXI6OnNldFNvdXJjZU9wZXJhdGlvbk1hc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRy
YW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2spOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVRyYW5zZmVyOjpzZXRFZmZlY3RBbGxvd2VkKToKKyAgICAgICAgKiBwYWdlL0RyYWdBY3Rp
b25zLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uKToKKyAgICAgICAgLSBDb252
ZXJ0IHRvIGVudW0gY2xhc3MuCisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKToK
KyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpwbGF0Zm9ybUdlbmVyaWNEcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKToKKyAgICAgICAgKFdlYkNv
cmU6OmRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVPcGVyYXRp
b24pOgorICAgICAgICAqIHBhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdl
L21hYy9EcmFnQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpw
bGF0Zm9ybUdlbmVyaWNEcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09w
ZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OmRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24pOgorCiAyMDIwLTA2LTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ10gQWRkIHN1cHBvcnQg
Zm9yIHdpZHRoOiBtaW4vbWF4LWNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzhiYTkwZGZjYjQ3ZGIzNzk4
NTRmNTQ2YjlhMTlhZThlNDI4YzJkYy4uMDA5ODUzNmEyM2IwZmJhZDIwZmVkODkxZTNiOWZkMjZk
NTM3YzE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wNi0wNiAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtJUENdIEFkb3B0IGVudW0gY2xh
c3MgZm9yIERyYWdPcGVyYXRpb24KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjg3
MD4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0MDY5OTQwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgIC0gUmVtb3ZlIEZJWE1FIG5vdyB0aGF0IGl0J3Mgbm90IG5lZWRlZC4KKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDoKKyAgICAg
ICAgKFdlYktpdDo6Y29yZURyYWdPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgIChkcm9w
T3BlcmF0aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24pOgorICAgICAgICAoY29yZURyYWdPcGVy
YXRpb25Gb3JVSURyb3BPcGVyYXRpb24pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdE
YXRhRm9yRHJvcFNlc3Npb246ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOl0pOgorCiAyMDIwLTA2LTA2
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFy
IFdlYlBhZ2VQcm94eSBldmVudCBzdGF0ZSBiZXR3ZWVuIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggZmQ2YWFkNGE4MjlhMGFiZDZmYzljYTRmOWM3NzJkODlmMmQ3NjUyOS4u
NDZiOTYwYTk4NWY5MjUyOGMwOWQ0NDRkYWNiOTliZTI1NjQzN2JiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA2LTA2ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBm
b3IgRHJhZ09wZXJhdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyODcwPgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQwNjk5NDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAg
ICAgICAoa2l0KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3Jl
RHJhZ09wZXJhdGlvbk1hc2spOgorICAgICAgICAoa2l0KToKKwogMjAyMC0wNi0wNiAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggNDhjMTU0ZjI3ZTAyYzJkYWE1Mjk4YjEyYzYwNTM0ZjcyYWZmYTMzZi4uNmJjMTk3MDQ0ZTQ2
NWYyMjM0NWI4N2YzZjQyNjY4ZTUxZDljZTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA2LTA2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ09wZXJh
dGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyODcwPgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjQwNjk5NDA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAg
ICAgKGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMpOgorICAgICAgICAo
V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAg
ICAgKGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IpOgorICAgICAgICAoV2ViVmlldzo6a2V5U3Rh
dGVUb0RyYWdPcGVyYXRpb24gY29uc3QpOgorCiAyMDIwLTA2LTA2ICBEYXZpZCBLaWx6ZXIgIDxk
ZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRm9sbG93LXVwOiBVc2UgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+IGZvciBtYXNrIHZhbHVlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cAppbmRleCBlNmViOTc5ODUzOGJjNDYyNTcxOWRhZmZmMTEwYjEzMTFmNTYyYzg4Li5iNDVhMTNk
YjA4YTA2NGM4NDEwM2Q2ZTdiOGFkM2ZiMmVlMDMwZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcApAQCAtNjAzLDM5ICs2MDMsMzkgQEAgc3RhdGljIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKICAgICBpZiAo
b3BlcmF0aW9uID09ICJub25lIikKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBpZiAob3BlcmF0
aW9uID09ICJjb3B5IikKLSAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHkgfTsKKyAg
ICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbjo6Q29weSB9OwogICAgIGlmIChvcGVyYXRpb24g
PT0gImxpbmsiKQotICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTGluayB9OworICAgICAg
ICByZXR1cm4geyBEcmFnT3BlcmF0aW9uOjpMaW5rIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAi
bW92ZSIpCi0gICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0
aW9uTW92ZSB9OworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uOjpHZW5lcmljLCBEcmFn
T3BlcmF0aW9uOjpNb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAg
ICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfTsKKyAg
ICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbjo6Q29weSwgRHJhZ09wZXJhdGlvbjo6TGluayB9
OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHlNb3ZlIikKLSAgICAgICAgcmV0dXJuIHsgRHJh
Z09wZXJhdGlvbkNvcHksIERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9
OworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uOjpDb3B5LCBEcmFnT3BlcmF0aW9uOjpH
ZW5lcmljLCBEcmFnT3BlcmF0aW9uOjpNb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGlu
a01vdmUiKQotICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlv
bkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CisgICAgICAgIHJldHVybiB7IERyYWdPcGVy
YXRpb246OkxpbmssIERyYWdPcGVyYXRpb246OkdlbmVyaWMsIERyYWdPcGVyYXRpb246Ok1vdmUg
fTsKICAgICBpZiAob3BlcmF0aW9uID09ICJhbGwiKQogICAgICAgICByZXR1cm4gYW55RHJhZ09w
ZXJhdGlvbigpOwotICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25Qcml2YXRlIH07IC8vIFJlYWxs
eSBhIG1hcmtlciBmb3IgIm5vIGNvbnZlcnNpb24iLgorICAgIHJldHVybiB7IERyYWdPcGVyYXRp
b246OlByaXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9
CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJh
dGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRp
b25NYXNrLmNvbnRhaW5zQW55KHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25N
b3ZlIH0pOworICAgIGJvb2wgaXNHZW5lcmljTW92ZSA9IG9wZXJhdGlvbk1hc2suY29udGFpbnNB
bnkoeyBEcmFnT3BlcmF0aW9uOjpHZW5lcmljLCBEcmFnT3BlcmF0aW9uOjpNb3ZlIH0pOwogCi0g
ICAgaWYgKChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFn
T3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfSkpIHx8IG9wZXJhdGlvbk1hc2suY29u
dGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmssIERyYWdPcGVy
YXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1vdmUsIERy
YWdPcGVyYXRpb25EZWxldGUgfSkpCisgICAgaWYgKChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlv
bk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uOjpDb3B5LCBEcmFnT3BlcmF0aW9uOjpM
aW5rIH0pKSB8fCBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJhdGlvbjo6Q29w
eSwgRHJhZ09wZXJhdGlvbjo6TGluaywgRHJhZ09wZXJhdGlvbjo6R2VuZXJpYywgRHJhZ09wZXJh
dGlvbjo6UHJpdmF0ZSwgRHJhZ09wZXJhdGlvbjo6TW92ZSwgRHJhZ09wZXJhdGlvbjo6RGVsZXRl
IH0pKQogICAgICAgICByZXR1cm4gImFsbCI7Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgb3Bl
cmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCisgICAgaWYgKGlzR2VuZXJp
Y01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uOjpDb3B5KSkKICAg
ICAgICAgcmV0dXJuICJjb3B5TW92ZSI7Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0
aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCisgICAgaWYgKGlzR2VuZXJpY01v
dmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uOjpMaW5rKSkKICAgICAg
ICAgcmV0dXJuICJsaW5rTW92ZSI7Ci0gICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwo
eyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfSkpCisgICAgaWYgKG9wZXJh
dGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uOjpDb3B5LCBEcmFnT3BlcmF0aW9u
OjpMaW5rIH0pKQogICAgICAgICByZXR1cm4gImNvcHlMaW5rIjsKICAgICBpZiAoaXNHZW5lcmlj
TW92ZSkKICAgICAgICAgcmV0dXJuICJtb3ZlIjsKLSAgICBpZiAob3BlcmF0aW9uTWFzay5jb250
YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMo
RHJhZ09wZXJhdGlvbjo6Q29weSkpCiAgICAgICAgIHJldHVybiAiY29weSI7Ci0gICAgaWYgKG9w
ZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQorICAgIGlmIChvcGVyYXRp
b25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkxpbmspKQogICAgICAgICByZXR1cm4gImxp
bmsiOwogICAgIHJldHVybiAibm9uZSI7CiB9CkBAIC02NDMsMjYgKzY0MywyNiBAQCBzdGF0aWMg
Y29uc3QgY2hhciogSUVPcEZyb21EcmFnT3AoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJh
dGlvbk1hc2spCiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpzb3VyY2VP
cGVyYXRpb25NYXNrKCkgY29uc3QKIHsKICAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBkcmFnT3BG
cm9tSUVPcChtX2VmZmVjdEFsbG93ZWQpOwotICAgIEFTU0VSVChvcGVyYXRpb25NYXNrICE9IERy
YWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBBU1NFUlQob3BlcmF0aW9uTWFzayAhPSBEcmFnT3Bl
cmF0aW9uOjpQcml2YXRlKTsKICAgICByZXR1cm4gb3BlcmF0aW9uTWFzazsKIH0KIAogT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb25NYXNr
KCkgY29uc3QKIHsKICAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBkcmFnT3BGcm9tSUVPcChtX2Ry
b3BFZmZlY3QpOwotICAgIEFTU0VSVChvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Db3B5
IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJh
dGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFzayA9PSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBE
cmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfSkgfHwgb3BlcmF0aW9uTWFz
ay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9uTGluaywgRHJh
Z09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Qcml2YXRlLCBEcmFnT3BlcmF0aW9uTW92
ZSwgRHJhZ09wZXJhdGlvbkRlbGV0ZSB9KSk7CisgICAgQVNTRVJUKG9wZXJhdGlvbk1hc2sgPT0g
RHJhZ09wZXJhdGlvbjo6Q29weSB8fCBvcGVyYXRpb25NYXNrLmlzRW1wdHkoKSB8fCBvcGVyYXRp
b25NYXNrID09IERyYWdPcGVyYXRpb246OkxpbmsgfHwgb3BlcmF0aW9uTWFzayA9PSBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uOjpHZW5lcmljLCBEcmFnT3BlcmF0aW9u
OjpNb3ZlIH0pIHx8IG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uOjpD
b3B5LCBEcmFnT3BlcmF0aW9uOjpMaW5rLCBEcmFnT3BlcmF0aW9uOjpHZW5lcmljLCBEcmFnT3Bl
cmF0aW9uOjpQcml2YXRlLCBEcmFnT3BlcmF0aW9uOjpNb3ZlLCBEcmFnT3BlcmF0aW9uOjpEZWxl
dGUgfSkpOwogICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCiB2b2lkIERhdGFUcmFuc2Zl
cjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0
aW9uTWFzaykKIHsKLSAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sg
IT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uTWFzaywg
b3BlcmF0aW9uTWFzayAhPSBEcmFnT3BlcmF0aW9uOjpQcml2YXRlKTsKICAgICBtX2VmZmVjdEFs
bG93ZWQgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb25NYXNrKTsKIH0KIAogdm9pZCBEYXRhVHJh
bnNmZXI6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJh
dGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0VtcHR5KCkg
fHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25NYXNrID09
IERyYWdPcGVyYXRpb25HZW5lcmljIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbk1v
dmUgfHwgb3BlcmF0aW9uTWFzayA9PSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3Bl
cmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfSkpOworICAgIEFTU0VSVF9BUkcob3Bl
cmF0aW9uTWFzaywgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uOjpDb3B5IHx8IG9wZXJh
dGlvbk1hc2suaXNFbXB0eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbjo6TGlu
ayB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb246OkdlbmVyaWMgfHwgb3BlcmF0aW9u
TWFzayA9PSBEcmFnT3BlcmF0aW9uOjpNb3ZlIHx8IG9wZXJhdGlvbk1hc2sgPT0gT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+KHsgRHJhZ09wZXJhdGlvbjo6R2VuZXJpYywgRHJhZ09wZXJhdGlvbjo6
TW92ZSB9KSk7CiAgICAgbV9kcm9wRWZmZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uTWFz
ayk7CiB9CiAKQEAgLTY5OCw3ICs2OTgsNyBAQCB2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RWZmZWN0
QWxsb3dlZChjb25zdCBTdHJpbmcmIGVmZmVjdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
SWdub3JlIGFueSBhdHRlbXB0cyB0byBzZXQgaXQgdG8gYW4gdW5rbm93biB2YWx1ZS4KLSAgICBp
ZiAoZHJhZ09wRnJvbUlFT3AoZWZmZWN0KSA9PSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICBp
ZiAoZHJhZ09wRnJvbUlFT3AoZWZmZWN0KSA9PSBEcmFnT3BlcmF0aW9uOjpQcml2YXRlKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIWNhbldyaXRlRGF0YSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
QWN0aW9ucy5oCmluZGV4IGYzZGQzZTVlYTM5ZDJmMmNmMGRkMjdiNmE1OTU3NTUwZDBlNjIyNzQu
LmU3NDU2MzUyMzFhOWJlYTA5ZTg3ODg3ODcyZWQ5Y2U0ZDIzZjFiYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdBY3Rpb25zLmgKQEAgLTYxLDE4ICs2MSwxOCBAQCB0eXBlZGVmIGVudW0gewogfSBEcmFn
U291cmNlQWN0aW9uOwogCiAvLyBTZWUgTlNEcmFnT3BlcmF0aW9uLCBfVUlEcmFnT3BlcmF0aW9u
IGFuZCBVSURyb3BPcGVyYXRpb24uCi1lbnVtIERyYWdPcGVyYXRpb24gewotICAgIERyYWdPcGVy
YXRpb25Db3B5ICAgID0gMSwKLSAgICBEcmFnT3BlcmF0aW9uTGluayAgICA9IDIsCi0gICAgRHJh
Z09wZXJhdGlvbkdlbmVyaWMgPSA0LAotICAgIERyYWdPcGVyYXRpb25Qcml2YXRlID0gOCwKLSAg
ICBEcmFnT3BlcmF0aW9uTW92ZSAgICA9IDE2LAotICAgIERyYWdPcGVyYXRpb25EZWxldGUgID0g
MzIsCitlbnVtIGNsYXNzIERyYWdPcGVyYXRpb24gOiB1aW50OF90IHsKKyAgICBDb3B5ICAgID0g
MSwKKyAgICBMaW5rICAgID0gMiwKKyAgICBHZW5lcmljID0gNCwKKyAgICBQcml2YXRlID0gOCwK
KyAgICBNb3ZlICAgID0gMTYsCisgICAgRGVsZXRlICA9IDMyLAogfTsKIAogY29uc3RleHByIE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkKIHsKLSAgICByZXR1cm4g
eyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmssIERyYWdPcGVyYXRpb25HZW5l
cmljLCBEcmFnT3BlcmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1vdmUsIERyYWdPcGVyYXRp
b25EZWxldGUgfTsKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uOjpDb3B5LCBEcmFnT3BlcmF0
aW9uOjpMaW5rLCBEcmFnT3BlcmF0aW9uOjpHZW5lcmljLCBEcmFnT3BlcmF0aW9uOjpQcml2YXRl
LCBEcmFnT3BlcmF0aW9uOjpNb3ZlLCBEcmFnT3BlcmF0aW9uOjpEZWxldGUgfTsKIH0KIAogZW51
bSBjbGFzcyBNYXlFeHRlbmREcmFnU2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07CkBAIC05OSwx
MiArOTksMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnSGFu
ZGxpbmdNZXRob2Q+IHsKIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4gewogICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CiAgICAgICAgIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24sCi0gICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5
LAotICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluaywKLSAgICAgICAgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkdlbmVyaWMsCi0gICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2
YXRlLAotICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSwKLSAgICAgICAgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZQorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpD
b3B5LAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpMaW5rLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uOjpHZW5lcmljLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uOjpQcml2YXRlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpNb3ZlLAorICAg
ICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpEZWxldGUKICAgICA+OwogfTsKIApAQCAtMTIw
LDEyICsxMjAsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogdGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJh
aXRzPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBPcHRpb25T
ZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sCi0gICAgICAgIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Db3B5LAotICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGlu
aywKLSAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMsCi0gICAgICAgIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlLAotICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
TW92ZSwKLSAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZQorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uOjpDb3B5LAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
OjpMaW5rLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpHZW5lcmljLAorICAgICAg
ICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpQcml2YXRlLAorICAgICAgICBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uOjpNb3ZlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpEZWxldGUK
ICAgICA+OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBi
ZmJhOTA4ODQ2Y2FiMzM5ZDNmZWJjYWVkNDE4NWU5NWNlOWZmOWU4Li4yZjMwMjA4ZTUwMTU2YTU1
NDBhNDM1Mzk3N2VlYzNhMTQzOTMwOWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gZG9jdW1lbnRGcmFnbWVudEZyb21EcmFnRGF0YShjb25zdCBEcmFnRGF0YSYgZHJhCiAKIERy
YWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OnBsYXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRpb24o
KQogewotICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbjo6TW92ZTsKIH0KIAogI2VuZGlmCkBAIC0zMjEsNyArMzIxLDcgQEAgT3B0aW9uYWw8RHJh
Z09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERy
YWdEYXRhJiBkcmEKICAgICAgICAgaWYgKGRyYWdPcGVyYXRpb24pCiAgICAgICAgICAgICBtX2Ry
YWdIYW5kbGluZ01ldGhvZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6UGFnZUxvYWQ7CiAgICAgfSBl
bHNlIGlmIChtX2RyYWdIYW5kbGluZ01ldGhvZCA9PSBEcmFnSGFuZGxpbmdNZXRob2Q6OlNldENv
bG9yKQotICAgICAgICBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAg
IGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uOjpDb3B5OwogCiAgICAgdXBkYXRlU3VwcG9y
dGVkVHlwZUlkZW50aWZpZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKG1fZHJhZ0hhbmRsaW5nTWV0
aG9kLCBkcmFnRGF0YSk7CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb247CkBAIC00MjIsNyArNDIy
LDcgQEAgRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWco
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHQKIAogICAgIGlmIChkZXN0aW5hdGlvbkFjdGlv
bk1hc2suY29udGFpbnMoRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0KSAmJiBjYW5Qcm9jZXNz
RHJhZyhkcmFnRGF0YSkpIHsKICAgICAgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zQ29sb3IoKSkg
ewotICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25HZW5lcmljOworICAg
ICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb246OkdlbmVyaWM7CiAgICAgICAg
ICAgICByZXR1cm4gRHJhZ0hhbmRsaW5nTWV0aG9kOjpTZXRDb2xvcjsKICAgICAgICAgfQogCkBA
IC00NDQsNyArNDQ0LDcgQEAgRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlE
b2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHQKICAgICAgICAgICAgIGNs
ZWFyRHJhZ0NhcmV0KCk7CiAKICAgICAgICAgRnJhbWUqIGlubmVyRnJhbWUgPSBlbGVtZW50LT5k
b2N1bWVudCgpLmZyYW1lKCk7Ci0gICAgICAgIGRyYWdPcGVyYXRpb24gPSBkcmFnSXNNb3ZlKGlu
bmVyRnJhbWUtPnNlbGVjdGlvbigpLCBkcmFnRGF0YSkgPyBEcmFnT3BlcmF0aW9uTW92ZSA6IERy
YWdPcGVyYXRpb25Db3B5OworICAgICAgICBkcmFnT3BlcmF0aW9uID0gZHJhZ0lzTW92ZShpbm5l
ckZyYW1lLT5zZWxlY3Rpb24oKSwgZHJhZ0RhdGEpID8gRHJhZ09wZXJhdGlvbjo6TW92ZSA6IERy
YWdPcGVyYXRpb246OkNvcHk7CiAKICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZGaWxlcyA9IGRy
YWdEYXRhLm51bWJlck9mRmlsZXMoKTsKICAgICAgICAgaWYgKG1fZmlsZUlucHV0RWxlbWVudFVu
ZGVyTW91c2UpIHsKQEAgLTY5NywyMSArNjk3LDIxIEBAIHN0YXRpYyBPcHRpb25hbDxEcmFnT3Bl
cmF0aW9uPiBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4K
IHsKICAgICAvLyBUaGlzIGlzIGRlc2lnbmVkIHRvIG1hdGNoIElFJ3Mgb3BlcmF0aW9uIGZhbGxi
YWNrIGZvciB0aGUgY2FzZSB3aGVyZQogICAgIC8vIHRoZSBwYWdlIGNhbGxzIHByZXZlbnREZWZh
dWx0KCkgaW4gYSBkcmFnIGV2ZW50IGJ1dCBkb2Vzbid0IHNldCBkcm9wRWZmZWN0LgotICAgIGlm
IChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJhdGlvbkNvcHksIERy
YWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlvblByaXZh
dGUsIERyYWdPcGVyYXRpb25Nb3ZlLCBEcmFnT3BlcmF0aW9uRGVsZXRlIH0pKQotICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suY29u
dGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uOjpDb3B5LCBEcmFnT3BlcmF0aW9uOjpMaW5rLCBEcmFn
T3BlcmF0aW9uOjpHZW5lcmljLCBEcmFnT3BlcmF0aW9uOjpQcml2YXRlLCBEcmFnT3BlcmF0aW9u
OjpNb3ZlLCBEcmFnT3BlcmF0aW9uOjpEZWxldGUgfSkpCisgICAgICAgIHJldHVybiBEcmFnT3Bl
cmF0aW9uOjpDb3B5OwogICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5j
b250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9u
TW92ZTsKLSAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
R2VuZXJpYykpCisgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJh
dGlvbjo6TW92ZSkpCisgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uOjpNb3ZlOworICAgIGlm
IChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb246OkdlbmVyaWMpKQog
ICAgICAgICByZXR1cm4gRHJhZ0NvbnRyb2xsZXI6OnBsYXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRp
b24oKTsKLSAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKLSAgICBpZiAoc291cmNl
T3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCi0gICAgICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTGluazsKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uOjpDb3B5KSkKKyAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb246OkNv
cHk7CisgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6
TGluaykpCisgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uOjpMaW5rOwogICAgIAogICAgIC8v
IEZJWE1FOiBEb2VzIElFIHJlYWxseSByZXR1cm4gImdlbmVyaWMiIGV2ZW4gaWYgbm8gb3BlcmF0
aW9ucyB3ZXJlIGFsbG93ZWQgYnkgdGhlIHNvdXJjZT8KLSAgICByZXR1cm4gRHJhZ09wZXJhdGlv
bkdlbmVyaWM7CisgICAgcmV0dXJuIERyYWdPcGVyYXRpb246OkdlbmVyaWM7CiB9CiAKIGJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9w
dGlvbmFsPERyYWdPcGVyYXRpb24+JiBvcGVyYXRpb24pCkBAIC05OTcsNyArOTk3LDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYg
c3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgLy8gU2VsZWN0aW9uLCBpbWFnZSwgYW5kIGxp
bmsgZHJhZ3MgcmVjZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25z
IHRoYXQKICAgICAgICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAgICAvLyBodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
P3Jldj00ODUyNiNMMzQzMAotICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrLmFkZCh7
IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uQ29weSB9KTsKKyAgICAgICAgbV9z
b3VyY2VEcmFnT3BlcmF0aW9uTWFzay5hZGQoeyBEcmFnT3BlcmF0aW9uOjpHZW5lcmljLCBEcmFn
T3BlcmF0aW9uOjpDb3B5IH0pOwogICAgIH0KIAogICAgIEFTU0VSVChzdGF0ZS5zb3VyY2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDBlMDEzNDVhYjI0NmY1OTgwOTM1
YjZkNmE4NjFmZjhiMzUxM2M2OTQuLjE0YmNjNWI4ZjJlY2ZhMmViNDVkNDczOWQ2YWY2NzAwNzM4
OGI1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIzMzcsMTEgKzIz
MzcsMTEgQEAgc3RhdGljIGJvb2wgdGFyZ2V0SXNGcmFtZShOb2RlKiB0YXJnZXQsIEZyYW1lKiYg
ZnJhbWUpCiBzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gY29udmVydERyb3Bab25lT3Bl
cmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ09wZXJhdGlvbikKIHsKICAg
ICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAiY29weSIpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uQ29weTsKKyAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb246OkNvcHk7CiAgICAgaWYgKGRy
YWdPcGVyYXRpb24gPT0gIm1vdmUiKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk1vdmU7
CisgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uOjpNb3ZlOwogICAgIGlmIChkcmFnT3BlcmF0
aW9uID09ICJsaW5rIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOworICAgICAg
ICByZXR1cm4gRHJhZ09wZXJhdGlvbjo6TGluazsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
fQogCkBAIC0yMzQ5LDkgKzIzNDksOSBAQCBzdGF0aWMgU3RyaW5nIGNvbnZlcnREcmFnT3BlcmF0
aW9uVG9Ecm9wWm9uZU9wZXJhdGlvbihPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcAogewogICAg
IGlmIChvcGVyYXRpb24pIHsKICAgICAgICAgc3dpdGNoICgqb3BlcmF0aW9uKSB7Ci0gICAgICAg
IGNhc2UgRHJhZ09wZXJhdGlvbk1vdmU6CisgICAgICAgIGNhc2UgRHJhZ09wZXJhdGlvbjo6TW92
ZToKICAgICAgICAgICAgIHJldHVybiAibW92ZSJfczsKLSAgICAgICAgY2FzZSBEcmFnT3BlcmF0
aW9uTGluazoKKyAgICAgICAgY2FzZSBEcmFnT3BlcmF0aW9uOjpMaW5rOgogICAgICAgICAgICAg
cmV0dXJuICJsaW5rIl9zOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKaW5kZXggZDcx
YWIxZGZlNDRhYWI2YTJjOTVjYzYyNWUyYWY4NmI0MzQ0Nzk2Yi4uNjYwYmE5NWU0ZTIxMDIwNDMy
ZTY4YWY0YWM4YjMwNjUwY2EzNTYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9n
dGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0Ry
YWdDb250cm9sbGVyR3RrLmNwcApAQCAtNTQsNyArNTQsNyBAQCBPcHRpb25hbDxEcmFnT3BlcmF0
aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0ZQogICAgIGlmIChk
cmFnRGF0YS5jb250YWluc1VSTCgpKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7
CisgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uOjpDb3B5OwogCiAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250
cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMu
bW0KaW5kZXggYzYwM2ZiZGRhNDM3Y2RhOGFkMzg0NTNhN2Q1NTZmZDRmNTQ5NGY3Ni4uYmQ5ODUw
N2IwYTM3NDg5NjUzZjhhZmI3OThkNzkyODMxNWE4MzBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KQEAgLTc5LDcgKzc5LDcgQEAgT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgaWYgKCFt
X2RvY3VtZW50VW5kZXJNb3VzZSB8fCAoIShkcmFnRGF0YS5mbGFncygpICYgKERyYWdBcHBsaWNh
dGlvbkhhc0F0dGFjaGVkU2hlZXQgfCBEcmFnQXBwbGljYXRpb25Jc1NvdXJjZSkpKSkKLSAgICAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlv
bjo6Q29weTsKIAogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CkBAIC0xMTEsNyArMTExLDcg
QEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6cGxhdGZvcm1HZW5lcmljRHJhZ09wZXJh
dGlvbigpCiB7CiAgICAgLy8gT24gaU9TLCBVSUtpdCBza2lwcyB0aGUgLXBlcmZvcm1Ecm9wIGlu
dm9jYXRpb24gYWx0b2dldGhlciBpZiBNT1ZFIGlzIGZvcmJpZGRlbi4KICAgICAvLyBUaHVzLCBp
ZiBNT1ZFIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBkcmFnIHNvdXJjZSBvcGVyYXRpb24gbWFzaywg
ZmFsbCBiYWNrIHRvIG9ubHkgb3RoZXIgYWxsb3dhYmxlIGFjdGlvbiwgQ09QWS4KLSAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgcmV0dXJuIERyYWdPcGVyYXRpb246OkNvcHk7CiB9
CiAKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0Zv
ckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9k
LCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKaW5kZXggOGRiOGM5ZDViYjZmNDZlNmE4NTllN2Vh
OTIyNmEyM2MyOWI3MWM4Ny4uMzJmNWIzYWU0MTU0YTM3ZmQ4YzIyNzljYTAxNTliNTY3Y2I2OTQ1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcApA
QCAtNDksNyArNDksNyBAQCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6
ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgLy8gSWYgdGhpcyBj
YW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJhdGlvbkZvckRyYWcgY2Fu
IGJlIHB1bGxlZCBpbnRvCiAgICAgLy8gV2ViQ29yZSBpdHNlbGYuCiAgICAgaWYgKGRyYWdEYXRh
LmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQotICAgICAgICByZXR1cm4gRHJh
Z09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uOjpDb3B5OwogICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1V0aWxpdGllcy5jcHAKaW5kZXggNWU3ZjJmMzYyNzk5NDBiYzFiZWExZjk1NjMwZThkMTYz
NmY3NjM4MC4uODE2MGY2MzU3YjBkNjA2N2QxYmRmYzc3YjM4ZTMyMTE4YmY2OTMxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKQEAgLTE1MywxMSAr
MTUzLDExIEBAIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBnZGtEcmFnQWN0aW9uVG9EcmFnT3Bl
cmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQogewogICAgIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBhY3Rpb247CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fQ09QWSkKLSAg
ICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgICAgIGFjdGlvbi5hZGQo
RHJhZ09wZXJhdGlvbjo6Q29weSk7CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9W
RSkKLSAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgICAgIGFjdGlv
bi5hZGQoRHJhZ09wZXJhdGlvbjo6TW92ZSk7CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJ
T05fTElOSykKLSAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uTGluayk7CisgICAgICAg
IGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlvbjo6TGluayk7CiAKICAgICByZXR1cm4gYWN0aW9uOwog
fQpAQCAtMTY2LDExICsxNjYsMTEgQEAgR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtE
cmFnQWN0aW9ucyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gY29yZUFjdGlvbikKIHsKICAgICB1
bnNpZ25lZCBnZGtBY3Rpb24gPSAwOwogCi0gICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJh
Z09wZXJhdGlvbkNvcHkpKQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRp
b246OkNvcHkpKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9DT1BZOwotICAgIGlm
IChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkKKyAgICBpZiAoY29yZUFj
dGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uOjpNb3ZlKSkKICAgICAgICAgZ2RrQWN0aW9uIHw9
IEdES19BQ1RJT05fTU9WRTsKLSAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0
aW9uTGluaykpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6TGlu
aykpCiAgICAgICAgIGdka0FjdGlvbiB8PSBHREtfQUNUSU9OX0xJTks7CiAKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oZ2RrQWN0aW9uKTsKQEAgLTE3OCwxMSArMTc4LDEx
IEBAIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMoT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24pCiAKIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlv
blRvU2luZ2xlR2RrRHJhZ0FjdGlvbihPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gY29yZUFjdGlv
bikKIHsKLSAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCisg
ICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbjo6Q29weSkpCiAgICAgICAg
IHJldHVybiBHREtfQUNUSU9OX0NPUFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJh
Z09wZXJhdGlvbk1vdmUpKQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRp
b246Ok1vdmUpKQogICAgICAgICByZXR1cm4gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlmIChjb3Jl
QWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAoY29yZUFjdGlvbi5j
b250YWlucyhEcmFnT3BlcmF0aW9uOjpMaW5rKSkKICAgICAgICAgcmV0dXJuIEdES19BQ1RJT05f
TElOSzsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBmODdiYmZmOTI1YmU2MTQ5
MjViMjcxYWVjZjJjNDcyNjkxMmNiODVlLi4xYmZkMjgyNTlmOGZhMWQ5YzM2YWNiY2IzMDRjZWM2
M2IxZDQ3NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAg
LTIwOSw3ICsyMDksNiBAQCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJl
ZCgpOgogICAgICAgICAnV2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCcsCiAgICAgICAgICdXZWJD
b3JlOjpEb2N1bWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldv
cmtlcklkZW50aWZpZXInLAotICAgICAgICAnV2ViQ29yZTo6RHJhZ09wZXJhdGlvbicsICAjIEZJ
WE1FOiBSZW1vdmUgYWZ0ZXIgY29udmVydGluZyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIHRvIGVu
dW0gY2xhc3MuCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1Nv
Y2tldElkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKaW5kZXggODk3ODlmMzgyYTllNjc0ZjkxMWU5
Yzg5MTRjYmE3NmE5ZmVjOTAxZS4uZDZkMWEzYmU0MDFlMTI4MmIxOTBmOGQxMzFjOTc1OGQ1YWIz
YzBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdB
Y3Rpb25zSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
RHJhZ0FjdGlvbnNJbnRlcm5hbC5oCkBAIC00NSwxNyArNDUsMTcgQEAgaW5saW5lIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNEcmFnT3Bl
cmF0aW9uIG8KIHsKICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gcmVzdWx0
OwogICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5KQotICAgICAgICByZXN1
bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICAgICAgcmVzdWx0LmFkZChX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpDb3B5KTsKICAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFn
T3BlcmF0aW9uTGluaykKLSAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
TGluayk7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6TGluayk7
CiAgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWMpCi0gICAgICAgIHJl
c3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAgICAgICByZXN1bHQu
YWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb246OkdlbmVyaWMpOwogICAgIGlmIChvcGVyYXRpb24g
JiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQotICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uOjpQcml2YXRlKTsKICAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92
ZSkKLSAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAg
ICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6TW92ZSk7CiAgICAgaWYgKG9w
ZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkRlbGV0ZSkKLSAgICAgICAgcmVzdWx0LmFkZChXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKTsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uOjpEZWxldGUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8g
VVNFKEFQUEtJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KaW5kZXggNjliNjJkZTI1MmYxZDMwZjkyYjUxODE3Njg2YmYxMDgyZDg0MDQ3MC4uMTE0NWJk
NDQwMDc3MDM3N2E2ODc1OTY2NGVmM2RiOTEwMjA0OGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTM5NjIsMTcgKzM5NjIsMTcgQEAgc3Rh
dGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4g
ZHJhZ09wZXJhdGlvbikKICAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CiAKICAg
ICBzd2l0Y2ggKCpkcmFnT3BlcmF0aW9uKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uQ29weToKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb246OkNvcHk6CiAgICAgICAg
IHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OwotICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbkxpbms6CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpMaW5rOgogICAgICAg
ICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTGluazsKLSAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25HZW5lcmljOgorICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6R2VuZXJpYzoK
ICAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7Ci0gICAgY2FzZSBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uUHJpdmF0ZToKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb246
OlByaXZhdGU6CiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOwotICAgIGNh
c2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmU6CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uOjpNb3ZlOgogICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTW92ZTsKLSAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGU6CisgICAgY2FzZSBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uOjpEZWxldGU6CiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25EZWxldGU7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAyOTI3NjFjYzg1M2U3ODljNzkyZTJhOWI5MDg2
YTRmZGVkZDE1MTQ4Li5kMmI0ZjczOGVkNGU5OTZlNjg1YjM2Y2UwNzk3MmViZjJjY2M5MzgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0KQEAgLTczMTAsOSArNzMxMCw5IEBAIC0gKHZvaWQpY29tcHV0ZUNsaWVu
dEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lv
biBvCiBzdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09w
ZXJhdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCiB7CiAg
ICAgaWYgKG9wZXJhdGlvbikgewotICAgICAgICBpZiAoKm9wZXJhdGlvbiA9PSBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgaWYgKCpvcGVyYXRpb24gPT0gV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbjo6TW92ZSkKICAgICAgICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Nb3Zl
OwotICAgICAgICBpZiAoKm9wZXJhdGlvbiA9PSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSkK
KyAgICAgICAgaWYgKCpvcGVyYXRpb24gPT0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6Q29weSkK
ICAgICAgICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Db3B5OwogICAgIH0KICAgICByZXR1
cm4gVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOwpAQCAtNzMyNCwxMSArNzMyNCwxMSBAQCBzdGF0aWMg
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25Gb3JVSURy
b3BPcGVyYXRpb24oVUlEcgogICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOgogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uRm9yYmlkZGVu
OgotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpQcml2YXRlOwogICAgIGNhc2UgVUlEcm9w
T3BlcmF0aW9uQ29weToKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5
OworICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6Q29weTsKICAgICBjYXNl
IFVJRHJvcE9wZXJhdGlvbk1vdmU6Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uTW92ZTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb246Ok1vdmU7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CkBAIC03MzQyLDcgKzczNDIsNyBAQCAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvckRy
b3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFnRGVzdAogCiAgICAgYXV0
byBkcmFnT3BlcmF0aW9uTWFzayA9IFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24oKTsKICAgICBp
ZiAoIXNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbikKLSAgICAgICAgZHJhZ09wZXJhdGlvbk1h
c2sucmVtb3ZlKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAgZHJhZ09wZXJh
dGlvbk1hc2sucmVtb3ZlKFdlYkNvcmU6OkRyYWdPcGVyYXRpb246Ok1vdmUpOwogICAgIHJldHVy
biB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdB
cHBsaWNhdGlvbk5vbmUsIFdlYktpdDo6Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKSB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCAzOGU3OTA5MTUxYmY3ODZlZTUyZTBmMTc4NzAz
YWExZGIzYjU0YjY3Li44NTRjMDRmZTJhMTA0ZWFmOGEyNDA4N2I3NDM0ZGNmOGEwNjU5Y2ZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAg
LTQyMzMsMTcgKzQyMzMsMTcgQEAgLSAodm9pZCl0b3VjaDooV2ViRXZlbnQgKilldmVudAogc3Rh
dGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCiB7CiAgICAgTlNEcmFnT3BlcmF0aW9uIHJlc3VsdCA9IE5TRHJhZ09w
ZXJhdGlvbk5vbmU7Ci0gICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbkNvcHkpKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6
OkRyYWdPcGVyYXRpb246OkNvcHkpKQogICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9u
Q29weTsKLSAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uTGluaykpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbjo6TGluaykpCiAgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25MaW5rOwot
ICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5l
cmljKSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uOjpHZW5lcmljKSkKICAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7
Ci0gICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvblBy
aXZhdGUpKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb246OlByaXZhdGUpKQogICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uUHJpdmF0
ZTsKLSAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
TW92ZSkpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbjo6TW92ZSkpCiAgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25Nb3ZlOwotICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUp
KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb246
OkRlbGV0ZSkpCiAgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25EZWxldGU7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCAwOTc2NzdkOWRhYmM4NzgwOWMxY2MwZGQ0ZDU3OGU3M2NjYzdjMWQzLi4yYzI4
NjliOWM1MzlhN2YzMDIyYWExYjk2MDJlMDVmNDAxNmY0OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02MDUsMjIgKzYwNSwyMiBAQCBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJh
Z09wZXJhdGlvbiBvcGVyYQogCiAjaWYgVVNFKEFQUEtJVCkKICAgICBpZiAob3BlcmF0aW9uICYg
TlNEcmFnT3BlcmF0aW9uQ29weSkKLSAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uQ29weSk7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6
Q29weSk7CiAgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCi0gICAgICAg
IHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgICAgICByZXN1bHQu
YWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb246OkxpbmspOwogICAgIGlmIChvcGVyYXRpb24gJiBO
U0RyYWdPcGVyYXRpb25HZW5lcmljKQotICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25HZW5lcmljKTsKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uOjpHZW5lcmljKTsKICAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0
ZSkKLSAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7Cisg
ICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6UHJpdmF0ZSk7CiAgICAg
aWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCi0gICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6
OkRyYWdPcGVyYXRpb246Ok1vdmUpOwogICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRp
b25EZWxldGUpCi0gICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0
ZSk7CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6RGVsZXRlKTsK
ICNlbHNlCiAgICAgaWYgKG9wZXJhdGlvbiAmIF9VSURyYWdPcGVyYXRpb25Db3B5KQotICAgICAg
ICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICAgICAgcmVzdWx0
LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpDb3B5KTsKICAgICBpZiAob3BlcmF0aW9uICYg
X1VJRHJhZ09wZXJhdGlvbk1vdmUpCi0gICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbk1vdmUpOworICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb246
Ok1vdmUpOwogI2VuZGlmIC8vIFVTRShBUFBLSVQpCiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
NjMzLDE3ICs2MzMsMTcgQEAgc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKICAgICAgICAgcmV0dXJuIE5TRHJh
Z09wZXJhdGlvbk5vbmU7CiAKICAgICBzd2l0Y2ggKCpkcmFnT3BlcmF0aW9uKSB7Ci0gICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weToKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb246OkNvcHk6CiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OwotICAgIGNh
c2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbms6CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uOjpMaW5rOgogICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTGluazsKLSAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljOgorICAgIGNhc2UgV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbjo6R2VuZXJpYzoKICAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkdlbmVy
aWM7Ci0gICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZToKKyAgICBjYXNlIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb246OlByaXZhdGU6CiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVy
YXRpb25Qcml2YXRlOwotICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmU6CisgICAg
Y2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpNb3ZlOgogICAgICAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uTW92ZTsKLSAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGU6Cisg
ICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpEZWxldGU6CiAgICAgICAgIHJldHVybiBO
U0RyYWdPcGVyYXRpb25EZWxldGU7CiAgICAgfQogCkBAIC02NTcsMTcgKzY1NywxNyBAQCBzdGF0
aWMgX1VJRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4g
ZHJhZ09wZXJhdGlvbikKICAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOwogCiAg
ICAgc3dpdGNoICgqZHJhZ09wZXJhdGlvbikgewotICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbkNvcHk6CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uOjpDb3B5OgogICAgICAg
ICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbkNvcHk7Ci0gICAgY2FzZSBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTGluazoKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb246Okxpbms6CiAgICAg
ICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9uZTsKLSAgICBjYXNlIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25HZW5lcmljOgorICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbjo6R2VuZXJp
YzoKICAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOwotICAgIGNhc2UgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
OjpQcml2YXRlOgogICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7Ci0gICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb246Ok1vdmU6CiAgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTW92ZTsKLSAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGU6CisgICAgY2FzZSBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uOjpEZWxldGU6CiAgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9uZTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggZTliNjVmYTc1OWJkNTE0MDRhMzcyNjdhMTA5
YWVmYTA0ODVlNWQzMC4uNWIxOTNhN2RhYTMwNmY2NTNlOTAzY2JmYTcyZTFlYTMzZjAxNWVjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAKQEAgLTQ3LDEzICs0NywxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIHN0YXRpYyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJz
b3JzKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQogewogICAgIERXT1JE
IHJlc3VsdCA9IERST1BFRkZFQ1RfTk9ORTsKLSAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uQ29weSkpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJh
Z09wZXJhdGlvbjo6Q29weSkpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX0NPUFk7IAot
ICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBp
ZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uOjpMaW5rKSkKICAgICAgICAg
cmVzdWx0IHw9IERST1BFRkZFQ1RfTElOSzsgCi0gICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFp
bnMoRHJhZ09wZXJhdGlvbk1vdmUpKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERy
YWdPcGVyYXRpb246Ok1vdmUpKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9NT1ZFOwot
ICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25HZW5lcmljKSkKKyAg
ICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uOjpHZW5lcmljKSkKICAg
ICAgICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfTU9WRTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtMTY1LDExICsxNjUsMTEgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0
ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJgogICAgICAgICBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uOwogICAgICAgICBpZiAoaHIgPT0gRFJBR0RS
T1BfU19EUk9QKSB7CiAgICAgICAgICAgICBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9DT1BZKQot
ICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb246OkNvcHk7CiAgICAgICAgICAgICBlbHNl
IGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX0xJTkspCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9u
ID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09w
ZXJhdGlvbjo6TGluazsKICAgICAgICAgICAgIGVsc2UgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1Rf
TU9WRSkKLSAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTW92ZTsKKyAg
ICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uOjpNb3ZlOwogICAgICAgICB9
CiAgICAgICAgIGZyYW1lLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVyYXRl
TW91c2VFdmVudChtX3dlYlZpZXcsIGZhbHNlKSwgb3BlcmF0aW9uKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDQyZGNkMjg4YmRhNmRhMjE4MTFkYjMyYTI1M2Ex
OTcyMGZjOTE0NWUuLjM3ZTFlMDJlMjc1ODIzMTdhMTZlZDNhYzE4MDlkMTUyYTUxNDczM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC01ODQ4LDEzICs1ODQ4LDEzIEBAIHN0
YXRpYyBEV09SRCBkcmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29yKE9wdGlvbmFsPERyYWdPcGVyYXRp
b24+IG9wZXJhdGlvbikKICAgICAgICAgcmV0dXJuIERST1BFRkZFQ1RfTk9ORTsKIAogICAgIERX
T1JEIHJlc3VsdCA9IERST1BFRkZFQ1RfTk9ORTsKLSAgICBpZiAoKm9wZXJhdGlvbiA9PSBEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICBpZiAoKm9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uOjpDb3B5
KQogICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX0NPUFk7Ci0gICAgZWxzZSBpZiAoKm9wZXJh
dGlvbiA9PSBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uID09IERy
YWdPcGVyYXRpb246OkxpbmspCiAgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1RfTElOSzsKLSAg
ICBlbHNlIGlmICgqb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Nb3ZlKQorICAgIGVsc2UgaWYg
KCpvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbjo6TW92ZSkKICAgICAgICAgcmVzdWx0ID0gRFJP
UEVGRkVDVF9NT1ZFOwotICAgIGVsc2UgaWYgKCpvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkdl
bmVyaWMpCisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uOjpHZW5lcmlj
KQogICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX01PVkU7IC8vIFRoaXMgYXBwZWFycyB0byBi
ZSB0aGUgRmlyZWZveCBiZWhhdmlvdXIuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTU4NzEs
MTEgKzU4NzEsMTEgQEAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IFdlYlZpZXc6OmtleVN0YXRl
VG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb24KICAgICBhdXRvIG9wZXJhdGlv
bk1hc2sgPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2so
KTsKIAogICAgIGlmICgoZ3JmS2V5U3RhdGUgJiAoTUtfQ09OVFJPTCB8IE1LX1NISUZUKSkgPT0g
KE1LX0NPTlRST0wgfCBNS19TSElGVCkpCi0gICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdP
cGVyYXRpb25MaW5rIH07CisgICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdPcGVyYXRpb246
OkxpbmsgfTsKICAgICBlbHNlIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19DT05UUk9MKSA9PSBNS19D
T05UUk9MKQotICAgICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uQ29weSB9Owor
ICAgICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uOjpDb3B5IH07CiAgICAgZWxz
ZSBpZiAoKGdyZktleVN0YXRlICYgTUtfU0hJRlQpID09IE1LX1NISUZUKQotICAgICAgICBvcGVy
YXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uR2VuZXJpYyB9OworICAgICAgICBvcGVyYXRpb25N
YXNrID0geyBEcmFnT3BlcmF0aW9uOjpHZW5lcmljIH07CiAKICAgICByZXR1cm4gb3BlcmF0aW9u
TWFzazsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA4NjZkYzU2N2IxNWQyMTFhNDg2OTY4MTIwOTY4MWY0ZWQ1YzNjYTdmLi5jM2QyOWRmNjM0
Y2E1ZDMxOWI2ZDY3YjljMjJkYWZlODM5YWNjYWUzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMDYgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBbSVBDXSBBZG9wdCBl
bnVtIGNsYXNzIGZvciBEcmFnT3BlcmF0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcv
Yi8yMTI4NzA+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDA2OTk0MD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvZG8td2ViY29y
ZS1yZW5hbWU6CisgICAgICAgIC0gRG8gRHJhZ09wZXJhdGlvbiByZW5hbWVzLgorCiAyMDIwLTA2
LTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENs
ZWFyIFdlYlBhZ2VQcm94eSBldmVudCBzdGF0ZSBiZXR3ZWVuIHRlc3RzCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lIGIvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3Jl
LXJlbmFtZQppbmRleCAwY2NkZGEyYTA2ZTEwZDk3YWQyM2Y5M2JkZGRmZWJmMzdiMmQxOTI4Li4y
YTkxZTU3ZTVhZjA1OGYxMWVlM2IxMGY0YzhiZjVjZTk2ODIyYzQzIDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCisrKyBiL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29y
ZS1yZW5hbWUKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBwZXJsCiAKLSMgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDIsNyArMTAyLDEyIEBAIHN1YiB3
YW50ZWQKIG15ICRpc0RPTVR5cGVSZW5hbWUgPSAwOwogbXkgJXJlbmFtZXMgPSAoCiAgICAgIyBS
ZW5hbWVzIGdvIGhlcmUgaW4gdGhlIGZvcm0gb2Y6Ci0gICAgImZsYWdJc0F0b21pYyIgPT4gImZs
YWdJc0F0b20iLAorICAgICJEcmFnT3BlcmF0aW9uQ29weSIgPT4gIkRyYWdPcGVyYXRpb246OkNv
cHkiLAorICAgICJEcmFnT3BlcmF0aW9uTGluayIgPT4gIkRyYWdPcGVyYXRpb246OkxpbmsiLAor
ICAgICJEcmFnT3BlcmF0aW9uR2VuZXJpYyIgPT4gIkRyYWdPcGVyYXRpb246OkdlbmVyaWMiLAor
ICAgICJEcmFnT3BlcmF0aW9uUHJpdmF0ZSIgPT4gIkRyYWdPcGVyYXRpb246OlByaXZhdGUiLAor
ICAgICJEcmFnT3BlcmF0aW9uTW92ZSIgPT4gIkRyYWdPcGVyYXRpb246Ok1vdmUiLAorICAgICJE
cmFnT3BlcmF0aW9uRGVsZXRlIiA9PiAiRHJhZ09wZXJhdGlvbjo6RGVsZXRlIiwKICk7CiAKIG15
ICVyZW5hbWVzQ29udGVtcGxhdGVkRm9yVGhlRnV0dXJlID0gKAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401372</attachid>
            <date>2020-06-08 14:26:43 -0700</date>
            <delta_ts>2020-06-08 16:58:16 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-212885-20200608142726.patch</filename>
            <type>text/plain</type>
            <size>75403</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI5OWM3MzUwYTA4MTQwZmNlY2UxMjg2
NDY1ZmJlYWY2YTQyNmE2YjQuLjI4ZDhjZWNlN2NmNWIyMzMzYzg5OTY0YTY2M2VlYWEyOTNhMzI2
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDYtMDggIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBbSVBDXSBBZG9wdCBlbnVtIGNsYXNzIGZvciBEcmFn
U291cmNlQWN0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI4ODU+CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS82NDA5NDEzND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9PcHRpb25TZXQuaDoKKyAgICAgICAgKFdURjo6
T3B0aW9uU2V0OjpoYXNFeGFjdGx5T25lQml0U2V0IGNvbnN0KTogQWRkLgorICAgICAgICAtIE1v
dmUgaGVyZSBmcm9tIFdlYkNvcmU6OkV4YWN0bHlPbmVCaXRTZXQoKSBpbgorICAgICAgICAgIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcC4KKyAgICAgICAgKFdURjo6T3B0aW9u
U2V0Ojp0b1NpbmdsZVZhbHVlIGNvbnN0KTogQWRkLgorICAgICAgICAtIFVzZSBoYXNFeGFjdGx5
T25lQml0U2V0KCkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgZXhhY3RseSBvbmUKKyAgICAgICAgICBl
bnVtIGJpdG1hc2sgdmFsdWUgY2FuIGJlIHJldHVybmVkLgorCiAyMDIwLTA2LTA4ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IHJl
YWQtb25seSBtb2RlIGZvciBwcmVmZXJlbmNlcyBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggYTA4MjQ5NjdjZDY1OTk3ZWE4NjlmNjBjMmVhYWEwMGMwYjY5ODU4NS4uZDI1
MWVlMDQ2YzM5MGU4Njg0NTI5MGYxY2I0NzMyNmZjZjdmYzU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDY1IEBACisyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+
CisKKyAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ1NvdXJjZUFjdGlvbgor
ICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyODg1PgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjQwOTQxMzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3VtbWFyeToKKyAgICAgICAgLSBDb252ZXJ0IERyYWdTb3VyY2VBY3Rpb24gdG8g
ZW51bSBjbGFzcy4KKyAgICAgICAgLSBSZW1vdmUgRHJhZ1NvdXJjZUFjdGlvbk5vbmUgYnkgdXNp
bmcgT3B0aW9uYWw8PiBhbmQKKyAgICAgICAgICBPcHRpb25TZXQ8PiAoYXMgZGljdGF0ZWQgYnkg
aG93IHRoZSBjb2RlIHVzZWQgdGhlIHZhbHVlKS4KKyAgICAgICAgLSBSZW1vdmUgRHJhZ1NvdXJj
ZUFjdGlvbkFueSBhbmQgcmVwbGFjZSAoYXMgbmVlZGVkKSB3aXRoCisgICAgICAgICAgYW55RHJh
Z1NvdXJjZUFjdGlvbigpLiAoU29tZS0tYnV0IG5vdCBhbGwtLXVzZXMgd2VyZSByZW1vdmVkLikK
KyAgICAgICAgLSBBZGQgYm90aCBXVEY6OkVudW1UcmFpdHM8PiBhbmQgV1RGOjpPcHRpb25TZXRU
cmFpdHM8PiBmb3IKKyAgICAgICAgICBEcmFnU291cmNlQWN0aW9uIHNpbmNlIGJvdGggT3B0aW9u
YWw8PiBhbmQgT3B0aW9uU2V0PD4gYXJlCisgICAgICAgICAgdXNlZCB3aXRoIElQQy4KKworICAg
ICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBhZ2UvRHJhZ0FjdGlv
bnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pOgorICAgICAgICAtIENv
bnZlcnQgdG8gZW51bSBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdTb3VyY2VBY3Rp
b24pOiBBZGQuCisgICAgICAgIC0gUmVwbGFjZXMgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbkFu
eS4KKyAgICAgICAgKFdURjo6RW51bVRyYWl0czxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPik6
IEFkZC4KKyAgICAgICAgKFdURjo6T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdTb3VyY2VB
Y3Rpb24+KTogQWRkLgorICAgICAgICAqIHBhZ2UvRHJhZ0NsaWVudC5oOgorICAgICAgICAqIHBh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6
OmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJhZ2dhYmxlRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29u
dHJvbGxlcjo6cHJlcGFyZUZvckRyYWdTdGFydCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9s
bGVyOjpkb1N5c3RlbURyYWcpOgorICAgICAgICAtIFVzZSBPcHRpb25TZXQ8Pjo6dG9TaW5nbGVW
YWx1ZSgpIGFuZCBhZGQgQVNTRVJUKCkgdGhhdCBpdCBkb2VzCisgICAgICAgICAgbm90IHJldHVy
biBXVEY6Om51bGxvcHQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdTb3VyY2VBY3Rpb24gY29uc3QpOgorICAg
ICAgICAqIHBhZ2UvRHJhZ1N0YXRlLmg6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0aW9u
c0FsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlz
dGVyZXNpc0V4Y2VlZGVkIGNvbnN0KToKKyAgICAgICAgLSBVc2UgT3B0aW9uU2V0PD46OnRvU2lu
Z2xlVmFsdWUoKSBhbmQgYWRkIEFTU0VSVCgpIHRoYXQgaXQgZG9lcworICAgICAgICAgIG5vdCBy
ZXR1cm4gV1RGOjpudWxsb3B0LgorICAgICAgICAtIFJlbW92ZSBjYXNlIHN0YXRlbWVudHMgZm9y
IERyYWdTb3VyY2VBY3Rpb25Ob25lIGFuZAorICAgICAgICAgIERyYWdTb3VyY2VBY3Rpb25Bbnks
IGFsb25nIHdpdGggQVNTRVJUX05PVF9SRUFDSEVEKCkuIFRoZQorICAgICAgICAgIEFTU0VSVCgp
IGZvciB0b1NpbmdsZVZhbHVlKCkgcmVwbGFjZXMgdGhlIERyYWdTb3VyY2VBY3Rpb25Ob25lCisg
ICAgICAgICAgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlkU3RhcnRE
cmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV4YWN0bHlPbmVCaXRTZXQpOiBEZWxldGUuCisgICAg
ICAgIC0gTW92ZSB0byBXVEY6Ok9wdGlvblNldDw+OjpoYXNFeGFjdGx5T25lQml0U2V0KCkuCisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAgICAtIEFk
ZCBjb2RlIHRvICNpZm5kZWYgTkRFQlVHLyNlbmRpZiBpbnN0ZWFkIG9mIG1vZGlmeWluZworICAg
ICAgICAgIGRyYWdTdGF0ZSgpLnR5cGUgaW4tcGxhY2Ugc2luY2UgaXQgc2VlbWVkIHdlaXJkIHRv
IG1vZGlmeSBpdAorICAgICAgICAgIGp1c3QgdG8gY2hlY2sgYW4gQVNTRVJUKCksIGV2ZW4gdGhv
dWdoIGl0IHdhcyBvdmVyd3JpdHRlbgorICAgICAgICAgIGltbWVkaWF0ZWx5IGFmdGVyIHRoYXQu
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFn
SXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0l0ZW06OmVuY29kZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnSXRlbTo6ZGVjb2RlKToKKyAgICAgICAgLSBTdG9wIHVzaW5nIGRl
Y29kZUVudW0oKS9lbmNvZGVFbnVtKCkgd2l0aAorICAgICAgICAgIE9wdGlvbmFsPERyYWdTb3Vy
Y2VBY3Rpb24+LgorCiAyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CiAKICAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ09wZXJhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1NGUyZDdjNjliYjk4Y2FjZDYwMzljNWI3MjJkMzZlOGRlZjQ0OTZhLi40MjAw
YWVmNjJlNjIwMjRhMjliZDE3ZmM3NTFjYjQ3YmViZDIyNGVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ2IEBACisyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
KyAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ1NvdXJjZUFjdGlvbgorICAg
ICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyODg1PgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNjQwOTQxMzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3VtbWFyeToKKyAgICAgICAgLSBDb252ZXJ0IGFyZ3VtZW50IHBhcmFtZXRlcnMgZnJv
bSB1aW50NjRfdCB0bworICAgICAgICAgIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPi4KKyAg
ICAgICAgLSBDb252ZXJ0IERyYWdTb3VyY2VBY3Rpb24gdG8gT3B0aW9uU2V0PERyYWdTb3VyY2VB
Y3Rpb24+LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAg
IC0gTWFwIERyYWdTb3VyY2VBY3Rpb24gZW51bSB0byBEcmFnQWN0aW9ucy5oIGhlYWRlci4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0Ry
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkVXNlRHJh
Z0ltYWdlVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OnNo
b3VsZFVzZVZpc2libGVQYXRoVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZSk6CisgICAgICAg
IChXZWJLaXQ6OnNob3VsZFVzZVRleHRJbmRpY2F0b3JUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6Y2FuVXBkYXRlUHJldmlld0ZvckFjdGl2ZURyYWdTb3Vy
Y2UpOgorICAgICAgICAoV2ViS2l0OjpEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmFueUFjdGl2
ZURyYWdTb3VyY2VJcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZTo6c3RhZ2VEcmFnSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZTo6aGFzU3RhZ2VkRHJhZ1NvdXJjZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmlld3NGb3JBY3RpdmVEcmFnU291
cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3N0YXJ0RHJhZzppdGVtOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnNdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBkcmFnSW50ZXJhY3Rpb246d2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW1h
dG9yOnNlc3Npb246XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdERyYWdTdGFydCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRy
YWdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0
aW9uTWFza0ZvclBvaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMgY29uc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6cmVxdWVzdERyYWdTdGFydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbik6CisKIDIwMjAtMDYtMDgg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbSVBDXSBBZG9w
dCBlbnVtIGNsYXNzIGZvciBEcmFnT3BlcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggOWJkN2QzY2EwOTlhMGQ4MjBmY2NjMWI0MDJiYmE2ZWNhMWNlMTE2MC4uYWQ0MmE0YjJj
OWI1ZjZkYzAwOWZmYmY1NTE5Mjc2NmRjMmM1ZDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ1Nv
dXJjZUFjdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyODg1PgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjQwOTQxMzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3VtbWFyeToKKyAgICAgICAgLSBBZGQgYW5kIHVzZSBjb252
ZXJzaW9uIGZ1bmN0aW9ucyBiZXR3ZWVuCisgICAgICAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24+IGFuZCBXZWJEcmFnU291cmNlQWN0aW9uLgorICAgICAgICAtIFVwZGF0
ZSBtZXRob2Qgc2lnbmF0dXJlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tOgorICAg
ICAgICAoY29yZURyYWdTb3VyY2VBY3Rpb25NYXNrKTogQWRkLgorICAgICAgICAoV2ViRHJhZ0Ns
aWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludCk6CisgICAgICAgIChXZWJEcmFnQ2xp
ZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24pOgorICAgICAgICAoV2ViRHJhZ0NsaWVu
dDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChr
aXQpOiBBZGQuCisgICAgICAgIC0gQ29udmVydCBmcm9tIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24+IHRvCisgICAgICAgICAgV2ViRHJhZ1NvdXJjZUFjdGlvbi4KKyAgICAgICAg
KC1bV2ViVmlldyBfc3RhcnREcmFnOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmg6CisgICAgICAgIChraXQpOiBBZGQgZGVjbGFyYXRpb24gdG8gcmV1c2UgZnVuY3Rpb24g
aW4gV2ViRHJhZ0NsaWVudC5tbS4KKwogMjAyMC0wNi0wOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtJUENdIEFkb3B0IGVudW0gY2xhc3MgZm9yIERyYWdP
cGVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzZDBhYmZiZTg0NDVjY2I0
YWE1MjZkZWNiNGQ3NThkNDFiNWQ2YTMwLi44NTFiYWM2OWI1OGQxNDdjYzgzZGJjOWJmM2E5NzJl
NjE0YzJkODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMjAtMDYtMDggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSVBDXSBBZG9wdCBlbnVtIGNsYXNzIGZvciBEcmFnU291cmNlQWN0aW9uCisgICAgICAgIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8yMTI4ODU+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDA5
NDEzND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
dW1tYXJ5OgorICAgICAgICAtIEFkZCBhbmQgdXNlIGNvbnZlcnNpb24gZnVuY3Rpb25zIGJldHdl
ZW4KKyAgICAgICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYW5kIFdl
YkRyYWdTb3VyY2VBY3Rpb24uCisgICAgICAgIC0gVXBkYXRlIG1ldGhvZCBzaWduYXR1cmVzLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChj
b3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2spOiBBZGQuCisgICAgICAgIChraXQpOiBBZGQuCisgICAg
ICAgIC0gQ29udmVydCBmcm9tIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gdG8gV2ViRHJhZ1Nv
dXJjZUFjdGlvbi4KKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNr
Rm9yUG9pbnQpOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6
ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludCk6CisKIDIwMjAtMDYtMDggIERhdmlkIEtpbHpl
ciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBbSVBDXSBBZG9wdCBlbnVtIGNsYXNz
IGZvciBEcmFnT3BlcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQu
aCBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCmluZGV4IDJkY2Y0M2MyZTYyOTRkZDIzMmEx
MjAyZmIyZWZiMDM2ZDhjZWY1M2YuLjU5YmRhZTYzYzQwOGVhYzVmNTE5OGM2NDY0MjgyYmExNzY2
MWRiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL09wdGlvblNldC5oCkBAIC0yMDUsNiArMjA1LDE2IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9zdG9yYWdlICY9IH5vcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0KIAorICAgIGNvbnN0
ZXhwciBib29sIGhhc0V4YWN0bHlPbmVCaXRTZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc3RvcmFnZSAmJiAhKG1fc3RvcmFnZSAmIChtX3N0b3JhZ2UgLSAxKSk7CisgICAgfQor
CisgICAgY29uc3RleHByIE9wdGlvbmFsPEU+IHRvU2luZ2xlVmFsdWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGhhc0V4YWN0bHlPbmVCaXRTZXQoKSA/IE9wdGlvbmFsPEU+KHN0YXRp
Y19jYXN0PEU+KG1fc3RvcmFnZSkpIDogV1RGOjpudWxsb3B0OworICAgIH0KKwogICAgIGNvbnN0
ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMsIE9wdGlvblNldCByaHMp
CiAgICAgewogICAgICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSByaHMubV9zdG9yYWdlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAppbmRleCA3OWIwYjMxOTMxMDk5OWVl
OTM4YzQ2NWI1MTgzNTEwZjU5NTI3NTlkLi44N2QwYjg2Mzk1NmRmMDA1M2Y5NDkwNDhkMzBmMTYw
YzlmZTFiOWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtMTc4
LDcgKzE3OCw3IEBAIGNsYXNzIEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgZmluYWwgOiBw
dWJsaWMgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgewogY2xhc3MgRW1wdHlEcmFnQ2xpZW50IGZp
bmFsIDogcHVibGljIERyYWdDbGllbnQgewogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGlu
YXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpIGZpbmFs
IHsgfQogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rp
b24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgZmluYWwgeyB9Ci0gICAgRHJhZ1Nv
dXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50Jikg
ZmluYWwgeyByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7IH0KKyAgICBPcHRpb25TZXQ8RHJh
Z1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2lu
dCYpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQogICAgIHZvaWQgc3RhcnREcmFnKERyYWdJdGVtLCBE
YXRhVHJhbnNmZXImLCBGcmFtZSYpIGZpbmFsIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0
aW9ucy5oCmluZGV4IGU3NDU2MzUyMzFhOWJlYTA5ZTg3ODg3ODcyZWQ5Y2U0ZDIzZjFiYmYuLjFm
MDE1NDY2YTlkMGIyYTExZGE5ODRkYTllNjI5MzdhNGZiMTRiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdBY3Rpb25zLmgKQEAgLTQ0LDIxICs0NCwzNSBAQCBjb25zdGV4cHIgT3B0aW9uU2V0PERyYWdE
ZXN0aW5hdGlvbkFjdGlvbj4gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkKICAgICByZXR1cm4g
T3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4geyBEcmFnRGVzdGluYXRpb25BY3Rpb246
OkRIVE1MLCBEcmFnRGVzdGluYXRpb25BY3Rpb246OkVkaXQsIERyYWdEZXN0aW5hdGlvbkFjdGlv
bjo6TG9hZCB9OwogfQogCi0vLyBXZWJDb3JlRHJhZ1NvdXJjZUFjdGlvbiBzaG91bGQgYmUga2Vw
dCBpbiBzeW5jIHdpdGggV2ViRHJhZ1NvdXJjZUFjdGlvbi4KLXR5cGVkZWYgZW51bSB7Ci0gICAg
RHJhZ1NvdXJjZUFjdGlvbk5vbmUgICAgICAgICA9IDAsCi0gICAgRHJhZ1NvdXJjZUFjdGlvbkRI
VE1MICAgICAgICA9IDEsCi0gICAgRHJhZ1NvdXJjZUFjdGlvbkltYWdlICAgICAgICA9IDIsCi0g
ICAgRHJhZ1NvdXJjZUFjdGlvbkxpbmsgICAgICAgICA9IDQsCi0gICAgRHJhZ1NvdXJjZUFjdGlv
blNlbGVjdGlvbiAgICA9IDgsCisvLyBTZWUgV2ViRHJhZ1NvdXJjZUFjdGlvbi4KK2VudW0gY2xh
c3MgRHJhZ1NvdXJjZUFjdGlvbiA6IHVpbnQ4X3QgeworICAgIERIVE1MICAgICAgPSAxLAorICAg
IEltYWdlICAgICAgPSAyLAorICAgIExpbmsgICAgICAgPSA0LAorICAgIFNlbGVjdGlvbiAgPSA4
LAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgRHJhZ1NvdXJjZUFjdGlvbkF0
dGFjaG1lbnQgICA9IDE2LAorICAgIEF0dGFjaG1lbnQgPSAxNiwKICNlbmRpZgogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0NPTE9SKQotICAgIERyYWdTb3VyY2VBY3Rpb25Db2xvciAgICAgICAgPSAz
MiwKKyAgICBDb2xvciAgICAgID0gMzIsCiAjZW5kaWYKLSAgICBEcmFnU291cmNlQWN0aW9uQW55
ICAgICAgICAgID0gVUlOVF9NQVgKLX0gRHJhZ1NvdXJjZUFjdGlvbjsKK307CisKK2NvbnN0ZXhw
ciBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gYW55RHJhZ1NvdXJjZUFjdGlvbigpCit7Cisg
ICAgcmV0dXJuIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiB7CisgICAgICAgIERyYWdTb3Vy
Y2VBY3Rpb246OkRIVE1MLAorICAgICAgICBEcmFnU291cmNlQWN0aW9uOjpJbWFnZSwKKyAgICAg
ICAgRHJhZ1NvdXJjZUFjdGlvbjo6TGluaywKKyAgICAgICAgRHJhZ1NvdXJjZUFjdGlvbjo6U2Vs
ZWN0aW9uCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgLCBEcmFnU291
cmNlQWN0aW9uOjpBdHRhY2htZW50CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKKyAgICAgICAgLCBEcmFnU291cmNlQWN0aW9uOjpDb2xvcgorI2VuZGlmCisgICAgfTsKK30K
IAogLy8gU2VlIE5TRHJhZ09wZXJhdGlvbiwgX1VJRHJhZ09wZXJhdGlvbiBhbmQgVUlEcm9wT3Bl
cmF0aW9uLgogZW51bSBjbGFzcyBEcmFnT3BlcmF0aW9uIDogdWludDhfdCB7CkBAIC0xMDgsNiAr
MTIyLDIyIEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gewogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLAorICAgICAgICBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uOjpESFRNTCwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6
SW1hZ2UsCisgICAgICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkxpbmssCisgICAgICAg
IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbgorI2lmIEVOQUJMRShBVFRBQ0hN
RU5UX0VMRU1FTlQpCisgICAgICAgICwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNo
bWVudAorI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgICAgICwgV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IKKyNlbmRpZgorICAgID47Cit9OworCiB0ZW1w
bGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gT3B0aW9uU2V0VmFsdWVzPAogICAgICAgICBXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sCkBAIC0xMjksNCArMTU5LDIwIEBAIHRlbXBsYXRl
PD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiB7CiAgICAg
PjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gT3B0aW9uU2V0VmFsdWVzPAorICAg
ICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLAorICAgICAgICBXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uOjpESFRNTCwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6SW1h
Z2UsCisgICAgICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkxpbmssCisgICAgICAgIFdl
YkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbgorI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCisgICAgICAgICwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVu
dAorI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgICAgICwgV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IKKyNlbmRpZgorICAgID47Cit9OworCiB9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKaW5kZXggN2FhOGVlNTg2NWRjNGY3
Yjk1NDFiOWZhNDA5YmM3NmQxNzZlODU3OS4uOTk4YjdiZjk1MGJmNTM3NmY3MjU5YzZmODRlODU1
Y2Q3M2U1ZDk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlv
bihEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IERyYWdEYXRhJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29u
c3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENv
bmNsdWRlRWRpdERyYWcoKSB7IH0KLSAgICB2aXJ0dWFsIERyYWdTb3VyY2VBY3Rpb24gZHJhZ1Nv
dXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCkgPSAw
OworICAgIHZpcnR1YWwgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGRyYWdTb3VyY2VBY3Rp
b25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpID0gMDsKICAgICAK
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKERyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFt
ZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0VuZGVkKCkgeyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDJmMzAyMDhlNTAxNTZhNTU0MGE0MzUzOTc3ZWVj
M2ExNDM5MzA5ZGUuLjIzODU3MDFiMjNjMmU2N2I0YzcwNzI3ZTU5NTMyNTE1YzFkYTY3NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00ODMsNyArNDgzLDcgQEAg
RHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHQKICAgICByZXR1cm4gRHJhZ0hhbmRsaW5nTWV0aG9kOjpO
b25lOwogfQogCi1EcmFnU291cmNlQWN0aW9uIERyYWdDb250cm9sbGVyOjpkZWxlZ2F0ZURyYWdT
b3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpCitPcHRpb25TZXQ8RHJh
Z1NvdXJjZUFjdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihj
b25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCkKIHsKICAgICBtX2RyYWdTb3VyY2VBY3Rpb24g
PSBjbGllbnQoKS5kcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KHJvb3RWaWV3UG9pbnQpOwog
ICAgIHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247CkBAIC03NjksNyArNzY5LDcgQEAgc3RhdGlj
IFJlZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IGVuY2xvc2luZ0F0dGFjaG1lbnRFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQKIAogRWxlbWVudCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVs
ZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBFbGVtZW50KiBzdGFydEVsZW1lbnQsIGNv
bnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBEcmFnU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAg
IHN0YXRlLnR5cGUgPSAoc291cmNlRnJhbWUtPnNlbGVjdGlvbigpLmNvbnRhaW5zKGRyYWdPcmln
aW4pKSA/IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gOiBEcmFnU291cmNlQWN0aW9uTm9uZTsK
KyAgICBzdGF0ZS50eXBlID0gc291cmNlRnJhbWUtPnNlbGVjdGlvbigpLmNvbnRhaW5zKGRyYWdP
cmlnaW4pID8gRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uIDogT3B0aW9uU2V0PERyYWdTb3Vy
Y2VBY3Rpb24+KHsgfSk7CiAgICAgaWYgKCFzdGFydEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCkBAIC03ODMsNyArNzgzLDcg
QEAgRWxlbWVudCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUq
IHNvdXJjZUZyYW1lLCBFbGVtZW50KiBzdGEKICAgICAgICAgfQogCiAgICAgICAgIGlmICghaXNB
dHRhY2htZW50RWxlbWVudEluQ3VycmVudFNlbGVjdGlvbiB8fCBpc1NpbmdsZUF0dGFjaG1lbnRT
ZWxlY3Rpb24pIHsKLSAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBEcmFnU291cmNlQWN0aW9uQXR0
YWNobWVudDsKKyAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBEcmFnU291cmNlQWN0aW9uOjpBdHRh
Y2htZW50OwogICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQuZ2V0KCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC03OTUsMzIgKzc5NSwzMiBAQCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z2dhYmxlRWxlbWVudChjb25zdCBGcmFtZSogc291cmNlRnJhbWUsIEVsZW1lbnQqIHN0YQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgVXNlckRyYWcgZHJhZ01vZGUgPSByZW5kZXJl
ci0+c3R5bGUoKS51c2VyRHJhZygpOwotICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAm
IERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgJiYgZHJhZ01vZGUgPT0gVXNlckRyYWc6OkVsZW1lbnQp
IHsKLSAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9u
PihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKTsKKyAgICAgICAgaWYgKG1fZHJh
Z1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpESFRNTCkgJiYgZHJhZ01v
ZGUgPT0gVXNlckRyYWc6OkVsZW1lbnQpIHsKKyAgICAgICAgICAgIHN0YXRlLnR5cGUuYWRkKERy
YWdTb3VyY2VBY3Rpb246OkRIVE1MKTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAg
ICAgICB9CiAgICAgICAgIGlmIChkcmFnTW9kZSA9PSBVc2VyRHJhZzo6QXV0bykgewotICAgICAg
ICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpCisg
ICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0
aW9uOjpJbWFnZSkpCiAgICAgICAgICAgICAgICAgJiYgaXM8SFRNTEltYWdlRWxlbWVudD4oKmVs
ZW1lbnQpCiAgICAgICAgICAgICAgICAgJiYgaW1hZ2VFbGVtZW50SXNEcmFnZ2FibGUoZG93bmNh
c3Q8SFRNTEltYWdlRWxlbWVudD4oKmVsZW1lbnQpLCAqc291cmNlRnJhbWUpKSB7Ci0gICAgICAg
ICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRl
LnR5cGUgfCBEcmFnU291cmNlQWN0aW9uSW1hZ2UpOworICAgICAgICAgICAgICAgIHN0YXRlLnR5
cGUuYWRkKERyYWdTb3VyY2VBY3Rpb246OkltYWdlKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspICYmIGlzRHJhZ2dhYmxlTGluaygqZWxlbWVudCkp
IHsKLSAgICAgICAgICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFj
dGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25MaW5rKTsKKyAgICAgICAgICAgIGlm
IChtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6TGluaykgJiYg
aXNEcmFnZ2FibGVMaW5rKCplbGVtZW50KSkgeworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUu
YWRkKERyYWdTb3VyY2VBY3Rpb246OkxpbmspOwogICAgICAgICAgICAgICAgIHJldHVybiBlbGVt
ZW50OwogICAgICAgICAgICAgfQogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAg
ICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25BdHRhY2ht
ZW50KQorICAgICAgICAgICAgaWYgKG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291
cmNlQWN0aW9uOjpBdHRhY2htZW50KQogICAgICAgICAgICAgICAgICYmIGlzPEhUTUxBdHRhY2ht
ZW50RWxlbWVudD4oKmVsZW1lbnQpCiAgICAgICAgICAgICAgICAgJiYgZG93bmNhc3Q8SFRNTEF0
dGFjaG1lbnRFbGVtZW50PigqZWxlbWVudCkuZmlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3Rh
dGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFn
U291cmNlQWN0aW9uQXR0YWNobWVudCk7CisgICAgICAgICAgICAgICAgc3RhdGUudHlwZS5hZGQo
RHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQ7CiAgICAgICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xP
UikKLSAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlv
bkNvbG9yKSAmJiBpc0VuYWJsZWRDb2xvcklucHV0KCplbGVtZW50KSkgewotICAgICAgICAgICAg
ICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBl
IHwgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yKTsKKyAgICAgICAgICAgIGlmIChtX2RyYWdTb3VyY2VB
Y3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IpICYmIGlzRW5hYmxlZENvbG9y
SW5wdXQoKmVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgc3RhdGUudHlwZS5hZGQoRHJhZ1Nv
dXJjZUFjdGlvbjo6Q29sb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAg
ICAgICAgICAgfQogI2VuZGlmCkBAIC04MjgsNyArODI4LDcgQEAgRWxlbWVudCogRHJhZ0NvbnRy
b2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBFbGVtZW50
KiBzdGEKICAgICB9CiAKICAgICAvLyBXZSBlaXRoZXIgaGF2ZSBub3RoaW5nIHRvIGRyYWcgb3Ig
d2UgaGF2ZSBhIHNlbGVjdGlvbiBhbmQgd2UncmUgbm90IG92ZXIgYSBkcmFnZ2FibGUgZWxlbWVu
dC4KLSAgICBpZiAoc3RhdGUudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gJiYgbV9k
cmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKKyAgICBpZiAoc3Rh
dGUudHlwZS5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pICYmIG1fZHJhZ1Nv
dXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pKQogICAgICAg
ICByZXR1cm4gc3RhcnRFbGVtZW50OwogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05MDEsNyAr
OTAxLDcgQEAgc3RhdGljIEludFBvaW50IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKEZyYW1lJiBz
cmMpCiAgICAgcmV0dXJuIEludFBvaW50KHhwb3MsIHlwb3MpOwogfQogCi12b2lkIERyYWdDb250
cm9sbGVyOjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIERyYWdTb3VyY2VBY3Rp
b24gYWN0aW9uLCBFbGVtZW50JiBlbGVtZW50LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2Zlciwg
Y29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4pIGNvbnN0Cit2b2lkIERyYWdDb250cm9sbGVyOjpw
cmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIE9wdGlvblNldDxEcmFnU291cmNlQWN0
aW9uPiBhY3Rpb25NYXNrLCBFbGVtZW50JiBlbGVtZW50LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFu
c2ZlciwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4pIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JN
KFdJTikKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rvcihzb3VyY2UpOwpAQCAtOTExLDcgKzkxMSw3
IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJj
ZSwgRHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24sCiAKICAgICBhdXRvJiBwYXN0ZWJvYXJkID0gZGF0
YVRyYW5zZmVyLnBhc3RlYm9hcmQoKTsKICAgICBhdXRvJiBlZGl0b3IgPSBzb3VyY2UuZWRpdG9y
KCk7Ci0gICAgaWYgKGFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSB7CisgICAg
aWYgKGFjdGlvbk1hc2sgPT0gRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSB7CiAgICAgICAg
IGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woc291cmNlLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLnN0YXJ0KCkpKQogICAgICAgICAgICAgcGFzdGVib2FyZC53cml0ZVBsYWluVGV4dChlZGl0
b3Iuc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyKCksIFBhc3RlYm9hcmQ6OkNhbm5vdFNtYXJ0
UmVwbGFjZSk7CiAgICAgICAgIGVsc2UKQEAgLTkyMSwxOCArOTIxLDE4IEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OnByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZSwgRHJhZ1NvdXJjZUFj
dGlvbiBhY3Rpb24sCiAKICAgICBhdXRvKiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwogICAg
IGF1dG8gaW1hZ2VVUkwgPSBoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUltYWdlVVJMKCk7Ci0gICAg
aWYgKChhY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpICYmICFpbWFnZVVSTC5pc0VtcHR5
KCkgJiYgaW1hZ2UgJiYgIWltYWdlLT5pc051bGwoKSkgeworICAgIGlmIChhY3Rpb25NYXNrLmNv
bnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkltYWdlKSAmJiAhaW1hZ2VVUkwuaXNFbXB0eSgpICYm
IGltYWdlICYmICFpbWFnZS0+aXNOdWxsKCkpIHsKICAgICAgICAgZWRpdG9yLndyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQocGFzdGVib2FyZCwgZWxlbWVudCwgaW1hZ2VVUkwsIHsgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGxpbmtVUkwgPSBoaXRUZXN0UmVzdWx0LT5hYnNv
bHV0ZUxpbmtVUkwoKTsKLSAgICBpZiAoKGFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKSAm
JiAhbGlua1VSTC5pc0VtcHR5KCkgJiYgc291cmNlLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkuY2FuRGlzcGxheShsaW5rVVJMKSkKKyAgICBpZiAoYWN0aW9uTWFzay5jb250YWlucyhEcmFn
U291cmNlQWN0aW9uOjpMaW5rKSAmJiAhbGlua1VSTC5pc0VtcHR5KCkgJiYgc291cmNlLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheShsaW5rVVJMKSkKICAgICAgICAgZWRp
dG9yLmNvcHlVUkwobGlua1VSTCwgaGl0VGVzdFJlc3VsdC0+dGV4dENvbnRlbnQoKS5zaW1wbGlm
eVdoaXRlU3BhY2UoKSwgcGFzdGVib2FyZCk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBNYWtlIHRo
aXMgd29yayBvbiBXaW5kb3dzIGJ5IGltcGxlbWVudGluZyBFZGl0b3I6OndyaXRlU2VsZWN0aW9u
VG9QYXN0ZWJvYXJkIGFuZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQuCiAgICAgVU5V
U0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGFjdGlvbik7CisgICAgVU5VU0VE
X1BBUkFNKGFjdGlvbk1hc2spOwogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKICAgICBVTlVT
RURfUEFSQU0oZGF0YVRyYW5zZmVyKTsKICAgICBVTlVTRURfUEFSQU0oZHJhZ09yaWdpbik7CkBA
IC05ODMsNyArOTgzLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICBBU1NFUlQoc3Rh
dGUuZGF0YVRyYW5zZmVyKTsKIAogICAgIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyID0gKnN0
YXRlLmRhdGFUcmFuc2ZlcjsKLSAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9u
REhUTUwpIHsKKyAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uOjpESFRNTCkg
ewogICAgICAgICBkcmFnSW1hZ2UgPSBEcmFnSW1hZ2UgeyBkYXRhVHJhbnNmZXIuY3JlYXRlRHJh
Z0ltYWdlKGRyYWdJbWFnZU9mZnNldCkgfTsKICAgICAgICAgLy8gV2UgYWxsb3cgREhUTUwvSlMg
dG8gc2V0IHRoZSBkcmFnIGltYWdlLCBldmVuIGlmIGl0cyBhIGxpbmssIGltYWdlIG9yIHRleHQg
d2UncmUgZHJhZ2dpbmcuCiAgICAgICAgIC8vIFRoaXMgaXMgaW4gdGhlIHNwaXJpdCBvZiB0aGUg
SUUgQVBJLCB3aGljaCBhbGxvd3Mgb3ZlcnJpZGluZyBvZiBwYXN0ZWJvYXJkIGRhdGEgYW5kIERy
YWdPcC4KQEAgLTk5Myw3ICs5OTMsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWco
RnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVj
dGlvbiB8fCAhaW1hZ2VVUkwuaXNFbXB0eSgpIHx8ICFsaW5rVVJMLmlzRW1wdHkoKSkgeworICAg
IGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbiB8fCAhaW1hZ2VV
UkwuaXNFbXB0eSgpIHx8ICFsaW5rVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBTZWxlY3Rp
b24sIGltYWdlLCBhbmQgbGluayBkcmFncyByZWNlaXZlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dl
ZCBkcmFnIG9wZXJhdGlvbnMgdGhhdAogICAgICAgICAvLyBmb2xsb3dzIGZyb206CiAgICAgICAg
IC8vIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0/cmV2PTQ4NTI2I0wzNDMwCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRl
JiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogCiAgICAgSW50UmVjdCBkcmFnSW1hZ2VCb3VuZHM7CiAg
ICAgSW1hZ2UqIGltYWdlID0gZ2V0SW1hZ2UoZWxlbWVudCk7Ci0gICAgaWYgKHN0YXRlLnR5cGUg
PT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgeworICAgIGlmIChzdGF0ZS50eXBlID09IERy
YWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbikgewogICAgICAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0
YSBwYXN0ZWJvYXJkV3JpdGVyRGF0YTsKIAogICAgICAgICBpZiAoaGFzRGF0YSA9PSBIYXNOb25E
ZWZhdWx0UGFzdGVib2FyZERhdGE6Ok5vKSB7CkBAIC0xMDQ5LDcgKzEwNDksNyBAQCBib29sIERy
YWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0
ZSwgT3B0aW9uU2V0PERyYQogCiAgICAgICAgICAgICBzcmMuZWRpdG9yKCkuZGlkV3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoKTsKICAgICAgICAgfQotICAgICAgICBjbGllbnQoKS53aWxsUGVy
Zm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiwgZHJhZ09yaWdp
biwgZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNl
QWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbiwgZHJhZ09yaWdpbiwgZGF0YVRyYW5z
ZmVyKTsKICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKICAgICAgICAgICAgIFRleHRJbmRpY2F0
b3JEYXRhIHRleHRJbmRpY2F0b3I7CiAgICAgICAgICAgICBkcmFnSW1hZ2UgPSBEcmFnSW1hZ2Ug
eyBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oY3JlYXRlRHJhZ0ltYWdlRm9yU2VsZWN0aW9u
KHNyYywgdGV4dEluZGljYXRvciksIERyYWdJbWFnZUFscGhhKSB9OwpAQCAtMTA3Miw3ICsxMDcy
LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERy
YWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgZHJhZ0l0ZW0uaW1hZ2UgPSBX
VEZNb3ZlKGRyYWdJbWFnZSk7CiAgICAgICAgIGRyYWdJdGVtLmRhdGEgPSBXVEZNb3ZlKHBhc3Rl
Ym9hcmRXcml0ZXJEYXRhKTsKIAotICAgICAgICBiZWdpbkRyYWcoV1RGTW92ZShkcmFnSXRlbSks
IHNyYywgZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2ZlciwgRHJhZ1Nv
dXJjZUFjdGlvblNlbGVjdGlvbik7CisgICAgICAgIGJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVt
KSwgc3JjLCBkcmFnT3JpZ2luLCBtb3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5zZmVyLCBEcmFn
U291cmNlQWN0aW9uOjpTZWxlY3Rpb24pOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTEwODIsNyArMTA4Miw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFt
ZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWltYWdlVVJMLmlzRW1wdHkoKSAmJiBpbWFn
ZSAmJiAhaW1hZ2UtPmlzTnVsbCgpICYmIChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNl
QWN0aW9uSW1hZ2UpKSB7CisgICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYgaW1hZ2UgJiYg
IWltYWdlLT5pc051bGwoKSAmJiBtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJj
ZUFjdGlvbjo6SW1hZ2UpKSB7CiAgICAgICAgIC8vIFdlIHNob3VsZG4ndCBiZSBzdGFydGluZyBh
IGRyYWcgZm9yIGFuIGltYWdlIHRoYXQgY2FuJ3QgcHJvdmlkZSBhbiBleHRlbnNpb24uCiAgICAg
ICAgIC8vIFRoaXMgaXMgYW4gZWFybHkgZGV0ZWN0aW9uIGZvciBwcm9ibGVtcyBlbmNvdW50ZXJl
ZCBsYXRlciB1cG9uIGRyb3AuCiAgICAgICAgIEFTU0VSVCghaW1hZ2UtPmZpbGVuYW1lRXh0ZW5z
aW9uKCkuaXNFbXB0eSgpKTsKQEAgLTExMDEsNyArMTEwMSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25T
ZXQ8RHJhCiAgICAgICAgICAgICAgICAgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKGRhdGFUcmFu
c2ZlciwgZWxlbWVudCwgIWxpbmtVUkwuaXNFbXB0eSgpID8gbGlua1VSTCA6IGltYWdlVVJMLCBo
aXRUZXN0UmVzdWx0LT5hbHREaXNwbGF5U3RyaW5nKCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
Y2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25JbWFn
ZSwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgY2xpZW50KCkud2lsbFBlcmZv
cm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OkltYWdlLCBkcmFnT3JpZ2luLCBk
YXRhVHJhbnNmZXIpOwogCiAgICAgICAgIGlmICghZHJhZ0ltYWdlKQogICAgICAgICAgICAgZG9J
bWFnZURyYWcoZWxlbWVudCwgZHJhZ09yaWdpbiwgaGl0VGVzdFJlc3VsdC0+aW1hZ2VSZWN0KCks
IHNyYywgbV9kcmFnT2Zmc2V0LCBzdGF0ZSwgV1RGTW92ZShhdHRhY2htZW50SW5mbykpOwpAQCAt
MTExMyw3ICsxMTEzLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgaWYgKCFsaW5rVVJMLmlzRW1wdHkoKSAmJiAobV9kcmFnU291
cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkxpbmspKSB7CisgICAgaWYgKCFsaW5rVVJMLmlz
RW1wdHkoKSAmJiBtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6
TGluaykpIHsKICAgICAgICAgUGFzdGVib2FyZFdyaXRlckRhdGEgcGFzdGVib2FyZFdyaXRlckRh
dGE7CiAKICAgICAgICAgU3RyaW5nIHRleHRDb250ZW50V2l0aFNpbXBsaWZpZWRXaGl0ZVNwYWNl
ID0gaGl0VGVzdFJlc3VsdC0+dGV4dENvbnRlbnQoKS5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKQEAg
LTExNDUsNyArMTE0NSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYg
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgICAgICAg
ICAgc3JjLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rp
b25Gcm9tQ29udGVudHNPZk5vZGUobm9kZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgY2xpZW50
KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25MaW5rLCBkcmFn
T3JpZ2luLCBkYXRhVHJhbnNmZXIpOworICAgICAgICBjbGllbnQoKS53aWxsUGVyZm9ybURyYWdT
b3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbjo6TGluaywgZHJhZ09yaWdpbiwgZGF0YVRyYW5z
ZmVyKTsKICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpIHsKICAgICAgICAgICAgIFRleHRJbmRpY2F0
b3JEYXRhIHRleHRJbmRpY2F0b3I7CiAgICAgICAgICAgICBkcmFnSW1hZ2UgPSBEcmFnSW1hZ2Ug
eyBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKGVsZW1lbnQsIGxpbmtVUkwsIHRleHRDb250ZW50V2l0
aFNpbXBsaWZpZWRXaGl0ZVNwYWNlLCB0ZXh0SW5kaWNhdG9yLCBzcmMuc2V0dGluZ3MoKS5mb250
UmVuZGVyaW5nTW9kZSgpLCBtX3BhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSkgfTsKQEAgLTExNjgs
MTMgKzExNjgsMTMgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgZHJhZ0l0ZW0u
aW1hZ2UgPSBXVEZNb3ZlKGRyYWdJbWFnZSk7CiAgICAgICAgIGRyYWdJdGVtLmRhdGEgPSBXVEZN
b3ZlKHBhc3RlYm9hcmRXcml0ZXJEYXRhKTsKIAotICAgICAgICBiZWdpbkRyYWcoV1RGTW92ZShk
cmFnSXRlbSksIHNyYywgZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2Zl
ciwgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbik7CisgICAgICAgIGJlZ2luRHJhZyhXVEZNb3Zl
KGRyYWdJdGVtKSwgc3JjLCBkcmFnT3JpZ2luLCBtb3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5z
ZmVyLCBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pOwogCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgaWYgKGlzPEhU
TUxBdHRhY2htZW50RWxlbWVudD4oZWxlbWVudCkgJiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJh
Z1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQpIHsKKyAgICBpZiAoaXM8SFRNTEF0dGFjaG1lbnRFbGVt
ZW50PihlbGVtZW50KSAmJiBtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFj
dGlvbjo6QXR0YWNobWVudCkpIHsKICAgICAgICAgYXV0byYgYXR0YWNobWVudCA9IGRvd25jYXN0
PEhUTUxBdHRhY2htZW50RWxlbWVudD4oZWxlbWVudCk7CiAgICAgICAgIGF1dG8qIGF0dGFjaG1l
bnRSZW5kZXJlciA9IGF0dGFjaG1lbnQucmVuZGVyZXIoKTsKIApAQCAtMTE5Niw3ICsxMTk2LDcg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBjbGllbnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFj
dGlvbkF0dGFjaG1lbnQsIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CisgICAgICAgIGNsaWVu
dCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uOjpBdHRhY2ht
ZW50LCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOwogICAgICAgICAKICAgICAgICAgaWYgKCFk
cmFnSW1hZ2UpIHsKICAgICAgICAgICAgIFRleHRJbmRpY2F0b3JEYXRhIHRleHRJbmRpY2F0b3I7
CkBAIC0xMjIwLDcgKzEyMjAsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJh
bWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogCiAjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgYm9vbCBpc0NvbG9yQ29udHJvbCA9IGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KHN0YXRlLnNvdXJjZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
KnN0YXRlLnNvdXJjZSkuaXNDb2xvckNvbnRyb2woKTsKLSAgICBpZiAoaXNDb2xvckNvbnRyb2wg
JiYgbV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yKSB7CisgICAgaWYg
KGlzQ29sb3JDb250cm9sICYmIG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNl
QWN0aW9uOjpDb2xvcikpIHsKICAgICAgICAgYXV0byYgaW5wdXQgPSBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50Pigqc3RhdGUuc291cmNlKTsKICAgICAgICAgYXV0byBjb2xvciA9IGlucHV0LnZh
bHVlQXNDb2xvcigpOwogCkBAIC0xMjMxLDE1ICsxMjMxLDE1IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25T
ZXQ8RHJhCiAgICAgICAgIGRyYWdJbWFnZU9mZnNldCA9IEludFBvaW50IHsgZHJhZ0ltYWdlU2l6
ZShkcmFnSW1hZ2UuZ2V0KCkpIH07CiAgICAgICAgIGRyYWdMb2MgPSBkcmFnTG9jRm9yREhUTUxE
cmFnKG1vdXNlRHJhZ2dlZFBvaW50LCBkcmFnT3JpZ2luLCBkcmFnSW1hZ2VPZmZzZXQsIGZhbHNl
KTsKIAotICAgICAgICBjbGllbnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1Nv
dXJjZUFjdGlvbkNvbG9yLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOworICAgICAgICBjbGll
bnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3Is
IGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CiAgICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3Zl
KGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNyYywgc3RhdGUsIHsgfSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgogCi0gICAgaWYgKHN0YXRlLnR5cGUgPT0g
RHJhZ1NvdXJjZUFjdGlvbkRIVE1MICYmIGRyYWdJbWFnZSkgewotICAgICAgICBBU1NFUlQobV9k
cmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKTsKLSAgICAgICAgY2xpZW50
KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25ESFRNTCwgZHJh
Z09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKKyAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291cmNl
QWN0aW9uOjpESFRNTCAmJiBkcmFnSW1hZ2UpIHsKKyAgICAgICAgQVNTRVJUKG1fZHJhZ1NvdXJj
ZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpESFRNTCkpOworICAgICAgICBjbGll
bnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUws
IGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CiAgICAgICAgIGRvU3lzdGVtRHJhZyhXVEZNb3Zl
KGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNyYywgc3RhdGUsIHsgfSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw4IEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBk
cmFnTG9jLCBjb25zCiAKICAgICBEcmFnSXRlbSBpdGVtOwogICAgIGl0ZW0uaW1hZ2UgPSBXVEZN
b3ZlKGltYWdlKTsKLSAgICBpdGVtLnNvdXJjZUFjdGlvbiA9IHN0YXRlLnR5cGU7CisgICAgQVNT
RVJUKHN0YXRlLnR5cGUuaGFzRXhhY3RseU9uZUJpdFNldCgpKTsKKyAgICBpdGVtLnNvdXJjZUFj
dGlvbiA9IHN0YXRlLnR5cGUudG9TaW5nbGVWYWx1ZSgpOwogICAgIGl0ZW0ucHJvbWlzZWRBdHRh
Y2htZW50SW5mbyA9IFdURk1vdmUocHJvbWlzZWRBdHRhY2htZW50SW5mbyk7CiAKICAgICBhdXRv
IGV2ZW50UG9zaXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBmcmFtZS52aWV3KCktPmNvbnRl
bnRzVG9Sb290VmlldyhldmVudFBvcyk7CkBAIC0xMzM5LDcgKzEzNDAsNyBAQCB2b2lkIERyYWdD
b250cm9sbGVyOjpkb1N5c3RlbURyYWcoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRQb2ludCYg
ZHJhZ0xvYywgY29ucwogICAgIGl0ZW0uZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyA9
IHZpZXdQcm90ZWN0b3ItPmNvbnRlbnRzVG9XaW5kb3coaXRlbS5kcmFnTG9jYXRpb25JbkNvbnRl
bnRDb29yZGluYXRlcyk7CiAgICAgaWYgKGF1dG8gZWxlbWVudCA9IHN0YXRlLnNvdXJjZSkgewog
ICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlckltYWdlRWxlbWVudCA9IHN0YXRlLmRhdGFUcmFuc2Zl
ci0+ZHJhZ0ltYWdlRWxlbWVudCgpOwotICAgICAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291
cmNlQWN0aW9uREhUTUwpIHsKKyAgICAgICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFj
dGlvbjo6REhUTUwpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBkcmFnIGltYWdlIGhhcyBiZWVu
IGN1c3RvbWl6ZWQsIGZhbGwgYmFjayB0byBwb3NpdGlvbmluZyB0aGUgcHJldmlldyByZWxhdGl2
ZSB0byB0aGUgZHJhZyBldmVudCBsb2NhdGlvbi4KICAgICAgICAgICAgIEludFNpemUgZHJhZ1By
ZXZpZXdTaXplOwogICAgICAgICAgICAgaWYgKGRhdGFUcmFuc2ZlckltYWdlRWxlbWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCBlYTQ5OWUwZWJkNjUxNmU5ODA4YzQ5
ZjFlYzA4NTI0NDlkY2VlOGYxLi45MjI0YWIyMDZjZGZlYmI1M2YxMWM3OGEzZWFlMjA4MTNjZmRk
MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC03NiwxMiArNzYsMTIg
QEAgcHVibGljOgogICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQogICAgIHZvaWQgc2V0RHJhZ09mZnNldChjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0KSB7IG1fZHJhZ09mZnNldCA9IG9mZnNldDsgfQogICAgIGNvbnN0IElu
dFBvaW50JiBkcmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0OyB9Ci0gICAg
RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kcmFn
U291cmNlQWN0aW9uOyB9CisgICAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGRyYWdTb3Vy
Y2VBY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247IH0KICAgICBEcmFn
SGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9kcmFn
SGFuZGxpbmdNZXRob2Q7IH0KIAogICAgIERvY3VtZW50KiBkb2N1bWVudFVuZGVyTW91c2UoKSBj
b25zdCB7IHJldHVybiBtX2RvY3VtZW50VW5kZXJNb3VzZS5nZXQoKTsgfQogICAgIE9wdGlvblNl
dDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soKSBjb25z
dCB7IHJldHVybiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7IH0KLSAgICBEcmFnU291cmNl
QWN0aW9uIGRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQ
b2ludCk7CisgICAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGRlbGVnYXRlRHJhZ1NvdXJj
ZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCk7CiAKICAgICBFbGVtZW50KiBk
cmFnZ2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiwgRWxlbWVudCogc3RhcnQsIGNvbnN0IEludFBv
aW50JiwgRHJhZ1N0YXRlJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRW5k
ZWQoKTsKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0
KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcyk7CiAKLSAgICB2b2lkIHByZXBhcmVG
b3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZUZyYW1lLCBEcmFnU291cmNlQWN0aW9uLCBFbGVtZW50
JiBzb3VyY2VFbGVtZW50LCBEYXRhVHJhbnNmZXImLCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdp
bikgY29uc3Q7CisgICAgdm9pZCBwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2VGcmFt
ZSwgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+LCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBE
YXRhVHJhbnNmZXImLCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikgY29uc3Q7CiAgICAgYm9v
bCBzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50
UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAgc3Rh
dGljIGNvbnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKIApAQCAtMTU0LDcgKzE1NCw3
IEBAIHByaXZhdGU6CiAgICAgRHJhZ0hhbmRsaW5nTWV0aG9kIG1fZHJhZ0hhbmRsaW5nTWV0aG9k
IHsgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lIH07CiAKICAgICBPcHRpb25TZXQ8RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7Ci0gICAgRHJhZ1NvdXJj
ZUFjdGlvbiBtX2RyYWdTb3VyY2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9uTm9uZSB9OworICAg
IE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBtX2RyYWdTb3VyY2VBY3Rpb247CiAgICAgYm9v
bCBtX2RpZEluaXRpYXRlRHJhZyB7IGZhbHNlIH07CiAgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2s7IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBh
IGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBkb3duIHdpdGhpbiBXZWJLaXQuCiAgICAgSW50UG9p
bnQgbV9kcmFnT2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKaW5kZXggNmQxNjI1OTAwZTM0
NWYzM2VmYTY1MDhhMDVlNTMzNjIxNGFjOGJiZC4uMmJjMDJjZTJmODJhNzNkZTdiNTJjZjRkYTc2
NDAzMWE1YzNjNGQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBEcmFnU3RhdGUgewogICAgIFJlZlB0cjxFbGVt
ZW50PiBzb3VyY2U7IC8vIEVsZW1lbnQgdGhhdCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRo
ZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUuCiAgICAgYm9vbCBzaG91bGREaXNwYXRjaEV2ZW50czsK
LSAgICBEcmFnU291cmNlQWN0aW9uIHR5cGU7CisgICAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rp
b24+IHR5cGU7CiAgICAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gZGF0YVRyYW5zZmVyOyAvLyBVc2Vk
IG9uIG9ubHkgdGhlIHNvdXJjZSBzaWRlIG9mIGRyYWdnaW5nLgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDE0YmNjNWI4ZjJlY2ZhMmViNDVkNDczOWQ2YWY2NzAw
NzM4OGI1MGUuLjVlM2RiNGRkYmI4YTBiNGJkOWEyMjY0YWU1NDU1ZjUyMzRlZGFiYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTExOTAsMTUgKzExOTAsMTUgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAogfQogCiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKLURyYWdTb3VyY2VBY3Rpb24gRXZlbnRIYW5kbGVyOjp1cGRhdGVE
cmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdAorT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rp
b24+IEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QK
IHsKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAg
ICAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKICAgICBpZiAoIXZpZXcpCi0g
ICAgICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRlbGVnYXRlRHJhZ1NvdXJjZUFj
dGlvbih2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcobV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9u
KSk7CiB9CkBAIC0zNjQ3LDM1ICszNjQ3LDM2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlz
dGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEludFBvaW50JiBmbG9hdERyYWdWaWV3cG9ydExvY2F0CiAK
IGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9p
bnQmIGRyYWdWaWV3cG9ydExvY2F0aW9uKSBjb25zdAogeworICAgIGF1dG8gZHJhZ09wZXJhdGlv
biA9IGRyYWdTdGF0ZSgpLnR5cGUudG9TaW5nbGVWYWx1ZSgpOworICAgIEFTU0VSVChkcmFnT3Bl
cmF0aW9uKTsKICAgICBpbnQgdGhyZXNob2xkID0gR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwotICAg
IHN3aXRjaCAoZHJhZ1N0YXRlKCkudHlwZSkgewotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvblNl
bGVjdGlvbjoKLSAgICAgICAgdGhyZXNob2xkID0gVGV4dERyYWdIeXN0ZXJlc2lzOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25JbWFnZToKKyAgICBpZiAoZHJhZ09w
ZXJhdGlvbikgeworICAgICAgICBzd2l0Y2ggKCpkcmFnT3BlcmF0aW9uKSB7CisgICAgICAgIGNh
c2UgRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uOgorICAgICAgICAgICAgdGhyZXNob2xkID0g
VGV4dERyYWdIeXN0ZXJlc2lzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRHJh
Z1NvdXJjZUFjdGlvbjo6SW1hZ2U6CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAg
ICBjYXNlIERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50OgorICAgICAgICBjYXNlIERyYWdTb3Vy
Y2VBY3Rpb246OkF0dGFjaG1lbnQ6CiAjZW5kaWYKLSAgICAgICAgdGhyZXNob2xkID0gSW1hZ2VE
cmFnSHlzdGVyZXNpczsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEcmFnU291cmNlQWN0aW9u
TGluazoKLSAgICAgICAgdGhyZXNob2xkID0gTGlua0RyYWdIeXN0ZXJlc2lzOwotICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIHRocmVzaG9sZCA9IEltYWdlRHJhZ0h5c3RlcmVzaXM7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpMaW5rOgorICAg
ICAgICAgICAgdGhyZXNob2xkID0gTGlua0RyYWdIeXN0ZXJlc2lzOworICAgICAgICAgICAgYnJl
YWs7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgY2FzZSBEcmFnU291cmNlQWN0
aW9uQ29sb3I6Ci0gICAgICAgIHRocmVzaG9sZCA9IENvbG9yRHJhZ0h5c3RlcnNpczsKLSAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3I6CisgICAgICAg
ICAgICB0aHJlc2hvbGQgPSBDb2xvckRyYWdIeXN0ZXJzaXM7CisgICAgICAgICAgICBicmVhazsK
ICNlbmRpZgotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MOgotICAgICAgICBicmVhazsK
LSAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25Ob25lOgotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlv
bkFueToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhc2UgRHJhZ1Nv
dXJjZUFjdGlvbjo6REhUTUw6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0K
LSAgICAKKwogICAgIHJldHVybiBtb3VzZU1vdmVtZW50RXhjZWVkc1RocmVzaG9sZChkcmFnVmll
d3BvcnRMb2NhdGlvbiwgdGhyZXNob2xkKTsKIH0KLSAgICAKKwogdm9pZCBFdmVudEhhbmRsZXI6
OmludmFsaWRhdGVEYXRhVHJhbnNmZXIoKQogewogICAgIGlmICghZHJhZ1N0YXRlKCkuZGF0YVRy
YW5zZmVyKQpAQCAtMzcxNSw3ICszNzE2LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0YXJ0
RHJhZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBkcmFn
Z2VkQ29udGVudFJhbmdlOwotICAgIGlmIChkcmFnU3RhdGUoKS50eXBlICYgRHJhZ1NvdXJjZUFj
dGlvblNlbGVjdGlvbikKKyAgICBpZiAoZHJhZ1N0YXRlKCkudHlwZS5jb250YWlucyhEcmFnU291
cmNlQWN0aW9uOjpTZWxlY3Rpb24pKQogICAgICAgICBkcmFnZ2VkQ29udGVudFJhbmdlID0gbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIGVs
c2UKICAgICAgICAgZHJhZ2dlZENvbnRlbnRSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUo
KmRyYWdTb3VyY2UpOwpAQCAtMzc3NSwxMSArMzc3Niw2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpk
aXNwYXRjaERyYWdTdGFydEV2ZW50T25Tb3VyY2VFbGVtZW50KERhdGFUcmFuc2ZlciYgZGF0YVRy
YW5zCiAgICAgcmV0dXJuICFkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ3N0YXJ0
RXZlbnQsICpkcmFnU3RhdGUoKS5zb3VyY2UsIG1fbW91c2VEb3duRXZlbnQsIGRhdGFUcmFuc2Zl
cikgJiYgIW1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQo
KTsKIH0KIAotc3RhdGljIGJvb2wgRXhhY3RseU9uZUJpdFNldChEcmFnU291cmNlQWN0aW9uIG4p
Ci17Ci0gICAgcmV0dXJuIG4gJiYgIShuICYgKG4gLSAxKSk7Ci19Ci0KIFJlZlB0cjxFbGVtZW50
PiBFdmVudEhhbmRsZXI6OmRyYWdnZWRFbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZHJh
Z1N0YXRlKCkuc291cmNlOwpAQCAtMzgwMyw3ICszNzk5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENo
ZWNrRHIKICAgICAKICAgICAvLyBDYXJlZnVsIHRoYXQgdGhlIGRyYWcgc3RhcnRpbmcgbG9naWMg
c3RheXMgaW4gc3luYyB3aXRoIGV2ZW50TWF5U3RhcnREcmFnKCkuCiAgICAgaWYgKG1fbW91c2VE
b3duTWF5U3RhcnREcmFnICYmICFkcmFnU3RhdGUoKS5zb3VyY2UpIHsKLSAgICAgICAgZHJhZ1N0
YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMgPSAodXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxv
d2VkKCkgJiBEcmFnU291cmNlQWN0aW9uREhUTUwpOworICAgICAgICBkcmFnU3RhdGUoKS5zaG91
bGREaXNwYXRjaEV2ZW50cyA9IHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpLmNvbnRh
aW5zKERyYWdTb3VyY2VBY3Rpb246OkRIVE1MKTsKIAogICAgICAgICAvLyBUcnkgdG8gZmluZCBh
biBlbGVtZW50IHRoYXQgd2FudHMgdG8gYmUgZHJhZ2dlZC4KICAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQobV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uKTsKQEAgLTM4MTQsMTcgKzM4MTAs
MTcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgaWYgKCFkcmFnU3RhdGUoKS5z
b3VyY2UpCiAgICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOyAvLyBu
byBlbGVtZW50IGlzIGRyYWdnYWJsZQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2RyYWdN
YXlTdGFydFNlbGVjdGlvbkluc3RlYWQgPSAoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VB
Y3Rpb25TZWxlY3Rpb24pOworICAgICAgICAgICAgbV9kcmFnTWF5U3RhcnRTZWxlY3Rpb25JbnN0
ZWFkID0gZHJhZ1N0YXRlKCkudHlwZS5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rp
b24pOwogICAgIH0KICAgICAKICAgICAvLyBGb3IgZHJhZ3Mgc3RhcnRpbmcgaW4gdGhlIHNlbGVj
dGlvbiwgdGhlIHVzZXIgbXVzdCB3YWl0IGJldHdlZW4gdGhlIG1vdXNlZG93biBhbmQgbW91c2Vk
cmFnLAogICAgIC8vIG9yIGVsc2Ugd2UgYmFpbCBvbiB0aGUgZHJhZ2dpbmcgc3R1ZmYgYW5kIGFs
bG93IHNlbGVjdGlvbiB0byBvY2N1cgotICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAm
JiBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbkluc3RlYWQgJiYgKGRyYWdTdGF0ZSgpLnR5cGUgJiBE
cmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSAmJiBldmVudC5ldmVudCgpLnRpbWVzdGFtcCgpIC0g
bV9tb3VzZURvd25UaW1lc3RhbXAgPCBUZXh0RHJhZ0RlbGF5KSB7CisgICAgaWYgKG1fbW91c2VE
b3duTWF5U3RhcnREcmFnICYmIG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVhZCAmJiBkcmFn
U3RhdGUoKS50eXBlLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbikgJiYgZXZl
bnQuZXZlbnQoKS50aW1lc3RhbXAoKSAtIG1fbW91c2VEb3duVGltZXN0YW1wIDwgVGV4dERyYWdE
ZWxheSkgewogICAgICAgICBBU1NFUlQoZXZlbnQuZXZlbnQoKS50eXBlKCkgPT0gUGxhdGZvcm1F
dmVudDo6TW91c2VNb3ZlZCk7Ci0gICAgICAgIGlmICgoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdT
b3VyY2VBY3Rpb25JbWFnZSkpIHsKKyAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLnR5cGUuY29udGFp
bnMoRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UpKSB7CiAgICAgICAgICAgICAvLyAuLi4gdW5sZXNz
IHRoZSBtb3VzZSBpcyBvdmVyIGFuIGltYWdlLCB0aGVuIHdlIHN0YXJ0IGRyYWdnaW5nIGp1c3Qg
dGhlIGltYWdlCi0gICAgICAgICAgICBkcmFnU3RhdGUoKS50eXBlID0gRHJhZ1NvdXJjZUFjdGlv
bkltYWdlOwotICAgICAgICB9IGVsc2UgaWYgKCEoZHJhZ1N0YXRlKCkudHlwZSAmIChEcmFnU291
cmNlQWN0aW9uREhUTUwgfCBEcmFnU291cmNlQWN0aW9uTGluaykpKSB7CisgICAgICAgICAgICBk
cmFnU3RhdGUoKS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2U7CisgICAgICAgIH0gZWxz
ZSBpZiAoIWRyYWdTdGF0ZSgpLnR5cGUuY29udGFpbnNBbnkoeyBEcmFnU291cmNlQWN0aW9uOjpE
SFRNTCwgRHJhZ1NvdXJjZUFjdGlvbjo6TGluayB9KSkgewogICAgICAgICAgICAgLy8gLi4uIGJ1
dCBvbmx5IGJhaWwgaWYgd2UncmUgbm90IG92ZXIgYW4gdW5zZWxlY3RhYmxlIGVsZW1lbnQuCiAg
ICAgICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogICAgICAgICAgICAg
ZHJhZ1N0YXRlKCkuc291cmNlID0gbnVsbHB0cjsKQEAgLTM4NDUsMTEgKzM4NDEsMTUgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgcmV0dXJuICFtb3VzZURvd25NYXlTdGFydFNl
bGVjdCgpICYmICFtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbDsKICAgICBBU1NFUlQoZHJh
Z1N0YXRlKCkuc291cmNlKTsKIAotICAgIGlmICghRXhhY3RseU9uZUJpdFNldChkcmFnU3RhdGUo
KS50eXBlKSkgewotICAgICAgICBBU1NFUlQoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VB
Y3Rpb25TZWxlY3Rpb24pOwotICAgICAgICBBU1NFUlQoRXhhY3RseU9uZUJpdFNldChzdGF0aWNf
Y2FzdDxEcmFnU291cmNlQWN0aW9uPihkcmFnU3RhdGUoKS50eXBlICYgfkRyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pKSk7CisgICAgaWYgKCFkcmFnU3RhdGUoKS50eXBlLmhhc0V4YWN0bHlPbmVC
aXRTZXQoKSkgeworICAgICAgICBBU1NFUlQoZHJhZ1N0YXRlKCkudHlwZS5jb250YWlucyhEcmFn
U291cmNlQWN0aW9uOjpTZWxlY3Rpb24pKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGF1dG8g
YWN0aW9uTWFza0NvcHkgPSBkcmFnU3RhdGUoKS50eXBlOworICAgICAgICBhY3Rpb25NYXNrQ29w
eS5yZW1vdmUoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKGFj
dGlvbk1hc2tDb3B5Lmhhc0V4YWN0bHlPbmVCaXRTZXQoKSk7CisjZW5kaWYKIAotICAgICAgICBk
cmFnU3RhdGUoKS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjsKKyAgICAgICAgZHJh
Z1N0YXRlKCkudHlwZSA9IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbjsKICAgICB9CiAKICAg
ICAvLyBXZSBhcmUgc3RhcnRpbmcgYSB0ZXh0L2ltYWdlL3VybCBkcmFnLCBzbyB0aGUgY3Vyc29y
IHNob3VsZCBiZSBhbiBhcnJvdwpAQCAtMzg4MSw3ICszODgxLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQs
IENoZWNrRHIKICAgICAgICAgICAgIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA9IEhhc05v
bkRlZmF1bHRQYXN0ZWJvYXJkRGF0YTo6WWVzOwogICAgICAgICBkcmFnU3RhdGUoKS5kYXRhVHJh
bnNmZXItPm1vdmVEcmFnU3RhdGUoV1RGTW92ZShkcmFnU3RhcnREYXRhVHJhbnNmZXIpKTsKIAot
ICAgICAgICBpZiAoZHJhZ1N0YXRlKCkuc291cmNlICYmIGRyYWdTdGF0ZSgpLnR5cGUgPT0gRHJh
Z1NvdXJjZUFjdGlvbkRIVE1MICYmICFkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPmhhc0RyYWdJ
bWFnZSgpKSB7CisgICAgICAgIGlmIChkcmFnU3RhdGUoKS5zb3VyY2UgJiYgZHJhZ1N0YXRlKCku
dHlwZSA9PSBEcmFnU291cmNlQWN0aW9uOjpESFRNTCAmJiAhZHJhZ1N0YXRlKCkuZGF0YVRyYW5z
ZmVyLT5oYXNEcmFnSW1hZ2UoKSkgewogICAgICAgICAgICAgZHJhZ1N0YXRlKCkuc291cmNlLT5k
b2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICAgICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IGRyYWdTdGF0ZSgpLnNvdXJjZS0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8gYWJzb2x1dGVQb3NpdGlvbiA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDI3Y2FlNjFlZDExODM0YWNjNTQ1MmRi
NmNiOTIzYjMyOTY2OGNmMmUuLmY3YTE2YzFlMDYyOTlmN2E2NjM5MjhlZjExOTMyMjlhNTg3NGUw
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDY1LDcgKzQ2NSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rpb24s
IEtleWJvYXJkRXZlbnQmKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRHJhZ1Nv
dXJjZUFjdGlvbiB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdDsKKyAgICBP
cHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2Vk
KCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1NlbGVjdGlvblVwZGF0ZXNPbk1vdXNlRHJhZygp
IGNvbnN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCmluZGV4IGU1ODU5
YzQyY2Y5MDY3YTdiM2Y0NmRmZDBkODVmOTg4Mjg4OGRlNmIuLjFkMWYyYTc4OTViZTEwNDgwOWM0
OGM0ZGRjODY4YzViZmRkZDM4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaApAQCAt
NDEsNyArNDEsNyBAQCBzdHJ1Y3QgRHJhZ0l0ZW0gZmluYWwgewogICAgIC8vIFdoZXJlIHRoZSBp
bWFnZSBzaG91bGQgYmUgcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGUgY3Vyc29yLgogICAgIEZs
b2F0UG9pbnQgaW1hZ2VBbmNob3JQb2ludDsKIAotICAgIERyYWdTb3VyY2VBY3Rpb24gc291cmNl
QWN0aW9uIHsgRHJhZ1NvdXJjZUFjdGlvbk5vbmUgfTsKKyAgICBPcHRpb25hbDxEcmFnU291cmNl
QWN0aW9uPiBzb3VyY2VBY3Rpb247CiAgICAgSW50UG9pbnQgZXZlbnRQb3NpdGlvbkluQ29udGVu
dENvb3JkaW5hdGVzOwogICAgIEludFBvaW50IGRyYWdMb2NhdGlvbkluQ29udGVudENvb3JkaW5h
dGVzOwogICAgIEludFBvaW50IGRyYWdMb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXM7CkBAIC02
MSw3ICs2MSw3IEBAIHZvaWQgRHJhZ0l0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogICAgIC8vIEZJWE1FKDE3MzgxNSk6IFdlIHNob3VsZCBlbmNvZGUgYW5kIGRlY29kZSBQ
YXN0ZWJvYXJkV3JpdGVyRGF0YSBhbmQgcGxhdGZvcm0gZHJhZyBpbWFnZSBkYXRhCiAgICAgLy8g
aGVyZSB0b28sIGFzIHBhcnQgb2YgbW92aW5nIG9mZiBvZiB0aGUgbGVnYWN5IGRyYWdnaW5nIGNv
ZGVwYXRoLgotICAgIGVuY29kZXIuZW5jb2RlRW51bShzb3VyY2VBY3Rpb24pOworICAgIGVuY29k
ZXIgPDwgc291cmNlQWN0aW9uOwogICAgIGVuY29kZXIgPDwgaW1hZ2VBbmNob3JQb2ludCA8PCBl
dmVudFBvc2l0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPDwgZHJhZ0xvY2F0aW9uSW5Db250ZW50
Q29vcmRpbmF0ZXMgPDwgZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyA8PCB0aXRsZSA8
PCB1cmwgPDwgZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICBib29s
IGhhc0luZGljYXRvckRhdGEgPSBpbWFnZS5oYXNJbmRpY2F0b3JEYXRhKCk7CiAgICAgZW5jb2Rl
ciA8PCBoYXNJbmRpY2F0b3JEYXRhOwpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIERyYWdJdGVtOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBi
b29sIERyYWdJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0l0ZW0mIHJlc3VsdCkK
IHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQuc291cmNlQWN0aW9uKSkKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zb3VyY2VBY3Rpb24pKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW1hZ2VBbmNob3JQb2lu
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IDFiZmQyODI1OWY4ZmExZDljMzZhY2JjYjMwNGNlYzYzYjFkNDc2MzAu
LjYyYzUwOGUzMTU4ZjY4MTllZjhhYzY2NzRlZTMyZTczOGQxNDQ5OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNTkxLDYgKzU5MSw3IEBAIGRlZiBoZWFk
ZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250
ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dl
YkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCc6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OkRyYWdPcGVyYXRpb24nOiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25z
Lmg+J10sCisgICAgICAgICdXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uJzogWyc8V2ViQ29yZS9E
cmFnQWN0aW9ucy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyc6IFsn
PFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6
RmlsZUNob29zZXJTZXR0aW5ncyc6IFsnPFdlYkNvcmUvRmlsZUNob29zZXIuaD4nXSwKICAgICAg
ICAgJ1dlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwnOiBbJzxXZWJDb3JlL1NoYXJlRGF0
YS5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4NzA2NGNm
Y2Y2N2M1YTgyNzM5YjQxODNmOGJiODk5NWY5ZTkxNzhkLi44ZjNkZjY0M2Y0NDhmMzVmODE3NzM4
NWEwZDE5ZDlmMTViZWZiNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtODI3LDggKzgyNyw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
ICAgIHZvaWQgZGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdChib29sIHN0YXJ0ZWQpOwogICAgIHZv
aWQgZGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoYm9vbCBhZGRlZCk7Ci0gICAg
dm9pZCByZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uIGFsbG93ZWRBY3Rpb25zKTsKLSAgICB2b2lkIHJlcXVlc3RBZGRpdGlv
bmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2VkQWN0aW9ucyk7CisgICAgdm9pZCByZXF1ZXN0RHJhZ1N0
YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKKyAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFs
SXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzayk7CiAgICAgdm9pZCBp
bnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFNp
emU+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVj
dD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJlcGx5KTsKICAg
ICB2b2lkIHdpbGxSZWNlaXZlRWRpdERyYWdTbmFwc2hvdCgpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUVkaXREcmFnU25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUuaAppbmRleCBkMmUwYjkwOWZlYzU0NGM1MzI5NjE2MzAyZjhmN2JhYWI5ODIyM2E5
Li5iN2Y4N2I0NDcwZDIzOWU2ZmMzZDZhZmUwMzU5NTRhOTgxZTA3ZWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5o
CkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YTsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBzdHJ1Y3QgRHJhZ1NvdXJjZVN0YXRlIHsKLSAgICBXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uIGFjdGlvbiB7IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb25Ob25lIH07CisgICAg
T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFjdGlvbjsKICAgICBDR1BvaW50
IGFkanVzdGVkT3JpZ2luIHsgQ0dQb2ludFplcm8gfTsKICAgICBDR1JlY3QgZHJhZ1ByZXZpZXdG
cmFtZUluUm9vdFZpZXdDb29yZGluYXRlcyB7IENHUmVjdFplcm8gfTsKICAgICBSZXRhaW5QdHI8
VUlJbWFnZT4gaW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQppbmRleCBmZjRlNGZkMTRmMTJkY2M3YTcwNzVm
OGMzZTJlZTEwNGVhYjA3ZWJlLi45MDJkYjhlNGM2ZTFhZDhmOWI0OTExMzQ5Yjk4OWM2ZWMxNDcw
ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUubW0KQEAgLTk5LDExICs5OSwxMSBAQCBzdGF0aWMgYm9vbCBzaG91
bGRVc2VEcmFnSW1hZ2VUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3Vy
Y2VTdGF0ZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKLSAgICBpZiAoc291cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikKKyAg
ICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpDb2xvcikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc291cmNlLmFjdGlvbiAm
IChEcmFnU291cmNlQWN0aW9uREhUTUwgfCBEcmFnU291cmNlQWN0aW9uSW1hZ2UpOworICAgIHJl
dHVybiBzb3VyY2UuYWN0aW9uLmNvbnRhaW5zQW55KHsgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUws
IERyYWdTb3VyY2VBY3Rpb246OkltYWdlIH0pOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRVc2VW
aXNpYmxlUGF0aFRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJjZVN0
YXRlJiBzb3VyY2UpCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlVmlz
aWJsZVBhdGhUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGEK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0g
ICAgaWYgKHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQ29sb3IpCisgICAgaWYgKHNv
dXJjZS5hY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbmRpZgogCkBAIC0xMjQsMTEgKzEyNCwxMSBAQCBzdGF0aWMgYm9vbCBz
aG91bGRVc2VUZXh0SW5kaWNhdG9yVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBE
cmFnU291cmNlUwogICAgIGlmICghc291cmNlLmluZGljYXRvckRhdGEpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmIChzb3VyY2UuYWN0aW9uICYgKERyYWdTb3VyY2VBY3Rpb25MaW5r
IHwgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikpCisgICAgaWYgKHNvdXJjZS5hY3Rpb24uY29u
dGFpbnNBbnkoeyBEcmFnU291cmNlQWN0aW9uOjpMaW5rLCBEcmFnU291cmNlQWN0aW9uOjpTZWxl
Y3Rpb24gfSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKLSAgICBpZiAoc291cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25BdHRhY2ht
ZW50KQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkF0
dGFjaG1lbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCkBAIC0xNDEsMTEgKzE0
MSwxMSBAQCBzdGF0aWMgYm9vbCBjYW5VcGRhdGVQcmV2aWV3Rm9yQWN0aXZlRHJhZ1NvdXJjZShj
b25zdCBEcmFnU291cmNlU3RhdGUmIHNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgaWYgKHNvdXJjZS5hY3Rpb24gJiBEcmFn
U291cmNlQWN0aW9uQ29sb3IpCisgICAgaWYgKHNvdXJjZS5hY3Rpb24uY29udGFpbnMoRHJhZ1Nv
dXJjZUFjdGlvbjo6Q29sb3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0gICAg
aWYgKHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluayAmJiAhKHNvdXJjZS5hY3Rp
b24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRh
aW5zKERyYWdTb3VyY2VBY3Rpb246OkxpbmspICYmICFzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERy
YWdTb3VyY2VBY3Rpb246OkltYWdlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNjcsNyArMTY3LDcgQEAgT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRlPiBE
cmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmFjdGl2ZURyYWdTb3VyY2VGb3JJdGVtKFVJRHIKIGJv
b2wgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjphbnlBY3RpdmVEcmFnU291cmNlSXMoV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBzb3Vy
Y2UgOiBtX2FjdGl2ZURyYWdTb3VyY2VzKSB7Ci0gICAgICAgIGlmIChzb3VyY2UuYWN0aW9uICYg
YWN0aW9uKQorICAgICAgICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhhY3Rpb24pKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTM0Miw3
ICszNDIsNyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6c3RhZ2VEcmFnSXRlbShj
b25zdCBEcmFnSXRlbSYgaXRlbSwgVUlJbWFnZSAqZHJhZwogCiAgICAgbV9hZGp1c3RlZFBvc2l0
aW9uRm9yRHJhZ0VuZCA9IGl0ZW0uZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVzOwog
ICAgIG1fc3RhZ2VkRHJhZ1NvdXJjZSA9IHt7Ci0gICAgICAgIHN0YXRpY19jYXN0PERyYWdTb3Vy
Y2VBY3Rpb24+KGl0ZW0uc291cmNlQWN0aW9uKSwKKyAgICAgICAgaXRlbS5zb3VyY2VBY3Rpb24s
CiAgICAgICAgIGl0ZW0uZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVzLAogICAgICAg
ICBpdGVtLmRyYWdQcmV2aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMsCiAgICAgICAgIGRy
YWdJbWFnZSwKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZTo6c3RhZ2VEcmFnSXRlbShjb25zdCBEcmFnSXRlbSYgaXRlbSwgVUlJbWFnZSAqZHJhZwogCiBi
b29sIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6aGFzU3RhZ2VkRHJhZ1NvdXJjZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fc3RhZ2VkRHJhZ1NvdXJjZSAmJiBzdGFnZWREcmFnU291cmNlKCku
YWN0aW9uICE9IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb25Ob25lOworICAgIHJldHVybiBtX3N0
YWdlZERyYWdTb3VyY2UgJiYgIXN0YWdlZERyYWdTb3VyY2UoKS5hY3Rpb24uaXNFbXB0eSgpOwog
fQogCiB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6Y2xlYXJTdGFnZWREcmFnU291cmNl
KERpZEJlY29tZUFjdGl2ZSBkaWRCZWNvbWVBY3RpdmUpCkBAIC0zOTMsNyArMzkzLDcgQEAgdm9p
ZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnVwZGF0ZVByZXZpZXdzRm9yQWN0aXZlRHJhZ1Nv
dXJjZXMoKQogICAgICAgICBpZiAoIWRyYWdJdGVtKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgaWYgKHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykgeworICAg
ICAgICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpMaW5rKSkg
ewogICAgICAgICAgICAgZHJhZ0l0ZW0ucHJldmlld1Byb3ZpZGVyID0gW3RpdGxlID0gcmV0YWlu
UHRyKChOU1N0cmluZyAqKXNvdXJjZS5saW5rVGl0bGUpLCB1cmwgPSByZXRhaW5QdHIoKE5TVVJM
ICopc291cmNlLmxpbmtVUkwpLCBjZW50ZXIgPSBzb3VyY2UuYWRqdXN0ZWRPcmlnaW5dICgpIC0+
IFVJRHJhZ1ByZXZpZXcgKiB7CiAgICAgICAgICAgICAgICAgVUlVUkxEcmFnUHJldmlld1ZpZXcg
KnByZXZpZXdWaWV3ID0gW1VJVVJMRHJhZ1ByZXZpZXdWaWV3IHZpZXdXaXRoVGl0bGU6dGl0bGUu
Z2V0KCkgVVJMOnVybC5nZXQoKV07CiAgICAgICAgICAgICAgICAgcHJldmlld1ZpZXcuY2VudGVy
ID0gY2VudGVyOwpAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlOjp1cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCkKICAgICAgICAgICAgIH07
CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICAgICAgZWxzZSBp
ZiAoc291cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikgeworICAgICAgICBlbHNl
IGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkNvbG9yKSkgewog
ICAgICAgICAgICAgZHJhZ0l0ZW0ucHJldmlld1Byb3ZpZGVyID0gW2ltYWdlID0gc291cmNlLmlt
YWdlXSAoKSAtPiBVSURyYWdQcmV2aWV3ICogewogICAgICAgICAgICAgICAgIFVJSW1hZ2VWaWV3
ICppbWFnZVZpZXcgPSBbW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWFnZS5n
ZXQoKV0gYXV0b3JlbGVhc2VdOwogICAgICAgICAgICAgICAgIFVJRHJhZ1ByZXZpZXdQYXJhbWV0
ZXJzICpwYXJhbWV0ZXJzID0gW1tbVUlEcmFnUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGluaXRX
aXRoVGV4dExpbmVSZWN0czpAWyBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W2ltYWdlVmlldyBi
b3VuZHNdXSBdXSBhdXRvcmVsZWFzZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkMmI0ZjczOGVkNGU5
OTZlNjg1YjM2Y2UwNzk3MmViZjJjY2M5MzgxLi45MzZhOTRmNzQwNTJkM2I3Yzg0ZDNlODI1ZmU2
NWJjYjI4MWNmZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTcyNDAsNyArNzI0MCw3IEBAIC0gKHZv
aWQpdGVhcmRvd25EcmFnQW5kRHJvcEludGVyYWN0aW9ucwogCiAtICh2b2lkKV9zdGFydERyYWc6
KFJldGFpblB0cjxDR0ltYWdlUmVmPilpbWFnZSBpdGVtOihjb25zdCBXZWJDb3JlOjpEcmFnSXRl
bSYpaXRlbQogewotICAgIEFTU0VSVChpdGVtLnNvdXJjZUFjdGlvbiAhPSBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uTm9uZSk7CisgICAgQVNTRVJUKGl0ZW0uc291cmNlQWN0aW9uKTsKIAogICAg
IGlmIChpdGVtLnByb21pc2VkQXR0YWNobWVudEluZm8pCiAgICAgICAgIFtzZWxmIF9wcmVwYXJl
VG9EcmFnUHJvbWlzZWRBdHRhY2htZW50Oml0ZW0ucHJvbWlzZWRBdHRhY2htZW50SW5mb107CkBA
IC03NTQxLDEyICs3NTQxLDEyIEBAIC0gKFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKV9kcmFnRGVz
dGluYXRpb25BY3Rpb25Gb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3NpCiAgICAgcmV0dXJu
IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uQW55ICYgfldLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTG9h
ZDsKIH0KIAotLSAoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbilfYWxsb3dlZERyYWdTb3VyY2VB
Y3Rpb25zCistIChPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4pX2FsbG93ZWRE
cmFnU291cmNlQWN0aW9ucwogewotICAgIGF1dG8gYWxsb3dlZEFjdGlvbnMgPSBXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uQW55OworICAgIGF1dG8gYWxsb3dlZEFjdGlvbnMgPSBXZWJDb3JlOjph
bnlEcmFnU291cmNlQWN0aW9uKCk7CiAgICAgaWYgKCFzZWxmLmlzRmlyc3RSZXNwb25kZXIgfHwg
IV9zdXBwcmVzc1NlbGVjdGlvbkFzc2lzdGFudFJlYXNvbnMuaXNFbXB0eSgpKSB7CiAgICAgICAg
IC8vIERvbid0IGFsbG93IHN0YXJ0aW5nIGEgZHJhZyBvbiBhIHNlbGVjdGlvbiB3aGVuIHNlbGVj
dGlvbiB2aWV3cyBhcmUgbm90IHZpc2libGUuCi0gICAgICAgIGFsbG93ZWRBY3Rpb25zID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4oYWxsb3dlZEFjdGlvbnMgJiB+V2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbik7CisgICAgICAgIGFsbG93ZWRBY3Rpb25z
LnJlbW92ZShXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pOwogICAgIH0KICAg
ICByZXR1cm4gYWxsb3dlZEFjdGlvbnM7CiB9CkBAIC04MDE3LDcgKzgwMTcsNyBAQCAtIChVSVRh
cmdldGVkRHJhZ1ByZXZpZXcgKilkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gcHJldgogLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0
aW9uICopaW50ZXJhY3Rpb24gd2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW1hdG9yOihpZCA8VUlEcmFn
QW5pbWF0aW5nPilhbmltYXRvciBzZXNzaW9uOihpZCA8VUlEcmFnU2Vzc2lvbj4pc2Vzc2lvbgog
ewogICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIHdpbGxBbmltYXRl
TGlmdFdpdGhBbmltYXRvcjogJXAiLCBzZXNzaW9uKTsKLSAgICBpZiAoX2RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5hbnlBY3RpdmVEcmFnU291cmNlSXMoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
blNlbGVjdGlvbikpIHsKKyAgICBpZiAoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hbnlBY3Rp
dmVEcmFnU291cmNlSXMoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSkgewog
ICAgICAgICBbc2VsZiBjYW5jZWxBY3RpdmVUZXh0SW50ZXJhY3Rpb25HZXN0dXJlc107CiAgICAg
ICAgIGlmICghX3Nob3VsZFJlc3RvcmVDYWxsb3V0QmFyQWZ0ZXJEcm9wKSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBTUEkgc2hvdWxkIGJlIHJlbmFtZWQgaW4gVUlLaXQgdG8gcmVmbGVj
dCBhIG1vcmUgZ2VuZXJhbCBwdXJwb3NlIG9mIGhpZGluZyBpbnRlcmFjdGlvbiBhc3Npc3RhbnQg
Y29udHJvbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCA2MTRkY2JmMzdjMDQ1ZGE4YjQ5ODJjYzhkYTM4NTUwYTEyYmUyNDdkLi4zNGYw
NTE5YmU3ODljYjYxNWVjZmMwMzg1M2M4MzIwNmViM2MwMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEyNTcsMTYgKzEyNTcsMTYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0
KGJvb2wgYWRkZWQpCiAgICAgcGFnZUNsaWVudCgpLmRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRl
bXNSZXF1ZXN0KGFkZGVkKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REcmFnU3Rh
cnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxs
b3dlZEFjdGlvbnMpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERyYWdTdGFydChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFs
bG93ZWRBY3Rpb25zTWFzaykKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RHJhZ1N0YXJ0KGNs
aWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnMpLCBtX3dlYlBhZ2VJ
RCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERy
YWdTdGFydChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rpb25zTWFz
ayksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBZGRpdGlv
bmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBh
bGxvd2VkQWN0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1z
Rm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
PiBhbGxvd2VkQWN0aW9uc01hc2spCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0g
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFkZGl0aW9u
YWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxs
b3dlZEFjdGlvbnMpLCBtX3dlYlBhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNsaWVu
dFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnNNYXNrKSwgbV93ZWJQYWdl
SUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xk
ZXJzKGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNh
dG9yRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IDgx
Yjc5YTc3Yzg3ZTBhZGUxNjZhMDg2ZjQ1NjQ2YWViZGI5M2M4YjEuLjJlYjA4ODZmMTNlZDAzNWE1
M2I4ZWFhNjA2MDVkZTRkZmU1M2ZiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJh
Z1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQKIHsKIH0KIAotRHJhZ1NvdXJjZUFjdGlvbiBX
ZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50
JikKK09wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNl
QWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKIHsKICAgICByZXR1cm4gbV9wYWdl
LT5hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDI3YzRi
MjcyYTczOWRkODQ2OTgwZGJkYTUyOWIzMzYyZDJlM2VlZWQuLjRkYmEwZDhhYmQyMzZlMGI3Y2Rl
MDdjNjJkYmMyYjQzMWE0ZjM2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtNDUsNyArNDUsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rp
b24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0
YSYpIG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6
RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7Ci0gICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBk
cmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5k
b3dQb2ludCkgb3ZlcnJpZGU7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHdpbmRvd1BvaW50KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRy
YWdJdGVtLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkQ29uY2x1ZGVFZGl0RHJhZygpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE0YjE1Nzg2NmJlN2YyZDVlNTg4
MzY2NzhlZDc0MTVkZjI2MjViY2IuLjA0OTU2MDJmMGUzNjUwNmZkM2E2ODY5ODQ0MjNmODIyMmM3
NGI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTkxNSw3ICs5MTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU3RhcnREcmFnKCkgeyBBU1NF
UlQoIW1faXNTdGFydGluZ0RyYWcpOyBtX2lzU3RhcnRpbmdEcmFnID0gdHJ1ZTsgfQogICAgIHZv
aWQgZGlkU3RhcnREcmFnKCk7CiAgICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7Ci0gICAgV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX2FsbG93ZWREcmFnU291cmNlQWN0aW9uczsgfQorICAgIE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtX2FsbG93ZWREcmFnU291cmNlQWN0aW9uczsgfQogI2VuZGlmCiAKICAgICB2b2lkIGJl
Z2luUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mKTsK
QEAgLTE0MDYsOCArMTQwNiw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgIHZvaWQgcmVxdWVzdERy
YWdTdGFydChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMp
OwotICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucyk7CisgICAgdm9pZCByZXF1
ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKKyAgICB2b2lkIHJlcXVlc3RB
ZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0
aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzayk7CiAg
ICAgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFNpemU+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIHJl
cGx5KTsKICAgICB2b2lkIGNvbXB1dGVBbmRTZW5kRWRpdERyYWdTbmFwc2hvdCgpOwogI2VuZGlm
CkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKICAgICBib29sIG1faXNTdGFydGluZ0RyYWcgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24gbV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMgeyBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uQW55IH07CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IG1fYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zIHsgV2ViQ29yZTo6YW55RHJhZ1NvdXJjZUFj
dGlvbigpIH07CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBhZTkyNzQ3NjM4ODUzYjMyZTIzYjRlZTEzNjNhMTMz
YmNiZjYwNTFiLi4xNmFmMzE3ZTg4NDZmNWYzZjk2YzA4MGI0Y2FhODc1YTZhNDAwMGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTMyMSw4ICszMjEsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2VuZGlm
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAg
IFJlcXVlc3REcmFnU3RhcnQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNv
cmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKLSAg
ICBSZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRf
dCBhbGxvd2VkQWN0aW9ucykKKyAgICBSZXF1ZXN0RHJhZ1N0YXJ0KFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzaykKKyAgICBS
ZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oV2ViQ29yZTo6SW50UG9pbnQgY2xp
ZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8
V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKQogICAgIEluc2Vy
dERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gaW1hZ2VT
aXplKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IGRyb3BQcmV2aWV3UmVjdHMsIE9wdGlv
bmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yKSBBc3luYwogICAg
IERpZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNTgwMzRiNzFjMTEyOWNkYThlOGM3
OTI1MmIwYTU0ZmNlMDRiZTM5MC4uNzBjOGYyYWFmZWE5MzI1ZDhlNTJkOTE4YjEzZmFlOTUzYjFi
Mzk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTkwOSwxNiArOTA5LDE2IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEZv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24oV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB9
CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKLXZvaWQgV2ViUGFnZTo6cmVxdWVzdERy
YWdTdGFydChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpCit2b2lkIFdlYlBhZ2U6OnJl
cXVlc3REcmFnU3RhcnQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
PiBhbGxvd2VkQWN0aW9uc01hc2spCiB7Ci0gICAgU2V0Rm9yU2NvcGU8V2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNGb3JTY29wZShtX2FsbG93ZWREcmFnU291cmNlQWN0
aW9ucywgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4oYWxsb3dlZEFjdGlv
bnMpKTsKKyAgICBTZXRGb3JTY29wZTxPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
bj4+IGFsbG93ZWRBY3Rpb25zRm9yU2NvcGUobV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMsIGFs
bG93ZWRBY3Rpb25zTWFzayk7CiAgICAgYm9vbCBkaWRTdGFydCA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkuZXZlbnRIYW5kbGVyKCkudHJ5VG9CZWdpbkRyYWdBdFBvaW50KGNsaWVudFBvc2l0aW9uLCBn
bG9iYWxQb3NpdGlvbik7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRIYW5k
bGVEcmFnU3RhcnRSZXF1ZXN0KGRpZFN0YXJ0KSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVxdWVz
dEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0
aW9ucykKK3ZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9u
KGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlv
bnNNYXNrKQogewotICAgIFNldEZvclNjb3BlPFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFs
bG93ZWRBY3Rpb25zRm9yU2NvcGUobV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMsIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+KGFsbG93ZWRBY3Rpb25zKSk7CisgICAgU2V0
Rm9yU2NvcGU8T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+PiBhbGxvd2VkQWN0
aW9uc0ZvclNjb3BlKG1fYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zLCBhbGxvd2VkQWN0aW9uc01h
c2spOwogICAgIC8vIFRvIGF1Z21lbnQgdGhlIHBsYXRmb3JtIGRyYWcgc2Vzc2lvbiB3aXRoIGFk
ZGl0aW9uYWwgaXRlbXMsIGVuZCB0aGUgY3VycmVudCBkcmFnIHNlc3Npb24gYW5kIGJlZ2luIGEg
bmV3IGRyYWcgc2Vzc2lvbiB3aXRoIHRoZSBuZXcgZHJhZyBpdGVtLgogICAgIC8vIFRoaXMgcHJv
Y2VzcyBpcyBvcGFxdWUgdG8gdGhlIFVJIHByb2Nlc3MsIHdoaWNoIHN0aWxsIG1haW50YWlucyB0
aGUgb2xkIGRyYWcgaXRlbSBpbiBpdHMgZHJhZyBzZXNzaW9uLiBTaW1pbGFybHksIHRoaXMgcGVy
c2lzdGVudCBkcmFnIHNlc3Npb24KICAgICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNz
LCB3aGljaCBvbmx5IHNlZXMgdGhhdCB0aGUgY3VycmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRo
YXQgYSBuZXcgb25lIGlzIGJlZ2lubmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCAxNWRjYmE1NDQyMTE0
NTBhMGE1ZWU2YzE1M2EwMzk2ZmE0YTg2NGI4Li4zNGE3NWZmYWIxOWUwMTllMDNmYTA5NDRjMzAw
YzM1NjAzN2EyZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAg
IHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3Zl
cnJpZGU7Ci0gICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFz
a0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7
CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGRyYWdTb3VyY2VBY3Rp
b25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVy
cmlkZTsKICAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RGF0
YVRyYW5zZmVyJiwgV2ViQ29yZTo6RnJhbWUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYmVnaW5E
cmFnKFdlYkNvcmU6OkRyYWdJdGVtLCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBtb3VzZURvd25Qb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNl
RHJhZ2dlZFBvc2l0aW9uLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IDNkMWEwYTM1ZmYyNTIxZDE5
NGRlZTU2MWFiODkxNzRkZmUxZWY0M2YuLjQyYWMyN2JmYzY4MzU3ODc5ZDBlYmQ3OTUyNThmZTc1
NWU0YmYzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAtNjgsNiArNjgsMjIgQEAgV2ViRHJhZ0NsaWVu
dDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYgUExBVEZPUk0oTUFDKQog
CitzdGF0aWMgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGNvcmVEcmFnU291
cmNlQWN0aW9uTWFzayhXZWJEcmFnU291cmNlQWN0aW9uIGFjdGlvbikKK3sKKyAgICBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gcmVzdWx0OworCisgICAgaWYgKGFjdGlvbiAm
IFdlYkRyYWdTb3VyY2VBY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uOjpESFRNTCk7CisgICAgaWYgKGFjdGlvbiAmIFdlYkRyYWdTb3VyY2VB
Y3Rpb25JbWFnZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
OjpJbWFnZSk7CisgICAgaWYgKGFjdGlvbiAmIFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rKQorICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkxpbmspOworICAgIGlm
IChhY3Rpb24gJiBXZWJEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKQorICAgICAgICByZXN1bHQu
YWRkKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbik7CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBzdGF0aWMgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGtpdChXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uKQogewogICAgIHN3aXRjaCAoYWN0aW9uKSB7
CkBAIC0xMDQsMTUgKzEyMCwxNSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdAogfQogCiAKLVdl
YkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1h
c2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCkKK09wdGlvblNldDxXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uPiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFz
a0ZvclBvaW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KQogewogICAgIE5TUG9pbnQg
dmlld1BvaW50ID0gW21fd2ViVmlldyBfY29udmVydFBvaW50RnJvbVJvb3RWaWV3OnJvb3RWaWV3
UG9pbnRdOwotICAgIHJldHVybiAoRHJhZ1NvdXJjZUFjdGlvbilbW21fd2ViVmlldyBfVUlEZWxl
Z2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQ
b2ludDp2aWV3UG9pbnRdOworICAgIHJldHVybiBjb3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2soW1tt
X3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGRyYWdTb3Vy
Y2VBY3Rpb25NYXNrRm9yUG9pbnQ6dmlld1BvaW50XSk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVu
dDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24g
YWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEb3duUG9pbnQsIFdlYkNvcmU6
OkRhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQogewotICAgIFtbbV93ZWJWaWV3IF9VSURlbGVn
YXRlRm9yd2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rp
b246KFdlYkRyYWdTb3VyY2VBY3Rpb24pYWN0aW9uIGZyb21Qb2ludDptb3VzZURvd25Qb2ludCB3
aXRoUGFzdGVib2FyZDpbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpkYXRhVHJhbnNm
ZXIucGFzdGVib2FyZCgpLm5hbWUoKV1dOworICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9y
d2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb246a2l0
KGFjdGlvbikgZnJvbVBvaW50Om1vdXNlRG93blBvaW50IHdpdGhQYXN0ZWJvYXJkOltOU1Bhc3Rl
Ym9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOmRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkubmFtZSgp
XV07CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVt
LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmIGZyYW1lKQpAQCAtMTI0LDcgKzE0
MCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBE
YXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhCiAgICAgaWYgKCFbaHRtbFZpZXcuZ2V0KCkg
aXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuOwogICAg
IAotICAgIE5TRXZlbnQgKmV2ZW50ID0gZHJhZ0l0ZW0uc291cmNlQWN0aW9uID09IERyYWdTb3Vy
Y2VBY3Rpb25MaW5rID8gZnJhbWUuZXZlbnRIYW5kbGVyKCkuY3VycmVudE5TRXZlbnQoKSA6IFto
dG1sVmlldy5nZXQoKSBfbW91c2VEb3duRXZlbnRdOworICAgIE5TRXZlbnQgKmV2ZW50ID0gKGRy
YWdJdGVtLnNvdXJjZUFjdGlvbiAmJiAqZHJhZ0l0ZW0uc291cmNlQWN0aW9uID09IERyYWdTb3Vy
Y2VBY3Rpb246OkxpbmspID8gZnJhbWUuZXZlbnRIYW5kbGVyKCkuY3VycmVudE5TRXZlbnQoKSA6
IFtodG1sVmlldy5nZXQoKSBfbW91c2VEb3duRXZlbnRdOwogICAgIFdlYkhUTUxWaWV3KiB0b3BI
VE1MVmlldyA9IGdldFRvcEhUTUxWaWV3KCZmcmFtZSk7CiAgICAgUmV0YWluUHRyPFdlYkhUTUxW
aWV3PiB0b3BWaWV3UHJvdGVjdG9yID0gdG9wSFRNTFZpZXc7CiAgICAgCkBAIC0xOTcsOSArMjEz
LDkgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlv
bihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3QKIHsKIH0KIAotV2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0
IEludFBvaW50JikKK09wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBXZWJEcmFn
Q2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKIHsK
LSAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAog
dm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpEYXRh
VHJhbnNmZXImKQpAQCAtMjMyLDkgKzI0OCw5IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBl
cmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0CiB7
CiB9CiAKLVdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJj
ZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCitPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbj4gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQ
b2ludChjb25zdCBJbnRQb2ludCYpCiB7Ci0gICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Bbnk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OmFueURyYWdTb3VyY2VBY3Rpb24oKTsKIH0KIAogdm9pZCBX
ZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGRiOTAzZThmNmJlMGZkZWVmYTI1
ODk0Yjk4MDM0YWYxNjY1Mzk1NDIuLmNlMTJhYmU0YWRlM2UyNjVlY2YwYjhjMWQ5ZDdlZDMwNDkz
M2VhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTY3NSw2ICs2NzUsMzQgQEAgc3RhdGljIF9VSURyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCiAgICAgcmV0dXJuIF9VSURyYWdP
cGVyYXRpb25Ob25lOwogfQogI2VuZGlmIC8vIFVTRShBUFBLSVQpCisKK1dlYkRyYWdTb3VyY2VB
Y3Rpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFjdGlvbikKK3sK
KyAgICBpZiAoIWFjdGlvbikKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25Ob25l
OworCisgICAgc3dpdGNoICgqYWN0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uOjpESFRNTDoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25ESFRNTDsK
KyAgICBjYXNlIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkltYWdlOgorICAgICAgICByZXR1
cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkltYWdlOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbjo6TGluazoKKyAgICAgICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rOwor
ICAgIGNhc2UgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uOgorICAgICAgICBy
ZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjsKKyNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQorICAgIGNhc2UgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVu
dDoKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
KyAgICBjYXNlIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkNvbG9yOgorICAgICAgICBicmVh
azsKKyNlbmRpZgorICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBXZWJEcmFnU291cmNlQWN0aW9uTm9uZTsKK30KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogCiBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBv
cHRpb25zKQpAQCAtMTk2MCw3ICsxOTg4LDcgQEAgLSAodm9pZClfc3RhcnREcmFnOihjb25zdCBX
ZWJDb3JlOjpEcmFnSXRlbSYpZHJhZ0l0ZW0KICAgICBfcHJpdmF0ZS0+ZHJhZ2dlZExpbmtVUkwg
PSBkcmFnSXRlbS51cmwuaXNFbXB0eSgpID8gbmlsIDogKE5TVVJMICopZHJhZ0l0ZW0udXJsOwog
ICAgIF9wcml2YXRlLT5kcmFnZ2VkTGlua1RpdGxlID0gZHJhZ0l0ZW0udGl0bGUuaXNFbXB0eSgp
ID8gbmlsIDogKE5TU3RyaW5nICopZHJhZ0l0ZW0udGl0bGU7CiAgICAgX3ByaXZhdGUtPmRyYWdQ
cmV2aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBkcmFnSXRlbS5kcmFnUHJldmlld0Zy
YW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwotICAgIF9wcml2YXRlLT5kcmFnU291cmNlQWN0aW9u
ID0gc3RhdGljX2Nhc3Q8V2ViRHJhZ1NvdXJjZUFjdGlvbj4oZHJhZ0l0ZW0uc291cmNlQWN0aW9u
KTsKKyAgICBfcHJpdmF0ZS0+ZHJhZ1NvdXJjZUFjdGlvbiA9IGtpdChkcmFnSXRlbS5zb3VyY2VB
Y3Rpb24pOwogfQogCiAtIChDR1JlY3QpX2RhdGFJbnRlcmFjdGlvbkNhcmV0UmVjdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXgg
ZWExZjJmMzFlNWJjZjk5MDQ1NGRkMDJmZjBkMzBkMTUwMzE2M2ZiMy4uNTYyNTBmZDc0NzIzODM0
ODQ1ZDM3MDJhN2E5YmMwNTEyOTNmMTRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0
ICJXZWJQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKICNpbXBvcnQg
IldlYlR5cGVzSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlVJRGVsZWdhdGUuaCIKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiAKQEAgLTk4LDYgKzk5LDggQEAgdXNpbmcgQ29jb2FEcmFnT3BlcmF0aW9u
ID0gdWludDY0X3Q7CiAjZW5kaWYKIAogT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24pOworCitXZWJEcmFnU291
cmNlQWN0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPik7CiAjZW5k
aWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9w
dGlvbnMoV2ViRmluZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCA1YjE5M2E3ZGFhMzA2
ZjY1M2U5MDNjYmZhNzJlMWVhMzNmMDE1ZWNlLi5kZThjOTMxZDY3NTMwNzljYjZiYzA0MDlhMzc5
NWYyM2FmODRhM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNzIsNiArNzIsNDYgQEAgc3RhdGlj
IFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBraXQoRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlv
bikKICAgICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKIH0KIAorc3RhdGlj
IE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBjb3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2soV2Vi
RHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb25NYXNrKQoreworICAgIE9wdGlvblNldDxEcmFnU291cmNl
QWN0aW9uPiByZXN1bHQ7CisKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rp
b25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChEcmFnU291cmNlQWN0aW9uOjpESFRNTCk7Cisg
ICAgaWYgKGFjdGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0aW9uSW1hZ2UpCisgICAgICAgIHJl
c3VsdC5hZGQoRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UpOworICAgIGlmIChhY3Rpb25NYXNrICYg
V2ViRHJhZ1NvdXJjZUFjdGlvbkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQoRHJhZ1NvdXJjZUFj
dGlvbjo6TGluayk7CisgICAgaWYgKGFjdGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0aW9uU2Vs
ZWN0aW9uKQorICAgICAgICByZXN1bHQuYWRkKERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbik7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgV2ViRHJhZ1NvdXJjZUFjdGlvbiBr
aXQoRHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAg
ICBjYXNlIERyYWdTb3VyY2VBY3Rpb246OkRIVE1MOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1Nv
dXJjZUFjdGlvbkRIVE1MOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2U6CisgICAg
ICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uSW1hZ2U7CisgICAgY2FzZSBEcmFnU291cmNl
QWN0aW9uOjpMaW5rOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkxpbms7Cisg
ICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb246CisgICAgICAgIHJldHVybiBXZWJE
cmFnU291cmNlQWN0aW9uU2VsZWN0aW9uOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50OgorICAgICAgICBicmVhazsK
KyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIGNhc2UgRHJhZ1NvdXJj
ZUFjdGlvbjo6Q29sb3I6CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgfQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uTm9uZTsKK30K
KwogV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpIAogewpAQCAtODcsMTQgKzEyNywxNCBAQCB2b2lkIFdlYkRyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFj
dGlvbiBhY3RpbwogICAgICAgICBkZWxlZ2F0ZVJlZi0+d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRp
b25BY3Rpb24obV93ZWJWaWV3LCBraXQoYWN0aW9uKSwgZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkp
OwogfQogCi1EcmFnU291cmNlQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQorT3B0aW9uU2V0PERyYWdT
b3VyY2VBY3Rpb24+IFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQo
Y29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQogewogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0
ZT4gZGVsZWdhdGVSZWYgPSAwOwotICAgIFdlYkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uID0gV2Vi
RHJhZ1NvdXJjZUFjdGlvbkFueTsKKyAgICBXZWJEcmFnU291cmNlQWN0aW9uIGFjdGlvbk1hc2sg
PSBXZWJEcmFnU291cmNlQWN0aW9uQW55OwogICAgIFBPSU5UIGxvY2FscHQgPSBjb3JlKG1fd2Vi
VmlldyktPm1haW5GcmFtZSgpLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3aW5kb3dQb2ludCk7
CiAgICAgaWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJmRlbGVnYXRlUmVmKSkp
Ci0gICAgICAgIGRlbGVnYXRlUmVmLT5kcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KG1fd2Vi
VmlldywgJmxvY2FscHQsICZhY3Rpb24pOwotICAgIHJldHVybiAoRHJhZ1NvdXJjZUFjdGlvbilh
Y3Rpb247CisgICAgICAgIGRlbGVnYXRlUmVmLT5kcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50
KG1fd2ViVmlldywgJmxvY2FscHQsICZhY3Rpb25NYXNrKTsKKyAgICByZXR1cm4gY29yZURyYWdT
b3VyY2VBY3Rpb25NYXNrKGFjdGlvbk1hc2spOwogfQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6Ondp
bGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uIGFjdGlvbiwgY29uc3Qg
SW50UG9pbnQmIGludFBvaW50LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlcikKQEAgLTEwNyw3
ICsxNDcsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlv
bihEcmFnU291cmNlQWN0aW9uIGFjdGlvbiwgY29uc3QgSQogICAgIENPTVB0cjxJRGF0YU9iamVj
dD4gZGF0YU9iamVjdCA9IGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuZGF0YU9iamVjdCgpOwog
CiAgICAgQ09NUHRyPElEYXRhT2JqZWN0PiBuZXdEYXRhT2JqZWN0OwotICAgIEhSRVNVTFQgcmVz
dWx0ID0gdWlEZWxlZ2F0ZS0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKG1fd2ViVmlldywg
c3RhdGljX2Nhc3Q8V2ViRHJhZ1NvdXJjZUFjdGlvbj4oYWN0aW9uKSwgJnBvaW50LCBkYXRhT2Jq
ZWN0LmdldCgpLCAmbmV3RGF0YU9iamVjdCk7CisgICAgSFJFU1VMVCByZXN1bHQgPSB1aURlbGVn
YXRlLT53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24obV93ZWJWaWV3LCBraXQoYWN0aW9uKSwg
JnBvaW50LCBkYXRhT2JqZWN0LmdldCgpLCAmbmV3RGF0YU9iamVjdCk7CiAgICAgaWYgKHJlc3Vs
dCA9PSBTX09LICYmIG5ld0RhdGFPYmplY3QgIT0gZGF0YU9iamVjdCkKICAgICAgICAgY29uc3Rf
Y2FzdDxQYXN0ZWJvYXJkJj4oZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKSkuc2V0RXh0ZXJuYWxE
YXRhT2JqZWN0KG5ld0RhdGFPYmplY3QuZ2V0KCkpOwogfQpAQCAtMTQzLDcgKzE4Myw3IEBAIHZv
aWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFuc2ZlciYg
ZGF0YVRyYW5zZmVyLCBGcmFtZSYKICAgICAgICAgICAgICAgICBzZGkuaGJtcERyYWdJbWFnZSA9
IGltYWdlLmdldCgpOwogICAgICAgICAgICAgICAgIHNkaS5wdE9mZnNldC54ID0gZHJhZ1BvaW50
LngoKSAtIGltYWdlT3JpZ2luLngoKTsKICAgICAgICAgICAgICAgICBzZGkucHRPZmZzZXQueSA9
IGRyYWdQb2ludC55KCkgLSBpbWFnZU9yaWdpbi55KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGl0
ZW0uc291cmNlQWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb25MaW5rKQorICAgICAgICAgICAgICAg
IGlmIChpdGVtLnNvdXJjZUFjdGlvbiAmJiAqaXRlbS5zb3VyY2VBY3Rpb24gPT0gRHJhZ1NvdXJj
ZUFjdGlvbjo6TGluaykKICAgICAgICAgICAgICAgICAgICAgc2RpLnB0T2Zmc2V0LnkgPSBiLmJt
SGVpZ2h0IC0gc2RpLnB0T2Zmc2V0Lnk7CiAKICAgICAgICAgICAgICAgICBoZWxwZXItPkluaXRp
YWxpemVGcm9tQml0bWFwKCZzZGksIGRhdGFPYmplY3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4
IGE1MWZjMDEzZjA1Yjc3ZTBhNTQxYWIwNTZlYWE4YmJiOTZhYTk0NzkuLmY1OGM3MzdlYTU0NDgy
MDdlMGYyOTRkNGRlYmU0YTA2YTQ2ZGUzMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTM3LDcgKzM3LDcg
QEAgY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKIAotICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7CisgICAgdmlydHVhbCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFj
dGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdE
YXRhJik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6
OkRhdGFUcmFuc2ZlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJh
Z0l0ZW0sIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJik7Cg==
</data>
<flag name="review"
          id="416776"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401611</attachid>
            <date>2020-06-10 18:04:33 -0700</date>
            <delta_ts>2020-06-11 11:57:12 -0700</delta_ts>
            <desc>Patch v5 with Optional&lt;DragSourceAction&gt; in DragState</desc>
            <filename>bug-212885-v5-with-DragState-Optional-DragSourceAction.diff</filename>
            <type>text/plain</type>
            <size>73971</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzI1NzMxNTJkNGIuLjYxMDg1ODZkMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIw
LTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW0lQ
Q10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ1NvdXJjZUFjdGlvbgorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMjEyODg1PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQwOTQxMzQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
T3B0aW9uU2V0Lmg6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6aGFzRXhhY3RseU9uZUJpdFNl
dCBjb25zdCk6IEFkZC4KKyAgICAgICAgLSBNb3ZlIGhlcmUgZnJvbSBXZWJDb3JlOjpFeGFjdGx5
T25lQml0U2V0KCkgaW4KKyAgICAgICAgICBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAuCisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6dG9TaW5nbGVWYWx1ZSBjb25zdCk6IEFk
ZC4KKyAgICAgICAgLSBVc2UgaGFzRXhhY3RseU9uZUJpdFNldCgpIHRvIGRldGVybWluZSB3aGV0
aGVyIGV4YWN0bHkgb25lCisgICAgICAgICAgZW51bSBiaXRtYXNrIHZhbHVlIGNhbiBiZSByZXR1
cm5lZC4KKwogMjAyMC0wNi0xMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gQnVpbGQgY2FsbE9uTWFpblRocmVhZCBvbiBXVEY6OlJ1bkxvb3Ag
cmF0aGVyIHRoYW4gb24gTlNPYmplY3QgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvT3B0aW9uU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAppbmRleCAyZGNmNDNj
MmU2Mi4uNTliZGFlNjNjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCkBAIC0yMDUsNiArMjA1LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgbV9zdG9yYWdlICY9IH5vcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0K
IAorICAgIGNvbnN0ZXhwciBib29sIGhhc0V4YWN0bHlPbmVCaXRTZXQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fc3RvcmFnZSAmJiAhKG1fc3RvcmFnZSAmIChtX3N0b3JhZ2UgLSAx
KSk7CisgICAgfQorCisgICAgY29uc3RleHByIE9wdGlvbmFsPEU+IHRvU2luZ2xlVmFsdWUoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGhhc0V4YWN0bHlPbmVCaXRTZXQoKSA/IE9wdGlv
bmFsPEU+KHN0YXRpY19jYXN0PEU+KG1fc3RvcmFnZSkpIDogV1RGOjpudWxsb3B0OworICAgIH0K
KwogICAgIGNvbnN0ZXhwciBmcmllbmQgYm9vbCBvcGVyYXRvcj09KE9wdGlvblNldCBsaHMsIE9w
dGlvblNldCByaHMpCiAgICAgewogICAgICAgICByZXR1cm4gbGhzLm1fc3RvcmFnZSA9PSByaHMu
bV9zdG9yYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQxZTM4MjA0MmUxLi4zOTlmNDU5NjExMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ1Nv
dXJjZUFjdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyODg1PgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjQwOTQxMzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgU3VtbWFyeToKKyAgICAgICAgLSBDb252ZXJ0IERyYWdTb3Vy
Y2VBY3Rpb24gdG8gZW51bSBjbGFzcy4KKyAgICAgICAgLSBSZW1vdmUgRHJhZ1NvdXJjZUFjdGlv
bk5vbmUgYnkgdXNpbmcgT3B0aW9uYWw8PiBhbmQKKyAgICAgICAgICBPcHRpb25TZXQ8PiAoYXMg
ZGljdGF0ZWQgYnkgaG93IHRoZSBjb2RlIHVzZWQgdGhlIHZhbHVlKS4KKyAgICAgICAgLSBSZW1v
dmUgRHJhZ1NvdXJjZUFjdGlvbkFueSBhbmQgcmVwbGFjZSAoYXMgbmVlZGVkKSB3aXRoCisgICAg
ICAgICAgYW55RHJhZ1NvdXJjZUFjdGlvbigpLiAoU29tZS0tYnV0IG5vdCBhbGwtLXVzZXMgd2Vy
ZSByZW1vdmVkLikKKyAgICAgICAgLSBBZGQgYm90aCBXVEY6OkVudW1UcmFpdHM8PiBhbmQgV1RG
OjpPcHRpb25TZXRUcmFpdHM8PiBmb3IKKyAgICAgICAgICBEcmFnU291cmNlQWN0aW9uIHNpbmNl
IGJvdGggT3B0aW9uYWw8PiBhbmQgT3B0aW9uU2V0PD4gYXJlCisgICAgICAgICAgdXNlZCB3aXRo
IElQQy4KKworICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAqIHBh
Z2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pOgor
ICAgICAgICAtIENvbnZlcnQgdG8gZW51bSBjbGFzcy4KKyAgICAgICAgKFdlYkNvcmU6OmFueURy
YWdTb3VyY2VBY3Rpb24pOiBBZGQuCisgICAgICAgIC0gUmVwbGFjZXMgV2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbkFueS4KKyAgICAgICAgKFdURjo6RW51bVRyYWl0czxXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uPik6IEFkZC4KKyAgICAgICAgKFdURjo6T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24+KTogQWRkLgorICAgICAgICAqIHBhZ2UvRHJhZ0NsaWVudC5oOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6cHJlcGFyZUZvckRyYWdTdGFydCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWcpOgorICAgICAgICAtIFVzZSBPcHRpb25TZXQ8
Pjo6dG9TaW5nbGVWYWx1ZSgpIGFuZCBhZGQgQVNTRVJUKCkgdGhhdCBpdCBkb2VzCisgICAgICAg
ICAgbm90IHJldHVybiBXVEY6Om51bGxvcHQuCisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdTb3VyY2VBY3Rpb24g
Y29uc3QpOgorICAgICAgICAqIHBhZ2UvRHJhZ1N0YXRlLmg6CisgICAgICAgICogcGFnZS9FdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFn
U291cmNlQWN0aW9uc0FsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkIGNvbnN0KToKKyAgICAgICAgLSBVc2UgT3B0aW9u
U2V0PD46OnRvU2luZ2xlVmFsdWUoKSBhbmQgYWRkIEFTU0VSVCgpIHRoYXQgaXQgZG9lcworICAg
ICAgICAgIG5vdCByZXR1cm4gV1RGOjpudWxsb3B0LgorICAgICAgICAtIFJlbW92ZSBjYXNlIHN0
YXRlbWVudHMgZm9yIERyYWdTb3VyY2VBY3Rpb25Ob25lIGFuZAorICAgICAgICAgIERyYWdTb3Vy
Y2VBY3Rpb25BbnksIGFsb25nIHdpdGggQVNTRVJUX05PVF9SRUFDSEVEKCkuIFRoZQorICAgICAg
ICAgIEFTU0VSVCgpIGZvciB0b1NpbmdsZVZhbHVlKCkgcmVwbGFjZXMgdGhlIERyYWdTb3VyY2VB
Y3Rpb25Ob25lCisgICAgICAgICAgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6ZGlkU3RhcnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkV4YWN0bHlPbmVCaXRTZXQpOiBE
ZWxldGUuCisgICAgICAgIC0gTW92ZSB0byBXVEY6Ok9wdGlvblNldDw+OjpoYXNFeGFjdGx5T25l
Qml0U2V0KCkuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgor
ICAgICAgICAtIEFkZCBjb2RlIHRvICNpZm5kZWYgTkRFQlVHLyNlbmRpZiBpbnN0ZWFkIG9mIG1v
ZGlmeWluZworICAgICAgICAgIGRyYWdTdGF0ZSgpLnR5cGUgaW4tcGxhY2Ugc2luY2UgaXQgc2Vl
bWVkIHdlaXJkIHRvIG1vZGlmeSBpdAorICAgICAgICAgIGp1c3QgdG8gY2hlY2sgYW4gQVNTRVJU
KCksIGV2ZW4gdGhvdWdoIGl0IHdhcyBvdmVyd3JpdHRlbgorICAgICAgICAgIGltbWVkaWF0ZWx5
IGFmdGVyIHRoYXQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9EcmFnSXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0l0ZW06OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnSXRlbTo6ZGVjb2RlKToKKyAgICAgICAgLSBT
dG9wIHVzaW5nIGRlY29kZUVudW0oKS9lbmNvZGVFbnVtKCkgd2l0aAorICAgICAgICAgIE9wdGlv
bmFsPERyYWdTb3VyY2VBY3Rpb24+LgorCiAyMDIwLTA2LTEwICBCcmlhbiBCdXJnICA8YmJ1cmdA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYkRyaXZlciBvbiBub24taU9TIHBvcnRzIGNhbm5vdCBw
ZXJmb3JtIEFjdGlvbkNoYWluIHdoaWNoIGhhcyBzY3JvbGxpbmcgZG93biB0byB0aGUgZWxlbWVu
dCBhbmQgY2xpY2sgaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKaW5kZXgg
NzliMGIzMTkzMTAuLjg3ZDBiODYzOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIGNsYXNzIEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQgZmluYWwgOiBwdWJsaWMgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgewogY2xhc3MgRW1w
dHlEcmFnQ2xpZW50IGZpbmFsIDogcHVibGljIERyYWdDbGllbnQgewogICAgIHZvaWQgd2lsbFBl
cmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBE
cmFnRGF0YSYpIGZpbmFsIHsgfQogICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9u
KERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgZmluYWwg
eyB9Ci0gICAgRHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNv
bnN0IEludFBvaW50JikgZmluYWwgeyByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7IH0KKyAg
ICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2lu
dChjb25zdCBJbnRQb2ludCYpIGZpbmFsIHsgcmV0dXJuIHsgfTsgfQogICAgIHZvaWQgc3RhcnRE
cmFnKERyYWdJdGVtLCBEYXRhVHJhbnNmZXImLCBGcmFtZSYpIGZpbmFsIHsgfQogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGU3NDU2MzUyMzFhLi4xZjAxNTQ2NmE5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAtNDQsMjEgKzQ0LDM1IEBAIGNvbnN0ZXhwciBP
cHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24o
KQogICAgIHJldHVybiBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiB7IERyYWdEZXN0
aW5hdGlvbkFjdGlvbjo6REhUTUwsIERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6RWRpdCwgRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uOjpMb2FkIH07CiB9CiAKLS8vIFdlYkNvcmVEcmFnU291cmNlQWN0aW9u
IHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBXZWJEcmFnU291cmNlQWN0aW9uLgotdHlwZWRl
ZiBlbnVtIHsKLSAgICBEcmFnU291cmNlQWN0aW9uTm9uZSAgICAgICAgID0gMCwKLSAgICBEcmFn
U291cmNlQWN0aW9uREhUTUwgICAgICAgID0gMSwKLSAgICBEcmFnU291cmNlQWN0aW9uSW1hZ2Ug
ICAgICAgID0gMiwKLSAgICBEcmFnU291cmNlQWN0aW9uTGluayAgICAgICAgID0gNCwKLSAgICBE
cmFnU291cmNlQWN0aW9uU2VsZWN0aW9uICAgID0gOCwKKy8vIFNlZSBXZWJEcmFnU291cmNlQWN0
aW9uLgorZW51bSBjbGFzcyBEcmFnU291cmNlQWN0aW9uIDogdWludDhfdCB7CisgICAgREhUTUwg
ICAgICA9IDEsCisgICAgSW1hZ2UgICAgICA9IDIsCisgICAgTGluayAgICAgICA9IDQsCisgICAg
U2VsZWN0aW9uICA9IDgsCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBEcmFn
U291cmNlQWN0aW9uQXR0YWNobWVudCAgID0gMTYsCisgICAgQXR0YWNobWVudCA9IDE2LAogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgRHJhZ1NvdXJjZUFjdGlvbkNv
bG9yICAgICAgICA9IDMyLAorICAgIENvbG9yICAgICAgPSAzMiwKICNlbmRpZgotICAgIERyYWdT
b3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAotfSBEcmFnU291cmNlQWN0aW9uOwor
fTsKKworY29uc3RleHByIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBhbnlEcmFnU291cmNl
QWN0aW9uKCkKK3sKKyAgICByZXR1cm4gT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IHsKKyAg
ICAgICAgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsCisgICAgICAgIERyYWdTb3VyY2VBY3Rpb246
OkltYWdlLAorICAgICAgICBEcmFnU291cmNlQWN0aW9uOjpMaW5rLAorICAgICAgICBEcmFnU291
cmNlQWN0aW9uOjpTZWxlY3Rpb24KKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
ICAgICAsIERyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQKKyNlbmRpZgorI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0NPTE9SKQorICAgICAgICAsIERyYWdTb3VyY2VBY3Rpb246OkNvbG9yCisjZW5k
aWYKKyAgICB9OworfQogCiAvLyBTZWUgTlNEcmFnT3BlcmF0aW9uLCBfVUlEcmFnT3BlcmF0aW9u
IGFuZCBVSURyb3BPcGVyYXRpb24uCiBlbnVtIGNsYXNzIERyYWdPcGVyYXRpb24gOiB1aW50OF90
IHsKQEAgLTEwOCw2ICsxMjIsMjIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPiB7CiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4geworICAgIHVzaW5nIHZhbHVlcyA9
IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sCisgICAgICAg
IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkRIVE1MLAorICAgICAgICBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uOjpJbWFnZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6
TGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uCisjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgLCBXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uOjpBdHRhY2htZW50CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikK
KyAgICAgICAgLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpDb2xvcgorI2VuZGlmCisgICAg
PjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8
CiAgICAgICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwKQEAgLTEyOSw0ICsxNTks
MjAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJhaXRz
PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBPcHRpb25T
ZXRWYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sCisgICAgICAgIFdl
YkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkRIVE1MLAorICAgICAgICBXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uOjpJbWFnZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6TGlu
aywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uCisjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICAgICAgLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uOjpBdHRhY2htZW50CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAg
ICAgICAgLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpDb2xvcgorI2VuZGlmCisgICAgPjsK
K307CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDbGllbnQuaAppbmRleCA3
YWE4ZWU1ODY1ZC4uOTk4YjdiZjk1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5oCkBAIC01
MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVz
dGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBEcmFnRGF0YSYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3Vy
Y2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgeyB9Ci0gICAgdmlydHVhbCBEcmFnU291cmNl
QWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHJvb3RW
aWV3UG9pbnQpID0gMDsKKyAgICB2aXJ0dWFsIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBk
cmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50
KSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhEcmFnSXRlbSwgRGF0YVRy
YW5zZmVyJiwgRnJhbWUmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYWdFbmRlZCgpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCAyZjMwMjA4ZTUwMS4uN2Jj
YmNhYzkzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC00ODMs
NyArNDgzLDcgQEAgRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVu
dERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHQKICAgICByZXR1cm4gRHJhZ0hhbmRs
aW5nTWV0aG9kOjpOb25lOwogfQogCi1EcmFnU291cmNlQWN0aW9uIERyYWdDb250cm9sbGVyOjpk
ZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpCitP
cHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRlbGVnYXRlRHJhZ1Nv
dXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCkKIHsKICAgICBtX2RyYWdT
b3VyY2VBY3Rpb24gPSBjbGllbnQoKS5kcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KHJvb3RW
aWV3UG9pbnQpOwogICAgIHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247CkBAIC03NjksNyArNzY5
LDcgQEAgc3RhdGljIFJlZlB0cjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IGVuY2xvc2luZ0F0dGFj
aG1lbnRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQKIAogRWxlbWVudCogRHJhZ0NvbnRyb2xsZXI6
OmRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBFbGVtZW50KiBzdGFy
dEVsZW1lbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBEcmFnU3RhdGUmIHN0YXRlKSBj
b25zdAogewotICAgIHN0YXRlLnR5cGUgPSAoc291cmNlRnJhbWUtPnNlbGVjdGlvbigpLmNvbnRh
aW5zKGRyYWdPcmlnaW4pKSA/IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gOiBEcmFnU291cmNl
QWN0aW9uTm9uZTsKKyAgICBzdGF0ZS5pbmNsdWRlc1NlbGVjdGlvbkFjdGlvbiA9IHNvdXJjZUZy
YW1lLT5zZWxlY3Rpb24oKS5jb250YWlucyhkcmFnT3JpZ2luKTsKICAgICBpZiAoIXN0YXJ0RWxl
bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKQEAgLTc4Myw3ICs3ODMsNyBAQCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dh
YmxlRWxlbWVudChjb25zdCBGcmFtZSogc291cmNlRnJhbWUsIEVsZW1lbnQqIHN0YQogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCFpc0F0dGFjaG1lbnRFbGVtZW50SW5DdXJyZW50U2VsZWN0aW9u
IHx8IGlzU2luZ2xlQXR0YWNobWVudFNlbGVjdGlvbikgewotICAgICAgICAgICAgc3RhdGUudHlw
ZSA9IERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50OworICAgICAgICAgICAgc3RhdGUuYWN0aW9u
ID0gRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudDsKICAgICAgICAgICAgIHJldHVybiBhdHRh
Y2htZW50LmdldCgpOwogICAgICAgICB9CiAgICAgfQpAQCAtNzk1LDMyICs3OTUsMzIgQEAgRWxl
bWVudCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJj
ZUZyYW1lLCBFbGVtZW50KiBzdGEKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFVz
ZXJEcmFnIGRyYWdNb2RlID0gcmVuZGVyZXItPnN0eWxlKCkudXNlckRyYWcoKTsKLSAgICAgICAg
aWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpICYmIGRyYWdN
b2RlID09IFVzZXJEcmFnOjpFbGVtZW50KSB7Ci0gICAgICAgICAgICBzdGF0ZS50eXBlID0gc3Rh
dGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25E
SFRNTCk7CisgICAgICAgIGlmIChtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJj
ZUFjdGlvbjo6REhUTUwpICYmIGRyYWdNb2RlID09IFVzZXJEcmFnOjpFbGVtZW50KSB7CisgICAg
ICAgICAgICBzdGF0ZS5hY3Rpb24gPSBEcmFnU291cmNlQWN0aW9uOjpESFRNTDsKICAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICB9CiAgICAgICAgIGlmIChkcmFnTW9kZSA9PSBV
c2VyRHJhZzo6QXV0bykgewotICAgICAgICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBE
cmFnU291cmNlQWN0aW9uSW1hZ2UpCisgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlv
bi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpJbWFnZSkpCiAgICAgICAgICAgICAgICAgJiYg
aXM8SFRNTEltYWdlRWxlbWVudD4oKmVsZW1lbnQpCiAgICAgICAgICAgICAgICAgJiYgaW1hZ2VF
bGVtZW50SXNEcmFnZ2FibGUoZG93bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oKmVsZW1lbnQpLCAq
c291cmNlRnJhbWUpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0
PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uSW1hZ2UpOwor
ICAgICAgICAgICAgICAgIHN0YXRlLmFjdGlvbiA9IERyYWdTb3VyY2VBY3Rpb246OkltYWdlOwog
ICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykgJiYgaXNE
cmFnZ2FibGVMaW5rKCplbGVtZW50KSkgewotICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBz
dGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlv
bkxpbmspOworICAgICAgICAgICAgaWYgKG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFn
U291cmNlQWN0aW9uOjpMaW5rKSAmJiBpc0RyYWdnYWJsZUxpbmsoKmVsZW1lbnQpKSB7CisgICAg
ICAgICAgICAgICAgc3RhdGUuYWN0aW9uID0gRHJhZ1NvdXJjZUFjdGlvbjo6TGluazsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAgIH0KICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQotICAgICAgICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBE
cmFnU291cmNlQWN0aW9uQXR0YWNobWVudCkKKyAgICAgICAgICAgIGlmIChtX2RyYWdTb3VyY2VB
Y3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudCkKICAgICAgICAgICAg
ICAgICAmJiBpczxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KCplbGVtZW50KQogICAgICAgICAgICAg
ICAgICYmIGRvd25jYXN0PEhUTUxBdHRhY2htZW50RWxlbWVudD4oKmVsZW1lbnQpLmZpbGUoKSkg
ewotICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0
aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQpOworICAgICAgICAg
ICAgICAgIHN0YXRlLmFjdGlvbiA9IERyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQ7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgICAgICB9CiAjZW5kaWYKICNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yKSAmJiBpc0VuYWJsZWRDb2xvcklucHV0KCplbGVt
ZW50KSkgewotICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291
cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yKTsKKyAgICAgICAg
ICAgIGlmIChtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6Q29s
b3IpICYmIGlzRW5hYmxlZENvbG9ySW5wdXQoKmVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAg
c3RhdGUuYWN0aW9uID0gRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3I7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTgyOCw3ICs4MjgsNyBA
QCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudChjb25zdCBGcmFtZSog
c291cmNlRnJhbWUsIEVsZW1lbnQqIHN0YQogICAgIH0KIAogICAgIC8vIFdlIGVpdGhlciBoYXZl
IG5vdGhpbmcgdG8gZHJhZyBvciB3ZSBoYXZlIGEgc2VsZWN0aW9uIGFuZCB3ZSdyZSBub3Qgb3Zl
ciBhIGRyYWdnYWJsZSBlbGVtZW50LgotICAgIGlmIChzdGF0ZS50eXBlICYgRHJhZ1NvdXJjZUFj
dGlvblNlbGVjdGlvbiAmJiBtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uU2Vs
ZWN0aW9uKQorICAgIGlmIChzdGF0ZS5pbmNsdWRlc1NlbGVjdGlvbkFjdGlvbiAmJiBtX2RyYWdT
b3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSkKICAgICAg
ICAgcmV0dXJuIHN0YXJ0RWxlbWVudDsKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtOTAxLDcg
KzkwMSw3IEBAIHN0YXRpYyBJbnRQb2ludCBkcmFnTG9jRm9yU2VsZWN0aW9uRHJhZyhGcmFtZSYg
c3JjKQogICAgIHJldHVybiBJbnRQb2ludCh4cG9zLCB5cG9zKTsKIH0KIAotdm9pZCBEcmFnQ29u
dHJvbGxlcjo6cHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLCBEcmFnU291cmNlQWN0
aW9uIGFjdGlvbiwgRWxlbWVudCYgZWxlbWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIs
IGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdAordm9pZCBEcmFnQ29udHJvbGxlcjo6
cHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLCBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFj
dGlvbj4gYWN0aW9uTWFzaywgRWxlbWVudCYgZWxlbWVudCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJh
bnNmZXIsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdAogewogI2lmICFQTEFURk9S
TShXSU4pCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3Ioc291cmNlKTsKQEAgLTkxMSw3ICs5MTEs
NyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3Vy
Y2UsIERyYWdTb3VyY2VBY3Rpb24gYWN0aW9uLAogCiAgICAgYXV0byYgcGFzdGVib2FyZCA9IGRh
dGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCk7CiAgICAgYXV0byYgZWRpdG9yID0gc291cmNlLmVkaXRv
cigpOwotICAgIGlmIChhY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikgeworICAg
IGlmIChhY3Rpb25NYXNrID09IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbikgewogICAgICAg
ICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKHNvdXJjZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5zdGFydCgpKSkKICAgICAgICAgICAgIHBhc3RlYm9hcmQud3JpdGVQbGFpblRleHQoZWRp
dG9yLnNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpLCBQYXN0ZWJvYXJkOjpDYW5ub3RTbWFy
dFJlcGxhY2UpOwogICAgICAgICBlbHNlCkBAIC05MjEsMTggKzkyMSwxOCBAQCB2b2lkIERyYWdD
b250cm9sbGVyOjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIERyYWdTb3VyY2VB
Y3Rpb24gYWN0aW9uLAogCiAgICAgYXV0byogaW1hZ2UgPSBnZXRJbWFnZShlbGVtZW50KTsKICAg
ICBhdXRvIGltYWdlVVJMID0gaGl0VGVzdFJlc3VsdC0+YWJzb2x1dGVJbWFnZVVSTCgpOwotICAg
IGlmICgoYWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKSAmJiAhaW1hZ2VVUkwuaXNFbXB0
eSgpICYmIGltYWdlICYmICFpbWFnZS0+aXNOdWxsKCkpIHsKKyAgICBpZiAoYWN0aW9uTWFzay5j
b250YWlucyhEcmFnU291cmNlQWN0aW9uOjpJbWFnZSkgJiYgIWltYWdlVVJMLmlzRW1wdHkoKSAm
JiBpbWFnZSAmJiAhaW1hZ2UtPmlzTnVsbCgpKSB7CiAgICAgICAgIGVkaXRvci53cml0ZUltYWdl
VG9QYXN0ZWJvYXJkKHBhc3RlYm9hcmQsIGVsZW1lbnQsIGltYWdlVVJMLCB7IH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBsaW5rVVJMID0gaGl0VGVzdFJlc3VsdC0+YWJz
b2x1dGVMaW5rVVJMKCk7Ci0gICAgaWYgKChhY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykg
JiYgIWxpbmtVUkwuaXNFbXB0eSgpICYmIHNvdXJjZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLmNhbkRpc3BsYXkobGlua1VSTCkpCisgICAgaWYgKGFjdGlvbk1hc2suY29udGFpbnMoRHJh
Z1NvdXJjZUFjdGlvbjo6TGluaykgJiYgIWxpbmtVUkwuaXNFbXB0eSgpICYmIHNvdXJjZS5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLmNhbkRpc3BsYXkobGlua1VSTCkpCiAgICAgICAgIGVk
aXRvci5jb3B5VVJMKGxpbmtVUkwsIGhpdFRlc3RSZXN1bHQtPnRleHRDb250ZW50KCkuc2ltcGxp
ZnlXaGl0ZVNwYWNlKCksIHBhc3RlYm9hcmQpOwogI2Vsc2UKICAgICAvLyBGSVhNRTogTWFrZSB0
aGlzIHdvcmsgb24gV2luZG93cyBieSBpbXBsZW1lbnRpbmcgRWRpdG9yOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCBhbmQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkLgogICAgIFVO
VVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShhY3Rpb24pOworICAgIFVOVVNF
RF9QQVJBTShhY3Rpb25NYXNrKTsKICAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CiAgICAgVU5V
U0VEX1BBUkFNKGRhdGFUcmFuc2Zlcik7CiAgICAgVU5VU0VEX1BBUkFNKGRyYWdPcmlnaW4pOwpA
QCAtOTgzLDcgKzk4Myw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYg
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgQVNTRVJUKHN0
YXRlLmRhdGFUcmFuc2Zlcik7CiAKICAgICBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciA9ICpz
dGF0ZS5kYXRhVHJhbnNmZXI7Ci0gICAgaWYgKHN0YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MKSB7CisgICAgaWYgKHN0YXRlLmFjdGlvbiAmJiAqc3RhdGUuYWN0aW9uID09IERyYWdT
b3VyY2VBY3Rpb246OkRIVE1MKSB7CiAgICAgICAgIGRyYWdJbWFnZSA9IERyYWdJbWFnZSB7IGRh
dGFUcmFuc2Zlci5jcmVhdGVEcmFnSW1hZ2UoZHJhZ0ltYWdlT2Zmc2V0KSB9OwogICAgICAgICAv
LyBXZSBhbGxvdyBESFRNTC9KUyB0byBzZXQgdGhlIGRyYWcgaW1hZ2UsIGV2ZW4gaWYgaXRzIGEg
bGluaywgaW1hZ2Ugb3IgdGV4dCB3ZSdyZSBkcmFnZ2luZy4KICAgICAgICAgLy8gVGhpcyBpcyBp
biB0aGUgc3Bpcml0IG9mIHRoZSBJRSBBUEksIHdoaWNoIGFsbG93cyBvdmVycmlkaW5nIG9mIHBh
c3RlYm9hcmQgZGF0YSBhbmQgRHJhZ09wLgpAQCAtOTkzLDcgKzk5Myw3IEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBP
cHRpb25TZXQ8RHJhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoc3RhdGUudHlwZSA9PSBE
cmFnU291cmNlQWN0aW9uU2VsZWN0aW9uIHx8ICFpbWFnZVVSTC5pc0VtcHR5KCkgfHwgIWxpbmtV
UkwuaXNFbXB0eSgpKSB7CisgICAgaWYgKHN0YXRlLmluY2x1ZGVzU2VsZWN0aW9uQWN0aW9uIHx8
ICFpbWFnZVVSTC5pc0VtcHR5KCkgfHwgIWxpbmtVUkwuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8v
IFNlbGVjdGlvbiwgaW1hZ2UsIGFuZCBsaW5rIGRyYWdzIHJlY2VpdmUgYSBkZWZhdWx0IHNldCBv
ZiBhbGxvd2VkIGRyYWcgb3BlcmF0aW9ucyB0aGF0CiAgICAgICAgIC8vIGZvbGxvd3MgZnJvbToK
ICAgICAgICAgLy8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbT9yZXY9NDg1MjYjTDM0MzAKQEAgLTEwMDcsNyArMTAw
Nyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBE
cmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAKICAgICBJbnRSZWN0IGRyYWdJbWFnZUJv
dW5kczsKICAgICBJbWFnZSogaW1hZ2UgPSBnZXRJbWFnZShlbGVtZW50KTsKLSAgICBpZiAoc3Rh
dGUudHlwZSA9PSBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSB7CisgICAgaWYgKHN0YXRlLmlu
Y2x1ZGVzU2VsZWN0aW9uQWN0aW9uKSB7CiAgICAgICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhIHBh
c3RlYm9hcmRXcml0ZXJEYXRhOwogCiAgICAgICAgIGlmIChoYXNEYXRhID09IEhhc05vbkRlZmF1
bHRQYXN0ZWJvYXJkRGF0YTo6Tm8pIHsKQEAgLTEwNDksNyArMTA0OSw3IEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBP
cHRpb25TZXQ8RHJhCiAKICAgICAgICAgICAgIHNyYy5lZGl0b3IoKS5kaWRXcml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZCgpOwogICAgICAgICB9Ci0gICAgICAgIGNsaWVudCgpLndpbGxQZXJmb3Jt
RHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uLCBkcmFnT3JpZ2luLCBk
YXRhVHJhbnNmZXIpOworICAgICAgICBjbGllbnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rp
b24oRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIp
OwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewogICAgICAgICAgICAgVGV4dEluZGljYXRvckRh
dGEgdGV4dEluZGljYXRvcjsKICAgICAgICAgICAgIGRyYWdJbWFnZSA9IERyYWdJbWFnZSB7IGRp
c3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihjcmVhdGVEcmFnSW1hZ2VGb3JTZWxlY3Rpb24oc3Jj
LCB0ZXh0SW5kaWNhdG9yKSwgRHJhZ0ltYWdlQWxwaGEpIH07CkBAIC0xMDcyLDcgKzEwNzIsNyBA
QCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0
YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAgICBkcmFnSXRlbS5pbWFnZSA9IFdURk1v
dmUoZHJhZ0ltYWdlKTsKICAgICAgICAgZHJhZ0l0ZW0uZGF0YSA9IFdURk1vdmUocGFzdGVib2Fy
ZFdyaXRlckRhdGEpOwogCi0gICAgICAgIGJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJdGVtKSwgc3Jj
LCBkcmFnT3JpZ2luLCBtb3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5zZmVyLCBEcmFnU291cmNl
QWN0aW9uU2VsZWN0aW9uKTsKKyAgICAgICAgYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0ZW0pLCBz
cmMsIGRyYWdPcmlnaW4sIG1vdXNlRHJhZ2dlZFBvaW50LCBkYXRhVHJhbnNmZXIsIERyYWdTb3Vy
Y2VBY3Rpb246OlNlbGVjdGlvbik7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MTA4Miw3ICsxMDgyLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpICYmIGltYWdlICYm
ICFpbWFnZS0+aXNOdWxsKCkgJiYgKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rp
b25JbWFnZSkpIHsKKyAgICBpZiAoIWltYWdlVVJMLmlzRW1wdHkoKSAmJiBpbWFnZSAmJiAhaW1h
Z2UtPmlzTnVsbCgpICYmIG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0
aW9uOjpJbWFnZSkpIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkbid0IGJlIHN0YXJ0aW5nIGEgZHJh
ZyBmb3IgYW4gaW1hZ2UgdGhhdCBjYW4ndCBwcm92aWRlIGFuIGV4dGVuc2lvbi4KICAgICAgICAg
Ly8gVGhpcyBpcyBhbiBlYXJseSBkZXRlY3Rpb24gZm9yIHByb2JsZW1zIGVuY291bnRlcmVkIGxh
dGVyIHVwb24gZHJvcC4KICAgICAgICAgQVNTRVJUKCFpbWFnZS0+ZmlsZW5hbWVFeHRlbnNpb24o
KS5pc0VtcHR5KCkpOwpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6
c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxE
cmEKICAgICAgICAgICAgICAgICBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoZGF0YVRyYW5zZmVy
LCBlbGVtZW50LCAhbGlua1VSTC5pc0VtcHR5KCkgPyBsaW5rVVJMIDogaW1hZ2VVUkwsIGhpdFRl
c3RSZXN1bHQtPmFsdERpc3BsYXlTdHJpbmcoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBjbGll
bnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbkltYWdlLCBk
cmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOworICAgICAgICBjbGllbnQoKS53aWxsUGVyZm9ybURy
YWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UsIGRyYWdPcmlnaW4sIGRhdGFU
cmFuc2Zlcik7CiAKICAgICAgICAgaWYgKCFkcmFnSW1hZ2UpCiAgICAgICAgICAgICBkb0ltYWdl
RHJhZyhlbGVtZW50LCBkcmFnT3JpZ2luLCBoaXRUZXN0UmVzdWx0LT5pbWFnZVJlY3QoKSwgc3Jj
LCBtX2RyYWdPZmZzZXQsIHN0YXRlLCBXVEZNb3ZlKGF0dGFjaG1lbnRJbmZvKSk7CkBAIC0xMTEz
LDcgKzExMTMsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywg
Y29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKLSAgICBpZiAoIWxpbmtVUkwuaXNFbXB0eSgpICYmIChtX2RyYWdTb3VyY2VB
Y3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykpIHsKKyAgICBpZiAoIWxpbmtVUkwuaXNFbXB0
eSgpICYmIG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpMaW5r
KSkgewogICAgICAgICBQYXN0ZWJvYXJkV3JpdGVyRGF0YSBwYXN0ZWJvYXJkV3JpdGVyRGF0YTsK
IAogICAgICAgICBTdHJpbmcgdGV4dENvbnRlbnRXaXRoU2ltcGxpZmllZFdoaXRlU3BhY2UgPSBo
aXRUZXN0UmVzdWx0LT50ZXh0Q29udGVudCgpLnNpbXBsaWZ5V2hpdGVTcGFjZSgpOwpAQCAtMTE0
NSw3ICsxMTQ1LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgICAgICAgICBz
cmMuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZy
b21Db250ZW50c09mTm9kZShub2RlKSk7CiAgICAgICAgIH0KIAotICAgICAgICBjbGllbnQoKS53
aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbkxpbmssIGRyYWdPcmln
aW4sIGRhdGFUcmFuc2Zlcik7CisgICAgICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJj
ZUFjdGlvbihEcmFnU291cmNlQWN0aW9uOjpMaW5rLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIp
OwogICAgICAgICBpZiAoIWRyYWdJbWFnZSkgewogICAgICAgICAgICAgVGV4dEluZGljYXRvckRh
dGEgdGV4dEluZGljYXRvcjsKICAgICAgICAgICAgIGRyYWdJbWFnZSA9IERyYWdJbWFnZSB7IGNy
ZWF0ZURyYWdJbWFnZUZvckxpbmsoZWxlbWVudCwgbGlua1VSTCwgdGV4dENvbnRlbnRXaXRoU2lt
cGxpZmllZFdoaXRlU3BhY2UsIHRleHRJbmRpY2F0b3IsIHNyYy5zZXR0aW5ncygpLmZvbnRSZW5k
ZXJpbmdNb2RlKCksIG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKSB9OwpAQCAtMTE2OCwxMyAr
MTE2OCwxMyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29u
c3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAgICBkcmFnSXRlbS5pbWFn
ZSA9IFdURk1vdmUoZHJhZ0ltYWdlKTsKICAgICAgICAgZHJhZ0l0ZW0uZGF0YSA9IFdURk1vdmUo
cGFzdGVib2FyZFdyaXRlckRhdGEpOwogCi0gICAgICAgIGJlZ2luRHJhZyhXVEZNb3ZlKGRyYWdJ
dGVtKSwgc3JjLCBkcmFnT3JpZ2luLCBtb3VzZURyYWdnZWRQb2ludCwgZGF0YVRyYW5zZmVyLCBE
cmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKTsKKyAgICAgICAgYmVnaW5EcmFnKFdURk1vdmUoZHJh
Z0l0ZW0pLCBzcmMsIGRyYWdPcmlnaW4sIG1vdXNlRHJhZ2dlZFBvaW50LCBkYXRhVHJhbnNmZXIs
IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbik7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBpZiAoaXM8SFRNTEF0
dGFjaG1lbnRFbGVtZW50PihlbGVtZW50KSAmJiBtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291
cmNlQWN0aW9uQXR0YWNobWVudCkgeworICAgIGlmIChpczxIVE1MQXR0YWNobWVudEVsZW1lbnQ+
KGVsZW1lbnQpICYmIG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9u
OjpBdHRhY2htZW50KSkgewogICAgICAgICBhdXRvJiBhdHRhY2htZW50ID0gZG93bmNhc3Q8SFRN
TEF0dGFjaG1lbnRFbGVtZW50PihlbGVtZW50KTsKICAgICAgICAgYXV0byogYXR0YWNobWVudFJl
bmRlcmVyID0gYXR0YWNobWVudC5yZW5kZXJlcigpOwogCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRl
JiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9u
QXR0YWNobWVudCwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgY2xpZW50KCku
d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQs
IGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CiAgICAgICAgIAogICAgICAgICBpZiAoIWRyYWdJ
bWFnZSkgewogICAgICAgICAgICAgVGV4dEluZGljYXRvckRhdGEgdGV4dEluZGljYXRvcjsKQEAg
LTEyMjAsNyArMTIyMCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYg
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9DT0xPUikKICAgICBib29sIGlzQ29sb3JDb250cm9sID0gaXM8SFRNTElucHV0
RWxlbWVudD4oc3RhdGUuc291cmNlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqc3Rh
dGUuc291cmNlKS5pc0NvbG9yQ29udHJvbCgpOwotICAgIGlmIChpc0NvbG9yQ29udHJvbCAmJiBt
X2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQ29sb3IpIHsKKyAgICBpZiAoaXND
b2xvckNvbnRyb2wgJiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rp
b246OkNvbG9yKSkgewogICAgICAgICBhdXRvJiBpbnB1dCA9IGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCpzdGF0ZS5zb3VyY2UpOwogICAgICAgICBhdXRvIGNvbG9yID0gaW5wdXQudmFsdWVB
c0NvbG9yKCk7CiAKQEAgLTEyMzEsMTUgKzEyMzEsMTUgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6
c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxE
cmEKICAgICAgICAgZHJhZ0ltYWdlT2Zmc2V0ID0gSW50UG9pbnQgeyBkcmFnSW1hZ2VTaXplKGRy
YWdJbWFnZS5nZXQoKSkgfTsKICAgICAgICAgZHJhZ0xvYyA9IGRyYWdMb2NGb3JESFRNTERyYWco
bW91c2VEcmFnZ2VkUG9pbnQsIGRyYWdPcmlnaW4sIGRyYWdJbWFnZU9mZnNldCwgZmFsc2UpOwog
Ci0gICAgICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNl
QWN0aW9uQ29sb3IsIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CisgICAgICAgIGNsaWVudCgp
LndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uOjpDb2xvciwgZHJh
Z09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKICAgICAgICAgZG9TeXN0ZW1EcmFnKFdURk1vdmUoZHJh
Z0ltYWdlKSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwgc3JjLCBzdGF0ZSwgeyB9KTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFn
U291cmNlQWN0aW9uREhUTUwgJiYgZHJhZ0ltYWdlKSB7Ci0gICAgICAgIEFTU0VSVChtX2RyYWdT
b3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpOwotICAgICAgICBjbGllbnQoKS53
aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbkRIVE1MLCBkcmFnT3Jp
Z2luLCBkYXRhVHJhbnNmZXIpOworICAgIGlmIChzdGF0ZS5hY3Rpb24gJiYgKnN0YXRlLmFjdGlv
biA9PSBEcmFnU291cmNlQWN0aW9uOjpESFRNTCAmJiBkcmFnSW1hZ2UpIHsKKyAgICAgICAgQVNT
RVJUKG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpESFRNTCkp
OworICAgICAgICBjbGllbnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJj
ZUFjdGlvbjo6REhUTUwsIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CiAgICAgICAgIGRvU3lz
dGVtRHJhZyhXVEZNb3ZlKGRyYWdJbWFnZSksIGRyYWdMb2MsIGRyYWdPcmlnaW4sIHNyYywgc3Rh
dGUsIHsgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3
IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNv
bnN0IEludFBvaW50JiBkcmFnTG9jLCBjb25zCiAKICAgICBEcmFnSXRlbSBpdGVtOwogICAgIGl0
ZW0uaW1hZ2UgPSBXVEZNb3ZlKGltYWdlKTsKLSAgICBpdGVtLnNvdXJjZUFjdGlvbiA9IHN0YXRl
LnR5cGU7CisgICAgaXRlbS5zb3VyY2VBY3Rpb24gPSBzdGF0ZS5hY3Rpb247CiAgICAgaXRlbS5w
cm9taXNlZEF0dGFjaG1lbnRJbmZvID0gV1RGTW92ZShwcm9taXNlZEF0dGFjaG1lbnRJbmZvKTsK
IAogICAgIGF1dG8gZXZlbnRQb3NpdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcyA9IGZyYW1lLnZp
ZXcoKS0+Y29udGVudHNUb1Jvb3RWaWV3KGV2ZW50UG9zKTsKQEAgLTEzMzksNyArMTMzOSw3IEBA
IHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyhEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0
IEludFBvaW50JiBkcmFnTG9jLCBjb25zCiAgICAgaXRlbS5kcmFnTG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzID0gdmlld1Byb3RlY3Rvci0+Y29udGVudHNUb1dpbmRvdyhpdGVtLmRyYWdMb2Nh
dGlvbkluQ29udGVudENvb3JkaW5hdGVzKTsKICAgICBpZiAoYXV0byBlbGVtZW50ID0gc3RhdGUu
c291cmNlKSB7CiAgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVySW1hZ2VFbGVtZW50ID0gc3RhdGUu
ZGF0YVRyYW5zZmVyLT5kcmFnSW1hZ2VFbGVtZW50KCk7Ci0gICAgICAgIGlmIChzdGF0ZS50eXBl
ID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgeworICAgICAgICBpZiAoc3RhdGUuYWN0aW9uICYm
ICpzdGF0ZS5hY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpIHsKICAgICAgICAgICAg
IC8vIElmIHRoZSBkcmFnIGltYWdlIGhhcyBiZWVuIGN1c3RvbWl6ZWQsIGZhbGwgYmFjayB0byBw
b3NpdGlvbmluZyB0aGUgcHJldmlldyByZWxhdGl2ZSB0byB0aGUgZHJhZyBldmVudCBsb2NhdGlv
bi4KICAgICAgICAgICAgIEludFNpemUgZHJhZ1ByZXZpZXdTaXplOwogICAgICAgICAgICAgaWYg
KGRhdGFUcmFuc2ZlckltYWdlRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
aAppbmRleCBlYTQ5OWUwZWJkNi4uOTIyNGFiMjA2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmgKQEAgLTc2LDEyICs3NiwxMiBAQCBwdWJsaWM6CiAgICAgY29uc3QgVVJMJiBk
cmFnZ2luZ0ltYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ0ltYWdlVVJMOyB9CiAg
ICAgdm9pZCBzZXREcmFnT2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpIHsgbV9kcmFnT2Zm
c2V0ID0gb2Zmc2V0OyB9CiAgICAgY29uc3QgSW50UG9pbnQmIGRyYWdPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2RyYWdPZmZzZXQ7IH0KLSAgICBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VB
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247IH0KKyAgICBPcHRpb25T
ZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gZHJhZ1NvdXJjZUFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZHJhZ1NvdXJjZUFjdGlvbjsgfQogICAgIERyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdN
ZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2RyYWdIYW5kbGluZ01ldGhvZDsgfQogCiAgICAgRG9j
dW1lbnQqIGRvY3VtZW50VW5kZXJNb3VzZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRVbmRl
ck1vdXNlLmdldCgpOyB9CiAgICAgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFzazsgfQotICAgIERyYWdTb3VyY2VBY3Rpb24gZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KTsKKyAgICBPcHRpb25TZXQ8RHJhZ1Nv
dXJjZUFjdGlvbj4gZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKGNvbnN0IEludFBvaW50JiByb290
Vmlld1BvaW50KTsKIAogICAgIEVsZW1lbnQqIGRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUq
LCBFbGVtZW50KiBzdGFydCwgY29uc3QgSW50UG9pbnQmLCBEcmFnU3RhdGUmKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdFbmRlZCgpOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5hbGl6ZURyb3BwZWRJbWFnZVBsYWNlaG9s
ZGVyKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydERy
b3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFn
ZVNpemVzKTsKIAotICAgIHZvaWQgcHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlRnJh
bWUsIERyYWdTb3VyY2VBY3Rpb24sIEVsZW1lbnQmIHNvdXJjZUVsZW1lbnQsIERhdGFUcmFuc2Zl
ciYsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdDsKKyAgICB2b2lkIHByZXBhcmVG
b3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZUZyYW1lLCBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlv
bj4sIEVsZW1lbnQmIHNvdXJjZUVsZW1lbnQsIERhdGFUcmFuc2ZlciYsIGNvbnN0IEludFBvaW50
JiBkcmFnT3JpZ2luKSBjb25zdDsKICAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVm
YXVsdFBhc3RlYm9hcmREYXRhKTsKICAgICBzdGF0aWMgY29uc3QgSW50U2l6ZSYgbWF4RHJhZ0lt
YWdlU2l6ZSgpOwogCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICBEcmFnSGFuZGxp
bmdNZXRob2QgbV9kcmFnSGFuZGxpbmdNZXRob2QgeyBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUg
fTsKIAogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzazsKLSAgICBEcmFnU291cmNlQWN0aW9uIG1fZHJhZ1NvdXJjZUFjdGlvbiB7
IERyYWdTb3VyY2VBY3Rpb25Ob25lIH07CisgICAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+
IG1fZHJhZ1NvdXJjZUFjdGlvbjsKICAgICBib29sIG1fZGlkSW5pdGlhdGVEcmFnIHsgZmFsc2Ug
fTsKICAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFz
azsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRv
d24gd2l0aGluIFdlYktpdC4KICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnU3RhdGUuaAppbmRleCA2ZDE2MjU5MDBlMy4uZGFlOGJiM2FjYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnU3RhdGUuaApAQCAtMzQsOCArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBEcmFnU3RhdGUgewogICAgIFJlZlB0cjxFbGVtZW50PiBzb3VyY2U7IC8vIEVsZW1lbnQgdGhh
dCBtYXkgYmUgYSBkcmFnIHNvdXJjZSwgZm9yIHRoZSBjdXJyZW50IG1vdXNlIGdlc3R1cmUuCi0g
ICAgYm9vbCBzaG91bGREaXNwYXRjaEV2ZW50czsKLSAgICBEcmFnU291cmNlQWN0aW9uIHR5cGU7
CisgICAgYm9vbCBzaG91bGREaXNwYXRjaEV2ZW50cyB7IGZhbHNlIH07CisgICAgYm9vbCBpbmNs
dWRlc1NlbGVjdGlvbkFjdGlvbiB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8RHJhZ1NvdXJjZUFj
dGlvbj4gYWN0aW9uOwogICAgIFJlZlB0cjxEYXRhVHJhbnNmZXI+IGRhdGFUcmFuc2ZlcjsgLy8g
VXNlZCBvbiBvbmx5IHRoZSBzb3VyY2Ugc2lkZSBvZiBkcmFnZ2luZy4KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAxNGJjYzViOGYyZS4uNDFiNjNjOTVkZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTExOTAsMTUgKzExOTAsMTUgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OnBhblNjcm9sbEluUHJvZ3Jlc3MoKSBjb25zdAogfQogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKLURyYWdTb3VyY2VBY3Rpb24gRXZlbnRIYW5kbGVyOjp1cGRh
dGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdAorT3B0aW9uU2V0PERyYWdTb3VyY2VB
Y3Rpb24+IEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29u
c3QKIHsKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQot
ICAgICAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKTsKICAgICBpZiAoIXZpZXcp
Ci0gICAgICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKIAogICAgIHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRlbGVnYXRlRHJhZ1NvdXJj
ZUFjdGlvbih2aWV3LT5jb250ZW50c1RvUm9vdFZpZXcobV9tb3VzZURvd25Db250ZW50c1Bvc2l0
aW9uKSk7CiB9CkBAIC0zNjQ3LDM1ICszNjQ3LDM3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFn
SHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEludFBvaW50JiBmbG9hdERyYWdWaWV3cG9ydExvY2F0
CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0
UG9pbnQmIGRyYWdWaWV3cG9ydExvY2F0aW9uKSBjb25zdAogeworICAgIEFTU0VSVChkcmFnU3Rh
dGUoKS5pbmNsdWRlc1NlbGVjdGlvbkFjdGlvbiBeICEhZHJhZ1N0YXRlKCkuYWN0aW9uKTsKICAg
ICBpbnQgdGhyZXNob2xkID0gR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwotICAgIHN3aXRjaCAoZHJh
Z1N0YXRlKCkudHlwZSkgewotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbjoKKyAg
ICBpZiAoZHJhZ1N0YXRlKCkuaW5jbHVkZXNTZWxlY3Rpb25BY3Rpb24pCiAgICAgICAgIHRocmVz
aG9sZCA9IFRleHREcmFnSHlzdGVyZXNpczsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEcmFn
U291cmNlQWN0aW9uSW1hZ2U6CisgICAgZWxzZSBpZiAoZHJhZ1N0YXRlKCkuYWN0aW9uKSB7Cisg
ICAgICAgIHN3aXRjaCAoKmRyYWdTdGF0ZSgpLmFjdGlvbikgeworICAgICAgICBjYXNlIERyYWdT
b3VyY2VBY3Rpb246OlNlbGVjdGlvbjoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6SW1h
Z2U6CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICBjYXNlIERyYWdTb3VyY2VB
Y3Rpb25BdHRhY2htZW50OgorICAgICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1l
bnQ6CiAjZW5kaWYKLSAgICAgICAgdGhyZXNob2xkID0gSW1hZ2VEcmFnSHlzdGVyZXNpczsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEcmFnU291cmNlQWN0aW9uTGluazoKLSAgICAgICAgdGhy
ZXNob2xkID0gTGlua0RyYWdIeXN0ZXJlc2lzOwotICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IHRocmVzaG9sZCA9IEltYWdlRHJhZ0h5c3RlcmVzaXM7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpMaW5rOgorICAgICAgICAgICAgdGhyZXNob2xk
ID0gTGlua0RyYWdIeXN0ZXJlc2lzOworICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCi0gICAgY2FzZSBEcmFnU291cmNlQWN0aW9uQ29sb3I6Ci0gICAgICAg
IHRocmVzaG9sZCA9IENvbG9yRHJhZ0h5c3RlcnNpczsKLSAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3I6CisgICAgICAgICAgICB0aHJlc2hvbGQgPSBD
b2xvckRyYWdIeXN0ZXJzaXM7CisgICAgICAgICAgICBicmVhazsKICNlbmRpZgotICAgIGNhc2Ug
RHJhZ1NvdXJjZUFjdGlvbkRIVE1MOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIERyYWdTb3Vy
Y2VBY3Rpb25Ob25lOgotICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbkFueToKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUw6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVy
biBtb3VzZU1vdmVtZW50RXhjZWVkc1RocmVzaG9sZChkcmFnVmlld3BvcnRMb2NhdGlvbiwgdGhy
ZXNob2xkKTsKIH0KLSAgICAKKwogdm9pZCBFdmVudEhhbmRsZXI6OmludmFsaWRhdGVEYXRhVHJh
bnNmZXIoKQogewogICAgIGlmICghZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyKQpAQCAtMzcxNSw3
ICszNzE3LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZygpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBkcmFnZ2VkQ29udGVudFJhbmdlOwot
ICAgIGlmIChkcmFnU3RhdGUoKS50eXBlICYgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikKKyAg
ICBpZiAoZHJhZ1N0YXRlKCkuaW5jbHVkZXNTZWxlY3Rpb25BY3Rpb24pCiAgICAgICAgIGRyYWdn
ZWRDb250ZW50UmFuZ2UgPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFs
aXplZFJhbmdlKCk7CiAgICAgZWxzZQogICAgICAgICBkcmFnZ2VkQ29udGVudFJhbmdlID0gbWFr
ZVJhbmdlU2VsZWN0aW5nTm9kZSgqZHJhZ1NvdXJjZSk7CkBAIC0zNzcwLDE2ICszNzcyLDE0IEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUsCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERy
YWdTdGFydEV2ZW50T25Tb3VyY2VFbGVtZW50KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQog
eworICAgIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBhY3Rpb25NYXNrID0gZHJhZ1N0YXRl
KCkuYWN0aW9uOworICAgIGlmIChkcmFnU3RhdGUoKS5pbmNsdWRlc1NlbGVjdGlvbkFjdGlvbikK
KyAgICAgICAgYWN0aW9uTWFzay5hZGQoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKICAg
ICBpZiAoYXV0byogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQotICAgICAgICBwYWdlLT5kcmFnQ29u
dHJvbGxlcigpLnByZXBhcmVGb3JEcmFnU3RhcnQobV9mcmFtZSwgZHJhZ1N0YXRlKCkudHlwZSwg
KmRyYWdTdGF0ZSgpLnNvdXJjZSwgZGF0YVRyYW5zZmVyLCBtX21vdXNlRG93bkNvbnRlbnRzUG9z
aXRpb24pOworICAgICAgICBwYWdlLT5kcmFnQ29udHJvbGxlcigpLnByZXBhcmVGb3JEcmFnU3Rh
cnQobV9mcmFtZSwgYWN0aW9uTWFzaywgKmRyYWdTdGF0ZSgpLnNvdXJjZSwgZGF0YVRyYW5zZmVy
LCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24pOwogICAgIHJldHVybiAhZGlzcGF0Y2hEcmFn
RXZlbnQoZXZlbnROYW1lcygpLmRyYWdzdGFydEV2ZW50LCAqZHJhZ1N0YXRlKCkuc291cmNlLCBt
X21vdXNlRG93bkV2ZW50LCBkYXRhVHJhbnNmZXIpICYmICFtX2ZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmlzSW5QYXNzd29yZEZpZWxkKCk7CiB9CiAKLXN0YXRpYyBib29sIEV4YWN0bHlP
bmVCaXRTZXQoRHJhZ1NvdXJjZUFjdGlvbiBuKQotewotICAgIHJldHVybiBuICYmICEobiAmIChu
IC0gMSkpOwotfQotCiBSZWZQdHI8RWxlbWVudD4gRXZlbnRIYW5kbGVyOjpkcmFnZ2VkRWxlbWVu
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRyYWdTdGF0ZSgpLnNvdXJjZTsKQEAgLTM4MDMsNyAr
MzgwMyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgCiAgICAgLy8gQ2FyZWZ1bCB0
aGF0IHRoZSBkcmFnIHN0YXJ0aW5nIGxvZ2ljIHN0YXlzIGluIHN5bmMgd2l0aCBldmVudE1heVN0
YXJ0RHJhZygpLgogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiAhZHJhZ1N0YXRl
KCkuc291cmNlKSB7Ci0gICAgICAgIGRyYWdTdGF0ZSgpLnNob3VsZERpc3BhdGNoRXZlbnRzID0g
KHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1M
KTsKKyAgICAgICAgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hFdmVudHMgPSB1cGRhdGVEcmFn
U291cmNlQWN0aW9uc0FsbG93ZWQoKS5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpESFRNTCk7
CiAKICAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYW4gZWxlbWVudCB0aGF0IHdhbnRzIHRvIGJlIGRy
YWdnZWQuCiAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1fbW91c2VEb3duQ29udGVudHNQ
b3NpdGlvbik7CkBAIC0zODE0LDE3ICszODE0LDE2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0Ry
CiAgICAgICAgIGlmICghZHJhZ1N0YXRlKCkuc291cmNlKQogICAgICAgICAgICAgbV9tb3VzZURv
d25NYXlTdGFydERyYWcgPSBmYWxzZTsgLy8gbm8gZWxlbWVudCBpcyBkcmFnZ2FibGUKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9kcmFnTWF5U3RhcnRTZWxlY3Rpb25JbnN0ZWFkID0gKGRy
YWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKTsKKyAgICAgICAgICAg
IG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVhZCA9IGRyYWdTdGF0ZSgpLmluY2x1ZGVzU2Vs
ZWN0aW9uQWN0aW9uOwogICAgIH0KICAgICAKICAgICAvLyBGb3IgZHJhZ3Mgc3RhcnRpbmcgaW4g
dGhlIHNlbGVjdGlvbiwgdGhlIHVzZXIgbXVzdCB3YWl0IGJldHdlZW4gdGhlIG1vdXNlZG93biBh
bmQgbW91c2VkcmFnLAogICAgIC8vIG9yIGVsc2Ugd2UgYmFpbCBvbiB0aGUgZHJhZ2dpbmcgc3R1
ZmYgYW5kIGFsbG93IHNlbGVjdGlvbiB0byBvY2N1cgotICAgIGlmIChtX21vdXNlRG93bk1heVN0
YXJ0RHJhZyAmJiBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbkluc3RlYWQgJiYgKGRyYWdTdGF0ZSgp
LnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSAmJiBldmVudC5ldmVudCgpLnRpbWVz
dGFtcCgpIC0gbV9tb3VzZURvd25UaW1lc3RhbXAgPCBUZXh0RHJhZ0RlbGF5KSB7CisgICAgaWYg
KG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYmIG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVh
ZCAmJiBkcmFnU3RhdGUoKS5pbmNsdWRlc1NlbGVjdGlvbkFjdGlvbiAmJiBldmVudC5ldmVudCgp
LnRpbWVzdGFtcCgpIC0gbV9tb3VzZURvd25UaW1lc3RhbXAgPCBUZXh0RHJhZ0RlbGF5KSB7CiAg
ICAgICAgIEFTU0VSVChldmVudC5ldmVudCgpLnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZU1vdmVkKTsKLSAgICAgICAgaWYgKChkcmFnU3RhdGUoKS50eXBlICYgRHJhZ1NvdXJjZUFjdGlv
bkltYWdlKSkgeworICAgICAgICBpZiAoZHJhZ1N0YXRlKCkuYWN0aW9uICYmICpkcmFnU3RhdGUo
KS5hY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UpIHsKICAgICAgICAgICAgIC8vIC4u
LiB1bmxlc3MgdGhlIG1vdXNlIGlzIG92ZXIgYW4gaW1hZ2UsIHRoZW4gd2Ugc3RhcnQgZHJhZ2dp
bmcganVzdCB0aGUgaW1hZ2UKLSAgICAgICAgICAgIGRyYWdTdGF0ZSgpLnR5cGUgPSBEcmFnU291
cmNlQWN0aW9uSW1hZ2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoIShkcmFnU3RhdGUoKS50eXBlICYg
KERyYWdTb3VyY2VBY3Rpb25ESFRNTCB8IERyYWdTb3VyY2VBY3Rpb25MaW5rKSkpIHsKKyAgICAg
ICAgfSBlbHNlIGlmICghZHJhZ1N0YXRlKCkuYWN0aW9uIHx8ICgqZHJhZ1N0YXRlKCkuYWN0aW9u
ICE9IERyYWdTb3VyY2VBY3Rpb246OkRIVE1MICYmICpkcmFnU3RhdGUoKS5hY3Rpb24gIT0gRHJh
Z1NvdXJjZUFjdGlvbjo6TGluaykpIHsKICAgICAgICAgICAgIC8vIC4uLiBidXQgb25seSBiYWls
IGlmIHdlJ3JlIG5vdCBvdmVyIGFuIHVuc2VsZWN0YWJsZSBlbGVtZW50LgogICAgICAgICAgICAg
bV9tb3VzZURvd25NYXlTdGFydERyYWcgPSBmYWxzZTsKICAgICAgICAgICAgIGRyYWdTdGF0ZSgp
LnNvdXJjZSA9IG51bGxwdHI7CkBAIC0zODQ1LDExICszODQ0LDkgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQs
IENoZWNrRHIKICAgICAgICAgcmV0dXJuICFtb3VzZURvd25NYXlTdGFydFNlbGVjdCgpICYmICFt
X21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbDsKICAgICBBU1NFUlQoZHJhZ1N0YXRlKCkuc291
cmNlKTsKIAotICAgIGlmICghRXhhY3RseU9uZUJpdFNldChkcmFnU3RhdGUoKS50eXBlKSkgewot
ICAgICAgICBBU1NFUlQoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rp
b24pOwotICAgICAgICBBU1NFUlQoRXhhY3RseU9uZUJpdFNldChzdGF0aWNfY2FzdDxEcmFnU291
cmNlQWN0aW9uPihkcmFnU3RhdGUoKS50eXBlICYgfkRyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24p
KSk7Ci0KLSAgICAgICAgZHJhZ1N0YXRlKCkudHlwZSA9IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rp
b247CisgICAgaWYgKGRyYWdTdGF0ZSgpLmFjdGlvbikgeworICAgICAgICBBU1NFUlQoZHJhZ1N0
YXRlKCkuaW5jbHVkZXNTZWxlY3Rpb25BY3Rpb24pOworICAgICAgICBkcmFnU3RhdGUoKS5hY3Rp
b24gPSBXVEY6Om51bGxvcHQ7CiAgICAgfQogCiAgICAgLy8gV2UgYXJlIHN0YXJ0aW5nIGEgdGV4
dC9pbWFnZS91cmwgZHJhZywgc28gdGhlIGN1cnNvciBzaG91bGQgYmUgYW4gYXJyb3cKQEAgLTM4
ODEsNyArMzg3OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgICAgICAgICBoYXNO
b25EZWZhdWx0UGFzdGVib2FyZERhdGEgPSBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGE6Olll
czsKICAgICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5tb3ZlRHJhZ1N0YXRlKFdURk1v
dmUoZHJhZ1N0YXJ0RGF0YVRyYW5zZmVyKSk7CiAKLSAgICAgICAgaWYgKGRyYWdTdGF0ZSgpLnNv
dXJjZSAmJiBkcmFnU3RhdGUoKS50eXBlID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCAmJiAhZHJh
Z1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5oYXNEcmFnSW1hZ2UoKSkgeworICAgICAgICBpZiAoZHJh
Z1N0YXRlKCkuc291cmNlICYmIGRyYWdTdGF0ZSgpLmFjdGlvbiAmJiAqZHJhZ1N0YXRlKCkuYWN0
aW9uID09IERyYWdTb3VyY2VBY3Rpb246OkRIVE1MICYmICFkcmFnU3RhdGUoKS5kYXRhVHJhbnNm
ZXItPmhhc0RyYWdJbWFnZSgpKSB7CiAgICAgICAgICAgICBkcmFnU3RhdGUoKS5zb3VyY2UtPmRv
Y3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICAgICAgaWYgKGF1dG8qIHJl
bmRlcmVyID0gZHJhZ1N0YXRlKCkuc291cmNlLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICAg
ICAgYXV0byBhYnNvbHV0ZVBvc2l0aW9uID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggMjdjYWU2MWVkMTEuLmY3YTE2YzFlMDYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTQ2NSw3ICs0NjUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uLCBL
ZXlib2FyZEV2ZW50Jik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIERyYWdTb3Vy
Y2VBY3Rpb24gdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3Q7CisgICAgT3B0
aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IHVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgp
IGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNTZWxlY3Rpb25VcGRhdGVzT25Nb3VzZURyYWcoKSBj
b25zdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
SXRlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaAppbmRleCBlNTg1OWM0
MmNmOS4uMWQxZjJhNzg5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0l0ZW0uaApAQCAtNDEs
NyArNDEsNyBAQCBzdHJ1Y3QgRHJhZ0l0ZW0gZmluYWwgewogICAgIC8vIFdoZXJlIHRoZSBpbWFn
ZSBzaG91bGQgYmUgcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGUgY3Vyc29yLgogICAgIEZsb2F0
UG9pbnQgaW1hZ2VBbmNob3JQb2ludDsKIAotICAgIERyYWdTb3VyY2VBY3Rpb24gc291cmNlQWN0
aW9uIHsgRHJhZ1NvdXJjZUFjdGlvbk5vbmUgfTsKKyAgICBPcHRpb25hbDxEcmFnU291cmNlQWN0
aW9uPiBzb3VyY2VBY3Rpb247CiAgICAgSW50UG9pbnQgZXZlbnRQb3NpdGlvbkluQ29udGVudENv
b3JkaW5hdGVzOwogICAgIEludFBvaW50IGRyYWdMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVz
OwogICAgIEludFBvaW50IGRyYWdMb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXM7CkBAIC02MSw3
ICs2MSw3IEBAIHZvaWQgRHJhZ0l0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewogICAgIC8vIEZJWE1FKDE3MzgxNSk6IFdlIHNob3VsZCBlbmNvZGUgYW5kIGRlY29kZSBQYXN0
ZWJvYXJkV3JpdGVyRGF0YSBhbmQgcGxhdGZvcm0gZHJhZyBpbWFnZSBkYXRhCiAgICAgLy8gaGVy
ZSB0b28sIGFzIHBhcnQgb2YgbW92aW5nIG9mZiBvZiB0aGUgbGVnYWN5IGRyYWdnaW5nIGNvZGVw
YXRoLgotICAgIGVuY29kZXIuZW5jb2RlRW51bShzb3VyY2VBY3Rpb24pOworICAgIGVuY29kZXIg
PDwgc291cmNlQWN0aW9uOwogICAgIGVuY29kZXIgPDwgaW1hZ2VBbmNob3JQb2ludCA8PCBldmVu
dFBvc2l0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPDwgZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29v
cmRpbmF0ZXMgPDwgZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyA8PCB0aXRsZSA8PCB1
cmwgPDwgZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRlczsKICAgICBib29sIGhh
c0luZGljYXRvckRhdGEgPSBpbWFnZS5oYXNJbmRpY2F0b3JEYXRhKCk7CiAgICAgZW5jb2RlciA8
PCBoYXNJbmRpY2F0b3JEYXRhOwpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIERyYWdJdGVtOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBib29s
IERyYWdJdGVtOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0l0ZW0mIHJlc3VsdCkKIHsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQuc291cmNlQWN0aW9uKSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zb3VyY2VBY3Rpb24pKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW1hZ2VBbmNob3JQb2ludCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmY5NWI1NzU3YWEuLjZjMDg4Mzk4
YTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBm
b3IgRHJhZ1NvdXJjZUFjdGlvbgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyODg1
PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQwOTQxMzQ+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3VtbWFyeToKKyAgICAgICAgLSBDb252ZXJ0
IGFyZ3VtZW50IHBhcmFtZXRlcnMgZnJvbSB1aW50NjRfdCB0bworICAgICAgICAgIE9wdGlvblNl
dDxEcmFnU291cmNlQWN0aW9uPi4KKyAgICAgICAgLSBDb252ZXJ0IERyYWdTb3VyY2VBY3Rpb24g
dG8gT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+LgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXQvbWVzc2FnZXMucHk6CisgICAgICAgIC0gTWFwIERyYWdTb3VyY2VBY3Rpb24gZW51bSB0byBE
cmFnQWN0aW9ucy5oIGhlYWRlci4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbToKKyAgICAg
ICAgKFdlYktpdDo6c2hvdWxkVXNlRHJhZ0ltYWdlVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFVzZVZpc2libGVQYXRoVG9DcmVhdGVQcmV2aWV3
Rm9yRHJhZ1NvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OnNob3VsZFVzZVRleHRJbmRpY2F0b3JU
b0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6Y2FuVXBkYXRl
UHJldmlld0ZvckFjdGl2ZURyYWdTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpEcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGU6OmFueUFjdGl2ZURyYWdTb3VyY2VJcyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6c3RhZ2VEcmFnSXRlbSk6CisgICAgICAg
IChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6aGFzU3RhZ2VkRHJhZ1NvdXJjZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRl
UHJldmlld3NGb3JBY3RpdmVEcmFnU291cmNlcyk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3N0
YXJ0RHJhZzppdGVtOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hbGxvd2VkRHJhZ1Nv
dXJjZUFjdGlvbnNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnSW50ZXJhY3Rpb246
d2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW1hdG9yOnNlc3Npb246XSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVxdWVzdERyYWdTdGFydCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVx
dWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJE
cmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphbGxvd2Vk
RHJhZ1NvdXJjZUFjdGlvbnMgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdERyYWdTdGFydCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFn
U2Vzc2lvbik6CisKIDIwMjAtMDYtMTAgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjYyODU4KTogRml4IG1hY09TIGJ1aWxkIHdoZW4g
YnVpbGRpbmcgRW5kb3dtZW50U3RhdGVUcmFja2VyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQppbmRleCAxYmZkMjgyNTlmOC4uNjJjNTA4ZTMxNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNTkxLDYgKzU5MSw3IEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCInXSwKICAgICAg
ICAgJ1dlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCc6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkRyYWdPcGVyYXRpb24nOiBbJzxXZWJDb3JlL0RyYWdB
Y3Rpb25zLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uJzogWyc8V2Vi
Q29yZS9EcmFnQWN0aW9ucy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cyc6IFsnPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyc6IFsnPFdlYkNvcmUvRmlsZUNob29zZXIuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwnOiBbJzxXZWJDb3JlL1No
YXJlRGF0YS5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAz
Yzg0YzFjZjkzOS4uZTFkYjJjZWIwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC04MzMsOCArODMzLDggQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgdm9pZCBkaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0KGJvb2wgc3RhcnRlZCk7CiAg
ICAgdm9pZCBkaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChib29sIGFkZGVkKTsK
LSAgICB2b2lkIHJlcXVlc3REcmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxsb3dlZEFjdGlvbnMpOwotICAgIHZvaWQgcmVxdWVzdEFk
ZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uIGFsbG93ZWRBY3Rpb25zKTsKKyAgICB2b2lkIHJlcXVlc3RE
cmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spOworICAgIHZvaWQgcmVxdWVzdEFkZGl0
aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKICAgICB2
b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
SW50U2l6ZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiYsIE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPik+JiYgcmVwbHkp
OwogICAgIHZvaWQgd2lsbFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KCk7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlRWRpdERyYWdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0
YT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5oCmluZGV4IGQyZTBiOTA5ZmVjLi5iN2Y4N2I0NDcwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUuaApAQCAtNDYsNyArNDYsNyBAQCBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogc3RydWN0IERyYWdTb3VyY2VTdGF0ZSB7Ci0gICAgV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbiBhY3Rpb24geyBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uTm9uZSB9Owor
ICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhY3Rpb247CiAgICAgQ0dQ
b2ludCBhZGp1c3RlZE9yaWdpbiB7IENHUG9pbnRaZXJvIH07CiAgICAgQ0dSZWN0IGRyYWdQcmV2
aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMgeyBDR1JlY3RaZXJvIH07CiAgICAgUmV0YWlu
UHRyPFVJSW1hZ2U+IGltYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUubW0KaW5kZXggZmY0ZTRmZDE0ZjEuLjkwMmRi
OGU0YzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUubW0KQEAgLTk5LDExICs5OSwxMSBAQCBzdGF0aWMgYm9vbCBz
aG91bGRVc2VEcmFnSW1hZ2VUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdT
b3VyY2VTdGF0ZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKLSAgICBpZiAoc291cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikK
KyAgICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpDb2xvcikp
CiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICByZXR1cm4gc291cmNlLmFjdGlv
biAmIChEcmFnU291cmNlQWN0aW9uREhUTUwgfCBEcmFnU291cmNlQWN0aW9uSW1hZ2UpOworICAg
IHJldHVybiBzb3VyY2UuYWN0aW9uLmNvbnRhaW5zQW55KHsgRHJhZ1NvdXJjZUFjdGlvbjo6REhU
TUwsIERyYWdTb3VyY2VBY3Rpb246OkltYWdlIH0pOwogfQogCiBzdGF0aWMgYm9vbCBzaG91bGRV
c2VWaXNpYmxlUGF0aFRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1NvdXJj
ZVN0YXRlJiBzb3VyY2UpCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNl
VmlzaWJsZVBhdGhUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNlKGNvbnN0IERyYWdTb3VyY2VT
dGEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1Ip
Ci0gICAgaWYgKHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQ29sb3IpCisgICAgaWYg
KHNvdXJjZS5hY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3IpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCkBAIC0xMjQsMTEgKzEyNCwxMSBAQCBzdGF0aWMgYm9v
bCBzaG91bGRVc2VUZXh0SW5kaWNhdG9yVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25z
dCBEcmFnU291cmNlUwogICAgIGlmICghc291cmNlLmluZGljYXRvckRhdGEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGlmIChzb3VyY2UuYWN0aW9uICYgKERyYWdTb3VyY2VBY3Rpb25M
aW5rIHwgRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbikpCisgICAgaWYgKHNvdXJjZS5hY3Rpb24u
Y29udGFpbnNBbnkoeyBEcmFnU291cmNlQWN0aW9uOjpMaW5rLCBEcmFnU291cmNlQWN0aW9uOjpT
ZWxlY3Rpb24gfSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1F
TlRfRUxFTUVOVCkKLSAgICBpZiAoc291cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25BdHRh
Y2htZW50KQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246
OkF0dGFjaG1lbnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCkBAIC0xNDEsMTEg
KzE0MSwxMSBAQCBzdGF0aWMgYm9vbCBjYW5VcGRhdGVQcmV2aWV3Rm9yQWN0aXZlRHJhZ1NvdXJj
ZShjb25zdCBEcmFnU291cmNlU3RhdGUmIHNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgaWYgKHNvdXJjZS5hY3Rpb24gJiBE
cmFnU291cmNlQWN0aW9uQ29sb3IpCisgICAgaWYgKHNvdXJjZS5hY3Rpb24uY29udGFpbnMoRHJh
Z1NvdXJjZUFjdGlvbjo6Q29sb3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCi0g
ICAgaWYgKHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluayAmJiAhKHNvdXJjZS5h
Y3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpKQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNv
bnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkxpbmspICYmICFzb3VyY2UuYWN0aW9uLmNvbnRhaW5z
KERyYWdTb3VyY2VBY3Rpb246OkltYWdlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xNjcsNyArMTY3LDcgQEAgT3B0aW9uYWw8RHJhZ1NvdXJjZVN0YXRl
PiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmFjdGl2ZURyYWdTb3VyY2VGb3JJdGVtKFVJRHIK
IGJvb2wgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjphbnlBY3RpdmVEcmFnU291cmNlSXMoV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24pIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvJiBz
b3VyY2UgOiBtX2FjdGl2ZURyYWdTb3VyY2VzKSB7Ci0gICAgICAgIGlmIChzb3VyY2UuYWN0aW9u
ICYgYWN0aW9uKQorICAgICAgICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhhY3Rpb24pKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKQEAgLTM0
Miw3ICszNDIsNyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6c3RhZ2VEcmFnSXRl
bShjb25zdCBEcmFnSXRlbSYgaXRlbSwgVUlJbWFnZSAqZHJhZwogCiAgICAgbV9hZGp1c3RlZFBv
c2l0aW9uRm9yRHJhZ0VuZCA9IGl0ZW0uZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVz
OwogICAgIG1fc3RhZ2VkRHJhZ1NvdXJjZSA9IHt7Ci0gICAgICAgIHN0YXRpY19jYXN0PERyYWdT
b3VyY2VBY3Rpb24+KGl0ZW0uc291cmNlQWN0aW9uKSwKKyAgICAgICAgaXRlbS5zb3VyY2VBY3Rp
b24sCiAgICAgICAgIGl0ZW0uZXZlbnRQb3NpdGlvbkluQ29udGVudENvb3JkaW5hdGVzLAogICAg
ICAgICBpdGVtLmRyYWdQcmV2aWV3RnJhbWVJblJvb3RWaWV3Q29vcmRpbmF0ZXMsCiAgICAgICAg
IGRyYWdJbWFnZSwKQEAgLTM1Nyw3ICszNTcsNyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25T
dGF0ZTo6c3RhZ2VEcmFnSXRlbShjb25zdCBEcmFnSXRlbSYgaXRlbSwgVUlJbWFnZSAqZHJhZwog
CiBib29sIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6aGFzU3RhZ2VkRHJhZ1NvdXJjZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RhZ2VkRHJhZ1NvdXJjZSAmJiBzdGFnZWREcmFnU291cmNl
KCkuYWN0aW9uICE9IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb25Ob25lOworICAgIHJldHVybiBt
X3N0YWdlZERyYWdTb3VyY2UgJiYgIXN0YWdlZERyYWdTb3VyY2UoKS5hY3Rpb24uaXNFbXB0eSgp
OwogfQogCiB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6Y2xlYXJTdGFnZWREcmFnU291
cmNlKERpZEJlY29tZUFjdGl2ZSBkaWRCZWNvbWVBY3RpdmUpCkBAIC0zOTMsNyArMzkzLDcgQEAg
dm9pZCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OnVwZGF0ZVByZXZpZXdzRm9yQWN0aXZlRHJh
Z1NvdXJjZXMoKQogICAgICAgICBpZiAoIWRyYWdJdGVtKQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgaWYgKHNvdXJjZS5hY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uTGluaykgewor
ICAgICAgICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpMaW5r
KSkgewogICAgICAgICAgICAgZHJhZ0l0ZW0ucHJldmlld1Byb3ZpZGVyID0gW3RpdGxlID0gcmV0
YWluUHRyKChOU1N0cmluZyAqKXNvdXJjZS5saW5rVGl0bGUpLCB1cmwgPSByZXRhaW5QdHIoKE5T
VVJMICopc291cmNlLmxpbmtVUkwpLCBjZW50ZXIgPSBzb3VyY2UuYWRqdXN0ZWRPcmlnaW5dICgp
IC0+IFVJRHJhZ1ByZXZpZXcgKiB7CiAgICAgICAgICAgICAgICAgVUlVUkxEcmFnUHJldmlld1Zp
ZXcgKnByZXZpZXdWaWV3ID0gW1VJVVJMRHJhZ1ByZXZpZXdWaWV3IHZpZXdXaXRoVGl0bGU6dGl0
bGUuZ2V0KCkgVVJMOnVybC5nZXQoKV07CiAgICAgICAgICAgICAgICAgcHJldmlld1ZpZXcuY2Vu
dGVyID0gY2VudGVyOwpAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlOjp1cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKCkKICAgICAgICAgICAg
IH07CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICAgICAgZWxz
ZSBpZiAoc291cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikgeworICAgICAgICBl
bHNlIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkNvbG9yKSkg
ewogICAgICAgICAgICAgZHJhZ0l0ZW0ucHJldmlld1Byb3ZpZGVyID0gW2ltYWdlID0gc291cmNl
LmltYWdlXSAoKSAtPiBVSURyYWdQcmV2aWV3ICogewogICAgICAgICAgICAgICAgIFVJSW1hZ2VW
aWV3ICppbWFnZVZpZXcgPSBbW1tVSUltYWdlVmlldyBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWFn
ZS5nZXQoKV0gYXV0b3JlbGVhc2VdOwogICAgICAgICAgICAgICAgIFVJRHJhZ1ByZXZpZXdQYXJh
bWV0ZXJzICpwYXJhbWV0ZXJzID0gW1tbVUlEcmFnUHJldmlld1BhcmFtZXRlcnMgYWxsb2NdIGlu
aXRXaXRoVGV4dExpbmVSZWN0czpAWyBbTlNWYWx1ZSB2YWx1ZVdpdGhDR1JlY3Q6W2ltYWdlVmll
dyBib3VuZHNdXSBdXSBhdXRvcmVsZWFzZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBkMmI0ZjczOGVk
NC4uOTM2YTk0Zjc0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzI0MCw3ICs3MjQwLDcgQEAgLSAo
dm9pZCl0ZWFyZG93bkRyYWdBbmREcm9wSW50ZXJhY3Rpb25zCiAKIC0gKHZvaWQpX3N0YXJ0RHJh
ZzooUmV0YWluUHRyPENHSW1hZ2VSZWY+KWltYWdlIGl0ZW06KGNvbnN0IFdlYkNvcmU6OkRyYWdJ
dGVtJilpdGVtCiB7Ci0gICAgQVNTRVJUKGl0ZW0uc291cmNlQWN0aW9uICE9IFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb25Ob25lKTsKKyAgICBBU1NFUlQoaXRlbS5zb3VyY2VBY3Rpb24pOwogCiAg
ICAgaWYgKGl0ZW0ucHJvbWlzZWRBdHRhY2htZW50SW5mbykKICAgICAgICAgW3NlbGYgX3ByZXBh
cmVUb0RyYWdQcm9taXNlZEF0dGFjaG1lbnQ6aXRlbS5wcm9taXNlZEF0dGFjaG1lbnRJbmZvXTsK
QEAgLTc1NDEsMTIgKzc1NDEsMTIgQEAgLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbkZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2kKICAgICByZXR1
cm4gV0tEcmFnRGVzdGluYXRpb25BY3Rpb25BbnkgJiB+V0tEcmFnRGVzdGluYXRpb25BY3Rpb25M
b2FkOwogfQogCi0tIChXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKV9hbGxvd2VkRHJhZ1NvdXJj
ZUFjdGlvbnMKKy0gKE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPilfYWxsb3dl
ZERyYWdTb3VyY2VBY3Rpb25zCiB7Ci0gICAgYXV0byBhbGxvd2VkQWN0aW9ucyA9IFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb25Bbnk7CisgICAgYXV0byBhbGxvd2VkQWN0aW9ucyA9IFdlYkNvcmU6
OmFueURyYWdTb3VyY2VBY3Rpb24oKTsKICAgICBpZiAoIXNlbGYuaXNGaXJzdFJlc3BvbmRlciB8
fCAhX3N1cHByZXNzU2VsZWN0aW9uQXNzaXN0YW50UmVhc29ucy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgLy8gRG9uJ3QgYWxsb3cgc3RhcnRpbmcgYSBkcmFnIG9uIGEgc2VsZWN0aW9uIHdoZW4gc2Vs
ZWN0aW9uIHZpZXdzIGFyZSBub3QgdmlzaWJsZS4KLSAgICAgICAgYWxsb3dlZEFjdGlvbnMgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPihhbGxvd2VkQWN0aW9ucyAmIH5X
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKTsKKyAgICAgICAgYWxsb3dlZEFjdGlv
bnMucmVtb3ZlKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbik7CiAgICAgfQog
ICAgIHJldHVybiBhbGxvd2VkQWN0aW9uczsKIH0KQEAgLTgwMTcsNyArODAxNyw3IEBAIC0gKFVJ
VGFyZ2V0ZWREcmFnUHJldmlldyAqKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24g
KilpbnRlcmFjdGlvbiBwcmV2CiAtICh2b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJh
Y3Rpb24gKilpbnRlcmFjdGlvbiB3aWxsQW5pbWF0ZUxpZnRXaXRoQW5pbWF0b3I6KGlkIDxVSURy
YWdBbmltYXRpbmc+KWFuaW1hdG9yIHNlc3Npb246KGlkIDxVSURyYWdTZXNzaW9uPilzZXNzaW9u
CiB7CiAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcmFnIHNlc3Npb24gd2lsbEFuaW1h
dGVMaWZ0V2l0aEFuaW1hdG9yOiAlcCIsIHNlc3Npb24pOwotICAgIGlmIChfZHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlLmFueUFjdGl2ZURyYWdTb3VyY2VJcyhXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uU2VsZWN0aW9uKSkgeworICAgIGlmIChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFueUFj
dGl2ZURyYWdTb3VyY2VJcyhXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24pKSB7
CiAgICAgICAgIFtzZWxmIGNhbmNlbEFjdGl2ZVRleHRJbnRlcmFjdGlvbkdlc3R1cmVzXTsKICAg
ICAgICAgaWYgKCFfc2hvdWxkUmVzdG9yZUNhbGxvdXRCYXJBZnRlckRyb3ApIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIFNQSSBzaG91bGQgYmUgcmVuYW1lZCBpbiBVSUtpdCB0byByZWZs
ZWN0IGEgbW9yZSBnZW5lcmFsIHB1cnBvc2Ugb2YgaGlkaW5nIGludGVyYWN0aW9uIGFzc2lzdGFu
dCBjb250cm9scy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQ
YWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCmluZGV4IGVhNWU0ZWZkMmRkLi5hZWFlMjlhMWE5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0xMjU3LDE2ICsxMjU3LDE2
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVz
dChib29sIGFkZGVkKQogICAgIHBhZ2VDbGllbnQoKS5kaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0
ZW1zUmVxdWVzdChhZGRlZCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RHJhZ1N0
YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFs
bG93ZWRBY3Rpb25zKQordm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3REcmFnU3RhcnQoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBh
bGxvd2VkQWN0aW9uc01hc2spCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERyYWdTdGFydChj
bGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rpb25zKSwgbV93ZWJQYWdl
SUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RE
cmFnU3RhcnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBhbGxvd2VkQWN0aW9uc01h
c2spLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWRkaXRp
b25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24g
YWxsb3dlZEFjdGlvbnMpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVt
c0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
bj4gYWxsb3dlZEFjdGlvbnNNYXNrKQogewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBZGRpdGlv
bmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFs
bG93ZWRBY3Rpb25zKSwgbV93ZWJQYWdlSUQpOworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjbGll
bnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rpb25zTWFzayksIG1fd2ViUGFn
ZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9s
ZGVycyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGlj
YXRvckRhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCA4
MWI3OWE3N2M4Ny4uMmViMDg4NmYxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJh
Z1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQKIHsKIH0KIAotRHJhZ1NvdXJjZUFjdGlvbiBX
ZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50
JikKK09wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNl
QWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKIHsKICAgICByZXR1cm4gbV9wYWdl
LT5hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDI3YzRi
MjcyYTczLi40ZGJhMGQ4YWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlv
bihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRh
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpE
YXRhVHJhbnNmZXImKSBvdmVycmlkZTsKLSAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRy
YWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRv
d1BvaW50KSBvdmVycmlkZTsKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
bj4gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
d2luZG93UG9pbnQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJh
Z0l0ZW0sIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTRiMTU3ODY2YmUuLjA0OTU2MDJm
MGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05
MTUsNyArOTE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbFN0YXJ0RHJhZygpIHsgQVNTRVJU
KCFtX2lzU3RhcnRpbmdEcmFnKTsgbV9pc1N0YXJ0aW5nRHJhZyA9IHRydWU7IH0KICAgICB2b2lk
IGRpZFN0YXJ0RHJhZygpOwogICAgIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwotICAgIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24gYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnM7IH0KKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnM7IH0KICNlbmRpZgogCiAgICAgdm9pZCBiZWdp
blByaW50aW5nKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJik7CkBA
IC0xNDA2LDggKzE0MDYsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKLSAgICB2b2lkIHJlcXVlc3REcmFn
U3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKTsK
LSAgICB2b2lkIHJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlvbnMpOworICAgIHZvaWQgcmVxdWVz
dERyYWdTdGFydChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzayk7CisgICAgdm9pZCByZXF1ZXN0QWRk
aXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spOwogICAg
IHZvaWQgaW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpJbnRTaXplPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiByZXBs
eSk7CiAgICAgdm9pZCBjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKTsKICNlbmRpZgpA
QCAtMTkzMyw3ICsxOTMzLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAgICAgYm9vbCBtX2lzU3RhcnRpbmdEcmFnIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uIG1fYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zIHsgV2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbkFueSB9OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
PiBtX2FsbG93ZWREcmFnU291cmNlQWN0aW9ucyB7IFdlYkNvcmU6OmFueURyYWdTb3VyY2VBY3Rp
b24oKSB9OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYWU5Mjc0NzYzODguLjE2YWYzMTdlODg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTMyMSw4ICszMjEsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVu
dW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFJl
cXVlc3REcmFnU3RhcnQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6
OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKLSAgICBS
ZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oV2ViQ29yZTo6SW50UG9pbnQgY2xp
ZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBh
bGxvd2VkQWN0aW9ucykKKyAgICBSZXF1ZXN0RHJhZ1N0YXJ0KFdlYkNvcmU6OkludFBvaW50IGNs
aWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzaykKKyAgICBSZXF1
ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50
UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKQogICAgIEluc2VydERy
b3BwZWRJbWFnZVBsYWNlaG9sZGVycyhWZWN0b3I8V2ViQ29yZTo6SW50U2l6ZT4gaW1hZ2VTaXpl
KSAtPiAoVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IGRyb3BQcmV2aWV3UmVjdHMsIE9wdGlvbmFs
PFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhPiB0ZXh0SW5kaWNhdG9yKSBBc3luYwogICAgIERp
ZENvbmNsdWRlRHJvcCgpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNTgwMzRiNzFjMTEuLjcwYzhmMmFhZmVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQpAQCAtOTA5LDE2ICs5MDksMTYgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0Rm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbihXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIH0KIAog
I2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RHJhZ1N0
YXJ0KGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucykKK3ZvaWQgV2ViUGFnZTo6cmVxdWVz
dERyYWdTdGFydChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50
JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFs
bG93ZWRBY3Rpb25zTWFzaykKIHsKLSAgICBTZXRGb3JTY29wZTxXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uPiBhbGxvd2VkQWN0aW9uc0ZvclNjb3BlKG1fYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25z
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPihhbGxvd2VkQWN0aW9ucykp
OworICAgIFNldEZvclNjb3BlPE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPj4g
YWxsb3dlZEFjdGlvbnNGb3JTY29wZShtX2FsbG93ZWREcmFnU291cmNlQWN0aW9ucywgYWxsb3dl
ZEFjdGlvbnNNYXNrKTsKICAgICBib29sIGRpZFN0YXJ0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5l
dmVudEhhbmRsZXIoKS50cnlUb0JlZ2luRHJhZ0F0UG9pbnQoY2xpZW50UG9zaXRpb24sIGdsb2Jh
bFBvc2l0aW9uKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZURy
YWdTdGFydFJlcXVlc3QoZGlkU3RhcnQpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWRk
aXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25z
KQordm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01h
c2spCiB7Ci0gICAgU2V0Rm9yU2NvcGU8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dl
ZEFjdGlvbnNGb3JTY29wZShtX2FsbG93ZWREcmFnU291cmNlQWN0aW9ucywgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4oYWxsb3dlZEFjdGlvbnMpKTsKKyAgICBTZXRGb3JT
Y29wZTxPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4+IGFsbG93ZWRBY3Rpb25z
Rm9yU2NvcGUobV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMsIGFsbG93ZWRBY3Rpb25zTWFzayk7
CiAgICAgLy8gVG8gYXVnbWVudCB0aGUgcGxhdGZvcm0gZHJhZyBzZXNzaW9uIHdpdGggYWRkaXRp
b25hbCBpdGVtcywgZW5kIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBhbmQgYmVnaW4gYSBuZXcg
ZHJhZyBzZXNzaW9uIHdpdGggdGhlIG5ldyBkcmFnIGl0ZW0uCiAgICAgLy8gVGhpcyBwcm9jZXNz
IGlzIG9wYXF1ZSB0byB0aGUgVUkgcHJvY2Vzcywgd2hpY2ggc3RpbGwgbWFpbnRhaW5zIHRoZSBv
bGQgZHJhZyBpdGVtIGluIGl0cyBkcmFnIHNlc3Npb24uIFNpbWlsYXJseSwgdGhpcyBwZXJzaXN0
ZW50IGRyYWcgc2Vzc2lvbgogICAgIC8vIGlzIG9wYXF1ZSB0byB0aGUgd2ViIHByb2Nlc3MsIHdo
aWNoIG9ubHkgc2VlcyB0aGF0IHRoZSBjdXJyZW50IGRyYWcgaGFzIGVuZGVkLCBhbmQgdGhhdCBh
IG5ldyBvbmUgaXMgYmVnaW5uaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDgy
YTBlM2YyNTZkLi42N2NmZjIzOTVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMwIEBACisyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CisKKyAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ1NvdXJjZUFjdGlv
bgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyODg1PgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNjQwOTQxMzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgU3VtbWFyeToKKyAgICAgICAgLSBBZGQgYW5kIHVzZSBjb252ZXJzaW9uIGZ1
bmN0aW9ucyBiZXR3ZWVuCisgICAgICAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VB
Y3Rpb24+IGFuZCBXZWJEcmFnU291cmNlQWN0aW9uLgorICAgICAgICAtIFVwZGF0ZSBtZXRob2Qg
c2lnbmF0dXJlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tOgorICAgICAgICAoY29y
ZURyYWdTb3VyY2VBY3Rpb25NYXNrKTogQWRkLgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6ZHJh
Z1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludCk6CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxs
UGVyZm9ybURyYWdTb3VyY2VBY3Rpb24pOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnRE
cmFnKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChraXQpOiBBZGQu
CisgICAgICAgIC0gQ29udmVydCBmcm9tIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IHRvCisgICAgICAgICAgV2ViRHJhZ1NvdXJjZUFjdGlvbi4KKyAgICAgICAgKC1bV2ViVmll
dyBfc3RhcnREcmFnOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6Cisg
ICAgICAgIChraXQpOiBBZGQgZGVjbGFyYXRpb24gdG8gcmV1c2UgZnVuY3Rpb24gaW4gV2ViRHJh
Z0NsaWVudC5tbS4KKwogMjAyMC0wNi0wOSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+
CiAKICAgICAgICAgU3RvcCB1c2luZyBkaXNjcmltaW5hdG9yeSBuYW1lcyBmb3IgV2ViR0wgYW5k
IFBsdWdpbiBibG9ja2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IDE1ZGNiYTU0NDIxLi4zNGE3NWZmYWIx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdp
bGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAg
IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOworICAgIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzdGFydERyYWcoV2ViQ29yZTo6RHJhZ0l0ZW0sIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYs
IFdlYkNvcmU6OkZyYW1lJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGJlZ2luRHJhZyhXZWJDb3Jl
OjpEcmFnSXRlbSwgV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbW91
c2VEb3duUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURyYWdnZWRQb3Np
dGlvbiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQppbmRleCAzZDFhMGEzNWZmMi4uNDJhYzI3YmZjNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5tbQpAQCAtNjgsNiArNjgsMjIgQEAgV2ViRHJhZ0NsaWVudDo6V2ViRHJhZ0Ns
aWVudChXZWJWaWV3KiB3ZWJWaWV3KQogCiAjaWYgUExBVEZPUk0oTUFDKQogCitzdGF0aWMgT3B0
aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGNvcmVEcmFnU291cmNlQWN0aW9uTWFz
ayhXZWJEcmFnU291cmNlQWN0aW9uIGFjdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbj4gcmVzdWx0OworCisgICAgaWYgKGFjdGlvbiAmIFdlYkRyYWdTb3Vy
Y2VBY3Rpb25ESFRNTCkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uOjpESFRNTCk7CisgICAgaWYgKGFjdGlvbiAmIFdlYkRyYWdTb3VyY2VBY3Rpb25JbWFnZSkK
KyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpJbWFnZSk7Cisg
ICAgaWYgKGFjdGlvbiAmIFdlYkRyYWdTb3VyY2VBY3Rpb25MaW5rKQorICAgICAgICByZXN1bHQu
YWRkKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkxpbmspOworICAgIGlmIChhY3Rpb24gJiBX
ZWJEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CiBzdGF0aWMgV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGtpdChXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24gYWN0aW9uKQogewogICAgIHN3aXRjaCAoYWN0aW9uKSB7CkBAIC0xMDQsMTUg
KzEyMCwxNSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdAogfQogCiAKLVdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChj
b25zdCBJbnRQb2ludCYgcm9vdFZpZXdQb2ludCkKK09wdGlvblNldDxXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uPiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNv
bnN0IEludFBvaW50JiByb290Vmlld1BvaW50KQogewogICAgIE5TUG9pbnQgdmlld1BvaW50ID0g
W21fd2ViVmlldyBfY29udmVydFBvaW50RnJvbVJvb3RWaWV3OnJvb3RWaWV3UG9pbnRdOwotICAg
IHJldHVybiAoRHJhZ1NvdXJjZUFjdGlvbilbW21fd2ViVmlldyBfVUlEZWxlZ2F0ZUZvcndhcmRl
cl0gd2ViVmlldzptX3dlYlZpZXcgZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludDp2aWV3UG9p
bnRdOworICAgIHJldHVybiBjb3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2soW1ttX3dlYlZpZXcgX1VJ
RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IGRyYWdTb3VyY2VBY3Rpb25NYXNr
Rm9yUG9pbnQ6dmlld1BvaW50XSk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZv
cm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgbW91c2VEb3duUG9pbnQsIFdlYkNvcmU6OkRhdGFUcmFuc2Zl
ciYgZGF0YVRyYW5zZmVyKQogewotICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVy
XSB3ZWJWaWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb246KFdlYkRyYWdT
b3VyY2VBY3Rpb24pYWN0aW9uIGZyb21Qb2ludDptb3VzZURvd25Qb2ludCB3aXRoUGFzdGVib2Fy
ZDpbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoTmFtZTpkYXRhVHJhbnNmZXIucGFzdGVib2Fy
ZCgpLm5hbWUoKV1dOworICAgIFtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJW
aWV3Om1fd2ViVmlldyB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb246a2l0KGFjdGlvbikgZnJv
bVBvaW50Om1vdXNlRG93blBvaW50IHdpdGhQYXN0ZWJvYXJkOltOU1Bhc3RlYm9hcmQgcGFzdGVi
b2FyZFdpdGhOYW1lOmRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkubmFtZSgpXV07CiB9CiAKIHZv
aWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmIGZyYW1lKQpAQCAtMTI0LDcgKzE0MCw3IEBAIHZvaWQg
V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGRyYWdJdGVtLCBEYXRhVHJhbnNmZXIm
IGRhdGFUcmFuc2ZlciwgRnJhCiAgICAgaWYgKCFbaHRtbFZpZXcuZ2V0KCkgaXNLaW5kT2ZDbGFz
czpbV2ViSFRNTFZpZXcgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIE5TRXZl
bnQgKmV2ZW50ID0gZHJhZ0l0ZW0uc291cmNlQWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb25MaW5r
ID8gZnJhbWUuZXZlbnRIYW5kbGVyKCkuY3VycmVudE5TRXZlbnQoKSA6IFtodG1sVmlldy5nZXQo
KSBfbW91c2VEb3duRXZlbnRdOworICAgIE5TRXZlbnQgKmV2ZW50ID0gKGRyYWdJdGVtLnNvdXJj
ZUFjdGlvbiAmJiAqZHJhZ0l0ZW0uc291cmNlQWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb246Okxp
bmspID8gZnJhbWUuZXZlbnRIYW5kbGVyKCkuY3VycmVudE5TRXZlbnQoKSA6IFtodG1sVmlldy5n
ZXQoKSBfbW91c2VEb3duRXZlbnRdOwogICAgIFdlYkhUTUxWaWV3KiB0b3BIVE1MVmlldyA9IGdl
dFRvcEhUTUxWaWV3KCZmcmFtZSk7CiAgICAgUmV0YWluUHRyPFdlYkhUTUxWaWV3PiB0b3BWaWV3
UHJvdGVjdG9yID0gdG9wSFRNTFZpZXc7CiAgICAgCkBAIC0xOTcsOSArMjEzLDkgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3QKIHsKIH0KIAotV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBXZWJE
cmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikK
K09wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBXZWJEcmFnQ2xpZW50OjpkcmFn
U291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKIHsKLSAgICByZXR1cm4g
RHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBXZWJEcmFn
Q2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImKQpA
QCAtMjMyLDkgKzI0OCw5IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVz
dGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0CiB7CiB9CiAKLVdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tG
b3JQb2ludChjb25zdCBJbnRQb2ludCYpCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbj4gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJ
bnRQb2ludCYpCiB7Ci0gICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Bbnk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OmFueURyYWdTb3VyY2VBY3Rpb24oKTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50
Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwg
Y29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGRiOTAzZThmNmJlLi5jZTEyYWJlNGFkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjc1LDYgKzY3NSwz
NCBAQCBzdGF0aWMgX1VJRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7
CiB9CiAjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworV2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQoT3B0
aW9uYWw8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWN0aW9uKQoreworICAgIGlmICghYWN0
aW9uKQorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisKKyAgICBzd2l0
Y2ggKCphY3Rpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkRIVE1M
OgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkRIVE1MOworICAgIGNhc2UgV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2U6CisgICAgICAgIHJldHVybiBXZWJEcmFnU291
cmNlQWN0aW9uSW1hZ2U7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpMaW5r
OgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkxpbms7CisgICAgY2FzZSBXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb246CisgICAgICAgIHJldHVybiBXZWJEcmFn
U291cmNlQWN0aW9uU2VsZWN0aW9uOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisg
ICAgY2FzZSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50OgorICAgICAgICBi
cmVhazsKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIGNhc2UgV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6Q29sb3I6CisgICAgICAgIGJyZWFrOworI2VuZGlmCisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdlYkRyYWdTb3Vy
Y2VBY3Rpb25Ob25lOworfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKIFdlYkNv
cmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCkBAIC0x
OTYwLDcgKzE5ODgsNyBAQCAtICh2b2lkKV9zdGFydERyYWc6KGNvbnN0IFdlYkNvcmU6OkRyYWdJ
dGVtJilkcmFnSXRlbQogICAgIF9wcml2YXRlLT5kcmFnZ2VkTGlua1VSTCA9IGRyYWdJdGVtLnVy
bC5pc0VtcHR5KCkgPyBuaWwgOiAoTlNVUkwgKilkcmFnSXRlbS51cmw7CiAgICAgX3ByaXZhdGUt
PmRyYWdnZWRMaW5rVGl0bGUgPSBkcmFnSXRlbS50aXRsZS5pc0VtcHR5KCkgPyBuaWwgOiAoTlNT
dHJpbmcgKilkcmFnSXRlbS50aXRsZTsKICAgICBfcHJpdmF0ZS0+ZHJhZ1ByZXZpZXdGcmFtZUlu
Um9vdFZpZXdDb29yZGluYXRlcyA9IGRyYWdJdGVtLmRyYWdQcmV2aWV3RnJhbWVJblJvb3RWaWV3
Q29vcmRpbmF0ZXM7Ci0gICAgX3ByaXZhdGUtPmRyYWdTb3VyY2VBY3Rpb24gPSBzdGF0aWNfY2Fz
dDxXZWJEcmFnU291cmNlQWN0aW9uPihkcmFnSXRlbS5zb3VyY2VBY3Rpb24pOworICAgIF9wcml2
YXRlLT5kcmFnU291cmNlQWN0aW9uID0ga2l0KGRyYWdJdGVtLnNvdXJjZUFjdGlvbik7CiB9CiAK
IC0gKENHUmVjdClfZGF0YUludGVyYWN0aW9uQ2FyZXRSZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCBlYTFmMmYzMWU1Yi4u
NTYyNTBmZDc0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3SW50ZXJuYWwuaApAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5j
ZXMuaCIKICNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJUeXBlc0ludGVy
bmFsLmgiCisjaW1wb3J0ICJXZWJVSURlbGVnYXRlLmgiCiAKICNpZmRlZiBfX2NwbHVzcGx1cwog
CkBAIC05OCw2ICs5OSw4IEBAIHVzaW5nIENvY29hRHJhZ09wZXJhdGlvbiA9IHVpbnQ2NF90Owog
I2VuZGlmCiAKIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJh
dGlvbk1hc2soQ29jb2FEcmFnT3BlcmF0aW9uKTsKKworV2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQo
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4pOwogI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRP
cHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCAzZDBhYmZiZTg0NC4uODUx
YmFjNjliNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAyMC0wNi0wOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAg
IFtJUENdIEFkb3B0IGVudW0gY2xhc3MgZm9yIERyYWdTb3VyY2VBY3Rpb24KKyAgICAgICAgPGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjg4NT4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0MDk0
MTM0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1
bW1hcnk6CisgICAgICAgIC0gQWRkIGFuZCB1c2UgY29udmVyc2lvbiBmdW5jdGlvbnMgYmV0d2Vl
bgorICAgICAgICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbmQgV2Vi
RHJhZ1NvdXJjZUFjdGlvbi4KKyAgICAgICAgLSBVcGRhdGUgbWV0aG9kIHNpZ25hdHVyZXMuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKGNv
cmVEcmFnU291cmNlQWN0aW9uTWFzayk6IEFkZC4KKyAgICAgICAgKGtpdCk6IEFkZC4KKyAgICAg
ICAgLSBDb252ZXJ0IGZyb20gV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiB0byBXZWJEcmFnU291
cmNlQWN0aW9uLgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tG
b3JQb2ludCk6CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VB
Y3Rpb24pOgorICAgICAgICAoV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojpk
cmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KToKKwogMjAyMC0wNi0wOCAgRGF2aWQgS2lsemVy
ICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtJUENdIEFkb3B0IGVudW0gY2xhc3Mg
Zm9yIERyYWdPcGVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggNWIxOTNhN2RhYTMuLmRlOGM5
MzFkNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNzIsNiArNzIsNDYgQEAgc3RhdGljIFdlYkRy
YWdEZXN0aW5hdGlvbkFjdGlvbiBraXQoRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbikKICAg
ICByZXR1cm4gV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKIH0KIAorc3RhdGljIE9wdGlv
blNldDxEcmFnU291cmNlQWN0aW9uPiBjb3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2soV2ViRHJhZ1Nv
dXJjZUFjdGlvbiBhY3Rpb25NYXNrKQoreworICAgIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9u
PiByZXN1bHQ7CisKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rpb25ESFRN
TCkKKyAgICAgICAgcmVzdWx0LmFkZChEcmFnU291cmNlQWN0aW9uOjpESFRNTCk7CisgICAgaWYg
KGFjdGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0aW9uSW1hZ2UpCisgICAgICAgIHJlc3VsdC5h
ZGQoRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UpOworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJh
Z1NvdXJjZUFjdGlvbkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQoRHJhZ1NvdXJjZUFjdGlvbjo6
TGluayk7CisgICAgaWYgKGFjdGlvbk1hc2sgJiBXZWJEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9u
KQorICAgICAgICByZXN1bHQuYWRkKERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbik7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgV2ViRHJhZ1NvdXJjZUFjdGlvbiBraXQoRHJh
Z1NvdXJjZUFjdGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICBjYXNl
IERyYWdTb3VyY2VBY3Rpb246OkRIVE1MOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFj
dGlvbkRIVE1MOworICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2U6CisgICAgICAgIHJl
dHVybiBXZWJEcmFnU291cmNlQWN0aW9uSW1hZ2U7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9u
OjpMaW5rOgorICAgICAgICByZXR1cm4gV2ViRHJhZ1NvdXJjZUFjdGlvbkxpbms7CisgICAgY2Fz
ZSBEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb246CisgICAgICAgIHJldHVybiBXZWJEcmFnU291
cmNlQWN0aW9uU2VsZWN0aW9uOworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAg
Y2FzZSBEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50OgorICAgICAgICBicmVhazsKKyNlbmRp
ZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlv
bjo6Q29sb3I6CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uTm9uZTsKK30KKwogV2Vi
RHJhZ0NsaWVudDo6V2ViRHJhZ0NsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJW
aWV3KHdlYlZpZXcpIAogewpAQCAtODcsMTQgKzEyNywxNCBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6
OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiBh
Y3RpbwogICAgICAgICBkZWxlZ2F0ZVJlZi0+d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rp
b24obV93ZWJWaWV3LCBraXQoYWN0aW9uKSwgZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogfQog
Ci1EcmFnU291cmNlQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9y
UG9pbnQoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQorT3B0aW9uU2V0PERyYWdTb3VyY2VB
Y3Rpb24+IFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3Qg
SW50UG9pbnQmIHdpbmRvd1BvaW50KQogewogICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gZGVs
ZWdhdGVSZWYgPSAwOwotICAgIFdlYkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uID0gV2ViRHJhZ1Nv
dXJjZUFjdGlvbkFueTsKKyAgICBXZWJEcmFnU291cmNlQWN0aW9uIGFjdGlvbk1hc2sgPSBXZWJE
cmFnU291cmNlQWN0aW9uQW55OwogICAgIFBPSU5UIGxvY2FscHQgPSBjb3JlKG1fd2ViVmlldykt
Pm1haW5GcmFtZSgpLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3aW5kb3dQb2ludCk7CiAgICAg
aWYgKFNVQ0NFRURFRChtX3dlYlZpZXctPnVpRGVsZWdhdGUoJmRlbGVnYXRlUmVmKSkpCi0gICAg
ICAgIGRlbGVnYXRlUmVmLT5kcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KG1fd2ViVmlldywg
JmxvY2FscHQsICZhY3Rpb24pOwotICAgIHJldHVybiAoRHJhZ1NvdXJjZUFjdGlvbilhY3Rpb247
CisgICAgICAgIGRlbGVnYXRlUmVmLT5kcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KG1fd2Vi
VmlldywgJmxvY2FscHQsICZhY3Rpb25NYXNrKTsKKyAgICByZXR1cm4gY29yZURyYWdTb3VyY2VB
Y3Rpb25NYXNrKGFjdGlvbk1hc2spOwogfQogCiB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50UG9p
bnQmIGludFBvaW50LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlcikKQEAgLTEwNyw3ICsxNDcs
NyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFn
U291cmNlQWN0aW9uIGFjdGlvbiwgY29uc3QgSQogICAgIENPTVB0cjxJRGF0YU9iamVjdD4gZGF0
YU9iamVjdCA9IGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuZGF0YU9iamVjdCgpOwogCiAgICAg
Q09NUHRyPElEYXRhT2JqZWN0PiBuZXdEYXRhT2JqZWN0OwotICAgIEhSRVNVTFQgcmVzdWx0ID0g
dWlEZWxlZ2F0ZS0+d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKG1fd2ViVmlldywgc3RhdGlj
X2Nhc3Q8V2ViRHJhZ1NvdXJjZUFjdGlvbj4oYWN0aW9uKSwgJnBvaW50LCBkYXRhT2JqZWN0Lmdl
dCgpLCAmbmV3RGF0YU9iamVjdCk7CisgICAgSFJFU1VMVCByZXN1bHQgPSB1aURlbGVnYXRlLT53
aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24obV93ZWJWaWV3LCBraXQoYWN0aW9uKSwgJnBvaW50
LCBkYXRhT2JqZWN0LmdldCgpLCAmbmV3RGF0YU9iamVjdCk7CiAgICAgaWYgKHJlc3VsdCA9PSBT
X09LICYmIG5ld0RhdGFPYmplY3QgIT0gZGF0YU9iamVjdCkKICAgICAgICAgY29uc3RfY2FzdDxQ
YXN0ZWJvYXJkJj4oZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKSkuc2V0RXh0ZXJuYWxEYXRhT2Jq
ZWN0KG5ld0RhdGFPYmplY3QuZ2V0KCkpOwogfQpAQCAtMTQzLDcgKzE4Myw3IEBAIHZvaWQgV2Vi
RHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRy
YW5zZmVyLCBGcmFtZSYKICAgICAgICAgICAgICAgICBzZGkuaGJtcERyYWdJbWFnZSA9IGltYWdl
LmdldCgpOwogICAgICAgICAgICAgICAgIHNkaS5wdE9mZnNldC54ID0gZHJhZ1BvaW50LngoKSAt
IGltYWdlT3JpZ2luLngoKTsKICAgICAgICAgICAgICAgICBzZGkucHRPZmZzZXQueSA9IGRyYWdQ
b2ludC55KCkgLSBpbWFnZU9yaWdpbi55KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZW0uc291
cmNlQWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb25MaW5rKQorICAgICAgICAgICAgICAgIGlmIChp
dGVtLnNvdXJjZUFjdGlvbiAmJiAqaXRlbS5zb3VyY2VBY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlv
bjo6TGluaykKICAgICAgICAgICAgICAgICAgICAgc2RpLnB0T2Zmc2V0LnkgPSBiLmJtSGVpZ2h0
IC0gc2RpLnB0T2Zmc2V0Lnk7CiAKICAgICAgICAgICAgICAgICBoZWxwZXItPkluaXRpYWxpemVG
cm9tQml0bWFwKCZzZGksIGRhdGFPYmplY3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGE1MWZj
MDEzZjA1Li5mNThjNzM3ZWE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFz
cyBXZWJEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgewogcHVibGljOgog
ICAgIFdlYkRyYWdDbGllbnQoV2ViVmlldyopOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKKyAgICB2aXJ0dWFsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uPiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
Jik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRy
YW5zZmVyJik7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwg
V2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RnJhbWUmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401613</attachid>
            <date>2020-06-10 18:24:17 -0700</date>
            <delta_ts>2020-06-11 11:57:18 -0700</delta_ts>
            <desc>Patch v5 with Optional&lt;DragSourceAction&gt; in DragState v2</desc>
            <filename>bug-212885-v5-with-DragState-Optional-DragSourceAction-v2.diff</filename>
            <type>text/plain</type>
            <size>74033</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggYzI1NzMxNTJkNGIuLjYxMDg1ODZkMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIw
LTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgW0lQ
Q10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ1NvdXJjZUFjdGlvbgorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMjEyODg1PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQwOTQxMzQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
T3B0aW9uU2V0Lmg6CisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6aGFzRXhhY3RseU9uZUJpdFNl
dCBjb25zdCk6IEFkZC4KKyAgICAgICAgLSBNb3ZlIGhlcmUgZnJvbSBXZWJDb3JlOjpFeGFjdGx5
T25lQml0U2V0KCkgaW4KKyAgICAgICAgICBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAuCisgICAgICAgIChXVEY6Ok9wdGlvblNldDo6dG9TaW5nbGVWYWx1ZSBjb25zdCk6IEFk
ZC4KKyAgICAgICAgLSBVc2UgaGFzRXhhY3RseU9uZUJpdFNldCgpIHRvIGRldGVybWluZSB3aGV0
aGVyIGV4YWN0bHkgb25lCisgICAgICAgICAgZW51bSBiaXRtYXNrIHZhbHVlIGNhbiBiZSByZXR1
cm5lZC4KKwogMjAyMC0wNi0xMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtDb2NvYV0gQnVpbGQgY2FsbE9uTWFpblRocmVhZCBvbiBXVEY6OlJ1bkxvb3Ag
cmF0aGVyIHRoYW4gb24gTlNPYmplY3QgbWV0aG9kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvT3B0aW9uU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAppbmRleCAyZGNmNDNj
MmU2Mi4uOTE4ZTg3YjE5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvblNldC5oCkBAIC0yMDUsNiArMjA1LDE4IEBAIHB1
YmxpYzoKICAgICAgICAgbV9zdG9yYWdlICY9IH5vcHRpb25TZXQubV9zdG9yYWdlOwogICAgIH0K
IAorLyoKKyAgICBjb25zdGV4cHIgYm9vbCBoYXNFeGFjdGx5T25lQml0U2V0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3N0b3JhZ2UgJiYgIShtX3N0b3JhZ2UgJiAobV9zdG9yYWdl
IC0gMSkpOworICAgIH0KKworICAgIGNvbnN0ZXhwciBPcHRpb25hbDxFPiB0b1NpbmdsZVZhbHVl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBoYXNFeGFjdGx5T25lQml0U2V0KCkgPyBP
cHRpb25hbDxFPihzdGF0aWNfY2FzdDxFPihtX3N0b3JhZ2UpKSA6IFdURjo6bnVsbG9wdDsKKyAg
ICB9CisqLworCiAgICAgY29uc3RleHByIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oT3B0aW9uU2V0
IGxocywgT3B0aW9uU2V0IHJocykKICAgICB7CiAgICAgICAgIHJldHVybiBsaHMubV9zdG9yYWdl
ID09IHJocy5tX3N0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFlMzgyMDQyZTEuLjM5OWY0NTk2MTEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMjAtMDYtMDggIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBbSVBDXSBBZG9wdCBlbnVtIGNsYXNzIGZv
ciBEcmFnU291cmNlQWN0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI4ODU+
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDA5NDEzND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdW1tYXJ5OgorICAgICAgICAtIENvbnZlcnQg
RHJhZ1NvdXJjZUFjdGlvbiB0byBlbnVtIGNsYXNzLgorICAgICAgICAtIFJlbW92ZSBEcmFnU291
cmNlQWN0aW9uTm9uZSBieSB1c2luZyBPcHRpb25hbDw+IGFuZAorICAgICAgICAgIE9wdGlvblNl
dDw+IChhcyBkaWN0YXRlZCBieSBob3cgdGhlIGNvZGUgdXNlZCB0aGUgdmFsdWUpLgorICAgICAg
ICAtIFJlbW92ZSBEcmFnU291cmNlQWN0aW9uQW55IGFuZCByZXBsYWNlIChhcyBuZWVkZWQpIHdp
dGgKKyAgICAgICAgICBhbnlEcmFnU291cmNlQWN0aW9uKCkuIChTb21lLS1idXQgbm90IGFsbC0t
dXNlcyB3ZXJlIHJlbW92ZWQuKQorICAgICAgICAtIEFkZCBib3RoIFdURjo6RW51bVRyYWl0czw+
IGFuZCBXVEY6Ok9wdGlvblNldFRyYWl0czw+IGZvcgorICAgICAgICAgIERyYWdTb3VyY2VBY3Rp
b24gc2luY2UgYm90aCBPcHRpb25hbDw+IGFuZCBPcHRpb25TZXQ8PiBhcmUKKyAgICAgICAgICB1
c2VkIHdpdGggSVBDLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6CisgICAg
ICAgICogcGFnZS9EcmFnQWN0aW9ucy5oOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbik6CisgICAgICAgIC0gQ29udmVydCB0byBlbnVtIGNsYXNzLgorICAgICAgICAoV2ViQ29y
ZTo6YW55RHJhZ1NvdXJjZUFjdGlvbik6IEFkZC4KKyAgICAgICAgLSBSZXBsYWNlcyBXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uQW55LgorICAgICAgICAoV1RGOjpFbnVtVHJhaXRzPFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24+KTogQWRkLgorICAgICAgICAoV1RGOjpPcHRpb25TZXRUcmFpdHM8
V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4pOiBBZGQuCisgICAgICAgICogcGFnZS9EcmFnQ2xp
ZW50Lmg6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwcmVwYXJlRm9yRHJhZ1N0YXJ0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRvU3lzdGVtRHJhZyk6CisgICAgICAgIC0gVXNlIE9w
dGlvblNldDw+Ojp0b1NpbmdsZVZhbHVlKCkgYW5kIGFkZCBBU1NFUlQoKSB0aGF0IGl0IGRvZXMK
KyAgICAgICAgICBub3QgcmV0dXJuIFdURjo6bnVsbG9wdC4KKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ1NvdXJj
ZUFjdGlvbiBjb25zdCk6CisgICAgICAgICogcGFnZS9EcmFnU3RhdGUuaDoKKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVw
ZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQgY29uc3QpOgorICAgICAgICAtIFVz
ZSBPcHRpb25TZXQ8Pjo6dG9TaW5nbGVWYWx1ZSgpIGFuZCBhZGQgQVNTRVJUKCkgdGhhdCBpdCBk
b2VzCisgICAgICAgICAgbm90IHJldHVybiBXVEY6Om51bGxvcHQuCisgICAgICAgIC0gUmVtb3Zl
IGNhc2Ugc3RhdGVtZW50cyBmb3IgRHJhZ1NvdXJjZUFjdGlvbk5vbmUgYW5kCisgICAgICAgICAg
RHJhZ1NvdXJjZUFjdGlvbkFueSwgYWxvbmcgd2l0aCBBU1NFUlRfTk9UX1JFQUNIRUQoKS4gVGhl
CisgICAgICAgICAgQVNTRVJUKCkgZm9yIHRvU2luZ2xlVmFsdWUoKSByZXBsYWNlcyB0aGUgRHJh
Z1NvdXJjZUFjdGlvbk5vbmUKKyAgICAgICAgICBjYXNlLgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpkaWRTdGFydERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RXhhY3RseU9uZUJp
dFNldCk6IERlbGV0ZS4KKyAgICAgICAgLSBNb3ZlIHRvIFdURjo6T3B0aW9uU2V0PD46Omhhc0V4
YWN0bHlPbmVCaXRTZXQoKS4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZyk6CisgICAgICAgIC0gQWRkIGNvZGUgdG8gI2lmbmRlZiBOREVCVUcvI2VuZGlmIGluc3Rl
YWQgb2YgbW9kaWZ5aW5nCisgICAgICAgICAgZHJhZ1N0YXRlKCkudHlwZSBpbi1wbGFjZSBzaW5j
ZSBpdCBzZWVtZWQgd2VpcmQgdG8gbW9kaWZ5IGl0CisgICAgICAgICAganVzdCB0byBjaGVjayBh
biBBU1NFUlQoKSwgZXZlbiB0aG91Z2ggaXQgd2FzIG92ZXJ3cml0dGVuCisgICAgICAgICAgaW1t
ZWRpYXRlbHkgYWZ0ZXIgdGhhdC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL0RyYWdJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnSXRlbTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdJdGVtOjpkZWNvZGUpOgorICAg
ICAgICAtIFN0b3AgdXNpbmcgZGVjb2RlRW51bSgpL2VuY29kZUVudW0oKSB3aXRoCisgICAgICAg
ICAgT3B0aW9uYWw8RHJhZ1NvdXJjZUFjdGlvbj4uCisKIDIwMjAtMDYtMTAgIEJyaWFuIEJ1cmcg
IDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyIG9uIG5vbi1pT1MgcG9ydHMg
Y2Fubm90IHBlcmZvcm0gQWN0aW9uQ2hhaW4gd2hpY2ggaGFzIHNjcm9sbGluZyBkb3duIHRvIHRo
ZSBlbGVtZW50IGFuZCBjbGljayBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAppbmRleCA3OWIwYjMxOTMxMC4uODdkMGI4NjM5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgY2xhc3MgRW1wdHlEaWFnbm9zdGlj
TG9nZ2luZ0NsaWVudCBmaW5hbCA6IHB1YmxpYyBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCB7CiBj
bGFzcyBFbXB0eURyYWdDbGllbnQgZmluYWwgOiBwdWJsaWMgRHJhZ0NsaWVudCB7CiAgICAgdm9p
ZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24s
IGNvbnN0IERyYWdEYXRhJikgZmluYWwgeyB9CiAgICAgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3Vy
Y2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXIm
KSBmaW5hbCB7IH0KLSAgICBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9y
UG9pbnQoY29uc3QgSW50UG9pbnQmKSBmaW5hbCB7IHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9u
ZTsgfQorICAgIE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBkcmFnU291cmNlQWN0aW9uTWFz
a0ZvclBvaW50KGNvbnN0IEludFBvaW50JikgZmluYWwgeyByZXR1cm4geyB9OyB9CiAgICAgdm9p
ZCBzdGFydERyYWcoRHJhZ0l0ZW0sIERhdGFUcmFuc2ZlciYsIEZyYW1lJikgZmluYWwgeyB9CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5kZXggZTc0NTYzNTIzMWEuLjFmMDE1NDY2
YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC00NCwyMSArNDQsMzUgQEAgY29u
c3RleHByIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGFueURyYWdEZXN0aW5hdGlv
bkFjdGlvbigpCiAgICAgcmV0dXJuIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsg
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpESFRNTCwgRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpFZGl0
LCBEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQgfTsKIH0KIAotLy8gV2ViQ29yZURyYWdTb3Vy
Y2VBY3Rpb24gc2hvdWxkIGJlIGtlcHQgaW4gc3luYyB3aXRoIFdlYkRyYWdTb3VyY2VBY3Rpb24u
Ci10eXBlZGVmIGVudW0gewotICAgIERyYWdTb3VyY2VBY3Rpb25Ob25lICAgICAgICAgPSAwLAot
ICAgIERyYWdTb3VyY2VBY3Rpb25ESFRNTCAgICAgICAgPSAxLAotICAgIERyYWdTb3VyY2VBY3Rp
b25JbWFnZSAgICAgICAgPSAyLAotICAgIERyYWdTb3VyY2VBY3Rpb25MaW5rICAgICAgICAgPSA0
LAotICAgIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gICAgPSA4LAorLy8gU2VlIFdlYkRyYWdT
b3VyY2VBY3Rpb24uCitlbnVtIGNsYXNzIERyYWdTb3VyY2VBY3Rpb24gOiB1aW50OF90IHsKKyAg
ICBESFRNTCAgICAgID0gMSwKKyAgICBJbWFnZSAgICAgID0gMiwKKyAgICBMaW5rICAgICAgID0g
NCwKKyAgICBTZWxlY3Rpb24gID0gOCwKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQot
ICAgIERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50ICAgPSAxNiwKKyAgICBBdHRhY2htZW50ID0g
MTYsCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBEcmFnU291cmNl
QWN0aW9uQ29sb3IgICAgICAgID0gMzIsCisgICAgQ29sb3IgICAgICA9IDMyLAogI2VuZGlmCi0g
ICAgRHJhZ1NvdXJjZUFjdGlvbkFueSAgICAgICAgICA9IFVJTlRfTUFYCi19IERyYWdTb3VyY2VB
Y3Rpb247Cit9OworCitjb25zdGV4cHIgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGFueURy
YWdTb3VyY2VBY3Rpb24oKQoreworICAgIHJldHVybiBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlv
bj4geworICAgICAgICBEcmFnU291cmNlQWN0aW9uOjpESFRNTCwKKyAgICAgICAgRHJhZ1NvdXJj
ZUFjdGlvbjo6SW1hZ2UsCisgICAgICAgIERyYWdTb3VyY2VBY3Rpb246OkxpbmssCisgICAgICAg
IERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbgorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCisgICAgICAgICwgRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudAorI2VuZGlmCisjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgICAgICwgRHJhZ1NvdXJjZUFjdGlvbjo6Q29s
b3IKKyNlbmRpZgorICAgIH07Cit9CiAKIC8vIFNlZSBOU0RyYWdPcGVyYXRpb24sIF9VSURyYWdP
cGVyYXRpb24gYW5kIFVJRHJvcE9wZXJhdGlvbi4KIGVudW0gY2xhc3MgRHJhZ09wZXJhdGlvbiA6
IHVpbnQ4X3QgewpAQCAtMTA4LDYgKzEyMiwyMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJh
aXRzPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwK
KyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsCisgICAgICAgIFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb246OkltYWdlLAorICAgICAgICBXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uOjpMaW5rLAorICAgICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rp
b24KKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICAsIFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0NPTE9SKQorICAgICAgICAsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkNvbG9yCisjZW5k
aWYKKyAgICA+OworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJhaXRzPFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgIHVzaW5nIHZhbHVlcyA9IE9wdGlvblNl
dFZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLApAQCAtMTI5
LDQgKzE1OSwyMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4gewogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25T
ZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4geworICAgIHVzaW5nIHZhbHVlcyA9
IE9wdGlvblNldFZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwsCisgICAgICAgIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb246OkltYWdlLAorICAgICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uOjpMaW5rLAorICAgICAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24K
KyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgICAgICAsIFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb246OkF0dGFjaG1lbnQKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorICAgICAgICAsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkNvbG9yCisjZW5kaWYK
KyAgICA+OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NsaWVudC5o
CmluZGV4IDdhYThlZTU4NjVkLi45OThiN2JmOTUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ2xpZW50
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIGNvbnN0IERyYWdE
YXRhJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24o
RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBEYXRhVHJhbnNmZXImKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSB7IH0KLSAgICB2aXJ0dWFsIERy
YWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2lu
dCYgcm9vdFZpZXdQb2ludCkgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uU2V0PERyYWdTb3VyY2VB
Y3Rpb24+IGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHJvb3RW
aWV3UG9pbnQpID0gMDsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKERyYWdJdGVt
LCBEYXRhVHJhbnNmZXImLCBGcmFtZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0VuZGVk
KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDJmMzAyMDhl
NTAxLi43YmNiY2FjOTMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTQ4Myw3ICs0ODMsNyBAQCBEcmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRy
eURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdAogICAgIHJldHVybiBE
cmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmU7CiB9CiAKLURyYWdTb3VyY2VBY3Rpb24gRHJhZ0NvbnRy
b2xsZXI6OmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9vdFZpZXdQ
b2ludCkKK09wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdh
dGVEcmFnU291cmNlQWN0aW9uKGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KQogewogICAg
IG1fZHJhZ1NvdXJjZUFjdGlvbiA9IGNsaWVudCgpLmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9p
bnQocm9vdFZpZXdQb2ludCk7CiAgICAgcmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsKQEAgLTc2
OSw3ICs3NjksNyBAQCBzdGF0aWMgUmVmUHRyPEhUTUxBdHRhY2htZW50RWxlbWVudD4gZW5jbG9z
aW5nQXR0YWNobWVudEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudAogCiBFbGVtZW50KiBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudChjb25zdCBGcmFtZSogc291cmNlRnJhbWUsIEVsZW1l
bnQqIHN0YXJ0RWxlbWVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIERyYWdTdGF0ZSYg
c3RhdGUpIGNvbnN0CiB7Ci0gICAgc3RhdGUudHlwZSA9IChzb3VyY2VGcmFtZS0+c2VsZWN0aW9u
KCkuY29udGFpbnMoZHJhZ09yaWdpbikpID8gRHJhZ1NvdXJjZUFjdGlvblNlbGVjdGlvbiA6IERy
YWdTb3VyY2VBY3Rpb25Ob25lOworICAgIHN0YXRlLmluY2x1ZGVzU2VsZWN0aW9uQWN0aW9uID0g
c291cmNlRnJhbWUtPnNlbGVjdGlvbigpLmNvbnRhaW5zKGRyYWdPcmlnaW4pOwogICAgIGlmICgh
c3RhcnRFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQpAQCAtNzgzLDcgKzc4Myw3IEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVy
OjpkcmFnZ2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3Rh
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIWlzQXR0YWNobWVudEVsZW1lbnRJbkN1cnJlbnRT
ZWxlY3Rpb24gfHwgaXNTaW5nbGVBdHRhY2htZW50U2VsZWN0aW9uKSB7Ci0gICAgICAgICAgICBz
dGF0ZS50eXBlID0gRHJhZ1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQ7CisgICAgICAgICAgICBzdGF0
ZS5hY3Rpb24gPSBEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50OwogICAgICAgICAgICAgcmV0
dXJuIGF0dGFjaG1lbnQuZ2V0KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03OTUsMzIgKzc5NSwz
MiBAQCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudChjb25zdCBGcmFt
ZSogc291cmNlRnJhbWUsIEVsZW1lbnQqIHN0YQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgVXNlckRyYWcgZHJhZ01vZGUgPSByZW5kZXJlci0+c3R5bGUoKS51c2VyRHJhZygpOwot
ICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCkg
JiYgZHJhZ01vZGUgPT0gVXNlckRyYWc6OkVsZW1lbnQpIHsKLSAgICAgICAgICAgIHN0YXRlLnR5
cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJj
ZUFjdGlvbkRIVE1MKTsKKyAgICAgICAgaWYgKG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhE
cmFnU291cmNlQWN0aW9uOjpESFRNTCkgJiYgZHJhZ01vZGUgPT0gVXNlckRyYWc6OkVsZW1lbnQp
IHsKKyAgICAgICAgICAgIHN0YXRlLmFjdGlvbiA9IERyYWdTb3VyY2VBY3Rpb246OkRIVE1MOwog
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRyYWdN
b2RlID09IFVzZXJEcmFnOjpBdXRvKSB7Ci0gICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFj
dGlvbiAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkKKyAgICAgICAgICAgIGlmICgobV9kcmFnU291
cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkltYWdlKSkKICAgICAgICAgICAg
ICAgICAmJiBpczxIVE1MSW1hZ2VFbGVtZW50PigqZWxlbWVudCkKICAgICAgICAgICAgICAgICAm
JiBpbWFnZUVsZW1lbnRJc0RyYWdnYWJsZShkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PigqZWxl
bWVudCksICpzb3VyY2VGcmFtZSkpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZS50eXBlID0gc3Rh
dGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25J
bWFnZSk7CisgICAgICAgICAgICAgICAgc3RhdGUuYWN0aW9uID0gRHJhZ1NvdXJjZUFjdGlvbjo6
SW1hZ2U7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5r
KSAmJiBpc0RyYWdnYWJsZUxpbmsoKmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUu
dHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291
cmNlQWN0aW9uTGluayk7CisgICAgICAgICAgICBpZiAobV9kcmFnU291cmNlQWN0aW9uLmNvbnRh
aW5zKERyYWdTb3VyY2VBY3Rpb246OkxpbmspICYmIGlzRHJhZ2dhYmxlTGluaygqZWxlbWVudCkp
IHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5hY3Rpb24gPSBEcmFnU291cmNlQWN0aW9uOjpMaW5r
OwogICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAgICAgICAgICAgfQogI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFj
dGlvbiAmIERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50KQorICAgICAgICAgICAgaWYgKG1fZHJh
Z1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpBdHRhY2htZW50KQogICAg
ICAgICAgICAgICAgICYmIGlzPEhUTUxBdHRhY2htZW50RWxlbWVudD4oKmVsZW1lbnQpCiAgICAg
ICAgICAgICAgICAgJiYgZG93bmNhc3Q8SFRNTEF0dGFjaG1lbnRFbGVtZW50PigqZWxlbWVudCku
ZmlsZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdT
b3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uQXR0YWNobWVudCk7Cisg
ICAgICAgICAgICAgICAgc3RhdGUuYWN0aW9uID0gRHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVu
dDsKICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAgIH0KICNlbmRp
ZgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgICAgICAgICAgaWYgKChtX2RyYWdT
b3VyY2VBY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uQ29sb3IpICYmIGlzRW5hYmxlZENvbG9ySW5w
dXQoKmVsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0
PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uQ29sb3IpOwor
ICAgICAgICAgICAgaWYgKG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0
aW9uOjpDb2xvcikgJiYgaXNFbmFibGVkQ29sb3JJbnB1dCgqZWxlbWVudCkpIHsKKyAgICAgICAg
ICAgICAgICBzdGF0ZS5hY3Rpb24gPSBEcmFnU291cmNlQWN0aW9uOjpDb2xvcjsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtODI4LDcg
KzgyOCw3IEBAIEVsZW1lbnQqIERyYWdDb250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KGNvbnN0
IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVudCogc3RhCiAgICAgfQogCiAgICAgLy8gV2UgZWl0
aGVyIGhhdmUgbm90aGluZyB0byBkcmFnIG9yIHdlIGhhdmUgYSBzZWxlY3Rpb24gYW5kIHdlJ3Jl
IG5vdCBvdmVyIGEgZHJhZ2dhYmxlIGVsZW1lbnQuCi0gICAgaWYgKHN0YXRlLnR5cGUgJiBEcmFn
U291cmNlQWN0aW9uU2VsZWN0aW9uICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VB
Y3Rpb25TZWxlY3Rpb24pCisgICAgaWYgKHN0YXRlLmluY2x1ZGVzU2VsZWN0aW9uQWN0aW9uICYm
IG1fZHJhZ1NvdXJjZUFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24p
KQogICAgICAgICByZXR1cm4gc3RhcnRFbGVtZW50OwogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC05MDEsNyArOTAxLDcgQEAgc3RhdGljIEludFBvaW50IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFn
KEZyYW1lJiBzcmMpCiAgICAgcmV0dXJuIEludFBvaW50KHhwb3MsIHlwb3MpOwogfQogCi12b2lk
IERyYWdDb250cm9sbGVyOjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIERyYWdT
b3VyY2VBY3Rpb24gYWN0aW9uLCBFbGVtZW50JiBlbGVtZW50LCBEYXRhVHJhbnNmZXImIGRhdGFU
cmFuc2ZlciwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4pIGNvbnN0Cit2b2lkIERyYWdDb250
cm9sbGVyOjpwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2UsIE9wdGlvblNldDxEcmFn
U291cmNlQWN0aW9uPiBhY3Rpb25NYXNrLCBFbGVtZW50JiBlbGVtZW50LCBEYXRhVHJhbnNmZXIm
IGRhdGFUcmFuc2ZlciwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4pIGNvbnN0CiB7CiAjaWYg
IVBMQVRGT1JNKFdJTikKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rvcihzb3VyY2UpOwpAQCAtOTEx
LDcgKzkxMSw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnByZXBhcmVGb3JEcmFnU3RhcnQoRnJh
bWUmIHNvdXJjZSwgRHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24sCiAKICAgICBhdXRvJiBwYXN0ZWJv
YXJkID0gZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKTsKICAgICBhdXRvJiBlZGl0b3IgPSBzb3Vy
Y2UuZWRpdG9yKCk7Ci0gICAgaWYgKGFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9u
KSB7CisgICAgaWYgKGFjdGlvbk1hc2sgPT0gRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKSB7
CiAgICAgICAgIGlmIChlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woc291cmNlLnNlbGVjdGlvbigp
LnNlbGVjdGlvbigpLnN0YXJ0KCkpKQogICAgICAgICAgICAgcGFzdGVib2FyZC53cml0ZVBsYWlu
VGV4dChlZGl0b3Iuc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyKCksIFBhc3RlYm9hcmQ6OkNh
bm5vdFNtYXJ0UmVwbGFjZSk7CiAgICAgICAgIGVsc2UKQEAgLTkyMSwxOCArOTIxLDE4IEBAIHZv
aWQgRHJhZ0NvbnRyb2xsZXI6OnByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZSwgRHJh
Z1NvdXJjZUFjdGlvbiBhY3Rpb24sCiAKICAgICBhdXRvKiBpbWFnZSA9IGdldEltYWdlKGVsZW1l
bnQpOwogICAgIGF1dG8gaW1hZ2VVUkwgPSBoaXRUZXN0UmVzdWx0LT5hYnNvbHV0ZUltYWdlVVJM
KCk7Ci0gICAgaWYgKChhY3Rpb24gJiBEcmFnU291cmNlQWN0aW9uSW1hZ2UpICYmICFpbWFnZVVS
TC5pc0VtcHR5KCkgJiYgaW1hZ2UgJiYgIWltYWdlLT5pc051bGwoKSkgeworICAgIGlmIChhY3Rp
b25NYXNrLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkltYWdlKSAmJiAhaW1hZ2VVUkwuaXNF
bXB0eSgpICYmIGltYWdlICYmICFpbWFnZS0+aXNOdWxsKCkpIHsKICAgICAgICAgZWRpdG9yLndy
aXRlSW1hZ2VUb1Bhc3RlYm9hcmQocGFzdGVib2FyZCwgZWxlbWVudCwgaW1hZ2VVUkwsIHsgfSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGxpbmtVUkwgPSBoaXRUZXN0UmVz
dWx0LT5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBpZiAoKGFjdGlvbiAmIERyYWdTb3VyY2VBY3Rp
b25MaW5rKSAmJiAhbGlua1VSTC5pc0VtcHR5KCkgJiYgc291cmNlLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkuY2FuRGlzcGxheShsaW5rVVJMKSkKKyAgICBpZiAoYWN0aW9uTWFzay5jb250
YWlucyhEcmFnU291cmNlQWN0aW9uOjpMaW5rKSAmJiAhbGlua1VSTC5pc0VtcHR5KCkgJiYgc291
cmNlLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheShsaW5rVVJMKSkKICAg
ICAgICAgZWRpdG9yLmNvcHlVUkwobGlua1VSTCwgaGl0VGVzdFJlc3VsdC0+dGV4dENvbnRlbnQo
KS5zaW1wbGlmeVdoaXRlU3BhY2UoKSwgcGFzdGVib2FyZCk7CiAjZWxzZQogICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgd29yayBvbiBXaW5kb3dzIGJ5IGltcGxlbWVudGluZyBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkIGFuZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQu
CiAgICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGFjdGlvbik7Cisg
ICAgVU5VU0VEX1BBUkFNKGFjdGlvbk1hc2spOwogICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsK
ICAgICBVTlVTRURfUEFSQU0oZGF0YVRyYW5zZmVyKTsKICAgICBVTlVTRURfUEFSQU0oZHJhZ09y
aWdpbik7CkBAIC05ODMsNyArOTgzLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFn
KEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKICAgICBB
U1NFUlQoc3RhdGUuZGF0YVRyYW5zZmVyKTsKIAogICAgIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5z
ZmVyID0gKnN0YXRlLmRhdGFUcmFuc2ZlcjsKLSAgICBpZiAoc3RhdGUudHlwZSA9PSBEcmFnU291
cmNlQWN0aW9uREhUTUwpIHsKKyAgICBpZiAoc3RhdGUuYWN0aW9uICYmICpzdGF0ZS5hY3Rpb24g
PT0gRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwpIHsKICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0lt
YWdlIHsgZGF0YVRyYW5zZmVyLmNyZWF0ZURyYWdJbWFnZShkcmFnSW1hZ2VPZmZzZXQpIH07CiAg
ICAgICAgIC8vIFdlIGFsbG93IERIVE1ML0pTIHRvIHNldCB0aGUgZHJhZyBpbWFnZSwgZXZlbiBp
ZiBpdHMgYSBsaW5rLCBpbWFnZSBvciB0ZXh0IHdlJ3JlIGRyYWdnaW5nLgogICAgICAgICAvLyBU
aGlzIGlzIGluIHRoZSBzcGlyaXQgb2YgdGhlIElFIEFQSSwgd2hpY2ggYWxsb3dzIG92ZXJyaWRp
bmcgb2YgcGFzdGVib2FyZCBkYXRhIGFuZCBEcmFnT3AuCkBAIC05OTMsNyArOTkzLDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYg
c3RhdGUsIE9wdGlvblNldDxEcmEKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChzdGF0ZS50
eXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24gfHwgIWltYWdlVVJMLmlzRW1wdHkoKSB8
fCAhbGlua1VSTC5pc0VtcHR5KCkpIHsKKyAgICBpZiAoc3RhdGUuaW5jbHVkZXNTZWxlY3Rpb25B
Y3Rpb24gfHwgIWltYWdlVVJMLmlzRW1wdHkoKSB8fCAhbGlua1VSTC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy8gU2VsZWN0aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJhZ3MgcmVjZWl2ZSBhIGRlZmF1
bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQKICAgICAgICAgLy8gZm9sbG93
cyBmcm9tOgogICAgICAgICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNMMzQzMApAQCAtMTAw
Nyw3ICsxMDA3LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKIAogICAgIEludFJlY3QgZHJh
Z0ltYWdlQm91bmRzOwogICAgIEltYWdlKiBpbWFnZSA9IGdldEltYWdlKGVsZW1lbnQpOwotICAg
IGlmIChzdGF0ZS50eXBlID09IERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pIHsKKyAgICBpZiAo
c3RhdGUuaW5jbHVkZXNTZWxlY3Rpb25BY3Rpb24pIHsKICAgICAgICAgUGFzdGVib2FyZFdyaXRl
ckRhdGEgcGFzdGVib2FyZFdyaXRlckRhdGE7CiAKICAgICAgICAgaWYgKGhhc0RhdGEgPT0gSGFz
Tm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhOjpObykgewpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYg
c3RhdGUsIE9wdGlvblNldDxEcmEKIAogICAgICAgICAgICAgc3JjLmVkaXRvcigpLmRpZFdyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2xpZW50KCkud2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24sIGRyYWdP
cmlnaW4sIGRhdGFUcmFuc2Zlcik7CisgICAgICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1Nv
dXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rpb24sIGRyYWdPcmlnaW4sIGRhdGFU
cmFuc2Zlcik7CiAgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7CiAgICAgICAgICAgICBUZXh0SW5k
aWNhdG9yRGF0YSB0ZXh0SW5kaWNhdG9yOwogICAgICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0lt
YWdlIHsgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKGNyZWF0ZURyYWdJbWFnZUZvclNlbGVj
dGlvbihzcmMsIHRleHRJbmRpY2F0b3IpLCBEcmFnSW1hZ2VBbHBoYSkgfTsKQEAgLTEwNzIsNyAr
MTA3Miw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIGRyYWdJdGVtLmltYWdl
ID0gV1RGTW92ZShkcmFnSW1hZ2UpOwogICAgICAgICBkcmFnSXRlbS5kYXRhID0gV1RGTW92ZShw
YXN0ZWJvYXJkV3JpdGVyRGF0YSk7CiAKLSAgICAgICAgYmVnaW5EcmFnKFdURk1vdmUoZHJhZ0l0
ZW0pLCBzcmMsIGRyYWdPcmlnaW4sIG1vdXNlRHJhZ2dlZFBvaW50LCBkYXRhVHJhbnNmZXIsIERy
YWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pOworICAgICAgICBiZWdpbkRyYWcoV1RGTW92ZShkcmFn
SXRlbSksIHNyYywgZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFUcmFuc2Zlciwg
RHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC0xMDgyLDcgKzEwODIsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWco
RnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFpbWFnZVVSTC5pc0VtcHR5KCkgJiYg
aW1hZ2UgJiYgIWltYWdlLT5pc051bGwoKSAmJiAobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1Nv
dXJjZUFjdGlvbkltYWdlKSkgeworICAgIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpICYmIGltYWdl
ICYmICFpbWFnZS0+aXNOdWxsKCkgJiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdT
b3VyY2VBY3Rpb246OkltYWdlKSkgewogICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgc3RhcnRp
bmcgYSBkcmFnIGZvciBhbiBpbWFnZSB0aGF0IGNhbid0IHByb3ZpZGUgYW4gZXh0ZW5zaW9uLgog
ICAgICAgICAvLyBUaGlzIGlzIGFuIGVhcmx5IGRldGVjdGlvbiBmb3IgcHJvYmxlbXMgZW5jb3Vu
dGVyZWQgbGF0ZXIgdXBvbiBkcm9wLgogICAgICAgICBBU1NFUlQoIWltYWdlLT5maWxlbmFtZUV4
dGVuc2lvbigpLmlzRW1wdHkoKSk7CkBAIC0xMTAxLDcgKzExMDEsNyBAQCBib29sIERyYWdDb250
cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0
aW9uU2V0PERyYQogICAgICAgICAgICAgICAgIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShkYXRh
VHJhbnNmZXIsIGVsZW1lbnQsICFsaW5rVVJMLmlzRW1wdHkoKSA/IGxpbmtVUkwgOiBpbWFnZVVS
TCwgaGl0VGVzdFJlc3VsdC0+YWx0RGlzcGxheVN0cmluZygpKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9u
SW1hZ2UsIGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CisgICAgICAgIGNsaWVudCgpLndpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uOjpJbWFnZSwgZHJhZ09yaWdp
biwgZGF0YVRyYW5zZmVyKTsKIAogICAgICAgICBpZiAoIWRyYWdJbWFnZSkKICAgICAgICAgICAg
IGRvSW1hZ2VEcmFnKGVsZW1lbnQsIGRyYWdPcmlnaW4sIGhpdFRlc3RSZXN1bHQtPmltYWdlUmVj
dCgpLCBzcmMsIG1fZHJhZ09mZnNldCwgc3RhdGUsIFdURk1vdmUoYXR0YWNobWVudEluZm8pKTsK
QEAgLTExMTMsNyArMTExMyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFt
ZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmICghbGlua1VSTC5pc0VtcHR5KCkgJiYgKG1fZHJh
Z1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5rKSkgeworICAgIGlmICghbGlua1VS
TC5pc0VtcHR5KCkgJiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rp
b246OkxpbmspKSB7CiAgICAgICAgIFBhc3RlYm9hcmRXcml0ZXJEYXRhIHBhc3RlYm9hcmRXcml0
ZXJEYXRhOwogCiAgICAgICAgIFN0cmluZyB0ZXh0Q29udGVudFdpdGhTaW1wbGlmaWVkV2hpdGVT
cGFjZSA9IGhpdFRlc3RSZXN1bHQtPnRleHRDb250ZW50KCkuc2ltcGxpZnlXaGl0ZVNwYWNlKCk7
CkBAIC0xMTQ1LDcgKzExNDUsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJh
bWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYQogICAgICAgICAg
ICAgICAgIHNyYy5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbjo6c2Vs
ZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKG5vZGUpKTsKICAgICAgICAgfQogCi0gICAgICAgIGNs
aWVudCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uTGluaywg
ZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OkxpbmssIGRyYWdPcmlnaW4sIGRhdGFU
cmFuc2Zlcik7CiAgICAgICAgIGlmICghZHJhZ0ltYWdlKSB7CiAgICAgICAgICAgICBUZXh0SW5k
aWNhdG9yRGF0YSB0ZXh0SW5kaWNhdG9yOwogICAgICAgICAgICAgZHJhZ0ltYWdlID0gRHJhZ0lt
YWdlIHsgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhlbGVtZW50LCBsaW5rVVJMLCB0ZXh0Q29udGVu
dFdpdGhTaW1wbGlmaWVkV2hpdGVTcGFjZSwgdGV4dEluZGljYXRvciwgc3JjLnNldHRpbmdzKCku
Zm9udFJlbmRlcmluZ01vZGUoKSwgbV9wYWdlLmRldmljZVNjYWxlRmFjdG9yKCkpIH07CkBAIC0x
MTY4LDEzICsxMTY4LDEzIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYg
c3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAgICAgICAgIGRyYWdJ
dGVtLmltYWdlID0gV1RGTW92ZShkcmFnSW1hZ2UpOwogICAgICAgICBkcmFnSXRlbS5kYXRhID0g
V1RGTW92ZShwYXN0ZWJvYXJkV3JpdGVyRGF0YSk7CiAKLSAgICAgICAgYmVnaW5EcmFnKFdURk1v
dmUoZHJhZ0l0ZW0pLCBzcmMsIGRyYWdPcmlnaW4sIG1vdXNlRHJhZ2dlZFBvaW50LCBkYXRhVHJh
bnNmZXIsIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pOworICAgICAgICBiZWdpbkRyYWcoV1RG
TW92ZShkcmFnSXRlbSksIHNyYywgZHJhZ09yaWdpbiwgbW91c2VEcmFnZ2VkUG9pbnQsIGRhdGFU
cmFuc2ZlciwgRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIGlmIChp
czxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KGVsZW1lbnQpICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAm
IERyYWdTb3VyY2VBY3Rpb25BdHRhY2htZW50KSB7CisgICAgaWYgKGlzPEhUTUxBdHRhY2htZW50
RWxlbWVudD4oZWxlbWVudCkgJiYgbV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3Vy
Y2VBY3Rpb246OkF0dGFjaG1lbnQpKSB7CiAgICAgICAgIGF1dG8mIGF0dGFjaG1lbnQgPSBkb3du
Y2FzdDxIVE1MQXR0YWNobWVudEVsZW1lbnQ+KGVsZW1lbnQpOwogICAgICAgICBhdXRvKiBhdHRh
Y2htZW50UmVuZGVyZXIgPSBhdHRhY2htZW50LnJlbmRlcmVyKCk7CiAKQEAgLTExOTYsNyArMTE5
Niw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBE
cmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhCiAjZW5kaWYKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3Vy
Y2VBY3Rpb25BdHRhY2htZW50LCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOworICAgICAgICBj
bGllbnQoKS53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbjo6QXR0
YWNobWVudCwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKICAgICAgICAgCiAgICAgICAgIGlm
ICghZHJhZ0ltYWdlKSB7CiAgICAgICAgICAgICBUZXh0SW5kaWNhdG9yRGF0YSB0ZXh0SW5kaWNh
dG9yOwpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFn
KEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmEKIAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGJvb2wgaXNDb2xvckNvbnRyb2wgPSBpczxI
VE1MSW5wdXRFbGVtZW50PihzdGF0ZS5zb3VyY2UpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCpzdGF0ZS5zb3VyY2UpLmlzQ29sb3JDb250cm9sKCk7Ci0gICAgaWYgKGlzQ29sb3JDb250
cm9sICYmIG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikgeworICAg
IGlmIChpc0NvbG9yQ29udHJvbCAmJiBtX2RyYWdTb3VyY2VBY3Rpb24uY29udGFpbnMoRHJhZ1Nv
dXJjZUFjdGlvbjo6Q29sb3IpKSB7CiAgICAgICAgIGF1dG8mIGlucHV0ID0gZG93bmNhc3Q8SFRN
TElucHV0RWxlbWVudD4oKnN0YXRlLnNvdXJjZSk7CiAgICAgICAgIGF1dG8gY29sb3IgPSBpbnB1
dC52YWx1ZUFzQ29sb3IoKTsKIApAQCAtMTIzMSwxNSArMTIzMSwxNSBAQCBib29sIERyYWdDb250
cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0
aW9uU2V0PERyYQogICAgICAgICBkcmFnSW1hZ2VPZmZzZXQgPSBJbnRQb2ludCB7IGRyYWdJbWFn
ZVNpemUoZHJhZ0ltYWdlLmdldCgpKSB9OwogICAgICAgICBkcmFnTG9jID0gZHJhZ0xvY0ZvckRI
VE1MRHJhZyhtb3VzZURyYWdnZWRQb2ludCwgZHJhZ09yaWdpbiwgZHJhZ0ltYWdlT2Zmc2V0LCBm
YWxzZSk7CiAKLSAgICAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERy
YWdTb3VyY2VBY3Rpb25Db2xvciwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKKyAgICAgICAg
Y2xpZW50KCkud2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb246OkNv
bG9yLCBkcmFnT3JpZ2luLCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkb1N5c3RlbURyYWcoV1RG
TW92ZShkcmFnSW1hZ2UpLCBkcmFnTG9jLCBkcmFnT3JpZ2luLCBzcmMsIHN0YXRlLCB7IH0pOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIAotICAgIGlmIChzdGF0ZS50eXBl
ID09IERyYWdTb3VyY2VBY3Rpb25ESFRNTCAmJiBkcmFnSW1hZ2UpIHsKLSAgICAgICAgQVNTRVJU
KG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7Ci0gICAgICAgIGNs
aWVudCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uREhUTUws
IGRyYWdPcmlnaW4sIGRhdGFUcmFuc2Zlcik7CisgICAgaWYgKHN0YXRlLmFjdGlvbiAmJiAqc3Rh
dGUuYWN0aW9uID09IERyYWdTb3VyY2VBY3Rpb246OkRIVE1MICYmIGRyYWdJbWFnZSkgeworICAg
ICAgICBBU1NFUlQobV9kcmFnU291cmNlQWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246
OkRIVE1MKSk7CisgICAgICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihE
cmFnU291cmNlQWN0aW9uOjpESFRNTCwgZHJhZ09yaWdpbiwgZGF0YVRyYW5zZmVyKTsKICAgICAg
ICAgZG9TeXN0ZW1EcmFnKFdURk1vdmUoZHJhZ0ltYWdlKSwgZHJhZ0xvYywgZHJhZ09yaWdpbiwg
c3JjLCBzdGF0ZSwgeyB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTMyOSw3
ICsxMzI5LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSBp
bWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2MsIGNvbnMKIAogICAgIERyYWdJdGVtIGl0ZW07
CiAgICAgaXRlbS5pbWFnZSA9IFdURk1vdmUoaW1hZ2UpOwotICAgIGl0ZW0uc291cmNlQWN0aW9u
ID0gc3RhdGUudHlwZTsKKyAgICBpdGVtLnNvdXJjZUFjdGlvbiA9IHN0YXRlLmFjdGlvbjsKICAg
ICBpdGVtLnByb21pc2VkQXR0YWNobWVudEluZm8gPSBXVEZNb3ZlKHByb21pc2VkQXR0YWNobWVu
dEluZm8pOwogCiAgICAgYXV0byBldmVudFBvc2l0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0g
ZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZXZlbnRQb3MpOwpAQCAtMTMzOSw3ICsx
MzM5LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZG9TeXN0ZW1EcmFnKERyYWdJbWFnZSBpbWFn
ZSwgY29uc3QgSW50UG9pbnQmIGRyYWdMb2MsIGNvbnMKICAgICBpdGVtLmRyYWdMb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMgPSB2aWV3UHJvdGVjdG9yLT5jb250ZW50c1RvV2luZG93KGl0ZW0u
ZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMpOwogICAgIGlmIChhdXRvIGVsZW1lbnQg
PSBzdGF0ZS5zb3VyY2UpIHsKICAgICAgICAgYXV0byBkYXRhVHJhbnNmZXJJbWFnZUVsZW1lbnQg
PSBzdGF0ZS5kYXRhVHJhbnNmZXItPmRyYWdJbWFnZUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKHN0
YXRlLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSB7CisgICAgICAgIGlmIChzdGF0ZS5h
Y3Rpb24gJiYgKnN0YXRlLmFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uOjpESFRNTCkgewogICAg
ICAgICAgICAgLy8gSWYgdGhlIGRyYWcgaW1hZ2UgaGFzIGJlZW4gY3VzdG9taXplZCwgZmFsbCBi
YWNrIHRvIHBvc2l0aW9uaW5nIHRoZSBwcmV2aWV3IHJlbGF0aXZlIHRvIHRoZSBkcmFnIGV2ZW50
IGxvY2F0aW9uLgogICAgICAgICAgICAgSW50U2l6ZSBkcmFnUHJldmlld1NpemU7CiAgICAgICAg
ICAgICBpZiAoZGF0YVRyYW5zZmVySW1hZ2VFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5oCmluZGV4IGVhNDk5ZTBlYmQ2Li45MjI0YWIyMDZjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaApAQCAtNzYsMTIgKzc2LDEyIEBAIHB1YmxpYzoKICAgICBjb25z
dCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nSW1hZ2VV
Ukw7IH0KICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29uc3QgSW50UG9pbnQmIG9mZnNldCkgeyBt
X2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICBjb25zdCBJbnRQb2ludCYgZHJhZ09mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fZHJhZ09mZnNldDsgfQotICAgIERyYWdTb3VyY2VBY3Rpb24gZHJh
Z1NvdXJjZUFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsgfQorICAg
IE9wdGlvblNldDxEcmFnU291cmNlQWN0aW9uPiBkcmFnU291cmNlQWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9kcmFnU291cmNlQWN0aW9uOyB9CiAgICAgRHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdI
YW5kbGluZ01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0hhbmRsaW5nTWV0aG9kOyB9CiAK
ICAgICBEb2N1bWVudCogZG9jdW1lbnRVbmRlck1vdXNlKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1
bWVudFVuZGVyTW91c2UuZ2V0KCk7IH0KICAgICBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrOyB9Ci0gICAgRHJhZ1NvdXJjZUFjdGlvbiBkZWxlZ2F0ZURyYWdT
b3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpOworICAgIE9wdGlvblNl
dDxEcmFnU291cmNlQWN0aW9uPiBkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9p
bnQmIHJvb3RWaWV3UG9pbnQpOwogCiAgICAgRWxlbWVudCogZHJhZ2dhYmxlRWxlbWVudChjb25z
dCBGcmFtZSosIEVsZW1lbnQqIHN0YXJ0LCBjb25zdCBJbnRQb2ludCYsIERyYWdTdGF0ZSYpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0VuZGVkKCk7CkBAIC05NCw3ICs5NCw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmFsaXplRHJvcHBlZEltYWdl
UGxhY2Vob2xkZXIoSFRNTEltYWdlRWxlbWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldChjb25zdCBWZWN0b3I8SW50U2l6
ZT4mIGltYWdlU2l6ZXMpOwogCi0gICAgdm9pZCBwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBz
b3VyY2VGcmFtZSwgRHJhZ1NvdXJjZUFjdGlvbiwgRWxlbWVudCYgc291cmNlRWxlbWVudCwgRGF0
YVRyYW5zZmVyJiwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4pIGNvbnN0OworICAgIHZvaWQg
cHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlRnJhbWUsIE9wdGlvblNldDxEcmFnU291
cmNlQWN0aW9uPiwgRWxlbWVudCYgc291cmNlRWxlbWVudCwgRGF0YVRyYW5zZmVyJiwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4pIGNvbnN0OwogICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBI
YXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgIHN0YXRpYyBjb25zdCBJbnRTaXplJiBt
YXhEcmFnSW1hZ2VTaXplKCk7CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIERy
YWdIYW5kbGluZ01ldGhvZCBtX2RyYWdIYW5kbGluZ01ldGhvZCB7IERyYWdIYW5kbGluZ01ldGhv
ZDo6Tm9uZSB9OwogCiAgICAgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gbV9kcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrOwotICAgIERyYWdTb3VyY2VBY3Rpb24gbV9kcmFnU291cmNl
QWN0aW9uIHsgRHJhZ1NvdXJjZUFjdGlvbk5vbmUgfTsKKyAgICBPcHRpb25TZXQ8RHJhZ1NvdXJj
ZUFjdGlvbj4gbV9kcmFnU291cmNlQWN0aW9uOwogICAgIGJvb2wgbV9kaWRJbml0aWF0ZURyYWcg
eyBmYWxzZSB9OwogICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBtX3NvdXJjZURyYWdPcGVy
YXRpb25NYXNrOyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEg
bW91c2UgZG93biB3aXRoaW4gV2ViS2l0LgogICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdTdGF0ZS5oCmluZGV4IDZkMTYyNTkwMGUzLi5kYWU4YmIzYWNhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdTdGF0ZS5oCkBAIC0zNCw4ICszNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RydWN0IERyYWdTdGF0ZSB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IHNvdXJjZTsgLy8gRWxl
bWVudCB0aGF0IG1heSBiZSBhIGRyYWcgc291cmNlLCBmb3IgdGhlIGN1cnJlbnQgbW91c2UgZ2Vz
dHVyZS4KLSAgICBib29sIHNob3VsZERpc3BhdGNoRXZlbnRzOwotICAgIERyYWdTb3VyY2VBY3Rp
b24gdHlwZTsKKyAgICBib29sIHNob3VsZERpc3BhdGNoRXZlbnRzIHsgZmFsc2UgfTsKKyAgICBi
b29sIGluY2x1ZGVzU2VsZWN0aW9uQWN0aW9uIHsgZmFsc2UgfTsKKyAgICBPcHRpb25hbDxEcmFn
U291cmNlQWN0aW9uPiBhY3Rpb247CiAgICAgUmVmUHRyPERhdGFUcmFuc2Zlcj4gZGF0YVRyYW5z
ZmVyOyAvLyBVc2VkIG9uIG9ubHkgdGhlIHNvdXJjZSBzaWRlIG9mIGRyYWdnaW5nLgogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDE0YmNjNWI4ZjJlLi4wYmQyZmI2
NzU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTE5MCwxNSArMTE5
MCwxNSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFuU2Nyb2xsSW5Qcm9ncmVzcygpIGNvbnN0CiB9
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotRHJhZ1NvdXJjZUFjdGlvbiBFdmVudEhhbmRs
ZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNvbnN0CitPcHRpb25TZXQ8RHJh
Z1NvdXJjZUFjdGlvbj4gRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93
ZWQoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKICAgICBpZiAo
IXBhZ2UpCi0gICAgICAgIHJldHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKIAogICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOwogICAgIGlm
ICghdmlldykKLSAgICAgICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Ob25lOworICAgICAgICBy
ZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZGVsZWdhdGVE
cmFnU291cmNlQWN0aW9uKHZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhtX21vdXNlRG93bkNvbnRl
bnRzUG9zaXRpb24pKTsKIH0KQEAgLTM2NDcsMzUgKzM2NDcsMzcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgSW50UG9pbnQmIGZsb2F0RHJhZ1ZpZXdw
b3J0TG9jYXQKIAogYm9vbCBFdmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29u
c3QgRmxvYXRQb2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24pIGNvbnN0CiB7CisgICAgQVNTRVJU
KGRyYWdTdGF0ZSgpLmluY2x1ZGVzU2VsZWN0aW9uQWN0aW9uIF4gISFkcmFnU3RhdGUoKS5hY3Rp
b24pOwogICAgIGludCB0aHJlc2hvbGQgPSBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7Ci0gICAgc3dp
dGNoIChkcmFnU3RhdGUoKS50eXBlKSB7Ci0gICAgY2FzZSBEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uOgorICAgIGlmIChkcmFnU3RhdGUoKS5pbmNsdWRlc1NlbGVjdGlvbkFjdGlvbikKICAgICAg
ICAgdGhyZXNob2xkID0gVGV4dERyYWdIeXN0ZXJlc2lzOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIERyYWdTb3VyY2VBY3Rpb25JbWFnZToKKyAgICBlbHNlIGlmIChkcmFnU3RhdGUoKS5hY3Rp
b24pIHsKKyAgICAgICAgc3dpdGNoICgqZHJhZ1N0YXRlKCkuYWN0aW9uKSB7CisgICAgICAgIGNh
c2UgRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uOgorICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEcmFnU291cmNlQWN0
aW9uOjpJbWFnZToKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQotICAgIGNhc2UgRHJh
Z1NvdXJjZUFjdGlvbkF0dGFjaG1lbnQ6CisgICAgICAgIGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6
QXR0YWNobWVudDoKICNlbmRpZgotICAgICAgICB0aHJlc2hvbGQgPSBJbWFnZURyYWdIeXN0ZXJl
c2lzOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25MaW5rOgotICAg
ICAgICB0aHJlc2hvbGQgPSBMaW5rRHJhZ0h5c3RlcmVzaXM7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgdGhyZXNob2xkID0gSW1hZ2VEcmFnSHlzdGVyZXNpczsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246Okxpbms6CisgICAgICAgICAgICB0
aHJlc2hvbGQgPSBMaW5rRHJhZ0h5c3RlcmVzaXM7CisgICAgICAgICAgICBicmVhazsKICNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb25Db2xvcjoK
LSAgICAgICAgdGhyZXNob2xkID0gQ29sb3JEcmFnSHlzdGVyc2lzOwotICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpDb2xvcjoKKyAgICAgICAgICAgIHRocmVz
aG9sZCA9IENvbG9yRHJhZ0h5c3RlcnNpczsKKyAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0g
ICAgY2FzZSBEcmFnU291cmNlQWN0aW9uREhUTUw6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
RHJhZ1NvdXJjZUFjdGlvbk5vbmU6Ci0gICAgY2FzZSBEcmFnU291cmNlQWN0aW9uQW55OgotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FzZSBEcmFnU291cmNlQWN0aW9u
OjpESFRNTDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQotICAgIAorCiAg
ICAgcmV0dXJuIG1vdXNlTW92ZW1lbnRFeGNlZWRzVGhyZXNob2xkKGRyYWdWaWV3cG9ydExvY2F0
aW9uLCB0aHJlc2hvbGQpOwogfQotICAgIAorCiB2b2lkIEV2ZW50SGFuZGxlcjo6aW52YWxpZGF0
ZURhdGFUcmFuc2ZlcigpCiB7CiAgICAgaWYgKCFkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXIpCkBA
IC0zNzE1LDcgKzM3MTcsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkU3RhcnREcmFnKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGRyYWdnZWRDb250ZW50
UmFuZ2U7Ci0gICAgaWYgKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291cmNlQWN0aW9uU2VsZWN0
aW9uKQorICAgIGlmIChkcmFnU3RhdGUoKS5pbmNsdWRlc1NlbGVjdGlvbkFjdGlvbikKICAgICAg
ICAgZHJhZ2dlZENvbnRlbnRSYW5nZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
dG9Ob3JtYWxpemVkUmFuZ2UoKTsKICAgICBlbHNlCiAgICAgICAgIGRyYWdnZWRDb250ZW50UmFu
Z2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKCpkcmFnU291cmNlKTsKQEAgLTM3NzAsMTYgKzM3
NzIsMTQgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVt
ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwKIAogYm9vbCBFdmVudEhhbmRsZXI6OmRp
c3BhdGNoRHJhZ1N0YXJ0RXZlbnRPblNvdXJjZUVsZW1lbnQoRGF0YVRyYW5zZmVyJiBkYXRhVHJh
bnNmZXIpCiB7CisgICAgT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGFjdGlvbk1hc2sgPSBk
cmFnU3RhdGUoKS5hY3Rpb247CisgICAgaWYgKGRyYWdTdGF0ZSgpLmluY2x1ZGVzU2VsZWN0aW9u
QWN0aW9uKQorICAgICAgICBhY3Rpb25NYXNrLmFkZChEcmFnU291cmNlQWN0aW9uOjpTZWxlY3Rp
b24pOwogICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCi0gICAgICAgIHBhZ2Ut
PmRyYWdDb250cm9sbGVyKCkucHJlcGFyZUZvckRyYWdTdGFydChtX2ZyYW1lLCBkcmFnU3RhdGUo
KS50eXBlLCAqZHJhZ1N0YXRlKCkuc291cmNlLCBkYXRhVHJhbnNmZXIsIG1fbW91c2VEb3duQ29u
dGVudHNQb3NpdGlvbik7CisgICAgICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkucHJlcGFyZUZv
ckRyYWdTdGFydChtX2ZyYW1lLCBhY3Rpb25NYXNrLCAqZHJhZ1N0YXRlKCkuc291cmNlLCBkYXRh
VHJhbnNmZXIsIG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbik7CiAgICAgcmV0dXJuICFkaXNw
YXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ3N0YXJ0RXZlbnQsICpkcmFnU3RhdGUoKS5z
b3VyY2UsIG1fbW91c2VEb3duRXZlbnQsIGRhdGFUcmFuc2ZlcikgJiYgIW1fZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkuaXNJblBhc3N3b3JkRmllbGQoKTsKIH0KIAotc3RhdGljIGJvb2wg
RXhhY3RseU9uZUJpdFNldChEcmFnU291cmNlQWN0aW9uIG4pCi17Ci0gICAgcmV0dXJuIG4gJiYg
IShuICYgKG4gLSAxKSk7Ci19Ci0KIFJlZlB0cjxFbGVtZW50PiBFdmVudEhhbmRsZXI6OmRyYWdn
ZWRFbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZHJhZ1N0YXRlKCkuc291cmNlOwpAQCAt
MzgwMyw3ICszODAzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAKICAgICAvLyBD
YXJlZnVsIHRoYXQgdGhlIGRyYWcgc3RhcnRpbmcgbG9naWMgc3RheXMgaW4gc3luYyB3aXRoIGV2
ZW50TWF5U3RhcnREcmFnKCkuCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYmICFk
cmFnU3RhdGUoKS5zb3VyY2UpIHsKLSAgICAgICAgZHJhZ1N0YXRlKCkuc2hvdWxkRGlzcGF0Y2hF
dmVudHMgPSAodXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgJiBEcmFnU291cmNlQWN0
aW9uREhUTUwpOworICAgICAgICBkcmFnU3RhdGUoKS5zaG91bGREaXNwYXRjaEV2ZW50cyA9IHVw
ZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgpLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246
OkRIVE1MKTsKIAogICAgICAgICAvLyBUcnkgdG8gZmluZCBhbiBlbGVtZW50IHRoYXQgd2FudHMg
dG8gYmUgZHJhZ2dlZC4KICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobV9tb3VzZURvd25D
b250ZW50c1Bvc2l0aW9uKTsKQEAgLTM4MTQsMTcgKzM4MTQsMTYgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQs
IENoZWNrRHIKICAgICAgICAgaWYgKCFkcmFnU3RhdGUoKS5zb3VyY2UpCiAgICAgICAgICAgICBt
X21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOyAvLyBubyBlbGVtZW50IGlzIGRyYWdnYWJs
ZQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2RyYWdNYXlTdGFydFNlbGVjdGlvbkluc3Rl
YWQgPSAoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pOworICAg
ICAgICAgICAgbV9kcmFnTWF5U3RhcnRTZWxlY3Rpb25JbnN0ZWFkID0gZHJhZ1N0YXRlKCkuaW5j
bHVkZXNTZWxlY3Rpb25BY3Rpb247CiAgICAgfQogICAgIAogICAgIC8vIEZvciBkcmFncyBzdGFy
dGluZyBpbiB0aGUgc2VsZWN0aW9uLCB0aGUgdXNlciBtdXN0IHdhaXQgYmV0d2VlbiB0aGUgbW91
c2Vkb3duIGFuZCBtb3VzZWRyYWcsCiAgICAgLy8gb3IgZWxzZSB3ZSBiYWlsIG9uIHRoZSBkcmFn
Z2luZyBzdHVmZiBhbmQgYWxsb3cgc2VsZWN0aW9uIHRvIG9jY3VyCi0gICAgaWYgKG1fbW91c2VE
b3duTWF5U3RhcnREcmFnICYmIG1fZHJhZ01heVN0YXJ0U2VsZWN0aW9uSW5zdGVhZCAmJiAoZHJh
Z1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pICYmIGV2ZW50LmV2ZW50
KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVsYXkpIHsK
KyAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgbV9kcmFnTWF5U3RhcnRTZWxlY3Rp
b25JbnN0ZWFkICYmIGRyYWdTdGF0ZSgpLmluY2x1ZGVzU2VsZWN0aW9uQWN0aW9uICYmIGV2ZW50
LmV2ZW50KCkudGltZXN0YW1wKCkgLSBtX21vdXNlRG93blRpbWVzdGFtcCA8IFRleHREcmFnRGVs
YXkpIHsKICAgICAgICAgQVNTRVJUKGV2ZW50LmV2ZW50KCkudHlwZSgpID09IFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQpOwotICAgICAgICBpZiAoKGRyYWdTdGF0ZSgpLnR5cGUgJiBEcmFnU291
cmNlQWN0aW9uSW1hZ2UpKSB7CisgICAgICAgIGlmIChkcmFnU3RhdGUoKS5hY3Rpb24gJiYgKmRy
YWdTdGF0ZSgpLmFjdGlvbiA9PSBEcmFnU291cmNlQWN0aW9uOjpJbWFnZSkgewogICAgICAgICAg
ICAgLy8gLi4uIHVubGVzcyB0aGUgbW91c2UgaXMgb3ZlciBhbiBpbWFnZSwgdGhlbiB3ZSBzdGFy
dCBkcmFnZ2luZyBqdXN0IHRoZSBpbWFnZQotICAgICAgICAgICAgZHJhZ1N0YXRlKCkudHlwZSA9
IERyYWdTb3VyY2VBY3Rpb25JbWFnZTsKLSAgICAgICAgfSBlbHNlIGlmICghKGRyYWdTdGF0ZSgp
LnR5cGUgJiAoRHJhZ1NvdXJjZUFjdGlvbkRIVE1MIHwgRHJhZ1NvdXJjZUFjdGlvbkxpbmspKSkg
eworICAgICAgICB9IGVsc2UgaWYgKCFkcmFnU3RhdGUoKS5hY3Rpb24gfHwgKCpkcmFnU3RhdGUo
KS5hY3Rpb24gIT0gRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwgJiYgKmRyYWdTdGF0ZSgpLmFjdGlv
biAhPSBEcmFnU291cmNlQWN0aW9uOjpMaW5rKSkgewogICAgICAgICAgICAgLy8gLi4uIGJ1dCBv
bmx5IGJhaWwgaWYgd2UncmUgbm90IG92ZXIgYW4gdW5zZWxlY3RhYmxlIGVsZW1lbnQuCiAgICAg
ICAgICAgICBtX21vdXNlRG93bk1heVN0YXJ0RHJhZyA9IGZhbHNlOwogICAgICAgICAgICAgZHJh
Z1N0YXRlKCkuc291cmNlID0gbnVsbHB0cjsKQEAgLTM4NDUsMTEgKzM4NDQsMTAgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgcmV0dXJuICFtb3VzZURvd25NYXlTdGFydFNlbGVj
dCgpICYmICFtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbDsKICAgICBBU1NFUlQoZHJhZ1N0
YXRlKCkuc291cmNlKTsKIAotICAgIGlmICghRXhhY3RseU9uZUJpdFNldChkcmFnU3RhdGUoKS50
eXBlKSkgewotICAgICAgICBBU1NFUlQoZHJhZ1N0YXRlKCkudHlwZSAmIERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb24pOwotICAgICAgICBBU1NFUlQoRXhhY3RseU9uZUJpdFNldChzdGF0aWNfY2Fz
dDxEcmFnU291cmNlQWN0aW9uPihkcmFnU3RhdGUoKS50eXBlICYgfkRyYWdTb3VyY2VBY3Rpb25T
ZWxlY3Rpb24pKSk7Ci0KLSAgICAgICAgZHJhZ1N0YXRlKCkudHlwZSA9IERyYWdTb3VyY2VBY3Rp
b25TZWxlY3Rpb247CisgICAgaWYgKGRyYWdTdGF0ZSgpLmFjdGlvbikgeworICAgICAgICBBU1NF
UlQoZHJhZ1N0YXRlKCkuaW5jbHVkZXNTZWxlY3Rpb25BY3Rpb24pOworICAgICAgICBkcmFnU3Rh
dGUoKS5hY3Rpb24gPSBXVEY6Om51bGxvcHQ7CisgICAgICAgIGRyYWdTdGF0ZSgpLmluY2x1ZGVz
U2VsZWN0aW9uQWN0aW9uID0gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBXZSBhcmUgc3RhcnRpbmcg
YSB0ZXh0L2ltYWdlL3VybCBkcmFnLCBzbyB0aGUgY3Vyc29yIHNob3VsZCBiZSBhbiBhcnJvdwpA
QCAtMzg4MSw3ICszODc5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgICAg
IGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA9IEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0
YTo6WWVzOwogICAgICAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPm1vdmVEcmFnU3RhdGUo
V1RGTW92ZShkcmFnU3RhcnREYXRhVHJhbnNmZXIpKTsKIAotICAgICAgICBpZiAoZHJhZ1N0YXRl
KCkuc291cmNlICYmIGRyYWdTdGF0ZSgpLnR5cGUgPT0gRHJhZ1NvdXJjZUFjdGlvbkRIVE1MICYm
ICFkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPmhhc0RyYWdJbWFnZSgpKSB7CisgICAgICAgIGlm
IChkcmFnU3RhdGUoKS5zb3VyY2UgJiYgZHJhZ1N0YXRlKCkuYWN0aW9uICYmICpkcmFnU3RhdGUo
KS5hY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUwgJiYgIWRyYWdTdGF0ZSgpLmRhdGFU
cmFuc2Zlci0+aGFzRHJhZ0ltYWdlKCkpIHsKICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLnNvdXJj
ZS0+ZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgICAgICBpZiAoYXV0
byogcmVuZGVyZXIgPSBkcmFnU3RhdGUoKS5zb3VyY2UtPnJlbmRlcmVyKCkpIHsKICAgICAgICAg
ICAgICAgICBhdXRvIGFic29sdXRlUG9zaXRpb24gPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCAyN2NhZTYxZWQxMS4uZjdhMTZj
MWUwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNDY1LDcgKzQ2NSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIoRm9jdXNEaXJlY3Rp
b24sIEtleWJvYXJkRXZlbnQmKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRHJh
Z1NvdXJjZUFjdGlvbiB1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdDsKKyAg
ICBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4gdXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxv
d2VkKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c1NlbGVjdGlvblVwZGF0ZXNPbk1vdXNlRHJh
ZygpIGNvbnN0OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdJdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCmluZGV4IGU1
ODU5YzQyY2Y5Li4xZDFmMmE3ODk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSXRlbS5oCkBA
IC00MSw3ICs0MSw3IEBAIHN0cnVjdCBEcmFnSXRlbSBmaW5hbCB7CiAgICAgLy8gV2hlcmUgdGhl
IGltYWdlIHNob3VsZCBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIHRoZSBjdXJzb3IuCiAgICAg
RmxvYXRQb2ludCBpbWFnZUFuY2hvclBvaW50OwogCi0gICAgRHJhZ1NvdXJjZUFjdGlvbiBzb3Vy
Y2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPERyYWdTb3Vy
Y2VBY3Rpb24+IHNvdXJjZUFjdGlvbjsKICAgICBJbnRQb2ludCBldmVudFBvc2l0aW9uSW5Db250
ZW50Q29vcmRpbmF0ZXM7CiAgICAgSW50UG9pbnQgZHJhZ0xvY2F0aW9uSW5Db250ZW50Q29vcmRp
bmF0ZXM7CiAgICAgSW50UG9pbnQgZHJhZ0xvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlczsKQEAg
LTYxLDcgKzYxLDcgQEAgdm9pZCBEcmFnSXRlbTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7CiAgICAgLy8gRklYTUUoMTczODE1KTogV2Ugc2hvdWxkIGVuY29kZSBhbmQgZGVjb2Rl
IFBhc3RlYm9hcmRXcml0ZXJEYXRhIGFuZCBwbGF0Zm9ybSBkcmFnIGltYWdlIGRhdGEKICAgICAv
LyBoZXJlIHRvbywgYXMgcGFydCBvZiBtb3Zpbmcgb2ZmIG9mIHRoZSBsZWdhY3kgZHJhZ2dpbmcg
Y29kZXBhdGguCi0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKHNvdXJjZUFjdGlvbik7CisgICAgZW5j
b2RlciA8PCBzb3VyY2VBY3Rpb247CiAgICAgZW5jb2RlciA8PCBpbWFnZUFuY2hvclBvaW50IDw8
IGV2ZW50UG9zaXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyA8PCBkcmFnTG9jYXRpb25JbkNvbnRl
bnRDb29yZGluYXRlcyA8PCBkcmFnTG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzIDw8IHRpdGxl
IDw8IHVybCA8PCBkcmFnUHJldmlld0ZyYW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogICAgIGJv
b2wgaGFzSW5kaWNhdG9yRGF0YSA9IGltYWdlLmhhc0luZGljYXRvckRhdGEoKTsKICAgICBlbmNv
ZGVyIDw8IGhhc0luZGljYXRvckRhdGE7CkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgRHJhZ0l0ZW06
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
IGJvb2wgRHJhZ0l0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFnSXRlbSYgcmVzdWx0
KQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5zb3VyY2VBY3Rpb24pKQor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNvdXJjZUFjdGlvbikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbWFnZUFuY2hvclBv
aW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyZjk1YjU3NTdhYS4uNmMw
ODgzOThhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjAtMDYtMDggIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBbSVBDXSBBZG9wdCBlbnVtIGNs
YXNzIGZvciBEcmFnU291cmNlQWN0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8y
MTI4ODU+CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDA5NDEzND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdW1tYXJ5OgorICAgICAgICAtIENv
bnZlcnQgYXJndW1lbnQgcGFyYW1ldGVycyBmcm9tIHVpbnQ2NF90IHRvCisgICAgICAgICAgT3B0
aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+LgorICAgICAgICAtIENvbnZlcnQgRHJhZ1NvdXJjZUFj
dGlvbiB0byBPcHRpb25TZXQ8RHJhZ1NvdXJjZUFjdGlvbj4uCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgLSBNYXAgRHJhZ1NvdXJjZUFjdGlvbiBlbnVt
IHRvIERyYWdBY3Rpb25zLmggaGVhZGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tOgor
ICAgICAgICAoV2ViS2l0OjpzaG91bGRVc2VEcmFnSW1hZ2VUb0NyZWF0ZVByZXZpZXdGb3JEcmFn
U291cmNlKToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkVXNlVmlzaWJsZVBhdGhUb0NyZWF0ZVBy
ZXZpZXdGb3JEcmFnU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkVXNlVGV4dEluZGlj
YXRvclRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpjYW5V
cGRhdGVQcmV2aWV3Rm9yQWN0aXZlRHJhZ1NvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZTo6YW55QWN0aXZlRHJhZ1NvdXJjZUlzIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpzdGFnZURyYWdJdGVtKToKKyAg
ICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpoYXNTdGFnZWREcmFnU291
cmNlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjp1
cGRhdGVQcmV2aWV3c0ZvckFjdGl2ZURyYWdTb3VyY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfc3RhcnREcmFnOml0ZW06XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2FsbG93ZWRE
cmFnU291cmNlQWN0aW9uc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFj
dGlvbjp3aWxsQW5pbWF0ZUxpZnRXaXRoQW5pbWF0b3I6c2Vzc2lvbjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0RHJhZ1N0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFs
bG93ZWREcmFnU291cmNlQWN0aW9ucyBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0RHJhZ1N0
YXJ0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0Zv
ckRyYWdTZXNzaW9uKToKKwogMjAyMC0wNi0xMCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjI4NTgpOiBGaXggbWFjT1MgYnVpbGQg
d2hlbiBidWlsZGluZyBFbmRvd21lbnRTdGF0ZVRyYWNrZXIubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDFiZmQyODI1OWY4Li42MmM1MDhlMzE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC01OTEsNiArNTkxLDcg
QEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkRvY3VtZW50
RWRpdGluZ0NvbnRleHRSZXF1ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIiddLAog
ICAgICAgICAnV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kJzogWyc8V2ViQ29yZS9EcmFnQWN0
aW9ucy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RHJhZ09wZXJhdGlvbic6IFsnPFdlYkNvcmUv
RHJhZ0FjdGlvbnMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24nOiBb
JzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJzogWyc8V2ViQ29yZS9GaWxlQ2hvb3Nlci5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCc6IFsnPFdlYkNv
cmUvU2hhcmVEYXRhLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDNjODRjMWNmOTM5Li5lMWRiMmNlYjAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTgzMyw4ICs4MzMsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKICAgICB2b2lkIGRpZEhhbmRsZURyYWdTdGFydFJlcXVlc3QoYm9vbCBzdGFydGVk
KTsKICAgICB2b2lkIGRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGJvb2wgYWRk
ZWQpOwotICAgIHZvaWQgcmVxdWVzdERyYWdTdGFydChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2VkQWN0aW9ucyk7Ci0gICAgdm9pZCByZXF1
ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gYWxsb3dlZEFjdGlvbnMpOworICAgIHZvaWQgcmVx
dWVzdERyYWdTdGFydChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzayk7CisgICAgdm9pZCByZXF1ZXN0
QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9w
dGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spOwog
ICAgIHZvaWQgaW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpJbnRTaXplPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkludFJlY3Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiBy
ZXBseSk7CiAgICAgdm9pZCB3aWxsUmVjZWl2ZUVkaXREcmFnU25hcHNob3QoKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVFZGl0RHJhZ1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OlRleHRJbmRpY2F0
b3JEYXRhPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLmgKaW5kZXggZDJlMGI5MDlmZWMuLmI3Zjg3YjQ0NzBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rp
b25TdGF0ZS5oCkBAIC00Niw3ICs0Niw3IEBAIHN0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YTsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgRHJhZ1NvdXJjZVN0YXRlIHsKLSAgICBXZWJDb3Jl
OjpEcmFnU291cmNlQWN0aW9uIGFjdGlvbiB7IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb25Ob25l
IH07CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFjdGlvbjsKICAg
ICBDR1BvaW50IGFkanVzdGVkT3JpZ2luIHsgQ0dQb2ludFplcm8gfTsKICAgICBDR1JlY3QgZHJh
Z1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcyB7IENHUmVjdFplcm8gfTsKICAgICBS
ZXRhaW5QdHI8VUlJbWFnZT4gaW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQppbmRleCBmZjRlNGZkMTRmMS4u
OTAyZGI4ZTRjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9EcmFn
RHJvcEludGVyYWN0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5tbQpAQCAtOTksMTEgKzk5LDExIEBAIHN0YXRpYyBi
b29sIHNob3VsZFVzZURyYWdJbWFnZVRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3Qg
RHJhZ1NvdXJjZVN0YXRlCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQotICAgIGlmIChzb3VyY2UuYWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNv
bG9yKQorICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246OkNv
bG9yKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAotICAgIHJldHVybiBzb3VyY2Uu
YWN0aW9uICYgKERyYWdTb3VyY2VBY3Rpb25ESFRNTCB8IERyYWdTb3VyY2VBY3Rpb25JbWFnZSk7
CisgICAgcmV0dXJuIHNvdXJjZS5hY3Rpb24uY29udGFpbnNBbnkoeyBEcmFnU291cmNlQWN0aW9u
OjpESFRNTCwgRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UgfSk7CiB9CiAKIHN0YXRpYyBib29sIHNo
b3VsZFVzZVZpc2libGVQYXRoVG9DcmVhdGVQcmV2aWV3Rm9yRHJhZ1NvdXJjZShjb25zdCBEcmFn
U291cmNlU3RhdGUmIHNvdXJjZSkKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgYm9vbCBzaG91
bGRVc2VWaXNpYmxlUGF0aFRvQ3JlYXRlUHJldmlld0ZvckRyYWdTb3VyY2UoY29uc3QgRHJhZ1Nv
dXJjZVN0YQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKLSAgICBpZiAoc291cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikKKyAg
ICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlucyhEcmFnU291cmNlQWN0aW9uOjpDb2xvcikpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKQEAgLTEyNCwxMSArMTI0LDExIEBAIHN0YXRp
YyBib29sIHNob3VsZFVzZVRleHRJbmRpY2F0b3JUb0NyZWF0ZVByZXZpZXdGb3JEcmFnU291cmNl
KGNvbnN0IERyYWdTb3VyY2VTCiAgICAgaWYgKCFzb3VyY2UuaW5kaWNhdG9yRGF0YSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHNvdXJjZS5hY3Rpb24gJiAoRHJhZ1NvdXJjZUFj
dGlvbkxpbmsgfCBEcmFnU291cmNlQWN0aW9uU2VsZWN0aW9uKSkKKyAgICBpZiAoc291cmNlLmFj
dGlvbi5jb250YWluc0FueSh7IERyYWdTb3VyY2VBY3Rpb246OkxpbmssIERyYWdTb3VyY2VBY3Rp
b246OlNlbGVjdGlvbiB9KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQotICAgIGlmIChzb3VyY2UuYWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlv
bkF0dGFjaG1lbnQpCisgICAgaWYgKHNvdXJjZS5hY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFj
dGlvbjo6QXR0YWNobWVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKQEAgLTE0
MSwxMSArMTQxLDExIEBAIHN0YXRpYyBib29sIGNhblVwZGF0ZVByZXZpZXdGb3JBY3RpdmVEcmFn
U291cmNlKGNvbnN0IERyYWdTb3VyY2VTdGF0ZSYgc291cmNlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICBpZiAoc291cmNlLmFjdGlv
biAmIERyYWdTb3VyY2VBY3Rpb25Db2xvcikKKyAgICBpZiAoc291cmNlLmFjdGlvbi5jb250YWlu
cyhEcmFnU291cmNlQWN0aW9uOjpDb2xvcikpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlm
CiAKLSAgICBpZiAoc291cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5rICYmICEoc291
cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkpCisgICAgaWYgKHNvdXJjZS5hY3Rp
b24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6TGluaykgJiYgIXNvdXJjZS5hY3Rpb24uY29u
dGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6SW1hZ2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBPcHRpb25hbDxEcmFnU291cmNl
U3RhdGU+IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6YWN0aXZlRHJhZ1NvdXJjZUZvckl0ZW0o
VUlEcgogYm9vbCBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGU6OmFueUFjdGl2ZURyYWdTb3VyY2VJ
cyhXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGFjdGlvbikgY29uc3QKIHsKICAgICBmb3IgKGF1
dG8mIHNvdXJjZSA6IG1fYWN0aXZlRHJhZ1NvdXJjZXMpIHsKLSAgICAgICAgaWYgKHNvdXJjZS5h
Y3Rpb24gJiBhY3Rpb24pCisgICAgICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKGFjdGlv
bikpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpzdGFnZURy
YWdJdGVtKGNvbnN0IERyYWdJdGVtJiBpdGVtLCBVSUltYWdlICpkcmFnCiAKICAgICBtX2FkanVz
dGVkUG9zaXRpb25Gb3JEcmFnRW5kID0gaXRlbS5ldmVudFBvc2l0aW9uSW5Db250ZW50Q29vcmRp
bmF0ZXM7CiAgICAgbV9zdGFnZWREcmFnU291cmNlID0ge3sKLSAgICAgICAgc3RhdGljX2Nhc3Q8
RHJhZ1NvdXJjZUFjdGlvbj4oaXRlbS5zb3VyY2VBY3Rpb24pLAorICAgICAgICBpdGVtLnNvdXJj
ZUFjdGlvbiwKICAgICAgICAgaXRlbS5ldmVudFBvc2l0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMs
CiAgICAgICAgIGl0ZW0uZHJhZ1ByZXZpZXdGcmFtZUluUm9vdFZpZXdDb29yZGluYXRlcywKICAg
ICAgICAgZHJhZ0ltYWdlLApAQCAtMzU3LDcgKzM1Nyw3IEBAIHZvaWQgRHJhZ0Ryb3BJbnRlcmFj
dGlvblN0YXRlOjpzdGFnZURyYWdJdGVtKGNvbnN0IERyYWdJdGVtJiBpdGVtLCBVSUltYWdlICpk
cmFnCiAKIGJvb2wgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpoYXNTdGFnZWREcmFnU291cmNl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdGFnZWREcmFnU291cmNlICYmIHN0YWdlZERyYWdT
b3VyY2UoKS5hY3Rpb24gIT0gV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbk5vbmU7CisgICAgcmV0
dXJuIG1fc3RhZ2VkRHJhZ1NvdXJjZSAmJiAhc3RhZ2VkRHJhZ1NvdXJjZSgpLmFjdGlvbi5pc0Vt
cHR5KCk7CiB9CiAKIHZvaWQgRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlOjpjbGVhclN0YWdlZERy
YWdTb3VyY2UoRGlkQmVjb21lQWN0aXZlIGRpZEJlY29tZUFjdGl2ZSkKQEAgLTM5Myw3ICszOTMs
NyBAQCB2b2lkIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZTo6dXBkYXRlUHJldmlld3NGb3JBY3Rp
dmVEcmFnU291cmNlcygpCiAgICAgICAgIGlmICghZHJhZ0l0ZW0pCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBpZiAoc291cmNlLmFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25MaW5r
KSB7CisgICAgICAgIGlmIChzb3VyY2UuYWN0aW9uLmNvbnRhaW5zKERyYWdTb3VyY2VBY3Rpb246
OkxpbmspKSB7CiAgICAgICAgICAgICBkcmFnSXRlbS5wcmV2aWV3UHJvdmlkZXIgPSBbdGl0bGUg
PSByZXRhaW5QdHIoKE5TU3RyaW5nICopc291cmNlLmxpbmtUaXRsZSksIHVybCA9IHJldGFpblB0
cigoTlNVUkwgKilzb3VyY2UubGlua1VSTCksIGNlbnRlciA9IHNvdXJjZS5hZGp1c3RlZE9yaWdp
bl0gKCkgLT4gVUlEcmFnUHJldmlldyAqIHsKICAgICAgICAgICAgICAgICBVSVVSTERyYWdQcmV2
aWV3VmlldyAqcHJldmlld1ZpZXcgPSBbVUlVUkxEcmFnUHJldmlld1ZpZXcgdmlld1dpdGhUaXRs
ZTp0aXRsZS5nZXQoKSBVUkw6dXJsLmdldCgpXTsKICAgICAgICAgICAgICAgICBwcmV2aWV3Vmll
dy5jZW50ZXIgPSBjZW50ZXI7CkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBEcmFnRHJvcEludGVy
YWN0aW9uU3RhdGU6OnVwZGF0ZVByZXZpZXdzRm9yQWN0aXZlRHJhZ1NvdXJjZXMoKQogICAgICAg
ICAgICAgfTsKICAgICAgICAgfQogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgICAg
ICBlbHNlIGlmIChzb3VyY2UuYWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkNvbG9yKSB7CisgICAg
ICAgIGVsc2UgaWYgKHNvdXJjZS5hY3Rpb24uY29udGFpbnMoRHJhZ1NvdXJjZUFjdGlvbjo6Q29s
b3IpKSB7CiAgICAgICAgICAgICBkcmFnSXRlbS5wcmV2aWV3UHJvdmlkZXIgPSBbaW1hZ2UgPSBz
b3VyY2UuaW1hZ2VdICgpIC0+IFVJRHJhZ1ByZXZpZXcgKiB7CiAgICAgICAgICAgICAgICAgVUlJ
bWFnZVZpZXcgKmltYWdlVmlldyA9IFtbW1VJSW1hZ2VWaWV3IGFsbG9jXSBpbml0V2l0aEltYWdl
OmltYWdlLmdldCgpXSBhdXRvcmVsZWFzZV07CiAgICAgICAgICAgICAgICAgVUlEcmFnUHJldmll
d1BhcmFtZXRlcnMgKnBhcmFtZXRlcnMgPSBbW1tVSURyYWdQcmV2aWV3UGFyYW1ldGVycyBhbGxv
Y10gaW5pdFdpdGhUZXh0TGluZVJlY3RzOkBbIFtOU1ZhbHVlIHZhbHVlV2l0aENHUmVjdDpbaW1h
Z2VWaWV3IGJvdW5kc11dIF1dIGF1dG9yZWxlYXNlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGQyYjRm
NzM4ZWQ0Li45MzZhOTRmNzQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03MjQwLDcgKzcyNDAsNyBA
QCAtICh2b2lkKXRlYXJkb3duRHJhZ0FuZERyb3BJbnRlcmFjdGlvbnMKIAogLSAodm9pZClfc3Rh
cnREcmFnOihSZXRhaW5QdHI8Q0dJbWFnZVJlZj4paW1hZ2UgaXRlbTooY29uc3QgV2ViQ29yZTo6
RHJhZ0l0ZW0mKWl0ZW0KIHsKLSAgICBBU1NFUlQoaXRlbS5zb3VyY2VBY3Rpb24gIT0gV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbk5vbmUpOworICAgIEFTU0VSVChpdGVtLnNvdXJjZUFjdGlvbik7
CiAKICAgICBpZiAoaXRlbS5wcm9taXNlZEF0dGFjaG1lbnRJbmZvKQogICAgICAgICBbc2VsZiBf
cHJlcGFyZVRvRHJhZ1Byb21pc2VkQXR0YWNobWVudDppdGVtLnByb21pc2VkQXR0YWNobWVudElu
Zm9dOwpAQCAtNzU0MSwxMiArNzU0MSwxMiBAQCAtIChXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilf
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogICAg
IHJldHVybiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbkFueSAmIH5XS0RyYWdEZXN0aW5hdGlvbkFj
dGlvbkxvYWQ7CiB9CiAKLS0gKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pX2FsbG93ZWREcmFn
U291cmNlQWN0aW9ucworLSAoT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+KV9h
bGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMKIHsKLSAgICBhdXRvIGFsbG93ZWRBY3Rpb25zID0gV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbkFueTsKKyAgICBhdXRvIGFsbG93ZWRBY3Rpb25zID0gV2Vi
Q29yZTo6YW55RHJhZ1NvdXJjZUFjdGlvbigpOwogICAgIGlmICghc2VsZi5pc0ZpcnN0UmVzcG9u
ZGVyIHx8ICFfc3VwcHJlc3NTZWxlY3Rpb25Bc3Npc3RhbnRSZWFzb25zLmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBEb24ndCBhbGxvdyBzdGFydGluZyBhIGRyYWcgb24gYSBzZWxlY3Rpb24gd2hl
biBzZWxlY3Rpb24gdmlld3MgYXJlIG5vdCB2aXNpYmxlLgotICAgICAgICBhbGxvd2VkQWN0aW9u
cyA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+KGFsbG93ZWRBY3Rpb25z
ICYgfldlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pOworICAgICAgICBhbGxvd2Vk
QWN0aW9ucy5yZW1vdmUoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKICAg
ICB9CiAgICAgcmV0dXJuIGFsbG93ZWRBY3Rpb25zOwogfQpAQCAtODAxNyw3ICs4MDE3LDcgQEAg
LSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFj
dGlvbiAqKWludGVyYWN0aW9uIHByZXYKIC0gKHZvaWQpZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJ
bnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjooaWQg
PFVJRHJhZ0FuaW1hdGluZz4pYW5pbWF0b3Igc2Vzc2lvbjooaWQgPFVJRHJhZ1Nlc3Npb24+KXNl
c3Npb24KIHsKICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiB3aWxs
QW5pbWF0ZUxpZnRXaXRoQW5pbWF0b3I6ICVwIiwgc2Vzc2lvbik7Ci0gICAgaWYgKF9kcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUuYW55QWN0aXZlRHJhZ1NvdXJjZUlzKFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb25TZWxlY3Rpb24pKSB7CisgICAgaWYgKF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
YW55QWN0aXZlRHJhZ1NvdXJjZUlzKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlv
bikpIHsKICAgICAgICAgW3NlbGYgY2FuY2VsQWN0aXZlVGV4dEludGVyYWN0aW9uR2VzdHVyZXNd
OwogICAgICAgICBpZiAoIV9zaG91bGRSZXN0b3JlQ2FsbG91dEJhckFmdGVyRHJvcCkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgU1BJIHNob3VsZCBiZSByZW5hbWVkIGluIFVJS2l0IHRv
IHJlZmxlY3QgYSBtb3JlIGdlbmVyYWwgcHVycG9zZSBvZiBoaWRpbmcgaW50ZXJhY3Rpb24gYXNz
aXN0YW50IGNvbnRyb2xzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KaW5kZXggZWE1ZTRlZmQyZGQuLmFlYWUyOWExYTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTEyNTcsMTYgKzEy
NTcsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNS
ZXF1ZXN0KGJvb2wgYWRkZWQpCiAgICAgcGFnZUNsaWVudCgpLmRpZEhhbmRsZUFkZGl0aW9uYWxE
cmFnSXRlbXNSZXF1ZXN0KGFkZGVkKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RE
cmFnU3RhcnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24gYWxsb3dlZEFjdGlvbnMpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERyYWdTdGFydChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+IGFsbG93ZWRBY3Rpb25zTWFzaykKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkK
LSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RHJhZ1N0
YXJ0KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnMpLCBtX3dl
YlBhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVx
dWVzdERyYWdTdGFydChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGFsbG93ZWRBY3Rp
b25zTWFzayksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
ZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFj
dGlvbiBhbGxvd2VkQWN0aW9ucykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWRkaXRpb25h
bEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNz
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFk
ZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlv
biwgYWxsb3dlZEFjdGlvbnMpLCBtX3dlYlBhZ2VJRCk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9u
KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgYWxsb3dlZEFjdGlvbnNNYXNrKSwgbV93
ZWJQYWdlSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxh
Y2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCmlu
ZGV4IDgxYjc5YTc3Yzg3Li4yZWIwODg2ZjEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNDUs
NyArNDUsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlv
bihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludAogewogfQogCi1EcmFnU291cmNlQWN0
aW9uIFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50
UG9pbnQmKQorT3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IFdlYkRyYWdDbGllbnQ6OmRyYWdT
b3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQogewogICAgIHJldHVybiBt
X3BhZ2UtPmFsbG93ZWREcmFnU291cmNlQWN0aW9ucygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXgg
MjdjNGIyNzJhNzMuLjRkYmEwZDhhYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTQ1LDcgKzQ1LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJh
Z0RhdGEmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihX
ZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNv
cmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOwotICAgIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
d2luZG93UG9pbnQpIG92ZXJyaWRlOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNl
QWN0aW9uPiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3Jl
OjpEcmFnSXRlbSwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJiwgV2ViQ29yZTo6RnJhbWUmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNGIxNTc4NjZiZS4uMDQ5
NTYwMmYwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTkxNSw3ICs5MTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU3RhcnREcmFnKCkgeyBB
U1NFUlQoIW1faXNTdGFydGluZ0RyYWcpOyBtX2lzU3RhcnRpbmdEcmFnID0gdHJ1ZTsgfQogICAg
IHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7Ci0gICAgV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX2FsbG93ZWREcmFnU291cmNlQWN0aW9uczsgfQorICAgIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX2FsbG93ZWREcmFnU291cmNlQWN0aW9uczsgfQogI2VuZGlmCiAKICAgICB2b2lk
IGJlZ2luUHJpbnRpbmcoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8m
KTsKQEAgLTE0MDYsOCArMTQwNiw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKQotICAgIHZvaWQgcmVxdWVz
dERyYWdTdGFydChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFjdGlv
bnMpOwotICAgIHZvaWQgcmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBhbGxvd2VkQWN0aW9ucyk7CisgICAgdm9pZCBy
ZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKTsKKyAgICB2b2lkIHJlcXVl
c3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zTWFzayk7
CiAgICAgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkludFNpemU+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYm
IHJlcGx5KTsKICAgICB2b2lkIGNvbXB1dGVBbmRTZW5kRWRpdERyYWdTbmFwc2hvdCgpOwogI2Vu
ZGlmCkBAIC0xOTMzLDcgKzE5MzMsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKICAgICBib29sIG1faXNTdGFydGluZ0RyYWcgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24gbV9hbGxvd2VkRHJhZ1NvdXJjZUFjdGlvbnMgeyBXZWJDb3JlOjpE
cmFnU291cmNlQWN0aW9uQW55IH07CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VB
Y3Rpb24+IG1fYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zIHsgV2ViQ29yZTo6YW55RHJhZ1NvdXJj
ZUFjdGlvbigpIH07CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBhZTkyNzQ3NjM4OC4uMTZhZjMxN2U4ODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtMzIxLDggKzMyMSw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0g
ICAgUmVxdWVzdERyYWdTdGFydChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQot
ICAgIFJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihXZWJDb3JlOjpJbnRQb2lu
dCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2
NF90IGFsbG93ZWRBY3Rpb25zKQorICAgIFJlcXVlc3REcmFnU3RhcnQoV2ViQ29yZTo6SW50UG9p
bnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gYWxsb3dlZEFjdGlvbnNNYXNrKQorICAg
IFJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihXZWJDb3JlOjpJbnRQb2ludCBj
bGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhbGxvd2VkQWN0aW9uc01hc2spCiAgICAgSW5z
ZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKFZlY3RvcjxXZWJDb3JlOjpJbnRTaXplPiBpbWFn
ZVNpemUpIC0+IChWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gZHJvcFByZXZpZXdSZWN0cywgT3B0
aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+IHRleHRJbmRpY2F0b3IpIEFzeW5jCiAg
ICAgRGlkQ29uY2x1ZGVEcm9wKCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA1ODAzNGI3MWMxMS4uNzBjOGYy
YWFmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCkBAIC05MDksMTYgKzkwOSwxNiBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RG
b2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
fQogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCi12b2lkIFdlYlBhZ2U6OnJlcXVlc3RE
cmFnU3RhcnQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGFsbG93ZWRBY3Rpb25zKQordm9pZCBXZWJQYWdlOjpy
ZXF1ZXN0RHJhZ1N0YXJ0KGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlv
bj4gYWxsb3dlZEFjdGlvbnNNYXNrKQogewotICAgIFNldEZvclNjb3BlPFdlYkNvcmU6OkRyYWdT
b3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rpb25zRm9yU2NvcGUobV9hbGxvd2VkRHJhZ1NvdXJjZUFj
dGlvbnMsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+KGFsbG93ZWRBY3Rp
b25zKSk7CisgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rp
b24+PiBhbGxvd2VkQWN0aW9uc0ZvclNjb3BlKG1fYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zLCBh
bGxvd2VkQWN0aW9uc01hc2spOwogICAgIGJvb2wgZGlkU3RhcnQgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpLmV2ZW50SGFuZGxlcigpLnRyeVRvQmVnaW5EcmFnQXRQb2ludChjbGllbnRQb3NpdGlvbiwg
Z2xvYmFsUG9zaXRpb24pOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFu
ZGxlRHJhZ1N0YXJ0UmVxdWVzdChkaWRTdGFydCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJlcXVl
c3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgYWxsb3dlZEFj
dGlvbnMpCit2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lv
bihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFsbG93ZWRBY3Rp
b25zTWFzaykKIHsKLSAgICBTZXRGb3JTY29wZTxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBh
bGxvd2VkQWN0aW9uc0ZvclNjb3BlKG1fYWxsb3dlZERyYWdTb3VyY2VBY3Rpb25zLCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPihhbGxvd2VkQWN0aW9ucykpOworICAgIFNl
dEZvclNjb3BlPE9wdGlvblNldDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPj4gYWxsb3dlZEFj
dGlvbnNGb3JTY29wZShtX2FsbG93ZWREcmFnU291cmNlQWN0aW9ucywgYWxsb3dlZEFjdGlvbnNN
YXNrKTsKICAgICAvLyBUbyBhdWdtZW50IHRoZSBwbGF0Zm9ybSBkcmFnIHNlc3Npb24gd2l0aCBh
ZGRpdGlvbmFsIGl0ZW1zLCBlbmQgdGhlIGN1cnJlbnQgZHJhZyBzZXNzaW9uIGFuZCBiZWdpbiBh
IG5ldyBkcmFnIHNlc3Npb24gd2l0aCB0aGUgbmV3IGRyYWcgaXRlbS4KICAgICAvLyBUaGlzIHBy
b2Nlc3MgaXMgb3BhcXVlIHRvIHRoZSBVSSBwcm9jZXNzLCB3aGljaCBzdGlsbCBtYWludGFpbnMg
dGhlIG9sZCBkcmFnIGl0ZW0gaW4gaXRzIGRyYWcgc2Vzc2lvbi4gU2ltaWxhcmx5LCB0aGlzIHBl
cnNpc3RlbnQgZHJhZyBzZXNzaW9uCiAgICAgLy8gaXMgb3BhcXVlIHRvIHRoZSB3ZWIgcHJvY2Vz
cywgd2hpY2ggb25seSBzZWVzIHRoYXQgdGhlIGN1cnJlbnQgZHJhZyBoYXMgZW5kZWQsIGFuZCB0
aGF0IGEgbmV3IG9uZSBpcyBiZWdpbm5pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5k
ZXggODJhMGUzZjI1NmQuLjY3Y2ZmMjM5NWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMjAtMDYtMDggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KKworICAgICAgICBbSVBDXSBBZG9wdCBlbnVtIGNsYXNzIGZvciBEcmFnU291cmNl
QWN0aW9uCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI4ODU+CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82NDA5NDEzND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTdW1tYXJ5OgorICAgICAgICAtIEFkZCBhbmQgdXNlIGNvbnZlcnNp
b24gZnVuY3Rpb25zIGJldHdlZW4KKyAgICAgICAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbj4gYW5kIFdlYkRyYWdTb3VyY2VBY3Rpb24uCisgICAgICAgIC0gVXBkYXRlIG1l
dGhvZCBzaWduYXR1cmVzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAg
IChjb3JlRHJhZ1NvdXJjZUFjdGlvbk1hc2spOiBBZGQuCisgICAgICAgIChXZWJEcmFnQ2xpZW50
OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6
OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6CisgICAgICAgIChXZWJEcmFnQ2xpZW50Ojpz
dGFydERyYWcpOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGtpdCk6
IEFkZC4KKyAgICAgICAgLSBDb252ZXJ0IGZyb20gT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ1NvdXJj
ZUFjdGlvbj4gdG8KKyAgICAgICAgICBXZWJEcmFnU291cmNlQWN0aW9uLgorICAgICAgICAoLVtX
ZWJWaWV3IF9zdGFydERyYWc6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwu
aDoKKyAgICAgICAgKGtpdCk6IEFkZCBkZWNsYXJhdGlvbiB0byByZXVzZSBmdW5jdGlvbiBpbiBX
ZWJEcmFnQ2xpZW50Lm1tLgorCiAyMDIwLTA2LTA5ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIGRpc2NyaW1pbmF0b3J5IG5hbWVzIGZvciBXZWJH
TCBhbmQgUGx1Z2luIGJsb2NraW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXggMTVkY2JhNTQ0MjEuLjM0YTc1
ZmZhYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7
Ci0gICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7CisgICAg
T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGRyYWdTb3VyY2VBY3Rpb25NYXNr
Rm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlkZTsK
ICAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSXRlbSwgV2ViQ29yZTo6RGF0YVRyYW5z
ZmVyJiwgV2ViQ29yZTo6RnJhbWUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYmVnaW5EcmFnKFdl
YkNvcmU6OkRyYWdJdGVtLCBXZWJDb3JlOjpGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBtb3VzZURvd25Qb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIG1vdXNlRHJhZ2dl
ZFBvc2l0aW9uLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IDNkMWEwYTM1ZmYyLi40MmFjMjdiZmM2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50Lm1tCkBAIC02OCw2ICs2OCwyMiBAQCBXZWJEcmFnQ2xpZW50OjpXZWJE
cmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAKICNpZiBQTEFURk9STShNQUMpCiAKK3N0YXRp
YyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbj4gY29yZURyYWdTb3VyY2VBY3Rp
b25NYXNrKFdlYkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uKQoreworICAgIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnU291cmNlQWN0aW9uPiByZXN1bHQ7CisKKyAgICBpZiAoYWN0aW9uICYgV2ViRHJh
Z1NvdXJjZUFjdGlvbkRIVE1MKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb246OkRIVE1MKTsKKyAgICBpZiAoYWN0aW9uICYgV2ViRHJhZ1NvdXJjZUFjdGlvbklt
YWdlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkltYWdl
KTsKKyAgICBpZiAoYWN0aW9uICYgV2ViRHJhZ1NvdXJjZUFjdGlvbkxpbmspCisgICAgICAgIHJl
c3VsdC5hZGQoV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6TGluayk7CisgICAgaWYgKGFjdGlv
biAmIFdlYkRyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pCisgICAgICAgIHJlc3VsdC5hZGQoV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsKKworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKIHN0YXRpYyBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24ga2l0KFdlYkNvcmU6OkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb24pCiB7CiAgICAgc3dpdGNoIChhY3Rpb24pIHsKQEAgLTEw
NCwxNSArMTIwLDE1IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGlu
YXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0CiB9CiAKIAotV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBv
aW50KGNvbnN0IEludFBvaW50JiByb290Vmlld1BvaW50KQorT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24+IFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9p
bnQoY29uc3QgSW50UG9pbnQmIHJvb3RWaWV3UG9pbnQpCiB7CiAgICAgTlNQb2ludCB2aWV3UG9p
bnQgPSBbbV93ZWJWaWV3IF9jb252ZXJ0UG9pbnRGcm9tUm9vdFZpZXc6cm9vdFZpZXdQb2ludF07
Ci0gICAgcmV0dXJuIChEcmFnU291cmNlQWN0aW9uKVtbbV93ZWJWaWV3IF9VSURlbGVnYXRlRm9y
d2FyZGVyXSB3ZWJWaWV3Om1fd2ViVmlldyBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50OnZp
ZXdQb2ludF07CisgICAgcmV0dXJuIGNvcmVEcmFnU291cmNlQWN0aW9uTWFzayhbW21fd2ViVmll
dyBfVUlEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcgZHJhZ1NvdXJjZUFjdGlv
bk1hc2tGb3JQb2ludDp2aWV3UG9pbnRdKTsKIH0KIAogdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxs
UGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBtb3VzZURvd25Qb2ludCwgV2ViQ29yZTo6RGF0YVRy
YW5zZmVyJiBkYXRhVHJhbnNmZXIpCiB7Ci0gICAgW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3
YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbjooV2Vi
RHJhZ1NvdXJjZUFjdGlvbilhY3Rpb24gZnJvbVBvaW50Om1vdXNlRG93blBvaW50IHdpdGhQYXN0
ZWJvYXJkOltOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhOYW1lOmRhdGFUcmFuc2Zlci5wYXN0
ZWJvYXJkKCkubmFtZSgpXV07CisgICAgW1ttX3dlYlZpZXcgX1VJRGVsZWdhdGVGb3J3YXJkZXJd
IHdlYlZpZXc6bV93ZWJWaWV3IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbjpraXQoYWN0aW9u
KSBmcm9tUG9pbnQ6bW91c2VEb3duUG9pbnQgd2l0aFBhc3RlYm9hcmQ6W05TUGFzdGVib2FyZCBw
YXN0ZWJvYXJkV2l0aE5hbWU6ZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5uYW1lKCldXTsKIH0K
IAogdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIERhdGFU
cmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYgZnJhbWUpCkBAIC0xMjQsNyArMTQwLDcgQEAg
dm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gZHJhZ0l0ZW0sIERhdGFUcmFu
c2ZlciYgZGF0YVRyYW5zZmVyLCBGcmEKICAgICBpZiAoIVtodG1sVmlldy5nZXQoKSBpc0tpbmRP
ZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
TlNFdmVudCAqZXZlbnQgPSBkcmFnSXRlbS5zb3VyY2VBY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlv
bkxpbmsgPyBmcmFtZS5ldmVudEhhbmRsZXIoKS5jdXJyZW50TlNFdmVudCgpIDogW2h0bWxWaWV3
LmdldCgpIF9tb3VzZURvd25FdmVudF07CisgICAgTlNFdmVudCAqZXZlbnQgPSAoZHJhZ0l0ZW0u
c291cmNlQWN0aW9uICYmICpkcmFnSXRlbS5zb3VyY2VBY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlv
bjo6TGluaykgPyBmcmFtZS5ldmVudEhhbmRsZXIoKS5jdXJyZW50TlNFdmVudCgpIDogW2h0bWxW
aWV3LmdldCgpIF9tb3VzZURvd25FdmVudF07CiAgICAgV2ViSFRNTFZpZXcqIHRvcEhUTUxWaWV3
ID0gZ2V0VG9wSFRNTFZpZXcoJmZyYW1lKTsKICAgICBSZXRhaW5QdHI8V2ViSFRNTFZpZXc+IHRv
cFZpZXdQcm90ZWN0b3IgPSB0b3BIVE1MVmlldzsKICAgICAKQEAgLTE5Nyw5ICsyMTMsOSBAQCB2
b2lkIFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdAogewogfQogCi1XZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
IFdlYkRyYWdDbGllbnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9p
bnQmKQorT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IFdlYkRyYWdDbGllbnQ6
OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQogewotICAgIHJl
dHVybiBEcmFnU291cmNlQWN0aW9uTm9uZTsKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIFdl
YkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2Zl
ciYpCkBAIC0yMzIsOSArMjQ4LDkgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURy
YWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3QKIHsKIH0KIAot
V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9u
TWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKK09wdGlvblNldDxXZWJDb3JlOjpEcmFnU291
cmNlQWN0aW9uPiBXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNv
bnN0IEludFBvaW50JikKIHsKLSAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbkFueTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6YW55RHJhZ1NvdXJjZUFjdGlvbigpOwogfQogCiB2b2lkIFdlYkRyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0
aW9uLCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZGI5MDNlOGY2YmUuLmNlMTJhYmU0YWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC02NzUsNiAr
Njc1LDM0IEBAIHN0YXRpYyBfVUlEcmFnT3BlcmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQogICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9u
Tm9uZTsKIH0KICNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCitXZWJEcmFnU291cmNlQWN0aW9uIGtp
dChPcHRpb25hbDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPiBhY3Rpb24pCit7CisgICAgaWYg
KCFhY3Rpb24pCisgICAgICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uTm9uZTsKKworICAg
IHN3aXRjaCAoKmFjdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbjo6
REhUTUw6CisgICAgICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uREhUTUw7CisgICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpJbWFnZToKKyAgICAgICAgcmV0dXJuIFdlYkRy
YWdTb3VyY2VBY3Rpb25JbWFnZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246
Okxpbms6CisgICAgICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uTGluazsKKyAgICBjYXNl
IFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIFdl
YkRyYWdTb3VyY2VBY3Rpb25TZWxlY3Rpb247CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQ6CisgICAg
ICAgIGJyZWFrOworI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uOjpDb2xvcjoKKyAgICAgICAgYnJlYWs7CisjZW5k
aWYKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gV2ViRHJh
Z1NvdXJjZUFjdGlvbk5vbmU7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAog
V2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucykK
QEAgLTE5NjAsNyArMTk4OCw3IEBAIC0gKHZvaWQpX3N0YXJ0RHJhZzooY29uc3QgV2ViQ29yZTo6
RHJhZ0l0ZW0mKWRyYWdJdGVtCiAgICAgX3ByaXZhdGUtPmRyYWdnZWRMaW5rVVJMID0gZHJhZ0l0
ZW0udXJsLmlzRW1wdHkoKSA/IG5pbCA6IChOU1VSTCAqKWRyYWdJdGVtLnVybDsKICAgICBfcHJp
dmF0ZS0+ZHJhZ2dlZExpbmtUaXRsZSA9IGRyYWdJdGVtLnRpdGxlLmlzRW1wdHkoKSA/IG5pbCA6
IChOU1N0cmluZyAqKWRyYWdJdGVtLnRpdGxlOwogICAgIF9wcml2YXRlLT5kcmFnUHJldmlld0Zy
YW1lSW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZHJhZ0l0ZW0uZHJhZ1ByZXZpZXdGcmFtZUluUm9v
dFZpZXdDb29yZGluYXRlczsKLSAgICBfcHJpdmF0ZS0+ZHJhZ1NvdXJjZUFjdGlvbiA9IHN0YXRp
Y19jYXN0PFdlYkRyYWdTb3VyY2VBY3Rpb24+KGRyYWdJdGVtLnNvdXJjZUFjdGlvbik7CisgICAg
X3ByaXZhdGUtPmRyYWdTb3VyY2VBY3Rpb24gPSBraXQoZHJhZ0l0ZW0uc291cmNlQWN0aW9uKTsK
IH0KIAogLSAoQ0dSZWN0KV9kYXRhSW50ZXJhY3Rpb25DYXJldFJlY3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGVhMWYyZjMx
ZTViLi41NjI1MGZkNzQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJXZWJQcmVm
ZXJlbmNlcy5oIgogI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYlR5cGVz
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlVJRGVsZWdhdGUuaCIKIAogI2lmZGVmIF9fY3BsdXNw
bHVzCiAKQEAgLTk4LDYgKzk5LDggQEAgdXNpbmcgQ29jb2FEcmFnT3BlcmF0aW9uID0gdWludDY0
X3Q7CiAjZW5kaWYKIAogT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24pOworCitXZWJEcmFnU291cmNlQWN0aW9u
IGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uPik7CiAjZW5kaWYgLy8gRU5B
QkxFKERSQUdfU1VQUE9SVCkKIAogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2Vi
RmluZE9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDNkMGFiZmJlODQ0
Li44NTFiYWM2OWI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDIwLTA2LTA4ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0lQQ10gQWRvcHQgZW51bSBjbGFzcyBmb3IgRHJhZ1NvdXJjZUFjdGlvbgorICAgICAg
ICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyODg1PgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NjQwOTQxMzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU3VtbWFyeToKKyAgICAgICAgLSBBZGQgYW5kIHVzZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBi
ZXR3ZWVuCisgICAgICAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24+IGFu
ZCBXZWJEcmFnU291cmNlQWN0aW9uLgorICAgICAgICAtIFVwZGF0ZSBtZXRob2Qgc2lnbmF0dXJl
cy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAg
ICAoY29yZURyYWdTb3VyY2VBY3Rpb25NYXNrKTogQWRkLgorICAgICAgICAoa2l0KTogQWRkLgor
ICAgICAgICAtIENvbnZlcnQgZnJvbSBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIHRvIFdlYkRy
YWdTb3VyY2VBY3Rpb24uCisgICAgICAgIChXZWJEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9u
TWFza0ZvclBvaW50KToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1Nv
dXJjZUFjdGlvbik6CisgICAgICAgIChXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAgICAgICAgKFdlYkRyYWdDbGll
bnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQpOgorCiAyMDIwLTA2LTA4ICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgW0lQQ10gQWRvcHQgZW51bSBj
bGFzcyBmb3IgRHJhZ09wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCA1YjE5M2E3ZGFhMy4u
ZGU4YzkzMWQ2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCkBAIC03Miw2ICs3Miw0NiBAQCBzdGF0aWMg
V2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGtpdChEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9u
KQogICAgIHJldHVybiBXZWJEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOwogfQogCitzdGF0aWMg
T3B0aW9uU2V0PERyYWdTb3VyY2VBY3Rpb24+IGNvcmVEcmFnU291cmNlQWN0aW9uTWFzayhXZWJE
cmFnU291cmNlQWN0aW9uIGFjdGlvbk1hc2spCit7CisgICAgT3B0aW9uU2V0PERyYWdTb3VyY2VB
Y3Rpb24+IHJlc3VsdDsKKworICAgIGlmIChhY3Rpb25NYXNrICYgV2ViRHJhZ1NvdXJjZUFjdGlv
bkRIVE1MKQorICAgICAgICByZXN1bHQuYWRkKERyYWdTb3VyY2VBY3Rpb246OkRIVE1MKTsKKyAg
ICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rpb25JbWFnZSkKKyAgICAgICAgcmVz
dWx0LmFkZChEcmFnU291cmNlQWN0aW9uOjpJbWFnZSk7CisgICAgaWYgKGFjdGlvbk1hc2sgJiBX
ZWJEcmFnU291cmNlQWN0aW9uTGluaykKKyAgICAgICAgcmVzdWx0LmFkZChEcmFnU291cmNlQWN0
aW9uOjpMaW5rKTsKKyAgICBpZiAoYWN0aW9uTWFzayAmIFdlYkRyYWdTb3VyY2VBY3Rpb25TZWxl
Y3Rpb24pCisgICAgICAgIHJlc3VsdC5hZGQoRHJhZ1NvdXJjZUFjdGlvbjo6U2VsZWN0aW9uKTsK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBXZWJEcmFnU291cmNlQWN0aW9uIGtp
dChEcmFnU291cmNlQWN0aW9uIGFjdGlvbikKK3sKKyAgICBzd2l0Y2ggKGFjdGlvbikgeworICAg
IGNhc2UgRHJhZ1NvdXJjZUFjdGlvbjo6REhUTUw6CisgICAgICAgIHJldHVybiBXZWJEcmFnU291
cmNlQWN0aW9uREhUTUw7CisgICAgY2FzZSBEcmFnU291cmNlQWN0aW9uOjpJbWFnZToKKyAgICAg
ICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25JbWFnZTsKKyAgICBjYXNlIERyYWdTb3VyY2VB
Y3Rpb246Okxpbms6CisgICAgICAgIHJldHVybiBXZWJEcmFnU291cmNlQWN0aW9uTGluazsKKyAg
ICBjYXNlIERyYWdTb3VyY2VBY3Rpb246OlNlbGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIFdlYkRy
YWdTb3VyY2VBY3Rpb25TZWxlY3Rpb247CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
KyAgICBjYXNlIERyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQ6CisgICAgICAgIGJyZWFrOwor
I2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgY2FzZSBEcmFnU291cmNl
QWN0aW9uOjpDb2xvcjoKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdlYkRyYWdTb3VyY2VBY3Rpb25Ob25lOworfQor
CiBXZWJEcmFnQ2xpZW50OjpXZWJEcmFnQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykgCiB7CkBAIC04NywxNCArMTI3LDE0IEBAIHZvaWQgV2ViRHJhZ0Ns
aWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uIGFjdGlvCiAgICAgICAgIGRlbGVnYXRlUmVmLT53aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlv
bkFjdGlvbihtX3dlYlZpZXcsIGtpdChhY3Rpb24pLCBkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7
CiB9CiAKLURyYWdTb3VyY2VBY3Rpb24gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1h
c2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCitPcHRpb25TZXQ8RHJhZ1Nv
dXJjZUFjdGlvbj4gV2ViRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChj
b25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpCiB7CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRl
PiBkZWxlZ2F0ZVJlZiA9IDA7Ci0gICAgV2ViRHJhZ1NvdXJjZUFjdGlvbiBhY3Rpb24gPSBXZWJE
cmFnU291cmNlQWN0aW9uQW55OworICAgIFdlYkRyYWdTb3VyY2VBY3Rpb24gYWN0aW9uTWFzayA9
IFdlYkRyYWdTb3VyY2VBY3Rpb25Bbnk7CiAgICAgUE9JTlQgbG9jYWxwdCA9IGNvcmUobV93ZWJW
aWV3KS0+bWFpbkZyYW1lKCkudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd1BvaW50KTsK
ICAgICBpZiAoU1VDQ0VFREVEKG1fd2ViVmlldy0+dWlEZWxlZ2F0ZSgmZGVsZWdhdGVSZWYpKSkK
LSAgICAgICAgZGVsZWdhdGVSZWYtPmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQobV93ZWJW
aWV3LCAmbG9jYWxwdCwgJmFjdGlvbik7Ci0gICAgcmV0dXJuIChEcmFnU291cmNlQWN0aW9uKWFj
dGlvbjsKKyAgICAgICAgZGVsZWdhdGVSZWYtPmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQo
bV93ZWJWaWV3LCAmbG9jYWxwdCwgJmFjdGlvbk1hc2spOworICAgIHJldHVybiBjb3JlRHJhZ1Nv
dXJjZUFjdGlvbk1hc2soYWN0aW9uTWFzayk7CiB9CiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24gYWN0aW9uLCBjb25zdCBJ
bnRQb2ludCYgaW50UG9pbnQsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQpAQCAtMTA3LDcg
KzE0Nyw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9u
KERyYWdTb3VyY2VBY3Rpb24gYWN0aW9uLCBjb25zdCBJCiAgICAgQ09NUHRyPElEYXRhT2JqZWN0
PiBkYXRhT2JqZWN0ID0gZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5kYXRhT2JqZWN0KCk7CiAK
ICAgICBDT01QdHI8SURhdGFPYmplY3Q+IG5ld0RhdGFPYmplY3Q7Ci0gICAgSFJFU1VMVCByZXN1
bHQgPSB1aURlbGVnYXRlLT53aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24obV93ZWJWaWV3LCBz
dGF0aWNfY2FzdDxXZWJEcmFnU291cmNlQWN0aW9uPihhY3Rpb24pLCAmcG9pbnQsIGRhdGFPYmpl
Y3QuZ2V0KCksICZuZXdEYXRhT2JqZWN0KTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IHVpRGVsZWdh
dGUtPndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihtX3dlYlZpZXcsIGtpdChhY3Rpb24pLCAm
cG9pbnQsIGRhdGFPYmplY3QuZ2V0KCksICZuZXdEYXRhT2JqZWN0KTsKICAgICBpZiAocmVzdWx0
ID09IFNfT0sgJiYgbmV3RGF0YU9iamVjdCAhPSBkYXRhT2JqZWN0KQogICAgICAgICBjb25zdF9j
YXN0PFBhc3RlYm9hcmQmPihkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpKS5zZXRFeHRlcm5hbERh
dGFPYmplY3QobmV3RGF0YU9iamVjdC5nZXQoKSk7CiB9CkBAIC0xNDMsNyArMTgzLDcgQEAgdm9p
ZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBk
YXRhVHJhbnNmZXIsIEZyYW1lJgogICAgICAgICAgICAgICAgIHNkaS5oYm1wRHJhZ0ltYWdlID0g
aW1hZ2UuZ2V0KCk7CiAgICAgICAgICAgICAgICAgc2RpLnB0T2Zmc2V0LnggPSBkcmFnUG9pbnQu
eCgpIC0gaW1hZ2VPcmlnaW4ueCgpOwogICAgICAgICAgICAgICAgIHNkaS5wdE9mZnNldC55ID0g
ZHJhZ1BvaW50LnkoKSAtIGltYWdlT3JpZ2luLnkoKTsKLSAgICAgICAgICAgICAgICBpZiAoaXRl
bS5zb3VyY2VBY3Rpb24gPT0gRHJhZ1NvdXJjZUFjdGlvbkxpbmspCisgICAgICAgICAgICAgICAg
aWYgKGl0ZW0uc291cmNlQWN0aW9uICYmICppdGVtLnNvdXJjZUFjdGlvbiA9PSBEcmFnU291cmNl
QWN0aW9uOjpMaW5rKQogICAgICAgICAgICAgICAgICAgICBzZGkucHRPZmZzZXQueSA9IGIuYm1I
ZWlnaHQgLSBzZGkucHRPZmZzZXQueTsKIAogICAgICAgICAgICAgICAgIGhlbHBlci0+SW5pdGlh
bGl6ZUZyb21CaXRtYXAoJnNkaSwgZGF0YU9iamVjdC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKaW5kZXgg
YTUxZmMwMTNmMDUuLmY1OGM3MzdlYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCkBAIC0zNyw3ICszNyw3IEBA
IGNsYXNzIFdlYkRyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiBwdWJs
aWM6CiAgICAgV2ViRHJhZ0NsaWVudChXZWJWaWV3Kik7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYpOworICAgIHZpcnR1YWwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdTb3Vy
Y2VBY3Rpb24+IGRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rp
b24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0
YSYpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpE
YXRhVHJhbnNmZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJ
dGVtLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFtZSYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>