<?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>212605</bug_id>
          
          <creation_ts>2020-06-01 13:11:22 -0700</creation_ts>
          <short_desc>Use OptionSet&lt;DragOperation&gt; for mask values</short_desc>
          <delta_ts>2020-06-07 13:02:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>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=212764</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212885</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>211988</blocked>
    
    <blocked>212870</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>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1658016</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-01 13:11:22 -0700</bug_when>
    <thetext>Use OptionSet&lt;DragOperation&gt; for mask values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658167</commentid>
    <comment_count>1</comment_count>
      <attachid>400783</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-01 22:09:15 -0700</bug_when>
    <thetext>Created attachment 400783
Patch v1

Let EWS chew on the patch as there will probably be Win/WPE/GTK build failures and maybe some test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658168</commentid>
    <comment_count>2</comment_count>
      <attachid>400784</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-01 22:18:01 -0700</bug_when>
    <thetext>Created attachment 400784
Patch v2

More EWS testing.  Corrected dumb mistakes for GTK and Win/WinCairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658333</commentid>
    <comment_count>3</comment_count>
      <attachid>400784</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-02 09:14:57 -0700</bug_when>
    <thetext>Comment on attachment 400784
Patch v2

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

&gt; Source/WebCore/page/DragActions.h:64
&gt;  typedef enum {

Can we make this an enum class?

&gt; Source/WebCore/page/DragActions.h:65
&gt;      DragOperationNone    = 0,

Should remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658351</commentid>
    <comment_count>4</comment_count>
      <attachid>400833</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-02 10:03:06 -0700</bug_when>
    <thetext>Created attachment 400833
Patch v3

Try to fix GTk/Win/WinCairo build failures.

May still need to fix failing layout test for mac-wk1 and mac-debug-wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658352</commentid>
    <comment_count>5</comment_count>
      <attachid>400833</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-02 10:07:19 -0700</bug_when>
    <thetext>Comment on attachment 400833
Patch v3

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

&gt; Source/WebCore/dom/DataTransfer.cpp:603
&gt; +        return { DragOperationNone };

This should just be:

    return { };

We don’t want a set with the value &quot;0&quot;, we want a set with no values.

&gt; Source/WebCore/page/DragController.cpp:696
&gt; +static DragOperation defaultOperationForDrag(OptionSet&lt;DragOperation&gt; sourceOperationMask)

This should return Optional&lt;DragOperation&gt;, since it can return &quot;no operation at all&quot;.

&gt; Source/WebCore/page/EventHandler.h:166
&gt; +        Optional&lt;OptionSet&lt;DragOperation&gt;&gt; operationMask;

Why does this need to be optional? How is nullopt different from an empty set here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658403</commentid>
    <comment_count>6</comment_count>
      <attachid>400833</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-02 11:47:01 -0700</bug_when>
    <thetext>Comment on attachment 400833
Patch v3

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

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:603
&gt;&gt; +        return { DragOperationNone };
&gt; 
&gt; This should just be:
&gt; 
&gt;     return { };
&gt; 
&gt; We don’t want a set with the value &quot;0&quot;, we want a set with no values.

I&apos;ll change this, but there&apos;s no material difference when the OptionSet&lt;DragOperation&gt; is created.

&gt;&gt; Source/WebCore/page/DragController.cpp:696
&gt;&gt; +static DragOperation defaultOperationForDrag(OptionSet&lt;DragOperation&gt; sourceOperationMask)
&gt; 
&gt; This should return Optional&lt;DragOperation&gt;, since it can return &quot;no operation at all&quot;.

This seems like more complexity for little value since DragOperationNone is equivalent to an empty Optional&lt;DragOperation&gt;.

Is the goal here to remove all uses of DragOperationNone so it can be removed?  That seems to be the only reason to do this.

&gt;&gt; Source/WebCore/page/EventHandler.h:166
&gt;&gt; +        Optional&lt;OptionSet&lt;DragOperation&gt;&gt; operationMask;
&gt; 
&gt; Why does this need to be optional? How is nullopt different from an empty set here?

I was making a mechanical change here to use OptionSet&lt;DragOperation&gt; in place of just DragOperation&gt;.

I will change it from Optional&lt;OptionSet&lt;DragOperation&gt;&gt; to OptionSet&lt;DragOperation&gt; since nullopt doesn&apos;t seem different from the empty set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658406</commentid>
    <comment_count>7</comment_count>
      <attachid>400833</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-02 11:59:26 -0700</bug_when>
    <thetext>Comment on attachment 400833
Patch v3

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

&gt;&gt;&gt; Source/WebCore/page/DragController.cpp:696
&gt;&gt;&gt; +static DragOperation defaultOperationForDrag(OptionSet&lt;DragOperation&gt; sourceOperationMask)
&gt;&gt; 
&gt;&gt; This should return Optional&lt;DragOperation&gt;, since it can return &quot;no operation at all&quot;.
&gt; 
&gt; This seems like more complexity for little value since DragOperationNone is equivalent to an empty Optional&lt;DragOperation&gt;.
&gt; 
&gt; Is the goal here to remove all uses of DragOperationNone so it can be removed?  That seems to be the only reason to do this.

Yes, enumerations used with OptionSet should not have 0 values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658412</commentid>
    <comment_count>8</comment_count>
      <attachid>400833</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-02 12:20:22 -0700</bug_when>
    <thetext>Comment on attachment 400833
Patch v3

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

&gt;&gt;&gt; Source/WebCore/page/EventHandler.h:166
&gt;&gt;&gt; +        Optional&lt;OptionSet&lt;DragOperation&gt;&gt; operationMask;
&gt;&gt; 
&gt;&gt; Why does this need to be optional? How is nullopt different from an empty set here?
&gt; 
&gt; I was making a mechanical change here to use OptionSet&lt;DragOperation&gt; in place of just DragOperation&gt;.
&gt; 
&gt; I will change it from Optional&lt;OptionSet&lt;DragOperation&gt;&gt; to OptionSet&lt;DragOperation&gt; since nullopt doesn&apos;t seem different from the empty set.

Actually, nullopt may be significant.  Need to study the code a bit more.  (I&quot;d prefer not to change the behavior in this patch, though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658607</commentid>
    <comment_count>9</comment_count>
      <attachid>400892</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-02 21:39:53 -0700</bug_when>
    <thetext>Created attachment 400892
Patch v4

Patch v4 addresses Darin&apos;s comment about defaultOperationForDrag() returning Optional&lt;DragOperation&gt;.  Pulling that thread (and then removing all uses of DragOperationNone basically converted every DragOperation return type into Optional&lt;DragOperation&gt; to replace the ability to use DragOperationNone.

I haven&apos;t addressed the issue of Optional&lt;OptionSet&lt;DragOperation&gt;&gt; as the above was more than enough to work through today.

This patch builds with macOS Debug.  I expect build failures for other platforms as I made a lot of changes to get rid of DragOperationNone.  (ChangeLogs are not up-to-date, so please ignore them.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658611</commentid>
    <comment_count>10</comment_count>
      <attachid>400892</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-02 21:48:45 -0700</bug_when>
    <thetext>Comment on attachment 400892
Patch v4

Need to rebase the patch after Wenson&apos;s changes to DragController that he warned me about on Slack.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658620</commentid>
    <comment_count>11</comment_count>
      <attachid>400897</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-02 22:14:52 -0700</bug_when>
    <thetext>Created attachment 400897
Patch v5

Same as Patch v4 but rebased past DragController.{cpp,h} changes in r262469.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658661</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-06-03 03:34:49 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658824</commentid>
    <comment_count>13</comment_count>
      <attachid>400952</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 11:56:52 -0700</bug_when>
    <thetext>Created attachment 400952
Patch v6

Try to make GTK and Win/WinCairo ports build.

Still haven&apos;t fixed Optional&lt;OptionSet&lt;DragOperation&gt;&gt; yet.  Looking into that while EWS bots chew on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658835</commentid>
    <comment_count>14</comment_count>
      <attachid>400957</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 12:18:35 -0700</bug_when>
    <thetext>Created attachment 400957
Patch v7

Still trying to fix style, GTK and Win/WinCairo build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658878</commentid>
    <comment_count>15</comment_count>
      <attachid>400969</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 14:38:57 -0700</bug_when>
    <thetext>Created attachment 400969
Patch v8

Try to fix GTK build.  WinCairo build looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658893</commentid>
    <comment_count>16</comment_count>
      <attachid>400971</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 15:30:50 -0700</bug_when>
    <thetext>Created attachment 400971
Patch v9

Hopefully the last build fix for GTK.  WinCairo is building.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658911</commentid>
    <comment_count>17</comment_count>
      <attachid>400977</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 16:03:01 -0700</bug_when>
    <thetext>Created attachment 400977
Patch v10

Same as Patch v9, but changed Optional&lt;OptionSet&lt;DragOperation&gt;&gt; to OptionSet&lt;DragOperation&gt; in struct EventHandler::DragTargetResponse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658943</commentid>
    <comment_count>18</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 18:36:40 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #17)
&gt; Created attachment 400977 [details]
&gt; Patch v10
&gt; 
&gt; Same as Patch v9, but changed Optional&lt;OptionSet&lt;DragOperation&gt;&gt; to
&gt; OptionSet&lt;DragOperation&gt; in struct EventHandler::DragTargetResponse.

Turns out the Optional&lt;&gt; is significant as two mac-wk1 tests fail when I removed it:

fast/events/drag-and-drop.html
fast/events/prevent-drag-to-navigate.html

So we have to keep Optional&lt;OptionSet&lt;DragOperation&gt;&gt; for now.

Patch v9 seems like a winner (other than fast/css/user-drag-none.html crashing).  Need to figure out what I broke between Patch v7 and Patch v9.  Sigh.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658944</commentid>
    <comment_count>19</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 18:42:13 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #18)
&gt; Patch v9 seems like a winner (other than fast/css/user-drag-none.html
&gt; crashing).  Need to figure out what I broke between Patch v7 and Patch v9. 
&gt; Sigh.

No changes to Windows code (only GTK code) between Patch v7 and Patch v9.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658989</commentid>
    <comment_count>20</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 22:15:20 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #19)
&gt; (In reply to David Kilzer (:ddkilzer) from comment #18)
&gt; &gt; Patch v9 seems like a winner (other than fast/css/user-drag-none.html
&gt; &gt; crashing).  Need to figure out what I broke between Patch v7 and Patch v9. 
&gt; &gt; Sigh.
&gt; 
&gt; No changes to Windows code (only GTK code) between Patch v7 and Patch v9.

The crash was in code outside of WebKit, and it didn&apos;t reproduce, so I&apos;m sure if this patch caused it.

Run: &lt;https://ews-build.webkit.org/#/builders/10/builds/20183&gt;
First results:  &lt;https://ews-build.webkit.org/results/Windows-EWS/r400971-20183/results.html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658990</commentid>
    <comment_count>21</comment_count>
      <attachid>400998</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 22:17:21 -0700</bug_when>
    <thetext>Created attachment 400998
Patch v11</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658991</commentid>
    <comment_count>22</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 22:18:26 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #21)
&gt; Created attachment 400998 [details]
&gt; Patch v11

Same as Patch v9 but with updated ChangeLogs.

Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658992</commentid>
    <comment_count>23</comment_count>
      <attachid>400998</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 22:19:21 -0700</bug_when>
    <thetext>Comment on attachment 400998
Patch v11

Well, except for the typo I made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658993</commentid>
    <comment_count>24</comment_count>
      <attachid>400999</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-03 22:23:00 -0700</bug_when>
    <thetext>Created attachment 400999
Patch v12</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659144</commentid>
    <comment_count>25</comment_count>
      <attachid>401035</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-04 10:15:57 -0700</bug_when>
    <thetext>Created attachment 401035
Patch v13

Identical to Patch v12, but re-posting to avoid a revision with 120+ failing WPT tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659146</commentid>
    <comment_count>26</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-04 10:16:31 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #25)
&gt; Created attachment 401035 [details]
&gt; Patch v13
&gt; 
&gt; Identical to Patch v12, but re-posting to avoid a revision with 120+ failing
&gt; WPT tests.

This patch is still ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659158</commentid>
    <comment_count>27</comment_count>
      <attachid>401035</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-04 10:39:50 -0700</bug_when>
    <thetext>Comment on attachment 401035
Patch v13

Why do we have both EnumTraits and OptionSetTraits for this enum?
Why didn&apos;t you make DragOperation an enum class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659221</commentid>
    <comment_count>28</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-04 11:47:36 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #27)
&gt; Comment on attachment 401035 [details]
&gt; Patch v13
&gt; 
&gt; Why do we have both EnumTraits and OptionSetTraits for this enum?

Because CoreIPC transmits both Optional&lt;DragOperation&gt; and OptionSet&lt;DragOperation&gt; types.

&gt; Why didn&apos;t you make DragOperation an enum class?

Because this patch was already over 100 KB, and I didn&apos;t want to complicate it further.  I was going to fix that in a follow-up patch.  I can make the change here if you&apos;d l;ke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659232</commentid>
    <comment_count>29</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-04 12:03:08 -0700</bug_when>
    <thetext>(In reply to David Kilzer (:ddkilzer) from comment #28)
&gt; (In reply to Alex Christensen from comment #27)
&gt; &gt; Comment on attachment 401035 [details]
&gt; &gt; Patch v13
&gt; &gt; 
&gt; &gt; Why do we have both EnumTraits and OptionSetTraits for this enum?
&gt; 
&gt; Because CoreIPC transmits both Optional&lt;DragOperation&gt; and
&gt; OptionSet&lt;DragOperation&gt; types.

Trying to anticipate your next question:  &quot;Why are you using both Optional&lt;DragOperation&gt; and OptionSet&lt;DragOperation&gt;?&quot;

The reason I&apos;m using both is that I let the code tell me which one it needed as I did the refactoring.

Optional&lt;DragOperation&gt; means the code wants a single DragOperation value (not multiple values), but it may or may not be set (since we removed DragOperationNone).

OptionSet&lt;DragOperation&gt; means the code wants one or more DragOperation values.

This is my second attempt at this refactoring.  The first attempt used OptionSet&lt;DragOperation&gt; everywhere, and it didn&apos;t feel correct since there were places where I wanted to know if a single DragOperation value was being used, so it didn&apos;t make sense to pass an OptionSet&lt;DragOperation&gt; into that code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659689</commentid>
    <comment_count>30</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-05 10:43:10 -0700</bug_when>
    <thetext>Still ready for review:
&lt;https://bugs.webkit.org/attachment.cgi?id=401035&amp;action=review&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659706</commentid>
    <comment_count>31</comment_count>
      <attachid>401035</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-05 11:20:57 -0700</bug_when>
    <thetext>Comment on attachment 401035
Patch v13

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

&gt; Source/WebCore/dom/DataTransfer.cpp:626
&gt; +    if ((isGenericMove &amp;&amp; operationMask.containsAll({ DragOperationCopy, DragOperationLink })) || operationMask == anyDragOperation())
&gt;          return &quot;all&quot;;

Seems like we should refine and write this differently; doesn’t seem like we literally want to be checking &quot;== any&quot; although we do want to preserve behavior. Maybe a containsAll call with the appropriate operations.

&gt; Source/WebCore/page/DragActions.h:64
&gt;  typedef enum {

Even if not converting to enum class, should really change typedef enum { } &lt;name&gt; to just enum &lt;name&gt;.

&gt; Source/WebCore/page/DragController.cpp:701
&gt; +    if (sourceOperationMask == anyDragOperation())
&gt;          return DragOperationCopy;

While this does preserve behavior, this is peculiar. There must be a better way to preserve this behavior that doesn’t involve literally checking against &quot;any&quot;. Can refine later, I guess.

&gt; Source/WebCore/page/EventHandler.cpp:2353
&gt; +        case DragOperationCopy:
&gt; +            return &quot;copy&quot;_s;

If the default is &quot;copy&quot;, maybe leave this case out.

&gt; Source/WebCore/page/EventHandler.cpp:2385
&gt; +            auto operationFromKeyword = convertDropZoneOperationToDragOperation(keywords[i]);
&gt; +            if (operationFromKeyword) {

Put the declaration inside the if?

&gt; Source/WebCore/page/win/DragControllerWin.cpp:47
&gt; +    // FIXME: to match the macos behaviour we should return WTF::nullopt.

Capitalize &quot;to&quot;? Change &quot;macos&quot; to &quot;macOS&quot;?

&gt; Source/WebCore/platform/gtk/GtkUtilities.cpp:159
&gt; -    // We have no good way to detect DragOperationEvery other than
&gt; +    // We have no good way to detect anyDragOperation() other than
&gt;      // to use it when all applicable flags are on.
&gt;      if (gdkAction &amp; GDK_ACTION_COPY
&gt;          &amp;&amp; gdkAction &amp; GDK_ACTION_MOVE
&gt;          &amp;&amp; gdkAction &amp; GDK_ACTION_LINK)
&gt; -        return DragOperationEvery;
&gt; +        return anyDragOperation();

Unclear why this code is helpful. We should remove it unless there is some benefit.

&gt; Source/WebCore/platform/gtk/GtkUtilities.cpp:176
&gt; -    if (coreAction == DragOperationNone)
&gt; +    if (coreAction.isEmpty())
&gt;          return static_cast&lt;GdkDragAction&gt;(gdkAction);

This is unneeded. Code below will already do this without adding a special case for empty.

&gt; Source/WebCore/platform/gtk/GtkUtilities.cpp:190
&gt; +    if (coreAction == anyDragOperation() || coreAction.contains(DragOperationCopy))

This is redundant. No need to check against anyDragOperation(). Just checking contains(Copy) will do the same thing.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7312
&gt; +        if (*operation &amp; WebCore::DragOperationMove)
&gt; +            return UIDropOperationMove;
&gt; +        if (*operation &amp; WebCore::DragOperationCopy)
&gt; +            return UIDropOperationCopy;

This should be ==, not &amp;, since it is an operation, not an OptionSet of operations.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7317
&gt; +static OptionSet&lt;WebCore::DragOperation&gt; coreDragOperationForUIDropOperation(UIDropOperation dropOperation)

Why does this return a set? It seems like it’s translating a single operation into a set. Doesn’t make sense to me.

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7446
&gt; +    _page-&gt;dragEnded(WebCore::roundedIntPoint(client), WebCore::roundedIntPoint(global), currentDragOperation ? *currentDragOperation : OptionSet&lt;WebCore::DragOperation&gt;({ }));

We should teach OptionSet to construct from an Optional, so we don’t need to write this out, since it’s true for any Optional/OptionSet. Maybe as a cleanup pass after this patch, or in the patch would be OK too.

&gt; Source/WebKitLegacy/mac/WebView/WebHTMLView.mm:4236
&gt; +    if (operationMask == WebCore::anyDragOperation())
&gt; +        return NSDragOperationEvery;

I suggest leaving this out. Should be fine to not literally have it be NSDragOperationEvery, but only include the actual operations.

&gt; Source/WebKitLegacy/mac/WebView/WebViewInternal.h:95
&gt; +typedef NSDragOperation CocoaDragOperation;

How about using instead of typedef? This is for C++ only, so we don’t need something C understands.

&gt; Source/WebKitLegacy/mac/WebView/WebViewInternal.h:97
&gt; +typedef uint64_t CocoaDragOperation;

Ditto.

&gt; Source/WebKitLegacy/mac/WebView/WebViewInternal.h:98
&gt; +#endif // USE(APPKIT)

On such a small #if/#endif pair the comment on #endif feels like nonhelpful clutter.

&gt; Source/WebKitLegacy/win/WebCoreSupport/WebDragClient.cpp:174
&gt;              if (effect &amp; DROPEFFECT_COPY)
&gt; -                operation = DragOperationCopy;
&gt; +                operationMask = DragOperationCopy;
&gt;              else if (effect &amp; DROPEFFECT_LINK)
&gt; -                operation = DragOperationLink;
&gt; +                operationMask = DragOperationLink;
&gt;              else if (effect &amp; DROPEFFECT_MOVE)
&gt; -                operation = DragOperationMove;
&gt; +                operationMask = DragOperationMove;

Seems like this should not have else, and this should be adding instead of assigning. But that would be a behavior change. But otherwise this is not really an operation mask, it’s just pretending to be.

&gt; Source/WebKitLegacy/win/WebView.cpp:5845
&gt; +static DWORD dragOperationToDragCursor(Optional&lt;DragOperation&gt; operationMask)

An Optional&lt;DragOperation&gt; is not a &quot;mask&quot;; that would be an OptionSet.

&gt; Source/WebKitLegacy/win/WebView.cpp:5851
&gt; +    if (*operationMask &amp; DragOperationCopy)

This should be ==, not &amp;, since this is a value, not a mask.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659863</commentid>
    <comment_count>32</comment_count>
      <attachid>401035</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-05 17:24:20 -0700</bug_when>
    <thetext>Comment on attachment 401035
Patch v13

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

If I made the suggested change, I did _not_ note it below for brevity.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:626
&gt;&gt;          return &quot;all&quot;;
&gt; 
&gt; Seems like we should refine and write this differently; doesn’t seem like we literally want to be checking &quot;== any&quot; although we do want to preserve behavior. Maybe a containsAll call with the appropriate operations.

I could change this to operationMask.containsAll(anyDragOperation()).  Is that better?

I don&apos;t think it makes sense to list out every operation _again_ since we already do it for WTF::OptionSetTraits&lt;&gt;() and anyDragOperation() in DragActions.h.

I could add a method on OptionSet&lt;DragOperation&gt; that would do this check without having to list out all the operations (assuming an OptionSetTraits&lt;&gt; exists for the enum), but I&apos;m not sure what to call it.  Maybe OptionSet&lt;&gt;::hasAll() or ::hasAllBitsSet()?

&gt;&gt; Source/WebCore/page/DragController.cpp:701
&gt;&gt;          return DragOperationCopy;
&gt; 
&gt; While this does preserve behavior, this is peculiar. There must be a better way to preserve this behavior that doesn’t involve literally checking against &quot;any&quot;. Can refine later, I guess.

Using sourceOperationMask.containsAll(anyDragOperation()) as above for consistency.

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:7317
&gt;&gt; +static OptionSet&lt;WebCore::DragOperation&gt; coreDragOperationForUIDropOperation(UIDropOperation dropOperation)
&gt; 
&gt; Why does this return a set? It seems like it’s translating a single operation into a set. Doesn’t make sense to me.

Will change to return Optional&lt;DragOperation&gt; and use the new OptionSet(Optional) constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659865</commentid>
    <comment_count>33</comment_count>
      <attachid>401219</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-05 17:38:45 -0700</bug_when>
    <thetext>Created attachment 401219
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659868</commentid>
    <comment_count>34</comment_count>
      <attachid>401035</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-05 18:00:23 -0700</bug_when>
    <thetext>Comment on attachment 401035
Patch v13

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

&gt;&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:626
&gt;&gt;&gt;          return &quot;all&quot;;
&gt;&gt; 
&gt;&gt; Seems like we should refine and write this differently; doesn’t seem like we literally want to be checking &quot;== any&quot; although we do want to preserve behavior. Maybe a containsAll call with the appropriate operations.
&gt; 
&gt; I could change this to operationMask.containsAll(anyDragOperation()).  Is that better?
&gt; 
&gt; I don&apos;t think it makes sense to list out every operation _again_ since we already do it for WTF::OptionSetTraits&lt;&gt;() and anyDragOperation() in DragActions.h.
&gt; 
&gt; I could add a method on OptionSet&lt;DragOperation&gt; that would do this check without having to list out all the operations (assuming an OptionSetTraits&lt;&gt; exists for the enum), but I&apos;m not sure what to call it.  Maybe OptionSet&lt;&gt;::hasAll() or ::hasAllBitsSet()?

I do think that a containsAll that lists all the current values is better. There’s no reason to assume that if we add another in the future that the behavior of this code should implicitly change.

I don’t think we really want to be checking for anyDragOperation here. It’s likely just sloppy programming. Do we really mean all of &quot;copy, link, generic, private, move, and delete&quot;? Seems highly unlikely.

It’s inappropriate for this to include all the bits in the OptionSet. If we added a new bit, it&apos;s highly unlikely that it would be meaningful on Windows. For example, seems almost certain that &quot;delete&quot; doesn’t matter one way or the other.

&gt;&gt;&gt; Source/WebCore/page/DragController.cpp:701
&gt;&gt;&gt;          return DragOperationCopy;
&gt;&gt; 
&gt;&gt; While this does preserve behavior, this is peculiar. There must be a better way to preserve this behavior that doesn’t involve literally checking against &quot;any&quot;. Can refine later, I guess.
&gt; 
&gt; Using sourceOperationMask.containsAll(anyDragOperation()) as above for consistency.

Same comment as above. I’m almost certain that a mask that includes everything except for &quot;Private&quot;, for example, or everything except for &quot;Delete&quot; should not cause this to function return DragOperationMove instead of DragOperationCopy.

It’s fine to preserve behavior, but it’s really nonsense logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659869</commentid>
    <comment_count>35</comment_count>
      <attachid>401035</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-05 18:01:59 -0700</bug_when>
    <thetext>Comment on attachment 401035
Patch v13

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:626
&gt;&gt;&gt;&gt;          return &quot;all&quot;;
&gt;&gt;&gt; 
&gt;&gt;&gt; Seems like we should refine and write this differently; doesn’t seem like we literally want to be checking &quot;== any&quot; although we do want to preserve behavior. Maybe a containsAll call with the appropriate operations.
&gt;&gt; 
&gt;&gt; I could change this to operationMask.containsAll(anyDragOperation()).  Is that better?
&gt;&gt; 
&gt;&gt; I don&apos;t think it makes sense to list out every operation _again_ since we already do it for WTF::OptionSetTraits&lt;&gt;() and anyDragOperation() in DragActions.h.
&gt;&gt; 
&gt;&gt; I could add a method on OptionSet&lt;DragOperation&gt; that would do this check without having to list out all the operations (assuming an OptionSetTraits&lt;&gt; exists for the enum), but I&apos;m not sure what to call it.  Maybe OptionSet&lt;&gt;::hasAll() or ::hasAllBitsSet()?
&gt; 
&gt; I do think that a containsAll that lists all the current values is better. There’s no reason to assume that if we add another in the future that the behavior of this code should implicitly change.
&gt; 
&gt; I don’t think we really want to be checking for anyDragOperation here. It’s likely just sloppy programming. Do we really mean all of &quot;copy, link, generic, private, move, and delete&quot;? Seems highly unlikely.
&gt; 
&gt; It’s inappropriate for this to include all the bits in the OptionSet. If we added a new bit, it&apos;s highly unlikely that it would be meaningful on Windows. For example, seems almost certain that &quot;delete&quot; doesn’t matter one way or the other.

Basically: Using a form of &quot;any&quot; makes code that is doing what is likely an incorrect operation look logical, but falsely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659870</commentid>
    <comment_count>36</comment_count>
      <attachid>401035</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-05 18:02:00 -0700</bug_when>
    <thetext>Comment on attachment 401035
Patch v13

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:626
&gt;&gt;&gt;&gt;          return &quot;all&quot;;
&gt;&gt;&gt; 
&gt;&gt;&gt; Seems like we should refine and write this differently; doesn’t seem like we literally want to be checking &quot;== any&quot; although we do want to preserve behavior. Maybe a containsAll call with the appropriate operations.
&gt;&gt; 
&gt;&gt; I could change this to operationMask.containsAll(anyDragOperation()).  Is that better?
&gt;&gt; 
&gt;&gt; I don&apos;t think it makes sense to list out every operation _again_ since we already do it for WTF::OptionSetTraits&lt;&gt;() and anyDragOperation() in DragActions.h.
&gt;&gt; 
&gt;&gt; I could add a method on OptionSet&lt;DragOperation&gt; that would do this check without having to list out all the operations (assuming an OptionSetTraits&lt;&gt; exists for the enum), but I&apos;m not sure what to call it.  Maybe OptionSet&lt;&gt;::hasAll() or ::hasAllBitsSet()?
&gt; 
&gt; I do think that a containsAll that lists all the current values is better. There’s no reason to assume that if we add another in the future that the behavior of this code should implicitly change.
&gt; 
&gt; I don’t think we really want to be checking for anyDragOperation here. It’s likely just sloppy programming. Do we really mean all of &quot;copy, link, generic, private, move, and delete&quot;? Seems highly unlikely.
&gt; 
&gt; It’s inappropriate for this to include all the bits in the OptionSet. If we added a new bit, it&apos;s highly unlikely that it would be meaningful on Windows. For example, seems almost certain that &quot;delete&quot; doesn’t matter one way or the other.

Basically: Using a form of &quot;any&quot; makes code that is doing what is likely an incorrect operation look logical, but falsely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659879</commentid>
    <comment_count>37</comment_count>
      <attachid>401035</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-05 18:42:19 -0700</bug_when>
    <thetext>Comment on attachment 401035
Patch v13

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:626
&gt;&gt;&gt;&gt;&gt;&gt;          return &quot;all&quot;;
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Seems like we should refine and write this differently; doesn’t seem like we literally want to be checking &quot;== any&quot; although we do want to preserve behavior. Maybe a containsAll call with the appropriate operations.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I could change this to operationMask.containsAll(anyDragOperation()).  Is that better?
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I don&apos;t think it makes sense to list out every operation _again_ since we already do it for WTF::OptionSetTraits&lt;&gt;() and anyDragOperation() in DragActions.h.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I could add a method on OptionSet&lt;DragOperation&gt; that would do this check without having to list out all the operations (assuming an OptionSetTraits&lt;&gt; exists for the enum), but I&apos;m not sure what to call it.  Maybe OptionSet&lt;&gt;::hasAll() or ::hasAllBitsSet()?
&gt;&gt;&gt; 
&gt;&gt;&gt; I do think that a containsAll that lists all the current values is better. There’s no reason to assume that if we add another in the future that the behavior of this code should implicitly change.
&gt;&gt;&gt; 
&gt;&gt;&gt; I don’t think we really want to be checking for anyDragOperation here. It’s likely just sloppy programming. Do we really mean all of &quot;copy, link, generic, private, move, and delete&quot;? Seems highly unlikely.
&gt;&gt;&gt; 
&gt;&gt;&gt; It’s inappropriate for this to include all the bits in the OptionSet. If we added a new bit, it&apos;s highly unlikely that it would be meaningful on Windows. For example, seems almost certain that &quot;delete&quot; doesn’t matter one way or the other.
&gt;&gt; 
&gt;&gt; Basically: Using a form of &quot;any&quot; makes code that is doing what is likely an incorrect operation look logical, but falsely.
&gt; 
&gt; Basically: Using a form of &quot;any&quot; makes code that is doing what is likely an incorrect operation look logical, but falsely.

Okay, I&apos;ll add the individual values in both places.

&gt;&gt;&gt;&gt; Source/WebCore/page/DragController.cpp:701
&gt;&gt;&gt;&gt;          return DragOperationCopy;
&gt;&gt;&gt; 
&gt;&gt;&gt; While this does preserve behavior, this is peculiar. There must be a better way to preserve this behavior that doesn’t involve literally checking against &quot;any&quot;. Can refine later, I guess.
&gt;&gt; 
&gt;&gt; Using sourceOperationMask.containsAll(anyDragOperation()) as above for consistency.
&gt; 
&gt; Same comment as above. I’m almost certain that a mask that includes everything except for &quot;Private&quot;, for example, or everything except for &quot;Delete&quot; should not cause this to function return DragOperationMove instead of DragOperationCopy.
&gt; 
&gt; It’s fine to preserve behavior, but it’s really nonsense logic.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659880</commentid>
    <comment_count>38</comment_count>
      <attachid>401222</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-05 18:42:38 -0700</bug_when>
    <thetext>Created attachment 401222
Patch for landing v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659963</commentid>
    <comment_count>39</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-06 08:17:36 -0700</bug_when>
    <thetext>Committed r262680: &lt;https://trac.webkit.org/changeset/262680&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401222.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659964</commentid>
    <comment_count>40</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-06 08:18:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/64069089&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659965</commentid>
    <comment_count>41</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-06 08:18:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/64069091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659971</commentid>
    <comment_count>42</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2020-06-06 09:13:24 -0700</bug_when>
    <thetext>(In reply to EWS from comment #39)
&gt; Committed r262680: &lt;https://trac.webkit.org/changeset/262680&gt;
&gt; 
&gt; All reviewed patches have been landed. Closing bug and clearing flags on
&gt; attachment 401222 [details].

Follow-up fix (to address two missed &quot;== anyDragOperation()&quot; uses):
Committed r262681: &lt;https://trac.webkit.org/changeset/262681&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400783</attachid>
            <date>2020-06-01 22:09:15 -0700</date>
            <delta_ts>2020-06-01 22:18:01 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-212605-v1.diff</filename>
            <type>text/plain</type>
            <size>83974</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDAzMGRmZmI4Ni4uZTY3NWEwZDljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb24g
dHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODQ2M2E0OGU5NzQuLmI3
ODBhYTg1Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNDg4LDE4ICs0
ODgsMTggQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3Rh
cnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICByZXR1cm4gZGF0YVRyYW5zZmVy
OwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0
ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVz
KQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2Fy
ZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJh
Z2dpbmdGaWxlcykKIHsKICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0
YVRyYW5zZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0
ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpE
cmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihz
b3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRp
ZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0
dXJuIGRhdGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJj
ZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQog
ewogICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0
YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJh
Z2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERh
dGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRp
b24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVy
YXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3Vt
ZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFu
c2ZlcjsKIH0KQEAgLTU5NSw3NCArNTk1LDc0IEBAIHZvaWQgRHJhZ0ltYWdlTG9hZGVyOjppbWFn
ZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KikKICAgICBtX2RhdGFUcmFuc2Zl
ci0+dXBkYXRlRHJhZ0ltYWdlKCk7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRyYWdPcEZy
b21JRU9wKGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQorc3RhdGljIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHsKICAgICBp
ZiAob3BlcmF0aW9uID09ICJ1bmluaXRpYWxpemVkIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVy
YXRpb25FdmVyeTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKICAgICBpZiAo
b3BlcmF0aW9uID09ICJub25lIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwor
ICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTm9uZSB9OwogICAgIGlmIChvcGVyYXRpb24g
PT0gImNvcHkiKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJl
dHVybiB7IERyYWdPcGVyYXRpb25Db3B5IH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGluayIp
Ci0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgcmV0dXJuIHsgRHJh
Z09wZXJhdGlvbkxpbmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJtb3ZlIikKLSAgICAgICAg
cmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRp
b25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVy
YXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAgICAgICBy
ZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxp
bmspOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxp
bmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TW92ZSIpCi0gICAgICAgIHJldHVybiAo
RHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8
IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHks
IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9OwogICAgIGlmIChvcGVy
YXRpb24gPT0gImxpbmtNb3ZlIikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFn
T3BlcmF0aW9uTGluayB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUp
OworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVy
aWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiYWxsIikKLSAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlv
blByaXZhdGU7IC8vIHJlYWxseSBhIG1hcmtlciBmb3IgIm5vIGNvbnZlcnNpb24iCisgICAgICAg
IHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvblBy
aXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikK
K3N0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb24g
JiAoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgYm9vbCBp
c0dlbmVyaWNNb3ZlID0gb3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb25H
ZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KTsKIAotICAgIGlmICgoaXNHZW5lcmljTW92ZSAm
JiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uTGluaykpIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYg
KChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNv
cHkpICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKSB8fCBvcGVy
YXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuICJhbGwiOwot
ICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkp
CisgICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3Bl
cmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiAiY29weU1vdmUiOwotICAgIGlmIChpc0dlbmVy
aWNNb3ZlICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpCisgICAgaWYgKGlzR2Vu
ZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAg
ICAgICAgIHJldHVybiAibGlua01vdmUiOwotICAgIGlmICgob3BlcmF0aW9uICYgRHJhZ09wZXJh
dGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpCisgICAgaWYgKG9w
ZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlv
bkxpbmsgfSkpCiAgICAgICAgIHJldHVybiAiY29weUxpbmsiOwogICAgIGlmIChpc0dlbmVyaWNN
b3ZlKQogICAgICAgICByZXR1cm4gIm1vdmUiOwotICAgIGlmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uQ29weSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkpCiAgICAgICAgIHJldHVybiAiY29weSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25MaW5rKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25MaW5rKSkKICAgICAgICAgcmV0dXJuICJsaW5rIjsKICAgICByZXR1cm4gIm5vbmUiOwogfQog
Ci1EcmFnT3BlcmF0aW9uIERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uKCkgY29uc3QKK09w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiBEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJhdGlvbk1hc2so
KSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gZHJhZ09wRnJvbUlFT3Ao
bV9lZmZlY3RBbGxvd2VkKTsKLSAgICBBU1NFUlQob3BlcmF0aW9uICE9IERyYWdPcGVyYXRpb25Q
cml2YXRlKTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9
IGRyYWdPcEZyb21JRU9wKG1fZWZmZWN0QWxsb3dlZCk7CisgICAgQVNTRVJUKG9wZXJhdGlvbk1h
c2sgIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwog
fQogCi1EcmFnT3BlcmF0aW9uIERhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24oKSBj
b25zdAorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25P
cGVyYXRpb25NYXNrKCkgY29uc3QKIHsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGRy
YWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7Ci0gICAgQVNTRVJUKG9wZXJhdGlvbiA9PSBEcmFn
T3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwgb3BlcmF0
aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSAoRHJhZ09wZXJhdGlvbiko
RHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSkgfHwgb3BlcmF0aW9uID09
IERyYWdPcGVyYXRpb25FdmVyeSk7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbjsKKyAgICBhdXRvIG9w
ZXJhdGlvbk1hc2sgPSBkcmFnT3BGcm9tSUVPcChtX2Ryb3BFZmZlY3QpOworICAgIEFTU0VSVChv
cGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0
eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFz
ayA9PSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJh
Z09wZXJhdGlvbk1vdmUgfSkgfHwgb3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkp
OworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCi12b2lkIERhdGFUcmFuc2Zlcjo6c2V0
U291cmNlT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQordm9pZCBEYXRhVHJhbnNm
ZXI6OnNldFNvdXJjZU9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJh
dGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiAhPSBEcmFn
T3BlcmF0aW9uUHJpdmF0ZSk7Ci0gICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZyb21EcmFnT3Ao
b3BlcmF0aW9uKTsKKyAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sg
IT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIG1fZWZmZWN0QWxsb3dlZCA9IElFT3BGcm9t
RHJhZ09wKG9wZXJhdGlvbk1hc2spOwogfQogCi12b2lkIERhdGFUcmFuc2Zlcjo6c2V0RGVzdGlu
YXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBv
cGVyYXRpb25NYXNrKQogewotICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uLCBvcGVyYXRpb24gPT0g
RHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Ob25lIHx8IG9w
ZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlv
bkdlbmVyaWMgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Nb3ZlIHx8IG9wZXJhdGlvbiA9
PSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92
ZSkpOwotICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbik7CisgICAg
QVNTRVJUX0FSRyhvcGVyYXRpb25NYXNrLCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25D
b3B5IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09w
ZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8fCBv
cGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Nb3ZlIHx8IG9wZXJhdGlvbk1hc2sgPT0gT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRp
b25Nb3ZlIH0pKTsKKyAgICBtX2Ryb3BFZmZlY3QgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb25N
YXNrKTsKIH0KIAogU3RyaW5nIERhdGFUcmFuc2Zlcjo6ZHJvcEVmZmVjdCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmgKaW5kZXggZTVjZmFmODU2ZmIuLjBlNzQ4MGExZjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCkBAIC04OCwxNSArODgsMTUgQEAgcHVibGljOgogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0
ZUZvckRyYWcoKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4g
Y3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHN0YXRpYyBSZWY8
RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFn
Z2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChj
b25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJv
b2wgZHJhZ2dpbmdGaWxlcyk7CiAKICAgICBib29sIGRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQo
KSBjb25zdCB7IHJldHVybiBtX2Ryb3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiOyB9CiAKLSAg
ICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbigpIGNvbnN0OwotICAgIERyYWdPcGVyYXRp
b24gZGVzdGluYXRpb25PcGVyYXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldFNvdXJjZU9wZXJh
dGlvbihEcmFnT3BlcmF0aW9uKTsKLSAgICB2b2lkIHNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERy
YWdPcGVyYXRpb24pOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrKCkgY29uc3Q7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRlc3RpbmF0aW9u
T3BlcmF0aW9uTWFzaygpIGNvbnN0OworICAgIHZvaWQgc2V0U291cmNlT3BlcmF0aW9uTWFzayhP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4pOworICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRp
b25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CiAKICAgICB2b2lkIHNldERyYWdIYXNT
dGFydGVkKCkgeyBtX3Nob3VsZFVwZGF0ZURyYWdJbWFnZSA9IHRydWU7IH0KICAgICBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBkcmFnTG9jYXRpb24pIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGE5MjNjYWU1OGNiLi4zYjY2MjEzNjFjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAtNjAsNyArNjAsNyBAQCB0eXBlZGVmIGVudW0g
ewogICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAogfSBEcmFnU291
cmNlQWN0aW9uOwogCi0vLyBNYXRjaGVzIE5TRHJhZ09wZXJhdGlvbi4KKy8vIFNlZSBOU0RyYWdP
cGVyYXRpb24sIFVJRHJhZ09wZXJhdGlvbiBhbmQgVUlEcm9wT3BlcmF0aW9uLgogdHlwZWRlZiBl
bnVtIHsKICAgICBEcmFnT3BlcmF0aW9uTm9uZSAgICA9IDAsCiAgICAgRHJhZ09wZXJhdGlvbkNv
cHkgICAgPSAxLApAQCAtNjksOSArNjksMTMgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBEcmFnT3Bl
cmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAgRHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwKICAgICBE
cmFnT3BlcmF0aW9uRGVsZXRlICA9IDMyLAotICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlO
VF9NQVgKIH0gRHJhZ09wZXJhdGlvbjsKIAorY29uc3RleHByIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkKK3sKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29w
eSwgRHJhZ09wZXJhdGlvbkxpbmssIERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1vdmUsIERyYWdPcGVyYXRpb25EZWxldGUgfTsKK30KKwog
ZW51bSBjbGFzcyBNYXlFeHRlbmREcmFnU2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVt
IGNsYXNzIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA6IGJvb2wgeyBObywgWWVzIH07CiBl
bnVtIGNsYXNzIERyYWdIYW5kbGluZ01ldGhvZCA6IHVpbnQ4X3QgeyBOb25lLCBFZGl0UGxhaW5U
ZXh0LCBFZGl0UmljaFRleHQsIFVwbG9hZEZpbGUsIFBhZ2VMb2FkLCBTZXRDb2xvciwgTm9uRGVm
YXVsdCB9OwpAQCAtOTMsNiArOTcsMTkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2Q+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Db3B5LAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluaywKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Qcml2YXRlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZQorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiB7
CiAgICAgdXNpbmcgdmFsdWVzID0gT3B0aW9uU2V0VmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24sCkBAIC0xMDIsNCArMTE5LDE3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAg
ICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CisgICAg
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25Ob25lLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSwKKyAgICAgICAgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkxpbmssCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25H
ZW5lcmljLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSwKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25EZWxldGUKKyAgICA+OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGUzYTg5MDFhNDg1Li43NDQxZDBjYjllMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTY5MywyMSArNjkzLDIxIEBA
IGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gZGVmYXVs
dE9wZXJhdGlvbkZvckRyYWcoRHJhZ09wZXJhdGlvbiBzcmNPcE1hc2spCitzdGF0aWMgRHJhZ09w
ZXJhdGlvbiBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
c291cmNlT3BlcmF0aW9uTWFzaykKIHsKICAgICAvLyBUaGlzIGlzIGRlc2lnbmVkIHRvIG1hdGNo
IElFJ3Mgb3BlcmF0aW9uIGZhbGxiYWNrIGZvciB0aGUgY2FzZSB3aGVyZQogICAgIC8vIHRoZSBw
YWdlIGNhbGxzIHByZXZlbnREZWZhdWx0KCkgaW4gYSBkcmFnIGV2ZW50IGJ1dCBkb2Vzbid0IHNl
dCBkcm9wRWZmZWN0LgotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KQor
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24oKSkKICAgICAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09w
ZXJhdGlvbk5vbmUpCisgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdP
cGVyYXRpb25Nb3ZlKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Nb3ZlKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwotICAgIGlm
IChzcmNPcE1hc2sgJiBEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBpZiAoc291cmNlT3BlcmF0
aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAgIHJldHVybiBE
cmFnQ29udHJvbGxlcjo6cGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChz
cmNPcE1hc2sgJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFz
ay5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uQ29weTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYg
KHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAg
ICByZXR1cm4gRHJhZ09wZXJhdGlvbkxpbms7CiAgICAgCiAgICAgLy8gRklYTUU6IERvZXMgSUUg
cmVhbGx5IHJldHVybiAiZ2VuZXJpYyIgZXZlbiBpZiBubyBvcGVyYXRpb25zIHdlcmUgYWxsb3dl
ZCBieSB0aGUgc291cmNlPwpAQCAtNzIyLDE3ICs3MjIsMTcgQEAgYm9vbCBEcmFnQ29udHJvbGxl
cjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYg
b3BlcmEKICAgICBpZiAoIXZpZXdQcm90ZWN0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKCk7Ci0gICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+
ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0
YSksIFsmZHJhZ0RhdGFdKCkgeyByZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoZHJhZ0RhdGEpOyB9LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMo
KSk7CisgICAgYXV0byBzb3VyY2VPcGVyYXRpb25NYXNrID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKCk7CisgICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+
ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0
YSksIFsmZHJhZ0RhdGFdKCkgeyByZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoZHJhZ0RhdGEpOyB9LCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnRGF0YS5jb250YWluc0Zp
bGVzKCkpOwogICAgIGlmICghdGFyZ2V0UmVzcG9uc2UuYWNjZXB0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbikKLSAgICAgICAgb3Bl
cmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc291cmNlT3BlcmF0aW9uKTsKLSAgICBl
bHNlIGlmICghKHNvdXJjZU9wZXJhdGlvbiAmIHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbi52YWx1
ZSgpKSkgLy8gVGhlIGVsZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBpcyBub3Qgc3Vw
cG9ydGVkIGJ5IHRoZSBzb3VyY2UKKyAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1h
c2spCisgICAgICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNvdXJjZU9w
ZXJhdGlvbk1hc2spOworICAgIGVsc2UgaWYgKCFzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5z
QW55KHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2sudmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50
IHBpY2tlZCBhbiBvcGVyYXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNl
CiAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOwogICAgIGVsc2UKLSAgICAg
ICAgb3BlcmF0aW9uID0gdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uLnZhbHVlKCk7CisgICAgICAg
IG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHRhcmdldFJlc3BvbnNlLm9wZXJh
dGlvbk1hc2sudmFsdWUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTg5OSw3ICs4OTks
NyBAQCBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoRnJhbWUmIHNyYykK
ICAgICByZXR1cm4gSW50UG9pbnQoeHBvcywgeXBvcyk7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3Bl
cmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNEYXRh
KQorYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRy
YWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNEYXRhKQogewogICAgIGlm
ICghc3JjLnZpZXcoKSB8fCAhc3JjLmNvbnRlbnRSZW5kZXJlcigpIHx8ICFzdGF0ZS5zb3VyY2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkyMiw3ICs5MjIsNyBAQCBib29sIERyYWdDb250
cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJh
Z09wZXJhdGlvbgogICAgIEludFBvaW50IG1vdXNlRHJhZ2dlZFBvaW50ID0gc3JjLnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7CiAKICAgICBtX2RyYWdnaW5n
SW1hZ2VVUkwgPSBVUkwoKTsKLSAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKKyAg
ICBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrID0gc291cmNlT3BlcmF0aW9uTWFzazsKIAogICAg
IERyYWdJbWFnZSBkcmFnSW1hZ2U7CiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKQEAgLTk0
NSw3ICs5NDUsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywg
Y29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICAvLyBTZWxlY3Rp
b24sIGltYWdlLCBhbmQgbGluayBkcmFncyByZWNlaXZlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dl
ZCBkcmFnIG9wZXJhdGlvbnMgdGhhdAogICAgICAgICAvLyBmb2xsb3dzIGZyb206CiAgICAgICAg
IC8vIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0/cmV2PTQ4NTI2I0wzNDMwCi0gICAgICAgIG1fc291cmNlRHJhZ09w
ZXJhdGlvbiA9IHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KG1fc291cmNlRHJhZ09wZXJhdGlv
biB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbkNvcHkpOworICAgICAgICBt
X3NvdXJjZURyYWdPcGVyYXRpb25NYXNrLmFkZCh7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFn
T3BlcmF0aW9uQ29weSB9KTsKICAgICB9CiAKICAgICBBU1NFUlQoc3RhdGUuc291cmNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCA5NTdmYWIxMGY2MC4uNDNiNjgwNWZj
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTcxLDcgKzcxLDcgQEAg
cHVibGljOgogICAgIC8vIGRyYWcgbG9naWMgaXMgaW4gV2ViQ29yZS4KICAgICB2b2lkIHNldERp
ZEluaXRpYXRlRHJhZyhib29sIGluaXRpYXRlZCkgeyBtX2RpZEluaXRpYXRlRHJhZyA9IGluaXRp
YXRlZDsgfQogICAgIGJvb2wgZGlkSW5pdGlhdGVEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9kaWRJ
bml0aWF0ZURyYWc7IH0KLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZURyYWdPcGVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZURyYWdPcGVyYXRpb247IH0KKyAgICBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZURyYWdPcGVyYXRpb25NYXNrOyB9CiAgICAgY29uc3QgVVJMJiBkcmFnZ2luZ0ltYWdlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ0ltYWdlVVJMOyB9CiAgICAgdm9pZCBzZXREcmFn
T2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9
CiAgICAgY29uc3QgSW50UG9pbnQmIGRyYWdPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2RyYWdP
ZmZzZXQ7IH0KQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50Jik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENh
cmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcyk7CiAKLSAgICBib29sIHN0YXJ0
RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdP
cmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CisgICAgYm9vbCBzdGFydERyYWco
RnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdP
cmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNvbnN0IElu
dFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4T3Jp
Z2luYWxJbWFnZUFyZWE7CkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7CiAg
ICAgRHJhZ1NvdXJjZUFjdGlvbiBtX2RyYWdTb3VyY2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9u
Tm9uZSB9OwogICAgIGJvb2wgbV9kaWRJbml0aWF0ZURyYWcgeyBmYWxzZSB9OwotICAgIERyYWdP
cGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9uIHsgRHJhZ09wZXJhdGlvbk5vbmUgfTsgLy8g
U2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0
aGluIFdlYktpdAorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBtX3NvdXJjZURyYWdPcGVy
YXRpb25NYXNrOyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEg
bW91c2UgZG93biB3aXRoaW4gV2ViS2l0LgogICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKICAg
ICBVUkwgbV9kcmFnZ2luZ0ltYWdlVVJMOwogICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdEcm9wIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA0YzZmYjk1ZTZj
MC4uZmNiMjU4OWEwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIz
OTYsMTkgKzIzOTYsMTkgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5vZGUmIHRhcmdldCwg
RGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCiB9CiAKIEV2ZW50SGFuZGxlcjo6RHJhZ1Rhcmdl
dFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYg
cGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdG
aWxlcykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0Zp
bGVzKQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JV
cGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0LmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCks
IHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIg
PSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCh0YXJnZXQuZG9jdW1l
bnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdG
aWxlcyk7CiAgICAgYm9vbCBhY2NlcHQgPSBkaXNwYXRjaERyYWdFdmVudChldmVudFR5cGUsIHRh
cmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQoKSk7CiAgICAgaWYgKCFhY2NlcHQpCiAgICAg
ICAgIGFjY2VwdCA9IGZpbmREcm9wWm9uZSh0YXJnZXQsIGRhdGFUcmFuc2Zlcik7CiAgICAgZGF0
YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgaWYgKGFjY2VwdCAmJiAh
ZGF0YVRyYW5zZmVyLT5kcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVy
biB7IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb24oKSB9OworICAgICAg
ICByZXR1cm4geyB0cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygp
IH07CiAgICAgcmV0dXJuIHsgYWNjZXB0LCBXVEY6Om51bGxvcHQgfTsKIH0KIAotRXZlbnRIYW5k
bGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYgbWFrZVBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitFdmVudEhhbmRsZXI6OkRyYWdU
YXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+KCk+JiBtYWtlUGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJh
bWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogICAgIGlmICghbV9mcmFtZS52aWV3KCkpCkBA
IC0yNDM4LDE5ICsyNDM4LDE5IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2
ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZy
YW1lKiB0YXJnZXRGcmFtZTsKICAgICAgICAgaWYgKHRhcmdldElzRnJhbWUobmV3VGFyZ2V0Lmdl
dCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAg
ICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVE
cmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dp
bmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRI
YW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VP
cGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJn
ZXQpIHsKICAgICAgICAgICAgIC8vIEFzIHBlciBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUg
c3BlYy4sIHdlIG11c3QgYWx3YXlzIGZpcmUgYSBkcmFnIGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBk
cmFnZW50ZXIsIGRyYWdsZWF2ZSwgb3IgZHJhZ292ZXIgZXZlbnQuCiAgICAgICAgICAgICBkaXNw
YXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVu
dCk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQ
YXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAg
ICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJvYXJkKCksIHNv
dXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBSZWN1cnNpbmcgYWdhaW4gaGVyZSBkb2Vzbid0IG1ha2Ugc2Vu
c2UgaWYgdGhlIG5ld1RhcmdldCBhbmQgbV9kcmFnVGFyZ2V0IHdlcmUgaW4gdGhlIHNhbWUgZnJh
bWUuCiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9u
c2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQs
IG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAg
ICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURy
YWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJh
Z2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0gICAgICAg
ICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdE
cm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291
cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5z
ZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFy
Z2V0LT5kb2N1bWVudCgpLCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBk
cmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnbGVhdmVFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQo
KSk7CiAgICAgICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsK
ICAgICAgICAgfQpAQCAtMjQ2NCwxMiArMjQ2NCwxMiBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJn
ZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3Jt
TQogICAgICAgICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1l
KG5ld1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0
RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVy
YXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0
RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVi
b2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxz
ZSBpZiAobmV3VGFyZ2V0KSB7CiAgICAgICAgICAgICAvLyBOb3RlLCB3aGVuIGRlYWxpbmcgd2l0
aCBzdWItZnJhbWVzLCB3ZSBtYXkgbmVlZCB0byBmaXJlIG9ubHkgYSBkcmFnb3ZlciBldmVudCBh
cyBhIGRyYWcgZXZlbnQgbWF5IGhhdmUgYmVlbiBmaXJlZCBlYXJsaWVyLgogICAgICAgICAgICAg
aWYgKCFtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCkKICAgICAgICAgICAgICAgICBkaXNw
YXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVu
dCk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnb3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBh
c3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAg
IHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygp
LmRyYWdvdmVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgICAgIG1fc2hvdWxkT25s
eUZpcmVEcmFnT3ZlckV2ZW50ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDc3LDI1
ICsyNDc3LDI1IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgcmV0dXJuIHJlc3BvbnNl
OwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVi
b2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykK
K3ZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2lu
Z0ZpbGVzKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKICAg
ICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0
LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAg
ICAgICAgdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGV2ZW50
LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOwor
ICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9w
KGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2lu
Z0ZpbGVzKTsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewogICAgICAgICBkaXNwYXRj
aEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7
CiAKLSAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVw
ZGF0aW5nRHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVi
b2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0
YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9k
cmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRp
b25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRO
YW1lcygpLmRyYWdsZWF2ZUV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVy
LmdldCgpKTsKICAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7
CiAgICAgfQogICAgIGNsZWFyRHJhZ1N0YXRlKCk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpw
ZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VP
cGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3Jt
RHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+
IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCkBAIC0yNTAzLDkgKzI1MDMsOSBAQCBib29sIEV2
ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZlbnQsIHN0ZDo6dW5pcQogICAgIGJvb2wgcHJldmVudGVkRGVmYXVsdCA9IGZhbHNlOwogICAg
IGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAg
ICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgIHByZXZlbnRlZERlZmF1bHQgPSB0
YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGV2ZW50LCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAg
ICAgICAgcHJldmVudGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJm
b3JtRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0g
ICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKG1f
ZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0
aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBh
c3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAg
cHJldmVudGVkRGVmYXVsdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcm9wRXZl
bnQsICptX2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkYXRhVHJh
bnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICB9CkBAIC0zNzI5LDEzICszNzI5
LDEzIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkaWRTdGFydERyYWcoKQogI2VuZGlmCiB9CiAKLXZv
aWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24g
bWF5RXh0ZW5kRHJhZ1Nlc3Npb24pCit2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVk
QXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGRyYWdPcGVyYXRpb25NYXNrLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFn
U2Vzc2lvbikKIHsKICAgICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVxdWVzdCBzbyB0aGF0IFJlbmRl
ckxheWVyIGdldHMgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92ZXIgYW5kIDphY3RpdmUgcHNl
dWRvY2xhc3Nlcy4KICAgICBwcmVwYXJlTW91c2VFdmVudChPcHRpb25TZXQ8SGl0VGVzdFJlcXVl
c3Q6OlJlcXVlc3RUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVz
dDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH0sIGV2ZW50KTsKIAogICAgIGlmIChz
aG91bGREaXNwYXRjaEV2ZW50c1RvRHJhZ1NvdXJjZUVsZW1lbnQoKSkgewotICAgICAgICBkcmFn
U3RhdGUoKS5kYXRhVHJhbnNmZXItPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbik7
CisgICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRp
b25NYXNrKGRyYWdPcGVyYXRpb25NYXNrKTsKICAgICAgICAgZGlzcGF0Y2hFdmVudFRvRHJhZ1Nv
dXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwgZXZlbnQpOwogICAgIH0KICAg
ICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CkBAIC0zODYzLDcgKzM4NjMsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCwgQ2hlY2tEcgogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBw
b2ludCwgd2UgZG9uJ3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawogICAg
IGludmFsaWRhdGVDbGljaygpOwogICAgIAotICAgIERyYWdPcGVyYXRpb24gc3JjT3AgPSBEcmFn
T3BlcmF0aW9uTm9uZTsgICAgICAKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNl
T3BlcmF0aW9uTWFzazsKICAgICAKICAgICAvLyBUaGlzIGRvZXMgd29yayBvbmx5IGlmIHdlIG1p
c3NlZCBhIGRyYWdFbmQuIERvIGl0IGFueXdheSwganVzdCB0byBtYWtlIHN1cmUgdGhlIG9sZCBk
YXRhVHJhbnNmZXIgZ2V0cyBudW1iZWQuCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGRvaW5nIHRo
aXMgZWFybGllciBpbiB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBlYXJsaWVzdCBwb2ludCB3ZSdyZSBz
dXJlIGl0IHdvdWxkIGJlIHNhZmUgdG8gZHJvcCBhbiBvbGQgZHJhZy4KQEAgLTM4OTgsNyArMzg5
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAKICAgICAgICAgaWYgKG1fbW91c2VEb3du
TWF5U3RhcnREcmFnKSB7CiAgICAgICAgICAgICAvLyBHYXRoZXIgdmFsdWVzIGZyb20gREhUTUwg
ZWxlbWVudCwgaWYgaXQgc2V0IGFueS4KLSAgICAgICAgICAgIHNyY09wID0gZHJhZ1N0YXRlKCku
ZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHNvdXJjZU9wZXJh
dGlvbk1hc2sgPSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbk1hc2so
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gWXVjaywgYSBkcmFnZ2VkSW1hZ2U6bW92
ZVRvOiBtZXNzYWdlIGNhbiBiZSBmaXJlZCBhcyBhIHJlc3VsdCBvZiBraWNraW5nIG9mZiB0aGUK
ICAgICAgICAgICAgIC8vIGRyYWcgd2l0aCBkcmFnSW1hZ2UhIEJlY2F1c2Ugb2YgdGhhdCBkdW1i
IHJlZW50cmFuY3ksIHdlIG1heSB0aGluayB3ZSd2ZSBub3QKQEAgLTM5MDksNyArMzkwOSw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAg
bV9kaWRTdGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFn
KG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25D
b250ZW50c1Bvc2l0aW9uLCBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgICAgICBt
X2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWco
bV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGV2ZW50LmV2ZW50KCks
IG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
KTsKICAgICAgICAgLy8gSW4gV2ViS2l0MiB3ZSBjb3VsZCByZS1lbnRlciB0aGlzIGNvZGUgYW5k
IHN0YXJ0IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBwcm9i
bGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9taXNl
ZCB0eXBlcy4KICAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAppbmRleCA2ZmZjODNjMDEyZi4uMjdjYWU2MWVkMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaApAQCAtMTYzLDExICsxNjMsMTEgQEAgcHVibGljOgogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgc3RydWN0IERyYWdUYXJnZXRSZXNwb25zZSB7CiAgICAgICAg
IGJvb2wgYWNjZXB0IHsgZmFsc2UgfTsKLSAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
b3BlcmF0aW9uOworICAgICAgICBPcHRpb25hbDxPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4+IG9w
ZXJhdGlvbk1hc2s7CiAgICAgfTsKLSAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgdXBkYXRlRHJhZ0Fu
ZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlv
biwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKLSAgICB2b2lkIGNhbmNlbERyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFn
T3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIGJvb2wgcGVyZm9ybURyYWdBbmRE
cm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIERyYWdUYXJnZXRS
ZXNwb25zZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25z
dCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICB2b2lkIGNhbmNlbERy
YWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7
CisgICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB2b2lkIHVwZGF0ZURyYWdTdGF0ZUFmdGVyRWRpdERy
YWdJZk5lZWRlZChFbGVtZW50JiByb290RWRpdGFibGVFbGVtZW50KTsKICAgICBSZWZQdHI8RWxl
bWVudD4gZHJhZ2dlZEVsZW1lbnQoKSBjb25zdDsKICNlbmRpZgpAQCAtMjY4LDcgKzI2OCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFN0YXJ0RHJhZygpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgRHJh
Z09wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gPSBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6
Tm8pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpObyk7CiAjZW5kaWYKIAogICAgIHZvaWQg
Zm9jdXNEb2N1bWVudFZpZXcoKTsKQEAgLTQxNiw3ICs0MTYsNyBAQCBwcml2YXRlOgogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIGRpc3BhdGNoRHJhZ0V2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmLCBEYXRhVHJhbnNmZXImKTsKLSAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hE
cmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVt
ZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiYmICwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBE
cmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmICwgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgaW52YWxpZGF0ZURhdGFU
cmFuc2ZlcigpOwogCiAgICAgYm9vbCBoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdEYXRhLmNwcAppbmRleCA4ZjY3NTVmNTc2MS4uZThjNDBmNTU5MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmICFQTEFURk9STShDT0NPQSkKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJl
ZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBw
bGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVz
dGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJh
Z0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+
IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC00Miw3ICs0Miw3IEBAIERyYWdEYXRhOjpEcmFnRGF0
YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvCiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdz
IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlv
bk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFn
cyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rp
b25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDQyMWEyOTk0M2IzLi4zYmRlMjM5
YjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03NSw4ICs3NSw4IEBAIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZp
bGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMg
dGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFy
Z2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9S
VCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNh
dGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3Bl
cmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkp
OworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlv
bk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYg
ZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBw
bGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGlu
YXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogICAgIC8vIFRoaXMg
Y29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQQyBiZWNhdXNlIERyYWdE
YXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5kIG5vdCBpbiB0aGUg
Y29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9IGRlZmF1bHQ7CkBAIC05MCw3ICs5MCw3IEBA
IHB1YmxpYzoKICAgICBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9CiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3Mo
KSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uRmxhZ3M7IH0KICAgICBEcmFnRGF0YVJlZiBw
bGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGE7IH0KLSAgICBE
cmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJu
IG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9CisgICAgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9CiAgICAgYm9vbCBjb250YWluc1VSTChGaWxlbmFt
ZUNvbnZlcnNpb25Qb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzKSBjb25zdDsKICAgICBib29sIGNv
bnRhaW5zUGxhaW5UZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc0NvbXBhdGlibGVDb250
ZW50KERyYWdnaW5nUHVycG9zZSA9IERyYWdnaW5nUHVycG9zZTo6Rm9yRWRpdGluZykgY29uc3Q7
CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBJbnRQb2ludCBtX2NsaWVudFBvc2l0
aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CiAgICAgRHJhZ0RhdGFSZWYgbV9w
bGF0Zm9ybURyYWdEYXRhOwotICAgIERyYWdPcGVyYXRpb24gbV9kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2s7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG1fZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrOwogICAgIERyYWdBcHBsaWNhdGlvbkZsYWdzIG1fYXBwbGljYXRpb25GbGFn
czsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVOYW1lczsKICAgICBPcHRpb25TZXQ8RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQppbmRleCA5Y2NhZmMwY2Q3
YS4uM2ExMjg5ZDRiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L0RyYWdEYXRhQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJh
Z0RhdGFDb2NvYS5tbQpAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRp
ZmZQYXN0ZWJvYXJkVHlwZSgpCiAjZW5kaWYKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdE
YXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERy
YWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYg
ZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFj
dGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGll
bnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAg
LCBtX3BsYXRmb3JtRHJhZ0RhdGEoZGF0YSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBEcmFnRGF0YTo6
RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBJbnRQbwogewogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ss
IERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291
cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xp
ZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2Jh
bFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCmluZGV4IDBjMDEzY2Y2N2VlLi5iODBiYzJk
ZWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAK
QEAgLTE0OSwzNyArMTQ5LDM3IEBAIHVuc2lnbmVkIHN0YXRlTW9kaWZpZXJGb3JHZGtCdXR0b24o
dW5zaWduZWQgYnV0dG9uKQogICAgIHJldHVybiAxIDw8ICg4ICsgYnV0dG9uIC0gMSk7CiB9CiAK
LURyYWdPcGVyYXRpb24gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9u
IGdka0FjdGlvbikKK09wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBnZGtEcmFnQWN0aW9uVG9EcmFn
T3BlcmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQogewogICAgIC8vIFdlIGhhdmUgbm8g
Z29vZCB3YXkgdG8gZGV0ZWN0IERyYWdPcGVyYXRpb25FdmVyeSBvdGhlciB0aGFuCiAgICAgLy8g
dG8gdXNlIGl0IHdoZW4gYWxsIGFwcGxpY2FibGUgZmxhZ3MgYXJlIG9uLgogICAgIGlmIChnZGtB
Y3Rpb24gJiBHREtfQUNUSU9OX0NPUFkKICAgICAgICAgJiYgZ2RrQWN0aW9uICYgR0RLX0FDVElP
Tl9NT1ZFCiAgICAgICAgICYmIGdka0FjdGlvbiAmIEdES19BQ1RJT05fTElOSykKLSAgICAgICAg
cmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlv
bkV2ZXJ5IH07CiAKLSAgICB1bnNpZ25lZCBhY3Rpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAg
ICBPcHRpb25TZXQ8RHJhZ09wZXJ0aW9uPiBhY3Rpb247CiAgICAgaWYgKGdka0FjdGlvbiAmIEdE
S19BQ1RJT05fQ09QWSkKLSAgICAgICAgYWN0aW9uIHw9IERyYWdPcGVyYXRpb25Db3B5OworICAg
ICAgICBhY3Rpb24uYWRkKERyYWdPcGVyYXRpb25Db3B5KTsKICAgICBpZiAoZ2RrQWN0aW9uICYg
R0RLX0FDVElPTl9NT1ZFKQotICAgICAgICBhY3Rpb24gfD0gRHJhZ09wZXJhdGlvbk1vdmU7Cisg
ICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlvbk1vdmUpOwogICAgIGlmIChnZGtBY3Rpb24g
JiBHREtfQUNUSU9OX0xJTkspCi0gICAgICAgIGFjdGlvbiB8PSBEcmFnT3BlcmF0aW9uTGluazsK
KyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uTGluayk7CiAKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oYWN0aW9uKTsKKyAgICByZXR1cm4gYWN0aW9uOwogfQog
Ci1HZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKERyYWdPcGVyYXRp
b24gY29yZUFjdGlvbikKK0dka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlv
bnMoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24pCiB7CiAgICAgdW5zaWduZWQg
Z2RrQWN0aW9uID0gMDsKLSAgICBpZiAoY29yZUFjdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSkK
KyAgICBpZiAoY29yZUFjdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHZGtEcmFnQWN0aW9uPihnZGtBY3Rpb24pOwogCi0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkpCiAgICAgICAgIGdka0FjdGlvbiB8PSBHREtfQUNUSU9OX0NPUFk7Ci0gICAgaWYgKGNv
cmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlu
cyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIGdka0FjdGlvbiB8PSBHREtfQUNUSU9OX01P
VkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAoY29y
ZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIGdka0FjdGlvbiB8
PSBHREtfQUNUSU9OX0xJTks7CiAKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlv
bj4oZ2RrQWN0aW9uKTsKQEAgLTE4NywxMSArMTg3LDExIEBAIEdka0RyYWdBY3Rpb24gZHJhZ09w
ZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMoRHJhZ09wZXJhdGlvbiBjb3JlQWN0aW9uKQogCiBHZGtE
cmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oRHJhZ09wZXJhdGlv
biBjb3JlQWN0aW9uKQogewotICAgIGlmIChjb3JlQWN0aW9uID09IERyYWdPcGVyYXRpb25FdmVy
eSB8fCBjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKGNvcmVBY3Rpb24g
PT0gYW55RHJhZ09wZXJhdGlvbigpIHx8IGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlv
bkNvcHkpKQogICAgICAgICByZXR1cm4gR0RLX0FDVElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0
aW9uICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJh
Z09wZXJhdGlvbk1vdmUpKQogICAgICAgICByZXR1cm4gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlm
IChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29u
dGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICByZXR1cm4gR0RLX0FDVElPTl9MSU5L
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPigwKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaAppbmRleCA1YWFiNGViNzlhMi4uMTk4
YmM4ZTI1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGls
aXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgK
QEAgLTUxLDggKzUxLDggQEAgU3RyaW5nIGRlZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAKIFdFQkNP
UkVfRVhQT1JUIHVuc2lnbmVkIHN0YXRlTW9kaWZpZXJGb3JHZGtCdXR0b24odW5zaWduZWQgYnV0
dG9uKTsKIAotV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBnZGtEcmFnQWN0aW9uVG9EcmFn
T3BlcmF0aW9uKEdka0RyYWdBY3Rpb24pOwotV0VCQ09SRV9FWFBPUlQgR2RrRHJhZ0FjdGlvbiBk
cmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhEcmFnT3BlcmF0aW9uKTsKLVdFQkNPUkVfRVhQ
T1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihEcmFn
T3BlcmF0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBnZGtE
cmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0RyYWdBY3Rpb24pOworV0VCQ09SRV9FWFBPUlQg
R2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4pOworV0VCQ09SRV9FWFBPUlQgR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9u
VG9TaW5nbGVHZGtEcmFnQWN0aW9uKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFX
aW4uY3BwCmluZGV4IGVlMGQ4YjI2MGNjLi4xODg3MGYyMjc1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQmFpZHUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNDEsNyArNDEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmIGRhdGEsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLAotICAg
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3Mg
ZmxhZ3MpCisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ss
IERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGll
bnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAg
LCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjc4YmU3YjQ4MmMuLjE0OGY2MTUy
YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA2LTAxICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBmb3IgbWFzayB2YWx1ZXMKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjYw
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dL
RHJhZ0FjdGlvbnNJbnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojpjb3JlRHJhZ09wZXJhdGlv
bk1hc2spOgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9uIHRvIGF2b2lkIGNhc3Rp
bmcuCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZW5kRHJh
Z0VuZFRvUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVy
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgLSBNYWtl
IHVzZSBvZiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkcmFnRW5kZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IF9kaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0Ol0pOgorICAgICAgICAoY29yZURy
YWdPcGVyYXRpb25Gb3JVSURyb3BPcGVyYXRpb24pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGRyYWdEYXRhRm9yRHJvcFNlc3Npb246ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlvbjp3aWxsQW5pbWF0ZUxpZnRXaXRoQW5p
bWF0b3I6c2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnSW50ZXJhY3Rp
b246c2Vzc2lvbjpkaWRFbmRXaXRoT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGRyb3BJbnRlcmFjdGlvbjpzZXNzaW9uRGlkRW5kOl0pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhZ0Vu
ZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKToKKwogMjAyMC0wNi0wMSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHVzZSBj
YXN0cyB0byBjb252ZXJ0IGJldHdlZW4gV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFu
ZCB7V2ViLFdLfURyYWdEZXN0aW5hdGlvbkFjdGlvbiB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggM2ZkZDgwNDlkNDkuLjNkYWEzMmNiMjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIwOSw2ICsyMDksNyBA
QCBkZWYgdHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAn
V2ViQ29yZTo6RGljdGF0aW9uQ29udGV4dCcsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIn
LAorICAgICAgICAnV2ViQ29yZTo6RHJhZ09wZXJhdGlvbicsICAjIEZJWE1FOiBSZW1vdmUgYWZ0
ZXIgZW51bSBjbGFzcyBEcmFnT3BlcmF0aW9uLgogICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCiAgICAgICAgICdX
ZWJDb3JlOjpMaWJXZWJSVENTb2NrZXRJZGVudGlmaWVyJywKQEAgLTU4OCw2ICs1ODksNyBAQCBk
ZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JX
b3JrZXJJZGVudGlmaWVyJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKICAg
ICAgICAgJ1dlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QnOiBbJyJEb2N1bWVu
dEVkaXRpbmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2QnOiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uJzogWyc8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPiddLAogICAgICAgICAnV2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscyc6IFsnPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5o
PiddLAogICAgICAgICAnV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyc6IFsnPFdlYkNvcmUv
RmlsZUNob29zZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRV
UkwnOiBbJzxXZWJDb3JlL1NoYXJlRGF0YS5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKaW5kZXggYzg2OGMy
NzczZjguLjg5Nzg5ZjM4MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKQEAgLTQwLDQgKzQwLDI0IEBAIGlu
bGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBjb3JlRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFzayhXCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2lmIFVTRShB
UFBLSVQpCitpbmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhOU0RyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQoreworICAgIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiByZXN1bHQ7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5T
RHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25MaW5rKQorICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsKKyAgICBpZiAob3Bl
cmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0LmFkZChXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09w
ZXJhdGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Nb3ZlKQorICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBpZiAob3Bl
cmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYg
Ly8gVVNFKEFQUEtJVCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBkNDQzODExMjlmOS4uY2U4
ZjJmOThkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcApAQCAtMTUzMSw3ICsxNTMxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERyYWdEYXRh
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsK
ICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCk7CiAgICAgZW5jb2RlciA8
PCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpOwotICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFn
RGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CisgICAgZW5jb2RlciA8PCBkcmFn
RGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0oZHJhZ0RhdGEuZmxhZ3MoKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8
PCBkcmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpOwpAQCAtMTU1MCw4ICsxNTUwLDggQEAgYm9vbCBB
cmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERyYWdEYXRh
JiBkcmFnRGF0YSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGdsb2JhbFBvc2l0aW9uKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2s7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrKSkKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRHJhZ0FwcGxpY2F0
aW9uRmxhZ3MgYXBwbGljYXRpb25GbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KaW5kZXggMmUzOWVhNmNmZTguLmYxNDhhY2QyMjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMzkxMyw3ICsz
OTEzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ2dlZEltYWdlKE5TSW1hZ2UgKiwgQ0dQb2lu
dCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXIKICAgICBzZW5kRHJhZ0VuZFRvUGFnZShl
bmRQb2ludCwgb3BlcmF0aW9uKTsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRU
b1BhZ2UoQ0dQb2ludCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQg
V2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09w
ZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzaykKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogICAgIE5TUG9pbnQgd2luZG93SW1hZ2VMb2MgPSBbW21fdmlldyB3aW5k
b3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6TlNQb2ludEZyb21DR1BvaW50KGVuZFBvaW50KV07CkBA
IC0zOTIzLDcgKzM5MjMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZShD
R1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQogICAgIC8vIFByZXZl
bnQgcXVldWVkIG1vdXNlRHJhZ2dlZCBldmVudHMgZnJvbSBjb21pbmcgYWZ0ZXIgdGhlIGRyYWcg
YW5kIGZha2UgbW91c2VVcCBldmVudC4KICAgICBtX2lnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMg
PSB0cnVlOwogCi0gICAgbV9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQod2luZG93
TW91c2VMb2MpLCBXZWJDb3JlOjpJbnRQb2ludChXZWJDb3JlOjpnbG9iYWxQb2ludCh3aW5kb3dN
b3VzZUxvYywgW21fdmlldyB3aW5kb3ddKSksIG9wZXJhdGlvbik7CisgICAgbV9wYWdlLT5kcmFn
RW5kZWQoV2ViQ29yZTo6SW50UG9pbnQod2luZG93TW91c2VMb2MpLCBXZWJDb3JlOjpJbnRQb2lu
dChXZWJDb3JlOjpnbG9iYWxQb2ludCh3aW5kb3dNb3VzZUxvYywgW21fdmlldyB3aW5kb3ddKSks
IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnT3BlcmF0aW9uTWFzaykpOwogfQogCiBzdGF0aWMg
V2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcoTlNW
aWV3ICp2aWV3LCBpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKQEAgLTM5NDcsNyAr
Mzk0Nyw3IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKGlk
IDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgIFdlYkNvcmU6OkludFBvaW50IGNs
aWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBm
cm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xv
YmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkp
OwogICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2lu
Z0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09w
ZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CiAg
ICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgZHJhZ09wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRB
dXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7
CiAKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwpAQCAtMzk2MSw3
ICszOTYxLDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQo
aWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9u
IGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpn
bG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3dd
KSk7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdn
aW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzayk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsK
ICAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBkcmFnT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3Lmdl
dEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
KTsKICAgICBtX3BhZ2UtPmRyYWdVcGRhdGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dp
bmdQYXN0ZWJvYXJkLm5hbWUpOwogCkBAIC0zOTg2LDcgKzM5ODYsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpkcmFnZ2luZ0V4aXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xv
Y2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBw
bGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0lu
Zm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVu
dCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRv
cmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAgICAgbV9wYWdlLT5kcmFnRXhpdGVkKGRyYWdE
YXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogICAgIG1fcGFnZS0+
cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgZHJhZ2dpbmdJbmZvLm51bWJlck9m
VmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwpA
QCAtNDAwMiw3ICs0MDAyLDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRp
b24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xv
Y2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJD
b3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3
aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6
OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRy
YWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9IG5ldyBXZWJD
b3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJh
dGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxp
Y2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZv
KSk7CiAKICAgICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9h
cmQudHlwZXM7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBjZWRk
NDExNzQxMS4uYzY1MjdhMDFkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMjQyNCwxMSArMjQyNCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJhZwog
I2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9k
IGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQg
bnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwg
Y29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcmFn
T3BlcmF0aW9uLCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9k
LCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkLCBjb25zdCBJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0
YWJsZUVsZW1lbnRSZWN0KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBkcmFnT3Bl
cmF0aW9uIDw9IERyYWdPcGVyYXRpb25EZWxldGUpOwogCi0gICAgbV9jdXJyZW50RHJhZ09wZXJh
dGlvbiA9IHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24pOworICAgIG1f
Y3VycmVudERyYWdPcGVyYXRpb24gPSBkcmFnT3BlcmF0aW9uOwogICAgIG1fY3VycmVudERyYWdI
YW5kbGluZ01ldGhvZCA9IGRyYWdIYW5kbGluZ01ldGhvZDsKICAgICBtX2N1cnJlbnREcmFnSXNP
dmVyRmlsZUlucHV0ID0gbW91c2VJc092ZXJGaWxlSW5wdXQ7CiAgICAgbV9jdXJyZW50RHJhZ051
bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQgPSBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkOwpAQCAt
MjQzOCwyMCArMjQzOCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYkNvcgogfQogCiAjaWYgUExB
VEZPUk0oR1RLKQotdm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYg
c2VsZWN0aW9uRGF0YSwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERy
YWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24g
ZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhh
bmRsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UgPSAhZHJhZ0lt
YWdlSGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZHJhZ0ltYWdlSGFu
ZGxlKSA6IG51bGxwdHI7Ci0gICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhXVEZNb3ZlKHNlbGVj
dGlvbkRhdGEpLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnT3BlcmF0
aW9uKSwgV1RGTW92ZShkcmFnSW1hZ2UpKTsKKyAgICBwYWdlQ2xpZW50KCkuc3RhcnREcmFnKFdU
Rk1vdmUoc2VsZWN0aW9uRGF0YSksIGRyYWdPcGVyYXRpb24sIFdURk1vdmUoZHJhZ0ltYWdlKSk7
CiAKICAgICBkaWRTdGFydERyYWcoKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09w
ZXJhdGlvbk1hc2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ09wZXJh
dGlvbk1hc2spKTsKICAgICBzZXREcmFnQ2FyZXRSZWN0KHsgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2JhOWY4YjVlYzAuLjdlOTRlMGJlMzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE1Niw4ICsxMTU2LDgg
QEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybURyYWdPcGVyYXRpb24oV2ViQ29yZTo6RHJhZ0Rh
dGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwogICAgIHZvaWQgZGlkUGVy
Zm9ybURyYWdPcGVyYXRpb24oYm9vbCBoYW5kbGVkKTsKIAotICAgIHZvaWQgZGlkUGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRyYWdI
YW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVy
T2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0aW9uUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCk7Ci0gICAgdm9p
ZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7
CisgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmls
ZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlZGl0YWJs
ZUVsZW1lbnRSZWN0KTsKKyAgICB2b2lkIGRyYWdFbmRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KTsKICAgICB2b2lkIGRpZFN0YXJ0
RHJhZygpOwogICAgIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwogICAgIHZvaWQgc2V0RHJhZ0NhcmV0
UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CkBAIC0xMTY3LDcgKzExNjcsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgY29uc3QgU2hhcmVkTWVtb3J5
OjpIYW5kbGUmIGFyY2hpdmVIYW5kbGUsIHVpbnQ2NF90IGFyY2hpdmVTaXplKTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25E
YXRhJiYsIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiBkcmFnSW1hZ2UpOworICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRh
dGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGRyYWdJbWFnZSk7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMmQyM2U0YjY2MGIuLjEyMjYw
NDA2NjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0zMTAsNyArMzEwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
IAogICAgICMgRHJhZyBhbmQgZHJvcCBtZXNzYWdlcwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
Ci0gICAgRGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRp
b24sIGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5n
TWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1z
VG9CZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6Oklu
dFJlY3QgZWRpdGFibGVFbGVtZW50UmVjdCkKKyAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3Vz
ZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgV2Vi
Q29yZTo6SW50UmVjdCBpbnNlcnRpb25SZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGVkaXRhYmxlRWxl
bWVudFJlY3QpCiAgICAgRGlkRW5kRHJhZ2dpbmcoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENP
Q09BKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMzE4LDcgKzMxOCw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGltYWdlSGFuZGxlLCB1
aW50NjRfdCBpbWFnZVNpemUsIFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGV4dGVuc2lvbiwgU3Ry
aW5nIHRpdGxlLCBTdHJpbmcgdXJsLCBTdHJpbmcgdmlzaWJsZVVSTCwgV2ViS2l0OjpTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSkKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBTdGFydERy
YWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb25EYXRhLCB1aW50NjRfdCBkcmFnT3Bl
cmF0aW9uLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSkKKyAgICBT
dGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb25EYXRhLCBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24sIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUgZHJhZ0ltYWdlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggNDM5ZGI5OTc3ZWUuLmU3YmYxZmExMzM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTcyODUsNyArNzI4NSw3IEBAIC0gKHZvaWQpX2RpZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6KEJP
T0wpc3RhcnRlZAogICAgICAgICBpZiAoc3RhcnRlZCkgewogICAgICAgICAgICAgLy8gQSBjbGll
bnQgb2YgdGhlIE9iamVjdGl2ZSBDIFNQSSBvciBVSUtpdCBtaWdodCBoYXZlIHByZXZlbnRlZCB0
aGUgZHJhZyBmcm9tIGJlZ2lubmluZyBlbnRpcmVseSBpbiB0aGUgVUkgcHJvY2VzcywgaW4gd2hp
Y2ggY2FzZQogICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBiYWxhbmNlIHRoZSBgZHJhZ3N0YXJ0
YCBldmVudCB3aXRoIGEgYGRyYWdlbmRgLgotICAgICAgICAgICAgX3BhZ2UtPmRyYWdFbmRlZChw
b3NpdGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbk5vbmUpOworICAgICAgICAgICAgX3BhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZvckRyYWdF
bmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgeyB9KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTcz
MTQsMTMgKzczMTQsMzEgQEAgc3RhdGljIFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uRm9y
V2ViQ29yZURyYWdPcGVyYXRpb24oV2ViQ29yZTo6RHJhZ09wZXJhdGkKICAgICByZXR1cm4gVUlE
cm9wT3BlcmF0aW9uQ2FuY2VsOwogfQogCitzdGF0aWMgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBj
b3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihVSURyb3BPcGVyYXRpb24gZHJvcE9w
ZXJhdGlvbikKK3sKKyAgICBzd2l0Y2ggKGRyb3BPcGVyYXRpb24pIHsKKyAgICBjYXNlIFVJRHJv
cE9wZXJhdGlvbkNhbmNlbDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25O
b25lOworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uRm9yYmlkZGVuOgorICAgICAgICByZXR1cm4g
V2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25D
b3B5OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk7CisgICAgY2Fz
ZSBVSURyb3BPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbk1vdmU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsKK30KKwogLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJh
Z0RhdGFGb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uOihXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVzdGluYXRpb25BY3Rp
b24KIHsKICAgICBDR1BvaW50IGdsb2JhbDsKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2Vs
ZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lvbiBvdXRD
bGllbnRQb2ludDomY2xpZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogCi0gICAgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+KHNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbiA/IFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25FdmVyeSA6IChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgJiB+V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbk1vdmUpKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gV2Vi
Q29yZTo6YW55RHJhZ09wZXJhdGlvbigpOworICAgIGlmICghc2Vzc2lvbi5hbGxvd3NNb3ZlT3Bl
cmF0aW9uKQorICAgICAgICAgZHJhZ09wZXJhdGlvbk1hc2sucmVtb3ZlKFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Nb3ZlKTsKICAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50
UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVy
YXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBXZWJLaXQ6OmNvcmVEcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrKGRyYWdEZXN0aW5hdGlvbkFjdGlvbikgfTsKIH0KIApAQCAt
ODAxMyw3ICs4MDMxLDcgQEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0
aW9uICopaW50ZXJhY3Rpb24gd2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW0KICAgICAgICAgICAgIFJF
TEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIGVuZGVkIGF0IHN0YXJ0OiAlcCIs
IHNlc3Npb24pOwogICAgICAgICAgICAgLy8gVGhlIGxpZnQgd2FzIGNhbmNlbGVkLCBzbyAtZHJv
cEludGVyYWN0aW9uOnNlc3Npb25EaWRFbmQ6IHdpbGwgbmV2ZXIgYmUgaW52b2tlZC4gVGhpcyBp
cyB0aGUgbGFzdCBjaGFuY2UgdG8gY2xlYW4gdXAuCiAgICAgICAgICAgICBbcHJvdGVjdGVkU2Vs
ZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgICAgICAgICBwYWdlLT5kcmFn
RW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Ob25lKTsKKyAgICAgICAgICAgIHBhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZv
ckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgeyB9KTsKICAgICAgICAgfQogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBlbHNlCkBAIC04MDQ4LDcgKzgwNjYsNyBAQCAtICh2
b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNz
aW9uOihpZCA8VUlEcmFnU2VzcwogICAgICAgICByZXR1cm47CiAKICAgICBbc2VsZiBjbGVhblVw
RHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9u
Rm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIG9wZXJhdGlvbik7CisgICAg
X3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRy
YWdFbmQoKSksIGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKG9wZXJhdGlvbikp
OwogfQogCiAtIChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkcmFnSW50ZXJhY3Rpb246KFVJRHJh
Z0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckNhbmNlbGxpbmdJdGVtOihVSURy
YWdJdGVtICopaXRlbSB3aXRoRGVmYXVsdDooVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZGVmYXVs
dFByZXZpZXcKQEAgLTgyNjcsNyArODI4NSw3IEBAIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihV
SURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHNlc3Npb25EaWRFbmQ6KGlkIDxVSURyCiAg
ICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50
c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQ
b2ludDomZ2xvYmFsXTsKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07
Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwg
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25O
b25lKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGll
bnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgeyB9KTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDBm
YzJmMDcwMTgzLi5kODIzYzdjYWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM5NDAsMTQgKzM5NDAsMTQgQEAgTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBXZWJQYWdlOjpub3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmEKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCiAjaWYgUExBVEZPUk0oR1RLKQot
dm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24gYWN0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
LCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgdWludDMyX3QgZmxhZ3MpCit2b2lkIFdl
YlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBh
Y3Rpb24sIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgdWludDMyX3QgZmxhZ3Mp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0aW9uRGF0YSwgY2xp
ZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihk
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25G
bGFncz4oZmxhZ3MpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0aW9uRGF0YSwgY2xp
ZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ss
IHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlvbkZsYWdzPihmbGFncykpOwogICAgIHN3aXRjaCAo
YWN0aW9uKSB7CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6RW50ZXJlZDogewogICAg
ICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CkBAIC00MDE4LDcgKzQwMTgsNyBAQCB2
b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbiBhY3Rpb24sIGNvbnN0IFdlYgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZHJhZ0Vu
ZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBn
bG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQordm9pZCBXZWJQYWdlOjpkcmFnRW5k
ZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJh
dGlvbk1hc2spCiB7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRDbGllbnRQb3NpdGlvbihjbGllbnRQ
b3NpdGlvbi54KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLngoKSwg
Y2xpZW50UG9zaXRpb24ueSgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQo
KS55KCkpOwogICAgIEludFBvaW50IGFkanVzdGVkR2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRp
b24ueCgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS54KCksIGdsb2Jh
bFBvc2l0aW9uLnkoKSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueSgp
KTsKQEAgLTQwMjksNyArNDAyOSw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6
OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iCiAgICAgICAg
IHJldHVybjsKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJl
LCBidXQgdGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCiAgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGV2ZW50KGFkanVzdGVkQ2xpZW50UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRp
b24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6bm93KCksIDAsIFdlYkNvcmU6Ok5vVGFwKTsKLSAg
ICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2
ZW50LCAoRHJhZ09wZXJhdGlvbilvcGVyYXRpb24pOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCku
ZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIGRyYWdPcGVyYXRpb25NYXNr
KTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRW5kRHJhZ2dpbmcoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiMjE3
YmM3ZWJlYS4uMWE5MDFjMTFkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTg5OSw3ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN0b3Jl
U2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCk7CiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKSAmJiBQTEFURk9STShHVEspCi0gICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50
NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEm
JiwgdWludDMyX3QgZmxhZ3MpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50MzJfdCBmbGFncyk7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpICYmICFQTEFURk9STShHVEspCkBAIC05MDcsNyArOTA3LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIHZvaWQgZHJh
Z0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2lu
dCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsKKyAgICB2b2lkIGRyYWdFbmRl
ZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xv
YmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPik7CiAKICAgICB2
b2lkIHdpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwogICAgIHZvaWQgbWF5
UGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNTM4ZTY1
NzJlNTAuLmFlOTI3NDc2Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTMwOSwxNCArMzA5LDE0IEBAIEdlbmVy
YXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlCiAKICAgICAjIERyYWcgYW5kIGRyb3AuCiAjaWYgUExBVEZPUk0o
R1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdl
YkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQ
b3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpT
ZWxlY3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3QgZmxhZ3MpCisgICAgUGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKGVudW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9u
IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlv
biwgdWludDMyX3QgZmxhZ3MpCiAjZW5kaWYKICNpZiAhUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUo
RFJBR19TVVBQT1JUKQogICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRh
IGRyYWdEYXRhLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hF
eHRlbnNpb25zRm9yVXBsb2FkKQogI2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICBEaWRTdGFydERyYWcoKQotICAgIERyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQ
b3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJh
dGlvbikKKyAgICBEcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2spCiAgICAgRHJhZ0NhbmNlbGxlZCgpCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCAwZTY1NjQ5NmM4NC4uOGI4N2RiMzhjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC05MjQsNyArOTI0
LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24o
Y29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW8KICAgICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdl
YiBwcm9jZXNzLCB3aGljaCBvbmx5IHNlZXMgdGhhdCB0aGUgY3VycmVudCBkcmFnIGhhcyBlbmRl
ZCwgYW5kIHRoYXQgYSBuZXcgb25lIGlzIGJlZ2lubmluZy4KICAgICBQbGF0Zm9ybU1vdXNlRXZl
bnQgZXZlbnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2Fs
bFRpbWU6Om5vdygpLCAwLCBOb1RhcCk7CiAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRy
YWdFbmRlZCgpOwotICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1Nv
dXJjZUVuZGVkQXQoZXZlbnQsIERyYWdPcGVyYXRpb25Ob25lLCBNYXlFeHRlbmREcmFnU2Vzc2lv
bjo6WWVzKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3Vy
Y2VFbmRlZEF0KGV2ZW50LCB7IH0sIE1heUV4dGVuZERyYWdTZXNzaW9uOjpZZXMpOwogCiAgICAg
Ym9vbCBkaWRIYW5kbGVEcmFnID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS50
cnlUb0JlZ2luRHJhZ0F0UG9pbnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uKTsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRl
bXNSZXF1ZXN0KGRpZEhhbmRsZURyYWcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCA1Njg5ZDNhMTljNC4uNzIxNmYyODgzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sg
dmFsdWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfZHJhZ1NvdXJjZUVuZGVkQXQ6b3BlcmF0aW9uOl0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChraXQpOgorICAg
ICAgICAoLVtXZWJIVE1MVmlldyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDpd
KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZHJhZ2dpbmdTZXNzaW9uOnNvdXJjZU9wZXJhdGlv
bk1hc2tGb3JEcmFnZ2luZ0NvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoY29yZURyYWdPcGVyYXRpb25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVy
c2lvbiBmdW5jdGlvbiB0byBhdm9pZCBjYXN0aW5nLgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdE
YXRhRm9yU2Vzc2lvbjpjbGllbnQ6Z2xvYmFsOm9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2Vi
VmlldyBkcmFnZ2luZ0VudGVyZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdVcGRh
dGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nRXhpdGVkOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IHBlcmZvcm1EcmFnT3BlcmF0aW9uOl0pOgorICAgICAgICAtIE1ha2UgdXNlIG9m
IGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKENvY29hRHJhZ09wZXJhdGlvbik6
CisgICAgICAgIC0gQWRkIHR5cGVkZWYgc28gY29yZURyYWdPcGVyYXRpb25NYXNrKCkgbWF5IGJl
IHNoYXJlZCBhY3Jvc3MKKyAgICAgICAgICBwbGF0Zm9ybXMuCisgICAgICAgIChjb3JlRHJhZ09w
ZXJhdGlvbk1hc2spOiBBZGQgZGVjbGFyYXRpb24uCisgICAgICAgIChjb3JlT3B0aW9ucyk6Cisg
ICAgICAgIC0gUmVtb3ZlIHJlZHVuZGFudCBwYXJhbWV0ZXIgbmFtZS4KKwogMjAyMC0wNi0wMSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHVzZSBj
YXN0cyB0byBjb252ZXJ0IGJldHdlZW4gV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFu
ZCB7V2ViLFdLfURyYWdEZXN0aW5hdGlvbkFjdGlvbiB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZDRkZWE3YzM5YzguLmI5ZWVjZGM4ZGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk0
Miw3ICs5NDIsNyBAQCAtICh2b2lkKV9zZXRUeXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKXN0eWxlIHdpdGhVbmRvQWN0aW9uOihXZWJDb3JlOgogfQogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKQotLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6
KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbgor
LSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlvbjoo
TlNEcmFnT3BlcmF0aW9uKWRyYWdPcGVyYXRpb25NYXNrCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+
Y29yZUZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC05NTIsNyArOTUyLDcgQEAgLSAodm9pZClf
ZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3Bl
cmF0aW9uKW9wZXJhdGkKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5
cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCiAgICAgV2ViQ29y
ZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KFdlYkNvcmU6OkludFBvaW50KHdpbmRvd0xvYyks
IFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd0xvYywgW3ZpZXct
PnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSkpLAogICAgICAgICBXZWJDb3JlOjpMZWZ0QnV0dG9u
LCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIFdlYkNv
cmU6Ok5vVGFwKTsKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5kcmFn
U291cmNlRW5kZWRBdChldmVudCwgKFdlYkNvcmU6OkRyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsK
KyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRB
dChldmVudCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdPcGVyYXRpb25NYXNrKSk7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA1ZTRhODkw
NWVjOC4uZTdjYTQ2MWQ5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAg
KEMpIDIwMDYsIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC00MjI5LDYgKzQyMjksMjggQEAgLSAodm9pZCl0b3VjaDooV2Vi
RXZlbnQgKilldmVudAogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFU
Rk9STShNQUMpCisKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQoreworICAgIGlmIChvcGVyYXRpb25NYXNr
ID09IFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09w
ZXJhdGlvbkV2ZXJ5OworCisgICAgTlNEcmFnT3BlcmF0aW9uIHJlc3VsdCA9IE5TRHJhZ09wZXJh
dGlvbk5vbmU7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkNvcHkpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAg
ICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluaykp
CisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGlmIChvcGVyYXRp
b25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKSkKKyAgICAgICAg
cmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgaWYgKG9wZXJhdGlvbk1hc2su
Y29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUpKQorICAgICAgICByZXN1bHQg
fD0gTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlu
cyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdP
cGVyYXRpb25Nb3ZlOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25EZWxldGUpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uRGVs
ZXRlOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0JFR0lOCiAtICh2b2lkKWRyYWdJbWFnZTooTlNJbWFnZSAqKWRyYWdJbWFnZQogICAg
ICAgICAgICAgICAgYXQ6KE5TUG9pbnQpYXQKQEAgLTQyODAsNyArNDMwMiw3IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CiAKLSAgICByZXR1cm4gKE5TRHJhZ09wZXJhdGlvbilw
YWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4g
a2l0KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7CiB9
CiAKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCkBAIC00Mzg2LDcgKzQ0
MDgsNyBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTZXNzaW9uOihOU0RyYWdnaW5nU2Vz
c2lvbiAqKXNlc3Npb24gc291cmNlT3BlcmF0aW9uTQogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CiAKLSAgICByZXR1cm4gKE5TRHJhZ09wZXJhdGlv
bilwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1
cm4ga2l0KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7
CiB9CiAKIC0gKHZvaWQpZHJhZ2dpbmdTZXNzaW9uOihOU0RyYWdnaW5nU2Vzc2lvbiAqKXNlc3Np
b24gZW5kZWRBdFBvaW50OihOU1BvaW50KXNjcmVlblBvaW50IG9wZXJhdGlvbjooTlNEcmFnT3Bl
cmF0aW9uKW9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDk2N2E5MDViNDI4Li5kNTcwNzM0MDFiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNTg5LDYgKzU4OSwzNyBAQCBzdGF0aWMgT3B0
aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2soVwogICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlv
bkFjdGlvbjo6TG9hZCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKworT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRp
b24gb3BlcmF0aW9uKQoreworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBy
ZXN1bHQ7CisKKyNpZiBVU0UoQVBQS0lUKQorICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVy
YXRpb25Db3B5KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5
KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVz
dWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluayk7CisgICAgaWYgKG9wZXJhdGlvbiAm
IE5TRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbkdlbmVyaWMpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Q
cml2YXRlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRl
KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVz
dWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAm
IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uRGVsZXRlKTsKKyNlbHNlCisgICAgLy8gU2VlIDxVSUtpdC9VSURyYWdnaW5nX1By
aXZhdGUuaD4uCisgICAgY29uc3RleHByIE5TVUludGVnZXIgX1VJRHJhZ09wZXJhdGlvbkNvcHkg
PSAxOworICAgIGNvbnN0ZXhwciBOU1VJbnRlZ2VyIF9VSURyYWdPcGVyYXRpb25Nb3ZlID0gMTY7
CisKKyAgICBpZiAob3BlcmF0aW9uICYgX1VJRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJl
c3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24g
JiBfVUlEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTW92ZSk7CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworICAgIHJldHVybiByZXN1
bHQ7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogV2ViQ29yZTo6RmluZE9w
dGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucykKQEAgLTE5MjMsNyArMTk1
NCw3IEBAIC0gKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3NpCiAKIC0gKFdlYkNvcmU6OkRyYWdEYXRhKWRy
YWdEYXRhRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gY2xpZW50OihDR1Bv
aW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbiBvcGVyYXRp
b246KHVpbnQ2NF90KW9wZXJhdGlvbgogewotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihvcGVyYXRpb24pOworICAgIGF1dG8g
ZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2sob3BlcmF0aW9uKTsKICAg
ICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayhbc2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjpzZXNzaW9u
XSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVu
dFBvc2l0aW9uKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbFBvc2l0aW9uKSwgZHJh
Z09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2sgfTsKIH0KQEAgLTY3NDgsNyArNjc3OSw3IEBAIC0gKE5TRHJhZ09wZXJh
dGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlv
bl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChb
ZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAgICBX
ZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5m
b10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAg
V2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwg
Y29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0
aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKICAgICByZXR1cm4gY29yZShz
ZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3
NjEsNyArNjc5Miw3IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1VwZGF0ZWQ6KGlkIDxO
U0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRp
b25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2Vs
ZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEo
ZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9u
RmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFn
Z2luZ0luZm9dKTsKICAgICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRl
ZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3NzMsNyArNjgwNCw3IEBAIC0gKHZvaWQpZHJhZ2dpbmdF
eGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAKICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0
YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
a10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwogICAgIHBhZ2UtPmRy
YWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3ODYsNyArNjgx
Nyw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4p
ZHJhZ2dpbmdJbmZvCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0lu
Zm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJD
b3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3
aW5kb3ddKSk7Ci0gICAgYXV0byogZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJh
Z2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYg
YXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBhdXRvKiBkcmFnRGF0YSA9IG5l
dyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJh
Z09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2td
KSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKIAogICAgIE5TQXJyYXkq
IHR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBpZiAo
IVt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZlUGJvYXJkVHlwZV0gJiYgW3R5cGVzIGNv
bnRhaW5zT2JqZWN0OldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCld
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAppbmRleCA1NzY2MjlhYmE2OS4uYmZkMGFkZGY5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxp
YSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2LDYgKzM2LDcgQEAKICNpZmRlZiBfX2NwbHVz
cGx1cwogCiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgorI2ltcG9y
dCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1l
ZGlhRWxlbWVudEVudW1zLmg+CkBAIC04OSw3ICs5MCwxNyBAQCBjbGFzcyBXZWJTZWxlY3Rpb25T
ZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKLVdlYkNvcmU6OkZpbmRP
cHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpOworI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCisjaWYgVVNFKEFQUEtJVCkKK3R5cGVkZWYgTlNEcmFnT3BlcmF0aW9uIENv
Y29hRHJhZ09wZXJhdGlvbjsKKyNlbHNlCit0eXBlZGVmIHVpbnQ2NF90IENvY29hRHJhZ09wZXJh
dGlvbjsKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJhZ09wZXJhdGlvbik7CisjZW5k
aWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKKworV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9w
dGlvbnMoV2ViRmluZE9wdGlvbnMpOwogCiBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0
b25lPiBjb3JlTGF5b3V0TWlsZXN0b25lcyhXZWJMYXlvdXRNaWxlc3RvbmVzKTsKIFdlYkxheW91
dE1pbGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0
TWlsZXN0b25lPik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400784</attachid>
            <date>2020-06-01 22:18:01 -0700</date>
            <delta_ts>2020-06-02 10:03:06 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-212605-v2.diff</filename>
            <type>text/plain</type>
            <size>84557</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDAzMGRmZmI4Ni4uZTY3NWEwZDljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb24g
dHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODQ2M2E0OGU5NzQuLmI3
ODBhYTg1Nzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNDg4LDE4ICs0
ODgsMTggQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3Rh
cnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICByZXR1cm4gZGF0YVRyYW5zZmVy
OwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0
ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVz
KQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2Fy
ZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJh
Z2dpbmdGaWxlcykKIHsKICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0
YVRyYW5zZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0
ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpE
cmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihz
b3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRp
ZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0
dXJuIGRhdGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJj
ZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQog
ewogICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0
YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJh
Z2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERh
dGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRp
b24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVy
YXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3Vt
ZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFu
c2ZlcjsKIH0KQEAgLTU5NSw3NCArNTk1LDc0IEBAIHZvaWQgRHJhZ0ltYWdlTG9hZGVyOjppbWFn
ZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KikKICAgICBtX2RhdGFUcmFuc2Zl
ci0+dXBkYXRlRHJhZ0ltYWdlKCk7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRyYWdPcEZy
b21JRU9wKGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQorc3RhdGljIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHsKICAgICBp
ZiAob3BlcmF0aW9uID09ICJ1bmluaXRpYWxpemVkIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVy
YXRpb25FdmVyeTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKICAgICBpZiAo
b3BlcmF0aW9uID09ICJub25lIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwor
ICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTm9uZSB9OwogICAgIGlmIChvcGVyYXRpb24g
PT0gImNvcHkiKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJl
dHVybiB7IERyYWdPcGVyYXRpb25Db3B5IH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGluayIp
Ci0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgcmV0dXJuIHsgRHJh
Z09wZXJhdGlvbkxpbmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJtb3ZlIikKLSAgICAgICAg
cmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRp
b25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVy
YXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAgICAgICBy
ZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxp
bmspOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxp
bmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TW92ZSIpCi0gICAgICAgIHJldHVybiAo
RHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8
IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHks
IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9OwogICAgIGlmIChvcGVy
YXRpb24gPT0gImxpbmtNb3ZlIikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFn
T3BlcmF0aW9uTGluayB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUp
OworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVy
aWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiYWxsIikKLSAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlv
blByaXZhdGU7IC8vIHJlYWxseSBhIG1hcmtlciBmb3IgIm5vIGNvbnZlcnNpb24iCisgICAgICAg
IHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvblBy
aXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikK
K3N0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb24g
JiAoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgYm9vbCBp
c0dlbmVyaWNNb3ZlID0gb3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb25H
ZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KTsKIAotICAgIGlmICgoaXNHZW5lcmljTW92ZSAm
JiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uTGluaykpIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYg
KChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNv
cHkpICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKSB8fCBvcGVy
YXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuICJhbGwiOwot
ICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkp
CisgICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3Bl
cmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiAiY29weU1vdmUiOwotICAgIGlmIChpc0dlbmVy
aWNNb3ZlICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpCisgICAgaWYgKGlzR2Vu
ZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAg
ICAgICAgIHJldHVybiAibGlua01vdmUiOwotICAgIGlmICgob3BlcmF0aW9uICYgRHJhZ09wZXJh
dGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpCisgICAgaWYgKG9w
ZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlv
bkxpbmsgfSkpCiAgICAgICAgIHJldHVybiAiY29weUxpbmsiOwogICAgIGlmIChpc0dlbmVyaWNN
b3ZlKQogICAgICAgICByZXR1cm4gIm1vdmUiOwotICAgIGlmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uQ29weSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkpCiAgICAgICAgIHJldHVybiAiY29weSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25MaW5rKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25MaW5rKSkKICAgICAgICAgcmV0dXJuICJsaW5rIjsKICAgICByZXR1cm4gIm5vbmUiOwogfQog
Ci1EcmFnT3BlcmF0aW9uIERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uKCkgY29uc3QKK09w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiBEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJhdGlvbk1hc2so
KSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gZHJhZ09wRnJvbUlFT3Ao
bV9lZmZlY3RBbGxvd2VkKTsKLSAgICBBU1NFUlQob3BlcmF0aW9uICE9IERyYWdPcGVyYXRpb25Q
cml2YXRlKTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9
IGRyYWdPcEZyb21JRU9wKG1fZWZmZWN0QWxsb3dlZCk7CisgICAgQVNTRVJUKG9wZXJhdGlvbk1h
c2sgIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwog
fQogCi1EcmFnT3BlcmF0aW9uIERhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24oKSBj
b25zdAorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25P
cGVyYXRpb25NYXNrKCkgY29uc3QKIHsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGRy
YWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7Ci0gICAgQVNTRVJUKG9wZXJhdGlvbiA9PSBEcmFn
T3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwgb3BlcmF0
aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSAoRHJhZ09wZXJhdGlvbiko
RHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSkgfHwgb3BlcmF0aW9uID09
IERyYWdPcGVyYXRpb25FdmVyeSk7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbjsKKyAgICBhdXRvIG9w
ZXJhdGlvbk1hc2sgPSBkcmFnT3BGcm9tSUVPcChtX2Ryb3BFZmZlY3QpOworICAgIEFTU0VSVChv
cGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0
eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFz
ayA9PSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJh
Z09wZXJhdGlvbk1vdmUgfSkgfHwgb3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkp
OworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCi12b2lkIERhdGFUcmFuc2Zlcjo6c2V0
U291cmNlT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQordm9pZCBEYXRhVHJhbnNm
ZXI6OnNldFNvdXJjZU9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJh
dGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiAhPSBEcmFn
T3BlcmF0aW9uUHJpdmF0ZSk7Ci0gICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZyb21EcmFnT3Ao
b3BlcmF0aW9uKTsKKyAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sg
IT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIG1fZWZmZWN0QWxsb3dlZCA9IElFT3BGcm9t
RHJhZ09wKG9wZXJhdGlvbk1hc2spOwogfQogCi12b2lkIERhdGFUcmFuc2Zlcjo6c2V0RGVzdGlu
YXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBv
cGVyYXRpb25NYXNrKQogewotICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uLCBvcGVyYXRpb24gPT0g
RHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Ob25lIHx8IG9w
ZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlv
bkdlbmVyaWMgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Nb3ZlIHx8IG9wZXJhdGlvbiA9
PSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92
ZSkpOwotICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbik7CisgICAg
QVNTRVJUX0FSRyhvcGVyYXRpb25NYXNrLCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25D
b3B5IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09w
ZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8fCBv
cGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Nb3ZlIHx8IG9wZXJhdGlvbk1hc2sgPT0gT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRp
b25Nb3ZlIH0pKTsKKyAgICBtX2Ryb3BFZmZlY3QgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb25N
YXNrKTsKIH0KIAogU3RyaW5nIERhdGFUcmFuc2Zlcjo6ZHJvcEVmZmVjdCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmgKaW5kZXggZTVjZmFmODU2ZmIuLjBlNzQ4MGExZjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCkBAIC04OCwxNSArODgsMTUgQEAgcHVibGljOgogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0
ZUZvckRyYWcoKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4g
Y3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHN0YXRpYyBSZWY8
RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFn
Z2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChj
b25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJv
b2wgZHJhZ2dpbmdGaWxlcyk7CiAKICAgICBib29sIGRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQo
KSBjb25zdCB7IHJldHVybiBtX2Ryb3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiOyB9CiAKLSAg
ICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbigpIGNvbnN0OwotICAgIERyYWdPcGVyYXRp
b24gZGVzdGluYXRpb25PcGVyYXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldFNvdXJjZU9wZXJh
dGlvbihEcmFnT3BlcmF0aW9uKTsKLSAgICB2b2lkIHNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERy
YWdPcGVyYXRpb24pOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrKCkgY29uc3Q7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRlc3RpbmF0aW9u
T3BlcmF0aW9uTWFzaygpIGNvbnN0OworICAgIHZvaWQgc2V0U291cmNlT3BlcmF0aW9uTWFzayhP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4pOworICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRp
b25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CiAKICAgICB2b2lkIHNldERyYWdIYXNT
dGFydGVkKCkgeyBtX3Nob3VsZFVwZGF0ZURyYWdJbWFnZSA9IHRydWU7IH0KICAgICBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBkcmFnTG9jYXRpb24pIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGE5MjNjYWU1OGNiLi4zYjY2MjEzNjFjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAtNjAsNyArNjAsNyBAQCB0eXBlZGVmIGVudW0g
ewogICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAogfSBEcmFnU291
cmNlQWN0aW9uOwogCi0vLyBNYXRjaGVzIE5TRHJhZ09wZXJhdGlvbi4KKy8vIFNlZSBOU0RyYWdP
cGVyYXRpb24sIFVJRHJhZ09wZXJhdGlvbiBhbmQgVUlEcm9wT3BlcmF0aW9uLgogdHlwZWRlZiBl
bnVtIHsKICAgICBEcmFnT3BlcmF0aW9uTm9uZSAgICA9IDAsCiAgICAgRHJhZ09wZXJhdGlvbkNv
cHkgICAgPSAxLApAQCAtNjksOSArNjksMTMgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBEcmFnT3Bl
cmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAgRHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwKICAgICBE
cmFnT3BlcmF0aW9uRGVsZXRlICA9IDMyLAotICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlO
VF9NQVgKIH0gRHJhZ09wZXJhdGlvbjsKIAorY29uc3RleHByIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkKK3sKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29w
eSwgRHJhZ09wZXJhdGlvbkxpbmssIERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1vdmUsIERyYWdPcGVyYXRpb25EZWxldGUgfTsKK30KKwog
ZW51bSBjbGFzcyBNYXlFeHRlbmREcmFnU2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVt
IGNsYXNzIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA6IGJvb2wgeyBObywgWWVzIH07CiBl
bnVtIGNsYXNzIERyYWdIYW5kbGluZ01ldGhvZCA6IHVpbnQ4X3QgeyBOb25lLCBFZGl0UGxhaW5U
ZXh0LCBFZGl0UmljaFRleHQsIFVwbG9hZEZpbGUsIFBhZ2VMb2FkLCBTZXRDb2xvciwgTm9uRGVm
YXVsdCB9OwpAQCAtOTMsNiArOTcsMTkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2Q+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiB7CisgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Db3B5LAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluaywKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Qcml2YXRlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZQorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiB7
CiAgICAgdXNpbmcgdmFsdWVzID0gT3B0aW9uU2V0VmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24sCkBAIC0xMDIsNCArMTE5LDE3IEBAIHRlbXBsYXRlPD4gc3Ry
dWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAg
ICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CisgICAg
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25Ob25lLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSwKKyAgICAgICAgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkxpbmssCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25H
ZW5lcmljLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSwKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25EZWxldGUKKyAgICA+OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGUzYTg5MDFhNDg1Li43NDQxZDBjYjllMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTY5MywyMSArNjkzLDIxIEBA
IGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gZGVmYXVs
dE9wZXJhdGlvbkZvckRyYWcoRHJhZ09wZXJhdGlvbiBzcmNPcE1hc2spCitzdGF0aWMgRHJhZ09w
ZXJhdGlvbiBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
c291cmNlT3BlcmF0aW9uTWFzaykKIHsKICAgICAvLyBUaGlzIGlzIGRlc2lnbmVkIHRvIG1hdGNo
IElFJ3Mgb3BlcmF0aW9uIGZhbGxiYWNrIGZvciB0aGUgY2FzZSB3aGVyZQogICAgIC8vIHRoZSBw
YWdlIGNhbGxzIHByZXZlbnREZWZhdWx0KCkgaW4gYSBkcmFnIGV2ZW50IGJ1dCBkb2Vzbid0IHNl
dCBkcm9wRWZmZWN0LgotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KQor
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24oKSkKICAgICAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09w
ZXJhdGlvbk5vbmUpCisgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdP
cGVyYXRpb25Nb3ZlKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Nb3ZlKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwotICAgIGlm
IChzcmNPcE1hc2sgJiBEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBpZiAoc291cmNlT3BlcmF0
aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAgIHJldHVybiBE
cmFnQ29udHJvbGxlcjo6cGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChz
cmNPcE1hc2sgJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFz
ay5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uQ29weTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYg
KHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAg
ICByZXR1cm4gRHJhZ09wZXJhdGlvbkxpbms7CiAgICAgCiAgICAgLy8gRklYTUU6IERvZXMgSUUg
cmVhbGx5IHJldHVybiAiZ2VuZXJpYyIgZXZlbiBpZiBubyBvcGVyYXRpb25zIHdlcmUgYWxsb3dl
ZCBieSB0aGUgc291cmNlPwpAQCAtNzIyLDE3ICs3MjIsMTcgQEAgYm9vbCBEcmFnQ29udHJvbGxl
cjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYg
b3BlcmEKICAgICBpZiAoIXZpZXdQcm90ZWN0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKCk7Ci0gICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+
ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0
YSksIFsmZHJhZ0RhdGFdKCkgeyByZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoZHJhZ0RhdGEpOyB9LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMo
KSk7CisgICAgYXV0byBzb3VyY2VPcGVyYXRpb25NYXNrID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKCk7CisgICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+
ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0
YSksIFsmZHJhZ0RhdGFdKCkgeyByZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3AoZHJhZ0RhdGEpOyB9LCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnRGF0YS5jb250YWluc0Zp
bGVzKCkpOwogICAgIGlmICghdGFyZ2V0UmVzcG9uc2UuYWNjZXB0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbikKLSAgICAgICAgb3Bl
cmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc291cmNlT3BlcmF0aW9uKTsKLSAgICBl
bHNlIGlmICghKHNvdXJjZU9wZXJhdGlvbiAmIHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbi52YWx1
ZSgpKSkgLy8gVGhlIGVsZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBpcyBub3Qgc3Vw
cG9ydGVkIGJ5IHRoZSBzb3VyY2UKKyAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1h
c2spCisgICAgICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNvdXJjZU9w
ZXJhdGlvbk1hc2spOworICAgIGVsc2UgaWYgKCFzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5z
QW55KHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2sudmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50
IHBpY2tlZCBhbiBvcGVyYXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNl
CiAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOwogICAgIGVsc2UKLSAgICAg
ICAgb3BlcmF0aW9uID0gdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uLnZhbHVlKCk7CisgICAgICAg
IG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHRhcmdldFJlc3BvbnNlLm9wZXJh
dGlvbk1hc2sudmFsdWUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTg5OSw3ICs4OTks
NyBAQCBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvclNlbGVjdGlvbkRyYWcoRnJhbWUmIHNyYykK
ICAgICByZXR1cm4gSW50UG9pbnQoeHBvcywgeXBvcyk7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3Bl
cmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNEYXRh
KQorYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRy
YWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNEYXRhKQogewogICAgIGlm
ICghc3JjLnZpZXcoKSB8fCAhc3JjLmNvbnRlbnRSZW5kZXJlcigpIHx8ICFzdGF0ZS5zb3VyY2Up
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkyMiw3ICs5MjIsNyBAQCBib29sIERyYWdDb250
cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJh
Z09wZXJhdGlvbgogICAgIEludFBvaW50IG1vdXNlRHJhZ2dlZFBvaW50ID0gc3JjLnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7CiAKICAgICBtX2RyYWdnaW5n
SW1hZ2VVUkwgPSBVUkwoKTsKLSAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKKyAg
ICBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrID0gc291cmNlT3BlcmF0aW9uTWFzazsKIAogICAg
IERyYWdJbWFnZSBkcmFnSW1hZ2U7CiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKQEAgLTk0
NSw3ICs5NDUsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywg
Y29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICAvLyBTZWxlY3Rp
b24sIGltYWdlLCBhbmQgbGluayBkcmFncyByZWNlaXZlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dl
ZCBkcmFnIG9wZXJhdGlvbnMgdGhhdAogICAgICAgICAvLyBmb2xsb3dzIGZyb206CiAgICAgICAg
IC8vIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0/cmV2PTQ4NTI2I0wzNDMwCi0gICAgICAgIG1fc291cmNlRHJhZ09w
ZXJhdGlvbiA9IHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KG1fc291cmNlRHJhZ09wZXJhdGlv
biB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbkNvcHkpOworICAgICAgICBt
X3NvdXJjZURyYWdPcGVyYXRpb25NYXNrLmFkZCh7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFn
T3BlcmF0aW9uQ29weSB9KTsKICAgICB9CiAKICAgICBBU1NFUlQoc3RhdGUuc291cmNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCA5NTdmYWIxMGY2MC4uNDNiNjgwNWZj
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTcxLDcgKzcxLDcgQEAg
cHVibGljOgogICAgIC8vIGRyYWcgbG9naWMgaXMgaW4gV2ViQ29yZS4KICAgICB2b2lkIHNldERp
ZEluaXRpYXRlRHJhZyhib29sIGluaXRpYXRlZCkgeyBtX2RpZEluaXRpYXRlRHJhZyA9IGluaXRp
YXRlZDsgfQogICAgIGJvb2wgZGlkSW5pdGlhdGVEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9kaWRJ
bml0aWF0ZURyYWc7IH0KLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZURyYWdPcGVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZURyYWdPcGVyYXRpb247IH0KKyAgICBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZURyYWdPcGVyYXRpb25NYXNrOyB9CiAgICAgY29uc3QgVVJMJiBkcmFnZ2luZ0ltYWdlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ0ltYWdlVVJMOyB9CiAgICAgdm9pZCBzZXREcmFn
T2Zmc2V0KGNvbnN0IEludFBvaW50JiBvZmZzZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9
CiAgICAgY29uc3QgSW50UG9pbnQmIGRyYWdPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2RyYWdP
ZmZzZXQ7IH0KQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZmluYWxpemVEcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50Jik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENh
cmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcyk7CiAKLSAgICBib29sIHN0YXJ0
RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdP
cmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CisgICAgYm9vbCBzdGFydERyYWco
RnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdP
cmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNvbnN0IElu
dFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4T3Jp
Z2luYWxJbWFnZUFyZWE7CkBAIC0xNTIsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7CiAg
ICAgRHJhZ1NvdXJjZUFjdGlvbiBtX2RyYWdTb3VyY2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9u
Tm9uZSB9OwogICAgIGJvb2wgbV9kaWRJbml0aWF0ZURyYWcgeyBmYWxzZSB9OwotICAgIERyYWdP
cGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9uIHsgRHJhZ09wZXJhdGlvbk5vbmUgfTsgLy8g
U2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0
aGluIFdlYktpdAorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBtX3NvdXJjZURyYWdPcGVy
YXRpb25NYXNrOyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEg
bW91c2UgZG93biB3aXRoaW4gV2ViS2l0LgogICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKICAg
ICBVUkwgbV9kcmFnZ2luZ0ltYWdlVVJMOwogICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdEcm9wIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA0YzZmYjk1ZTZj
MC4uZmNiMjU4OWEwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIz
OTYsMTkgKzIzOTYsMTkgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5vZGUmIHRhcmdldCwg
RGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCiB9CiAKIEV2ZW50SGFuZGxlcjo6RHJhZ1Rhcmdl
dFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYg
cGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdG
aWxlcykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0Zp
bGVzKQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JV
cGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0LmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCks
IHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIg
PSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCh0YXJnZXQuZG9jdW1l
bnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdG
aWxlcyk7CiAgICAgYm9vbCBhY2NlcHQgPSBkaXNwYXRjaERyYWdFdmVudChldmVudFR5cGUsIHRh
cmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQoKSk7CiAgICAgaWYgKCFhY2NlcHQpCiAgICAg
ICAgIGFjY2VwdCA9IGZpbmREcm9wWm9uZSh0YXJnZXQsIGRhdGFUcmFuc2Zlcik7CiAgICAgZGF0
YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgaWYgKGFjY2VwdCAmJiAh
ZGF0YVRyYW5zZmVyLT5kcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVy
biB7IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb24oKSB9OworICAgICAg
ICByZXR1cm4geyB0cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygp
IH07CiAgICAgcmV0dXJuIHsgYWNjZXB0LCBXVEY6Om51bGxvcHQgfTsKIH0KIAotRXZlbnRIYW5k
bGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYgbWFrZVBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitFdmVudEhhbmRsZXI6OkRyYWdU
YXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+KCk+JiBtYWtlUGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJh
bWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogICAgIGlmICghbV9mcmFtZS52aWV3KCkpCkBA
IC0yNDM4LDE5ICsyNDM4LDE5IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2
ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZy
YW1lKiB0YXJnZXRGcmFtZTsKICAgICAgICAgaWYgKHRhcmdldElzRnJhbWUobmV3VGFyZ2V0Lmdl
dCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAg
ICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVE
cmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dp
bmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRI
YW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VP
cGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJn
ZXQpIHsKICAgICAgICAgICAgIC8vIEFzIHBlciBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUg
c3BlYy4sIHdlIG11c3QgYWx3YXlzIGZpcmUgYSBkcmFnIGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBk
cmFnZW50ZXIsIGRyYWdsZWF2ZSwgb3IgZHJhZ292ZXIgZXZlbnQuCiAgICAgICAgICAgICBkaXNw
YXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVu
dCk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQ
YXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAg
ICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJvYXJkKCksIHNv
dXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBSZWN1cnNpbmcgYWdhaW4gaGVyZSBkb2Vzbid0IG1ha2Ugc2Vu
c2UgaWYgdGhlIG5ld1RhcmdldCBhbmQgbV9kcmFnVGFyZ2V0IHdlcmUgaW4gdGhlIHNhbWUgZnJh
bWUuCiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9u
c2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQs
IG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAg
ICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURy
YWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJh
Z2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0gICAgICAg
ICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdE
cm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291
cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5z
ZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFy
Z2V0LT5kb2N1bWVudCgpLCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBk
cmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnbGVhdmVFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQo
KSk7CiAgICAgICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsK
ICAgICAgICAgfQpAQCAtMjQ2NCwxMiArMjQ2NCwxMiBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJn
ZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3Jt
TQogICAgICAgICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1l
KG5ld1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0
RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVy
YXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0
RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVi
b2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxz
ZSBpZiAobmV3VGFyZ2V0KSB7CiAgICAgICAgICAgICAvLyBOb3RlLCB3aGVuIGRlYWxpbmcgd2l0
aCBzdWItZnJhbWVzLCB3ZSBtYXkgbmVlZCB0byBmaXJlIG9ubHkgYSBkcmFnb3ZlciBldmVudCBh
cyBhIGRyYWcgZXZlbnQgbWF5IGhhdmUgYmVlbiBmaXJlZCBlYXJsaWVyLgogICAgICAgICAgICAg
aWYgKCFtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCkKICAgICAgICAgICAgICAgICBkaXNw
YXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVu
dCk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnb3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBh
c3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAg
IHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygp
LmRyYWdvdmVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgICAgIG1fc2hvdWxkT25s
eUZpcmVEcmFnT3ZlckV2ZW50ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDc3LDI1
ICsyNDc3LDI1IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgcmV0dXJuIHJlc3BvbnNl
OwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVi
b2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykK
K3ZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2lu
Z0ZpbGVzKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKICAg
ICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0
LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAg
ICAgICAgdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGV2ZW50
LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOwor
ICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9w
KGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2lu
Z0ZpbGVzKTsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewogICAgICAgICBkaXNwYXRj
aEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7
CiAKLSAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVw
ZGF0aW5nRHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVi
b2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0
YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9k
cmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRp
b25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRO
YW1lcygpLmRyYWdsZWF2ZUV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVy
LmdldCgpKTsKICAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7
CiAgICAgfQogICAgIGNsZWFyRHJhZ1N0YXRlKCk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpw
ZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VP
cGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3Jt
RHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+
IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCkBAIC0yNTAzLDkgKzI1MDMsOSBAQCBib29sIEV2
ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZlbnQsIHN0ZDo6dW5pcQogICAgIGJvb2wgcHJldmVudGVkRGVmYXVsdCA9IGZhbHNlOwogICAg
IGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAg
ICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgIHByZXZlbnRlZERlZmF1bHQgPSB0
YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGV2ZW50LCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAg
ICAgICAgcHJldmVudGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJm
b3JtRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0g
ICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKG1f
ZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0
aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBh
c3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAg
cHJldmVudGVkRGVmYXVsdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcm9wRXZl
bnQsICptX2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkYXRhVHJh
bnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICB9CkBAIC0zNzI5LDEzICszNzI5
LDEzIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkaWRTdGFydERyYWcoKQogI2VuZGlmCiB9CiAKLXZv
aWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24g
bWF5RXh0ZW5kRHJhZ1Nlc3Npb24pCit2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVk
QXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGRyYWdPcGVyYXRpb25NYXNrLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFn
U2Vzc2lvbikKIHsKICAgICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVxdWVzdCBzbyB0aGF0IFJlbmRl
ckxheWVyIGdldHMgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92ZXIgYW5kIDphY3RpdmUgcHNl
dWRvY2xhc3Nlcy4KICAgICBwcmVwYXJlTW91c2VFdmVudChPcHRpb25TZXQ8SGl0VGVzdFJlcXVl
c3Q6OlJlcXVlc3RUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVz
dDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH0sIGV2ZW50KTsKIAogICAgIGlmIChz
aG91bGREaXNwYXRjaEV2ZW50c1RvRHJhZ1NvdXJjZUVsZW1lbnQoKSkgewotICAgICAgICBkcmFn
U3RhdGUoKS5kYXRhVHJhbnNmZXItPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbik7
CisgICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRp
b25NYXNrKGRyYWdPcGVyYXRpb25NYXNrKTsKICAgICAgICAgZGlzcGF0Y2hFdmVudFRvRHJhZ1Nv
dXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwgZXZlbnQpOwogICAgIH0KICAg
ICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CkBAIC0zODYzLDcgKzM4NjMsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCwgQ2hlY2tEcgogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBw
b2ludCwgd2UgZG9uJ3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawogICAg
IGludmFsaWRhdGVDbGljaygpOwogICAgIAotICAgIERyYWdPcGVyYXRpb24gc3JjT3AgPSBEcmFn
T3BlcmF0aW9uTm9uZTsgICAgICAKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNl
T3BlcmF0aW9uTWFzazsKICAgICAKICAgICAvLyBUaGlzIGRvZXMgd29yayBvbmx5IGlmIHdlIG1p
c3NlZCBhIGRyYWdFbmQuIERvIGl0IGFueXdheSwganVzdCB0byBtYWtlIHN1cmUgdGhlIG9sZCBk
YXRhVHJhbnNmZXIgZ2V0cyBudW1iZWQuCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGRvaW5nIHRo
aXMgZWFybGllciBpbiB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBlYXJsaWVzdCBwb2ludCB3ZSdyZSBz
dXJlIGl0IHdvdWxkIGJlIHNhZmUgdG8gZHJvcCBhbiBvbGQgZHJhZy4KQEAgLTM4OTgsNyArMzg5
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAKICAgICAgICAgaWYgKG1fbW91c2VEb3du
TWF5U3RhcnREcmFnKSB7CiAgICAgICAgICAgICAvLyBHYXRoZXIgdmFsdWVzIGZyb20gREhUTUwg
ZWxlbWVudCwgaWYgaXQgc2V0IGFueS4KLSAgICAgICAgICAgIHNyY09wID0gZHJhZ1N0YXRlKCku
ZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHNvdXJjZU9wZXJh
dGlvbk1hc2sgPSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbk1hc2so
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gWXVjaywgYSBkcmFnZ2VkSW1hZ2U6bW92
ZVRvOiBtZXNzYWdlIGNhbiBiZSBmaXJlZCBhcyBhIHJlc3VsdCBvZiBraWNraW5nIG9mZiB0aGUK
ICAgICAgICAgICAgIC8vIGRyYWcgd2l0aCBkcmFnSW1hZ2UhIEJlY2F1c2Ugb2YgdGhhdCBkdW1i
IHJlZW50cmFuY3ksIHdlIG1heSB0aGluayB3ZSd2ZSBub3QKQEAgLTM5MDksNyArMzkwOSw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAg
bV9kaWRTdGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFn
KG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25D
b250ZW50c1Bvc2l0aW9uLCBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgICAgICBt
X2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWco
bV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGV2ZW50LmV2ZW50KCks
IG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
KTsKICAgICAgICAgLy8gSW4gV2ViS2l0MiB3ZSBjb3VsZCByZS1lbnRlciB0aGlzIGNvZGUgYW5k
IHN0YXJ0IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBwcm9i
bGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9taXNl
ZCB0eXBlcy4KICAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAppbmRleCA2ZmZjODNjMDEyZi4uMjdjYWU2MWVkMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaApAQCAtMTYzLDExICsxNjMsMTEgQEAgcHVibGljOgogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgc3RydWN0IERyYWdUYXJnZXRSZXNwb25zZSB7CiAgICAgICAg
IGJvb2wgYWNjZXB0IHsgZmFsc2UgfTsKLSAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
b3BlcmF0aW9uOworICAgICAgICBPcHRpb25hbDxPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4+IG9w
ZXJhdGlvbk1hc2s7CiAgICAgfTsKLSAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgdXBkYXRlRHJhZ0Fu
ZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlv
biwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKLSAgICB2b2lkIGNhbmNlbERyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFn
T3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIGJvb2wgcGVyZm9ybURyYWdBbmRE
cm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIERyYWdUYXJnZXRS
ZXNwb25zZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25z
dCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICB2b2lkIGNhbmNlbERy
YWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7
CisgICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB2b2lkIHVwZGF0ZURyYWdTdGF0ZUFmdGVyRWRpdERy
YWdJZk5lZWRlZChFbGVtZW50JiByb290RWRpdGFibGVFbGVtZW50KTsKICAgICBSZWZQdHI8RWxl
bWVudD4gZHJhZ2dlZEVsZW1lbnQoKSBjb25zdDsKICNlbmRpZgpAQCAtMjY4LDcgKzI2OCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFN0YXJ0RHJhZygpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgRHJh
Z09wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gPSBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6
Tm8pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpObyk7CiAjZW5kaWYKIAogICAgIHZvaWQg
Zm9jdXNEb2N1bWVudFZpZXcoKTsKQEAgLTQxNiw3ICs0MTYsNyBAQCBwcml2YXRlOgogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIGRpc3BhdGNoRHJhZ0V2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmLCBEYXRhVHJhbnNmZXImKTsKLSAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hE
cmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVt
ZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiYmICwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBE
cmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmICwgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgaW52YWxpZGF0ZURhdGFU
cmFuc2ZlcigpOwogCiAgICAgYm9vbCBoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdEYXRhLmNwcAppbmRleCA4ZjY3NTVmNTc2MS4uZThjNDBmNTU5MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmICFQTEFURk9STShDT0NPQSkKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJl
ZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBw
bGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVz
dGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJh
Z0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+
IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9z
aXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9w
bGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC00Miw3ICs0Miw3IEBAIERyYWdEYXRhOjpEcmFnRGF0
YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvCiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdz
IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlv
bk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFn
cyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rp
b25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDQyMWEyOTk0M2IzLi4zMWI4YWI5
ZWU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03NSwxMyArNzUsMTMgQEAg
cHVibGljOgogICAgIGVudW0gY2xhc3MgRHJhZ2dpbmdQdXJwb3NlIHsgRm9yRWRpdGluZywgRm9y
RmlsZVVwbG9hZCwgRm9yQ29sb3JDb250cm9sIH07CiAKICAgICAvLyBjbGllbnRQb3NpdGlvbiBp
cyB0YWtlbiB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYWcgZXZlbnQgd2l0aGluIHRoZSB0
YXJnZXQgd2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0b3AgbGVmdAotICAgIFdFQkNPUkVfRVhQ
T1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdP
cGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0
aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24o
KSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0
aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGlu
YXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5n
JiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3Qg
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIERyYWdB
cHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0
aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CiAgICAgLy8gVGhp
cyBjb25zdHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJh
Z0RhdGEKICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRo
ZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVsdDsKICNpZiBQTEFURk9STShX
SU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFn
cyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNv
bnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUp
OwogICAgIGNvbnN0IERyYWdEYXRhTWFwJiBkcmFnRGF0YU1hcCgpOwogICAgIHZvaWQgZ2V0RHJh
Z0ZpbGVEZXNjcmlwdG9yRGF0YShpbnQmIHNpemUsIFN0cmluZyYgcGF0aG5hbWUpOwogICAgIHZv
aWQgZ2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9pZCogZGF0YUJsb2IpOwpAQCAt
OTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfQogICAgIERyYWdBcHBsaWNhdGlv
bkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkZsYWdzOyB9CiAgICAg
RHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURyYWdE
YXRhOyB9Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSBj
b25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQorICAgIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7
IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQogICAgIGJvb2wgY29udGFp
bnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcykgY29uc3Q7
CiAgICAgYm9vbCBjb250YWluc1BsYWluVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnND
b21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2UgPSBEcmFnZ2luZ1B1cnBvc2U6OkZvckVk
aXRpbmcpIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQg
bV9jbGllbnRQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwogICAgIERy
YWdEYXRhUmVmIG1fcGxhdGZvcm1EcmFnRGF0YTsKLSAgICBEcmFnT3BlcmF0aW9uIG1fZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBtX2Ry
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBtX2Fw
cGxpY2F0aW9uRmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlTmFtZXM7CiAgICAgT3B0
aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KaW5k
ZXggOWNjYWZjMGNkN2EuLjNhMTI4OWQ0YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW5s
aW5lIFN0cmluZyB0aWZmUGFzdGVib2FyZFR5cGUoKQogI2VuZGlmCiB9CiAKLURyYWdEYXRhOjpE
cmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVy
YXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0
aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRh
KERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3Qg
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNl
T3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50
UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBv
c2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC0xMzEsNyArMTMxLDcg
QEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNv
bnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdE
ZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdE
YXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdz
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2sp
CiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQ
b3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAppbmRleCAwYzAxM2Nm
NjdlZS4uNzE0NjRjZjFjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtV
dGlsaXRpZXMuY3BwCkBAIC0xNDksMzcgKzE0OSwzNyBAQCB1bnNpZ25lZCBzdGF0ZU1vZGlmaWVy
Rm9yR2RrQnV0dG9uKHVuc2lnbmVkIGJ1dHRvbikKICAgICByZXR1cm4gMSA8PCAoOCArIGJ1dHRv
biAtIDEpOwogfQogCi1EcmFnT3BlcmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24o
R2RrRHJhZ0FjdGlvbiBnZGtBY3Rpb24pCitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZ2RrRHJh
Z0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uIGdka0FjdGlvbikKIHsKICAgICAv
LyBXZSBoYXZlIG5vIGdvb2Qgd2F5IHRvIGRldGVjdCBEcmFnT3BlcmF0aW9uRXZlcnkgb3RoZXIg
dGhhbgogICAgIC8vIHRvIHVzZSBpdCB3aGVuIGFsbCBhcHBsaWNhYmxlIGZsYWdzIGFyZSBvbi4K
ICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9DT1BZCiAgICAgICAgICYmIGdka0FjdGlv
biAmIEdES19BQ1RJT05fTU9WRQogICAgICAgICAmJiBnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0xJ
TkspCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uRXZlcnk7CisgICAgICAgIHJldHVybiB7
IERyYWdPcGVyYXRpb25FdmVyeSB9OwogCi0gICAgdW5zaWduZWQgYWN0aW9uID0gRHJhZ09wZXJh
dGlvbk5vbmU7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGFjdGlvbjsKICAgICBpZiAo
Z2RrQWN0aW9uICYgR0RLX0FDVElPTl9DT1BZKQotICAgICAgICBhY3Rpb24gfD0gRHJhZ09wZXJh
dGlvbkNvcHk7CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlvbkNvcHkpOwogICAgIGlm
IChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX01PVkUpCi0gICAgICAgIGFjdGlvbiB8PSBEcmFnT3Bl
cmF0aW9uTW92ZTsKKyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uTW92ZSk7CiAgICAg
aWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fTElOSykKLSAgICAgICAgYWN0aW9uIHw9IERyYWdP
cGVyYXRpb25MaW5rOworICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVyYXRpb25MaW5rKTsKIAot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihhY3Rpb24pOworICAgIHJldHVy
biBhY3Rpb247CiB9CiAKLUdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlv
bnMoRHJhZ09wZXJhdGlvbiBjb3JlQWN0aW9uKQorR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9u
VG9HZGtEcmFnQWN0aW9ucyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gY29yZUFjdGlvbikKIHsK
ICAgICB1bnNpZ25lZCBnZGtBY3Rpb24gPSAwOwotICAgIGlmIChjb3JlQWN0aW9uID09IERyYWdP
cGVyYXRpb25Ob25lKQorICAgIGlmIChjb3JlQWN0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlvbik7CiAKLSAgICBpZiAoY29y
ZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5z
KERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgZ2RrQWN0aW9uIHw9IEdES19BQ1RJT05fQ09Q
WTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAgIGlmIChjb3Jl
QWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkKICAgICAgICAgZ2RrQWN0aW9uIHw9
IEdES19BQ1RJT05fTU9WRTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25MaW5r
KQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAg
ICAgZ2RrQWN0aW9uIHw9IEdES19BQ1RJT05fTElOSzsKIAogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxHZGtEcmFnQWN0aW9uPihnZGtBY3Rpb24pOwpAQCAtMTg3LDExICsxODcsMTEgQEAgR2RrRHJh
Z0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhEcmFnT3BlcmF0aW9uIGNvcmVB
Y3Rpb24pCiAKIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlv
bihEcmFnT3BlcmF0aW9uIGNvcmVBY3Rpb24pCiB7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJh
Z09wZXJhdGlvbkV2ZXJ5IHx8IGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBp
ZiAoY29yZUFjdGlvbiA9PSBhbnlEcmFnT3BlcmF0aW9uKCkgfHwgY29yZUFjdGlvbi5jb250YWlu
cyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX0NPUFk7Ci0g
ICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAoY29yZUFjdGlv
bi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9O
X01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAo
Y29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJldHVybiBH
REtfQUNUSU9OX0xJTks7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KDAp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGll
cy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCmluZGV4IDVh
YWI0ZWI3OWEyLi4xOThiYzhlMjUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuaApAQCAtNTEsOCArNTEsOCBAQCBTdHJpbmcgZGVmYXVsdEd0a1N5c3RlbUZv
bnQoKTsKIAogV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRv
bih1bnNpZ25lZCBidXR0b24pOwogCi1XRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGdka0Ry
YWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBH
ZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKERyYWdPcGVyYXRpb24p
OwotV0VCQ09SRV9FWFBPUlQgR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtE
cmFnQWN0aW9uKERyYWdPcGVyYXRpb24pOworV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7CitX
RUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25z
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9u
IGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggZWUwZDhiMjYwY2MuLjE4ODcwZjIyNzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBCYWlkdSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MSw3ICs0MSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIERyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0
YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBw
bGljYXRpb25GbGFncyBmbGFncykKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNl
T3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MpCiAgICAgOiBtX2NsaWVu
dFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQ
b3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNzhiZTdi
NDgyYy4uMTQ4ZjYxNTJjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDYtMDEg
IERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IGZvciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMjEyNjA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OmNv
cmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24g
dG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OmRyYWdnaW5nRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2lu
Z1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgor
ICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24g
ZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFbmRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6XSk6Cisg
ICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbik6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjpkcmFnRGVzdGluYXRpb25BY3Rp
b246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0ludGVyYWN0aW9uOndpbGxBbmlt
YXRlTGlmdFdpdGhBbmltYXRvcjpzZXNzaW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uOmRpZEVuZFdpdGhPcGVyYXRpb246XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOnNlc3Npb25EaWRFbmQ6XSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkcmFnRW5kZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24pOgor
CiAyMDIwLTA2LTAxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgRG9uJ3QgdXNlIGNhc3RzIHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24gYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIHR5cGVzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAzZmRkODA0OWQ0OS4uM2Rh
YTMyY2IyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAt
MjA5LDYgKzIwOSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVk
KCk6CiAgICAgICAgICdXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0JywKICAgICAgICAgJ1dlYkNv
cmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29y
a2VySWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpEcmFnT3BlcmF0aW9uJywgICMgRklY
TUU6IFJlbW92ZSBhZnRlciBlbnVtIGNsYXNzIERyYWdPcGVyYXRpb24uCiAgICAgICAgICdXZWJD
b3JlOjpGZXRjaElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXInLApAQCAtNTg4
LDYgKzU4OSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29y
ZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJU
eXBlcy5oPiddLAogICAgICAgICAnV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVz
dCc6IFsnIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6OkRy
YWdIYW5kbGluZ01ldGhvZCc6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKKyAgICAgICAg
J1dlYkNvcmU6OkRyYWdPcGVyYXRpb24nOiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdz
JzogWyc8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVE
YXRhV2l0aFBhcnNlZFVSTCc6IFsnPFdlYkNvcmUvU2hhcmVEYXRhLmg+J10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwu
aAppbmRleCBjODY4YzI3NzNmOC4uODk3ODlmMzgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtNDAs
NCArNDAsMjQgQEAgaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFcKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCisjaWYgVVNFKEFQUEtJVCkKK2lubGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7
CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKyAgICBpZiAo
b3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJh
dGlvbkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmsp
OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICBy
ZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0
aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJh
dGlvbk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUp
OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJl
c3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ0
NDM4MTEyOWY5Li5jZThmMmY5OGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNTMxLDcgKzE1MzEsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhKQogewogICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKTsK
ICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCk7Ci0gICAgZW5jb2Rlci5l
bmNvZGVFbnVtKGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKKyAgICBl
bmNvZGVyIDw8IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGVu
Y29kZXIuZW5jb2RlRW51bShkcmFnRGF0YS5mbGFncygpKTsKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCk7CkBAIC0xNTUwLDggKzE1
NTAsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZ2xvYmFs
UG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBEcmFnT3BlcmF0aW9uIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShk
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spKQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShk
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBEcmFnQXBwbGljYXRpb25GbGFncyBhcHBsaWNhdGlvbkZsYWdzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZTM5ZWE2Y2ZlOC4uZjE0OGFj
ZDIyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CkBAIC0zOTEzLDcgKzM5MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnZ2VkSW1hZ2UoTlNJ
bWFnZSAqLCBDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3BlcgogICAgIHNlbmRE
cmFnRW5kVG9QYWdlKGVuZFBvaW50LCBvcGVyYXRpb24pOwogfQogCi12b2lkIFdlYlZpZXdJbXBs
OjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3Bl
cmF0aW9uKQordm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UoQ0dQb2ludCBlbmRQ
b2ludCwgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgTlNQb2ludCB3aW5kb3dJbWFnZUxvYyA9
IFtbbV92aWV3IHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpOU1BvaW50RnJvbUNHUG9pbnQo
ZW5kUG9pbnQpXTsKQEAgLTM5MjMsNyArMzkyMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNlbmRE
cmFnRW5kVG9QYWdlKENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24p
CiAgICAgLy8gUHJldmVudCBxdWV1ZWQgbW91c2VEcmFnZ2VkIGV2ZW50cyBmcm9tIGNvbWluZyBh
ZnRlciB0aGUgZHJhZyBhbmQgZmFrZSBtb3VzZVVwIGV2ZW50LgogICAgIG1faWdub3Jlc01vdXNl
RHJhZ2dlZEV2ZW50cyA9IHRydWU7CiAKLSAgICBtX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpJ
bnRQb2ludCh3aW5kb3dNb3VzZUxvYyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2Jh
bFBvaW50KHdpbmRvd01vdXNlTG9jLCBbbV92aWV3IHdpbmRvd10pKSwgb3BlcmF0aW9uKTsKKyAg
ICBtX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dNb3VzZUxvYyksIFdl
YkNvcmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd01vdXNlTG9jLCBbbV92
aWV3IHdpbmRvd10pKSwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdPcGVyYXRpb25NYXNrKSk7
CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncyBhcHBsaWNhdGlvbkZs
YWdzRm9yRHJhZyhOU1ZpZXcgKnZpZXcsIGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZv
KQpAQCAtMzk0Nyw3ICszOTQ3LDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFn
Z2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFn
Z2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2Jh
bChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21f
dmlldyB3aW5kb3ddKSk7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29y
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFj
dGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBhdXRvIGRyYWdPcGVyYXRp
b25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFz
ayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrKTsKICAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8s
IGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFnc0ZvckRy
YWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRp
b25BY3Rpb25NYXNrKTsKIAogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9u
KCk7CkBAIC0zOTYxLDcgKzM5NjEsNyBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRy
YWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xv
YmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBb
bV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBj
b3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJh
dGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0lu
Zm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25N
YXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2spOwogICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9y
RHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2spOwogICAgIG1fcGFnZS0+ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEsIGRyYWdn
aW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CiAKQEAgLTM5ODYsNyArMzk4Niw3IEBA
IHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJh
Z2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZl
cnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2Vk
KCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdn
aW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0lu
Zm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWco
bV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKICAgICBtX3BhZ2UtPmRy
YWdFeGl0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7
CiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKICAgICBkcmFnZ2lu
Z0luZm8ubnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1faW5pdGlhbE51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3A7CkBAIC00MDAyLDcgKzQwMDIsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJm
b3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9p
bnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0
aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJhZ0RhdGEg
PSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRv
cmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdE
YXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWws
IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgp
LCBkcmFnZ2luZ0luZm8pKTsKIAogICAgIE5TQXJyYXkgKnR5cGVzID0gZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGNlZGQ0MTE3NDExLi5jNjUyN2EwMWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNDI0LDExICsyNDI0LDExIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24g
YWN0aW9uLCBEcmFnCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJDb3JlOjpEcmFn
SGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlu
cHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBJbnRSZWN0JiBp
bnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRSZWN0KQordm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uIGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFn
SGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJl
ck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IEludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0
IEludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MsIGRyYWdPcGVyYXRpb24gPD0gRHJhZ09wZXJhdGlvbkRlbGV0ZSk7CiAKLSAgICBtX2N1
cnJlbnREcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oZHJhZ09wZXJh
dGlvbik7CisgICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IGRyYWdPcGVyYXRpb247CiAgICAg
bV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kID0gZHJhZ0hhbmRsaW5nTWV0aG9kOwogICAgIG1f
Y3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgPSBtb3VzZUlzT3ZlckZpbGVJbnB1dDsKICAgICBt
X2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCA9IG51bWJlck9mSXRlbXNUb0Jl
QWNjZXB0ZWQ7CkBAIC0yNDM4LDIwICsyNDM4LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQ
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViQ29y
CiB9CiAKICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKFNl
bGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCB1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlKQordm9pZCBXZWJQYWdl
UHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgZHJhZ0ltYWdlSGFuZGxlKQogewogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJ
bWFnZSA9ICFkcmFnSW1hZ2VIYW5kbGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShkcmFnSW1hZ2VIYW5kbGUpIDogbnVsbHB0cjsKLSAgICBwYWdlQ2xpZW50KCkuc3RhcnREcmFn
KFdURk1vdmUoc2VsZWN0aW9uRGF0YSksIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KGRyYWdPcGVyYXRpb24pLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOworICAgIHBhZ2VDbGllbnQo
KS5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbiwgV1RGTW92
ZShkcmFnSW1hZ2UpKTsKIAogICAgIGRpZFN0YXJ0RHJhZygpOwogfQogI2VuZGlmCiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5k
ZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0
aW9uLCBkcmFnT3BlcmF0aW9uTWFzaykpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3YmE5ZjhiNWVjMC4u
N2U5NGUwYmUzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
MTU2LDggKzExNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtRHJhZ09wZXJhdGlvbihX
ZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CiAg
ICAgdm9pZCBkaWRQZXJmb3JtRHJhZ09wZXJhdGlvbihib29sIGhhbmRsZWQpOwogCi0gICAgdm9p
ZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwg
V2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1
bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBpbnNlcnRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRS
ZWN0KTsKLSAgICB2b2lkIGRyYWdFbmRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0
X3Qgb3BlcmF0aW9uKTsKKyAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wg
bW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOworICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOwogICAg
IHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7CiAgICAgdm9p
ZCBzZXREcmFnQ2FyZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKQEAgLTExNjcsNyAr
MTE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBjb25z
dCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNp
emUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgc3RhcnREcmFnKFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZSk7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyZDIz
ZTRiNjYwYi4uMTIyNjA0MDY2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxMCw3ICszMTAsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogCiAgICAgIyBEcmFnIGFuZCBkcm9wIG1lc3NhZ2VzCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKLSAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0
X3QgZHJhZ09wZXJhdGlvbiwgZW51bTp1aW50OF90IFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhv
ZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVk
IG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIFdlYkNvcmU6OkludFJlY3QgaW5zZXJ0aW9uUmVj
dCwgV2ViQ29yZTo6SW50UmVjdCBlZGl0YWJsZUVsZW1lbnRSZWN0KQorICAgIERpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24s
IGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0
aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9C
ZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6OkludFJl
Y3QgZWRpdGFibGVFbGVtZW50UmVjdCkKICAgICBEaWRFbmREcmFnZ2luZygpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0zMTgsNyArMzE4
LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUg
aW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSwgU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcg
ZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUsIFN0cmluZyB1cmwsIFN0cmluZyB2aXNpYmxlVVJMLCBX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGUsIHVpbnQ2NF90IGFyY2hp
dmVTaXplKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JU
KQotICAgIFN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbkRhdGEsIHVp
bnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgZHJh
Z0ltYWdlKQorICAgIFN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbkRh
dGEsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiwgV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA0MzlkYjk5NzdlZS4uYjJjZDVmYTdjZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbQpAQCAtNzI4NSw3ICs3Mjg1LDcgQEAgLSAodm9pZClfZGlkSGFuZGxlRHJhZ1N0
YXJ0UmVxdWVzdDooQk9PTClzdGFydGVkCiAgICAgICAgIGlmIChzdGFydGVkKSB7CiAgICAgICAg
ICAgICAvLyBBIGNsaWVudCBvZiB0aGUgT2JqZWN0aXZlIEMgU1BJIG9yIFVJS2l0IG1pZ2h0IGhh
dmUgcHJldmVudGVkIHRoZSBkcmFnIGZyb20gYmVnaW5uaW5nIGVudGlyZWx5IGluIHRoZSBVSSBw
cm9jZXNzLCBpbiB3aGljaCBjYXNlCiAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGJhbGFuY2Ug
dGhlIGBkcmFnc3RhcnRgIGV2ZW50IHdpdGggYSBgZHJhZ2VuZGAuCi0gICAgICAgICAgICBfcGFn
ZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBfcGFnZS0+ZHJhZ0VuZGVkKHBv
c2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCB7IH0pOwogICAgICAgICB9CiAg
ICAgfQogfQpAQCAtNzMxNCwxMyArNzMxNCwzMSBAQCBzdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRy
b3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihXZWJDb3JlOjpEcmFnT3BlcmF0aQog
ICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25DYW5jZWw7CiB9CiAKK3N0YXRpYyBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uIGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKFVJRHJvcE9w
ZXJhdGlvbiBkcm9wT3BlcmF0aW9uKQoreworICAgIHN3aXRjaCAoZHJvcE9wZXJhdGlvbikgewor
ICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Gb3JiaWRkZW46Cisg
ICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBjYXNlIFVJ
RHJvcE9wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
Q29weTsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVybiBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworfQorCiAtIChXZWJDb3Jl
OjpEcmFnRGF0YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vz
c2lvbiBkcmFnRGVzdGluYXRpb25BY3Rpb246KFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWRyYWdE
ZXN0aW5hdGlvbkFjdGlvbgogewogICAgIENHUG9pbnQgZ2xvYmFsOwogICAgIENHUG9pbnQgY2xp
ZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lv
bjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07
CiAKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oc2Vzc2lvbi5hbGxvd3NNb3ZlT3BlcmF0aW9u
ID8gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25F
dmVyeSAmIH5XZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpOworICAgIGF1dG8gZHJhZ09wZXJh
dGlvbk1hc2sgPSBXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgaWYgKCFzZXNzaW9u
LmFsbG93c01vdmVPcGVyYXRpb24pCisgICAgICAgIGRyYWdPcGVyYXRpb25NYXNrLnJlbW92ZShX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29y
ZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9i
YWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgV2Vi
S2l0Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRpb25BY3Rpb24p
IH07CiB9CiAKQEAgLTgwMTMsNyArODAzMSw3IEBAIC0gKHZvaWQpZHJhZ0ludGVyYWN0aW9uOihV
SURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxBbmltYXRlTGlmdFdpdGhBbmltCiAg
ICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiBlbmRlZCBh
dCBzdGFydDogJXAiLCBzZXNzaW9uKTsKICAgICAgICAgICAgIC8vIFRoZSBsaWZ0IHdhcyBjYW5j
ZWxlZCwgc28gLWRyb3BJbnRlcmFjdGlvbjpzZXNzaW9uRGlkRW5kOiB3aWxsIG5ldmVyIGJlIGlu
dm9rZWQuIFRoaXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIGNsZWFuIHVwLgogICAgICAgICAgICAg
W3Byb3RlY3RlZFNlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgICAgICAg
ICAgcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5k
LCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBwYWdlLT5kcmFnRW5k
ZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIHsgfSk7CiAgICAgICAg
IH0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgZWxzZQpAQCAtODA0OCw3ICs4
MDY2LDcgQEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50
ZXJhY3Rpb24gc2Vzc2lvbjooaWQgPFVJRHJhZ1Nlc3MKICAgICAgICAgcmV0dXJuOwogCiAgICAg
W3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5k
ZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRq
dXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJh
Z0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBvcGVy
YXRpb24pOworICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9k
cmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVk
UG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlv
bihvcGVyYXRpb24pKTsKIH0KIAogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJhZ0ludGVy
YWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JDYW5jZWxs
aW5nSXRlbTooVUlEcmFnSXRlbSAqKWl0ZW0gd2l0aERlZmF1bHQ6KFVJVGFyZ2V0ZWREcmFnUHJl
dmlldyAqKWRlZmF1bHRQcmV2aWV3CkBAIC04MjY3LDcgKzgyODUsNyBAQCAtICh2b2lkKWRyb3BJ
bnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uRGlkRW5k
OihpZCA8VUlEcgogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRB
bmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGll
bnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VT
ZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTm9uZSk7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVk
SW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIHsgfSk7
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCAwZmMyZjA3MDE4My4uZDgyM2M3Y2FkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zOTQwLDE0ICszOTQwLDE0IEBAIE5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2ViUGFnZTo6bm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2lmIFBM
QVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERy
YWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzaywgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQzMl90IGZs
YWdzKQordm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRy
b2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzaywgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVp
bnQzMl90IGZsYWdzKQogewogICAgIGlmICghbV9wYWdlKSB7CiAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVy
YXRpb25Ob25lLCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVj
dGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJh
Z09wZXJhdGlvbj4oZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgc3RhdGljX2Nhc3Q8RHJh
Z0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVj
dGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsK
ICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkVu
dGVyZWQ6IHsKICAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBt
X3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwpAQCAtNDAxOCw3
ICs0MDE4LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJh
Z0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWIKIH0KICNlbmRpZgogCi12b2lkIFdl
YlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKK3ZvaWQgV2Vi
UGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+IGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIEludFBvaW50IGFkanVzdGVkQ2xpZW50UG9z
aXRpb24oY2xpZW50UG9zaXRpb24ueCgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdP
ZmZzZXQoKS54KCksIGNsaWVudFBvc2l0aW9uLnkoKSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnT2Zmc2V0KCkueSgpKTsKICAgICBJbnRQb2ludCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvc2l0aW9uLngoKSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0
KCkueCgpLCBnbG9iYWxQb3NpdGlvbi55KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJh
Z09mZnNldCgpLnkoKSk7CkBAIC00MDI5LDcgKzQwMjksNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdF
bmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQg
Z2xvYgogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlm
aWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFkLgogICAg
IFBsYXRmb3JtTW91c2VFdmVudCBldmVudChhZGp1c3RlZENsaWVudFBvc2l0aW9uLCBhZGp1c3Rl
ZEdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCAwLCBXZWJDb3Jl
OjpOb1RhcCk7Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5kcmFnU291
cmNlRW5kZWRBdChldmVudCwgKERyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKKyAgICBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBkcmFn
T3BlcmF0aW9uTWFzayk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEVu
ZERyYWdnaW5nKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggYjIxN2JjN2ViZWEuLjFhOTAxYzExZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04OTksNyArODk5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpOwogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgcGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpT
ZWxlY3Rpb25EYXRhJiYsIHVpbnQzMl90IGZsYWdzKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3QgZmxhZ3MpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiAhUExBVEZPUk0oR1RLKQpAQCAtOTA3
LDcgKzkwNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
LSAgICB2b2lkIGRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CisgICAg
dm9pZCBkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6
OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4pOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKTsK
ICAgICB2b2lkIG1heVBlcmZvcm1VcGxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IDUzOGU2NTcyZTUwLi5hZTkyNzQ3NjM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMDksMTQgKzMw
OSwxNCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJL
aXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAgIyBEcmFnIGFuZCBkcm9wLgog
I2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oZW51bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xsZXJBY3Rp
b24gYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50
UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
aywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24sIHVpbnQzMl90IGZsYWdzKQorICAg
IFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29u
dHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSBzZWxlY3Rpb24sIHVpbnQzMl90IGZsYWdzKQogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKEdU
SykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oZW51bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBXZWJD
b3JlOjpEcmFnRGF0YSBkcmFnRGF0YSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheSBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkKICNlbmRpZgogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAgICAgRGlkU3RhcnREcmFnKCkKLSAgICBEcmFnRW5kZWQoV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1
aW50NjRfdCBvcGVyYXRpb24pCisgICAgRHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVu
dFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNrKQogICAgIERyYWdDYW5jZWxs
ZWQoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMGU2NTY0OTZjODQuLjhiODdkYjM4YzIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpA
QCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0Zv
ckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvCiAgICAgLy8gaXMgb3Bh
cXVlIHRvIHRoZSB3ZWIgcHJvY2Vzcywgd2hpY2ggb25seSBzZWVzIHRoYXQgdGhlIGN1cnJlbnQg
ZHJhZyBoYXMgZW5kZWQsIGFuZCB0aGF0IGEgbmV3IG9uZSBpcyBiZWdpbm5pbmcuCiAgICAgUGxh
dGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgTGVm
dEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXApOwogICAgIG1fcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5kcmFnRW5kZWQoKTsKLSAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFu
ZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBEcmFnT3BlcmF0aW9uTm9uZSwgTWF5RXh0
ZW5kRHJhZ1Nlc3Npb246Olllcyk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRs
ZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgeyB9LCBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6
WWVzKTsKIAogICAgIGJvb2wgZGlkSGFuZGxlRHJhZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZl
bnRIYW5kbGVyKCkudHJ5VG9CZWdpbkRyYWdBdFBvaW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQ
b3NpdGlvbik7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRIYW5kbGVBZGRp
dGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChkaWRIYW5kbGVEcmFnKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggNTY4OWQzYTE5YzQuLjcyMTZmMjg4MzQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGZvciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYWdTb3VyY2VFbmRlZEF0
Om9wZXJhdGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAg
ICAoa2l0KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrRm9yTG9jYWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYWdnaW5nU2Vzc2lvbjpz
b3VyY2VPcGVyYXRpb25NYXNrRm9yRHJhZ2dpbmdDb250ZXh0Ol0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAg
IC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAgKC1b
V2ViVmlldyBkcmFnRGF0YUZvclNlc3Npb246Y2xpZW50Omdsb2JhbDpvcGVyYXRpb246XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3
IGRyYWdnaW5nVXBkYXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0V4aXRlZDpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToKKyAgICAgICAg
LSBNYWtlIHVzZSBvZiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBjb252ZXJzaW9uIGZ1bmN0aW9u
LgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIChDb2NvYURy
YWdPcGVyYXRpb24pOgorICAgICAgICAtIEFkZCB0eXBlZGVmIHNvIGNvcmVEcmFnT3BlcmF0aW9u
TWFzaygpIG1heSBiZSBzaGFyZWQgYWNyb3NzCisgICAgICAgICAgcGxhdGZvcm1zLgorICAgICAg
ICAoY29yZURyYWdPcGVyYXRpb25NYXNrKTogQWRkIGRlY2xhcmF0aW9uLgorICAgICAgICAoY29y
ZU9wdGlvbnMpOgorICAgICAgICAtIFJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVyIG5hbWUuCisK
IDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmU6OkRyYWdEZXN0aW5h
dGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb24gdHlwZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGQ0ZGVhN2MzOWM4
Li5iOWVlY2RjOGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCkBAIC05NDIsNyArOTQyLDcgQEAgLSAodm9pZClfc2V0VHlwaW5nU3R5bGU6KERPTUNT
U1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRoVW5kb0FjdGlvbjooV2ViQ29yZToKIH0KIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKLS0gKHZvaWQpX2RyYWdT
b3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xvYyBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlv
bilvcGVyYXRpb24KKy0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xv
YyBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilkcmFnT3BlcmF0aW9uTWFzawogewogICAgIGlm
ICghX3ByaXZhdGUtPmNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUyLDcgKzk1Miw3
IEBAIC0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xvYyBvcGVyYXRp
b246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpCiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtl
IG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFk
LgogICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudChXZWJDb3JlOjpJbnRQb2lu
dCh3aW5kb3dMb2MpLCBXZWJDb3JlOjpJbnRQb2ludChXZWJDb3JlOjpnbG9iYWxQb2ludCh3aW5k
b3dMb2MsIFt2aWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10pKSwKICAgICAgICAgV2ViQ29y
ZTo6TGVmdEJ1dHRvbiwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgV2ViQ29yZTo6Rm9yY2VB
dENsaWNrLCBXZWJDb3JlOjpOb1RhcCk7Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZXZlbnRI
YW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIChXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
KW9wZXJhdGlvbik7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZHJh
Z1NvdXJjZUVuZGVkQXQoZXZlbnQsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnT3BlcmF0aW9u
TWFzaykpOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1B
QykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0K
aW5kZXggNWU0YTg5MDVlYzguLmU3Y2E0NjFkOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogICAgICAgICAgIChDKSAyMDA2LCAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNA
Z21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDIyOSw2ICs0MjI5LDI4IEBAIC0gKHZv
aWQpdG91Y2g6KFdlYkV2ZW50ICopZXZlbnQKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkgJiYgUExBVEZPUk0oTUFDKQorCitzdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtpdChPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKK3sKKyAgICBpZiAo
b3BlcmF0aW9uTWFzayA9PSBXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKCkpCisgICAgICAgIHJl
dHVybiBOU0RyYWdPcGVyYXRpb25FdmVyeTsKKworICAgIE5TRHJhZ09wZXJhdGlvbiByZXN1bHQg
PSBOU0RyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJh
dGlvbkNvcHk7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkxpbmspKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTGluazsKKyAg
ICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJp
YykpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25HZW5lcmljOworICAgIGlmIChv
cGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKSkKKyAg
ICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgaWYgKG9wZXJhdGlv
bk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKQorICAgICAgICByZXN1
bHQgfD0gTlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlu
cyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJh
Z09wZXJhdGlvbkRlbGV0ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogLSAodm9pZClkcmFnSW1hZ2U6KE5TSW1hZ2UgKilk
cmFnSW1hZ2UKICAgICAgICAgICAgICAgIGF0OihOU1BvaW50KWF0CkBAIC00MjgwLDcgKzQzMDIs
NyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0dXJuIChOU0Ry
YWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uKCk7
CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRp
b25NYXNrKCkpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgpA
QCAtNDM4Niw3ICs0NDA4LDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU2Vzc2lvbjoo
TlNEcmFnZ2luZ1Nlc3Npb24gKilzZXNzaW9uIHNvdXJjZU9wZXJhdGlvbk0KICAgICBpZiAoIXBh
Z2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0dXJuIChO
U0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9u
KCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVy
YXRpb25NYXNrKCkpOwogfQogCiAtICh2b2lkKWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFnZ2luZ1Nl
c3Npb24gKilzZXNzaW9uIGVuZGVkQXRQb2ludDooTlNQb2ludClzY3JlZW5Qb2ludCBvcGVyYXRp
b246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQppbmRleCA5NjdhOTA1YjQyOC4uZDU3MDczNDAxYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTU4OSw2ICs1ODksMzcg
QEAgc3RhdGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVE
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFcKICAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CisKK09w
dGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soQ29j
b2FEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4gcmVzdWx0OworCisjaWYgVVNFKEFQUEtJVCkKKyAgICBpZiAob3BlcmF0aW9u
ICYgTlNEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmsp
CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlm
IChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRk
KFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNE
cmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUp
CisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlm
IChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisjZWxzZQorICAgIC8vIFNlZSA8VUlLaXQv
VUlEcmFnZ2luZ19Qcml2YXRlLmg+LgorICAgIGNvbnN0ZXhwciBOU1VJbnRlZ2VyIF9VSURyYWdP
cGVyYXRpb25Db3B5ID0gMTsKKyAgICBjb25zdGV4cHIgTlNVSW50ZWdlciBfVUlEcmFnT3BlcmF0
aW9uTW92ZSA9IDE2OworCisgICAgaWYgKG9wZXJhdGlvbiAmIF9VSURyYWdPcGVyYXRpb25Db3B5
KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBp
ZiAob3BlcmF0aW9uICYgX1VJRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworI2VuZGlmIC8vIFVTRShBUFBLSVQpCisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKIFdl
YkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCkBA
IC0xOTIzLDcgKzE5NTQsNyBAQCAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogCiAtIChXZWJDb3Jl
OjpEcmFnRGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9u
IGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9z
aXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KIHsKLSAgICBhdXRvIGRyYWdPcGVy
YXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ob3BlcmF0aW9u
KTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNrKG9w
ZXJhdGlvbik7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNl
c3Npb246c2Vzc2lvbl0pOwogICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJ
bnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWxQ
b3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25l
LCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrIH07CiB9CkBAIC02NzQ4LDcgKzY3NzksNyBAQCAt
IChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRy
YWdnaW5nSW5mbwogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6
Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93
XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGll
bnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5n
SW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFn
czpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5n
SW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5m
b10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CiAgICAg
cmV0dXJuIGNvcmUoc2VsZiktPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEp
OwogfQogCkBAIC02NzYxLDcgKzY3OTIsNyBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdV
cGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBk
cmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rp
b25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdE
YXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0
aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2Vs
ZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CiAgICAgcmV0dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVy
KCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwogfQogCkBAIC02NzczLDcgKzY4MDQsNyBAQCAtICh2
b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogCiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlv
bl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChb
ZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgV2Vi
Q29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9d
KTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwg
Z2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsK
ICAgICBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogfQogCkBA
IC02Nzg2LDcgKzY4MTcsNyBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNE
cmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVu
dChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0
aW9uXSwgW3NlbGYgd2luZG93XSkpOwotICAgIGF1dG8qIGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6
OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byog
ZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGds
b2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAK
ICAgICBOU0FycmF5KiB0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlw
ZXM7CiAgICAgaWYgKCFbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVd
ICYmIFt0eXBlcyBjb250YWluc09iamVjdDpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0
ZWJvYXJkVHlwZSgpXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgKaW5kZXggNTc2NjI5YWJhNjkuLmJmZDBhZGRmOTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNiw2ICszNiw3IEBACiAj
aWZkZWYgX19jcGx1c3BsdXMKIAogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGll
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpAQCAtODksNyArOTAsMTcgQEAgY2xhc3Mg
V2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogCi1X
ZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsK
KyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorI2lmIFVTRShBUFBLSVQpCit0eXBlZGVmIE5TRHJh
Z09wZXJhdGlvbiBDb2NvYURyYWdPcGVyYXRpb247CisjZWxzZQordHlwZWRlZiB1aW50NjRfdCBD
b2NvYURyYWdPcGVyYXRpb247CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVy
YXRpb24pOworI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKK1dlYkNvcmU6OkZpbmRP
cHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zKTsKIAogT3B0aW9uU2V0PFdlYkNvcmU6
OkxheW91dE1pbGVzdG9uZT4gY29yZUxheW91dE1pbGVzdG9uZXMoV2ViTGF5b3V0TWlsZXN0b25l
cyk7CiBXZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdl
YkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400833</attachid>
            <date>2020-06-02 10:03:06 -0700</date>
            <delta_ts>2020-06-02 21:39:53 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-212605-v3.diff</filename>
            <type>text/plain</type>
            <size>89288</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDAzMGRmZmI4Ni4uZTY3NWEwZDljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb24g
dHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODQ2M2E0OGU5NzQuLjE5
ZmI0NmEwZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNDg4LDE4ICs0
ODgsMTggQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3Rh
cnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICByZXR1cm4gZGF0YVRyYW5zZmVy
OwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0
ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVz
KQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2Fy
ZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJh
Z2dpbmdGaWxlcykKIHsKICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0
YVRyYW5zZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0
ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpE
cmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihz
b3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRp
ZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0
dXJuIGRhdGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJj
ZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQog
ewogICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0
YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJh
Z2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERh
dGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRp
b24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVy
YXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3Vt
ZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFu
c2ZlcjsKIH0KQEAgLTU5NSw3NCArNTk1LDc0IEBAIHZvaWQgRHJhZ0ltYWdlTG9hZGVyOjppbWFn
ZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KikKICAgICBtX2RhdGFUcmFuc2Zl
ci0+dXBkYXRlRHJhZ0ltYWdlKCk7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRyYWdPcEZy
b21JRU9wKGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQorc3RhdGljIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHsKICAgICBp
ZiAob3BlcmF0aW9uID09ICJ1bmluaXRpYWxpemVkIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVy
YXRpb25FdmVyeTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKICAgICBpZiAo
b3BlcmF0aW9uID09ICJub25lIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwor
ICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTm9uZSB9OwogICAgIGlmIChvcGVyYXRpb24g
PT0gImNvcHkiKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJl
dHVybiB7IERyYWdPcGVyYXRpb25Db3B5IH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGluayIp
Ci0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgcmV0dXJuIHsgRHJh
Z09wZXJhdGlvbkxpbmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJtb3ZlIikKLSAgICAgICAg
cmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRp
b25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVy
YXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAgICAgICBy
ZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxp
bmspOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxp
bmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TW92ZSIpCi0gICAgICAgIHJldHVybiAo
RHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8
IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHks
IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9OwogICAgIGlmIChvcGVy
YXRpb24gPT0gImxpbmtNb3ZlIikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFn
T3BlcmF0aW9uTGluayB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUp
OworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVy
aWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiYWxsIikKLSAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlv
blByaXZhdGU7IC8vIHJlYWxseSBhIG1hcmtlciBmb3IgIm5vIGNvbnZlcnNpb24iCisgICAgICAg
IHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvblBy
aXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikK
K3N0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb24g
JiAoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgYm9vbCBp
c0dlbmVyaWNNb3ZlID0gb3BlcmF0aW9uTWFzay5jb250YWluc0FueSh7IERyYWdPcGVyYXRpb25H
ZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KTsKIAotICAgIGlmICgoaXNHZW5lcmljTW92ZSAm
JiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uTGluaykpIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYg
KChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNv
cHkpICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKSB8fCBvcGVy
YXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuICJhbGwiOwot
ICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkp
CisgICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3Bl
cmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiAiY29weU1vdmUiOwotICAgIGlmIChpc0dlbmVy
aWNNb3ZlICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpCisgICAgaWYgKGlzR2Vu
ZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAg
ICAgICAgIHJldHVybiAibGlua01vdmUiOwotICAgIGlmICgob3BlcmF0aW9uICYgRHJhZ09wZXJh
dGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpCisgICAgaWYgKG9w
ZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlv
bkxpbmsgfSkpCiAgICAgICAgIHJldHVybiAiY29weUxpbmsiOwogICAgIGlmIChpc0dlbmVyaWNN
b3ZlKQogICAgICAgICByZXR1cm4gIm1vdmUiOwotICAgIGlmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uQ29weSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkpCiAgICAgICAgIHJldHVybiAiY29weSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25MaW5rKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25MaW5rKSkKICAgICAgICAgcmV0dXJuICJsaW5rIjsKICAgICByZXR1cm4gIm5vbmUiOwogfQog
Ci1EcmFnT3BlcmF0aW9uIERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uKCkgY29uc3QKK09w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiBEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJhdGlvbk1hc2so
KSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gZHJhZ09wRnJvbUlFT3Ao
bV9lZmZlY3RBbGxvd2VkKTsKLSAgICBBU1NFUlQob3BlcmF0aW9uICE9IERyYWdPcGVyYXRpb25Q
cml2YXRlKTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9
IGRyYWdPcEZyb21JRU9wKG1fZWZmZWN0QWxsb3dlZCk7CisgICAgQVNTRVJUKG9wZXJhdGlvbk1h
c2sgIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwog
fQogCi1EcmFnT3BlcmF0aW9uIERhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24oKSBj
b25zdAorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25P
cGVyYXRpb25NYXNrKCkgY29uc3QKIHsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGRy
YWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7Ci0gICAgQVNTRVJUKG9wZXJhdGlvbiA9PSBEcmFn
T3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwgb3BlcmF0
aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSAoRHJhZ09wZXJhdGlvbiko
RHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSkgfHwgb3BlcmF0aW9uID09
IERyYWdPcGVyYXRpb25FdmVyeSk7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbjsKKyAgICBhdXRvIG9w
ZXJhdGlvbk1hc2sgPSBkcmFnT3BGcm9tSUVPcChtX2Ryb3BFZmZlY3QpOworICAgIEFTU0VSVChv
cGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0
eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFz
ayA9PSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJh
Z09wZXJhdGlvbk1vdmUgfSkgfHwgb3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkp
OworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCi12b2lkIERhdGFUcmFuc2Zlcjo6c2V0
U291cmNlT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQordm9pZCBEYXRhVHJhbnNm
ZXI6OnNldFNvdXJjZU9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJh
dGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiAhPSBEcmFn
T3BlcmF0aW9uUHJpdmF0ZSk7Ci0gICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZyb21EcmFnT3Ao
b3BlcmF0aW9uKTsKKyAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sg
IT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIG1fZWZmZWN0QWxsb3dlZCA9IElFT3BGcm9t
RHJhZ09wKG9wZXJhdGlvbk1hc2spOwogfQogCi12b2lkIERhdGFUcmFuc2Zlcjo6c2V0RGVzdGlu
YXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBv
cGVyYXRpb25NYXNrKQogewotICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uLCBvcGVyYXRpb24gPT0g
RHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Ob25lIHx8IG9w
ZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlv
bkdlbmVyaWMgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Nb3ZlIHx8IG9wZXJhdGlvbiA9
PSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92
ZSkpOwotICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbik7CisgICAg
QVNTRVJUX0FSRyhvcGVyYXRpb25NYXNrLCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25D
b3B5IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09w
ZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8fCBv
cGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Nb3ZlIHx8IG9wZXJhdGlvbk1hc2sgPT0gT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRp
b25Nb3ZlIH0pKTsKKyAgICBtX2Ryb3BFZmZlY3QgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb25N
YXNrKTsKIH0KIAogU3RyaW5nIERhdGFUcmFuc2Zlcjo6ZHJvcEVmZmVjdCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRGF0YVRyYW5zZmVyLmgKaW5kZXggZTVjZmFmODU2ZmIuLjBlNzQ4MGExZjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCkBAIC04OCwxNSArODgsMTUgQEAgcHVibGljOgogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0
ZUZvckRyYWcoKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZ1N0
YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4g
Y3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHN0YXRpYyBSZWY8
RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQm
LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFn
Z2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChj
b25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJv
b2wgZHJhZ2dpbmdGaWxlcyk7CiAKICAgICBib29sIGRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQo
KSBjb25zdCB7IHJldHVybiBtX2Ryb3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiOyB9CiAKLSAg
ICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbigpIGNvbnN0OwotICAgIERyYWdPcGVyYXRp
b24gZGVzdGluYXRpb25PcGVyYXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldFNvdXJjZU9wZXJh
dGlvbihEcmFnT3BlcmF0aW9uKTsKLSAgICB2b2lkIHNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERy
YWdPcGVyYXRpb24pOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrKCkgY29uc3Q7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRlc3RpbmF0aW9u
T3BlcmF0aW9uTWFzaygpIGNvbnN0OworICAgIHZvaWQgc2V0U291cmNlT3BlcmF0aW9uTWFzayhP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4pOworICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRp
b25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CiAKICAgICB2b2lkIHNldERyYWdIYXNT
dGFydGVkKCkgeyBtX3Nob3VsZFVwZGF0ZURyYWdJbWFnZSA9IHRydWU7IH0KICAgICBEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBkcmFnTG9jYXRpb24pIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGE5MjNjYWU1OGNiLi5lYzU4ZTIyODk0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaApAQCAtNjAsNyArNjAsNyBAQCB0eXBlZGVmIGVudW0g
ewogICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAgPSBVSU5UX01BWAogfSBEcmFnU291
cmNlQWN0aW9uOwogCi0vLyBNYXRjaGVzIE5TRHJhZ09wZXJhdGlvbi4KKy8vIFNlZSBOU0RyYWdP
cGVyYXRpb24sIF9VSURyYWdPcGVyYXRpb24gYW5kIFVJRHJvcE9wZXJhdGlvbi4KIHR5cGVkZWYg
ZW51bSB7CiAgICAgRHJhZ09wZXJhdGlvbk5vbmUgICAgPSAwLAogICAgIERyYWdPcGVyYXRpb25D
b3B5ICAgID0gMSwKQEAgLTY5LDkgKzY5LDEzIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgRHJhZ09w
ZXJhdGlvblByaXZhdGUgPSA4LAogICAgIERyYWdPcGVyYXRpb25Nb3ZlICAgID0gMTYsCiAgICAg
RHJhZ09wZXJhdGlvbkRlbGV0ZSAgPSAzMiwKLSAgICBEcmFnT3BlcmF0aW9uRXZlcnkgICA9IFVJ
TlRfTUFYCiB9IERyYWdPcGVyYXRpb247CiAKK2NvbnN0ZXhwciBPcHRpb25TZXQ8RHJhZ09wZXJh
dGlvbj4gYW55RHJhZ09wZXJhdGlvbigpCit7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNv
cHksIERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlv
blByaXZhdGUsIERyYWdPcGVyYXRpb25Nb3ZlLCBEcmFnT3BlcmF0aW9uRGVsZXRlIH07Cit9CisK
IGVudW0gY2xhc3MgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gOiBib29sIHsgTm8sIFllcyB9OwogZW51
bSBjbGFzcyBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgOiBib29sIHsgTm8sIFllcyB9Owog
ZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50OF90IHsgTm9uZSwgRWRpdFBsYWlu
VGV4dCwgRWRpdFJpY2hUZXh0LCBVcGxvYWRGaWxlLCBQYWdlTG9hZCwgU2V0Q29sb3IsIE5vbkRl
ZmF1bHQgfTsKQEAgLTkzLDYgKzk3LDE5IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kPiB7CiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sCisgICAg
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uQ29weSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmssCisgICAgICAg
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uUHJpdmF0ZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUsCisgICAg
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUKKyAgICA+OworfTsKKwogdGVtcGxhdGU8
PiBzdHJ1Y3QgT3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4g
ewogICAgIHVzaW5nIHZhbHVlcyA9IE9wdGlvblNldFZhbHVlczwKICAgICAgICAgV2ViQ29yZTo6
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLApAQCAtMTAyLDQgKzExOSwxNyBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiB7CiAg
ICAgPjsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gT3B0aW9uU2V0VmFsdWVzPAorICAg
ICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uTm9uZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHksCisgICAgICAgIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
R2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUsCisgICAgICAg
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uRGVsZXRlCisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBlM2E4OTAxYTQ4NS4uNzQ0MWQwY2I5ZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC02OTMsMjEgKzY5MywyMSBA
QCBib29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRlZmF1
bHRPcGVyYXRpb25Gb3JEcmFnKERyYWdPcGVyYXRpb24gc3JjT3BNYXNrKQorc3RhdGljIERyYWdP
cGVyYXRpb24gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2spCiB7CiAgICAgLy8gVGhpcyBpcyBkZXNpZ25lZCB0byBtYXRj
aCBJRSdzIG9wZXJhdGlvbiBmYWxsYmFjayBmb3IgdGhlIGNhc2Ugd2hlcmUKICAgICAvLyB0aGUg
cGFnZSBjYWxscyBwcmV2ZW50RGVmYXVsdCgpIGluIGEgZHJhZyBldmVudCBidXQgZG9lc24ndCBz
ZXQgZHJvcEVmZmVjdC4KLSAgICBpZiAoc3JjT3BNYXNrID09IERyYWdPcGVyYXRpb25FdmVyeSkK
KyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKLSAgICBpZiAoc3JjT3BNYXNrID09IERyYWdP
cGVyYXRpb25Ob25lKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFn
T3BlcmF0aW9uTW92ZSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFn
T3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTW92ZTsKLSAgICBp
ZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAgaWYgKHNvdXJjZU9wZXJh
dGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkdlbmVyaWMpKQogICAgICAgICByZXR1cm4g
RHJhZ0NvbnRyb2xsZXI6OnBsYXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRpb24oKTsKLSAgICBpZiAo
c3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1h
c2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbkNvcHk7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdPcGVyYXRpb25MaW5rKQorICAgIGlm
IChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOwogICAgIAogICAgIC8vIEZJWE1FOiBEb2VzIElF
IHJlYWxseSByZXR1cm4gImdlbmVyaWMiIGV2ZW4gaWYgbm8gb3BlcmF0aW9ucyB3ZXJlIGFsbG93
ZWQgYnkgdGhlIHNvdXJjZT8KQEAgLTcyMiwxNyArNzIyLDE3IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24m
IG9wZXJhCiAgICAgaWYgKCF2aWV3UHJvdGVjdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiA9IGRyYWdEYXRhLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzaygpOwotICAgIGF1dG8gdGFyZ2V0UmVzcG9uc2UgPSBtYWluRnJhbWUt
PmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0Rh
dGEpLCBbJmRyYWdEYXRhXSgpIHsgcmV0dXJuIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKGRyYWdEYXRhKTsgfSwgc291cmNlT3BlcmF0aW9uLCBkcmFnRGF0YS5jb250YWluc0ZpbGVz
KCkpOworICAgIGF1dG8gc291cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzaygpOworICAgIGF1dG8gdGFyZ2V0UmVzcG9uc2UgPSBtYWluRnJhbWUt
PmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0Rh
dGEpLCBbJmRyYWdEYXRhXSgpIHsgcmV0dXJuIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKGRyYWdEYXRhKTsgfSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ0RhdGEuY29udGFpbnNG
aWxlcygpKTsKICAgICBpZiAoIXRhcmdldFJlc3BvbnNlLmFjY2VwdCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKCF0YXJnZXRSZXNwb25zZS5vcGVyYXRpb24pCi0gICAgICAgIG9w
ZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNvdXJjZU9wZXJhdGlvbik7Ci0gICAg
ZWxzZSBpZiAoIShzb3VyY2VPcGVyYXRpb24gJiB0YXJnZXRSZXNwb25zZS5vcGVyYXRpb24udmFs
dWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVyYXRpb24gd2hpY2ggaXMgbm90IHN1
cHBvcnRlZCBieSB0aGUgc291cmNlCisgICAgaWYgKCF0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25N
YXNrKQorICAgICAgICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VP
cGVyYXRpb25NYXNrKTsKKyAgICBlbHNlIGlmICghc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlu
c0FueSh0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrLnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVu
dCBwaWNrZWQgYW4gb3BlcmF0aW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJj
ZQogICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKICAgICBlbHNlCi0gICAg
ICAgIG9wZXJhdGlvbiA9IHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbi52YWx1ZSgpOworICAgICAg
ICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyh0YXJnZXRSZXNwb25zZS5vcGVy
YXRpb25NYXNrLnZhbHVlKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC04OTksNyArODk5
LDcgQEAgc3RhdGljIEludFBvaW50IGRyYWdMb2NGb3JTZWxlY3Rpb25EcmFnKEZyYW1lJiBzcmMp
CiAgICAgcmV0dXJuIEludFBvaW50KHhwb3MsIHlwb3MpOwogfQogCi1ib29sIERyYWdDb250cm9s
bGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09w
ZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0
IEludFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgaGFzRGF0
YSkKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFn
U3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFz
aywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBk
cmFnT3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgaGFzRGF0YSkKIHsKICAgICBp
ZiAoIXNyYy52aWV3KCkgfHwgIXNyYy5jb250ZW50UmVuZGVyZXIoKSB8fCAhc3RhdGUuc291cmNl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05MjIsNyArOTIyLDcgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERy
YWdPcGVyYXRpb24KICAgICBJbnRQb2ludCBtb3VzZURyYWdnZWRQb2ludCA9IHNyYy52aWV3KCkt
PndpbmRvd1RvQ29udGVudHMoZHJhZ0V2ZW50LnBvc2l0aW9uKCkpOwogCiAgICAgbV9kcmFnZ2lu
Z0ltYWdlVVJMID0gVVJMKCk7Ci0gICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gc3JjT3A7Cisg
ICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFzayA9IHNvdXJjZU9wZXJhdGlvbk1hc2s7CiAKICAg
ICBEcmFnSW1hZ2UgZHJhZ0ltYWdlOwogICAgIEludFBvaW50IGRyYWdMb2MoMCwgMCk7CkBAIC05
NDUsNyArOTQ1LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICAgICAgLy8gU2VsZWN0
aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJhZ3MgcmVjZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93
ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQKICAgICAgICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAg
ICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNMMzQzMAotICAgICAgICBtX3NvdXJjZURyYWdP
cGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihtX3NvdXJjZURyYWdPcGVyYXRp
b24gfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Db3B5KTsKKyAgICAgICAg
bV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFzay5hZGQoeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJh
Z09wZXJhdGlvbkNvcHkgfSk7CiAgICAgfQogCiAgICAgQVNTRVJUKHN0YXRlLnNvdXJjZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKaW5kZXggOTU3ZmFiMTBmNjAuLjQzYjY4MDVm
Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICAvLyBkcmFnIGxvZ2ljIGlzIGluIFdlYkNvcmUuCiAgICAgdm9pZCBzZXRE
aWRJbml0aWF0ZURyYWcoYm9vbCBpbml0aWF0ZWQpIHsgbV9kaWRJbml0aWF0ZURyYWcgPSBpbml0
aWF0ZWQ7IH0KICAgICBib29sIGRpZEluaXRpYXRlRHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlk
SW5pdGlhdGVEcmFnOyB9Ci0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VEcmFnT3BlcmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyB9CisgICAgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+IHNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VEcmFnT3BlcmF0aW9uTWFzazsgfQogICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQogICAgIHZvaWQgc2V0RHJh
Z09mZnNldChjb25zdCBJbnRQb2ludCYgb2Zmc2V0KSB7IG1fZHJhZ09mZnNldCA9IG9mZnNldDsg
fQogICAgIGNvbnN0IEludFBvaW50JiBkcmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFn
T2Zmc2V0OyB9CkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZpbmFsaXplRHJvcHBlZEltYWdlUGxhY2Vob2xkZXIoSFRNTEltYWdlRWxlbWVudCYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRD
YXJldChjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMpOwogCi0gICAgYm9vbCBzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFn
T3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgIGJvb2wgc3RhcnREcmFn
KEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFn
T3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgIHN0YXRpYyBjb25zdCBJ
bnRTaXplJiBtYXhEcmFnSW1hZ2VTaXplKCk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IE1heE9y
aWdpbmFsSW1hZ2VBcmVhOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9u
U2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrOwog
ICAgIERyYWdTb3VyY2VBY3Rpb24gbV9kcmFnU291cmNlQWN0aW9uIHsgRHJhZ1NvdXJjZUFjdGlv
bk5vbmUgfTsKICAgICBib29sIG1fZGlkSW5pdGlhdGVEcmFnIHsgZmFsc2UgfTsKLSAgICBEcmFn
T3BlcmF0aW9uIG1fc291cmNlRHJhZ09wZXJhdGlvbiB7IERyYWdPcGVyYXRpb25Ob25lIH07IC8v
IFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBkb3duIHdp
dGhpbiBXZWJLaXQKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9zb3VyY2VEcmFnT3Bl
cmF0aW9uTWFzazsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBh
IG1vdXNlIGRvd24gd2l0aGluIFdlYktpdC4KICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CiAg
ICAgVVJMIG1fZHJhZ2dpbmdJbWFnZVVSTDsKICAgICBib29sIG1faXNQZXJmb3JtaW5nRHJvcCB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNGM2ZmI5NWU2
YzAuLmZjYjI1ODlhMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0y
Mzk2LDE5ICsyMzk2LDE5IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQs
IERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQogfQogCiBFdmVudEhhbmRsZXI6OkRyYWdUYXJn
ZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYm
IHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5n
RmlsZXMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdG
aWxlcykKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
VXBkYXRpbmdEcm9wVGFyZ2V0KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQp
LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0LmRvY3Vt
ZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5n
RmlsZXMpOwogICAgIGJvb2wgYWNjZXB0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRUeXBlLCB0
YXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAgIGlmICghYWNjZXB0KQogICAg
ICAgICBhY2NlcHQgPSBmaW5kRHJvcFpvbmUodGFyZ2V0LCBkYXRhVHJhbnNmZXIpOwogICAgIGRh
dGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIGlmIChhY2NlcHQgJiYg
IWRhdGFUcmFuc2Zlci0+ZHJvcEVmZmVjdElzVW5pbml0aWFsaXplZCgpKQotICAgICAgICByZXR1
cm4geyB0cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uKCkgfTsKKyAgICAg
ICAgcmV0dXJuIHsgdHJ1ZSwgZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2so
KSB9OwogICAgIHJldHVybiB7IGFjY2VwdCwgV1RGOjpudWxsb3B0IH07CiB9CiAKLUV2ZW50SGFu
ZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1ha2VQYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9u
IHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorRXZlbnRIYW5kbGVyOjpEcmFn
VGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPigpPiYgbWFrZVBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBzb3VyY2VPcGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZy
YW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAgICBpZiAoIW1fZnJhbWUudmlldygpKQpA
QCAtMjQzOCwxOSArMjQzOCwxOSBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBF
dmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAgICAgICBG
cmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1lKG5ld1RhcmdldC5n
ZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAg
ICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRl
RHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdn
aW5nRmlsZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50
SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNl
T3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAobmV3VGFy
Z2V0KSB7CiAgICAgICAgICAgICAvLyBBcyBwZXIgc2VjdGlvbiA3LjkuNCBvZiB0aGUgSFRNTCA1
IHNwZWMuLCB3ZSBtdXN0IGFsd2F5cyBmaXJlIGEgZHJhZyBldmVudCBiZWZvcmUgZmlyaW5nIGEg
ZHJhZ2VudGVyLCBkcmFnbGVhdmUsIG9yIGRyYWdvdmVyIGV2ZW50LgogICAgICAgICAgICAgZGlz
cGF0Y2hFdmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZl
bnQpOwotICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJF
dmVudChldmVudE5hbWVzKCkuZHJhZ2VudGVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtl
UGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAg
ICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChldmVudE5hbWVz
KCkuZHJhZ2VudGVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBz
b3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogUmVjdXJzaW5nIGFnYWluIGhlcmUgZG9lc24ndCBtYWtlIHNl
bnNlIGlmIHRoZSBuZXdUYXJnZXQgYW5kIG1fZHJhZ1RhcmdldCB3ZXJlIGluIHRoZSBzYW1lIGZy
YW1lLgogICAgICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgICAgIHJlc3Bv
bnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50
LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAg
ICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVE
cmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRy
YWdnaW5nRmlsZXMpOwogICAgICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewotICAgICAg
ICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5n
RHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIG1ha2VQYXN0ZWJvYXJkKCksIHNv
dXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1Rh
cmdldC0+ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uTWFzaywg
ZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgICAgICBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVz
KCkuZHJhZ2xlYXZlRXZlbnQsICptX2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0
KCkpOwogICAgICAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7
CiAgICAgICAgIH0KQEAgLTI0NjQsMTIgKzI0NjQsMTIgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFy
Z2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU0KICAgICAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgICAgICBpZiAodGFyZ2V0SXNGcmFt
ZShuZXdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAgaWYgKHRhcmdl
dEZyYW1lKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFu
ZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3Bl
cmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdl
dEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3Rl
Ym9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9IGVs
c2UgaWYgKG5ld1RhcmdldCkgewogICAgICAgICAgICAgLy8gTm90ZSwgd2hlbiBkZWFsaW5nIHdp
dGggc3ViLWZyYW1lcywgd2UgbWF5IG5lZWQgdG8gZmlyZSBvbmx5IGEgZHJhZ292ZXIgZXZlbnQg
YXMgYSBkcmFnIGV2ZW50IG1heSBoYXZlIGJlZW4gZmlyZWQgZWFybGllci4KICAgICAgICAgICAg
IGlmICghbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQpCiAgICAgICAgICAgICAgICAgZGlz
cGF0Y2hFdmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZl
bnQpOwotICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJF
dmVudChldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQ
YXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAg
ICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnb3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwgc291
cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgICAgICBtX3Nob3VsZE9u
bHlGaXJlRHJhZ092ZXJFdmVudCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ3Nywy
NSArMjQ3NywyNSBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRs
ZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAgIHJldHVybiByZXNwb25z
ZTsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3Rl
Ym9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMp
Cit2b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dp
bmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCiAg
ICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgIGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJhZ1Rhcmdl
dC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAg
ICAgICAgIHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChldmVu
dCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsK
KyAgICAgICAgICAgIHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJv
cChldmVudCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dp
bmdGaWxlcyk7CiAgICAgfSBlbHNlIGlmIChtX2RyYWdUYXJnZXQpIHsKICAgICAgICAgZGlzcGF0
Y2hFdmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQp
OwogCi0gICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JV
cGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3Rl
Ym9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICBhdXRvIGRh
dGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1f
ZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0
aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50
TmFtZXMoKS5kcmFnbGVhdmVFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zl
ci5nZXQoKSk7CiAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgp
OwogICAgIH0KICAgICBjbGVhckRyYWdTdGF0ZSgpOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6
cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNl
T3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitib29sIEV2ZW50SGFuZGxlcjo6cGVyZm9y
bURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZyYW1l
PiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKIApAQCAtMjUwMyw5ICsyNTAzLDkgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBzdGQ6OnVuaXEKICAgICBib29sIHByZXZlbnRlZERlZmF1bHQgPSBmYWxzZTsKICAg
ICBpZiAodGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewog
ICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0g
dGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwgV1RG
TW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAg
ICAgICAgIHByZXZlbnRlZERlZmF1bHQgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkucGVy
Zm9ybURyYWdBbmREcm9wKGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRp
b25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewot
ICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCht
X2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJh
dGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JEcm9wKG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShw
YXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAg
IHByZXZlbnRlZERlZmF1bHQgPSBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJvcEV2
ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyKTsKICAgICAgICAgZGF0YVRy
YW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgfQpAQCAtMzcyOSwxMyArMzcy
OSwxMyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkU3RhcnREcmFnKCkKICNlbmRpZgogfQogCi12
b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIE1heUV4dGVuZERyYWdTZXNzaW9u
IG1heUV4dGVuZERyYWdTZXNzaW9uKQordm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRl
ZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBkcmFnT3BlcmF0aW9uTWFzaywgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gbWF5RXh0ZW5kRHJh
Z1Nlc3Npb24pCiB7CiAgICAgLy8gU2VuZCBhIGhpdCB0ZXN0IHJlcXVlc3Qgc28gdGhhdCBSZW5k
ZXJMYXllciBnZXRzIGEgY2hhbmNlIHRvIHVwZGF0ZSB0aGUgOmhvdmVyIGFuZCA6YWN0aXZlIHBz
ZXVkb2NsYXNzZXMuCiAgICAgcHJlcGFyZU1vdXNlRXZlbnQoT3B0aW9uU2V0PEhpdFRlc3RSZXF1
ZXN0OjpSZXF1ZXN0VHlwZT4geyBIaXRUZXN0UmVxdWVzdDo6UmVsZWFzZSwgSGl0VGVzdFJlcXVl
c3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9LCBldmVudCk7CiAKICAgICBpZiAo
c2hvdWxkRGlzcGF0Y2hFdmVudHNUb0RyYWdTb3VyY2VFbGVtZW50KCkpIHsKLSAgICAgICAgZHJh
Z1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbihvcGVyYXRpb24p
OworICAgICAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNldERlc3RpbmF0aW9uT3BlcmF0
aW9uTWFzayhkcmFnT3BlcmF0aW9uTWFzayk7CiAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdT
b3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5kcmFnZW5kRXZlbnQsIGV2ZW50KTsKICAgICB9CiAg
ICAgaW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwpAQCAtMzg2Myw3ICszODYzLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQsIENoZWNrRHIKICAgICAvLyBPbmNlIHdlJ3JlIHBhc3QgdGhlIGh5c3RlcmVzaXMg
cG9pbnQsIHdlIGRvbid0IHdhbnQgdG8gdHJlYXQgdGhpcyBnZXN0dXJlIGFzIGEgY2xpY2sKICAg
ICBpbnZhbGlkYXRlQ2xpY2soKTsKICAgICAKLSAgICBEcmFnT3BlcmF0aW9uIHNyY09wID0gRHJh
Z09wZXJhdGlvbk5vbmU7ICAgICAgCisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJj
ZU9wZXJhdGlvbk1hc2s7CiAgICAgCiAgICAgLy8gVGhpcyBkb2VzIHdvcmsgb25seSBpZiB3ZSBt
aXNzZWQgYSBkcmFnRW5kLiBEbyBpdCBhbnl3YXksIGp1c3QgdG8gbWFrZSBzdXJlIHRoZSBvbGQg
ZGF0YVRyYW5zZmVyIGdldHMgbnVtYmVkLgogICAgIC8vIEZJWE1FOiBDb25zaWRlciBkb2luZyB0
aGlzIGVhcmxpZXIgaW4gdGhpcyBmdW5jdGlvbiBhcyB0aGUgZWFybGllc3QgcG9pbnQgd2UncmUg
c3VyZSBpdCB3b3VsZCBiZSBzYWZlIHRvIGRyb3AgYW4gb2xkIGRyYWcuCkBAIC0zODk4LDcgKzM4
OTgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogCiAgICAgICAgIGlmIChtX21vdXNlRG93
bk1heVN0YXJ0RHJhZykgewogICAgICAgICAgICAgLy8gR2F0aGVyIHZhbHVlcyBmcm9tIERIVE1M
IGVsZW1lbnQsIGlmIGl0IHNldCBhbnkuCi0gICAgICAgICAgICBzcmNPcCA9IGRyYWdTdGF0ZSgp
LmRhdGFUcmFuc2Zlci0+c291cmNlT3BlcmF0aW9uKCk7CisgICAgICAgICAgICBzb3VyY2VPcGVy
YXRpb25NYXNrID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb25NYXNr
KCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFl1Y2ssIGEgZHJhZ2dlZEltYWdlOm1v
dmVUbzogbWVzc2FnZSBjYW4gYmUgZmlyZWQgYXMgYSByZXN1bHQgb2Yga2lja2luZyBvZmYgdGhl
CiAgICAgICAgICAgICAvLyBkcmFnIHdpdGggZHJhZ0ltYWdlISBCZWNhdXNlIG9mIHRoYXQgZHVt
YiByZWVudHJhbmN5LCB3ZSBtYXkgdGhpbmsgd2UndmUgbm90CkBAIC0zOTA5LDcgKzM5MDksNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogICAgIAogICAgIGlmIChtX21vdXNlRG93bk1heVN0
YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0gICAgICAg
IG1fZGlkU3RhcnREcmFnID0gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLnN0YXJ0RHJh
ZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3du
Q29udGVudHNQb3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKKyAgICAgICAg
bV9kaWRTdGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFn
KG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBldmVudC5ldmVudCgp
LCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0
YSk7CiAgICAgICAgIC8vIEluIFdlYktpdDIgd2UgY291bGQgcmUtZW50ZXIgdGhpcyBjb2RlIGFu
ZCBzdGFydCBhbm90aGVyIGRyYWcuCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJv
YmxlbXMgd2l0aCB0aGUgb3duZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkIGFuZCB0aGUgcHJvbWlz
ZWQgdHlwZXMuCiAgICAgICAgIGlmIChtX2RpZFN0YXJ0RHJhZykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKaW5kZXggNmZmYzgzYzAxMmYuLjI3Y2FlNjFlZDExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKQEAgLTE2MywxMSArMTYzLDExIEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogICAgIHN0cnVjdCBEcmFnVGFyZ2V0UmVzcG9uc2UgewogICAgICAg
ICBib29sIGFjY2VwdCB7IGZhbHNlIH07Ci0gICAgICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbjsKKyAgICAgICAgT3B0aW9uYWw8T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+PiBv
cGVyYXRpb25NYXNrOwogICAgIH07Ci0gICAgRHJhZ1RhcmdldFJlc3BvbnNlIHVwZGF0ZURyYWdB
bmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRp
b24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgdm9pZCBjYW5jZWxEcmFnQW5kRHJvcChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJh
Z09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKLSAgICBib29sIHBlcmZvcm1EcmFnQW5k
RHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBEcmFnVGFyZ2V0
UmVzcG9uc2UgdXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29u
c3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgdm9pZCBjYW5jZWxE
cmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMp
OworICAgIGJvb2wgcGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYs
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4s
IGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgdm9pZCB1cGRhdGVEcmFnU3RhdGVBZnRlckVkaXRE
cmFnSWZOZWVkZWQoRWxlbWVudCYgcm9vdEVkaXRhYmxlRWxlbWVudCk7CiAgICAgUmVmUHRyPEVs
ZW1lbnQ+IGRyYWdnZWRFbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYKQEAgLTI2OCw3ICsyNjgsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTdGFydERyYWcoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdDYW5jZWxsZWQoKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERy
YWdPcGVyYXRpb24sIE1heUV4dGVuZERyYWdTZXNzaW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246
Ok5vKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgTWF5RXh0ZW5kRHJh
Z1Nlc3Npb24gPSBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6Tm8pOwogI2VuZGlmCiAKICAgICB2b2lk
IGZvY3VzRG9jdW1lbnRWaWV3KCk7CkBAIC00MTYsNyArNDE2LDcgQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBkaXNwYXRjaERyYWdFdmVudChjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiwgRGF0YVRyYW5zZmVyJik7Ci0gICAgRHJhZ1RhcmdldFJlc3BvbnNlIGRpc3BhdGNo
RHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxl
bWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiAsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAg
RHJhZ1RhcmdldFJlc3BvbnNlIGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiAsIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB2b2lkIGludmFsaWRhdGVEYXRh
VHJhbnNmZXIoKTsKIAogICAgIGJvb2wgaGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9E
cmFnRGF0YS5jcHAKaW5kZXggOGY2NzU1ZjU3NjEuLmU4YzQwZjU1OTAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFS
ZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0Fw
cGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRh
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERy
YWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBv
c2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1f
cGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtNDIsNyArNDIsNyBAQCBEcmFnRGF0YTo6RHJhZ0Rh
dGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQbwogeyAgCiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmLCBjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFn
cyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rp
b25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0
aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBt
X2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRh
KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCA0MjFhMjk5NDNiMy4uMzFiOGFi
OWVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNzUsMTMgKzc1LDEzIEBA
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRpbmcsIEZv
ckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24g
aXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUg
dGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VY
UE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBs
aWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFn
T3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9w
dGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNh
dGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmlu
ZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBEcmFn
QXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVz
dGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogICAgIC8vIFRo
aXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQQyBiZWNhdXNlIERy
YWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5kIG5vdCBpbiB0
aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9IGRlZmF1bHQ7CiAjaWYgUExBVEZPUk0o
V0lOKQotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShj
b25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3Qg
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNl
T3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25l
KTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYgZHJhZ0RhdGFNYXAoKTsKICAgICB2b2lkIGdldERy
YWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBzaXplLCBTdHJpbmcmIHBhdGhuYW1lKTsKICAgICB2
b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKTsKQEAg
LTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KICAgICBEcmFnQXBwbGljYXRp
b25GbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25GbGFnczsgfQogICAg
IERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFn
RGF0YTsgfQotICAgIERyYWdPcGVyYXRpb24gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7IH0KKyAgICBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3Qg
eyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7IH0KICAgICBib29sIGNvbnRh
aW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0
OwogICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5z
Q29tcGF0aWJsZUNvbnRlbnQoRHJhZ2dpbmdQdXJwb3NlID0gRHJhZ2dpbmdQdXJwb3NlOjpGb3JF
ZGl0aW5nKSBjb25zdDsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIEludFBvaW50
IG1fY2xpZW50UG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAgICBE
cmFnRGF0YVJlZiBtX3BsYXRmb3JtRHJhZ0RhdGE7Ci0gICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzazsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9k
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgbV9h
cHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5hbWVzOwogICAgIE9w
dGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCmlu
ZGV4IDljY2FmYzBjZDdhLi4zYTEyODlkNGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIGlu
bGluZSBTdHJpbmcgdGlmZlBhc3RlYm9hcmRUeXBlKCkKICNlbmRpZgogfQogCi1EcmFnRGF0YTo6
RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3Bl
cmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVz
dGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0
YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJj
ZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBtX2NsaWVu
dFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQ
b3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtMTMxLDcgKzEzMSw3
IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7CiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0YShj
b25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNl
T3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFn
cywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNr
KQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFs
UG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKaW5kZXggMGMwMTNj
ZjY3ZWUuLjA4YzJiZWE3YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
VXRpbGl0aWVzLmNwcApAQCAtMTQ5LDQ5ICsxNDksNDkgQEAgdW5zaWduZWQgc3RhdGVNb2RpZmll
ckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pCiAgICAgcmV0dXJuIDEgPDwgKDggKyBidXR0
b24gLSAxKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9u
KEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGdka0Ry
YWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbiBnZGtBY3Rpb24pCiB7Ci0gICAg
Ly8gV2UgaGF2ZSBubyBnb29kIHdheSB0byBkZXRlY3QgRHJhZ09wZXJhdGlvbkV2ZXJ5IG90aGVy
IHRoYW4KKyAgICAvLyBXZSBoYXZlIG5vIGdvb2Qgd2F5IHRvIGRldGVjdCBhbnlEcmFnT3BlcmF0
aW9uKCkgb3RoZXIgdGhhbgogICAgIC8vIHRvIHVzZSBpdCB3aGVuIGFsbCBhcHBsaWNhYmxlIGZs
YWdzIGFyZSBvbi4KICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9DT1BZCiAgICAgICAg
ICYmIGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRQogICAgICAgICAmJiBnZGtBY3Rpb24gJiBH
REtfQUNUSU9OX0xJTkspCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uRXZlcnk7CisgICAg
ICAgIHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CiAKLSAgICB1bnNpZ25lZCBhY3Rpb24gPSBE
cmFnT3BlcmF0aW9uTm9uZTsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gYWN0aW9uOwog
ICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0NPUFkpCi0gICAgICAgIGFjdGlvbiB8PSBE
cmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uQ29weSk7
CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRSkKLSAgICAgICAgYWN0aW9uIHw9
IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVyYXRpb25Nb3Zl
KTsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9MSU5LKQotICAgICAgICBhY3Rpb24g
fD0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlvbkxp
bmspOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGFjdGlvbik7Cisg
ICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtE
cmFnQWN0aW9ucyhEcmFnT3BlcmF0aW9uIGNvcmVBY3Rpb24pCitHZGtEcmFnQWN0aW9uIGRyYWdP
cGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBjb3JlQWN0
aW9uKQogewogICAgIHVuc2lnbmVkIGdka0FjdGlvbiA9IDA7Ci0gICAgaWYgKGNvcmVBY3Rpb24g
PT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKGNvcmVBY3Rpb24uaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oZ2RrQWN0aW9uKTsKIAotICAg
IGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKGNvcmVBY3Rpb24u
Y29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FD
VElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAg
aWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICBnZGtB
Y3Rpb24gfD0gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJh
dGlvbkxpbmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmsp
KQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9MSU5LOwogCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlvbik7CiB9CiAKLUdka0RyYWdBY3Rpb24g
ZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihEcmFnT3BlcmF0aW9uIGNvcmVBY3Rp
b24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24pCiB7Ci0gICAgaWYgKGNvcmVBY3Rpb24g
PT0gRHJhZ09wZXJhdGlvbkV2ZXJ5IHx8IGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkK
KyAgICBpZiAoY29yZUFjdGlvbiA9PSBhbnlEcmFnT3BlcmF0aW9uKCkgfHwgY29yZUFjdGlvbi5j
b250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX0NP
UFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAoY29y
ZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJldHVybiBHREtf
QUNUSU9OX01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTGluaykKKyAg
ICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJl
dHVybiBHREtfQUNUSU9OX0xJTks7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rp
b24+KDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0
aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCmlu
ZGV4IDVhYWI0ZWI3OWEyLi4xOThiYzhlMjUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuaApAQCAtNTEsOCArNTEsOCBAQCBTdHJpbmcgZGVmYXVsdEd0a1N5
c3RlbUZvbnQoKTsKIAogV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgc3RhdGVNb2RpZmllckZvckdk
a0J1dHRvbih1bnNpZ25lZCBidXR0b24pOwogCi1XRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9u
IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7Ci1XRUJDT1JFX0VY
UE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKERyYWdPcGVy
YXRpb24pOwotV0VCQ09SRV9FWFBPUlQgR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5n
bGVHZGtEcmFnQWN0aW9uKERyYWdPcGVyYXRpb24pOworV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlv
bik7CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdB
Y3Rpb25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFn
QWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggZWUwZDhiMjYwY2MuLjE4ODcwZjIyNzUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBCYWlkdSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MSw3ICs0MSw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIERyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1h
cCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBE
cmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
c291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MpCiAgICAgOiBt
X2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBm
NzhiZTdiNDgyYy4uMTQ4ZjYxNTJjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAt
MDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ug
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGZvciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMjEyNjA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICog
U2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmg6CisgICAgICAgIChXZWJL
aXQ6OmNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVu
Y3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmRyYWdnaW5nRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpk
cmFnZ2luZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdF
eGl0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRp
b24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZl
cnNpb24gZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFbmRlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6
XSk6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbik6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjpkcmFnRGVzdGluYXRp
b25BY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0ludGVyYWN0aW9uOndp
bGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjpzZXNzaW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uOmRpZEVuZFdpdGhPcGVyYXRpb246XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOnNlc3Npb25EaWRFbmQ6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Np
b24pOgorCiAyMDIwLTA2LTAxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAK
ICAgICAgICAgRG9uJ3QgdXNlIGNhc3RzIHRvIGNvbnZlcnQgYmV0d2VlbiBXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb24gYW5kIHtXZWIsV0t9RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIHR5cGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDJkNDNiYWVi
ZjhlLi5hYmVlMjU1NDdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
aW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0
U1BJLmgKQEAgLTEwMjUsMTIgKzEwMjUsNiBAQCBDR0Zsb2F0IFVJUm91bmRUb1NjcmVlblNjYWxl
KENHRmxvYXQgdmFsdWUsIFVJU2NyZWVuICopOwogCiBXVEZfRVhURVJOX0NfRU5ECiAKLXR5cGVk
ZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBVSURyYWdPcGVyYXRpb24pCi17Ci0gICAgVUlEcmFn
T3BlcmF0aW9uTm9uZSA9IDAsCi0gICAgVUlEcmFnT3BlcmF0aW9uRXZlcnkgPSBOU1VJbnRlZ2Vy
TWF4LAotfTsKLQogQGludGVyZmFjZSBVSURyYWdJbnRlcmFjdGlvbiAoKQogQHByb3BlcnR5IChu
b25hdG9taWMsIGFzc2lnbiwgZ2V0dGVyPV9saWZ0RGVsYXksIHNldHRlcj1fc2V0TGlmdERlbGF5
OikgTlNUaW1lSW50ZXJ2YWwgbGlmdERlbGF5OwogLSAodm9pZClfc2V0QWxsb3dzUG9pbnRlckRy
YWdCZWZvcmVMaWZ0RGVsYXk6KEJPT0wpYWxsb3dzUG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAzZmRkODA0OWQ0
OS4uM2RhYTMyY2IyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQpAQCAtMjA5LDYgKzIwOSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2Rl
Y2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0JywKICAgICAgICAg
J1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVu
dE9yV29ya2VySWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpEcmFnT3BlcmF0aW9uJywg
ICMgRklYTUU6IFJlbW92ZSBhZnRlciBlbnVtIGNsYXNzIERyYWdPcGVyYXRpb24uCiAgICAgICAg
ICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXInLApA
QCAtNTg4LDYgKzU4OSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAn
V2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0
UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYkNv
cmU6OkRyYWdIYW5kbGluZ01ldGhvZCc6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKKyAg
ICAgICAgJ1dlYkNvcmU6OkRyYWdPcGVyYXRpb24nOiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+
J10sCiAgICAgICAgICdXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNl
dHRpbmdzJzogWyc8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCc6IFsnPFdlYkNvcmUvU2hhcmVEYXRhLmg+J10sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50
ZXJuYWwuaAppbmRleCBjODY4YzI3NzNmOC4uODk3ODlmMzgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApA
QCAtNDAsNCArNDAsMjQgQEAgaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFcKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCisjaWYgVVNFKEFQUEtJVCkKK2lubGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRp
b24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKyAg
ICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFk
ZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAo
b3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJh
Z09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAg
ICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmlu
ZGV4IGQ0NDM4MTEyOWY5Li5jZThmMmY5OGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNTMxLDcgKzE1MzEsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQogewogICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuY2xpZW50UG9zaXRp
b24oKTsKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCk7Ci0gICAgZW5j
b2Rlci5lbmNvZGVFbnVtKGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsK
KyAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwog
ICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFnRGF0YS5mbGFncygpKTsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCk7CkBAIC0xNTUw
LDggKzE1NTAsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Z2xvYmFsUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBEcmFnT3BlcmF0
aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
RW51bShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spKQorICAgIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBhcHBsaWNhdGlvbkZsYWdzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZTM5ZWE2Y2ZlOC4u
ZjE0OGFjZDIyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC0zOTEzLDcgKzM5MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnZ2VkSW1h
Z2UoTlNJbWFnZSAqLCBDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3BlcgogICAg
IHNlbmREcmFnRW5kVG9QYWdlKGVuZFBvaW50LCBvcGVyYXRpb24pOwogfQogCi12b2lkIFdlYlZp
ZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRp
b24gb3BlcmF0aW9uKQordm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UoQ0dQb2lu
dCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgTlNQb2ludCB3aW5kb3dJbWFn
ZUxvYyA9IFtbbV92aWV3IHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpOU1BvaW50RnJvbUNH
UG9pbnQoZW5kUG9pbnQpXTsKQEAgLTM5MjMsNyArMzkyMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNlbmREcmFnRW5kVG9QYWdlKENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVy
YXRpb24pCiAgICAgLy8gUHJldmVudCBxdWV1ZWQgbW91c2VEcmFnZ2VkIGV2ZW50cyBmcm9tIGNv
bWluZyBhZnRlciB0aGUgZHJhZyBhbmQgZmFrZSBtb3VzZVVwIGV2ZW50LgogICAgIG1faWdub3Jl
c01vdXNlRHJhZ2dlZEV2ZW50cyA9IHRydWU7CiAKLSAgICBtX3BhZ2UtPmRyYWdFbmRlZChXZWJD
b3JlOjpJbnRQb2ludCh3aW5kb3dNb3VzZUxvYyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6
Omdsb2JhbFBvaW50KHdpbmRvd01vdXNlTG9jLCBbbV92aWV3IHdpbmRvd10pKSwgb3BlcmF0aW9u
KTsKKyAgICBtX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dNb3VzZUxv
YyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd01vdXNlTG9j
LCBbbV92aWV3IHdpbmRvd10pKSwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdPcGVyYXRpb25N
YXNrKSk7CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncyBhcHBsaWNh
dGlvbkZsYWdzRm9yRHJhZyhOU1ZpZXcgKnZpZXcsIGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dp
bmdJbmZvKQpAQCAtMzk0Nyw3ICszOTQ3LDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBs
OjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5m
by5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlv
biwgW21fdmlldyB3aW5kb3ddKSk7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
ID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdEZXN0aW5h
dGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBhdXRvIGRyYWdP
cGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgYXV0byBkcmFnT3BlcmF0
aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKTsKICAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFn
c0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrKTsKIAogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9y
bWF0aW9uKCk7CkBAIC0zOTYxLDcgKzM5NjEsNyBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0lt
cGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9p
bnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0
aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIGF1dG8gZHJh
Z09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFn
Z2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdPcGVy
YXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2spOwogICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdn
aW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZs
YWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogICAgIG1fcGFnZS0+ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEs
IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CiAKQEAgLTM5ODYsNyArMzk4
Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKGlkIDxOU0RyYWdnaW5nSW5m
bz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3
IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxd
KTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRh
KGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFn
Z2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0Zv
ckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKICAgICBtX3Bh
Z2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQu
bmFtZSk7CiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKICAgICBk
cmFnZ2luZ0luZm8ubnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1faW5pdGlhbE51bWJlck9m
VmFsaWRJdGVtc0ZvckRyb3A7CkBAIC00MDAyLDcgKzQwMDIsNyBAQCBib29sIFdlYlZpZXdJbXBs
OjpwZXJmb3JtRHJhZ09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykK
IHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJh
Z0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5n
ZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEg
KmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxl
YXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKIAogICAgIE5TQXJyYXkgKnR5cGVzID0gZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGNlZGQ0MTE3NDExLi5jNjUyN2EwMWQ0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNDI0LDExICsyNDI0LDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24gYWN0aW9uLCBEcmFnCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJDb3Jl
OjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVy
RmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBJbnRS
ZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRSZWN0KQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhv
ZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVk
IG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IEludFJlY3QmIGluc2VydGlvblJlY3Qs
IGNvbnN0IEludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpCiB7CiAgICAgTUVTU0FHRV9DSEVD
SyhtX3Byb2Nlc3MsIGRyYWdPcGVyYXRpb24gPD0gRHJhZ09wZXJhdGlvbkRlbGV0ZSk7CiAKLSAg
ICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oZHJh
Z09wZXJhdGlvbik7CisgICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IGRyYWdPcGVyYXRpb247
CiAgICAgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kID0gZHJhZ0hhbmRsaW5nTWV0aG9kOwog
ICAgIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgPSBtb3VzZUlzT3ZlckZpbGVJbnB1dDsK
ICAgICBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCA9IG51bWJlck9mSXRl
bXNUb0JlQWNjZXB0ZWQ7CkBAIC0yNDM4LDIwICsyNDM4LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwg
V2ViQ29yCiB9CiAKICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRE
cmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCB1aW50NjRfdCBkcmFnT3BlcmF0aW9u
LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlKQordm9pZCBX
ZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlKQogewogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGRyYWdJbWFnZSA9ICFkcmFnSW1hZ2VIYW5kbGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZShkcmFnSW1hZ2VIYW5kbGUpIDogbnVsbHB0cjsKLSAgICBwYWdlQ2xpZW50KCkuc3Rh
cnREcmFnKFdURk1vdmUoc2VsZWN0aW9uRGF0YSksIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+KGRyYWdPcGVyYXRpb24pLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOworICAgIHBhZ2VD
bGllbnQoKS5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbiwg
V1RGTW92ZShkcmFnSW1hZ2UpKTsKIAogICAgIGRpZFN0YXJ0RHJhZygpOwogfQogI2VuZGlmCiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
cmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2Jh
bFBvc2l0aW9uLCBkcmFnT3BlcmF0aW9uTWFzaykpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3YmE5Zjhi
NWVjMC4uN2U5NGUwYmUzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0xMTU2LDggKzExNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtRHJhZ09wZXJh
dGlvbihXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkm
Jik7CiAgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ09wZXJhdGlvbihib29sIGhhbmRsZWQpOwogCi0g
ICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJh
dGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlu
cHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlZGl0YWJsZUVs
ZW1lbnRSZWN0KTsKLSAgICB2b2lkIGRyYWdFbmRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
dWludDY0X3Qgb3BlcmF0aW9uKTsKKyAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2Qs
IGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNj
ZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOworICAgIHZvaWQgZHJhZ0VuZGVkKGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4p
OwogICAgIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7CiAg
ICAgdm9pZCBzZXREcmFnQ2FyZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKQEAgLTEx
NjcsNyArMTE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBT
dHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJM
LCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJj
aGl2ZVNpemUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZSk7CisgICAgdm9pZCBzdGFydERyYWco
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBjb25zdCBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsKICNlbmRpZgogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCAyZDIzZTRiNjYwYi4uMTIyNjA0MDY2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxMCw3ICszMTAsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBEcmFnIGFuZCBkcm9wIG1lc3NhZ2VzCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
dWludDY0X3QgZHJhZ09wZXJhdGlvbiwgZW51bTp1aW50OF90IFdlYkNvcmU6OkRyYWdIYW5kbGlu
Z01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVu
c2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIFdlYkNvcmU6OkludFJlY3QgaW5zZXJ0
aW9uUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBlZGl0YWJsZUVsZW1lbnRSZWN0KQorICAgIERpZFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVy
YXRpb24sIGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRs
aW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0
ZW1zVG9CZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6
OkludFJlY3QgZWRpdGFibGVFbGVtZW50UmVjdCkKICAgICBEaWRFbmREcmFnZ2luZygpOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0zMTgs
NyArMzE4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTZXRQcm9taXNlZERh
dGFGb3JJbWFnZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpI
YW5kbGUgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSwgU3RyaW5nIGZpbGVuYW1lLCBT
dHJpbmcgZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUsIFN0cmluZyB1cmwsIFN0cmluZyB2aXNpYmxl
VVJMLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGUsIHVpbnQ2NF90
IGFyY2hpdmVTaXplKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19T
VVBQT1JUKQotICAgIFN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbkRh
dGEsIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUgZHJhZ0ltYWdlKQorICAgIFN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVj
dGlvbkRhdGEsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiwgV2ViS2l0OjpT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA0MzlkYjk5NzdlZS4uYjJjZDVmYTdjZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzI4NSw3ICs3Mjg1LDcgQEAgLSAodm9pZClfZGlkSGFuZGxl
RHJhZ1N0YXJ0UmVxdWVzdDooQk9PTClzdGFydGVkCiAgICAgICAgIGlmIChzdGFydGVkKSB7CiAg
ICAgICAgICAgICAvLyBBIGNsaWVudCBvZiB0aGUgT2JqZWN0aXZlIEMgU1BJIG9yIFVJS2l0IG1p
Z2h0IGhhdmUgcHJldmVudGVkIHRoZSBkcmFnIGZyb20gYmVnaW5uaW5nIGVudGlyZWx5IGluIHRo
ZSBVSSBwcm9jZXNzLCBpbiB3aGljaCBjYXNlCiAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGJh
bGFuY2UgdGhlIGBkcmFnc3RhcnRgIGV2ZW50IHdpdGggYSBgZHJhZ2VuZGAuCi0gICAgICAgICAg
ICBfcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5k
LCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBfcGFnZS0+ZHJhZ0Vu
ZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCB7IH0pOwogICAgICAg
ICB9CiAgICAgfQogfQpAQCAtNzMxNCwxMyArNzMxNCwzMSBAQCBzdGF0aWMgVUlEcm9wT3BlcmF0
aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihXZWJDb3JlOjpEcmFnT3Bl
cmF0aQogICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25DYW5jZWw7CiB9CiAKK3N0YXRpYyBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uIGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKFVJ
RHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uKQoreworICAgIHN3aXRjaCAoZHJvcE9wZXJhdGlv
bikgeworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOgorICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Gb3JiaWRk
ZW46CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBj
YXNlIFVJRHJvcE9wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uQ29weTsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworfQorCiAtIChX
ZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lv
bj4pc2Vzc2lvbiBkcmFnRGVzdGluYXRpb25BY3Rpb246KFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KWRyYWdEZXN0aW5hdGlvbkFjdGlvbgogewogICAgIENHUG9pbnQgZ2xvYmFsOwogICAgIENHUG9p
bnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9w
U2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmds
b2JhbF07CiAKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oc2Vzc2lvbi5hbGxvd3NNb3ZlT3Bl
cmF0aW9uID8gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25FdmVyeSAmIH5XZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpOworICAgIGF1dG8gZHJh
Z09wZXJhdGlvbk1hc2sgPSBXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgaWYgKCFz
ZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24pCisgICAgICAgIGRyYWdPcGVyYXRpb25NYXNrLnJl
bW92ZShXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwg
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChnbG9iYWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9u
ZSwgV2ViS2l0Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRpb25B
Y3Rpb24pIH07CiB9CiAKQEAgLTgwMTMsNyArODAzMSw3IEBAIC0gKHZvaWQpZHJhZ0ludGVyYWN0
aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxBbmltYXRlTGlmdFdpdGhB
bmltCiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiBl
bmRlZCBhdCBzdGFydDogJXAiLCBzZXNzaW9uKTsKICAgICAgICAgICAgIC8vIFRoZSBsaWZ0IHdh
cyBjYW5jZWxlZCwgc28gLWRyb3BJbnRlcmFjdGlvbjpzZXNzaW9uRGlkRW5kOiB3aWxsIG5ldmVy
IGJlIGludm9rZWQuIFRoaXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIGNsZWFuIHVwLgogICAgICAg
ICAgICAgW3Byb3RlY3RlZFNlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAg
ICAgICAgICAgcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JE
cmFnRW5kLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBwYWdlLT5k
cmFnRW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIHsgfSk7CiAg
ICAgICAgIH0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgZWxzZQpAQCAtODA0
OCw3ICs4MDY2LDcgQEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9u
ICopaW50ZXJhY3Rpb24gc2Vzc2lvbjooaWQgPFVJRHJhZ1Nlc3MKICAgICAgICAgcmV0dXJuOwog
CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5k
cmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3Rh
dGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkp
LCBvcGVyYXRpb24pOworICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQo
KSksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFk
anVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9w
ZXJhdGlvbihvcGVyYXRpb24pKTsKIH0KIAogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJh
Z0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JD
YW5jZWxsaW5nSXRlbTooVUlEcmFnSXRlbSAqKWl0ZW0gd2l0aERlZmF1bHQ6KFVJVGFyZ2V0ZWRE
cmFnUHJldmlldyAqKWRlZmF1bHRQcmV2aWV3CkBAIC04MjY3LDcgKzgyODUsNyBAQCAtICh2b2lk
KWRyb3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9u
RGlkRW5kOihpZCA8VUlEcgogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVD
bGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50
OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdT
b3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCks
IHsgfSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAwZmMyZjA3MDE4My4uZDgyM2M3Y2FkNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zOTQwLDE0ICszOTQwLDE0
IEBAIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2ViUGFnZTo6bm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAog
I2lmIFBMQVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzaywgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQz
Ml90IGZsYWdzKQordm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJh
Z0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRh
dGEsIHVpbnQzMl90IGZsYWdzKQogewogICAgIGlmICghbV9wYWdlKSB7CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERy
YWdPcGVyYXRpb25Ob25lLCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0s
IHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEo
JnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nh
c3Q8RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgc3RhdGljX2Nh
c3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEo
JnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrLCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxh
Z3MpKTsKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rp
b246OkVudGVyZWQ6IHsKICAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRp
b24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwpAQCAt
NDAxOCw3ICs0MDE4LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWIKIH0KICNlbmRpZgogCi12
b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwg
V2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKK3Zv
aWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIEludFBvaW50IGFkanVzdGVkQ2xp
ZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24ueCgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdPZmZzZXQoKS54KCksIGNsaWVudFBvc2l0aW9uLnkoKSArIG1fcGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnT2Zmc2V0KCkueSgpKTsKICAgICBJbnRQb2ludCBhZGp1c3RlZEdsb2JhbFBv
c2l0aW9uKGdsb2JhbFBvc2l0aW9uLngoKSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFn
T2Zmc2V0KCkueCgpLCBnbG9iYWxQb3NpdGlvbi55KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9sbGVy
KCkuZHJhZ09mZnNldCgpLnkoKSk7CkBAIC00MDI5LDcgKzQwMjksNyBAQCB2b2lkIFdlYlBhZ2U6
OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50
UG9pbnQgZ2xvYgogICAgICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtl
IG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFk
LgogICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChhZGp1c3RlZENsaWVudFBvc2l0aW9uLCBh
ZGp1c3RlZEdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCAwLCBX
ZWJDb3JlOjpOb1RhcCk7Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5k
cmFnU291cmNlRW5kZWRBdChldmVudCwgKERyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKKyAgICBt
X3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50
LCBkcmFnT3BlcmF0aW9uTWFzayk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZEVuZERyYWdnaW5nKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggYjIxN2JjN2ViZWEuLjFhOTAxYzExZDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04OTksNyArODk5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpOwog
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgcGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJD
b3JlOjpTZWxlY3Rpb25EYXRhJiYsIHVpbnQzMl90IGZsYWdzKTsKKyAgICB2b2lkIHBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3QgZmxhZ3Mp
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiAhUExBVEZPUk0oR1RLKQpA
QCAtOTA3LDcgKzkwNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLSAgICB2b2lkIGRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlv
biwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7
CisgICAgdm9pZCBkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4pOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rp
b24oKTsKICAgICB2b2lkIG1heVBlcmZvcm1VcGxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCmluZGV4IDUzOGU2NTcyZTUwLi5hZTkyNzQ3NjM4OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMDks
MTQgKzMwOSwxNCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAgIyBEcmFnIGFuZCBk
cm9wLgogI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBQZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xs
ZXJBY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24sIHVpbnQzMl90IGZsYWdz
KQorICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpE
cmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0
aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YSBzZWxlY3Rpb24sIHVpbnQzMl90IGZsYWdzKQogI2VuZGlmCiAjaWYgIVBMQVRG
T1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBQZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oZW51bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9u
LCBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkKICNlbmRpZgogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgRGlkU3RhcnREcmFnKCkKLSAgICBEcmFnRW5kZWQoV2ViQ29y
ZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0
aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pCisgICAgRHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNrKQogICAgIERyYWdD
YW5jZWxsZWQoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggMGU2NTY0OTZjODQuLjhiODdkYjM4YzIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQpAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJ
dGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvCiAgICAgLy8g
aXMgb3BhcXVlIHRvIHRoZSB3ZWIgcHJvY2Vzcywgd2hpY2ggb25seSBzZWVzIHRoYXQgdGhlIGN1
cnJlbnQgZHJhZyBoYXMgZW5kZWQsIGFuZCB0aGF0IGEgbmV3IG9uZSBpcyBiZWdpbm5pbmcuCiAg
ICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlv
biwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXApOwogICAgIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW5kZWQoKTsKLSAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2
ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBEcmFnT3BlcmF0aW9uTm9uZSwg
TWF5RXh0ZW5kRHJhZ1Nlc3Npb246Olllcyk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVu
dEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgeyB9LCBNYXlFeHRlbmREcmFnU2Vz
c2lvbjo6WWVzKTsKIAogICAgIGJvb2wgZGlkSGFuZGxlRHJhZyA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkuZXZlbnRIYW5kbGVyKCkudHJ5VG9CZWdpbkRyYWdBdFBvaW50KGNsaWVudFBvc2l0aW9uLCBn
bG9iYWxQb3NpdGlvbik7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRIYW5k
bGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChkaWRIYW5kbGVEcmFnKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggNTY4OWQzYTE5YzQuLjcyMTZmMjg4MzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMDYtMDEgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IGZvciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MjEyNjA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYWdTb3VyY2VF
bmRlZEF0Om9wZXJhdGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgor
ICAgICAgICAoa2l0KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrRm9yTG9jYWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYWdnaW5nU2Vz
c2lvbjpzb3VyY2VPcGVyYXRpb25NYXNrRm9yRHJhZ2dpbmdDb250ZXh0Ol0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6Cisg
ICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAg
ICAgKC1bV2ViVmlldyBkcmFnRGF0YUZvclNlc3Npb246Y2xpZW50Omdsb2JhbDpvcGVyYXRpb246
XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0V4
aXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToKKyAg
ICAgICAgLSBNYWtlIHVzZSBvZiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBjb252ZXJzaW9uIGZ1
bmN0aW9uLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIChD
b2NvYURyYWdPcGVyYXRpb24pOgorICAgICAgICAtIEFkZCB0eXBlZGVmIHNvIGNvcmVEcmFnT3Bl
cmF0aW9uTWFzaygpIG1heSBiZSBzaGFyZWQgYWNyb3NzCisgICAgICAgICAgcGxhdGZvcm1zLgor
ICAgICAgICAoY29yZURyYWdPcGVyYXRpb25NYXNrKTogQWRkIGRlY2xhcmF0aW9uLgorICAgICAg
ICAoY29yZU9wdGlvbnMpOgorICAgICAgICAtIFJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVyIG5h
bWUuCisKIDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmU6OkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb24gdHlwZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGQ0ZGVh
N2MzOWM4Li5iOWVlY2RjOGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCkBAIC05NDIsNyArOTQyLDcgQEAgLSAodm9pZClfc2V0VHlwaW5nU3R5bGU6
KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRoVW5kb0FjdGlvbjooV2ViQ29yZToK
IH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKLS0gKHZvaWQp
X2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xvYyBvcGVyYXRpb246KE5TRHJhZ09w
ZXJhdGlvbilvcGVyYXRpb24KKy0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdp
bmRvd0xvYyBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilkcmFnT3BlcmF0aW9uTWFzawogewog
ICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUyLDcg
Kzk1Miw3IEBAIC0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xvYyBv
cGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpCiAgICAgLy8gRklYTUU6IFRoZXNlIGFy
ZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBp
bnN0ZWFkLgogICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudChXZWJDb3JlOjpJ
bnRQb2ludCh3aW5kb3dMb2MpLCBXZWJDb3JlOjpJbnRQb2ludChXZWJDb3JlOjpnbG9iYWxQb2lu
dCh3aW5kb3dMb2MsIFt2aWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10pKSwKICAgICAgICAg
V2ViQ29yZTo6TGVmdEJ1dHRvbiwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgV2ViQ29yZTo6
Rm9yY2VBdENsaWNrLCBXZWJDb3JlOjpOb1RhcCk7Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+
ZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIChXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uKW9wZXJhdGlvbik7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVy
KCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnT3Bl
cmF0aW9uTWFzaykpOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRG
T1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KaW5kZXggNWU0YTg5MDVlYzguLmU3Y2E0NjFkOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogICAgICAgICAgIChDKSAyMDA2LCAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5k
ZW5uaXNAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDIyOSw2ICs0MjI5LDI4IEBA
IC0gKHZvaWQpdG91Y2g6KFdlYkV2ZW50ICopZXZlbnQKICNlbmRpZgogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKQorCitzdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtp
dChPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKK3sKKyAg
ICBpZiAob3BlcmF0aW9uTWFzayA9PSBXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKCkpCisgICAg
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25FdmVyeTsKKworICAgIE5TRHJhZ09wZXJhdGlvbiBy
ZXN1bHQgPSBOU0RyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRh
aW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJh
Z09wZXJhdGlvbkNvcHk7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkxpbmspKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTGlu
azsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
R2VuZXJpYykpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25HZW5lcmljOworICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRl
KSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgaWYgKG9w
ZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKQorICAgICAg
ICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5j
b250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKSkKKyAgICAgICAgcmVzdWx0IHw9
IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogLSAodm9pZClkcmFnSW1hZ2U6KE5TSW1h
Z2UgKilkcmFnSW1hZ2UKICAgICAgICAgICAgICAgIGF0OihOU1BvaW50KWF0CkBAIC00MjgwLDcg
KzQzMDIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0dXJu
IChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0
aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdP
cGVyYXRpb25NYXNrKCkpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19C
RUdJTgpAQCAtNDM4Niw3ICs0NDA4LDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU2Vz
c2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilzZXNzaW9uIHNvdXJjZU9wZXJhdGlvbk0KICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0
dXJuIChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3Bl
cmF0aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURy
YWdPcGVyYXRpb25NYXNrKCkpOwogfQogCiAtICh2b2lkKWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFn
Z2luZ1Nlc3Npb24gKilzZXNzaW9uIGVuZGVkQXRQb2ludDooTlNQb2ludClzY3JlZW5Qb2ludCBv
cGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA5NjdhOTA1YjQyOC4uZDU3MDczNDAxYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTU4OSw2ICs1
ODksMzcgQEAgc3RhdGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+
IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFcKICAgICAgICAgcmVzdWx0LmFkZChXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CisKK09wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soQ29jb2FEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4gcmVzdWx0OworCisjaWYgVVNFKEFQUEtJVCkKKyAgICBpZiAob3Bl
cmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlv
bkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOwor
ICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1
bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9u
ICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlv
bk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOwor
ICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisjZWxzZQorICAgIC8vIFNlZSA8
VUlLaXQvVUlEcmFnZ2luZ19Qcml2YXRlLmg+LgorICAgIGNvbnN0ZXhwciBOU1VJbnRlZ2VyIF9V
SURyYWdPcGVyYXRpb25Db3B5ID0gMTsKKyAgICBjb25zdGV4cHIgTlNVSW50ZWdlciBfVUlEcmFn
T3BlcmF0aW9uTW92ZSA9IDE2OworCisgICAgaWYgKG9wZXJhdGlvbiAmIF9VSURyYWdPcGVyYXRp
b25Db3B5KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsK
KyAgICBpZiAob3BlcmF0aW9uICYgX1VJRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworI2VuZGlmIC8vIFVTRShBUFBLSVQp
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlv
bnMpCkBAIC0xOTIzLDcgKzE5NTQsNyBAQCAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogCiAtIChX
ZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilz
ZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xv
YmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KIHsKLSAgICBhdXRvIGRy
YWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ob3Bl
cmF0aW9uKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25N
YXNrKG9wZXJhdGlvbik7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29y
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
a0ZvclNlc3Npb246c2Vzc2lvbl0pOwogICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJv
dW5kZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChn
bG9iYWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRp
b25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrIH07CiB9CkBAIC02NzQ4LDcgKzY3Nzks
NyBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0lu
Zm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJ
bmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2Vi
Q29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYg
d2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZv
LCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2Ry
YWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRp
b25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRy
YWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdn
aW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7
CiAgICAgcmV0dXJuIGNvcmUoc2VsZiktPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJh
Z0RhdGEpOwogfQogCkBAIC02NzYxLDcgKzY3OTIsNyBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJh
Z2dpbmdVcGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNv
cmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5n
SW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2Vs
ZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6
OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10p
LCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tG
b3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CiAgICAgcmV0dXJuIHBhZ2UtPmRyYWdDb250
cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwogfQogCkBAIC02NzczLDcgKzY4MDQsNyBA
QCAtICh2b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5m
bwogCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdM
b2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQ
b2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0g
ICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2lu
Z0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNs
aWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0lu
Zm9dKTsKICAgICBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwog
fQogCkBAIC02Nzg2LDcgKzY4MTcsNyBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihp
ZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewogICAgIFdlYkNvcmU6OkludFBvaW50
IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwotICAgIGF1dG8qIGRyYWdEYXRhID0gbmV3IFdl
YkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CisgICAg
YXV0byogZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGll
bnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZv
XSk7CiAKICAgICBOU0FycmF5KiB0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9h
cmQudHlwZXM7CiAgICAgaWYgKCFbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQXJjaGl2ZVBib2Fy
ZFR5cGVdICYmIFt0eXBlcyBjb250YWluc09iamVjdDpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21p
c2VQYXN0ZWJvYXJkVHlwZSgpXSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggNTc2NjI5YWJhNjkuLmJmZDBhZGRmOTliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNiw2ICszNiw3
IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIAogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRl
eHRDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpAQCAtODksNyArOTAsMTcgQEAg
Y2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAKICNpZmRlZiBfX2NwbHVzcGx1
cwogCi1XZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRp
b25zKTsKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorI2lmIFVTRShBUFBLSVQpCit0eXBlZGVm
IE5TRHJhZ09wZXJhdGlvbiBDb2NvYURyYWdPcGVyYXRpb247CisjZWxzZQordHlwZWRlZiB1aW50
NjRfdCBDb2NvYURyYWdPcGVyYXRpb247CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURy
YWdPcGVyYXRpb24pOworI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKK1dlYkNvcmU6
OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zKTsKIAogT3B0aW9uU2V0PFdl
YkNvcmU6OkxheW91dE1pbGVzdG9uZT4gY29yZUxheW91dE1pbGVzdG9uZXMoV2ViTGF5b3V0TWls
ZXN0b25lcyk7CiBXZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91dE1pbGVzdG9uZXMoT3B0aW9u
U2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCAzMTMy
NjAzNmE4YS4uMzgyZGFjMjY4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCkBAIC00NCwxOCArNDQsMTgg
QEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBEV09SRCBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKERyYWdPcGVyYXRpb24gb3ApCitzdGF0aWMg
RFdPUkQgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKICAgICBEV09SRCByZXN1bHQgPSBEUk9Q
RUZGRUNUX05PTkU7Ci0gICAgaWYgKG9wID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBpZiAo
b3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkpCiAgICAgICAgIHJldHVybiBEUk9Q
RUZGRUNUX0NPUFkgfCBEUk9QRUZGRUNUX0xJTksgfCBEUk9QRUZGRUNUX01PVkU7IAotICAgIGlm
IChvcCAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5z
KERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfQ09QWTsg
Ci0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKG9wZXJhdGlvbk1hc2su
Y29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVD
VF9MSU5LOyAKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAob3BlcmF0
aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJlc3VsdCB8PSBE
Uk9QRUZGRUNUX01PVkU7Ci0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAg
aWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkdlbmVyaWMpKQogICAgICAg
ICByZXN1bHQgfD0gRFJPUEVGRkVDVF9NT1ZFOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0x
NTIsNyArMTUyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gaXRl
bSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJgogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgRFdPUkQgb2tFZmZlY3QgPSBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2tUb0RyYWdDdXJzb3JzKG1fd2ViVmlldy0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLnNv
dXJjZURyYWdPcGVyYXRpb24oKSk7CisgICAgICAgIERXT1JEIG9rRWZmZWN0ID0gZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhtX3dlYlZpZXctPnBhZ2UoKS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpKTsKICAgICAgICAgRFdPUkQgZWZm
ZWN0ID0gRFJPUEVGRkVDVF9OT05FOwogICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+IHVp
OwogICAgICAgICBIUkVTVUxUIGhyID0gRV9OT1RJTVBMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAppbmRleCAzYmRlZTZiYmQ1Yi4uNzg3NDhjYTNlZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCkBAIC01ODU1LDcgKzU4NTUsNyBAQCBzdGF0aWMgRFdPUkQgZHJhZ09w
ZXJhdGlvblRvRHJhZ0N1cnNvcihEcmFnT3BlcmF0aW9uIG9wKSB7CiAgICAgcmV0dXJuIHJlczsK
IH0KIAotRHJhZ09wZXJhdGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09S
RCBncmZLZXlTdGF0ZSkgY29uc3QKK09wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBXZWJWaWV3Ojpr
ZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKIHsKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwpAQCAtNTg2NCwx
NiArNTg2NCwxNiBAQCBEcmFnT3BlcmF0aW9uIFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0
aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25zdAogICAgIC8vIElEcm9wVGFyZ2V0OjpEcmFnT3Zl
ci4gTm90ZSwgZ3JmS2V5U3RhdGUgaXMgdGhlIGN1cnJlbnQgCiAgICAgLy8gc3RhdGUgb2YgdGhl
IGtleWJvYXJkIG1vZGlmaWVyIGtleXMgb24gdGhlIGtleWJvYXJkLiBTZWU6CiAgICAgLy8gPGh0
dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczY4MDEyOShWUy44NSkuYXNw
eD4uCi0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVy
KCkuc291cmNlRHJhZ09wZXJhdGlvbigpOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9IG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpOwogCiAgICAgaWYg
KChncmZLZXlTdGF0ZSAmIChNS19DT05UUk9MIHwgTUtfU0hJRlQpKSA9PSAoTUtfQ09OVFJPTCB8
IE1LX1NISUZUKSkKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAg
ICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdPcGVyYXRpb25MaW5rIH07CiAgICAgZWxzZSBpZiAo
KGdyZktleVN0YXRlICYgTUtfQ09OVFJPTCkgPT0gTUtfQ09OVFJPTCkKLSAgICAgICAgb3BlcmF0
aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdP
cGVyYXRpb25Db3B5IH07CiAgICAgZWxzZSBpZiAoKGdyZktleVN0YXRlICYgTUtfU0hJRlQpID09
IE1LX1NISUZUKQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKKyAg
ICAgICAgb3BlcmF0aW9uTWFzayA9IHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfTsKIAotICAgIHJl
dHVybiBvcGVyYXRpb247CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKIEhSRVNVTFQg
V2ViVmlldzo6RHJhZ0VudGVyKElEYXRhT2JqZWN0KiBwRGF0YU9iamVjdCwgRFdPUkQgZ3JmS2V5
U3RhdGUsIFBPSU5UTCBwdCwgRFdPUkQqIHBkd0VmZmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuaAppbmRleCAxODA2Njk4YTlhZC4uN2IyMjEwNGQ5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmgKQEAgLTU1NSw3ICs1NTUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwZXJmb3Jt
TGF5ZXJlZFdpbmRvd1VwZGF0ZSgpOwogCi0gICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBrZXlT
dGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3Q7CisgICAgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JE
IGdyZktleVN0YXRlKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHZhcmlhYmxlIGlzIHBh
cnQgb2YgYSB3b3JrYXJvdW5kLiBUaGUgZHJvcCBlZmZlY3QgKHBkd0VmZmVjdCkgcGFzc2VkIHRv
IERyb3AgaXMgaW5jb3JyZWN0LiAKICAgICAvLyBXZSBzZXQgdGhpcyB2YXJpYWJsZSBpbiBEcmFn
RW50ZXIgYW5kIERyYWdPdmVyIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gRHJvcCB0byBzZXQg
dGhlIGNvcnJlY3QgZHJvcCBlZmZlY3QuIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400892</attachid>
            <date>2020-06-02 21:39:53 -0700</date>
            <delta_ts>2020-06-02 21:48:45 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>bug-212605-v4.diff</filename>
            <type>text/plain</type>
            <size>118656</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZDAzMGRmZmI4Ni4uZTY3NWEwZDljMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb24g
dHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODQ2M2E0OGU5NzQuLjcz
MTMwOGI1NDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtNDg4LDE4ICs0
ODgsMTggQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3Rh
cnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICByZXR1cm4gZGF0YVRyYW5zZmVy
OwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0
ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVz
KQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2Fy
ZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJh
Z2dpbmdGaWxlcykKIHsKICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0
YVRyYW5zZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0
ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpE
cmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihz
b3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFz
ayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRp
ZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0
dXJuIGRhdGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJj
ZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRy
YW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQog
ewogICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0
YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJh
Z2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERh
dGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRp
b24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVy
YXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3Vt
ZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFu
c2ZlcjsKIH0KQEAgLTU5NSw3NCArNTk1LDc0IEBAIHZvaWQgRHJhZ0ltYWdlTG9hZGVyOjppbWFn
ZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KikKICAgICBtX2RhdGFUcmFuc2Zl
ci0+dXBkYXRlRHJhZ0ltYWdlKCk7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRyYWdPcEZy
b21JRU9wKGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQorc3RhdGljIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHsKICAgICBp
ZiAob3BlcmF0aW9uID09ICJ1bmluaXRpYWxpemVkIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVy
YXRpb25FdmVyeTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKICAgICBpZiAo
b3BlcmF0aW9uID09ICJub25lIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwor
ICAgICAgICByZXR1cm4geyB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHkiKQotICAgICAg
ICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRp
b25Db3B5IH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGluayIpCi0gICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkxpbmsgfTsK
ICAgICBpZiAob3BlcmF0aW9uID09ICJtb3ZlIikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0
aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAg
cmV0dXJuIHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAg
aWYgKG9wZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAgICAgICByZXR1cm4gKERyYWdPcGVyYXRp
b24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxpbmspOworICAgICAgICByZXR1
cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfTsKICAgICBpZiAob3Bl
cmF0aW9uID09ICJjb3B5TW92ZSIpCi0gICAgICAgIHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJh
Z09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3Zl
KTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHksIERyYWdPcGVyYXRpb25HZW5l
cmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImxpbmtNb3Zl
IikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uTGluayB8IERy
YWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXR1cm4g
eyBEcmFnT3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25N
b3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiYWxsIikKLSAgICAgICAgcmV0dXJuIERyYWdP
cGVyYXRpb25FdmVyeTsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlvblByaXZhdGU7IC8vIHJlYWxs
eSBhIG1hcmtlciBmb3IgIm5vIGNvbnZlcnNpb24iCisgICAgICAgIHJldHVybiBhbnlEcmFnT3Bl
cmF0aW9uKCk7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvblByaXZhdGUgfTsgLy8gUmVhbGx5
IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBJ
RU9wRnJvbURyYWdPcChEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBjb25zdCBjaGFy
KiBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykK
IHsKLSAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb24gJiAoRHJhZ09wZXJhdGlvbkdl
bmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgYm9vbCBpc0dlbmVyaWNNb3ZlID0gb3Bl
cmF0aW9uTWFzay5jb250YWluc0FueSh7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0
aW9uTW92ZSB9KTsKIAotICAgIGlmICgoaXNHZW5lcmljTW92ZSAmJiAob3BlcmF0aW9uICYgRHJh
Z09wZXJhdGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpIHx8IG9w
ZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYgKChpc0dlbmVyaWNNb3ZlICYm
IG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpICYmIG9wZXJhdGlvbk1h
c2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKSB8fCBvcGVyYXRpb25NYXNrID09IGFueURy
YWdPcGVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuICJhbGwiOwotICAgIGlmIChpc0dlbmVyaWNN
b3ZlICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkpCisgICAgaWYgKGlzR2VuZXJp
Y01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAg
ICAgIHJldHVybiAiY29weU1vdmUiOwotICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIChvcGVyYXRp
b24gJiBEcmFnT3BlcmF0aW9uTGluaykpCisgICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0
aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJldHVybiAibGlu
a01vdmUiOwotICAgIGlmICgob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpICYmIChvcGVy
YXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFp
bnNBbGwoeyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfSkpCiAgICAgICAg
IHJldHVybiAiY29weUxpbmsiOwogICAgIGlmIChpc0dlbmVyaWNNb3ZlKQogICAgICAgICByZXR1
cm4gIm1vdmUiOwotICAgIGlmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBp
ZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJl
dHVybiAiY29weSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKQorICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAg
cmV0dXJuICJsaW5rIjsKICAgICByZXR1cm4gIm5vbmUiOwogfQogCi1EcmFnT3BlcmF0aW9uIERh
dGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uKCkgY29uc3QKK09wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdAogewotICAgIERy
YWdPcGVyYXRpb24gb3BlcmF0aW9uID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsK
LSAgICBBU1NFUlQob3BlcmF0aW9uICE9IERyYWdPcGVyYXRpb25Qcml2YXRlKTsKLSAgICByZXR1
cm4gb3BlcmF0aW9uOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9IGRyYWdPcEZyb21JRU9wKG1f
ZWZmZWN0QWxsb3dlZCk7CisgICAgQVNTRVJUKG9wZXJhdGlvbk1hc2sgIT0gRHJhZ09wZXJhdGlv
blByaXZhdGUpOworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCi1EcmFnT3BlcmF0aW9u
IERhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24oKSBjb25zdAorT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb25NYXNrKCkgY29u
c3QKIHsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IGRyYWdPcEZyb21JRU9wKG1fZHJv
cEVmZmVjdCk7Ci0gICAgQVNTRVJUKG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBv
cGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRp
b25MaW5rIHx8IG9wZXJhdGlvbiA9PSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdlbmVy
aWMgfCBEcmFnT3BlcmF0aW9uTW92ZSkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25FdmVy
eSk7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbjsKKyAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBkcmFn
T3BGcm9tSUVPcChtX2Ryb3BFZmZlY3QpOworICAgIEFTU0VSVChvcGVyYXRpb25NYXNrID09IERy
YWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0eSgpIHx8IG9wZXJhdGlvbk1h
c2sgPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFzayA9PSBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfSkg
fHwgb3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkpOworICAgIHJldHVybiBvcGVy
YXRpb25NYXNrOwogfQogCi12b2lkIERhdGFUcmFuc2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uKERy
YWdPcGVyYXRpb24gb3BlcmF0aW9uKQordm9pZCBEYXRhVHJhbnNmZXI6OnNldFNvdXJjZU9wZXJh
dGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCiB7Ci0gICAg
QVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7
Ci0gICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAgICBB
U1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sgIT0gRHJhZ09wZXJhdGlvblBy
aXZhdGUpOworICAgIG1fZWZmZWN0QWxsb3dlZCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbk1h
c2spOwogfQogCi12b2lkIERhdGFUcmFuc2Zlcjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJh
Z09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RGVzdGluYXRpb25P
cGVyYXRpb25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQogewot
ICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uLCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkNvcHkg
fHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Ob25lIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3Bl
cmF0aW9uTGluayB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkdlbmVyaWMgfHwgb3BlcmF0
aW9uID09IERyYWdPcGVyYXRpb25Nb3ZlIHx8IG9wZXJhdGlvbiA9PSAoRHJhZ09wZXJhdGlvbiko
RHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSkpOwotICAgIG1fZHJvcEVm
ZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbik7CisgICAgQVNTRVJUX0FSRyhvcGVyYXRp
b25NYXNrLCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbk1h
c2suaXNFbXB0eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3Bl
cmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8fCBvcGVyYXRpb25NYXNrID09IERy
YWdPcGVyYXRpb25Nb3ZlIHx8IG9wZXJhdGlvbk1hc2sgPT0gT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+KHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pKTsKKyAgICBt
X2Ryb3BFZmZlY3QgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb25NYXNrKTsKIH0KIAogU3RyaW5n
IERhdGFUcmFuc2Zlcjo6ZHJvcEVmZmVjdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmgKaW5kZXggZTVjZmFmODU2ZmIuLjBlNzQ4MGExZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5oCkBAIC04OCwxNSArODgsMTUgQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWcoKTsKICAgICBz
dGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9j
dW1lbnQmKTsKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChjb25z
dCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9u
LCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVh
dGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBz
dGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJv
b2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZv
clVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7
CiAKICAgICBib29sIGRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBt
X2Ryb3BFZmZlY3QgPT0gInVuaW5pdGlhbGl6ZWQiOyB9CiAKLSAgICBEcmFnT3BlcmF0aW9uIHNv
dXJjZU9wZXJhdGlvbigpIGNvbnN0OwotICAgIERyYWdPcGVyYXRpb24gZGVzdGluYXRpb25PcGVy
YXRpb24oKSBjb25zdDsKLSAgICB2b2lkIHNldFNvdXJjZU9wZXJhdGlvbihEcmFnT3BlcmF0aW9u
KTsKLSAgICB2b2lkIHNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRpb24pOworICAg
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3Q7Cisg
ICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygpIGNv
bnN0OworICAgIHZvaWQgc2V0U291cmNlT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJh
dGlvbj4pOworICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPik7CiAKICAgICB2b2lkIHNldERyYWdIYXNTdGFydGVkKCkgeyBtX3Nob3Vs
ZFVwZGF0ZURyYWdJbWFnZSA9IHRydWU7IH0KICAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlKEludFBvaW50JiBkcmFnTG9jYXRpb24pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9u
cy5oCmluZGV4IGE5MjNjYWU1OGNiLi5iZjgzZDYzY2U1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Fj
dGlvbnMuaApAQCAtNjAsMTggKzYwLDIxIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgRHJhZ1NvdXJj
ZUFjdGlvbkFueSAgICAgICAgICA9IFVJTlRfTUFYCiB9IERyYWdTb3VyY2VBY3Rpb247CiAKLS8v
IE1hdGNoZXMgTlNEcmFnT3BlcmF0aW9uLgorLy8gU2VlIE5TRHJhZ09wZXJhdGlvbiwgX1VJRHJh
Z09wZXJhdGlvbiBhbmQgVUlEcm9wT3BlcmF0aW9uLgogdHlwZWRlZiBlbnVtIHsKLSAgICBEcmFn
T3BlcmF0aW9uTm9uZSAgICA9IDAsCiAgICAgRHJhZ09wZXJhdGlvbkNvcHkgICAgPSAxLAogICAg
IERyYWdPcGVyYXRpb25MaW5rICAgID0gMiwKICAgICBEcmFnT3BlcmF0aW9uR2VuZXJpYyA9IDQs
CiAgICAgRHJhZ09wZXJhdGlvblByaXZhdGUgPSA4LAogICAgIERyYWdPcGVyYXRpb25Nb3ZlICAg
ID0gMTYsCiAgICAgRHJhZ09wZXJhdGlvbkRlbGV0ZSAgPSAzMiwKLSAgICBEcmFnT3BlcmF0aW9u
RXZlcnkgICA9IFVJTlRfTUFYCiB9IERyYWdPcGVyYXRpb247CiAKK2NvbnN0ZXhwciBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gYW55RHJhZ09wZXJhdGlvbigpCit7CisgICAgcmV0dXJuIHsgRHJh
Z09wZXJhdGlvbkNvcHksIERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2VuZXJpYywg
RHJhZ09wZXJhdGlvblByaXZhdGUsIERyYWdPcGVyYXRpb25Nb3ZlLCBEcmFnT3BlcmF0aW9uRGVs
ZXRlIH07Cit9CisKIGVudW0gY2xhc3MgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gOiBib29sIHsgTm8s
IFllcyB9OwogZW51bSBjbGFzcyBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgOiBib29sIHsg
Tm8sIFllcyB9OwogZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50OF90IHsgTm9u
ZSwgRWRpdFBsYWluVGV4dCwgRWRpdFJpY2hUZXh0LCBVcGxvYWRGaWxlLCBQYWdlTG9hZCwgU2V0
Q29sb3IsIE5vbkRlZmF1bHQgfTsKQEAgLTkzLDYgKzk2LDE4IEBAIHRlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kPiB7CiAgICAgPjsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gewor
ICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24sCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5LAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uTGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdl
bmVyaWMsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlLAorICAgICAgICBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkRlbGV0ZQorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8
V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gT3B0
aW9uU2V0VmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sCkBA
IC0xMDIsNCArMTE3LDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBz
dHJ1Y3QgT3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24sCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5LAorICAgICAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVy
aWMsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uTW92ZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRl
bGV0ZQorICAgID47Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKaW5kZXggZTNhODkwMWE0ODUuLmQ5NGFkNzZjNzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQg
RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbmRlZCgpCiAgICAgY2xpZW50KCkuZHJhZ0VuZGVkKCk7CiB9
CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpk
cmFnRW50ZXJlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgcmV0dXJuIGRyYWdF
bnRlcmVkT3JVcGRhdGVkKGRyYWdEYXRhKTsKIH0KQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIERy
YWdDb250cm9sbGVyOjpkcmFnRXhpdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICBt
X2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKIH0KIAotRHJhZ09wZXJhdGlv
biBEcmFnQ29udHJvbGxlcjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQor
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdVcGRhdGVkKGNvbnN0
IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQo
ZHJhZ0RhdGEpOwogfQpAQCAtMjc4LDcgKzI3OCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnBl
cmZvcm1EcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICBtX2RvY3Vt
ZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CiAgICAgY2xlYXJEcmFnQ2FyZXQoKTsKIAotICAgIGlm
IChvcGVyYXRpb25Gb3JMb2FkKGRyYWdEYXRhKSA9PSBEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICBp
ZiAoIW9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBhdXRvIHVybFN0cmluZyA9IGRyYWdEYXRhLmFzVVJMKCk7CkBAIC0zMDQsMjEgKzMwNCwy
MSBAQCB2b2lkIERyYWdDb250cm9sbGVyOjptb3VzZU1vdmVkSW50b0RvY3VtZW50KERvY3VtZW50
KiBuZXdEb2N1bWVudCkKICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IG5ld0RvY3VtZW50Owog
fQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQog
ewogICAgIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50
QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKSk7CiAKICAgICBtX2RyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKCk7CiAg
ICAgaWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5pc0VtcHR5KCkpIHsKICAgICAgICAg
Y2xlYXJEcmFnQ2FyZXQoKTsgLy8gRklYTUU6IFdoeSBub3QgY2FsbCBtb3VzZU1vdmVkSW50b0Rv
Y3VtZW50KG51bGxwdHIpPwotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgRHJhZ09wZXJhdGlvbiBkcmFn
T3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gZHJhZ09wZXJhdGlvbjsKICAgICBtX2RyYWdIYW5kbGluZ01ldGhvZCA9IHRyeURvY3VtZW50
RHJhZyhkcmFnRGF0YSwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLCBkcmFnT3BlcmF0aW9u
KTsKICAgICBpZiAobV9kcmFnSGFuZGxpbmdNZXRob2QgPT0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpO
b25lICYmIChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2suY29udGFpbnMoRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uOjpMb2FkKSkpIHsKICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wZXJhdGlvbkZv
ckxvYWQoZHJhZ0RhdGEpOwotICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbiAhPSBEcmFnT3BlcmF0
aW9uTm9uZSkKKyAgICAgICAgaWYgKGRyYWdPcGVyYXRpb24pCiAgICAgICAgICAgICBtX2RyYWdI
YW5kbGluZ01ldGhvZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6UGFnZUxvYWQ7CiAgICAgfSBlbHNl
IGlmIChtX2RyYWdIYW5kbGluZ01ldGhvZCA9PSBEcmFnSGFuZGxpbmdNZXRob2Q6OlNldENvbG9y
KQogICAgICAgICBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CkBAIC0zODgsNyAr
Mzg4LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZp
ZXJzRm9yRHJhZ0hhbmRsaW5nTWV0aG9kKERyYWdIYW4KIAogI2VuZGlmCiAKLURyYWdIYW5kbGlu
Z01ldGhvZCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rp
b25NYXNrLCBEcmFnT3BlcmF0aW9uJiBkcmFnT3BlcmF0aW9uKQorRHJhZ0hhbmRsaW5nTWV0aG9k
IERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ss
IE9wdGlvbmFsPERyYWdPcGVyYXRpb24+JiBkcmFnT3BlcmF0aW9uKQogewogICAgIGlmICghbV9k
b2N1bWVudFVuZGVyTW91c2UpCiAgICAgICAgIHJldHVybiBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5v
bmU7CkBAIC00NTgsNyArNDU4LDcgQEAgRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVy
Ojp0cnlEb2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHQKICAgICAgICAg
ICAgICAgICBtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQgPSAxOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAoIW1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCkKLSAgICAgICAgICAg
ICAgICBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgICAgICAgICAg
ZHJhZ09wZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgIG1fZmlsZUlucHV0RWxl
bWVudFVuZGVyTW91c2UtPnNldENhblJlY2VpdmVEcm9wcGVkRmlsZXMobV9udW1iZXJPZkl0ZW1z
VG9CZUFjY2VwdGVkKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBu
b3Qgb3ZlciBhIGZpbGUgaW5wdXQgZWxlbWVudC4gVGhlIGRyYWdnZWQgaXRlbShzKSB3aWxsIGxv
YWRlZCBpbnRvIHRoZSB2aWV3LApAQCAtNDg5LDcgKzQ4OSw3IEBAIERyYWdTb3VyY2VBY3Rpb24g
RHJhZ0NvbnRyb2xsZXI6OmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYg
cm9vdFZpCiAgICAgcmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsKIH0KIAotRHJhZ09wZXJhdGlv
biBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9y
TG9hZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3Np
dGlvbigpKTsKIApAQCAtNTA0LDcgKzUwNCw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xs
ZXI6Om9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIH0KIAog
ICAgIGlmIChkb2N1bWVudCAmJiAobV9kaWRJbml0aWF0ZURyYWcgfHwgKGlzPFBsdWdpbkRvY3Vt
ZW50PigqZG9jdW1lbnQpICYmICFwbHVnaW5Eb2N1bWVudEFjY2VwdHNEcmFncykgfHwgZG9jdW1l
bnQtPmhhc0VkaXRhYmxlU3R5bGUoKSkpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gZHJhZ09wZXJhdGlv
bihkcmFnRGF0YSk7CiB9CiAKQEAgLTY5MywyOCArNjkzLDI4IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OmNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWco
RHJhZ09wZXJhdGlvbiBzcmNPcE1hc2spCitzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9w
ZXJhdGlvbk1hc2spCiB7CiAgICAgLy8gVGhpcyBpcyBkZXNpZ25lZCB0byBtYXRjaCBJRSdzIG9w
ZXJhdGlvbiBmYWxsYmFjayBmb3IgdGhlIGNhc2Ugd2hlcmUKICAgICAvLyB0aGUgcGFnZSBjYWxs
cyBwcmV2ZW50RGVmYXVsdCgpIGluIGEgZHJhZyBldmVudCBidXQgZG9lc24ndCBzZXQgZHJvcEVm
ZmVjdC4KLSAgICBpZiAoc3JjT3BNYXNrID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBpZiAo
c291cmNlT3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkpCiAgICAgICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uQ29weTsKLSAgICBpZiAoc3JjT3BNYXNrID09IERyYWdPcGVyYXRpb25O
b25lKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7Ci0gICAgaWYgKHNyY09wTWFz
ayAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoc291cmNlT3BlcmF0
aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTW92ZTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMp
CisgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkdlbmVy
aWMpKQogICAgICAgICByZXR1cm4gRHJhZ0NvbnRyb2xsZXI6OnBsYXRmb3JtR2VuZXJpY0RyYWdP
cGVyYXRpb24oKTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAg
aWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdP
cGVyYXRpb25MaW5rKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25MaW5rKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOwogICAgIAog
ICAgIC8vIEZJWE1FOiBEb2VzIElFIHJlYWxseSByZXR1cm4gImdlbmVyaWMiIGV2ZW4gaWYgbm8g
b3BlcmF0aW9ucyB3ZXJlIGFsbG93ZWQgYnkgdGhlIHNvdXJjZT8KICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbkdlbmVyaWM7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24mIG9wZXJhdGlvbikKK2Jvb2wg
RHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9w
dGlvbmFsPERyYWdPcGVyYXRpb24+JiBvcGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1l
bnRVbmRlck1vdXNlKTsKICAgICBSZWY8RnJhbWU+IG1haW5GcmFtZShtX3BhZ2UubWFpbkZyYW1l
KCkpOwpAQCAtNzIyLDE3ICs3MjIsMTcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxE
cmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYgb3BlcmEKICAgICBp
ZiAoIXZpZXdQcm90ZWN0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIERyYWdPcGVy
YXRpb24gc291cmNlT3BlcmF0aW9uID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKCk7Ci0gICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVy
KCkudXBkYXRlRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFsmZHJhZ0Rh
dGFdKCkgeyByZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEp
OyB9LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7CisgICAgYXV0
byBzb3VyY2VPcGVyYXRpb25NYXNrID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKCk7CisgICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVy
KCkudXBkYXRlRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFsmZHJhZ0Rh
dGFdKCkgeyByZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEp
OyB9LCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnRGF0YS5jb250YWluc0ZpbGVzKCkpOwogICAg
IGlmICghdGFyZ2V0UmVzcG9uc2UuYWNjZXB0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbikKLSAgICAgICAgb3BlcmF0aW9uID0gZGVm
YXVsdE9wZXJhdGlvbkZvckRyYWcoc291cmNlT3BlcmF0aW9uKTsKLSAgICBlbHNlIGlmICghKHNv
dXJjZU9wZXJhdGlvbiAmIHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbi52YWx1ZSgpKSkgLy8gVGhl
IGVsZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo
ZSBzb3VyY2UKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgaWYg
KCF0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrKQorICAgICAgICBvcGVyYXRpb24gPSBkZWZh
dWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBlbHNlIGlmICgh
c291cmNlT3BlcmF0aW9uTWFzay5jb250YWluc0FueSh0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25N
YXNrLnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3BlcmF0aW9uIHdoaWNoIGlz
IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZQorICAgICAgICBvcGVyYXRpb24gPSBXVEY6Om51
bGxvcHQ7CiAgICAgZWxzZQotICAgICAgICBvcGVyYXRpb24gPSB0YXJnZXRSZXNwb25zZS5vcGVy
YXRpb24udmFsdWUoKTsKKyAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRy
YWcodGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzay52YWx1ZSgpKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtODk5LDcgKzg5OSw3IEBAIHN0YXRpYyBJbnRQb2ludCBkcmFnTG9jRm9yU2Vs
ZWN0aW9uRHJhZyhGcmFtZSYgc3JjKQogICAgIHJldHVybiBJbnRQb2ludCh4cG9zLCB5cG9zKTsK
IH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERy
YWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVs
dFBhc3RlYm9hcmREYXRhIGhhc0RhdGEpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWco
RnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2
ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmRE
YXRhIGhhc0RhdGEpCiB7CiAgICAgaWYgKCFzcmMudmlldygpIHx8ICFzcmMuY29udGVudFJlbmRl
cmVyKCkgfHwgIXN0YXRlLnNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTIyLDcg
KzkyMiw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgSW50UG9pbnQgbW91c2VEcmFn
Z2VkUG9pbnQgPSBzcmMudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3NpdGlv
bigpKTsKIAogICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IFVSTCgpOwotICAgIG1fc291cmNlRHJh
Z09wZXJhdGlvbiA9IHNyY09wOworICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2sgPSBzb3Vy
Y2VPcGVyYXRpb25NYXNrOwogCiAgICAgRHJhZ0ltYWdlIGRyYWdJbWFnZTsKICAgICBJbnRQb2lu
dCBkcmFnTG9jKDAsIDApOwpAQCAtOTQ1LDcgKzk0NSw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6
OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0
aW9uCiAgICAgICAgIC8vIFNlbGVjdGlvbiwgaW1hZ2UsIGFuZCBsaW5rIGRyYWdzIHJlY2VpdmUg
YSBkZWZhdWx0IHNldCBvZiBhbGxvd2VkIGRyYWcgb3BlcmF0aW9ucyB0aGF0CiAgICAgICAgIC8v
IGZvbGxvd3MgZnJvbToKICAgICAgICAgLy8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2Vy
L3RydW5rL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbT9yZXY9NDg1MjYjTDM0MzAK
LSAgICAgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlv
bj4obV9zb3VyY2VEcmFnT3BlcmF0aW9uIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3Bl
cmF0aW9uQ29weSk7CisgICAgICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2suYWRkKHsgRHJh
Z09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Db3B5IH0pOwogICAgIH0KIAogICAgIEFT
U0VSVChzdGF0ZS5zb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4
IDk1N2ZhYjEwZjYwLi4yOWY2ODhjYjFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuaApAQCAtNTgsOSArNTgsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRHJhZ09wZXJhdGlv
biBwbGF0Zm9ybUdlbmVyaWNEcmFnT3BlcmF0aW9uKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBE
cmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0RhdGEm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdFeGl0ZWQoY29uc3QgRHJhZ0RhdGEmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGRyYWdVcGRhdGVkKGNvbnN0IERyYWdE
YXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ1Vw
ZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBlcmZvcm1E
cmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmFnQ2FuY2VsbGVkKCk7CiAKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIC8vIGRyYWcg
bG9naWMgaXMgaW4gV2ViQ29yZS4KICAgICB2b2lkIHNldERpZEluaXRpYXRlRHJhZyhib29sIGlu
aXRpYXRlZCkgeyBtX2RpZEluaXRpYXRlRHJhZyA9IGluaXRpYXRlZDsgfQogICAgIGJvb2wgZGlk
SW5pdGlhdGVEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9kaWRJbml0aWF0ZURyYWc7IH0KLSAgICBE
cmFnT3BlcmF0aW9uIHNvdXJjZURyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZURyYWdPcGVyYXRpb247IH0KKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlRHJh
Z09wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNr
OyB9CiAgICAgY29uc3QgVVJMJiBkcmFnZ2luZ0ltYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9k
cmFnZ2luZ0ltYWdlVVJMOyB9CiAgICAgdm9pZCBzZXREcmFnT2Zmc2V0KGNvbnN0IEludFBvaW50
JiBvZmZzZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgY29uc3QgSW50UG9pbnQm
IGRyYWdPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2RyYWdPZmZzZXQ7IH0KQEAgLTkzLDcgKzkz
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluYWxpemVEcm9wcGVkSW1h
Z2VQbGFjZWhvbGRlcihIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRT
aXplPiYgaW1hZ2VTaXplcyk7CiAKLSAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQ
YXN0ZWJvYXJkRGF0YSk7CisgICAgYm9vbCBzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJh
Z1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQ
YXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNvbnN0IEludFNpemUmIG1heERyYWdJbWFnZVNp
emUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4T3JpZ2luYWxJbWFnZUFyZWE7CkBAIC0x
MDYsMTEgKzEwNiwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzcGF0Y2hUZXh0SW5wdXRFdmVu
dEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7CiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZyhj
b25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY29uY2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0
YSYpOwotICAgIERyYWdPcGVyYXRpb24gZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0Rh
dGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEm
KTsKLSAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRh
JiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4sIERyYWdPcGVyYXRpb24mKTsKLSAg
ICBib29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYsIERyYWdPcGVyYXRpb24mKTsKLSAg
ICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBEcmFnRGF0YSYp
OworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJh
Z0RhdGEmKTsKKyAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERy
YWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4sIE9wdGlvbmFsPERyYWdP
cGVyYXRpb24+Jik7CisgICAgYm9vbCB0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmLCBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiYpOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdP
cGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAgICB2b2lkIGNsZWFyRHJhZ0NhcmV0KCk7CiAg
ICAgYm9vbCBkcmFnSXNNb3ZlKEZyYW1lU2VsZWN0aW9uJiwgY29uc3QgRHJhZ0RhdGEmKTsKICAg
ICBib29sIGlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmKTsKQEAgLTE1Miw3ICsxNTIsNyBA
QCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFzazsKICAgICBEcmFnU291cmNlQWN0aW9uIG1fZHJhZ1NvdXJjZUFj
dGlvbiB7IERyYWdTb3VyY2VBY3Rpb25Ob25lIH07CiAgICAgYm9vbCBtX2RpZEluaXRpYXRlRHJh
ZyB7IGZhbHNlIH07Ci0gICAgRHJhZ09wZXJhdGlvbiBtX3NvdXJjZURyYWdPcGVyYXRpb24geyBE
cmFnT3BlcmF0aW9uTm9uZSB9OyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0
cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2ViS2l0CisgICAgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2s7IC8vIFNldCBpbiBzdGFydERyYWcgd2hl
biBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBkb3duIHdpdGhpbiBXZWJLaXQuCiAgICAgSW50
UG9pbnQgbV9kcmFnT2Zmc2V0OwogICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAgYm9v
bCBtX2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCmluZGV4IDRjNmZiOTVlNmMwLi44ZTdjMTY5MTdlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcApAQCAtMjMzNCw3ICsyMzM0LDcgQEAgc3RhdGljIGJvb2wgdGFyZ2V0
SXNGcmFtZShOb2RlKiB0YXJnZXQsIEZyYW1lKiYgZnJhbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09w
ZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPcGVyYXRpb24pCitzdGF0aWMgT3B0aW9uYWw8RHJh
Z09wZXJhdGlvbj4gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0
IFN0cmluZyYgZHJhZ09wZXJhdGlvbikKIHsKICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAiY29w
eSIpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKQEAgLTIzNDIsMjEgKzIzNDIs
MjQgQEAgc3RhdGljIERyYWdPcGVyYXRpb24gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFn
T3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ08KICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b25Nb3ZlOwogICAgIGlmIChkcmFnT3BlcmF0aW9uID09ICJsaW5rIikKICAgICAgICAgcmV0dXJu
IERyYWdPcGVyYXRpb25MaW5rOwotICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0aWMgU3RyaW5nIGNvbnZlcnREcmFnT3BlcmF0
aW9uVG9Ecm9wWm9uZU9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBT
dHJpbmcgY29udmVydERyYWdPcGVyYXRpb25Ub0Ryb3Bab25lT3BlcmF0aW9uKE9wdGlvbmFsPERy
YWdPcGVyYXRpb24+IG9wZXJhdGlvbikKIHsKLSAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewotICAg
IGNhc2UgRHJhZ09wZXJhdGlvbkNvcHk6Ci0gICAgICAgIHJldHVybiAiY29weSJfczsKLSAgICBj
YXNlIERyYWdPcGVyYXRpb25Nb3ZlOgotICAgICAgICByZXR1cm4gIm1vdmUiX3M7Ci0gICAgY2Fz
ZSBEcmFnT3BlcmF0aW9uTGluazoKLSAgICAgICAgcmV0dXJuICJsaW5rIl9zOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiAiY29weSJfczsKKyAgICBpZiAob3BlcmF0aW9uKSB7CisgICAg
ICAgIHN3aXRjaCAoKm9wZXJhdGlvbikgeworICAgICAgICBjYXNlIERyYWdPcGVyYXRpb25Db3B5
OgorICAgICAgICAgICAgcmV0dXJuICJjb3B5Il9zOworICAgICAgICBjYXNlIERyYWdPcGVyYXRp
b25Nb3ZlOgorICAgICAgICAgICAgcmV0dXJuICJtb3ZlIl9zOworICAgICAgICBjYXNlIERyYWdP
cGVyYXRpb25MaW5rOgorICAgICAgICAgICAgcmV0dXJuICJsaW5rIl9zOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuICJj
b3B5Il9zOwogfQogCiBzdGF0aWMgYm9vbCBoYXNEcm9wWm9uZVR5cGUoRGF0YVRyYW5zZmVyJiBk
YXRhVHJhbnNmZXIsIGNvbnN0IFN0cmluZyYga2V5d29yZCkKQEAgLTIzNzYsMTUgKzIzNzksMTUg
QEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5vZGUmIHRhcmdldCwgRGF0YVRyYW5zZmVyJiBk
YXRhVHJhbnNmZXIpCiAgICAgZm9yICg7IGVsZW1lbnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJl
bnRFbGVtZW50KCkpIHsKICAgICAgICAgU3BhY2VTcGxpdFN0cmluZyBrZXl3b3JkcyhlbGVtZW50
LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHdlYmtpdGRyb3B6b25lQXR0ciksIHRy
dWUpOwogICAgICAgICBib29sIG1hdGNoZWQgPSBmYWxzZTsKLSAgICAgICAgRHJhZ09wZXJhdGlv
biBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIE9wdGlvbmFsPERy
YWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb247CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAs
IHNpemUgPSBrZXl3b3Jkcy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIERy
YWdPcGVyYXRpb24gb3AgPSBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24o
a2V5d29yZHNbaV0pOwotICAgICAgICAgICAgaWYgKG9wICE9IERyYWdPcGVyYXRpb25Ob25lKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUp
Ci0gICAgICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBvcDsKKyAgICAgICAgICAgIGF1
dG8gb3BlcmF0aW9uRnJvbUtleXdvcmQgPSBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdP
cGVyYXRpb24oa2V5d29yZHNbaV0pOworICAgICAgICAgICAgaWYgKG9wZXJhdGlvbkZyb21LZXl3
b3JkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQorICAgICAgICAgICAg
ICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3BlcmF0aW9uRnJvbUtleXdvcmQ7CiAgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2hlZCB8fCBoYXNEcm9wWm9u
ZVR5cGUoZGF0YVRyYW5zZmVyLCBrZXl3b3Jkc1tpXS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICBp
ZiAobWF0Y2hlZCAmJiBkcmFnT3BlcmF0aW9uICE9IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAg
ICAgICAgaWYgKG1hdGNoZWQgJiYgZHJhZ09wZXJhdGlvbikKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBpZiAobWF0Y2hlZCkgewpAQCAtMjM5NiwxOSArMjM5OSwx
OSBAQCBzdGF0aWMgYm9vbCBmaW5kRHJvcFpvbmUoTm9kZSYgdGFyZ2V0LCBEYXRhVHJhbnNmZXIm
IGRhdGFUcmFuc2ZlcikKIH0KIAogRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZl
bnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBE
cmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7Ci0gICAg
YXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRh
cmdldCh0YXJnZXQuZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0
aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3Zl
KHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICBi
b29sIGFjY2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50VHlwZSwgdGFyZ2V0LCBldmVudCwg
ZGF0YVRyYW5zZmVyLmdldCgpKTsKICAgICBpZiAoIWFjY2VwdCkKICAgICAgICAgYWNjZXB0ID0g
ZmluZERyb3Bab25lKHRhcmdldCwgZGF0YVRyYW5zZmVyKTsKICAgICBkYXRhVHJhbnNmZXItPm1h
a2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICBpZiAoYWNjZXB0ICYmICFkYXRhVHJhbnNmZXIt
PmRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgdHJ1ZSwgZGF0
YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlvbigpIH07CisgICAgICAgIHJldHVybiB7IHRy
dWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb25NYXNrKCkgfTsKICAgICByZXR1
cm4geyBhY2NlcHQsIFdURjo6bnVsbG9wdCB9OwogfQogCi1FdmVudEhhbmRsZXI6OkRyYWdUYXJn
ZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+KCk+JiBtYWtlUGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRp
b24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK0V2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNl
IEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4o
KT4mIG1ha2VQYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0
aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVk
RnJhbWUobV9mcmFtZSk7CiAgICAgaWYgKCFtX2ZyYW1lLnZpZXcoKSkKQEAgLTI0MzgsMTkgKzI0
NDEsMTkgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1
cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU0KICAgICAgICAgRnJhbWUqIHRhcmdldEZy
YW1lOwogICAgICAgICBpZiAodGFyZ2V0SXNGcmFtZShuZXdUYXJnZXQuZ2V0KCksIHRhcmdldEZy
YW1lKSkgewogICAgICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgICAgIHJl
c3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2
ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAg
ICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRh
dGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ss
IGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9IGVsc2UgaWYgKG5ld1RhcmdldCkgewogICAgICAg
ICAgICAgLy8gQXMgcGVyIHNlY3Rpb24gNy45LjQgb2YgdGhlIEhUTUwgNSBzcGVjLiwgd2UgbXVz
dCBhbHdheXMgZmlyZSBhIGRyYWcgZXZlbnQgYmVmb3JlIGZpcmluZyBhIGRyYWdlbnRlciwgZHJh
Z2xlYXZlLCBvciBkcmFnb3ZlciBldmVudC4KICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0Ry
YWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAg
ICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1l
cygpLmRyYWdlbnRlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwg
c291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0g
ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2
ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9u
TWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGFyZ2V0SXNG
cmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAgLy8g
RklYTUU6IFJlY3Vyc2luZyBhZ2FpbiBoZXJlIGRvZXNuJ3QgbWFrZSBzZW5zZSBpZiB0aGUgbmV3
VGFyZ2V0IGFuZCBtX2RyYWdUYXJnZXQgd2VyZSBpbiB0aGUgc2FtZSBmcmFtZS4KICAgICAgICAg
ICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9h
cmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVz
cG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZl
bnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsK
ICAgICAgICAgfSBlbHNlIGlmIChtX2RyYWdUYXJnZXQpIHsKLSAgICAgICAgICAgIGF1dG8gZGF0
YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9k
cmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24s
IGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50
KCksIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMp
OwogICAgICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2
ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyLmdldCgpKTsKICAgICAgICAg
ICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgICAgICB9CkBA
IC0yNDY0LDEyICsyNDY3LDEyIEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2
ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZy
YW1lKiB0YXJnZXRGcmFtZTsKICAgICAgICAgaWYgKHRhcmdldElzRnJhbWUobmV3VGFyZ2V0Lmdl
dCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAg
ICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVE
cmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dp
bmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRI
YW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VP
cGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJn
ZXQpIHsKICAgICAgICAgICAgIC8vIE5vdGUsIHdoZW4gZGVhbGluZyB3aXRoIHN1Yi1mcmFtZXMs
IHdlIG1heSBuZWVkIHRvIGZpcmUgb25seSBhIGRyYWdvdmVyIGV2ZW50IGFzIGEgZHJhZyBldmVu
dCBtYXkgaGF2ZSBiZWVuIGZpcmVkIGVhcmxpZXIuCiAgICAgICAgICAgICBpZiAoIW1fc2hvdWxk
T25seUZpcmVEcmFnT3ZlckV2ZW50KQogICAgICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0Ry
YWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAg
ICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1l
cygpLmRyYWdvdmVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBz
b3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBk
aXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVu
dCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbk1h
c2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICAgICAgbV9zaG91bGRPbmx5RmlyZURyYWdPdmVy
RXZlbnQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI0NzcsMjUgKzI0ODAsMjUgQEAg
RXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFn
QW5kRHJvcChjb25zdCBQbGF0Zm9ybU0KICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKLXZvaWQg
RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3Bl
cmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQordm9pZCBFdmVudEhh
bmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQs
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAg
ICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKIAogICAgIEZyYW1lKiB0YXJn
ZXRGcmFtZTsKICAgICBpZiAodGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdl
dEZyYW1lKSkgewogICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICB0YXJnZXRG
cmFtZS0+ZXZlbnRIYW5kbGVyKCkuY2FuY2VsRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFz
dGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICB0
YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuY2FuY2VsRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1v
dmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAg
IH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7CiAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdT
b3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKIAotICAgICAgICBh
dXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFy
Z2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNl
T3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRv
Y3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdn
aW5nRmlsZXMpOwogICAgICAgICBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xl
YXZlRXZlbnQsICptX2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAg
ICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICB9CiAgICAg
Y2xlYXJEcmFnU3RhdGUoKTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5k
RHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9v
bCBkcmFnZ2luZ0ZpbGVzKQorYm9vbCBFdmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9u
TWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJh
bWUobV9mcmFtZSk7CiAKQEAgLTI1MDMsOSArMjUwNiw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpw
ZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1
bmlxCiAgICAgYm9vbCBwcmV2ZW50ZWREZWZhdWx0ID0gZmFsc2U7CiAgICAgaWYgKHRhcmdldElz
RnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRh
cmdldEZyYW1lKQotICAgICAgICAgICAgcHJldmVudGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5l
dmVudEhhbmRsZXIoKS5wZXJmb3JtRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2Fy
ZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICBwcmV2ZW50
ZWREZWZhdWx0ID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJv
cChldmVudCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dp
bmdGaWxlcyk7CiAgICAgfSBlbHNlIGlmIChtX2RyYWdUYXJnZXQpIHsKLSAgICAgICAgYXV0byBk
YXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5k
b2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5n
RmlsZXMpOworICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRl
Rm9yRHJvcChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNv
dXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICBwcmV2ZW50ZWREZWZh
dWx0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyb3BFdmVudCwgKm1fZHJhZ1Rh
cmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlcik7CiAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUlu
dmFsaWRGb3JTZWN1cml0eSgpOwogICAgIH0KQEAgLTM3MjksMTMgKzM3MzIsMTMgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZygpCiAjZW5kaWYKIH0KIAotdm9pZCBFdmVudEhhbmRs
ZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERy
YWdPcGVyYXRpb24gb3BlcmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFn
U2Vzc2lvbikKK3ZvaWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJh
dGlvbk1hc2ssIE1heUV4dGVuZERyYWdTZXNzaW9uIG1heUV4dGVuZERyYWdTZXNzaW9uKQogewog
ICAgIC8vIFNlbmQgYSBoaXQgdGVzdCByZXF1ZXN0IHNvIHRoYXQgUmVuZGVyTGF5ZXIgZ2V0cyBh
IGNoYW5jZSB0byB1cGRhdGUgdGhlIDpob3ZlciBhbmQgOmFjdGl2ZSBwc2V1ZG9jbGFzc2VzLgog
ICAgIHByZXBhcmVNb3VzZUV2ZW50KE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5
cGU+IHsgSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2UsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1Vz
ZXJBZ2VudFNoYWRvd0NvbnRlbnQgfSwgZXZlbnQpOwogCiAgICAgaWYgKHNob3VsZERpc3BhdGNo
RXZlbnRzVG9EcmFnU291cmNlRWxlbWVudCgpKSB7Ci0gICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFU
cmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRpb24ob3BlcmF0aW9uKTsKKyAgICAgICAgZHJh
Z1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soZHJhZ09w
ZXJhdGlvbk1hc2spOwogICAgICAgICBkaXNwYXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChl
dmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVudCk7CiAgICAgfQogICAgIGludmFsaWRhdGVE
YXRhVHJhbnNmZXIoKTsKQEAgLTM4NjMsNyArMzg2Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVj
a0RyCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRoZSBoeXN0ZXJlc2lzIHBvaW50LCB3ZSBkb24n
dCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBhcyBhIGNsaWNrCiAgICAgaW52YWxpZGF0ZUNs
aWNrKCk7CiAgICAgCi0gICAgRHJhZ09wZXJhdGlvbiBzcmNPcCA9IERyYWdPcGVyYXRpb25Ob25l
OyAgICAgIAorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
OwogICAgIAogICAgIC8vIFRoaXMgZG9lcyB3b3JrIG9ubHkgaWYgd2UgbWlzc2VkIGEgZHJhZ0Vu
ZC4gRG8gaXQgYW55d2F5LCBqdXN0IHRvIG1ha2Ugc3VyZSB0aGUgb2xkIGRhdGFUcmFuc2ZlciBn
ZXRzIG51bWJlZC4KICAgICAvLyBGSVhNRTogQ29uc2lkZXIgZG9pbmcgdGhpcyBlYXJsaWVyIGlu
IHRoaXMgZnVuY3Rpb24gYXMgdGhlIGVhcmxpZXN0IHBvaW50IHdlJ3JlIHN1cmUgaXQgd291bGQg
YmUgc2FmZSB0byBkcm9wIGFuIG9sZCBkcmFnLgpAQCAtMzg5OCw3ICszOTAxLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQsIENoZWNrRHIKIAogICAgICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcp
IHsKICAgICAgICAgICAgIC8vIEdhdGhlciB2YWx1ZXMgZnJvbSBESFRNTCBlbGVtZW50LCBpZiBp
dCBzZXQgYW55LgotICAgICAgICAgICAgc3JjT3AgPSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXIt
PnNvdXJjZU9wZXJhdGlvbigpOworICAgICAgICAgICAgc291cmNlT3BlcmF0aW9uTWFzayA9IGRy
YWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICAvLyBZdWNrLCBhIGRyYWdnZWRJbWFnZTptb3ZlVG86IG1lc3NhZ2Ug
Y2FuIGJlIGZpcmVkIGFzIGEgcmVzdWx0IG9mIGtpY2tpbmcgb2ZmIHRoZQogICAgICAgICAgICAg
Ly8gZHJhZyB3aXRoIGRyYWdJbWFnZSEgQmVjYXVzZSBvZiB0aGF0IGR1bWIgcmVlbnRyYW5jeSwg
d2UgbWF5IHRoaW5rIHdlJ3ZlIG5vdApAQCAtMzkwOSw3ICszOTEyLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZl
bnQsIENoZWNrRHIKICAgICAKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcpIHsKICAg
ICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwotICAgICAgICBtX2RpZFN0YXJ0RHJh
ZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWcobV9mcmFtZSwgZHJh
Z1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgpLCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRp
b24sIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CisgICAgICAgIG1fZGlkU3RhcnREcmFn
ID0gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFn
U3RhdGUoKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25D
b250ZW50c1Bvc2l0aW9uLCBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgICAgICAv
LyBJbiBXZWJLaXQyIHdlIGNvdWxkIHJlLWVudGVyIHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhl
ciBkcmFnLgogICAgICAgICAvLyBPbiBPUyBYIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhl
IG93bmVyc2hpcCBvZiB0aGUgcGFzdGVib2FyZCBhbmQgdGhlIHByb21pc2VkIHR5cGVzLgogICAg
ICAgICBpZiAobV9kaWRTdGFydERyYWcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmlu
ZGV4IDZmZmM4M2MwMTJmLi4yN2NhZTYxZWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCkBAIC0xNjMsMTEgKzE2MywxMSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKICAgICBzdHJ1Y3QgRHJhZ1RhcmdldFJlc3BvbnNlIHsKICAgICAgICAgYm9vbCBhY2NlcHQg
eyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb247Cisg
ICAgICAgIE9wdGlvbmFsPE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPj4gb3BlcmF0aW9uTWFzazsK
ICAgICB9OwotICAgIERyYWdUYXJnZXRSZXNwb25zZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPigpPiYsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdn
aW5nRmlsZXMpOwotICAgIHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJv
b2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVy
YXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgRHJhZ1RhcmdldFJlc3BvbnNlIHVwZGF0
ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IHN0ZDo6ZnVuY3Rp
b248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+LCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBib29sIHBl
cmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4mJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5n
RmlsZXMpOwogICAgIHZvaWQgdXBkYXRlRHJhZ1N0YXRlQWZ0ZXJFZGl0RHJhZ0lmTmVlZGVkKEVs
ZW1lbnQmIHJvb3RFZGl0YWJsZUVsZW1lbnQpOwogICAgIFJlZlB0cjxFbGVtZW50PiBkcmFnZ2Vk
RWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGljOgogICAg
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFn
U291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBEcmFnT3BlcmF0aW9uLCBN
YXlFeHRlbmREcmFnU2Vzc2lvbiA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpObyk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIE1heUV4dGVuZERyYWdTZXNzaW9uID0gTWF5
RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKTsKICNlbmRpZgogCiAgICAgdm9pZCBmb2N1c0RvY3VtZW50
VmlldygpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQogICAgIGJvb2wgZGlzcGF0Y2hEcmFnRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERhdGFU
cmFuc2ZlciYpOwotICAgIERyYWdUYXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJh
Z092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYg
LCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIERyYWdUYXJnZXRSZXNw
b25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJv
b2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgdm9pZCBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAK
ICAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYs
IENoZWNrRHJhZ0h5c3RlcmVzaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9n
dGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0Nv
bnRyb2xsZXJHdGsuY3BwCmluZGV4IDdkMDUyY2ZlMThhLi5mODZlYTQzNTZmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcApAQCAtNTAsMTMgKzUw
LDEzIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEm
IGRyYWdEYXRhKQogICAgIHJldHVybiBkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9u
SXNDb3B5S2V5RG93bjsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09w
ZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9u
PiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0ZQogICAgIGlmIChkcmFn
RGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAK
LSAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IH0KIAogY29uc3QgSW50U2l6ZSYgRHJhZ0NvbnRyb2xsZXI6Om1heERyYWdJbWFnZVNpemUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCA4NWJk
NDhhY2MyMi4uODk3MTRjZTU0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdD
b250cm9sbGVyTWFjLm1tCkBAIC02NCwxMCArNjQsMTAgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6
aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgcmV0dXJuIGRyYWdE
YXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25Jc0NvcHlLZXlEb3duOwogfQogICAgIAotRHJh
Z09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09w
ZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKGRyYWdEYXRhLmZs
YWdzKCkgJiBEcmFnQXBwbGljYXRpb25Jc01vZGFsKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbk5vbmU7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBib29sIG1heUNv
bnRhaW5VUkw7CiAgICAgaWYgKGNhbkxvYWREYXRhRnJvbURyYWdnaW5nUGFzdGVib2FyZCgpKQpA
QCAtNzYsMTIgKzc2LDEyIEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVy
YXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICBtYXlDb250YWluVVJMID0g
ZHJhZ0RhdGEuY29udGFpbnNVUkxUeXBlSWRlbnRpZmllcigpOwogCiAgICAgaWYgKCFtYXlDb250
YWluVVJMICYmICFkcmFnRGF0YS5jb250YWluc1Byb21pc2UoKSkKLSAgICAgICAgcmV0dXJuIERy
YWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgaWYg
KCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCAoIShkcmFnRGF0YS5mbGFncygpICYgKERyYWdBcHBs
aWNhdGlvbkhhc0F0dGFjaGVkU2hlZXQgfCBEcmFnQXBwbGljYXRpb25Jc1NvdXJjZSkpKSkKICAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwogCi0gICAgcmV0dXJuIERyYWdPcGVyYXRp
b25Ob25lOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEludFNpemUmIERy
YWdDb250cm9sbGVyOjptYXhEcmFnSW1hZ2VTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
d2luL0RyYWdDb250cm9sbGVyV2luLmNwcAppbmRleCAyZDQ2ZDZiMjNlYS4uYjcxNjU3YzJhYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKQEAg
LTQyLDEzICs0MiwxMyBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29uQm90dG9t
SW5zZXQgPSAzOwogCiBjb25zdCBmbG9hdCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ltYWdlQWxwaGEg
PSAwLjc1ZjsKIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAg
Ly9GSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIERy
YWdPcGVyYXRpb25Ob25lCisgICAgLy9GSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91
ciB3ZSBzaG91bGQgcmV0dXJuIFdURjo6bnVsbG9wdC4KICAgICAvL2lmIHdlIGFyZSBhIG1vZGFs
IHdpbmRvdywgd2UgYXJlIHRoZSBkcmFnIHNvdXJjZSwgb3IgdGhlIHdpbmRvdyBpcyBhbiBhdHRh
Y2hlZCBzaGVldAogICAgIC8vSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBX
ZWJDb3JlIG9wZXJhdGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvIAogICAgIC8vV2ViQ29y
ZSBpdHNlbGYKLSAgICByZXR1cm4gZHJhZ0RhdGEuY29udGFpbnNVUkwoKSAmJiAhbV9kaWRJbml0
aWF0ZURyYWcgPyBEcmFnT3BlcmF0aW9uQ29weSA6IERyYWdPcGVyYXRpb25Ob25lOworICAgIHJl
dHVybiBkcmFnRGF0YS5jb250YWluc1VSTCgpICYmICFtX2RpZEluaXRpYXRlRHJhZyA/IERyYWdP
cGVyYXRpb25Db3B5IDogV1RGOjpudWxsb3B0OwogfQogCiBib29sIERyYWdDb250cm9sbGVyOjpp
c0NvcHlLZXlEb3duKGNvbnN0IERyYWdEYXRhJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRh
LmNwcAppbmRleCA4ZjY3NTVmNTc2MS4uZThjNDBmNTU5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmICFQTEFURk9STShDT0NPQSkKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRh
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRp
b25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3Rp
bmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24p
CiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9y
bURyYWdEYXRhKGRhdGEpCkBAIC00Miw3ICs0Miw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFn
RGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
CiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFn
T3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdz
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2sp
CitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFn
cywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNr
KQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFs
UG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDQyMWEyOTk0M2IzLi4zMWI4YWI5ZWU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03NSwxMyArNzUsMTMgQEAgcHVibGlj
OgogICAgIGVudW0gY2xhc3MgRHJhZ2dpbmdQdXJwb3NlIHsgRm9yRWRpdGluZywgRm9yRmlsZVVw
bG9hZCwgRm9yQ29sb3JDb250cm9sIH07CiAKICAgICAvLyBjbGllbnRQb3NpdGlvbiBpcyB0YWtl
biB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYWcgZXZlbnQgd2l0aGluIHRoZSB0YXJnZXQg
d2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0b3AgbGVmdAotICAgIFdFQkNPUkVfRVhQT1JUIERy
YWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9u
RmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBE
cmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRp
b24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25B
Y3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIERyYWdBcHBsaWNh
dGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CiAgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEK
ICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90IGluIHRoZSBjb25z
dHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVsdDsKICNpZiBQTEFURk9STShXSU4pCi0g
ICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJh
Z09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERy
YWdBcHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IERy
YWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOwogICAg
IGNvbnN0IERyYWdEYXRhTWFwJiBkcmFnRGF0YU1hcCgpOwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVE
ZXNjcmlwdG9yRGF0YShpbnQmIHNpemUsIFN0cmluZyYgcGF0aG5hbWUpOwogICAgIHZvaWQgZ2V0
RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9pZCogZGF0YUJsb2IpOwpAQCAtOTAsNyAr
OTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfQogICAgIERyYWdBcHBsaWNhdGlvbkZsYWdz
IGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkZsYWdzOyB9CiAgICAgRHJhZ0Rh
dGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybURyYWdEYXRhOyB9
Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7
IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQorICAgIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVy
biBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQogICAgIGJvb2wgY29udGFpbnNVUkwo
RmlsZW5hbWVDb252ZXJzaW9uUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcykgY29uc3Q7CiAgICAg
Ym9vbCBjb250YWluc1BsYWluVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNDb21wYXRp
YmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2UgPSBEcmFnZ2luZ1B1cnBvc2U6OkZvckVkaXRpbmcp
IGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgSW50UG9pbnQgbV9jbGll
bnRQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwogICAgIERyYWdEYXRh
UmVmIG1fcGxhdGZvcm1EcmFnRGF0YTsKLSAgICBEcmFnT3BlcmF0aW9uIG1fZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBtX2RyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzazsKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBtX2FwcGxpY2F0
aW9uRmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlTmFtZXM7CiAgICAgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KaW5kZXggOWNj
YWZjMGNkN2EuLjNhMTI4OWQ0YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW5saW5lIFN0
cmluZyB0aWZmUGFzdGVib2FyZFR5cGUoKQogI2VuZGlmCiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0
YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdE
YXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0
aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGlu
YXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRp
b24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9u
KQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC0xMzEsNyArMTMxLDcgQEAgRHJh
Z0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0
cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNv
bnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRp
b25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAg
OiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlv
bihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAppbmRleCAwYzAxM2NmNjdlZS4u
MDhjMmJlYTdjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtV
dGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRp
ZXMuY3BwCkBAIC0xNDksNDkgKzE0OSw0OSBAQCB1bnNpZ25lZCBzdGF0ZU1vZGlmaWVyRm9yR2Rr
QnV0dG9uKHVuc2lnbmVkIGJ1dHRvbikKICAgICByZXR1cm4gMSA8PCAoOCArIGJ1dHRvbiAtIDEp
OwogfQogCi1EcmFnT3BlcmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJh
Z0FjdGlvbiBnZGtBY3Rpb24pCitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZ2RrRHJhZ0FjdGlv
blRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uIGdka0FjdGlvbikKIHsKLSAgICAvLyBXZSBo
YXZlIG5vIGdvb2Qgd2F5IHRvIGRldGVjdCBEcmFnT3BlcmF0aW9uRXZlcnkgb3RoZXIgdGhhbgor
ICAgIC8vIFdlIGhhdmUgbm8gZ29vZCB3YXkgdG8gZGV0ZWN0IGFueURyYWdPcGVyYXRpb24oKSBv
dGhlciB0aGFuCiAgICAgLy8gdG8gdXNlIGl0IHdoZW4gYWxsIGFwcGxpY2FibGUgZmxhZ3MgYXJl
IG9uLgogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0NPUFkKICAgICAgICAgJiYgZ2Rr
QWN0aW9uICYgR0RLX0FDVElPTl9NT1ZFCiAgICAgICAgICYmIGdka0FjdGlvbiAmIEdES19BQ1RJ
T05fTElOSykKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKKyAgICAgICAgcmV0
dXJuIGFueURyYWdPcGVyYXRpb24oKTsKIAotICAgIHVuc2lnbmVkIGFjdGlvbiA9IERyYWdPcGVy
YXRpb25Ob25lOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBhY3Rpb247CiAgICAgaWYg
KGdka0FjdGlvbiAmIEdES19BQ1RJT05fQ09QWSkKLSAgICAgICAgYWN0aW9uIHw9IERyYWdPcGVy
YXRpb25Db3B5OworICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVyYXRpb25Db3B5KTsKICAgICBp
ZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9NT1ZFKQotICAgICAgICBhY3Rpb24gfD0gRHJhZ09w
ZXJhdGlvbk1vdmU7CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlvbk1vdmUpOwogICAg
IGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0xJTkspCi0gICAgICAgIGFjdGlvbiB8PSBEcmFn
T3BlcmF0aW9uTGluazsKKyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uTGluayk7CiAK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oYWN0aW9uKTsKKyAgICByZXR1
cm4gYWN0aW9uOwogfQogCi1HZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rp
b25zKERyYWdPcGVyYXRpb24gY29yZUFjdGlvbikKK0dka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlv
blRvR2RrRHJhZ0FjdGlvbnMoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24pCiB7
CiAgICAgdW5zaWduZWQgZ2RrQWN0aW9uID0gMDsKLSAgICBpZiAoY29yZUFjdGlvbiA9PSBEcmFn
T3BlcmF0aW9uTm9uZSkKKyAgICBpZiAoY29yZUFjdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihnZGtBY3Rpb24pOwogCi0gICAgaWYgKGNv
cmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlu
cyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIGdka0FjdGlvbiB8PSBHREtfQUNUSU9OX0NP
UFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAoY29y
ZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIGdka0FjdGlvbiB8
PSBHREtfQUNUSU9OX01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTGlu
aykKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAg
ICAgIGdka0FjdGlvbiB8PSBHREtfQUNUSU9OX0xJTks7CiAKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R2RrRHJhZ0FjdGlvbj4oZ2RrQWN0aW9uKTsKIH0KIAotR2RrRHJhZ0FjdGlvbiBkcmFnT3Bl
cmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKERyYWdPcGVyYXRpb24gY29yZUFjdGlvbikKK0dk
a0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gY29yZUFjdGlvbikKIHsKLSAgICBpZiAoY29yZUFjdGlvbiA9PSBEcmFn
T3BlcmF0aW9uRXZlcnkgfHwgY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlm
IChjb3JlQWN0aW9uID09IGFueURyYWdPcGVyYXRpb24oKSB8fCBjb3JlQWN0aW9uLmNvbnRhaW5z
KERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0dXJuIEdES19BQ1RJT05fQ09QWTsKLSAg
ICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAgIGlmIChjb3JlQWN0aW9u
LmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkKICAgICAgICAgcmV0dXJuIEdES19BQ1RJT05f
TU9WRTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKQorICAgIGlmIChj
b3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAgcmV0dXJuIEdE
S19BQ1RJT05fTElOSzsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKaW5kZXggNWFh
YjRlYjc5YTIuLjE5OGJjOGUyNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvR3RrVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a1V0aWxpdGllcy5oCkBAIC01MSw4ICs1MSw4IEBAIFN0cmluZyBkZWZhdWx0R3RrU3lzdGVtRm9u
dCgpOwogCiBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBzdGF0ZU1vZGlmaWVyRm9yR2RrQnV0dG9u
KHVuc2lnbmVkIGJ1dHRvbik7CiAKLVdFQkNPUkVfRVhQT1JUIERyYWdPcGVyYXRpb24gZ2RrRHJh
Z0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uKTsKLVdFQkNPUkVfRVhQT1JUIEdk
a0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMoRHJhZ09wZXJhdGlvbik7
Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0Ry
YWdBY3Rpb24oRHJhZ09wZXJhdGlvbik7CitXRUJDT1JFX0VYUE9SVCBPcHRpb25TZXQ8RHJhZ09w
ZXJhdGlvbj4gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uKTsKK1dF
QkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMo
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKK1dFQkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24g
ZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0RyYWdEYXRhV2luLmNwcAppbmRleCBlZTBkOGIyNjBjYy4uMTg4NzBmMjI3NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEJhaWR1IEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQxLDcgKzQxLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiBkYXRh
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBs
aWNhdGlvbkZsYWdzIGZsYWdzKQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKICAgICA6IG1fY2xpZW50
UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBv
c2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY3OGJlN2I0
ODJjLi4xNDhmNjE1MmM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0wNi0wMSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYktpdDo6Y29y
ZURyYWdPcGVyYXRpb25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbiB0
byBhdm9pZCBjYXN0aW5nLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZW5jb2RlKToKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
ZHJhZ2dpbmdFbnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5n
VXBkYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6Cisg
ICAgICAgIC0gTWFrZSB1c2Ugb2YgY29yZURyYWdPcGVyYXRpb25NYXNrKCkgY29udmVyc2lvbiBm
dW5jdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdDpdKToKKyAg
ICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBkcmFnRGF0YUZvckRyb3BTZXNzaW9uOmRyYWdEZXN0aW5hdGlvbkFjdGlv
bjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnSW50ZXJhY3Rpb246d2lsbEFuaW1h
dGVMaWZ0V2l0aEFuaW1hdG9yOnNlc3Npb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
ZHJhZ0ludGVyYWN0aW9uOnNlc3Npb246ZGlkRW5kV2l0aE9wZXJhdGlvbjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBkcm9wSW50ZXJhY3Rpb246c2Vzc2lvbkRpZEVuZDpdKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRyYWdFbmRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbik6CisK
IDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNvcmU6OkRyYWdEZXN0aW5h
dGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rpb24gdHlwZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5kZXggMmQ0M2JhZWJmOGUuLmFi
ZWUyNTU0N2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlL
aXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApA
QCAtMTAyNSwxMiArMTAyNSw2IEBAIENHRmxvYXQgVUlSb3VuZFRvU2NyZWVuU2NhbGUoQ0dGbG9h
dCB2YWx1ZSwgVUlTY3JlZW4gKik7CiAKIFdURl9FWFRFUk5fQ19FTkQKIAotdHlwZWRlZiBOU19P
UFRJT05TKE5TVUludGVnZXIsIFVJRHJhZ09wZXJhdGlvbikKLXsKLSAgICBVSURyYWdPcGVyYXRp
b25Ob25lID0gMCwKLSAgICBVSURyYWdPcGVyYXRpb25FdmVyeSA9IE5TVUludGVnZXJNYXgsCi19
OwotCiBAaW50ZXJmYWNlIFVJRHJhZ0ludGVyYWN0aW9uICgpCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgYXNzaWduLCBnZXR0ZXI9X2xpZnREZWxheSwgc2V0dGVyPV9zZXRMaWZ0RGVsYXk6KSBOU1Rp
bWVJbnRlcnZhbCBsaWZ0RGVsYXk7CiAtICh2b2lkKV9zZXRBbGxvd3NQb2ludGVyRHJhZ0JlZm9y
ZUxpZnREZWxheTooQk9PTClhbGxvd3NQb2ludGVyRHJhZ0JlZm9yZUxpZnREZWxheTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDNmZGQ4MDQ5ZDQ5Li4zZGFh
MzJjYjI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0y
MDksNiArMjA5LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFyZWQo
KToKICAgICAgICAgJ1dlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQnLAogICAgICAgICAnV2ViQ29y
ZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3Jr
ZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OkRyYWdPcGVyYXRpb24nLCAgIyBGSVhN
RTogUmVtb3ZlIGFmdGVyIGVudW0gY2xhc3MgRHJhZ09wZXJhdGlvbi4KICAgICAgICAgJ1dlYkNv
cmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIn
LAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCkBAIC01ODgs
NiArNTg5LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3Jl
OjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5
cGVzLmg+J10sCiAgICAgICAgICdXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0
JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViQ29yZTo6RHJh
Z0hhbmRsaW5nTWV0aG9kJzogWyc8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPiddLAorICAgICAgICAn
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbic6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKICAg
ICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMnOiBbJzxXZWJDb3JlL0pTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3Mn
OiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTaGFyZURh
dGFXaXRoUGFyc2VkVVJMJzogWyc8V2ViQ29yZS9TaGFyZURhdGEuaD4nXSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5o
CmluZGV4IGM4NjhjMjc3M2Y4Li44OTc4OWYzODJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oCkBAIC00MCw0
ICs0MCwyNCBAQCBpbmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soVwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKKyNpZiBVU0UoQVBQS0lUKQoraW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sK
KyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gcmVzdWx0OworICAgIGlmIChv
cGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0
aW9uTGluaykKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluayk7
CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAgICAgIHJl
c3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAgIGlmIChvcGVyYXRp
b24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0
aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7
CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkRlbGV0ZSkKKyAgICAgICAgcmVz
dWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorI2VuZGlmIC8vIFVTRShBUFBLSVQpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZDQ0
MzgxMTI5ZjkuLmNlOGYyZjk4ZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE1MzEsNyArMTUzMSw3IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxEcmFnRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiB7CiAgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpOwog
ICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRpb24oKTsKLSAgICBlbmNvZGVyLmVu
Y29kZUVudW0oZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkpOworICAgIGVu
Y29kZXIgPDwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7CiAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKGRyYWdEYXRhLmZsYWdzKCkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKTsKQEAgLTE1NTAsOCArMTU1
MCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShnbG9iYWxQ
b3NpdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIERyYWdPcGVyYXRpb24gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaykpCisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IERyYWdBcHBsaWNhdGlvbkZsYWdzIGFwcGxpY2F0aW9uRmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCmluZGV4IDhjM2IxMGUxMDUwLi5hMDA0NTAw
YjBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgK
QEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2lu
dD4gbV9wb3NpdGlvbjsKICAgICB1bnNpZ25lZCBtX2RhdGFSZXF1ZXN0Q291bnQgeyAwIH07CiAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4gbV9zZWxlY3Rpb25EYXRhOwotICAg
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9vcGVyYXRpb24geyBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IG1fb3BlcmF0
aW9uOwogI2lmIFVTRShHVEs0KQogICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2NhbmNlbGxh
YmxlOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKaW5kZXggYzEzYjI5YjMxZGMuLjI2MWQ3MGZiNzAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAt
MjE3LDExICsyMTcsMTEgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkaWRQZXJmb3JtQWN0aW9uKCkKICAg
ICBBU1NFUlQocGFnZSk7CiAKICAgICBhdXRvIG9wZXJhdGlvbiA9IHBhZ2UtPmN1cnJlbnREcmFn
T3BlcmF0aW9uKCk7Ci0gICAgaWYgKG9wZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKKyAgICBpZiAo
KCFvcGVyYXRpb24gJiYgIW1fb3BlcmF0aW9uKSB8fCAqb3BlcmF0aW9uID09ICptX29wZXJhdGlv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247Ci0gICAg
Z2RrX2RyYWdfc3RhdHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJh
Z0FjdGlvbihtX29wZXJhdGlvbiksIEdES19DVVJSRU5UX1RJTUUpOworICAgIGdka19kcmFnX3N0
YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24obV9v
cGVyYXRpb24gPyAqbV9vcGVyYXRpb24gOiB7IH0pLCBHREtfQ1VSUkVOVF9USU1FKTsKIH0KIAog
dm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQoKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZv
aWQgRHJvcFRhcmdldDo6bGVhdmVUaW1lckZpcmVkKCkKICAgICBhdXRvKiBwYWdlID0gd2Via2l0
V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fd2ViVmlldykpOwogICAg
IEFTU0VSVChwYWdlKTsKIAotICAgIERyYWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEu
dmFsdWUoKSwgKm1fcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93
ZWJWaWV3LCAqbV9wb3NpdGlvbiksIERyYWdPcGVyYXRpb25Ob25lKTsKKyAgICBEcmFnRGF0YSBk
cmFnRGF0YSgmbV9zZWxlY3Rpb25EYXRhLnZhbHVlKCksICptX3Bvc2l0aW9uLCBjb252ZXJ0V2lk
Z2V0UG9pbnRUb1NjcmVlblBvaW50KG1fd2ViVmlldywgKm1fcG9zaXRpb24pLCB7IH0pOwogICAg
IHBhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERyYWdJ
bmZvcm1hdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldEd0azQuY3BwCmluZGV4IDUxY2EzZTdiODIxLi5jYjc4YTMzMmNiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZp
ZXcpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7CiAK
ICAgICAgICAgZHJvcC5lbnRlcih7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRvSW50ZWdlcih5
KSB9KTsKLSAgICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24o
ZHJvcC5tX29wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVH
ZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVyYXRpb24gPyAqZHJvcC5tX29wZXJhdGlvbiA6IHsgfSk7
CiAgICAgfSksIHRoaXMpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdCh0YXJnZXQsICJkcmFnLW1v
dGlvbiIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdka0Ry
b3AsIGRvdWJsZSB4LCBkb3VibGUgeSwgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdka0RyYWdBY3Rp
b24gewpAQCAtNzIsNyArNzIsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KEd0a1dpZGdldCog
d2ViVmlldykKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPigw
KTsKIAogICAgICAgICBkcm9wLnVwZGF0ZSh7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRvSW50
ZWdlcih5KSB9KTsKLSAgICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdB
Y3Rpb24oZHJvcC5tX29wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBkcmFnT3BlcmF0aW9uVG9T
aW5nbGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVyYXRpb24gPyAqZHJvcC5tX29wZXJhdGlvbiA6
IHsgfSk7CiAgICAgfSksIHRoaXMpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdCh0YXJnZXQsICJk
cmFnLWxlYXZlIiwgR19DQUxMQkFDSygrW10oR3RrRHJvcFRhcmdldEFzeW5jKiwgR2RrRHJvcCog
Z2RrRHJvcCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKQEAgLTI3MywxMSArMjczLDExIEBAIHZvaWQg
RHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlvbigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAg
YXV0byBvcGVyYXRpb24gPSBwYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChv
cGVyYXRpb24gPT0gbV9vcGVyYXRpb24pCisgICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29wZXJh
dGlvbikgfHwgb3BlcmF0aW9uID09IG1fb3BlcmF0aW9uKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX29wZXJhdGlvbiA9IG9wZXJhdGlvbjsKLSAgICBnZGtfZHJvcF9zdGF0dXMobV9kcm9wLmdl
dCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhtX29wZXJhdGlvbiksIGRyYWdPcGVy
YXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24obV9vcGVyYXRpb24pKTsKKyAgICBnZGtfZHJvcF9z
dGF0dXMobV9kcm9wLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhtX29wZXJh
dGlvbiA/ICptX29wZXJhdGlvbiA6IHsgfSksIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdB
Y3Rpb24obV9vcGVyYXRpb24gPyAqbV9vcGVyYXRpb24gOiB7IH0pKTsKIH0KIAogdm9pZCBEcm9w
VGFyZ2V0OjpsZWF2ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IDJlMzllYTZjZmU4Li5jN2QyOTM0N2UyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTM5MTMsNyArMzkxMyw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OmRyYWdnZWRJbWFnZShOU0ltYWdlICosIENHUG9pbnQgZW5kUG9pbnQs
IE5TRHJhZ09wZXJhdGlvbiBvcGVyCiAgICAgc2VuZERyYWdFbmRUb1BhZ2UoZW5kUG9pbnQsIG9w
ZXJhdGlvbik7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKENHUG9p
bnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIFdlYlZpZXdJbXBs
OjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gZHJh
Z09wZXJhdGlvbk1hc2spCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICBOU1BvaW50IHdpbmRvd0ltYWdlTG9jID0gW1ttX3ZpZXcgd2luZG93XSBjb252ZXJ0
U2NyZWVuVG9CYXNlOk5TUG9pbnRGcm9tQ0dQb2ludChlbmRQb2ludCldOwpAQCAtMzkyMyw3ICsz
OTIzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UoQ0dQb2ludCBlbmRQ
b2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKICAgICAvLyBQcmV2ZW50IHF1ZXVlZCBt
b3VzZURyYWdnZWQgZXZlbnRzIGZyb20gY29taW5nIGFmdGVyIHRoZSBkcmFnIGFuZCBmYWtlIG1v
dXNlVXAgZXZlbnQuCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gdHJ1ZTsKIAot
ICAgIG1fcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50KHdpbmRvd01vdXNlTG9jKSwg
V2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xvYmFsUG9pbnQod2luZG93TW91c2VMb2MsIFtt
X3ZpZXcgd2luZG93XSkpLCBvcGVyYXRpb24pOworICAgIG1fcGFnZS0+ZHJhZ0VuZGVkKFdlYkNv
cmU6OkludFBvaW50KHdpbmRvd01vdXNlTG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6
Z2xvYmFsUG9pbnQod2luZG93TW91c2VMb2MsIFttX3ZpZXcgd2luZG93XSkpLCBjb3JlRHJhZ09w
ZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KIAogc3RhdGljIFdlYkNvcmU6OkRy
YWdBcHBsaWNhdGlvbkZsYWdzIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKE5TVmlldyAqdmlldywg
aWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCkBAIC0zOTQ3LDcgKzM5NDcsNyBAQCBO
U0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChpZCA8TlNEcmFnZ2lu
Z0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmll
dyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmls
XSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRy
YWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRv
IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
ayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdn
aW5nSW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNr
KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIFdlYkNvcmU6
OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVy
YXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2Vk
KCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogCiAgICAgbV9w
YWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKQEAgLTM5NTYsMTggKzM5NTYsNDIg
QEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJh
Z2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7
CiB9CiAKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCit7CisgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQorICAg
ICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHN3aXRjaCgqZHJhZ09wZXJh
dGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk6CisgICAgICAgIHJl
dHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkxpbms6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGNhc2UgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRp
b25HZW5lcmljOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6CisgICAg
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Nb3ZlOworICAg
IGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJh
Z09wZXJhdGlvbkRlbGV0ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKK30KKwogTlNEcmFnT3BlcmF0aW9uIFdlYlZp
ZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8p
CiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRy
YWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6
OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dp
bmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2Ry
YWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBh
dXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgYXV0byBk
cmFnT3BlcmF0aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uTWFzaywgYXBwbGlj
YXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8p
LCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKICAgICBtX3BhZ2UtPmRyYWdVcGRhdGVkKGRy
YWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogCiAgICAgTlNJ
bnRlZ2VyIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX3BhZ2UtPmN1cnJlbnREcmFnTnVt
YmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpOwogCi0gICAgaWYgKG1fcGFnZS0+Y3VycmVudERyYWdP
cGVyYXRpb24oKSA9PSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICBpZiAoIW1fcGFn
ZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKSkKICAgICAgICAgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9y
RHJvcCA9IG1faW5pdGlhbE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7CiAKICAgICBOU0RyYWdn
aW5nRm9ybWF0aW9uIGRyYWdnaW5nRm9ybWF0aW9uID0gTlNEcmFnZ2luZ0Zvcm1hdGlvbk5vbmU7
CkBAIC0zOTc5LDE0ICs0MDAzLDE0IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJh
Z2dpbmdVcGRhdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgIGlmIChk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdGb3JtYXRpb24gIT0gZHJhZ2dpbmdGb3JtYXRpb24pCiAgICAg
ICAgIFtkcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdGb3JtYXRpb246ZHJhZ2dpbmdGb3JtYXRpb25d
OwogCi0gICAgcmV0dXJuIG1fcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1
cm4ga2l0KG1fcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKSk7ICAvLyBGSVhNRTogIEltcGxl
bWVudCBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQoaWQgPE5TRHJhZ2dpbmdJ
bmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3Zp
ZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5p
bF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2Vi
Q29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRv
cmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0Rh
dGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRy
YWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdz
Rm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOwogICAgIG1f
cGFnZS0+ZHJhZ0V4aXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2Fy
ZC5uYW1lKTsKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAg
IGRyYWdnaW5nSW5mby5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVtYmVy
T2ZWYWxpZEl0ZW1zRm9yRHJvcDsKQEAgLTQwMDIsNyArNDAyNiw3IEBAIGJvb2wgV2ViVmlld0lt
cGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZv
KQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhICpk
cmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3
LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0
YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQs
IGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOwogCiAgICAgTlNBcnJheSAqdHlwZXMgPSBkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggY2VkZDQxMTc0MTEuLjViOTczODY0OWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI0MjQsMTEgKzI0MjQsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVy
QWN0aW9uIGFjdGlvbiwgRHJhZwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRQ
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViQ29y
ZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3Zl
ckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50
UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oT3B0aW9u
YWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hh
bmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1
dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50UmVjdCYgaW5z
ZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkKIHsKLSAgICBN
RVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZHJhZ09wZXJhdGlvbiA8PSBEcmFnT3BlcmF0aW9uRGVs
ZXRlKTsKLQotICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcmFnT3Bl
cmF0aW9uPihkcmFnT3BlcmF0aW9uKTsKKyAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gZHJh
Z09wZXJhdGlvbjsKICAgICBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QgPSBkcmFnSGFuZGxp
bmdNZXRob2Q7CiAgICAgbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dCA9IG1vdXNlSXNPdmVy
RmlsZUlucHV0OwogICAgIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkID0g
bnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZDsKQEAgLTI0MzgsMjAgKzI0MzYsMjAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFn
T3BlcmF0aW9uLCBXZWJDb3IKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZVBy
b3h5OjpzdGFydERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQ2NF90IGRy
YWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5k
bGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rp
b25EYXRhLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCiB7CiAgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gZHJhZ0ltYWdlID0gIWRyYWdJbWFnZUhhbmRsZS5pc051bGwoKSA/IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkgOiBudWxscHRyOwotICAgIHBhZ2VD
bGllbnQoKS5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ09wZXJhdGlvbiksIFdURk1vdmUoZHJhZ0ltYWdlKSk7
CisgICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpLCBkcmFn
T3BlcmF0aW9uLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOwogCiAgICAgZGlkU3RhcnREcmFnKCk7CiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdFbmRlZChjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qg
b3BlcmF0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYWdFbmRlZChjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIG9wZXJh
dGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3Np
dGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdPcGVyYXRpb25NYXNrKSk7CiAgICAgc2V0RHJhZ0Nh
cmV0UmVjdCh7IH0pOwogfQogCkBAIC0yNDgyLDcgKzI0ODAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRW5kRHJhZ2dpbmcoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRDdXJyZW50RHJh
Z0luZm9ybWF0aW9uKCkKIHsKLSAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IFdURjo6bnVs
bG9wdDsKICAgICBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QgPSBEcmFnSGFuZGxpbmdNZXRo
b2Q6Ok5vbmU7CiAgICAgbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dCA9IGZhbHNlOwogICAg
IG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2JhOWY4YjVlYzAuLjIxYTUyMzZjZmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE1Niw4ICsxMTU2LDgg
QEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybURyYWdPcGVyYXRpb24oV2ViQ29yZTo6RHJhZ0Rh
dGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYpOwogICAgIHZvaWQgZGlkUGVy
Zm9ybURyYWdPcGVyYXRpb24oYm9vbCBoYW5kbGVkKTsKIAotICAgIHZvaWQgZGlkUGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRyYWdI
YW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVy
T2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0aW9uUmVj
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCk7Ci0gICAgdm9p
ZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7
CisgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3Vz
ZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZWRpdGFibGVFbGVtZW50UmVjdCk7CisgICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPik7CiAgICAgdm9p
ZCBkaWRTdGFydERyYWcoKTsKICAgICB2b2lkIGRyYWdDYW5jZWxsZWQoKTsKICAgICB2b2lkIHNl
dERyYWdDYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwpAQCAtMTE2Nyw3ICsxMTY3
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVUkwsIGNvbnN0IFNo
YXJlZE1lbW9yeTo6SGFuZGxlJiBhcmNoaXZlSGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSk7
CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YSYmLCB1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpT
ZWxlY3Rpb25EYXRhJiYsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2UpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtMTIyNiw3ICsx
MjI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2Fy
eSgpOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uIGN1cnJlbnREcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ09w
ZXJhdGlvbjsgfQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGN1cnJlbnRE
cmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsgfQog
ICAgIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBjdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9k
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kOyB9CiAgICAgYm9v
bCBjdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERy
YWdJc092ZXJGaWxlSW5wdXQ7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50RHJhZ051bWJlck9mRmls
ZXNUb0JlQWNjZXB0ZWQoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxl
c1RvQmVBY2NlcHRlZDsgfQpAQCAtMjYwNyw3ICsyNjA3LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogICAgIC8vIEN1cnJlbnQgZHJhZyBkZXN0aW5hdGlvbiBkZXRhaWxz
IGFyZSBkZWxpdmVyZWQgYXMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLAogICAgIC8vIHNvIHdl
IHByZXNlcnZlIHRoZW0gdG8gYmUgdXNlZCB3aGVuIHRoZSBuZXh0IGRyYWdnaW5nIGRlbGVnYXRl
IGNhbGwgaXMgbWFkZS4KLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIG1fY3VycmVudERyYWdP
cGVyYXRpb24geyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+IG1fY3VycmVudERyYWdPcGVyYXRpb247CiAgICAgV2ViQ29y
ZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhvZCB7IFdlYkNv
cmU6OkRyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSB9OwogICAgIGJvb2wgbV9jdXJyZW50RHJhZ0lz
T3ZlckZpbGVJbnB1dCB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50RHJhZ051bWJl
ck9mRmlsZXNUb0JlQWNjZXB0ZWQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMmQyM2U0YjY2MGIuLjM4MzZmZDlhNjZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0zMTAsNyArMzEwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAg
ICMgRHJhZyBhbmQgZHJvcCBtZXNzYWdlcwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAg
RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGVu
dW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9k
LCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6OkludFJlY3Qg
ZWRpdGFibGVFbGVtZW50UmVjdCkKKyAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgZW51bTp1aW50
OF90IFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wg
bW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQs
IFdlYkNvcmU6OkludFJlY3QgaW5zZXJ0aW9uUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBlZGl0YWJs
ZUVsZW1lbnRSZWN0KQogICAgIERpZEVuZERyYWdnaW5nKCk7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShDT0NPQSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTMxOCw3ICszMTgsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFNldFByb21pc2VkRGF0YUZvckltYWdlKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBpbWFnZUhhbmRs
ZSwgdWludDY0X3QgaW1hZ2VTaXplLCBTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBleHRlbnNpb24s
IFN0cmluZyB0aXRsZSwgU3RyaW5nIHVybCwgU3RyaW5nIHZpc2libGVVUkwsIFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNpemUpCiAj
ZW5kaWYKICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgU3Rh
cnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uRGF0YSwgdWludDY0X3QgZHJh
Z09wZXJhdGlvbiwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCisg
ICAgU3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uRGF0YSwgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGRyYWdJbWFnZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCmluZGV4IDQzOWRiOTk3N2VlLi5lM2Y0OWUwZmFmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC03Mjg1LDcgKzcyODUsNyBAQCAtICh2b2lkKV9kaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0
OihCT09MKXN0YXJ0ZWQKICAgICAgICAgaWYgKHN0YXJ0ZWQpIHsKICAgICAgICAgICAgIC8vIEEg
Y2xpZW50IG9mIHRoZSBPYmplY3RpdmUgQyBTUEkgb3IgVUlLaXQgbWlnaHQgaGF2ZSBwcmV2ZW50
ZWQgdGhlIGRyYWcgZnJvbSBiZWdpbm5pbmcgZW50aXJlbHkgaW4gdGhlIFVJIHByb2Nlc3MsIGlu
IHdoaWNoIGNhc2UKICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gYmFsYW5jZSB0aGUgYGRyYWdz
dGFydGAgZXZlbnQgd2l0aCBhIGBkcmFnZW5kYC4KLSAgICAgICAgICAgIF9wYWdlLT5kcmFnRW5k
ZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Ob25lKTsKKyAgICAgICAgICAgIF9wYWdlLT5kcmFnRW5kZWQocG9zaXRpb25Gb3JE
cmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIHsgfSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBA
IC03MzAzLDI0ICs3MzAzLDQyIEBAIC0gKHZvaWQpY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50
c0ZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBvCiAgICAgICAgICpv
dXRHbG9iYWxQb2ludCA9IGxvY2F0aW9uSW5Db250ZW50VmlldzsKIH0KIAotc3RhdGljIFVJRHJv
cE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24oV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCitzdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVy
YXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiBvcGVyYXRpb24pCiB7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Nb3ZlKQotICAgICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uTW92ZTsKLQotICAgIGlm
IChvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSkKLSAgICAgICAgcmV0dXJu
IFVJRHJvcE9wZXJhdGlvbkNvcHk7Ci0KKyAgICBpZiAob3BlcmF0aW9uKSB7CisgICAgICAgIGlm
ICgqb3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgICAgICBy
ZXR1cm4gVUlEcm9wT3BlcmF0aW9uTW92ZTsKKyAgICAgICAgaWYgKCpvcGVyYXRpb24gJiBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRp
b25Db3B5OworICAgIH0KICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOwogfQogCitz
dGF0aWMgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9u
Rm9yVUlEcm9wT3BlcmF0aW9uKFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uKQoreworICAg
IHN3aXRjaCAoZHJvcE9wZXJhdGlvbikgeworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uQ2FuY2Vs
OgorICAgICAgICByZXR1cm4geyB9OworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uRm9yYmlkZGVu
OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgY2Fz
ZSBVSURyb3BPcGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbkNvcHk7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4g
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiB7IH07Cit9CisKIC0gKFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRh
Rm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGRyYWdEZXN0aW5hdGlv
bkFjdGlvbjooV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uCiB7
CiAgICAgQ0dQb2ludCBnbG9iYWw7CiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29t
cHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50
UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKIAotICAgIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPihzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uRXZlcnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldlYkNvcmU6OkRy
YWdPcGVyYXRpb25Nb3ZlKSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IFdlYkNvcmU6
OmFueURyYWdPcGVyYXRpb24oKTsKKyAgICBpZiAoIXNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlv
bikKKyAgICAgICAgZHJhZ09wZXJhdGlvbk1hc2sucmVtb3ZlKFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25Nb3ZlKTsKICAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Y2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25N
YXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBXZWJLaXQ6OmNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKGRyYWdEZXN0aW5hdGlvbkFjdGlvbikgfTsKIH0KIApAQCAtNzQyNCw3
ICs3NDQyLDggQEAgLSAodm9pZClfZGlkUGVyZm9ybURyYWdPcGVyYXRpb246KEJPT0wpaGFuZGxl
ZAogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQ
b2ludHNGb3JEcm9wU2Vzc2lvbjpkcm9wU2Vzc2lvbiBvdXRDbGllbnRQb2ludDomY2xpZW50IG91
dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lv
blN0YXRlXTsKLSAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChj
bGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgX3BhZ2UtPmN1cnJlbnRE
cmFnT3BlcmF0aW9uKCkpOworICAgIGF1dG8gY3VycmVudERyYWdPcGVyYXRpb24gPSBfcGFnZS0+
Y3VycmVudERyYWdPcGVyYXRpb24oKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJv
dW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwg
Y3VycmVudERyYWdPcGVyYXRpb24gPyAqY3VycmVudERyYWdPcGVyYXRpb24gOiB7IH0pOwogfQog
CiAtICh2b2lkKV9kaWRDaGFuZ2VEcmFnQ2FyZXRSZWN0OihDR1JlY3QpcHJldmlvdXNSZWN0IGN1
cnJlbnRSZWN0OihDR1JlY3QpcmVjdApAQCAtODAxMyw3ICs4MDMyLDcgQEAgLSAodm9pZClkcmFn
SW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2lsbEFuaW1hdGVM
aWZ0V2l0aEFuaW0KICAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBz
ZXNzaW9uIGVuZGVkIGF0IHN0YXJ0OiAlcCIsIHNlc3Npb24pOwogICAgICAgICAgICAgLy8gVGhl
IGxpZnQgd2FzIGNhbmNlbGVkLCBzbyAtZHJvcEludGVyYWN0aW9uOnNlc3Npb25EaWRFbmQ6IHdp
bGwgbmV2ZXIgYmUgaW52b2tlZC4gVGhpcyBpcyB0aGUgbGFzdCBjaGFuY2UgdG8gY2xlYW4gdXAu
CiAgICAgICAgICAgICBbcHJvdGVjdGVkU2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0
ZV07Ci0gICAgICAgICAgICBwYWdlLT5kcmFnRW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3Np
dGlvbkZvckRyYWdFbmQsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lKTsKKyAgICAgICAgICAg
IHBhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwg
eyB9KTsKICAgICAgICAgfQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBlbHNl
CkBAIC04MDQ4LDcgKzgwNjcsNyBAQCAtICh2b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50
ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uOihpZCA8VUlEcmFnU2VzcwogICAgICAgICBy
ZXR1cm47CiAKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAg
X3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRy
YWdFbmQoKSksIG9wZXJhdGlvbik7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3Vu
ZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9y
RHJhZ0VuZCgpKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIGNvcmVEcmFnT3BlcmF0aW9uRm9y
VUlEcm9wT3BlcmF0aW9uKG9wZXJhdGlvbikpOwogfQogCiAtIChVSVRhcmdldGVkRHJhZ1ByZXZp
ZXcgKilkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJl
dmlld0ZvckNhbmNlbGxpbmdJdGVtOihVSURyYWdJdGVtICopaXRlbSB3aXRoRGVmYXVsdDooVUlU
YXJnZXRlZERyYWdQcmV2aWV3ICopZGVmYXVsdFByZXZpZXcKQEAgLTgyNjcsNyArODI4Niw3IEBA
IC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9u
IHNlc3Npb25EaWRFbmQ6KGlkIDxVSURyCiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYg
Y29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xp
ZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKICAgICBbc2VsZiBjbGVh
blVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2Jh
bCksIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Z2xvYmFsKSwgeyB9KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNw
cAppbmRleCBlZWQ3Yjk5Njg1Ny4uNzRmNDZjY2JmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xp
ZW50R3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJh
ZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmKQogCiAg
ICAgbV9wYWdlLT53aWxsU3RhcnREcmFnKCk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuc2VsZWN0
aW9uRGF0YSgpLCBkYXRhVHJhbnNmZXIuc291cmNlT3BlcmF0aW9uKCksIGhhbmRsZSkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydERyYWcoZGF0YVRyYW5z
ZmVyLnBhc3RlYm9hcmQoKS5zZWxlY3Rpb25EYXRhKCksIGRhdGFUcmFuc2Zlci5zb3VyY2VPcGVy
YXRpb25NYXNrKCksIGhhbmRsZSkpOwogfQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViS2l0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwZmMyZjA3
MDE4My4uZDgwY2Q5NTQ4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zOTQwLDIyICszOTQwLDIyIEBAIE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlciogV2ViUGFnZTo6bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQg
V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9u
IGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgU2Vs
ZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQzMl90IGZsYWdzKQordm9pZCBXZWJQYWdl
OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9u
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaywgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQzMl90IGZsYWdzKQogewog
ICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBEcmFnSGFu
ZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6
Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0
aW9uRGF0YSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBzdGF0aWNfY2FzdDxEcmFn
T3BlcmF0aW9uPihkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBzdGF0aWNfY2FzdDxEcmFn
QXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0
aW9uRGF0YSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2ssIHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlvbkZsYWdzPihmbGFncykpOwog
ICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6RW50
ZXJlZDogewotICAgICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1f
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAgICAgIE9w
dGlvbmFsPERyYWdPcGVyYXRpb24+IHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVk
RHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhv
ZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgeyB9LCB7
IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0
aW9uOjpVcGRhdGVkOiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0
aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAg
ICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
cmVzb2x2ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hhbmRs
aW5nTWV0aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1
dCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgp
LCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzk3NCwyNCArMzk3NCwy
NCBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludAogdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpEcmFnRGF0YSYgZHJhZ0RhdGEsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4
dGVuc2lvbnNIYW5kbGVBcnJheSkKIHsKICAgICBpZiAoIW1fcGFnZSkgewotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihE
cmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9
LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5v
bmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
c3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRlcmVk
OiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICAgICAgT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24ocmVzb2x2ZWREcmFn
T3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hhbmRsaW5nTWV0aG9kKCks
IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1dCgpLCBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgpLCBtX3BhZ2UtPmRy
YWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSwgbV9w
YWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuZWRpdGFibGVFbGVtZW50UmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcygpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBEcmFnQ29u
dHJvbGxlckFjdGlvbjo6VXBkYXRlZDogewotICAgICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVk
RHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFn
RGF0YSk7CisgICAgICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IHJlc29sdmVkRHJhZ09wZXJh
dGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJc092
ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0Jl
QWNjZXB0ZWQoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRSZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmVkaXRhYmxl
RWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkV4aXRlZDoKICAgICAgICAgbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihE
cmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9
LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5v
bmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlBlcmZvcm1EcmFnT3BlcmF0aW9uOiB7CkBAIC00
MDE4LDcgKzQwMTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYgogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQordm9p
ZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2spCiB7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRDbGll
bnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbi54KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCku
ZHJhZ09mZnNldCgpLngoKSwgY2xpZW50UG9zaXRpb24ueSgpICsgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLmRyYWdPZmZzZXQoKS55KCkpOwogICAgIEludFBvaW50IGFkanVzdGVkR2xvYmFsUG9z
aXRpb24oZ2xvYmFsUG9zaXRpb24ueCgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdP
ZmZzZXQoKS54KCksIGdsb2JhbFBvc2l0aW9uLnkoKSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnT2Zmc2V0KCkueSgpKTsKQEAgLTQwMjksNyArNDAyOSw3IEBAIHZvaWQgV2ViUGFnZTo6
ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2Ug
bW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQu
CiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGFkanVzdGVkQ2xpZW50UG9zaXRpb24sIGFk
anVzdGVkR2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92
ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6bm93KCksIDAsIFdl
YkNvcmU6Ok5vVGFwKTsKLSAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRy
YWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoRHJhZ09wZXJhdGlvbilvcGVyYXRpb24pOworICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQs
IGRyYWdPcGVyYXRpb25NYXNrKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkRW5kRHJhZ2dpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBiMjE3YmM3ZWJlYS4uMWE5MDFjMTFkNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg5OSw3ICs4OTksNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCk7CiAK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShHVEspCi0gICAgdm9pZCBwZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3QgZmxhZ3MpOworICAgIHZvaWQgcGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50MzJfdCBmbGFncyk7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmICFQTEFURk9STShHVEspCkBA
IC05MDcsNyArOTA3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9u
LCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsK
KyAgICB2b2lkIGRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlv
bigpOwogICAgIHZvaWQgbWF5UGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggNTM4ZTY1NzJlNTAuLmFlOTI3NDc2Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTMwOSwx
NCArMzA5LDE0IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90
IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAgICAjIERyYWcgYW5kIGRy
b3AuCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29udHJvbGxl
ckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3QgZmxhZ3Mp
CisgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVudW06dWludDhfdCBXZWJLaXQ6OkRy
YWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRp
b24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3QgZmxhZ3MpCiAjZW5kaWYKICNpZiAhUExBVEZP
Uk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24s
IFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQogI2VuZGlmCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKICAgICBEaWRTdGFydERyYWcoKQotICAgIERyYWdFbmRlZChXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRp
b24sIHVpbnQ2NF90IG9wZXJhdGlvbikKKyAgICBEcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2spCiAgICAgRHJhZ0Nh
bmNlbGxlZCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwZTY1NjQ5NmM4NC4uOGI4N2RiMzhjMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0
ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW8KICAgICAvLyBp
cyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGljaCBvbmx5IHNlZXMgdGhhdCB0aGUgY3Vy
cmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcgb25lIGlzIGJlZ2lubmluZy4KICAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9u
LCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCAwLCBOb1RhcCk7CiAgICAgbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLmRyYWdFbmRlZCgpOwotICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZl
bnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIERyYWdPcGVyYXRpb25Ob25lLCBN
YXlFeHRlbmREcmFnU2Vzc2lvbjo6WWVzKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50
SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCB7IH0sIE1heUV4dGVuZERyYWdTZXNz
aW9uOjpZZXMpOwogCiAgICAgYm9vbCBkaWRIYW5kbGVEcmFnID0gbV9wYWdlLT5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKS50cnlUb0JlZ2luRHJhZ0F0UG9pbnQoY2xpZW50UG9zaXRpb24sIGds
b2JhbFBvc2l0aW9uKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRs
ZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGRpZEhhbmRsZURyYWcpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwppbmRleCA1Njg5ZDNhMTljNC4uNzIxNmYyODgzNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2ls
emVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09w
ZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8y
MTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfZHJhZ1NvdXJjZUVu
ZGVkQXQ6b3BlcmF0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06Cisg
ICAgICAgIChraXQpOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tGb3JMb2NhbDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZHJhZ2dpbmdTZXNz
aW9uOnNvdXJjZU9wZXJhdGlvbk1hc2tGb3JEcmFnZ2luZ0NvbnRleHQ6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoY29yZURyYWdPcGVyYXRpb25NYXNrKToKKyAg
ICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbiB0byBhdm9pZCBjYXN0aW5nLgorICAgICAg
ICAoLVtXZWJWaWV3IGRyYWdEYXRhRm9yU2Vzc2lvbjpjbGllbnQ6Z2xvYmFsOm9wZXJhdGlvbjpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0VudGVyZWQ6XSk6CisgICAgICAgICgtW1dl
YlZpZXcgZHJhZ2dpbmdVcGRhdGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nRXhp
dGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHBlcmZvcm1EcmFnT3BlcmF0aW9uOl0pOgorICAg
ICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVu
Y3Rpb24uCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKENv
Y29hRHJhZ09wZXJhdGlvbik6CisgICAgICAgIC0gQWRkIHR5cGVkZWYgc28gY29yZURyYWdPcGVy
YXRpb25NYXNrKCkgbWF5IGJlIHNoYXJlZCBhY3Jvc3MKKyAgICAgICAgICBwbGF0Zm9ybXMuCisg
ICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQgZGVjbGFyYXRpb24uCisgICAgICAg
IChjb3JlT3B0aW9ucyk6CisgICAgICAgIC0gUmVtb3ZlIHJlZHVuZGFudCBwYXJhbWV0ZXIgbmFt
ZS4KKwogMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIERvbid0IHVzZSBjYXN0cyB0byBjb252ZXJ0IGJldHdlZW4gV2ViQ29yZTo6RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uIGFuZCB7V2ViLFdLfURyYWdEZXN0aW5hdGlvbkFjdGlvbiB0eXBlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZDRkZWE3
YzM5YzguLmI5ZWVjZGM4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KQEAgLTk0Miw3ICs5NDIsNyBAQCAtICh2b2lkKV9zZXRUeXBpbmdTdHlsZToo
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlIHdpdGhVbmRvQWN0aW9uOihXZWJDb3JlOgog
fQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKQotLSAodm9pZClf
ZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3Bl
cmF0aW9uKW9wZXJhdGlvbgorLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2lu
ZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKWRyYWdPcGVyYXRpb25NYXNrCiB7CiAg
ICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKQogICAgICAgICByZXR1cm47CkBAIC05NTIsNyAr
OTUyLDcgQEAgLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9w
ZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGkKICAgICAvLyBGSVhNRTogVGhlc2UgYXJl
IGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGlu
c3RlYWQuCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KFdlYkNvcmU6Oklu
dFBvaW50KHdpbmRvd0xvYyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2JhbFBvaW50
KHdpbmRvd0xvYywgW3ZpZXctPnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSkpLAogICAgICAgICBX
ZWJDb3JlOjpMZWZ0QnV0dG9uLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCBXZWJDb3JlOjpG
b3JjZUF0Q2xpY2ssIFdlYkNvcmU6Ok5vVGFwKTsKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5l
dmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24pb3BlcmF0aW9uKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIo
KS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdPcGVy
YXRpb25NYXNrKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZP
Uk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCA1ZTRhODkwNWVjOC4uZTdjYTQ2MWQ5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYsIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRl
bm5pc0BnbWFpbC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MjI5LDYgKzQyMjksMjggQEAg
LSAodm9pZCl0b3VjaDooV2ViRXZlbnQgKilldmVudAogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpCisKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0
KE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQoreworICAg
IGlmIChvcGVyYXRpb25NYXNrID09IFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkV2ZXJ5OworCisgICAgTlNEcmFnT3BlcmF0aW9uIHJl
c3VsdCA9IE5TRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFp
bnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFn
T3BlcmF0aW9uQ29weTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTGluaykpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25MaW5r
OworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25H
ZW5lcmljKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAg
aWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUp
KQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBpZiAob3Bl
cmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpCisgICAgICAg
IHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25Nb3ZlOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNv
bnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpKQorICAgICAgICByZXN1bHQgfD0g
TlNEcmFnT3BlcmF0aW9uRGVsZXRlOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCiAtICh2b2lkKWRyYWdJbWFnZTooTlNJbWFn
ZSAqKWRyYWdJbWFnZQogICAgICAgICAgICAgICAgYXQ6KE5TUG9pbnQpYXQKQEAgLTQyODAsNyAr
NDMwMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CiAKLSAgICByZXR1cm4g
KE5TRHJhZ09wZXJhdGlvbilwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRp
b24oKTsKKyAgICByZXR1cm4ga2l0KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09w
ZXJhdGlvbk1hc2soKSk7CiB9CiAKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JF
R0lOCkBAIC00Mzg2LDcgKzQ0MDgsNyBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTZXNz
aW9uOihOU0RyYWdnaW5nU2Vzc2lvbiAqKXNlc3Npb24gc291cmNlT3BlcmF0aW9uTQogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CiAKLSAgICByZXR1
cm4gKE5TRHJhZ09wZXJhdGlvbilwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVy
YXRpb24oKTsKKyAgICByZXR1cm4ga2l0KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJh
Z09wZXJhdGlvbk1hc2soKSk7CiB9CiAKIC0gKHZvaWQpZHJhZ2dpbmdTZXNzaW9uOihOU0RyYWdn
aW5nU2Vzc2lvbiAqKXNlc3Npb24gZW5kZWRBdFBvaW50OihOU1BvaW50KXNjcmVlblBvaW50IG9w
ZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDk2N2E5MDViNDI4Li5hNTRjMWE5YTY5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNTg5LDYgKzU4
OSw5MiBAQCBzdGF0aWMgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4g
Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soVwogICAgICAgICByZXN1bHQuYWRkKFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
KworI2lmICFVU0UoQVBQS0lUKQorLy8gU2VlIDxVSUtpdC9VSURyYWdnaW5nX1ByaXZhdGUuaD4u
Cit0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1VJRHJhZ09wZXJhdGlvbikgeworICAg
IF9VSURyYWdPcGVyYXRpb25Ob25lID0gMCwKKyAgICBfVUlEcmFnT3BlcmF0aW9uQ29weSA9IDEs
CisgICAgX1VJRHJhZ09wZXJhdGlvbk1vdmUgPSAxNiwKK307CisjZW5kaWYKKworT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdP
cGVyYXRpb24gb3BlcmF0aW9uKQoreworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiByZXN1bHQ7CisKKyNpZiBVU0UoQVBQS0lUKQorICAgIGlmIChvcGVyYXRpb24gJiBOU0Ry
YWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25Db3B5KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTGluaykKKyAgICAg
ICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluayk7CisgICAgaWYgKG9wZXJh
dGlvbiAmIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVy
YXRpb25Qcml2YXRlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Q
cml2YXRlKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAg
ICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgaWYgKG9wZXJh
dGlvbiAmIE5TRHJhZ09wZXJhdGlvbkRlbGV0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uRGVsZXRlKTsKKyNlbHNlCisgICAgaWYgKG9wZXJhdGlvbiAmIF9VSURy
YWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25Db3B5KTsKKyAgICBpZiAob3BlcmF0aW9uICYgX1VJRHJhZ09wZXJhdGlvbk1vdmUpCisgICAg
ICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworI2VuZGlmIC8vIFVT
RShBUFBLSVQpCisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjaWYgVVNFKEFQUEtJVCkKK3N0
YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
IGRyYWdPcGVyYXRpb24pCit7CisgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQorICAgICAgICByZXR1
cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHN3aXRjaCgqZHJhZ09wZXJhdGlvbikgewor
ICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBOU0Ry
YWdPcGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbms6Cisg
ICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGNhc2UgV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25HZW5lcmlj
OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6CisgICAgICAgIHJldHVy
biBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bk1vdmU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlv
bkRlbGV0ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
TlNEcmFnT3BlcmF0aW9uTm9uZTsKK30KKyNlbHNlCitzdGF0aWMgX1VJRHJhZ09wZXJhdGlvbiBr
aXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3sKKyAg
ICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9u
ZTsKKworICAgIHN3aXRjaCgqZHJhZ09wZXJhdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uQ29weTsKKyAg
ICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICByZXR1cm4gX1VJRHJh
Z09wZXJhdGlvbk5vbmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYzoK
KyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvblByaXZhdGU6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4g
X1VJRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVs
ZXRlOgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgfQorCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOwor
fQorI2VuZGlmIC8vIFVTRShBUFBLSVQpCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkK
IAogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9u
cykKQEAgLTE5MjMsNyArMjAwOSw3IEBAIC0gKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3NpCiAKIC0gKFdl
YkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRhRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNl
c3Npb24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9i
YWxQb3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgogewotICAgIGF1dG8gZHJh
Z09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihvcGVy
YXRpb24pOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1h
c2sob3BlcmF0aW9uKTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3Jl
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbc2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
Rm9yU2Vzc2lvbjpzZXNzaW9uXSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91
bmRlZEludFBvaW50KGNsaWVudFBvc2l0aW9uKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGds
b2JhbFBvc2l0aW9uKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlv
bk5vbmUsIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgfTsKIH0KQEAgLTE5MzIsMTQgKzIwMTgs
MTQgQEAgLSAodWludDY0X3QpX2VudGVyZWREYXRhSW50ZXJhY3Rpb246KGlkIDxVSURyb3BTZXNz
aW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCkKIHsKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAg
ICAgYXV0byBkcmFnRGF0YSA9IFtzZWxmIGRyYWdEYXRhRm9yU2Vzc2lvbjpzZXNzaW9uIGNsaWVu
dDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOm9wZXJhdGlv
bl07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRl
cmVkKGRyYWdEYXRhKTsKKyAgICByZXR1cm4ga2l0KF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJv
bGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKSk7CiB9CiAKIC0gKHVpbnQ2NF90KV91cGRhdGVk
RGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9p
bnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlv
bjoodWludDY0X3Qpb3BlcmF0aW9uCiB7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogICAgIGF1dG8g
ZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lvbiBjbGllbnQ6Y2xpZW50
UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpvcGVyYXRpb25dOwotICAg
IHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFn
RGF0YSk7CisgICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5k
cmFnVXBkYXRlZChkcmFnRGF0YSkpOwogfQogCiAtICh2b2lkKV9leGl0ZWREYXRhSW50ZXJhY3Rp
b246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3Np
dGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClv
cGVyYXRpb24KQEAgLTY3NDgsOCArNjgzNCw4IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2lu
Z0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZv
IGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAgICBXZWJDb3JlOjpEcmFn
RGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFj
dGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgcmV0dXJuIGNvcmUo
c2VsZiktPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
a10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1h
c2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgcmV0dXJuIGtpdChjb3JlKHNl
bGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKSk7CiB9CiAKIC0gKE5T
RHJhZ09wZXJhdGlvbilkcmFnZ2luZ1VwZGF0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dp
bmdJbmZvCkBAIC02NzYxLDggKzY4NDcsOCBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdV
cGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBk
cmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rp
b25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIHJldHVybiBwYWdlLT5k
cmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAgICBXZWJDb3JlOjpEcmFn
RGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJh
dGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3Nl
bGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJh
Z2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJldHVybiBraXQocGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSkpOwogfQogCiAtICh2b2lkKWRyYWdnaW5nRXhp
dGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjc3Myw3ICs2ODU5LDcg
QEAgLSAodm9pZClkcmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0lu
Zm8KIAogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
TG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFs
UG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwot
ICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9i
YWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dp
bmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBj
bGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJ
bmZvXSk7CiAgICAgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdEYXRhKTsK
IH0KIApAQCAtNjc4Niw3ICs2ODcyLDcgQEAgLSAoQk9PTClwZXJmb3JtRHJhZ09wZXJhdGlvbjoo
aWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIHsKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBX
ZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAg
IGF1dG8qIGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5m
b10pOwogCiAgICAgTlNBcnJheSogdHlwZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJv
YXJkLnR5cGVzOwogICAgIGlmICghW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9h
cmRUeXBlXSAmJiBbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9t
aXNlUGFzdGVib2FyZFR5cGUoKV0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDU3NjYyOWFiYTY5Li5iZmQwYWRkZjk5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzYsNiArMzYs
NyBAQAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKICNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50RW51bXMuaD4KQEAgLTg5LDcgKzkwLDE3IEBA
IGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKIAotV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0
aW9ucyk7CisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKyNpZiBVU0UoQVBQS0lUKQordHlwZWRl
ZiBOU0RyYWdPcGVyYXRpb24gQ29jb2FEcmFnT3BlcmF0aW9uOworI2Vsc2UKK3R5cGVkZWYgdWlu
dDY0X3QgQ29jb2FEcmFnT3BlcmF0aW9uOworI2VuZGlmIC8vIFVTRShBUFBLSVQpCisKK09wdGlv
blNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soQ29jb2FE
cmFnT3BlcmF0aW9uKTsKKyNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQorCitXZWJDb3Jl
OjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyk7CiAKIE9wdGlvblNldDxX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGNvcmVMYXlvdXRNaWxlc3RvbmVzKFdlYkxheW91dE1p
bGVzdG9uZXMpOwogV2ViTGF5b3V0TWlsZXN0b25lcyBraXRMYXlvdXRNaWxlc3RvbmVzKE9wdGlv
blNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXggMzEz
MjYwMzZhOGEuLmIyNDlmZmQ4Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNDQsMTggKzQ0LDE4
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgRFdPUkQgZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhEcmFnT3BlcmF0aW9uIG9wKQorc3RhdGlj
IERXT1JEIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMoT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCiB7CiAgICAgRFdPUkQgcmVzdWx0ID0gRFJP
UEVGRkVDVF9OT05FOwotICAgIGlmIChvcCA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYg
KG9wZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gRFJP
UEVGRkVDVF9DT1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJPUEVGRkVDVF9NT1ZFOyAKLSAgICBp
ZiAob3AgJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX0NPUFk7
IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25MaW5rKQorICAgIGlmIChvcGVyYXRpb25NYXNr
LmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAgcmVzdWx0IHw9IERST1BFRkZF
Q1RfTElOSzsgCi0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKG9wZXJh
dGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICByZXN1bHQgfD0g
RFJPUEVGRkVDVF9NT1ZFOwotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25HZW5lcmljKQorICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25HZW5lcmljKSkKICAgICAg
ICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfTU9WRTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
MTUyLDcgKzE1Miw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGl0
ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIERXT1JEIG9rRWZmZWN0ID0gZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrVG9EcmFnQ3Vyc29ycyhtX3dlYlZpZXctPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS5z
b3VyY2VEcmFnT3BlcmF0aW9uKCkpOworICAgICAgICBEV09SRCBva0VmZmVjdCA9IGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMobV93ZWJWaWV3LT5wYWdlKCktPmRyYWdD
b250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7CiAgICAgICAgIERXT1JEIGVm
ZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsKICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1
aTsKICAgICAgICAgSFJFU1VMVCBociA9IEVfTk9USU1QTDsKQEAgLTE2NCwxNSArMTY0LDE1IEBA
IHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFuc2Zl
ciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYKICAgICAgICAgaWYgKGhyID09IEVfTk9USU1QTCkKICAg
ICAgICAgICAgIGhyID0gRG9EcmFnRHJvcChkYXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCks
IG9rRWZmZWN0LCAmZWZmZWN0KTsKIAotICAgICAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9
IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3Bl
cmF0aW9uTWFzazsKICAgICAgICAgaWYgKGhyID09IERSQUdEUk9QX1NfRFJPUCkgewogICAgICAg
ICAgICAgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfQ09QWSkKLSAgICAgICAgICAgICAgICBvcGVy
YXRpb24gPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25NYXNr
ID0gRHJhZ09wZXJhdGlvbkNvcHk7CiAgICAgICAgICAgICBlbHNlIGlmIChlZmZlY3QgJiBEUk9Q
RUZGRUNUX0xJTkspCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxp
bms7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9uTWFzayA9IERyYWdPcGVyYXRpb25MaW5rOwog
ICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9NT1ZFKQotICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uTW92ZTsKICAgICAgICAgfQotICAgICAgICBmcmFt
ZS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQobV93
ZWJWaWV3LCBmYWxzZSksIG9wZXJhdGlvbik7CisgICAgICAgIGZyYW1lLmV2ZW50SGFuZGxlcigp
LmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVyYXRlTW91c2VFdmVudChtX3dlYlZpZXcsIGZhbHNlKSwg
b3BlcmF0aW9uTWFzayk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApp
bmRleCAzYmRlZTZiYmQ1Yi4uNDNhYzI3ZjQ2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuY3BwCkBAIC01ODQyLDM4ICs1ODQyLDQxIEBAIEhSRVNVTFQgV2ViVmlldzo6dmlzaWJsZUNv
bnRlbnRSZWN0KF9PdXRfIExQUkVDVCByZWN0KQogICAgIHJldHVybiBTX09LOwogfQogCi1zdGF0
aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihEcmFnT3BlcmF0aW9uIG9wKSB7Ci0g
ICAgRFdPUkQgcmVzID0gRFJPUEVGRkVDVF9OT05FOwotICAgIGlmIChvcCAmIERyYWdPcGVyYXRp
b25Db3B5KSAKLSAgICAgICAgcmVzID0gRFJPUEVGRkVDVF9DT1BZOwotICAgIGVsc2UgaWYgKG9w
ICYgRHJhZ09wZXJhdGlvbkxpbmspIAotICAgICAgICByZXMgPSBEUk9QRUZGRUNUX0xJTks7Ci0g
ICAgZWxzZSBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92ZSkgCi0gICAgICAgIHJlcyA9IERST1BF
RkZFQ1RfTU9WRTsKLSAgICBlbHNlIGlmIChvcCAmIERyYWdPcGVyYXRpb25HZW5lcmljKSAKLSAg
ICAgICAgcmVzID0gRFJPUEVGRkVDVF9NT1ZFOyAvL1RoaXMgYXBwZWFycyB0byBiZSB0aGUgRmly
ZWZveCBiZWhhdmlvdXIKLSAgICByZXR1cm4gcmVzOworc3RhdGljIERXT1JEIGRyYWdPcGVyYXRp
b25Ub0RyYWdDdXJzb3IoT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykgewor
ICAgIGlmICghb3BlcmF0aW9uTWFzaykKKyAgICAgICAgcmV0dXJuIERST1BFRkZFQ1RfTk9ORTsK
KworICAgIERXT1JEIHJlc3VsdCA9IERST1BFRkZFQ1RfTk9ORTsKKyAgICBpZiAoKm9wZXJhdGlv
bk1hc2sgJiBEcmFnT3BlcmF0aW9uQ29weSkgCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1Rf
Q09QWTsKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uTWFzayAmIERyYWdPcGVyYXRpb25MaW5rKSAK
KyAgICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9MSU5LOworICAgIGVsc2UgaWYgKCpvcGVyYXRp
b25NYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpIAorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNU
X01PVkU7CisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbk1hc2sgJiBEcmFnT3BlcmF0aW9uR2VuZXJp
YykgCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1RfTU9WRTsgLy9UaGlzIGFwcGVhcnMgdG8g
YmUgdGhlIEZpcmVmb3ggYmVoYXZpb3VyCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRHJhZ09w
ZXJhdGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0
ZSkgY29uc3QKK09wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJh
Z09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkK
LSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgLy8gQ29uZm9ybXMgdG8gTWljcm9zb2Z0J3Mga2V5IGNvbWJpbmF0aW9ucyBhcyBkb2N1
bWVudGVkIGZvciAKICAgICAvLyBJRHJvcFRhcmdldDo6RHJhZ092ZXIuIE5vdGUsIGdyZktleVN0
YXRlIGlzIHRoZSBjdXJyZW50IAogICAgIC8vIHN0YXRlIG9mIHRoZSBrZXlib2FyZCBtb2RpZmll
ciBrZXlzIG9uIHRoZSBrZXlib2FyZC4gU2VlOgogICAgIC8vIDxodHRwOi8vbXNkbi5taWNyb3Nv
ZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2ODAxMjkoVlMuODUpLmFzcHg+LgotICAgIERyYWdPcGVy
YXRpb24gb3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVy
YXRpb24oKTsKKyAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVy
KCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKTsKIAogICAgIGlmICgoZ3JmS2V5U3RhdGUgJiAo
TUtfQ09OVFJPTCB8IE1LX1NISUZUKSkgPT0gKE1LX0NPTlRST0wgfCBNS19TSElGVCkpCi0gICAg
ICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICBvcGVyYXRpb25NYXNr
ID0geyBEcmFnT3BlcmF0aW9uTGluayB9OwogICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAmIE1L
X0NPTlRST0wpID09IE1LX0NPTlRST0wpCi0gICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRp
b25Db3B5OworICAgICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uQ29weSB9Owog
ICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAmIE1LX1NISUZUKSA9PSBNS19TSElGVCkKLSAgICAg
ICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgICAgIG9wZXJhdGlvbk1h
c2sgPSB7IERyYWdPcGVyYXRpb25HZW5lcmljIH07CiAKLSAgICByZXR1cm4gb3BlcmF0aW9uOwor
ICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCiBIUkVTVUxUIFdlYlZpZXc6OkRyYWdFbnRl
cihJRGF0YU9iamVjdCogcERhdGFPYmplY3QsIERXT1JEIGdyZktleVN0YXRlLCBQT0lOVEwgcHQs
IERXT1JEKiBwZHdFZmZlY3QpCkBAIC01OTE5LDggKzU5MjIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6
OkRyYWdMZWF2ZSgpCiAgICAgICAgIG1fZHJvcFRhcmdldEhlbHBlci0+RHJhZ0xlYXZlKCk7CiAK
ICAgICBpZiAobV9kcmFnRGF0YSkgewotICAgICAgICBEcmFnRGF0YSBkYXRhKG1fZHJhZ0RhdGEu
Z2V0KCksIEludFBvaW50KCksIEludFBvaW50KCksIAotICAgICAgICAgICAgRHJhZ09wZXJhdGlv
bk5vbmUpOworICAgICAgICBEcmFnRGF0YSBkYXRhKG1fZHJhZ0RhdGEuZ2V0KCksIEludFBvaW50
KCksIEludFBvaW50KCksIHsgfSk7CiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5k
cmFnRXhpdGVkKGRhdGEpOwogICAgICAgICBtX2RyYWdEYXRhID0gMDsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggMTgwNjY5OGE5YWQuLjdiMjIxMDRkOThlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5oCkBAIC01NTUsNyArNTU1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgcGVyZm9ybUxheWVyZWRXaW5kb3dVcGRhdGUoKTsKIAotICAgIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0
OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBrZXlTdGF0ZVRvRHJhZ09w
ZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogVGhpcyB2
YXJpYWJsZSBpcyBwYXJ0IG9mIGEgd29ya2Fyb3VuZC4gVGhlIGRyb3AgZWZmZWN0IChwZHdFZmZl
Y3QpIHBhc3NlZCB0byBEcm9wIGlzIGluY29ycmVjdC4gCiAgICAgLy8gV2Ugc2V0IHRoaXMgdmFy
aWFibGUgaW4gRHJhZ0VudGVyIGFuZCBEcmFnT3ZlciBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGlu
IERyb3AgdG8gc2V0IHRoZSBjb3JyZWN0IGRyb3AgZWZmZWN0LiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400897</attachid>
            <date>2020-06-02 22:14:52 -0700</date>
            <delta_ts>2020-06-03 11:56:52 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>bug-212605-v5.diff</filename>
            <type>text/plain</type>
            <size>118612</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMTUxN2UxNTVkMi4uMDdiMTUxZGE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRXZlbnRSZWdpb246OnRyYW5zbGF0ZSgpIG5lZWRzIHRvIG9mZnNl
dCB0aGUgd2hlZWwgZXZlbnQgcmVnaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApp
bmRleCA4NDYzYTQ4ZTk3NC4uNzMxMzA4YjU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC00ODgsMTggKzQ4OCwxOCBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudAogICAg
IHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
LCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3Bl
cmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0Fu
ZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+
c2V0U291cmNlT3BlcmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5z
ZXRTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFu
c2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBh
c3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQs
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8
RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigq
bmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkLCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6
IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3Bl
cmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVy
YXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmln
aW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsK
ICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQpAQCAtNTk1LDc0ICs1OTUsNzQgQEAgdm9pZCBE
cmFnSW1hZ2VMb2FkZXI6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3Qq
KQogICAgIG1fZGF0YVRyYW5zZmVyLT51cGRhdGVEcmFnSW1hZ2UoKTsKIH0KIAotc3RhdGljIERy
YWdPcGVyYXRpb24gZHJhZ09wRnJvbUlFT3AoY29uc3QgU3RyaW5nJiBvcGVyYXRpb24pCitzdGF0
aWMgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYg
b3BlcmF0aW9uKQogewogICAgIGlmIChvcGVyYXRpb24gPT0gInVuaW5pdGlhbGl6ZWQiKQotICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OworICAgICAgICByZXR1cm4gYW55RHJhZ09w
ZXJhdGlvbigpOwogICAgIGlmIChvcGVyYXRpb24gPT0gIm5vbmUiKQotICAgICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKG9wZXJhdGlv
biA9PSAiY29weSIpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAg
cmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHkgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJsaW5r
IikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICByZXR1cm4geyBE
cmFnT3BlcmF0aW9uTGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gIm1vdmUiKQotICAgICAg
ICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJh
dGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09w
ZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TGluayIpCi0gICAgICAg
IHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9u
TGluayk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9u
TGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHlNb3ZlIikKLSAgICAgICAgcmV0dXJu
IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uQ29weSB8IERyYWdPcGVyYXRpb25HZW5lcmlj
IHwgRHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29w
eSwgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9w
ZXJhdGlvbiA9PSAibGlua01vdmUiKQotICAgICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25MaW5rIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92
ZSk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJhbGwiKQot
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OwotICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uUHJpdmF0ZTsgLy8gcmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIKKyAgICAg
ICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSB9OyAvLyBSZWFsbHkgYSBtYXJrZXIgZm9yICJubyBjb252ZXJzaW9uIi4KIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
KQorc3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBvcGVyYXRpb25NYXNrKQogewotICAgIGJvb2wgaXNHZW5lcmljTW92ZSA9IG9wZXJhdGlv
biAmIChEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBib29s
IGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHsgRHJhZ09wZXJhdGlv
bkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pOwogCi0gICAgaWYgKChpc0dlbmVyaWNNb3Zl
ICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25MaW5rKSkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBp
ZiAoKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpIHx8IG9w
ZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gImFsbCI7
Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5
KSkKKyAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5TW92ZSI7Ci0gICAgaWYgKGlzR2Vu
ZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAoaXNH
ZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkK
ICAgICAgICAgcmV0dXJuICJsaW5rTW92ZSI7Ci0gICAgaWYgKChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAo
b3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0
aW9uTGluayB9KSkKICAgICAgICAgcmV0dXJuICJjb3B5TGluayI7CiAgICAgaWYgKGlzR2VuZXJp
Y01vdmUpCiAgICAgICAgIHJldHVybiAibW92ZSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25Db3B5KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5IjsKLSAgICBpZiAob3BlcmF0aW9uICYgRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJh
dGlvbkxpbmspKQogICAgICAgICByZXR1cm4gImxpbmsiOwogICAgIHJldHVybiAibm9uZSI7CiB9
CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb24oKSBjb25zdAor
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFz
aygpIGNvbnN0CiB7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVP
cChtX2VmZmVjdEFsbG93ZWQpOwotICAgIEFTU0VSVChvcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlv
blByaXZhdGUpOwotICAgIHJldHVybiBvcGVyYXRpb247CisgICAgYXV0byBvcGVyYXRpb25NYXNr
ID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsKKyAgICBBU1NFUlQob3BlcmF0aW9u
TWFzayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7
CiB9CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbigp
IGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlv
bk9wZXJhdGlvbk1hc2soKSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0g
ZHJhZ09wRnJvbUlFT3AobV9kcm9wRWZmZWN0KTsKLSAgICBBU1NFUlQob3BlcmF0aW9uID09IERy
YWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcGVy
YXRpb24gPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9u
KShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKSB8fCBvcGVyYXRpb24g
PT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8g
b3BlcmF0aW9uTWFzayA9IGRyYWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7CisgICAgQVNTRVJU
KG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0Vt
cHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25N
YXNrID09IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IERyYWdPcGVyYXRpb25HZW5lcmljLCBE
cmFnT3BlcmF0aW9uTW92ZSB9KSB8fCBvcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24o
KSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpz
ZXRTb3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFu
c2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3Bl
cmF0aW9uTWFzaykKIHsKLSAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbiwgb3BlcmF0aW9uICE9IERy
YWdPcGVyYXRpb25Qcml2YXRlKTsKLSAgICBtX2VmZmVjdEFsbG93ZWQgPSBJRU9wRnJvbURyYWdP
cChvcGVyYXRpb24pOworICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uTWFzaywgb3BlcmF0aW9uTWFz
ayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZy
b21EcmFnT3Aob3BlcmF0aW9uTWFzayk7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0
aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgRGF0YVRyYW5z
ZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiA9
PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwg
b3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0
aW9uR2VuZXJpYyB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9u
ID09IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25N
b3ZlKSk7Ci0gICAgbV9kcm9wRWZmZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAg
ICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlv
bkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFn
T3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8
IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uTWFzayA9PSBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJh
dGlvbk1vdmUgfSkpOworICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlv
bk1hc2spOwogfQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuaAppbmRleCBlNWNmYWY4NTZmYi4uMGU3NDgwYTFmOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTg4LDE1ICs4OCwxNSBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRm9yRHJhZygpOwogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFn
U3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVy
PiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRy
YWdnaW5nRmlsZXMpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9w
KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERh
dGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKIAogICAgIGJvb2wgZHJvcEVmZmVjdElzVW5pbml0aWFsaXpl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVmZmVjdCA9PSAidW5pbml0aWFsaXplZCI7IH0KIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uKCkgY29uc3Q7Ci0gICAgRHJhZ09wZXJh
dGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0U291cmNlT3Bl
cmF0aW9uKERyYWdPcGVyYXRpb24pOwotICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRpb24o
RHJhZ09wZXJhdGlvbik7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2soKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZGVzdGluYXRp
b25PcGVyYXRpb25NYXNrKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTb3VyY2VPcGVyYXRpb25NYXNr
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogICAgIHZvaWQgc2V0RHJhZ0hh
c1N0YXJ0ZWQoKSB7IG1fc2hvdWxkVXBkYXRlRHJhZ0ltYWdlID0gdHJ1ZTsgfQogICAgIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2NhdGlvbikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5kZXggYTkyM2NhZTU4Y2IuLmJmODNkNjNjZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC02MCwxOCArNjAsMjEgQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJh
Z1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCisvLyBTZWUgTlNE
cmFnT3BlcmF0aW9uLCBfVUlEcmFnT3BlcmF0aW9uIGFuZCBVSURyb3BPcGVyYXRpb24uCiB0eXBl
ZGVmIGVudW0gewotICAgIERyYWdPcGVyYXRpb25Ob25lICAgID0gMCwKICAgICBEcmFnT3BlcmF0
aW9uQ29weSAgICA9IDEsCiAgICAgRHJhZ09wZXJhdGlvbkxpbmsgICAgPSAyLAogICAgIERyYWdP
cGVyYXRpb25HZW5lcmljID0gNCwKICAgICBEcmFnT3BlcmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAg
RHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwKICAgICBEcmFnT3BlcmF0aW9uRGVsZXRlICA9IDMy
LAotICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlOVF9NQVgKIH0gRHJhZ09wZXJhdGlvbjsK
IAorY29uc3RleHByIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkK
K3sKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmssIERy
YWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1v
dmUsIERyYWdPcGVyYXRpb25EZWxldGUgfTsKK30KKwogZW51bSBjbGFzcyBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhhc05vbkRlZmF1bHRQYXN0
ZWJvYXJkRGF0YSA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIERyYWdIYW5kbGluZ01l
dGhvZCA6IHVpbnQ4X3QgeyBOb25lLCBFZGl0UGxhaW5UZXh0LCBFZGl0UmljaFRleHQsIFVwbG9h
ZEZpbGUsIFBhZ2VMb2FkLCBTZXRDb2xvciwgTm9uRGVmYXVsdCB9OwpAQCAtOTMsNiArOTYsMTgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2Q+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkNvcHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3Ry
dWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAg
ICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiwKQEAgLTEwMiw0ICsxMTcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgID47
CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IE9wdGlvblNldFZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblBy
aXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA0ZWUyZTJmYjM1OC4u
Y2YzMDlmM2M5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0y
MDgsNyArMjA4LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBjbGll
bnQoKS5kcmFnRW5kZWQoKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
IHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEpOwogfQpAQCAtMjI0
LDcgKzIyNCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRy
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBk
cmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBjbGVhckRy
YWdDYXJldCgpOwogCi0gICAgaWYgKG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpID09IERyYWdP
cGVyYXRpb25Ob25lKQorICAgIGlmICghb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gdXJsU3RyaW5nID0gZHJhZ0RhdGEuYXNVUkwo
KTsKQEAgLTMwNCwyMSArMzA0LDIxIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZWRJ
bnRvRG9jdW1lbnQoRG9jdW1lbnQqIG5ld0RvY3VtZW50KQogICAgIG1fZG9jdW1lbnRVbmRlck1v
dXNlID0gbmV3RG9jdW1lbnQ7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERy
YWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpKTsK
IAogICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2soKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmlz
RW1wdHkoKSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBGSVhNRTogV2h5IG5vdCBj
YWxsIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/Ci0gICAgICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgIG1fZHJhZ0hhbmRsaW5n
TWV0aG9kID0gdHJ5RG9jdW1lbnREcmFnKGRyYWdEYXRhLCBtX2RyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2ssIGRyYWdPcGVyYXRpb24pOwogICAgIGlmIChtX2RyYWdIYW5kbGluZ01ldGhvZCA9PSBE
cmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUgJiYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5j
b250YWlucyhEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpKSkgewogICAgICAgICBkcmFnT3Bl
cmF0aW9uID0gb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSk7Ci0gICAgICAgIGlmIChkcmFnT3Bl
cmF0aW9uICE9IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbikK
ICAgICAgICAgICAgIG1fZHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpQ
YWdlTG9hZDsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ0hhbmRsaW5nTWV0aG9kID09IERyYWdIYW5k
bGluZ01ldGhvZDo6U2V0Q29sb3IpCiAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0
aW9uQ29weTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbgogCiAj
ZW5kaWYKIAotRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERy
YWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIERyYWdPcGVyYXRpb24mIGRyYWdPcGVyYXRpb24p
CitEcmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIGRyYWdPcGVyYXRp
b24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSkKICAgICAgICAgcmV0dXJuIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBEcmFnSGFuZGxpbmdN
ZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEsIE9wdAogICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9
IDE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9udW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkKQotICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgICAg
ICAgICAgbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+c2V0Q2FuUmVjZWl2ZURyb3BwZWRG
aWxlcyhtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBvdmVyIGEgZmlsZSBpbnB1dCBlbGVtZW50LiBUaGUgZHJh
Z2dlZCBpdGVtKHMpIHdpbGwgbG9hZGVkIGludG8gdGhlIHZpZXcsCkBAIC00ODksNyArNDg5LDcg
QEAgRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiByb290VmkKICAgICByZXR1cm4gbV9kcmFnU291cmNlQWN0aW9u
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250
cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50
KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOwogCkBAIC01MDQsNyArNTA0LDcgQEAgRHJhZ09w
ZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50ICYmIChtX2RpZEluaXRpYXRlRHJh
ZyB8fCAoaXM8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVudCkgJiYgIXBsdWdpbkRvY3VtZW50QWNj
ZXB0c0RyYWdzKSB8fCBkb2N1bWVudC0+aGFzRWRpdGFibGVTdHlsZSgpKSkKLSAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHJldHVybiBkcmFnT3BlcmF0aW9uKGRyYWdEYXRhKTsKIH0KIApAQCAtNjkzLDI4ICs2OTMsMjgg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBkZWZh
dWx0T3BlcmF0aW9uRm9yRHJhZyhEcmFnT3BlcmF0aW9uIHNyY09wTWFzaykKK3N0YXRpYyBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaykKIHsKICAgICAvLyBUaGlzIGlzIGRlc2ln
bmVkIHRvIG1hdGNoIElFJ3Mgb3BlcmF0aW9uIGZhbGxiYWNrIGZvciB0aGUgY2FzZSB3aGVyZQog
ICAgIC8vIHRoZSBwYWdlIGNhbGxzIHByZXZlbnREZWZhdWx0KCkgaW4gYSBkcmFnIGV2ZW50IGJ1
dCBkb2Vzbid0IHNldCBkcm9wRWZmZWN0LgotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09wZXJh
dGlvbkV2ZXJ5KQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1h
c2sgPT0gRHJhZ09wZXJhdGlvbk5vbmUpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9u
ZTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkK
ICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwotICAgIGlmIChzcmNPcE1hc2sgJiBE
cmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAgIHJldHVybiBEcmFnQ29udHJvbGxlcjo6
cGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFn
T3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKLSAgICBp
ZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKHNvdXJjZU9wZXJhdGlv
bk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbkxpbms7CiAgICAgCiAgICAgLy8gRklYTUU6IERvZXMgSUUgcmVhbGx5IHJldHVybiAi
Z2VuZXJpYyIgZXZlbiBpZiBubyBvcGVyYXRpb25zIHdlcmUgYWxsb3dlZCBieSB0aGUgc291cmNl
PwogICAgIHJldHVybiBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKIH0KIAotYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlv
biYgb3BlcmF0aW9uKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIG9wZXJhdGlvbikKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudFVuZGVyTW91c2UpOwogICAgIFJlZjxGcmFtZT4gbWFpbkZy
YW1lKG1fcGFnZS5tYWluRnJhbWUoKSk7CkBAIC03MjIsMTcgKzcyMiwxNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3Bl
cmF0aW9uJiBvcGVyYQogICAgIGlmICghdmlld1Byb3RlY3RvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24gPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKLSAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7IHJldHVybiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7IH0sIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ0RhdGEuY29udGFp
bnNGaWxlcygpKTsKKyAgICBhdXRvIHNvdXJjZU9wZXJhdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKKyAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7IHJldHVybiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7IH0sIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdEYXRhLmNv
bnRhaW5zRmlsZXMoKSk7CiAgICAgaWYgKCF0YXJnZXRSZXNwb25zZS5hY2NlcHQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmICghdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uKQotICAg
ICAgICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb24p
OwotICAgIGVsc2UgaWYgKCEoc291cmNlT3BlcmF0aW9uICYgdGFyZ2V0UmVzcG9uc2Uub3BlcmF0
aW9uLnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3BlcmF0aW9uIHdoaWNoIGlz
IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3Bl
cmF0aW9uTm9uZTsKKyAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2spCisgICAg
ICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNvdXJjZU9wZXJhdGlvbk1h
c2spOworICAgIGVsc2UgaWYgKCFzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHRhcmdl
dFJlc3BvbnNlLm9wZXJhdGlvbk1hc2sudmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBh
biBvcGVyYXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlCisgICAgICAg
IG9wZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICBlbHNlCi0gICAgICAgIG9wZXJhdGlvbiA9
IHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbi52YWx1ZSgpOworICAgICAgICBvcGVyYXRpb24gPSBk
ZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyh0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrLnZhbHVl
KCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NTYsNyArOTU2LDcgQEAgT3B0aW9uYWw8
SGl0VGVzdFJlc3VsdD4gRHJhZ0NvbnRyb2xsZXI6OmhpdFRlc3RSZXN1bHRGb3JEcmFnU3RhcnQo
RnJhbWUmIHNvdXJjZSwKICAgICByZXR1cm4geyBoaXRUZXN0UmVzdWx0IH07CiB9CiAKLWJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0
YXRlLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdF
dmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJk
RGF0YSBoYXNEYXRhKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNEYXRh
KQogewogICAgIGlmICghc3RhdGUuc291cmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05
NzIsNyArOTcyLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBJbnRQb2ludCBtb3Vz
ZURyYWdnZWRQb2ludCA9IHNyYy52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZHJhZ0V2ZW50LnBv
c2l0aW9uKCkpOwogCiAgICAgbV9kcmFnZ2luZ0ltYWdlVVJMID0gVVJMKCk7Ci0gICAgbV9zb3Vy
Y2VEcmFnT3BlcmF0aW9uID0gc3JjT3A7CisgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFzayA9
IHNvdXJjZU9wZXJhdGlvbk1hc2s7CiAKICAgICBEcmFnSW1hZ2UgZHJhZ0ltYWdlOwogICAgIElu
dFBvaW50IGRyYWdMb2MoMCwgMCk7CkBAIC05OTUsNyArOTk1LDcgQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdP
cGVyYXRpb24KICAgICAgICAgLy8gU2VsZWN0aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJhZ3MgcmVj
ZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQKICAgICAg
ICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAgICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jy
b3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNM
MzQzMAotICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcmFnT3Bl
cmF0aW9uPihtX3NvdXJjZURyYWdPcGVyYXRpb24gfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERy
YWdPcGVyYXRpb25Db3B5KTsKKyAgICAgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFzay5hZGQo
eyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlvbkNvcHkgfSk7CiAgICAgfQogCiAg
ICAgQVNTRVJUKHN0YXRlLnNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgK
aW5kZXggOTBmODc1YzA2N2EuLmVhNDk5ZTBlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5oCkBAIC01OSw5ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEcmFnT3Bl
cmF0aW9uIHBsYXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRpb24oKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIERyYWdPcGVyYXRpb24gZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZChjb25zdCBEcmFn
RGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0
YSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdPcGVyYXRpb24gZHJhZ1VwZGF0ZWQoY29uc3Qg
RHJhZ0RhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBk
cmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGVy
Zm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYWdDYW5jZWxsZWQoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgLy8g
ZHJhZyBsb2dpYyBpcyBpbiBXZWJDb3JlLgogICAgIHZvaWQgc2V0RGlkSW5pdGlhdGVEcmFnKGJv
b2wgaW5pdGlhdGVkKSB7IG1fZGlkSW5pdGlhdGVEcmFnID0gaW5pdGlhdGVkOyB9CiAgICAgYm9v
bCBkaWRJbml0aWF0ZURyYWcoKSBjb25zdCB7IHJldHVybiBtX2RpZEluaXRpYXRlRHJhZzsgfQot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlRHJhZ09wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlRHJhZ09wZXJhdGlvbjsgfQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3Vy
Y2VEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhZ09wZXJhdGlv
bk1hc2s7IH0KICAgICBjb25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJldHVy
biBtX2RyYWdnaW5nSW1hZ2VVUkw7IH0KICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29uc3QgSW50
UG9pbnQmIG9mZnNldCkgeyBtX2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICBjb25zdCBJbnRQ
b2ludCYgZHJhZ09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ09mZnNldDsgfQpAQCAtOTUs
NyArOTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXpl
cyk7CiAKICAgICB2b2lkIHByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZUZyYW1lLCBE
cmFnU291cmNlQWN0aW9uLCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBEYXRhVHJhbnNmZXImLCBj
b25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydERyYWcoRnJh
bWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBI
YXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBI
YXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgIHN0YXRpYyBjb25zdCBJbnRTaXplJiBt
YXhEcmFnSW1hZ2VTaXplKCk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IE1heE9yaWdpbmFsSW1h
Z2VBcmVhOwpAQCAtMTA4LDExICsxMDgsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGRpc3BhdGNo
VGV4dElucHV0RXZlbnRGb3IoRnJhbWUqLCBjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY2Fu
UHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGNvbmNsdWRlRWRpdERyYWco
Y29uc3QgRHJhZ0RhdGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkT3JVcGRhdGVk
KGNvbnN0IERyYWdEYXRhJik7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb25Gb3JMb2FkKGNv
bnN0IERyYWdEYXRhJik7Ci0gICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3VtZW50RHJhZyhj
b25zdCBEcmFnRGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+LCBEcmFnT3Bl
cmF0aW9uJik7Ci0gICAgYm9vbCB0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmLCBEcmFnT3Bl
cmF0aW9uJik7Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRh
Jik7CisgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29u
c3QgRHJhZ0RhdGEmKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25Gb3JM
b2FkKGNvbnN0IERyYWdEYXRhJik7CisgICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3VtZW50
RHJhZyhjb25zdCBEcmFnRGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+LCBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiYpOworICAgIGJvb2wgdHJ5REhUTUxEcmFnKGNvbnN0IERy
YWdEYXRhJiwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKKyAgICBPcHRpb25hbDxEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgdm9pZCBjbGVhckRy
YWdDYXJldCgpOwogICAgIGJvb2wgZHJhZ0lzTW92ZShGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IERy
YWdEYXRhJik7CiAgICAgYm9vbCBpc0NvcHlLZXlEb3duKGNvbnN0IERyYWdEYXRhJik7CkBAIC0x
NTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7CiAgICAgRHJhZ1NvdXJjZUFjdGlvbiBt
X2RyYWdTb3VyY2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9uTm9uZSB9OwogICAgIGJvb2wgbV9k
aWRJbml0aWF0ZURyYWcgeyBmYWxzZSB9OwotICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFn
T3BlcmF0aW9uIHsgRHJhZ09wZXJhdGlvbk5vbmUgfTsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVu
IGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0aGluIFdlYktpdAorICAgIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrOyAvLyBTZXQgaW4g
c3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2Vi
S2l0LgogICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKICAgICBVUkwgbV9kcmFnZ2luZ0ltYWdl
VVJMOwogICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdEcm9wIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBkNTU3N2VlZjExNC4uNWJkMGQwOWY1MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIzMzQsNyArMjMzNCw3IEBAIHN0YXRp
YyBib29sIHRhcmdldElzRnJhbWUoTm9kZSogdGFyZ2V0LCBGcmFtZSomIGZyYW1lKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBjb252ZXJ0RHJvcFpvbmVPcGVy
YXRpb25Ub0RyYWdPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnT3BlcmF0aW9uKQorc3RhdGlj
IE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09w
ZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKGRyYWdPcGVy
YXRpb24gPT0gImNvcHkiKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CkBAIC0y
MzQyLDIxICsyMzQyLDI0IEBAIHN0YXRpYyBEcmFnT3BlcmF0aW9uIGNvbnZlcnREcm9wWm9uZU9w
ZXJhdGlvblRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPCiAgICAgICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTW92ZTsKICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAibGluayIpCiAg
ICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlv
bk5vbmU7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIFN0cmluZyBjb252
ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRp
b24pCitzdGF0aWMgU3RyaW5nIGNvbnZlcnREcmFnT3BlcmF0aW9uVG9Ecm9wWm9uZU9wZXJhdGlv
bihPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCiB7Ci0gICAgc3dpdGNoIChvcGVy
YXRpb24pIHsKLSAgICBjYXNlIERyYWdPcGVyYXRpb25Db3B5OgotICAgICAgICByZXR1cm4gImNv
cHkiX3M7Ci0gICAgY2FzZSBEcmFnT3BlcmF0aW9uTW92ZToKLSAgICAgICAgcmV0dXJuICJtb3Zl
Il9zOwotICAgIGNhc2UgRHJhZ09wZXJhdGlvbkxpbms6Ci0gICAgICAgIHJldHVybiAibGluayJf
czsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gImNvcHkiX3M7CisgICAgaWYgKG9wZXJh
dGlvbikgeworICAgICAgICBzd2l0Y2ggKCpvcGVyYXRpb24pIHsKKyAgICAgICAgY2FzZSBEcmFn
T3BlcmF0aW9uQ29weToKKyAgICAgICAgICAgIHJldHVybiAiY29weSJfczsKKyAgICAgICAgY2Fz
ZSBEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAgICAgICAgIHJldHVybiAibW92ZSJfczsKKyAgICAg
ICAgY2FzZSBEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgICAgIHJldHVybiAibGluayJfczsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQor
ICAgIHJldHVybiAiY29weSJfczsKIH0KIAogc3RhdGljIGJvb2wgaGFzRHJvcFpvbmVUeXBlKERh
dGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBjb25zdCBTdHJpbmcmIGtleXdvcmQpCkBAIC0yMzc2
LDE1ICsyMzc5LDE1IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQsIERh
dGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQogICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcga2V5
d29yZHMoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRkcm9w
em9uZUF0dHIpLCB0cnVlKTsKICAgICAgICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7Ci0gICAgICAg
IERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAg
ICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBzaXplID0ga2V5d29yZHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgICAgICBEcmFnT3BlcmF0aW9uIG9wID0gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9E
cmFnT3BlcmF0aW9uKGtleXdvcmRzW2ldKTsKLSAgICAgICAgICAgIGlmIChvcCAhPSBEcmFnT3Bl
cmF0aW9uTm9uZSkgewotICAgICAgICAgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uID09IERyYWdP
cGVyYXRpb25Ob25lKQotICAgICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3A7Cisg
ICAgICAgICAgICBhdXRvIG9wZXJhdGlvbkZyb21LZXl3b3JkID0gY29udmVydERyb3Bab25lT3Bl
cmF0aW9uVG9EcmFnT3BlcmF0aW9uKGtleXdvcmRzW2ldKTsKKyAgICAgICAgICAgIGlmIChvcGVy
YXRpb25Gcm9tS2V5d29yZCkgeworICAgICAgICAgICAgICAgIGlmICghZHJhZ09wZXJhdGlvbikK
KyAgICAgICAgICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wZXJhdGlvbkZyb21LZXl3b3Jk
OwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IG1hdGNoZWQg
fHwgaGFzRHJvcFpvbmVUeXBlKGRhdGFUcmFuc2Zlciwga2V5d29yZHNbaV0uc3RyaW5nKCkpOwot
ICAgICAgICAgICAgaWYgKG1hdGNoZWQgJiYgZHJhZ09wZXJhdGlvbiAhPSBEcmFnT3BlcmF0aW9u
Tm9uZSkKKyAgICAgICAgICAgIGlmIChtYXRjaGVkICYmIGRyYWdPcGVyYXRpb24pCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1hdGNoZWQpIHsKQEAgLTIz
OTYsMTkgKzIzOTksMTkgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5vZGUmIHRhcmdldCwg
RGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCiB9CiAKIEV2ZW50SGFuZGxlcjo6RHJhZ1Rhcmdl
dFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYg
cGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdG
aWxlcykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0Zp
bGVzKQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JV
cGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0LmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCks
IHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIg
PSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCh0YXJnZXQuZG9jdW1l
bnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdG
aWxlcyk7CiAgICAgYm9vbCBhY2NlcHQgPSBkaXNwYXRjaERyYWdFdmVudChldmVudFR5cGUsIHRh
cmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQoKSk7CiAgICAgaWYgKCFhY2NlcHQpCiAgICAg
ICAgIGFjY2VwdCA9IGZpbmREcm9wWm9uZSh0YXJnZXQsIGRhdGFUcmFuc2Zlcik7CiAgICAgZGF0
YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgaWYgKGFjY2VwdCAmJiAh
ZGF0YVRyYW5zZmVyLT5kcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVy
biB7IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb24oKSB9OworICAgICAg
ICByZXR1cm4geyB0cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygp
IH07CiAgICAgcmV0dXJuIHsgYWNjZXB0LCBXVEY6Om51bGxvcHQgfTsKIH0KIAotRXZlbnRIYW5k
bGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYgbWFrZVBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitFdmVudEhhbmRsZXI6OkRyYWdU
YXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+KCk+JiBtYWtlUGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJh
bWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogICAgIGlmICghbV9mcmFtZS52aWV3KCkpCkBA
IC0yNDM4LDE5ICsyNDQxLDE5IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2
ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZy
YW1lKiB0YXJnZXRGcmFtZTsKICAgICAgICAgaWYgKHRhcmdldElzRnJhbWUobmV3VGFyZ2V0Lmdl
dCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAg
ICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVE
cmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dp
bmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRI
YW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VP
cGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJn
ZXQpIHsKICAgICAgICAgICAgIC8vIEFzIHBlciBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUg
c3BlYy4sIHdlIG11c3QgYWx3YXlzIGZpcmUgYSBkcmFnIGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBk
cmFnZW50ZXIsIGRyYWdsZWF2ZSwgb3IgZHJhZ292ZXIgZXZlbnQuCiAgICAgICAgICAgICBkaXNw
YXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVu
dCk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQ
YXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAg
ICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJvYXJkKCksIHNv
dXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBSZWN1cnNpbmcgYWdhaW4gaGVyZSBkb2Vzbid0IG1ha2Ugc2Vu
c2UgaWYgdGhlIG5ld1RhcmdldCBhbmQgbV9kcmFnVGFyZ2V0IHdlcmUgaW4gdGhlIHNhbWUgZnJh
bWUuCiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9u
c2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQs
IG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAg
ICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURy
YWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJh
Z2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0gICAgICAg
ICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdE
cm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291
cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5z
ZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFy
Z2V0LT5kb2N1bWVudCgpLCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBk
cmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnbGVhdmVFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQo
KSk7CiAgICAgICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsK
ICAgICAgICAgfQpAQCAtMjQ2NCwxMiArMjQ2NywxMiBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJn
ZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3Jt
TQogICAgICAgICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1l
KG5ld1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0
RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVy
YXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0
RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVi
b2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxz
ZSBpZiAobmV3VGFyZ2V0KSB7CiAgICAgICAgICAgICAvLyBOb3RlLCB3aGVuIGRlYWxpbmcgd2l0
aCBzdWItZnJhbWVzLCB3ZSBtYXkgbmVlZCB0byBmaXJlIG9ubHkgYSBkcmFnb3ZlciBldmVudCBh
cyBhIGRyYWcgZXZlbnQgbWF5IGhhdmUgYmVlbiBmaXJlZCBlYXJsaWVyLgogICAgICAgICAgICAg
aWYgKCFtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCkKICAgICAgICAgICAgICAgICBkaXNw
YXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVu
dCk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnb3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBh
c3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAg
IHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygp
LmRyYWdvdmVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgICAgIG1fc2hvdWxkT25s
eUZpcmVEcmFnT3ZlckV2ZW50ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDc3LDI1
ICsyNDgwLDI1IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgcmV0dXJuIHJlc3BvbnNl
OwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVi
b2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykK
K3ZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2lu
Z0ZpbGVzKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKICAg
ICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0
LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAg
ICAgICAgdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGV2ZW50
LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOwor
ICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9w
KGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2lu
Z0ZpbGVzKTsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewogICAgICAgICBkaXNwYXRj
aEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7
CiAKLSAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVw
ZGF0aW5nRHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVi
b2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0
YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9k
cmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRp
b25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRO
YW1lcygpLmRyYWdsZWF2ZUV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVy
LmdldCgpKTsKICAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7
CiAgICAgfQogICAgIGNsZWFyRHJhZ1N0YXRlKCk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpw
ZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VP
cGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3Jt
RHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+
IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCkBAIC0yNTAzLDkgKzI1MDYsOSBAQCBib29sIEV2
ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZlbnQsIHN0ZDo6dW5pcQogICAgIGJvb2wgcHJldmVudGVkRGVmYXVsdCA9IGZhbHNlOwogICAg
IGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAg
ICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgIHByZXZlbnRlZERlZmF1bHQgPSB0
YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGV2ZW50LCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAg
ICAgICAgcHJldmVudGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJm
b3JtRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0g
ICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKG1f
ZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0
aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBh
c3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAg
cHJldmVudGVkRGVmYXVsdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcm9wRXZl
bnQsICptX2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkYXRhVHJh
bnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICB9CkBAIC0zNzI5LDEzICszNzMy
LDEzIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkaWRTdGFydERyYWcoKQogI2VuZGlmCiB9CiAKLXZv
aWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24g
bWF5RXh0ZW5kRHJhZ1Nlc3Npb24pCit2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVk
QXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGRyYWdPcGVyYXRpb25NYXNrLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFn
U2Vzc2lvbikKIHsKICAgICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVxdWVzdCBzbyB0aGF0IFJlbmRl
ckxheWVyIGdldHMgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92ZXIgYW5kIDphY3RpdmUgcHNl
dWRvY2xhc3Nlcy4KICAgICBwcmVwYXJlTW91c2VFdmVudChPcHRpb25TZXQ8SGl0VGVzdFJlcXVl
c3Q6OlJlcXVlc3RUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVz
dDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH0sIGV2ZW50KTsKIAogICAgIGlmIChz
aG91bGREaXNwYXRjaEV2ZW50c1RvRHJhZ1NvdXJjZUVsZW1lbnQoKSkgewotICAgICAgICBkcmFn
U3RhdGUoKS5kYXRhVHJhbnNmZXItPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbik7
CisgICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRp
b25NYXNrKGRyYWdPcGVyYXRpb25NYXNrKTsKICAgICAgICAgZGlzcGF0Y2hFdmVudFRvRHJhZ1Nv
dXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwgZXZlbnQpOwogICAgIH0KICAg
ICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CkBAIC0zODY1LDcgKzM4NjgsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCwgQ2hlY2tEcgogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBw
b2ludCwgd2UgZG9uJ3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawogICAg
IGludmFsaWRhdGVDbGljaygpOwogICAgIAotICAgIERyYWdPcGVyYXRpb24gc3JjT3AgPSBEcmFn
T3BlcmF0aW9uTm9uZTsgICAgICAKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNl
T3BlcmF0aW9uTWFzazsKICAgICAKICAgICAvLyBUaGlzIGRvZXMgd29yayBvbmx5IGlmIHdlIG1p
c3NlZCBhIGRyYWdFbmQuIERvIGl0IGFueXdheSwganVzdCB0byBtYWtlIHN1cmUgdGhlIG9sZCBk
YXRhVHJhbnNmZXIgZ2V0cyBudW1iZWQuCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGRvaW5nIHRo
aXMgZWFybGllciBpbiB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBlYXJsaWVzdCBwb2ludCB3ZSdyZSBz
dXJlIGl0IHdvdWxkIGJlIHNhZmUgdG8gZHJvcCBhbiBvbGQgZHJhZy4KQEAgLTM5MDAsNyArMzkw
Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAKICAgICAgICAgaWYgKG1fbW91c2VEb3du
TWF5U3RhcnREcmFnKSB7CiAgICAgICAgICAgICAvLyBHYXRoZXIgdmFsdWVzIGZyb20gREhUTUwg
ZWxlbWVudCwgaWYgaXQgc2V0IGFueS4KLSAgICAgICAgICAgIHNyY09wID0gZHJhZ1N0YXRlKCku
ZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHNvdXJjZU9wZXJh
dGlvbk1hc2sgPSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbk1hc2so
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gWXVjaywgYSBkcmFnZ2VkSW1hZ2U6bW92
ZVRvOiBtZXNzYWdlIGNhbiBiZSBmaXJlZCBhcyBhIHJlc3VsdCBvZiBraWNraW5nIG9mZiB0aGUK
ICAgICAgICAgICAgIC8vIGRyYWcgd2l0aCBkcmFnSW1hZ2UhIEJlY2F1c2Ugb2YgdGhhdCBkdW1i
IHJlZW50cmFuY3ksIHdlIG1heSB0aGluayB3ZSd2ZSBub3QKQEAgLTM5MTEsNyArMzkxNCw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAg
bV9kaWRTdGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFn
KG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25D
b250ZW50c1Bvc2l0aW9uLCBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgICAgICBt
X2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWco
bV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGV2ZW50LmV2ZW50KCks
IG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
KTsKICAgICAgICAgLy8gSW4gV2ViS2l0MiB3ZSBjb3VsZCByZS1lbnRlciB0aGlzIGNvZGUgYW5k
IHN0YXJ0IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBwcm9i
bGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9taXNl
ZCB0eXBlcy4KICAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAppbmRleCA2ZmZjODNjMDEyZi4uMjdjYWU2MWVkMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaApAQCAtMTYzLDExICsxNjMsMTEgQEAgcHVibGljOgogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgc3RydWN0IERyYWdUYXJnZXRSZXNwb25zZSB7CiAgICAgICAg
IGJvb2wgYWNjZXB0IHsgZmFsc2UgfTsKLSAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
b3BlcmF0aW9uOworICAgICAgICBPcHRpb25hbDxPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4+IG9w
ZXJhdGlvbk1hc2s7CiAgICAgfTsKLSAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgdXBkYXRlRHJhZ0Fu
ZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlv
biwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKLSAgICB2b2lkIGNhbmNlbERyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFn
T3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIGJvb2wgcGVyZm9ybURyYWdBbmRE
cm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIERyYWdUYXJnZXRS
ZXNwb25zZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25z
dCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICB2b2lkIGNhbmNlbERy
YWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7
CisgICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB2b2lkIHVwZGF0ZURyYWdTdGF0ZUFmdGVyRWRpdERy
YWdJZk5lZWRlZChFbGVtZW50JiByb290RWRpdGFibGVFbGVtZW50KTsKICAgICBSZWZQdHI8RWxl
bWVudD4gZHJhZ2dlZEVsZW1lbnQoKSBjb25zdDsKICNlbmRpZgpAQCAtMjY4LDcgKzI2OCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFN0YXJ0RHJhZygpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgRHJh
Z09wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gPSBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6
Tm8pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpObyk7CiAjZW5kaWYKIAogICAgIHZvaWQg
Zm9jdXNEb2N1bWVudFZpZXcoKTsKQEAgLTQxNiw3ICs0MTYsNyBAQCBwcml2YXRlOgogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIGRpc3BhdGNoRHJhZ0V2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmLCBEYXRhVHJhbnNmZXImKTsKLSAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hE
cmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVt
ZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiYmICwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBE
cmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmICwgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgaW52YWxpZGF0ZURhdGFU
cmFuc2ZlcigpOwogCiAgICAgYm9vbCBoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAppbmRleCA3ZDA1MmNmZTE4YS4uZjg2ZWE0MzU2
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAK
QEAgLTUwLDEzICs1MCwxMyBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4gZHJhZ0RhdGEuZmxhZ3MoKSAmIERy
YWdBcHBsaWNhdGlvbklzQ29weUtleURvd247CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGlzIGluY29tcGxldGUK
ICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVy
YXRpb25Db3B5OwogCi0gICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhEcmFn
SW1hZ2VTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250
cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMu
bW0KaW5kZXggODViZDQ4YWNjMjIuLjg5NzE0Y2U1NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQpAQCAtNjQsMTAgKzY0LDEwIEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAg
IHJldHVybiBkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsK
IH0KICAgICAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29u
c3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlm
IChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCkKLSAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgYm9vbCBtYXlDb250YWluVVJMOwogICAgIGlmIChjYW5Mb2FkRGF0YUZyb21EcmFnZ2luZ1Bh
c3RlYm9hcmQoKSkKQEAgLTc2LDEyICs3NiwxMiBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9s
bGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAgICAgbWF5
Q29udGFpblVSTCA9IGRyYWdEYXRhLmNvbnRhaW5zVVJMVHlwZUlkZW50aWZpZXIoKTsKIAogICAg
IGlmICghbWF5Q29udGFpblVSTCAmJiAhZHJhZ0RhdGEuY29udGFpbnNQcm9taXNlKCkpCi0gICAg
ICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAogICAgIGlmICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwgKCEoZHJhZ0RhdGEuZmxhZ3Mo
KSAmIChEcmFnQXBwbGljYXRpb25IYXNBdHRhY2hlZFNoZWV0IHwgRHJhZ0FwcGxpY2F0aW9uSXNT
b3VyY2UpKSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAotICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiBjb25z
dCBJbnRTaXplJiBEcmFnQ29udHJvbGxlcjo6bWF4RHJhZ0ltYWdlU2l6ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKaW5kZXggMmQ0NmQ2YjIzZWEu
LmI3MTY1N2MyYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xs
ZXJXaW4uY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgY29uc3QgaW50IERyYWdDb250cm9sbGVyOjpE
cmFnSWNvbkJvdHRvbUluc2V0ID0gMzsKIAogY29uc3QgZmxvYXQgRHJhZ0NvbnRyb2xsZXI6OkRy
YWdJbWFnZUFscGhhID0gMC43NWY7CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJh
dGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdE
YXRhKQogewotICAgIC8vRklYTUU6IHRvIG1hdGNoIHRoZSBtYWNvcyBiZWhhdmlvdXIgd2Ugc2hv
dWxkIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZQorICAgIC8vRklYTUU6IHRvIG1hdGNoIHRoZSBt
YWNvcyBiZWhhdmlvdXIgd2Ugc2hvdWxkIHJldHVybiBXVEY6Om51bGxvcHQuCiAgICAgLy9pZiB3
ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5k
b3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQKICAgICAvL0lmIHRoaXMgY2FuIGJlIGRldGVybWluZWQg
ZnJvbSB3aXRoaW4gV2ViQ29yZSBvcGVyYXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxsZWQgaW50byAK
ICAgICAvL1dlYkNvcmUgaXRzZWxmCi0gICAgcmV0dXJuIGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkg
JiYgIW1fZGlkSW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9u
Tm9uZTsKKyAgICByZXR1cm4gZHJhZ0RhdGEuY29udGFpbnNVUkwoKSAmJiAhbV9kaWRJbml0aWF0
ZURyYWcgPyBEcmFnT3BlcmF0aW9uQ29weSA6IFdURjo6bnVsbG9wdDsKIH0KIAogYm9vbCBEcmFn
Q29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9EcmFnRGF0YS5jcHAKaW5kZXggOGY2NzU1ZjU3NjEuLmU4YzQwZjU1OTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJh
Z0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rp
b24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJl
ZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1h
c2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNs
aWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAg
ICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtNDIsNyArNDIsNyBAQCBEcmFnRGF0YTo6
RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBJbnRQbwogeyAgCiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRp
b25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IElu
dFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0
aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0
aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAg
ICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURy
YWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCA0MjFhMjk5NDNiMy4u
MzFiOGFiOWVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApAQCAtNzUsMTMgKzc1
LDEzIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRp
bmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9z
aXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhp
biB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJD
T1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERy
YWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdE
ZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5v
bmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdB
cHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0
IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogICAg
IC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBieSBXZWJLaXQyIElQQyBiZWNh
dXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5kIG5v
dCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9IGRlZmF1bHQ7CiAjaWYgUExB
VEZPUk0oV0lOKQotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFw
JiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0
aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFn
RGF0YShjb25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
c291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRp
b25Ob25lKTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYgZHJhZ0RhdGFNYXAoKTsKICAgICB2b2lk
IGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBzaXplLCBTdHJpbmcmIHBhdGhuYW1lKTsK
ICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9i
KTsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRpb247IH0KICAgICBEcmFnQXBw
bGljYXRpb25GbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbGljYXRpb25GbGFnczsg
fQogICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1EcmFnRGF0YTsgfQotICAgIERyYWdPcGVyYXRpb24gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7IH0KKyAg
ICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7IH0KICAgICBib29s
IGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMp
IGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBjb25zdDsKICAgICBib29sIGNv
bnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoRHJhZ2dpbmdQdXJwb3NlID0gRHJhZ2dpbmdQdXJwb3Nl
OjpGb3JFZGl0aW5nKSBjb25zdDsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIElu
dFBvaW50IG1fY2xpZW50UG9zaXRpb247CiAgICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsK
ICAgICBEcmFnRGF0YVJlZiBtX3BsYXRmb3JtRHJhZ0RhdGE7Ci0gICAgRHJhZ09wZXJhdGlvbiBt
X2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5hbWVzOwog
ICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdE
YXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29h
Lm1tCmluZGV4IDljY2FmYzBjZDdhLi4zYTEyODlkNGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgc3Rh
dGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3RlYm9hcmRUeXBlKCkKICNlbmRpZgogfQogCi1EcmFn
RGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291
cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpE
cmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBt
X2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtMTMxLDcg
KzEzMSw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7CiB9CiAKLURyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNl
dDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRh
OjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFn
cyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rp
b25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKaW5kZXgg
MGMwMTNjZjY3ZWUuLjA4YzJiZWE3YzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrVXRpbGl0aWVzLmNwcApAQCAtMTQ5LDQ5ICsxNDksNDkgQEAgdW5zaWduZWQgc3RhdGVN
b2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pCiAgICAgcmV0dXJuIDEgPDwgKDgg
KyBidXR0b24gLSAxKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBnZGtEcmFnQWN0aW9uVG9EcmFnT3Bl
cmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbiBnZGtBY3Rpb24pCiB7
Ci0gICAgLy8gV2UgaGF2ZSBubyBnb29kIHdheSB0byBkZXRlY3QgRHJhZ09wZXJhdGlvbkV2ZXJ5
IG90aGVyIHRoYW4KKyAgICAvLyBXZSBoYXZlIG5vIGdvb2Qgd2F5IHRvIGRldGVjdCBhbnlEcmFn
T3BlcmF0aW9uKCkgb3RoZXIgdGhhbgogICAgIC8vIHRvIHVzZSBpdCB3aGVuIGFsbCBhcHBsaWNh
YmxlIGZsYWdzIGFyZSBvbi4KICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9DT1BZCiAg
ICAgICAgICYmIGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRQogICAgICAgICAmJiBnZGtBY3Rp
b24gJiBHREtfQUNUSU9OX0xJTkspCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uRXZlcnk7
CisgICAgICAgIHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CiAKLSAgICB1bnNpZ25lZCBhY3Rp
b24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gYWN0
aW9uOwogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0NPUFkpCi0gICAgICAgIGFjdGlv
biB8PSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9u
Q29weSk7CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRSkKLSAgICAgICAgYWN0
aW9uIHw9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVyYXRp
b25Nb3ZlKTsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9MSU5LKQotICAgICAgICBh
Y3Rpb24gfD0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJh
dGlvbkxpbmspOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGFjdGlv
bik7CisgICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9u
VG9HZGtEcmFnQWN0aW9ucyhEcmFnT3BlcmF0aW9uIGNvcmVBY3Rpb24pCitHZGtEcmFnQWN0aW9u
IGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBj
b3JlQWN0aW9uKQogewogICAgIHVuc2lnbmVkIGdka0FjdGlvbiA9IDA7Ci0gICAgaWYgKGNvcmVB
Y3Rpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKGNvcmVBY3Rpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oZ2RrQWN0aW9uKTsK
IAotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKGNvcmVB
Y3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICBnZGtBY3Rpb24gfD0g
R0RLX0FDVElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbk1vdmUp
CisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAg
ICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlv
bkxpbmspKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9MSU5LOwogCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlvbik7CiB9CiAKLUdka0RyYWdB
Y3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihEcmFnT3BlcmF0aW9uIGNv
cmVBY3Rpb24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rp
b24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24pCiB7Ci0gICAgaWYgKGNvcmVB
Y3Rpb24gPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5IHx8IGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9u
Q29weSkKKyAgICBpZiAoY29yZUFjdGlvbiA9PSBhbnlEcmFnT3BlcmF0aW9uKCkgfHwgY29yZUFj
dGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBHREtfQUNU
SU9OX0NPUFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBp
ZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJldHVy
biBHREtfQUNUSU9OX01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTGlu
aykKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAg
ICAgIHJldHVybiBHREtfQUNUSU9OX0xJTks7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0Ry
YWdBY3Rpb24+KDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGll
cy5oCmluZGV4IDVhYWI0ZWI3OWEyLi4xOThiYzhlMjUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaApAQCAtNTEsOCArNTEsOCBAQCBTdHJpbmcgZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKIAogV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgc3RhdGVNb2RpZmll
ckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pOwogCi1XRUJDT1JFX0VYUE9SVCBEcmFnT3Bl
cmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7Ci1XRUJD
T1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKERy
YWdPcGVyYXRpb24pOwotV0VCQ09SRV9FWFBPUlQgR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9u
VG9TaW5nbGVHZGtEcmFnQWN0aW9uKERyYWdPcGVyYXRpb24pOworV0VCQ09SRV9FWFBPUlQgT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJh
Z0FjdGlvbik7CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dk
a0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CitXRUJDT1JFX0VYUE9SVCBH
ZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXggZWUwZDhiMjYwY2MuLjE4ODcw
ZjIyNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBCYWlkdSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MSw3ICs0MSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBEcmFn
RGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJh
dGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MpCiAg
ICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3Np
dGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBiYzZlNWExZDVmMi4uZTIxZjNkODdkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAK
KzIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGZvciBtYXNrIHZhbHVlcworICAgICAgICA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmg6CisgICAgICAg
IChXZWJLaXQ6OmNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNp
b24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkcmFnZ2luZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJh
Z2dpbmdFeGl0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdP
cGVyYXRpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygp
IGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFbmRlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZEhhbmRsZURyYWdTdGFydFJl
cXVlc3Q6XSk6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbik6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjpkcmFnRGVz
dGluYXRpb25BY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0ludGVyYWN0
aW9uOndpbGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjpzZXNzaW9uOl0pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uOmRpZEVuZFdpdGhPcGVyYXRpb246
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOnNlc3Npb25EaWRF
bmQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJh
Z1Nlc3Npb24pOgorCiAyMDIwLTA2LTAyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBz
b255LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OW3IyNjA4NDRdOiBbR1RLXVtXUEVdIEluc3Bl
Y3RvciBHUmVzb3VyY2Ugbm8gbG9uZ2VyIHVwZGF0ZWQgYWZ0ZXIgV2ViSW5zcGVjdG9yVUkgZmls
ZSB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlL
aXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4
IDJkNDNiYWViZjhlLi5hYmVlMjU1NDdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
aW9zL1VJS2l0U1BJLmgKQEAgLTEwMjUsMTIgKzEwMjUsNiBAQCBDR0Zsb2F0IFVJUm91bmRUb1Nj
cmVlblNjYWxlKENHRmxvYXQgdmFsdWUsIFVJU2NyZWVuICopOwogCiBXVEZfRVhURVJOX0NfRU5E
CiAKLXR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBVSURyYWdPcGVyYXRpb24pCi17Ci0g
ICAgVUlEcmFnT3BlcmF0aW9uTm9uZSA9IDAsCi0gICAgVUlEcmFnT3BlcmF0aW9uRXZlcnkgPSBO
U1VJbnRlZ2VyTWF4LAotfTsKLQogQGludGVyZmFjZSBVSURyYWdJbnRlcmFjdGlvbiAoKQogQHBy
b3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwgZ2V0dGVyPV9saWZ0RGVsYXksIHNldHRlcj1fc2V0
TGlmdERlbGF5OikgTlNUaW1lSW50ZXJ2YWwgbGlmdERlbGF5OwogLSAodm9pZClfc2V0QWxsb3dz
UG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk6KEJPT0wpYWxsb3dzUG9pbnRlckRyYWdCZWZvcmVM
aWZ0RGVsYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAz
ZmRkODA0OWQ0OS4uM2RhYTMyY2IyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMjA5LDYgKzIwOSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9m
b3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0JywK
ICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uJywgICMgRklYTUU6IFJlbW92ZSBhZnRlciBlbnVtIGNsYXNzIERyYWdPcGVyYXRpb24u
CiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50
aWZpZXInLApAQCAtNTg4LDYgKzU4OSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgog
ICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInOiBbJzxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2ViS2l0OjpEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCInXSwKICAgICAg
ICAgJ1dlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCc6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMu
aD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkRyYWdPcGVyYXRpb24nOiBbJzxXZWJDb3JlL0RyYWdB
Y3Rpb25zLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJzogWyc8V2Vi
Q29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpGaWxl
Q2hvb3NlclNldHRpbmdzJzogWyc8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPiddLAogICAgICAgICAn
V2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCc6IFsnPFdlYkNvcmUvU2hhcmVEYXRhLmg+
J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0Fj
dGlvbnNJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdB
Y3Rpb25zSW50ZXJuYWwuaAppbmRleCBjODY4YzI3NzNmOC4uODk3ODlmMzgyYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50
ZXJuYWwuaApAQCAtNDAsNCArNDAsMjQgQEAgaW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFcKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCisjaWYgVVNFKEFQUEtJVCkKK2lubGluZSBPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKE5TRHJhZ09wZXJhdGlv
biBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHJl
c3VsdDsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAg
cmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlv
biAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5l
cmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsK
KyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVz
dWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlv
biAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxl
dGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCmluZGV4IGQ0NDM4MTEyOWY5Li5jZThmMmY5OGQxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNTMxLDcgKzE1MzEsNyBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuY2xp
ZW50UG9zaXRpb24oKTsKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCk7
Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaygpKTsKKyAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaygpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFnRGF0YS5mbGFncygpKTsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCk7
CkBAIC0xNTUwLDggKzE1NTAsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZ2xvYmFsUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBE
cmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spKQorICAgIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBhcHBsaWNhdGlvbkZsYWdzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaAppbmRleCA4YzNi
MTBlMTA1MC4uYTAwNDUwMGIwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8
V2ViQ29yZTo6SW50UG9pbnQ+IG1fcG9zaXRpb247CiAgICAgdW5zaWduZWQgbV9kYXRhUmVxdWVz
dENvdW50IHsgMCB9OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+IG1fc2Vs
ZWN0aW9uRGF0YTsKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIG1fb3BlcmF0aW9uIHsgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbk5vbmUgfTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPiBtX29wZXJhdGlvbjsKICNpZiBVU0UoR1RLNCkKICAgICBHUmVmUHRyPEdDYW5jZWxs
YWJsZT4gbV9jYW5jZWxsYWJsZTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGMxM2IyOWIzMWRjLi4xYzUxOTVm
Mjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrMy5jcHAKQEAgLTIxNywxMSArMjE3LDExIEBAIHZvaWQgRHJvcFRhcmdldDo6ZGlkUGVy
Zm9ybUFjdGlvbigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBw
YWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChvcGVyYXRpb24gPT0gbV9vcGVy
YXRpb24pCisgICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29wZXJhdGlvbikgfHwgKm9wZXJhdGlv
biA9PSAqbV9vcGVyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fb3BlcmF0aW9uID0g
b3BlcmF0aW9uOwotICAgIGdka19kcmFnX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVyYXRp
b25Ub1NpbmdsZUdka0RyYWdBY3Rpb24obV9vcGVyYXRpb24pLCBHREtfQ1VSUkVOVF9USU1FKTsK
KyAgICBnZGtfZHJhZ19zdGF0dXMobV9kcm9wLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVH
ZGtEcmFnQWN0aW9uKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+KHsgfSkpLCBHREtfQ1VSUkVOVF9USU1FKTsKIH0KIAogdm9pZCBEcm9wVGFyZ2V0
OjpsZWF2ZVRpbWVyRmlyZWQoKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6
bGVhdmVUaW1lckZpcmVkKCkKICAgICBhdXRvKiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQ
YWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fd2ViVmlldykpOwogICAgIEFTU0VSVChwYWdlKTsK
IAotICAgIERyYWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEudmFsdWUoKSwgKm1fcG9z
aXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93ZWJWaWV3LCAqbV9wb3Np
dGlvbiksIERyYWdPcGVyYXRpb25Ob25lKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmbV9zZWxl
Y3Rpb25EYXRhLnZhbHVlKCksICptX3Bvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVl
blBvaW50KG1fd2ViVmlldywgKm1fcG9zaXRpb24pLCB7IH0pOwogICAgIHBhZ2UtPmRyYWdFeGl0
ZWQoZHJhZ0RhdGEpOwogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRH
dGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQu
Y3BwCmluZGV4IDUxY2EzZTdiODIxLi4zNjFlNGZhNWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTYzLDcgKzYzLDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7CiAKICAgICAgICAgZHJvcC5l
bnRlcih7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRvSW50ZWdlcih5KSB9KTsKLSAgICAgICAg
cmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29wZXJhdGlv
bik7CisgICAgICAgIHJldHVybiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKGRy
b3AubV9vcGVyYXRpb24gPyAqZHJvcC5tX29wZXJhdGlvbiA6IE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPih7IH0pKTsKICAgICB9KSwgdGhpcyk7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHRhcmdl
dCwgImRyYWctbW90aW9uIiwgR19DQUxMQkFDSygrW10oR3RrRHJvcFRhcmdldEFzeW5jKiwgR2Rr
RHJvcCogZ2RrRHJvcCwgZG91YmxlIHgsIGRvdWJsZSB5LCBncG9pbnRlciB1c2VyRGF0YSkgLT4g
R2RrRHJhZ0FjdGlvbiB7CkBAIC03Miw3ICs3Miw3IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJnZXQo
R3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0Ry
YWdBY3Rpb24+KDApOwogCiAgICAgICAgIGRyb3AudXBkYXRlKHsgY2xhbXBUb0ludGVnZXIoeCks
IGNsYW1wVG9JbnRlZ2VyKHkpIH0pOwotICAgICAgICByZXR1cm4gZHJhZ09wZXJhdGlvblRvU2lu
Z2xlR2RrRHJhZ0FjdGlvbihkcm9wLm1fb3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGRyYWdP
cGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29wZXJhdGlvbiA/ICpkcm9wLm1f
b3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgfSkpOwogICAgIH0pLCB0aGlz
KTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3QodGFyZ2V0LCAiZHJhZy1sZWF2ZSIsIEdfQ0FMTEJB
Q0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdka0Ryb3AsIGdwb2ludGVyIHVz
ZXJEYXRhKSB7CkBAIC0yNzMsMTEgKzI3MywxMSBAQCB2b2lkIERyb3BUYXJnZXQ6OmRpZFBlcmZv
cm1BY3Rpb24oKQogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gcGFn
ZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKTsKLSAgICBpZiAob3BlcmF0aW9uID09IG1fb3BlcmF0
aW9uKQorICAgIGlmICgoIW9wZXJhdGlvbiAmJiAhbV9vcGVyYXRpb24pIHx8IG9wZXJhdGlvbiA9
PSBtX29wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vcGVyYXRpb24gPSBvcGVy
YXRpb247Ci0gICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJhdGlvblRv
R2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRpb24pLCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFn
QWN0aW9uKG1fb3BlcmF0aW9uKSk7CisgICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQoKSwg
ZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRpb24gPyAqbV9vcGVyYXRpb24g
OiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbih7IH0pKSwgZHJhZ09wZXJhdGlvblRvU2luZ2xlR2Rr
RHJhZ0FjdGlvbihtX29wZXJhdGlvbiA/ICptX29wZXJhdGlvbiA6IE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPih7IH0pKSk7CiB9CiAKIHZvaWQgRHJvcFRhcmdldDo6bGVhdmUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZTM5ZWE2Y2ZlOC4u
ZGNlY2E1ODZmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCkBAIC0zOTEzLDcgKzM5MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnZ2VkSW1h
Z2UoTlNJbWFnZSAqLCBDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3BlcgogICAg
IHNlbmREcmFnRW5kVG9QYWdlKGVuZFBvaW50LCBvcGVyYXRpb24pOwogfQogCi12b2lkIFdlYlZp
ZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRp
b24gb3BlcmF0aW9uKQordm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UoQ0dQb2lu
dCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgTlNQb2ludCB3aW5kb3dJbWFn
ZUxvYyA9IFtbbV92aWV3IHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpOU1BvaW50RnJvbUNH
UG9pbnQoZW5kUG9pbnQpXTsKQEAgLTM5MjMsNyArMzkyMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNlbmREcmFnRW5kVG9QYWdlKENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVy
YXRpb24pCiAgICAgLy8gUHJldmVudCBxdWV1ZWQgbW91c2VEcmFnZ2VkIGV2ZW50cyBmcm9tIGNv
bWluZyBhZnRlciB0aGUgZHJhZyBhbmQgZmFrZSBtb3VzZVVwIGV2ZW50LgogICAgIG1faWdub3Jl
c01vdXNlRHJhZ2dlZEV2ZW50cyA9IHRydWU7CiAKLSAgICBtX3BhZ2UtPmRyYWdFbmRlZChXZWJD
b3JlOjpJbnRQb2ludCh3aW5kb3dNb3VzZUxvYyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6
Omdsb2JhbFBvaW50KHdpbmRvd01vdXNlTG9jLCBbbV92aWV3IHdpbmRvd10pKSwgb3BlcmF0aW9u
KTsKKyAgICBtX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dNb3VzZUxv
YyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd01vdXNlTG9j
LCBbbV92aWV3IHdpbmRvd10pKSwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdPcGVyYXRpb25N
YXNrKSk7CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncyBhcHBsaWNh
dGlvbkZsYWdzRm9yRHJhZyhOU1ZpZXcgKnZpZXcsIGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dp
bmdJbmZvKQpAQCAtMzk0Nyw3ICszOTQ3LDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBs
OjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5m
by5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlv
biwgW21fdmlldyB3aW5kb3ddKSk7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
ID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdEZXN0aW5h
dGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBhdXRvIGRyYWdP
cGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgYXV0byBkcmFnT3BlcmF0
aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKTsKICAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFn
c0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrKTsKIAogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9y
bWF0aW9uKCk7CkBAIC0zOTU2LDE4ICszOTU2LDQyIEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3
SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQog
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OwogfQogCitzdGF0aWMgTlNEcmFnT3BlcmF0
aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQor
eworICAgIGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlv
bk5vbmU7CisKKyAgICBzd2l0Y2goKmRyYWdPcGVyYXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsK
KyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICByZXR1cm4gTlNE
cmFnT3BlcmF0aW9uTGluazsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmlj
OgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uR2VuZXJpYzsKKyAgICBjYXNlIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9u
UHJpdmF0ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICBy
ZXR1cm4gTlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25EZWxldGU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25EZWxldGU7CisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5v
bmU7Cit9CisKIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKGlk
IDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50
IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlv
biBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6
Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93
XSkpOwogICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2spOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJh
Z09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7
CiAgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGds
b2JhbCwgZHJhZ09wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5n
ZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
ayk7CiAgICAgbV9wYWdlLT5kcmFnVXBkYXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nUGFzdGVib2FyZC5uYW1lKTsKIAogICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNG
b3JEcm9wID0gbV9wYWdlLT5jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsK
IAotICAgIGlmIChtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkgPT0gV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbk5vbmUpCisgICAgaWYgKCFtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkp
CiAgICAgICAgIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZh
bGlkSXRlbXNGb3JEcm9wOwogCiAgICAgTlNEcmFnZ2luZ0Zvcm1hdGlvbiBkcmFnZ2luZ0Zvcm1h
dGlvbiA9IE5TRHJhZ2dpbmdGb3JtYXRpb25Ob25lOwpAQCAtMzk3OSwxNCArNDAwMywxNCBAQCBO
U0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2lu
Z0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBpZiAoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nRm9ybWF0
aW9uICE9IGRyYWdnaW5nRm9ybWF0aW9uKQogICAgICAgICBbZHJhZ2dpbmdJbmZvIHNldERyYWdn
aW5nRm9ybWF0aW9uOmRyYWdnaW5nRm9ybWF0aW9uXTsKIAotICAgIHJldHVybiBtX3BhZ2UtPmN1
cnJlbnREcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIGtpdChtX3BhZ2UtPmN1cnJlbnREcmFn
T3BlcmF0aW9uKCkpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZChpZCA8
TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBj
bGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24g
ZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omds
b2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10p
KTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwg
Z2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8u
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92
aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFn
RGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJh
dGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxp
Y2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZv
KSk7CiAgICAgbV9wYWdlLT5kcmFnRXhpdGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dp
bmdQYXN0ZWJvYXJkLm5hbWUpOwogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0
aW9uKCk7CiAgICAgZHJhZ2dpbmdJbmZvLm51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX2lu
aXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwpAQCAtNDAwMiw3ICs0MDI2LDcgQEAgYm9v
bCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBk
cmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29u
dmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwog
ICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6
RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywg
Y2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdn
aW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9y
RHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNv
cmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0lu
Zm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmll
dy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAKICAgICBOU0FycmF5ICp0eXBl
cyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAwZmM5YjhlNWNkMC4uZTA0OWQ0MjdiM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjQyNCwxMSArMjQy
NCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJh
Z0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0
aW9uLCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29s
IG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVk
LCBjb25zdCBJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0YWJsZUVs
ZW1lbnRSZWN0KQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uLCBXZWJD
b3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNP
dmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBJ
bnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRSZWN0
KQogewotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBkcmFnT3BlcmF0aW9uIDw9IERyYWdP
cGVyYXRpb25EZWxldGUpOwotCi0gICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IHN0YXRpY19j
YXN0PERyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24pOworICAgIG1fY3VycmVudERyYWdPcGVy
YXRpb24gPSBkcmFnT3BlcmF0aW9uOwogICAgIG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhvZCA9
IGRyYWdIYW5kbGluZ01ldGhvZDsKICAgICBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0ID0g
bW91c2VJc092ZXJGaWxlSW5wdXQ7CiAgICAgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0Jl
QWNjZXB0ZWQgPSBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkOwpAQCAtMjQzOCwyMCArMjQzNiwy
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVp
bnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYkNvcgogfQogCiAjaWYgUExBVEZPUk0oR1RLKQotdm9p
ZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwg
dWludDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRy
YWdJbWFnZUhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoU2VsZWN0aW9uRGF0
YSYmIHNlbGVjdGlvbkRhdGEsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiwg
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSkKIHsKICAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UgPSAhZHJhZ0ltYWdlSGFuZGxlLmlzTnVs
bCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZHJhZ0ltYWdlSGFuZGxlKSA6IG51bGxwdHI7
Ci0gICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpLCBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnT3BlcmF0aW9uKSwgV1RGTW92ZShk
cmFnSW1hZ2UpKTsKKyAgICBwYWdlQ2xpZW50KCkuc3RhcnREcmFnKFdURk1vdmUoc2VsZWN0aW9u
RGF0YSksIGRyYWdPcGVyYXRpb24sIFdURk1vdmUoZHJhZ0ltYWdlKSk7CiAKICAgICBkaWRTdGFy
dERyYWcoKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCB1aW50NjRfdCBvcGVyYXRpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2spCiB7
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3Np
dGlvbiwgb3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVk
KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ09wZXJhdGlvbk1hc2spKTsKICAg
ICBzZXREcmFnQ2FyZXRSZWN0KHsgfSk7CiB9CiAKQEAgLTI0ODIsNyArMjQ4MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRFbmREcmFnZ2luZygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNl
dEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKQogewotICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24g
PSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9u
ID0gV1RGOjpudWxsb3B0OwogICAgIG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhvZCA9IERyYWdI
YW5kbGluZ01ldGhvZDo6Tm9uZTsKICAgICBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0ID0g
ZmFsc2U7CiAgICAgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3YmE5ZjhiNWVjMC4uMjFh
NTIzNmNmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTU2
LDggKzExNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtRHJhZ09wZXJhdGlvbihXZWJD
b3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJik7CiAgICAg
dm9pZCBkaWRQZXJmb3JtRHJhZ09wZXJhdGlvbihib29sIGhhbmRsZWQpOwogCi0gICAgdm9pZCBk
aWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2Vi
Q29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNp
Z25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBp
bnNlcnRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRSZWN0
KTsKLSAgICB2b2lkIGRyYWdFbmRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qg
b3BlcmF0aW9uKTsKKyAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihPcHRp
b25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9k
LCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRSZWN0KTsKKyAgICB2b2lkIGRyYWdFbmRlZChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
KTsKICAgICB2b2lkIGRpZFN0YXJ0RHJhZygpOwogICAgIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwog
ICAgIHZvaWQgc2V0RHJhZ0NhcmV0UmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CkBAIC0x
MTY3LDcgKzExNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVS
TCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGFyY2hpdmVIYW5kbGUsIHVpbnQ2NF90IGFy
Y2hpdmVTaXplKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHN0YXJ0RHJh
ZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2UpOworICAgIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZSk7CiAjZW5kaWYKICNlbmRpZgogCkBA
IC0xMjI2LDcgKzEyMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXVuY2hJbml0aWFsUHJvY2Vz
c0lmTmVjZXNzYXJ5KCk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24gY3VycmVudERyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnREcmFnT3BlcmF0aW9uOyB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4gY3VycmVudERyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3Bl
cmF0aW9uOyB9CiAgICAgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGN1cnJlbnREcmFnSGFu
ZGxpbmdNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2Q7
IH0KICAgICBib29sIGN1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0KCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dDsgfQogICAgIHVuc2lnbmVkIGN1cnJlbnREcmFn
TnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdO
dW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkOyB9CkBAIC0yNjA3LDcgKzI2MDcsNyBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgLy8gQ3VycmVudCBkcmFnIGRlc3RpbmF0
aW9uIGRldGFpbHMgYXJlIGRlbGl2ZXJlZCBhcyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2UsCiAg
ICAgLy8gc28gd2UgcHJlc2VydmUgdGhlbSB0byBiZSB1c2VkIHdoZW4gdGhlIG5leHQgZHJhZ2dp
bmcgZGVsZWdhdGUgY2FsbCBpcyBtYWRlLgotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9j
dXJyZW50RHJhZ09wZXJhdGlvbiB7IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lIH07CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsK
ICAgICBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0
aG9kIHsgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lIH07CiAgICAgYm9vbCBtX2N1
cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0IHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJl
bnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyZDIzZTRiNjYwYi4u
MzgzNmZkOWE2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTMxMCw3ICszMTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJv
eHkgewogCiAgICAgIyBEcmFnIGFuZCBkcm9wIG1lc3NhZ2VzCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLSAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09w
ZXJhdGlvbiwgZW51bTp1aW50OF90IFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFu
ZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9m
SXRlbXNUb0JlQWNjZXB0ZWQsIFdlYkNvcmU6OkludFJlY3QgaW5zZXJ0aW9uUmVjdCwgV2ViQ29y
ZTo6SW50UmVjdCBlZGl0YWJsZUVsZW1lbnRSZWN0KQorICAgIERpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9u
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01l
dGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1Rv
QmVBY2NlcHRlZCwgV2ViQ29yZTo6SW50UmVjdCBpbnNlcnRpb25SZWN0LCBXZWJDb3JlOjpJbnRS
ZWN0IGVkaXRhYmxlRWxlbWVudFJlY3QpCiAgICAgRGlkRW5kRHJhZ2dpbmcoKTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMzE4LDcgKzMx
OCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2V0UHJvbWlzZWREYXRhRm9y
SW1hZ2UoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxl
IGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUsIFN0cmluZyBmaWxlbmFtZSwgU3RyaW5n
IGV4dGVuc2lvbiwgU3RyaW5nIHRpdGxlLCBTdHJpbmcgdXJsLCBTdHJpbmcgdmlzaWJsZVVSTCwg
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZlSGFuZGxlLCB1aW50NjRfdCBhcmNo
aXZlU2l6ZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKLSAgICBTdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb25EYXRhLCB1
aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRy
YWdJbWFnZSkKKyAgICBTdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb25E
YXRhLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24sIFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpIYW5kbGUgZHJhZ0ltYWdlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggNDM5ZGI5OTc3ZWUuLjY5NmI5MDg4ZDg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KQEAgLTcyODUsNyArNzI4NSw3IEBAIC0gKHZvaWQpX2RpZEhhbmRsZURyYWdT
dGFydFJlcXVlc3Q6KEJPT0wpc3RhcnRlZAogICAgICAgICBpZiAoc3RhcnRlZCkgewogICAgICAg
ICAgICAgLy8gQSBjbGllbnQgb2YgdGhlIE9iamVjdGl2ZSBDIFNQSSBvciBVSUtpdCBtaWdodCBo
YXZlIHByZXZlbnRlZCB0aGUgZHJhZyBmcm9tIGJlZ2lubmluZyBlbnRpcmVseSBpbiB0aGUgVUkg
cHJvY2VzcywgaW4gd2hpY2ggY2FzZQogICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBiYWxhbmNl
IHRoZSBgZHJhZ3N0YXJ0YCBldmVudCB3aXRoIGEgYGRyYWdlbmRgLgotICAgICAgICAgICAgX3Bh
Z2UtPmRyYWdFbmRlZChwb3NpdGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpOworICAgICAgICAgICAgX3BhZ2UtPmRyYWdFbmRlZChw
b3NpdGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgeyB9KTsKICAgICAgICAgfQog
ICAgIH0KIH0KQEAgLTczMDMsMjQgKzczMDMsNDIgQEAgLSAodm9pZCljb21wdXRlQ2xpZW50QW5k
R2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIG8K
ICAgICAgICAgKm91dEdsb2JhbFBvaW50ID0gbG9jYXRpb25JbkNvbnRlbnRWaWV3OwogfQogCi1z
dGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlv
bihXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBVSURyb3BPcGVyYXRp
b24gZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKE9wdGlvbmFsPFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+IG9wZXJhdGlvbikKIHsKLSAgICBpZiAob3BlcmF0aW9uICYgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbk1vdmUpCi0gICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Nb3Zl
OwotCi0gICAgaWYgKG9wZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KQotICAg
ICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uQ29weTsKLQorICAgIGlmIChvcGVyYXRpb24pIHsK
KyAgICAgICAgaWYgKCpvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkKKyAg
ICAgICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Nb3ZlOworICAgICAgICBpZiAoKm9wZXJh
dGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICAgICAgcmV0dXJuIFVJ
RHJvcE9wZXJhdGlvbkNvcHk7CisgICAgfQogICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25DYW5j
ZWw7CiB9CiAKK3N0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURy
YWdPcGVyYXRpb25Gb3JVSURyb3BPcGVyYXRpb24oVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRp
b24pCit7CisgICAgc3dpdGNoIChkcm9wT3BlcmF0aW9uKSB7CisgICAgY2FzZSBVSURyb3BPcGVy
YXRpb25DYW5jZWw6CisgICAgICAgIHJldHVybiB7IH07CisgICAgY2FzZSBVSURyb3BPcGVyYXRp
b25Gb3JiaWRkZW46CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0
ZTsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbk1vdmU6CisgICAg
ICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogLSAoV2ViQ29yZTo6RHJhZ0Rh
dGEpZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uOihXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVzdGluYXRp
b25BY3Rpb24KIHsKICAgICBDR1BvaW50IGdsb2JhbDsKICAgICBDR1BvaW50IGNsaWVudDsKICAg
ICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lv
biBvdXRDbGllbnRQb2ludDomY2xpZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogCi0gICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KHNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbiA/IFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25FdmVyeSA6IChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgJiB+
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNr
ID0gV2ViQ29yZTo6YW55RHJhZ09wZXJhdGlvbigpOworICAgIGlmICghc2Vzc2lvbi5hbGxvd3NN
b3ZlT3BlcmF0aW9uKQorICAgICAgICBkcmFnT3BlcmF0aW9uTWFzay5yZW1vdmUoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk1vdmUpOwogICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJh
Z09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIFdlYktpdDo6Y29y
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKSB9OwogfQog
CkBAIC03NDI0LDcgKzc0NDIsOCBAQCAtICh2b2lkKV9kaWRQZXJmb3JtRHJhZ09wZXJhdGlvbjoo
Qk9PTCloYW5kbGVkCiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVu
dEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOmRyb3BTZXNzaW9uIG91dENsaWVudFBvaW50
OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdT
b3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBfcGFn
ZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKSk7CisgICAgYXV0byBjdXJyZW50RHJhZ09wZXJhdGlv
biA9IF9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOworICAgIF9wYWdlLT5kcmFnRW5kZWQo
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChnbG9iYWwpLCBjdXJyZW50RHJhZ09wZXJhdGlvbiA/ICpjdXJyZW50RHJhZ09wZXJhdGlvbiA6
IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPih7IH0pKTsKIH0KIAogLSAodm9pZClf
ZGlkQ2hhbmdlRHJhZ0NhcmV0UmVjdDooQ0dSZWN0KXByZXZpb3VzUmVjdCBjdXJyZW50UmVjdDoo
Q0dSZWN0KXJlY3QKQEAgLTgwMTMsNyArODAzMiw3IEBAIC0gKHZvaWQpZHJhZ0ludGVyYWN0aW9u
OihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxBbmltYXRlTGlmdFdpdGhBbmlt
CiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiBlbmRl
ZCBhdCBzdGFydDogJXAiLCBzZXNzaW9uKTsKICAgICAgICAgICAgIC8vIFRoZSBsaWZ0IHdhcyBj
YW5jZWxlZCwgc28gLWRyb3BJbnRlcmFjdGlvbjpzZXNzaW9uRGlkRW5kOiB3aWxsIG5ldmVyIGJl
IGludm9rZWQuIFRoaXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIGNsZWFuIHVwLgogICAgICAgICAg
ICAgW3Byb3RlY3RlZFNlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgICAg
ICAgICAgcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFn
RW5kLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBwYWdlLT5kcmFn
RW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIHsgfSk7CiAgICAg
ICAgIH0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgZWxzZQpAQCAtODA0OCw3
ICs4MDY3LDcgQEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gc2Vzc2lvbjooaWQgPFVJRHJhZ1Nlc3MKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFn
RW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
YWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChf
ZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBv
cGVyYXRpb24pOworICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSks
IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVz
dGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJh
dGlvbihvcGVyYXRpb24pKTsKIH0KIAogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJhZ0lu
dGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JDYW5j
ZWxsaW5nSXRlbTooVUlEcmFnSXRlbSAqKWl0ZW0gd2l0aERlZmF1bHQ6KFVJVGFyZ2V0ZWREcmFn
UHJldmlldyAqKWRlZmF1bHRQcmV2aWV3CkBAIC04MjY3LDcgKzgyODYsNyBAQCAtICh2b2lkKWRy
b3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uRGlk
RW5kOihpZCA8VUlEcgogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGll
bnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZj
bGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3Vy
Y2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZElu
dFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3Vu
ZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIHsg
fSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggZWVk
N2I5OTY4NTcuLjc0ZjQ2Y2NiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAK
QEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0g
aXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJikKIAogICAgIG1fcGFnZS0+
d2lsbFN0YXJ0RHJhZygpOwogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlN0YXJ0RHJhZyhkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLnNlbGVjdGlvbkRhdGEoKSwg
ZGF0YVRyYW5zZmVyLnNvdXJjZU9wZXJhdGlvbigpLCBoYW5kbGUpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRhdGFUcmFuc2Zlci5wYXN0ZWJv
YXJkKCkuc2VsZWN0aW9uRGF0YSgpLCBkYXRhVHJhbnNmZXIuc291cmNlT3BlcmF0aW9uTWFzaygp
LCBoYW5kbGUpKTsKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdlYktpdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjBiMGVhNzk2MmQuLmU3NzRh
MmNiODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMzk0NCwyMiArMzk0NCwyMiBAQCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIqIFdlYlBhZ2U6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYQogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCiAKICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2U6OnBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFNlbGVjdGlvbkRhdGEm
JiBzZWxlY3Rpb25EYXRhLCB1aW50MzJfdCBmbGFncykKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFNlbGVj
dGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCB1aW50MzJfdCBmbGFncykKIHsKICAgICBpZiAoIW1f
cGFnZSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9k
OjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBE
cmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVjdGlvbkRhdGEsIGNs
aWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4o
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9u
RmxhZ3M+KGZsYWdzKSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVjdGlvbkRhdGEsIGNs
aWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
LCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsKICAgICBzd2l0Y2gg
KGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkVudGVyZWQ6IHsKLSAg
ICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdD
b250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVk
RHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFn
RGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCku
bW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9m
SXRlbXNUb0JlQWNjZXB0ZWQoKSwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpVcGRhdGVkOiB7Ci0gICAgICAgIERyYWdP
cGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0byByZXNvbHZlZERyYWdPcGVyYXRp
b24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwogICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5k
cmFnSGFuZGxpbmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm1vdXNlSXNPdmVy
RmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5udW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkKCksIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zOTc4LDI0
ICszOTc4LDI0IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERy
YWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50CiB2b2lkIFdlYlBhZ2U6OnBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBz
YW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KQogewogICAgIGlmICghbV9wYWdlKSB7Ci0gICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNl
LCAwLCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGluZ01l
dGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246
OkVudGVyZWQ6IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24g
PSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgICAg
ICBhdXRvIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5k
cmFnRW50ZXJlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwg
bV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRy
YWdDb250cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250
cm9sbGVyKCkuY2FyZXRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCksIG1fcGFnZS0+ZHJhZ0Nh
cmV0Q29udHJvbGxlcigpLmVkaXRhYmxlRWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMo
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rp
b246OlVwZGF0ZWQ6IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRp
b24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAg
ICAgICBhdXRvIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlv
biwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgbV9wYWdlLT5kcmFnQ2FyZXRD
b250cm9sbGVyKCkuY2FyZXRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCksIG1fcGFnZS0+ZHJh
Z0NhcmV0Q29udHJvbGxlcigpLmVkaXRhYmxlRWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJB
Y3Rpb246OkV4aXRlZDoKICAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0
ZWQoZHJhZ0RhdGEpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5n
TWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxs
b3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlBl
cmZvcm1EcmFnT3BlcmF0aW9uOiB7CkBAIC00MDIyLDcgKzQwMjIsNyBAQCB2b2lkIFdlYlBhZ2U6
OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24s
IGNvbnN0IFdlYgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6
OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlv
biwgdWludDY0X3Qgb3BlcmF0aW9uKQordm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6
SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9u
LCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2spCiB7
CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRDbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbi54KCkg
KyBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLngoKSwgY2xpZW50UG9zaXRp
b24ueSgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS55KCkpOwogICAg
IEludFBvaW50IGFkanVzdGVkR2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24ueCgpICsgbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS54KCksIGdsb2JhbFBvc2l0aW9uLnko
KSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueSgpKTsKQEAgLTQwMzMs
NyArNDAzMyw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNs
aWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iCiAgICAgICAgIHJldHVybjsKICAg
ICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBz
aG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50
KGFkanVzdGVkQ2xpZW50UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRpb24sIExlZnRCdXR0
b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBXYWxsVGltZTo6bm93KCksIDAsIFdlYkNvcmU6Ok5vVGFwKTsKLSAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoRHJhZ09w
ZXJhdGlvbilvcGVyYXRpb24pOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIGRyYWdPcGVyYXRpb25NYXNrKTsKIAogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRW5kRHJhZ2dpbmcoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjMmM0OGQxYzkzNi4uNjc5
Y2ZkMWI1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTg5OSw3ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN0b3JlU2VsZWN0aW9uSW5G
b2N1c2VkRWRpdGFibGVFbGVtZW50KCk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQ
TEFURk9STShHVEspCi0gICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3Qg
ZmxhZ3MpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9s
bGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmLCB1aW50MzJfdCBmbGFncyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpICYmICFQTEFURk9STShHVEspCkBAIC05MDcsNyArOTA3LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNv
cmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3Np
dGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsKKyAgICB2b2lkIGRyYWdFbmRlZChXZWJDb3JlOjpJ
bnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24s
IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPik7CiAKICAgICB2b2lkIHdpbGxQZXJm
b3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwogICAgIHZvaWQgbWF5UGVyZm9ybVVwbG9h
ZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNTM4ZTY1NzJlNTAuLmFlOTI3
NDc2Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTMwOSwxNCArMzA5LDE0IEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlCiAKICAgICAjIERyYWcgYW5kIGRyb3AuCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBv
aW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWlu
dDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRh
IHNlbGVjdGlvbiwgdWludDMyX3QgZmxhZ3MpCisgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKGVudW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2Vi
Q29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBv
c2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3Qg
ZmxhZ3MpCiAjZW5kaWYKICNpZiAhUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpE
cmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9y
VXBsb2FkKQogI2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBEaWRTdGFydERy
YWcoKQotICAgIERyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKKyAgICBE
cmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJh
Z09wZXJhdGlvbk1hc2spCiAgICAgRHJhZ0NhbmNlbGxlZCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAw
ZTY1NjQ5NmM4NC4uOGI4N2RiMzhjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBX
ZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW8KICAgICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNzLCB3
aGljaCBvbmx5IHNlZXMgdGhhdCB0aGUgY3VycmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRoYXQg
YSBuZXcgb25lIGlzIGJlZ2lubmluZy4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoY2xp
ZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygp
LCAwLCBOb1RhcCk7CiAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbmRlZCgpOwot
ICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQo
ZXZlbnQsIERyYWdPcGVyYXRpb25Ob25lLCBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6WWVzKTsKKyAg
ICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2
ZW50LCB7IH0sIE1heUV4dGVuZERyYWdTZXNzaW9uOjpZZXMpOwogCiAgICAgYm9vbCBkaWRIYW5k
bGVEcmFnID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS50cnlUb0JlZ2luRHJh
Z0F0UG9pbnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uKTsKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGRp
ZEhhbmRsZURyYWcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA0MWRiNjQ3NWU4
ZS4uMDI5Nzk4MDQ1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MyBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfZHJhZ1NvdXJjZUVuZGVkQXQ6b3BlcmF0aW9uOl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgIChraXQpOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDpdKToKKyAgICAgICAg
KC1bV2ViSFRNTFZpZXcgZHJhZ2dpbmdTZXNzaW9uOnNvdXJjZU9wZXJhdGlvbk1hc2tGb3JEcmFn
Z2luZ0NvbnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
Y29yZURyYWdPcGVyYXRpb25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlv
biB0byBhdm9pZCBjYXN0aW5nLgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdEYXRhRm9yU2Vzc2lv
bjpjbGllbnQ6Z2xvYmFsOm9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2lu
Z0VudGVyZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOl0pOgorICAg
ICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nRXhpdGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHBl
cmZvcm1EcmFnT3BlcmF0aW9uOl0pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3Bl
cmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKENvY29hRHJhZ09wZXJhdGlvbik6CisgICAgICAgIC0g
QWRkIHR5cGVkZWYgc28gY29yZURyYWdPcGVyYXRpb25NYXNrKCkgbWF5IGJlIHNoYXJlZCBhY3Jv
c3MKKyAgICAgICAgICBwbGF0Zm9ybXMuCisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2sp
OiBBZGQgZGVjbGFyYXRpb24uCisgICAgICAgIChjb3JlT3B0aW9ucyk6CisgICAgICAgIC0gUmVt
b3ZlIHJlZHVuZGFudCBwYXJhbWV0ZXIgbmFtZS4KKwogMjAyMC0wNi0wMiAgS2VpdGggUm9sbGlu
ICA8a3JvbGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IEZFQVRVUkVTX0RFRklORVMg
cmVsYXRlZCBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFt
ZS5tbQppbmRleCBkNGRlYTdjMzljOC4uYjllZWNkYzhkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTQyLDcgKzk0Miw3IEBAIC0gKHZvaWQp
X3NldFR5cGluZ1N0eWxlOihET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUgd2l0aFVuZG9B
Y3Rpb246KFdlYkNvcmU6CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9S
TShNQUMpCi0tICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kb3dMb2Mgb3Bl
cmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aW9uCistICh2b2lkKV9kcmFnU291cmNlRW5k
ZWRBdDooTlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pZHJhZ09w
ZXJhdGlvbk1hc2sKIHsKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKQEAgLTk1Miw3ICs5NTIsNyBAQCAtICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQ
b2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aQogICAgIC8v
IEZJWE1FOiBUaGVzZSBhcmUgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3Vs
ZCBiZSByZWFsIG9uZXMgaW5zdGVhZC4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQg
ZXZlbnQoV2ViQ29yZTo6SW50UG9pbnQod2luZG93TG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2Vi
Q29yZTo6Z2xvYmFsUG9pbnQod2luZG93TG9jLCBbdmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5k
b3ddKSksCiAgICAgICAgIFdlYkNvcmU6OkxlZnRCdXR0b24sIFdlYkNvcmU6OlBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6
bm93KCksIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViQ29yZTo6Tm9UYXApOwotICAgIF9wcml2
YXRlLT5jb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbilvcGVyYXRpb24pOworICAgIF9wcml2YXRlLT5jb3JlRnJh
bWUtPmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBjb3JlRHJhZ09wZXJh
dGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19T
VVBQT1JUKSAmJiBQTEFURk9STShNQUMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDVlNGE4OTA1ZWM4Li5lN2NhNDYxZDkwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiwgMjAwNyBHcmFoYW0g
RGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQy
MjksNiArNDIyOSwyOCBAQCAtICh2b2lkKXRvdWNoOihXZWJFdmVudCAqKWV2ZW50CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKKworc3RhdGljIE5T
RHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IG9wZXJh
dGlvbk1hc2spCit7CisgICAgaWYgKG9wZXJhdGlvbk1hc2sgPT0gV2ViQ29yZTo6YW55RHJhZ09w
ZXJhdGlvbigpKQorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uRXZlcnk7CisKKyAgICBO
U0RyYWdPcGVyYXRpb24gcmVzdWx0ID0gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAob3Bl
cmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSkpCisgICAgICAg
IHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25Db3B5OworICAgIGlmIChvcGVyYXRpb25NYXNrLmNv
bnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKSkKKyAgICAgICAgcmVzdWx0IHw9IE5T
RHJhZ09wZXJhdGlvbkxpbms7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0
aW9uR2VuZXJpYzsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uUHJpdmF0ZSkpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25Qcml2
YXRlOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25Nb3ZlKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgaWYg
KG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSkpCisg
ICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25EZWxldGU7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0gKHZvaWQp
ZHJhZ0ltYWdlOihOU0ltYWdlICopZHJhZ0ltYWdlCiAgICAgICAgICAgICAgICBhdDooTlNQb2lu
dClhdApAQCAtNDI4MCw3ICs0MzAyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9u
ZTsKIAotICAgIHJldHVybiAoTlNEcmFnT3BlcmF0aW9uKXBhZ2UtPmRyYWdDb250cm9sbGVyKCku
c291cmNlRHJhZ09wZXJhdGlvbigpOworICAgIHJldHVybiBraXQocGFnZS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpKTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9J
TVBMRU1FTlRBVElPTlNfQkVHSU4KQEAgLTQzODYsNyArNDQwOCw3IEBAIC0gKE5TRHJhZ09wZXJh
dGlvbilkcmFnZ2luZ1Nlc3Npb246KE5TRHJhZ2dpbmdTZXNzaW9uICopc2Vzc2lvbiBzb3VyY2VP
cGVyYXRpb25NCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9u
Tm9uZTsKIAotICAgIHJldHVybiAoTlNEcmFnT3BlcmF0aW9uKXBhZ2UtPmRyYWdDb250cm9sbGVy
KCkuc291cmNlRHJhZ09wZXJhdGlvbigpOworICAgIHJldHVybiBraXQocGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpKTsKIH0KIAogLSAodm9pZClkcmFnZ2lu
Z1Nlc3Npb246KE5TRHJhZ2dpbmdTZXNzaW9uICopc2Vzc2lvbiBlbmRlZEF0UG9pbnQ6KE5TUG9p
bnQpc2NyZWVuUG9pbnQgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzVlOWYyNWM2MWUu
LjQyOTJhMmE5NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC01ODksNiArNTg5LDkyIEBAIHN0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uPiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXCiAgICAgICAg
IHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQorCisjaWYgIVVTRShBUFBLSVQpCisvLyBTZWUgPFVJS2l0L1VJRHJh
Z2dpbmdfUHJpdmF0ZS5oPi4KK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfVUlEcmFn
T3BlcmF0aW9uKSB7CisgICAgX1VJRHJhZ09wZXJhdGlvbk5vbmUgPSAwLAorICAgIF9VSURyYWdP
cGVyYXRpb25Db3B5ID0gMSwKKyAgICBfVUlEcmFnT3BlcmF0aW9uTW92ZSA9IDE2LAorfTsKKyNl
bmRpZgorCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRp
b25NYXNrKENvY29hRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKworI2lmIFVTRShBUFBLSVQpCisgICAgaWYg
KG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVy
YXRpb25MaW5rKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5r
KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAg
cmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJh
dGlvbiAmIE5TRHJhZ09wZXJhdGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVy
YXRpb25Nb3ZlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3Zl
KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICBy
ZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworI2Vsc2UKKyAgICBpZiAo
b3BlcmF0aW9uICYgX1VJRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3Bl
cmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92
ZSk7CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNp
ZiBVU0UoQVBQS0lUKQorc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRp
b24pCisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dpdGNoKCpk
cmFnT3BlcmF0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weToKKyAg
ICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTGluazoKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkxpbms7CisgICAg
Y2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIE5TRHJh
Z09wZXJhdGlvbkdlbmVyaWM7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0
ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgY2FzZSBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk1v
dmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlOgorICAgICAgICByZXR1
cm4gTlNEcmFnT3BlcmF0aW9uRGVsZXRlOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworfQorI2Vsc2UKK3N0YXRpYyBf
VUlEcmFnT3BlcmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFn
T3BlcmF0aW9uKQoreworICAgIGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIF9V
SURyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dpdGNoKCpkcmFnT3BlcmF0aW9uKSB7CisgICAg
Y2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weToKKyAgICAgICAgcmV0dXJuIF9VSURyYWdP
cGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbms6CisgICAg
ICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25HZW5lcmljOgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk1vdmU7Cisg
ICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZToKKyAgICAgICAgcmV0dXJuIF9V
SURyYWdPcGVyYXRpb25Ob25lOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmU6
CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBjYXNlIFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25EZWxldGU6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gX1VJRHJh
Z09wZXJhdGlvbk5vbmU7Cit9CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKICNlbmRpZiAvLyBFTkFC
TEUoRFJBR19TVVBQT1JUKQogCiBXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJG
aW5kT3B0aW9ucyBvcHRpb25zKQpAQCAtMTkyMyw3ICsyMDA5LDcgQEAgLSAoV2ViRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKWRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOihpZCA8VUlE
cm9wU2Vzc2kKIAogLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0RhdGFGb3JTZXNzaW9uOihpZCA8
VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xv
YmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9u
CiB7Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+KG9wZXJhdGlvbik7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IGNv
cmVEcmFnT3BlcmF0aW9uTWFzayhvcGVyYXRpb24pOwogICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFtzZWxmIGRyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOnNlc3Npb25dKTsKICAgICByZXR1cm4geyBzZXNz
aW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50UG9zaXRpb24pLCBXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoZ2xvYmFsUG9zaXRpb24pLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29y
ZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayB9OwogfQpA
QCAtMTkzMiwxNCArMjAxOCwxNCBAQCAtICh1aW50NjRfdClfZW50ZXJlZERhdGFJbnRlcmFjdGlv
bjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gY2xpZW50OihDR1BvaW50KQogewogICAgIFdl
YlRocmVhZExvY2soKTsKICAgICBhdXRvIGRyYWdEYXRhID0gW3NlbGYgZHJhZ0RhdGFGb3JTZXNz
aW9uOnNlc3Npb24gY2xpZW50OmNsaWVudFBvc2l0aW9uIGdsb2JhbDpnbG9iYWxQb3NpdGlvbiBv
cGVyYXRpb246b3BlcmF0aW9uXTsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250
cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgIHJldHVybiBraXQoX3ByaXZhdGUt
PnBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAo
dWludDY0X3QpX3VwZGF0ZWREYXRhSW50ZXJhY3Rpb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNz
aW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFs
UG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KIHsKICAgICBXZWJUaHJlYWRM
b2NrKCk7CiAgICAgYXV0byBkcmFnRGF0YSA9IFtzZWxmIGRyYWdEYXRhRm9yU2Vzc2lvbjpzZXNz
aW9uIGNsaWVudDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9u
Om9wZXJhdGlvbl07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAgICByZXR1cm4ga2l0KF9wcml2YXRlLT5wYWdlLT5k
cmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKSk7CiB9CiAKIC0gKHZvaWQpX2V4
aXRlZERhdGFJbnRlcmFjdGlvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gY2xpZW50OihD
R1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbiBvcGVy
YXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgpAQCAtNjc0OCw4ICs2ODM0LDggQEAgLSAoTlNEcmFn
T3BlcmF0aW9uKWRyYWdnaW5nRW50ZXJlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0lu
Zm8KICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xv
Y2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBv
aW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAot
ICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9i
YWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dp
bmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsK
LSAgICByZXR1cm4gY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFn
RGF0YSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGll
bnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZv
XSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICBy
ZXR1cm4ga2l0KGNvcmUoc2VsZiktPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0Rh
dGEpKTsKIH0KIAogLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJh
Z2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAgLTY3NjEsOCArNjg0Nyw4IEBAIC0gKE5TRHJhZ09w
ZXJhdGlvbilkcmFnZ2luZ1VwZGF0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZv
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2Nh
dGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2lu
dChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAg
ICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFs
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5n
SW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0g
ICAgcmV0dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwor
ICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9i
YWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxm
IGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgcmV0dXJuIGtp
dChwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKSk7CiB9CiAKIC0g
KHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCkBA
IC02NzczLDcgKzY4NTksNyBAQCAtICh2b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNEcmFnZ2lu
Z0luZm8+KWRyYWdnaW5nSW5mbwogCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2Jh
bChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBb
c2VsZiB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJ
bmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4o
W2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGlj
YXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2Ry
YWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRp
b25GbGFnczpkcmFnZ2luZ0luZm9dKTsKICAgICBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdF
eGl0ZWQoZHJhZ0RhdGEpOwogfQogCkBAIC02Nzg2LDcgKzY4NzIsNyBAQCAtIChCT09MKXBlcmZv
cm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogewogICAg
IFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25d
KTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2Ry
YWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwotICAgIGF1dG8q
IGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJh
Z2dpbmdJbmZvXSk7CisgICAgYXV0byogZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEo
ZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9u
RmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAKICAgICBOU0FycmF5KiB0eXBlcyA9IGRyYWdnaW5nSW5m
by5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgaWYgKCFbdHlwZXMgY29udGFpbnNPYmpl
Y3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdICYmIFt0eXBlcyBjb250YWluc09iamVjdDpXZWJDb3Jl
OjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKaW5kZXggN2Q3MGMwNGEw
Y2UuLmQ1OTc2YzQ0ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0zNiw2ICszNiw3IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIAogI2ltcG9ydCA8V2Vi
Q29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlv
bnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpA
QCAtODksNyArOTAsMTcgQEAgY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwogCi1XZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhX
ZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorI2lmIFVT
RShBUFBLSVQpCit0eXBlZGVmIE5TRHJhZ09wZXJhdGlvbiBDb2NvYURyYWdPcGVyYXRpb247Cisj
ZWxzZQordHlwZWRlZiB1aW50NjRfdCBDb2NvYURyYWdPcGVyYXRpb247CisjZW5kaWYgLy8gVVNF
KEFQUEtJVCkKKworT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3Bl
cmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24pOworI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpCisKK1dlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25z
KTsKIAogT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gY29yZUxheW91dE1pbGVz
dG9uZXMoV2ViTGF5b3V0TWlsZXN0b25lcyk7CiBXZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91
dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcAppbmRleCAzMTMyNjAzNmE4YS4uYjI0OWZmZDg3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CkBAIC00NCwxOCArNDQsMTggQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRp
YyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKERyYWdPcGVy
YXRpb24gb3ApCitzdGF0aWMgRFdPUkQgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFn
Q3Vyc29ycyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKICAgICBE
V09SRCByZXN1bHQgPSBEUk9QRUZGRUNUX05PTkU7Ci0gICAgaWYgKG9wID09IERyYWdPcGVyYXRp
b25FdmVyeSkKKyAgICBpZiAob3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBEUk9QRUZGRUNUX0NPUFkgfCBEUk9QRUZGRUNUX0xJTksgfCBEUk9QRUZG
RUNUX01PVkU7IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlmIChvcGVy
YXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgcmVzdWx0IHw9
IERST1BFRkZFQ1RfQ09QWTsgCi0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAg
aWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICBy
ZXN1bHQgfD0gRFJPUEVGRkVDVF9MSU5LOyAKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92
ZSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAg
ICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX01PVkU7Ci0gICAgaWYgKG9wICYgRHJhZ09wZXJh
dGlvbkdlbmVyaWMpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlv
bkdlbmVyaWMpKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9NT1ZFOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJgog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgRFdPUkQgb2tFZmZlY3QgPSBkcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKG1fd2ViVmlldy0+cGFnZSgpLT5k
cmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKSk7CisgICAgICAgIERXT1JEIG9r
RWZmZWN0ID0gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhtX3dlYlZp
ZXctPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpKTsK
ICAgICAgICAgRFdPUkQgZWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOwogICAgICAgICBDT01QdHI8
SVdlYlVJRGVsZWdhdGU+IHVpOwogICAgICAgICBIUkVTVUxUIGhyID0gRV9OT1RJTVBMOwpAQCAt
MTY0LDE1ICsxNjQsMTUgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0g
aXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJgogICAgICAgICBpZiAoaHIg
PT0gRV9OT1RJTVBMKQogICAgICAgICAgICAgaHIgPSBEb0RyYWdEcm9wKGRhdGFPYmplY3QuZ2V0
KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOwogCi0gICAgICAgIERyYWdPcGVy
YXRpb24gb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrOwogICAgICAgICBpZiAoaHIgPT0gRFJBR0RST1Bf
U19EUk9QKSB7CiAgICAgICAgICAgICBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9DT1BZKQotICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uQ29weTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTElOSykKLSAgICAgICAgICAgICAgICBvcGVyYXRpb24g
PSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25NYXNrID0gRHJh
Z09wZXJhdGlvbkxpbms7CiAgICAgICAgICAgICBlbHNlIGlmIChlZmZlY3QgJiBEUk9QRUZGRUNU
X01PVkUpCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk1vdmU7Cisg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uTWFzayA9IERyYWdPcGVyYXRpb25Nb3ZlOwogICAgICAg
ICB9Ci0gICAgICAgIGZyYW1lLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVy
YXRlTW91c2VFdmVudChtX3dlYlZpZXcsIGZhbHNlKSwgb3BlcmF0aW9uKTsKKyAgICAgICAgZnJh
bWUuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1f
d2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb25NYXNrKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCmluZGV4IDNiZGVlNmJiZDViLi40N2VlNjFhY2Q2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTU4NDIsMzggKzU4NDIsNDEgQEAgSFJFU1VMVCBX
ZWJWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QoX091dF8gTFBSRUNUIHJlY3QpCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKLXN0YXRpYyBEV09SRCBkcmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29yKERyYWdP
cGVyYXRpb24gb3ApIHsKLSAgICBEV09SRCByZXMgPSBEUk9QRUZGRUNUX05PTkU7Ci0gICAgaWYg
KG9wICYgRHJhZ09wZXJhdGlvbkNvcHkpIAotICAgICAgICByZXMgPSBEUk9QRUZGRUNUX0NPUFk7
Ci0gICAgZWxzZSBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTGluaykgCi0gICAgICAgIHJlcyA9IERS
T1BFRkZFQ1RfTElOSzsKLSAgICBlbHNlIGlmIChvcCAmIERyYWdPcGVyYXRpb25Nb3ZlKSAKLSAg
ICAgICAgcmVzID0gRFJPUEVGRkVDVF9NT1ZFOwotICAgIGVsc2UgaWYgKG9wICYgRHJhZ09wZXJh
dGlvbkdlbmVyaWMpIAotICAgICAgICByZXMgPSBEUk9QRUZGRUNUX01PVkU7IC8vVGhpcyBhcHBl
YXJzIHRvIGJlIHRoZSBGaXJlZm94IGJlaGF2aW91cgotICAgIHJldHVybiByZXM7CitzdGF0aWMg
RFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBv
cGVyYXRpb25NYXNrKSB7CisgICAgaWYgKCFvcGVyYXRpb25NYXNrKQorICAgICAgICByZXR1cm4g
RFJPUEVGRkVDVF9OT05FOworCisgICAgRFdPUkQgcmVzdWx0ID0gRFJPUEVGRkVDVF9OT05FOwor
ICAgIGlmICgqb3BlcmF0aW9uTWFzayAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1
bHQgPSBEUk9QRUZGRUNUX0NPUFk7CisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbk1hc2sgJiBEcmFn
T3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9MSU5LOworICAgIGVs
c2UgaWYgKCpvcGVyYXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3Vs
dCA9IERST1BFRkZFQ1RfTU9WRTsKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uTWFzayAmIERyYWdP
cGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX01PVkU7IC8vVGhp
cyBhcHBlYXJzIHRvIGJlIHRoZSBGaXJlZm94IGJlaGF2aW91cgorICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLURyYWdPcGVyYXRpb24gV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdP
UkQgZ3JmS2V5U3RhdGUpIGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gV2ViVmlldzo6
a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIC8vIENvbmZvcm1zIHRvIE1pY3Jvc29mdCdzIGtleSBjb21iaW5h
dGlvbnMgYXMgZG9jdW1lbnRlZCBmb3IgCiAgICAgLy8gSURyb3BUYXJnZXQ6OkRyYWdPdmVyLiBO
b3RlLCBncmZLZXlTdGF0ZSBpcyB0aGUgY3VycmVudCAKICAgICAvLyBzdGF0ZSBvZiB0aGUga2V5
Ym9hcmQgbW9kaWZpZXIga2V5cyBvbiB0aGUga2V5Ym9hcmQuIFNlZToKICAgICAvLyA8aHR0cDov
L21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjgwMTI5KFZTLjg1KS5hc3B4Pi4K
LSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5z
b3VyY2VEcmFnT3BlcmF0aW9uKCk7CisgICAgYXV0byBvcGVyYXRpb25NYXNrID0gbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCk7CiAKICAgICBpZiAoKGdy
ZktleVN0YXRlICYgKE1LX0NPTlRST0wgfCBNS19TSElGVCkpID09IChNS19DT05UUk9MIHwgTUtf
U0hJRlQpKQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAg
b3BlcmF0aW9uTWFzayA9IHsgRHJhZ09wZXJhdGlvbkxpbmsgfTsKICAgICBlbHNlIGlmICgoZ3Jm
S2V5U3RhdGUgJiBNS19DT05UUk9MKSA9PSBNS19DT05UUk9MKQotICAgICAgICBvcGVyYXRpb24g
PSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgb3BlcmF0aW9uTWFzayA9IHsgRHJhZ09wZXJh
dGlvbkNvcHkgfTsKICAgICBlbHNlIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19TSElGVCkgPT0gTUtf
U0hJRlQpCi0gICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25HZW5lcmljOworICAgICAg
ICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uR2VuZXJpYyB9OwogCi0gICAgcmV0dXJu
IG9wZXJhdGlvbjsKKyAgICByZXR1cm4gb3BlcmF0aW9uTWFzazsKIH0KIAogSFJFU1VMVCBXZWJW
aWV3OjpEcmFnRW50ZXIoSURhdGFPYmplY3QqIHBEYXRhT2JqZWN0LCBEV09SRCBncmZLZXlTdGF0
ZSwgUE9JTlRMIHB0LCBEV09SRCogcGR3RWZmZWN0KQpAQCAtNTkxOSw4ICs1OTIyLDcgQEAgSFJF
U1VMVCBXZWJWaWV3OjpEcmFnTGVhdmUoKQogICAgICAgICBtX2Ryb3BUYXJnZXRIZWxwZXItPkRy
YWdMZWF2ZSgpOwogCiAgICAgaWYgKG1fZHJhZ0RhdGEpIHsKLSAgICAgICAgRHJhZ0RhdGEgZGF0
YShtX2RyYWdEYXRhLmdldCgpLCBJbnRQb2ludCgpLCBJbnRQb2ludCgpLCAKLSAgICAgICAgICAg
IERyYWdPcGVyYXRpb25Ob25lKTsKKyAgICAgICAgRHJhZ0RhdGEgZGF0YShtX2RyYWdEYXRhLmdl
dCgpLCBJbnRQb2ludCgpLCBJbnRQb2ludCgpLCB7IH0pOwogICAgICAgICBtX3BhZ2UtPmRyYWdD
b250cm9sbGVyKCkuZHJhZ0V4aXRlZChkYXRhKTsKICAgICAgICAgbV9kcmFnRGF0YSA9IDA7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCmluZGV4IDE4MDY2OThhOWFkLi43YjIyMTA0
ZDk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNTU1LDcgKzU1NSw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHBlcmZvcm1MYXllcmVkV2luZG93VXBkYXRlKCk7CiAKLSAgICBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktl
eVN0YXRlKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ga2V5
U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0OwogCiAgICAgLy8g
RklYTUU6IFRoaXMgdmFyaWFibGUgaXMgcGFydCBvZiBhIHdvcmthcm91bmQuIFRoZSBkcm9wIGVm
ZmVjdCAocGR3RWZmZWN0KSBwYXNzZWQgdG8gRHJvcCBpcyBpbmNvcnJlY3QuIAogICAgIC8vIFdl
IHNldCB0aGlzIHZhcmlhYmxlIGluIERyYWdFbnRlciBhbmQgRHJhZ092ZXIgc28gdGhhdCBpdCBj
YW4gYmUgdXNlZCBpbiBEcm9wIHRvIHNldCB0aGUgY29ycmVjdCBkcm9wIGVmZmVjdC4gCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400952</attachid>
            <date>2020-06-03 11:56:52 -0700</date>
            <delta_ts>2020-06-03 12:18:35 -0700</delta_ts>
            <desc>Patch v6</desc>
            <filename>bug-212605-v6.diff</filename>
            <type>text/plain</type>
            <size>121650</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMTUxN2UxNTVkMi4uMDdiMTUxZGE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRXZlbnRSZWdpb246OnRyYW5zbGF0ZSgpIG5lZWRzIHRvIG9mZnNl
dCB0aGUgd2hlZWwgZXZlbnQgcmVnaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApp
bmRleCA4NDYzYTQ4ZTk3NC4uNzMxMzA4YjU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC00ODgsMTggKzQ4OCwxOCBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudAogICAg
IHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
LCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3Bl
cmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0Fu
ZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+
c2V0U291cmNlT3BlcmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5z
ZXRTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFu
c2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBh
c3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQs
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8
RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigq
bmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkLCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6
IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3Bl
cmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVy
YXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmln
aW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsK
ICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQpAQCAtNTk1LDc0ICs1OTUsNzQgQEAgdm9pZCBE
cmFnSW1hZ2VMb2FkZXI6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3Qq
KQogICAgIG1fZGF0YVRyYW5zZmVyLT51cGRhdGVEcmFnSW1hZ2UoKTsKIH0KIAotc3RhdGljIERy
YWdPcGVyYXRpb24gZHJhZ09wRnJvbUlFT3AoY29uc3QgU3RyaW5nJiBvcGVyYXRpb24pCitzdGF0
aWMgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYg
b3BlcmF0aW9uKQogewogICAgIGlmIChvcGVyYXRpb24gPT0gInVuaW5pdGlhbGl6ZWQiKQotICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OworICAgICAgICByZXR1cm4gYW55RHJhZ09w
ZXJhdGlvbigpOwogICAgIGlmIChvcGVyYXRpb24gPT0gIm5vbmUiKQotICAgICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKG9wZXJhdGlv
biA9PSAiY29weSIpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAg
cmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHkgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJsaW5r
IikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICByZXR1cm4geyBE
cmFnT3BlcmF0aW9uTGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gIm1vdmUiKQotICAgICAg
ICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJh
dGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09w
ZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TGluayIpCi0gICAgICAg
IHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9u
TGluayk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9u
TGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHlNb3ZlIikKLSAgICAgICAgcmV0dXJu
IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uQ29weSB8IERyYWdPcGVyYXRpb25HZW5lcmlj
IHwgRHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29w
eSwgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9w
ZXJhdGlvbiA9PSAibGlua01vdmUiKQotICAgICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25MaW5rIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92
ZSk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJhbGwiKQot
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OwotICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uUHJpdmF0ZTsgLy8gcmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIKKyAgICAg
ICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSB9OyAvLyBSZWFsbHkgYSBtYXJrZXIgZm9yICJubyBjb252ZXJzaW9uIi4KIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
KQorc3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBvcGVyYXRpb25NYXNrKQogewotICAgIGJvb2wgaXNHZW5lcmljTW92ZSA9IG9wZXJhdGlv
biAmIChEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBib29s
IGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHsgRHJhZ09wZXJhdGlv
bkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pOwogCi0gICAgaWYgKChpc0dlbmVyaWNNb3Zl
ICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25MaW5rKSkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBp
ZiAoKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpIHx8IG9w
ZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gImFsbCI7
Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5
KSkKKyAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5TW92ZSI7Ci0gICAgaWYgKGlzR2Vu
ZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAoaXNH
ZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkK
ICAgICAgICAgcmV0dXJuICJsaW5rTW92ZSI7Ci0gICAgaWYgKChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAo
b3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0
aW9uTGluayB9KSkKICAgICAgICAgcmV0dXJuICJjb3B5TGluayI7CiAgICAgaWYgKGlzR2VuZXJp
Y01vdmUpCiAgICAgICAgIHJldHVybiAibW92ZSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25Db3B5KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5IjsKLSAgICBpZiAob3BlcmF0aW9uICYgRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJh
dGlvbkxpbmspKQogICAgICAgICByZXR1cm4gImxpbmsiOwogICAgIHJldHVybiAibm9uZSI7CiB9
CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb24oKSBjb25zdAor
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFz
aygpIGNvbnN0CiB7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVP
cChtX2VmZmVjdEFsbG93ZWQpOwotICAgIEFTU0VSVChvcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlv
blByaXZhdGUpOwotICAgIHJldHVybiBvcGVyYXRpb247CisgICAgYXV0byBvcGVyYXRpb25NYXNr
ID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsKKyAgICBBU1NFUlQob3BlcmF0aW9u
TWFzayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7
CiB9CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbigp
IGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlv
bk9wZXJhdGlvbk1hc2soKSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0g
ZHJhZ09wRnJvbUlFT3AobV9kcm9wRWZmZWN0KTsKLSAgICBBU1NFUlQob3BlcmF0aW9uID09IERy
YWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcGVy
YXRpb24gPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9u
KShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKSB8fCBvcGVyYXRpb24g
PT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8g
b3BlcmF0aW9uTWFzayA9IGRyYWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7CisgICAgQVNTRVJU
KG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0Vt
cHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25N
YXNrID09IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IERyYWdPcGVyYXRpb25HZW5lcmljLCBE
cmFnT3BlcmF0aW9uTW92ZSB9KSB8fCBvcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24o
KSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpz
ZXRTb3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFu
c2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3Bl
cmF0aW9uTWFzaykKIHsKLSAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbiwgb3BlcmF0aW9uICE9IERy
YWdPcGVyYXRpb25Qcml2YXRlKTsKLSAgICBtX2VmZmVjdEFsbG93ZWQgPSBJRU9wRnJvbURyYWdP
cChvcGVyYXRpb24pOworICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uTWFzaywgb3BlcmF0aW9uTWFz
ayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZy
b21EcmFnT3Aob3BlcmF0aW9uTWFzayk7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0
aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgRGF0YVRyYW5z
ZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiA9
PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwg
b3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0
aW9uR2VuZXJpYyB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9u
ID09IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25N
b3ZlKSk7Ci0gICAgbV9kcm9wRWZmZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAg
ICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlv
bkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFn
T3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8
IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uTWFzayA9PSBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJh
dGlvbk1vdmUgfSkpOworICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlv
bk1hc2spOwogfQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuaAppbmRleCBlNWNmYWY4NTZmYi4uMGU3NDgwYTFmOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTg4LDE1ICs4OCwxNSBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRm9yRHJhZygpOwogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFn
U3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVy
PiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRy
YWdnaW5nRmlsZXMpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9w
KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERh
dGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKIAogICAgIGJvb2wgZHJvcEVmZmVjdElzVW5pbml0aWFsaXpl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVmZmVjdCA9PSAidW5pbml0aWFsaXplZCI7IH0KIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uKCkgY29uc3Q7Ci0gICAgRHJhZ09wZXJh
dGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0U291cmNlT3Bl
cmF0aW9uKERyYWdPcGVyYXRpb24pOwotICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRpb24o
RHJhZ09wZXJhdGlvbik7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2soKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZGVzdGluYXRp
b25PcGVyYXRpb25NYXNrKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTb3VyY2VPcGVyYXRpb25NYXNr
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogICAgIHZvaWQgc2V0RHJhZ0hh
c1N0YXJ0ZWQoKSB7IG1fc2hvdWxkVXBkYXRlRHJhZ0ltYWdlID0gdHJ1ZTsgfQogICAgIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2NhdGlvbikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5kZXggYTkyM2NhZTU4Y2IuLmJmODNkNjNjZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC02MCwxOCArNjAsMjEgQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJh
Z1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCisvLyBTZWUgTlNE
cmFnT3BlcmF0aW9uLCBfVUlEcmFnT3BlcmF0aW9uIGFuZCBVSURyb3BPcGVyYXRpb24uCiB0eXBl
ZGVmIGVudW0gewotICAgIERyYWdPcGVyYXRpb25Ob25lICAgID0gMCwKICAgICBEcmFnT3BlcmF0
aW9uQ29weSAgICA9IDEsCiAgICAgRHJhZ09wZXJhdGlvbkxpbmsgICAgPSAyLAogICAgIERyYWdP
cGVyYXRpb25HZW5lcmljID0gNCwKICAgICBEcmFnT3BlcmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAg
RHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwKICAgICBEcmFnT3BlcmF0aW9uRGVsZXRlICA9IDMy
LAotICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlOVF9NQVgKIH0gRHJhZ09wZXJhdGlvbjsK
IAorY29uc3RleHByIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkK
K3sKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmssIERy
YWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1v
dmUsIERyYWdPcGVyYXRpb25EZWxldGUgfTsKK30KKwogZW51bSBjbGFzcyBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhhc05vbkRlZmF1bHRQYXN0
ZWJvYXJkRGF0YSA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIERyYWdIYW5kbGluZ01l
dGhvZCA6IHVpbnQ4X3QgeyBOb25lLCBFZGl0UGxhaW5UZXh0LCBFZGl0UmljaFRleHQsIFVwbG9h
ZEZpbGUsIFBhZ2VMb2FkLCBTZXRDb2xvciwgTm9uRGVmYXVsdCB9OwpAQCAtOTMsNiArOTYsMTgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2Q+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkNvcHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3Ry
dWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAg
ICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiwKQEAgLTEwMiw0ICsxMTcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgID47
CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IE9wdGlvblNldFZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblBy
aXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA0ZWUyZTJmYjM1OC4u
Y2YzMDlmM2M5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0y
MDgsNyArMjA4LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBjbGll
bnQoKS5kcmFnRW5kZWQoKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
IHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEpOwogfQpAQCAtMjI0
LDcgKzIyNCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRy
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBk
cmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBjbGVhckRy
YWdDYXJldCgpOwogCi0gICAgaWYgKG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpID09IERyYWdP
cGVyYXRpb25Ob25lKQorICAgIGlmICghb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gdXJsU3RyaW5nID0gZHJhZ0RhdGEuYXNVUkwo
KTsKQEAgLTMwNCwyMSArMzA0LDIxIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZWRJ
bnRvRG9jdW1lbnQoRG9jdW1lbnQqIG5ld0RvY3VtZW50KQogICAgIG1fZG9jdW1lbnRVbmRlck1v
dXNlID0gbmV3RG9jdW1lbnQ7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERy
YWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpKTsK
IAogICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2soKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmlz
RW1wdHkoKSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBGSVhNRTogV2h5IG5vdCBj
YWxsIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/Ci0gICAgICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgIG1fZHJhZ0hhbmRsaW5n
TWV0aG9kID0gdHJ5RG9jdW1lbnREcmFnKGRyYWdEYXRhLCBtX2RyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2ssIGRyYWdPcGVyYXRpb24pOwogICAgIGlmIChtX2RyYWdIYW5kbGluZ01ldGhvZCA9PSBE
cmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUgJiYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5j
b250YWlucyhEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpKSkgewogICAgICAgICBkcmFnT3Bl
cmF0aW9uID0gb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSk7Ci0gICAgICAgIGlmIChkcmFnT3Bl
cmF0aW9uICE9IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbikK
ICAgICAgICAgICAgIG1fZHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpQ
YWdlTG9hZDsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ0hhbmRsaW5nTWV0aG9kID09IERyYWdIYW5k
bGluZ01ldGhvZDo6U2V0Q29sb3IpCiAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0
aW9uQ29weTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbgogCiAj
ZW5kaWYKIAotRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERy
YWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIERyYWdPcGVyYXRpb24mIGRyYWdPcGVyYXRpb24p
CitEcmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIGRyYWdPcGVyYXRp
b24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSkKICAgICAgICAgcmV0dXJuIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBEcmFnSGFuZGxpbmdN
ZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEsIE9wdAogICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9
IDE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9udW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkKQotICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgICAg
ICAgICAgbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+c2V0Q2FuUmVjZWl2ZURyb3BwZWRG
aWxlcyhtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBvdmVyIGEgZmlsZSBpbnB1dCBlbGVtZW50LiBUaGUgZHJh
Z2dlZCBpdGVtKHMpIHdpbGwgbG9hZGVkIGludG8gdGhlIHZpZXcsCkBAIC00ODksNyArNDg5LDcg
QEAgRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiByb290VmkKICAgICByZXR1cm4gbV9kcmFnU291cmNlQWN0aW9u
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250
cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50
KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOwogCkBAIC01MDQsNyArNTA0LDcgQEAgRHJhZ09w
ZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50ICYmIChtX2RpZEluaXRpYXRlRHJh
ZyB8fCAoaXM8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVudCkgJiYgIXBsdWdpbkRvY3VtZW50QWNj
ZXB0c0RyYWdzKSB8fCBkb2N1bWVudC0+aGFzRWRpdGFibGVTdHlsZSgpKSkKLSAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHJldHVybiBkcmFnT3BlcmF0aW9uKGRyYWdEYXRhKTsKIH0KIApAQCAtNjkzLDI4ICs2OTMsMjgg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBkZWZh
dWx0T3BlcmF0aW9uRm9yRHJhZyhEcmFnT3BlcmF0aW9uIHNyY09wTWFzaykKK3N0YXRpYyBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaykKIHsKICAgICAvLyBUaGlzIGlzIGRlc2ln
bmVkIHRvIG1hdGNoIElFJ3Mgb3BlcmF0aW9uIGZhbGxiYWNrIGZvciB0aGUgY2FzZSB3aGVyZQog
ICAgIC8vIHRoZSBwYWdlIGNhbGxzIHByZXZlbnREZWZhdWx0KCkgaW4gYSBkcmFnIGV2ZW50IGJ1
dCBkb2Vzbid0IHNldCBkcm9wRWZmZWN0LgotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09wZXJh
dGlvbkV2ZXJ5KQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1h
c2sgPT0gRHJhZ09wZXJhdGlvbk5vbmUpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9u
ZTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkK
ICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwotICAgIGlmIChzcmNPcE1hc2sgJiBE
cmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAgIHJldHVybiBEcmFnQ29udHJvbGxlcjo6
cGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFn
T3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKLSAgICBp
ZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKHNvdXJjZU9wZXJhdGlv
bk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbkxpbms7CiAgICAgCiAgICAgLy8gRklYTUU6IERvZXMgSUUgcmVhbGx5IHJldHVybiAi
Z2VuZXJpYyIgZXZlbiBpZiBubyBvcGVyYXRpb25zIHdlcmUgYWxsb3dlZCBieSB0aGUgc291cmNl
PwogICAgIHJldHVybiBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKIH0KIAotYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlv
biYgb3BlcmF0aW9uKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIG9wZXJhdGlvbikKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudFVuZGVyTW91c2UpOwogICAgIFJlZjxGcmFtZT4gbWFpbkZy
YW1lKG1fcGFnZS5tYWluRnJhbWUoKSk7CkBAIC03MjIsMTcgKzcyMiwxNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3Bl
cmF0aW9uJiBvcGVyYQogICAgIGlmICghdmlld1Byb3RlY3RvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24gPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKLSAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7IHJldHVybiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7IH0sIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ0RhdGEuY29udGFp
bnNGaWxlcygpKTsKKyAgICBhdXRvIHNvdXJjZU9wZXJhdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKKyAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7IHJldHVybiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7IH0sIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdEYXRhLmNv
bnRhaW5zRmlsZXMoKSk7CiAgICAgaWYgKCF0YXJnZXRSZXNwb25zZS5hY2NlcHQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGlmICghdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uKQotICAg
ICAgICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb24p
OwotICAgIGVsc2UgaWYgKCEoc291cmNlT3BlcmF0aW9uICYgdGFyZ2V0UmVzcG9uc2Uub3BlcmF0
aW9uLnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3BlcmF0aW9uIHdoaWNoIGlz
IG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3Bl
cmF0aW9uTm9uZTsKKyAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2spCisgICAg
ICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNvdXJjZU9wZXJhdGlvbk1h
c2spOworICAgIGVsc2UgaWYgKCFzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHRhcmdl
dFJlc3BvbnNlLm9wZXJhdGlvbk1hc2sudmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBh
biBvcGVyYXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlCisgICAgICAg
IG9wZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICBlbHNlCi0gICAgICAgIG9wZXJhdGlvbiA9
IHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbi52YWx1ZSgpOworICAgICAgICBvcGVyYXRpb24gPSBk
ZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyh0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrLnZhbHVl
KCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NTYsNyArOTU2LDcgQEAgT3B0aW9uYWw8
SGl0VGVzdFJlc3VsdD4gRHJhZ0NvbnRyb2xsZXI6OmhpdFRlc3RSZXN1bHRGb3JEcmFnU3RhcnQo
RnJhbWUmIHNvdXJjZSwKICAgICByZXR1cm4geyBoaXRUZXN0UmVzdWx0IH07CiB9CiAKLWJvb2wg
RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0
YXRlLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdF
dmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJk
RGF0YSBoYXNEYXRhKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3Qg
SW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSBoYXNEYXRh
KQogewogICAgIGlmICghc3RhdGUuc291cmNlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05
NzIsNyArOTcyLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMs
IGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBJbnRQb2ludCBtb3Vz
ZURyYWdnZWRQb2ludCA9IHNyYy52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZHJhZ0V2ZW50LnBv
c2l0aW9uKCkpOwogCiAgICAgbV9kcmFnZ2luZ0ltYWdlVVJMID0gVVJMKCk7Ci0gICAgbV9zb3Vy
Y2VEcmFnT3BlcmF0aW9uID0gc3JjT3A7CisgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFzayA9
IHNvdXJjZU9wZXJhdGlvbk1hc2s7CiAKICAgICBEcmFnSW1hZ2UgZHJhZ0ltYWdlOwogICAgIElu
dFBvaW50IGRyYWdMb2MoMCwgMCk7CkBAIC05OTUsNyArOTk1LDcgQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdP
cGVyYXRpb24KICAgICAgICAgLy8gU2VsZWN0aW9uLCBpbWFnZSwgYW5kIGxpbmsgZHJhZ3MgcmVj
ZWl2ZSBhIGRlZmF1bHQgc2V0IG9mIGFsbG93ZWQgZHJhZyBvcGVyYXRpb25zIHRoYXQKICAgICAg
ICAgLy8gZm9sbG93cyBmcm9tOgogICAgICAgICAvLyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jy
b3dzZXIvdHJ1bmsvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tP3Jldj00ODUyNiNM
MzQzMAotICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcmFnT3Bl
cmF0aW9uPihtX3NvdXJjZURyYWdPcGVyYXRpb24gfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERy
YWdPcGVyYXRpb25Db3B5KTsKKyAgICAgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFzay5hZGQo
eyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlvbkNvcHkgfSk7CiAgICAgfQogCiAg
ICAgQVNTRVJUKHN0YXRlLnNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgK
aW5kZXggOTBmODc1YzA2N2EuLmVhNDk5ZTBlYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5oCkBAIC01OSw5ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEcmFnT3Bl
cmF0aW9uIHBsYXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRpb24oKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIERyYWdPcGVyYXRpb24gZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZChjb25zdCBEcmFn
RGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0
YSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdPcGVyYXRpb24gZHJhZ1VwZGF0ZWQoY29uc3Qg
RHJhZ0RhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBk
cmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGVy
Zm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYWdDYW5jZWxsZWQoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgLy8g
ZHJhZyBsb2dpYyBpcyBpbiBXZWJDb3JlLgogICAgIHZvaWQgc2V0RGlkSW5pdGlhdGVEcmFnKGJv
b2wgaW5pdGlhdGVkKSB7IG1fZGlkSW5pdGlhdGVEcmFnID0gaW5pdGlhdGVkOyB9CiAgICAgYm9v
bCBkaWRJbml0aWF0ZURyYWcoKSBjb25zdCB7IHJldHVybiBtX2RpZEluaXRpYXRlRHJhZzsgfQot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlRHJhZ09wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlRHJhZ09wZXJhdGlvbjsgfQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3Vy
Y2VEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhZ09wZXJhdGlv
bk1hc2s7IH0KICAgICBjb25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJldHVy
biBtX2RyYWdnaW5nSW1hZ2VVUkw7IH0KICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29uc3QgSW50
UG9pbnQmIG9mZnNldCkgeyBtX2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICBjb25zdCBJbnRQ
b2ludCYgZHJhZ09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ09mZnNldDsgfQpAQCAtOTUs
NyArOTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9wcGVk
SW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXpl
cyk7CiAKICAgICB2b2lkIHByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZUZyYW1lLCBE
cmFnU291cmNlQWN0aW9uLCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBEYXRhVHJhbnNmZXImLCBj
b25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydERyYWcoRnJh
bWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBI
YXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lJiBz
cmMsIGNvbnN0IERyYWdTdGF0ZSYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBI
YXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgIHN0YXRpYyBjb25zdCBJbnRTaXplJiBt
YXhEcmFnSW1hZ2VTaXplKCk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IE1heE9yaWdpbmFsSW1h
Z2VBcmVhOwpAQCAtMTA4LDExICsxMDgsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGRpc3BhdGNo
VGV4dElucHV0RXZlbnRGb3IoRnJhbWUqLCBjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY2Fu
UHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGNvbmNsdWRlRWRpdERyYWco
Y29uc3QgRHJhZ0RhdGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkT3JVcGRhdGVk
KGNvbnN0IERyYWdEYXRhJik7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb25Gb3JMb2FkKGNv
bnN0IERyYWdEYXRhJik7Ci0gICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3VtZW50RHJhZyhj
b25zdCBEcmFnRGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+LCBEcmFnT3Bl
cmF0aW9uJik7Ci0gICAgYm9vbCB0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmLCBEcmFnT3Bl
cmF0aW9uJik7Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRh
Jik7CisgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29u
c3QgRHJhZ0RhdGEmKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25Gb3JM
b2FkKGNvbnN0IERyYWdEYXRhJik7CisgICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3VtZW50
RHJhZyhjb25zdCBEcmFnRGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+LCBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiYpOworICAgIGJvb2wgdHJ5REhUTUxEcmFnKGNvbnN0IERy
YWdEYXRhJiwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKKyAgICBPcHRpb25hbDxEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgdm9pZCBjbGVhckRy
YWdDYXJldCgpOwogICAgIGJvb2wgZHJhZ0lzTW92ZShGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IERy
YWdEYXRhJik7CiAgICAgYm9vbCBpc0NvcHlLZXlEb3duKGNvbnN0IERyYWdEYXRhJik7CkBAIC0x
NTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7CiAgICAgRHJhZ1NvdXJjZUFjdGlvbiBt
X2RyYWdTb3VyY2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9uTm9uZSB9OwogICAgIGJvb2wgbV9k
aWRJbml0aWF0ZURyYWcgeyBmYWxzZSB9OwotICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFn
T3BlcmF0aW9uIHsgRHJhZ09wZXJhdGlvbk5vbmUgfTsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVu
IGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0aGluIFdlYktpdAorICAgIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrOyAvLyBTZXQgaW4g
c3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2Vi
S2l0LgogICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKICAgICBVUkwgbV9kcmFnZ2luZ0ltYWdl
VVJMOwogICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdEcm9wIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBkNTU3N2VlZjExNC4uNWJkMGQwOWY1MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIzMzQsNyArMjMzNCw3IEBAIHN0YXRp
YyBib29sIHRhcmdldElzRnJhbWUoTm9kZSogdGFyZ2V0LCBGcmFtZSomIGZyYW1lKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBjb252ZXJ0RHJvcFpvbmVPcGVy
YXRpb25Ub0RyYWdPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnT3BlcmF0aW9uKQorc3RhdGlj
IE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09w
ZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKGRyYWdPcGVy
YXRpb24gPT0gImNvcHkiKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CkBAIC0y
MzQyLDIxICsyMzQyLDI0IEBAIHN0YXRpYyBEcmFnT3BlcmF0aW9uIGNvbnZlcnREcm9wWm9uZU9w
ZXJhdGlvblRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPCiAgICAgICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTW92ZTsKICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAibGluayIpCiAg
ICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlv
bk5vbmU7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIFN0cmluZyBjb252
ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRp
b24pCitzdGF0aWMgU3RyaW5nIGNvbnZlcnREcmFnT3BlcmF0aW9uVG9Ecm9wWm9uZU9wZXJhdGlv
bihPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCiB7Ci0gICAgc3dpdGNoIChvcGVy
YXRpb24pIHsKLSAgICBjYXNlIERyYWdPcGVyYXRpb25Db3B5OgotICAgICAgICByZXR1cm4gImNv
cHkiX3M7Ci0gICAgY2FzZSBEcmFnT3BlcmF0aW9uTW92ZToKLSAgICAgICAgcmV0dXJuICJtb3Zl
Il9zOwotICAgIGNhc2UgRHJhZ09wZXJhdGlvbkxpbms6Ci0gICAgICAgIHJldHVybiAibGluayJf
czsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gImNvcHkiX3M7CisgICAgaWYgKG9wZXJh
dGlvbikgeworICAgICAgICBzd2l0Y2ggKCpvcGVyYXRpb24pIHsKKyAgICAgICAgY2FzZSBEcmFn
T3BlcmF0aW9uQ29weToKKyAgICAgICAgICAgIHJldHVybiAiY29weSJfczsKKyAgICAgICAgY2Fz
ZSBEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAgICAgICAgIHJldHVybiAibW92ZSJfczsKKyAgICAg
ICAgY2FzZSBEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgICAgIHJldHVybiAibGluayJfczsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQor
ICAgIHJldHVybiAiY29weSJfczsKIH0KIAogc3RhdGljIGJvb2wgaGFzRHJvcFpvbmVUeXBlKERh
dGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBjb25zdCBTdHJpbmcmIGtleXdvcmQpCkBAIC0yMzc2
LDE1ICsyMzc5LDE1IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQsIERh
dGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQogICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcga2V5
d29yZHMoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRkcm9w
em9uZUF0dHIpLCB0cnVlKTsKICAgICAgICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7Ci0gICAgICAg
IERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAg
ICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwLCBzaXplID0ga2V5d29yZHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7Ci0g
ICAgICAgICAgICBEcmFnT3BlcmF0aW9uIG9wID0gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9E
cmFnT3BlcmF0aW9uKGtleXdvcmRzW2ldKTsKLSAgICAgICAgICAgIGlmIChvcCAhPSBEcmFnT3Bl
cmF0aW9uTm9uZSkgewotICAgICAgICAgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uID09IERyYWdP
cGVyYXRpb25Ob25lKQotICAgICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3A7Cisg
ICAgICAgICAgICBhdXRvIG9wZXJhdGlvbkZyb21LZXl3b3JkID0gY29udmVydERyb3Bab25lT3Bl
cmF0aW9uVG9EcmFnT3BlcmF0aW9uKGtleXdvcmRzW2ldKTsKKyAgICAgICAgICAgIGlmIChvcGVy
YXRpb25Gcm9tS2V5d29yZCkgeworICAgICAgICAgICAgICAgIGlmICghZHJhZ09wZXJhdGlvbikK
KyAgICAgICAgICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wZXJhdGlvbkZyb21LZXl3b3Jk
OwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IG1hdGNoZWQg
fHwgaGFzRHJvcFpvbmVUeXBlKGRhdGFUcmFuc2Zlciwga2V5d29yZHNbaV0uc3RyaW5nKCkpOwot
ICAgICAgICAgICAgaWYgKG1hdGNoZWQgJiYgZHJhZ09wZXJhdGlvbiAhPSBEcmFnT3BlcmF0aW9u
Tm9uZSkKKyAgICAgICAgICAgIGlmIChtYXRjaGVkICYmIGRyYWdPcGVyYXRpb24pCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1hdGNoZWQpIHsKQEAgLTIz
OTYsMTkgKzIzOTksMTkgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5vZGUmIHRhcmdldCwg
RGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCiB9CiAKIEV2ZW50SGFuZGxlcjo6RHJhZ1Rhcmdl
dFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYg
cGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdG
aWxlcykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0Zp
bGVzKQogewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JV
cGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0LmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCks
IHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIg
PSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCh0YXJnZXQuZG9jdW1l
bnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdG
aWxlcyk7CiAgICAgYm9vbCBhY2NlcHQgPSBkaXNwYXRjaERyYWdFdmVudChldmVudFR5cGUsIHRh
cmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQoKSk7CiAgICAgaWYgKCFhY2NlcHQpCiAgICAg
ICAgIGFjY2VwdCA9IGZpbmREcm9wWm9uZSh0YXJnZXQsIGRhdGFUcmFuc2Zlcik7CiAgICAgZGF0
YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgaWYgKGFjY2VwdCAmJiAh
ZGF0YVRyYW5zZmVyLT5kcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVy
biB7IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb24oKSB9OworICAgICAg
ICByZXR1cm4geyB0cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygp
IH07CiAgICAgcmV0dXJuIHsgYWNjZXB0LCBXVEY6Om51bGxvcHQgfTsKIH0KIAotRXZlbnRIYW5k
bGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYgbWFrZVBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitFdmVudEhhbmRsZXI6OkRyYWdU
YXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+KCk+JiBtYWtlUGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJh
bWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogICAgIGlmICghbV9mcmFtZS52aWV3KCkpCkBA
IC0yNDM4LDE5ICsyNDQxLDE5IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2
ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZy
YW1lKiB0YXJnZXRGcmFtZTsKICAgICAgICAgaWYgKHRhcmdldElzRnJhbWUobmV3VGFyZ2V0Lmdl
dCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAg
ICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVE
cmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dp
bmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRI
YW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VP
cGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJn
ZXQpIHsKICAgICAgICAgICAgIC8vIEFzIHBlciBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUg
c3BlYy4sIHdlIG11c3QgYWx3YXlzIGZpcmUgYSBkcmFnIGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBk
cmFnZW50ZXIsIGRyYWdsZWF2ZSwgb3IgZHJhZ292ZXIgZXZlbnQuCiAgICAgICAgICAgICBkaXNw
YXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVu
dCk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQ
YXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAg
ICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJvYXJkKCksIHNv
dXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBSZWN1cnNpbmcgYWdhaW4gaGVyZSBkb2Vzbid0IG1ha2Ugc2Vu
c2UgaWYgdGhlIG5ld1RhcmdldCBhbmQgbV9kcmFnVGFyZ2V0IHdlcmUgaW4gdGhlIHNhbWUgZnJh
bWUuCiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9u
c2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQs
IG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAg
ICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURy
YWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJh
Z2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0gICAgICAg
ICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdE
cm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291
cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5z
ZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFy
Z2V0LT5kb2N1bWVudCgpLCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBk
cmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnbGVhdmVFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQo
KSk7CiAgICAgICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsK
ICAgICAgICAgfQpAQCAtMjQ2NCwxMiArMjQ2NywxMiBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJn
ZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3Jt
TQogICAgICAgICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1l
KG5ld1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0
RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVy
YXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0
RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVi
b2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxz
ZSBpZiAobmV3VGFyZ2V0KSB7CiAgICAgICAgICAgICAvLyBOb3RlLCB3aGVuIGRlYWxpbmcgd2l0
aCBzdWItZnJhbWVzLCB3ZSBtYXkgbmVlZCB0byBmaXJlIG9ubHkgYSBkcmFnb3ZlciBldmVudCBh
cyBhIGRyYWcgZXZlbnQgbWF5IGhhdmUgYmVlbiBmaXJlZCBlYXJsaWVyLgogICAgICAgICAgICAg
aWYgKCFtX3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCkKICAgICAgICAgICAgICAgICBkaXNw
YXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVu
dCk7Ci0gICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2
ZW50KGV2ZW50TmFtZXMoKS5kcmFnb3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBh
c3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAg
IHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygp
LmRyYWdvdmVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgICAgIG1fc2hvdWxkT25s
eUZpcmVEcmFnT3ZlckV2ZW50ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDc3LDI1
ICsyNDgwLDI1IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgcmV0dXJuIHJlc3BvbnNl
OwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVi
b2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykK
K3ZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2lu
Z0ZpbGVzKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKICAg
ICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0
LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAg
ICAgICAgdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGV2ZW50
LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOwor
ICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9w
KGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2lu
Z0ZpbGVzKTsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewogICAgICAgICBkaXNwYXRj
aEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7
CiAKLSAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVw
ZGF0aW5nRHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVi
b2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0
YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9k
cmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRp
b25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRO
YW1lcygpLmRyYWdsZWF2ZUV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVy
LmdldCgpKTsKICAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7
CiAgICAgfQogICAgIGNsZWFyRHJhZ1N0YXRlKCk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpw
ZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VP
cGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3Jt
RHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+
IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCkBAIC0yNTAzLDkgKzI1MDYsOSBAQCBib29sIEV2
ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZlbnQsIHN0ZDo6dW5pcQogICAgIGJvb2wgcHJldmVudGVkRGVmYXVsdCA9IGZhbHNlOwogICAg
IGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAg
ICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgIHByZXZlbnRlZERlZmF1bHQgPSB0
YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGV2ZW50LCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAg
ICAgICAgcHJldmVudGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJm
b3JtRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0g
ICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKG1f
ZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0
aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBh
c3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAg
cHJldmVudGVkRGVmYXVsdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcm9wRXZl
bnQsICptX2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkYXRhVHJh
bnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICB9CkBAIC0zNzI5LDEzICszNzMy
LDEzIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkaWRTdGFydERyYWcoKQogI2VuZGlmCiB9CiAKLXZv
aWQgRXZlbnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24g
bWF5RXh0ZW5kRHJhZ1Nlc3Npb24pCit2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVk
QXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGRyYWdPcGVyYXRpb25NYXNrLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFn
U2Vzc2lvbikKIHsKICAgICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVxdWVzdCBzbyB0aGF0IFJlbmRl
ckxheWVyIGdldHMgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92ZXIgYW5kIDphY3RpdmUgcHNl
dWRvY2xhc3Nlcy4KICAgICBwcmVwYXJlTW91c2VFdmVudChPcHRpb25TZXQ8SGl0VGVzdFJlcXVl
c3Q6OlJlcXVlc3RUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVz
dDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH0sIGV2ZW50KTsKIAogICAgIGlmIChz
aG91bGREaXNwYXRjaEV2ZW50c1RvRHJhZ1NvdXJjZUVsZW1lbnQoKSkgewotICAgICAgICBkcmFn
U3RhdGUoKS5kYXRhVHJhbnNmZXItPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbik7
CisgICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRp
b25NYXNrKGRyYWdPcGVyYXRpb25NYXNrKTsKICAgICAgICAgZGlzcGF0Y2hFdmVudFRvRHJhZ1Nv
dXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwgZXZlbnQpOwogICAgIH0KICAg
ICBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CkBAIC0zODY1LDcgKzM4NjgsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCwgQ2hlY2tEcgogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBw
b2ludCwgd2UgZG9uJ3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawogICAg
IGludmFsaWRhdGVDbGljaygpOwogICAgIAotICAgIERyYWdPcGVyYXRpb24gc3JjT3AgPSBEcmFn
T3BlcmF0aW9uTm9uZTsgICAgICAKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNl
T3BlcmF0aW9uTWFzazsKICAgICAKICAgICAvLyBUaGlzIGRvZXMgd29yayBvbmx5IGlmIHdlIG1p
c3NlZCBhIGRyYWdFbmQuIERvIGl0IGFueXdheSwganVzdCB0byBtYWtlIHN1cmUgdGhlIG9sZCBk
YXRhVHJhbnNmZXIgZ2V0cyBudW1iZWQuCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGRvaW5nIHRo
aXMgZWFybGllciBpbiB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBlYXJsaWVzdCBwb2ludCB3ZSdyZSBz
dXJlIGl0IHdvdWxkIGJlIHNhZmUgdG8gZHJvcCBhbiBvbGQgZHJhZy4KQEAgLTM5MDAsNyArMzkw
Myw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAKICAgICAgICAgaWYgKG1fbW91c2VEb3du
TWF5U3RhcnREcmFnKSB7CiAgICAgICAgICAgICAvLyBHYXRoZXIgdmFsdWVzIGZyb20gREhUTUwg
ZWxlbWVudCwgaWYgaXQgc2V0IGFueS4KLSAgICAgICAgICAgIHNyY09wID0gZHJhZ1N0YXRlKCku
ZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHNvdXJjZU9wZXJh
dGlvbk1hc2sgPSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbk1hc2so
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gWXVjaywgYSBkcmFnZ2VkSW1hZ2U6bW92
ZVRvOiBtZXNzYWdlIGNhbiBiZSBmaXJlZCBhcyBhIHJlc3VsdCBvZiBraWNraW5nIG9mZiB0aGUK
ICAgICAgICAgICAgIC8vIGRyYWcgd2l0aCBkcmFnSW1hZ2UhIEJlY2F1c2Ugb2YgdGhhdCBkdW1i
IHJlZW50cmFuY3ksIHdlIG1heSB0aGluayB3ZSd2ZSBub3QKQEAgLTM5MTEsNyArMzkxNCw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnKSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAg
bV9kaWRTdGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFn
KG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25D
b250ZW50c1Bvc2l0aW9uLCBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgICAgICBt
X2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWco
bV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGV2ZW50LmV2ZW50KCks
IG1fbW91c2VEb3duQ29udGVudHNQb3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRh
KTsKICAgICAgICAgLy8gSW4gV2ViS2l0MiB3ZSBjb3VsZCByZS1lbnRlciB0aGlzIGNvZGUgYW5k
IHN0YXJ0IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBwcm9i
bGVtcyB3aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9taXNl
ZCB0eXBlcy4KICAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaAppbmRleCA2ZmZjODNjMDEyZi4uMjdjYWU2MWVkMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaApAQCAtMTYzLDExICsxNjMsMTEgQEAgcHVibGljOgogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgc3RydWN0IERyYWdUYXJnZXRSZXNwb25zZSB7CiAgICAgICAg
IGJvb2wgYWNjZXB0IHsgZmFsc2UgfTsKLSAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
b3BlcmF0aW9uOworICAgICAgICBPcHRpb25hbDxPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4+IG9w
ZXJhdGlvbk1hc2s7CiAgICAgfTsKLSAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgdXBkYXRlRHJhZ0Fu
ZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlv
biwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKLSAgICB2b2lkIGNhbmNlbERyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFn
T3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIGJvb2wgcGVyZm9ybURyYWdBbmRE
cm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIERyYWdUYXJnZXRS
ZXNwb25zZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25z
dCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICB2b2lkIGNhbmNlbERy
YWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7
CisgICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB2b2lkIHVwZGF0ZURyYWdTdGF0ZUFmdGVyRWRpdERy
YWdJZk5lZWRlZChFbGVtZW50JiByb290RWRpdGFibGVFbGVtZW50KTsKICAgICBSZWZQdHI8RWxl
bWVudD4gZHJhZ2dlZEVsZW1lbnQoKSBjb25zdDsKICNlbmRpZgpAQCAtMjY4LDcgKzI2OCw3IEBA
IHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFN0YXJ0RHJhZygpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgRHJh
Z09wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gPSBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6
Tm8pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpObyk7CiAjZW5kaWYKIAogICAgIHZvaWQg
Zm9jdXNEb2N1bWVudFZpZXcoKTsKQEAgLTQxNiw3ICs0MTYsNyBAQCBwcml2YXRlOgogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIGRpc3BhdGNoRHJhZ0V2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmLCBEYXRhVHJhbnNmZXImKTsKLSAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hE
cmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVt
ZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiYmICwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBE
cmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmICwgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgaW52YWxpZGF0ZURhdGFU
cmFuc2ZlcigpOwogCiAgICAgYm9vbCBoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAppbmRleCA3ZDA1MmNmZTE4YS4uZjg2ZWE0MzU2
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAK
QEAgLTUwLDEzICs1MCwxMyBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4gZHJhZ0RhdGEuZmxhZ3MoKSAmIERy
YWdBcHBsaWNhdGlvbklzQ29weUtleURvd247CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGlzIGluY29tcGxldGUK
ICAgICBpZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVy
YXRpb25Db3B5OwogCi0gICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhEcmFn
SW1hZ2VTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250
cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMu
bW0KaW5kZXggODViZDQ4YWNjMjIuLjg5NzE0Y2U1NDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQpAQCAtNjQsMTAgKzY0LDEwIEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAg
IHJldHVybiBkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsK
IH0KICAgICAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29u
c3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlm
IChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCkKLSAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgYm9vbCBtYXlDb250YWluVVJMOwogICAgIGlmIChjYW5Mb2FkRGF0YUZyb21EcmFnZ2luZ1Bh
c3RlYm9hcmQoKSkKQEAgLTc2LDEyICs3NiwxMiBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9s
bGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAgICAgbWF5
Q29udGFpblVSTCA9IGRyYWdEYXRhLmNvbnRhaW5zVVJMVHlwZUlkZW50aWZpZXIoKTsKIAogICAg
IGlmICghbWF5Q29udGFpblVSTCAmJiAhZHJhZ0RhdGEuY29udGFpbnNQcm9taXNlKCkpCi0gICAg
ICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAogICAgIGlmICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwgKCEoZHJhZ0RhdGEuZmxhZ3Mo
KSAmIChEcmFnQXBwbGljYXRpb25IYXNBdHRhY2hlZFNoZWV0IHwgRHJhZ0FwcGxpY2F0aW9uSXNT
b3VyY2UpKSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAotICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiBjb25z
dCBJbnRTaXplJiBEcmFnQ29udHJvbGxlcjo6bWF4RHJhZ0ltYWdlU2l6ZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKaW5kZXggMmQ0NmQ2YjIzZWEu
LjJmODRlOWIzZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29u
dHJvbGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xs
ZXJXaW4uY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgY29uc3QgaW50IERyYWdDb250cm9sbGVyOjpE
cmFnSWNvbkJvdHRvbUluc2V0ID0gMzsKIAogY29uc3QgZmxvYXQgRHJhZ0NvbnRyb2xsZXI6OkRy
YWdJbWFnZUFscGhhID0gMC43NWY7CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJh
dGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdE
YXRhKQogewotICAgIC8vRklYTUU6IHRvIG1hdGNoIHRoZSBtYWNvcyBiZWhhdmlvdXIgd2Ugc2hv
dWxkIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZQorICAgIC8vRklYTUU6IHRvIG1hdGNoIHRoZSBt
YWNvcyBiZWhhdmlvdXIgd2Ugc2hvdWxkIHJldHVybiBXVEY6Om51bGxvcHQuCiAgICAgLy9pZiB3
ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5k
b3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQKICAgICAvL0lmIHRoaXMgY2FuIGJlIGRldGVybWluZWQg
ZnJvbSB3aXRoaW4gV2ViQ29yZSBvcGVyYXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxsZWQgaW50byAK
ICAgICAvL1dlYkNvcmUgaXRzZWxmCi0gICAgcmV0dXJuIGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkg
JiYgIW1fZGlkSW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9u
Tm9uZTsKKyAgICByZXR1cm4gKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlh
dGVEcmFnKSA/IERyYWdPcGVyYXRpb25Db3B5IDogV1RGOjpudWxsb3B0OwogfQogCiBib29sIERy
YWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKGNvbnN0IERyYWdEYXRhJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdEYXRhLmNwcAppbmRleCA4ZjY3NTVmNTc2MS4uZThjNDBmNTU5MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShDT0NPQSkKLURyYWdEYXRhOjpEcmFnRGF0YShE
cmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFj
dGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRh
UmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24o
Y2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQog
ICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC00Miw3ICs0Miw3IEBAIERyYWdEYXRh
OjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIGNvbnN0IEludFBvCiB7ICAKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNh
dGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5h
dGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGlj
YXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGlu
YXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikK
ICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3Jt
RHJhZ0RhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCmluZGV4IDQyMWEyOTk0M2Iz
Li4zMWI4YWI5ZWU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03NSwxMyAr
NzUsMTMgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgRHJhZ2dpbmdQdXJwb3NlIHsgRm9yRWRp
dGluZywgRm9yRmlsZVVwbG9hZCwgRm9yQ29sb3JDb250cm9sIH07CiAKICAgICAvLyBjbGllbnRQ
b3NpdGlvbiBpcyB0YWtlbiB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYWcgZXZlbnQgd2l0
aGluIHRoZSB0YXJnZXQgd2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0b3AgbGVmdAotICAgIFdF
QkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9u
Tm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRp
b25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJh
Z0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlE
cmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29u
c3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CiAg
ICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJl
Y2F1c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQg
bm90IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVsdDsKICNpZiBQ
TEFURk9STShXSU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFN
YXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGlj
YXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERy
YWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNh
dGlvbk5vbmUpOwogICAgIGNvbnN0IERyYWdEYXRhTWFwJiBkcmFnRGF0YU1hcCgpOwogICAgIHZv
aWQgZ2V0RHJhZ0ZpbGVEZXNjcmlwdG9yRGF0YShpbnQmIHNpemUsIFN0cmluZyYgcGF0aG5hbWUp
OwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9pZCogZGF0YUJs
b2IpOwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfQogICAgIERyYWdB
cHBsaWNhdGlvbkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkZsYWdz
OyB9CiAgICAgRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0
Zm9ybURyYWdEYXRhOyB9Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQor
ICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2so
KSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQogICAgIGJv
b2wgY29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5ID0gQ29udmVydEZpbGVuYW1l
cykgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BsYWluVGV4dCgpIGNvbnN0OwogICAgIGJvb2wg
Y29udGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2UgPSBEcmFnZ2luZ1B1cnBv
c2U6OkZvckVkaXRpbmcpIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAg
SW50UG9pbnQgbV9jbGllbnRQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9u
OwogICAgIERyYWdEYXRhUmVmIG1fcGxhdGZvcm1EcmFnRGF0YTsKLSAgICBEcmFnT3BlcmF0aW9u
IG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKICAgICBEcmFnQXBwbGljYXRpb25G
bGFncyBtX2FwcGxpY2F0aW9uRmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlTmFtZXM7
CiAgICAgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gbV9kcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJh
Z0RhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29j
b2EubW0KaW5kZXggOWNjYWZjMGNkN2EuLjNhMTI4OWQ0YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTExNiw3ICsxMTYsNyBAQCBz
dGF0aWMgaW5saW5lIFN0cmluZyB0aWZmUGFzdGVib2FyZFR5cGUoKQogI2VuZGlmCiB9CiAKLURy
YWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6
OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlv
blNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6
IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC0xMzEs
NyArMTMxLDcgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IElu
dFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0KIAotRHJhZ0RhdGE6OkRy
YWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlv
biBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9u
U2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0Rh
dGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZs
YWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFj
dGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwg
bV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0
YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGll
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAppbmRl
eCAwYzAxM2NmNjdlZS4uMDhjMmJlYTdjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwCkBAIC0xNDksNDkgKzE0OSw0OSBAQCB1bnNpZ25lZCBzdGF0
ZU1vZGlmaWVyRm9yR2RrQnV0dG9uKHVuc2lnbmVkIGJ1dHRvbikKICAgICByZXR1cm4gMSA8PCAo
OCArIGJ1dHRvbiAtIDEpOwogfQogCi1EcmFnT3BlcmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdP
cGVyYXRpb24oR2RrRHJhZ0FjdGlvbiBnZGtBY3Rpb24pCitPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uIGdka0FjdGlvbikK
IHsKLSAgICAvLyBXZSBoYXZlIG5vIGdvb2Qgd2F5IHRvIGRldGVjdCBEcmFnT3BlcmF0aW9uRXZl
cnkgb3RoZXIgdGhhbgorICAgIC8vIFdlIGhhdmUgbm8gZ29vZCB3YXkgdG8gZGV0ZWN0IGFueURy
YWdPcGVyYXRpb24oKSBvdGhlciB0aGFuCiAgICAgLy8gdG8gdXNlIGl0IHdoZW4gYWxsIGFwcGxp
Y2FibGUgZmxhZ3MgYXJlIG9uLgogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0NPUFkK
ICAgICAgICAgJiYgZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9NT1ZFCiAgICAgICAgICYmIGdka0Fj
dGlvbiAmIEdES19BQ1RJT05fTElOSykKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVy
eTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKIAotICAgIHVuc2lnbmVkIGFj
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBh
Y3Rpb247CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fQ09QWSkKLSAgICAgICAgYWN0
aW9uIHw9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVyYXRp
b25Db3B5KTsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9NT1ZFKQotICAgICAgICBh
Y3Rpb24gfD0gRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJh
dGlvbk1vdmUpOwogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0xJTkspCi0gICAgICAg
IGFjdGlvbiB8PSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3Bl
cmF0aW9uTGluayk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oYWN0
aW9uKTsKKyAgICByZXR1cm4gYWN0aW9uOwogfQogCi1HZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRp
b25Ub0dka0RyYWdBY3Rpb25zKERyYWdPcGVyYXRpb24gY29yZUFjdGlvbikKK0dka0RyYWdBY3Rp
b24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IGNvcmVBY3Rpb24pCiB7CiAgICAgdW5zaWduZWQgZ2RrQWN0aW9uID0gMDsKLSAgICBpZiAoY29y
ZUFjdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICBpZiAoY29yZUFjdGlvbi5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihnZGtBY3Rpb24p
OwogCi0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAoY29y
ZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIGdka0FjdGlvbiB8
PSBHREtfQUNUSU9OX0NPUFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTW92
ZSkKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAg
ICAgIGdka0FjdGlvbiB8PSBHREtfQUNUSU9OX01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBE
cmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0
aW9uTGluaykpCiAgICAgICAgIGdka0FjdGlvbiB8PSBHREtfQUNUSU9OX0xJTks7CiAKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oZ2RrQWN0aW9uKTsKIH0KIAotR2RrRHJh
Z0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKERyYWdPcGVyYXRpb24g
Y29yZUFjdGlvbikKK0dka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0Fj
dGlvbihPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gY29yZUFjdGlvbikKIHsKLSAgICBpZiAoY29y
ZUFjdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkgfHwgY29yZUFjdGlvbiAmIERyYWdPcGVyYXRp
b25Db3B5KQorICAgIGlmIChjb3JlQWN0aW9uID09IGFueURyYWdPcGVyYXRpb24oKSB8fCBjb3Jl
QWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0dXJuIEdES19B
Q1RJT05fQ09QWTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAg
IGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkKICAgICAgICAgcmV0
dXJuIEdES19BQ1RJT05fTU9WRTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25M
aW5rKQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAg
ICAgICAgcmV0dXJuIEdES19BQ1RJT05fTElOSzsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2Rr
RHJhZ0FjdGlvbj4oMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0
aWVzLmgKaW5kZXggNWFhYjRlYjc5YTIuLjE5OGJjOGUyNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCkBAIC01MSw4ICs1MSw4IEBAIFN0cmluZyBkZWZh
dWx0R3RrU3lzdGVtRm9udCgpOwogCiBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBzdGF0ZU1vZGlm
aWVyRm9yR2RrQnV0dG9uKHVuc2lnbmVkIGJ1dHRvbik7CiAKLVdFQkNPUkVfRVhQT1JUIERyYWdP
cGVyYXRpb24gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uKTsKLVdF
QkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMo
RHJhZ09wZXJhdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRp
b25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oRHJhZ09wZXJhdGlvbik7CitXRUJDT1JFX0VYUE9SVCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtE
cmFnQWN0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRv
R2RrRHJhZ0FjdGlvbnMoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKK1dFQkNPUkVfRVhQT1JU
IEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAppbmRleCBlZTBkOGIyNjBjYy4uMTg4
NzBmMjI3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0
YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEJhaWR1
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQxLDcgKzQx
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERy
YWdEYXRhTWFwJiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKQorICAgIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykK
ICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBv
c2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGJjNmU1YTFkNWYyLi5lMjFmM2Q4N2Q4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBA
QAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAgICAg
IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaDoKKyAgICAg
ICAgKFdlYktpdDo6Y29yZURyYWdPcGVyYXRpb25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVy
c2lvbiBmdW5jdGlvbiB0byBhdm9pZCBjYXN0aW5nLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERyYWdEYXRh
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29k
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmRyYWdnaW5nVXBkYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpk
cmFnZ2luZ0V4aXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJh
Z09wZXJhdGlvbik6CisgICAgICAgIC0gTWFrZSB1c2Ugb2YgY29yZURyYWdPcGVyYXRpb25NYXNr
KCkgY29udmVyc2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkSGFuZGxlRHJhZ1N0YXJ0
UmVxdWVzdDpdKToKKyAgICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9u
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnRGF0YUZvckRyb3BTZXNzaW9uOmRyYWdE
ZXN0aW5hdGlvbkFjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnSW50ZXJh
Y3Rpb246d2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW1hdG9yOnNlc3Npb246XSk6CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgZHJhZ0ludGVyYWN0aW9uOnNlc3Npb246ZGlkRW5kV2l0aE9wZXJhdGlv
bjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcm9wSW50ZXJhY3Rpb246c2Vzc2lvbkRp
ZEVuZDpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYWdFbmRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JE
cmFnU2Vzc2lvbik6CisKIDIwMjAtMDYtMDIgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlk
QHNvbnkuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT05bcjI2MDg0NF06IFtHVEtdW1dQRV0gSW5z
cGVjdG9yIEdSZXNvdXJjZSBubyBsb25nZXIgdXBkYXRlZCBhZnRlciBXZWJJbnNwZWN0b3JVSSBm
aWxlIHVwZGF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9V
SUtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKaW5k
ZXggMmQ0M2JhZWJmOGUuLmFiZWUyNTU0N2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Nw
aS9pb3MvVUlLaXRTUEkuaApAQCAtMTAyNSwxMiArMTAyNSw2IEBAIENHRmxvYXQgVUlSb3VuZFRv
U2NyZWVuU2NhbGUoQ0dGbG9hdCB2YWx1ZSwgVUlTY3JlZW4gKik7CiAKIFdURl9FWFRFUk5fQ19F
TkQKIAotdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIFVJRHJhZ09wZXJhdGlvbikKLXsK
LSAgICBVSURyYWdPcGVyYXRpb25Ob25lID0gMCwKLSAgICBVSURyYWdPcGVyYXRpb25FdmVyeSA9
IE5TVUludGVnZXJNYXgsCi19OwotCiBAaW50ZXJmYWNlIFVJRHJhZ0ludGVyYWN0aW9uICgpCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCBnZXR0ZXI9X2xpZnREZWxheSwgc2V0dGVyPV9z
ZXRMaWZ0RGVsYXk6KSBOU1RpbWVJbnRlcnZhbCBsaWZ0RGVsYXk7CiAtICh2b2lkKV9zZXRBbGxv
d3NQb2ludGVyRHJhZ0JlZm9yZUxpZnREZWxheTooQk9PTClhbGxvd3NQb2ludGVyRHJhZ0JlZm9y
ZUxpZnREZWxheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDNmZGQ4MDQ5ZDQ5Li4zZGFhMzJjYjI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CkBAIC0yMDksNiArMjA5LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2Jl
X2ZvcndhcmRfZGVjbGFyZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQn
LAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNv
cmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OkRyYWdP
cGVyYXRpb24nLCAgIyBGSVhNRTogUmVtb3ZlIGFmdGVyIGVudW0gY2xhc3MgRHJhZ09wZXJhdGlv
bi4KICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRDU29ja2V0SWRl
bnRpZmllcicsCkBAIC01ODgsNiArNTg5LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6
CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcic6IFsnPFdlYkNv
cmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJLaXQ6OkRvY3VtZW50RWRp
dGluZ0NvbnRleHRSZXF1ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIiddLAogICAg
ICAgICAnV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kJzogWyc8V2ViQ29yZS9EcmFnQWN0aW9u
cy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6RHJhZ09wZXJhdGlvbic6IFsnPFdlYkNvcmUvRHJh
Z0FjdGlvbnMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMnOiBbJzxX
ZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkZp
bGVDaG9vc2VyU2V0dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10sCiAgICAgICAg
ICdXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJzogWyc8V2ViQ29yZS9TaGFyZURhdGEu
aD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFn
QWN0aW9uc0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJh
Z0FjdGlvbnNJbnRlcm5hbC5oCmluZGV4IGM4NjhjMjc3M2Y4Li44OTc4OWYzODJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJ
bnRlcm5hbC5oCkBAIC00MCw0ICs0MCwyNCBAQCBpbmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soVwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiBVU0UoQVBQS0lUKQoraW5saW5lIE9wdGlvblNldDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNEcmFnT3BlcmF0
aW9uIG9wZXJhdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4g
cmVzdWx0OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5KQorICAgICAg
ICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0
aW9uICYgTlNEcmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTGluayk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkdl
bmVyaWMpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMp
OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQorICAgICAgICBy
ZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBpZiAob3BlcmF0
aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTW92ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkRl
bGV0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmIC8vIFVTRShBUFBLSVQpCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKaW5kZXggZDQ0MzgxMTI5ZjkuLmNlOGYyZjk4ZDEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE1MzEsNyArMTUzMSw3
IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5j
bGllbnRQb3NpdGlvbigpOwogICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRpb24o
KTsKLSAgICBlbmNvZGVyLmVuY29kZUVudW0oZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrKCkpOworICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrKCk7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRyYWdEYXRhLmZsYWdzKCkpOwogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUo
KTsKQEAgLTE1NTAsOCArMTU1MCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShnbG9iYWxQb3NpdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IERyYWdPcGVyYXRpb24gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGVFbnVtKGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaykpCisgICAgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIERyYWdBcHBsaWNhdGlvbkZsYWdzIGFwcGxpY2F0aW9uRmxhZ3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCmluZGV4IDhj
M2IxMGUxMDUwLi5hMDA0NTAwYjBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gbV9wb3NpdGlvbjsKICAgICB1bnNpZ25lZCBtX2RhdGFSZXF1
ZXN0Q291bnQgeyAwIH07CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4gbV9z
ZWxlY3Rpb25EYXRhOwotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9vcGVyYXRpb24geyBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IG1fb3BlcmF0aW9uOwogI2lmIFVTRShHVEs0KQogICAgIEdSZWZQdHI8R0NhbmNl
bGxhYmxlPiBtX2NhbmNlbGxhYmxlOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggYzEzYjI5YjMxZGMuLjFjNTE5
NWYyNzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGszLmNwcApAQCAtMjE3LDExICsyMTcsMTEgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkaWRQ
ZXJmb3JtQWN0aW9uKCkKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICBhdXRvIG9wZXJhdGlvbiA9
IHBhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7Ci0gICAgaWYgKG9wZXJhdGlvbiA9PSBtX29w
ZXJhdGlvbikKKyAgICBpZiAoKCFvcGVyYXRpb24gJiYgIW1fb3BlcmF0aW9uKSB8fCAqb3BlcmF0
aW9uID09ICptX29wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vcGVyYXRpb24g
PSBvcGVyYXRpb247Ci0gICAgZ2RrX2RyYWdfc3RhdHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJh
dGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihtX29wZXJhdGlvbiksIEdES19DVVJSRU5UX1RJTUUp
OworICAgIGdka19kcmFnX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub1Npbmds
ZUdka0RyYWdBY3Rpb24obV9vcGVyYXRpb24gPyAqbV9vcGVyYXRpb24gOiBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4oeyB9KSksIEdES19DVVJSRU5UX1RJTUUpOwogfQogCiB2b2lkIERyb3BUYXJn
ZXQ6OmxlYXZlVGltZXJGaXJlZCgpCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBEcm9wVGFyZ2V0
OjpsZWF2ZVRpbWVyRmlyZWQoKQogICAgIGF1dG8qIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdl
dFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV93ZWJWaWV3KSk7CiAgICAgQVNTRVJUKHBhZ2Up
OwogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJm1fc2VsZWN0aW9uRGF0YS52YWx1ZSgpLCAqbV9w
b3NpdGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3dlYlZpZXcsICptX3Bv
c2l0aW9uKSwgRHJhZ09wZXJhdGlvbk5vbmUpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKCZtX3Nl
bGVjdGlvbkRhdGEudmFsdWUoKSwgKm1fcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2Ny
ZWVuUG9pbnQobV93ZWJWaWV3LCAqbV9wb3NpdGlvbiksIHsgfSk7CiAgICAgcGFnZS0+ZHJhZ0V4
aXRlZChkcmFnRGF0YSk7CiAgICAgcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdl
dEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAKaW5kZXggNTFjYTNlN2I4MjEuLjM2MWU0ZmE1YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcApAQCAtNjMsNyArNjMs
NyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KEd0a1dpZGdldCogd2ViVmlldykKICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPigwKTsKIAogICAgICAgICBkcm9w
LmVudGVyKHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0pOwotICAgICAg
ICByZXR1cm4gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihkcm9wLm1fb3BlcmF0
aW9uKTsKKyAgICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24o
ZHJvcC5tX29wZXJhdGlvbiA/ICpkcm9wLm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+KHsgfSkpOwogICAgIH0pLCB0aGlzKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3QodGFy
Z2V0LCAiZHJhZy1tb3Rpb24iLCBHX0NBTExCQUNLKCtbXShHdGtEcm9wVGFyZ2V0QXN5bmMqLCBH
ZGtEcm9wKiBnZGtEcm9wLCBkb3VibGUgeCwgZG91YmxlIHksIGdwb2ludGVyIHVzZXJEYXRhKSAt
PiBHZGtEcmFnQWN0aW9uIHsKQEAgLTcyLDcgKzcyLDcgQEAgRHJvcFRhcmdldDo6RHJvcFRhcmdl
dChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2Rr
RHJhZ0FjdGlvbj4oMCk7CiAKICAgICAgICAgZHJvcC51cGRhdGUoeyBjbGFtcFRvSW50ZWdlcih4
KSwgY2xhbXBUb0ludGVnZXIoeSkgfSk7Ci0gICAgICAgIHJldHVybiBkcmFnT3BlcmF0aW9uVG9T
aW5nbGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVyYXRpb24pOworICAgICAgICByZXR1cm4gZHJh
Z09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihkcm9wLm1fb3BlcmF0aW9uID8gKmRyb3Au
bV9vcGVyYXRpb24gOiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyB9KSk7CiAgICAgfSksIHRo
aXMpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdCh0YXJnZXQsICJkcmFnLWxlYXZlIiwgR19DQUxM
QkFDSygrW10oR3RrRHJvcFRhcmdldEFzeW5jKiwgR2RrRHJvcCogZ2RrRHJvcCwgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKQEAgLTI3MywxMSArMjczLDExIEBAIHZvaWQgRHJvcFRhcmdldDo6ZGlkUGVy
Zm9ybUFjdGlvbigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBw
YWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChvcGVyYXRpb24gPT0gbV9vcGVy
YXRpb24pCisgICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29wZXJhdGlvbikgfHwgb3BlcmF0aW9u
ID09IG1fb3BlcmF0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBtX29wZXJhdGlvbiA9IG9w
ZXJhdGlvbjsKLSAgICBnZGtfZHJvcF9zdGF0dXMobV9kcm9wLmdldCgpLCBkcmFnT3BlcmF0aW9u
VG9HZGtEcmFnQWN0aW9ucyhtX29wZXJhdGlvbiksIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0Ry
YWdBY3Rpb24obV9vcGVyYXRpb24pKTsKKyAgICBnZGtfZHJvcF9zdGF0dXMobV9kcm9wLmdldCgp
LCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhtX29wZXJhdGlvbiA/ICptX29wZXJhdGlv
biA6IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uKHsgfSkpLCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVH
ZGtEcmFnQWN0aW9uKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+KHsgfSkpKTsKIH0KIAogdm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4
IDY1ZTY5YzJjNTZlLi4wYWVlNGJjOTM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTMyMCw5ICszMjAsOSBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXpl
KQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQgUGFnZUNsaWVudEltcGw6OnN0
YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uLCBEcmFnT3BlcmF0aW9uIGRyYWdPcGVy
YXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKQordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb24sIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4m
JiBkcmFnSW1hZ2UpCiB7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSwgV1RGTW92ZShzZWxlY3Rpb24pLCBkcmFnT3BlcmF0
aW9uLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFn
KFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0aW9uKSwg
ZHJhZ09wZXJhdGlvbk1hc2ssIFdURk1vdmUoZHJhZ0ltYWdlKSk7CiB9CiAKIHZvaWQgUGFnZUNs
aWVudEltcGw6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4
IGZlNGU3YWMwMzFjLi5kODhmMWMwMWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTIwNTQsMTMgKzIwNTQs
MTMgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBBcmVhKFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZSwgY29uc3QgSW50UmUKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCi12b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZSwgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24g
ZHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBpbWFnZSkKK3ZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBT
ZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb25NYXNrLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQogewogICAg
IFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAg
IGlmICghcHJpdi0+ZHJhZ1NvdXJjZSkKICAgICAgICAgcHJpdi0+ZHJhZ1NvdXJjZSA9IG1ha2VV
bmlxdWU8RHJhZ1NvdXJjZT4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwogCi0gICAgcHJpdi0+
ZHJhZ1NvdXJjZS0+YmVnaW4oV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbiwg
V1RGTW92ZShpbWFnZSkpOworICAgIHByaXYtPmRyYWdTb3VyY2UtPmJlZ2luKFdURk1vdmUoc2Vs
ZWN0aW9uRGF0YSksIGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGltYWdlKSk7IC8vIEZJWE1F
PwogCiAjaWYgIVVTRShHVEs0KQogICAgIC8vIEEgZHJhZyBzdGFydGluZyBzaG91bGQgcHJldmVu
dCBhIGRvdWJsZS1jbGljayBmcm9tIGhhcHBlbmluZy4gVGhpcyBtaWdodApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2
YXRlLmgKaW5kZXggMWM0ZGYxMjdlYzQuLmViN2Y4NmUwOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
LmgKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2Vi
UHJvY2VzcyhXZWJLaXRXZWJWaWV3QmFzZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVBhZ2VD
bG9zZWQoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12
b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8V2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA+JiYpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhX
ZWJLaXRXZWJWaWV3QmFzZSosIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+LCBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+JiYp
Owogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihX
ZWJLaXRXZWJWaWV3QmFzZSopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggMmUzOWVhNmNmZTguLmRjZWNhNTg2Zjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMzkxMyw3
ICszOTEzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ2dlZEltYWdlKE5TSW1hZ2UgKiwgQ0dQ
b2ludCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXIKICAgICBzZW5kRHJhZ0VuZFRvUGFn
ZShlbmRQb2ludCwgb3BlcmF0aW9uKTsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdF
bmRUb1BhZ2UoQ0dQb2ludCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3Zv
aWQgV2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKENHUG9pbnQgZW5kUG9pbnQsIE5TRHJh
Z09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzaykKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgIE5TUG9pbnQgd2luZG93SW1hZ2VMb2MgPSBbW21fdmlldyB3
aW5kb3ddIGNvbnZlcnRTY3JlZW5Ub0Jhc2U6TlNQb2ludEZyb21DR1BvaW50KGVuZFBvaW50KV07
CkBAIC0zOTIzLDcgKzM5MjMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFn
ZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQogICAgIC8vIFBy
ZXZlbnQgcXVldWVkIG1vdXNlRHJhZ2dlZCBldmVudHMgZnJvbSBjb21pbmcgYWZ0ZXIgdGhlIGRy
YWcgYW5kIGZha2UgbW91c2VVcCBldmVudC4KICAgICBtX2lnbm9yZXNNb3VzZURyYWdnZWRFdmVu
dHMgPSB0cnVlOwogCi0gICAgbV9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQod2lu
ZG93TW91c2VMb2MpLCBXZWJDb3JlOjpJbnRQb2ludChXZWJDb3JlOjpnbG9iYWxQb2ludCh3aW5k
b3dNb3VzZUxvYywgW21fdmlldyB3aW5kb3ddKSksIG9wZXJhdGlvbik7CisgICAgbV9wYWdlLT5k
cmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQod2luZG93TW91c2VMb2MpLCBXZWJDb3JlOjpJbnRQ
b2ludChXZWJDb3JlOjpnbG9iYWxQb2ludCh3aW5kb3dNb3VzZUxvYywgW21fdmlldyB3aW5kb3dd
KSksIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnT3BlcmF0aW9uTWFzaykpOwogfQogCiBzdGF0
aWMgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgYXBwbGljYXRpb25GbGFnc0ZvckRyYWco
TlNWaWV3ICp2aWV3LCBpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKQEAgLTM5NDcs
NyArMzk0Nyw3IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVk
KGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgIFdlYkNvcmU6OkludFBvaW50
IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlv
biBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6
Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93
XSkpOwogICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFn
Z2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2spOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJh
Z09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7
CiAgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGds
b2JhbCwgZHJhZ09wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5n
ZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
ayk7CiAKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwpAQCAtMzk1
NiwxOCArMzk1Niw0MiBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50
ZXJlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uQ29weTsKIH0KIAorc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdP
cGVyYXRpb24pCisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dp
dGNoKCpkcmFnT3BlcmF0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29w
eToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgY2FzZSBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkxpbms7
CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYzoKKyAgICAgICAgcmV0dXJu
IE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
UHJpdmF0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJh
dGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlOgorICAgICAg
ICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uRGVsZXRlOworICAgIH0KKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworfQorCiBOU0RyYWdP
cGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+
IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBj
b252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdn
aW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRvIGRy
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhb
bV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5n
SW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNrKGRy
YWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRp
b25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCks
IGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogICAgIG1fcGFnZS0+
ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFt
ZSk7CiAKICAgICBOU0ludGVnZXIgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1fcGFnZS0+
Y3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkKCk7CiAKLSAgICBpZiAobV9wYWdl
LT5jdXJyZW50RHJhZ09wZXJhdGlvbigpID09IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lKQor
ICAgIGlmICghbV9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpKQogICAgICAgICBudW1iZXJP
ZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsK
IAogICAgIE5TRHJhZ2dpbmdGb3JtYXRpb24gZHJhZ2dpbmdGb3JtYXRpb24gPSBOU0RyYWdnaW5n
Rm9ybWF0aW9uTm9uZTsKQEAgLTM5NzksMTQgKzQwMDMsMTQgQEAgTlNEcmFnT3BlcmF0aW9uIFdl
YlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0lu
Zm8pCiAgICAgaWYgKGRyYWdnaW5nSW5mby5kcmFnZ2luZ0Zvcm1hdGlvbiAhPSBkcmFnZ2luZ0Zv
cm1hdGlvbikKICAgICAgICAgW2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ0Zvcm1hdGlvbjpkcmFn
Z2luZ0Zvcm1hdGlvbl07CiAKLSAgICByZXR1cm4gbV9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlv
bigpOworICAgIHJldHVybiBraXQobV9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpKTsKIH0K
IAogdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBk
cmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29u
dmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwog
ICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFz
ZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJh
Z2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5n
SW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJh
ZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOwogICAgIG1fcGFnZS0+
ZHJhZ0V4aXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1l
KTsKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIGRyYWdn
aW5nSW5mby5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVtYmVyT2ZWYWxp
ZEl0ZW1zRm9yRHJvcDsKQEAgLTQwMDIsNyArNDAyNiw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBl
cmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewog
ICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9j
YXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0
YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1
dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJh
Z0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2Vk
KCksIGRyYWdnaW5nSW5mbykpOwogCiAgICAgTlNBcnJheSAqdHlwZXMgPSBkcmFnZ2luZ0luZm8u
ZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMGZjOWI4ZTVjZDAuLmQ0M2M3OTMyNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI0MjQsMTEgKzI0MjQsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9u
IGFjdGlvbiwgRHJhZwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJh
Z0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJ
bnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50UmVjdCYg
aW5zZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oT3B0aW9uYWw8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5n
TWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5z
aWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50UmVjdCYgaW5zZXJ0aW9u
UmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkKIHsKLSAgICBNRVNTQUdF
X0NIRUNLKG1fcHJvY2VzcywgZHJhZ09wZXJhdGlvbiA8PSBEcmFnT3BlcmF0aW9uRGVsZXRlKTsK
LQotICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9u
PihkcmFnT3BlcmF0aW9uKTsKKyAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gZHJhZ09wZXJh
dGlvbjsKICAgICBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QgPSBkcmFnSGFuZGxpbmdNZXRo
b2Q7CiAgICAgbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dCA9IG1vdXNlSXNPdmVyRmlsZUlu
cHV0OwogICAgIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkID0gbnVtYmVy
T2ZJdGVtc1RvQmVBY2NlcHRlZDsKQEAgLTI0MzgsMjAgKzI0MzYsMjAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0
aW9uLCBXZWJDb3IKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZVByb3h5Ojpz
dGFydERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQ2NF90IGRyYWdPcGVy
YXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCit2
b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRh
LCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIGNv
bnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCiB7CiAgICAgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlID0gIWRyYWdJbWFnZUhhbmRsZS5pc051bGwo
KSA/IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkgOiBudWxscHRyOwot
ICAgIHBhZ2VDbGllbnQoKS5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ09wZXJhdGlvbiksIFdURk1vdmUoZHJh
Z0ltYWdlKSk7CisgICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhXVEZNb3ZlKHNlbGVjdGlvbkRh
dGEpLCBkcmFnT3BlcmF0aW9uTWFzaywgV1RGTW92ZShkcmFnSW1hZ2UpKTsKIAogICAgIGRpZFN0
YXJ0RHJhZygpOwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIHVpbnQ2NF90IG9wZXJhdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykK
IHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBv
c2l0aW9uLCBvcGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5k
ZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnT3BlcmF0aW9uTWFzaykpOwog
ICAgIHNldERyYWdDYXJldFJlY3QoeyB9KTsKIH0KIApAQCAtMjQ4Miw3ICsyNDgwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEVuZERyYWdnaW5nKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJl
c2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpCiB7Ci0gICAgbV9jdXJyZW50RHJhZ09wZXJhdGlv
biA9IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworICAgIG1fY3VycmVudERyYWdPcGVyYXRp
b24gPSBXVEY6Om51bGxvcHQ7CiAgICAgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJh
Z0hhbmRsaW5nTWV0aG9kOjpOb25lOwogICAgIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQg
PSBmYWxzZTsKICAgICBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdiYTlmOGI1ZWMwLi4y
MWE1MjM2Y2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEx
NTYsOCArMTE1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdl
YkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICAg
ICB2b2lkIGRpZFBlcmZvcm1EcmFnT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lk
IGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBX
ZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVu
c2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGluc2VydGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJl
Y3QpOwotICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRf
dCBvcGVyYXRpb24pOworICAgIHZvaWQgZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKE9w
dGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0Jl
QWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOworICAgIHZvaWQgZHJhZ0VuZGVk
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4pOwogICAgIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7
CiAgICAgdm9pZCBzZXREcmFnQ2FyZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKQEAg
LTExNjcsNyArMTE2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxl
VVJMLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3Qg
YXJjaGl2ZVNpemUpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgc3RhcnRE
cmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgY29u
c3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZSk7CisgICAgdm9pZCBzdGFydERy
YWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsKICNlbmRpZgogI2VuZGlmCiAK
QEAgLTEyMjYsNyArMTIyNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxhdW5jaEluaXRpYWxQcm9j
ZXNzSWZOZWNlc3NhcnkoKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ09wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudERyYWdPcGVyYXRpb247IH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiBjdXJyZW50RHJhZ09wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdP
cGVyYXRpb247IH0KICAgICBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgY3VycmVudERyYWdI
YW5kbGluZ01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhv
ZDsgfQogICAgIGJvb2wgY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0OyB9CiAgICAgdW5zaWduZWQgY3VycmVudERy
YWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJh
Z051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQ7IH0KQEAgLTI2MDcsNyArMjYwNyw3IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAvLyBDdXJyZW50IGRyYWcgZGVzdGlu
YXRpb24gZGV0YWlscyBhcmUgZGVsaXZlcmVkIGFzIGFuIGFzeW5jaHJvbm91cyByZXNwb25zZSwK
ICAgICAvLyBzbyB3ZSBwcmVzZXJ2ZSB0aGVtIHRvIGJlIHVzZWQgd2hlbiB0aGUgbmV4dCBkcmFn
Z2luZyBkZWxlZ2F0ZSBjYWxsIGlzIG1hZGUuCi0gICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBt
X2N1cnJlbnREcmFnT3BlcmF0aW9uIHsgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUgfTsKKyAg
ICBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBtX2N1cnJlbnREcmFnT3BlcmF0aW9u
OwogICAgIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBtX2N1cnJlbnREcmFnSGFuZGxpbmdN
ZXRob2QgeyBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUgfTsKICAgICBib29sIG1f
Y3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgeyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIG1fY3Vy
cmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDJkMjNlNGI2NjBi
Li5hZGNhMTVjNGJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMzEwLDcgKzMxMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAKICAgICAjIERyYWcgYW5kIGRyb3AgbWVzc2FnZXMKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQotICAgIERpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFn
T3BlcmF0aW9uLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdI
YW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVy
T2ZJdGVtc1RvQmVBY2NlcHRlZCwgV2ViQ29yZTo6SW50UmVjdCBpbnNlcnRpb25SZWN0LCBXZWJD
b3JlOjpJbnRSZWN0IGVkaXRhYmxlRWxlbWVudFJlY3QpCisgICAgRGlkUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRp
b24sIGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5n
TWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1z
VG9CZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6Oklu
dFJlY3QgZWRpdGFibGVFbGVtZW50UmVjdCkKICAgICBEaWRFbmREcmFnZ2luZygpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0zMTgsNyAr
MzE4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTZXRQcm9taXNlZERhdGFG
b3JJbWFnZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5k
bGUgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6ZSwgU3RyaW5nIGZpbGVuYW1lLCBTdHJp
bmcgZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUsIFN0cmluZyB1cmwsIFN0cmluZyB2aXNpYmxlVVJM
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGFyY2hpdmVIYW5kbGUsIHVpbnQ2NF90IGFy
Y2hpdmVTaXplKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQotICAgIFN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbkRhdGEs
IHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
ZHJhZ0ltYWdlKQorICAgIFN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlv
bkRhdGEsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFz
aywgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCiAjZW5kaWYKIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA0MzlkYjk5NzdlZS4u
Njk2YjkwODhkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzI4NSw3ICs3Mjg1LDcgQEAgLSAodm9p
ZClfZGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdDooQk9PTClzdGFydGVkCiAgICAgICAgIGlmIChz
dGFydGVkKSB7CiAgICAgICAgICAgICAvLyBBIGNsaWVudCBvZiB0aGUgT2JqZWN0aXZlIEMgU1BJ
IG9yIFVJS2l0IG1pZ2h0IGhhdmUgcHJldmVudGVkIHRoZSBkcmFnIGZyb20gYmVnaW5uaW5nIGVu
dGlyZWx5IGluIHRoZSBVSSBwcm9jZXNzLCBpbiB3aGljaCBjYXNlCiAgICAgICAgICAgICAvLyB3
ZSBuZWVkIHRvIGJhbGFuY2UgdGhlIGBkcmFnc3RhcnRgIGV2ZW50IHdpdGggYSBgZHJhZ2VuZGAu
Ci0gICAgICAgICAgICBfcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRp
b25Gb3JEcmFnRW5kLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBf
cGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCB7
IH0pOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzMwMywyNCArNzMwMyw0MiBAQCAtICh2b2lk
KWNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNl
c3Npb24+KXNlc3Npb24gbwogICAgICAgICAqb3V0R2xvYmFsUG9pbnQgPSBsb2NhdGlvbkluQ29u
dGVudFZpZXc7CiB9CiAKLXN0YXRpYyBVSURyb3BPcGVyYXRpb24gZHJvcE9wZXJhdGlvbkZvcldl
YkNvcmVEcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQorc3Rh
dGljIFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24o
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uKQogewotICAgIGlmIChv
cGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkKLSAgICAgICAgcmV0dXJuIFVJ
RHJvcE9wZXJhdGlvbk1vdmU7Ci0KLSAgICBpZiAob3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkNvcHkpCi0gICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Db3B5OwotCisgICAg
aWYgKG9wZXJhdGlvbikgeworICAgICAgICBpZiAoKm9wZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Nb3ZlKQorICAgICAgICAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbk1vdmU7Cisg
ICAgICAgIGlmICgqb3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpCisgICAg
ICAgICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uQ29weTsKKyAgICB9CiAgICAgcmV0dXJuIFVJ
RHJvcE9wZXJhdGlvbkNhbmNlbDsKIH0KIAorc3RhdGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihVSURyb3BPcGVy
YXRpb24gZHJvcE9wZXJhdGlvbikKK3sKKyAgICBzd2l0Y2ggKGRyb3BPcGVyYXRpb24pIHsKKyAg
ICBjYXNlIFVJRHJvcE9wZXJhdGlvbkNhbmNlbDoKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBj
YXNlIFVJRHJvcE9wZXJhdGlvbkZvcmJpZGRlbjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uQ29weToKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5OworICAgIGNhc2UgVUlEcm9wT3Bl
cmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOwor
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiAt
IChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vz
c2lvbj4pc2Vzc2lvbiBkcmFnRGVzdGluYXRpb25BY3Rpb246KFdLRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uKWRyYWdEZXN0aW5hdGlvbkFjdGlvbgogewogICAgIENHUG9pbnQgZ2xvYmFsOwogICAgIENH
UG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JE
cm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6
Jmdsb2JhbF07CiAKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNr
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oc2Vzc2lvbi5hbGxvd3NNb3Zl
T3BlcmF0aW9uID8gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25FdmVyeSAmIH5XZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpOworICAgIGF1dG8g
ZHJhZ09wZXJhdGlvbk1hc2sgPSBXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgaWYg
KCFzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24pCisgICAgICAgIGRyYWdPcGVyYXRpb25NYXNr
LnJlbW92ZShXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lv
biwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQ
b2ludChnbG9iYWwpLCBkcmFnT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9u
Tm9uZSwgV2ViS2l0Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRp
b25BY3Rpb24pIH07CiB9CiAKQEAgLTc0MjQsNyArNzQ0Miw4IEBAIC0gKHZvaWQpX2RpZFBlcmZv
cm1EcmFnT3BlcmF0aW9uOihCT09MKWhhbmRsZWQKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBb
c2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246ZHJvcFNlc3Np
b24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKICAgICBb
c2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRl
ZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KGdsb2JhbCksIF9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpKTsKKyAgICBhdXRvIGN1
cnJlbnREcmFnT3BlcmF0aW9uID0gX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7CisgICAg
X3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29y
ZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGN1cnJlbnREcmFnT3BlcmF0aW9uID8gKmN1cnJl
bnREcmFnT3BlcmF0aW9uIDogT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHsgfSkp
OwogfQogCiAtICh2b2lkKV9kaWRDaGFuZ2VEcmFnQ2FyZXRSZWN0OihDR1JlY3QpcHJldmlvdXNS
ZWN0IGN1cnJlbnRSZWN0OihDR1JlY3QpcmVjdApAQCAtODAxMyw3ICs4MDMyLDcgQEAgLSAodm9p
ZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2lsbEFu
aW1hdGVMaWZ0V2l0aEFuaW0KICAgICAgICAgICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAi
RHJhZyBzZXNzaW9uIGVuZGVkIGF0IHN0YXJ0OiAlcCIsIHNlc3Npb24pOwogICAgICAgICAgICAg
Ly8gVGhlIGxpZnQgd2FzIGNhbmNlbGVkLCBzbyAtZHJvcEludGVyYWN0aW9uOnNlc3Npb25EaWRF
bmQ6IHdpbGwgbmV2ZXIgYmUgaW52b2tlZC4gVGhpcyBpcyB0aGUgbGFzdCBjaGFuY2UgdG8gY2xl
YW4gdXAuCiAgICAgICAgICAgICBbcHJvdGVjdGVkU2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Np
b25TdGF0ZV07Ci0gICAgICAgICAgICBwYWdlLT5kcmFnRW5kZWQocG9zaXRpb25Gb3JEcmFnRW5k
LCBwb3NpdGlvbkZvckRyYWdFbmQsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lKTsKKyAgICAg
ICAgICAgIHBhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJh
Z0VuZCwgeyB9KTsKICAgICAgICAgfQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAg
ICBlbHNlCkBAIC04MDQ4LDcgKzgwNjcsNyBAQCAtICh2b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlE
cmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uOihpZCA8VUlEcmFnU2VzcwogICAg
ICAgICByZXR1cm47CiAKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07
Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6
cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlv
bkZvckRyYWdFbmQoKSksIG9wZXJhdGlvbik7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0
aW9uRm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVy
YWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIGNvcmVEcmFnT3BlcmF0
aW9uRm9yVUlEcm9wT3BlcmF0aW9uKG9wZXJhdGlvbikpOwogfQogCiAtIChVSVRhcmdldGVkRHJh
Z1ByZXZpZXcgKilkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rp
b24gcHJldmlld0ZvckNhbmNlbGxpbmdJdGVtOihVSURyYWdJdGVtICopaXRlbSB3aXRoRGVmYXVs
dDooVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZGVmYXVsdFByZXZpZXcKQEAgLTgyNjcsNyArODI4
Niw3IEBAIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVy
YWN0aW9uIHNlc3Npb25EaWRFbmQ6KGlkIDxVSURyCiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAg
W3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24g
b3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKICAgICBbc2Vs
ZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChX
ZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KGdsb2JhbCksIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lKTsKKyAgICBfcGFnZS0+ZHJhZ0Vu
ZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50
UG9pbnQoZ2xvYmFsKSwgeyB9KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50
R3RrLmNwcAppbmRleCBlZWQ3Yjk5Njg1Ny4uNzRmNDZjY2JmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0
YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUm
KQogCiAgICAgbV9wYWdlLT53aWxsU3RhcnREcmFnKCk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCku
c2VsZWN0aW9uRGF0YSgpLCBkYXRhVHJhbnNmZXIuc291cmNlT3BlcmF0aW9uKCksIGhhbmRsZSkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydERyYWcoZGF0
YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5zZWxlY3Rpb25EYXRhKCksIGRhdGFUcmFuc2Zlci5zb3Vy
Y2VPcGVyYXRpb25NYXNrKCksIGhhbmRsZSkpOwogfQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViS2l0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2
MGIwZWE3OTYyZC4uZTc3NGEyY2I4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zOTQ0LDIyICszOTQ0LDIyIEBAIE5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2ViUGFnZTo6bm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2lmIFBMQVRGT1JNKEdUSykK
LXZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVy
QWN0aW9uIGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
aywgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQzMl90IGZsYWdzKQordm9pZCBX
ZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24g
YWN0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzaywgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQzMl90IGZsYWdz
KQogewogICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBE
cmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwg
eyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBEcmFnRGF0YSBkcmFnRGF0YSgm
c2VsZWN0aW9uRGF0YSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBzdGF0aWNfY2Fz
dDxEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBzdGF0aWNfY2Fz
dDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgm
c2VsZWN0aW9uRGF0YSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2ssIHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlvbkZsYWdzPihmbGFn
cykpOwogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlv
bjo6RW50ZXJlZDogewotICAgICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVkRHJhZ09wZXJhdGlv
biA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAg
ICAgIGF1dG8gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24ocmVzb2x2ZWREcmFnT3BlcmF0aW9u
LCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hhbmRsaW5nTWV0aG9kKCksIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1dCgpLCBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgpLCB7IH0sIHsgfSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlVwZGF0ZWQ6
IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJl
c29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRl
ZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9s
bGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51
bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTM5NzgsMjQgKzM5NzgsMjQgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnQKIHZv
aWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0
aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGVBcnJheSYmIHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpCiB7CiAgICAgaWYg
KCFtX3BhZ2UpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIERyYWdIYW5kbGluZ01l
dGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKFdURjo6bnVsbG9w
dCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBEcmFn
Q29udHJvbGxlckFjdGlvbjo6RW50ZXJlZDogewotICAgICAgICBEcmFnT3BlcmF0aW9uIHJlc29s
dmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChk
cmFnRGF0YSk7CisgICAgICAgIGF1dG8gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24ocmVzb2x2
ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hhbmRsaW5nTWV0
aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1dCgpLCBt
X3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgpLCBtX3Bh
Z2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMo
KSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuZWRpdGFibGVFbGVtZW50UmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcygpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBE
cmFnQ29udHJvbGxlckFjdGlvbjo6VXBkYXRlZDogewotICAgICAgICBEcmFnT3BlcmF0aW9uIHJl
c29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRl
ZChkcmFnRGF0YSk7CisgICAgICAgIGF1dG8gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24ocmVz
b2x2ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hhbmRsaW5n
TWV0aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1dCgp
LCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgpLCBt
X3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuZWRpdGFibGVFbGVtZW50UmVjdElu
Um9vdFZpZXdDb29yZGluYXRlcygpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6RXhpdGVkOgogICAgICAgICBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFnRGF0YSk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVyYXRpb25O
b25lLCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAs
IHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBEcmFnQ29u
dHJvbGxlckFjdGlvbjo6UGVyZm9ybURyYWdPcGVyYXRpb246IHsKQEAgLTQwMjIsNyArNDAyMiw3
IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9s
bGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpk
cmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pCit2b2lkIFdlYlBhZ2U6OmRy
YWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9p
bnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFn
T3BlcmF0aW9uTWFzaykKIHsKICAgICBJbnRQb2ludCBhZGp1c3RlZENsaWVudFBvc2l0aW9uKGNs
aWVudFBvc2l0aW9uLngoKSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCku
eCgpLCBjbGllbnRQb3NpdGlvbi55KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09m
ZnNldCgpLnkoKSk7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRHbG9iYWxQb3NpdGlvbihnbG9iYWxQ
b3NpdGlvbi54KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLngoKSwg
Z2xvYmFsUG9zaXRpb24ueSgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQo
KS55KCkpOwpAQCAtNDAzMyw3ICs0MDMzLDcgQEAgdm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2Vi
Q29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2IKICAg
ICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgZmFrZSBtb2RpZmllciBrZXlz
IGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFsIG9uZXMgaW5zdGVhZC4KICAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgZXZlbnQoYWRqdXN0ZWRDbGllbnRQb3NpdGlvbiwgYWRqdXN0ZWRHbG9iYWxQ
b3NpdGlvbiwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgMCwgV2ViQ29yZTo6Tm9UYXAp
OwotICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVk
QXQoZXZlbnQsIChEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbik7CisgICAgbV9wYWdlLT5tYWluRnJh
bWUoKS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgZHJhZ09wZXJhdGlv
bk1hc2spOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRFbmREcmFnZ2lu
ZygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGMyYzQ4ZDFjOTM2Li42NzljZmQxYjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtODk5LDcgKzg5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKTsKIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSYmLCB1aW50MzJfdCBmbGFncyk7CisgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
LCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIHVpbnQzMl90IGZsYWdzKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKEdUSykKQEAgLTkwNyw3ICs5MDcs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdm9p
ZCBkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6Oklu
dFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pOworICAgIHZvaWQgZHJh
Z0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2lu
dCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KTsKIAog
ICAgIHZvaWQgd2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7CiAgICAgdm9p
ZCBtYXlQZXJmb3JtVXBsb2FkRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA1
MzhlNjU3MmU1MC4uYWU5Mjc0NzYzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzA5LDE0ICszMDksMTQgQEAg
R2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgICMgRHJhZyBhbmQgZHJvcC4KICNpZiBQTEFU
Rk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKGVudW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlv
biwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uLCB1aW50MzJfdCBmbGFncykKKyAgICBQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xsZXJB
Y3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6
SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEgc2Vs
ZWN0aW9uLCB1aW50MzJfdCBmbGFncykKICNlbmRpZgogI2lmICFQTEFURk9STShHVEspICYmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCiAgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVudW06
dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6RHJh
Z0RhdGEgZHJhZ0RhdGEsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2Fu
ZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpCiAjZW5kaWYKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIERpZFN0YXJ0RHJhZygpCi0gICAgRHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNs
aWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qg
b3BlcmF0aW9uKQorICAgIERyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlv
biwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykKICAgICBEcmFnQ2FuY2VsbGVkKCkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDBlNjU2NDk2Yzg0Li44Yjg3ZGIzOGMyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTkyNCw3
ICs5MjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vz
c2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpbwogICAgIC8vIGlzIG9wYXF1ZSB0byB0
aGUgd2ViIHByb2Nlc3MsIHdoaWNoIG9ubHkgc2VlcyB0aGF0IHRoZSBjdXJyZW50IGRyYWcgaGFz
IGVuZGVkLCBhbmQgdGhhdCBhIG5ldyBvbmUgaXMgYmVnaW5uaW5nLgogICAgIFBsYXRmb3JtTW91
c2VFdmVudCBldmVudChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24s
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBXYWxsVGltZTo6bm93KCksIDAsIE5vVGFwKTsKICAgICBtX3BhZ2UtPmRyYWdDb250cm9sbGVy
KCkuZHJhZ0VuZGVkKCk7Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5k
cmFnU291cmNlRW5kZWRBdChldmVudCwgRHJhZ09wZXJhdGlvbk5vbmUsIE1heUV4dGVuZERyYWdT
ZXNzaW9uOjpZZXMpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJh
Z1NvdXJjZUVuZGVkQXQoZXZlbnQsIHsgfSwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Olllcyk7CiAK
ICAgICBib29sIGRpZEhhbmRsZURyYWcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxl
cigpLnRyeVRvQmVnaW5EcmFnQXRQb2ludChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24p
OwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFuZGxlQWRkaXRpb25hbERy
YWdJdGVtc1JlcXVlc3QoZGlkSGFuZGxlRHJhZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CmluZGV4IDQxZGI2NDc1ZThlLi4wMjk3OTgwNDUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA2LTAxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBmb3Ig
bWFzayB2YWx1ZXMKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjYwNT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2Vi
RnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmFnU291cmNlRW5kZWRBdDpvcGVyYXRp
b246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGtpdCk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza0Zvckxv
Y2FsOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBkcmFnZ2luZ1Nlc3Npb246c291cmNlT3Bl
cmF0aW9uTWFza0ZvckRyYWdnaW5nQ29udGV4dDpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZp
ZXcubW06CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOgorICAgICAgICAtIEFkZCBj
b252ZXJzaW9uIGZ1bmN0aW9uIHRvIGF2b2lkIGNhc3RpbmcuCisgICAgICAgICgtW1dlYlZpZXcg
ZHJhZ0RhdGFGb3JTZXNzaW9uOmNsaWVudDpnbG9iYWw6b3BlcmF0aW9uOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2lu
Z1VwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFeGl0ZWQ6XSk6CisgICAg
ICAgICgtW1dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRpb246XSk6CisgICAgICAgIC0gTWFrZSB1
c2Ugb2YgY29yZURyYWdPcGVyYXRpb25NYXNrKCkgY29udmVyc2lvbiBmdW5jdGlvbi4KKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAoQ29jb2FEcmFnT3BlcmF0
aW9uKToKKyAgICAgICAgLSBBZGQgdHlwZWRlZiBzbyBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBt
YXkgYmUgc2hhcmVkIGFjcm9zcworICAgICAgICAgIHBsYXRmb3Jtcy4KKyAgICAgICAgKGNvcmVE
cmFnT3BlcmF0aW9uTWFzayk6IEFkZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKGNvcmVPcHRpb25z
KToKKyAgICAgICAgLSBSZW1vdmUgcmVkdW5kYW50IHBhcmFtZXRlciBuYW1lLgorCiAyMDIwLTA2
LTAyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQg
RkVBVFVSRVNfREVGSU5FUyByZWxhdGVkIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGQ0ZGVhN2MzOWM4Li5iOWVlY2RjOGRjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC05NDIsNyAr
OTQyLDcgQEAgLSAodm9pZClfc2V0VHlwaW5nU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24g
KilzdHlsZSB3aXRoVW5kb0FjdGlvbjooV2ViQ29yZToKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpICYmIFBMQVRGT1JNKE1BQykKLS0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1Bv
aW50KXdpbmRvd0xvYyBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpb24KKy0gKHZv
aWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xvYyBvcGVyYXRpb246KE5TRHJh
Z09wZXJhdGlvbilkcmFnT3BlcmF0aW9uTWFzawogewogICAgIGlmICghX3ByaXZhdGUtPmNvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUyLDcgKzk1Miw3IEBAIC0gKHZvaWQpX2RyYWdT
b3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xvYyBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlv
bilvcGVyYXRpCiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVy
ZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFkLgogICAgIFdlYkNvcmU6OlBs
YXRmb3JtTW91c2VFdmVudCBldmVudChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dMb2MpLCBXZWJD
b3JlOjpJbnRQb2ludChXZWJDb3JlOjpnbG9iYWxQb2ludCh3aW5kb3dMb2MsIFt2aWV3LT5wbGF0
Zm9ybVdpZGdldCgpIHdpbmRvd10pKSwKICAgICAgICAgV2ViQ29yZTo6TGVmdEJ1dHRvbiwgV2Vi
Q29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgV2ViQ29yZTo6Rm9yY2VBdENsaWNrLCBXZWJDb3JlOjpO
b1RhcCk7Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJj
ZUVuZGVkQXQoZXZlbnQsIChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbik7CisgICAg
X3ByaXZhdGUtPmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZl
bnQsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnT3BlcmF0aW9uTWFzaykpOwogfQogI2VuZGlm
IC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNWU0YTg5MDVlYzgu
LmU3Y2E0NjFkOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAy
MDA2LCAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtNDIyOSw2ICs0MjI5LDI4IEBAIC0gKHZvaWQpdG91Y2g6KFdlYkV2ZW50
ICopZXZlbnQKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0o
TUFDKQorCitzdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtpdChPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKK3sKKyAgICBpZiAob3BlcmF0aW9uTWFzayA9PSBX
ZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKCkpCisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRp
b25FdmVyeTsKKworICAgIE5TRHJhZ09wZXJhdGlvbiByZXN1bHQgPSBOU0RyYWdPcGVyYXRpb25O
b25lOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25Db3B5KSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgaWYg
KG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspKQorICAg
ICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTGluazsKKyAgICBpZiAob3BlcmF0aW9uTWFz
ay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYykpCisgICAgICAgIHJlc3Vs
dCB8PSBOU0RyYWdPcGVyYXRpb25HZW5lcmljOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRh
aW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKSkKKyAgICAgICAgcmVzdWx0IHw9IE5T
RHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0
aW9uTW92ZTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uRGVsZXRlKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19CRUdJTgogLSAodm9pZClkcmFnSW1hZ2U6KE5TSW1hZ2UgKilkcmFnSW1hZ2UKICAgICAgICAg
ICAgICAgIGF0OihOU1BvaW50KWF0CkBAIC00MjgwLDcgKzQzMDIsNyBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBO
U0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0dXJuIChOU0RyYWdPcGVyYXRpb24pcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIGtpdChw
YWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkpOwogfQogCiBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgpAQCAtNDM4Niw3ICs0NDA4LDcg
QEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24g
KilzZXNzaW9uIHNvdXJjZU9wZXJhdGlvbk0KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
biBOU0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0dXJuIChOU0RyYWdPcGVyYXRpb24pcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIGtp
dChwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkpOwogfQog
CiAtICh2b2lkKWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilzZXNzaW9uIGVu
ZGVkQXRQb2ludDooTlNQb2ludClzY3JlZW5Qb2ludCBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlv
bilvcGVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpp
bmRleCBjNWU5ZjI1YzYxZS4uNDI5MmEyYTk0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTU4OSw2ICs1ODksOTIgQEAgc3RhdGljIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrKFcKICAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b246OkxvYWQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CisKKyNpZiAhVVNFKEFQUEtJVCkKKy8v
IFNlZSA8VUlLaXQvVUlEcmFnZ2luZ19Qcml2YXRlLmg+LgordHlwZWRlZiBOU19PUFRJT05TKE5T
VUludGVnZXIsIF9VSURyYWdPcGVyYXRpb24pIHsKKyAgICBfVUlEcmFnT3BlcmF0aW9uTm9uZSA9
IDAsCisgICAgX1VJRHJhZ09wZXJhdGlvbkNvcHkgPSAxLAorICAgIF9VSURyYWdPcGVyYXRpb25N
b3ZlID0gMTYsCit9OworI2VuZGlmCisKK09wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soQ29jb2FEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sK
KyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gcmVzdWx0OworCisjaWYgVVNF
KEFQUEtJVCkKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAg
ICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJh
dGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25H
ZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmlj
KTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAg
cmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJh
dGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25E
ZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7
CisjZWxzZQorICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAg
ICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJh
dGlvbiAmIF9VSURyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworI2lmIFVTRShBUFBLSVQpCitzdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtp
dChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQoreworICAg
IGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7
CisKKyAgICBzd2l0Y2goKmRyYWdPcGVyYXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICByZXR1cm4gTlNEcmFnT3Bl
cmF0aW9uTGluazsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljOgorICAg
ICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uR2VuZXJpYzsKKyAgICBjYXNlIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Qcml2YXRlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uUHJpdmF0
ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4g
TlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxl
dGU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25EZWxldGU7CisgICAgfQorCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7Cit9
CisjZWxzZQorc3RhdGljIF9VSURyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCit7CisgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQor
ICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7CisKKyAgICBzd2l0Y2goKmRyYWdP
cGVyYXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5OgorICAgICAg
ICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTGluazoKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworICAgIGNh
c2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBfVUlEcmFn
T3BlcmF0aW9uTW92ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOgor
ICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgY2FzZSBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOwor
ICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIF9V
SURyYWdPcGVyYXRpb25Ob25lOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9uZTsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lU
KQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25z
IGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpCkBAIC0xOTIzLDcgKzIwMDksNyBA
QCAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0Zv
clNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogCiAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0
YUZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludClj
bGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1
aW50NjRfdClvcGVyYXRpb24KIHsKLSAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ob3BlcmF0aW9uKTsKKyAgICBhdXRvIGRyYWdP
cGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNrKG9wZXJhdGlvbik7CiAgICAgYXV0
byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2soW3NlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOwog
ICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnRQb3Np
dGlvbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRyYWdPcGVy
YXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrIH07CiB9CkBAIC0xOTMyLDE0ICsyMDE4LDE0IEBAIC0gKHVpbnQ2NF90KV9lbnRl
cmVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENH
UG9pbnQpCiB7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2Vs
ZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lvbiBjbGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xvYmFs
Omdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpvcGVyYXRpb25dOwotICAgIHJldHVybiBfcHJpdmF0
ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAgcmV0
dXJuIGtpdChfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFn
RGF0YSkpOwogfQogCiAtICh1aW50NjRfdClfdXBkYXRlZERhdGFJbnRlcmFjdGlvbjooaWQgPFVJ
RHJvcFNlc3Npb24+KXNlc3Npb24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2Jh
bDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgog
ewogICAgIFdlYlRocmVhZExvY2soKTsKICAgICBhdXRvIGRyYWdEYXRhID0gW3NlbGYgZHJhZ0Rh
dGFGb3JTZXNzaW9uOnNlc3Npb24gY2xpZW50OmNsaWVudFBvc2l0aW9uIGdsb2JhbDpnbG9iYWxQ
b3NpdGlvbiBvcGVyYXRpb246b3BlcmF0aW9uXTsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAgIHJldHVybiBraXQo
X3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsK
IH0KIAogLSAodm9pZClfZXhpdGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4p
c2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWds
b2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCkBAIC02NzQ4LDggKzY4
MzQsOCBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2lu
Z0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dp
bmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwo
V2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3Nl
bGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJ
bmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4o
W2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGlj
YXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZv
OmRyYWdnaW5nSW5mb10pOwotICAgIHJldHVybiBjb3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25G
bGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdn
aW5nSW5mb10pOworICAgIHJldHVybiBraXQoY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5k
cmFnRW50ZXJlZChkcmFnRGF0YSkpOwogfQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdV
cGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjc2MSw4ICs2ODQ3
LDggQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJ
bmZvPilkcmFnZ2luZ0luZm8KICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5n
SW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdl
YkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxm
IHdpbmRvd10pKTsKIAotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtk
cmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0
aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpk
cmFnZ2luZ0luZm9dKTsKLSAgICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBk
YXRlZChkcmFnRGF0YSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJ
bmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJh
Z2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9d
KTsKKyAgICByZXR1cm4ga2l0KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJh
Z0RhdGEpKTsKIH0KIAogLSAodm9pZClkcmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZv
PilkcmFnZ2luZ0luZm8KQEAgLTY3NzMsNyArNjg1OSw3IEBAIC0gKHZvaWQpZHJhZ2dpbmdFeGl0
ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAKICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBk
cmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
a10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6
OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10p
LCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwogICAgIHBhZ2UtPmRyYWdD
b250cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3ODYsNyArNjg3Miw3
IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJh
Z2dpbmdJbmZvCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3Jl
OjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5k
b3ddKSk7Ci0gICAgYXV0byogZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dp
bmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBw
bGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBX
ZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09w
ZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwg
W3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKIAogICAgIE5TQXJyYXkqIHR5
cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBpZiAoIVt0
eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZlUGJvYXJkVHlwZV0gJiYgW3R5cGVzIGNvbnRh
aW5zT2JqZWN0OldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwu
aAppbmRleCA3ZDcwYzA0YTBjZS4uZDU5NzZjNDRlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBT
LkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2LDYgKzM2LDcgQEAKICNpZmRlZiBfX2NwbHVzcGx1
cwogCiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlh
RWxlbWVudEVudW1zLmg+CkBAIC04OSw3ICs5MCwxNyBAQCBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2
aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKLVdlYkNvcmU6OkZpbmRPcHRp
b25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpOworI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCisjaWYgVVNFKEFQUEtJVCkKK3R5cGVkZWYgTlNEcmFnT3BlcmF0aW9uIENvY29h
RHJhZ09wZXJhdGlvbjsKKyNlbHNlCit0eXBlZGVmIHVpbnQ2NF90IENvY29hRHJhZ09wZXJhdGlv
bjsKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJhZ09wZXJhdGlvbik7CisjZW5kaWYg
Ly8gRU5BQkxFKERSQUdfU1VQUE9SVCkKKworV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlv
bnMoV2ViRmluZE9wdGlvbnMpOwogCiBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25l
PiBjb3JlTGF5b3V0TWlsZXN0b25lcyhXZWJMYXlvdXRNaWxlc3RvbmVzKTsKIFdlYkxheW91dE1p
bGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWls
ZXN0b25lPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IDMxMzI2MDM2YThhLi5iMjQ5ZmZkODc5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAKQEAgLTQ0LDE4ICs0NCwxOCBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotc3RhdGljIERXT1JEIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJh
Z0N1cnNvcnMoRHJhZ09wZXJhdGlvbiBvcCkKK3N0YXRpYyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRp
b25NYXNrKQogewogICAgIERXT1JEIHJlc3VsdCA9IERST1BFRkZFQ1RfTk9ORTsKLSAgICBpZiAo
b3AgPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KQorICAgIGlmIChvcGVyYXRpb25NYXNrID09IGFueURy
YWdPcGVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuIERST1BFRkZFQ1RfQ09QWSB8IERST1BFRkZF
Q1RfTElOSyB8IERST1BFRkZFQ1RfTU9WRTsgCi0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkNv
cHkpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQog
ICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9DT1BZOyAKLSAgICBpZiAob3AgJiBEcmFnT3Bl
cmF0aW9uTGluaykKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
TGluaykpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX0xJTks7IAotICAgIGlmIChvcCAm
IERyYWdPcGVyYXRpb25Nb3ZlKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Nb3ZlKSkKICAgICAgICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfTU9WRTsKLSAgICBp
ZiAob3AgJiBEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250
YWlucyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNU
X01PVkU7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdl
YkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFU
cmFuc2ZlciwgRnJhbWUmCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBEV09S
RCBva0VmZmVjdCA9IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMobV93
ZWJWaWV3LT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbigpKTsK
KyAgICAgICAgRFdPUkQgb2tFZmZlY3QgPSBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0Ry
YWdDdXJzb3JzKG1fd2ViVmlldy0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdP
cGVyYXRpb25NYXNrKCkpOwogICAgICAgICBEV09SRCBlZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7
CiAgICAgICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gdWk7CiAgICAgICAgIEhSRVNVTFQgaHIg
PSBFX05PVElNUEw7CkBAIC0xNjQsMTUgKzE2NCwxNSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0
YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUm
CiAgICAgICAgIGlmIChociA9PSBFX05PVElNUEwpCiAgICAgICAgICAgICBociA9IERvRHJhZ0Ry
b3AoZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCk7CiAK
LSAgICAgICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAg
ICAgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2s7CiAgICAgICAgIGlm
IChociA9PSBEUkFHRFJPUF9TX0RST1ApIHsKICAgICAgICAgICAgIGlmIChlZmZlY3QgJiBEUk9Q
RUZGRUNUX0NPUFkpCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkNv
cHk7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9uTWFzayA9IERyYWdPcGVyYXRpb25Db3B5Owog
ICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9MSU5LKQotICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uTGluazsKICAgICAgICAgICAgIGVsc2UgaWYgKGVm
ZmVjdCAmIERST1BFRkZFQ1RfTU9WRSkKLSAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFn
T3BlcmF0aW9uTW92ZTsKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25NYXNrID0gRHJhZ09wZXJh
dGlvbk1vdmU7CiAgICAgICAgIH0KLSAgICAgICAgZnJhbWUuZXZlbnRIYW5kbGVyKCkuZHJhZ1Nv
dXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmlldywgZmFsc2UpLCBvcGVyYXRp
b24pOworICAgICAgICBmcmFtZS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChnZW5l
cmF0ZU1vdXNlRXZlbnQobV93ZWJWaWV3LCBmYWxzZSksIG9wZXJhdGlvbk1hc2spOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2JkZWU2YmJkNWIuLjQ3ZWU2
MWFjZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNTg0MiwzOCArNTg0
Miw0MSBAQCBIUkVTVUxUIFdlYlZpZXc6OnZpc2libGVDb250ZW50UmVjdChfT3V0XyBMUFJFQ1Qg
cmVjdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotc3RhdGljIERXT1JEIGRyYWdPcGVyYXRpb25U
b0RyYWdDdXJzb3IoRHJhZ09wZXJhdGlvbiBvcCkgewotICAgIERXT1JEIHJlcyA9IERST1BFRkZF
Q1RfTk9ORTsKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uQ29weSkgCi0gICAgICAgIHJlcyA9
IERST1BFRkZFQ1RfQ09QWTsKLSAgICBlbHNlIGlmIChvcCAmIERyYWdPcGVyYXRpb25MaW5rKSAK
LSAgICAgICAgcmVzID0gRFJPUEVGRkVDVF9MSU5LOwotICAgIGVsc2UgaWYgKG9wICYgRHJhZ09w
ZXJhdGlvbk1vdmUpIAotICAgICAgICByZXMgPSBEUk9QRUZGRUNUX01PVkU7Ci0gICAgZWxzZSBp
ZiAob3AgJiBEcmFnT3BlcmF0aW9uR2VuZXJpYykgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1Rf
TU9WRTsgLy9UaGlzIGFwcGVhcnMgdG8gYmUgdGhlIEZpcmVmb3ggYmVoYXZpb3VyCi0gICAgcmV0
dXJuIHJlczsKK3N0YXRpYyBEV09SRCBkcmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29yKE9wdGlvbmFs
PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spIHsKKyAgICBpZiAoIW9wZXJhdGlvbk1hc2sp
CisgICAgICAgIHJldHVybiBEUk9QRUZGRUNUX05PTkU7CisKKyAgICBEV09SRCByZXN1bHQgPSBE
Uk9QRUZGRUNUX05PTkU7CisgICAgaWYgKCpvcGVyYXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbkNv
cHkpCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1RfQ09QWTsKKyAgICBlbHNlIGlmICgqb3Bl
cmF0aW9uTWFzayAmIERyYWdPcGVyYXRpb25MaW5rKQorICAgICAgICByZXN1bHQgPSBEUk9QRUZG
RUNUX0xJTks7CisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbk1hc2sgJiBEcmFnT3BlcmF0aW9uTW92
ZSkKKyAgICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9NT1ZFOworICAgIGVsc2UgaWYgKCpvcGVy
YXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAgICAgIHJlc3VsdCA9IERST1BF
RkZFQ1RfTU9WRTsgLy9UaGlzIGFwcGVhcnMgdG8gYmUgdGhlIEZpcmVmb3ggYmVoYXZpb3VyCisg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRHJhZ09wZXJhdGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRv
RHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKK09wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0
ZSkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b25Ob25lOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgLy8gQ29uZm9ybXMgdG8gTWljcm9z
b2Z0J3Mga2V5IGNvbWJpbmF0aW9ucyBhcyBkb2N1bWVudGVkIGZvciAKICAgICAvLyBJRHJvcFRh
cmdldDo6RHJhZ092ZXIuIE5vdGUsIGdyZktleVN0YXRlIGlzIHRoZSBjdXJyZW50IAogICAgIC8v
IHN0YXRlIG9mIHRoZSBrZXlib2FyZCBtb2RpZmllciBrZXlzIG9uIHRoZSBrZXlib2FyZC4gU2Vl
OgogICAgIC8vIDxodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2ODAx
MjkoVlMuODUpLmFzcHg+LgotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICBhdXRvIG9wZXJhdGlv
bk1hc2sgPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2so
KTsKIAogICAgIGlmICgoZ3JmS2V5U3RhdGUgJiAoTUtfQ09OVFJPTCB8IE1LX1NISUZUKSkgPT0g
KE1LX0NPTlRST0wgfCBNS19TSElGVCkpCi0gICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRp
b25MaW5rOworICAgICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uTGluayB9Owog
ICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAmIE1LX0NPTlRST0wpID09IE1LX0NPTlRST0wpCi0g
ICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICBvcGVyYXRpb25N
YXNrID0geyBEcmFnT3BlcmF0aW9uQ29weSB9OwogICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAm
IE1LX1NISUZUKSA9PSBNS19TSElGVCkKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlv
bkdlbmVyaWM7CisgICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdPcGVyYXRpb25HZW5lcmlj
IH07CiAKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwog
fQogCiBIUkVTVUxUIFdlYlZpZXc6OkRyYWdFbnRlcihJRGF0YU9iamVjdCogcERhdGFPYmplY3Qs
IERXT1JEIGdyZktleVN0YXRlLCBQT0lOVEwgcHQsIERXT1JEKiBwZHdFZmZlY3QpCkBAIC01OTE5
LDggKzU5MjIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OkRyYWdMZWF2ZSgpCiAgICAgICAgIG1fZHJv
cFRhcmdldEhlbHBlci0+RHJhZ0xlYXZlKCk7CiAKICAgICBpZiAobV9kcmFnRGF0YSkgewotICAg
ICAgICBEcmFnRGF0YSBkYXRhKG1fZHJhZ0RhdGEuZ2V0KCksIEludFBvaW50KCksIEludFBvaW50
KCksIAotICAgICAgICAgICAgRHJhZ09wZXJhdGlvbk5vbmUpOworICAgICAgICBEcmFnRGF0YSBk
YXRhKG1fZHJhZ0RhdGEuZ2V0KCksIEludFBvaW50KCksIEludFBvaW50KCksIHsgfSk7CiAgICAg
ICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRhdGEpOwogICAgICAgICBt
X2RyYWdEYXRhID0gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggMTgw
NjY5OGE5YWQuLjdiMjIxMDRkOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCkBAIC01
NTUsNyArNTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGVyZm9ybUxheWVyZWRXaW5kb3dV
cGRhdGUoKTsKIAotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVy
YXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPiBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkg
Y29uc3Q7CiAKICAgICAvLyBGSVhNRTogVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIGEgd29ya2Fy
b3VuZC4gVGhlIGRyb3AgZWZmZWN0IChwZHdFZmZlY3QpIHBhc3NlZCB0byBEcm9wIGlzIGluY29y
cmVjdC4gCiAgICAgLy8gV2Ugc2V0IHRoaXMgdmFyaWFibGUgaW4gRHJhZ0VudGVyIGFuZCBEcmFn
T3ZlciBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIERyb3AgdG8gc2V0IHRoZSBjb3JyZWN0IGRy
b3AgZWZmZWN0LiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400957</attachid>
            <date>2020-06-03 12:18:35 -0700</date>
            <delta_ts>2020-06-03 21:03:10 -0700</delta_ts>
            <desc>Patch v7</desc>
            <filename>bug-212605-v7.diff</filename>
            <type>text/plain</type>
            <size>122648</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMTUxN2UxNTVkMi4uMDdiMTUxZGE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRXZlbnRSZWdpb246OnRyYW5zbGF0ZSgpIG5lZWRzIHRvIG9mZnNl
dCB0aGUgd2hlZWwgZXZlbnQgcmVnaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApp
bmRleCA4NDYzYTQ4ZTk3NC4uNzMxMzA4YjU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC00ODgsMTggKzQ4OCwxOCBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudAogICAg
IHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
LCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3Bl
cmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0Fu
ZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+
c2V0U291cmNlT3BlcmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5z
ZXRTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFu
c2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBh
c3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQs
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8
RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigq
bmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkLCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6
IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3Bl
cmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVy
YXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmln
aW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsK
ICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQpAQCAtNTk1LDc0ICs1OTUsNzQgQEAgdm9pZCBE
cmFnSW1hZ2VMb2FkZXI6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3Qq
KQogICAgIG1fZGF0YVRyYW5zZmVyLT51cGRhdGVEcmFnSW1hZ2UoKTsKIH0KIAotc3RhdGljIERy
YWdPcGVyYXRpb24gZHJhZ09wRnJvbUlFT3AoY29uc3QgU3RyaW5nJiBvcGVyYXRpb24pCitzdGF0
aWMgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYg
b3BlcmF0aW9uKQogewogICAgIGlmIChvcGVyYXRpb24gPT0gInVuaW5pdGlhbGl6ZWQiKQotICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OworICAgICAgICByZXR1cm4gYW55RHJhZ09w
ZXJhdGlvbigpOwogICAgIGlmIChvcGVyYXRpb24gPT0gIm5vbmUiKQotICAgICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKG9wZXJhdGlv
biA9PSAiY29weSIpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAg
cmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHkgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJsaW5r
IikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICByZXR1cm4geyBE
cmFnT3BlcmF0aW9uTGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gIm1vdmUiKQotICAgICAg
ICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJh
dGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09w
ZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TGluayIpCi0gICAgICAg
IHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9u
TGluayk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9u
TGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHlNb3ZlIikKLSAgICAgICAgcmV0dXJu
IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uQ29weSB8IERyYWdPcGVyYXRpb25HZW5lcmlj
IHwgRHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29w
eSwgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9w
ZXJhdGlvbiA9PSAibGlua01vdmUiKQotICAgICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25MaW5rIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92
ZSk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJhbGwiKQot
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OwotICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uUHJpdmF0ZTsgLy8gcmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIKKyAgICAg
ICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSB9OyAvLyBSZWFsbHkgYSBtYXJrZXIgZm9yICJubyBjb252ZXJzaW9uIi4KIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
KQorc3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBvcGVyYXRpb25NYXNrKQogewotICAgIGJvb2wgaXNHZW5lcmljTW92ZSA9IG9wZXJhdGlv
biAmIChEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBib29s
IGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHsgRHJhZ09wZXJhdGlv
bkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pOwogCi0gICAgaWYgKChpc0dlbmVyaWNNb3Zl
ICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25MaW5rKSkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBp
ZiAoKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpIHx8IG9w
ZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gImFsbCI7
Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5
KSkKKyAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5TW92ZSI7Ci0gICAgaWYgKGlzR2Vu
ZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAoaXNH
ZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkK
ICAgICAgICAgcmV0dXJuICJsaW5rTW92ZSI7Ci0gICAgaWYgKChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAo
b3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0
aW9uTGluayB9KSkKICAgICAgICAgcmV0dXJuICJjb3B5TGluayI7CiAgICAgaWYgKGlzR2VuZXJp
Y01vdmUpCiAgICAgICAgIHJldHVybiAibW92ZSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25Db3B5KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5IjsKLSAgICBpZiAob3BlcmF0aW9uICYgRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJh
dGlvbkxpbmspKQogICAgICAgICByZXR1cm4gImxpbmsiOwogICAgIHJldHVybiAibm9uZSI7CiB9
CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb24oKSBjb25zdAor
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFz
aygpIGNvbnN0CiB7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVP
cChtX2VmZmVjdEFsbG93ZWQpOwotICAgIEFTU0VSVChvcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlv
blByaXZhdGUpOwotICAgIHJldHVybiBvcGVyYXRpb247CisgICAgYXV0byBvcGVyYXRpb25NYXNr
ID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsKKyAgICBBU1NFUlQob3BlcmF0aW9u
TWFzayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7
CiB9CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbigp
IGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlv
bk9wZXJhdGlvbk1hc2soKSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0g
ZHJhZ09wRnJvbUlFT3AobV9kcm9wRWZmZWN0KTsKLSAgICBBU1NFUlQob3BlcmF0aW9uID09IERy
YWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcGVy
YXRpb24gPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9u
KShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKSB8fCBvcGVyYXRpb24g
PT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8g
b3BlcmF0aW9uTWFzayA9IGRyYWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7CisgICAgQVNTRVJU
KG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0Vt
cHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25N
YXNrID09IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IERyYWdPcGVyYXRpb25HZW5lcmljLCBE
cmFnT3BlcmF0aW9uTW92ZSB9KSB8fCBvcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24o
KSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpz
ZXRTb3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFu
c2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3Bl
cmF0aW9uTWFzaykKIHsKLSAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbiwgb3BlcmF0aW9uICE9IERy
YWdPcGVyYXRpb25Qcml2YXRlKTsKLSAgICBtX2VmZmVjdEFsbG93ZWQgPSBJRU9wRnJvbURyYWdP
cChvcGVyYXRpb24pOworICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uTWFzaywgb3BlcmF0aW9uTWFz
ayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZy
b21EcmFnT3Aob3BlcmF0aW9uTWFzayk7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0
aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgRGF0YVRyYW5z
ZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiA9
PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwg
b3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0
aW9uR2VuZXJpYyB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9u
ID09IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25N
b3ZlKSk7Ci0gICAgbV9kcm9wRWZmZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAg
ICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlv
bkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFn
T3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8
IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uTWFzayA9PSBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJh
dGlvbk1vdmUgfSkpOworICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlv
bk1hc2spOwogfQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuaAppbmRleCBlNWNmYWY4NTZmYi4uMGU3NDgwYTFmOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTg4LDE1ICs4OCwxNSBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRm9yRHJhZygpOwogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFn
U3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVy
PiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRy
YWdnaW5nRmlsZXMpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9w
KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERh
dGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKIAogICAgIGJvb2wgZHJvcEVmZmVjdElzVW5pbml0aWFsaXpl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVmZmVjdCA9PSAidW5pbml0aWFsaXplZCI7IH0KIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uKCkgY29uc3Q7Ci0gICAgRHJhZ09wZXJh
dGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0U291cmNlT3Bl
cmF0aW9uKERyYWdPcGVyYXRpb24pOwotICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRpb24o
RHJhZ09wZXJhdGlvbik7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2soKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZGVzdGluYXRp
b25PcGVyYXRpb25NYXNrKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTb3VyY2VPcGVyYXRpb25NYXNr
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogICAgIHZvaWQgc2V0RHJhZ0hh
c1N0YXJ0ZWQoKSB7IG1fc2hvdWxkVXBkYXRlRHJhZ0ltYWdlID0gdHJ1ZTsgfQogICAgIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2NhdGlvbikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5kZXggYTkyM2NhZTU4Y2IuLmJmODNkNjNjZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC02MCwxOCArNjAsMjEgQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJh
Z1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCisvLyBTZWUgTlNE
cmFnT3BlcmF0aW9uLCBfVUlEcmFnT3BlcmF0aW9uIGFuZCBVSURyb3BPcGVyYXRpb24uCiB0eXBl
ZGVmIGVudW0gewotICAgIERyYWdPcGVyYXRpb25Ob25lICAgID0gMCwKICAgICBEcmFnT3BlcmF0
aW9uQ29weSAgICA9IDEsCiAgICAgRHJhZ09wZXJhdGlvbkxpbmsgICAgPSAyLAogICAgIERyYWdP
cGVyYXRpb25HZW5lcmljID0gNCwKICAgICBEcmFnT3BlcmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAg
RHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwKICAgICBEcmFnT3BlcmF0aW9uRGVsZXRlICA9IDMy
LAotICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlOVF9NQVgKIH0gRHJhZ09wZXJhdGlvbjsK
IAorY29uc3RleHByIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkK
K3sKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmssIERy
YWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1v
dmUsIERyYWdPcGVyYXRpb25EZWxldGUgfTsKK30KKwogZW51bSBjbGFzcyBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhhc05vbkRlZmF1bHRQYXN0
ZWJvYXJkRGF0YSA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIERyYWdIYW5kbGluZ01l
dGhvZCA6IHVpbnQ4X3QgeyBOb25lLCBFZGl0UGxhaW5UZXh0LCBFZGl0UmljaFRleHQsIFVwbG9h
ZEZpbGUsIFBhZ2VMb2FkLCBTZXRDb2xvciwgTm9uRGVmYXVsdCB9OwpAQCAtOTMsNiArOTYsMTgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2Q+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkNvcHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3Ry
dWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAg
ICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiwKQEAgLTEwMiw0ICsxMTcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgID47
CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IE9wdGlvblNldFZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblBy
aXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA0ZWUyZTJmYjM1OC4u
ZjJmNmRkMjk0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0y
MDgsNyArMjA4LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBjbGll
bnQoKS5kcmFnRW5kZWQoKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
IHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEpOwogfQpAQCAtMjI0
LDcgKzIyNCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRy
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBk
cmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBjbGVhckRy
YWdDYXJldCgpOwogCi0gICAgaWYgKG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpID09IERyYWdP
cGVyYXRpb25Ob25lKQorICAgIGlmICghb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gdXJsU3RyaW5nID0gZHJhZ0RhdGEuYXNVUkwo
KTsKQEAgLTMwNCwyMSArMzA0LDIxIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZWRJ
bnRvRG9jdW1lbnQoRG9jdW1lbnQqIG5ld0RvY3VtZW50KQogICAgIG1fZG9jdW1lbnRVbmRlck1v
dXNlID0gbmV3RG9jdW1lbnQ7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERy
YWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpKTsK
IAogICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2soKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmlz
RW1wdHkoKSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBGSVhNRTogV2h5IG5vdCBj
YWxsIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/Ci0gICAgICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgIG1fZHJhZ0hhbmRsaW5n
TWV0aG9kID0gdHJ5RG9jdW1lbnREcmFnKGRyYWdEYXRhLCBtX2RyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2ssIGRyYWdPcGVyYXRpb24pOwogICAgIGlmIChtX2RyYWdIYW5kbGluZ01ldGhvZCA9PSBE
cmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUgJiYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5j
b250YWlucyhEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpKSkgewogICAgICAgICBkcmFnT3Bl
cmF0aW9uID0gb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSk7Ci0gICAgICAgIGlmIChkcmFnT3Bl
cmF0aW9uICE9IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbikK
ICAgICAgICAgICAgIG1fZHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpQ
YWdlTG9hZDsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ0hhbmRsaW5nTWV0aG9kID09IERyYWdIYW5k
bGluZ01ldGhvZDo6U2V0Q29sb3IpCiAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0
aW9uQ29weTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbgogCiAj
ZW5kaWYKIAotRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERy
YWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIERyYWdPcGVyYXRpb24mIGRyYWdPcGVyYXRpb24p
CitEcmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIGRyYWdPcGVyYXRp
b24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSkKICAgICAgICAgcmV0dXJuIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBEcmFnSGFuZGxpbmdN
ZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEsIE9wdAogICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9
IDE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9udW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkKQotICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgICAg
ICAgICAgbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+c2V0Q2FuUmVjZWl2ZURyb3BwZWRG
aWxlcyhtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBvdmVyIGEgZmlsZSBpbnB1dCBlbGVtZW50LiBUaGUgZHJh
Z2dlZCBpdGVtKHMpIHdpbGwgbG9hZGVkIGludG8gdGhlIHZpZXcsCkBAIC00ODksNyArNDg5LDcg
QEAgRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiByb290VmkKICAgICByZXR1cm4gbV9kcmFnU291cmNlQWN0aW9u
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250
cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50
KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOwogCkBAIC01MDQsNyArNTA0LDcgQEAgRHJhZ09w
ZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50ICYmIChtX2RpZEluaXRpYXRlRHJh
ZyB8fCAoaXM8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVudCkgJiYgIXBsdWdpbkRvY3VtZW50QWNj
ZXB0c0RyYWdzKSB8fCBkb2N1bWVudC0+aGFzRWRpdGFibGVTdHlsZSgpKSkKLSAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHJldHVybiBkcmFnT3BlcmF0aW9uKGRyYWdEYXRhKTsKIH0KIApAQCAtNjkzLDI4ICs2OTMsMjgg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBkZWZh
dWx0T3BlcmF0aW9uRm9yRHJhZyhEcmFnT3BlcmF0aW9uIHNyY09wTWFzaykKK3N0YXRpYyBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaykKIHsKICAgICAvLyBUaGlzIGlzIGRlc2ln
bmVkIHRvIG1hdGNoIElFJ3Mgb3BlcmF0aW9uIGZhbGxiYWNrIGZvciB0aGUgY2FzZSB3aGVyZQog
ICAgIC8vIHRoZSBwYWdlIGNhbGxzIHByZXZlbnREZWZhdWx0KCkgaW4gYSBkcmFnIGV2ZW50IGJ1
dCBkb2Vzbid0IHNldCBkcm9wRWZmZWN0LgotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09wZXJh
dGlvbkV2ZXJ5KQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1h
c2sgPT0gRHJhZ09wZXJhdGlvbk5vbmUpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9u
ZTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkK
ICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwotICAgIGlmIChzcmNPcE1hc2sgJiBE
cmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAgIHJldHVybiBEcmFnQ29udHJvbGxlcjo6
cGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFn
T3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKLSAgICBp
ZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKHNvdXJjZU9wZXJhdGlv
bk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbkxpbms7CiAgICAgCiAgICAgLy8gRklYTUU6IERvZXMgSUUgcmVhbGx5IHJldHVybiAi
Z2VuZXJpYyIgZXZlbiBpZiBubyBvcGVyYXRpb25zIHdlcmUgYWxsb3dlZCBieSB0aGUgc291cmNl
PwogICAgIHJldHVybiBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKIH0KIAotYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlv
biYgb3BlcmF0aW9uKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIG9wZXJhdGlvbikKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudFVuZGVyTW91c2UpOwogICAgIFJlZjxGcmFtZT4gbWFpbkZy
YW1lKG1fcGFnZS5tYWluRnJhbWUoKSk7CkBAIC03MjIsMTcgKzcyMiwxOSBAQCBib29sIERyYWdD
b250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3Bl
cmF0aW9uJiBvcGVyYQogICAgIGlmICghdmlld1Byb3RlY3RvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24gPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKLSAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7IHJldHVybiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7IH0sIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ0RhdGEuY29udGFp
bnNGaWxlcygpKTsKKyAgICBhdXRvIHNvdXJjZU9wZXJhdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKKyAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7CisgICAgICAgIHJldHVybiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSk7CisgICAgfSwgc291cmNlT3BlcmF0aW9uTWFz
aywgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICBpZiAoIXRhcmdldFJlc3BvbnNlLmFj
Y2VwdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCF0YXJnZXRSZXNwb25zZS5v
cGVyYXRpb24pCi0gICAgICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNv
dXJjZU9wZXJhdGlvbik7Ci0gICAgZWxzZSBpZiAoIShzb3VyY2VPcGVyYXRpb24gJiB0YXJnZXRS
ZXNwb25zZS5vcGVyYXRpb24udmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVy
YXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlCi0gICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIGlmICghdGFyZ2V0UmVzcG9uc2Uub3BlcmF0
aW9uTWFzaykKKyAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc291
cmNlT3BlcmF0aW9uTWFzayk7CisgICAgZWxzZSBpZiAoIXNvdXJjZU9wZXJhdGlvbk1hc2suY29u
dGFpbnNBbnkodGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzay52YWx1ZSgpKSkgLy8gVGhlIGVs
ZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBz
b3VyY2UKKyAgICAgICAgb3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIGVsc2UKLSAgICAg
ICAgb3BlcmF0aW9uID0gdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uLnZhbHVlKCk7CisgICAgICAg
IG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHRhcmdldFJlc3BvbnNlLm9wZXJh
dGlvbk1hc2sudmFsdWUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk1Niw3ICs5NTgs
NyBAQCBPcHRpb25hbDxIaXRUZXN0UmVzdWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0VGVzdFJlc3Vs
dEZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLAogICAgIHJldHVybiB7IGhpdFRlc3RSZXN1bHQg
fTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0
IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVm
YXVsdFBhc3RlYm9hcmREYXRhIGhhc0RhdGEpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJh
Z0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9h
cmREYXRhIGhhc0RhdGEpCiB7CiAgICAgaWYgKCFzdGF0ZS5zb3VyY2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTk3Miw3ICs5NzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAg
IEludFBvaW50IG1vdXNlRHJhZ2dlZFBvaW50ID0gc3JjLnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7CiAKICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBVUkwo
KTsKLSAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKKyAgICBtX3NvdXJjZURyYWdP
cGVyYXRpb25NYXNrID0gc291cmNlT3BlcmF0aW9uTWFzazsKIAogICAgIERyYWdJbWFnZSBkcmFn
SW1hZ2U7CiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKQEAgLTk5NSw3ICs5OTcsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRl
JiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICAvLyBTZWxlY3Rpb24sIGltYWdlLCBhbmQg
bGluayBkcmFncyByZWNlaXZlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlv
bnMgdGhhdAogICAgICAgICAvLyBmb2xsb3dzIGZyb206CiAgICAgICAgIC8vIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0/cmV2PTQ4NTI2I0wzNDMwCi0gICAgICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHN0YXRp
Y19jYXN0PERyYWdPcGVyYXRpb24+KG1fc291cmNlRHJhZ09wZXJhdGlvbiB8IERyYWdPcGVyYXRp
b25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbkNvcHkpOworICAgICAgICBtX3NvdXJjZURyYWdPcGVy
YXRpb25NYXNrLmFkZCh7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uQ29weSB9
KTsKICAgICB9CiAKICAgICBBU1NFUlQoc3RhdGUuc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuaAppbmRleCA5MGY4NzVjMDY3YS4uZWE0OTllMGViZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTU5LDkgKzU5LDkgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIERyYWdPcGVyYXRpb24gcGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0
YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdFbnRl
cmVkKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRXhpdGVk
KGNvbnN0IERyYWdEYXRhJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFn
VXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPERy
YWdPcGVyYXRpb24+IGRyYWdVcGRhdGVkKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBwZXJmb3JtRHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwogCkBAIC03Miw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICAvLyBkcmFnIGxvZ2ljIGlzIGluIFdlYkNvcmUuCiAgICAgdm9pZCBzZXREaWRJ
bml0aWF0ZURyYWcoYm9vbCBpbml0aWF0ZWQpIHsgbV9kaWRJbml0aWF0ZURyYWcgPSBpbml0aWF0
ZWQ7IH0KICAgICBib29sIGRpZEluaXRpYXRlRHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlkSW5p
dGlhdGVEcmFnOyB9Ci0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VEcmFnT3BlcmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyB9CisgICAgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IHNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VEcmFnT3BlcmF0aW9uTWFzazsgfQogICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQogICAgIHZvaWQgc2V0RHJhZ09m
ZnNldChjb25zdCBJbnRQb2ludCYgb2Zmc2V0KSB7IG1fZHJhZ09mZnNldCA9IG9mZnNldDsgfQog
ICAgIGNvbnN0IEludFBvaW50JiBkcmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zm
c2V0OyB9CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29uc3QgVmVjdG9yPEludFNp
emU+JiBpbWFnZVNpemVzKTsKIAogICAgIHZvaWQgcHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYg
c291cmNlRnJhbWUsIERyYWdTb3VyY2VBY3Rpb24sIEVsZW1lbnQmIHNvdXJjZUVsZW1lbnQsIERh
dGFUcmFuc2ZlciYsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdDsKLSAgICBib29s
IHN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNy
Y09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQm
IGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CisgICAgYm9vbCBzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQm
IGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNv
bnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQg
TWF4T3JpZ2luYWxJbWFnZUFyZWE7CkBAIC0xMDgsMTEgKzEwOCwxMSBAQCBwcml2YXRlOgogICAg
IGJvb2wgZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7
CiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY29u
Y2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0YSYpOwotICAgIERyYWdPcGVyYXRpb24gZHJhZ0Vu
dGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJh
dGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmKTsKLSAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5
RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFj
dGlvbj4sIERyYWdPcGVyYXRpb24mKTsKLSAgICBib29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFn
RGF0YSYsIERyYWdPcGVyYXRpb24mKTsKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24o
Y29uc3QgRHJhZ0RhdGEmKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJl
ZE9yVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBEcmFnSGFuZGxpbmdNZXRo
b2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4sIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+Jik7CisgICAgYm9vbCB0cnlESFRN
TERyYWcoY29uc3QgRHJhZ0RhdGEmLCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiYpOworICAgIE9w
dGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAg
ICB2b2lkIGNsZWFyRHJhZ0NhcmV0KCk7CiAgICAgYm9vbCBkcmFnSXNNb3ZlKEZyYW1lU2VsZWN0
aW9uJiwgY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGlzQ29weUtleURvd24oY29uc3QgRHJh
Z0RhdGEmKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKICAgICBEcmFn
U291cmNlQWN0aW9uIG1fZHJhZ1NvdXJjZUFjdGlvbiB7IERyYWdTb3VyY2VBY3Rpb25Ob25lIH07
CiAgICAgYm9vbCBtX2RpZEluaXRpYXRlRHJhZyB7IGZhbHNlIH07Ci0gICAgRHJhZ09wZXJhdGlv
biBtX3NvdXJjZURyYWdPcGVyYXRpb24geyBEcmFnT3BlcmF0aW9uTm9uZSB9OyAvLyBTZXQgaW4g
c3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2Vi
S2l0CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG1fc291cmNlRHJhZ09wZXJhdGlvbk1h
c2s7IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBk
b3duIHdpdGhpbiBXZWJLaXQuCiAgICAgSW50UG9pbnQgbV9kcmFnT2Zmc2V0OwogICAgIFVSTCBt
X2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAgYm9vbCBtX2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGQ1NTc3ZWVmMTE0Li41YmQw
ZDA5ZjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjMzNCw3ICsy
MzM0LDcgQEAgc3RhdGljIGJvb2wgdGFyZ2V0SXNGcmFtZShOb2RlKiB0YXJnZXQsIEZyYW1lKiYg
ZnJhbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGNvbnZl
cnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPcGVy
YXRpb24pCitzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gY29udmVydERyb3Bab25lT3Bl
cmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ09wZXJhdGlvbikKIHsKICAg
ICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAiY29weSIpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uQ29weTsKQEAgLTIzNDIsMjEgKzIzNDIsMjQgQEAgc3RhdGljIERyYWdPcGVyYXRpb24gY29u
dmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ08K
ICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwogICAgIGlmIChkcmFnT3BlcmF0aW9u
ID09ICJsaW5rIikKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOwotICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0
aWMgU3RyaW5nIGNvbnZlcnREcmFnT3BlcmF0aW9uVG9Ecm9wWm9uZU9wZXJhdGlvbihEcmFnT3Bl
cmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBTdHJpbmcgY29udmVydERyYWdPcGVyYXRpb25Ub0Ry
b3Bab25lT3BlcmF0aW9uKE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbikKIHsKLSAg
ICBzd2l0Y2ggKG9wZXJhdGlvbikgewotICAgIGNhc2UgRHJhZ09wZXJhdGlvbkNvcHk6Ci0gICAg
ICAgIHJldHVybiAiY29weSJfczsKLSAgICBjYXNlIERyYWdPcGVyYXRpb25Nb3ZlOgotICAgICAg
ICByZXR1cm4gIm1vdmUiX3M7Ci0gICAgY2FzZSBEcmFnT3BlcmF0aW9uTGluazoKLSAgICAgICAg
cmV0dXJuICJsaW5rIl9zOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAiY29weSJfczsK
KyAgICBpZiAob3BlcmF0aW9uKSB7CisgICAgICAgIHN3aXRjaCAoKm9wZXJhdGlvbikgeworICAg
ICAgICBjYXNlIERyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICAgICAgcmV0dXJuICJjb3B5Il9z
OworICAgICAgICBjYXNlIERyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICAgICAgcmV0dXJuICJt
b3ZlIl9zOworICAgICAgICBjYXNlIERyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICAgICAgcmV0
dXJuICJsaW5rIl9zOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICB9CisgICAgcmV0dXJuICJjb3B5Il9zOwogfQogCiBzdGF0aWMgYm9vbCBoYXNE
cm9wWm9uZVR5cGUoRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFN0cmluZyYga2V5
d29yZCkKQEAgLTIzNzYsMTUgKzIzNzksMTUgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5v
ZGUmIHRhcmdldCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCiAgICAgZm9yICg7IGVsZW1l
bnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgU3BhY2VT
cGxpdFN0cmluZyBrZXl3b3JkcyhlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHdlYmtpdGRyb3B6b25lQXR0ciksIHRydWUpOwogICAgICAgICBib29sIG1hdGNoZWQgPSBm
YWxzZTsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlv
bk5vbmU7CisgICAgICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb247CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBrZXl3b3Jkcy5zaXplKCk7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgICAgIERyYWdPcGVyYXRpb24gb3AgPSBjb252ZXJ0RHJvcFpv
bmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29yZHNbaV0pOwotICAgICAgICAgICAgaWYg
KG9wICE9IERyYWdPcGVyYXRpb25Ob25lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRyYWdPcGVy
YXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUpCi0gICAgICAgICAgICAgICAgICAgIGRyYWdPcGVy
YXRpb24gPSBvcDsKKyAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uRnJvbUtleXdvcmQgPSBjb252
ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29yZHNbaV0pOworICAgICAg
ICAgICAgaWYgKG9wZXJhdGlvbkZyb21LZXl3b3JkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFk
cmFnT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3BlcmF0
aW9uRnJvbUtleXdvcmQ7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBtYXRj
aGVkID0gbWF0Y2hlZCB8fCBoYXNEcm9wWm9uZVR5cGUoZGF0YVRyYW5zZmVyLCBrZXl3b3Jkc1tp
XS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlZCAmJiBkcmFnT3BlcmF0aW9uICE9
IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICAgICAgaWYgKG1hdGNoZWQgJiYgZHJhZ09wZXJh
dGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobWF0
Y2hlZCkgewpAQCAtMjM5NiwxOSArMjM5OSwxOSBAQCBzdGF0aWMgYm9vbCBmaW5kRHJvcFpvbmUo
Tm9kZSYgdGFyZ2V0LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlcikKIH0KIAogRXZlbnRIYW5k
bGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9y
RHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdl
dCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCh0YXJnZXQuZG9jdW1lbnQoKSwgV1RGTW92
ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBhdXRv
IGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0
KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25N
YXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICBib29sIGFjY2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50
KGV2ZW50VHlwZSwgdGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyLmdldCgpKTsKICAgICBpZiAo
IWFjY2VwdCkKICAgICAgICAgYWNjZXB0ID0gZmluZERyb3Bab25lKHRhcmdldCwgZGF0YVRyYW5z
ZmVyKTsKICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICBp
ZiAoYWNjZXB0ICYmICFkYXRhVHJhbnNmZXItPmRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSkK
LSAgICAgICAgcmV0dXJuIHsgdHJ1ZSwgZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlv
bigpIH07CisgICAgICAgIHJldHVybiB7IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25P
cGVyYXRpb25NYXNrKCkgfTsKICAgICByZXR1cm4geyBhY2NlcHQsIFdURjo6bnVsbG9wdCB9Owog
fQogCi1FdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0
ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiBtYWtlUGFzdGVib2FyZCwg
RHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK0V2ZW50
SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERy
b3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1ha2VQYXN0ZWJvYXJkLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQog
ewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAgICAgaWYgKCFtX2Zy
YW1lLnZpZXcoKSkKQEAgLTI0MzgsMTkgKzI0NDEsMTkgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFy
Z2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU0KICAgICAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgICAgICBpZiAodGFyZ2V0SXNGcmFt
ZShuZXdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAgaWYgKHRhcmdl
dEZyYW1lKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFu
ZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3Bl
cmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdl
dEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3Rl
Ym9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9IGVs
c2UgaWYgKG5ld1RhcmdldCkgewogICAgICAgICAgICAgLy8gQXMgcGVyIHNlY3Rpb24gNy45LjQg
b2YgdGhlIEhUTUwgNSBzcGVjLiwgd2UgbXVzdCBhbHdheXMgZmlyZSBhIGRyYWcgZXZlbnQgYmVm
b3JlIGZpcmluZyBhIGRyYWdlbnRlciwgZHJhZ2xlYXZlLCBvciBkcmFnb3ZlciBldmVudC4KICAg
ICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5k
cmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50
ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCAqbmV3VGFyZ2V0
LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVz
KTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZl
bnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBh
c3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAodGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdl
dEZyYW1lKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJlY3Vyc2luZyBhZ2FpbiBoZXJlIGRv
ZXNuJ3QgbWFrZSBzZW5zZSBpZiB0aGUgbmV3VGFyZ2V0IGFuZCBtX2RyYWdUYXJnZXQgd2VyZSBp
biB0aGUgc2FtZSBmcmFtZS4KICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAg
ICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFn
QW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdG
aWxlcyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVy
YXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChtX2RyYWdUYXJn
ZXQpIHsKLSAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBtYWtlUGFz
dGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAg
YXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRh
cmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9w
ZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICAgICAgZGlzcGF0Y2hEcmFnRXZl
bnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0
YVRyYW5zZmVyLmdldCgpKTsKICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRG
b3JTZWN1cml0eSgpOwogICAgICAgICB9CkBAIC0yNDY0LDEyICsyNDY3LDEyIEBAIEV2ZW50SGFu
ZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZyYW1lKiB0YXJnZXRGcmFtZTsKICAgICAgICAgaWYg
KHRhcmdldElzRnJhbWUobmV3VGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAg
ICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9h
cmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVz
cG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZl
bnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsK
ICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJnZXQpIHsKICAgICAgICAgICAgIC8vIE5vdGUsIHdo
ZW4gZGVhbGluZyB3aXRoIHN1Yi1mcmFtZXMsIHdlIG1heSBuZWVkIHRvIGZpcmUgb25seSBhIGRy
YWdvdmVyIGV2ZW50IGFzIGEgZHJhZyBldmVudCBtYXkgaGF2ZSBiZWVuIGZpcmVkIGVhcmxpZXIu
CiAgICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25seUZpcmVEcmFnT3ZlckV2ZW50KQogICAgICAg
ICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5k
cmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50
ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdvdmVyRXZlbnQsICpuZXdUYXJnZXQs
IGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMp
OworICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVu
dChldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0
ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICAg
ICAgbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgPSBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KQEAgLTI0NzcsMjUgKzI0ODAsMjUgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9u
c2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU0KICAgICBy
ZXR1cm4gcmVzcG9uc2U7CiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJv
cChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBk
cmFnZ2luZ0ZpbGVzKQordm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYm
IHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZSht
X2ZyYW1lKTsKIAogICAgIEZyYW1lKiB0YXJnZXRGcmFtZTsKICAgICBpZiAodGFyZ2V0SXNGcmFt
ZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICBpZiAodGFyZ2V0
RnJhbWUpCi0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuY2FuY2VsRHJh
Z0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJh
Z2dpbmdGaWxlcyk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuY2Fu
Y2VsRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7CiAg
ICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5kcmFn
RXZlbnQsIGV2ZW50KTsKIAotICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwg
V1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAg
ICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5n
RHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCks
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICBkaXNwYXRjaERy
YWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsICptX2RyYWdUYXJnZXQsIGV2ZW50
LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlk
Rm9yU2VjdXJpdHkoKTsKICAgICB9CiAgICAgY2xlYXJEcmFnU3RhdGUoKTsKIH0KIAotYm9vbCBF
dmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3Bl
cmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorYm9vbCBFdmVudEhh
bmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewog
ICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKQEAgLTI1MDMsOSArMjUw
Niw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxCiAgICAgYm9vbCBwcmV2ZW50ZWREZWZhdWx0
ID0gZmFsc2U7CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJn
ZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgcHJldmVu
dGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJmb3JtRHJhZ0FuZERy
b3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdG
aWxlcyk7CisgICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gdGFyZ2V0RnJhbWUtPmV2ZW50
SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwg
c291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgfSBlbHNlIGlmIChtX2Ry
YWdUYXJnZXQpIHsKLSAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQp
LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChtX2RyYWdUYXJnZXQtPmRvY3VtZW50
KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmls
ZXMpOwogICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRO
YW1lcygpLmRyb3BFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlcik7CiAg
ICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIH0KQEAg
LTM3MjksMTMgKzM3MzIsMTMgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZygpCiAj
ZW5kaWYKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBNYXlFeHRl
bmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFnU2Vzc2lvbikKK3ZvaWQgRXZlbnRIYW5kbGVyOjpk
cmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIE1heUV4dGVuZERyYWdTZXNzaW9u
IG1heUV4dGVuZERyYWdTZXNzaW9uKQogewogICAgIC8vIFNlbmQgYSBoaXQgdGVzdCByZXF1ZXN0
IHNvIHRoYXQgUmVuZGVyTGF5ZXIgZ2V0cyBhIGNoYW5jZSB0byB1cGRhdGUgdGhlIDpob3ZlciBh
bmQgOmFjdGl2ZSBwc2V1ZG9jbGFzc2VzLgogICAgIHByZXBhcmVNb3VzZUV2ZW50KE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IHsgSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2Us
IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfSwgZXZlbnQp
OwogCiAgICAgaWYgKHNob3VsZERpc3BhdGNoRXZlbnRzVG9EcmFnU291cmNlRWxlbWVudCgpKSB7
Ci0gICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRp
b24ob3BlcmF0aW9uKTsKKyAgICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXREZXN0
aW5hdGlvbk9wZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spOwogICAgICAgICBkaXNwYXRj
aEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVu
dCk7CiAgICAgfQogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKQEAgLTM4NjUsNyArMzg2
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRo
ZSBoeXN0ZXJlc2lzIHBvaW50LCB3ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBh
cyBhIGNsaWNrCiAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiAgICAgCi0gICAgRHJhZ09wZXJhdGlv
biBzcmNPcCA9IERyYWdPcGVyYXRpb25Ob25lOyAgICAgIAorICAgIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrOwogICAgIAogICAgIC8vIFRoaXMgZG9lcyB3b3Jr
IG9ubHkgaWYgd2UgbWlzc2VkIGEgZHJhZ0VuZC4gRG8gaXQgYW55d2F5LCBqdXN0IHRvIG1ha2Ug
c3VyZSB0aGUgb2xkIGRhdGFUcmFuc2ZlciBnZXRzIG51bWJlZC4KICAgICAvLyBGSVhNRTogQ29u
c2lkZXIgZG9pbmcgdGhpcyBlYXJsaWVyIGluIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGVhcmxpZXN0
IHBvaW50IHdlJ3JlIHN1cmUgaXQgd291bGQgYmUgc2FmZSB0byBkcm9wIGFuIG9sZCBkcmFnLgpA
QCAtMzkwMCw3ICszOTAzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKIAogICAgICAgICBp
ZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgICAgIC8vIEdhdGhlciB2YWx1
ZXMgZnJvbSBESFRNTCBlbGVtZW50LCBpZiBpdCBzZXQgYW55LgotICAgICAgICAgICAgc3JjT3Ag
PSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbigpOworICAgICAgICAg
ICAgc291cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c291cmNl
T3BlcmF0aW9uTWFzaygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBZdWNrLCBhIGRy
YWdnZWRJbWFnZTptb3ZlVG86IG1lc3NhZ2UgY2FuIGJlIGZpcmVkIGFzIGEgcmVzdWx0IG9mIGtp
Y2tpbmcgb2ZmIHRoZQogICAgICAgICAgICAgLy8gZHJhZyB3aXRoIGRyYWdJbWFnZSEgQmVjYXVz
ZSBvZiB0aGF0IGR1bWIgcmVlbnRyYW5jeSwgd2UgbWF5IHRoaW5rIHdlJ3ZlIG5vdApAQCAtMzkx
MSw3ICszOTE0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAKICAgICBpZiAobV9t
b3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFn
ZSgpOwotICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgp
LCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0
YSk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxl
cigpLnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc291cmNlT3BlcmF0aW9uTWFzaywg
ZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uLCBoYXNOb25EZWZhdWx0
UGFzdGVib2FyZERhdGEpOwogICAgICAgICAvLyBJbiBXZWJLaXQyIHdlIGNvdWxkIHJlLWVudGVy
IHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhlciBkcmFnLgogICAgICAgICAvLyBPbiBPUyBYIHRo
aXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hpcCBvZiB0aGUgcGFzdGVib2FyZCBh
bmQgdGhlIHByb21pc2VkIHR5cGVzLgogICAgICAgICBpZiAobV9kaWRTdGFydERyYWcpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDZmZmM4M2MwMTJmLi4yN2NhZTYxZWQxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0xNjMsMTEgKzE2MywxMSBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdHJ1Y3QgRHJhZ1RhcmdldFJlc3Bv
bnNlIHsKICAgICAgICAgYm9vbCBhY2NlcHQgeyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiBvcGVyYXRpb247CisgICAgICAgIE9wdGlvbmFsPE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPj4gb3BlcmF0aW9uTWFzazsKICAgICB9OwotICAgIERyYWdUYXJnZXRSZXNwb25z
ZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHZvaWQgY2FuY2VsRHJh
Z0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgYm9vbCBw
ZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Cisg
ICAgRHJhZ1RhcmdldFJlc3BvbnNlIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
KCk+JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOworICAg
IHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBk
cmFnZ2luZ0ZpbGVzKTsKKyAgICBib29sIHBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgdXBkYXRlRHJhZ1N0
YXRlQWZ0ZXJFZGl0RHJhZ0lmTmVlZGVkKEVsZW1lbnQmIHJvb3RFZGl0YWJsZUVsZW1lbnQpOwog
ICAgIFJlZlB0cjxFbGVtZW50PiBkcmFnZ2VkRWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCkBAIC0y
NjgsNyArMjY4LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
U3RhcnREcmFnKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmLCBEcmFnT3BlcmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiA9IE1heUV4dGVu
ZERyYWdTZXNzaW9uOjpObyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5k
ZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4s
IE1heUV4dGVuZERyYWdTZXNzaW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBmb2N1c0RvY3VtZW50VmlldygpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHBy
aXZhdGU6CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgZGlzcGF0Y2hEcmFn
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIERhdGFUcmFuc2ZlciYpOwotICAgIERyYWdUYXJnZXRSZXNw
b25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5n
RmlsZXMpOworICAgIERyYWdUYXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092
ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgdm9pZCBp
bnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAKICAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDdkMDUyY2Zl
MThhLi5mODZlYTQzNTZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJh
Z0NvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250
cm9sbGVyR3RrLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6Omlz
Q29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIHJldHVybiBkcmFnRGF0
YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsKIH0KIAotRHJhZ09wZXJh
dGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlv
bihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMg
aXMgaW5jb21wbGV0ZQogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7
CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogY29uc3QgSW50U2l6ZSYgRHJhZ0NvbnRy
b2xsZXI6Om1heERyYWdJbWFnZVNpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFn
Q29udHJvbGxlck1hYy5tbQppbmRleCA4NWJkNDhhY2MyMi4uODk3MTRjZTU0NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC02NCwxMCArNjQs
MTAgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgcmV0dXJuIGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25J
c0NvcHlLZXlEb3duOwogfQogICAgIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0
aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7CiAgICAgaWYgKGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25Jc01vZGFs
KQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICBib29sIG1heUNvbnRhaW5VUkw7CiAgICAgaWYgKGNhbkxvYWREYXRh
RnJvbURyYWdnaW5nUGFzdGVib2FyZCgpKQpAQCAtNzYsMTIgKzc2LDEyIEBAIERyYWdPcGVyYXRp
b24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogICAgICAgICBtYXlDb250YWluVVJMID0gZHJhZ0RhdGEuY29udGFpbnNVUkxUeXBlSWRlbnRp
ZmllcigpOwogCiAgICAgaWYgKCFtYXlDb250YWluVVJMICYmICFkcmFnRGF0YS5jb250YWluc1By
b21pc2UoKSkKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCAoIShk
cmFnRGF0YS5mbGFncygpICYgKERyYWdBcHBsaWNhdGlvbkhhc0F0dGFjaGVkU2hlZXQgfCBEcmFn
QXBwbGljYXRpb25Jc1NvdXJjZSkpKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5
OwogCi0gICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiB9CiAKIGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhEcmFnSW1hZ2VTaXpl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAppbmRl
eCAyZDQ2ZDZiMjNlYS4uY2ZhNGFiOWUyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dp
bi9EcmFnQ29udHJvbGxlcldpbi5jcHAKQEAgLTQyLDEzICs0MiwxNSBAQCBjb25zdCBpbnQgRHJh
Z0NvbnRyb2xsZXI6OkRyYWdJY29uQm90dG9tSW5zZXQgPSAzOwogCiBjb25zdCBmbG9hdCBEcmFn
Q29udHJvbGxlcjo6RHJhZ0ltYWdlQWxwaGEgPSAwLjc1ZjsKIAotRHJhZ09wZXJhdGlvbiBEcmFn
Q29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgLy9GSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJl
aGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lCi0gICAgLy9pZiB3ZSBh
cmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cg
aXMgYW4gYXR0YWNoZWQgc2hlZXQKLSAgICAvL0lmIHRoaXMgY2FuIGJlIGRldGVybWluZWQgZnJv
bSB3aXRoaW4gV2ViQ29yZSBvcGVyYXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxsZWQgaW50byAKLSAg
ICAvL1dlYkNvcmUgaXRzZWxmCi0gICAgcmV0dXJuIGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYg
IW1fZGlkSW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAvLyBGSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91ciB3ZSBzaG91bGQg
cmV0dXJuIFdURjo6bnVsbG9wdC4KKyAgICAvLyBJZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdl
IGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQu
CisgICAgLy8gSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9w
ZXJhdGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvCisgICAgLy8gV2ViQ29yZSBpdHNlbGYu
CisgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQor
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIH0KIAogYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0
YSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKaW5kZXggOGY2NzU1ZjU3NjEuLmU4
YzQwZjU1OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1EcmFn
RGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291
cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpE
cmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBt
X2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtNDIsNyAr
NDIsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQbwogeyAgCiB9CiAKLURyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0
IFN0cmluZyYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24o
Y2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQog
ICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApp
bmRleCA0MjFhMjk5NDNiMy4uMzFiOGFiOWVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaApAQCAtNzUsMTMgKzc1LDEzIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5n
UHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9Owog
CiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRo
ZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUg
dG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25B
Y3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9
IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0g
YW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRh
KERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGlj
YXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlv
bk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKCkpOwogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBi
eSBXZWJLaXQyIElQQyBiZWNhdXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkg
dGhlIGRlY29kZXIgYW5kIG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9
IGRlZmF1bHQ7CiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRh
KGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYgZHJhZ0Rh
dGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBzaXplLCBT
dHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNp
emUsIHZvaWQqIGRhdGFCbG9iKTsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRp
b247IH0KICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbGljYXRpb25GbGFnczsgfQogICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YTsgfQotICAgIERyYWdPcGVyYXRpb24gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2s7IH0KKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2s7IH0KICAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSA9
IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBj
b25zdDsKICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoRHJhZ2dpbmdQdXJwb3Nl
ID0gRHJhZ2dpbmdQdXJwb3NlOjpGb3JFZGl0aW5nKSBjb25zdDsKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcml2YXRlOgogICAgIEludFBvaW50IG1fY2xpZW50UG9zaXRpb247CiAgICAgSW50UG9pbnQg
bV9nbG9iYWxQb3NpdGlvbjsKICAgICBEcmFnRGF0YVJlZiBtX3BsYXRmb3JtRHJhZ0RhdGE7Ci0g
ICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKKyAgICBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CiAgICAg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJp
bmc+IG1fZmlsZU5hbWVzOwogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1f
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9EcmFnRGF0YUNvY29hLm1tCmluZGV4IDljY2FmYzBjZDdhLi4zYTEyODlkNGJjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0x
MTYsNyArMTE2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3RlYm9hcmRUeXBlKCkK
ICNlbmRpZgogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3Mg
ZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9u
TWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZs
YWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFj
dGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwg
bV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0
YShkYXRhKQpAQCAtMTMxLDcgKzEzMSw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJl
ZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7CiB9
CiAKLURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0
aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBE
cmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQ
b3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBt
X3BsYXRmb3JtRHJhZ0RhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0
aWxpdGllcy5jcHAKaW5kZXggMGMwMTNjZjY3ZWUuLjA4YzJiZWE3YzZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcApAQCAtMTQ5LDQ5ICsxNDksNDkg
QEAgdW5zaWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pCiAg
ICAgcmV0dXJuIDEgPDwgKDggKyBidXR0b24gLSAxKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBnZGtE
cmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQorT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0Fj
dGlvbiBnZGtBY3Rpb24pCiB7Ci0gICAgLy8gV2UgaGF2ZSBubyBnb29kIHdheSB0byBkZXRlY3Qg
RHJhZ09wZXJhdGlvbkV2ZXJ5IG90aGVyIHRoYW4KKyAgICAvLyBXZSBoYXZlIG5vIGdvb2Qgd2F5
IHRvIGRldGVjdCBhbnlEcmFnT3BlcmF0aW9uKCkgb3RoZXIgdGhhbgogICAgIC8vIHRvIHVzZSBp
dCB3aGVuIGFsbCBhcHBsaWNhYmxlIGZsYWdzIGFyZSBvbi4KICAgICBpZiAoZ2RrQWN0aW9uICYg
R0RLX0FDVElPTl9DT1BZCiAgICAgICAgICYmIGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRQog
ICAgICAgICAmJiBnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0xJTkspCi0gICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uRXZlcnk7CisgICAgICAgIHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CiAK
LSAgICB1bnNpZ25lZCBhY3Rpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gYWN0aW9uOwogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0NP
UFkpCi0gICAgICAgIGFjdGlvbiB8PSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgYWN0aW9u
LmFkZChEcmFnT3BlcmF0aW9uQ29weSk7CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05f
TU9WRSkKLSAgICAgICAgYWN0aW9uIHw9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICBhY3Rp
b24uYWRkKERyYWdPcGVyYXRpb25Nb3ZlKTsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElP
Tl9MSU5LKQotICAgICAgICBhY3Rpb24gfD0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgIGFj
dGlvbi5hZGQoRHJhZ09wZXJhdGlvbkxpbmspOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERy
YWdPcGVyYXRpb24+KGFjdGlvbik7CisgICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotR2RrRHJhZ0Fj
dGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhEcmFnT3BlcmF0aW9uIGNvcmVBY3Rp
b24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBjb3JlQWN0aW9uKQogewogICAgIHVuc2lnbmVkIGdka0FjdGlvbiA9
IDA7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKGNv
cmVBY3Rpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0Fj
dGlvbj4oZ2RrQWN0aW9uKTsKIAotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkNv
cHkpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAg
ICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0aW9uICYg
RHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJh
dGlvbk1vdmUpKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlm
IChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29u
dGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElP
Tl9MSU5LOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlv
bik7CiB9CiAKLUdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlv
bihEcmFnT3BlcmF0aW9uIGNvcmVBY3Rpb24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25U
b1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24p
CiB7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5IHx8IGNvcmVBY3Rp
b24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAoY29yZUFjdGlvbiA9PSBhbnlEcmFnT3Bl
cmF0aW9uKCkgfHwgY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAg
ICAgIHJldHVybiBHREtfQUNUSU9OX0NPUFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3Bl
cmF0aW9uTW92ZSkKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92
ZSkpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24g
JiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3Bl
cmF0aW9uTGluaykpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX0xJTks7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1V0aWxpdGllcy5oCmluZGV4IDVhYWI0ZWI3OWEyLi4xOThiYzhlMjUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaApAQCAtNTEsOCArNTEs
OCBAQCBTdHJpbmcgZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKIAogV0VCQ09SRV9FWFBPUlQgdW5z
aWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pOwogCi1XRUJD
T1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2Rr
RHJhZ0FjdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25U
b0dka0RyYWdBY3Rpb25zKERyYWdPcGVyYXRpb24pOwotV0VCQ09SRV9FWFBPUlQgR2RrRHJhZ0Fj
dGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKERyYWdPcGVyYXRpb24pOwor
V0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0Ry
YWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9u
IGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7
CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0Ry
YWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXgg
ZWUwZDhiMjYwY2MuLjE4ODcwZjIyNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnRGF0YVdpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMiBCYWlkdSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC00MSw3ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERyYWdEYXRhOjpE
cmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlv
biBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKKyAgICBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0
aW9uRmxhZ3MgZmxhZ3MpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQog
ICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1E
cmFnRGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYzZlNWExZDVmMi4uZTIxZjNkODdkOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGZvciBtYXNr
IHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0lu
dGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OmNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAg
ICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVE
cmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFbmRl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rp
ZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6XSk6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbkZv
clVJRHJvcE9wZXJhdGlvbik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0RhdGFGb3JE
cm9wU2Vzc2lvbjpkcmFnRGVzdGluYXRpb25BY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgZHJhZ0ludGVyYWN0aW9uOndpbGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjpzZXNzaW9u
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uOmRp
ZEVuZFdpdGhPcGVyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVy
YWN0aW9uOnNlc3Npb25EaWRFbmQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRk
aXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24pOgorCiAyMDIwLTA2LTAyICBDaHJpc3RvcGhlciBS
ZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OW3IyNjA4NDRd
OiBbR1RLXVtXUEVdIEluc3BlY3RvciBHUmVzb3VyY2Ugbm8gbG9uZ2VyIHVwZGF0ZWQgYWZ0ZXIg
V2ViSW5zcGVjdG9yVUkgZmlsZSB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lv
cy9VSUtpdFNQSS5oCmluZGV4IDJkNDNiYWViZjhlLi5hYmVlMjU1NDdjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTEwMjUsMTIgKzEwMjUsNiBAQCBD
R0Zsb2F0IFVJUm91bmRUb1NjcmVlblNjYWxlKENHRmxvYXQgdmFsdWUsIFVJU2NyZWVuICopOwog
CiBXVEZfRVhURVJOX0NfRU5ECiAKLXR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBVSURy
YWdPcGVyYXRpb24pCi17Ci0gICAgVUlEcmFnT3BlcmF0aW9uTm9uZSA9IDAsCi0gICAgVUlEcmFn
T3BlcmF0aW9uRXZlcnkgPSBOU1VJbnRlZ2VyTWF4LAotfTsKLQogQGludGVyZmFjZSBVSURyYWdJ
bnRlcmFjdGlvbiAoKQogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwgZ2V0dGVyPV9saWZ0
RGVsYXksIHNldHRlcj1fc2V0TGlmdERlbGF5OikgTlNUaW1lSW50ZXJ2YWwgbGlmdERlbGF5Owog
LSAodm9pZClfc2V0QWxsb3dzUG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk6KEJPT0wpYWxsb3dz
UG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCAzZmRkODA0OWQ0OS4uM2RhYTMyY2IyNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA5LDYgKzIwOSw3IEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpE
aWN0YXRpb25Db250ZXh0JywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcicsCisgICAgICAg
ICdXZWJDb3JlOjpEcmFnT3BlcmF0aW9uJywgICMgRklYTUU6IFJlbW92ZSBhZnRlciBlbnVtIGNs
YXNzIERyYWdPcGVyYXRpb24uCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Okxp
YldlYlJUQ1NvY2tldElkZW50aWZpZXInLApAQCAtNTg4LDYgKzU4OSw3IEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50
aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0Nv
bnRleHQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCc6IFsnPFdl
YkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkRyYWdPcGVyYXRpb24n
OiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJzogWyc8V2ViQ29yZS9GaWxlQ2hvb3Nl
ci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCc6IFsnPFdl
YkNvcmUvU2hhcmVEYXRhLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaAppbmRleCBjODY4YzI3NzNmOC4uODk3
ODlmMzgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tE
cmFnQWN0aW9uc0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtNDAsNCArNDAsMjQgQEAgaW5saW5lIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrKFcKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgVVNFKEFQUEtJVCkKK2lu
bGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25N
YXNrKE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0
aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7
CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBO
U0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJp
dmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7
CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBO
U0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkRlbGV0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQ
S0lUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ0NDM4MTEyOWY5Li5jZThmMmY5OGQxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0xNTMxLDcgKzE1MzEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGVuY29k
ZXIgPDwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKTsKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRh
Lmdsb2JhbFBvc2l0aW9uKCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRyYWdEYXRhLmRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKKyAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFnRGF0
YS5mbGFncygpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRh
LnBhc3RlYm9hcmROYW1lKCk7CkBAIC0xNTUwLDggKzE1NTAsOCBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZ2xvYmFsUG9zaXRpb24pKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
azsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2spKQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2s7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2spKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBh
cHBsaWNhdGlvbkZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXQuaAppbmRleCA4YzNiMTBlMTA1MC4uYTAwNDUwMGIwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IG1fcG9zaXRpb247CiAgICAgdW5z
aWduZWQgbV9kYXRhUmVxdWVzdENvdW50IHsgMCB9OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0YTsKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
IG1fb3BlcmF0aW9uIHsgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBtX29wZXJhdGlvbjsKICNpZiBVU0UoR1RLNCkKICAg
ICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGMx
M2IyOWIzMWRjLi4xYzUxOTVmMjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxNywxMSArMjE3LDExIEBAIHZvaWQg
RHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlvbigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAg
YXV0byBvcGVyYXRpb24gPSBwYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChv
cGVyYXRpb24gPT0gbV9vcGVyYXRpb24pCisgICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29wZXJh
dGlvbikgfHwgKm9wZXJhdGlvbiA9PSAqbV9vcGVyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9uOwotICAgIGdka19kcmFnX3N0YXR1cyhtX2Ryb3Au
Z2V0KCksIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24obV9vcGVyYXRpb24pLCBH
REtfQ1VSUkVOVF9USU1FKTsKKyAgICBnZGtfZHJhZ19zdGF0dXMobV9kcm9wLmdldCgpLCBkcmFn
T3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9u
IDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgfSkpLCBHREtfQ1VSUkVOVF9USU1FKTsKIH0K
IAogdm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQoKQpAQCAtMjI5LDcgKzIyOSw3IEBA
IHZvaWQgRHJvcFRhcmdldDo6bGVhdmVUaW1lckZpcmVkKCkKICAgICBhdXRvKiBwYWdlID0gd2Vi
a2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fd2ViVmlldykpOwog
ICAgIEFTU0VSVChwYWdlKTsKIAotICAgIERyYWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRh
dGEudmFsdWUoKSwgKm1fcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQo
bV93ZWJWaWV3LCAqbV9wb3NpdGlvbiksIERyYWdPcGVyYXRpb25Ob25lKTsKKyAgICBEcmFnRGF0
YSBkcmFnRGF0YSgmbV9zZWxlY3Rpb25EYXRhLnZhbHVlKCksICptX3Bvc2l0aW9uLCBjb252ZXJ0
V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KG1fd2ViVmlldywgKm1fcG9zaXRpb24pLCB7IH0pOwog
ICAgIHBhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERy
YWdJbmZvcm1hdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azQuY3BwCmluZGV4IDUxY2EzZTdiODIxLi4zNjFlNGZhNWM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdl
YlZpZXcpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7
CiAKICAgICAgICAgZHJvcC5lbnRlcih7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRvSW50ZWdl
cih5KSB9KTsKLSAgICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rp
b24oZHJvcC5tX29wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBkcmFnT3BlcmF0aW9uVG9TaW5n
bGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVyYXRpb24gPyAqZHJvcC5tX29wZXJhdGlvbiA6IE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPih7IH0pKTsKICAgICB9KSwgdGhpcyk7CiAKICAgICBnX3Np
Z25hbF9jb25uZWN0KHRhcmdldCwgImRyYWctbW90aW9uIiwgR19DQUxMQkFDSygrW10oR3RrRHJv
cFRhcmdldEFzeW5jKiwgR2RrRHJvcCogZ2RrRHJvcCwgZG91YmxlIHgsIGRvdWJsZSB5LCBncG9p
bnRlciB1c2VyRGF0YSkgLT4gR2RrRHJhZ0FjdGlvbiB7CkBAIC03Miw3ICs3Miw3IEBAIERyb3BU
YXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KDApOwogCiAgICAgICAgIGRyb3AudXBkYXRlKHsg
Y2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0pOwotICAgICAgICByZXR1cm4g
ZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihkcm9wLm1fb3BlcmF0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29w
ZXJhdGlvbiA/ICpkcm9wLm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsg
fSkpOwogICAgIH0pLCB0aGlzKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3QodGFyZ2V0LCAiZHJh
Zy1sZWF2ZSIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdk
a0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSB7CkBAIC0yNzMsMTEgKzI3MywxMSBAQCB2b2lkIERy
b3BUYXJnZXQ6OmRpZFBlcmZvcm1BY3Rpb24oKQogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIGF1
dG8gb3BlcmF0aW9uID0gcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKTsKLSAgICBpZiAob3Bl
cmF0aW9uID09IG1fb3BlcmF0aW9uKQorICAgIGlmICgoIW9wZXJhdGlvbiAmJiAhbV9vcGVyYXRp
b24pIHx8IG9wZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9vcGVyYXRpb24gPSBvcGVyYXRpb247Ci0gICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQo
KSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRpb24pLCBkcmFnT3BlcmF0
aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKG1fb3BlcmF0aW9uKSk7CisgICAgZ2RrX2Ryb3Bfc3Rh
dHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRp
b24gPyAqbV9vcGVyYXRpb24gOiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbih7IH0pKSwgZHJhZ09w
ZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihtX29wZXJhdGlvbiA/ICptX29wZXJhdGlvbiA6
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IH0pKSk7CiB9CiAKIHZvaWQgRHJvcFRhcmdldDo6
bGVhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAppbmRleCA2NWU2OWMyYzU2ZS4uMGFlZTRiYzkzODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMjAs
OSArMzIwLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIFBh
Z2VDbGllbnRJbXBsOjpzdGFydERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbiwgRHJhZ09w
ZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFn
ZSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlU3Rh
cnREcmFnKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0
aW9uKSwgZHJhZ09wZXJhdGlvbiwgV1RGTW92ZShkcmFnSW1hZ2UpKTsKKyAgICB3ZWJraXRXZWJW
aWV3QmFzZVN0YXJ0RHJhZyhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBXVEZN
b3ZlKHNlbGVjdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5o
CmluZGV4IGVkMzllNzRkZGU4Li4yNzAwOTk4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBSZWZQ
dHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJl
Y3Q+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBzdGFy
dERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbigpIG92ZXJyaWRlOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZmU0ZTdhYzAzMWMuLmQ4OGYxYzAxZDQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcApAQCAtMjA1NCwxMyArMjA1NCwxMyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9v
bHRpcEFyZWEoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBJbnRSZQogfQog
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERy
YWcoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSwgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiYmIGltYWdlKQordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UsIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
d2ViVmlld0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5kcmFnU291cmNlKQogICAgICAgICBw
cml2LT5kcmFnU291cmNlID0gbWFrZVVuaXF1ZTxEcmFnU291cmNlPihHVEtfV0lER0VUKHdlYlZp
ZXdCYXNlKSk7CiAKLSAgICBwcml2LT5kcmFnU291cmNlLT5iZWdpbihXVEZNb3ZlKHNlbGVjdGlv
bkRhdGEpLCBkcmFnT3BlcmF0aW9uLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgcHJpdi0+ZHJhZ1Nv
dXJjZS0+YmVnaW4oV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdU
Rk1vdmUoaW1hZ2UpKTsgLy8gRklYTUU/CiAKICNpZiAhVVNFKEdUSzQpCiAgICAgLy8gQSBkcmFn
IHN0YXJ0aW5nIHNob3VsZCBwcmV2ZW50IGEgZG91YmxlLWNsaWNrIGZyb20gaGFwcGVuaW5nLiBU
aGlzIG1pZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCAxYzRkZjEyN2VjNC4uZWI3Zjg2ZTA4
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtODIsNyArODIsNyBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlUGFnZUNsb3NlZChXZWJLaXRXZWJWaWV3QmFzZSopOwogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2Vi
S2l0V2ViVmlld0Jhc2UqLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24sIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4mJik7Cit2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFJlZlB0cjxXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcD4mJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKFdlYktpdFdlYlZpZXdCYXNlKik7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZTM5ZWE2
Y2ZlOC4uNjliNjJkZTI1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCkBAIC0zOTEzLDcgKzM5MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFn
Z2VkSW1hZ2UoTlNJbWFnZSAqLCBDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3Bl
cgogICAgIHNlbmREcmFnRW5kVG9QYWdlKGVuZFBvaW50LCBvcGVyYXRpb24pOwogfQogCi12b2lk
IFdlYlZpZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdP
cGVyYXRpb24gb3BlcmF0aW9uKQordm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2Uo
Q0dQb2ludCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrKQogewog
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgTlNQb2ludCB3aW5k
b3dJbWFnZUxvYyA9IFtbbV92aWV3IHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpOU1BvaW50
RnJvbUNHUG9pbnQoZW5kUG9pbnQpXTsKQEAgLTM5MjMsNyArMzkyMyw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlv
biBvcGVyYXRpb24pCiAgICAgLy8gUHJldmVudCBxdWV1ZWQgbW91c2VEcmFnZ2VkIGV2ZW50cyBm
cm9tIGNvbWluZyBhZnRlciB0aGUgZHJhZyBhbmQgZmFrZSBtb3VzZVVwIGV2ZW50LgogICAgIG1f
aWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyA9IHRydWU7CiAKLSAgICBtX3BhZ2UtPmRyYWdFbmRl
ZChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dNb3VzZUxvYyksIFdlYkNvcmU6OkludFBvaW50KFdl
YkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd01vdXNlTG9jLCBbbV92aWV3IHdpbmRvd10pKSwgb3Bl
cmF0aW9uKTsKKyAgICBtX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dN
b3VzZUxvYyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd01v
dXNlTG9jLCBbbV92aWV3IHdpbmRvd10pKSwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdPcGVy
YXRpb25NYXNrKSk7CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncyBh
cHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhOU1ZpZXcgKnZpZXcsIGlkIDxOU0RyYWdnaW5nSW5mbz4g
ZHJhZ2dpbmdJbmZvKQpAQCAtMzk0Nyw3ICszOTQ3LDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZp
ZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8p
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdn
aW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdM
b2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBhdXRv
IGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4o
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgYXV0byBkcmFn
T3BlcmF0aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uTWFzaywgYXBwbGljYXRp
b25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKIAogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJh
Z0luZm9ybWF0aW9uKCk7CkBAIC0zOTU2LDE4ICszOTU2LDQyIEBAIE5TRHJhZ09wZXJhdGlvbiBX
ZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJ
bmZvKQogICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OwogfQogCitzdGF0aWMgTlNEcmFn
T3BlcmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0
aW9uKQoreworICAgIGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09w
ZXJhdGlvbk5vbmU7CisKKyAgICBzd2l0Y2ggKCpkcmFnT3BlcmF0aW9uKSB7CisgICAgY2FzZSBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlv
bkNvcHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgcmV0
dXJuIE5TRHJhZ09wZXJhdGlvbkxpbms7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
R2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09w
ZXJhdGlvblByaXZhdGU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAg
ICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uRGVsZXRlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uRGVsZXRlOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOU0RyYWdPcGVy
YXRpb25Ob25lOworfQorCiBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nVXBk
YXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
TG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdl
YkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3
IHdpbmRvd10pKTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Rm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1h
c2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0g
Y29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2spOwogICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyht
X3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2spOwogICAgIG1fcGFnZS0+ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5m
by5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CiAKICAgICBOU0ludGVnZXIgbnVtYmVyT2ZWYWxp
ZEl0ZW1zRm9yRHJvcCA9IG1fcGFnZS0+Y3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2Vw
dGVkKCk7CiAKLSAgICBpZiAobV9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpID09IFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Ob25lKQorICAgIGlmICghbV9wYWdlLT5jdXJyZW50RHJhZ09wZXJh
dGlvbigpKQogICAgICAgICBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVt
YmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsKIAogICAgIE5TRHJhZ2dpbmdGb3JtYXRpb24gZHJhZ2dp
bmdGb3JtYXRpb24gPSBOU0RyYWdnaW5nRm9ybWF0aW9uTm9uZTsKQEAgLTM5NzksMTQgKzQwMDMs
MTQgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQoaWQgPE5T
RHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgaWYgKGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z0Zvcm1hdGlvbiAhPSBkcmFnZ2luZ0Zvcm1hdGlvbikKICAgICAgICAgW2RyYWdnaW5nSW5mbyBz
ZXREcmFnZ2luZ0Zvcm1hdGlvbjpkcmFnZ2luZ0Zvcm1hdGlvbl07CiAKLSAgICByZXR1cm4gbV9w
YWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOworICAgIHJldHVybiBraXQobV9wYWdlLT5jdXJy
ZW50RHJhZ09wZXJhdGlvbigpKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0
ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xv
Y2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJD
b3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3
aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBj
bGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JE
cmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29y
ZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURy
YWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sp
LCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdn
aW5nSW5mbykpOwogICAgIG1fcGFnZS0+ZHJhZ0V4aXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJ
bmZvcm1hdGlvbigpOwogICAgIGRyYWdnaW5nSW5mby5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9w
ID0gbV9pbml0aWFsTnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsKQEAgLTQwMDIsNyArNDAyNiw3
IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5n
SW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92
aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpu
aWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQo
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdl
YkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25G
bGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAg
ICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJh
Z2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5n
SW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJh
ZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOwogCiAgICAgTlNBcnJh
eSAqdHlwZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMGZjOWI4ZTVjZDAuLmQ0M2M3OTMy
NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI0MjQs
MTEgKzI0MjQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJhZwogI2VuZGlmCiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJh
Z09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhv
ZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVB
Y2NlcHRlZCwgY29uc3QgSW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRp
dGFibGVFbGVtZW50UmVjdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlv
biwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBt
b3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwg
Y29uc3QgSW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVt
ZW50UmVjdCkKIHsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZHJhZ09wZXJhdGlvbiA8
PSBEcmFnT3BlcmF0aW9uRGVsZXRlKTsKLQotICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBz
dGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihkcmFnT3BlcmF0aW9uKTsKKyAgICBtX2N1cnJlbnRE
cmFnT3BlcmF0aW9uID0gZHJhZ09wZXJhdGlvbjsKICAgICBtX2N1cnJlbnREcmFnSGFuZGxpbmdN
ZXRob2QgPSBkcmFnSGFuZGxpbmdNZXRob2Q7CiAgICAgbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJ
bnB1dCA9IG1vdXNlSXNPdmVyRmlsZUlucHV0OwogICAgIG1fY3VycmVudERyYWdOdW1iZXJPZkZp
bGVzVG9CZUFjY2VwdGVkID0gbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZDsKQEAgLTI0MzgsMjAg
KzI0MzYsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJDb3IKIH0KIAogI2lmIFBMQVRGT1JNKEdU
SykKLXZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlv
bkRhdGEsIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKFNlbGVj
dGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4gZHJhZ09wZXJhdGlvbk1hc2ssIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFn
SW1hZ2VIYW5kbGUpCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlID0g
IWRyYWdJbWFnZUhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJ
bWFnZUhhbmRsZSkgOiBudWxscHRyOwotICAgIHBhZ2VDbGllbnQoKS5zdGFydERyYWcoV1RGTW92
ZShzZWxlY3Rpb25EYXRhKSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJh
Z09wZXJhdGlvbiksIFdURk1vdmUoZHJhZ0ltYWdlKSk7CisgICAgcGFnZUNsaWVudCgpLnN0YXJ0
RHJhZyhXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpLCBkcmFnT3BlcmF0aW9uTWFzaywgV1RGTW92ZShk
cmFnSW1hZ2UpKTsKIAogICAgIGRpZFN0YXJ0RHJhZygpOwogfQogI2VuZGlmCiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKK3ZvaWQgV2Vi
UGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQo
Y2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9u
LCBkcmFnT3BlcmF0aW9uTWFzaykpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9KTsKIH0KIApA
QCAtMjQ4Miw3ICsyNDgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZERyYWdnaW5nKCkK
IAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpCiB7Ci0g
ICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOwor
ICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBXVEY6Om51bGxvcHQ7CiAgICAgbV9jdXJyZW50
RHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwogICAgIG1fY3Vy
cmVudERyYWdJc092ZXJGaWxlSW5wdXQgPSBmYWxzZTsKICAgICBtX2N1cnJlbnREcmFnTnVtYmVy
T2ZGaWxlc1RvQmVBY2NlcHRlZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDdiYTlmOGI1ZWMwLi4yMWE1MjM2Y2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNTYsOCArMTE1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnT3BlcmF0aW9uKGJv
b2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1
aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wg
bW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOwotICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pOworICAgIHZvaWQgZGlkUGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBX
ZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVu
c2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGluc2VydGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJl
Y3QpOworICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOwogICAgIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAg
ICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7CiAgICAgdm9pZCBzZXREcmFnQ2FyZXRSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKQEAgLTExNjcsNyArMTE2Nyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYg
YXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNpemUpOwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oR1RLKQotICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWlu
dDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJ
bWFnZSk7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0lt
YWdlKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTEyMjYsNyArMTIyNiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCi0gICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ09wZXJh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdPcGVyYXRpb247IH0KKyAgICBPcHRp
b25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjdXJyZW50RHJhZ09wZXJhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fY3VycmVudERyYWdPcGVyYXRpb247IH0KICAgICBXZWJDb3JlOjpEcmFnSGFu
ZGxpbmdNZXRob2QgY3VycmVudERyYWdIYW5kbGluZ01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudERyYWdIYW5kbGluZ01ldGhvZDsgfQogICAgIGJvb2wgY3VycmVudERyYWdJc092ZXJG
aWxlSW5wdXQoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0OyB9
CiAgICAgdW5zaWduZWQgY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQ7IH0KQEAg
LTI2MDcsNyArMjYwNyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICAvLyBDdXJyZW50IGRyYWcgZGVzdGluYXRpb24gZGV0YWlscyBhcmUgZGVsaXZlcmVkIGFzIGFu
IGFzeW5jaHJvbm91cyByZXNwb25zZSwKICAgICAvLyBzbyB3ZSBwcmVzZXJ2ZSB0aGVtIHRvIGJl
IHVzZWQgd2hlbiB0aGUgbmV4dCBkcmFnZ2luZyBkZWxlZ2F0ZSBjYWxsIGlzIG1hZGUuCi0gICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uIHsgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk5vbmUgfTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOwogICAgIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhv
ZCBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QgeyBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2Q6Ok5vbmUgfTsKICAgICBib29sIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgeyBmYWxz
ZSB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVk
IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDJkMjNlNGI2NjBiLi5hZGNhMTVjNGJiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzEwLDcgKzMxMCw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIERyYWcgYW5kIGRyb3AgbWVz
c2FnZXMKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIERpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZp
bGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgV2ViQ29yZTo6SW50
UmVjdCBpbnNlcnRpb25SZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGVkaXRhYmxlRWxlbWVudFJlY3Qp
CisgICAgRGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24sIGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFu
ZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0
LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGlu
c2VydGlvblJlY3QsIFdlYkNvcmU6OkludFJlY3QgZWRpdGFibGVFbGVtZW50UmVjdCkKICAgICBE
aWRFbmREcmFnZ2luZygpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCkBAIC0zMTgsNyArMzE4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKICAgICBTZXRQcm9taXNlZERhdGFGb3JJbWFnZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGltYWdlU2l6
ZSwgU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcgZXh0ZW5zaW9uLCBTdHJpbmcgdGl0bGUsIFN0cmlu
ZyB1cmwsIFN0cmluZyB2aXNpYmxlVVJMLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGFy
Y2hpdmVIYW5kbGUsIHVpbnQ2NF90IGFyY2hpdmVTaXplKQogI2VuZGlmCiAjaWYgUExBVEZPUk0o
R1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhIHNlbGVjdGlvbkRhdGEsIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgZHJhZ0ltYWdlKQorICAgIFN0YXJ0RHJhZyhXZWJDb3Jl
OjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbkRhdGEsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaywgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSBkcmFnSW1hZ2UpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCA0MzlkYjk5NzdlZS4uNjk2YjkwODhkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
NzI4NSw3ICs3Mjg1LDcgQEAgLSAodm9pZClfZGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdDooQk9P
TClzdGFydGVkCiAgICAgICAgIGlmIChzdGFydGVkKSB7CiAgICAgICAgICAgICAvLyBBIGNsaWVu
dCBvZiB0aGUgT2JqZWN0aXZlIEMgU1BJIG9yIFVJS2l0IG1pZ2h0IGhhdmUgcHJldmVudGVkIHRo
ZSBkcmFnIGZyb20gYmVnaW5uaW5nIGVudGlyZWx5IGluIHRoZSBVSSBwcm9jZXNzLCBpbiB3aGlj
aCBjYXNlCiAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGJhbGFuY2UgdGhlIGBkcmFnc3RhcnRg
IGV2ZW50IHdpdGggYSBgZHJhZ2VuZGAuCi0gICAgICAgICAgICBfcGFnZS0+ZHJhZ0VuZGVkKHBv
c2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uTm9uZSk7CisgICAgICAgICAgICBfcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0Vu
ZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCB7IH0pOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzMw
MywyNCArNzMwMyw0MiBAQCAtICh2b2lkKWNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JE
cm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gbwogICAgICAgICAqb3V0R2xv
YmFsUG9pbnQgPSBsb2NhdGlvbkluQ29udGVudFZpZXc7CiB9CiAKLXN0YXRpYyBVSURyb3BPcGVy
YXRpb24gZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24gb3BlcmF0aW9uKQorc3RhdGljIFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9u
Rm9yV2ViQ29yZURyYWdPcGVyYXRpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4g
b3BlcmF0aW9uKQogewotICAgIGlmIChvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
TW92ZSkKLSAgICAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbk1vdmU7Ci0KLSAgICBpZiAob3Bl
cmF0aW9uICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpCi0gICAgICAgIHJldHVybiBVSURy
b3BPcGVyYXRpb25Db3B5OwotCisgICAgaWYgKG9wZXJhdGlvbikgeworICAgICAgICBpZiAoKm9w
ZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICAgICAgcmV0dXJu
IFVJRHJvcE9wZXJhdGlvbk1vdmU7CisgICAgICAgIGlmICgqb3BlcmF0aW9uICYgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uQ29w
eTsKKyAgICB9CiAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbkNhbmNlbDsKIH0KIAorc3RhdGlj
IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbkZvclVJ
RHJvcE9wZXJhdGlvbihVSURyb3BPcGVyYXRpb24gZHJvcE9wZXJhdGlvbikKK3sKKyAgICBzd2l0
Y2ggKGRyb3BPcGVyYXRpb24pIHsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbkNhbmNlbDoKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbkZvcmJpZGRlbjoKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgVUlE
cm9wT3BlcmF0aW9uQ29weToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25D
b3B5OworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJuIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Nb3ZlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4geyB9OworfQorCiAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvckRy
b3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFnRGVzdGluYXRpb25BY3Rp
b246KFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWRyYWdEZXN0aW5hdGlvbkFjdGlvbgogewogICAg
IENHUG9pbnQgZ2xvYmFsOwogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVD
bGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50
OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAKLSAgICBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4oc2Vzc2lvbi5hbGxvd3NNb3ZlT3BlcmF0aW9uID8gV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25FdmVyeSAmIH5XZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTW92ZSkpOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBXZWJDb3JlOjphbnlE
cmFnT3BlcmF0aW9uKCk7CisgICAgaWYgKCFzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24pCisg
ICAgICAgIGRyYWdPcGVyYXRpb25NYXNrLnJlbW92ZShXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92
ZSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVu
dCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBkcmFnT3BlcmF0aW9uTWFzaywg
V2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgV2ViS2l0Ojpjb3JlRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFzayhkcmFnRGVzdGluYXRpb25BY3Rpb24pIH07CiB9CiAKQEAgLTc0MjQsNyArNzQ0
Miw4IEBAIC0gKHZvaWQpX2RpZFBlcmZvcm1EcmFnT3BlcmF0aW9uOihCT09MKWhhbmRsZWQKICAg
ICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRz
Rm9yRHJvcFNlc3Npb246ZHJvcFNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9i
YWxQb2ludDomZ2xvYmFsXTsKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0
ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50
KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIF9wYWdlLT5jdXJyZW50RHJhZ09w
ZXJhdGlvbigpKTsKKyAgICBhdXRvIGN1cnJlbnREcmFnT3BlcmF0aW9uID0gX3BhZ2UtPmN1cnJl
bnREcmFnT3BlcmF0aW9uKCk7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVk
SW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGN1cnJl
bnREcmFnT3BlcmF0aW9uID8gKmN1cnJlbnREcmFnT3BlcmF0aW9uIDogT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KHsgfSkpOwogfQogCiAtICh2b2lkKV9kaWRDaGFuZ2VEcmFnQ2Fy
ZXRSZWN0OihDR1JlY3QpcHJldmlvdXNSZWN0IGN1cnJlbnRSZWN0OihDR1JlY3QpcmVjdApAQCAt
ODAxMyw3ICs4MDMyLDcgQEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0
aW9uICopaW50ZXJhY3Rpb24gd2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW0KICAgICAgICAgICAgIFJF
TEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIGVuZGVkIGF0IHN0YXJ0OiAlcCIs
IHNlc3Npb24pOwogICAgICAgICAgICAgLy8gVGhlIGxpZnQgd2FzIGNhbmNlbGVkLCBzbyAtZHJv
cEludGVyYWN0aW9uOnNlc3Npb25EaWRFbmQ6IHdpbGwgbmV2ZXIgYmUgaW52b2tlZC4gVGhpcyBp
cyB0aGUgbGFzdCBjaGFuY2UgdG8gY2xlYW4gdXAuCiAgICAgICAgICAgICBbcHJvdGVjdGVkU2Vs
ZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgICAgICAgICBwYWdlLT5kcmFn
RW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Ob25lKTsKKyAgICAgICAgICAgIHBhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZv
ckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgeyB9KTsKICAgICAgICAgfQogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBlbHNlCkBAIC04MDQ4LDcgKzgwNjcsNyBAQCAtICh2
b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNz
aW9uOihpZCA8VUlEcmFnU2VzcwogICAgICAgICByZXR1cm47CiAKICAgICBbc2VsZiBjbGVhblVw
RHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9u
Rm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIG9wZXJhdGlvbik7CisgICAg
X3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRy
YWdFbmQoKSksIGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKG9wZXJhdGlvbikp
OwogfQogCiAtIChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkcmFnSW50ZXJhY3Rpb246KFVJRHJh
Z0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckNhbmNlbGxpbmdJdGVtOihVSURy
YWdJdGVtICopaXRlbSB3aXRoRGVmYXVsdDooVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZGVmYXVs
dFByZXZpZXcKQEAgLTgyNjcsNyArODI4Niw3IEBAIC0gKHZvaWQpZHJvcEludGVyYWN0aW9uOihV
SURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHNlc3Npb25EaWRFbmQ6KGlkIDxVSURyCiAg
ICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50
c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQ
b2ludDomZ2xvYmFsXTsKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07
Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwg
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25O
b25lKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGll
bnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgeyB9KTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRleCBlZWQ3Yjk5Njg1Ny4uNzRmNDZj
Y2JmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNzUsNyArNzUsNyBA
QCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmKQogCiAgICAgbV9wYWdlLT53aWxsU3RhcnREcmFnKCk7
CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRh
dGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuc2VsZWN0aW9uRGF0YSgpLCBkYXRhVHJhbnNmZXIuc291
cmNlT3BlcmF0aW9uKCksIGhhbmRsZSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTdGFydERyYWcoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5zZWxlY3Rpb25E
YXRhKCksIGRhdGFUcmFuc2Zlci5zb3VyY2VPcGVyYXRpb25NYXNrKCksIGhhbmRsZSkpOwogfQog
CiB9OyAvLyBuYW1lc3BhY2UgV2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCA2MGIwZWE3OTYyZC4uZTc3NGEyY2I4MzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zOTQ0LDIyICsz
OTQ0LDIyIEBAIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlciogV2ViUGFnZTo6
bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEs
IHVpbnQzMl90IGZsYWdzKQordm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgU2VsZWN0aW9uRGF0YSYmIHNlbGVj
dGlvbkRhdGEsIHVpbnQzMl90IGZsYWdzKQogewogICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKERyYWdPcGVyYXRpb25Ob25lLCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAw
LCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhv
ZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0aW9uRGF0YSwgY2xpZW50UG9zaXRpb24sIGds
b2JhbFBvc2l0aW9uLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2spLCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsK
KyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0aW9uRGF0YSwgY2xpZW50UG9zaXRpb24sIGds
b2JhbFBvc2l0aW9uLCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIHN0YXRpY19jYXN0PERy
YWdBcHBsaWNhdGlvbkZsYWdzPihmbGFncykpOwogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAg
Y2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6RW50ZXJlZDogewotICAgICAgICBEcmFnT3BlcmF0
aW9uIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFn
RW50ZXJlZChkcmFnRGF0YSk7CisgICAgICAgIGF1dG8gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0g
bV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24ocmVzb2x2ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hh
bmRsaW5nTWV0aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJ
bnB1dCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRl
ZCgpLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgRHJhZ0Nv
bnRyb2xsZXJBY3Rpb246OlVwZGF0ZWQ6IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZl
ZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJh
Z0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVk
RHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhv
ZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgeyB9LCB7
IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM5NzgsMjQgKzM5NzgsMjQgQEAgdm9p
ZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rp
b24gYWN0aW9uLCBjb25zdCBJbnQKIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6RHJhZ0Rh
dGEmIGRyYWdEYXRhLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRib3hFeHRlbnNpb25z
SGFuZGxlQXJyYXkpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ09wZXJh
dGlvbk5vbmUsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKFdURjo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxz
ZSwgMCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHN3aXRjaCAo
YWN0aW9uKSB7CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6RW50ZXJlZDogewotICAg
ICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAgICAgIGF1dG8gcmVzb2x2ZWRE
cmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdE
YXRhKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24ocmVzb2x2ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkuZHJhZ0hhbmRsaW5nTWV0aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5t
b3VzZUlzT3ZlckZpbGVJbnB1dCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVyT2ZJ
dGVtc1RvQmVBY2NlcHRlZCgpLCBtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFJl
Y3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCku
ZWRpdGFibGVFbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6VXBkYXRlZDogewot
ICAgICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CisgICAgICAgIGF1dG8gcmVzb2x2
ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRy
YWdEYXRhKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24ocmVzb2x2ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdD
b250cm9sbGVyKCkuZHJhZ0hhbmRsaW5nTWV0aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5tb3VzZUlzT3ZlckZpbGVJbnB1dCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVy
T2ZJdGVtc1RvQmVBY2NlcHRlZCgpLCBtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJl
dFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVy
KCkuZWRpdGFibGVFbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6RXhpdGVkOgog
ICAgICAgICBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFnRGF0YSk7Ci0g
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZh
bHNlLCAwLCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGlu
Z01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6UGVyZm9ybURyYWdPcGVyYXRp
b246IHsKQEAgLTQwMjIsNyArNDAyMiw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgV2ViCiB9CiAj
ZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50
UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVy
YXRpb24pCit2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQ
b3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykKIHsKICAgICBJbnRQb2ludCBh
ZGp1c3RlZENsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uLngoKSArIG1fcGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueCgpLCBjbGllbnRQb3NpdGlvbi55KCkgKyBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLnkoKSk7CiAgICAgSW50UG9pbnQgYWRqdXN0
ZWRHbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbi54KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ09mZnNldCgpLngoKSwgZ2xvYmFsUG9zaXRpb24ueSgpICsgbV9wYWdlLT5kcmFn
Q29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS55KCkpOwpAQCAtNDAzMyw3ICs0MDMzLDcgQEAgdm9p
ZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdl
YkNvcmU6OkludFBvaW50IGdsb2IKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBUaGVz
ZSBhcmUgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFsIG9u
ZXMgaW5zdGVhZC4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoYWRqdXN0ZWRDbGllbnRQ
b3NpdGlvbiwgYWRqdXN0ZWRHbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVu
dDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpu
b3coKSwgMCwgV2ViQ29yZTo6Tm9UYXApOwotICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRI
YW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIChEcmFnT3BlcmF0aW9uKW9wZXJhdGlv
bik7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5k
ZWRBdChldmVudCwgZHJhZ09wZXJhdGlvbk1hc2spOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRFbmREcmFnZ2luZygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGMyYzQ4ZDFjOTM2Li42NzljZmQxYjUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODk5LDcgKzg5OSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVs
ZW1lbnQoKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKEdUSykKLSAg
ICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50MzJfdCBmbGFncyk7CisgICAgdm9p
ZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIHVpbnQz
Ml90IGZsYWdzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgIVBMQVRG
T1JNKEdUSykKQEAgLTkwNyw3ICs5MDcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xp
ZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBv
cGVyYXRpb24pOworICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBv
c2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1Mb2FkRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uKCk7CiAgICAgdm9pZCBtYXlQZXJmb3JtVXBsb2FkRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCA1MzhlNjU3MmU1MC4uYWU5Mjc0NzYzODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtMzA5LDE0ICszMDksMTQgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgICMg
RHJhZyBhbmQgZHJvcC4KICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQp
Ci0gICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVudW06dWludDhfdCBXZWJLaXQ6OkRy
YWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRp
b24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uLCB1aW50
MzJfdCBmbGFncykKKyAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51bTp1aW50OF90
IFdlYktpdDo6RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBj
bGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uLCB1aW50MzJfdCBmbGFncykKICNlbmRpZgog
I2lmICFQTEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgUGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKGVudW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0
aW9uIGFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEsIFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIERpZFN0YXJ0RHJhZygpCi0gICAgRHJhZ0Vu
ZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBn
bG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQorICAgIERyYWdFbmRlZChXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykK
ICAgICBEcmFnQ2FuY2VsbGVkKCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDBlNjU2NDk2Yzg0Li44Yjg3
ZGIzOGMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KQEAgLTkyNCw3ICs5MjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RB
ZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRp
bwogICAgIC8vIGlzIG9wYXF1ZSB0byB0aGUgd2ViIHByb2Nlc3MsIHdoaWNoIG9ubHkgc2VlcyB0
aGF0IHRoZSBjdXJyZW50IGRyYWcgaGFzIGVuZGVkLCBhbmQgdGhhdCBhIG5ldyBvbmUgaXMgYmVn
aW5uaW5nLgogICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChjbGllbnRQb3NpdGlvbiwgZ2xv
YmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6bm93KCksIDAsIE5vVGFwKTsKICAg
ICBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VuZGVkKCk7Ci0gICAgbV9wYWdlLT5tYWlu
RnJhbWUoKS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgRHJhZ09wZXJh
dGlvbk5vbmUsIE1heUV4dGVuZERyYWdTZXNzaW9uOjpZZXMpOworICAgIG1fcGFnZS0+bWFpbkZy
YW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIHsgfSwgTWF5RXh0
ZW5kRHJhZ1Nlc3Npb246Olllcyk7CiAKICAgICBib29sIGRpZEhhbmRsZURyYWcgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLnRyeVRvQmVnaW5EcmFnQXRQb2ludChjbGllbnRQ
b3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24pOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVlc3QoZGlkSGFuZGxlRHJhZykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQxZGI2NDc1ZThlLi4wMjk3OTgwNDUwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTA2LTAx
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBmb3IgbWFzayB2YWx1ZXMKKyAgICAgICAgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxMjYwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9k
cmFnU291cmNlRW5kZWRBdDpvcGVyYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1M
Vmlldy5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBk
cmFnZ2luZ1Nlc3Npb246c291cmNlT3BlcmF0aW9uTWFza0ZvckRyYWdnaW5nQ29udGV4dDpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlv
bk1hc2spOgorICAgICAgICAtIEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9uIHRvIGF2b2lkIGNhc3Rp
bmcuCisgICAgICAgICgtW1dlYlZpZXcgZHJhZ0RhdGFGb3JTZXNzaW9uOmNsaWVudDpnbG9iYWw6
b3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ1VwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
ZHJhZ2dpbmdFeGl0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRp
b246XSk6CisgICAgICAgIC0gTWFrZSB1c2Ugb2YgY29yZURyYWdPcGVyYXRpb25NYXNrKCkgY29u
dmVyc2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgor
ICAgICAgICAoQ29jb2FEcmFnT3BlcmF0aW9uKToKKyAgICAgICAgLSBBZGQgdHlwZWRlZiBzbyBj
b3JlRHJhZ09wZXJhdGlvbk1hc2soKSBtYXkgYmUgc2hhcmVkIGFjcm9zcworICAgICAgICAgIHBs
YXRmb3Jtcy4KKyAgICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6IEFkZCBkZWNsYXJhdGlv
bi4KKyAgICAgICAgKGNvcmVPcHRpb25zKToKKyAgICAgICAgLSBSZW1vdmUgcmVkdW5kYW50IHBh
cmFtZXRlciBuYW1lLgorCiAyMDIwLTA2LTAyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZlcnQgRkVBVFVSRVNfREVGSU5FUyByZWxhdGVkIGNoYW5nZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGQ0ZGVh
N2MzOWM4Li5iOWVlY2RjOGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCkBAIC05NDIsNyArOTQyLDcgQEAgLSAodm9pZClfc2V0VHlwaW5nU3R5bGU6
KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRoVW5kb0FjdGlvbjooV2ViQ29yZToK
IH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKLS0gKHZvaWQp
X2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xvYyBvcGVyYXRpb246KE5TRHJhZ09w
ZXJhdGlvbilvcGVyYXRpb24KKy0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdp
bmRvd0xvYyBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilkcmFnT3BlcmF0aW9uTWFzawogewog
ICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUyLDcg
Kzk1Miw3IEBAIC0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xvYyBv
cGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpCiAgICAgLy8gRklYTUU6IFRoZXNlIGFy
ZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBp
bnN0ZWFkLgogICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCBldmVudChXZWJDb3JlOjpJ
bnRQb2ludCh3aW5kb3dMb2MpLCBXZWJDb3JlOjpJbnRQb2ludChXZWJDb3JlOjpnbG9iYWxQb2lu
dCh3aW5kb3dMb2MsIFt2aWV3LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd10pKSwKICAgICAgICAg
V2ViQ29yZTo6TGVmdEJ1dHRvbiwgV2ViQ29yZTo6UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgV2ViQ29yZTo6
Rm9yY2VBdENsaWNrLCBXZWJDb3JlOjpOb1RhcCk7Ci0gICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+
ZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIChXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uKW9wZXJhdGlvbik7CisgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVy
KCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnT3Bl
cmF0aW9uTWFzaykpOwogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRG
T1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0KaW5kZXggNWU0YTg5MDVlYzguLmU3Y2E0NjFkOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogICAgICAgICAgIChDKSAyMDA2LCAyMDA3IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5k
ZW5uaXNAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDIyOSw2ICs0MjI5LDI4IEBA
IC0gKHZvaWQpdG91Y2g6KFdlYkV2ZW50ICopZXZlbnQKICNlbmRpZgogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKQorCitzdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtp
dChPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKK3sKKyAg
ICBpZiAob3BlcmF0aW9uTWFzayA9PSBXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKCkpCisgICAg
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25FdmVyeTsKKworICAgIE5TRHJhZ09wZXJhdGlvbiBy
ZXN1bHQgPSBOU0RyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRh
aW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJh
Z09wZXJhdGlvbkNvcHk7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkxpbmspKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTGlu
azsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
R2VuZXJpYykpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25HZW5lcmljOworICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRl
KSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgaWYgKG9w
ZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKQorICAgICAg
ICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5j
b250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKSkKKyAgICAgICAgcmVzdWx0IHw9
IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogLSAodm9pZClkcmFnSW1hZ2U6KE5TSW1h
Z2UgKilkcmFnSW1hZ2UKICAgICAgICAgICAgICAgIGF0OihOU1BvaW50KWF0CkBAIC00MjgwLDcg
KzQzMDIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0dXJu
IChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0
aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdP
cGVyYXRpb25NYXNrKCkpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19C
RUdJTgpAQCAtNDM4Niw3ICs0NDA4LDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU2Vz
c2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilzZXNzaW9uIHNvdXJjZU9wZXJhdGlvbk0KICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0
dXJuIChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3Bl
cmF0aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURy
YWdPcGVyYXRpb25NYXNrKCkpOwogfQogCiAtICh2b2lkKWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFn
Z2luZ1Nlc3Npb24gKilzZXNzaW9uIGVuZGVkQXRQb2ludDooTlNQb2ludClzY3JlZW5Qb2ludCBv
cGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBjNWU5ZjI1YzYxZS4uMDk3Njc3ZDlkYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTU4OSw2ICs1
ODksOTIgQEAgc3RhdGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+
IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFcKICAgICAgICAgcmVzdWx0LmFkZChXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CisKKyNpZiAhVVNFKEFQUEtJVCkKKy8vIFNlZSA8VUlLaXQvVUlEcmFnZ2luZ19Qcml2YXRlLmg+
LgordHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9VSURyYWdPcGVyYXRpb24pIHsKKyAg
ICBfVUlEcmFnT3BlcmF0aW9uTm9uZSA9IDAsCisgICAgX1VJRHJhZ09wZXJhdGlvbkNvcHkgPSAx
LAorICAgIF9VSURyYWdPcGVyYXRpb25Nb3ZlID0gMTYsCit9OworI2VuZGlmCisKK09wdGlvblNl
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soQ29jb2FEcmFn
T3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gcmVzdWx0OworCisjaWYgVVNFKEFQUEtJVCkKKyAgICBpZiAob3BlcmF0aW9uICYgTlNE
cmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAg
ICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVy
YXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3Bl
cmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
UHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAg
ICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVy
YXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisjZWxzZQorICAgIGlmIChvcGVyYXRpb24gJiBfVUlE
cmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIF9VSURyYWdPcGVyYXRpb25Nb3ZlKQorICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyNlbmRpZiAvLyBV
U0UoQVBQS0lUKQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIFVTRShBUFBLSVQpCitz
dGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PiBkcmFnT3BlcmF0aW9uKQoreworICAgIGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAgcmV0
dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CisKKyAgICBzd2l0Y2ggKCpkcmFnT3BlcmF0aW9uKSB7
CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weToKKyAgICAgICAgcmV0dXJuIE5T
RHJhZ09wZXJhdGlvbkNvcHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluazoK
KyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkxpbms7CisgICAgY2FzZSBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uR2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkdlbmVy
aWM7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZToKKyAgICAgICAgcmV0
dXJuIE5TRHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uTW92ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgY2FzZSBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0
aW9uRGVsZXRlOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBOU0RyYWdPcGVyYXRpb25Ob25lOworfQorI2Vsc2UKK3N0YXRpYyBfVUlEcmFnT3BlcmF0aW9u
IGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQorewor
ICAgIGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25O
b25lOworCisgICAgc3dpdGNoICgqZHJhZ09wZXJhdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uQ29weTsK
KyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICByZXR1cm4gX1VJ
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJp
YzoKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9u
Tm9uZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1
cm4gX1VJRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
RGVsZXRlOgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgfQorCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25l
OworfQorI2VuZGlmIC8vIFVTRShBUFBLSVQpCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9S
VCkKIAogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0
aW9ucykKQEAgLTE5MjMsNyArMjAwOSw3IEBAIC0gKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3NpCiAKIC0g
KFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRhRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+
KXNlc3Npb24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludCln
bG9iYWxQb3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgogewotICAgIGF1dG8g
ZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihv
cGVyYXRpb24pOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlv
bk1hc2sob3BlcmF0aW9uKTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBj
b3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbc2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrRm9yU2Vzc2lvbjpzZXNzaW9uXSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6
cm91bmRlZEludFBvaW50KGNsaWVudFBvc2l0aW9uKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KGdsb2JhbFBvc2l0aW9uKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNh
dGlvbk5vbmUsIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgfTsKIH0KQEAgLTE5MzIsMTQgKzIw
MTgsMTQgQEAgLSAodWludDY0X3QpX2VudGVyZWREYXRhSW50ZXJhY3Rpb246KGlkIDxVSURyb3BT
ZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCkKIHsKICAgICBXZWJUaHJlYWRMb2NrKCk7
CiAgICAgYXV0byBkcmFnRGF0YSA9IFtzZWxmIGRyYWdEYXRhRm9yU2Vzc2lvbjpzZXNzaW9uIGNs
aWVudDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOm9wZXJh
dGlvbl07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdF
bnRlcmVkKGRyYWdEYXRhKTsKKyAgICByZXR1cm4ga2l0KF9wcml2YXRlLT5wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKSk7CiB9CiAKIC0gKHVpbnQ2NF90KV91cGRh
dGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENH
UG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJh
dGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCiB7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogICAgIGF1
dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lvbiBjbGllbnQ6Y2xp
ZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpvcGVyYXRpb25dOwot
ICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChk
cmFnRGF0YSk7CisgICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnVXBkYXRlZChkcmFnRGF0YSkpOwogfQogCiAtICh2b2lkKV9leGl0ZWREYXRhSW50ZXJh
Y3Rpb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQ
b3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRf
dClvcGVyYXRpb24KQEAgLTY3NDgsOCArNjgzNCw4IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFn
Z2luZ0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAg
IFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJ
bmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAgICBXZWJDb3JlOjpE
cmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxm
IGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgcmV0dXJuIGNv
cmUoc2VsZiktPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNv
cmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlv
bk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgcmV0dXJuIGtpdChjb3Jl
KHNlbGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKSk7CiB9CiAKIC0g
KE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1VwZGF0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJh
Z2dpbmdJbmZvCkBAIC02NzYxLDggKzY4NDcsOCBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dp
bmdVcGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6
OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5m
byBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJh
Z0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBh
Y3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIHJldHVybiBwYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAgICBXZWJDb3JlOjpE
cmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09w
ZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwg
W3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9y
RHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJldHVybiBraXQocGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSkpOwogfQogCiAtICh2b2lkKWRyYWdnaW5n
RXhpdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjc3Myw3ICs2ODU5
LDcgQEAgLSAodm9pZClkcmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2lu
Z0luZm8KIAogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xv
YmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkp
OwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBn
bG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJh
Z2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZv
LCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dp
bmdJbmZvXSk7CiAgICAgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdEYXRh
KTsKIH0KIApAQCAtNjc4Niw3ICs2ODcyLDcgQEAgLSAoQk9PTClwZXJmb3JtRHJhZ09wZXJhdGlv
bjooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIHsKICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBhdXRvKiBkcmFnRGF0YSA9IG5l
dyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwor
ICAgIGF1dG8qIGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywg
Y2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5n
SW5mb10pOwogCiAgICAgTlNBcnJheSogdHlwZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0
ZWJvYXJkLnR5cGVzOwogICAgIGlmICghW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQ
Ym9hcmRUeXBlXSAmJiBbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQ29yZTo6bGVnYWN5RmlsZXNQ
cm9taXNlUGFzdGVib2FyZFR5cGUoKV0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDdkNzBjMDRhMGNlLi5kNTk3NmM0NGVl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRl
cm5hbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzYsNiAr
MzYsNyBAQAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKICNpbXBvcnQgPFdlYkNvcmUvQWx0ZXJuYXRp
dmVUZXh0Q2xpZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50RW51bXMuaD4KQEAgLTg5LDcgKzkwLDE3
IEBAIGNsYXNzIFdlYlNlbGVjdGlvblNlcnZpY2VDb250cm9sbGVyOwogCiAjaWZkZWYgX19jcGx1
c3BsdXMKIAotV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMg
b3B0aW9ucyk7CisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKyNpZiBVU0UoQVBQS0lUKQordHlw
ZWRlZiBOU0RyYWdPcGVyYXRpb24gQ29jb2FEcmFnT3BlcmF0aW9uOworI2Vsc2UKK3R5cGVkZWYg
dWludDY0X3QgQ29jb2FEcmFnT3BlcmF0aW9uOworI2VuZGlmIC8vIFVTRShBUFBLSVQpCisKK09w
dGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soQ29j
b2FEcmFnT3BlcmF0aW9uKTsKKyNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQorCitXZWJD
b3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyk7CiAKIE9wdGlvblNl
dDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGNvcmVMYXlvdXRNaWxlc3RvbmVzKFdlYkxheW91
dE1pbGVzdG9uZXMpOwogV2ViTGF5b3V0TWlsZXN0b25lcyBraXRMYXlvdXRNaWxlc3RvbmVzKE9w
dGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKaW5kZXgg
MzEzMjYwMzZhOGEuLmIyNDlmZmQ4Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNDQsMTggKzQ0
LDE4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgRFdPUkQgZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhEcmFnT3BlcmF0aW9uIG9wKQorc3Rh
dGljIERXT1JEIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMoT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCiB7CiAgICAgRFdPUkQgcmVzdWx0ID0g
RFJPUEVGRkVDVF9OT05FOwotICAgIGlmIChvcCA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAg
aWYgKG9wZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4g
RFJPUEVGRkVDVF9DT1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJPUEVGRkVDVF9NT1ZFOyAKLSAg
ICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250
YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX0NP
UFk7IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25MaW5rKQorICAgIGlmIChvcGVyYXRpb25N
YXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAgcmVzdWx0IHw9IERST1BF
RkZFQ1RfTElOSzsgCi0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKG9w
ZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICByZXN1bHQg
fD0gRFJPUEVGRkVDVF9NT1ZFOwotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25HZW5lcmljKQor
ICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25HZW5lcmljKSkKICAg
ICAgICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfTU9WRTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpA
QCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVt
IGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIERXT1JEIG9rRWZmZWN0ID0gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhtX3dlYlZpZXctPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIo
KS5zb3VyY2VEcmFnT3BlcmF0aW9uKCkpOworICAgICAgICBEV09SRCBva0VmZmVjdCA9IGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMobV93ZWJWaWV3LT5wYWdlKCktPmRy
YWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7CiAgICAgICAgIERXT1JE
IGVmZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsKICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRl
PiB1aTsKICAgICAgICAgSFJFU1VMVCBociA9IEVfTk9USU1QTDsKQEAgLTE2NCwxNSArMTY0LDE1
IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFu
c2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYKICAgICAgICAgaWYgKGhyID09IEVfTk9USU1QTCkK
ICAgICAgICAgICAgIGhyID0gRG9EcmFnRHJvcChkYXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0
KCksIG9rRWZmZWN0LCAmZWZmZWN0KTsKIAotICAgICAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlv
biA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
b3BlcmF0aW9uTWFzazsKICAgICAgICAgaWYgKGhyID09IERSQUdEUk9QX1NfRFJPUCkgewogICAg
ICAgICAgICAgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfQ09QWSkKLSAgICAgICAgICAgICAgICBv
cGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25N
YXNrID0gRHJhZ09wZXJhdGlvbkNvcHk7CiAgICAgICAgICAgICBlbHNlIGlmIChlZmZlY3QgJiBE
Uk9QRUZGRUNUX0xJTkspCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlv
bkxpbms7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9uTWFzayA9IERyYWdPcGVyYXRpb25MaW5r
OwogICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9NT1ZFKQotICAgICAg
ICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICAgICAgICAg
IG9wZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uTW92ZTsKICAgICAgICAgfQotICAgICAgICBm
cmFtZS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQo
bV93ZWJWaWV3LCBmYWxzZSksIG9wZXJhdGlvbik7CisgICAgICAgIGZyYW1lLmV2ZW50SGFuZGxl
cigpLmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVyYXRlTW91c2VFdmVudChtX3dlYlZpZXcsIGZhbHNl
KSwgb3BlcmF0aW9uTWFzayk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAppbmRleCAzYmRlZTZiYmQ1Yi4uNTJmZGZhOGI1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCkBAIC01ODQyLDM4ICs1ODQyLDQyIEBAIEhSRVNVTFQgV2ViVmlldzo6dmlzaWJs
ZUNvbnRlbnRSZWN0KF9PdXRfIExQUkVDVCByZWN0KQogICAgIHJldHVybiBTX09LOwogfQogCi1z
dGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihEcmFnT3BlcmF0aW9uIG9wKSB7
Ci0gICAgRFdPUkQgcmVzID0gRFJPUEVGRkVDVF9OT05FOwotICAgIGlmIChvcCAmIERyYWdPcGVy
YXRpb25Db3B5KSAKLSAgICAgICAgcmVzID0gRFJPUEVGRkVDVF9DT1BZOwotICAgIGVsc2UgaWYg
KG9wICYgRHJhZ09wZXJhdGlvbkxpbmspIAotICAgICAgICByZXMgPSBEUk9QRUZGRUNUX0xJTks7
Ci0gICAgZWxzZSBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92ZSkgCi0gICAgICAgIHJlcyA9IERS
T1BFRkZFQ1RfTU9WRTsKLSAgICBlbHNlIGlmIChvcCAmIERyYWdPcGVyYXRpb25HZW5lcmljKSAK
LSAgICAgICAgcmVzID0gRFJPUEVGRkVDVF9NT1ZFOyAvL1RoaXMgYXBwZWFycyB0byBiZSB0aGUg
RmlyZWZveCBiZWhhdmlvdXIKLSAgICByZXR1cm4gcmVzOworc3RhdGljIERXT1JEIGRyYWdPcGVy
YXRpb25Ub0RyYWdDdXJzb3IoT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykK
K3sKKyAgICBpZiAoIW9wZXJhdGlvbk1hc2spCisgICAgICAgIHJldHVybiBEUk9QRUZGRUNUX05P
TkU7CisKKyAgICBEV09SRCByZXN1bHQgPSBEUk9QRUZGRUNUX05PTkU7CisgICAgaWYgKCpvcGVy
YXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZF
Q1RfQ09QWTsKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uTWFzayAmIERyYWdPcGVyYXRpb25MaW5r
KQorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX0xJTks7CisgICAgZWxzZSBpZiAoKm9wZXJh
dGlvbk1hc2sgJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0ID0gRFJPUEVGRkVD
VF9NT1ZFOworICAgIGVsc2UgaWYgKCpvcGVyYXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbkdlbmVy
aWMpCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1RfTU9WRTsgLy8gVGhpcyBhcHBlYXJzIHRv
IGJlIHRoZSBGaXJlZm94IGJlaGF2aW91ci4KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1EcmFn
T3BlcmF0aW9uIFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0
YXRlKSBjb25zdAorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IFdlYlZpZXc6OmtleVN0YXRlVG9E
cmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25zdAogewogICAgIGlmICghbV9wYWdl
KQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07
CiAKICAgICAvLyBDb25mb3JtcyB0byBNaWNyb3NvZnQncyBrZXkgY29tYmluYXRpb25zIGFzIGRv
Y3VtZW50ZWQgZm9yIAogICAgIC8vIElEcm9wVGFyZ2V0OjpEcmFnT3Zlci4gTm90ZSwgZ3JmS2V5
U3RhdGUgaXMgdGhlIGN1cnJlbnQgCiAgICAgLy8gc3RhdGUgb2YgdGhlIGtleWJvYXJkIG1vZGlm
aWVyIGtleXMgb24gdGhlIGtleWJvYXJkLiBTZWU6CiAgICAgLy8gPGh0dHA6Ly9tc2RuLm1pY3Jv
c29mdC5jb20vZW4tdXMvbGlicmFyeS9tczY4MDEyOShWUy44NSkuYXNweD4uCi0gICAgRHJhZ09w
ZXJhdGlvbiBvcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09w
ZXJhdGlvbigpOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpOwogCiAgICAgaWYgKChncmZLZXlTdGF0ZSAm
IChNS19DT05UUk9MIHwgTUtfU0hJRlQpKSA9PSAoTUtfQ09OVFJPTCB8IE1LX1NISUZUKSkKLSAg
ICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgIG9wZXJhdGlvbk1h
c2sgPSB7IERyYWdPcGVyYXRpb25MaW5rIH07CiAgICAgZWxzZSBpZiAoKGdyZktleVN0YXRlICYg
TUtfQ09OVFJPTCkgPT0gTUtfQ09OVFJPTCkKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJh
dGlvbkNvcHk7CisgICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdPcGVyYXRpb25Db3B5IH07
CiAgICAgZWxzZSBpZiAoKGdyZktleVN0YXRlICYgTUtfU0hJRlQpID09IE1LX1NISUZUKQotICAg
ICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKKyAgICAgICAgb3BlcmF0aW9u
TWFzayA9IHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfTsKIAotICAgIHJldHVybiBvcGVyYXRpb247
CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKIEhSRVNVTFQgV2ViVmlldzo6RHJhZ0Vu
dGVyKElEYXRhT2JqZWN0KiBwRGF0YU9iamVjdCwgRFdPUkQgZ3JmS2V5U3RhdGUsIFBPSU5UTCBw
dCwgRFdPUkQqIHBkd0VmZmVjdCkKQEAgLTU5MTksOCArNTkyMyw3IEBAIEhSRVNVTFQgV2ViVmll
dzo6RHJhZ0xlYXZlKCkKICAgICAgICAgbV9kcm9wVGFyZ2V0SGVscGVyLT5EcmFnTGVhdmUoKTsK
IAogICAgIGlmIChtX2RyYWdEYXRhKSB7Ci0gICAgICAgIERyYWdEYXRhIGRhdGEobV9kcmFnRGF0
YS5nZXQoKSwgSW50UG9pbnQoKSwgSW50UG9pbnQoKSwgCi0gICAgICAgICAgICBEcmFnT3BlcmF0
aW9uTm9uZSk7CisgICAgICAgIERyYWdEYXRhIGRhdGEobV9kcmFnRGF0YS5nZXQoKSwgSW50UG9p
bnQoKSwgSW50UG9pbnQoKSwgeyB9KTsKICAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdFeGl0ZWQoZGF0YSk7CiAgICAgICAgIG1fZHJhZ0RhdGEgPSAwOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCAxODA2Njk4YTlhZC4uN2IyMjEwNGQ5OGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAgLTU1NSw3ICs1NTUsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwZXJmb3JtTGF5ZXJlZFdpbmRvd1VwZGF0ZSgpOwogCi0gICAgV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbiBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29u
c3Q7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGtleVN0YXRlVG9EcmFn
T3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25zdDsKIAogICAgIC8vIEZJWE1FOiBUaGlz
IHZhcmlhYmxlIGlzIHBhcnQgb2YgYSB3b3JrYXJvdW5kLiBUaGUgZHJvcCBlZmZlY3QgKHBkd0Vm
ZmVjdCkgcGFzc2VkIHRvIERyb3AgaXMgaW5jb3JyZWN0LiAKICAgICAvLyBXZSBzZXQgdGhpcyB2
YXJpYWJsZSBpbiBEcmFnRW50ZXIgYW5kIERyYWdPdmVyIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQg
aW4gRHJvcCB0byBzZXQgdGhlIGNvcnJlY3QgZHJvcCBlZmZlY3QuIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400969</attachid>
            <date>2020-06-03 14:38:57 -0700</date>
            <delta_ts>2020-06-03 21:03:26 -0700</delta_ts>
            <desc>Patch v8</desc>
            <filename>bug-212605-v8.diff</filename>
            <type>text/plain</type>
            <size>123307</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMTUxN2UxNTVkMi4uMDdiMTUxZGE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRXZlbnRSZWdpb246OnRyYW5zbGF0ZSgpIG5lZWRzIHRvIG9mZnNl
dCB0aGUgd2hlZWwgZXZlbnQgcmVnaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApp
bmRleCA4NDYzYTQ4ZTk3NC4uNzMxMzA4YjU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC00ODgsMTggKzQ4OCwxOCBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudAogICAg
IHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
LCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3Bl
cmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0Fu
ZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+
c2V0U291cmNlT3BlcmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5z
ZXRTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFu
c2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBh
c3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQs
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8
RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigq
bmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkLCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6
IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3Bl
cmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVy
YXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmln
aW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsK
ICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQpAQCAtNTk1LDc0ICs1OTUsNzQgQEAgdm9pZCBE
cmFnSW1hZ2VMb2FkZXI6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3Qq
KQogICAgIG1fZGF0YVRyYW5zZmVyLT51cGRhdGVEcmFnSW1hZ2UoKTsKIH0KIAotc3RhdGljIERy
YWdPcGVyYXRpb24gZHJhZ09wRnJvbUlFT3AoY29uc3QgU3RyaW5nJiBvcGVyYXRpb24pCitzdGF0
aWMgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYg
b3BlcmF0aW9uKQogewogICAgIGlmIChvcGVyYXRpb24gPT0gInVuaW5pdGlhbGl6ZWQiKQotICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OworICAgICAgICByZXR1cm4gYW55RHJhZ09w
ZXJhdGlvbigpOwogICAgIGlmIChvcGVyYXRpb24gPT0gIm5vbmUiKQotICAgICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKG9wZXJhdGlv
biA9PSAiY29weSIpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAg
cmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHkgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJsaW5r
IikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICByZXR1cm4geyBE
cmFnT3BlcmF0aW9uTGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gIm1vdmUiKQotICAgICAg
ICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJh
dGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09w
ZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TGluayIpCi0gICAgICAg
IHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9u
TGluayk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9u
TGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHlNb3ZlIikKLSAgICAgICAgcmV0dXJu
IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uQ29weSB8IERyYWdPcGVyYXRpb25HZW5lcmlj
IHwgRHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29w
eSwgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9w
ZXJhdGlvbiA9PSAibGlua01vdmUiKQotICAgICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25MaW5rIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92
ZSk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJhbGwiKQot
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OwotICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uUHJpdmF0ZTsgLy8gcmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIKKyAgICAg
ICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSB9OyAvLyBSZWFsbHkgYSBtYXJrZXIgZm9yICJubyBjb252ZXJzaW9uIi4KIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
KQorc3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBvcGVyYXRpb25NYXNrKQogewotICAgIGJvb2wgaXNHZW5lcmljTW92ZSA9IG9wZXJhdGlv
biAmIChEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBib29s
IGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHsgRHJhZ09wZXJhdGlv
bkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pOwogCi0gICAgaWYgKChpc0dlbmVyaWNNb3Zl
ICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25MaW5rKSkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBp
ZiAoKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpIHx8IG9w
ZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gImFsbCI7
Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5
KSkKKyAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5TW92ZSI7Ci0gICAgaWYgKGlzR2Vu
ZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAoaXNH
ZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkK
ICAgICAgICAgcmV0dXJuICJsaW5rTW92ZSI7Ci0gICAgaWYgKChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAo
b3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0
aW9uTGluayB9KSkKICAgICAgICAgcmV0dXJuICJjb3B5TGluayI7CiAgICAgaWYgKGlzR2VuZXJp
Y01vdmUpCiAgICAgICAgIHJldHVybiAibW92ZSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25Db3B5KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5IjsKLSAgICBpZiAob3BlcmF0aW9uICYgRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJh
dGlvbkxpbmspKQogICAgICAgICByZXR1cm4gImxpbmsiOwogICAgIHJldHVybiAibm9uZSI7CiB9
CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb24oKSBjb25zdAor
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFz
aygpIGNvbnN0CiB7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVP
cChtX2VmZmVjdEFsbG93ZWQpOwotICAgIEFTU0VSVChvcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlv
blByaXZhdGUpOwotICAgIHJldHVybiBvcGVyYXRpb247CisgICAgYXV0byBvcGVyYXRpb25NYXNr
ID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsKKyAgICBBU1NFUlQob3BlcmF0aW9u
TWFzayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7
CiB9CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbigp
IGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlv
bk9wZXJhdGlvbk1hc2soKSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0g
ZHJhZ09wRnJvbUlFT3AobV9kcm9wRWZmZWN0KTsKLSAgICBBU1NFUlQob3BlcmF0aW9uID09IERy
YWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcGVy
YXRpb24gPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9u
KShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKSB8fCBvcGVyYXRpb24g
PT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8g
b3BlcmF0aW9uTWFzayA9IGRyYWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7CisgICAgQVNTRVJU
KG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0Vt
cHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25N
YXNrID09IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IERyYWdPcGVyYXRpb25HZW5lcmljLCBE
cmFnT3BlcmF0aW9uTW92ZSB9KSB8fCBvcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24o
KSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpz
ZXRTb3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFu
c2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3Bl
cmF0aW9uTWFzaykKIHsKLSAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbiwgb3BlcmF0aW9uICE9IERy
YWdPcGVyYXRpb25Qcml2YXRlKTsKLSAgICBtX2VmZmVjdEFsbG93ZWQgPSBJRU9wRnJvbURyYWdP
cChvcGVyYXRpb24pOworICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uTWFzaywgb3BlcmF0aW9uTWFz
ayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZy
b21EcmFnT3Aob3BlcmF0aW9uTWFzayk7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0
aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgRGF0YVRyYW5z
ZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiA9
PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwg
b3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0
aW9uR2VuZXJpYyB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9u
ID09IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25N
b3ZlKSk7Ci0gICAgbV9kcm9wRWZmZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAg
ICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlv
bkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFn
T3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8
IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uTWFzayA9PSBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJh
dGlvbk1vdmUgfSkpOworICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlv
bk1hc2spOwogfQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuaAppbmRleCBlNWNmYWY4NTZmYi4uMGU3NDgwYTFmOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTg4LDE1ICs4OCwxNSBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRm9yRHJhZygpOwogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFn
U3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVy
PiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRy
YWdnaW5nRmlsZXMpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9w
KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERh
dGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKIAogICAgIGJvb2wgZHJvcEVmZmVjdElzVW5pbml0aWFsaXpl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVmZmVjdCA9PSAidW5pbml0aWFsaXplZCI7IH0KIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uKCkgY29uc3Q7Ci0gICAgRHJhZ09wZXJh
dGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0U291cmNlT3Bl
cmF0aW9uKERyYWdPcGVyYXRpb24pOwotICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRpb24o
RHJhZ09wZXJhdGlvbik7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2soKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZGVzdGluYXRp
b25PcGVyYXRpb25NYXNrKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTb3VyY2VPcGVyYXRpb25NYXNr
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogICAgIHZvaWQgc2V0RHJhZ0hh
c1N0YXJ0ZWQoKSB7IG1fc2hvdWxkVXBkYXRlRHJhZ0ltYWdlID0gdHJ1ZTsgfQogICAgIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2NhdGlvbikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5kZXggYTkyM2NhZTU4Y2IuLmJmODNkNjNjZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC02MCwxOCArNjAsMjEgQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJh
Z1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCisvLyBTZWUgTlNE
cmFnT3BlcmF0aW9uLCBfVUlEcmFnT3BlcmF0aW9uIGFuZCBVSURyb3BPcGVyYXRpb24uCiB0eXBl
ZGVmIGVudW0gewotICAgIERyYWdPcGVyYXRpb25Ob25lICAgID0gMCwKICAgICBEcmFnT3BlcmF0
aW9uQ29weSAgICA9IDEsCiAgICAgRHJhZ09wZXJhdGlvbkxpbmsgICAgPSAyLAogICAgIERyYWdP
cGVyYXRpb25HZW5lcmljID0gNCwKICAgICBEcmFnT3BlcmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAg
RHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwKICAgICBEcmFnT3BlcmF0aW9uRGVsZXRlICA9IDMy
LAotICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlOVF9NQVgKIH0gRHJhZ09wZXJhdGlvbjsK
IAorY29uc3RleHByIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkK
K3sKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmssIERy
YWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1v
dmUsIERyYWdPcGVyYXRpb25EZWxldGUgfTsKK30KKwogZW51bSBjbGFzcyBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhhc05vbkRlZmF1bHRQYXN0
ZWJvYXJkRGF0YSA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIERyYWdIYW5kbGluZ01l
dGhvZCA6IHVpbnQ4X3QgeyBOb25lLCBFZGl0UGxhaW5UZXh0LCBFZGl0UmljaFRleHQsIFVwbG9h
ZEZpbGUsIFBhZ2VMb2FkLCBTZXRDb2xvciwgTm9uRGVmYXVsdCB9OwpAQCAtOTMsNiArOTYsMTgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2Q+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkNvcHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3Ry
dWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAg
ICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiwKQEAgLTEwMiw0ICsxMTcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgID47
CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IE9wdGlvblNldFZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblBy
aXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA0ZWUyZTJmYjM1OC4u
ZjJmNmRkMjk0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0y
MDgsNyArMjA4LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBjbGll
bnQoKS5kcmFnRW5kZWQoKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
IHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEpOwogfQpAQCAtMjI0
LDcgKzIyNCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRy
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBk
cmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBjbGVhckRy
YWdDYXJldCgpOwogCi0gICAgaWYgKG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpID09IERyYWdP
cGVyYXRpb25Ob25lKQorICAgIGlmICghb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gdXJsU3RyaW5nID0gZHJhZ0RhdGEuYXNVUkwo
KTsKQEAgLTMwNCwyMSArMzA0LDIxIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZWRJ
bnRvRG9jdW1lbnQoRG9jdW1lbnQqIG5ld0RvY3VtZW50KQogICAgIG1fZG9jdW1lbnRVbmRlck1v
dXNlID0gbmV3RG9jdW1lbnQ7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERy
YWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpKTsK
IAogICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2soKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmlz
RW1wdHkoKSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBGSVhNRTogV2h5IG5vdCBj
YWxsIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/Ci0gICAgICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgIG1fZHJhZ0hhbmRsaW5n
TWV0aG9kID0gdHJ5RG9jdW1lbnREcmFnKGRyYWdEYXRhLCBtX2RyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2ssIGRyYWdPcGVyYXRpb24pOwogICAgIGlmIChtX2RyYWdIYW5kbGluZ01ldGhvZCA9PSBE
cmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUgJiYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5j
b250YWlucyhEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpKSkgewogICAgICAgICBkcmFnT3Bl
cmF0aW9uID0gb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSk7Ci0gICAgICAgIGlmIChkcmFnT3Bl
cmF0aW9uICE9IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbikK
ICAgICAgICAgICAgIG1fZHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpQ
YWdlTG9hZDsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ0hhbmRsaW5nTWV0aG9kID09IERyYWdIYW5k
bGluZ01ldGhvZDo6U2V0Q29sb3IpCiAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0
aW9uQ29weTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbgogCiAj
ZW5kaWYKIAotRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERy
YWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIERyYWdPcGVyYXRpb24mIGRyYWdPcGVyYXRpb24p
CitEcmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIGRyYWdPcGVyYXRp
b24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSkKICAgICAgICAgcmV0dXJuIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBEcmFnSGFuZGxpbmdN
ZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEsIE9wdAogICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9
IDE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9udW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkKQotICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgICAg
ICAgICAgbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+c2V0Q2FuUmVjZWl2ZURyb3BwZWRG
aWxlcyhtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBvdmVyIGEgZmlsZSBpbnB1dCBlbGVtZW50LiBUaGUgZHJh
Z2dlZCBpdGVtKHMpIHdpbGwgbG9hZGVkIGludG8gdGhlIHZpZXcsCkBAIC00ODksNyArNDg5LDcg
QEAgRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiByb290VmkKICAgICByZXR1cm4gbV9kcmFnU291cmNlQWN0aW9u
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250
cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50
KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOwogCkBAIC01MDQsNyArNTA0LDcgQEAgRHJhZ09w
ZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50ICYmIChtX2RpZEluaXRpYXRlRHJh
ZyB8fCAoaXM8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVudCkgJiYgIXBsdWdpbkRvY3VtZW50QWNj
ZXB0c0RyYWdzKSB8fCBkb2N1bWVudC0+aGFzRWRpdGFibGVTdHlsZSgpKSkKLSAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHJldHVybiBkcmFnT3BlcmF0aW9uKGRyYWdEYXRhKTsKIH0KIApAQCAtNjkzLDI4ICs2OTMsMjgg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBkZWZh
dWx0T3BlcmF0aW9uRm9yRHJhZyhEcmFnT3BlcmF0aW9uIHNyY09wTWFzaykKK3N0YXRpYyBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaykKIHsKICAgICAvLyBUaGlzIGlzIGRlc2ln
bmVkIHRvIG1hdGNoIElFJ3Mgb3BlcmF0aW9uIGZhbGxiYWNrIGZvciB0aGUgY2FzZSB3aGVyZQog
ICAgIC8vIHRoZSBwYWdlIGNhbGxzIHByZXZlbnREZWZhdWx0KCkgaW4gYSBkcmFnIGV2ZW50IGJ1
dCBkb2Vzbid0IHNldCBkcm9wRWZmZWN0LgotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09wZXJh
dGlvbkV2ZXJ5KQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1h
c2sgPT0gRHJhZ09wZXJhdGlvbk5vbmUpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9u
ZTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkK
ICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwotICAgIGlmIChzcmNPcE1hc2sgJiBE
cmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAgIHJldHVybiBEcmFnQ29udHJvbGxlcjo6
cGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFn
T3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKLSAgICBp
ZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKHNvdXJjZU9wZXJhdGlv
bk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbkxpbms7CiAgICAgCiAgICAgLy8gRklYTUU6IERvZXMgSUUgcmVhbGx5IHJldHVybiAi
Z2VuZXJpYyIgZXZlbiBpZiBubyBvcGVyYXRpb25zIHdlcmUgYWxsb3dlZCBieSB0aGUgc291cmNl
PwogICAgIHJldHVybiBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKIH0KIAotYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlv
biYgb3BlcmF0aW9uKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIG9wZXJhdGlvbikKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudFVuZGVyTW91c2UpOwogICAgIFJlZjxGcmFtZT4gbWFpbkZy
YW1lKG1fcGFnZS5tYWluRnJhbWUoKSk7CkBAIC03MjIsMTcgKzcyMiwxOSBAQCBib29sIERyYWdD
b250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3Bl
cmF0aW9uJiBvcGVyYQogICAgIGlmICghdmlld1Byb3RlY3RvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24gPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKLSAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7IHJldHVybiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7IH0sIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ0RhdGEuY29udGFp
bnNGaWxlcygpKTsKKyAgICBhdXRvIHNvdXJjZU9wZXJhdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKKyAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7CisgICAgICAgIHJldHVybiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSk7CisgICAgfSwgc291cmNlT3BlcmF0aW9uTWFz
aywgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICBpZiAoIXRhcmdldFJlc3BvbnNlLmFj
Y2VwdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCF0YXJnZXRSZXNwb25zZS5v
cGVyYXRpb24pCi0gICAgICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNv
dXJjZU9wZXJhdGlvbik7Ci0gICAgZWxzZSBpZiAoIShzb3VyY2VPcGVyYXRpb24gJiB0YXJnZXRS
ZXNwb25zZS5vcGVyYXRpb24udmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVy
YXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlCi0gICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIGlmICghdGFyZ2V0UmVzcG9uc2Uub3BlcmF0
aW9uTWFzaykKKyAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc291
cmNlT3BlcmF0aW9uTWFzayk7CisgICAgZWxzZSBpZiAoIXNvdXJjZU9wZXJhdGlvbk1hc2suY29u
dGFpbnNBbnkodGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzay52YWx1ZSgpKSkgLy8gVGhlIGVs
ZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBz
b3VyY2UKKyAgICAgICAgb3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIGVsc2UKLSAgICAg
ICAgb3BlcmF0aW9uID0gdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uLnZhbHVlKCk7CisgICAgICAg
IG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHRhcmdldFJlc3BvbnNlLm9wZXJh
dGlvbk1hc2sudmFsdWUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk1Niw3ICs5NTgs
NyBAQCBPcHRpb25hbDxIaXRUZXN0UmVzdWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0VGVzdFJlc3Vs
dEZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLAogICAgIHJldHVybiB7IGhpdFRlc3RSZXN1bHQg
fTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0
IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVm
YXVsdFBhc3RlYm9hcmREYXRhIGhhc0RhdGEpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJh
Z0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9h
cmREYXRhIGhhc0RhdGEpCiB7CiAgICAgaWYgKCFzdGF0ZS5zb3VyY2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTk3Miw3ICs5NzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAg
IEludFBvaW50IG1vdXNlRHJhZ2dlZFBvaW50ID0gc3JjLnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7CiAKICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBVUkwo
KTsKLSAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKKyAgICBtX3NvdXJjZURyYWdP
cGVyYXRpb25NYXNrID0gc291cmNlT3BlcmF0aW9uTWFzazsKIAogICAgIERyYWdJbWFnZSBkcmFn
SW1hZ2U7CiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKQEAgLTk5NSw3ICs5OTcsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRl
JiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICAvLyBTZWxlY3Rpb24sIGltYWdlLCBhbmQg
bGluayBkcmFncyByZWNlaXZlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlv
bnMgdGhhdAogICAgICAgICAvLyBmb2xsb3dzIGZyb206CiAgICAgICAgIC8vIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0/cmV2PTQ4NTI2I0wzNDMwCi0gICAgICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHN0YXRp
Y19jYXN0PERyYWdPcGVyYXRpb24+KG1fc291cmNlRHJhZ09wZXJhdGlvbiB8IERyYWdPcGVyYXRp
b25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbkNvcHkpOworICAgICAgICBtX3NvdXJjZURyYWdPcGVy
YXRpb25NYXNrLmFkZCh7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uQ29weSB9
KTsKICAgICB9CiAKICAgICBBU1NFUlQoc3RhdGUuc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuaAppbmRleCA5MGY4NzVjMDY3YS4uZWE0OTllMGViZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTU5LDkgKzU5LDkgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIERyYWdPcGVyYXRpb24gcGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0
YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdFbnRl
cmVkKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRXhpdGVk
KGNvbnN0IERyYWdEYXRhJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFn
VXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPERy
YWdPcGVyYXRpb24+IGRyYWdVcGRhdGVkKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBwZXJmb3JtRHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwogCkBAIC03Miw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICAvLyBkcmFnIGxvZ2ljIGlzIGluIFdlYkNvcmUuCiAgICAgdm9pZCBzZXREaWRJ
bml0aWF0ZURyYWcoYm9vbCBpbml0aWF0ZWQpIHsgbV9kaWRJbml0aWF0ZURyYWcgPSBpbml0aWF0
ZWQ7IH0KICAgICBib29sIGRpZEluaXRpYXRlRHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlkSW5p
dGlhdGVEcmFnOyB9Ci0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VEcmFnT3BlcmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyB9CisgICAgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IHNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VEcmFnT3BlcmF0aW9uTWFzazsgfQogICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQogICAgIHZvaWQgc2V0RHJhZ09m
ZnNldChjb25zdCBJbnRQb2ludCYgb2Zmc2V0KSB7IG1fZHJhZ09mZnNldCA9IG9mZnNldDsgfQog
ICAgIGNvbnN0IEludFBvaW50JiBkcmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zm
c2V0OyB9CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29uc3QgVmVjdG9yPEludFNp
emU+JiBpbWFnZVNpemVzKTsKIAogICAgIHZvaWQgcHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYg
c291cmNlRnJhbWUsIERyYWdTb3VyY2VBY3Rpb24sIEVsZW1lbnQmIHNvdXJjZUVsZW1lbnQsIERh
dGFUcmFuc2ZlciYsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdDsKLSAgICBib29s
IHN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNy
Y09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQm
IGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CisgICAgYm9vbCBzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQm
IGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNv
bnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQg
TWF4T3JpZ2luYWxJbWFnZUFyZWE7CkBAIC0xMDgsMTEgKzEwOCwxMSBAQCBwcml2YXRlOgogICAg
IGJvb2wgZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7
CiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY29u
Y2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0YSYpOwotICAgIERyYWdPcGVyYXRpb24gZHJhZ0Vu
dGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJh
dGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmKTsKLSAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5
RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFj
dGlvbj4sIERyYWdPcGVyYXRpb24mKTsKLSAgICBib29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFn
RGF0YSYsIERyYWdPcGVyYXRpb24mKTsKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24o
Y29uc3QgRHJhZ0RhdGEmKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJl
ZE9yVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBEcmFnSGFuZGxpbmdNZXRo
b2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4sIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+Jik7CisgICAgYm9vbCB0cnlESFRN
TERyYWcoY29uc3QgRHJhZ0RhdGEmLCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiYpOworICAgIE9w
dGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAg
ICB2b2lkIGNsZWFyRHJhZ0NhcmV0KCk7CiAgICAgYm9vbCBkcmFnSXNNb3ZlKEZyYW1lU2VsZWN0
aW9uJiwgY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGlzQ29weUtleURvd24oY29uc3QgRHJh
Z0RhdGEmKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKICAgICBEcmFn
U291cmNlQWN0aW9uIG1fZHJhZ1NvdXJjZUFjdGlvbiB7IERyYWdTb3VyY2VBY3Rpb25Ob25lIH07
CiAgICAgYm9vbCBtX2RpZEluaXRpYXRlRHJhZyB7IGZhbHNlIH07Ci0gICAgRHJhZ09wZXJhdGlv
biBtX3NvdXJjZURyYWdPcGVyYXRpb24geyBEcmFnT3BlcmF0aW9uTm9uZSB9OyAvLyBTZXQgaW4g
c3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2Vi
S2l0CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG1fc291cmNlRHJhZ09wZXJhdGlvbk1h
c2s7IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBk
b3duIHdpdGhpbiBXZWJLaXQuCiAgICAgSW50UG9pbnQgbV9kcmFnT2Zmc2V0OwogICAgIFVSTCBt
X2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAgYm9vbCBtX2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGQ1NTc3ZWVmMTE0Li41YmQw
ZDA5ZjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjMzNCw3ICsy
MzM0LDcgQEAgc3RhdGljIGJvb2wgdGFyZ2V0SXNGcmFtZShOb2RlKiB0YXJnZXQsIEZyYW1lKiYg
ZnJhbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGNvbnZl
cnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPcGVy
YXRpb24pCitzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gY29udmVydERyb3Bab25lT3Bl
cmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ09wZXJhdGlvbikKIHsKICAg
ICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAiY29weSIpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uQ29weTsKQEAgLTIzNDIsMjEgKzIzNDIsMjQgQEAgc3RhdGljIERyYWdPcGVyYXRpb24gY29u
dmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ08K
ICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwogICAgIGlmIChkcmFnT3BlcmF0aW9u
ID09ICJsaW5rIikKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOwotICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0
aWMgU3RyaW5nIGNvbnZlcnREcmFnT3BlcmF0aW9uVG9Ecm9wWm9uZU9wZXJhdGlvbihEcmFnT3Bl
cmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBTdHJpbmcgY29udmVydERyYWdPcGVyYXRpb25Ub0Ry
b3Bab25lT3BlcmF0aW9uKE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbikKIHsKLSAg
ICBzd2l0Y2ggKG9wZXJhdGlvbikgewotICAgIGNhc2UgRHJhZ09wZXJhdGlvbkNvcHk6Ci0gICAg
ICAgIHJldHVybiAiY29weSJfczsKLSAgICBjYXNlIERyYWdPcGVyYXRpb25Nb3ZlOgotICAgICAg
ICByZXR1cm4gIm1vdmUiX3M7Ci0gICAgY2FzZSBEcmFnT3BlcmF0aW9uTGluazoKLSAgICAgICAg
cmV0dXJuICJsaW5rIl9zOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAiY29weSJfczsK
KyAgICBpZiAob3BlcmF0aW9uKSB7CisgICAgICAgIHN3aXRjaCAoKm9wZXJhdGlvbikgeworICAg
ICAgICBjYXNlIERyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICAgICAgcmV0dXJuICJjb3B5Il9z
OworICAgICAgICBjYXNlIERyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICAgICAgcmV0dXJuICJt
b3ZlIl9zOworICAgICAgICBjYXNlIERyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICAgICAgcmV0
dXJuICJsaW5rIl9zOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICB9CisgICAgcmV0dXJuICJjb3B5Il9zOwogfQogCiBzdGF0aWMgYm9vbCBoYXNE
cm9wWm9uZVR5cGUoRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFN0cmluZyYga2V5
d29yZCkKQEAgLTIzNzYsMTUgKzIzNzksMTUgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5v
ZGUmIHRhcmdldCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCiAgICAgZm9yICg7IGVsZW1l
bnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgU3BhY2VT
cGxpdFN0cmluZyBrZXl3b3JkcyhlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHdlYmtpdGRyb3B6b25lQXR0ciksIHRydWUpOwogICAgICAgICBib29sIG1hdGNoZWQgPSBm
YWxzZTsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlv
bk5vbmU7CisgICAgICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb247CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBrZXl3b3Jkcy5zaXplKCk7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgICAgIERyYWdPcGVyYXRpb24gb3AgPSBjb252ZXJ0RHJvcFpv
bmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29yZHNbaV0pOwotICAgICAgICAgICAgaWYg
KG9wICE9IERyYWdPcGVyYXRpb25Ob25lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRyYWdPcGVy
YXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUpCi0gICAgICAgICAgICAgICAgICAgIGRyYWdPcGVy
YXRpb24gPSBvcDsKKyAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uRnJvbUtleXdvcmQgPSBjb252
ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29yZHNbaV0pOworICAgICAg
ICAgICAgaWYgKG9wZXJhdGlvbkZyb21LZXl3b3JkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFk
cmFnT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3BlcmF0
aW9uRnJvbUtleXdvcmQ7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBtYXRj
aGVkID0gbWF0Y2hlZCB8fCBoYXNEcm9wWm9uZVR5cGUoZGF0YVRyYW5zZmVyLCBrZXl3b3Jkc1tp
XS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlZCAmJiBkcmFnT3BlcmF0aW9uICE9
IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICAgICAgaWYgKG1hdGNoZWQgJiYgZHJhZ09wZXJh
dGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobWF0
Y2hlZCkgewpAQCAtMjM5NiwxOSArMjM5OSwxOSBAQCBzdGF0aWMgYm9vbCBmaW5kRHJvcFpvbmUo
Tm9kZSYgdGFyZ2V0LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlcikKIH0KIAogRXZlbnRIYW5k
bGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9y
RHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdl
dCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCh0YXJnZXQuZG9jdW1lbnQoKSwgV1RGTW92
ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBhdXRv
IGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0
KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25N
YXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICBib29sIGFjY2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50
KGV2ZW50VHlwZSwgdGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyLmdldCgpKTsKICAgICBpZiAo
IWFjY2VwdCkKICAgICAgICAgYWNjZXB0ID0gZmluZERyb3Bab25lKHRhcmdldCwgZGF0YVRyYW5z
ZmVyKTsKICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICBp
ZiAoYWNjZXB0ICYmICFkYXRhVHJhbnNmZXItPmRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSkK
LSAgICAgICAgcmV0dXJuIHsgdHJ1ZSwgZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlv
bigpIH07CisgICAgICAgIHJldHVybiB7IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25P
cGVyYXRpb25NYXNrKCkgfTsKICAgICByZXR1cm4geyBhY2NlcHQsIFdURjo6bnVsbG9wdCB9Owog
fQogCi1FdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0
ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiBtYWtlUGFzdGVib2FyZCwg
RHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK0V2ZW50
SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERy
b3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1ha2VQYXN0ZWJvYXJkLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQog
ewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAgICAgaWYgKCFtX2Zy
YW1lLnZpZXcoKSkKQEAgLTI0MzgsMTkgKzI0NDEsMTkgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFy
Z2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU0KICAgICAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgICAgICBpZiAodGFyZ2V0SXNGcmFt
ZShuZXdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAgaWYgKHRhcmdl
dEZyYW1lKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFu
ZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3Bl
cmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdl
dEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3Rl
Ym9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9IGVs
c2UgaWYgKG5ld1RhcmdldCkgewogICAgICAgICAgICAgLy8gQXMgcGVyIHNlY3Rpb24gNy45LjQg
b2YgdGhlIEhUTUwgNSBzcGVjLiwgd2UgbXVzdCBhbHdheXMgZmlyZSBhIGRyYWcgZXZlbnQgYmVm
b3JlIGZpcmluZyBhIGRyYWdlbnRlciwgZHJhZ2xlYXZlLCBvciBkcmFnb3ZlciBldmVudC4KICAg
ICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5k
cmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50
ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCAqbmV3VGFyZ2V0
LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVz
KTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZl
bnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBh
c3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAodGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdl
dEZyYW1lKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJlY3Vyc2luZyBhZ2FpbiBoZXJlIGRv
ZXNuJ3QgbWFrZSBzZW5zZSBpZiB0aGUgbmV3VGFyZ2V0IGFuZCBtX2RyYWdUYXJnZXQgd2VyZSBp
biB0aGUgc2FtZSBmcmFtZS4KICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAg
ICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFn
QW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdG
aWxlcyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVy
YXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChtX2RyYWdUYXJn
ZXQpIHsKLSAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBtYWtlUGFz
dGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAg
YXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRh
cmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9w
ZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICAgICAgZGlzcGF0Y2hEcmFnRXZl
bnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0
YVRyYW5zZmVyLmdldCgpKTsKICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRG
b3JTZWN1cml0eSgpOwogICAgICAgICB9CkBAIC0yNDY0LDEyICsyNDY3LDEyIEBAIEV2ZW50SGFu
ZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZyYW1lKiB0YXJnZXRGcmFtZTsKICAgICAgICAgaWYg
KHRhcmdldElzRnJhbWUobmV3VGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAg
ICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9h
cmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVz
cG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZl
bnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsK
ICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJnZXQpIHsKICAgICAgICAgICAgIC8vIE5vdGUsIHdo
ZW4gZGVhbGluZyB3aXRoIHN1Yi1mcmFtZXMsIHdlIG1heSBuZWVkIHRvIGZpcmUgb25seSBhIGRy
YWdvdmVyIGV2ZW50IGFzIGEgZHJhZyBldmVudCBtYXkgaGF2ZSBiZWVuIGZpcmVkIGVhcmxpZXIu
CiAgICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25seUZpcmVEcmFnT3ZlckV2ZW50KQogICAgICAg
ICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5k
cmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50
ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdvdmVyRXZlbnQsICpuZXdUYXJnZXQs
IGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMp
OworICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVu
dChldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0
ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICAg
ICAgbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgPSBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KQEAgLTI0NzcsMjUgKzI0ODAsMjUgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9u
c2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU0KICAgICBy
ZXR1cm4gcmVzcG9uc2U7CiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJv
cChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBk
cmFnZ2luZ0ZpbGVzKQordm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYm
IHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZSht
X2ZyYW1lKTsKIAogICAgIEZyYW1lKiB0YXJnZXRGcmFtZTsKICAgICBpZiAodGFyZ2V0SXNGcmFt
ZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICBpZiAodGFyZ2V0
RnJhbWUpCi0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuY2FuY2VsRHJh
Z0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJh
Z2dpbmdGaWxlcyk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuY2Fu
Y2VsRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7CiAg
ICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5kcmFn
RXZlbnQsIGV2ZW50KTsKIAotICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwg
V1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAg
ICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5n
RHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCks
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICBkaXNwYXRjaERy
YWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsICptX2RyYWdUYXJnZXQsIGV2ZW50
LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlk
Rm9yU2VjdXJpdHkoKTsKICAgICB9CiAgICAgY2xlYXJEcmFnU3RhdGUoKTsKIH0KIAotYm9vbCBF
dmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3Bl
cmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorYm9vbCBFdmVudEhh
bmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewog
ICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKQEAgLTI1MDMsOSArMjUw
Niw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxCiAgICAgYm9vbCBwcmV2ZW50ZWREZWZhdWx0
ID0gZmFsc2U7CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJn
ZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgcHJldmVu
dGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJmb3JtRHJhZ0FuZERy
b3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdG
aWxlcyk7CisgICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gdGFyZ2V0RnJhbWUtPmV2ZW50
SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwg
c291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgfSBlbHNlIGlmIChtX2Ry
YWdUYXJnZXQpIHsKLSAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQp
LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChtX2RyYWdUYXJnZXQtPmRvY3VtZW50
KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmls
ZXMpOwogICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRO
YW1lcygpLmRyb3BFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlcik7CiAg
ICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIH0KQEAg
LTM3MjksMTMgKzM3MzIsMTMgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZygpCiAj
ZW5kaWYKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBNYXlFeHRl
bmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFnU2Vzc2lvbikKK3ZvaWQgRXZlbnRIYW5kbGVyOjpk
cmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIE1heUV4dGVuZERyYWdTZXNzaW9u
IG1heUV4dGVuZERyYWdTZXNzaW9uKQogewogICAgIC8vIFNlbmQgYSBoaXQgdGVzdCByZXF1ZXN0
IHNvIHRoYXQgUmVuZGVyTGF5ZXIgZ2V0cyBhIGNoYW5jZSB0byB1cGRhdGUgdGhlIDpob3ZlciBh
bmQgOmFjdGl2ZSBwc2V1ZG9jbGFzc2VzLgogICAgIHByZXBhcmVNb3VzZUV2ZW50KE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IHsgSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2Us
IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfSwgZXZlbnQp
OwogCiAgICAgaWYgKHNob3VsZERpc3BhdGNoRXZlbnRzVG9EcmFnU291cmNlRWxlbWVudCgpKSB7
Ci0gICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRp
b24ob3BlcmF0aW9uKTsKKyAgICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXREZXN0
aW5hdGlvbk9wZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spOwogICAgICAgICBkaXNwYXRj
aEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVu
dCk7CiAgICAgfQogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKQEAgLTM4NjUsNyArMzg2
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRo
ZSBoeXN0ZXJlc2lzIHBvaW50LCB3ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBh
cyBhIGNsaWNrCiAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiAgICAgCi0gICAgRHJhZ09wZXJhdGlv
biBzcmNPcCA9IERyYWdPcGVyYXRpb25Ob25lOyAgICAgIAorICAgIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrOwogICAgIAogICAgIC8vIFRoaXMgZG9lcyB3b3Jr
IG9ubHkgaWYgd2UgbWlzc2VkIGEgZHJhZ0VuZC4gRG8gaXQgYW55d2F5LCBqdXN0IHRvIG1ha2Ug
c3VyZSB0aGUgb2xkIGRhdGFUcmFuc2ZlciBnZXRzIG51bWJlZC4KICAgICAvLyBGSVhNRTogQ29u
c2lkZXIgZG9pbmcgdGhpcyBlYXJsaWVyIGluIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGVhcmxpZXN0
IHBvaW50IHdlJ3JlIHN1cmUgaXQgd291bGQgYmUgc2FmZSB0byBkcm9wIGFuIG9sZCBkcmFnLgpA
QCAtMzkwMCw3ICszOTAzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKIAogICAgICAgICBp
ZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgICAgIC8vIEdhdGhlciB2YWx1
ZXMgZnJvbSBESFRNTCBlbGVtZW50LCBpZiBpdCBzZXQgYW55LgotICAgICAgICAgICAgc3JjT3Ag
PSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbigpOworICAgICAgICAg
ICAgc291cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c291cmNl
T3BlcmF0aW9uTWFzaygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBZdWNrLCBhIGRy
YWdnZWRJbWFnZTptb3ZlVG86IG1lc3NhZ2UgY2FuIGJlIGZpcmVkIGFzIGEgcmVzdWx0IG9mIGtp
Y2tpbmcgb2ZmIHRoZQogICAgICAgICAgICAgLy8gZHJhZyB3aXRoIGRyYWdJbWFnZSEgQmVjYXVz
ZSBvZiB0aGF0IGR1bWIgcmVlbnRyYW5jeSwgd2UgbWF5IHRoaW5rIHdlJ3ZlIG5vdApAQCAtMzkx
MSw3ICszOTE0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAKICAgICBpZiAobV9t
b3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFn
ZSgpOwotICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgp
LCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0
YSk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxl
cigpLnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc291cmNlT3BlcmF0aW9uTWFzaywg
ZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uLCBoYXNOb25EZWZhdWx0
UGFzdGVib2FyZERhdGEpOwogICAgICAgICAvLyBJbiBXZWJLaXQyIHdlIGNvdWxkIHJlLWVudGVy
IHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhlciBkcmFnLgogICAgICAgICAvLyBPbiBPUyBYIHRo
aXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hpcCBvZiB0aGUgcGFzdGVib2FyZCBh
bmQgdGhlIHByb21pc2VkIHR5cGVzLgogICAgICAgICBpZiAobV9kaWRTdGFydERyYWcpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDZmZmM4M2MwMTJmLi4yN2NhZTYxZWQxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0xNjMsMTEgKzE2MywxMSBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdHJ1Y3QgRHJhZ1RhcmdldFJlc3Bv
bnNlIHsKICAgICAgICAgYm9vbCBhY2NlcHQgeyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiBvcGVyYXRpb247CisgICAgICAgIE9wdGlvbmFsPE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPj4gb3BlcmF0aW9uTWFzazsKICAgICB9OwotICAgIERyYWdUYXJnZXRSZXNwb25z
ZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHZvaWQgY2FuY2VsRHJh
Z0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgYm9vbCBw
ZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Cisg
ICAgRHJhZ1RhcmdldFJlc3BvbnNlIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
KCk+JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOworICAg
IHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBk
cmFnZ2luZ0ZpbGVzKTsKKyAgICBib29sIHBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgdXBkYXRlRHJhZ1N0
YXRlQWZ0ZXJFZGl0RHJhZ0lmTmVlZGVkKEVsZW1lbnQmIHJvb3RFZGl0YWJsZUVsZW1lbnQpOwog
ICAgIFJlZlB0cjxFbGVtZW50PiBkcmFnZ2VkRWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCkBAIC0y
NjgsNyArMjY4LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
U3RhcnREcmFnKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmLCBEcmFnT3BlcmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiA9IE1heUV4dGVu
ZERyYWdTZXNzaW9uOjpObyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5k
ZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4s
IE1heUV4dGVuZERyYWdTZXNzaW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBmb2N1c0RvY3VtZW50VmlldygpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHBy
aXZhdGU6CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgZGlzcGF0Y2hEcmFn
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIERhdGFUcmFuc2ZlciYpOwotICAgIERyYWdUYXJnZXRSZXNw
b25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5n
RmlsZXMpOworICAgIERyYWdUYXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092
ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgdm9pZCBp
bnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAKICAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDdkMDUyY2Zl
MThhLi5mODZlYTQzNTZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJh
Z0NvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250
cm9sbGVyR3RrLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6Omlz
Q29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIHJldHVybiBkcmFnRGF0
YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsKIH0KIAotRHJhZ09wZXJh
dGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlv
bihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMg
aXMgaW5jb21wbGV0ZQogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7
CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogY29uc3QgSW50U2l6ZSYgRHJhZ0NvbnRy
b2xsZXI6Om1heERyYWdJbWFnZVNpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFn
Q29udHJvbGxlck1hYy5tbQppbmRleCA4NWJkNDhhY2MyMi4uODk3MTRjZTU0NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC02NCwxMCArNjQs
MTAgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgcmV0dXJuIGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25J
c0NvcHlLZXlEb3duOwogfQogICAgIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0
aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7CiAgICAgaWYgKGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25Jc01vZGFs
KQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICBib29sIG1heUNvbnRhaW5VUkw7CiAgICAgaWYgKGNhbkxvYWREYXRh
RnJvbURyYWdnaW5nUGFzdGVib2FyZCgpKQpAQCAtNzYsMTIgKzc2LDEyIEBAIERyYWdPcGVyYXRp
b24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogICAgICAgICBtYXlDb250YWluVVJMID0gZHJhZ0RhdGEuY29udGFpbnNVUkxUeXBlSWRlbnRp
ZmllcigpOwogCiAgICAgaWYgKCFtYXlDb250YWluVVJMICYmICFkcmFnRGF0YS5jb250YWluc1By
b21pc2UoKSkKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCAoIShk
cmFnRGF0YS5mbGFncygpICYgKERyYWdBcHBsaWNhdGlvbkhhc0F0dGFjaGVkU2hlZXQgfCBEcmFn
QXBwbGljYXRpb25Jc1NvdXJjZSkpKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5
OwogCi0gICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiB9CiAKIGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhEcmFnSW1hZ2VTaXpl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAppbmRl
eCAyZDQ2ZDZiMjNlYS4uY2ZhNGFiOWUyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dp
bi9EcmFnQ29udHJvbGxlcldpbi5jcHAKQEAgLTQyLDEzICs0MiwxNSBAQCBjb25zdCBpbnQgRHJh
Z0NvbnRyb2xsZXI6OkRyYWdJY29uQm90dG9tSW5zZXQgPSAzOwogCiBjb25zdCBmbG9hdCBEcmFn
Q29udHJvbGxlcjo6RHJhZ0ltYWdlQWxwaGEgPSAwLjc1ZjsKIAotRHJhZ09wZXJhdGlvbiBEcmFn
Q29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgLy9GSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJl
aGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lCi0gICAgLy9pZiB3ZSBh
cmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cg
aXMgYW4gYXR0YWNoZWQgc2hlZXQKLSAgICAvL0lmIHRoaXMgY2FuIGJlIGRldGVybWluZWQgZnJv
bSB3aXRoaW4gV2ViQ29yZSBvcGVyYXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxsZWQgaW50byAKLSAg
ICAvL1dlYkNvcmUgaXRzZWxmCi0gICAgcmV0dXJuIGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYg
IW1fZGlkSW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAvLyBGSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91ciB3ZSBzaG91bGQg
cmV0dXJuIFdURjo6bnVsbG9wdC4KKyAgICAvLyBJZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdl
IGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQu
CisgICAgLy8gSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9w
ZXJhdGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvCisgICAgLy8gV2ViQ29yZSBpdHNlbGYu
CisgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQor
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIH0KIAogYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0
YSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKaW5kZXggOGY2NzU1ZjU3NjEuLmU4
YzQwZjU1OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1EcmFn
RGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291
cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpE
cmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBt
X2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtNDIsNyAr
NDIsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQbwogeyAgCiB9CiAKLURyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0
IFN0cmluZyYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24o
Y2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQog
ICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApp
bmRleCA0MjFhMjk5NDNiMy4uMzFiOGFiOWVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaApAQCAtNzUsMTMgKzc1LDEzIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5n
UHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9Owog
CiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRo
ZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUg
dG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25B
Y3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9
IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0g
YW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRh
KERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGlj
YXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlv
bk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKCkpOwogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBi
eSBXZWJLaXQyIElQQyBiZWNhdXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkg
dGhlIGRlY29kZXIgYW5kIG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9
IGRlZmF1bHQ7CiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRh
KGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYgZHJhZ0Rh
dGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBzaXplLCBT
dHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNp
emUsIHZvaWQqIGRhdGFCbG9iKTsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRp
b247IH0KICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbGljYXRpb25GbGFnczsgfQogICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YTsgfQotICAgIERyYWdPcGVyYXRpb24gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2s7IH0KKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2s7IH0KICAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSA9
IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBj
b25zdDsKICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoRHJhZ2dpbmdQdXJwb3Nl
ID0gRHJhZ2dpbmdQdXJwb3NlOjpGb3JFZGl0aW5nKSBjb25zdDsKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcml2YXRlOgogICAgIEludFBvaW50IG1fY2xpZW50UG9zaXRpb247CiAgICAgSW50UG9pbnQg
bV9nbG9iYWxQb3NpdGlvbjsKICAgICBEcmFnRGF0YVJlZiBtX3BsYXRmb3JtRHJhZ0RhdGE7Ci0g
ICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKKyAgICBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CiAgICAg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJp
bmc+IG1fZmlsZU5hbWVzOwogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1f
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9EcmFnRGF0YUNvY29hLm1tCmluZGV4IDljY2FmYzBjZDdhLi4zYTEyODlkNGJjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0x
MTYsNyArMTE2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3RlYm9hcmRUeXBlKCkK
ICNlbmRpZgogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3Mg
ZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9u
TWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZs
YWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFj
dGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwg
bV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0
YShkYXRhKQpAQCAtMTMxLDcgKzEzMSw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJl
ZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7CiB9
CiAKLURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0
aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBE
cmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQ
b3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBt
X3BsYXRmb3JtRHJhZ0RhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0
aWxpdGllcy5jcHAKaW5kZXggMGMwMTNjZjY3ZWUuLjA4YzJiZWE3YzZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcApAQCAtMTQ5LDQ5ICsxNDksNDkg
QEAgdW5zaWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pCiAg
ICAgcmV0dXJuIDEgPDwgKDggKyBidXR0b24gLSAxKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBnZGtE
cmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQorT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0Fj
dGlvbiBnZGtBY3Rpb24pCiB7Ci0gICAgLy8gV2UgaGF2ZSBubyBnb29kIHdheSB0byBkZXRlY3Qg
RHJhZ09wZXJhdGlvbkV2ZXJ5IG90aGVyIHRoYW4KKyAgICAvLyBXZSBoYXZlIG5vIGdvb2Qgd2F5
IHRvIGRldGVjdCBhbnlEcmFnT3BlcmF0aW9uKCkgb3RoZXIgdGhhbgogICAgIC8vIHRvIHVzZSBp
dCB3aGVuIGFsbCBhcHBsaWNhYmxlIGZsYWdzIGFyZSBvbi4KICAgICBpZiAoZ2RrQWN0aW9uICYg
R0RLX0FDVElPTl9DT1BZCiAgICAgICAgICYmIGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRQog
ICAgICAgICAmJiBnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0xJTkspCi0gICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uRXZlcnk7CisgICAgICAgIHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CiAK
LSAgICB1bnNpZ25lZCBhY3Rpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gYWN0aW9uOwogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0NP
UFkpCi0gICAgICAgIGFjdGlvbiB8PSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgYWN0aW9u
LmFkZChEcmFnT3BlcmF0aW9uQ29weSk7CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05f
TU9WRSkKLSAgICAgICAgYWN0aW9uIHw9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICBhY3Rp
b24uYWRkKERyYWdPcGVyYXRpb25Nb3ZlKTsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElP
Tl9MSU5LKQotICAgICAgICBhY3Rpb24gfD0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgIGFj
dGlvbi5hZGQoRHJhZ09wZXJhdGlvbkxpbmspOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERy
YWdPcGVyYXRpb24+KGFjdGlvbik7CisgICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotR2RrRHJhZ0Fj
dGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhEcmFnT3BlcmF0aW9uIGNvcmVBY3Rp
b24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBjb3JlQWN0aW9uKQogewogICAgIHVuc2lnbmVkIGdka0FjdGlvbiA9
IDA7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKGNv
cmVBY3Rpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0Fj
dGlvbj4oZ2RrQWN0aW9uKTsKIAotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkNv
cHkpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAg
ICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0aW9uICYg
RHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJh
dGlvbk1vdmUpKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlm
IChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29u
dGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElP
Tl9MSU5LOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlv
bik7CiB9CiAKLUdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlv
bihEcmFnT3BlcmF0aW9uIGNvcmVBY3Rpb24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25U
b1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24p
CiB7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5IHx8IGNvcmVBY3Rp
b24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAoY29yZUFjdGlvbiA9PSBhbnlEcmFnT3Bl
cmF0aW9uKCkgfHwgY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAg
ICAgIHJldHVybiBHREtfQUNUSU9OX0NPUFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3Bl
cmF0aW9uTW92ZSkKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92
ZSkpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24g
JiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3Bl
cmF0aW9uTGluaykpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX0xJTks7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1V0aWxpdGllcy5oCmluZGV4IDVhYWI0ZWI3OWEyLi4xOThiYzhlMjUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaApAQCAtNTEsOCArNTEs
OCBAQCBTdHJpbmcgZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKIAogV0VCQ09SRV9FWFBPUlQgdW5z
aWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pOwogCi1XRUJD
T1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2Rr
RHJhZ0FjdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25U
b0dka0RyYWdBY3Rpb25zKERyYWdPcGVyYXRpb24pOwotV0VCQ09SRV9FWFBPUlQgR2RrRHJhZ0Fj
dGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKERyYWdPcGVyYXRpb24pOwor
V0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0Ry
YWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9u
IGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7
CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0Ry
YWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXgg
ZWUwZDhiMjYwY2MuLjE4ODcwZjIyNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnRGF0YVdpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMiBCYWlkdSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC00MSw3ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERyYWdEYXRhOjpE
cmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlv
biBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKKyAgICBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0
aW9uRmxhZ3MgZmxhZ3MpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQog
ICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1E
cmFnRGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYzZlNWExZDVmMi4uZTIxZjNkODdkOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGZvciBtYXNr
IHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0lu
dGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OmNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAg
ICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVE
cmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFbmRl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rp
ZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6XSk6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbkZv
clVJRHJvcE9wZXJhdGlvbik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0RhdGFGb3JE
cm9wU2Vzc2lvbjpkcmFnRGVzdGluYXRpb25BY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgZHJhZ0ludGVyYWN0aW9uOndpbGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjpzZXNzaW9u
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uOmRp
ZEVuZFdpdGhPcGVyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVy
YWN0aW9uOnNlc3Npb25EaWRFbmQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRk
aXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24pOgorCiAyMDIwLTA2LTAyICBDaHJpc3RvcGhlciBS
ZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OW3IyNjA4NDRd
OiBbR1RLXVtXUEVdIEluc3BlY3RvciBHUmVzb3VyY2Ugbm8gbG9uZ2VyIHVwZGF0ZWQgYWZ0ZXIg
V2ViSW5zcGVjdG9yVUkgZmlsZSB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lv
cy9VSUtpdFNQSS5oCmluZGV4IDJkNDNiYWViZjhlLi5hYmVlMjU1NDdjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTEwMjUsMTIgKzEwMjUsNiBAQCBD
R0Zsb2F0IFVJUm91bmRUb1NjcmVlblNjYWxlKENHRmxvYXQgdmFsdWUsIFVJU2NyZWVuICopOwog
CiBXVEZfRVhURVJOX0NfRU5ECiAKLXR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBVSURy
YWdPcGVyYXRpb24pCi17Ci0gICAgVUlEcmFnT3BlcmF0aW9uTm9uZSA9IDAsCi0gICAgVUlEcmFn
T3BlcmF0aW9uRXZlcnkgPSBOU1VJbnRlZ2VyTWF4LAotfTsKLQogQGludGVyZmFjZSBVSURyYWdJ
bnRlcmFjdGlvbiAoKQogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwgZ2V0dGVyPV9saWZ0
RGVsYXksIHNldHRlcj1fc2V0TGlmdERlbGF5OikgTlNUaW1lSW50ZXJ2YWwgbGlmdERlbGF5Owog
LSAodm9pZClfc2V0QWxsb3dzUG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk6KEJPT0wpYWxsb3dz
UG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCAzZmRkODA0OWQ0OS4uM2RhYTMyY2IyNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA5LDYgKzIwOSw3IEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpE
aWN0YXRpb25Db250ZXh0JywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcicsCisgICAgICAg
ICdXZWJDb3JlOjpEcmFnT3BlcmF0aW9uJywgICMgRklYTUU6IFJlbW92ZSBhZnRlciBlbnVtIGNs
YXNzIERyYWdPcGVyYXRpb24uCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Okxp
YldlYlJUQ1NvY2tldElkZW50aWZpZXInLApAQCAtNTg4LDYgKzU4OSw3IEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50
aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0Nv
bnRleHQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCc6IFsnPFdl
YkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkRyYWdPcGVyYXRpb24n
OiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJzogWyc8V2ViQ29yZS9GaWxlQ2hvb3Nl
ci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCc6IFsnPFdl
YkNvcmUvU2hhcmVEYXRhLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaAppbmRleCBjODY4YzI3NzNmOC4uODk3
ODlmMzgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tE
cmFnQWN0aW9uc0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtNDAsNCArNDAsMjQgQEAgaW5saW5lIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrKFcKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgVVNFKEFQUEtJVCkKK2lu
bGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25N
YXNrKE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0
aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7
CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBO
U0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJp
dmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7
CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBO
U0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkRlbGV0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQ
S0lUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ0NDM4MTEyOWY5Li5jZThmMmY5OGQxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0xNTMxLDcgKzE1MzEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGVuY29k
ZXIgPDwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKTsKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRh
Lmdsb2JhbFBvc2l0aW9uKCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRyYWdEYXRhLmRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKKyAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFnRGF0
YS5mbGFncygpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRh
LnBhc3RlYm9hcmROYW1lKCk7CkBAIC0xNTUwLDggKzE1NTAsOCBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZ2xvYmFsUG9zaXRpb24pKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
azsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2spKQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2s7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2spKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBh
cHBsaWNhdGlvbkZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXQuaAppbmRleCA4YzNiMTBlMTA1MC4uYTAwNDUwMGIwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IG1fcG9zaXRpb247CiAgICAgdW5z
aWduZWQgbV9kYXRhUmVxdWVzdENvdW50IHsgMCB9OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0YTsKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
IG1fb3BlcmF0aW9uIHsgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBtX29wZXJhdGlvbjsKICNpZiBVU0UoR1RLNCkKICAg
ICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGMx
M2IyOWIzMWRjLi4xYzUxOTVmMjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTIxNywxMSArMjE3LDExIEBAIHZvaWQg
RHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlvbigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAg
YXV0byBvcGVyYXRpb24gPSBwYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChv
cGVyYXRpb24gPT0gbV9vcGVyYXRpb24pCisgICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29wZXJh
dGlvbikgfHwgKm9wZXJhdGlvbiA9PSAqbV9vcGVyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9uOwotICAgIGdka19kcmFnX3N0YXR1cyhtX2Ryb3Au
Z2V0KCksIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24obV9vcGVyYXRpb24pLCBH
REtfQ1VSUkVOVF9USU1FKTsKKyAgICBnZGtfZHJhZ19zdGF0dXMobV9kcm9wLmdldCgpLCBkcmFn
T3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9u
IDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgfSkpLCBHREtfQ1VSUkVOVF9USU1FKTsKIH0K
IAogdm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQoKQpAQCAtMjI5LDcgKzIyOSw3IEBA
IHZvaWQgRHJvcFRhcmdldDo6bGVhdmVUaW1lckZpcmVkKCkKICAgICBhdXRvKiBwYWdlID0gd2Vi
a2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fd2ViVmlldykpOwog
ICAgIEFTU0VSVChwYWdlKTsKIAotICAgIERyYWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRh
dGEudmFsdWUoKSwgKm1fcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQo
bV93ZWJWaWV3LCAqbV9wb3NpdGlvbiksIERyYWdPcGVyYXRpb25Ob25lKTsKKyAgICBEcmFnRGF0
YSBkcmFnRGF0YSgmbV9zZWxlY3Rpb25EYXRhLnZhbHVlKCksICptX3Bvc2l0aW9uLCBjb252ZXJ0
V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KG1fd2ViVmlldywgKm1fcG9zaXRpb24pLCB7IH0pOwog
ICAgIHBhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERy
YWdJbmZvcm1hdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azQuY3BwCmluZGV4IDUxY2EzZTdiODIxLi4zNjFlNGZhNWM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5j
cHAKQEAgLTYzLDcgKzYzLDcgQEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdl
YlZpZXcpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7
CiAKICAgICAgICAgZHJvcC5lbnRlcih7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRvSW50ZWdl
cih5KSB9KTsKLSAgICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rp
b24oZHJvcC5tX29wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBkcmFnT3BlcmF0aW9uVG9TaW5n
bGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVyYXRpb24gPyAqZHJvcC5tX29wZXJhdGlvbiA6IE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPih7IH0pKTsKICAgICB9KSwgdGhpcyk7CiAKICAgICBnX3Np
Z25hbF9jb25uZWN0KHRhcmdldCwgImRyYWctbW90aW9uIiwgR19DQUxMQkFDSygrW10oR3RrRHJv
cFRhcmdldEFzeW5jKiwgR2RrRHJvcCogZ2RrRHJvcCwgZG91YmxlIHgsIGRvdWJsZSB5LCBncG9p
bnRlciB1c2VyRGF0YSkgLT4gR2RrRHJhZ0FjdGlvbiB7CkBAIC03Miw3ICs3Miw3IEBAIERyb3BU
YXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KDApOwogCiAgICAgICAgIGRyb3AudXBkYXRlKHsg
Y2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0pOwotICAgICAgICByZXR1cm4g
ZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihkcm9wLm1fb3BlcmF0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29w
ZXJhdGlvbiA/ICpkcm9wLm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsg
fSkpOwogICAgIH0pLCB0aGlzKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3QodGFyZ2V0LCAiZHJh
Zy1sZWF2ZSIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdk
a0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSB7CkBAIC0yNzMsMTEgKzI3MywxMSBAQCB2b2lkIERy
b3BUYXJnZXQ6OmRpZFBlcmZvcm1BY3Rpb24oKQogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIGF1
dG8gb3BlcmF0aW9uID0gcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKTsKLSAgICBpZiAob3Bl
cmF0aW9uID09IG1fb3BlcmF0aW9uKQorICAgIGlmICgoIW9wZXJhdGlvbiAmJiAhbV9vcGVyYXRp
b24pIHx8IG9wZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9vcGVyYXRpb24gPSBvcGVyYXRpb247Ci0gICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQo
KSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRpb24pLCBkcmFnT3BlcmF0
aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKG1fb3BlcmF0aW9uKSk7CisgICAgZ2RrX2Ryb3Bfc3Rh
dHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRp
b24gPyAqbV9vcGVyYXRpb24gOiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbih7IH0pKSwgZHJhZ09w
ZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihtX29wZXJhdGlvbiA/ICptX29wZXJhdGlvbiA6
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IH0pKSk7CiB9CiAKIHZvaWQgRHJvcFRhcmdldDo6
bGVhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAppbmRleCA2NWU2OWMyYzU2ZS4uMGFlZTRiYzkzODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMjAs
OSArMzIwLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIFBh
Z2VDbGllbnRJbXBsOjpzdGFydERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbiwgRHJhZ09w
ZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFn
ZSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIFJlZlB0cjxT
aGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlU3Rh
cnREcmFnKFdFQktJVF9XRUJfVklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0
aW9uKSwgZHJhZ09wZXJhdGlvbiwgV1RGTW92ZShkcmFnSW1hZ2UpKTsKKyAgICB3ZWJraXRXZWJW
aWV3QmFzZVN0YXJ0RHJhZyhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBXVEZN
b3ZlKHNlbGVjdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5o
CmluZGV4IGVkMzllNzRkZGU4Li4yNzAwOTk4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBSZWZQ
dHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJl
Y3Q+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBzdGFy
dERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbigpIG92ZXJyaWRlOwog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZmU0ZTdhYzAzMWMuLmQ4OGYxYzAxZDQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcApAQCAtMjA1NCwxMyArMjA1NCwxMyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9v
bHRpcEFyZWEoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBJbnRSZQogfQog
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERy
YWcoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSwgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiYmIGltYWdlKQordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJW
aWV3QmFzZSogd2ViVmlld0Jhc2UsIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0g
d2ViVmlld0Jhc2UtPnByaXY7CiAgICAgaWYgKCFwcml2LT5kcmFnU291cmNlKQogICAgICAgICBw
cml2LT5kcmFnU291cmNlID0gbWFrZVVuaXF1ZTxEcmFnU291cmNlPihHVEtfV0lER0VUKHdlYlZp
ZXdCYXNlKSk7CiAKLSAgICBwcml2LT5kcmFnU291cmNlLT5iZWdpbihXVEZNb3ZlKHNlbGVjdGlv
bkRhdGEpLCBkcmFnT3BlcmF0aW9uLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgcHJpdi0+ZHJhZ1Nv
dXJjZS0+YmVnaW4oV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdU
Rk1vdmUoaW1hZ2UpKTsgLy8gRklYTUU/CiAKICNpZiAhVVNFKEdUSzQpCiAgICAgLy8gQSBkcmFn
IHN0YXJ0aW5nIHNob3VsZCBwcmV2ZW50IGEgZG91YmxlLWNsaWNrIGZyb20gaGFwcGVuaW5nLiBU
aGlzIG1pZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCAxYzRkZjEyN2VjNC4uZWI3Zjg2ZTA4
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtODIsNyArODIsNyBAQCB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdlYktpdFdlYlZpZXdCYXNlKik7CiB2b2lk
IHdlYmtpdFdlYlZpZXdCYXNlUGFnZUNsb3NlZChXZWJLaXRXZWJWaWV3QmFzZSopOwogCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2Vi
S2l0V2ViVmlld0Jhc2UqLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24sIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4mJik7Cit2b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFJlZlB0cjxXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcD4mJik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKFdlYktpdFdlYlZpZXdCYXNlKik7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyZTM5ZWE2
Y2ZlOC4uNjliNjJkZTI1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tCkBAIC0zOTEzLDcgKzM5MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFn
Z2VkSW1hZ2UoTlNJbWFnZSAqLCBDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3Bl
cgogICAgIHNlbmREcmFnRW5kVG9QYWdlKGVuZFBvaW50LCBvcGVyYXRpb24pOwogfQogCi12b2lk
IFdlYlZpZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdP
cGVyYXRpb24gb3BlcmF0aW9uKQordm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2Uo
Q0dQb2ludCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrKQogewog
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgTlNQb2ludCB3aW5k
b3dJbWFnZUxvYyA9IFtbbV92aWV3IHdpbmRvd10gY29udmVydFNjcmVlblRvQmFzZTpOU1BvaW50
RnJvbUNHUG9pbnQoZW5kUG9pbnQpXTsKQEAgLTM5MjMsNyArMzkyMyw3IEBAIHZvaWQgV2ViVmll
d0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlv
biBvcGVyYXRpb24pCiAgICAgLy8gUHJldmVudCBxdWV1ZWQgbW91c2VEcmFnZ2VkIGV2ZW50cyBm
cm9tIGNvbWluZyBhZnRlciB0aGUgZHJhZyBhbmQgZmFrZSBtb3VzZVVwIGV2ZW50LgogICAgIG1f
aWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50cyA9IHRydWU7CiAKLSAgICBtX3BhZ2UtPmRyYWdFbmRl
ZChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dNb3VzZUxvYyksIFdlYkNvcmU6OkludFBvaW50KFdl
YkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd01vdXNlTG9jLCBbbV92aWV3IHdpbmRvd10pKSwgb3Bl
cmF0aW9uKTsKKyAgICBtX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dN
b3VzZUxvYyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd01v
dXNlTG9jLCBbbV92aWV3IHdpbmRvd10pKSwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdPcGVy
YXRpb25NYXNrKSk7CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncyBh
cHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhOU1ZpZXcgKnZpZXcsIGlkIDxOU0RyYWdnaW5nSW5mbz4g
ZHJhZ2dpbmdJbmZvKQpAQCAtMzk0Nyw3ICszOTQ3LDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZp
ZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8p
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdn
aW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdM
b2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdE
ZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBhdXRv
IGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4o
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgYXV0byBkcmFn
T3BlcmF0aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uTWFzaywgYXBwbGljYXRp
b25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBk
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKIAogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJh
Z0luZm9ybWF0aW9uKCk7CkBAIC0zOTU2LDE4ICszOTU2LDQyIEBAIE5TRHJhZ09wZXJhdGlvbiBX
ZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJ
bmZvKQogICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OwogfQogCitzdGF0aWMgTlNEcmFn
T3BlcmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0
aW9uKQoreworICAgIGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09w
ZXJhdGlvbk5vbmU7CisKKyAgICBzd2l0Y2ggKCpkcmFnT3BlcmF0aW9uKSB7CisgICAgY2FzZSBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlv
bkNvcHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgcmV0
dXJuIE5TRHJhZ09wZXJhdGlvbkxpbms7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
R2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09w
ZXJhdGlvblByaXZhdGU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAg
ICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uRGVsZXRlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uRGVsZXRlOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOU0RyYWdPcGVy
YXRpb25Ob25lOworfQorCiBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nVXBk
YXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
TG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdl
YkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3
IHdpbmRvd10pKTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
Rm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1h
c2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0g
Y29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2spOwogICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyht
X3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2spOwogICAgIG1fcGFnZS0+ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5m
by5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CiAKICAgICBOU0ludGVnZXIgbnVtYmVyT2ZWYWxp
ZEl0ZW1zRm9yRHJvcCA9IG1fcGFnZS0+Y3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2Vw
dGVkKCk7CiAKLSAgICBpZiAobV9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpID09IFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Ob25lKQorICAgIGlmICghbV9wYWdlLT5jdXJyZW50RHJhZ09wZXJh
dGlvbigpKQogICAgICAgICBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVt
YmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsKIAogICAgIE5TRHJhZ2dpbmdGb3JtYXRpb24gZHJhZ2dp
bmdGb3JtYXRpb24gPSBOU0RyYWdnaW5nRm9ybWF0aW9uTm9uZTsKQEAgLTM5NzksMTQgKzQwMDMs
MTQgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQoaWQgPE5T
RHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgaWYgKGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z0Zvcm1hdGlvbiAhPSBkcmFnZ2luZ0Zvcm1hdGlvbikKICAgICAgICAgW2RyYWdnaW5nSW5mbyBz
ZXREcmFnZ2luZ0Zvcm1hdGlvbjpkcmFnZ2luZ0Zvcm1hdGlvbl07CiAKLSAgICByZXR1cm4gbV9w
YWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOworICAgIHJldHVybiBraXQobV9wYWdlLT5jdXJy
ZW50RHJhZ09wZXJhdGlvbigpKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0
ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xv
Y2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJD
b3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3
aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBj
bGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JE
cmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29y
ZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURy
YWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sp
LCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdn
aW5nSW5mbykpOwogICAgIG1fcGFnZS0+ZHJhZ0V4aXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJ
bmZvcm1hdGlvbigpOwogICAgIGRyYWdnaW5nSW5mby5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9w
ID0gbV9pbml0aWFsTnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsKQEAgLTQwMDIsNyArNDAyNiw3
IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5n
SW5mbz4gZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92
aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpu
aWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQo
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdl
YkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25G
bGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAg
ICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJh
Z2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5n
SW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJh
ZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOwogCiAgICAgTlNBcnJh
eSAqdHlwZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGFjNWQ5MGViNTM5Li4yZTY2NjI4YWI1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjUwLDcgKzI1MCw3IEBAIHB1Ymxp
YzoKICAgICAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogI2lmIFBMQVRGT1JNKEdUSykKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiYmIGRyYWdJbWFnZSkgPSAwOwogI2Vsc2UKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKGNv
bnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKSB7
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
MGZjOWI4ZTVjZDAuLmQ0M2M3OTMyNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTI0MjQsMTEgKzI0MjQsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJh
ZwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0
aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWdu
ZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50UmVjdCYgaW5zZXJ0aW9uUmVj
dCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdI
YW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVy
T2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3Qg
SW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkKIHsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2VzcywgZHJhZ09wZXJhdGlvbiA8PSBEcmFnT3BlcmF0aW9uRGVsZXRlKTsKLQotICAgIG1fY3Vy
cmVudERyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihkcmFnT3BlcmF0
aW9uKTsKKyAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gZHJhZ09wZXJhdGlvbjsKICAgICBt
X2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QgPSBkcmFnSGFuZGxpbmdNZXRob2Q7CiAgICAgbV9j
dXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dCA9IG1vdXNlSXNPdmVyRmlsZUlucHV0OwogICAgIG1f
Y3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkID0gbnVtYmVyT2ZJdGVtc1RvQmVB
Y2NlcHRlZDsKQEAgLTI0MzgsMjAgKzI0MzYsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJDb3IK
IH0KIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoU2Vs
ZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIGNvbnN0IFNoYXJlYWJs
ZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gZHJhZ0ltYWdlID0gIWRyYWdJbWFnZUhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkgOiBudWxscHRyOwotICAgIHBhZ2VDbGll
bnQoKS5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ09wZXJhdGlvbiksIFdURk1vdmUoZHJhZ0ltYWdlKSk7Cisg
ICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpLCBkcmFnT3Bl
cmF0aW9uTWFzaywgV1RGTW92ZShkcmFnSW1hZ2UpKTsKIAogICAgIGRpZFN0YXJ0RHJhZygpOwog
fQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90
IG9wZXJhdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykKIHsKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVy
YXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9z
aXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnT3BlcmF0aW9uTWFzaykpOwogICAgIHNldERyYWdD
YXJldFJlY3QoeyB9KTsKIH0KIApAQCAtMjQ4Miw3ICsyNDgwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEVuZERyYWdnaW5nKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0Q3VycmVudERy
YWdJbmZvcm1hdGlvbigpCiB7Ci0gICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25Ob25lOworICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBXVEY6Om51
bGxvcHQ7CiAgICAgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0
aG9kOjpOb25lOwogICAgIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgPSBmYWxzZTsKICAg
ICBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdiYTlmOGI1ZWMwLi43ZjY4NzBjODQ0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNTYsOCArMTE1Niw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdE
YXRhJiwgY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKTsKICAgICB2b2lkIGRpZFBl
cmZvcm1EcmFnT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIGRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJDb3JlOjpEcmFn
SGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJl
ck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlvblJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOwotICAgIHZv
aWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24p
OworICAgIHZvaWQgZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKE9wdGlvbmFsPFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+LCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91
c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOworICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOwogICAgIHZv
aWQgZGlkU3RhcnREcmFnKCk7CiAgICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7CiAgICAgdm9pZCBz
ZXREcmFnQ2FyZXRSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKQEAgLTExNjcsNyArMTE2
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBjb25zdCBT
aGFyZWRNZW1vcnk6OkhhbmRsZSYgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNpemUp
OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGEmJiwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZSk7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2UpOwogI2VuZGlmCiAjZW5kaWYKIApA
QCAtMTIyNiw3ICsxMjI2LDcgQEAgcHVibGljOgogICAgIHZvaWQgbGF1bmNoSW5pdGlhbFByb2Nl
c3NJZk5lY2Vzc2FyeSgpOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uIGN1cnJlbnREcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50RHJhZ09wZXJhdGlvbjsgfQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+IGN1cnJlbnREcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ09w
ZXJhdGlvbjsgfQogICAgIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBjdXJyZW50RHJhZ0hh
bmRsaW5nTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9k
OyB9CiAgICAgYm9vbCBjdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dCgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQ7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50RHJh
Z051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFn
TnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZDsgfQpAQCAtMjYwNyw3ICsyNjA3LDcgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIC8vIEN1cnJlbnQgZHJhZyBkZXN0aW5h
dGlvbiBkZXRhaWxzIGFyZSBkZWxpdmVyZWQgYXMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLAog
ICAgIC8vIHNvIHdlIHByZXNlcnZlIHRoZW0gdG8gYmUgdXNlZCB3aGVuIHRoZSBuZXh0IGRyYWdn
aW5nIGRlbGVnYXRlIGNhbGwgaXMgbWFkZS4KLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIG1f
Y3VycmVudERyYWdPcGVyYXRpb24geyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSB9OworICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IG1fY3VycmVudERyYWdPcGVyYXRpb247
CiAgICAgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIG1fY3VycmVudERyYWdIYW5kbGluZ01l
dGhvZCB7IFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSB9OwogICAgIGJvb2wgbV9j
dXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dCB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgbV9jdXJy
ZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMmQyM2U0YjY2MGIu
LmFkY2ExNWM0YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0zMTAsNyArMzEwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKIAogICAgICMgRHJhZyBhbmQgZHJvcCBtZXNzYWdlcwogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi0gICAgRGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdP
cGVyYXRpb24sIGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hh
bmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJP
Zkl0ZW1zVG9CZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNv
cmU6OkludFJlY3QgZWRpdGFibGVFbGVtZW50UmVjdCkKKyAgICBEaWRQZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlv
biwgZW51bTp1aW50OF90IFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdN
ZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNU
b0JlQWNjZXB0ZWQsIFdlYkNvcmU6OkludFJlY3QgaW5zZXJ0aW9uUmVjdCwgV2ViQ29yZTo6SW50
UmVjdCBlZGl0YWJsZUVsZW1lbnRSZWN0KQogICAgIERpZEVuZERyYWdnaW5nKCk7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTMxOCw3ICsz
MTgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFNldFByb21pc2VkRGF0YUZv
ckltYWdlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBpbWFnZUhhbmRsZSwgdWludDY0X3QgaW1hZ2VTaXplLCBTdHJpbmcgZmlsZW5hbWUsIFN0cmlu
ZyBleHRlbnNpb24sIFN0cmluZyB0aXRsZSwgU3RyaW5nIHVybCwgU3RyaW5nIHZpc2libGVVUkws
IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJj
aGl2ZVNpemUpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCi0gICAgU3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uRGF0YSwg
dWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBk
cmFnSW1hZ2UpCisgICAgU3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9u
RGF0YSwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNr
LCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSkKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDQzOWRiOTk3N2VlLi42
OTZiOTA4OGQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03Mjg1LDcgKzcyODUsNyBAQCAtICh2b2lk
KV9kaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0OihCT09MKXN0YXJ0ZWQKICAgICAgICAgaWYgKHN0
YXJ0ZWQpIHsKICAgICAgICAgICAgIC8vIEEgY2xpZW50IG9mIHRoZSBPYmplY3RpdmUgQyBTUEkg
b3IgVUlLaXQgbWlnaHQgaGF2ZSBwcmV2ZW50ZWQgdGhlIGRyYWcgZnJvbSBiZWdpbm5pbmcgZW50
aXJlbHkgaW4gdGhlIFVJIHByb2Nlc3MsIGluIHdoaWNoIGNhc2UKICAgICAgICAgICAgIC8vIHdl
IG5lZWQgdG8gYmFsYW5jZSB0aGUgYGRyYWdzdGFydGAgZXZlbnQgd2l0aCBhIGBkcmFnZW5kYC4K
LSAgICAgICAgICAgIF9wYWdlLT5kcmFnRW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlv
bkZvckRyYWdFbmQsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lKTsKKyAgICAgICAgICAgIF9w
YWdlLT5kcmFnRW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIHsg
fSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC03MzAzLDI0ICs3MzAzLDQyIEBAIC0gKHZvaWQp
Y29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vz
c2lvbj4pc2Vzc2lvbiBvCiAgICAgICAgICpvdXRHbG9iYWxQb2ludCA9IGxvY2F0aW9uSW5Db250
ZW50VmlldzsKIH0KIAotc3RhdGljIFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uRm9yV2Vi
Q29yZURyYWdPcGVyYXRpb24oV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCitzdGF0
aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihP
cHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCiB7Ci0gICAgaWYgKG9w
ZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKQotICAgICAgICByZXR1cm4gVUlE
cm9wT3BlcmF0aW9uTW92ZTsKLQotICAgIGlmIChvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uQ29weSkKLSAgICAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbkNvcHk7Ci0KKyAgICBp
ZiAob3BlcmF0aW9uKSB7CisgICAgICAgIGlmICgqb3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbk1vdmUpCisgICAgICAgICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uTW92ZTsKKyAg
ICAgICAgaWYgKCpvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAg
ICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Db3B5OworICAgIH0KICAgICByZXR1cm4gVUlE
cm9wT3BlcmF0aW9uQ2FuY2VsOwogfQogCitzdGF0aWMgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKFVJRHJvcE9wZXJh
dGlvbiBkcm9wT3BlcmF0aW9uKQoreworICAgIHN3aXRjaCAoZHJvcE9wZXJhdGlvbikgeworICAg
IGNhc2UgVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOgorICAgICAgICByZXR1cm4geyB9OworICAgIGNh
c2UgVUlEcm9wT3BlcmF0aW9uRm9yYmlkZGVuOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJh
Z09wZXJhdGlvblByaXZhdGU7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Db3B5OgorICAgICAg
ICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk7CisgICAgY2FzZSBVSURyb3BPcGVy
YXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmU7Cisg
ICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiB7IH07Cit9CisKIC0g
KFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNz
aW9uPilzZXNzaW9uIGRyYWdEZXN0aW5hdGlvbkFjdGlvbjooV0tEcmFnRGVzdGluYXRpb25BY3Rp
b24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uCiB7CiAgICAgQ0dQb2ludCBnbG9iYWw7CiAgICAgQ0dQ
b2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRy
b3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDom
Z2xvYmFsXTsKIAotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihzZXNzaW9uLmFsbG93c01vdmVP
cGVyYXRpb24gPyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgOiAoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkV2ZXJ5ICYgfldlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSk7CisgICAgYXV0byBk
cmFnT3BlcmF0aW9uTWFzayA9IFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24oKTsKKyAgICBpZiAo
IXNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbikKKyAgICAgICAgZHJhZ09wZXJhdGlvbk1hc2su
cmVtb3ZlKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKICAgICByZXR1cm4geyBzZXNzaW9u
LCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25O
b25lLCBXZWJLaXQ6OmNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRyYWdEZXN0aW5hdGlv
bkFjdGlvbikgfTsKIH0KIApAQCAtNzQyNCw3ICs3NDQyLDggQEAgLSAodm9pZClfZGlkUGVyZm9y
bURyYWdPcGVyYXRpb246KEJPT0wpaGFuZGxlZAogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtz
ZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpkcm9wU2Vzc2lv
biBvdXRDbGllbnRQb2ludDomY2xpZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogICAgIFtz
ZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsKLSAgICBfcGFnZS0+ZHJhZ0VuZGVk
KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9p
bnQoZ2xvYmFsKSwgX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpOworICAgIGF1dG8gY3Vy
cmVudERyYWdPcGVyYXRpb24gPSBfcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKTsKKyAgICBf
cGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgY3VycmVudERyYWdPcGVyYXRpb24gPyAqY3VycmVu
dERyYWdPcGVyYXRpb24gOiBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oeyB9KSk7
CiB9CiAKIC0gKHZvaWQpX2RpZENoYW5nZURyYWdDYXJldFJlY3Q6KENHUmVjdClwcmV2aW91c1Jl
Y3QgY3VycmVudFJlY3Q6KENHUmVjdClyZWN0CkBAIC04MDEzLDcgKzgwMzIsNyBAQCAtICh2b2lk
KWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiB3aWxsQW5p
bWF0ZUxpZnRXaXRoQW5pbQogICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJE
cmFnIHNlc3Npb24gZW5kZWQgYXQgc3RhcnQ6ICVwIiwgc2Vzc2lvbik7CiAgICAgICAgICAgICAv
LyBUaGUgbGlmdCB3YXMgY2FuY2VsZWQsIHNvIC1kcm9wSW50ZXJhY3Rpb246c2Vzc2lvbkRpZEVu
ZDogd2lsbCBuZXZlciBiZSBpbnZva2VkLiBUaGlzIGlzIHRoZSBsYXN0IGNoYW5jZSB0byBjbGVh
biB1cC4KICAgICAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lv
blN0YXRlXTsKLSAgICAgICAgICAgIHBhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZvckRyYWdFbmQs
IHBvc2l0aW9uRm9yRHJhZ0VuZCwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpOworICAgICAg
ICAgICAgcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFn
RW5kLCB7IH0pOwogICAgICAgICB9CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAg
IGVsc2UKQEAgLTgwNDgsNyArODA2Nyw3IEBAIC0gKHZvaWQpZHJhZ0ludGVyYWN0aW9uOihVSURy
YWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHNlc3Npb246KGlkIDxVSURyYWdTZXNzCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsK
LSAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9u
Rm9yRHJhZ0VuZCgpKSwgb3BlcmF0aW9uKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6
OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRp
b25Gb3JEcmFnRW5kKCkpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCgpKSwgY29yZURyYWdPcGVyYXRp
b25Gb3JVSURyb3BPcGVyYXRpb24ob3BlcmF0aW9uKSk7CiB9CiAKIC0gKFVJVGFyZ2V0ZWREcmFn
UHJldmlldyAqKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlv
biBwcmV2aWV3Rm9yQ2FuY2VsbGluZ0l0ZW06KFVJRHJhZ0l0ZW0gKilpdGVtIHdpdGhEZWZhdWx0
OihVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkZWZhdWx0UHJldmlldwpAQCAtODI2Nyw3ICs4Mjg2
LDcgQEAgLSAodm9pZClkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJh
Y3Rpb24gc2Vzc2lvbkRpZEVuZDooaWQgPFVJRHIKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBb
c2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lvbiBv
dXRDbGllbnRQb2ludDomY2xpZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogICAgIFtzZWxm
IGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsKLSAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Z2xvYmFsKSwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpOworICAgIF9wYWdlLT5kcmFnRW5k
ZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQ
b2ludChnbG9iYWwpLCB7IH0pOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRH
dGsuY3BwCmluZGV4IGVlZDdiOTk2ODU3Li43NGY0NmNjYmYxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRy
YWdDbGllbnRHdGsuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3Rh
cnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYp
CiAKICAgICBtX3BhZ2UtPndpbGxTdGFydERyYWcoKTsKIAotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTdGFydERyYWcoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5z
ZWxlY3Rpb25EYXRhKCksIGRhdGFUcmFuc2Zlci5zb3VyY2VPcGVyYXRpb24oKSwgaGFuZGxlKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0RHJhZyhkYXRh
VHJhbnNmZXIucGFzdGVib2FyZCgpLnNlbGVjdGlvbkRhdGEoKSwgZGF0YVRyYW5zZmVyLnNvdXJj
ZU9wZXJhdGlvbk1hc2soKSwgaGFuZGxlKSk7CiB9CiAKIH07IC8vIG5hbWVzcGFjZSBXZWJLaXQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDYw
YjBlYTc5NjJkLi5lNzc0YTJjYjgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM5NDQsMjIgKzM5NDQsMjIgQEAgTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBXZWJQYWdlOjpub3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmEKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCiAjaWYgUExBVEZPUk0oR1RLKQot
dm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24gYWN0aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
LCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgdWludDMyX3QgZmxhZ3MpCit2b2lkIFdl
YlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBh
Y3Rpb24sIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgdWludDMyX3QgZmxhZ3Mp
CiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KFdURjo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7
IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIERyYWdEYXRhIGRyYWdEYXRhKCZz
ZWxlY3Rpb25EYXRhLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19jYXN0
PERyYWdPcGVyYXRpb24+KGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIHN0YXRpY19jYXN0
PERyYWdBcHBsaWNhdGlvbkZsYWdzPihmbGFncykpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKCZz
ZWxlY3Rpb25EYXRhLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzaywgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdz
KSk7CiAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9u
OjpFbnRlcmVkOiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9u
ID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICAg
ICAgYXV0byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCku
ZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24s
IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxpbmdNZXRob2QoKSwgbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCksIHsgfSwgeyB9KSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6VXBkYXRlZDog
ewotICAgICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CisgICAgICAgIGF1dG8gcmVz
b2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVk
KGRyYWdEYXRhKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24ocmVzb2x2ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRy
YWdDb250cm9sbGVyKCkuZHJhZ0hhbmRsaW5nTWV0aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1dCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVt
YmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgpLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMzk3OCwyNCArMzk3OCwyNCBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludAogdm9p
ZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rp
b24gYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEsIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheSkKIHsKICAgICBpZiAo
IW1fcGFnZSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0
aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0
LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIERyYWdD
b250cm9sbGVyQWN0aW9uOjpFbnRlcmVkOiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2
ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRy
YWdEYXRhKTsKKyAgICAgICAgYXV0byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRy
YWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihyZXNvbHZl
ZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxpbmdNZXRo
b2QoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0KCksIG1f
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCksIG1fcGFn
ZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygp
LCBtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS5lZGl0YWJsZUVsZW1lbnRSZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIERy
YWdDb250cm9sbGVyQWN0aW9uOjpVcGRhdGVkOiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVz
b2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVk
KGRyYWdEYXRhKTsKKyAgICAgICAgYXV0byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihyZXNv
bHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxpbmdN
ZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0KCks
IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCksIG1f
cGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0UmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cygpLCBtX3BhZ2UtPmRyYWdDYXJldENvbnRyb2xsZXIoKS5lZGl0YWJsZUVsZW1lbnRSZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNl
IERyYWdDb250cm9sbGVyQWN0aW9uOjpFeGl0ZWQ6CiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdEYXRhKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5v
bmUsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKFdURjo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwg
eyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIERyYWdDb250
cm9sbGVyQWN0aW9uOjpQZXJmb3JtRHJhZ09wZXJhdGlvbjogewpAQCAtNDAyMiw3ICs0MDIyLDcg
QEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWIKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmRy
YWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9p
bnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKK3ZvaWQgV2ViUGFnZTo6ZHJh
Z0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2lu
dCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdP
cGVyYXRpb25NYXNrKQogewogICAgIEludFBvaW50IGFkanVzdGVkQ2xpZW50UG9zaXRpb24oY2xp
ZW50UG9zaXRpb24ueCgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS54
KCksIGNsaWVudFBvc2l0aW9uLnkoKSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zm
c2V0KCkueSgpKTsKICAgICBJbnRQb2ludCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uKGdsb2JhbFBv
c2l0aW9uLngoKSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueCgpLCBn
bG9iYWxQb3NpdGlvbi55KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgp
LnkoKSk7CkBAIC00MDMzLDcgKzQwMzMsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJD
b3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYgogICAg
ICAgICByZXR1cm47CiAgICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVyIGtleXMg
aGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFkLgogICAgIFBsYXRmb3Jt
TW91c2VFdmVudCBldmVudChhZGp1c3RlZENsaWVudFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBv
c2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCAwLCBXZWJDb3JlOjpOb1RhcCk7
Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRB
dChldmVudCwgKERyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFt
ZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBkcmFnT3BlcmF0aW9u
TWFzayk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEVuZERyYWdnaW5n
KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
YzJjNDhkMWM5MzYuLjY3OWNmZDFiNTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC04OTksNyArODk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
dG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpOwogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
dWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25E
YXRhJiYsIHVpbnQzMl90IGZsYWdzKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ss
IFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3QgZmxhZ3MpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiAhUExBVEZPUk0oR1RLKQpAQCAtOTA3LDcgKzkwNyw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2b2lk
IGRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50
UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CisgICAgdm9pZCBkcmFn
RW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOwogCiAg
ICAgdm9pZCB3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKTsKICAgICB2b2lk
IG1heVBlcmZvcm1VcGxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDUz
OGU2NTcyZTUwLi5hZTkyNzQ3NjM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMDksMTQgKzMwOSwxNCBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAgICAgIyBEcmFnIGFuZCBkcm9wLgogI2lmIFBMQVRG
T1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBQZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oZW51bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9u
LCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xv
YmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24sIHVpbnQzMl90IGZsYWdzKQorICAgIFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29udHJvbGxlckFj
dGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxl
Y3Rpb24sIHVpbnQzMl90IGZsYWdzKQogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKEdUSykgJiYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKICAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51bTp1
aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpEcmFn
RGF0YSBkcmFnRGF0YSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5k
Ym94RXh0ZW5zaW9uc0ZvclVwbG9hZCkKICNlbmRpZgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAgICAgRGlkU3RhcnREcmFnKCkKLSAgICBEcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xp
ZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBv
cGVyYXRpb24pCisgICAgRHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9u
LCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNrKQogICAgIERyYWdDYW5jZWxsZWQoKQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggMGU2NTY0OTZjODQuLjhiODdkYjM4YzIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtOTI0LDcg
KzkyNCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNz
aW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvCiAgICAgLy8gaXMgb3BhcXVlIHRvIHRo
ZSB3ZWIgcHJvY2Vzcywgd2hpY2ggb25seSBzZWVzIHRoYXQgdGhlIGN1cnJlbnQgZHJhZyBoYXMg
ZW5kZWQsIGFuZCB0aGF0IGEgbmV3IG9uZSBpcyBiZWdpbm5pbmcuCiAgICAgUGxhdGZvcm1Nb3Vz
ZUV2ZW50IGV2ZW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwg
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXApOwogICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnRW5kZWQoKTsKLSAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRy
YWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBEcmFnT3BlcmF0aW9uTm9uZSwgTWF5RXh0ZW5kRHJhZ1Nl
c3Npb246Olllcyk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5kcmFn
U291cmNlRW5kZWRBdChldmVudCwgeyB9LCBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6WWVzKTsKIAog
ICAgIGJvb2wgZGlkSGFuZGxlRHJhZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkudHJ5VG9CZWdpbkRyYWdBdFBvaW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbik7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRIYW5kbGVBZGRpdGlvbmFsRHJh
Z0l0ZW1zUmVxdWVzdChkaWRIYW5kbGVEcmFnKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggNDFkYjY0NzVlOGUuLjAyOTc5ODA0NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGZvciBt
YXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJG
cmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYWdTb3VyY2VFbmRlZEF0Om9wZXJhdGlv
bjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoa2l0KToK
KyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9j
YWw6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYWdnaW5nU2Vzc2lvbjpzb3VyY2VPcGVy
YXRpb25NYXNrRm9yRHJhZ2dpbmdDb250ZXh0Ol0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
dy5tbToKKyAgICAgICAgKGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAgICAgIC0gQWRkIGNv
bnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAgKC1bV2ViVmlldyBk
cmFnRGF0YUZvclNlc3Npb246Y2xpZW50Omdsb2JhbDpvcGVyYXRpb246XSk6CisgICAgICAgICgt
W1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5n
VXBkYXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0V4aXRlZDpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToKKyAgICAgICAgLSBNYWtlIHVz
ZSBvZiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soKSBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlld0ludGVybmFsLmg6CisgICAgICAgIChDb2NvYURyYWdPcGVyYXRp
b24pOgorICAgICAgICAtIEFkZCB0eXBlZGVmIHNvIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIG1h
eSBiZSBzaGFyZWQgYWNyb3NzCisgICAgICAgICAgcGxhdGZvcm1zLgorICAgICAgICAoY29yZURy
YWdPcGVyYXRpb25NYXNrKTogQWRkIGRlY2xhcmF0aW9uLgorICAgICAgICAoY29yZU9wdGlvbnMp
OgorICAgICAgICAtIFJlbW92ZSByZWR1bmRhbnQgcGFyYW1ldGVyIG5hbWUuCisKIDIwMjAtMDYt
MDIgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCBG
RUFUVVJFU19ERUZJTkVTIHJlbGF0ZWQgY2hhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZDRkZWE3YzM5YzguLmI5ZWVjZGM4ZGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk0Miw3ICs5
NDIsNyBAQCAtICh2b2lkKV9zZXRUeXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAq
KXN0eWxlIHdpdGhVbmRvQWN0aW9uOihXZWJDb3JlOgogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkgJiYgUExBVEZPUk0oTUFDKQotLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9p
bnQpd2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbgorLSAodm9p
ZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFn
T3BlcmF0aW9uKWRyYWdPcGVyYXRpb25NYXNrCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZy
YW1lKQogICAgICAgICByZXR1cm47CkBAIC05NTIsNyArOTUyLDcgQEAgLSAodm9pZClfZHJhZ1Nv
dXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9u
KW9wZXJhdGkKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJl
LCBidXQgdGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCiAgICAgV2ViQ29yZTo6UGxh
dGZvcm1Nb3VzZUV2ZW50IGV2ZW50KFdlYkNvcmU6OkludFBvaW50KHdpbmRvd0xvYyksIFdlYkNv
cmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd0xvYywgW3ZpZXctPnBsYXRm
b3JtV2lkZ2V0KCkgd2luZG93XSkpLAogICAgICAgICBXZWJDb3JlOjpMZWZ0QnV0dG9uLCBXZWJD
b3JlOjpQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgV2FsbFRpbWU6Om5vdygpLCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIFdlYkNvcmU6Ok5v
VGFwKTsKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNl
RW5kZWRBdChldmVudCwgKFdlYkNvcmU6OkRyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKKyAgICBf
cHJpdmF0ZS0+Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVu
dCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdPcGVyYXRpb25NYXNrKSk7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA1ZTRhODkwNWVjOC4u
ZTdjYTQ2MWQ5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIw
MDYsIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC00MjI5LDYgKzQyMjksMjggQEAgLSAodm9pZCl0b3VjaDooV2ViRXZlbnQg
KilldmVudAogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShN
QUMpCisKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQoreworICAgIGlmIChvcGVyYXRpb25NYXNrID09IFdl
YkNvcmU6OmFueURyYWdPcGVyYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlv
bkV2ZXJ5OworCisgICAgTlNEcmFnT3BlcmF0aW9uIHJlc3VsdCA9IE5TRHJhZ09wZXJhdGlvbk5v
bmU7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkNvcHkpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBpZiAo
b3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluaykpCisgICAg
ICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGlmIChvcGVyYXRpb25NYXNr
LmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKSkKKyAgICAgICAgcmVzdWx0
IHw9IE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFp
bnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUpKQorICAgICAgICByZXN1bHQgfD0gTlNE
cmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRp
b25Nb3ZlOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25EZWxldGUpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uRGVsZXRlOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0JFR0lOCiAtICh2b2lkKWRyYWdJbWFnZTooTlNJbWFnZSAqKWRyYWdJbWFnZQogICAgICAgICAg
ICAgICAgYXQ6KE5TUG9pbnQpYXQKQEAgLTQyODAsNyArNDMwMiw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIE5T
RHJhZ09wZXJhdGlvbk5vbmU7CiAKLSAgICByZXR1cm4gKE5TRHJhZ09wZXJhdGlvbilwYWdlLT5k
cmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4ga2l0KHBh
Z2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7CiB9CiAKIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCkBAIC00Mzg2LDcgKzQ0MDgsNyBA
QCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTZXNzaW9uOihOU0RyYWdnaW5nU2Vzc2lvbiAq
KXNlc3Npb24gc291cmNlT3BlcmF0aW9uTQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
IE5TRHJhZ09wZXJhdGlvbk5vbmU7CiAKLSAgICByZXR1cm4gKE5TRHJhZ09wZXJhdGlvbilwYWdl
LT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4ga2l0
KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7CiB9CiAK
IC0gKHZvaWQpZHJhZ2dpbmdTZXNzaW9uOihOU0RyYWdnaW5nU2Vzc2lvbiAqKXNlc3Npb24gZW5k
ZWRBdFBvaW50OihOU1BvaW50KXNjcmVlblBvaW50IG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9u
KW9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IGM1ZTlmMjVjNjFlLi4wOTc2NzdkOWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNTg5LDYgKzU4OSw5MiBAQCBzdGF0aWMgT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2soVwogICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
bjo6TG9hZCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKworI2lmICFVU0UoQVBQS0lUKQorLy8g
U2VlIDxVSUtpdC9VSURyYWdnaW5nX1ByaXZhdGUuaD4uCit0eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1VJRHJhZ09wZXJhdGlvbikgeworICAgIF9VSURyYWdPcGVyYXRpb25Ob25lID0g
MCwKKyAgICBfVUlEcmFnT3BlcmF0aW9uQ29weSA9IDEsCisgICAgX1VJRHJhZ09wZXJhdGlvbk1v
dmUgPSAxNiwKK307CisjZW5kaWYKKworT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQorewor
ICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiByZXN1bHQ7CisKKyNpZiBVU0Uo
QVBQS0lUKQorICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5KQorICAgICAg
ICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0
aW9uICYgTlNEcmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTGluayk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkdl
bmVyaWMpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMp
OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQorICAgICAgICBy
ZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBpZiAob3BlcmF0
aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTW92ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkRl
bGV0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKTsK
KyNlbHNlCisgICAgaWYgKG9wZXJhdGlvbiAmIF9VSURyYWdPcGVyYXRpb25Db3B5KQorICAgICAg
ICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBpZiAob3BlcmF0
aW9uICYgX1VJRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk1vdmUpOworI2VuZGlmIC8vIFVTRShBUFBLSVQpCisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisjaWYgVVNFKEFQUEtJVCkKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0
KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCit7CisgICAg
aWYgKCFkcmFnT3BlcmF0aW9uKQorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsK
KworICAgIHN3aXRjaCAoKmRyYWdPcGVyYXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICByZXR1cm4gTlNEcmFnT3Bl
cmF0aW9uTGluazsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljOgorICAg
ICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uR2VuZXJpYzsKKyAgICBjYXNlIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Qcml2YXRlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uUHJpdmF0
ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4g
TlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxl
dGU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25EZWxldGU7CisgICAgfQorCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7Cit9
CisjZWxzZQorc3RhdGljIF9VSURyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCit7CisgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQor
ICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7CisKKyAgICBzd2l0Y2ggKCpkcmFn
T3BlcmF0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weToKKyAgICAg
ICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkxpbms6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljOgorICAgICAgICByZXR1cm4gX1VJRHJh
Z09wZXJhdGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZToK
KyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworICAgIGNhc2UgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTW92ZTsK
KyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGU6CisgICAgICAgIHJldHVybiBf
VUlEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7Cit9CisjZW5kaWYgLy8gVVNFKEFQUEtJ
VCkKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCiBXZWJDb3JlOjpGaW5kT3B0aW9u
cyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKQpAQCAtMTkyMyw3ICsyMDA5LDcg
QEAgLSAoV2ViRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tG
b3JTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2kKIAogLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0Rh
dGFGb3JTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQp
Y2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoo
dWludDY0X3Qpb3BlcmF0aW9uCiB7Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KG9wZXJhdGlvbik7CisgICAgYXV0byBkcmFn
T3BlcmF0aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhvcGVyYXRpb24pOwogICAgIGF1
dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrKFtzZWxmIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JTZXNzaW9uOnNlc3Npb25dKTsK
ICAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50UG9z
aXRpb24pLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsUG9zaXRpb24pLCBkcmFnT3Bl
cmF0aW9uTWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFzayB9OwogfQpAQCAtMTkzMiwxNCArMjAxOCwxNCBAQCAtICh1aW50NjRfdClfZW50
ZXJlZERhdGFJbnRlcmFjdGlvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gY2xpZW50OihD
R1BvaW50KQogewogICAgIFdlYlRocmVhZExvY2soKTsKICAgICBhdXRvIGRyYWdEYXRhID0gW3Nl
bGYgZHJhZ0RhdGFGb3JTZXNzaW9uOnNlc3Npb24gY2xpZW50OmNsaWVudFBvc2l0aW9uIGdsb2Jh
bDpnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246b3BlcmF0aW9uXTsKLSAgICByZXR1cm4gX3ByaXZh
dGUtPnBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgIHJl
dHVybiBraXQoX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJh
Z0RhdGEpKTsKIH0KIAogLSAodWludDY0X3QpX3VwZGF0ZWREYXRhSW50ZXJhY3Rpb246KGlkIDxV
SURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9i
YWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24K
IHsKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAgICAgYXV0byBkcmFnRGF0YSA9IFtzZWxmIGRyYWdE
YXRhRm9yU2Vzc2lvbjpzZXNzaW9uIGNsaWVudDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFs
UG9zaXRpb24gb3BlcmF0aW9uOm9wZXJhdGlvbl07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAgICByZXR1cm4ga2l0
KF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKSk7
CiB9CiAKIC0gKHZvaWQpX2V4aXRlZERhdGFJbnRlcmFjdGlvbjooaWQgPFVJRHJvcFNlc3Npb24+
KXNlc3Npb24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludCln
bG9iYWxQb3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgpAQCAtNjc0OCw4ICs2
ODM0LDggQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nRW50ZXJlZDooaWQgPE5TRHJhZ2dp
bmdJbmZvPilkcmFnZ2luZ0luZm8KICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
KFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtz
ZWxmIHdpbmRvd10pKTsKIAotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5n
SW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxp
Y2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5m
bzpkcmFnZ2luZ0luZm9dKTsKLSAgICByZXR1cm4gY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEo
ZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9u
RmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFn
Z2luZ0luZm9dKTsKKyAgICByZXR1cm4ga2l0KGNvcmUoc2VsZiktPmRyYWdDb250cm9sbGVyKCku
ZHJhZ0VudGVyZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5n
VXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAgLTY3NjEsOCArNjg0
Nyw4IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1VwZGF0ZWQ6KGlkIDxOU0RyYWdnaW5n
SW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2lu
Z0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChX
ZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2Vs
ZiB3aW5kb3ddKSk7CiAKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0lu
Zm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihb
ZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNh
dGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86
ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgcmV0dXJuIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1Vw
ZGF0ZWQoZHJhZ0RhdGEpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5n
SW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZv
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRy
YWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZv
XSk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRy
YWdEYXRhKSk7CiB9CiAKIC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5m
bz4pZHJhZ2dpbmdJbmZvCkBAIC02NzczLDcgKzY4NTksNyBAQCAtICh2b2lkKWRyYWdnaW5nRXhp
dGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogCiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNv
cmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEg
ZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBXZWJDb3Jl
OjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJh
Z09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2td
KSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKICAgICBwYWdlLT5kcmFn
Q29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwogfQogCkBAIC02Nzg2LDcgKzY4NzIs
NyBAQCAtIChCT09MKXBlcmZvcm1EcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRy
YWdnaW5nSW5mbwogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZv
IGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29y
ZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2lu
ZG93XSkpOwotICAgIGF1dG8qIGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdn
aW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFw
cGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CisgICAgYXV0byogZHJhZ0RhdGEgPSBuZXcg
V2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdP
cGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSks
IFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAKICAgICBOU0FycmF5KiB0
eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgaWYgKCFb
dHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQXJjaGl2ZVBib2FyZFR5cGVdICYmIFt0eXBlcyBjb250
YWluc09iamVjdDpXZWJDb3JlOjpsZWdhY3lGaWxlc1Byb21pc2VQYXN0ZWJvYXJkVHlwZSgpXSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKaW5kZXggN2Q3MGMwNGEwY2UuLmQ1OTc2YzQ0ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEg
Uy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNiw2ICszNiw3IEBACiAjaWZkZWYgX19jcGx1c3Bs
dXMKIAogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxNZWRp
YUVsZW1lbnRFbnVtcy5oPgpAQCAtODksNyArOTAsMTcgQEAgY2xhc3MgV2ViU2VsZWN0aW9uU2Vy
dmljZUNvbnRyb2xsZXI7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogCi1XZWJDb3JlOjpGaW5kT3B0
aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsKKyNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQorI2lmIFVTRShBUFBLSVQpCit0eXBlZGVmIE5TRHJhZ09wZXJhdGlvbiBDb2Nv
YURyYWdPcGVyYXRpb247CisjZWxzZQordHlwZWRlZiB1aW50NjRfdCBDb2NvYURyYWdPcGVyYXRp
b247CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24pOworI2VuZGlm
IC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKK1dlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRp
b25zKFdlYkZpbmRPcHRpb25zKTsKIAogT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZT4gY29yZUxheW91dE1pbGVzdG9uZXMoV2ViTGF5b3V0TWlsZXN0b25lcyk7CiBXZWJMYXlvdXRN
aWxlc3RvbmVzIGtpdExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCAzMTMyNjAzNmE4YS4uYjI0OWZmZDg3OTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRy
YWdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuY3BwCkBAIC00NCwxOCArNDQsMTggQEAKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLXN0YXRpYyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0Ry
YWdDdXJzb3JzKERyYWdPcGVyYXRpb24gb3ApCitzdGF0aWMgRFdPUkQgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0
aW9uTWFzaykKIHsKICAgICBEV09SRCByZXN1bHQgPSBEUk9QRUZGRUNUX05PTkU7Ci0gICAgaWYg
KG9wID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBpZiAob3BlcmF0aW9uTWFzayA9PSBhbnlE
cmFnT3BlcmF0aW9uKCkpCiAgICAgICAgIHJldHVybiBEUk9QRUZGRUNUX0NPUFkgfCBEUk9QRUZG
RUNUX0xJTksgfCBEUk9QRUZGRUNUX01PVkU7IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25D
b3B5KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkK
ICAgICAgICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfQ09QWTsgCi0gICAgaWYgKG9wICYgRHJhZ09w
ZXJhdGlvbkxpbmspCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlv
bkxpbmspKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9MSU5LOyAKLSAgICBpZiAob3Ag
JiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFn
T3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX01PVkU7Ci0gICAg
aWYgKG9wICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29u
dGFpbnMoRHJhZ09wZXJhdGlvbkdlbmVyaWMpKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVD
VF9NT1ZFOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBX
ZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRh
VHJhbnNmZXIsIEZyYW1lJgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgRFdP
UkQgb2tFZmZlY3QgPSBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKG1f
d2ViVmlldy0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKSk7
CisgICAgICAgIERXT1JEIG9rRWZmZWN0ID0gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9E
cmFnQ3Vyc29ycyhtX3dlYlZpZXctPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFn
T3BlcmF0aW9uTWFzaygpKTsKICAgICAgICAgRFdPUkQgZWZmZWN0ID0gRFJPUEVGRkVDVF9OT05F
OwogICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+IHVpOwogICAgICAgICBIUkVTVUxUIGhy
ID0gRV9OT1RJTVBMOwpAQCAtMTY0LDE1ICsxNjQsMTUgQEAgdm9pZCBXZWJEcmFnQ2xpZW50Ojpz
dGFydERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1l
JgogICAgICAgICBpZiAoaHIgPT0gRV9OT1RJTVBMKQogICAgICAgICAgICAgaHIgPSBEb0RyYWdE
cm9wKGRhdGFPYmplY3QuZ2V0KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOwog
Ci0gICAgICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7Cisg
ICAgICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrOwogICAgICAgICBp
ZiAoaHIgPT0gRFJBR0RST1BfU19EUk9QKSB7CiAgICAgICAgICAgICBpZiAoZWZmZWN0ICYgRFJP
UEVGRkVDVF9DT1BZKQotICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25D
b3B5OworICAgICAgICAgICAgICAgIG9wZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uQ29weTsK
ICAgICAgICAgICAgIGVsc2UgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTElOSykKLSAgICAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgICAgICAgICBv
cGVyYXRpb25NYXNrID0gRHJhZ09wZXJhdGlvbkxpbms7CiAgICAgICAgICAgICBlbHNlIGlmIChl
ZmZlY3QgJiBEUk9QRUZGRUNUX01PVkUpCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJh
Z09wZXJhdGlvbk1vdmU7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9uTWFzayA9IERyYWdPcGVy
YXRpb25Nb3ZlOwogICAgICAgICB9Ci0gICAgICAgIGZyYW1lLmV2ZW50SGFuZGxlcigpLmRyYWdT
b3VyY2VFbmRlZEF0KGdlbmVyYXRlTW91c2VFdmVudChtX3dlYlZpZXcsIGZhbHNlKSwgb3BlcmF0
aW9uKTsKKyAgICAgICAgZnJhbWUuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZ2Vu
ZXJhdGVNb3VzZUV2ZW50KG1fd2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb25NYXNrKTsKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDNiZGVlNmJiZDViLi41MmZk
ZmE4YjUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTU4NDIsMzggKzU4
NDIsNDIgQEAgSFJFU1VMVCBXZWJWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QoX091dF8gTFBSRUNU
IHJlY3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXN0YXRpYyBEV09SRCBkcmFnT3BlcmF0aW9u
VG9EcmFnQ3Vyc29yKERyYWdPcGVyYXRpb24gb3ApIHsKLSAgICBEV09SRCByZXMgPSBEUk9QRUZG
RUNUX05PTkU7Ci0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkNvcHkpIAotICAgICAgICByZXMg
PSBEUk9QRUZGRUNUX0NPUFk7Ci0gICAgZWxzZSBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTGluaykg
Ci0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfTElOSzsKLSAgICBlbHNlIGlmIChvcCAmIERyYWdP
cGVyYXRpb25Nb3ZlKSAKLSAgICAgICAgcmVzID0gRFJPUEVGRkVDVF9NT1ZFOwotICAgIGVsc2Ug
aWYgKG9wICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpIAotICAgICAgICByZXMgPSBEUk9QRUZGRUNU
X01PVkU7IC8vVGhpcyBhcHBlYXJzIHRvIGJlIHRoZSBGaXJlZm94IGJlaGF2aW91cgotICAgIHJl
dHVybiByZXM7CitzdGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQoreworICAgIGlmICghb3BlcmF0aW9uTWFz
aykKKyAgICAgICAgcmV0dXJuIERST1BFRkZFQ1RfTk9ORTsKKworICAgIERXT1JEIHJlc3VsdCA9
IERST1BFRkZFQ1RfTk9ORTsKKyAgICBpZiAoKm9wZXJhdGlvbk1hc2sgJiBEcmFnT3BlcmF0aW9u
Q29weSkKKyAgICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9DT1BZOworICAgIGVsc2UgaWYgKCpv
cGVyYXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdCA9IERST1BF
RkZFQ1RfTElOSzsKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uTWFzayAmIERyYWdPcGVyYXRpb25N
b3ZlKQorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX01PVkU7CisgICAgZWxzZSBpZiAoKm9w
ZXJhdGlvbk1hc2sgJiBEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0ID0gRFJP
UEVGRkVDVF9NT1ZFOyAvLyBUaGlzIGFwcGVhcnMgdG8gYmUgdGhlIEZpcmVmb3ggYmVoYXZpb3Vy
LgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLURyYWdPcGVyYXRpb24gV2ViVmlldzo6a2V5U3Rh
dGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0CitPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5
U3RhdGUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJldHVybiBEcmFnT3Bl
cmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIC8vIENvbmZvcm1zIHRvIE1p
Y3Jvc29mdCdzIGtleSBjb21iaW5hdGlvbnMgYXMgZG9jdW1lbnRlZCBmb3IgCiAgICAgLy8gSURy
b3BUYXJnZXQ6OkRyYWdPdmVyLiBOb3RlLCBncmZLZXlTdGF0ZSBpcyB0aGUgY3VycmVudCAKICAg
ICAvLyBzdGF0ZSBvZiB0aGUga2V5Ym9hcmQgbW9kaWZpZXIga2V5cyBvbiB0aGUga2V5Ym9hcmQu
IFNlZToKICAgICAvLyA8aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21z
NjgwMTI5KFZTLjg1KS5hc3B4Pi4KLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uKCk7CisgICAgYXV0byBvcGVy
YXRpb25NYXNrID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb25N
YXNrKCk7CiAKICAgICBpZiAoKGdyZktleVN0YXRlICYgKE1LX0NPTlRST0wgfCBNS19TSElGVCkp
ID09IChNS19DT05UUk9MIHwgTUtfU0hJRlQpKQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3Bl
cmF0aW9uTGluazsKKyAgICAgICAgb3BlcmF0aW9uTWFzayA9IHsgRHJhZ09wZXJhdGlvbkxpbmsg
fTsKICAgICBlbHNlIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19DT05UUk9MKSA9PSBNS19DT05UUk9M
KQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgb3BlcmF0
aW9uTWFzayA9IHsgRHJhZ09wZXJhdGlvbkNvcHkgfTsKICAgICBlbHNlIGlmICgoZ3JmS2V5U3Rh
dGUgJiBNS19TSElGVCkgPT0gTUtfU0hJRlQpCi0gICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVy
YXRpb25HZW5lcmljOworICAgICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYyB9OwogCi0gICAgcmV0dXJuIG9wZXJhdGlvbjsKKyAgICByZXR1cm4gb3BlcmF0aW9uTWFz
azsKIH0KIAogSFJFU1VMVCBXZWJWaWV3OjpEcmFnRW50ZXIoSURhdGFPYmplY3QqIHBEYXRhT2Jq
ZWN0LCBEV09SRCBncmZLZXlTdGF0ZSwgUE9JTlRMIHB0LCBEV09SRCogcGR3RWZmZWN0KQpAQCAt
NTkxOSw4ICs1OTIzLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpEcmFnTGVhdmUoKQogICAgICAgICBt
X2Ryb3BUYXJnZXRIZWxwZXItPkRyYWdMZWF2ZSgpOwogCiAgICAgaWYgKG1fZHJhZ0RhdGEpIHsK
LSAgICAgICAgRHJhZ0RhdGEgZGF0YShtX2RyYWdEYXRhLmdldCgpLCBJbnRQb2ludCgpLCBJbnRQ
b2ludCgpLCAKLSAgICAgICAgICAgIERyYWdPcGVyYXRpb25Ob25lKTsKKyAgICAgICAgRHJhZ0Rh
dGEgZGF0YShtX2RyYWdEYXRhLmdldCgpLCBJbnRQb2ludCgpLCBJbnRQb2ludCgpLCB7IH0pOwog
ICAgICAgICBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChkYXRhKTsKICAgICAg
ICAgbV9kcmFnRGF0YSA9IDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCmluZGV4
IDE4MDY2OThhOWFkLi43YjIyMTA0ZDk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApA
QCAtNTU1LDcgKzU1NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBlcmZvcm1MYXllcmVkV2lu
ZG93VXBkYXRlKCk7CiAKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGtleVN0YXRlVG9EcmFn
T3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3Rh
dGUpIGNvbnN0OwogCiAgICAgLy8gRklYTUU6IFRoaXMgdmFyaWFibGUgaXMgcGFydCBvZiBhIHdv
cmthcm91bmQuIFRoZSBkcm9wIGVmZmVjdCAocGR3RWZmZWN0KSBwYXNzZWQgdG8gRHJvcCBpcyBp
bmNvcnJlY3QuIAogICAgIC8vIFdlIHNldCB0aGlzIHZhcmlhYmxlIGluIERyYWdFbnRlciBhbmQg
RHJhZ092ZXIgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBEcm9wIHRvIHNldCB0aGUgY29ycmVj
dCBkcm9wIGVmZmVjdC4gCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400971</attachid>
            <date>2020-06-03 15:30:50 -0700</date>
            <delta_ts>2020-06-04 10:16:56 -0700</delta_ts>
            <desc>Patch v9</desc>
            <filename>bug-212605-v9.diff</filename>
            <type>text/plain</type>
            <size>126804</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMTUxN2UxNTVkMi4uMDdiMTUxZGE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRXZlbnRSZWdpb246OnRyYW5zbGF0ZSgpIG5lZWRzIHRvIG9mZnNl
dCB0aGUgd2hlZWwgZXZlbnQgcmVnaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApp
bmRleCA4NDYzYTQ4ZTk3NC4uNzMxMzA4YjU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC00ODgsMTggKzQ4OCwxOCBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudAogICAg
IHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
LCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3Bl
cmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0Fu
ZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+
c2V0U291cmNlT3BlcmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5z
ZXRTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFu
c2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBh
c3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQs
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8
RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigq
bmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkLCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6
IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3Bl
cmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVy
YXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmln
aW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsK
ICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQpAQCAtNTk1LDc0ICs1OTUsNzQgQEAgdm9pZCBE
cmFnSW1hZ2VMb2FkZXI6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3Qq
KQogICAgIG1fZGF0YVRyYW5zZmVyLT51cGRhdGVEcmFnSW1hZ2UoKTsKIH0KIAotc3RhdGljIERy
YWdPcGVyYXRpb24gZHJhZ09wRnJvbUlFT3AoY29uc3QgU3RyaW5nJiBvcGVyYXRpb24pCitzdGF0
aWMgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYg
b3BlcmF0aW9uKQogewogICAgIGlmIChvcGVyYXRpb24gPT0gInVuaW5pdGlhbGl6ZWQiKQotICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OworICAgICAgICByZXR1cm4gYW55RHJhZ09w
ZXJhdGlvbigpOwogICAgIGlmIChvcGVyYXRpb24gPT0gIm5vbmUiKQotICAgICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKG9wZXJhdGlv
biA9PSAiY29weSIpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAg
cmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHkgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJsaW5r
IikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICByZXR1cm4geyBE
cmFnT3BlcmF0aW9uTGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gIm1vdmUiKQotICAgICAg
ICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJh
dGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09w
ZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TGluayIpCi0gICAgICAg
IHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9u
TGluayk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9u
TGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHlNb3ZlIikKLSAgICAgICAgcmV0dXJu
IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uQ29weSB8IERyYWdPcGVyYXRpb25HZW5lcmlj
IHwgRHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29w
eSwgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9w
ZXJhdGlvbiA9PSAibGlua01vdmUiKQotICAgICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25MaW5rIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92
ZSk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJhbGwiKQot
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OwotICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uUHJpdmF0ZTsgLy8gcmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIKKyAgICAg
ICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSB9OyAvLyBSZWFsbHkgYSBtYXJrZXIgZm9yICJubyBjb252ZXJzaW9uIi4KIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
KQorc3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBvcGVyYXRpb25NYXNrKQogewotICAgIGJvb2wgaXNHZW5lcmljTW92ZSA9IG9wZXJhdGlv
biAmIChEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBib29s
IGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHsgRHJhZ09wZXJhdGlv
bkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pOwogCi0gICAgaWYgKChpc0dlbmVyaWNNb3Zl
ICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25MaW5rKSkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBp
ZiAoKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpIHx8IG9w
ZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gImFsbCI7
Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5
KSkKKyAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5TW92ZSI7Ci0gICAgaWYgKGlzR2Vu
ZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAoaXNH
ZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkK
ICAgICAgICAgcmV0dXJuICJsaW5rTW92ZSI7Ci0gICAgaWYgKChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAo
b3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0
aW9uTGluayB9KSkKICAgICAgICAgcmV0dXJuICJjb3B5TGluayI7CiAgICAgaWYgKGlzR2VuZXJp
Y01vdmUpCiAgICAgICAgIHJldHVybiAibW92ZSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25Db3B5KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5IjsKLSAgICBpZiAob3BlcmF0aW9uICYgRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJh
dGlvbkxpbmspKQogICAgICAgICByZXR1cm4gImxpbmsiOwogICAgIHJldHVybiAibm9uZSI7CiB9
CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb24oKSBjb25zdAor
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFz
aygpIGNvbnN0CiB7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVP
cChtX2VmZmVjdEFsbG93ZWQpOwotICAgIEFTU0VSVChvcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlv
blByaXZhdGUpOwotICAgIHJldHVybiBvcGVyYXRpb247CisgICAgYXV0byBvcGVyYXRpb25NYXNr
ID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsKKyAgICBBU1NFUlQob3BlcmF0aW9u
TWFzayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7
CiB9CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbigp
IGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlv
bk9wZXJhdGlvbk1hc2soKSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0g
ZHJhZ09wRnJvbUlFT3AobV9kcm9wRWZmZWN0KTsKLSAgICBBU1NFUlQob3BlcmF0aW9uID09IERy
YWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcGVy
YXRpb24gPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9u
KShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKSB8fCBvcGVyYXRpb24g
PT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8g
b3BlcmF0aW9uTWFzayA9IGRyYWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7CisgICAgQVNTRVJU
KG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0Vt
cHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25N
YXNrID09IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IERyYWdPcGVyYXRpb25HZW5lcmljLCBE
cmFnT3BlcmF0aW9uTW92ZSB9KSB8fCBvcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24o
KSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpz
ZXRTb3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFu
c2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3Bl
cmF0aW9uTWFzaykKIHsKLSAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbiwgb3BlcmF0aW9uICE9IERy
YWdPcGVyYXRpb25Qcml2YXRlKTsKLSAgICBtX2VmZmVjdEFsbG93ZWQgPSBJRU9wRnJvbURyYWdP
cChvcGVyYXRpb24pOworICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uTWFzaywgb3BlcmF0aW9uTWFz
ayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZy
b21EcmFnT3Aob3BlcmF0aW9uTWFzayk7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0
aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgRGF0YVRyYW5z
ZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiA9
PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwg
b3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0
aW9uR2VuZXJpYyB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9u
ID09IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25N
b3ZlKSk7Ci0gICAgbV9kcm9wRWZmZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAg
ICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlv
bkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFn
T3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8
IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uTWFzayA9PSBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJh
dGlvbk1vdmUgfSkpOworICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlv
bk1hc2spOwogfQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuaAppbmRleCBlNWNmYWY4NTZmYi4uMGU3NDgwYTFmOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTg4LDE1ICs4OCwxNSBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRm9yRHJhZygpOwogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFn
U3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVy
PiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRy
YWdnaW5nRmlsZXMpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9w
KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERh
dGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKIAogICAgIGJvb2wgZHJvcEVmZmVjdElzVW5pbml0aWFsaXpl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVmZmVjdCA9PSAidW5pbml0aWFsaXplZCI7IH0KIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uKCkgY29uc3Q7Ci0gICAgRHJhZ09wZXJh
dGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0U291cmNlT3Bl
cmF0aW9uKERyYWdPcGVyYXRpb24pOwotICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRpb24o
RHJhZ09wZXJhdGlvbik7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2soKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZGVzdGluYXRp
b25PcGVyYXRpb25NYXNrKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTb3VyY2VPcGVyYXRpb25NYXNr
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogICAgIHZvaWQgc2V0RHJhZ0hh
c1N0YXJ0ZWQoKSB7IG1fc2hvdWxkVXBkYXRlRHJhZ0ltYWdlID0gdHJ1ZTsgfQogICAgIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2NhdGlvbikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5kZXggYTkyM2NhZTU4Y2IuLmJmODNkNjNjZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC02MCwxOCArNjAsMjEgQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJh
Z1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCisvLyBTZWUgTlNE
cmFnT3BlcmF0aW9uLCBfVUlEcmFnT3BlcmF0aW9uIGFuZCBVSURyb3BPcGVyYXRpb24uCiB0eXBl
ZGVmIGVudW0gewotICAgIERyYWdPcGVyYXRpb25Ob25lICAgID0gMCwKICAgICBEcmFnT3BlcmF0
aW9uQ29weSAgICA9IDEsCiAgICAgRHJhZ09wZXJhdGlvbkxpbmsgICAgPSAyLAogICAgIERyYWdP
cGVyYXRpb25HZW5lcmljID0gNCwKICAgICBEcmFnT3BlcmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAg
RHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwKICAgICBEcmFnT3BlcmF0aW9uRGVsZXRlICA9IDMy
LAotICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlOVF9NQVgKIH0gRHJhZ09wZXJhdGlvbjsK
IAorY29uc3RleHByIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkK
K3sKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmssIERy
YWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1v
dmUsIERyYWdPcGVyYXRpb25EZWxldGUgfTsKK30KKwogZW51bSBjbGFzcyBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhhc05vbkRlZmF1bHRQYXN0
ZWJvYXJkRGF0YSA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIERyYWdIYW5kbGluZ01l
dGhvZCA6IHVpbnQ4X3QgeyBOb25lLCBFZGl0UGxhaW5UZXh0LCBFZGl0UmljaFRleHQsIFVwbG9h
ZEZpbGUsIFBhZ2VMb2FkLCBTZXRDb2xvciwgTm9uRGVmYXVsdCB9OwpAQCAtOTMsNiArOTYsMTgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2Q+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkNvcHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3Ry
dWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAg
ICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiwKQEAgLTEwMiw0ICsxMTcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgID47
CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IE9wdGlvblNldFZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblBy
aXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA0ZWUyZTJmYjM1OC4u
ZjJmNmRkMjk0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0y
MDgsNyArMjA4LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBjbGll
bnQoKS5kcmFnRW5kZWQoKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
IHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEpOwogfQpAQCAtMjI0
LDcgKzIyNCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRy
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBk
cmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBjbGVhckRy
YWdDYXJldCgpOwogCi0gICAgaWYgKG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpID09IERyYWdP
cGVyYXRpb25Ob25lKQorICAgIGlmICghb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gdXJsU3RyaW5nID0gZHJhZ0RhdGEuYXNVUkwo
KTsKQEAgLTMwNCwyMSArMzA0LDIxIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZWRJ
bnRvRG9jdW1lbnQoRG9jdW1lbnQqIG5ld0RvY3VtZW50KQogICAgIG1fZG9jdW1lbnRVbmRlck1v
dXNlID0gbmV3RG9jdW1lbnQ7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERy
YWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpKTsK
IAogICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2soKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmlz
RW1wdHkoKSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBGSVhNRTogV2h5IG5vdCBj
YWxsIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/Ci0gICAgICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgIG1fZHJhZ0hhbmRsaW5n
TWV0aG9kID0gdHJ5RG9jdW1lbnREcmFnKGRyYWdEYXRhLCBtX2RyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2ssIGRyYWdPcGVyYXRpb24pOwogICAgIGlmIChtX2RyYWdIYW5kbGluZ01ldGhvZCA9PSBE
cmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUgJiYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5j
b250YWlucyhEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpKSkgewogICAgICAgICBkcmFnT3Bl
cmF0aW9uID0gb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSk7Ci0gICAgICAgIGlmIChkcmFnT3Bl
cmF0aW9uICE9IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbikK
ICAgICAgICAgICAgIG1fZHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpQ
YWdlTG9hZDsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ0hhbmRsaW5nTWV0aG9kID09IERyYWdIYW5k
bGluZ01ldGhvZDo6U2V0Q29sb3IpCiAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0
aW9uQ29weTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbgogCiAj
ZW5kaWYKIAotRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERy
YWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIERyYWdPcGVyYXRpb24mIGRyYWdPcGVyYXRpb24p
CitEcmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIGRyYWdPcGVyYXRp
b24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSkKICAgICAgICAgcmV0dXJuIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBEcmFnSGFuZGxpbmdN
ZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEsIE9wdAogICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9
IDE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9udW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkKQotICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgICAg
ICAgICAgbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+c2V0Q2FuUmVjZWl2ZURyb3BwZWRG
aWxlcyhtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBvdmVyIGEgZmlsZSBpbnB1dCBlbGVtZW50LiBUaGUgZHJh
Z2dlZCBpdGVtKHMpIHdpbGwgbG9hZGVkIGludG8gdGhlIHZpZXcsCkBAIC00ODksNyArNDg5LDcg
QEAgRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiByb290VmkKICAgICByZXR1cm4gbV9kcmFnU291cmNlQWN0aW9u
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250
cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50
KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOwogCkBAIC01MDQsNyArNTA0LDcgQEAgRHJhZ09w
ZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50ICYmIChtX2RpZEluaXRpYXRlRHJh
ZyB8fCAoaXM8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVudCkgJiYgIXBsdWdpbkRvY3VtZW50QWNj
ZXB0c0RyYWdzKSB8fCBkb2N1bWVudC0+aGFzRWRpdGFibGVTdHlsZSgpKSkKLSAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHJldHVybiBkcmFnT3BlcmF0aW9uKGRyYWdEYXRhKTsKIH0KIApAQCAtNjkzLDI4ICs2OTMsMjgg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBkZWZh
dWx0T3BlcmF0aW9uRm9yRHJhZyhEcmFnT3BlcmF0aW9uIHNyY09wTWFzaykKK3N0YXRpYyBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaykKIHsKICAgICAvLyBUaGlzIGlzIGRlc2ln
bmVkIHRvIG1hdGNoIElFJ3Mgb3BlcmF0aW9uIGZhbGxiYWNrIGZvciB0aGUgY2FzZSB3aGVyZQog
ICAgIC8vIHRoZSBwYWdlIGNhbGxzIHByZXZlbnREZWZhdWx0KCkgaW4gYSBkcmFnIGV2ZW50IGJ1
dCBkb2Vzbid0IHNldCBkcm9wRWZmZWN0LgotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09wZXJh
dGlvbkV2ZXJ5KQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1h
c2sgPT0gRHJhZ09wZXJhdGlvbk5vbmUpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9u
ZTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkK
ICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwotICAgIGlmIChzcmNPcE1hc2sgJiBE
cmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAgIHJldHVybiBEcmFnQ29udHJvbGxlcjo6
cGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFn
T3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKLSAgICBp
ZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKHNvdXJjZU9wZXJhdGlv
bk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbkxpbms7CiAgICAgCiAgICAgLy8gRklYTUU6IERvZXMgSUUgcmVhbGx5IHJldHVybiAi
Z2VuZXJpYyIgZXZlbiBpZiBubyBvcGVyYXRpb25zIHdlcmUgYWxsb3dlZCBieSB0aGUgc291cmNl
PwogICAgIHJldHVybiBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKIH0KIAotYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlv
biYgb3BlcmF0aW9uKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIG9wZXJhdGlvbikKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudFVuZGVyTW91c2UpOwogICAgIFJlZjxGcmFtZT4gbWFpbkZy
YW1lKG1fcGFnZS5tYWluRnJhbWUoKSk7CkBAIC03MjIsMTcgKzcyMiwxOSBAQCBib29sIERyYWdD
b250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3Bl
cmF0aW9uJiBvcGVyYQogICAgIGlmICghdmlld1Byb3RlY3RvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24gPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKLSAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7IHJldHVybiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7IH0sIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ0RhdGEuY29udGFp
bnNGaWxlcygpKTsKKyAgICBhdXRvIHNvdXJjZU9wZXJhdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKKyAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7CisgICAgICAgIHJldHVybiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSk7CisgICAgfSwgc291cmNlT3BlcmF0aW9uTWFz
aywgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICBpZiAoIXRhcmdldFJlc3BvbnNlLmFj
Y2VwdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCF0YXJnZXRSZXNwb25zZS5v
cGVyYXRpb24pCi0gICAgICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNv
dXJjZU9wZXJhdGlvbik7Ci0gICAgZWxzZSBpZiAoIShzb3VyY2VPcGVyYXRpb24gJiB0YXJnZXRS
ZXNwb25zZS5vcGVyYXRpb24udmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVy
YXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlCi0gICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIGlmICghdGFyZ2V0UmVzcG9uc2Uub3BlcmF0
aW9uTWFzaykKKyAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc291
cmNlT3BlcmF0aW9uTWFzayk7CisgICAgZWxzZSBpZiAoIXNvdXJjZU9wZXJhdGlvbk1hc2suY29u
dGFpbnNBbnkodGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzay52YWx1ZSgpKSkgLy8gVGhlIGVs
ZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBz
b3VyY2UKKyAgICAgICAgb3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIGVsc2UKLSAgICAg
ICAgb3BlcmF0aW9uID0gdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uLnZhbHVlKCk7CisgICAgICAg
IG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHRhcmdldFJlc3BvbnNlLm9wZXJh
dGlvbk1hc2sudmFsdWUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk1Niw3ICs5NTgs
NyBAQCBPcHRpb25hbDxIaXRUZXN0UmVzdWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0VGVzdFJlc3Vs
dEZvckRyYWdTdGFydChGcmFtZSYgc291cmNlLAogICAgIHJldHVybiB7IGhpdFRlc3RSZXN1bHQg
fTsKIH0KIAotYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0
IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVm
YXVsdFBhc3RlYm9hcmREYXRhIGhhc0RhdGEpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJh
Z0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9h
cmREYXRhIGhhc0RhdGEpCiB7CiAgICAgaWYgKCFzdGF0ZS5zb3VyY2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTk3Miw3ICs5NzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERy
YWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAg
IEludFBvaW50IG1vdXNlRHJhZ2dlZFBvaW50ID0gc3JjLnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7CiAKICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBVUkwo
KTsKLSAgICBtX3NvdXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKKyAgICBtX3NvdXJjZURyYWdP
cGVyYXRpb25NYXNrID0gc291cmNlT3BlcmF0aW9uTWFzazsKIAogICAgIERyYWdJbWFnZSBkcmFn
SW1hZ2U7CiAgICAgSW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKQEAgLTk5NSw3ICs5OTcsNyBAQCBi
b29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRl
JiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgICAgICAvLyBTZWxlY3Rpb24sIGltYWdlLCBhbmQg
bGluayBkcmFncyByZWNlaXZlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlv
bnMgdGhhdAogICAgICAgICAvLyBmb2xsb3dzIGZyb206CiAgICAgICAgIC8vIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0/cmV2PTQ4NTI2I0wzNDMwCi0gICAgICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHN0YXRp
Y19jYXN0PERyYWdPcGVyYXRpb24+KG1fc291cmNlRHJhZ09wZXJhdGlvbiB8IERyYWdPcGVyYXRp
b25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbkNvcHkpOworICAgICAgICBtX3NvdXJjZURyYWdPcGVy
YXRpb25NYXNrLmFkZCh7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uQ29weSB9
KTsKICAgICB9CiAKICAgICBBU1NFUlQoc3RhdGUuc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuaAppbmRleCA5MGY4NzVjMDY3YS4uZWE0OTllMGViZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAgLTU5LDkgKzU5LDkgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIERyYWdPcGVyYXRpb24gcGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0
YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdFbnRl
cmVkKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRXhpdGVk
KGNvbnN0IERyYWdEYXRhJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFn
VXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPERy
YWdPcGVyYXRpb24+IGRyYWdVcGRhdGVkKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBwZXJmb3JtRHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNlbGxlZCgpOwogCkBAIC03Miw3ICs3Miw3IEBAIHB1
YmxpYzoKICAgICAvLyBkcmFnIGxvZ2ljIGlzIGluIFdlYkNvcmUuCiAgICAgdm9pZCBzZXREaWRJ
bml0aWF0ZURyYWcoYm9vbCBpbml0aWF0ZWQpIHsgbV9kaWRJbml0aWF0ZURyYWcgPSBpbml0aWF0
ZWQ7IH0KICAgICBib29sIGRpZEluaXRpYXRlRHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlkSW5p
dGlhdGVEcmFnOyB9Ci0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VEcmFnT3BlcmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uOyB9CisgICAgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IHNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VEcmFnT3BlcmF0aW9uTWFzazsgfQogICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJbWFnZVVSTDsgfQogICAgIHZvaWQgc2V0RHJhZ09m
ZnNldChjb25zdCBJbnRQb2ludCYgb2Zmc2V0KSB7IG1fZHJhZ09mZnNldCA9IG9mZnNldDsgfQog
ICAgIGNvbnN0IEludFBvaW50JiBkcmFnT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zm
c2V0OyB9CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVyc0F0Q2FyZXQoY29uc3QgVmVjdG9yPEludFNp
emU+JiBpbWFnZVNpemVzKTsKIAogICAgIHZvaWQgcHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYg
c291cmNlRnJhbWUsIERyYWdTb3VyY2VBY3Rpb24sIEVsZW1lbnQmIHNvdXJjZUVsZW1lbnQsIERh
dGFUcmFuc2ZlciYsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luKSBjb25zdDsKLSAgICBib29s
IHN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNy
Y09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQm
IGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CisgICAgYm9vbCBzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQm
IGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNv
bnN0IEludFNpemUmIG1heERyYWdJbWFnZVNpemUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQg
TWF4T3JpZ2luYWxJbWFnZUFyZWE7CkBAIC0xMDgsMTEgKzEwOCwxMSBAQCBwcml2YXRlOgogICAg
IGJvb2wgZGlzcGF0Y2hUZXh0SW5wdXRFdmVudEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7
CiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY29u
Y2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0YSYpOwotICAgIERyYWdPcGVyYXRpb24gZHJhZ0Vu
dGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJh
dGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmKTsKLSAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5
RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFj
dGlvbj4sIERyYWdPcGVyYXRpb24mKTsKLSAgICBib29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFn
RGF0YSYsIERyYWdPcGVyYXRpb24mKTsKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24o
Y29uc3QgRHJhZ0RhdGEmKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJl
ZE9yVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBEcmFnSGFuZGxpbmdNZXRo
b2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4sIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+Jik7CisgICAgYm9vbCB0cnlESFRN
TERyYWcoY29uc3QgRHJhZ0RhdGEmLCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiYpOworICAgIE9w
dGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAg
ICB2b2lkIGNsZWFyRHJhZ0NhcmV0KCk7CiAgICAgYm9vbCBkcmFnSXNNb3ZlKEZyYW1lU2VsZWN0
aW9uJiwgY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGlzQ29weUtleURvd24oY29uc3QgRHJh
Z0RhdGEmKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKICAgICBEcmFn
U291cmNlQWN0aW9uIG1fZHJhZ1NvdXJjZUFjdGlvbiB7IERyYWdTb3VyY2VBY3Rpb25Ob25lIH07
CiAgICAgYm9vbCBtX2RpZEluaXRpYXRlRHJhZyB7IGZhbHNlIH07Ci0gICAgRHJhZ09wZXJhdGlv
biBtX3NvdXJjZURyYWdPcGVyYXRpb24geyBEcmFnT3BlcmF0aW9uTm9uZSB9OyAvLyBTZXQgaW4g
c3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2Vi
S2l0CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG1fc291cmNlRHJhZ09wZXJhdGlvbk1h
c2s7IC8vIFNldCBpbiBzdGFydERyYWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBk
b3duIHdpdGhpbiBXZWJLaXQuCiAgICAgSW50UG9pbnQgbV9kcmFnT2Zmc2V0OwogICAgIFVSTCBt
X2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAgYm9vbCBtX2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGQ1NTc3ZWVmMTE0Li41YmQw
ZDA5ZjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjMzNCw3ICsy
MzM0LDcgQEAgc3RhdGljIGJvb2wgdGFyZ2V0SXNGcmFtZShOb2RlKiB0YXJnZXQsIEZyYW1lKiYg
ZnJhbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGNvbnZl
cnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPcGVy
YXRpb24pCitzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gY29udmVydERyb3Bab25lT3Bl
cmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ09wZXJhdGlvbikKIHsKICAg
ICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAiY29weSIpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uQ29weTsKQEAgLTIzNDIsMjEgKzIzNDIsMjQgQEAgc3RhdGljIERyYWdPcGVyYXRpb24gY29u
dmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ08K
ICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwogICAgIGlmIChkcmFnT3BlcmF0aW9u
ID09ICJsaW5rIikKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOwotICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCi1zdGF0
aWMgU3RyaW5nIGNvbnZlcnREcmFnT3BlcmF0aW9uVG9Ecm9wWm9uZU9wZXJhdGlvbihEcmFnT3Bl
cmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBTdHJpbmcgY29udmVydERyYWdPcGVyYXRpb25Ub0Ry
b3Bab25lT3BlcmF0aW9uKE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbikKIHsKLSAg
ICBzd2l0Y2ggKG9wZXJhdGlvbikgewotICAgIGNhc2UgRHJhZ09wZXJhdGlvbkNvcHk6Ci0gICAg
ICAgIHJldHVybiAiY29weSJfczsKLSAgICBjYXNlIERyYWdPcGVyYXRpb25Nb3ZlOgotICAgICAg
ICByZXR1cm4gIm1vdmUiX3M7Ci0gICAgY2FzZSBEcmFnT3BlcmF0aW9uTGluazoKLSAgICAgICAg
cmV0dXJuICJsaW5rIl9zOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAiY29weSJfczsK
KyAgICBpZiAob3BlcmF0aW9uKSB7CisgICAgICAgIHN3aXRjaCAoKm9wZXJhdGlvbikgeworICAg
ICAgICBjYXNlIERyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICAgICAgcmV0dXJuICJjb3B5Il9z
OworICAgICAgICBjYXNlIERyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICAgICAgcmV0dXJuICJt
b3ZlIl9zOworICAgICAgICBjYXNlIERyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICAgICAgcmV0
dXJuICJsaW5rIl9zOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICB9CisgICAgcmV0dXJuICJjb3B5Il9zOwogfQogCiBzdGF0aWMgYm9vbCBoYXNE
cm9wWm9uZVR5cGUoRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFN0cmluZyYga2V5
d29yZCkKQEAgLTIzNzYsMTUgKzIzNzksMTUgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5v
ZGUmIHRhcmdldCwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIpCiAgICAgZm9yICg7IGVsZW1l
bnQ7IGVsZW1lbnQgPSBlbGVtZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKICAgICAgICAgU3BhY2VT
cGxpdFN0cmluZyBrZXl3b3JkcyhlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHdlYmtpdGRyb3B6b25lQXR0ciksIHRydWUpOwogICAgICAgICBib29sIG1hdGNoZWQgPSBm
YWxzZTsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlv
bk5vbmU7CisgICAgICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb247CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBrZXl3b3Jkcy5zaXplKCk7IGkgPCBz
aXplOyArK2kpIHsKLSAgICAgICAgICAgIERyYWdPcGVyYXRpb24gb3AgPSBjb252ZXJ0RHJvcFpv
bmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29yZHNbaV0pOwotICAgICAgICAgICAgaWYg
KG9wICE9IERyYWdPcGVyYXRpb25Ob25lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRyYWdPcGVy
YXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUpCi0gICAgICAgICAgICAgICAgICAgIGRyYWdPcGVy
YXRpb24gPSBvcDsKKyAgICAgICAgICAgIGF1dG8gb3BlcmF0aW9uRnJvbUtleXdvcmQgPSBjb252
ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29yZHNbaV0pOworICAgICAg
ICAgICAgaWYgKG9wZXJhdGlvbkZyb21LZXl3b3JkKSB7CisgICAgICAgICAgICAgICAgaWYgKCFk
cmFnT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3BlcmF0
aW9uRnJvbUtleXdvcmQ7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBtYXRj
aGVkID0gbWF0Y2hlZCB8fCBoYXNEcm9wWm9uZVR5cGUoZGF0YVRyYW5zZmVyLCBrZXl3b3Jkc1tp
XS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlZCAmJiBkcmFnT3BlcmF0aW9uICE9
IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICAgICAgaWYgKG1hdGNoZWQgJiYgZHJhZ09wZXJh
dGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobWF0
Y2hlZCkgewpAQCAtMjM5NiwxOSArMjM5OSwxOSBAQCBzdGF0aWMgYm9vbCBmaW5kRHJvcFpvbmUo
Tm9kZSYgdGFyZ2V0LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlcikKIH0KIAogRXZlbnRIYW5k
bGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9y
RHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdl
dCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCh0YXJnZXQuZG9jdW1lbnQoKSwgV1RGTW92
ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBhdXRv
IGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0
KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25N
YXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICBib29sIGFjY2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50
KGV2ZW50VHlwZSwgdGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyLmdldCgpKTsKICAgICBpZiAo
IWFjY2VwdCkKICAgICAgICAgYWNjZXB0ID0gZmluZERyb3Bab25lKHRhcmdldCwgZGF0YVRyYW5z
ZmVyKTsKICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICBp
ZiAoYWNjZXB0ICYmICFkYXRhVHJhbnNmZXItPmRyb3BFZmZlY3RJc1VuaW5pdGlhbGl6ZWQoKSkK
LSAgICAgICAgcmV0dXJuIHsgdHJ1ZSwgZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlv
bigpIH07CisgICAgICAgIHJldHVybiB7IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25P
cGVyYXRpb25NYXNrKCkgfTsKICAgICByZXR1cm4geyBhY2NlcHQsIFdURjo6bnVsbG9wdCB9Owog
fQogCi1FdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0
ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiBtYWtlUGFzdGVib2FyZCwg
RHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK0V2ZW50
SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERy
b3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1ha2VQYXN0ZWJvYXJkLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQog
ewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAgICAgaWYgKCFtX2Zy
YW1lLnZpZXcoKSkKQEAgLTI0MzgsMTkgKzI0NDEsMTkgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFy
Z2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU0KICAgICAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgICAgICBpZiAodGFyZ2V0SXNGcmFt
ZShuZXdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAgaWYgKHRhcmdl
dEZyYW1lKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFu
ZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3Bl
cmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdl
dEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3Rl
Ym9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9IGVs
c2UgaWYgKG5ld1RhcmdldCkgewogICAgICAgICAgICAgLy8gQXMgcGVyIHNlY3Rpb24gNy45LjQg
b2YgdGhlIEhUTUwgNSBzcGVjLiwgd2UgbXVzdCBhbHdheXMgZmlyZSBhIGRyYWcgZXZlbnQgYmVm
b3JlIGZpcmluZyBhIGRyYWdlbnRlciwgZHJhZ2xlYXZlLCBvciBkcmFnb3ZlciBldmVudC4KICAg
ICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5k
cmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50
ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCAqbmV3VGFyZ2V0
LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVz
KTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZl
bnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBh
c3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAodGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdl
dEZyYW1lKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJlY3Vyc2luZyBhZ2FpbiBoZXJlIGRv
ZXNuJ3QgbWFrZSBzZW5zZSBpZiB0aGUgbmV3VGFyZ2V0IGFuZCBtX2RyYWdUYXJnZXQgd2VyZSBp
biB0aGUgc2FtZSBmcmFtZS4KICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAg
ICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFn
QW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdG
aWxlcyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVy
YXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChtX2RyYWdUYXJn
ZXQpIHsKLSAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBtYWtlUGFz
dGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAg
YXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRh
cmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9w
ZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICAgICAgZGlzcGF0Y2hEcmFnRXZl
bnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0
YVRyYW5zZmVyLmdldCgpKTsKICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRG
b3JTZWN1cml0eSgpOwogICAgICAgICB9CkBAIC0yNDY0LDEyICsyNDY3LDEyIEBAIEV2ZW50SGFu
ZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZyYW1lKiB0YXJnZXRGcmFtZTsKICAgICAgICAgaWYg
KHRhcmdldElzRnJhbWUobmV3VGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAg
ICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZy
YW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9h
cmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVz
cG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZl
bnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsK
ICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJnZXQpIHsKICAgICAgICAgICAgIC8vIE5vdGUsIHdo
ZW4gZGVhbGluZyB3aXRoIHN1Yi1mcmFtZXMsIHdlIG1heSBuZWVkIHRvIGZpcmUgb25seSBhIGRy
YWdvdmVyIGV2ZW50IGFzIGEgZHJhZyBldmVudCBtYXkgaGF2ZSBiZWVuIGZpcmVkIGVhcmxpZXIu
CiAgICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25seUZpcmVEcmFnT3ZlckV2ZW50KQogICAgICAg
ICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5k
cmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50
ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdvdmVyRXZlbnQsICpuZXdUYXJnZXQs
IGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMp
OworICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVu
dChldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0
ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICAg
ICAgbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgPSBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KQEAgLTI0NzcsMjUgKzI0ODAsMjUgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9u
c2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU0KICAgICBy
ZXR1cm4gcmVzcG9uc2U7CiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJv
cChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBk
cmFnZ2luZ0ZpbGVzKQordm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYm
IHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZSht
X2ZyYW1lKTsKIAogICAgIEZyYW1lKiB0YXJnZXRGcmFtZTsKICAgICBpZiAodGFyZ2V0SXNGcmFt
ZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICBpZiAodGFyZ2V0
RnJhbWUpCi0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuY2FuY2VsRHJh
Z0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJh
Z2dpbmdGaWxlcyk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuY2Fu
Y2VsRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7CiAg
ICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5kcmFn
RXZlbnQsIGV2ZW50KTsKIAotICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwg
V1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAg
ICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5n
RHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCks
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICBkaXNwYXRjaERy
YWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsICptX2RyYWdUYXJnZXQsIGV2ZW50
LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlk
Rm9yU2VjdXJpdHkoKTsKICAgICB9CiAgICAgY2xlYXJEcmFnU3RhdGUoKTsKIH0KIAotYm9vbCBF
dmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3Bl
cmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorYm9vbCBFdmVudEhh
bmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewog
ICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKQEAgLTI1MDMsOSArMjUw
Niw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxCiAgICAgYm9vbCBwcmV2ZW50ZWREZWZhdWx0
ID0gZmFsc2U7CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJn
ZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgcHJldmVu
dGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJmb3JtRHJhZ0FuZERy
b3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdG
aWxlcyk7CisgICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gdGFyZ2V0RnJhbWUtPmV2ZW50
SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwg
c291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgfSBlbHNlIGlmIChtX2Ry
YWdUYXJnZXQpIHsKLSAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQp
LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChtX2RyYWdUYXJnZXQtPmRvY3VtZW50
KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmls
ZXMpOwogICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRO
YW1lcygpLmRyb3BFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlcik7CiAg
ICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIH0KQEAg
LTM3MjksMTMgKzM3MzIsMTMgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0YXJ0RHJhZygpCiAj
ZW5kaWYKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBNYXlFeHRl
bmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFnU2Vzc2lvbikKK3ZvaWQgRXZlbnRIYW5kbGVyOjpk
cmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIE1heUV4dGVuZERyYWdTZXNzaW9u
IG1heUV4dGVuZERyYWdTZXNzaW9uKQogewogICAgIC8vIFNlbmQgYSBoaXQgdGVzdCByZXF1ZXN0
IHNvIHRoYXQgUmVuZGVyTGF5ZXIgZ2V0cyBhIGNoYW5jZSB0byB1cGRhdGUgdGhlIDpob3ZlciBh
bmQgOmFjdGl2ZSBwc2V1ZG9jbGFzc2VzLgogICAgIHByZXBhcmVNb3VzZUV2ZW50KE9wdGlvblNl
dDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IHsgSGl0VGVzdFJlcXVlc3Q6OlJlbGVhc2Us
IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfSwgZXZlbnQp
OwogCiAgICAgaWYgKHNob3VsZERpc3BhdGNoRXZlbnRzVG9EcmFnU291cmNlRWxlbWVudCgpKSB7
Ci0gICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRp
b24ob3BlcmF0aW9uKTsKKyAgICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXREZXN0
aW5hdGlvbk9wZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spOwogICAgICAgICBkaXNwYXRj
aEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2ZW50LCBldmVu
dCk7CiAgICAgfQogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKQEAgLTM4NjUsNyArMzg2
OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgLy8gT25jZSB3ZSdyZSBwYXN0IHRo
ZSBoeXN0ZXJlc2lzIHBvaW50LCB3ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMgZ2VzdHVyZSBh
cyBhIGNsaWNrCiAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiAgICAgCi0gICAgRHJhZ09wZXJhdGlv
biBzcmNPcCA9IERyYWdPcGVyYXRpb25Ob25lOyAgICAgIAorICAgIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrOwogICAgIAogICAgIC8vIFRoaXMgZG9lcyB3b3Jr
IG9ubHkgaWYgd2UgbWlzc2VkIGEgZHJhZ0VuZC4gRG8gaXQgYW55d2F5LCBqdXN0IHRvIG1ha2Ug
c3VyZSB0aGUgb2xkIGRhdGFUcmFuc2ZlciBnZXRzIG51bWJlZC4KICAgICAvLyBGSVhNRTogQ29u
c2lkZXIgZG9pbmcgdGhpcyBlYXJsaWVyIGluIHRoaXMgZnVuY3Rpb24gYXMgdGhlIGVhcmxpZXN0
IHBvaW50IHdlJ3JlIHN1cmUgaXQgd291bGQgYmUgc2FmZSB0byBkcm9wIGFuIG9sZCBkcmFnLgpA
QCAtMzkwMCw3ICszOTAzLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKIAogICAgICAgICBp
ZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgICAgIC8vIEdhdGhlciB2YWx1
ZXMgZnJvbSBESFRNTCBlbGVtZW50LCBpZiBpdCBzZXQgYW55LgotICAgICAgICAgICAgc3JjT3Ag
PSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbigpOworICAgICAgICAg
ICAgc291cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c291cmNl
T3BlcmF0aW9uTWFzaygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBZdWNrLCBhIGRy
YWdnZWRJbWFnZTptb3ZlVG86IG1lc3NhZ2UgY2FuIGJlIGZpcmVkIGFzIGEgcmVzdWx0IG9mIGtp
Y2tpbmcgb2ZmIHRoZQogICAgICAgICAgICAgLy8gZHJhZyB3aXRoIGRyYWdJbWFnZSEgQmVjYXVz
ZSBvZiB0aGF0IGR1bWIgcmVlbnRyYW5jeSwgd2UgbWF5IHRoaW5rIHdlJ3ZlIG5vdApAQCAtMzkx
MSw3ICszOTE0LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAKICAgICBpZiAobV9t
b3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFn
ZSgpOwotICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVudC5ldmVudCgp
LCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0
YSk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxl
cigpLnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc291cmNlT3BlcmF0aW9uTWFzaywg
ZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uLCBoYXNOb25EZWZhdWx0
UGFzdGVib2FyZERhdGEpOwogICAgICAgICAvLyBJbiBXZWJLaXQyIHdlIGNvdWxkIHJlLWVudGVy
IHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhlciBkcmFnLgogICAgICAgICAvLyBPbiBPUyBYIHRo
aXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hpcCBvZiB0aGUgcGFzdGVib2FyZCBh
bmQgdGhlIHByb21pc2VkIHR5cGVzLgogICAgICAgICBpZiAobV9kaWRTdGFydERyYWcpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDZmZmM4M2MwMTJmLi4yN2NhZTYxZWQxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0xNjMsMTEgKzE2MywxMSBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdHJ1Y3QgRHJhZ1RhcmdldFJlc3Bv
bnNlIHsKICAgICAgICAgYm9vbCBhY2NlcHQgeyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiBvcGVyYXRpb247CisgICAgICAgIE9wdGlvbmFsPE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPj4gb3BlcmF0aW9uTWFzazsKICAgICB9OwotICAgIERyYWdUYXJnZXRSZXNwb25z
ZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBzdGQ6
OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHZvaWQgY2FuY2VsRHJh
Z0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgYm9vbCBw
ZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Cisg
ICAgRHJhZ1RhcmdldFJlc3BvbnNlIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
KCk+JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOworICAg
IHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBk
cmFnZ2luZ0ZpbGVzKTsKKyAgICBib29sIHBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgdXBkYXRlRHJhZ1N0
YXRlQWZ0ZXJFZGl0RHJhZ0lmTmVlZGVkKEVsZW1lbnQmIHJvb3RFZGl0YWJsZUVsZW1lbnQpOwog
ICAgIFJlZlB0cjxFbGVtZW50PiBkcmFnZ2VkRWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCkBAIC0y
NjgsNyArMjY4LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlk
U3RhcnREcmFnKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmLCBEcmFnT3BlcmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiA9IE1heUV4dGVu
ZERyYWdTZXNzaW9uOjpObyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5k
ZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4s
IE1heUV4dGVuZERyYWdTZXNzaW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBmb2N1c0RvY3VtZW50VmlldygpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHBy
aXZhdGU6CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgZGlzcGF0Y2hEcmFn
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIERhdGFUcmFuc2ZlciYpOwotICAgIERyYWdUYXJnZXRSZXNw
b25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5n
RmlsZXMpOworICAgIERyYWdUYXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092
ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgdm9pZCBp
bnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAKICAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDdkMDUyY2Zl
MThhLi5mODZlYTQzNTZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJh
Z0NvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250
cm9sbGVyR3RrLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6Omlz
Q29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIHJldHVybiBkcmFnRGF0
YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsKIH0KIAotRHJhZ09wZXJh
dGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlv
bihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbG9naWMg
aXMgaW5jb21wbGV0ZQogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpKQogICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7
CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogY29uc3QgSW50U2l6ZSYgRHJhZ0NvbnRy
b2xsZXI6Om1heERyYWdJbWFnZVNpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFn
Q29udHJvbGxlck1hYy5tbQppbmRleCA4NWJkNDhhY2MyMi4uODk3MTRjZTU0NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC02NCwxMCArNjQs
MTAgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgcmV0dXJuIGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25J
c0NvcHlLZXlEb3duOwogfQogICAgIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0
aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCiB7CiAgICAgaWYgKGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25Jc01vZGFs
KQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICBib29sIG1heUNvbnRhaW5VUkw7CiAgICAgaWYgKGNhbkxvYWREYXRh
RnJvbURyYWdnaW5nUGFzdGVib2FyZCgpKQpAQCAtNzYsMTIgKzc2LDEyIEBAIERyYWdPcGVyYXRp
b24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogICAgICAgICBtYXlDb250YWluVVJMID0gZHJhZ0RhdGEuY29udGFpbnNVUkxUeXBlSWRlbnRp
ZmllcigpOwogCiAgICAgaWYgKCFtYXlDb250YWluVVJMICYmICFkcmFnRGF0YS5jb250YWluc1By
b21pc2UoKSkKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCAoIShk
cmFnRGF0YS5mbGFncygpICYgKERyYWdBcHBsaWNhdGlvbkhhc0F0dGFjaGVkU2hlZXQgfCBEcmFn
QXBwbGljYXRpb25Jc1NvdXJjZSkpKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5
OwogCi0gICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiB9CiAKIGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhEcmFnSW1hZ2VTaXpl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAppbmRl
eCAyZDQ2ZDZiMjNlYS4uY2ZhNGFiOWUyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dp
bi9EcmFnQ29udHJvbGxlcldpbi5jcHAKQEAgLTQyLDEzICs0MiwxNSBAQCBjb25zdCBpbnQgRHJh
Z0NvbnRyb2xsZXI6OkRyYWdJY29uQm90dG9tSW5zZXQgPSAzOwogCiBjb25zdCBmbG9hdCBEcmFn
Q29udHJvbGxlcjo6RHJhZ0ltYWdlQWxwaGEgPSAwLjc1ZjsKIAotRHJhZ09wZXJhdGlvbiBEcmFn
Q29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgLy9GSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJl
aGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lCi0gICAgLy9pZiB3ZSBh
cmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cg
aXMgYW4gYXR0YWNoZWQgc2hlZXQKLSAgICAvL0lmIHRoaXMgY2FuIGJlIGRldGVybWluZWQgZnJv
bSB3aXRoaW4gV2ViQ29yZSBvcGVyYXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxsZWQgaW50byAKLSAg
ICAvL1dlYkNvcmUgaXRzZWxmCi0gICAgcmV0dXJuIGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYg
IW1fZGlkSW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAvLyBGSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91ciB3ZSBzaG91bGQg
cmV0dXJuIFdURjo6bnVsbG9wdC4KKyAgICAvLyBJZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdl
IGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQu
CisgICAgLy8gSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9w
ZXJhdGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvCisgICAgLy8gV2ViQ29yZSBpdHNlbGYu
CisgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQor
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIH0KIAogYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0
YSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKaW5kZXggOGY2NzU1ZjU3NjEuLmU4
YzQwZjU1OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1EcmFn
RGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291
cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpE
cmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBt
X2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtNDIsNyAr
NDIsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQbwogeyAgCiB9CiAKLURyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25N
YXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlv
bkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0
IFN0cmluZyYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24o
Y2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQog
ICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaApp
bmRleCA0MjFhMjk5NDNiMy4uMzFiOGFiOWVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0Rh
dGEuaApAQCAtNzUsMTMgKzc1LDEzIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIERyYWdnaW5n
UHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29udHJvbCB9Owog
CiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0aW9uIG9mIHRo
ZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCwwKSBhdCB0aGUg
dG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25B
Y3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRpb25GbGFncyA9
IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0g
YW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRh
KERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGlj
YXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlv
bk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKCkpOwogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVzZWQgb25seSBi
eSBXZWJLaXQyIElQQyBiZWNhdXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlhbGl6ZWQgYnkg
dGhlIGRlY29kZXIgYW5kIG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJhZ0RhdGEoKSA9
IGRlZmF1bHQ7CiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRh
KGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25z
dCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
TWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0IEludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICAgICBjb25zdCBEcmFnRGF0YU1hcCYgZHJhZ0Rh
dGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50JiBzaXplLCBT
dHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERhdGEoaW50IHNp
emUsIHZvaWQqIGRhdGFCbG9iKTsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsUG9zaXRp
b247IH0KICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1f
YXBwbGljYXRpb25GbGFnczsgfQogICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YTsgfQotICAgIERyYWdPcGVyYXRpb24gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2s7IH0KKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2s7IH0KICAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lvblBvbGljeSA9
IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNQbGFpblRleHQoKSBj
b25zdDsKICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoRHJhZ2dpbmdQdXJwb3Nl
ID0gRHJhZ2dpbmdQdXJwb3NlOjpGb3JFZGl0aW5nKSBjb25zdDsKQEAgLTEyOSw3ICsxMjksNyBA
QCBwcml2YXRlOgogICAgIEludFBvaW50IG1fY2xpZW50UG9zaXRpb247CiAgICAgSW50UG9pbnQg
bV9nbG9iYWxQb3NpdGlvbjsKICAgICBEcmFnRGF0YVJlZiBtX3BsYXRmb3JtRHJhZ0RhdGE7Ci0g
ICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKKyAgICBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CiAgICAg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZlY3RvcjxTdHJp
bmc+IG1fZmlsZU5hbWVzOwogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1f
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9EcmFnRGF0YUNvY29hLm1tCmluZGV4IDljY2FmYzBjZDdhLi4zYTEyODlkNGJjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0x
MTYsNyArMTE2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3RlYm9hcmRUeXBlKCkK
ICNlbmRpZgogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3Mg
ZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9u
TWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZs
YWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFj
dGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwg
bV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0
YShkYXRhKQpAQCAtMTMxLDcgKzEzMSw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJl
ZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7CiB9
CiAKLURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxh
Z3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0
aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFt
ZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBE
cmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQ
b3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBt
X3BsYXRmb3JtRHJhZ0RhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0
aWxpdGllcy5jcHAKaW5kZXggMGMwMTNjZjY3ZWUuLjA4YzJiZWE3YzZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcApAQCAtMTQ5LDQ5ICsxNDksNDkg
QEAgdW5zaWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pCiAg
ICAgcmV0dXJuIDEgPDwgKDggKyBidXR0b24gLSAxKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBnZGtE
cmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQorT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0Fj
dGlvbiBnZGtBY3Rpb24pCiB7Ci0gICAgLy8gV2UgaGF2ZSBubyBnb29kIHdheSB0byBkZXRlY3Qg
RHJhZ09wZXJhdGlvbkV2ZXJ5IG90aGVyIHRoYW4KKyAgICAvLyBXZSBoYXZlIG5vIGdvb2Qgd2F5
IHRvIGRldGVjdCBhbnlEcmFnT3BlcmF0aW9uKCkgb3RoZXIgdGhhbgogICAgIC8vIHRvIHVzZSBp
dCB3aGVuIGFsbCBhcHBsaWNhYmxlIGZsYWdzIGFyZSBvbi4KICAgICBpZiAoZ2RrQWN0aW9uICYg
R0RLX0FDVElPTl9DT1BZCiAgICAgICAgICYmIGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRQog
ICAgICAgICAmJiBnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0xJTkspCi0gICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uRXZlcnk7CisgICAgICAgIHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CiAK
LSAgICB1bnNpZ25lZCBhY3Rpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gYWN0aW9uOwogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0NP
UFkpCi0gICAgICAgIGFjdGlvbiB8PSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgYWN0aW9u
LmFkZChEcmFnT3BlcmF0aW9uQ29weSk7CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05f
TU9WRSkKLSAgICAgICAgYWN0aW9uIHw9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICBhY3Rp
b24uYWRkKERyYWdPcGVyYXRpb25Nb3ZlKTsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElP
Tl9MSU5LKQotICAgICAgICBhY3Rpb24gfD0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgIGFj
dGlvbi5hZGQoRHJhZ09wZXJhdGlvbkxpbmspOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERy
YWdPcGVyYXRpb24+KGFjdGlvbik7CisgICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotR2RrRHJhZ0Fj
dGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhEcmFnT3BlcmF0aW9uIGNvcmVBY3Rp
b24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBjb3JlQWN0aW9uKQogewogICAgIHVuc2lnbmVkIGdka0FjdGlvbiA9
IDA7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKGNv
cmVBY3Rpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0Fj
dGlvbj4oZ2RrQWN0aW9uKTsKIAotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkNv
cHkpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAg
ICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0aW9uICYg
RHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJh
dGlvbk1vdmUpKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlm
IChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29u
dGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElP
Tl9MSU5LOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlv
bik7CiB9CiAKLUdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlv
bihEcmFnT3BlcmF0aW9uIGNvcmVBY3Rpb24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25U
b1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24p
CiB7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5IHx8IGNvcmVBY3Rp
b24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAoY29yZUFjdGlvbiA9PSBhbnlEcmFnT3Bl
cmF0aW9uKCkgfHwgY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAg
ICAgIHJldHVybiBHREtfQUNUSU9OX0NPUFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3Bl
cmF0aW9uTW92ZSkKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92
ZSkpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24g
JiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3Bl
cmF0aW9uTGluaykpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX0xJTks7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1V0aWxpdGllcy5oCmluZGV4IDVhYWI0ZWI3OWEyLi4xOThiYzhlMjUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaApAQCAtNTEsOCArNTEs
OCBAQCBTdHJpbmcgZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKIAogV0VCQ09SRV9FWFBPUlQgdW5z
aWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pOwogCi1XRUJD
T1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2Rr
RHJhZ0FjdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25U
b0dka0RyYWdBY3Rpb25zKERyYWdPcGVyYXRpb24pOwotV0VCQ09SRV9FWFBPUlQgR2RrRHJhZ0Fj
dGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKERyYWdPcGVyYXRpb24pOwor
V0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0Ry
YWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9u
IGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7
CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0Ry
YWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKaW5kZXgg
ZWUwZDhiMjYwY2MuLjE4ODcwZjIyNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9EcmFnRGF0YVdpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMiBCYWlkdSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC00MSw3ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERyYWdEYXRhOjpE
cmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlv
biBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKKyAgICBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0
aW9uRmxhZ3MgZmxhZ3MpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQog
ICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1E
cmFnRGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYzZlNWExZDVmMi4uZTIxZjNkODdkOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFw
cGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGZvciBtYXNr
IHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0lu
dGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OmNvcmVEcmFnT3BlcmF0aW9uTWFzayk6CisgICAg
ICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGluZy4KKyAgICAgICAg
KiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVE
cmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFbmRl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rp
ZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6XSk6CisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbkZv
clVJRHJvcE9wZXJhdGlvbik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0RhdGFGb3JE
cm9wU2Vzc2lvbjpkcmFnRGVzdGluYXRpb25BY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgZHJhZ0ludGVyYWN0aW9uOndpbGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjpzZXNzaW9u
Ol0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uOmRp
ZEVuZFdpdGhPcGVyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVy
YWN0aW9uOnNlc3Npb25EaWRFbmQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRk
aXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24pOgorCiAyMDIwLTA2LTAyICBDaHJpc3RvcGhlciBS
ZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OW3IyNjA4NDRd
OiBbR1RLXVtXUEVdIEluc3BlY3RvciBHUmVzb3VyY2Ugbm8gbG9uZ2VyIHVwZGF0ZWQgYWZ0ZXIg
V2ViSW5zcGVjdG9yVUkgZmlsZSB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lv
cy9VSUtpdFNQSS5oCmluZGV4IDJkNDNiYWViZjhlLi5hYmVlMjU1NDdjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTEwMjUsMTIgKzEwMjUsNiBAQCBD
R0Zsb2F0IFVJUm91bmRUb1NjcmVlblNjYWxlKENHRmxvYXQgdmFsdWUsIFVJU2NyZWVuICopOwog
CiBXVEZfRVhURVJOX0NfRU5ECiAKLXR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBVSURy
YWdPcGVyYXRpb24pCi17Ci0gICAgVUlEcmFnT3BlcmF0aW9uTm9uZSA9IDAsCi0gICAgVUlEcmFn
T3BlcmF0aW9uRXZlcnkgPSBOU1VJbnRlZ2VyTWF4LAotfTsKLQogQGludGVyZmFjZSBVSURyYWdJ
bnRlcmFjdGlvbiAoKQogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwgZ2V0dGVyPV9saWZ0
RGVsYXksIHNldHRlcj1fc2V0TGlmdERlbGF5OikgTlNUaW1lSW50ZXJ2YWwgbGlmdERlbGF5Owog
LSAodm9pZClfc2V0QWxsb3dzUG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk6KEJPT0wpYWxsb3dz
UG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQppbmRleCAzZmRkODA0OWQ0OS4uM2RhYTMyY2IyNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA5LDYgKzIwOSw3IEBAIGRlZiB0eXBl
c190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpE
aWN0YXRpb25Db250ZXh0JywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcics
CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcicsCisgICAgICAg
ICdXZWJDb3JlOjpEcmFnT3BlcmF0aW9uJywgICMgRklYTUU6IFJlbW92ZSBhZnRlciBlbnVtIGNs
YXNzIERyYWdPcGVyYXRpb24uCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6Okxp
YldlYlJUQ1NvY2tldElkZW50aWZpZXInLApAQCAtNTg4LDYgKzU4OSw3IEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50
aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAogICAgICAgICAnV2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0Nv
bnRleHQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCc6IFsnPFdl
YkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkRyYWdPcGVyYXRpb24n
OiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJzogWyc8V2ViQ29yZS9GaWxlQ2hvb3Nl
ci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCc6IFsnPFdl
YkNvcmUvU2hhcmVEYXRhLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaAppbmRleCBjODY4YzI3NzNmOC4uODk3
ODlmMzgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tE
cmFnQWN0aW9uc0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtNDAsNCArNDAsMjQgQEAgaW5saW5lIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrKFcKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgVVNFKEFQUEtJVCkKK2lu
bGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25N
YXNrKE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0
aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7
CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBO
U0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJp
dmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7
CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBO
U0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkRlbGV0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQ
S0lUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ0NDM4MTEyOWY5Li5jZThmMmY5OGQxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC0xNTMxLDcgKzE1MzEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUo
RW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGVuY29k
ZXIgPDwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKTsKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRh
Lmdsb2JhbFBvc2l0aW9uKCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRyYWdEYXRhLmRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKKyAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFnRGF0
YS5mbGFncygpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRh
LnBhc3RlYm9hcmROYW1lKCk7CkBAIC0xNTUwLDggKzE1NTAsOCBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZ2xvYmFsUG9zaXRpb24pKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
azsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2spKQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2s7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2spKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBh
cHBsaWNhdGlvbkZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9EcmFnU291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdT
b3VyY2UuaAppbmRleCAzOGEwNjZmNWMzMC4uYjVmY2JmMDlkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBEcmFnU291cmNlKEd0a1dpZGdldCopOwogICAgIH5EcmFnU291cmNl
KCk7CiAKLSAgICB2b2lkIGJlZ2luKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJik7CisgICAgdm9pZCBiZWdp
bihXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJik7CiAKIHByaXZhdGU6CiAgICAgR3RrV2lk
Z2V0KiBtX3dlYlZpZXcgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3BwCmluZGV4IDNlZDRjY2MzMjM2Li5lZmRjZWYy
NWQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291
cmNlR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291
cmNlR3RrMy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBEcmFnU291cmNlOjp+RHJhZ1NvdXJjZSgp
CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fd2ViVmlldywgdGhp
cyk7CiB9CiAKLXZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlv
bkRhdGEsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYm
IGltYWdlKQordm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9u
RGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAgaWYgKG1fZHJhZykgewogICAgICAgICBndGtf
ZHJhZ19jYW5jZWwobV9kcmFnLmdldCgpKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIERyYWdT
b3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBEcmFnT3BlcmF0aW9u
IG9wZXJhdGlvbiwgUgogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmNhblNtYXJ0UmVwbGFjZSgp
KQogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVy
bl9zdGF0aWNfc3RyaW5nKCJhcHBsaWNhdGlvbi92bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKSwg
MCwgRHJhZ1RhcmdldFR5cGU6OlNtYXJ0UGFzdGUpOwogCi0gICAgbV9kcmFnID0gZ3RrX2RyYWdf
YmVnaW5fd2l0aF9jb29yZGluYXRlcyhtX3dlYlZpZXcsIGxpc3QuZ2V0KCksIGRyYWdPcGVyYXRp
b25Ub0dka0RyYWdBY3Rpb25zKG9wZXJhdGlvbiksIEdES19CVVRUT05fUFJJTUFSWSwgbnVsbHB0
ciwgLTEsIC0xKTsKKyAgICBtX2RyYWcgPSBndGtfZHJhZ19iZWdpbl93aXRoX2Nvb3JkaW5hdGVz
KG1fd2ViVmlldywgbGlzdC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMob3Bl
cmF0aW9uTWFzayksIEdES19CVVRUT05fUFJJTUFSWSwgbnVsbHB0ciwgLTEsIC0xKTsKICAgICBp
ZiAoaW1hZ2UpIHsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2VTdXJmYWNl
KGltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKSk7CiAgICAgICAgIC8vIFVzZSB0aGUgY2VudGVy
IG9mIHRoZSBkcmFnIGltYWdlIGFzIGhvdHNwb3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCmluZGV4IGQ4YjQzNTY5MzRlLi5jNmFj
YjVhMjc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFn
U291cmNlR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFn
U291cmNlR3RrNC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgRHJhZ1NvdXJjZTo6fkRyYWdTb3VyY2Uo
KQogewogfQogCi12b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rp
b25EYXRhLCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4m
JiBpbWFnZSkKK3ZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlv
bkRhdGEsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrLCBSZWZQdHI8U2hh
cmVhYmxlQml0bWFwPiYmIGltYWdlKQogewogICAgIGlmIChtX2RyYWcpIHsKICAgICAgICAgZ2Rr
X2RyYWdfZHJvcF9kb25lKG1fZHJhZy5nZXQoKSwgRkFMU0UpOwpAQCAtODksNyArODksNyBAQCB2
b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBEcmFn
T3BlcmF0aW9uIG9wZXJhdGlvbiwgUgogICAgIGF1dG8qIHN1cmZhY2UgPSBndGtfbmF0aXZlX2dl
dF9zdXJmYWNlKGd0a193aWRnZXRfZ2V0X25hdGl2ZShtX3dlYlZpZXcpKTsKICAgICBhdXRvKiBk
ZXZpY2UgPSBnZGtfc2VhdF9nZXRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0
KGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkobV93ZWJWaWV3KSkpOwogICAgIEdSZWZQdHI8R2RrQ29u
dGVudFByb3ZpZGVyPiBwcm92aWRlciA9IGFkb3B0R1JlZihnZGtfY29udGVudF9wcm92aWRlcl9u
ZXdfdW5pb24ocHJvdmlkZXJzLmRhdGEoKSwgcHJvdmlkZXJzLnNpemUoKSkpOwotICAgIG1fZHJh
ZyA9IGFkb3B0R1JlZihnZGtfZHJhZ19iZWdpbihzdXJmYWNlLCBkZXZpY2UsIHByb3ZpZGVyLmdl
dCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhvcGVyYXRpb24pLCAwLCAwKSk7Cisg
ICAgbV9kcmFnID0gYWRvcHRHUmVmKGdka19kcmFnX2JlZ2luKHN1cmZhY2UsIGRldmljZSwgcHJv
dmlkZXIuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKG9wZXJhdGlvbk1hc2sp
LCAwLCAwKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2RyYWcuZ2V0KCksICJkbmQtZmluaXNo
ZWQiLCBHX0NBTExCQUNLKCtbXShHZGtEcmFnKiBndGtEcmFnLCBncG9pbnRlciB1c2VyRGF0YSkg
ewogICAgICAgICBhdXRvJiBkcmFnID0gKnN0YXRpY19jYXN0PERyYWdTb3VyY2UqPih1c2VyRGF0
YSk7CiAgICAgICAgIGlmIChkcmFnLm1fZHJhZy5nZXQoKSAhPSBndGtEcmFnKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaAppbmRleCA4YzNiMTBlMTA1MC4u
YTAwNDUwMGIwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+IG1fcG9zaXRpb247CiAgICAgdW5zaWduZWQgbV9kYXRhUmVxdWVzdENvdW50IHsg
MCB9OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0
YTsKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIG1fb3BlcmF0aW9uIHsgV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbk5vbmUgfTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBt
X29wZXJhdGlvbjsKICNpZiBVU0UoR1RLNCkKICAgICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9j
YW5jZWxsYWJsZTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGMxM2IyOWIzMWRjLi4xYzUxOTVmMjc2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAKQEAgLTIxNywxMSArMjE3LDExIEBAIHZvaWQgRHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlv
bigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBwYWdlLT5jdXJy
ZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChvcGVyYXRpb24gPT0gbV9vcGVyYXRpb24pCisg
ICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29wZXJhdGlvbikgfHwgKm9wZXJhdGlvbiA9PSAqbV9v
cGVyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9u
OwotICAgIGdka19kcmFnX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub1Npbmds
ZUdka0RyYWdBY3Rpb24obV9vcGVyYXRpb24pLCBHREtfQ1VSUkVOVF9USU1FKTsKKyAgICBnZGtf
ZHJhZ19zdGF0dXMobV9kcm9wLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0
aW9uKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
KHsgfSkpLCBHREtfQ1VSUkVOVF9USU1FKTsKIH0KIAogdm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZVRp
bWVyRmlyZWQoKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6bGVhdmVUaW1l
ckZpcmVkKCkKICAgICBhdXRvKiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJ
VF9XRUJfVklFV19CQVNFKG1fd2ViVmlldykpOwogICAgIEFTU0VSVChwYWdlKTsKIAotICAgIERy
YWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEudmFsdWUoKSwgKm1fcG9zaXRpb24sIGNv
bnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93ZWJWaWV3LCAqbV9wb3NpdGlvbiksIERy
YWdPcGVyYXRpb25Ob25lKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmbV9zZWxlY3Rpb25EYXRh
LnZhbHVlKCksICptX3Bvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KG1f
d2ViVmlldywgKm1fcG9zaXRpb24pLCB7IH0pOwogICAgIHBhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0Rh
dGEpOwogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCmluZGV4
IDUxY2EzZTdiODIxLi4zNjFlNGZhNWM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgRHJvcFRh
cmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7CiAKICAgICAgICAgZHJvcC5lbnRlcih7IGNs
YW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRvSW50ZWdlcih5KSB9KTsKLSAgICAgICAgcmV0dXJuIGRy
YWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29wZXJhdGlvbik7CisgICAg
ICAgIHJldHVybiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVy
YXRpb24gPyAqZHJvcC5tX29wZXJhdGlvbiA6IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IH0p
KTsKICAgICB9KSwgdGhpcyk7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHRhcmdldCwgImRyYWct
bW90aW9uIiwgR19DQUxMQkFDSygrW10oR3RrRHJvcFRhcmdldEFzeW5jKiwgR2RrRHJvcCogZ2Rr
RHJvcCwgZG91YmxlIHgsIGRvdWJsZSB5LCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR2RrRHJhZ0Fj
dGlvbiB7CkBAIC03Miw3ICs3Miw3IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0
KiB3ZWJWaWV3KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+
KDApOwogCiAgICAgICAgIGRyb3AudXBkYXRlKHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9J
bnRlZ2VyKHkpIH0pOwotICAgICAgICByZXR1cm4gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJh
Z0FjdGlvbihkcm9wLm1fb3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25U
b1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29wZXJhdGlvbiA/ICpkcm9wLm1fb3BlcmF0aW9u
IDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgfSkpOwogICAgIH0pLCB0aGlzKTsKIAogICAg
IGdfc2lnbmFsX2Nvbm5lY3QodGFyZ2V0LCAiZHJhZy1sZWF2ZSIsIEdfQ0FMTEJBQ0soK1tdKEd0
a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSB7
CkBAIC0yNzMsMTEgKzI3MywxMSBAQCB2b2lkIERyb3BUYXJnZXQ6OmRpZFBlcmZvcm1BY3Rpb24o
KQogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gcGFnZS0+Y3VycmVu
dERyYWdPcGVyYXRpb24oKTsKLSAgICBpZiAob3BlcmF0aW9uID09IG1fb3BlcmF0aW9uKQorICAg
IGlmICgoIW9wZXJhdGlvbiAmJiAhbV9vcGVyYXRpb24pIHx8IG9wZXJhdGlvbiA9PSBtX29wZXJh
dGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247Ci0g
ICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0Fj
dGlvbnMobV9vcGVyYXRpb24pLCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKG1f
b3BlcmF0aW9uKSk7CisgICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJh
dGlvblRvR2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRpb24gPyAqbV9vcGVyYXRpb24gOiBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbih7IH0pKSwgZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlv
bihtX29wZXJhdGlvbiA/ICptX29wZXJhdGlvbiA6IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7
IH0pKSk7CiB9CiAKIHZvaWQgRHJvcFRhcmdldDo6bGVhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA2NWU2OWMyYzU2
ZS4uMGFlZTRiYzkzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMjAsOSArMzIwLDkgQEAgdm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIH0KIAogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFydERyYWcoU2Vs
ZWN0aW9uRGF0YSYmIHNlbGVjdGlvbiwgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnN0
YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gZHJhZ09wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdl
KQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdFQktJVF9XRUJfVklFV19CQVNF
KG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0aW9uKSwgZHJhZ09wZXJhdGlvbiwgV1RGTW92
ZShkcmFnSW1hZ2UpKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXRUJLSVRfV0VC
X1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBXVEZNb3ZlKHNlbGVjdGlvbiksIGRyYWdPcGVyYXRp
b25NYXNrLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGVkMzllNzRkZGU4Li4yNzAwOTk4
MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVu
dEltcGwuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25E
aWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1Nu
YXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0
YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRy
YWdJbWFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbigpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggZmU0
ZTdhYzAzMWMuLjQ0ZGI0NDg5MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjA1NCwxMyArMjA1NCwxMyBA
QCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcEFyZWEoV2ViS2l0V2ViVmlld0Jhc2Uq
IHdlYlZpZXdCYXNlLCBjb25zdCBJbnRSZQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
LXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZp
ZXdCYXNlLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgRHJhZ09wZXJhdGlvbiBkcmFn
T3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQordm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIFNlbGVj
dGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09w
ZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAgV2Vi
S2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAgaWYg
KCFwcml2LT5kcmFnU291cmNlKQogICAgICAgICBwcml2LT5kcmFnU291cmNlID0gbWFrZVVuaXF1
ZTxEcmFnU291cmNlPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CiAKLSAgICBwcml2LT5kcmFn
U291cmNlLT5iZWdpbihXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpLCBkcmFnT3BlcmF0aW9uLCBXVEZN
b3ZlKGltYWdlKSk7CisgICAgcHJpdi0+ZHJhZ1NvdXJjZS0+YmVnaW4oV1RGTW92ZShzZWxlY3Rp
b25EYXRhKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdURk1vdmUoaW1hZ2UpKTsKIAogI2lmICFVU0Uo
R1RLNCkKICAgICAvLyBBIGRyYWcgc3RhcnRpbmcgc2hvdWxkIHByZXZlbnQgYSBkb3VibGUtY2xp
Y2sgZnJvbSBoYXBwZW5pbmcuIFRoaXMgbWlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4IDFj
NGRmMTI3ZWM0Li5lYjdmODZlMDhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCkBAIC04Miw3ICs4
Miw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlByb2Nlc3MoV2ViS2l0
V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VQYWdlQ2xvc2VkKFdlYktpdFdl
YlZpZXdCYXNlKik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSosIFdlYkNvcmU6OlNlbGVjdGlvbkRh
dGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0
bWFwPiYmKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmlld0Jh
c2UqLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPiwgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiYmKTsKIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2ViS2l0V2ViVmlld0Jh
c2UqKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IDJlMzllYTZjZmU4Li42OWI2MmRlMjUyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTM5MTMsNyArMzkxMyw3IEBAIHZv
aWQgV2ViVmlld0ltcGw6OmRyYWdnZWRJbWFnZShOU0ltYWdlICosIENHUG9pbnQgZW5kUG9pbnQs
IE5TRHJhZ09wZXJhdGlvbiBvcGVyCiAgICAgc2VuZERyYWdFbmRUb1BhZ2UoZW5kUG9pbnQsIG9w
ZXJhdGlvbik7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKENHUG9p
bnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIFdlYlZpZXdJbXBs
OjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gZHJh
Z09wZXJhdGlvbk1hc2spCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KICAgICBOU1BvaW50IHdpbmRvd0ltYWdlTG9jID0gW1ttX3ZpZXcgd2luZG93XSBjb252ZXJ0
U2NyZWVuVG9CYXNlOk5TUG9pbnRGcm9tQ0dQb2ludChlbmRQb2ludCldOwpAQCAtMzkyMyw3ICsz
OTIzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UoQ0dQb2ludCBlbmRQ
b2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKICAgICAvLyBQcmV2ZW50IHF1ZXVlZCBt
b3VzZURyYWdnZWQgZXZlbnRzIGZyb20gY29taW5nIGFmdGVyIHRoZSBkcmFnIGFuZCBmYWtlIG1v
dXNlVXAgZXZlbnQuCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gdHJ1ZTsKIAot
ICAgIG1fcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50KHdpbmRvd01vdXNlTG9jKSwg
V2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xvYmFsUG9pbnQod2luZG93TW91c2VMb2MsIFtt
X3ZpZXcgd2luZG93XSkpLCBvcGVyYXRpb24pOworICAgIG1fcGFnZS0+ZHJhZ0VuZGVkKFdlYkNv
cmU6OkludFBvaW50KHdpbmRvd01vdXNlTG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6
Z2xvYmFsUG9pbnQod2luZG93TW91c2VMb2MsIFttX3ZpZXcgd2luZG93XSkpLCBjb3JlRHJhZ09w
ZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KIAogc3RhdGljIFdlYkNvcmU6OkRy
YWdBcHBsaWNhdGlvbkZsYWdzIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKE5TVmlldyAqdmlldywg
aWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCkBAIC0zOTQ3LDcgKzM5NDcsNyBAQCBO
U0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChpZCA8TlNEcmFnZ2lu
Z0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmll
dyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmls
XSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRy
YWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRv
IGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFz
ayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdn
aW5nSW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNr
KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIFdlYkNvcmU6
OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVy
YXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2Vk
KCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogCiAgICAgbV9w
YWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKQEAgLTM5NTYsMTggKzM5NTYsNDIg
QEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJh
Z2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7
CiB9CiAKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCit7CisgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQorICAg
ICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHN3aXRjaCAoKmRyYWdPcGVy
YXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICBy
ZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25MaW5rOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTGluazsKKyAgICBjYXNlIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0
aW9uR2VuZXJpYzsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOgorICAg
ICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAg
ICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGU6CisgICAgICAgIHJldHVybiBOU0Ry
YWdPcGVyYXRpb25EZWxldGU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7Cit9CisKIE5TRHJhZ09wZXJhdGlvbiBXZWJW
aWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZv
KQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpk
cmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwogICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9k
cmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAg
YXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOworICAgIGF1dG8g
ZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CiAgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0Rh
dGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbk1hc2ssIGFwcGxp
Y2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZv
KSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAgICAgbV9wYWdlLT5kcmFnVXBkYXRlZChk
cmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKIAogICAgIE5T
SW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9wYWdlLT5jdXJyZW50RHJhZ051
bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKIAotICAgIGlmIChtX3BhZ2UtPmN1cnJlbnREcmFn
T3BlcmF0aW9uKCkgPT0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKCFtX3Bh
Z2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpCiAgICAgICAgIG51bWJlck9mVmFsaWRJdGVtc0Zv
ckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwogCiAgICAgTlNEcmFn
Z2luZ0Zvcm1hdGlvbiBkcmFnZ2luZ0Zvcm1hdGlvbiA9IE5TRHJhZ2dpbmdGb3JtYXRpb25Ob25l
OwpAQCAtMzk3OSwxNCArNDAwMywxNCBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRy
YWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBpZiAo
ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nRm9ybWF0aW9uICE9IGRyYWdnaW5nRm9ybWF0aW9uKQogICAg
ICAgICBbZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nRm9ybWF0aW9uOmRyYWdnaW5nRm9ybWF0aW9u
XTsKIAotICAgIHJldHVybiBtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0
dXJuIGtpdChtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpOwogfQogCiB2b2lkIFdlYlZp
ZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykK
IHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFn
RGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwg
YXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2lu
Z0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNs
aWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRB
dXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAgICAgbV9wYWdlLT5kcmFnRXhpdGVkKGRy
YWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogICAgIG1fcGFn
ZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgZHJhZ2dpbmdJbmZvLm51bWJl
ck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9w
OwpAQCAtNDAwMiw3ICs0MDI2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVy
YXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6
SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2lu
Z0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChX
ZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmll
dyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNv
cmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCks
IGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9IG5ldyBX
ZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09w
ZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFw
cGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJ
bmZvKSk7CiAKICAgICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3Rl
Ym9hcmQudHlwZXM7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYWM1ZDkwZWI1
MzkuLjJlNjY2MjhhYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0y
NTAsNyArMjUwLDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAj
aWYgUExBVEZPUk0oR1RLKQotICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiYmIGRyYWdJbWFnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSA9IDA7CiAjZWxzZQogICAgIHZpcnR1
YWwgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZSYpIHsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCAwZmM5YjhlNWNkMC4uZDQzYzc5MzI3MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjQyNCwxMSArMjQyNCw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24gYWN0aW9uLCBEcmFnCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJD
b3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNP
dmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBJ
bnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRSZWN0
KQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihPcHRp
b25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uLCBXZWJDb3JlOjpEcmFn
SGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlu
cHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBJbnRSZWN0JiBp
bnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRSZWN0KQogewotICAg
IE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBkcmFnT3BlcmF0aW9uIDw9IERyYWdPcGVyYXRpb25E
ZWxldGUpOwotCi0gICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IHN0YXRpY19jYXN0PERyYWdP
cGVyYXRpb24+KGRyYWdPcGVyYXRpb24pOworICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBk
cmFnT3BlcmF0aW9uOwogICAgIG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhvZCA9IGRyYWdIYW5k
bGluZ01ldGhvZDsKICAgICBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0ID0gbW91c2VJc092
ZXJGaWxlSW5wdXQ7CiAgICAgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQg
PSBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkOwpAQCAtMjQzOCwyMCArMjQzNiwyMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRy
YWdPcGVyYXRpb24sIFdlYkNvcgogfQogCiAjaWYgUExBVEZPUk0oR1RLKQotdm9pZCBXZWJQYWdl
UHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgdWludDY0X3Qg
ZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhh
bmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVj
dGlvbkRhdGEsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9u
TWFzaywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSkKIHsK
ICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UgPSAhZHJhZ0ltYWdlSGFuZGxl
LmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZHJhZ0ltYWdlSGFuZGxlKSA6IG51
bGxwdHI7Ci0gICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhXVEZNb3ZlKHNlbGVjdGlvbkRhdGEp
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnT3BlcmF0aW9uKSwgV1RG
TW92ZShkcmFnSW1hZ2UpKTsKKyAgICBwYWdlQ2xpZW50KCkuc3RhcnREcmFnKFdURk1vdmUoc2Vs
ZWN0aW9uRGF0YSksIGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOwogCiAg
ICAgZGlkU3RhcnREcmFnKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdF
bmRlZChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmRyYWdF
bmRlZChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRp
b25NYXNrKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwg
Z2xvYmFsUG9zaXRpb24sIG9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdPcGVyYXRpb25N
YXNrKSk7CiAgICAgc2V0RHJhZ0NhcmV0UmVjdCh7IH0pOwogfQogCkBAIC0yNDgyLDcgKzI0ODAs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJhZ2dpbmcoKQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCkKIHsKLSAgICBtX2N1cnJlbnREcmFn
T3BlcmF0aW9uID0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgbV9jdXJyZW50RHJh
Z09wZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRo
b2QgPSBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmU7CiAgICAgbV9jdXJyZW50RHJhZ0lzT3ZlckZp
bGVJbnB1dCA9IGZhbHNlOwogICAgIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2Vw
dGVkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggN2JhOWY4
YjVlYzAuLjdmNjg3MGM4NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTE1Niw4ICsxMTU2LDggQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybURyYWdPcGVy
YXRpb24oV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
JiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybURyYWdPcGVyYXRpb24oYm9vbCBoYW5kbGVkKTsKIAot
ICAgIHZvaWQgZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVy
YXRpb24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJ
bnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWRpdGFibGVF
bGVtZW50UmVjdCk7Ci0gICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IHVpbnQ2NF90IG9wZXJhdGlvbik7CisgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFdlYkNvcmU6OkRyYWdIYW5k
bGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJ
dGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCk7CisgICAgdm9pZCBk
cmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPik7CiAgICAgdm9pZCBkaWRTdGFydERyYWcoKTsKICAgICB2b2lkIGRyYWdDYW5j
ZWxsZWQoKTsKICAgICB2b2lkIHNldERyYWdDYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpOwpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHZpc2libGVVUkwsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBhcmNoaXZlSGFuZGxlLCB1
aW50NjRfdCBhcmNoaXZlU2l6ZSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgdm9p
ZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50NjRfdCBkcmFnT3BlcmF0
aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsKKyAgICB2b2lk
IHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZSk7
CiAjZW5kaWYKICNlbmRpZgogCkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gY3VycmVudERyYWdPcGVyYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CisgICAgT3B0aW9uYWw8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY3VycmVudERyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CiAgICAgV2ViQ29yZTo6RHJhZ0hhbmRsaW5n
TWV0aG9kIGN1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnREcmFnSGFuZGxpbmdNZXRob2Q7IH0KICAgICBib29sIGN1cnJlbnREcmFnSXNPdmVyRmlsZUlu
cHV0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dDsgfQogICAg
IHVuc2lnbmVkIGN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkOyB9CkBAIC0yNjA3
LDcgKzI2MDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgLy8g
Q3VycmVudCBkcmFnIGRlc3RpbmF0aW9uIGRldGFpbHMgYXJlIGRlbGl2ZXJlZCBhcyBhbiBhc3lu
Y2hyb25vdXMgcmVzcG9uc2UsCiAgICAgLy8gc28gd2UgcHJlc2VydmUgdGhlbSB0byBiZSB1c2Vk
IHdoZW4gdGhlIG5leHQgZHJhZ2dpbmcgZGVsZWdhdGUgY2FsbCBpcyBtYWRlLgotICAgIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24gbV9jdXJyZW50RHJhZ09wZXJhdGlvbiB7IFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Ob25lIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gbV9j
dXJyZW50RHJhZ09wZXJhdGlvbjsKICAgICBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgbV9j
dXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kIHsgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kOjpO
b25lIH07CiAgICAgYm9vbCBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0IHsgZmFsc2UgfTsK
ICAgICB1bnNpZ25lZCBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAyZDIzZTRiNjYwYi4uYWRjYTE1YzRiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxMCw3ICszMTAsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBEcmFnIGFuZCBkcm9wIG1lc3NhZ2Vz
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgZW51bTp1aW50OF90IFdlYkNvcmU6OkRyYWdI
YW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5w
dXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIFdlYkNvcmU6OkludFJlY3Qg
aW5zZXJ0aW9uUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBlZGl0YWJsZUVsZW1lbnRSZWN0KQorICAg
IERpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BlcmF0aW9uLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RHJhZ0hhbmRsaW5n
TWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5z
aWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgV2ViQ29yZTo6SW50UmVjdCBpbnNlcnRp
b25SZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGVkaXRhYmxlRWxlbWVudFJlY3QpCiAgICAgRGlkRW5k
RHJhZ2dpbmcoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoRFJBR19T
VVBQT1JUKQpAQCAtMzE4LDcgKzMxOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAg
ICAgU2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUsIFN0
cmluZyBmaWxlbmFtZSwgU3RyaW5nIGV4dGVuc2lvbiwgU3RyaW5nIHRpdGxlLCBTdHJpbmcgdXJs
LCBTdHJpbmcgdmlzaWJsZVVSTCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBhcmNoaXZl
SGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykg
JiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBTdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSBzZWxlY3Rpb25EYXRhLCB1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSkKKyAgICBTdGFydERyYWcoV2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YSBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4gZHJhZ09wZXJhdGlvbk1hc2ssIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgZHJh
Z0ltYWdlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
aW5kZXggNDM5ZGI5OTc3ZWUuLjY5NmI5MDg4ZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTcyODUs
NyArNzI4NSw3IEBAIC0gKHZvaWQpX2RpZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6KEJPT0wpc3Rh
cnRlZAogICAgICAgICBpZiAoc3RhcnRlZCkgewogICAgICAgICAgICAgLy8gQSBjbGllbnQgb2Yg
dGhlIE9iamVjdGl2ZSBDIFNQSSBvciBVSUtpdCBtaWdodCBoYXZlIHByZXZlbnRlZCB0aGUgZHJh
ZyBmcm9tIGJlZ2lubmluZyBlbnRpcmVseSBpbiB0aGUgVUkgcHJvY2VzcywgaW4gd2hpY2ggY2Fz
ZQogICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBiYWxhbmNlIHRoZSBgZHJhZ3N0YXJ0YCBldmVu
dCB3aXRoIGEgYGRyYWdlbmRgLgotICAgICAgICAgICAgX3BhZ2UtPmRyYWdFbmRlZChwb3NpdGlv
bkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5v
bmUpOworICAgICAgICAgICAgX3BhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZvckRyYWdFbmQsIHBv
c2l0aW9uRm9yRHJhZ0VuZCwgeyB9KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTczMDMsMjQg
KzczMDMsNDIgQEAgLSAodm9pZCljb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNl
c3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIG8KICAgICAgICAgKm91dEdsb2JhbFBv
aW50ID0gbG9jYXRpb25JbkNvbnRlbnRWaWV3OwogfQogCi1zdGF0aWMgVUlEcm9wT3BlcmF0aW9u
IGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBVSURyb3BPcGVyYXRpb24gZHJvcE9wZXJhdGlvbkZvcldl
YkNvcmVEcmFnT3BlcmF0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IG9wZXJh
dGlvbikKIHsKLSAgICBpZiAob3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUp
Ci0gICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Nb3ZlOwotCi0gICAgaWYgKG9wZXJhdGlv
biAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KQotICAgICAgICByZXR1cm4gVUlEcm9wT3Bl
cmF0aW9uQ29weTsKLQorICAgIGlmIChvcGVyYXRpb24pIHsKKyAgICAgICAgaWYgKCpvcGVyYXRp
b24gJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgICAgIHJldHVybiBVSURy
b3BPcGVyYXRpb25Nb3ZlOworICAgICAgICBpZiAoKm9wZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Db3B5KQorICAgICAgICAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbkNvcHk7Cisg
ICAgfQogICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25DYW5jZWw7CiB9CiAKK3N0YXRpYyBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25Gb3JVSURyb3BP
cGVyYXRpb24oVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb24pCit7CisgICAgc3dpdGNoIChk
cm9wT3BlcmF0aW9uKSB7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25DYW5jZWw6CisgICAgICAg
IHJldHVybiB7IH07CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Gb3JiaWRkZW46CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBjYXNlIFVJRHJvcE9w
ZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weTsK
KyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTW92ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIHsgfTsKK30KKwogLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0RhdGFGb3JEcm9wU2Vz
c2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOihX
S0RyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVzdGluYXRpb25BY3Rpb24KIHsKICAgICBDR1Bv
aW50IGdsb2JhbDsKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21wdXRlQ2xpZW50
QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lvbiBvdXRDbGllbnRQb2ludDomY2xp
ZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogCi0gICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
biBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
KHNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbiA/IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25FdmVy
eSA6IChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgJiB+V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bk1vdmUpKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gV2ViQ29yZTo6YW55RHJhZ09w
ZXJhdGlvbigpOworICAgIGlmICghc2Vzc2lvbi5hbGxvd3NNb3ZlT3BlcmF0aW9uKQorICAgICAg
ICBkcmFnT3BlcmF0aW9uTWFzay5yZW1vdmUoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOwog
ICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBX
ZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNv
cmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIFdlYktpdDo6Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2soZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKSB9OwogfQogCkBAIC03NDI0LDcgKzc0NDIsOCBA
QCAtICh2b2lkKV9kaWRQZXJmb3JtRHJhZ09wZXJhdGlvbjooQk9PTCloYW5kbGVkCiAgICAgQ0dQ
b2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRy
b3BTZXNzaW9uOmRyb3BTZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9p
bnQ6Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwot
ICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBfcGFnZS0+Y3VycmVudERyYWdPcGVyYXRp
b24oKSk7CisgICAgYXV0byBjdXJyZW50RHJhZ09wZXJhdGlvbiA9IF9wYWdlLT5jdXJyZW50RHJh
Z09wZXJhdGlvbigpOworICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBjdXJyZW50RHJh
Z09wZXJhdGlvbiA/ICpjdXJyZW50RHJhZ09wZXJhdGlvbiA6IE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPih7IH0pKTsKIH0KIAogLSAodm9pZClfZGlkQ2hhbmdlRHJhZ0NhcmV0UmVj
dDooQ0dSZWN0KXByZXZpb3VzUmVjdCBjdXJyZW50UmVjdDooQ0dSZWN0KXJlY3QKQEAgLTgwMTMs
NyArODAzMiw3IEBAIC0gKHZvaWQpZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAq
KWludGVyYWN0aW9uIHdpbGxBbmltYXRlTGlmdFdpdGhBbmltCiAgICAgICAgICAgICBSRUxFQVNF
X0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiBlbmRlZCBhdCBzdGFydDogJXAiLCBzZXNz
aW9uKTsKICAgICAgICAgICAgIC8vIFRoZSBsaWZ0IHdhcyBjYW5jZWxlZCwgc28gLWRyb3BJbnRl
cmFjdGlvbjpzZXNzaW9uRGlkRW5kOiB3aWxsIG5ldmVyIGJlIGludm9rZWQuIFRoaXMgaXMgdGhl
IGxhc3QgY2hhbmNlIHRvIGNsZWFuIHVwLgogICAgICAgICAgICAgW3Byb3RlY3RlZFNlbGYgY2xl
YW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgICAgICAgICAgcGFnZS0+ZHJhZ0VuZGVk
KHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTm9uZSk7CisgICAgICAgICAgICBwYWdlLT5kcmFnRW5kZWQocG9zaXRpb25Gb3JEcmFn
RW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIHsgfSk7CiAgICAgICAgIH0KICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAgICAgZWxzZQpAQCAtODA0OCw3ICs4MDY3LDcgQEAgLSAodm9pZClk
cmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc2Vzc2lvbjoo
aWQgPFVJRHJhZ1Nlc3MKICAgICAgICAgcmV0dXJuOwogCiAgICAgW3NlbGYgY2xlYW5VcERyYWdT
b3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRy
YWdFbmQoKSksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0
YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBvcGVyYXRpb24pOworICAgIF9wYWdl
LT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIFdlYkNvcmU6OnJvdW5kZWRJbnRQ
b2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5k
KCkpLCBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihvcGVyYXRpb24pKTsKIH0K
IAogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRl
cmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JDYW5jZWxsaW5nSXRlbTooVUlEcmFnSXRl
bSAqKWl0ZW0gd2l0aERlZmF1bHQ6KFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKWRlZmF1bHRQcmV2
aWV3CkBAIC04MjY3LDcgKzgyODYsNyBAQCAtICh2b2lkKWRyb3BJbnRlcmFjdGlvbjooVUlEcm9w
SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uRGlkRW5kOihpZCA8VUlEcgogICAgIENH
UG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JE
cm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6
Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAg
IF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNv
cmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7
CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwg
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIHsgfSk7CiB9CiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggZWVkN2I5OTY4NTcuLjc0ZjQ2Y2NiZjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3Rr
L1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9p
ZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBk
YXRhVHJhbnNmZXIsIEZyYW1lJikKIAogICAgIG1fcGFnZS0+d2lsbFN0YXJ0RHJhZygpOwogCi0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0RHJhZyhkYXRhVHJh
bnNmZXIucGFzdGVib2FyZCgpLnNlbGVjdGlvbkRhdGEoKSwgZGF0YVRyYW5zZmVyLnNvdXJjZU9w
ZXJhdGlvbigpLCBoYW5kbGUpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U3RhcnREcmFnKGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuc2VsZWN0aW9uRGF0YSgp
LCBkYXRhVHJhbnNmZXIuc291cmNlT3BlcmF0aW9uTWFzaygpLCBoYW5kbGUpKTsKIH0KIAogfTsg
Ly8gbmFtZXNwYWNlIFdlYktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNjBiMGVhNzk2MmQuLmU3NzRhMmNiODMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzk0NCwyMiArMzk0NCwy
MiBAQCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIFdlYlBhZ2U6Om5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAK
ICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2ssIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCB1aW50
MzJfdCBmbGFncykKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERy
YWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25E
YXRhLCB1aW50MzJfdCBmbGFncykKIHsKICAgICBpZiAoIW1fcGFnZSkgewotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihE
cmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9
LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5v
bmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
RHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQ
b3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrKSwgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CisgICAg
RHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQ
b3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBzdGF0aWNfY2FzdDxEcmFnQXBw
bGljYXRpb25GbGFncz4oZmxhZ3MpKTsKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2Ug
RHJhZ0NvbnRyb2xsZXJBY3Rpb246OkVudGVyZWQ6IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiBy
ZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVy
ZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJl
c29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGlu
Z01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQo
KSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwg
eyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIERyYWdDb250cm9s
bGVyQWN0aW9uOjpVcGRhdGVkOiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFn
T3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRh
KTsKKyAgICAgICAgYXV0byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihyZXNvbHZlZERyYWdP
cGVyYXRpb24sIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxpbmdNZXRob2QoKSwg
bV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0KCksIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCksIHsgfSwgeyB9KSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zOTc4LDI0ICszOTc4LDI0IEBAIHZvaWQgV2Vi
UGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFj
dGlvbiwgY29uc3QgSW50CiB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBk
cmFnRGF0YSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0ZW5zaW9uc0hhbmRs
ZUFycmF5KQogewogICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVyYXRpb25O
b25lLCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAs
IHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBzd2l0Y2ggKGFjdGlv
bikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkVudGVyZWQ6IHsKLSAgICAgICAg
RHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRHJhZ09w
ZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7
CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxl
cigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJ
c092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNU
b0JlQWNjZXB0ZWQoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRSZWN0SW5S
b290Vmlld0Nvb3JkaW5hdGVzKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmVkaXRh
YmxlRWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlVwZGF0ZWQ6IHsKLSAgICAg
ICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRHJh
Z09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0
YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91
c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRl
bXNUb0JlQWNjZXB0ZWQoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRSZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmVk
aXRhYmxlRWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkV4aXRlZDoKICAgICAg
ICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwg
MCwgeyB9LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQ
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRo
b2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAg
IAogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlBlcmZvcm1EcmFnT3BlcmF0aW9uOiB7
CkBAIC00MDIyLDcgKzQwMjIsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYgogfQogI2VuZGlm
CiAKLXZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0
aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9u
KQordm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRp
b24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2spCiB7CiAgICAgSW50UG9pbnQgYWRqdXN0
ZWRDbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbi54KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ09mZnNldCgpLngoKSwgY2xpZW50UG9zaXRpb24ueSgpICsgbV9wYWdlLT5kcmFn
Q29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS55KCkpOwogICAgIEludFBvaW50IGFkanVzdGVkR2xv
YmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24ueCgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdPZmZzZXQoKS54KCksIGdsb2JhbFBvc2l0aW9uLnkoKSArIG1fcGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnT2Zmc2V0KCkueSgpKTsKQEAgLTQwMzMsNyArNDAzMyw3IEBAIHZvaWQgV2Vi
UGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3Jl
OjpJbnRQb2ludCBnbG9iCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogVGhlc2UgYXJl
IGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGlu
c3RlYWQuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGFkanVzdGVkQ2xpZW50UG9zaXRp
b24sIGFkanVzdGVkR2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6bm93KCks
IDAsIFdlYkNvcmU6Ok5vVGFwKTsKLSAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxl
cigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoRHJhZ09wZXJhdGlvbilvcGVyYXRpb24pOwor
ICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQo
ZXZlbnQsIGRyYWdPcGVyYXRpb25NYXNrKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkRW5kRHJhZ2dpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCBjMmM0OGQxYzkzNi4uNjc5Y2ZkMWI1MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg5OSw3ICs4OTksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50
KCk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShHVEspCi0gICAgdm9p
ZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ss
IFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3QgZmxhZ3MpOworICAgIHZvaWQgcGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBn
bG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50MzJfdCBm
bGFncyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmICFQTEFURk9STShH
VEspCkBAIC05MDcsNyArOTA3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQotICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBv
c2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0
aW9uKTsKKyAgICB2b2lkIGRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlv
biwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlv
bkFjdGlvbigpOwogICAgIHZvaWQgbWF5UGVyZm9ybVVwbG9hZERyYWdEZXN0aW5hdGlvbkFjdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggNTM4ZTY1NzJlNTAuLmFlOTI3NDc2Mzg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTMwOSwxNCArMzA5LDE0IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1
aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICAgICAjIERyYWcg
YW5kIGRyb3AuCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAg
IFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29u
dHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3Qg
ZmxhZ3MpCisgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVudW06dWludDhfdCBXZWJL
aXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50
UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3Jl
OjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3QgZmxhZ3MpCiAjZW5kaWYKICNpZiAh
UExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBh
Y3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQogI2VuZGlmCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBEaWRTdGFydERyYWcoKQotICAgIERyYWdFbmRlZChX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
UG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKKyAgICBEcmFnRW5kZWQoV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2spCiAgICAg
RHJhZ0NhbmNlbGxlZCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwZTY1NjQ5NmM4NC4uOGI4N2RiMzhj
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWRkaXRp
b25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW8KICAg
ICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGljaCBvbmx5IHNlZXMgdGhhdCB0
aGUgY3VycmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcgb25lIGlzIGJlZ2lubmlu
Zy4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBv
c2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCAwLCBOb1RhcCk7CiAgICAgbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbmRlZCgpOwotICAgIG1fcGFnZS0+bWFpbkZyYW1l
KCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIERyYWdPcGVyYXRpb25O
b25lLCBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6WWVzKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCB7IH0sIE1heUV4dGVuZERy
YWdTZXNzaW9uOjpZZXMpOwogCiAgICAgYm9vbCBkaWRIYW5kbGVEcmFnID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS5ldmVudEhhbmRsZXIoKS50cnlUb0JlZ2luRHJhZ0F0UG9pbnQoY2xpZW50UG9zaXRp
b24sIGdsb2JhbFBvc2l0aW9uKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGRpZEhhbmRsZURyYWcpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA0MWRiNjQ3NWU4ZS4uMDI5Nzk4MDQ1MDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0wNi0wMSAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfZHJhZ1Nv
dXJjZUVuZGVkQXQ6b3BlcmF0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcu
bW06CisgICAgICAgIChraXQpOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBkcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZHJhZ2dp
bmdTZXNzaW9uOnNvdXJjZU9wZXJhdGlvbk1hc2tGb3JEcmFnZ2luZ0NvbnRleHQ6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoY29yZURyYWdPcGVyYXRpb25NYXNr
KToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbiB0byBhdm9pZCBjYXN0aW5nLgor
ICAgICAgICAoLVtXZWJWaWV3IGRyYWdEYXRhRm9yU2Vzc2lvbjpjbGllbnQ6Z2xvYmFsOm9wZXJh
dGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0VudGVyZWQ6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdn
aW5nRXhpdGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHBlcmZvcm1EcmFnT3BlcmF0aW9uOl0p
OgorICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNp
b24gZnVuY3Rpb24uCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAg
ICAgKENvY29hRHJhZ09wZXJhdGlvbik6CisgICAgICAgIC0gQWRkIHR5cGVkZWYgc28gY29yZURy
YWdPcGVyYXRpb25NYXNrKCkgbWF5IGJlIHNoYXJlZCBhY3Jvc3MKKyAgICAgICAgICBwbGF0Zm9y
bXMuCisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQgZGVjbGFyYXRpb24uCisg
ICAgICAgIChjb3JlT3B0aW9ucyk6CisgICAgICAgIC0gUmVtb3ZlIHJlZHVuZGFudCBwYXJhbWV0
ZXIgbmFtZS4KKwogMjAyMC0wNi0wMiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2ZXJ0IEZFQVRVUkVTX0RFRklORVMgcmVsYXRlZCBjaGFuZ2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBkNGRlYTdjMzlj
OC4uYjllZWNkYzhkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQpAQCAtOTQyLDcgKzk0Miw3IEBAIC0gKHZvaWQpX3NldFR5cGluZ1N0eWxlOihET01D
U1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUgd2l0aFVuZG9BY3Rpb246KFdlYkNvcmU6CiB9CiAK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpCi0tICh2b2lkKV9kcmFn
U291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRp
b24pb3BlcmF0aW9uCistICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kb3dM
b2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pZHJhZ09wZXJhdGlvbk1hc2sKIHsKICAgICBp
ZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTk1Miw3ICs5NTIs
NyBAQCAtICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0
aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aQogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgZmFr
ZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFsIG9uZXMgaW5zdGVh
ZC4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoV2ViQ29yZTo6SW50UG9p
bnQod2luZG93TG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xvYmFsUG9pbnQod2lu
ZG93TG9jLCBbdmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddKSksCiAgICAgICAgIFdlYkNv
cmU6OkxlZnRCdXR0b24sIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6OkZvcmNl
QXRDbGljaywgV2ViQ29yZTo6Tm9UYXApOwotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmV2ZW50
SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bilvcGVyYXRpb24pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLmRy
YWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlv
bk1hc2spKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShN
QUMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CmluZGV4IDVlNGE4OTA1ZWM4Li5lN2NhNDYxZDkwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqICAgICAgICAgICAoQykgMjAwNiwgMjAwNyBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlz
QGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyMjksNiArNDIyOSwyOCBAQCAtICh2
b2lkKXRvdWNoOihXZWJFdmVudCAqKWV2ZW50CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpICYmIFBMQVRGT1JNKE1BQykKKworc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0
aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCit7CisgICAgaWYg
KG9wZXJhdGlvbk1hc2sgPT0gV2ViQ29yZTo6YW55RHJhZ09wZXJhdGlvbigpKQorICAgICAgICBy
ZXR1cm4gTlNEcmFnT3BlcmF0aW9uRXZlcnk7CisKKyAgICBOU0RyYWdPcGVyYXRpb24gcmVzdWx0
ID0gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSkpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVy
YXRpb25Db3B5OworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25MaW5rKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkxpbms7Cisg
ICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVy
aWMpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uR2VuZXJpYzsKKyAgICBpZiAo
b3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSkpCisg
ICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGlmIChvcGVyYXRp
b25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSkKKyAgICAgICAgcmVz
dWx0IHw9IE5TRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFp
bnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSkpCisgICAgICAgIHJlc3VsdCB8PSBOU0Ry
YWdPcGVyYXRpb25EZWxldGU7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0gKHZvaWQpZHJhZ0ltYWdlOihOU0ltYWdlICop
ZHJhZ0ltYWdlCiAgICAgICAgICAgICAgICBhdDooTlNQb2ludClhdApAQCAtNDI4MCw3ICs0MzAy
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgaWYgKCFwYWdl
KQogICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKIAotICAgIHJldHVybiAoTlNE
cmFnT3BlcmF0aW9uKXBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbigp
OworICAgIHJldHVybiBraXQocGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0
aW9uTWFzaygpKTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4K
QEAgLTQzODYsNyArNDQwOCw3IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1Nlc3Npb246
KE5TRHJhZ2dpbmdTZXNzaW9uICopc2Vzc2lvbiBzb3VyY2VPcGVyYXRpb25NCiAgICAgaWYgKCFw
YWdlKQogICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKIAotICAgIHJldHVybiAo
TlNEcmFnT3BlcmF0aW9uKXBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlv
bigpOworICAgIHJldHVybiBraXQocGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3Bl
cmF0aW9uTWFzaygpKTsKIH0KIAogLSAodm9pZClkcmFnZ2luZ1Nlc3Npb246KE5TRHJhZ2dpbmdT
ZXNzaW9uICopc2Vzc2lvbiBlbmRlZEF0UG9pbnQ6KE5TUG9pbnQpc2NyZWVuUG9pbnQgb3BlcmF0
aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzVlOWYyNWM2MWUuLjA5NzY3N2Q5ZGFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC01ODksNiArNTg5LDky
IEBAIHN0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBjb3Jl
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXCiAgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQorCisj
aWYgIVVTRShBUFBLSVQpCisvLyBTZWUgPFVJS2l0L1VJRHJhZ2dpbmdfUHJpdmF0ZS5oPi4KK3R5
cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfVUlEcmFnT3BlcmF0aW9uKSB7CisgICAgX1VJ
RHJhZ09wZXJhdGlvbk5vbmUgPSAwLAorICAgIF9VSURyYWdPcGVyYXRpb25Db3B5ID0gMSwKKyAg
ICBfVUlEcmFnT3BlcmF0aW9uTW92ZSA9IDE2LAorfTsKKyNlbmRpZgorCitPcHRpb25TZXQ8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJhZ09wZXJh
dGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
IHJlc3VsdDsKKworI2lmIFVTRShBUFBLSVQpCisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09w
ZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHkpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25MaW5rKQorICAgICAgICBy
ZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsKKyAgICBpZiAob3BlcmF0aW9u
ICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlv
blByaXZhdGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZh
dGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICBy
ZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBpZiAob3BlcmF0aW9u
ICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25EZWxldGUpOworI2Vsc2UKKyAgICBpZiAob3BlcmF0aW9uICYgX1VJRHJhZ09w
ZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHkpOworICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAg
cmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CisjZW5kaWYgLy8gVVNFKEFQ
UEtJVCkKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBVU0UoQVBQS0lUKQorc3RhdGlj
IE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJh
Z09wZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAgIHJldHVybiBO
U0RyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dpdGNoICgqZHJhZ09wZXJhdGlvbikgeworICAg
IGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBOU0RyYWdP
cGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbms6CisgICAg
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25HZW5lcmljOwor
ICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6CisgICAgICAgIHJldHVybiBO
U0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1v
dmU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkRl
bGV0ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gTlNE
cmFnT3BlcmF0aW9uTm9uZTsKK30KKyNlbHNlCitzdGF0aWMgX1VJRHJhZ09wZXJhdGlvbiBraXQo
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3sKKyAgICBp
ZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9uZTsK
KworICAgIHN3aXRjaCAoKmRyYWdPcGVyYXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbkNvcHk7CisgICAg
Y2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgcmV0dXJuIF9VSURyYWdP
cGVyYXRpb25Ob25lOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWM6Cisg
ICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Qcml2YXRlOgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7
CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJuIF9V
SURyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0
ZToKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworICAgIH0KKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9uZTsKK30K
KyNlbmRpZiAvLyBVU0UoQVBQS0lUKQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAK
IFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMp
CkBAIC0xOTIzLDcgKzIwMDksNyBAQCAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogCiAtIChXZWJD
b3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNz
aW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFs
UG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KIHsKLSAgICBhdXRvIGRyYWdP
cGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4ob3BlcmF0
aW9uKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNr
KG9wZXJhdGlvbik7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURy
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0Zv
clNlc3Npb246c2Vzc2lvbl0pOwogICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9i
YWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25O
b25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrIH07CiB9CkBAIC0xOTMyLDE0ICsyMDE4LDE0
IEBAIC0gKHVpbnQ2NF90KV9lbnRlcmVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lv
bj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpCiB7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogICAg
IGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lvbiBjbGllbnQ6
Y2xpZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpvcGVyYXRpb25d
OwotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJl
ZChkcmFnRGF0YSk7CisgICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xs
ZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSkpOwogfQogCiAtICh1aW50NjRfdClfdXBkYXRlZERh
dGFJbnRlcmFjdGlvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gY2xpZW50OihDR1BvaW50
KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246
KHVpbnQ2NF90KW9wZXJhdGlvbgogewogICAgIFdlYlRocmVhZExvY2soKTsKICAgICBhdXRvIGRy
YWdEYXRhID0gW3NlbGYgZHJhZ0RhdGFGb3JTZXNzaW9uOnNlc3Npb24gY2xpZW50OmNsaWVudFBv
c2l0aW9uIGdsb2JhbDpnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246b3BlcmF0aW9uXTsKLSAgICBy
ZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0Rh
dGEpOworICAgIHJldHVybiBraXQoX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJh
Z1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAodm9pZClfZXhpdGVkRGF0YUludGVyYWN0aW9u
OihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRp
b24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3Bl
cmF0aW9uCkBAIC02NzQ4LDggKzY4MzQsOCBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdF
bnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBk
cmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rp
b25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIHJldHVybiBjb3JlKHNl
bGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICBXZWJDb3Jl
OjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJh
Z09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2td
KSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNr
Rm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJldHVybiBraXQoY29yZShzZWxm
KS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSkpOwogfQogCiAtIChOU0Ry
YWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5n
SW5mbwpAQCAtNjc2MSw4ICs2ODQ3LDggQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nVXBk
YXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJh
Z2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAgIFdlYkNvcmU6OkRyYWdEYXRh
IGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9u
TWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICByZXR1cm4gcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CisgICAgV2ViQ29yZTo6RHJhZ0Rh
dGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRp
b25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxm
IGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdn
aW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICByZXR1cm4ga2l0KHBhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAodm9pZClkcmFnZ2luZ0V4aXRl
ZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAgLTY3NzMsNyArNjg1OSw3IEBA
IC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZv
CiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xv
Y2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBv
aW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAg
ICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFs
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5n
SW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xp
ZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5m
b10pOwogICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFnRGF0YSk7CiB9
CiAKQEAgLTY3ODYsNyArNjg3Miw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlk
IDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6Oklu
dFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
TG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgYXV0byogZHJhZ0RhdGEgPSBuZXcgV2Vi
Q29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsKKyAgICBh
dXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVu
dCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9d
KTsKIAogICAgIE5TQXJyYXkqIHR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2Fy
ZC50eXBlczsKICAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZlUGJvYXJk
VHlwZV0gJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6OmxlZ2FjeUZpbGVzUHJvbWlz
ZVBhc3RlYm9hcmRUeXBlKCldKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA3ZDcwYzA0YTBjZS4uZDU5NzZjNDRlZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2LDYgKzM2LDcg
QEAKICNpZmRlZiBfX2NwbHVzcGx1cwogCiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4
dENsaWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GaW5kT3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudEVudW1zLmg+CkBAIC04OSw3ICs5MCwxNyBAQCBj
bGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiAKLVdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlv
bnMpOworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisjaWYgVVNFKEFQUEtJVCkKK3R5cGVkZWYg
TlNEcmFnT3BlcmF0aW9uIENvY29hRHJhZ09wZXJhdGlvbjsKKyNlbHNlCit0eXBlZGVmIHVpbnQ2
NF90IENvY29hRHJhZ09wZXJhdGlvbjsKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCitPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJh
Z09wZXJhdGlvbik7CisjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKKworV2ViQ29yZTo6
RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMpOwogCiBPcHRpb25TZXQ8V2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lPiBjb3JlTGF5b3V0TWlsZXN0b25lcyhXZWJMYXlvdXRNaWxl
c3RvbmVzKTsKIFdlYkxheW91dE1pbGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25T
ZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IDMxMzI2
MDM2YThhLi5iMjQ5ZmZkODc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKQEAgLTQ0LDE4ICs0NCwxOCBA
QAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIERXT1JEIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMoRHJhZ09wZXJhdGlvbiBvcCkKK3N0YXRpYyBE
V09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQogewogICAgIERXT1JEIHJlc3VsdCA9IERST1BF
RkZFQ1RfTk9ORTsKLSAgICBpZiAob3AgPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KQorICAgIGlmIChv
cGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuIERST1BF
RkZFQ1RfQ09QWSB8IERST1BFRkZFQ1RfTElOSyB8IERST1BFRkZFQ1RfTU9WRTsgCi0gICAgaWYg
KG9wICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMo
RHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9DT1BZOyAK
LSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAob3BlcmF0aW9uTWFzay5j
b250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNU
X0xJTks7IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAgIGlmIChvcGVyYXRp
b25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkKICAgICAgICAgcmVzdWx0IHw9IERS
T1BFRkZFQ1RfTU9WRTsKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBp
ZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAg
IHJlc3VsdCB8PSBEUk9QRUZGRUNUX01PVkU7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE1
Miw3ICsxNTIsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVt
LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBEV09SRCBva0VmZmVjdCA9IGRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFza1RvRHJhZ0N1cnNvcnMobV93ZWJWaWV3LT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCkuc291
cmNlRHJhZ09wZXJhdGlvbigpKTsKKyAgICAgICAgRFdPUkQgb2tFZmZlY3QgPSBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKG1fd2ViVmlldy0+cGFnZSgpLT5kcmFnQ29u
dHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkpOwogICAgICAgICBEV09SRCBlZmZl
Y3QgPSBEUk9QRUZGRUNUX05PTkU7CiAgICAgICAgIENPTVB0cjxJV2ViVUlEZWxlZ2F0ZT4gdWk7
CiAgICAgICAgIEhSRVNVTFQgaHIgPSBFX05PVElNUEw7CkBAIC0xNjQsMTUgKzE2NCwxNSBAQCB2
b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXIm
IGRhdGFUcmFuc2ZlciwgRnJhbWUmCiAgICAgICAgIGlmIChociA9PSBFX05PVElNUEwpCiAgICAg
ICAgICAgICBociA9IERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBv
a0VmZmVjdCwgJmVmZmVjdCk7CiAKLSAgICAgICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBE
cmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJh
dGlvbk1hc2s7CiAgICAgICAgIGlmIChociA9PSBEUkFHRFJPUF9TX0RST1ApIHsKICAgICAgICAg
ICAgIGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX0NPUFkpCi0gICAgICAgICAgICAgICAgb3BlcmF0
aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9uTWFzayA9
IERyYWdPcGVyYXRpb25Db3B5OwogICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVG
RkVDVF9MSU5LKQotICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5r
OworICAgICAgICAgICAgICAgIG9wZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uTGluazsKICAg
ICAgICAgICAgIGVsc2UgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTU9WRSkKLSAgICAgICAgICAg
ICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICAgICAgICAgICAgICBvcGVy
YXRpb25NYXNrID0gRHJhZ09wZXJhdGlvbk1vdmU7CiAgICAgICAgIH0KLSAgICAgICAgZnJhbWUu
ZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1fd2Vi
VmlldywgZmFsc2UpLCBvcGVyYXRpb24pOworICAgICAgICBmcmFtZS5ldmVudEhhbmRsZXIoKS5k
cmFnU291cmNlRW5kZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQobV93ZWJWaWV3LCBmYWxzZSksIG9w
ZXJhdGlvbk1hc2spOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5k
ZXggM2JkZWU2YmJkNWIuLjUyZmRmYThiNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcApAQCAtNTg0MiwzOCArNTg0Miw0MiBAQCBIUkVTVUxUIFdlYlZpZXc6OnZpc2libGVDb250
ZW50UmVjdChfT3V0XyBMUFJFQ1QgcmVjdCkKICAgICByZXR1cm4gU19PSzsKIH0KIAotc3RhdGlj
IERXT1JEIGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IoRHJhZ09wZXJhdGlvbiBvcCkgewotICAg
IERXT1JEIHJlcyA9IERST1BFRkZFQ1RfTk9ORTsKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9u
Q29weSkgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfQ09QWTsKLSAgICBlbHNlIGlmIChvcCAm
IERyYWdPcGVyYXRpb25MaW5rKSAKLSAgICAgICAgcmVzID0gRFJPUEVGRkVDVF9MSU5LOwotICAg
IGVsc2UgaWYgKG9wICYgRHJhZ09wZXJhdGlvbk1vdmUpIAotICAgICAgICByZXMgPSBEUk9QRUZG
RUNUX01PVkU7Ci0gICAgZWxzZSBpZiAob3AgJiBEcmFnT3BlcmF0aW9uR2VuZXJpYykgCi0gICAg
ICAgIHJlcyA9IERST1BFRkZFQ1RfTU9WRTsgLy9UaGlzIGFwcGVhcnMgdG8gYmUgdGhlIEZpcmVm
b3ggYmVoYXZpb3VyCi0gICAgcmV0dXJuIHJlczsKK3N0YXRpYyBEV09SRCBkcmFnT3BlcmF0aW9u
VG9EcmFnQ3Vyc29yKE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCit7Cisg
ICAgaWYgKCFvcGVyYXRpb25NYXNrKQorICAgICAgICByZXR1cm4gRFJPUEVGRkVDVF9OT05FOwor
CisgICAgRFdPUkQgcmVzdWx0ID0gRFJPUEVGRkVDVF9OT05FOworICAgIGlmICgqb3BlcmF0aW9u
TWFzayAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX0NP
UFk7CisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbk1hc2sgJiBEcmFnT3BlcmF0aW9uTGluaykKKyAg
ICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9MSU5LOworICAgIGVsc2UgaWYgKCpvcGVyYXRpb25N
YXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1RfTU9W
RTsKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uTWFzayAmIERyYWdPcGVyYXRpb25HZW5lcmljKQor
ICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX01PVkU7IC8vIFRoaXMgYXBwZWFycyB0byBiZSB0
aGUgRmlyZWZveCBiZWhhdmlvdXIuCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotRHJhZ09wZXJh
dGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkg
Y29uc3QKK09wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09w
ZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKIHsKICAgICBpZiAoIW1fcGFnZSkKLSAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgLy8gQ29uZm9ybXMgdG8gTWljcm9zb2Z0J3Mga2V5IGNvbWJpbmF0aW9ucyBhcyBkb2N1bWVu
dGVkIGZvciAKICAgICAvLyBJRHJvcFRhcmdldDo6RHJhZ092ZXIuIE5vdGUsIGdyZktleVN0YXRl
IGlzIHRoZSBjdXJyZW50IAogICAgIC8vIHN0YXRlIG9mIHRoZSBrZXlib2FyZCBtb2RpZmllciBr
ZXlzIG9uIHRoZSBrZXlib2FyZC4gU2VlOgogICAgIC8vIDxodHRwOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvbXM2ODAxMjkoVlMuODUpLmFzcHg+LgotICAgIERyYWdPcGVyYXRp
b24gb3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRp
b24oKTsKKyAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCku
c291cmNlRHJhZ09wZXJhdGlvbk1hc2soKTsKIAogICAgIGlmICgoZ3JmS2V5U3RhdGUgJiAoTUtf
Q09OVFJPTCB8IE1LX1NISUZUKSkgPT0gKE1LX0NPTlRST0wgfCBNS19TSElGVCkpCi0gICAgICAg
IG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICBvcGVyYXRpb25NYXNrID0g
eyBEcmFnT3BlcmF0aW9uTGluayB9OwogICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAmIE1LX0NP
TlRST0wpID09IE1LX0NPTlRST0wpCi0gICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25D
b3B5OworICAgICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uQ29weSB9OwogICAg
IGVsc2UgaWYgKChncmZLZXlTdGF0ZSAmIE1LX1NISUZUKSA9PSBNS19TSElGVCkKLSAgICAgICAg
b3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgICAgIG9wZXJhdGlvbk1hc2sg
PSB7IERyYWdPcGVyYXRpb25HZW5lcmljIH07CiAKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAg
IHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCiBIUkVTVUxUIFdlYlZpZXc6OkRyYWdFbnRlcihJ
RGF0YU9iamVjdCogcERhdGFPYmplY3QsIERXT1JEIGdyZktleVN0YXRlLCBQT0lOVEwgcHQsIERX
T1JEKiBwZHdFZmZlY3QpCkBAIC01OTE5LDggKzU5MjMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OkRy
YWdMZWF2ZSgpCiAgICAgICAgIG1fZHJvcFRhcmdldEhlbHBlci0+RHJhZ0xlYXZlKCk7CiAKICAg
ICBpZiAobV9kcmFnRGF0YSkgewotICAgICAgICBEcmFnRGF0YSBkYXRhKG1fZHJhZ0RhdGEuZ2V0
KCksIEludFBvaW50KCksIEludFBvaW50KCksIAotICAgICAgICAgICAgRHJhZ09wZXJhdGlvbk5v
bmUpOworICAgICAgICBEcmFnRGF0YSBkYXRhKG1fZHJhZ0RhdGEuZ2V0KCksIEludFBvaW50KCks
IEludFBvaW50KCksIHsgfSk7CiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFn
RXhpdGVkKGRhdGEpOwogICAgICAgICBtX2RyYWdEYXRhID0gMDsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmgKaW5kZXggMTgwNjY5OGE5YWQuLjdiMjIxMDRkOThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5oCkBAIC01NTUsNyArNTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgcGVyZm9ybUxheWVyZWRXaW5kb3dVcGRhdGUoKTsKIAotICAgIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0Owor
ICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBrZXlTdGF0ZVRvRHJhZ09wZXJh
dGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3Q7CiAKICAgICAvLyBGSVhNRTogVGhpcyB2YXJp
YWJsZSBpcyBwYXJ0IG9mIGEgd29ya2Fyb3VuZC4gVGhlIGRyb3AgZWZmZWN0IChwZHdFZmZlY3Qp
IHBhc3NlZCB0byBEcm9wIGlzIGluY29ycmVjdC4gCiAgICAgLy8gV2Ugc2V0IHRoaXMgdmFyaWFi
bGUgaW4gRHJhZ0VudGVyIGFuZCBEcmFnT3ZlciBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIERy
b3AgdG8gc2V0IHRoZSBjb3JyZWN0IGRyb3AgZWZmZWN0LiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400977</attachid>
            <date>2020-06-03 16:03:01 -0700</date>
            <delta_ts>2020-06-03 21:02:43 -0700</delta_ts>
            <desc>Patch v10</desc>
            <filename>bug-212605-v10.diff</filename>
            <type>text/plain</type>
            <size>126816</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMTUxN2UxNTVkMi4uMDdiMTUxZGE2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAyMC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVz
CisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnT3BGcm9tSUVPcCk6CisgICAgICAgIChXZWJDb3JlOjpJRU9w
RnJvbURyYWdPcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5h
dGlvbk9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVy
OjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAq
IHBhZ2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24p
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnRyeURIVE1MRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3Rh
cnREcmFnKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNvdXJjZURyYWdPcGVyYXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxh
dGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpE
cmFnRGF0YSk6CisKIDIwMjAtMDYtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgRXZlbnRSZWdpb246OnRyYW5zbGF0ZSgpIG5lZWRzIHRvIG9mZnNl
dCB0aGUgd2hlZWwgZXZlbnQgcmVnaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApp
bmRleCA4NDYzYTQ4ZTk3NC4uNzMxMzA4YjU0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCkBAIC00ODgsMTggKzQ4OCwxOCBAQCBSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNm
ZXI6OmNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudAogICAg
IHJldHVybiBkYXRhVHJhbnNmZXI7CiB9CiAKLVJlZjxEYXRhVHJhbnNmZXI+IERhdGFUcmFuc2Zl
cjo6Y3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9u
LCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNy
ZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3Bl
cmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVy
ID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlJl
YWRvbmx5LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0Fu
ZERyb3BGaWxlcyA6IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+
c2V0U291cmNlT3BlcmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5z
ZXRTb3VyY2VPcGVyYXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFu
c2Zlci0+bV9vcmlnaW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBh
c3RlYm9hcmQoKTsKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5z
ZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1
bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQs
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitSZWY8
RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBh
c3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBi
b29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBhZG9wdFJlZigq
bmV3IERhdGFUcmFuc2ZlcihEYXRhVHJhbnNmZXI6OlN0b3JlTW9kZTo6UHJvdGVjdGVkLCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBkcmFnZ2luZ0ZpbGVzID8gVHlwZTo6RHJhZ0FuZERyb3BGaWxlcyA6
IFR5cGU6OkRyYWdBbmREcm9wRGF0YSkpOwotICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3Bl
cmF0aW9uKHNvdXJjZU9wZXJhdGlvbik7CisgICAgZGF0YVRyYW5zZmVyLT5zZXRTb3VyY2VPcGVy
YXRpb25NYXNrKHNvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIGRhdGFUcmFuc2Zlci0+bV9vcmln
aW5JZGVudGlmaWVyID0gZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsK
ICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQpAQCAtNTk1LDc0ICs1OTUsNzQgQEAgdm9pZCBE
cmFnSW1hZ2VMb2FkZXI6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IEludFJlY3Qq
KQogICAgIG1fZGF0YVRyYW5zZmVyLT51cGRhdGVEcmFnSW1hZ2UoKTsKIH0KIAotc3RhdGljIERy
YWdPcGVyYXRpb24gZHJhZ09wRnJvbUlFT3AoY29uc3QgU3RyaW5nJiBvcGVyYXRpb24pCitzdGF0
aWMgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYg
b3BlcmF0aW9uKQogewogICAgIGlmIChvcGVyYXRpb24gPT0gInVuaW5pdGlhbGl6ZWQiKQotICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OworICAgICAgICByZXR1cm4gYW55RHJhZ09w
ZXJhdGlvbigpOwogICAgIGlmIChvcGVyYXRpb24gPT0gIm5vbmUiKQotICAgICAgICByZXR1cm4g
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgaWYgKG9wZXJhdGlv
biA9PSAiY29weSIpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAg
cmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHkgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJsaW5r
IikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICByZXR1cm4geyBE
cmFnT3BlcmF0aW9uTGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gIm1vdmUiKQotICAgICAg
ICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJh
dGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09w
ZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TGluayIpCi0gICAgICAg
IHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9u
TGluayk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9u
TGluayB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHlNb3ZlIikKLSAgICAgICAgcmV0dXJu
IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uQ29weSB8IERyYWdPcGVyYXRpb25HZW5lcmlj
IHwgRHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29w
eSwgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9w
ZXJhdGlvbiA9PSAibGlua01vdmUiKQotICAgICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25MaW5rIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92
ZSk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJhbGwiKQot
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5OwotICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uUHJpdmF0ZTsgLy8gcmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIKKyAgICAg
ICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSB9OyAvLyBSZWFsbHkgYSBtYXJrZXIgZm9yICJubyBjb252ZXJzaW9uIi4KIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
KQorc3RhdGljIGNvbnN0IGNoYXIqIElFT3BGcm9tRHJhZ09wKE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBvcGVyYXRpb25NYXNrKQogewotICAgIGJvb2wgaXNHZW5lcmljTW92ZSA9IG9wZXJhdGlv
biAmIChEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBib29s
IGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHsgRHJhZ09wZXJhdGlv
bkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pOwogCi0gICAgaWYgKChpc0dlbmVyaWNNb3Zl
ICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25MaW5rKSkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBp
ZiAoKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkgJiYgb3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpIHx8IG9w
ZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gImFsbCI7
Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5
KSkKKyAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5TW92ZSI7Ci0gICAgaWYgKGlzR2Vu
ZXJpY01vdmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAoaXNH
ZW5lcmljTW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkK
ICAgICAgICAgcmV0dXJuICJsaW5rTW92ZSI7Ci0gICAgaWYgKChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uQ29weSkgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAo
b3BlcmF0aW9uTWFzay5jb250YWluc0FsbCh7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0
aW9uTGluayB9KSkKICAgICAgICAgcmV0dXJuICJjb3B5TGluayI7CiAgICAgaWYgKGlzR2VuZXJp
Y01vdmUpCiAgICAgICAgIHJldHVybiAibW92ZSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdP
cGVyYXRpb25Db3B5KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25Db3B5KSkKICAgICAgICAgcmV0dXJuICJjb3B5IjsKLSAgICBpZiAob3BlcmF0aW9uICYgRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJh
dGlvbkxpbmspKQogICAgICAgICByZXR1cm4gImxpbmsiOwogICAgIHJldHVybiAibm9uZSI7CiB9
CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb24oKSBjb25zdAor
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFz
aygpIGNvbnN0CiB7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVP
cChtX2VmZmVjdEFsbG93ZWQpOwotICAgIEFTU0VSVChvcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlv
blByaXZhdGUpOwotICAgIHJldHVybiBvcGVyYXRpb247CisgICAgYXV0byBvcGVyYXRpb25NYXNr
ID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsKKyAgICBBU1NFUlQob3BlcmF0aW9u
TWFzayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7
CiB9CiAKLURyYWdPcGVyYXRpb24gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbigp
IGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlv
bk9wZXJhdGlvbk1hc2soKSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0g
ZHJhZ09wRnJvbUlFT3AobV9kcm9wRWZmZWN0KTsKLSAgICBBU1NFUlQob3BlcmF0aW9uID09IERy
YWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcGVy
YXRpb24gPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9u
KShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKSB8fCBvcGVyYXRpb24g
PT0gRHJhZ09wZXJhdGlvbkV2ZXJ5KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8g
b3BlcmF0aW9uTWFzayA9IGRyYWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7CisgICAgQVNTRVJU
KG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0Vt
cHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25N
YXNrID09IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IERyYWdPcGVyYXRpb25HZW5lcmljLCBE
cmFnT3BlcmF0aW9uTW92ZSB9KSB8fCBvcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24o
KSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpz
ZXRTb3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFu
c2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3Bl
cmF0aW9uTWFzaykKIHsKLSAgICBBU1NFUlRfQVJHKG9wZXJhdGlvbiwgb3BlcmF0aW9uICE9IERy
YWdPcGVyYXRpb25Qcml2YXRlKTsKLSAgICBtX2VmZmVjdEFsbG93ZWQgPSBJRU9wRnJvbURyYWdP
cChvcGVyYXRpb24pOworICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uTWFzaywgb3BlcmF0aW9uTWFz
ayAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZy
b21EcmFnT3Aob3BlcmF0aW9uTWFzayk7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0
aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgRGF0YVRyYW5z
ZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiA9
PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwg
b3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0
aW9uR2VuZXJpYyB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9u
ID09IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25N
b3ZlKSk7Ci0gICAgbV9kcm9wRWZmZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAg
ICBBU1NFUlRfQVJHKG9wZXJhdGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlv
bkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFn
T3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8
IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uTWFzayA9PSBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJh
dGlvbk1vdmUgfSkpOworICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlv
bk1hc2spOwogfQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuaAppbmRleCBlNWNmYWY4NTZmYi4uMGU3NDgwYTFmOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTg4LDE1ICs4OCwxNSBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3Jl
YXRlRm9yRHJhZygpOwogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFn
U3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVy
PiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRy
YWdnaW5nRmlsZXMpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9w
KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERh
dGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKTsKIAogICAgIGJvb2wgZHJvcEVmZmVjdElzVW5pbml0aWFsaXpl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVmZmVjdCA9PSAidW5pbml0aWFsaXplZCI7IH0KIAot
ICAgIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uKCkgY29uc3Q7Ci0gICAgRHJhZ09wZXJh
dGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0OwotICAgIHZvaWQgc2V0U291cmNlT3Bl
cmF0aW9uKERyYWdPcGVyYXRpb24pOwotICAgIHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRpb24o
RHJhZ09wZXJhdGlvbik7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2soKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZGVzdGluYXRp
b25PcGVyYXRpb25NYXNrKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTb3VyY2VPcGVyYXRpb25NYXNr
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbk9wZXJh
dGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogICAgIHZvaWQgc2V0RHJhZ0hh
c1N0YXJ0ZWQoKSB7IG1fc2hvdWxkVXBkYXRlRHJhZ0ltYWdlID0gdHJ1ZTsgfQogICAgIERyYWdJ
bWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmIGRyYWdMb2NhdGlvbikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5kZXggYTkyM2NhZTU4Y2IuLmJmODNkNjNjZTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC02MCwxOCArNjAsMjEgQEAgdHlwZWRlZiBl
bnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJh
Z1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCisvLyBTZWUgTlNE
cmFnT3BlcmF0aW9uLCBfVUlEcmFnT3BlcmF0aW9uIGFuZCBVSURyb3BPcGVyYXRpb24uCiB0eXBl
ZGVmIGVudW0gewotICAgIERyYWdPcGVyYXRpb25Ob25lICAgID0gMCwKICAgICBEcmFnT3BlcmF0
aW9uQ29weSAgICA9IDEsCiAgICAgRHJhZ09wZXJhdGlvbkxpbmsgICAgPSAyLAogICAgIERyYWdP
cGVyYXRpb25HZW5lcmljID0gNCwKICAgICBEcmFnT3BlcmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAg
RHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwKICAgICBEcmFnT3BlcmF0aW9uRGVsZXRlICA9IDMy
LAotICAgIERyYWdPcGVyYXRpb25FdmVyeSAgID0gVUlOVF9NQVgKIH0gRHJhZ09wZXJhdGlvbjsK
IAorY29uc3RleHByIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkK
K3sKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmssIERy
YWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1v
dmUsIERyYWdPcGVyYXRpb25EZWxldGUgfTsKK30KKwogZW51bSBjbGFzcyBNYXlFeHRlbmREcmFn
U2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIEhhc05vbkRlZmF1bHRQYXN0
ZWJvYXJkRGF0YSA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIERyYWdIYW5kbGluZ01l
dGhvZCA6IHVpbnQ4X3QgeyBOb25lLCBFZGl0UGxhaW5UZXh0LCBFZGl0UmljaFRleHQsIFVwbG9h
ZEZpbGUsIFBhZ2VMb2FkLCBTZXRDb2xvciwgTm9uRGVmYXVsdCB9OwpAQCAtOTMsNiArOTYsMTgg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRo
b2Q+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkNvcHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3Ry
dWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAg
ICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdE
ZXN0aW5hdGlvbkFjdGlvbiwKQEAgLTEwMiw0ICsxMTcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3Qg
T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgID47
CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4geworICAgIHVzaW5nIHZhbHVlcyA9IE9wdGlvblNldFZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblBy
aXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCA0ZWUyZTJmYjM1OC4u
Y2FjMmVlZjQ1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0y
MDgsNyArMjA4LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VuZGVkKCkKICAgICBjbGll
bnQoKS5kcmFnRW5kZWQoKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlv
bj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkK
IHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0RhdGEpOwogfQpAQCAtMjI0
LDcgKzIyNCw3IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmRyYWdFeGl0ZWQoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgIG1fZmlsZUlucHV0RWxlbWVudFVuZGVyTW91c2UgPSBudWxscHRy
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBk
cmFnRW50ZXJlZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0yNzgsNyArMjc4LDcgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIG1fZG9jdW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICBjbGVhckRy
YWdDYXJldCgpOwogCi0gICAgaWYgKG9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpID09IERyYWdP
cGVyYXRpb25Ob25lKQorICAgIGlmICghb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gdXJsU3RyaW5nID0gZHJhZ0RhdGEuYXNVUkwo
KTsKQEAgLTMwNCwyMSArMzA0LDIxIEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6Om1vdXNlTW92ZWRJ
bnRvRG9jdW1lbnQoRG9jdW1lbnQqIG5ld0RvY3VtZW50KQogICAgIG1fZG9jdW1lbnRVbmRlck1v
dXNlID0gbmV3RG9jdW1lbnQ7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERy
YWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgbW91c2VNb3ZlZEludG9Eb2N1bWVudChtX3BhZ2Uu
bWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpKTsK
IAogICAgIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2soKTsKICAgICBpZiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmlz
RW1wdHkoKSkgewogICAgICAgICBjbGVhckRyYWdDYXJldCgpOyAvLyBGSVhNRTogV2h5IG5vdCBj
YWxsIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobnVsbHB0cik/Ci0gICAgICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgIG1fZHJhZ0hhbmRsaW5n
TWV0aG9kID0gdHJ5RG9jdW1lbnREcmFnKGRyYWdEYXRhLCBtX2RyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2ssIGRyYWdPcGVyYXRpb24pOwogICAgIGlmIChtX2RyYWdIYW5kbGluZ01ldGhvZCA9PSBE
cmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUgJiYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5j
b250YWlucyhEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpKSkgewogICAgICAgICBkcmFnT3Bl
cmF0aW9uID0gb3BlcmF0aW9uRm9yTG9hZChkcmFnRGF0YSk7Ci0gICAgICAgIGlmIChkcmFnT3Bl
cmF0aW9uICE9IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbikK
ICAgICAgICAgICAgIG1fZHJhZ0hhbmRsaW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpQ
YWdlTG9hZDsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ0hhbmRsaW5nTWV0aG9kID09IERyYWdIYW5k
bGluZ01ldGhvZDo6U2V0Q29sb3IpCiAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0
aW9uQ29weTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIERyYWdDb250cm9sbGVyOjp1cGRhdGVT
dXBwb3J0ZWRUeXBlSWRlbnRpZmllcnNGb3JEcmFnSGFuZGxpbmdNZXRob2QoRHJhZ0hhbgogCiAj
ZW5kaWYKIAotRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERy
YWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIERyYWdPcGVyYXRpb24mIGRyYWdPcGVyYXRpb24p
CitEcmFnSGFuZGxpbmdNZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaywgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIGRyYWdPcGVyYXRp
b24pCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSkKICAgICAgICAgcmV0dXJuIERy
YWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCBEcmFnSGFuZGxpbmdN
ZXRob2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEsIE9wdAogICAgICAgICAgICAgICAgIG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCA9
IDE7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghbV9udW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkKQotICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9u
ZTsKKyAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgICAg
ICAgICAgbV9maWxlSW5wdXRFbGVtZW50VW5kZXJNb3VzZS0+c2V0Q2FuUmVjZWl2ZURyb3BwZWRG
aWxlcyhtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gV2UgYXJlIG5vdCBvdmVyIGEgZmlsZSBpbnB1dCBlbGVtZW50LiBUaGUgZHJh
Z2dlZCBpdGVtKHMpIHdpbGwgbG9hZGVkIGludG8gdGhlIHZpZXcsCkBAIC00ODksNyArNDg5LDcg
QEAgRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ29udHJvbGxlcjo6ZGVsZWdhdGVEcmFnU291cmNlQWN0
aW9uKGNvbnN0IEludFBvaW50JiByb290VmkKICAgICByZXR1cm4gbV9kcmFnU291cmNlQWN0aW9u
OwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250
cm9sbGVyOjpvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnRBdFBvaW50
KGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCkpOwogCkBAIC01MDQsNyArNTA0LDcgQEAgRHJhZ09w
ZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50ICYmIChtX2RpZEluaXRpYXRlRHJh
ZyB8fCAoaXM8UGx1Z2luRG9jdW1lbnQ+KCpkb2N1bWVudCkgJiYgIXBsdWdpbkRvY3VtZW50QWNj
ZXB0c0RyYWdzKSB8fCBkb2N1bWVudC0+aGFzRWRpdGFibGVTdHlsZSgpKSkKLSAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHJldHVybiBkcmFnT3BlcmF0aW9uKGRyYWdEYXRhKTsKIH0KIApAQCAtNjkzLDI4ICs2OTMsMjgg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBkZWZh
dWx0T3BlcmF0aW9uRm9yRHJhZyhEcmFnT3BlcmF0aW9uIHNyY09wTWFzaykKK3N0YXRpYyBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaykKIHsKICAgICAvLyBUaGlzIGlzIGRlc2ln
bmVkIHRvIG1hdGNoIElFJ3Mgb3BlcmF0aW9uIGZhbGxiYWNrIGZvciB0aGUgY2FzZSB3aGVyZQog
ICAgIC8vIHRoZSBwYWdlIGNhbGxzIHByZXZlbnREZWZhdWx0KCkgaW4gYSBkcmFnIGV2ZW50IGJ1
dCBkb2Vzbid0IHNldCBkcm9wRWZmZWN0LgotICAgIGlmIChzcmNPcE1hc2sgPT0gRHJhZ09wZXJh
dGlvbkV2ZXJ5KQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1h
c2sgPT0gRHJhZ09wZXJhdGlvbk5vbmUpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9u
ZTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkK
ICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Nb3ZlOwotICAgIGlmIChzcmNPcE1hc2sgJiBE
cmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uR2VuZXJpYykpCiAgICAgICAgIHJldHVybiBEcmFnQ29udHJvbGxlcjo6
cGxhdGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFn
T3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKLSAgICBp
ZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKHNvdXJjZU9wZXJhdGlv
bk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbkxpbms7CiAgICAgCiAgICAgLy8gRklYTUU6IERvZXMgSUUgcmVhbGx5IHJldHVybiAi
Z2VuZXJpYyIgZXZlbiBpZiBubyBvcGVyYXRpb25zIHdlcmUgYWxsb3dlZCBieSB0aGUgc291cmNl
PwogICAgIHJldHVybiBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKIH0KIAotYm9vbCBEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlv
biYgb3BlcmF0aW9uKQorYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mIG9wZXJhdGlvbikKIHsK
ICAgICBBU1NFUlQobV9kb2N1bWVudFVuZGVyTW91c2UpOwogICAgIFJlZjxGcmFtZT4gbWFpbkZy
YW1lKG1fcGFnZS5tYWluRnJhbWUoKSk7CkBAIC03MjIsMTcgKzcyMiwxOSBAQCBib29sIERyYWdD
b250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3Bl
cmF0aW9uJiBvcGVyYQogICAgIGlmICghdmlld1Byb3RlY3RvcikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24gPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKLSAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7IHJldHVybiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChkcmFnRGF0YSk7IH0sIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ0RhdGEuY29udGFp
bnNGaWxlcygpKTsKKyAgICBhdXRvIHNvdXJjZU9wZXJhdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKKyAgICBhdXRvIHRhcmdldFJlc3BvbnNlID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChjcmVhdGVNb3VzZUV2ZW50
KGRyYWdEYXRhKSwgWyZkcmFnRGF0YV0oKSB7CisgICAgICAgIHJldHVybiBQYXN0ZWJvYXJkOjpj
cmVhdGVGb3JEcmFnQW5kRHJvcChkcmFnRGF0YSk7CisgICAgfSwgc291cmNlT3BlcmF0aW9uTWFz
aywgZHJhZ0RhdGEuY29udGFpbnNGaWxlcygpKTsKICAgICBpZiAoIXRhcmdldFJlc3BvbnNlLmFj
Y2VwdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCF0YXJnZXRSZXNwb25zZS5v
cGVyYXRpb24pCi0gICAgICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNv
dXJjZU9wZXJhdGlvbik7Ci0gICAgZWxzZSBpZiAoIShzb3VyY2VPcGVyYXRpb24gJiB0YXJnZXRS
ZXNwb25zZS5vcGVyYXRpb24udmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVy
YXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlCi0gICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIGlmICh0YXJnZXRSZXNwb25zZS5vcGVyYXRp
b25NYXNrLmlzRW1wdHkoKSkKKyAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZv
ckRyYWcoc291cmNlT3BlcmF0aW9uTWFzayk7CisgICAgZWxzZSBpZiAoIXNvdXJjZU9wZXJhdGlv
bk1hc2suY29udGFpbnNBbnkodGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzaykpIC8vIFRoZSBl
bGVtZW50IHBpY2tlZCBhbiBvcGVyYXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUg
c291cmNlCisgICAgICAgIG9wZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICBlbHNlCi0gICAg
ICAgIG9wZXJhdGlvbiA9IHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbi52YWx1ZSgpOworICAgICAg
ICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyh0YXJnZXRSZXNwb25zZS5vcGVy
YXRpb25NYXNrKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTU2LDcgKzk1OCw3IEBAIE9w
dGlvbmFsPEhpdFRlc3RSZXN1bHQ+IERyYWdDb250cm9sbGVyOjpoaXRUZXN0UmVzdWx0Rm9yRHJh
Z1N0YXJ0KEZyYW1lJiBzb3VyY2UsCiAgICAgcmV0dXJuIHsgaGl0VGVzdFJlc3VsdCB9OwogfQog
Ci1ib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0
YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZhdWx0UGFz
dGVib2FyZERhdGEgaGFzRGF0YSkKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFt
ZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
c291cmNlT3BlcmF0aW9uTWFzaywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQs
IGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEg
aGFzRGF0YSkKIHsKICAgICBpZiAoIXN0YXRlLnNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtOTcyLDcgKzk3NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFt
ZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgSW50UG9p
bnQgbW91c2VEcmFnZ2VkUG9pbnQgPSBzcmMudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdF
dmVudC5wb3NpdGlvbigpKTsKIAogICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IFVSTCgpOwotICAg
IG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHNyY09wOworICAgIG1fc291cmNlRHJhZ09wZXJhdGlv
bk1hc2sgPSBzb3VyY2VPcGVyYXRpb25NYXNrOwogCiAgICAgRHJhZ0ltYWdlIGRyYWdJbWFnZTsK
ICAgICBJbnRQb2ludCBkcmFnTG9jKDAsIDApOwpAQCAtOTk1LDcgKzk5Nyw3IEBAIGJvb2wgRHJh
Z0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRl
LCBEcmFnT3BlcmF0aW9uCiAgICAgICAgIC8vIFNlbGVjdGlvbiwgaW1hZ2UsIGFuZCBsaW5rIGRy
YWdzIHJlY2VpdmUgYSBkZWZhdWx0IHNldCBvZiBhbGxvd2VkIGRyYWcgb3BlcmF0aW9ucyB0aGF0
CiAgICAgICAgIC8vIGZvbGxvd3MgZnJvbToKICAgICAgICAgLy8gaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9icm93c2VyL3RydW5rL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbT9yZXY9
NDg1MjYjTDM0MzAKLSAgICAgICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8
RHJhZ09wZXJhdGlvbj4obV9zb3VyY2VEcmFnT3BlcmF0aW9uIHwgRHJhZ09wZXJhdGlvbkdlbmVy
aWMgfCBEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbk1h
c2suYWRkKHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Db3B5IH0pOwogICAg
IH0KIAogICAgIEFTU0VSVChzdGF0ZS5zb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5oCmluZGV4IDkwZjg3NWMwNjdhLi5lYTQ5OWUwZWJkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuaApAQCAtNTksOSArNTksOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
RHJhZ09wZXJhdGlvbiBwbGF0Zm9ybUdlbmVyaWNEcmFnT3BlcmF0aW9uKCk7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWQoY29u
c3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdFeGl0ZWQoY29uc3Qg
RHJhZ0RhdGEmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGRyYWdVcGRhdGVk
KGNvbnN0IERyYWdEYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RHJhZ09wZXJh
dGlvbj4gZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHBlcmZvcm1EcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgog
ICAgIC8vIGRyYWcgbG9naWMgaXMgaW4gV2ViQ29yZS4KICAgICB2b2lkIHNldERpZEluaXRpYXRl
RHJhZyhib29sIGluaXRpYXRlZCkgeyBtX2RpZEluaXRpYXRlRHJhZyA9IGluaXRpYXRlZDsgfQog
ICAgIGJvb2wgZGlkSW5pdGlhdGVEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9kaWRJbml0aWF0ZURy
YWc7IH0KLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZURyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NvdXJjZURyYWdPcGVyYXRpb247IH0KKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURyYWdP
cGVyYXRpb25NYXNrOyB9CiAgICAgY29uc3QgVVJMJiBkcmFnZ2luZ0ltYWdlVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9kcmFnZ2luZ0ltYWdlVVJMOyB9CiAgICAgdm9pZCBzZXREcmFnT2Zmc2V0KGNv
bnN0IEludFBvaW50JiBvZmZzZXQpIHsgbV9kcmFnT2Zmc2V0ID0gb2Zmc2V0OyB9CiAgICAgY29u
c3QgSW50UG9pbnQmIGRyYWdPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2RyYWdPZmZzZXQ7IH0K
QEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0
RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzQXRDYXJldChjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGlt
YWdlU2l6ZXMpOwogCiAgICAgdm9pZCBwcmVwYXJlRm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2VG
cmFtZSwgRHJhZ1NvdXJjZUFjdGlvbiwgRWxlbWVudCYgc291cmNlRWxlbWVudCwgRGF0YVRyYW5z
ZmVyJiwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4pIGNvbnN0OwotICAgIGJvb2wgc3RhcnRE
cmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09y
aWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKKyAgICBib29sIHN0YXJ0RHJhZyhG
cmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09y
aWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKICAgICBzdGF0aWMgY29uc3QgSW50
U2l6ZSYgbWF4RHJhZ0ltYWdlU2l6ZSgpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBNYXhPcmln
aW5hbEltYWdlQXJlYTsKQEAgLTEwOCwxMSArMTA4LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBk
aXNwYXRjaFRleHRJbnB1dEV2ZW50Rm9yKEZyYW1lKiwgY29uc3QgRHJhZ0RhdGEmKTsKICAgICBi
b29sIGNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJik7CiAgICAgYm9vbCBjb25jbHVkZUVk
aXREcmFnKGNvbnN0IERyYWdEYXRhJik7Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnRW50ZXJlZE9y
VXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOwotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uRm9y
TG9hZChjb25zdCBEcmFnRGF0YSYpOwotICAgIERyYWdIYW5kbGluZ01ldGhvZCB0cnlEb2N1bWVu
dERyYWcoY29uc3QgRHJhZ0RhdGEmLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiwg
RHJhZ09wZXJhdGlvbiYpOwotICAgIGJvb2wgdHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiwg
RHJhZ09wZXJhdGlvbiYpOwotICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbihjb25zdCBE
cmFnRGF0YSYpOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdFbnRlcmVkT3JVcGRh
dGVkKGNvbnN0IERyYWdEYXRhJik7CisgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0
aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYpOworICAgIERyYWdIYW5kbGluZ01ldGhvZCB0cnlE
b2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKKyAgICBib29sIHRyeURIVE1MRHJhZyhj
b25zdCBEcmFnRGF0YSYsIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+Jik7CisgICAgT3B0aW9uYWw8
RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYpOwogICAgIHZvaWQg
Y2xlYXJEcmFnQ2FyZXQoKTsKICAgICBib29sIGRyYWdJc01vdmUoRnJhbWVTZWxlY3Rpb24mLCBj
b25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgaXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYp
OwpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uU2V0PERyYWdEZXN0aW5h
dGlvbkFjdGlvbj4gbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrOwogICAgIERyYWdTb3VyY2VB
Y3Rpb24gbV9kcmFnU291cmNlQWN0aW9uIHsgRHJhZ1NvdXJjZUFjdGlvbk5vbmUgfTsKICAgICBi
b29sIG1fZGlkSW5pdGlhdGVEcmFnIHsgZmFsc2UgfTsKLSAgICBEcmFnT3BlcmF0aW9uIG1fc291
cmNlRHJhZ09wZXJhdGlvbiB7IERyYWdPcGVyYXRpb25Ob25lIH07IC8vIFNldCBpbiBzdGFydERy
YWcgd2hlbiBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBkb3duIHdpdGhpbiBXZWJLaXQKKyAg
ICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFzazsgLy8g
U2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0
aGluIFdlYktpdC4KICAgICBJbnRQb2ludCBtX2RyYWdPZmZzZXQ7CiAgICAgVVJMIG1fZHJhZ2dp
bmdJbWFnZVVSTDsKICAgICBib29sIG1faXNQZXJmb3JtaW5nRHJvcCB7IGZhbHNlIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZDU1NzdlZWYxMTQuLjk3ZDczZGU2Zjgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMzM0LDcgKzIzMzQsNyBA
QCBzdGF0aWMgYm9vbCB0YXJnZXRJc0ZyYW1lKE5vZGUqIHRhcmdldCwgRnJhbWUqJiBmcmFtZSkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gY29udmVydERyb3Ba
b25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ09wZXJhdGlvbikK
K3N0YXRpYyBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25U
b0RyYWdPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnT3BlcmF0aW9uKQogewogICAgIGlmIChk
cmFnT3BlcmF0aW9uID09ICJjb3B5IikKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5
OwpAQCAtMjM0MiwyMSArMjM0MiwyNCBAQCBzdGF0aWMgRHJhZ09wZXJhdGlvbiBjb252ZXJ0RHJv
cFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnTwogICAgICAg
ICByZXR1cm4gRHJhZ09wZXJhdGlvbk1vdmU7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImxp
bmsiKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkxpbms7Ci0gICAgcmV0dXJuIERyYWdP
cGVyYXRpb25Ob25lOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBTdHJp
bmcgY29udmVydERyYWdPcGVyYXRpb25Ub0Ryb3Bab25lT3BlcmF0aW9uKERyYWdPcGVyYXRpb24g
b3BlcmF0aW9uKQorc3RhdGljIFN0cmluZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVP
cGVyYXRpb24oT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uKQogewotICAgIHN3aXRj
aCAob3BlcmF0aW9uKSB7Ci0gICAgY2FzZSBEcmFnT3BlcmF0aW9uQ29weToKLSAgICAgICAgcmV0
dXJuICJjb3B5Il9zOwotICAgIGNhc2UgRHJhZ09wZXJhdGlvbk1vdmU6Ci0gICAgICAgIHJldHVy
biAibW92ZSJfczsKLSAgICBjYXNlIERyYWdPcGVyYXRpb25MaW5rOgotICAgICAgICByZXR1cm4g
ImxpbmsiX3M7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJjb3B5Il9zOworICAgIGlm
IChvcGVyYXRpb24pIHsKKyAgICAgICAgc3dpdGNoICgqb3BlcmF0aW9uKSB7CisgICAgICAgIGNh
c2UgRHJhZ09wZXJhdGlvbkNvcHk6CisgICAgICAgICAgICByZXR1cm4gImNvcHkiX3M7CisgICAg
ICAgIGNhc2UgRHJhZ09wZXJhdGlvbk1vdmU6CisgICAgICAgICAgICByZXR1cm4gIm1vdmUiX3M7
CisgICAgICAgIGNhc2UgRHJhZ09wZXJhdGlvbkxpbms6CisgICAgICAgICAgICByZXR1cm4gImxp
bmsiX3M7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgIH0KKyAgICByZXR1cm4gImNvcHkiX3M7CiB9CiAKIHN0YXRpYyBib29sIGhhc0Ryb3Bab25l
VHlwZShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgY29uc3QgU3RyaW5nJiBrZXl3b3JkKQpA
QCAtMjM3NiwxNSArMjM3OSwxNSBAQCBzdGF0aWMgYm9vbCBmaW5kRHJvcFpvbmUoTm9kZSYgdGFy
Z2V0LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlcikKICAgICBmb3IgKDsgZWxlbWVudDsgZWxl
bWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICBTcGFjZVNwbGl0U3Ry
aW5nIGtleXdvcmRzKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2Vi
a2l0ZHJvcHpvbmVBdHRyKSwgdHJ1ZSk7CiAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwot
ICAgICAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsK
KyAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbjsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IGtleXdvcmRzLnNpemUoKTsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICAgICAgRHJhZ09wZXJhdGlvbiBvcCA9IGNvbnZlcnREcm9wWm9uZU9wZXJh
dGlvblRvRHJhZ09wZXJhdGlvbihrZXl3b3Jkc1tpXSk7Ci0gICAgICAgICAgICBpZiAob3AgIT0g
RHJhZ09wZXJhdGlvbk5vbmUpIHsKLSAgICAgICAgICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9
PSBEcmFnT3BlcmF0aW9uTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9
IG9wOworICAgICAgICAgICAgYXV0byBvcGVyYXRpb25Gcm9tS2V5d29yZCA9IGNvbnZlcnREcm9w
Wm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbihrZXl3b3Jkc1tpXSk7CisgICAgICAgICAgICBp
ZiAob3BlcmF0aW9uRnJvbUtleXdvcmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWRyYWdPcGVy
YXRpb24pCisgICAgICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBvcGVyYXRpb25Gcm9t
S2V5d29yZDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBt
YXRjaGVkIHx8IGhhc0Ryb3Bab25lVHlwZShkYXRhVHJhbnNmZXIsIGtleXdvcmRzW2ldLnN0cmlu
ZygpKTsKLSAgICAgICAgICAgIGlmIChtYXRjaGVkICYmIGRyYWdPcGVyYXRpb24gIT0gRHJhZ09w
ZXJhdGlvbk5vbmUpCisgICAgICAgICAgICBpZiAobWF0Y2hlZCAmJiBkcmFnT3BlcmF0aW9uKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChtYXRjaGVkKSB7
CkBAIC0yMzk2LDE5ICsyMzk5LDE5IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0
YXJnZXQsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQogfQogCiBFdmVudEhhbmRsZXI6OkRy
YWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3Zl
ckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRy
YWdnaW5nRmlsZXMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2Fy
ZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJh
Z2dpbmdGaWxlcykKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3Jl
YXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3Rl
Ym9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgIGF1dG8gZGF0YVRy
YW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0
LmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRy
YWdnaW5nRmlsZXMpOwogICAgIGJvb2wgYWNjZXB0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRU
eXBlLCB0YXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAgIGlmICghYWNjZXB0
KQogICAgICAgICBhY2NlcHQgPSBmaW5kRHJvcFpvbmUodGFyZ2V0LCBkYXRhVHJhbnNmZXIpOwog
ICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIGlmIChhY2Nl
cHQgJiYgIWRhdGFUcmFuc2Zlci0+ZHJvcEVmZmVjdElzVW5pbml0aWFsaXplZCgpKQotICAgICAg
ICByZXR1cm4geyB0cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uKCkgfTsK
LSAgICByZXR1cm4geyBhY2NlcHQsIFdURjo6bnVsbG9wdCB9OworICAgICAgICByZXR1cm4geyB0
cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygpIH07CisgICAgcmV0
dXJuIHsgYWNjZXB0LCB7IH0gfTsKIH0KIAotRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9u
c2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJk
PigpPiYgbWFrZVBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29s
IGRyYWdnaW5nRmlsZXMpCitFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhh
bmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQs
IGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiBtYWtl
UGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ss
IGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1f
ZnJhbWUpOwogICAgIGlmICghbV9mcmFtZS52aWV3KCkpCkBAIC0yNDM4LDE5ICsyNDQxLDE5IEBA
IEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJh
Z0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZyYW1lKiB0YXJnZXRGcmFtZTsKICAg
ICAgICAgaWYgKHRhcmdldElzRnJhbWUobmV3VGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsK
ICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9
IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFr
ZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAg
ICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0Fu
ZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2lu
Z0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJnZXQpIHsKICAgICAgICAgICAgIC8v
IEFzIHBlciBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUgc3BlYy4sIHdlIG11c3QgYWx3YXlz
IGZpcmUgYSBkcmFnIGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBkcmFnZW50ZXIsIGRyYWdsZWF2ZSwg
b3IgZHJhZ292ZXIgZXZlbnQuCiAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50VG9EcmFnU291cmNl
RWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7Ci0gICAgICAgICAgICByZXNw
b25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMoKS5kcmFn
ZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9w
ZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNo
RHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCwgKm5l
d1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRy
YWdnaW5nRmlsZXMpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRhcmdldElzRnJhbWUobV9k
cmFnVGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBS
ZWN1cnNpbmcgYWdhaW4gaGVyZSBkb2Vzbid0IG1ha2Ugc2Vuc2UgaWYgdGhlIG5ld1RhcmdldCBh
bmQgbV9kcmFnVGFyZ2V0IHdlcmUgaW4gdGhlIHNhbWUgZnJhbWUuCiAgICAgICAgICAgICBpZiAo
dGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZl
bnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3Vy
Y2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0g
dGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtl
UGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAg
IH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0gICAgICAgICAgICBhdXRvIGRhdGFUcmFuc2Zl
ciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1Rhcmdl
dC0+ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2lu
Z0ZpbGVzKTsKKyAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpj
cmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBtYWtl
UGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAg
ICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFnbGVhdmVFdmVudCwgKm1f
ZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQoKSk7CiAgICAgICAgICAgICBkYXRh
VHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICAgICAgfQpAQCAtMjQ2NCwx
MiArMjQ2NywxMiBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRs
ZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAgICAgICBGcmFtZSogdGFy
Z2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1lKG5ld1RhcmdldC5nZXQoKSwgdGFy
Z2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICAg
ICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERy
b3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMp
OworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigp
LnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9u
TWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAobmV3VGFyZ2V0KSB7CiAg
ICAgICAgICAgICAvLyBOb3RlLCB3aGVuIGRlYWxpbmcgd2l0aCBzdWItZnJhbWVzLCB3ZSBtYXkg
bmVlZCB0byBmaXJlIG9ubHkgYSBkcmFnb3ZlciBldmVudCBhcyBhIGRyYWcgZXZlbnQgbWF5IGhh
dmUgYmVlbiBmaXJlZCBlYXJsaWVyLgogICAgICAgICAgICAgaWYgKCFtX3Nob3VsZE9ubHlGaXJl
RHJhZ092ZXJFdmVudCkKICAgICAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50VG9EcmFnU291cmNl
RWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7Ci0gICAgICAgICAgICByZXNw
b25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMoKS5kcmFn
b3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3Bl
cmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hE
cmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdvdmVyRXZlbnQsICpuZXdU
YXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFn
Z2luZ0ZpbGVzKTsKICAgICAgICAgICAgIG1fc2hvdWxkT25seUZpcmVEcmFnT3ZlckV2ZW50ID0g
ZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDc3LDI1ICsyNDgwLDI1IEBAIEV2ZW50SGFu
ZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1NCiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQogCi12b2lkIEV2ZW50SGFu
ZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBz
b3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK3ZvaWQgRXZlbnRIYW5kbGVyOjpj
YW5jZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIFJlZjxG
cmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKICAgICBGcmFtZSogdGFyZ2V0RnJhbWU7
CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkp
IHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmV2
ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQp
LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgdGFyZ2V0RnJh
bWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGV2ZW50LCBXVEZNb3ZlKHBhc3Rl
Ym9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB9IGVsc2Ug
aWYgKG1fZHJhZ1RhcmdldCkgewogICAgICAgICBkaXNwYXRjaEV2ZW50VG9EcmFnU291cmNlRWxl
bWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7CiAKLSAgICAgICAgYXV0byBkYXRh
VHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChtX2Ry
YWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlv
biwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgp
LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVz
KTsKICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50
LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyLmdldCgpKTsKICAgICAgICAgZGF0
YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgfQogICAgIGNsZWFyRHJh
Z1N0YXRlKCk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
JiYgcGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dp
bmdGaWxlcykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFz
dGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJv
b2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJh
bWUpOwogCkBAIC0yNTAzLDkgKzI1MDYsOSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGVyZm9ybURy
YWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcQogICAg
IGJvb2wgcHJldmVudGVkRGVmYXVsdCA9IGZhbHNlOwogICAgIGlmICh0YXJnZXRJc0ZyYW1lKG1f
ZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgIGlmICh0YXJnZXRGcmFt
ZSkKLSAgICAgICAgICAgIHByZXZlbnRlZERlZmF1bHQgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3Vy
Y2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgcHJldmVudGVkRGVmYXVs
dCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJmb3JtRHJhZ0FuZERyb3AoZXZlbnQs
IFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMp
OwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0gICAgICAgIGF1dG8gZGF0YVRyYW5z
ZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQo
KSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsK
KyAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3Ao
bV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVy
YXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgcHJldmVudGVkRGVmYXVsdCA9IGRp
c3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcm9wRXZlbnQsICptX2RyYWdUYXJnZXQsIGV2
ZW50LCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9y
U2VjdXJpdHkoKTsKICAgICB9CkBAIC0zNzI5LDEzICszNzMyLDEzIEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpkaWRTdGFydERyYWcoKQogI2VuZGlmCiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjpkcmFn
U291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBEcmFnT3BlcmF0
aW9uIG9wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gbWF5RXh0ZW5kRHJhZ1Nlc3Npb24p
Cit2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNr
LCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFnU2Vzc2lvbikKIHsKICAgICAvLyBT
ZW5kIGEgaGl0IHRlc3QgcmVxdWVzdCBzbyB0aGF0IFJlbmRlckxheWVyIGdldHMgYSBjaGFuY2Ug
dG8gdXBkYXRlIHRoZSA6aG92ZXIgYW5kIDphY3RpdmUgcHNldWRvY2xhc3Nlcy4KICAgICBwcmVw
YXJlTW91c2VFdmVudChPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiB7IEhp
dFRlc3RSZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRT
aGFkb3dDb250ZW50IH0sIGV2ZW50KTsKIAogICAgIGlmIChzaG91bGREaXNwYXRjaEV2ZW50c1Rv
RHJhZ1NvdXJjZUVsZW1lbnQoKSkgewotICAgICAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXIt
PnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbik7CisgICAgICAgIGRyYWdTdGF0ZSgp
LmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKGRyYWdPcGVyYXRpb25N
YXNrKTsKICAgICAgICAgZGlzcGF0Y2hFdmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1l
cygpLmRyYWdlbmRFdmVudCwgZXZlbnQpOwogICAgIH0KICAgICBpbnZhbGlkYXRlRGF0YVRyYW5z
ZmVyKCk7CkBAIC0zODY1LDcgKzM4NjgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJh
Zyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogICAg
IC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBwb2ludCwgd2UgZG9uJ3Qgd2FudCB0
byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawogICAgIGludmFsaWRhdGVDbGljaygpOwog
ICAgIAotICAgIERyYWdPcGVyYXRpb24gc3JjT3AgPSBEcmFnT3BlcmF0aW9uTm9uZTsgICAgICAK
KyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzazsKICAgICAK
ICAgICAvLyBUaGlzIGRvZXMgd29yayBvbmx5IGlmIHdlIG1pc3NlZCBhIGRyYWdFbmQuIERvIGl0
IGFueXdheSwganVzdCB0byBtYWtlIHN1cmUgdGhlIG9sZCBkYXRhVHJhbnNmZXIgZ2V0cyBudW1i
ZWQuCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGRvaW5nIHRoaXMgZWFybGllciBpbiB0aGlzIGZ1
bmN0aW9uIGFzIHRoZSBlYXJsaWVzdCBwb2ludCB3ZSdyZSBzdXJlIGl0IHdvdWxkIGJlIHNhZmUg
dG8gZHJvcCBhbiBvbGQgZHJhZy4KQEAgLTM5MDAsNyArMzkwMyw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50
LCBDaGVja0RyCiAKICAgICAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAg
ICAgICAgICAvLyBHYXRoZXIgdmFsdWVzIGZyb20gREhUTUwgZWxlbWVudCwgaWYgaXQgc2V0IGFu
eS4KLSAgICAgICAgICAgIHNyY09wID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zb3VyY2VP
cGVyYXRpb24oKTsKKyAgICAgICAgICAgIHNvdXJjZU9wZXJhdGlvbk1hc2sgPSBkcmFnU3RhdGUo
KS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbk1hc2soKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gWXVjaywgYSBkcmFnZ2VkSW1hZ2U6bW92ZVRvOiBtZXNzYWdlIGNhbiBiZSBm
aXJlZCBhcyBhIHJlc3VsdCBvZiBraWNraW5nIG9mZiB0aGUKICAgICAgICAgICAgIC8vIGRyYWcg
d2l0aCBkcmFnSW1hZ2UhIEJlY2F1c2Ugb2YgdGhhdCBkdW1iIHJlZW50cmFuY3ksIHdlIG1heSB0
aGluayB3ZSd2ZSBub3QKQEAgLTM5MTEsNyArMzkxNCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVj
a0RyCiAgICAgCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnKSB7CiAgICAgICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAgbV9kaWRTdGFydERyYWcgPSBwYWdl
ICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgp
LCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uLCBoYXNO
b25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9IHBhZ2Ug
JiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCks
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duQ29udGVudHNQ
b3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKICAgICAgICAgLy8gSW4gV2Vi
S2l0MiB3ZSBjb3VsZCByZS1lbnRlciB0aGlzIGNvZGUgYW5kIHN0YXJ0IGFub3RoZXIgZHJhZy4K
ICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBwcm9ibGVtcyB3aXRoIHRoZSBvd25lcnNo
aXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9taXNlZCB0eXBlcy4KICAgICAgICAgaWYg
KG1fZGlkU3RhcnREcmFnKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA2ZmZj
ODNjMDEyZi4uYzIxZjQ1NjdmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAt
MTYzLDExICsxNjMsMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAg
c3RydWN0IERyYWdUYXJnZXRSZXNwb25zZSB7CiAgICAgICAgIGJvb2wgYWNjZXB0IHsgZmFsc2Ug
fTsKLSAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uOworICAgICAgICBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzazsKICAgICB9OwotICAgIERyYWdU
YXJnZXRSZXNwb25zZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHZv
aWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7
Ci0gICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dp
bmdGaWxlcyk7CisgICAgRHJhZ1RhcmdldFJlc3BvbnNlIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRy
PFBhc3RlYm9hcmQ+KCk+JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5n
RmlsZXMpOworICAgIHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBib29sIHBlcmZvcm1EcmFnQW5kRHJvcChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQg
dXBkYXRlRHJhZ1N0YXRlQWZ0ZXJFZGl0RHJhZ0lmTmVlZGVkKEVsZW1lbnQmIHJvb3RFZGl0YWJs
ZUVsZW1lbnQpOwogICAgIFJlZlB0cjxFbGVtZW50PiBkcmFnZ2VkRWxlbWVudCgpIGNvbnN0Owog
I2VuZGlmCkBAIC0yNjgsNyArMjY4LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2Fu
Y2VsbGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBEcmFnT3BlcmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lv
biA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpObyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4sIE1heUV4dGVuZERyYWdTZXNzaW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246
Ok5vKTsKICNlbmRpZgogCiAgICAgdm9pZCBmb2N1c0RvY3VtZW50VmlldygpOwpAQCAtNDE2LDcg
KzQxNiw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wg
ZGlzcGF0Y2hEcmFnRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0
YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERhdGFUcmFuc2ZlciYpOwotICAgIERy
YWdUYXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBEcmFnT3BlcmF0aW9uLCBi
b29sIGRyYWdnaW5nRmlsZXMpOworICAgIERyYWdUYXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdF
bnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQm
IHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYgLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7
CiAgICAgdm9pZCBpbnZhbGlkYXRlRGF0YVRyYW5zZmVyKCk7CiAKICAgICBib29sIGhhbmRsZURy
YWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVz
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmlu
ZGV4IDdkMDUyY2ZlMThhLi5mODZlYTQzNTZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Z3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIHJl
dHVybiBkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsKIH0K
IAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6
ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgbG9naWMgaXMgaW5jb21wbGV0ZQogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgp
KQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKLSAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbk5vbmU7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogY29uc3QgSW50U2l6
ZSYgRHJhZ0NvbnRyb2xsZXI6Om1heERyYWdJbWFnZVNpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCA4NWJkNDhhY2MyMi4uODk3MTRjZTU0
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBA
IC02NCwxMCArNjQsMTAgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgcmV0dXJuIGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFn
QXBwbGljYXRpb25Jc0NvcHlLZXlEb3duOwogfQogICAgIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGlj
YXRpb25Jc01vZGFsKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBib29sIG1heUNvbnRhaW5VUkw7CiAgICAgaWYg
KGNhbkxvYWREYXRhRnJvbURyYWdnaW5nUGFzdGVib2FyZCgpKQpAQCAtNzYsMTIgKzc2LDEyIEBA
IERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgICAgICBtYXlDb250YWluVVJMID0gZHJhZ0RhdGEuY29udGFpbnNV
UkxUeXBlSWRlbnRpZmllcigpOwogCiAgICAgaWYgKCFtYXlDb250YWluVVJMICYmICFkcmFnRGF0
YS5jb250YWluc1Byb21pc2UoKSkKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgaWYgKCFtX2RvY3VtZW50VW5kZXJN
b3VzZSB8fCAoIShkcmFnRGF0YS5mbGFncygpICYgKERyYWdBcHBsaWNhdGlvbkhhc0F0dGFjaGVk
U2hlZXQgfCBEcmFnQXBwbGljYXRpb25Jc1NvdXJjZSkpKSkKICAgICAgICAgcmV0dXJuIERyYWdP
cGVyYXRpb25Db3B5OwogCi0gICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhE
cmFnSW1hZ2VTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdD
b250cm9sbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVy
V2luLmNwcAppbmRleCAyZDQ2ZDZiMjNlYS4uY2ZhNGFiOWUyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKQEAgLTQyLDEzICs0MiwxNSBAQCBj
b25zdCBpbnQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29uQm90dG9tSW5zZXQgPSAzOwogCiBjb25z
dCBmbG9hdCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ltYWdlQWxwaGEgPSAwLjc1ZjsKIAotRHJhZ09w
ZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJh
Z0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJh
dGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7Ci0gICAgLy9GSVhNRTogdG8gbWF0Y2gg
dGhlIG1hY29zIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lCi0g
ICAgLy9pZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9y
IHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQKLSAgICAvL0lmIHRoaXMgY2FuIGJlIGRl
dGVybWluZWQgZnJvbSB3aXRoaW4gV2ViQ29yZSBvcGVyYXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxs
ZWQgaW50byAKLSAgICAvL1dlYkNvcmUgaXRzZWxmCi0gICAgcmV0dXJuIGRyYWdEYXRhLmNvbnRh
aW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICAvLyBGSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91
ciB3ZSBzaG91bGQgcmV0dXJuIFdURjo6bnVsbG9wdC4KKyAgICAvLyBJZiB3ZSBhcmUgYSBtb2Rh
bCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0
YWNoZWQgc2hlZXQuCisgICAgLy8gSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhp
biBXZWJDb3JlIG9wZXJhdGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvCisgICAgLy8gV2Vi
Q29yZSBpdHNlbGYuCisgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5p
dGlhdGVEcmFnKQorICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIH0KIAogYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihj
b25zdCBEcmFnRGF0YSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKaW5kZXggOGY2
NzU1ZjU3NjEuLmU4YzQwZjU1OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3Bw
CkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiAhUExBVEZPUk0o
Q09DT0EpCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdP
cGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3Ms
IE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykK
K0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZs
YWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1h
c2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9i
YWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRh
KQpAQCAtNDIsNyArNDIsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwg
Y29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQbwogeyAgCiB9CiAKLURy
YWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERy
YWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRy
YWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291
cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xp
ZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2Jh
bFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0RhdGEuaAppbmRleCA0MjFhMjk5NDNiMy4uMzFiOGFiOWVlODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRHJhZ0RhdGEuaApAQCAtNzUsMTMgKzc1LDEzIEBAIHB1YmxpYzoKICAgICBlbnVtIGNs
YXNzIERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9y
Q29udHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBv
c2l0aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAo
MCwwKSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0
YVJlZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0Fw
cGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFn
RGVzdGluYXRpb25BY3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3Qg
U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGlj
YXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQ
T1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAg
IFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERy
YWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxk
IHVzZWQgb25seSBieSBXZWJLaXQyIElQQyBiZWNhdXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5p
dGlhbGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5kIG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAg
RHJhZ0RhdGEoKSA9IGRlZmF1bHQ7CiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFdFQkNPUkVfRVhQ
T1JUIERyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291
cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25O
b25lKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYsIGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0
aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0Fw
cGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICAgICBjb25zdCBEcmFnRGF0
YU1hcCYgZHJhZ0RhdGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEo
aW50JiBzaXplLCBTdHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVu
dERhdGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKTsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGlj
OgogICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Z2xvYmFsUG9zaXRpb247IH0KICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fYXBwbGljYXRpb25GbGFnczsgfQogICAgIERyYWdEYXRhUmVmIHBsYXRmb3Jt
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YTsgfQotICAgIERyYWdPcGVy
YXRpb24gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7IH0KKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2s7IH0KICAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVy
c2lvblBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNQ
bGFpblRleHQoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoRHJh
Z2dpbmdQdXJwb3NlID0gRHJhZ2dpbmdQdXJwb3NlOjpGb3JFZGl0aW5nKSBjb25zdDsKQEAgLTEy
OSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIEludFBvaW50IG1fY2xpZW50UG9zaXRpb247CiAg
ICAgSW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAgICBEcmFnRGF0YVJlZiBtX3BsYXRmb3Jt
RHJhZ0RhdGE7Ci0gICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
azsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2s7CiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgbV9hcHBsaWNhdGlvbkZsYWdzOwogICAg
IFZlY3RvcjxTdHJpbmc+IG1fZmlsZU5hbWVzOwogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRp
b25BY3Rpb24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCmluZGV4IDljY2FmYzBjZDdhLi4zYTEy
ODlkNGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0Rh
dGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNv
Y29hLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3Rl
Ym9hcmRUeXBlKCkKICNlbmRpZgogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYg
ZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3Rp
bmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdB
cHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBk
ZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0
aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxh
dGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtMTMxLDcgKzEzMSw3IEBAIERyYWdEYXRhOjpEcmFnRGF0
YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvCiB7CiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9y
YWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0Fw
cGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRl
c3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRy
YWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQ
b2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVy
YXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0
aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3Np
dGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRp
b24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKaW5kZXggMGMwMTNjZjY3ZWUuLjA4YzJiZWE3YzZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcApAQCAtMTQ5
LDQ5ICsxNDksNDkgQEAgdW5zaWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRvbih1bnNpZ25l
ZCBidXR0b24pCiAgICAgcmV0dXJuIDEgPDwgKDggKyBidXR0b24gLSAxKTsKIH0KIAotRHJhZ09w
ZXJhdGlvbiBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0
aW9uKQorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRp
b24oR2RrRHJhZ0FjdGlvbiBnZGtBY3Rpb24pCiB7Ci0gICAgLy8gV2UgaGF2ZSBubyBnb29kIHdh
eSB0byBkZXRlY3QgRHJhZ09wZXJhdGlvbkV2ZXJ5IG90aGVyIHRoYW4KKyAgICAvLyBXZSBoYXZl
IG5vIGdvb2Qgd2F5IHRvIGRldGVjdCBhbnlEcmFnT3BlcmF0aW9uKCkgb3RoZXIgdGhhbgogICAg
IC8vIHRvIHVzZSBpdCB3aGVuIGFsbCBhcHBsaWNhYmxlIGZsYWdzIGFyZSBvbi4KICAgICBpZiAo
Z2RrQWN0aW9uICYgR0RLX0FDVElPTl9DT1BZCiAgICAgICAgICYmIGdka0FjdGlvbiAmIEdES19B
Q1RJT05fTU9WRQogICAgICAgICAmJiBnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0xJTkspCi0gICAg
ICAgIHJldHVybiBEcmFnT3BlcmF0aW9uRXZlcnk7CisgICAgICAgIHJldHVybiBhbnlEcmFnT3Bl
cmF0aW9uKCk7CiAKLSAgICB1bnNpZ25lZCBhY3Rpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAg
ICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gYWN0aW9uOwogICAgIGlmIChnZGtBY3Rpb24gJiBH
REtfQUNUSU9OX0NPUFkpCi0gICAgICAgIGFjdGlvbiB8PSBEcmFnT3BlcmF0aW9uQ29weTsKKyAg
ICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uQ29weSk7CiAgICAgaWYgKGdka0FjdGlvbiAm
IEdES19BQ1RJT05fTU9WRSkKLSAgICAgICAgYWN0aW9uIHw9IERyYWdPcGVyYXRpb25Nb3ZlOwor
ICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVyYXRpb25Nb3ZlKTsKICAgICBpZiAoZ2RrQWN0aW9u
ICYgR0RLX0FDVElPTl9MSU5LKQotICAgICAgICBhY3Rpb24gfD0gRHJhZ09wZXJhdGlvbkxpbms7
CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlvbkxpbmspOwogCi0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGFjdGlvbik7CisgICAgcmV0dXJuIGFjdGlvbjsKIH0K
IAotR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhEcmFnT3BlcmF0
aW9uIGNvcmVBY3Rpb24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rp
b25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBjb3JlQWN0aW9uKQogewogICAgIHVuc2lnbmVk
IGdka0FjdGlvbiA9IDA7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUp
CisgICAgaWYgKGNvcmVBY3Rpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R2RrRHJhZ0FjdGlvbj4oZ2RrQWN0aW9uKTsKIAotICAgIGlmIChjb3JlQWN0aW9uICYgRHJh
Z09wZXJhdGlvbkNvcHkpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlv
bkNvcHkpKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9DT1BZOwotICAgIGlmIChj
b3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFp
bnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9N
T1ZFOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAgaWYgKGNv
cmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICBnZGtBY3Rpb24g
fD0gR0RLX0FDVElPTl9MSU5LOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rp
b24+KGdka0FjdGlvbik7CiB9CiAKLUdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xl
R2RrRHJhZ0FjdGlvbihEcmFnT3BlcmF0aW9uIGNvcmVBY3Rpb24pCitHZGtEcmFnQWN0aW9uIGRy
YWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IGNvcmVBY3Rpb24pCiB7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5
IHx8IGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAoY29yZUFjdGlvbiA9
PSBhbnlEcmFnT3BlcmF0aW9uKCkgfHwgY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9u
Q29weSkpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX0NPUFk7Ci0gICAgaWYgKGNvcmVBY3Rp
b24gJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFn
T3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX01PVkU7Ci0gICAgaWYg
KGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAoY29yZUFjdGlvbi5jb250
YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJldHVybiBHREtfQUNUSU9OX0xJTks7
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KDApOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCmluZGV4IDVhYWI0ZWI3OWEyLi4xOThi
YzhlMjUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaApA
QCAtNTEsOCArNTEsOCBAQCBTdHJpbmcgZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKIAogV0VCQ09S
RV9FWFBPUlQgdW5zaWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0
b24pOwogCi1XRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdP
cGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRy
YWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKERyYWdPcGVyYXRpb24pOwotV0VCQ09SRV9FWFBP
UlQgR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKERyYWdP
cGVyYXRpb24pOworV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGdka0Ry
YWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7CitXRUJDT1JFX0VYUE9SVCBH
ZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPik7CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25U
b1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdEYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdp
bi5jcHAKaW5kZXggZWUwZDhiMjYwY2MuLjE4ODcwZjIyNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxMiBCYWlkdSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC00MSw3ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IERyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAg
RHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBm
bGFncykKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVu
dFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAs
IG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYzZlNWExZDVmMi4uZTIxZjNkODdk
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGZvciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tE
cmFnQWN0aW9uc0ludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OmNvcmVEcmFnT3BlcmF0aW9u
TWFzayk6CisgICAgICAgIC0gQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24gdG8gYXZvaWQgY2FzdGlu
Zy4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbmREcmFn
RW5kVG9QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAgICAtIE1ha2Ug
dXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRyYWdFbmRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX2RpZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6XSk6CisgICAgICAgIChjb3JlRHJh
Z09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbik6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
ZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjpkcmFnRGVzdGluYXRpb25BY3Rpb246XSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgZHJhZ0ludGVyYWN0aW9uOndpbGxBbmltYXRlTGlmdFdpdGhBbmlt
YXRvcjpzZXNzaW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlv
bjpzZXNzaW9uOmRpZEVuZFdpdGhPcGVyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgZHJvcEludGVyYWN0aW9uOnNlc3Npb25EaWRFbmQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5k
ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24pOgorCiAyMDIwLTA2LTAyICBD
aHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OW3IyNjA4NDRdOiBbR1RLXVtXUEVdIEluc3BlY3RvciBHUmVzb3VyY2Ugbm8gbG9uZ2VyIHVw
ZGF0ZWQgYWZ0ZXIgV2ViSW5zcGVjdG9yVUkgZmlsZSB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDJkNDNiYWViZjhlLi5hYmVlMjU1NDdjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTEwMjUsMTIg
KzEwMjUsNiBAQCBDR0Zsb2F0IFVJUm91bmRUb1NjcmVlblNjYWxlKENHRmxvYXQgdmFsdWUsIFVJ
U2NyZWVuICopOwogCiBXVEZfRVhURVJOX0NfRU5ECiAKLXR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBVSURyYWdPcGVyYXRpb24pCi17Ci0gICAgVUlEcmFnT3BlcmF0aW9uTm9uZSA9IDAs
Ci0gICAgVUlEcmFnT3BlcmF0aW9uRXZlcnkgPSBOU1VJbnRlZ2VyTWF4LAotfTsKLQogQGludGVy
ZmFjZSBVSURyYWdJbnRlcmFjdGlvbiAoKQogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwg
Z2V0dGVyPV9saWZ0RGVsYXksIHNldHRlcj1fc2V0TGlmdERlbGF5OikgTlNUaW1lSW50ZXJ2YWwg
bGlmdERlbGF5OwogLSAodm9pZClfc2V0QWxsb3dzUG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk6
KEJPT0wpYWxsb3dzUG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAzZmRkODA0OWQ0OS4uM2RhYTMyY2IyNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA5LDYgKzIwOSw3
IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAg
ICdXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0JywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50
SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmll
cicsCisgICAgICAgICdXZWJDb3JlOjpEcmFnT3BlcmF0aW9uJywgICMgRklYTUU6IFJlbW92ZSBh
ZnRlciBlbnVtIGNsYXNzIERyYWdPcGVyYXRpb24uCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXInLApAQCAtNTg4LDYgKzU4OSw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRP
cldvcmtlcklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPiddLAog
ICAgICAgICAnV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3Vt
ZW50RWRpdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6OkRyYWdIYW5kbGluZ01l
dGhvZCc6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKKyAgICAgICAgJ1dlYkNvcmU6OkRy
YWdPcGVyYXRpb24nOiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJzogWyc8V2ViQ29y
ZS9GaWxlQ2hvb3Nlci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVEYXRhV2l0aFBhcnNl
ZFVSTCc6IFsnPFdlYkNvcmUvU2hhcmVEYXRhLmg+J10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaAppbmRleCBjODY4
YzI3NzNmOC4uODk3ODlmMzgyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtNDAsNCArNDAsMjQgQEAg
aW5saW5lIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFn
RGVzdGluYXRpb25BY3Rpb25NYXNrKFcKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgVVNF
KEFQUEtJVCkKK2lubGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURy
YWdPcGVyYXRpb25NYXNrKE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKyAgICBpZiAob3BlcmF0aW9uICYg
TlNEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisg
ICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChv
cGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFn
T3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisg
ICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChv
cGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRp
ZiAvLyBVU0UoQVBQS0lUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ0NDM4MTEyOWY5Li5j
ZThmMmY5OGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0xNTMxLDcgKzE1MzEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0Rh
dGE+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQog
ewogICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKTsKICAgICBlbmNvZGVy
IDw8IGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRy
YWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpKTsKKyAgICBlbmNvZGVyIDw8IGRy
YWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGVuY29kZXIuZW5jb2Rl
RW51bShkcmFnRGF0YS5mbGFncygpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVy
IDw8IGRyYWdEYXRhLnBhc3RlYm9hcmROYW1lKCk7CkBAIC0xNTUwLDggKzE1NTAsOCBAQCBib29s
IEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZ2xvYmFsUG9zaXRpb24pKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzazsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShkcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spKQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2s7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2spKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBEcmFnQXBwbGlj
YXRpb25GbGFncyBhcHBsaWNhdGlvbkZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0RyYWdTb3VyY2UuaAppbmRleCAzOGEwNjZmNWMzMC4uYjVmY2JmMDlkOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZS5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBEcmFnU291cmNlKEd0a1dpZGdldCopOwogICAg
IH5EcmFnU291cmNlKCk7CiAKLSAgICB2b2lkIGJlZ2luKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEm
JiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJik7Cisg
ICAgdm9pZCBiZWdpbihXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJik7CiAKIHByaXZhdGU6
CiAgICAgR3RrV2lkZ2V0KiBtX3dlYlZpZXcgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGszLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3BwCmluZGV4IDNlZDRjY2Mz
MjM2Li5lZmRjZWYyNWQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9EcmFnU291cmNlR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9EcmFnU291cmNlR3RrMy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBEcmFnU291cmNlOjp+
RHJhZ1NvdXJjZSgpCiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1f
d2ViVmlldywgdGhpcyk7CiB9CiAKLXZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0
YSYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiYmIGltYWdlKQordm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2ss
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAgaWYgKG1fZHJhZykgewog
ICAgICAgICBndGtfZHJhZ19jYW5jZWwobV9kcmFnLmdldCgpKTsKQEAgLTEyOSw3ICsxMjksNyBA
QCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBE
cmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgUgogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmNhblNt
YXJ0UmVwbGFjZSgpKQogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdk
a19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJhcHBsaWNhdGlvbi92bmQud2Via2l0Z3RrLnNt
YXJ0cGFzdGUiKSwgMCwgRHJhZ1RhcmdldFR5cGU6OlNtYXJ0UGFzdGUpOwogCi0gICAgbV9kcmFn
ID0gZ3RrX2RyYWdfYmVnaW5fd2l0aF9jb29yZGluYXRlcyhtX3dlYlZpZXcsIGxpc3QuZ2V0KCks
IGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKG9wZXJhdGlvbiksIEdES19CVVRUT05fUFJJ
TUFSWSwgbnVsbHB0ciwgLTEsIC0xKTsKKyAgICBtX2RyYWcgPSBndGtfZHJhZ19iZWdpbl93aXRo
X2Nvb3JkaW5hdGVzKG1fd2ViVmlldywgbGlzdC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJh
Z0FjdGlvbnMob3BlcmF0aW9uTWFzayksIEdES19CVVRUT05fUFJJTUFSWSwgbnVsbHB0ciwgLTEs
IC0xKTsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4g
aW1hZ2VTdXJmYWNlKGltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKSk7CiAgICAgICAgIC8vIFVz
ZSB0aGUgY2VudGVyIG9mIHRoZSBkcmFnIGltYWdlIGFzIGhvdHNwb3QuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCmluZGV4IGQ4YjQz
NTY5MzRlLi5jNmFjYjVhMjc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgRHJhZ1NvdXJjZTo6
fkRyYWdTb3VyY2UoKQogewogfQogCi12b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRh
dGEmJiBzZWxlY3Rpb25EYXRhLCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4mJiBpbWFnZSkKK3ZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0
YSYmIHNlbGVjdGlvbkRhdGEsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNr
LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQogewogICAgIGlmIChtX2RyYWcpIHsK
ICAgICAgICAgZ2RrX2RyYWdfZHJvcF9kb25lKG1fZHJhZy5nZXQoKSwgRkFMU0UpOwpAQCAtODks
NyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rp
b25EYXRhLCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgUgogICAgIGF1dG8qIHN1cmZhY2UgPSBn
dGtfbmF0aXZlX2dldF9zdXJmYWNlKGd0a193aWRnZXRfZ2V0X25hdGl2ZShtX3dlYlZpZXcpKTsK
ICAgICBhdXRvKiBkZXZpY2UgPSBnZGtfc2VhdF9nZXRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRf
ZGVmYXVsdF9zZWF0KGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkobV93ZWJWaWV3KSkpOwogICAgIEdS
ZWZQdHI8R2RrQ29udGVudFByb3ZpZGVyPiBwcm92aWRlciA9IGFkb3B0R1JlZihnZGtfY29udGVu
dF9wcm92aWRlcl9uZXdfdW5pb24ocHJvdmlkZXJzLmRhdGEoKSwgcHJvdmlkZXJzLnNpemUoKSkp
OwotICAgIG1fZHJhZyA9IGFkb3B0R1JlZihnZGtfZHJhZ19iZWdpbihzdXJmYWNlLCBkZXZpY2Us
IHByb3ZpZGVyLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhvcGVyYXRpb24p
LCAwLCAwKSk7CisgICAgbV9kcmFnID0gYWRvcHRHUmVmKGdka19kcmFnX2JlZ2luKHN1cmZhY2Us
IGRldmljZSwgcHJvdmlkZXIuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKG9w
ZXJhdGlvbk1hc2spLCAwLCAwKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2RyYWcuZ2V0KCks
ICJkbmQtZmluaXNoZWQiLCBHX0NBTExCQUNLKCtbXShHZGtEcmFnKiBndGtEcmFnLCBncG9pbnRl
ciB1c2VyRGF0YSkgewogICAgICAgICBhdXRvJiBkcmFnID0gKnN0YXRpY19jYXN0PERyYWdTb3Vy
Y2UqPih1c2VyRGF0YSk7CiAgICAgICAgIGlmIChkcmFnLm1fZHJhZy5nZXQoKSAhPSBndGtEcmFn
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaAppbmRleCA4
YzNiMTBlMTA1MC4uYTAwNDUwMGIwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJvcFRhcmdldC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9u
YWw8V2ViQ29yZTo6SW50UG9pbnQ+IG1fcG9zaXRpb247CiAgICAgdW5zaWduZWQgbV9kYXRhUmVx
dWVzdENvdW50IHsgMCB9OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+IG1f
c2VsZWN0aW9uRGF0YTsKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIG1fb3BlcmF0aW9uIHsg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUgfTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiBtX29wZXJhdGlvbjsKICNpZiBVU0UoR1RLNCkKICAgICBHUmVmUHRyPEdDYW5j
ZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGMxM2IyOWIzMWRjLi4xYzUx
OTVmMjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKQEAgLTIxNywxMSArMjE3LDExIEBAIHZvaWQgRHJvcFRhcmdldDo6ZGlk
UGVyZm9ybUFjdGlvbigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAgYXV0byBvcGVyYXRpb24g
PSBwYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChvcGVyYXRpb24gPT0gbV9v
cGVyYXRpb24pCisgICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29wZXJhdGlvbikgfHwgKm9wZXJh
dGlvbiA9PSAqbV9vcGVyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fb3BlcmF0aW9u
ID0gb3BlcmF0aW9uOwotICAgIGdka19kcmFnX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVy
YXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24obV9vcGVyYXRpb24pLCBHREtfQ1VSUkVOVF9USU1F
KTsKKyAgICBnZGtfZHJhZ19zdGF0dXMobV9kcm9wLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9TaW5n
bGVHZGtEcmFnQWN0aW9uKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+KHsgfSkpLCBHREtfQ1VSUkVOVF9USU1FKTsKIH0KIAogdm9pZCBEcm9wVGFy
Z2V0OjpsZWF2ZVRpbWVyRmlyZWQoKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgRHJvcFRhcmdl
dDo6bGVhdmVUaW1lckZpcmVkKCkKICAgICBhdXRvKiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VH
ZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKG1fd2ViVmlldykpOwogICAgIEFTU0VSVChwYWdl
KTsKIAotICAgIERyYWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEudmFsdWUoKSwgKm1f
cG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93ZWJWaWV3LCAqbV9w
b3NpdGlvbiksIERyYWdPcGVyYXRpb25Ob25lKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmbV9z
ZWxlY3Rpb25EYXRhLnZhbHVlKCksICptX3Bvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1Nj
cmVlblBvaW50KG1fd2ViVmlldywgKm1fcG9zaXRpb24pLCB7IH0pOwogICAgIHBhZ2UtPmRyYWdF
eGl0ZWQoZHJhZ0RhdGEpOwogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azQuY3BwCmluZGV4IDUxY2EzZTdiODIxLi4zNjFlNGZhNWM1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTYzLDcgKzYz
LDcgQEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7CiAKICAgICAgICAgZHJv
cC5lbnRlcih7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRvSW50ZWdlcih5KSB9KTsKLSAgICAg
ICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29wZXJh
dGlvbik7CisgICAgICAgIHJldHVybiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KGRyb3AubV9vcGVyYXRpb24gPyAqZHJvcC5tX29wZXJhdGlvbiA6IE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPih7IH0pKTsKICAgICB9KSwgdGhpcyk7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImRyYWctbW90aW9uIiwgR19DQUxMQkFDSygrW10oR3RrRHJvcFRhcmdldEFzeW5jKiwg
R2RrRHJvcCogZ2RrRHJvcCwgZG91YmxlIHgsIGRvdWJsZSB5LCBncG9pbnRlciB1c2VyRGF0YSkg
LT4gR2RrRHJhZ0FjdGlvbiB7CkBAIC03Miw3ICs3Miw3IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJn
ZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdk
a0RyYWdBY3Rpb24+KDApOwogCiAgICAgICAgIGRyb3AudXBkYXRlKHsgY2xhbXBUb0ludGVnZXIo
eCksIGNsYW1wVG9JbnRlZ2VyKHkpIH0pOwotICAgICAgICByZXR1cm4gZHJhZ09wZXJhdGlvblRv
U2luZ2xlR2RrRHJhZ0FjdGlvbihkcm9wLm1fb3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGRy
YWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29wZXJhdGlvbiA/ICpkcm9w
Lm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgfSkpOwogICAgIH0pLCB0
aGlzKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3QodGFyZ2V0LCAiZHJhZy1sZWF2ZSIsIEdfQ0FM
TEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdka0Ryb3AsIGdwb2ludGVy
IHVzZXJEYXRhKSB7CkBAIC0yNzMsMTEgKzI3MywxMSBAQCB2b2lkIERyb3BUYXJnZXQ6OmRpZFBl
cmZvcm1BY3Rpb24oKQogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0g
cGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKTsKLSAgICBpZiAob3BlcmF0aW9uID09IG1fb3Bl
cmF0aW9uKQorICAgIGlmICgoIW9wZXJhdGlvbiAmJiAhbV9vcGVyYXRpb24pIHx8IG9wZXJhdGlv
biA9PSBtX29wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vcGVyYXRpb24gPSBv
cGVyYXRpb247Ci0gICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJhdGlv
blRvR2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRpb24pLCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtE
cmFnQWN0aW9uKG1fb3BlcmF0aW9uKSk7CisgICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQo
KSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRpb24gPyAqbV9vcGVyYXRp
b24gOiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbih7IH0pKSwgZHJhZ09wZXJhdGlvblRvU2luZ2xl
R2RrRHJhZ0FjdGlvbihtX29wZXJhdGlvbiA/ICptX29wZXJhdGlvbiA6IE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPih7IH0pKSk7CiB9CiAKIHZvaWQgRHJvcFRhcmdldDo6bGVhdmUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRl
eCA2NWU2OWMyYzU2ZS4uMGFlZTRiYzkzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMjAsOSArMzIwLDkgQEAgdm9p
ZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpz
dGFydERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbiwgRHJhZ09wZXJhdGlvbiBkcmFnT3Bl
cmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
JiYgZHJhZ0ltYWdlKQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdFQktJVF9X
RUJfVklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0aW9uKSwgZHJhZ09wZXJh
dGlvbiwgV1RGTW92ZShkcmFnSW1hZ2UpKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJh
ZyhXRUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBXVEZNb3ZlKHNlbGVjdGlvbiks
IGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOwogfQogCiB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGVkMzllNzRk
ZGU4Li4yNzAwOTk4MjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90
PiB0YWtlVmlld1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRl
OwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiYmIGRyYWdJbWFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbigpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKaW5kZXggZmU0ZTdhYzAzMWMuLjQ0ZGI0NDg5MDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjA1NCwx
MyArMjA1NCwxMyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcEFyZWEoV2ViS2l0
V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBjb25zdCBJbnRSZQogfQogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYlZpZXdCYXNlLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgRHJhZ09w
ZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQor
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmll
d0Jhc2UsIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJh
dGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgaW1hZ2Up
CiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnBy
aXY7CiAgICAgaWYgKCFwcml2LT5kcmFnU291cmNlKQogICAgICAgICBwcml2LT5kcmFnU291cmNl
ID0gbWFrZVVuaXF1ZTxEcmFnU291cmNlPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CiAKLSAg
ICBwcml2LT5kcmFnU291cmNlLT5iZWdpbihXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpLCBkcmFnT3Bl
cmF0aW9uLCBXVEZNb3ZlKGltYWdlKSk7CisgICAgcHJpdi0+ZHJhZ1NvdXJjZS0+YmVnaW4oV1RG
TW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdURk1vdmUoaW1hZ2UpKTsK
IAogI2lmICFVU0UoR1RLNCkKICAgICAvLyBBIGRyYWcgc3RhcnRpbmcgc2hvdWxkIHByZXZlbnQg
YSBkb3VibGUtY2xpY2sgZnJvbSBoYXBwZW5pbmcuIFRoaXMgbWlnaHQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0
ZS5oCmluZGV4IDFjNGRmMTI3ZWM0Li5lYjdmODZlMDhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5o
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlBy
b2Nlc3MoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VQYWdlQ2xv
c2VkKFdlYktpdFdlYlZpZXdCYXNlKik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSosIFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwPiYmKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2Vi
S2l0V2ViVmlld0Jhc2UqLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPiwgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiYmKTsK
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2Vi
S2l0V2ViVmlld0Jhc2UqKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJlMzllYTZjZmU4Li42OWI2MmRlMjUyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTM5MTMsNyAr
MzkxMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnZWRJbWFnZShOU0ltYWdlICosIENHUG9p
bnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyCiAgICAgc2VuZERyYWdFbmRUb1BhZ2Uo
ZW5kUG9pbnQsIG9wZXJhdGlvbik7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNlbmREcmFnRW5k
VG9QYWdlKENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lk
IFdlYlZpZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdP
cGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2spCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KICAgICBOU1BvaW50IHdpbmRvd0ltYWdlTG9jID0gW1ttX3ZpZXcgd2lu
ZG93XSBjb252ZXJ0U2NyZWVuVG9CYXNlOk5TUG9pbnRGcm9tQ0dQb2ludChlbmRQb2ludCldOwpA
QCAtMzkyMyw3ICszOTIzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2Uo
Q0dQb2ludCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKICAgICAvLyBQcmV2
ZW50IHF1ZXVlZCBtb3VzZURyYWdnZWQgZXZlbnRzIGZyb20gY29taW5nIGFmdGVyIHRoZSBkcmFn
IGFuZCBmYWtlIG1vdXNlVXAgZXZlbnQuCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRz
ID0gdHJ1ZTsKIAotICAgIG1fcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50KHdpbmRv
d01vdXNlTG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xvYmFsUG9pbnQod2luZG93
TW91c2VMb2MsIFttX3ZpZXcgd2luZG93XSkpLCBvcGVyYXRpb24pOworICAgIG1fcGFnZS0+ZHJh
Z0VuZGVkKFdlYkNvcmU6OkludFBvaW50KHdpbmRvd01vdXNlTG9jKSwgV2ViQ29yZTo6SW50UG9p
bnQoV2ViQ29yZTo6Z2xvYmFsUG9pbnQod2luZG93TW91c2VMb2MsIFttX3ZpZXcgd2luZG93XSkp
LCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KIAogc3RhdGlj
IFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbkZsYWdzIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKE5T
VmlldyAqdmlldywgaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCkBAIC0zOTQ3LDcg
KzM5NDcsNyBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChp
ZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBXZWJDb3JlOjpJbnRQb2ludCBj
bGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24g
ZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omds
b2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10p
KTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dp
bmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdP
cGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwog
ICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9i
YWwsIGRyYWdPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0
QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sp
OwogCiAgICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKQEAgLTM5NTYs
MTggKzM5NTYsNDIgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVy
ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgcmV0dXJuIE5TRHJhZ09w
ZXJhdGlvbkNvcHk7CiB9CiAKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCit7CisgICAgaWYgKCFkcmFnT3Bl
cmF0aW9uKQorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHN3aXRj
aCAoKmRyYWdPcGVyYXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5
OgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBjYXNlIFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTGluazsK
KyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljOgorICAgICAgICByZXR1cm4g
TlNEcmFnT3BlcmF0aW9uR2VuZXJpYzsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Q
cml2YXRlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBjYXNl
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0
aW9uTW92ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGU6CisgICAgICAg
IHJldHVybiBOU0RyYWdPcGVyYXRpb25EZWxldGU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7Cit9CisKIE5TRHJhZ09w
ZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4g
ZHJhZ2dpbmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNv
bnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwogICAgIGF1dG8gZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFtt
X3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJ
bmZvXSk7Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sp
OworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CiAgICAgV2ViQ29yZTo6RHJh
Z0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlv
bk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwg
ZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAgICAgbV9wYWdlLT5k
cmFnVXBkYXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1l
KTsKIAogICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9wYWdlLT5j
dXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKIAotICAgIGlmIChtX3BhZ2Ut
PmN1cnJlbnREcmFnT3BlcmF0aW9uKCkgPT0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpCisg
ICAgaWYgKCFtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpCiAgICAgICAgIG51bWJlck9m
VmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwog
CiAgICAgTlNEcmFnZ2luZ0Zvcm1hdGlvbiBkcmFnZ2luZ0Zvcm1hdGlvbiA9IE5TRHJhZ2dpbmdG
b3JtYXRpb25Ob25lOwpAQCAtMzk3OSwxNCArNDAwMywxNCBAQCBOU0RyYWdPcGVyYXRpb24gV2Vi
Vmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5m
bykKICAgICBpZiAoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nRm9ybWF0aW9uICE9IGRyYWdnaW5nRm9y
bWF0aW9uKQogICAgICAgICBbZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nRm9ybWF0aW9uOmRyYWdn
aW5nRm9ybWF0aW9uXTsKIAotICAgIHJldHVybiBtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9u
KCk7CisgICAgcmV0dXJuIGtpdChtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpOwogfQog
CiB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRy
YWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252
ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5n
SW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpE
cmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNl
ZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFn
Z2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFn
KG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAgICAgbV9wYWdlLT5k
cmFnRXhpdGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUp
OwogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgZHJhZ2dp
bmdJbmZvLm51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlk
SXRlbXNGb3JEcm9wOwpAQCAtNDAwMiw3ICs0MDI2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVy
Zm9ybURyYWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAg
ICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5n
SW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2Nh
dGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRh
ID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0
YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0
b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFn
RGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFs
LCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQo
KSwgZHJhZ2dpbmdJbmZvKSk7CiAKICAgICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5k
cmFnZ2luZ1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bmRib3hFeHRlbnNpb25IYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5k
ZXggYWM1ZDkwZWI1MzkuLjJlNjY2MjhhYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCkBAIC0yNTAsNyArMjUwLDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWco
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFy
dERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSA9IDA7CiAjZWxz
ZQogICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpIHsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAwZmM5YjhlNWNkMC4uZDQzYzc5MzI3MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjQyNCwxMSAr
MjQyNCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3Bl
cmF0aW9uLCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBi
b29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2Vw
dGVkLCBjb25zdCBJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0YWJs
ZUVsZW1lbnRSZWN0KQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uLCBX
ZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNl
SXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25z
dCBJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRS
ZWN0KQogewotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBkcmFnT3BlcmF0aW9uIDw9IERy
YWdPcGVyYXRpb25EZWxldGUpOwotCi0gICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IHN0YXRp
Y19jYXN0PERyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24pOworICAgIG1fY3VycmVudERyYWdP
cGVyYXRpb24gPSBkcmFnT3BlcmF0aW9uOwogICAgIG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhv
ZCA9IGRyYWdIYW5kbGluZ01ldGhvZDsKICAgICBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0
ID0gbW91c2VJc092ZXJGaWxlSW5wdXQ7CiAgICAgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNU
b0JlQWNjZXB0ZWQgPSBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkOwpAQCAtMjQzOCwyMCArMjQz
NiwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYkNvcgogfQogCiAjaWYgUExBVEZPUk0oR1RLKQot
dm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0
YSwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGRyYWdJbWFnZUhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoU2VsZWN0aW9u
RGF0YSYmIHNlbGVjdGlvbkRhdGEsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBk
cmFnT3BlcmF0aW9uTWFzaywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFn
ZUhhbmRsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UgPSAhZHJh
Z0ltYWdlSGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZHJhZ0ltYWdl
SGFuZGxlKSA6IG51bGxwdHI7Ci0gICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhXVEZNb3ZlKHNl
bGVjdGlvbkRhdGEpLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnT3Bl
cmF0aW9uKSwgV1RGTW92ZShkcmFnSW1hZ2UpKTsKKyAgICBwYWdlQ2xpZW50KCkuc3RhcnREcmFn
KFdURk1vdmUoc2VsZWN0aW9uRGF0YSksIGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGRyYWdJ
bWFnZSkpOwogCiAgICAgZGlkU3RhcnREcmFnKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdl
UHJveHk6OmRyYWdFbmRlZChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQordm9pZCBXZWJQYWdl
UHJveHk6OmRyYWdFbmRlZChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
IGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChjbGll
bnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIG9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRy
YWdPcGVyYXRpb25NYXNrKSk7CiAgICAgc2V0RHJhZ0NhcmV0UmVjdCh7IH0pOwogfQogCkBAIC0y
NDgyLDcgKzI0ODAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJhZ2dpbmcoKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCkKIHsKLSAgICBt
X2N1cnJlbnREcmFnT3BlcmF0aW9uID0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmU7CisgICAg
bV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICBtX2N1cnJlbnREcmFn
SGFuZGxpbmdNZXRob2QgPSBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmU7CiAgICAgbV9jdXJyZW50
RHJhZ0lzT3ZlckZpbGVJbnB1dCA9IGZhbHNlOwogICAgIG1fY3VycmVudERyYWdOdW1iZXJPZkZp
bGVzVG9CZUFjY2VwdGVkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggN2JhOWY4YjVlYzAuLjdmNjg3MGM4NDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTE1Niw4ICsxMTU2LDggQEAgcHVibGljOgogICAgIHZvaWQgcGVy
Zm9ybURyYWdPcGVyYXRpb24oV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdT
dG9yYWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZUFycmF5JiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybURyYWdPcGVyYXRpb24oYm9vbCBo
YW5kbGVkKTsKIAotICAgIHZvaWQgZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2
NF90IGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3Vz
ZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgZWRpdGFibGVFbGVtZW50UmVjdCk7Ci0gICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CisgICAgdm9pZCBkaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFdlYkNv
cmU6OkRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWdu
ZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5z
ZXJ0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCk7
CisgICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPik7CiAgICAgdm9pZCBkaWRTdGFydERyYWcoKTsKICAgICB2
b2lkIGRyYWdDYW5jZWxsZWQoKTsKICAgICB2b2lkIHNldERyYWdDYXJldFJlY3QoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOwpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHZpc2libGVVUkwsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBhcmNo
aXZlSGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShH
VEspCi0gICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50NjRf
dCBkcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdl
KTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUm
IGRyYWdJbWFnZSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICNpZiBF
TkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gY3VycmVudERy
YWdPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9Cisg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY3VycmVudERyYWdPcGVyYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CiAgICAgV2ViQ29yZTo6
RHJhZ0hhbmRsaW5nTWV0aG9kIGN1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QoKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2Q7IH0KICAgICBib29sIGN1cnJlbnREcmFn
SXNPdmVyRmlsZUlucHV0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJ
bnB1dDsgfQogICAgIHVuc2lnbmVkIGN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVk
OyB9CkBAIC0yNjA3LDcgKzI2MDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAgICAgLy8gQ3VycmVudCBkcmFnIGRlc3RpbmF0aW9uIGRldGFpbHMgYXJlIGRlbGl2ZXJl
ZCBhcyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2UsCiAgICAgLy8gc28gd2UgcHJlc2VydmUgdGhl
bSB0byBiZSB1c2VkIHdoZW4gdGhlIG5leHQgZHJhZ2dpbmcgZGVsZWdhdGUgY2FsbCBpcyBtYWRl
LgotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9jdXJyZW50RHJhZ09wZXJhdGlvbiB7IFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsKICAgICBXZWJDb3JlOjpEcmFnSGFuZGxp
bmdNZXRob2QgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kIHsgV2ViQ29yZTo6RHJhZ0hhbmRs
aW5nTWV0aG9kOjpOb25lIH07CiAgICAgYm9vbCBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0
IHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVB
Y2NlcHRlZCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCAyZDIzZTRiNjYwYi4uYWRjYTE1YzRiYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxMCw3
ICszMTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBEcmFnIGFuZCBk
cm9wIG1lc3NhZ2VzCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBEaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgZW51bTp1aW50OF90IFdl
YkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJ
c092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIFdlYkNv
cmU6OkludFJlY3QgaW5zZXJ0aW9uUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBlZGl0YWJsZUVsZW1l
bnRSZWN0KQorICAgIERpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihPcHRpb25hbDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZp
bGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgV2ViQ29yZTo6SW50
UmVjdCBpbnNlcnRpb25SZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGVkaXRhYmxlRWxlbWVudFJlY3Qp
CiAgICAgRGlkRW5kRHJhZ2dpbmcoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBF
TkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMzE4LDcgKzMxOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAgICAgU2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoU3RyaW5nIHBhc3RlYm9hcmRO
YW1lLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGltYWdlSGFuZGxlLCB1aW50NjRfdCBp
bWFnZVNpemUsIFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGV4dGVuc2lvbiwgU3RyaW5nIHRpdGxl
LCBTdHJpbmcgdXJsLCBTdHJpbmcgdmlzaWJsZVVSTCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6Okhh
bmRsZSBhcmNoaXZlSGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSkKICNlbmRpZgogI2lmIFBM
QVRGT1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBTdGFydERyYWcoV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb25EYXRhLCB1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSkKKyAgICBTdGFydERyYWco
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgZHJhZ0ltYWdlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KaW5kZXggNDM5ZGI5OTc3ZWUuLjY5NmI5MDg4ZDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KQEAgLTcyODUsNyArNzI4NSw3IEBAIC0gKHZvaWQpX2RpZEhhbmRsZURyYWdTdGFydFJlcXVl
c3Q6KEJPT0wpc3RhcnRlZAogICAgICAgICBpZiAoc3RhcnRlZCkgewogICAgICAgICAgICAgLy8g
QSBjbGllbnQgb2YgdGhlIE9iamVjdGl2ZSBDIFNQSSBvciBVSUtpdCBtaWdodCBoYXZlIHByZXZl
bnRlZCB0aGUgZHJhZyBmcm9tIGJlZ2lubmluZyBlbnRpcmVseSBpbiB0aGUgVUkgcHJvY2Vzcywg
aW4gd2hpY2ggY2FzZQogICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBiYWxhbmNlIHRoZSBgZHJh
Z3N0YXJ0YCBldmVudCB3aXRoIGEgYGRyYWdlbmRgLgotICAgICAgICAgICAgX3BhZ2UtPmRyYWdF
bmRlZChwb3NpdGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbk5vbmUpOworICAgICAgICAgICAgX3BhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZv
ckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgeyB9KTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTczMDMsMjQgKzczMDMsNDIgQEAgLSAodm9pZCljb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9p
bnRzRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIG8KICAgICAgICAg
Km91dEdsb2JhbFBvaW50ID0gbG9jYXRpb25JbkNvbnRlbnRWaWV3OwogfQogCi1zdGF0aWMgVUlE
cm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBVSURyb3BPcGVyYXRpb24gZHJvcE9w
ZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+IG9wZXJhdGlvbikKIHsKLSAgICBpZiAob3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbk1vdmUpCi0gICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Nb3ZlOwotCi0gICAg
aWYgKG9wZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KQotICAgICAgICByZXR1
cm4gVUlEcm9wT3BlcmF0aW9uQ29weTsKLQorICAgIGlmIChvcGVyYXRpb24pIHsKKyAgICAgICAg
aWYgKCpvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgICAg
IHJldHVybiBVSURyb3BPcGVyYXRpb25Nb3ZlOworICAgICAgICBpZiAoKm9wZXJhdGlvbiAmIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICAgICAgcmV0dXJuIFVJRHJvcE9wZXJh
dGlvbkNvcHk7CisgICAgfQogICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25DYW5jZWw7CiB9CiAK
K3N0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRp
b25Gb3JVSURyb3BPcGVyYXRpb24oVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb24pCit7Cisg
ICAgc3dpdGNoIChkcm9wT3BlcmF0aW9uKSB7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25DYW5j
ZWw6CisgICAgICAgIHJldHVybiB7IH07CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Gb3JiaWRk
ZW46CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBj
YXNlIFVJRHJvcE9wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uQ29weTsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogLSAoV2ViQ29yZTo6RHJhZ0RhdGEpZHJhZ0Rh
dGFGb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gZHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uOihXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVzdGluYXRpb25BY3Rpb24K
IHsKICAgICBDR1BvaW50IGdsb2JhbDsKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBj
b21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lvbiBvdXRDbGll
bnRQb2ludDomY2xpZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogCi0gICAgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+KHNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbiA/IFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25FdmVyeSA6IChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgJiB+V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk1vdmUpKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gV2ViQ29y
ZTo6YW55RHJhZ09wZXJhdGlvbigpOworICAgIGlmICghc2Vzc2lvbi5hbGxvd3NNb3ZlT3BlcmF0
aW9uKQorICAgICAgICBkcmFnT3BlcmF0aW9uTWFzay5yZW1vdmUoV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbk1vdmUpOwogICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJhZ09wZXJhdGlv
bk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIFdlYktpdDo6Y29yZURyYWdEZXN0
aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKSB9OwogfQogCkBAIC03NDI0
LDcgKzc0NDIsOCBAQCAtICh2b2lkKV9kaWRQZXJmb3JtRHJhZ09wZXJhdGlvbjooQk9PTCloYW5k
bGVkCiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2Jh
bFBvaW50c0ZvckRyb3BTZXNzaW9uOmRyb3BTZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQg
b3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNz
aW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBfcGFnZS0+Y3VycmVu
dERyYWdPcGVyYXRpb24oKSk7CisgICAgYXV0byBjdXJyZW50RHJhZ09wZXJhdGlvbiA9IF9wYWdl
LT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOworICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6
cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwp
LCBjdXJyZW50RHJhZ09wZXJhdGlvbiA/ICpjdXJyZW50RHJhZ09wZXJhdGlvbiA6IE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPih7IH0pKTsKIH0KIAogLSAodm9pZClfZGlkQ2hhbmdl
RHJhZ0NhcmV0UmVjdDooQ0dSZWN0KXByZXZpb3VzUmVjdCBjdXJyZW50UmVjdDooQ0dSZWN0KXJl
Y3QKQEAgLTgwMTMsNyArODAzMiw3IEBAIC0gKHZvaWQpZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJ
bnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxBbmltYXRlTGlmdFdpdGhBbmltCiAgICAgICAg
ICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiBlbmRlZCBhdCBzdGFy
dDogJXAiLCBzZXNzaW9uKTsKICAgICAgICAgICAgIC8vIFRoZSBsaWZ0IHdhcyBjYW5jZWxlZCwg
c28gLWRyb3BJbnRlcmFjdGlvbjpzZXNzaW9uRGlkRW5kOiB3aWxsIG5ldmVyIGJlIGludm9rZWQu
IFRoaXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIGNsZWFuIHVwLgogICAgICAgICAgICAgW3Byb3Rl
Y3RlZFNlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgICAgICAgICAgcGFn
ZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBwYWdlLT5kcmFnRW5kZWQocG9z
aXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIHsgfSk7CiAgICAgICAgIH0KICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgZWxzZQpAQCAtODA0OCw3ICs4MDY3LDcg
QEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rp
b24gc2Vzc2lvbjooaWQgPFVJRHJhZ1Nlc3MKICAgICAgICAgcmV0dXJuOwogCiAgICAgW3NlbGYg
Y2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2Vi
Q29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQ
b3NpdGlvbkZvckRyYWdFbmQoKSksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBvcGVyYXRpb24p
OworICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJv
cEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIFdlYkNvcmU6
OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRp
b25Gb3JEcmFnRW5kKCkpLCBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJhdGlvbihvcGVy
YXRpb24pKTsKIH0KIAogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJhZ0ludGVyYWN0aW9u
OihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JDYW5jZWxsaW5nSXRl
bTooVUlEcmFnSXRlbSAqKWl0ZW0gd2l0aERlZmF1bHQ6KFVJVGFyZ2V0ZWREcmFnUHJldmlldyAq
KWRlZmF1bHRQcmV2aWV3CkBAIC04MjY3LDcgKzgyODYsNyBAQCAtICh2b2lkKWRyb3BJbnRlcmFj
dGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uRGlkRW5kOihpZCA8
VUlEcgogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9i
YWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZjbGllbnQgb3V0
R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9u
U3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNs
aWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTm9uZSk7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9p
bnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIHsgfSk7CiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggZWVkN2I5OTY4NTcu
Ljc0ZjQ2Y2NiZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTc1LDcg
Kzc1LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0
YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJikKIAogICAgIG1fcGFnZS0+d2lsbFN0YXJ0
RHJhZygpOwogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0
RHJhZyhkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLnNlbGVjdGlvbkRhdGEoKSwgZGF0YVRyYW5z
ZmVyLnNvdXJjZU9wZXJhdGlvbigpLCBoYW5kbGUpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuc2Vs
ZWN0aW9uRGF0YSgpLCBkYXRhVHJhbnNmZXIuc291cmNlT3BlcmF0aW9uTWFzaygpLCBoYW5kbGUp
KTsKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdlYktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjBiMGVhNzk2MmQuLmU3NzRhMmNiODMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzk0
NCwyMiArMzk0NCwyMiBAQCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIFdl
YlBhZ2U6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYQogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAKICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50
NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rp
b25EYXRhLCB1aW50MzJfdCBmbGFncykKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFNlbGVjdGlvbkRhdGEm
JiBzZWxlY3Rpb25EYXRhLCB1aW50MzJfdCBmbGFncykKIHsKICAgICBpZiAoIW1fcGFnZSkgewot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBm
YWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxp
bmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKSwgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZs
YWdzKSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBzdGF0aWNf
Y2FzdDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsKICAgICBzd2l0Y2ggKGFjdGlvbikg
ewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkVudGVyZWQ6IHsKLSAgICAgICAgRHJh
Z09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVy
KCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRHJhZ09wZXJh
dGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJc092
ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0Jl
QWNjZXB0ZWQoKSwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNl
IERyYWdDb250cm9sbGVyQWN0aW9uOjpVcGRhdGVkOiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24g
cmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRh
dGVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3Bh
Z2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihy
ZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxp
bmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0
KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCks
IHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zOTc4LDI0ICszOTc4LDI0
IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9s
bGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50CiB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkRyYWdEYXRhJiBkcmFnRGF0YSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0
ZW5zaW9uc0hhbmRsZUFycmF5KQogewogICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERy
YWdPcGVyYXRpb25Ob25lLCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0s
IHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9u
ZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBz
d2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkVudGVyZWQ6
IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJl
c29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJl
ZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9s
bGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51
bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCku
Y2FyZXRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJv
bGxlcigpLmVkaXRhYmxlRWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlVwZGF0
ZWQ6IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3Bh
Z2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRv
IHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBk
YXRlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
Lm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVy
KCkuY2FyZXRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29u
dHJvbGxlcigpLmVkaXRhYmxlRWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkV4
aXRlZDoKICAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0Rh
dGEpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpO
b25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFn
SGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1
cm47CiAgICAgICAgIAogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlBlcmZvcm1EcmFn
T3BlcmF0aW9uOiB7CkBAIC00MDIyLDcgKzQwMjIsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdl
YgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0
X3Qgb3BlcmF0aW9uKQordm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2spCiB7CiAgICAgSW50
UG9pbnQgYWRqdXN0ZWRDbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbi54KCkgKyBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLngoKSwgY2xpZW50UG9zaXRpb24ueSgpICsg
bV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS55KCkpOwogICAgIEludFBvaW50
IGFkanVzdGVkR2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24ueCgpICsgbV9wYWdlLT5kcmFn
Q29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS54KCksIGdsb2JhbFBvc2l0aW9uLnkoKSArIG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueSgpKTsKQEAgLTQwMzMsNyArNDAzMyw3
IEBAIHZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0
aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhN
RTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUg
cmVhbCBvbmVzIGluc3RlYWQuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGFkanVzdGVk
Q2xpZW50UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxs
VGltZTo6bm93KCksIDAsIFdlYkNvcmU6Ok5vVGFwKTsKLSAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoRHJhZ09wZXJhdGlvbilv
cGVyYXRpb24pOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1Nv
dXJjZUVuZGVkQXQoZXZlbnQsIGRyYWdPcGVyYXRpb25NYXNrKTsKIAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRW5kRHJhZ2dpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjMmM0OGQxYzkzNi4uNjc5Y2ZkMWI1MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTg5OSw3
ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRp
dGFibGVFbGVtZW50KCk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShH
VEspCi0gICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3QgZmxhZ3MpOwor
ICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYm
LCB1aW50MzJfdCBmbGFncyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYm
ICFQTEFURk9STShHVEspCkBAIC05MDcsNyArOTA3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBv
aW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWlu
dDY0X3Qgb3BlcmF0aW9uKTsKKyAgICB2b2lkIGRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBj
bGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPik7CiAKICAgICB2b2lkIHdpbGxQZXJmb3JtTG9hZERy
YWdEZXN0aW5hdGlvbkFjdGlvbigpOwogICAgIHZvaWQgbWF5UGVyZm9ybVVwbG9hZERyYWdEZXN0
aW5hdGlvbkFjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNTM4ZTY1NzJlNTAuLmFlOTI3NDc2Mzg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTMwOSwxNCArMzA5LDE0IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAK
ICAgICAjIERyYWcgYW5kIGRyb3AuCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19T
VVBQT1JUKQotICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVu
dFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlv
biwgdWludDMyX3QgZmxhZ3MpCisgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVudW06
dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3QgZmxhZ3MpCiAj
ZW5kaWYKICNpZiAhUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29udHJv
bGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKQog
I2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBEaWRTdGFydERyYWcoKQotICAg
IERyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50
UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKKyAgICBEcmFnRW5kZWQo
V2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2Jh
bFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlv
bk1hc2spCiAgICAgRHJhZ0NhbmNlbGxlZCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwZTY1NjQ5NmM4
NC4uOGI4N2RiMzhjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBXZWJQYWdlOjpy
ZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW8KICAgICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGljaCBvbmx5
IHNlZXMgdGhhdCB0aGUgY3VycmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcgb25l
IGlzIGJlZ2lubmluZy4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoY2xpZW50UG9zaXRp
b24sIGdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVk
LCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCAwLCBOb1Rh
cCk7CiAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbmRlZCgpOwotICAgIG1fcGFn
ZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIERy
YWdPcGVyYXRpb25Ob25lLCBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6WWVzKTsKKyAgICBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCB7IH0s
IE1heUV4dGVuZERyYWdTZXNzaW9uOjpZZXMpOwogCiAgICAgYm9vbCBkaWRIYW5kbGVEcmFnID0g
bV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS50cnlUb0JlZ2luRHJhZ0F0UG9pbnQo
Y2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGRpZEhhbmRsZURy
YWcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA0MWRiNjQ3NWU4ZS4uMDI5Nzk4
MDQ1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAy
MC0wNi0wMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAgICAgIDxodHRw
czovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJG
cmFtZSBfZHJhZ1NvdXJjZUVuZGVkQXQ6b3BlcmF0aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViSFRNTFZpZXcubW06CisgICAgICAgIChraXQpOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBk
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDpdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgZHJhZ2dpbmdTZXNzaW9uOnNvdXJjZU9wZXJhdGlvbk1hc2tGb3JEcmFnZ2luZ0NvbnRl
eHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoY29yZURyYWdP
cGVyYXRpb25NYXNrKToKKyAgICAgICAgLSBBZGQgY29udmVyc2lvbiBmdW5jdGlvbiB0byBhdm9p
ZCBjYXN0aW5nLgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdEYXRhRm9yU2Vzc2lvbjpjbGllbnQ6
Z2xvYmFsOm9wZXJhdGlvbjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ0VudGVyZWQ6
XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOl0pOgorICAgICAgICAoLVtX
ZWJWaWV3IGRyYWdnaW5nRXhpdGVkOl0pOgorICAgICAgICAoLVtXZWJWaWV3IHBlcmZvcm1EcmFn
T3BlcmF0aW9uOl0pOgorICAgICAgICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFz
aygpIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaDoKKyAgICAgICAgKENvY29hRHJhZ09wZXJhdGlvbik6CisgICAgICAgIC0gQWRkIHR5cGVk
ZWYgc28gY29yZURyYWdPcGVyYXRpb25NYXNrKCkgbWF5IGJlIHNoYXJlZCBhY3Jvc3MKKyAgICAg
ICAgICBwbGF0Zm9ybXMuCisgICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQgZGVj
bGFyYXRpb24uCisgICAgICAgIChjb3JlT3B0aW9ucyk6CisgICAgICAgIC0gUmVtb3ZlIHJlZHVu
ZGFudCBwYXJhbWV0ZXIgbmFtZS4KKwogMjAyMC0wNi0wMiAgS2VpdGggUm9sbGluICA8a3JvbGxp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0IEZFQVRVUkVTX0RFRklORVMgcmVsYXRlZCBj
aGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRl
eCBkNGRlYTdjMzljOC4uYjllZWNkYzhkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTQyLDcgKzk0Miw3IEBAIC0gKHZvaWQpX3NldFR5cGlu
Z1N0eWxlOihET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUgd2l0aFVuZG9BY3Rpb246KFdl
YkNvcmU6CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpCi0t
ICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihO
U0RyYWdPcGVyYXRpb24pb3BlcmF0aW9uCistICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQ
b2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pZHJhZ09wZXJhdGlvbk1h
c2sKIHsKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAg
LTk1Miw3ICs5NTIsNyBAQCAtICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5k
b3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aQogICAgIC8vIEZJWE1FOiBU
aGVzZSBhcmUgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFs
IG9uZXMgaW5zdGVhZC4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoV2Vi
Q29yZTo6SW50UG9pbnQod2luZG93TG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xv
YmFsUG9pbnQod2luZG93TG9jLCBbdmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddKSksCiAg
ICAgICAgIFdlYkNvcmU6OkxlZnRCdXR0b24sIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6bm93KCksIFdl
YkNvcmU6OkZvcmNlQXRDbGljaywgV2ViQ29yZTo6Tm9UYXApOwotICAgIF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbilvcGVyYXRpb24pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmV2ZW50
SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBjb3JlRHJhZ09wZXJhdGlvbk1hc2so
ZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSAm
JiBQTEFURk9STShNQUMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCmluZGV4IDVlNGE4OTA1ZWM4Li5lN2NhNDYxZDkwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiwgMjAwNyBHcmFoYW0gRGVubmlzIChn
cmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQyMjksNiArNDIy
OSwyOCBAQCAtICh2b2lkKXRvdWNoOihXZWJFdmVudCAqKWV2ZW50CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKKworc3RhdGljIE5TRHJhZ09wZXJh
dGlvbiBraXQoT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2sp
Cit7CisgICAgaWYgKG9wZXJhdGlvbk1hc2sgPT0gV2ViQ29yZTo6YW55RHJhZ09wZXJhdGlvbigp
KQorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uRXZlcnk7CisKKyAgICBOU0RyYWdPcGVy
YXRpb24gcmVzdWx0ID0gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAob3BlcmF0aW9uTWFz
ay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSkpCisgICAgICAgIHJlc3VsdCB8
PSBOU0RyYWdPcGVyYXRpb25Db3B5OworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJh
dGlvbkxpbms7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkdlbmVyaWMpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uR2VuZXJp
YzsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
UHJpdmF0ZSkpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSkK
KyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgaWYgKG9wZXJhdGlv
bk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSkpCisgICAgICAgIHJl
c3VsdCB8PSBOU0RyYWdPcGVyYXRpb25EZWxldGU7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KIC0gKHZvaWQpZHJhZ0ltYWdl
OihOU0ltYWdlICopZHJhZ0ltYWdlCiAgICAgICAgICAgICAgICBhdDooTlNQb2ludClhdApAQCAt
NDI4MCw3ICs0MzAyLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKIAotICAg
IHJldHVybiAoTlNEcmFnT3BlcmF0aW9uKXBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJh
Z09wZXJhdGlvbigpOworICAgIHJldHVybiBraXQocGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3Vy
Y2VEcmFnT3BlcmF0aW9uTWFzaygpKTsKIH0KIAogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfQkVHSU4KQEAgLTQzODYsNyArNDQwOCw3IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFn
Z2luZ1Nlc3Npb246KE5TRHJhZ2dpbmdTZXNzaW9uICopc2Vzc2lvbiBzb3VyY2VPcGVyYXRpb25N
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKIAot
ICAgIHJldHVybiAoTlNEcmFnT3BlcmF0aW9uKXBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNl
RHJhZ09wZXJhdGlvbigpOworICAgIHJldHVybiBraXQocGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5z
b3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpKTsKIH0KIAogLSAodm9pZClkcmFnZ2luZ1Nlc3Npb246
KE5TRHJhZ2dpbmdTZXNzaW9uICopc2Vzc2lvbiBlbmRlZEF0UG9pbnQ6KE5TUG9pbnQpc2NyZWVu
UG9pbnQgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzVlOWYyNWM2MWUuLjA5NzY3N2Q5
ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC01
ODksNiArNTg5LDkyIEBAIHN0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uPiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXCiAgICAgICAgIHJlc3VsdC5h
ZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQorCisjaWYgIVVTRShBUFBLSVQpCisvLyBTZWUgPFVJS2l0L1VJRHJhZ2dpbmdfUHJp
dmF0ZS5oPi4KK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfVUlEcmFnT3BlcmF0aW9u
KSB7CisgICAgX1VJRHJhZ09wZXJhdGlvbk5vbmUgPSAwLAorICAgIF9VSURyYWdPcGVyYXRpb25D
b3B5ID0gMSwKKyAgICBfVUlEcmFnT3BlcmF0aW9uTW92ZSA9IDE2LAorfTsKKyNlbmRpZgorCitP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENv
Y29hRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IHJlc3VsdDsKKworI2lmIFVTRShBUFBLSVQpCisgICAgaWYgKG9wZXJhdGlv
biAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25MaW5r
KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsKKyAgICBp
ZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0LmFk
ZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5T
RHJhZ09wZXJhdGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvblByaXZhdGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Nb3Zl
KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBp
ZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQuYWRk
KFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworI2Vsc2UKKyAgICBpZiAob3BlcmF0aW9u
ICYgX1VJRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3BlcmF0aW9uTW92
ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CisjZW5k
aWYgLy8gVVNFKEFQUEtJVCkKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBVU0UoQVBQ
S0lUKQorc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAg
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dpdGNoICgqZHJhZ09wZXJh
dGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk6CisgICAgICAgIHJl
dHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkxpbms6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGNhc2UgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRp
b25HZW5lcmljOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6CisgICAg
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Nb3ZlOworICAg
IGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJh
Z09wZXJhdGlvbkRlbGV0ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKK30KKyNlbHNlCitzdGF0aWMgX1VJRHJhZ09w
ZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlv
bikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAgIHJldHVybiBfVUlEcmFnT3Bl
cmF0aW9uTm9uZTsKKworICAgIHN3aXRjaCAoKmRyYWdPcGVyYXRpb24pIHsKKyAgICBjYXNlIFdl
YkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlv
bkNvcHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgcmV0
dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkdlbmVyaWM6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBjYXNl
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOgorICAgICAgICByZXR1cm4gX1VJRHJhZ09w
ZXJhdGlvbk5vbmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAg
ICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBfVUlEcmFnT3BlcmF0
aW9uTm9uZTsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQogI2VuZGlmIC8vIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRp
b25zIG9wdGlvbnMpCkBAIC0xOTIzLDcgKzIwMDksNyBAQCAtIChXZWJEcmFnRGVzdGluYXRpb25B
Y3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNz
aQogCiAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxVSURyb3BT
ZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENH
UG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KIHsKLSAg
ICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4ob3BlcmF0aW9uKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdP
cGVyYXRpb25NYXNrKG9wZXJhdGlvbik7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOwogICAgIHJldHVybiB7IHNlc3Npb24sIFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJvdW5kZWRJ
bnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFn
QXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrIH07CiB9CkBAIC0xOTMy
LDE0ICsyMDE4LDE0IEBAIC0gKHVpbnQ2NF90KV9lbnRlcmVkRGF0YUludGVyYWN0aW9uOihpZCA8
VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpCiB7CiAgICAgV2ViVGhyZWFk
TG9jaygpOwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Npb246c2Vz
c2lvbiBjbGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9wZXJhdGlv
bjpvcGVyYXRpb25dOwotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+cGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSkpOwogfQogCiAtICh1aW50NjRf
dClfdXBkYXRlZERhdGFJbnRlcmFjdGlvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gY2xp
ZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlv
biBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgogewogICAgIFdlYlRocmVhZExvY2soKTsK
ICAgICBhdXRvIGRyYWdEYXRhID0gW3NlbGYgZHJhZ0RhdGFGb3JTZXNzaW9uOnNlc3Npb24gY2xp
ZW50OmNsaWVudFBvc2l0aW9uIGdsb2JhbDpnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246b3BlcmF0
aW9uXTsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1Vw
ZGF0ZWQoZHJhZ0RhdGEpOworICAgIHJldHVybiBraXQoX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250
cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAodm9pZClfZXhpdGVkRGF0
YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQp
Y2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoo
dWludDY0X3Qpb3BlcmF0aW9uCkBAIC02NzQ4LDggKzY4MzQsOCBAQCAtIChOU0RyYWdPcGVyYXRp
b24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAg
IFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25d
KTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2Ry
YWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2Vi
Q29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9d
LCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIHJl
dHVybiBjb3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsK
KyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2Vs
ZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJldHVybiBr
aXQoY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSkpOwog
fQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFnZ2luZ0lu
Zm8+KWRyYWdnaW5nSW5mbwpAQCAtNjc2MSw4ICs2ODQ3LDggQEAgLSAoTlNEcmFnT3BlcmF0aW9u
KWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAgIFdlYkNv
cmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRp
Y19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3Vy
Y2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwg
W3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICByZXR1
cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CisgICAgV2Vi
Q29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29y
ZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9u
TWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICByZXR1cm4ga2l0KHBhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAodm9pZClk
cmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAgLTY3NzMs
NyArNjg1OSw3IEBAIC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4p
ZHJhZ2dpbmdJbmZvCiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5m
byBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNv
cmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdp
bmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNs
aWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dp
bmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZs
YWdzOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdn
aW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJ
bmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdz
OmRyYWdnaW5nSW5mb10pOwogICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChk
cmFnRGF0YSk7CiB9CiAKQEAgLTY3ODYsNyArNjg3Miw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdP
cGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAgV2ViQ29y
ZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAg
IFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJ
bmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgYXV0byogZHJhZ0Rh
dGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0lu
Zm9dKTsKKyAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2lu
Z0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5m
byBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpk
cmFnZ2luZ0luZm9dKTsKIAogICAgIE5TQXJyYXkqIHR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nUGFzdGVib2FyZC50eXBlczsKICAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVjdDpXZWJB
cmNoaXZlUGJvYXJkVHlwZV0gJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6OmxlZ2Fj
eUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA3ZDcwYzA0YTBjZS4uZDU5
NzZjNDRlZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3SW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTM2LDYgKzM2LDcgQEAKICNpZmRlZiBfX2NwbHVzcGx1cwogCiAjaW1wb3J0IDxXZWJDb3JlL0Fs
dGVybmF0aXZlVGV4dENsaWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJl
Y3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudEVudW1zLmg+CkBAIC04OSw3
ICs5MCwxNyBAQCBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiAKLVdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRP
cHRpb25zIG9wdGlvbnMpOworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisjaWYgVVNFKEFQUEtJ
VCkKK3R5cGVkZWYgTlNEcmFnT3BlcmF0aW9uIENvY29hRHJhZ09wZXJhdGlvbjsKKyNlbHNlCit0
eXBlZGVmIHVpbnQ2NF90IENvY29hRHJhZ09wZXJhdGlvbjsKKyNlbmRpZiAvLyBVU0UoQVBQS0lU
KQorCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25N
YXNrKENvY29hRHJhZ09wZXJhdGlvbik7CisjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkK
KworV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMpOwogCiBP
cHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBjb3JlTGF5b3V0TWlsZXN0b25lcyhX
ZWJMYXlvdXRNaWxlc3RvbmVzKTsKIFdlYkxheW91dE1pbGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0
b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CmluZGV4IDMxMzI2MDM2YThhLi5iMjQ5ZmZkODc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKQEAgLTQ0
LDE4ICs0NCwxOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIERXT1JE
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMoRHJhZ09wZXJhdGlvbiBv
cCkKK3N0YXRpYyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3Jz
KE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQogewogICAgIERXT1JEIHJl
c3VsdCA9IERST1BFRkZFQ1RfTk9ORTsKLSAgICBpZiAob3AgPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5
KQorICAgIGlmIChvcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24oKSkKICAgICAgICAg
cmV0dXJuIERST1BFRkZFQ1RfQ09QWSB8IERST1BFRkZFQ1RfTElOSyB8IERST1BFRkZFQ1RfTU9W
RTsgCi0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKG9wZXJhdGlvbk1h
c2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVG
RkVDVF9DT1BZOyAKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAob3Bl
cmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJlc3VsdCB8
PSBEUk9QRUZGRUNUX0xJTks7IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkKICAgICAgICAg
cmVzdWx0IHw9IERST1BFRkZFQ1RfTU9WRTsKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYykKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uR2VuZXJp
YykpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX01PVkU7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhE
cmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBEV09SRCBva0VmZmVjdCA9IGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMobV93ZWJWaWV3LT5wYWdlKCktPmRyYWdDb250
cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbigpKTsKKyAgICAgICAgRFdPUkQgb2tFZmZlY3Qg
PSBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKG1fd2ViVmlldy0+cGFn
ZSgpLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkpOwogICAgICAg
ICBEV09SRCBlZmZlY3QgPSBEUk9QRUZGRUNUX05PTkU7CiAgICAgICAgIENPTVB0cjxJV2ViVUlE
ZWxlZ2F0ZT4gdWk7CiAgICAgICAgIEhSRVNVTFQgaHIgPSBFX05PVElNUEw7CkBAIC0xNjQsMTUg
KzE2NCwxNSBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBE
YXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmCiAgICAgICAgIGlmIChociA9PSBFX05P
VElNUEwpCiAgICAgICAgICAgICBociA9IERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwgc291
cmNlLmdldCgpLCBva0VmZmVjdCwgJmVmZmVjdCk7CiAKLSAgICAgICAgRHJhZ09wZXJhdGlvbiBv
cGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IG9wZXJhdGlvbk1hc2s7CiAgICAgICAgIGlmIChociA9PSBEUkFHRFJPUF9TX0RST1Ap
IHsKICAgICAgICAgICAgIGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX0NPUFkpCi0gICAgICAgICAg
ICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uTWFzayA9IERyYWdPcGVyYXRpb25Db3B5OwogICAgICAgICAgICAgZWxzZSBpZiAoZWZm
ZWN0ICYgRFJPUEVGRkVDVF9MSU5LKQotICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdP
cGVyYXRpb25MaW5rOworICAgICAgICAgICAgICAgIG9wZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0
aW9uTGluazsKICAgICAgICAgICAgIGVsc2UgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTU9WRSkK
LSAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICAgICAg
ICAgICAgICBvcGVyYXRpb25NYXNrID0gRHJhZ09wZXJhdGlvbk1vdmU7CiAgICAgICAgIH0KLSAg
ICAgICAgZnJhbWUuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3Vz
ZUV2ZW50KG1fd2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb24pOworICAgICAgICBmcmFtZS5ldmVu
dEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChnZW5lcmF0ZU1vdXNlRXZlbnQobV93ZWJWaWV3
LCBmYWxzZSksIG9wZXJhdGlvbk1hc2spOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKaW5kZXggM2JkZWU2YmJkNWIuLjUyZmRmYThiNTM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcApAQCAtNTg0MiwzOCArNTg0Miw0MiBAQCBIUkVTVUxUIFdlYlZpZXc6
OnZpc2libGVDb250ZW50UmVjdChfT3V0XyBMUFJFQ1QgcmVjdCkKICAgICByZXR1cm4gU19PSzsK
IH0KIAotc3RhdGljIERXT1JEIGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IoRHJhZ09wZXJhdGlv
biBvcCkgewotICAgIERXT1JEIHJlcyA9IERST1BFRkZFQ1RfTk9ORTsKLSAgICBpZiAob3AgJiBE
cmFnT3BlcmF0aW9uQ29weSkgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfQ09QWTsKLSAgICBl
bHNlIGlmIChvcCAmIERyYWdPcGVyYXRpb25MaW5rKSAKLSAgICAgICAgcmVzID0gRFJPUEVGRkVD
VF9MSU5LOwotICAgIGVsc2UgaWYgKG9wICYgRHJhZ09wZXJhdGlvbk1vdmUpIAotICAgICAgICBy
ZXMgPSBEUk9QRUZGRUNUX01PVkU7Ci0gICAgZWxzZSBpZiAob3AgJiBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYykgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfTU9WRTsgLy9UaGlzIGFwcGVhcnMgdG8g
YmUgdGhlIEZpcmVmb3ggYmVoYXZpb3VyCi0gICAgcmV0dXJuIHJlczsKK3N0YXRpYyBEV09SRCBk
cmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29yKE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlv
bk1hc2spCit7CisgICAgaWYgKCFvcGVyYXRpb25NYXNrKQorICAgICAgICByZXR1cm4gRFJPUEVG
RkVDVF9OT05FOworCisgICAgRFdPUkQgcmVzdWx0ID0gRFJPUEVGRkVDVF9OT05FOworICAgIGlm
ICgqb3BlcmF0aW9uTWFzayAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBE
Uk9QRUZGRUNUX0NPUFk7CisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbk1hc2sgJiBEcmFnT3BlcmF0
aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9MSU5LOworICAgIGVsc2UgaWYg
KCpvcGVyYXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdCA9IERS
T1BFRkZFQ1RfTU9WRTsKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uTWFzayAmIERyYWdPcGVyYXRp
b25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX01PVkU7IC8vIFRoaXMgYXBw
ZWFycyB0byBiZSB0aGUgRmlyZWZveCBiZWhhdmlvdXIuCisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotRHJhZ09wZXJhdGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBn
cmZLZXlTdGF0ZSkgY29uc3QKK09wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBXZWJWaWV3OjprZXlT
dGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKIHsKICAgICBpZiAo
IW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgLy8gQ29uZm9ybXMgdG8gTWljcm9zb2Z0J3Mga2V5IGNvbWJpbmF0aW9u
cyBhcyBkb2N1bWVudGVkIGZvciAKICAgICAvLyBJRHJvcFRhcmdldDo6RHJhZ092ZXIuIE5vdGUs
IGdyZktleVN0YXRlIGlzIHRoZSBjdXJyZW50IAogICAgIC8vIHN0YXRlIG9mIHRoZSBrZXlib2Fy
ZCBtb2RpZmllciBrZXlzIG9uIHRoZSBrZXlib2FyZC4gU2VlOgogICAgIC8vIDxodHRwOi8vbXNk
bi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2ODAxMjkoVlMuODUpLmFzcHg+LgotICAg
IERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJj
ZURyYWdPcGVyYXRpb24oKTsKKyAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBtX3BhZ2UtPmRyYWdD
b250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKTsKIAogICAgIGlmICgoZ3JmS2V5
U3RhdGUgJiAoTUtfQ09OVFJPTCB8IE1LX1NISUZUKSkgPT0gKE1LX0NPTlRST0wgfCBNS19TSElG
VCkpCi0gICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICBvcGVy
YXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uTGluayB9OwogICAgIGVsc2UgaWYgKChncmZLZXlT
dGF0ZSAmIE1LX0NPTlRST0wpID09IE1LX0NPTlRST0wpCi0gICAgICAgIG9wZXJhdGlvbiA9IERy
YWdPcGVyYXRpb25Db3B5OworICAgICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9u
Q29weSB9OwogICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAmIE1LX1NISUZUKSA9PSBNS19TSElG
VCkKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgICAgIG9w
ZXJhdGlvbk1hc2sgPSB7IERyYWdPcGVyYXRpb25HZW5lcmljIH07CiAKLSAgICByZXR1cm4gb3Bl
cmF0aW9uOworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCiBIUkVTVUxUIFdlYlZpZXc6
OkRyYWdFbnRlcihJRGF0YU9iamVjdCogcERhdGFPYmplY3QsIERXT1JEIGdyZktleVN0YXRlLCBQ
T0lOVEwgcHQsIERXT1JEKiBwZHdFZmZlY3QpCkBAIC01OTE5LDggKzU5MjMsNyBAQCBIUkVTVUxU
IFdlYlZpZXc6OkRyYWdMZWF2ZSgpCiAgICAgICAgIG1fZHJvcFRhcmdldEhlbHBlci0+RHJhZ0xl
YXZlKCk7CiAKICAgICBpZiAobV9kcmFnRGF0YSkgewotICAgICAgICBEcmFnRGF0YSBkYXRhKG1f
ZHJhZ0RhdGEuZ2V0KCksIEludFBvaW50KCksIEludFBvaW50KCksIAotICAgICAgICAgICAgRHJh
Z09wZXJhdGlvbk5vbmUpOworICAgICAgICBEcmFnRGF0YSBkYXRhKG1fZHJhZ0RhdGEuZ2V0KCks
IEludFBvaW50KCksIEludFBvaW50KCksIHsgfSk7CiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnRXhpdGVkKGRhdGEpOwogICAgICAgICBtX2RyYWdEYXRhID0gMDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggMTgwNjY5OGE5YWQuLjdiMjIxMDRkOThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCkBAIC01NTUsNyArNTU1LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcGVyZm9ybUxheWVyZWRXaW5kb3dVcGRhdGUoKTsKIAotICAgIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3Rh
dGUpIGNvbnN0OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBrZXlTdGF0
ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3Q7CiAKICAgICAvLyBGSVhN
RTogVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIGEgd29ya2Fyb3VuZC4gVGhlIGRyb3AgZWZmZWN0
IChwZHdFZmZlY3QpIHBhc3NlZCB0byBEcm9wIGlzIGluY29ycmVjdC4gCiAgICAgLy8gV2Ugc2V0
IHRoaXMgdmFyaWFibGUgaW4gRHJhZ0VudGVyIGFuZCBEcmFnT3ZlciBzbyB0aGF0IGl0IGNhbiBi
ZSB1c2VkIGluIERyb3AgdG8gc2V0IHRoZSBjb3JyZWN0IGRyb3AgZWZmZWN0LiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400998</attachid>
            <date>2020-06-03 22:17:21 -0700</date>
            <delta_ts>2020-06-03 22:19:21 -0700</delta_ts>
            <desc>Patch v11</desc>
            <filename>bug-212605-20200603221729.patch</filename>
            <type>text/plain</type>
            <size>139422</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE1MTdlMTU1ZDI4MjVk
NmVkOGZiZGZjZWMzMjkyNTA0ZTg0MTA5My4uNGY4OTYyMzdkOWJiY2FkMzEyYTlmMDdjY2U0Y2Jl
NWE1NGRiMDU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMC0wNi0wMyAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAgICAgICAgLSBSZXBsYWNlIHVzZSBvZiBEcmFnT3Bl
cmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9yCisgICAgICAgICAgT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAgIC0gUmVuYW1lIGZ1bmN0aW9uIHBhcmFtZXRlcnMg
YW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5vdGUgdXNlCisgICAgICAgICAgb2YgbWFzayB2YWx1
ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdPcGVyYXRpb25Ob25lIGVudW0gdmFsdWUuCisgICAg
ICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9uRXZlcnkgZW51bSB2YWx1ZSB3aXRoIGFueURyYWdP
cGVyYXRpb24oKS4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYWdPcEZyb21JRU9wKToKKyAgICAgICAgKFdlYkNvcmU6OklFT3BGcm9tRHJhZ09w
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0
KTogUmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRp
b25NYXNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRp
b25PcGVyYXRpb24gY29uc3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXI6OnNldFNvdXJjZU9wZXJhdGlvbik6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXI6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKTogUmVuYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2sp
OgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJh
bnNmZXI6OnNvdXJjZU9wZXJhdGlvbiBjb25zdCk6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXI6OmRlc3RpbmF0aW9uT3BlcmF0aW9uIGNvbnN0KTogUmVuYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2sg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRp
b24pOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldFNvdXJjZU9w
ZXJhdGlvbk1hc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5h
dGlvbk9wZXJhdGlvbik6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6
c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKiBwYWdlL0RyYWdBY3Rpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKTogQWRkLgorICAgICAgICAo
V1RGOjpFbnVtVHJhaXRzPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KTogQWRkLgorICAgICAgICAo
V1RGOjpPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOiBBZGQuCisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6ZHJhZ0VudGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdV
cGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRP
clVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAgICAgICAgLSBDaGFu
Z2UgbG9naWMgdG8gY2FsbCBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZygpIHRvIGNvbnZlcnQKKyAg
ICAgICAgICB0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrIHRvIGEgc2luZ2xlIG9wZXJhdGlv
biB3aGVuCisgICAgICAgICAgdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzayBidXQgZG9lc24n
dCBjb250YWluIHdpdGggYW55CisgICAgICAgICAgYml0IHZhbHVlcyBzZXQgaW4gc291cmNlT3Bl
cmF0aW9uTWFzay4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcp
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNv
dXJjZURyYWdPcGVyYXRpb24gY29uc3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
cmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydERyYWdPcGVyYXRpb25Ub0Ryb3Bab25lT3BlcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmREcm9wWm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdD
b250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0
aW9uKToKKyAgICAgICAgKiBwYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAgICAgIC0gQ2xl
YW4gdXAgY29tbWVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1V0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Omdk
a0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJh
dGlvblRvR2RrRHJhZ0FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJhdGlvblRv
U2luZ2xlR2RrRHJhZ0FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdEYXRhV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisKIDIwMjAtMDYt
MDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRXZl
bnRSZWdpb246OnRyYW5zbGF0ZSgpIG5lZWRzIHRvIG9mZnNldCB0aGUgd2hlZWwgZXZlbnQgcmVn
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBiYzZlNWExZDVmMjEyZTk2NWRjODE2ZTkwNGIzYzgwY2ZkMzdiYmJj
Li5hNDJiMmY1MWJhNDM5YmJiZDRiMDUxMTNjZjM1NTllZDk0YWU1YmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwNSBAQAorMjAyMC0wNi0wMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFs
dWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAg
ICAgICAgLSBSZXBsYWNlIHVzZSBvZiBEcmFnT3BlcmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IG9yCisgICAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAg
IC0gUmVuYW1lIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5v
dGUgdXNlCisgICAgICAgICAgb2YgbWFzayB2YWx1ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdP
cGVyYXRpb25Ob25lIGVudW0gdmFsdWUuCisgICAgICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9u
RXZlcnkgZW51bSB2YWx1ZSB3aXRoIGFueURyYWdPcGVyYXRpb24oKS4KKworICAgICAgICAqIFBs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKFVJRHJhZ09wZXJhdGlvbik6Cisg
ICAgICAgIC0gUmVtb3ZlIHVudXNlZCAoYW5kIG1pc25hbWVkKSBVSURyYWdPcGVyYXRpb24gZW51
bSB0eXBlZGVmLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAg
ICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgIChoZWFk
ZXJzX2Zvcl90eXBlKToKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbiBlbnVtLgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJ
bnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojpjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQg
Y29udmVyc2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAtIFVwZGF0ZSB0byBlbmNvZGUvZGVjb2RlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPi4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaDoKKyAgICAgICAgKFdlYktp
dDo6RHJhZ1NvdXJjZTo6YmVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdT
b3VyY2VHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ1NvdXJjZTo6YmVnaW4pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RHJhZ1NvdXJjZTo6YmVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRpZFBlcmZvcm1BY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJv
cFRhcmdldDo6RHJvcFRhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRpZFBl
cmZvcm1BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTdGFy
dERyYWcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZS5oOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcpOgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6ZHJhZ2dpbmdFbnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6a2l0KTogQWRkIGNvbnZlcnNp
b24gZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAg
ICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rp
b24uCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnN0YXJ0RHJhZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKToKKyAgICAgICAgLSBSZW1vdmUgTUVTU0FHRV9DSEVDSyBub3cgdGhhdCB3
ZSdyZSB1c2luZyB0aGUgYWN0dWFsIHR5cGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRW5kZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0Q3VycmVudERyYWdJbmZvcm1h
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmN1cnJlbnREcmFnT3BlcmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAoV2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViUGFnZVByb3h5OjpTdGFydERyYWcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0Ol0pOgorICAg
ICAgICAoZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKGNv
cmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKTogQWRkIGNvbnZlcnNpb24gZnVuY3Rp
b24uCisgICAgICAgIC0gTm90ZSB0aGF0IHRoaXMgd2FzIG5vdCBiZWluZyBjb252ZXJ0ZWQgZnJv
bSBVSURyb3BPcGVyYXRpb24gdG8KKyAgICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIHBy
ZXZpb3VzbHksIGFuZCBVSURyb3BPcGVyYXRpb25Nb3ZlCisgICAgICAgICAgKDB4Mykgd2FzIG5v
dCBiZWluZyBwcm9wZXJseSBjb252ZXJ0ZWQgdG8gRHJhZ09wZXJhdGlvbk1vdmUKKyAgICAgICAg
ICAoMHgxNikuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0RhdGFGb3JEcm9wU2Vzc2lv
bjpkcmFnRGVzdGluYXRpb25BY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rp
ZFBlcmZvcm1EcmFnT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJ
bnRlcmFjdGlvbjp3aWxsQW5pbWF0ZUxpZnRXaXRoQW5pbWF0b3I6c2Vzc2lvbjpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBkcmFnSW50ZXJhY3Rpb246c2Vzc2lvbjpkaWRFbmRXaXRoT3Bl
cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyb3BJbnRlcmFjdGlvbjpzZXNz
aW9uRGlkRW5kOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICAoV2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKFdlYlBh
Z2U6OkRyYWdFbmRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1z
Rm9yRHJhZ1Nlc3Npb24pOgorCiAyMDIwLTA2LTAyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMu
cmVpZEBzb255LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OW3IyNjA4NDRdOiBbR1RLXVtXUEVd
IEluc3BlY3RvciBHUmVzb3VyY2Ugbm8gbG9uZ2VyIHVwZGF0ZWQgYWZ0ZXIgV2ViSW5zcGVjdG9y
VUkgZmlsZSB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNDFkYjY0NzVl
OGVhZGZkMjk0OWRjOTg3NzE2ZDRmNTg2MzM1ZjE1Yy4uODkzNjY0MDA3ZDgzN2FmYTk4ZjE2Y2Q4
ZWQxMzYxMDgxMjY5YzAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ1IEBACisyMDIwLTA2LTAzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBmb3IgbWFzayB2YWx1ZXMKKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjYwNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBicm9hZCBzdHJva2VzOgorICAgICAgICAt
IFJlcGxhY2UgdXNlIG9mIERyYWdPcGVyYXRpb24gd2l0aCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3IKKyAgICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPi4KKyAgICAgICAgLSBSZW5h
bWUgZnVuY3Rpb24gcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRvIGRlbm90ZSB1c2UK
KyAgICAgICAgICBvZiBtYXNrIHZhbHVlcy4KKyAgICAgICAgLSBSZW1vdmUgRHJhZ09wZXJhdGlv
bk5vbmUgZW51bSB2YWx1ZS4KKyAgICAgICAgLSBSZXBsYWNlIERyYWdPcGVyYXRpb25FdmVyeSBl
bnVtIHZhbHVlIHdpdGggYW55RHJhZ09wZXJhdGlvbigpLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYWdTb3VyY2VFbmRlZEF0Om9wZXJh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoa2l0
KTogQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBkcmFnZ2luZ1Nlc3Npb246c291cmNlT3BlcmF0aW9uTWFza0ZvckRyYWdnaW5nQ29udGV4dDpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlRHJhZ09wZXJh
dGlvbk1hc2spOiBBZGQgY29udmVyc2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKGtpdCk6IERpdHRv
LgorICAgICAgICAtIE1hcCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyB0byBfVUlEcmFn
T3BlcmF0aW9uTW92ZQorICAgICAgICAgIGJhc2VkIG9uIGxvZ2ljIGluIFdlYkNvcmUuICBBbGwg
b3RoZXIgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbgorICAgICAgICAgIGVudW0gdmFsdWVzIG1hcCB0
byBfVUlEcmFnT3BlcmF0aW9uTm9uZS4KKyAgICAgICAgKC1bV2ViVmlldyBkcmFnRGF0YUZvclNl
c3Npb246Y2xpZW50Omdsb2JhbDpvcGVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Vu
dGVyZWREYXRhSW50ZXJhY3Rpb246Y2xpZW50Omdsb2JhbDpvcGVyYXRpb246XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX3VwZGF0ZWREYXRhSW50ZXJhY3Rpb246Y2xpZW50Omdsb2JhbDpvcGVyYXRp
b246XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2lu
Z0V4aXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAoQ29jb2FEcmFn
T3BlcmF0aW9uKToKKyAgICAgICAgLSBBZGQgdHlwZWRlZiBzbyBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soKSBtYXkgYmUgc2hhcmVkIGFjcm9zcworICAgICAgICAgIHBsYXRmb3Jtcy4KKyAgICAgICAg
KGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6IEFkZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKGNvcmVP
cHRpb25zKToKKyAgICAgICAgLSBSZW1vdmUgcmVkdW5kYW50IHBhcmFtZXRlciBuYW1lLgorCiAy
MDIwLTA2LTAyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZlcnQgRkVBVFVSRVNfREVGSU5FUyByZWxhdGVkIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCA2OTI3NWVlNzNjMTVlNWZlOTczYmM4MTU5MDczYjhmZDQwYjZlMTU1Li44
ZjkwNDdkZmM1ZDk4MzQ1ZGY3NDY1MDFjOGY2MTIxYTQ0OWNiMmFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDYtMDMgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGZvciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJy
b2FkIHN0cm9rZXM6CisgICAgICAgIC0gUmVwbGFjZSB1c2Ugb2YgRHJhZ09wZXJhdGlvbiB3aXRo
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcgorICAgICAgICAgIE9wdGlvbmFsPERyYWdPcGVy
YXRpb24+LgorICAgICAgICAtIFJlbmFtZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFuZCBsb2NhbCB2
YXJpYWJsZXMgdG8gZGVub3RlIHVzZQorICAgICAgICAgIG9mIG1hc2sgdmFsdWVzLgorICAgICAg
ICAtIFJlbW92ZSBEcmFnT3BlcmF0aW9uTm9uZSBlbnVtIHZhbHVlLgorICAgICAgICAtIFJlcGxh
Y2UgRHJhZ09wZXJhdGlvbkV2ZXJ5IGVudW0gdmFsdWUgd2l0aCBhbnlEcmFnT3BlcmF0aW9uKCku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAg
KGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMpOgorICAgICAgICAoV2Vi
RHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IpOgorICAgICAgICAoV2ViVmlldzo6a2V5U3RhdGVU
b0RyYWdPcGVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViVmlldzo6RHJhZ0xlYXZlKToKKyAg
ICAgICAgKiBXZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJh
dGlvbiBjb25zdCk6CisKIDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rp
b24gdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODQ2M2E0OGU5NzRm
YmUzZjc3ZjY2OWU1MTc4MjQ3OWI5NGNiMTA5Ni4uMzE2MGRlZTg0OGJjNWMzNzZlY2NkZjRkZGFi
ODllYmRmNTM0MGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDg4LDE4ICs0ODgsMTggQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICBy
ZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JEcm9wKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFk
b25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmRE
cm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNl
dFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0
U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNm
ZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0
ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zl
cj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBE
cmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0
ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9v
bCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5l
dyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92
ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBU
eXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJh
dGlvbihzb3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0
aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2lu
SWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAg
ICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTU5NSw3NCArNTk1LDc0IEBAIHZvaWQgRHJh
Z0ltYWdlTG9hZGVyOjppbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KikK
ICAgICBtX2RhdGFUcmFuc2Zlci0+dXBkYXRlRHJhZ0ltYWdlKCk7CiB9CiAKLXN0YXRpYyBEcmFn
T3BlcmF0aW9uIGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQorc3RhdGlj
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9w
ZXJhdGlvbikKIHsKICAgICBpZiAob3BlcmF0aW9uID09ICJ1bmluaXRpYWxpemVkIikKLSAgICAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVy
YXRpb24oKTsKICAgICBpZiAob3BlcmF0aW9uID09ICJub25lIikKLSAgICAgICAgcmV0dXJuIERy
YWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmIChvcGVyYXRpb24g
PT0gImNvcHkiKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJl
dHVybiB7IERyYWdPcGVyYXRpb25Db3B5IH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGluayIp
Ci0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgcmV0dXJuIHsgRHJh
Z09wZXJhdGlvbkxpbmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJtb3ZlIikKLSAgICAgICAg
cmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRp
b25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVy
YXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAgICAgICBy
ZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxp
bmspOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxp
bmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TW92ZSIpCi0gICAgICAgIHJldHVybiAo
RHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8
IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHks
IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9OwogICAgIGlmIChvcGVy
YXRpb24gPT0gImxpbmtNb3ZlIikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFn
T3BlcmF0aW9uTGluayB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUp
OworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVy
aWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiYWxsIikKLSAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlv
blByaXZhdGU7IC8vIHJlYWxseSBhIG1hcmtlciBmb3IgIm5vIGNvbnZlcnNpb24iCisgICAgICAg
IHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvblBy
aXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikK
K3N0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb24g
JiAoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgYm9vbCBp
c0dlbmVyaWNNb3ZlID0gb3BlcmF0aW9uTWFzay5jb250YWluc0FueSh7IERyYWdPcGVyYXRpb25H
ZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KTsKIAotICAgIGlmICgoaXNHZW5lcmljTW92ZSAm
JiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uTGluaykpIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYg
KChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0
aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfSkgfHwgb3BlcmF0aW9uTWFzayA9PSBhbnlEcmFn
T3BlcmF0aW9uKCkpCiAgICAgICAgIHJldHVybiAiYWxsIjsKLSAgICBpZiAoaXNHZW5lcmljTW92
ZSAmJiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpKQorICAgIGlmIChpc0dlbmVyaWNN
b3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAg
ICByZXR1cm4gImNvcHlNb3ZlIjsKLSAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiAob3BlcmF0aW9u
ICYgRHJhZ09wZXJhdGlvbkxpbmspKQorICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlv
bk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICByZXR1cm4gImxpbmtN
b3ZlIjsKLSAgICBpZiAoKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KSAmJiAob3BlcmF0
aW9uICYgRHJhZ09wZXJhdGlvbkxpbmspKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5z
QWxsKHsgRHJhZ09wZXJhdGlvbkNvcHksIERyYWdPcGVyYXRpb25MaW5rIH0pKQogICAgICAgICBy
ZXR1cm4gImNvcHlMaW5rIjsKICAgICBpZiAoaXNHZW5lcmljTW92ZSkKICAgICAgICAgcmV0dXJu
ICJtb3ZlIjsKLSAgICBpZiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYg
KG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICByZXR1
cm4gImNvcHkiOwotICAgIGlmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBp
ZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJl
dHVybiAibGluayI7CiAgICAgcmV0dXJuICJub25lIjsKIH0KIAotRHJhZ09wZXJhdGlvbiBEYXRh
VHJhbnNmZXI6OnNvdXJjZU9wZXJhdGlvbigpIGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gRGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QKIHsKLSAgICBEcmFn
T3BlcmF0aW9uIG9wZXJhdGlvbiA9IGRyYWdPcEZyb21JRU9wKG1fZWZmZWN0QWxsb3dlZCk7Ci0g
ICAgQVNTRVJUKG9wZXJhdGlvbiAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7Ci0gICAgcmV0dXJu
IG9wZXJhdGlvbjsKKyAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBkcmFnT3BGcm9tSUVPcChtX2Vm
ZmVjdEFsbG93ZWQpOworICAgIEFTU0VSVChvcGVyYXRpb25NYXNrICE9IERyYWdPcGVyYXRpb25Q
cml2YXRlKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTWFzazsKIH0KIAotRHJhZ09wZXJhdGlvbiBE
YXRhVHJhbnNmZXI6OmRlc3RpbmF0aW9uT3BlcmF0aW9uKCkgY29uc3QKK09wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBEYXRhVHJhbnNmZXI6OmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygpIGNvbnN0
CiB7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVPcChtX2Ryb3BF
ZmZlY3QpOwotICAgIEFTU0VSVChvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3Bl
cmF0aW9uID09IERyYWdPcGVyYXRpb25Ob25lIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9u
TGluayB8fCBvcGVyYXRpb24gPT0gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5lcmlj
IHwgRHJhZ09wZXJhdGlvbk1vdmUpIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkp
OwotICAgIHJldHVybiBvcGVyYXRpb247CisgICAgYXV0byBvcGVyYXRpb25NYXNrID0gZHJhZ09w
RnJvbUlFT3AobV9kcm9wRWZmZWN0KTsKKyAgICBBU1NFUlQob3BlcmF0aW9uTWFzayA9PSBEcmFn
T3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb25NYXNrLmlzRW1wdHkoKSB8fCBvcGVyYXRpb25NYXNr
ID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbk1hc2sgPT0gT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+KHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pIHx8
IG9wZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKTsKKyAgICByZXR1cm4gb3BlcmF0
aW9uTWFzazsKIH0KIAotdm9pZCBEYXRhVHJhbnNmZXI6OnNldFNvdXJjZU9wZXJhdGlvbihEcmFn
T3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgRGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRp
b25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQogewotICAgIEFT
U0VSVF9BUkcob3BlcmF0aW9uLCBvcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOwot
ICAgIG1fZWZmZWN0QWxsb3dlZCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbik7CisgICAgQVNT
RVJUX0FSRyhvcGVyYXRpb25NYXNrLCBvcGVyYXRpb25NYXNrICE9IERyYWdPcGVyYXRpb25Qcml2
YXRlKTsKKyAgICBtX2VmZmVjdEFsbG93ZWQgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb25NYXNr
KTsKIH0KIAotdm9pZCBEYXRhVHJhbnNmZXI6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdP
cGVyYXRpb24gb3BlcmF0aW9uKQordm9pZCBEYXRhVHJhbnNmZXI6OnNldERlc3RpbmF0aW9uT3Bl
cmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKLSAg
ICBBU1NFUlRfQVJHKG9wZXJhdGlvbiwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Db3B5IHx8
IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJh
dGlvbkxpbmsgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8IG9wZXJhdGlv
biA9PSBEcmFnT3BlcmF0aW9uTW92ZSB8fCBvcGVyYXRpb24gPT0gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUpKTsKLSAgICBtX2Ryb3BFZmZl
Y3QgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb24pOworICAgIEFTU0VSVF9BUkcob3BlcmF0aW9u
TWFzaywgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb25NYXNr
LmlzRW1wdHkoKSB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJh
dGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkdlbmVyaWMgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFn
T3BlcmF0aW9uTW92ZSB8fCBvcGVyYXRpb25NYXNrID09IE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
Pih7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KSk7CisgICAgbV9k
cm9wRWZmZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uTWFzayk7CiB9CiAKIFN0cmluZyBE
YXRhVHJhbnNmZXI6OmRyb3BFZmZlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5o
CmluZGV4IGU1Y2ZhZjg1NmZiMjg4M2ZjMTU0ZGRjODhiMGQ3NzIzYmM5ODhiMDQuLjNjY2NmNjdh
YzVhZWQzZmQxOWM5NWIwZDQzMWQxOTA1OWQyYzBjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVyLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkg
KHBta0Bwb3N0LmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwMSBUb2JpYXMgQW50b24gKGFudG9u
QHN0dWQuZmJpLmZoLWRhcm1zdGFkdC5kZSkKICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwg
V2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtODgsMTUgKzg4LDE1IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAg
IHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnKCk7CiAgICAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50Jik7
Ci0gICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1l
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBk
cmFnZ2luZ0ZpbGVzKTsKLSAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBk
YXRpbmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgc3RhdGljIFJl
ZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4mJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdn
aW5nRmlsZXMpOworICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGlu
Z0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4m
JiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogCiAgICAg
Ym9vbCBkcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9kcm9wRWZm
ZWN0ID09ICJ1bmluaXRpYWxpemVkIjsgfQogCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVy
YXRpb24oKSBjb25zdDsKLSAgICBEcmFnT3BlcmF0aW9uIGRlc3RpbmF0aW9uT3BlcmF0aW9uKCkg
Y29uc3Q7Ci0gICAgdm9pZCBzZXRTb3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbik7Ci0gICAg
dm9pZCBzZXREZXN0aW5hdGlvbk9wZXJhdGlvbihEcmFnT3BlcmF0aW9uKTsKKyAgICBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0OworICAgIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBkZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soKSBjb25zdDsKKyAg
ICB2b2lkIHNldFNvdXJjZU9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsK
KyAgICB2b2lkIHNldERlc3RpbmF0aW9uT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJh
dGlvbj4pOwogCiAgICAgdm9pZCBzZXREcmFnSGFzU3RhcnRlZCgpIHsgbV9zaG91bGRVcGRhdGVE
cmFnSW1hZ2UgPSB0cnVlOyB9CiAgICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZShJbnRQ
b2ludCYgZHJhZ0xvY2F0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0FjdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAppbmRl
eCBhOTIzY2FlNThjYmY1ZjY1YmVjYzdlOTIzZjJkMzgwN2IyZTgzZWJkLi5iZjgzZDYzY2U1ZGYz
OGU2ZDE0MWEzODA5MmVlMTU0YTU0NjJlMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdBY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5o
CkBAIC02MCwxOCArNjAsMjEgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9u
QW55ICAgICAgICAgID0gVUlOVF9NQVgKIH0gRHJhZ1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hl
cyBOU0RyYWdPcGVyYXRpb24uCisvLyBTZWUgTlNEcmFnT3BlcmF0aW9uLCBfVUlEcmFnT3BlcmF0
aW9uIGFuZCBVSURyb3BPcGVyYXRpb24uCiB0eXBlZGVmIGVudW0gewotICAgIERyYWdPcGVyYXRp
b25Ob25lICAgID0gMCwKICAgICBEcmFnT3BlcmF0aW9uQ29weSAgICA9IDEsCiAgICAgRHJhZ09w
ZXJhdGlvbkxpbmsgICAgPSAyLAogICAgIERyYWdPcGVyYXRpb25HZW5lcmljID0gNCwKICAgICBE
cmFnT3BlcmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAgRHJhZ09wZXJhdGlvbk1vdmUgICAgPSAxNiwK
ICAgICBEcmFnT3BlcmF0aW9uRGVsZXRlICA9IDMyLAotICAgIERyYWdPcGVyYXRpb25FdmVyeSAg
ID0gVUlOVF9NQVgKIH0gRHJhZ09wZXJhdGlvbjsKIAorY29uc3RleHByIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBhbnlEcmFnT3BlcmF0aW9uKCkKK3sKKyAgICByZXR1cm4geyBEcmFnT3BlcmF0
aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmssIERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3Bl
cmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJhdGlvbk1vdmUsIERyYWdPcGVyYXRpb25EZWxldGUgfTsK
K30KKwogZW51bSBjbGFzcyBNYXlFeHRlbmREcmFnU2Vzc2lvbiA6IGJvb2wgeyBObywgWWVzIH07
CiBlbnVtIGNsYXNzIEhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSA6IGJvb2wgeyBObywgWWVz
IH07CiBlbnVtIGNsYXNzIERyYWdIYW5kbGluZ01ldGhvZCA6IHVpbnQ4X3QgeyBOb25lLCBFZGl0
UGxhaW5UZXh0LCBFZGl0UmljaFRleHQsIFVwbG9hZEZpbGUsIFBhZ2VMb2FkLCBTZXRDb2xvciwg
Tm9uRGVmYXVsdCB9OwpAQCAtOTMsNiArOTYsMTggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2Q+IHsKICAgICA+OwogfTsKIAordGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiB7CisgICAgdXNp
bmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwK
KyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHksCisgICAgICAgIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYywK
KyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUsCisgICAgICAgIFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRl
CisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3Jl
OjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBPcHRpb25TZXRW
YWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwKQEAgLTEwMiw0
ICsxMTcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRy
YWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBP
cHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4geworICAgIHVzaW5nIHZhbHVl
cyA9IE9wdGlvblNldFZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwKKyAg
ICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHksCisgICAgICAgIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYywKKyAg
ICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUsCisgICAgICAgIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlCisg
ICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAppbmRleCA0ZWUyZTJmYjM1ODRkNzg5NTQxNjNiYWI5YjExYzVlNzViZjJkZDUx
Li44NDJjNjJlMzMwNmYzNjU3ODk5ZGUxMGJjNDE0ZDk5OTEwYTEwNGJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgRHJhZ0Nv
bnRyb2xsZXI6OmRyYWdFbmRlZCgpCiAgICAgY2xpZW50KCkuZHJhZ0VuZGVkKCk7CiB9CiAKLURy
YWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnRW50
ZXJlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgcmV0dXJuIGRyYWdFbnRlcmVk
T3JVcGRhdGVkKGRyYWdEYXRhKTsKIH0KQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIERyYWdDb250
cm9sbGVyOjpkcmFnRXhpdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICBtX2ZpbGVJ
bnB1dEVsZW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFn
Q29udHJvbGxlcjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdVcGRhdGVkKGNvbnN0IERyYWdE
YXRhJiBkcmFnRGF0YSkKIHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJhZ0Rh
dGEpOwogfQpAQCAtMjc4LDcgKzI3OCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1E
cmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICBtX2RvY3VtZW50VW5k
ZXJNb3VzZSA9IG51bGxwdHI7CiAgICAgY2xlYXJEcmFnQ2FyZXQoKTsKIAotICAgIGlmIChvcGVy
YXRpb25Gb3JMb2FkKGRyYWdEYXRhKSA9PSBEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICBpZiAoIW9w
ZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBh
dXRvIHVybFN0cmluZyA9IGRyYWdEYXRhLmFzVVJMKCk7CkBAIC0zMDQsMjEgKzMwNCwyMSBAQCB2
b2lkIERyYWdDb250cm9sbGVyOjptb3VzZU1vdmVkSW50b0RvY3VtZW50KERvY3VtZW50KiBuZXdE
b2N1bWVudCkKICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IG5ld0RvY3VtZW50OwogfQogCi1E
cmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAg
IG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2lu
dChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKSk7CiAKICAgICBtX2RyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKCk7CiAgICAgaWYg
KG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5pc0VtcHR5KCkpIHsKICAgICAgICAgY2xlYXJE
cmFnQ2FyZXQoKTsgLy8gRklYTUU6IFdoeSBub3QgY2FsbCBtb3VzZU1vdmVkSW50b0RvY3VtZW50
KG51bGxwdHIpPwotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0
aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJh
Z09wZXJhdGlvbjsKICAgICBtX2RyYWdIYW5kbGluZ01ldGhvZCA9IHRyeURvY3VtZW50RHJhZyhk
cmFnRGF0YSwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLCBkcmFnT3BlcmF0aW9uKTsKICAg
ICBpZiAobV9kcmFnSGFuZGxpbmdNZXRob2QgPT0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lICYm
IChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2suY29udGFpbnMoRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uOjpMb2FkKSkpIHsKICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wZXJhdGlvbkZvckxvYWQo
ZHJhZ0RhdGEpOwotICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbiAhPSBEcmFnT3BlcmF0aW9uTm9u
ZSkKKyAgICAgICAgaWYgKGRyYWdPcGVyYXRpb24pCiAgICAgICAgICAgICBtX2RyYWdIYW5kbGlu
Z01ldGhvZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6UGFnZUxvYWQ7CiAgICAgfSBlbHNlIGlmICht
X2RyYWdIYW5kbGluZ01ldGhvZCA9PSBEcmFnSGFuZGxpbmdNZXRob2Q6OlNldENvbG9yKQogICAg
ICAgICBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CkBAIC0zODgsNyArMzg4LDcg
QEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzRm9y
RHJhZ0hhbmRsaW5nTWV0aG9kKERyYWdIYW4KIAogI2VuZGlmCiAKLURyYWdIYW5kbGluZ01ldGhv
ZCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0
YSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNr
LCBEcmFnT3BlcmF0aW9uJiBkcmFnT3BlcmF0aW9uKQorRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdD
b250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRp
b25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9wdGlv
bmFsPERyYWdPcGVyYXRpb24+JiBkcmFnT3BlcmF0aW9uKQogewogICAgIGlmICghbV9kb2N1bWVu
dFVuZGVyTW91c2UpCiAgICAgICAgIHJldHVybiBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmU7CkBA
IC00NTgsNyArNDU4LDcgQEAgRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0cnlE
b2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHQKICAgICAgICAgICAgICAg
ICBtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQgPSAxOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoIW1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCkKLSAgICAgICAgICAgICAgICBk
cmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgICAgICAgICAgZHJhZ09w
ZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgIG1fZmlsZUlucHV0RWxlbWVudFVu
ZGVyTW91c2UtPnNldENhblJlY2VpdmVEcm9wcGVkRmlsZXMobV9udW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qgb3Zl
ciBhIGZpbGUgaW5wdXQgZWxlbWVudC4gVGhlIGRyYWdnZWQgaXRlbShzKSB3aWxsIGxvYWRlZCBp
bnRvIHRoZSB2aWV3LApAQCAtNDg5LDcgKzQ4OSw3IEBAIERyYWdTb3VyY2VBY3Rpb24gRHJhZ0Nv
bnRyb2xsZXI6OmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9vdFZp
CiAgICAgcmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsKIH0KIAotRHJhZ09wZXJhdGlvbiBEcmFn
Q29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9w
YWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigp
KTsKIApAQCAtNTA0LDcgKzUwNCw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6Om9w
ZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIH0KIAogICAgIGlm
IChkb2N1bWVudCAmJiAobV9kaWRJbml0aWF0ZURyYWcgfHwgKGlzPFBsdWdpbkRvY3VtZW50Pigq
ZG9jdW1lbnQpICYmICFwbHVnaW5Eb2N1bWVudEFjY2VwdHNEcmFncykgfHwgZG9jdW1lbnQtPmhh
c0VkaXRhYmxlU3R5bGUoKSkpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gZHJhZ09wZXJhdGlvbihkcmFn
RGF0YSk7CiB9CiAKQEAgLTY5MywyOCArNjkzLDI4IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNh
blByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoRHJhZ09w
ZXJhdGlvbiBzcmNPcE1hc2spCitzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZGVmYXVs
dE9wZXJhdGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlv
bk1hc2spCiB7CiAgICAgLy8gVGhpcyBpcyBkZXNpZ25lZCB0byBtYXRjaCBJRSdzIG9wZXJhdGlv
biBmYWxsYmFjayBmb3IgdGhlIGNhc2Ugd2hlcmUKICAgICAvLyB0aGUgcGFnZSBjYWxscyBwcmV2
ZW50RGVmYXVsdCgpIGluIGEgZHJhZyBldmVudCBidXQgZG9lc24ndCBzZXQgZHJvcEVmZmVjdC4K
LSAgICBpZiAoc3JjT3BNYXNrID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBpZiAoc291cmNl
T3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkpCiAgICAgICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uQ29weTsKLSAgICBpZiAoc3JjT3BNYXNrID09IERyYWdPcGVyYXRpb25Ob25lKQot
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7Ci0gICAgaWYgKHNyY09wTWFzayAmIERy
YWdPcGVyYXRpb25Nb3ZlKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFz
ay5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uTW92ZTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAg
aWYgKHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkdlbmVyaWMpKQog
ICAgICAgICByZXR1cm4gRHJhZ0NvbnRyb2xsZXI6OnBsYXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRp
b24oKTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKHNv
dXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdPcGVyYXRp
b25MaW5rKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25MaW5rKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOwogICAgIAogICAgIC8v
IEZJWE1FOiBEb2VzIElFIHJlYWxseSByZXR1cm4gImdlbmVyaWMiIGV2ZW4gaWYgbm8gb3BlcmF0
aW9ucyB3ZXJlIGFsbG93ZWQgYnkgdGhlIHNvdXJjZT8KICAgICByZXR1cm4gRHJhZ09wZXJhdGlv
bkdlbmVyaWM7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24mIG9wZXJhdGlvbikKK2Jvb2wgRHJhZ0Nv
bnRyb2xsZXI6OnRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvbmFs
PERyYWdPcGVyYXRpb24+JiBvcGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnRVbmRl
ck1vdXNlKTsKICAgICBSZWY8RnJhbWU+IG1haW5GcmFtZShtX3BhZ2UubWFpbkZyYW1lKCkpOwpA
QCAtNzIyLDE3ICs3MjIsMTkgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNv
bnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYgb3BlcmEKICAgICBpZiAoIXZp
ZXdQcm90ZWN0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7
Ci0gICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBk
YXRlRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFsmZHJhZ0RhdGFdKCkg
eyByZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpOyB9LCBz
b3VyY2VPcGVyYXRpb24sIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7CisgICAgYXV0byBzb3Vy
Y2VPcGVyYXRpb25NYXNrID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7
CisgICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBk
YXRlRHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFsmZHJhZ0RhdGFdKCkg
eworICAgICAgICByZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0Rh
dGEpOworICAgIH0sIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMo
KSk7CiAgICAgaWYgKCF0YXJnZXRSZXNwb25zZS5hY2NlcHQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmICghdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uKQotICAgICAgICBvcGVyYXRp
b24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb24pOwotICAgIGVsc2Ug
aWYgKCEoc291cmNlT3BlcmF0aW9uICYgdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uLnZhbHVlKCkp
KSAvLyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3BlcmF0aW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0
ZWQgYnkgdGhlIHNvdXJjZQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsK
KyAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2spCisgICAgICAgIG9wZXJhdGlv
biA9IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNvdXJjZU9wZXJhdGlvbk1hc2spOworICAgIGVs
c2UgaWYgKCFzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHRhcmdldFJlc3BvbnNlLm9w
ZXJhdGlvbk1hc2sudmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVyYXRpb24g
d2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlLgorICAgICAgICBvcGVyYXRpb24g
PSBXVEY6Om51bGxvcHQ7CiAgICAgZWxzZQotICAgICAgICBvcGVyYXRpb24gPSB0YXJnZXRSZXNw
b25zZS5vcGVyYXRpb24udmFsdWUoKTsKKyAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJh
dGlvbkZvckRyYWcodGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzay52YWx1ZSgpKTsKIAogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtOTU2LDcgKzk1OCw3IEBAIE9wdGlvbmFsPEhpdFRlc3RSZXN1
bHQ+IERyYWdDb250cm9sbGVyOjpoaXRUZXN0UmVzdWx0Rm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3Vy
Y2UsCiAgICAgcmV0dXJuIHsgaGl0VGVzdFJlc3VsdCB9OwogfQogCi1ib29sIERyYWdDb250cm9s
bGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09w
ZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0
IEludFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgaGFzRGF0
YSkKK2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFn
U3RhdGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFz
aywgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBk
cmFnT3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgaGFzRGF0YSkKIHsKICAgICBp
ZiAoIXN0YXRlLnNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTcyLDcgKzk3NCw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFn
U3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgSW50UG9pbnQgbW91c2VEcmFnZ2VkUG9p
bnQgPSBzcmMudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3NpdGlvbigpKTsK
IAogICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IFVSTCgpOwotICAgIG1fc291cmNlRHJhZ09wZXJh
dGlvbiA9IHNyY09wOworICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2sgPSBzb3VyY2VPcGVy
YXRpb25NYXNrOwogCiAgICAgRHJhZ0ltYWdlIGRyYWdJbWFnZTsKICAgICBJbnRQb2ludCBkcmFn
TG9jKDAsIDApOwpAQCAtOTk1LDcgKzk5Nyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0
RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAg
ICAgICAgIC8vIFNlbGVjdGlvbiwgaW1hZ2UsIGFuZCBsaW5rIGRyYWdzIHJlY2VpdmUgYSBkZWZh
dWx0IHNldCBvZiBhbGxvd2VkIGRyYWcgb3BlcmF0aW9ucyB0aGF0CiAgICAgICAgIC8vIGZvbGxv
d3MgZnJvbToKICAgICAgICAgLy8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5r
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbT9yZXY9NDg1MjYjTDM0MzAKLSAgICAg
ICAgbV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4obV9z
b3VyY2VEcmFnT3BlcmF0aW9uIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9u
Q29weSk7CisgICAgICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2suYWRkKHsgRHJhZ09wZXJh
dGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Db3B5IH0pOwogICAgIH0KIAogICAgIEFTU0VSVChz
dGF0ZS5zb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IDkwZjg3
NWMwNjdhNWM2YTFhNzAwMGRkYTVmYTM4MGFlODZkZDcxNDkuLmVhNDk5ZTBlYmQ2NTE2ZTk4MDhj
NDlmMWVjMDg1MjQ0OWRjZWU4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgK
QEAgLTU5LDkgKzU5LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIERyYWdPcGVyYXRpb24gcGxh
dGZvcm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09w
ZXJhdGlvbiBkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRXhpdGVkKGNvbnN0IERyYWdEYXRhJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdVcGRhdGVk
KGNvbnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwZXJmb3JtRHJhZ09w
ZXJhdGlvbihjb25zdCBEcmFnRGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0Nh
bmNlbGxlZCgpOwogCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAvLyBkcmFnIGxvZ2lj
IGlzIGluIFdlYkNvcmUuCiAgICAgdm9pZCBzZXREaWRJbml0aWF0ZURyYWcoYm9vbCBpbml0aWF0
ZWQpIHsgbV9kaWRJbml0aWF0ZURyYWcgPSBpbml0aWF0ZWQ7IH0KICAgICBib29sIGRpZEluaXRp
YXRlRHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlkSW5pdGlhdGVEcmFnOyB9Ci0gICAgRHJhZ09w
ZXJhdGlvbiBzb3VyY2VEcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEcmFn
T3BlcmF0aW9uOyB9CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZURyYWdPcGVy
YXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFzazsgfQog
ICAgIGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dp
bmdJbWFnZVVSTDsgfQogICAgIHZvaWQgc2V0RHJhZ09mZnNldChjb25zdCBJbnRQb2ludCYgb2Zm
c2V0KSB7IG1fZHJhZ09mZnNldCA9IG9mZnNldDsgfQogICAgIGNvbnN0IEludFBvaW50JiBkcmFn
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0OyB9CkBAIC05NSw3ICs5NSw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNl
aG9sZGVyc0F0Q2FyZXQoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzKTsKIAogICAg
IHZvaWQgcHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlRnJhbWUsIERyYWdTb3VyY2VB
Y3Rpb24sIEVsZW1lbnQmIHNvdXJjZUVsZW1lbnQsIERhdGFUcmFuc2ZlciYsIGNvbnN0IEludFBv
aW50JiBkcmFnT3JpZ2luKSBjb25zdDsKLSAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBj
b25zdCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1
bHRQYXN0ZWJvYXJkRGF0YSk7CisgICAgYm9vbCBzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3Qg
RHJhZ1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1
bHRQYXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNvbnN0IEludFNpemUmIG1heERyYWdJbWFn
ZVNpemUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4T3JpZ2luYWxJbWFnZUFyZWE7CkBA
IC0xMDgsMTEgKzEwOCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzcGF0Y2hUZXh0SW5wdXRF
dmVudEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7CiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJh
Zyhjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY29uY2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFn
RGF0YSYpOwotICAgIERyYWdPcGVyYXRpb24gZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJh
Z0RhdGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0Rh
dGEmKTsKLSAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdE
YXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4sIERyYWdPcGVyYXRpb24mKTsK
LSAgICBib29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYsIERyYWdPcGVyYXRpb24mKTsK
LSAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBEcmFnRGF0
YSYpOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbkZvckxvYWQoY29uc3Qg
RHJhZ0RhdGEmKTsKKyAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0
IERyYWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4sIE9wdGlvbmFsPERy
YWdPcGVyYXRpb24+Jik7CisgICAgYm9vbCB0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmLCBP
cHRpb25hbDxEcmFnT3BlcmF0aW9uPiYpOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAgICB2b2lkIGNsZWFyRHJhZ0NhcmV0KCk7
CiAgICAgYm9vbCBkcmFnSXNNb3ZlKEZyYW1lU2VsZWN0aW9uJiwgY29uc3QgRHJhZ0RhdGEmKTsK
ICAgICBib29sIGlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmKTsKQEAgLTE1Niw3ICsxNTYs
NyBAQCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKICAgICBEcmFnU291cmNlQWN0aW9uIG1fZHJhZ1NvdXJj
ZUFjdGlvbiB7IERyYWdTb3VyY2VBY3Rpb25Ob25lIH07CiAgICAgYm9vbCBtX2RpZEluaXRpYXRl
RHJhZyB7IGZhbHNlIH07Ci0gICAgRHJhZ09wZXJhdGlvbiBtX3NvdXJjZURyYWdPcGVyYXRpb24g
eyBEcmFnT3BlcmF0aW9uTm9uZSB9OyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0
YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2ViS2l0CisgICAgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2s7IC8vIFNldCBpbiBzdGFydERyYWcg
d2hlbiBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBkb3duIHdpdGhpbiBXZWJLaXQuCiAgICAg
SW50UG9pbnQgbV9kcmFnT2Zmc2V0OwogICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAg
Ym9vbCBtX2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IGQ1NTc3ZWVmMTE0ODg2MDMxYzhhNzdkYzhhZTQzYTI2NGM4ZWFjZTUu
LmVlYTJlOTlkMjBjOGQxMjg5Y2VhYjllNmUxMjE1NzU4OGIzZDUxZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIzMzQsNyArMjMzNCw3IEBAIHN0YXRpYyBib29sIHRh
cmdldElzRnJhbWUoTm9kZSogdGFyZ2V0LCBGcmFtZSomIGZyYW1lKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0Ry
YWdPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnT3BlcmF0aW9uKQorc3RhdGljIE9wdGlvbmFs
PERyYWdPcGVyYXRpb24+IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbihj
b25zdCBTdHJpbmcmIGRyYWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0g
ImNvcHkiKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CkBAIC0yMzQyLDIxICsy
MzQyLDI0IEBAIHN0YXRpYyBEcmFnT3BlcmF0aW9uIGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRv
RHJhZ09wZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPCiAgICAgICAgIHJldHVybiBEcmFnT3Bl
cmF0aW9uTW92ZTsKICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAibGluayIpCiAgICAgICAgIHJl
dHVybiBEcmFnT3BlcmF0aW9uTGluazsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7Cisg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIFN0cmluZyBjb252ZXJ0RHJhZ09w
ZXJhdGlvblRvRHJvcFpvbmVPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCitzdGF0
aWMgU3RyaW5nIGNvbnZlcnREcmFnT3BlcmF0aW9uVG9Ecm9wWm9uZU9wZXJhdGlvbihPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCiB7Ci0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsK
LSAgICBjYXNlIERyYWdPcGVyYXRpb25Db3B5OgotICAgICAgICByZXR1cm4gImNvcHkiX3M7Ci0g
ICAgY2FzZSBEcmFnT3BlcmF0aW9uTW92ZToKLSAgICAgICAgcmV0dXJuICJtb3ZlIl9zOwotICAg
IGNhc2UgRHJhZ09wZXJhdGlvbkxpbms6Ci0gICAgICAgIHJldHVybiAibGluayJfczsKLSAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gImNvcHkiX3M7CisgICAgaWYgKG9wZXJhdGlvbikgewor
ICAgICAgICBzd2l0Y2ggKCpvcGVyYXRpb24pIHsKKyAgICAgICAgY2FzZSBEcmFnT3BlcmF0aW9u
Q29weToKKyAgICAgICAgICAgIHJldHVybiAiY29weSJfczsKKyAgICAgICAgY2FzZSBEcmFnT3Bl
cmF0aW9uTW92ZToKKyAgICAgICAgICAgIHJldHVybiAibW92ZSJfczsKKyAgICAgICAgY2FzZSBE
cmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgICAgIHJldHVybiAibGluayJfczsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVy
biAiY29weSJfczsKIH0KIAogc3RhdGljIGJvb2wgaGFzRHJvcFpvbmVUeXBlKERhdGFUcmFuc2Zl
ciYgZGF0YVRyYW5zZmVyLCBjb25zdCBTdHJpbmcmIGtleXdvcmQpCkBAIC0yMzc2LDE1ICsyMzc5
LDE1IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQsIERhdGFUcmFuc2Zl
ciYgZGF0YVRyYW5zZmVyKQogICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+
cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcga2V5d29yZHMoZWxl
bWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRkcm9wem9uZUF0dHIp
LCB0cnVlKTsKICAgICAgICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7Ci0gICAgICAgIERyYWdPcGVy
YXRpb24gZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwLCBzaXplID0ga2V5d29yZHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAg
ICBEcmFnT3BlcmF0aW9uIG9wID0gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0
aW9uKGtleXdvcmRzW2ldKTsKLSAgICAgICAgICAgIGlmIChvcCAhPSBEcmFnT3BlcmF0aW9uTm9u
ZSkgewotICAgICAgICAgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25O
b25lKQotICAgICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3A7CisgICAgICAgICAg
ICBhdXRvIG9wZXJhdGlvbkZyb21LZXl3b3JkID0gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9E
cmFnT3BlcmF0aW9uKGtleXdvcmRzW2ldKTsKKyAgICAgICAgICAgIGlmIChvcGVyYXRpb25Gcm9t
S2V5d29yZCkgeworICAgICAgICAgICAgICAgIGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAg
ICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wZXJhdGlvbkZyb21LZXl3b3JkOwogICAgICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IG1hdGNoZWQgfHwgaGFzRHJv
cFpvbmVUeXBlKGRhdGFUcmFuc2Zlciwga2V5d29yZHNbaV0uc3RyaW5nKCkpOwotICAgICAgICAg
ICAgaWYgKG1hdGNoZWQgJiYgZHJhZ09wZXJhdGlvbiAhPSBEcmFnT3BlcmF0aW9uTm9uZSkKKyAg
ICAgICAgICAgIGlmIChtYXRjaGVkICYmIGRyYWdPcGVyYXRpb24pCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1hdGNoZWQpIHsKQEAgLTIzOTUsMjAgKzIz
OTgsMTkgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5vZGUmIHRhcmdldCwgRGF0YVRyYW5z
ZmVyJiBkYXRhVHJhbnNmZXIpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1FdmVudEhhbmRsZXI6
OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0VudGVyT3JEcmFn
T3ZlckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29s
IGRyYWdnaW5nRmlsZXMpCitFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhh
bmRsZXI6OmRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQog
ewotICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGlu
Z0Ryb3BUYXJnZXQodGFyZ2V0LmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJj
ZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRh
VHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCh0YXJnZXQuZG9jdW1lbnQoKSwg
V1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7
CiAgICAgYm9vbCBhY2NlcHQgPSBkaXNwYXRjaERyYWdFdmVudChldmVudFR5cGUsIHRhcmdldCwg
ZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQoKSk7CiAgICAgaWYgKCFhY2NlcHQpCiAgICAgICAgIGFj
Y2VwdCA9IGZpbmREcm9wWm9uZSh0YXJnZXQsIGRhdGFUcmFuc2Zlcik7CiAgICAgZGF0YVRyYW5z
ZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgaWYgKGFjY2VwdCAmJiAhZGF0YVRy
YW5zZmVyLT5kcm9wRWZmZWN0SXNVbmluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiB7IHRy
dWUsIGRhdGFUcmFuc2Zlci0+ZGVzdGluYXRpb25PcGVyYXRpb24oKSB9OworICAgICAgICByZXR1
cm4geyB0cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygpIH07CiAg
ICAgcmV0dXJuIHsgYWNjZXB0LCBXVEY6Om51bGxvcHQgfTsKIH0KIAotRXZlbnRIYW5kbGVyOjpE
cmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPigpPiYgbWFrZVBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNl
T3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRS
ZXNwb25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+KCk+JiBtYWtlUGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJj
ZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+IHBy
b3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogICAgIGlmICghbV9mcmFtZS52aWV3KCkpCkBAIC0yNDM4
LDE5ICsyNDQwLDE5IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFu
ZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZyYW1lKiB0
YXJnZXRGcmFtZTsKICAgICAgICAgaWYgKHRhcmdldElzRnJhbWUobmV3VGFyZ2V0LmdldCgpLCB0
YXJnZXRGcmFtZSkpIHsKICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAg
ICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5k
RHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxl
cyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVy
KCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRp
b25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJnZXQpIHsK
ICAgICAgICAgICAgIC8vIEFzIHBlciBzZWN0aW9uIDcuOS40IG9mIHRoZSBIVE1MIDUgc3BlYy4s
IHdlIG11c3QgYWx3YXlzIGZpcmUgYSBkcmFnIGV2ZW50IGJlZm9yZSBmaXJpbmcgYSBkcmFnZW50
ZXIsIGRyYWdsZWF2ZSwgb3IgZHJhZ292ZXIgZXZlbnQuCiAgICAgICAgICAgICBkaXNwYXRjaEV2
ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7Ci0g
ICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2
ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJv
YXJkKCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICByZXNw
b25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMoKS5kcmFn
ZW50ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9w
ZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRh
cmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBSZWN1cnNpbmcgYWdhaW4gaGVyZSBkb2Vzbid0IG1ha2Ugc2Vuc2UgaWYg
dGhlIG5ld1RhcmdldCBhbmQgbV9kcmFnVGFyZ2V0IHdlcmUgaW4gdGhlIHNhbWUgZnJhbWUuCiAg
ICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0
YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQ
YXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAg
ICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmRE
cm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdG
aWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0gICAgICAgICAgICBh
dXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFy
Z2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3Bl
cmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0g
RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5k
b2N1bWVudCgpLCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2lu
Z0ZpbGVzKTsKICAgICAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcmFn
bGVhdmVFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQoKSk7CiAg
ICAgICAgICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICAg
ICAgfQpAQCAtMjQ2NCwxMiArMjQ2NiwxMiBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNw
b25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAg
ICAgICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1lKG5ld1Rh
cmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUp
Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCku
dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24s
IGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUt
PmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwg
c291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAo
bmV3VGFyZ2V0KSB7CiAgICAgICAgICAgICAvLyBOb3RlLCB3aGVuIGRlYWxpbmcgd2l0aCBzdWIt
ZnJhbWVzLCB3ZSBtYXkgbmVlZCB0byBmaXJlIG9ubHkgYSBkcmFnb3ZlciBldmVudCBhcyBhIGRy
YWcgZXZlbnQgbWF5IGhhdmUgYmVlbiBmaXJlZCBlYXJsaWVyLgogICAgICAgICAgICAgaWYgKCFt
X3Nob3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCkKICAgICAgICAgICAgICAgICBkaXNwYXRjaEV2
ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7Ci0g
ICAgICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2
ZW50TmFtZXMoKS5kcmFnb3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBhc3RlYm9h
cmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgIHJlc3Bv
bnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdv
dmVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVy
YXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgICAgIG1fc2hvdWxkT25seUZpcmVE
cmFnT3ZlckV2ZW50ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDc3LDI1ICsyNDc5
LDI1IEBAIEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBk
YXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQog
Ci12b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwg
RHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK3ZvaWQg
RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVz
KQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKICAgICBGcmFt
ZSogdGFyZ2V0RnJhbWU7CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0LmdldCgp
LCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAg
dGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGV2ZW50LCBXVEZN
b3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAg
ICAgICAgdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhbmNlbERyYWdBbmREcm9wKGV2ZW50
LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVz
KTsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewogICAgICAgICBkaXNwYXRjaEV2ZW50
VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ0V2ZW50LCBldmVudCk7CiAKLSAg
ICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5n
RHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCks
IHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0YVRyYW5z
ZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFy
Z2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNr
LCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygp
LmRyYWdsZWF2ZUV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyLmdldCgp
KTsKICAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAg
fQogICAgIGNsZWFyRHJhZ1N0YXRlKCk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3Jt
RHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRp
b24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0Fu
ZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9w
ZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+IHByb3Rl
Y3RlZEZyYW1lKG1fZnJhbWUpOwogCkBAIC0yNTAzLDkgKzI1MDUsOSBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQs
IHN0ZDo6dW5pcQogICAgIGJvb2wgcHJldmVudGVkRGVmYXVsdCA9IGZhbHNlOwogICAgIGlmICh0
YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAg
IGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgIHByZXZlbnRlZERlZmF1bHQgPSB0YXJnZXRG
cmFtZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURyYWdBbmREcm9wKGV2ZW50LCBXVEZNb3ZlKHBh
c3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAg
cHJldmVudGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJmb3JtRHJh
Z0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ss
IGRyYWdnaW5nRmlsZXMpOwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFyZ2V0KSB7Ci0gICAgICAg
IGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKG1fZHJhZ1Rh
cmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBk
cmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9h
cmQpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgcHJldmVu
dGVkRGVmYXVsdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMoKS5kcm9wRXZlbnQsICpt
X2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIpOwogICAgICAgICBkYXRhVHJhbnNmZXIt
Pm1ha2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICB9CkBAIC0zNzI5LDEzICszNzMxLDEzIEBA
IHZvaWQgRXZlbnRIYW5kbGVyOjpkaWRTdGFydERyYWcoKQogI2VuZGlmCiB9CiAKLXZvaWQgRXZl
bnRIYW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
ZW50LCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gbWF5RXh0
ZW5kRHJhZ1Nlc3Npb24pCit2b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb25NYXNrLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFnU2Vzc2lv
bikKIHsKICAgICAvLyBTZW5kIGEgaGl0IHRlc3QgcmVxdWVzdCBzbyB0aGF0IFJlbmRlckxheWVy
IGdldHMgYSBjaGFuY2UgdG8gdXBkYXRlIHRoZSA6aG92ZXIgYW5kIDphY3RpdmUgcHNldWRvY2xh
c3Nlcy4KICAgICBwcmVwYXJlTW91c2VFdmVudChPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJl
cXVlc3RUeXBlPiB7IEhpdFRlc3RSZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH0sIGV2ZW50KTsKIAogICAgIGlmIChzaG91bGRE
aXNwYXRjaEV2ZW50c1RvRHJhZ1NvdXJjZUVsZW1lbnQoKSkgewotICAgICAgICBkcmFnU3RhdGUo
KS5kYXRhVHJhbnNmZXItPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKG9wZXJhdGlvbik7CisgICAg
ICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNr
KGRyYWdPcGVyYXRpb25NYXNrKTsKICAgICAgICAgZGlzcGF0Y2hFdmVudFRvRHJhZ1NvdXJjZUVs
ZW1lbnQoZXZlbnROYW1lcygpLmRyYWdlbmRFdmVudCwgZXZlbnQpOwogICAgIH0KICAgICBpbnZh
bGlkYXRlRGF0YVRyYW5zZmVyKCk7CkBAIC0zODY1LDcgKzM4NjcsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVu
dCwgQ2hlY2tEcgogICAgIC8vIE9uY2Ugd2UncmUgcGFzdCB0aGUgaHlzdGVyZXNpcyBwb2ludCwg
d2UgZG9uJ3Qgd2FudCB0byB0cmVhdCB0aGlzIGdlc3R1cmUgYXMgYSBjbGljawogICAgIGludmFs
aWRhdGVDbGljaygpOwogICAgIAotICAgIERyYWdPcGVyYXRpb24gc3JjT3AgPSBEcmFnT3BlcmF0
aW9uTm9uZTsgICAgICAKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0
aW9uTWFzazsKICAgICAKICAgICAvLyBUaGlzIGRvZXMgd29yayBvbmx5IGlmIHdlIG1pc3NlZCBh
IGRyYWdFbmQuIERvIGl0IGFueXdheSwganVzdCB0byBtYWtlIHN1cmUgdGhlIG9sZCBkYXRhVHJh
bnNmZXIgZ2V0cyBudW1iZWQuCiAgICAgLy8gRklYTUU6IENvbnNpZGVyIGRvaW5nIHRoaXMgZWFy
bGllciBpbiB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBlYXJsaWVzdCBwb2ludCB3ZSdyZSBzdXJlIGl0
IHdvdWxkIGJlIHNhZmUgdG8gZHJvcCBhbiBvbGQgZHJhZy4KQEAgLTM5MDAsNyArMzkwMiw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAKICAgICAgICAgaWYgKG1fbW91c2VEb3duTWF5U3Rh
cnREcmFnKSB7CiAgICAgICAgICAgICAvLyBHYXRoZXIgdmFsdWVzIGZyb20gREhUTUwgZWxlbWVu
dCwgaWYgaXQgc2V0IGFueS4KLSAgICAgICAgICAgIHNyY09wID0gZHJhZ1N0YXRlKCkuZGF0YVRy
YW5zZmVyLT5zb3VyY2VPcGVyYXRpb24oKTsKKyAgICAgICAgICAgIHNvdXJjZU9wZXJhdGlvbk1h
c2sgPSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbk1hc2soKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgLy8gWXVjaywgYSBkcmFnZ2VkSW1hZ2U6bW92ZVRvOiBt
ZXNzYWdlIGNhbiBiZSBmaXJlZCBhcyBhIHJlc3VsdCBvZiBraWNraW5nIG9mZiB0aGUKICAgICAg
ICAgICAgIC8vIGRyYWcgd2l0aCBkcmFnSW1hZ2UhIEJlY2F1c2Ugb2YgdGhhdCBkdW1iIHJlZW50
cmFuY3ksIHdlIG1heSB0aGluayB3ZSd2ZSBub3QKQEAgLTM5MTEsNyArMzkxMyw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBDaGVja0RyCiAgICAgCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFn
KSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKLSAgICAgICAgbV9kaWRT
dGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFnKG1fZnJh
bWUsIGRyYWdTdGF0ZSgpLCBzcmNPcCwgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Db250ZW50
c1Bvc2l0aW9uLCBoYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgICAgICBtX2RpZFN0
YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zdGFydERyYWcobV9mcmFt
ZSwgZHJhZ1N0YXRlKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGV2ZW50LmV2ZW50KCksIG1fbW91
c2VEb3duQ29udGVudHNQb3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKICAg
ICAgICAgLy8gSW4gV2ViS2l0MiB3ZSBjb3VsZCByZS1lbnRlciB0aGlzIGNvZGUgYW5kIHN0YXJ0
IGFub3RoZXIgZHJhZy4KICAgICAgICAgLy8gT24gT1MgWCB0aGlzIGNhdXNlcyBwcm9ibGVtcyB3
aXRoIHRoZSBvd25lcnNoaXAgb2YgdGhlIHBhc3RlYm9hcmQgYW5kIHRoZSBwcm9taXNlZCB0eXBl
cy4KICAgICAgICAgaWYgKG1fZGlkU3RhcnREcmFnKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuaAppbmRleCA2ZmZjODNjMDEyZmZlMDk1MDQ2NDE0MDUxMTYxZDc1MDZhZjE5MmExLi4yN2Nh
ZTYxZWQxMTgzNGFjYzU0NTJkYjZjYjkyM2IzMjk2NjhjZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgKQEAgLTE2MywxMSArMTYzLDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogICAgIHN0cnVjdCBEcmFnVGFyZ2V0UmVzcG9uc2UgewogICAgICAgICBib29s
IGFjY2VwdCB7IGZhbHNlIH07Ci0gICAgICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJh
dGlvbjsKKyAgICAgICAgT3B0aW9uYWw8T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+PiBvcGVyYXRp
b25NYXNrOwogICAgIH07Ci0gICAgRHJhZ1RhcmdldFJlc3BvbnNlIHVwZGF0ZURyYWdBbmREcm9w
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJv
b2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgdm9pZCBjYW5jZWxEcmFnQW5kRHJvcChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJh
dGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKLSAgICBib29sIHBlcmZvcm1EcmFnQW5kRHJvcChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwg
RHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBEcmFnVGFyZ2V0UmVzcG9u
c2UgdXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3Qgc3Rk
OjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgdm9pZCBjYW5jZWxEcmFnQW5k
RHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4mJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOworICAg
IGJvb2wgcGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wg
ZHJhZ2dpbmdGaWxlcyk7CiAgICAgdm9pZCB1cGRhdGVEcmFnU3RhdGVBZnRlckVkaXREcmFnSWZO
ZWVkZWQoRWxlbWVudCYgcm9vdEVkaXRhYmxlRWxlbWVudCk7CiAgICAgUmVmUHRyPEVsZW1lbnQ+
IGRyYWdnZWRFbGVtZW50KCkgY29uc3Q7CiAjZW5kaWYKQEAgLTI2OCw3ICsyNjgsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTdGFydERyYWcoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdDYW5jZWxsZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIERyYWdPcGVy
YXRpb24sIE1heUV4dGVuZERyYWdTZXNzaW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdTb3VyY2VFbmRlZEF0KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgTWF5RXh0ZW5kRHJhZ1Nlc3Np
b24gPSBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6Tm8pOwogI2VuZGlmCiAKICAgICB2b2lkIGZvY3Vz
RG9jdW1lbnRWaWV3KCk7CkBAIC00MTYsNyArNDE2LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAgICAgYm9vbCBkaXNwYXRjaERyYWdFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiwgRGF0YVRyYW5zZmVyJik7Ci0gICAgRHJhZ1RhcmdldFJlc3BvbnNlIGRpc3BhdGNoRHJhZ0Vu
dGVyT3JEcmFnT3ZlckV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYg
dGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4mJiAsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgRHJhZ1Rh
cmdldFJlc3BvbnNlIGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFyZ2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiAsIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB2b2lkIGludmFsaWRhdGVEYXRhVHJhbnNm
ZXIoKTsKIAogICAgIGJvb2wgaGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiwgQ2hlY2tEcmFnSHlzdGVyZXNpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0
ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKaW5kZXggN2QwNTJjZmUxOGFlYjUzOGJlNjYzOWFmMDMw
ZWM3ZGRlZTBlMmUxMy4uZDcxYWIxZGZlNDRhYWI2YTJjOTVjYzYyNWUyYWY4NmI0MzQ0Nzk2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUw
LDEzICs1MCwxMyBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4gZHJhZ0RhdGEuZmxhZ3MoKSAmIERyYWdBcHBs
aWNhdGlvbklzQ29weUtleURvd247CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6
OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09w
ZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGlzIGluY29tcGxldGUKICAgICBp
ZiAoZHJhZ0RhdGEuY29udGFpbnNVUkwoKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25D
b3B5OwogCi0gICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiB9CiAKIGNvbnN0IEludFNpemUmIERyYWdDb250cm9sbGVyOjptYXhEcmFnSW1hZ2VT
aXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVy
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KaW5k
ZXggODViZDQ4YWNjMjI0ZDBlNzg0YjMxYzI4NDVhZDA2ODU3YmQ4MTAyMS4uYzYwM2ZiZGRhNDM3
Y2RhOGFkMzg0NTNhN2Q1NTZmZDRmNTQ5NGY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NCwxMCArNjQsMTAgQEAgYm9vbCBEcmFnQ29udHJv
bGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgcmV0dXJu
IGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25Jc0NvcHlLZXlEb3duOwogfQogICAg
IAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6
ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgaWYgKGRyYWdE
YXRhLmZsYWdzKCkgJiBEcmFnQXBwbGljYXRpb25Jc01vZGFsKQotICAgICAgICByZXR1cm4gRHJh
Z09wZXJhdGlvbk5vbmU7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBib29s
IG1heUNvbnRhaW5VUkw7CiAgICAgaWYgKGNhbkxvYWREYXRhRnJvbURyYWdnaW5nUGFzdGVib2Fy
ZCgpKQpAQCAtNzYsMTIgKzc2LDEyIEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgICAgICBtYXlDb250YWlu
VVJMID0gZHJhZ0RhdGEuY29udGFpbnNVUkxUeXBlSWRlbnRpZmllcigpOwogCiAgICAgaWYgKCFt
YXlDb250YWluVVJMICYmICFkcmFnRGF0YS5jb250YWluc1Byb21pc2UoKSkKLSAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgaWYgKCFtX2RvY3VtZW50VW5kZXJNb3VzZSB8fCAoIShkcmFnRGF0YS5mbGFncygpICYgKERy
YWdBcHBsaWNhdGlvbkhhc0F0dGFjaGVkU2hlZXQgfCBEcmFnQXBwbGljYXRpb25Jc1NvdXJjZSkp
KSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwogCi0gICAgcmV0dXJuIERyYWdP
cGVyYXRpb25Ob25lOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIGNvbnN0IEludFNp
emUmIERyYWdDb250cm9sbGVyOjptYXhEcmFnSW1hZ2VTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAppbmRleCAyZDQ2ZDZiMjNlYTM3MjI4YTI0
MDI1N2I3MzQ2OTcxOGY2MGIwODVlLi4zZGE0YTM4MjY0NDViNzFjY2FlYzRiMTI1Zjc0OTFiZTU1
NDRkNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxl
cldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4u
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDIsMTMgKzQyLDE1IEBAIGNvbnN0IGludCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ljb25C
b3R0b21JbnNldCA9IDM7CiAKIGNvbnN0IGZsb2F0IERyYWdDb250cm9sbGVyOjpEcmFnSW1hZ2VB
bHBoYSA9IDAuNzVmOwogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0
aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERy
YWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsK
LSAgICAvL0ZJWE1FOiB0byBtYXRjaCB0aGUgbWFjb3MgYmVoYXZpb3VyIHdlIHNob3VsZCByZXR1
cm4gRHJhZ09wZXJhdGlvbk5vbmUKLSAgICAvL2lmIHdlIGFyZSBhIG1vZGFsIHdpbmRvdywgd2Ug
YXJlIHRoZSBkcmFnIHNvdXJjZSwgb3IgdGhlIHdpbmRvdyBpcyBhbiBhdHRhY2hlZCBzaGVldAot
ICAgIC8vSWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJh
dGlvbkZvckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvIAotICAgIC8vV2ViQ29yZSBpdHNlbGYKLSAg
ICByZXR1cm4gZHJhZ0RhdGEuY29udGFpbnNVUkwoKSAmJiAhbV9kaWRJbml0aWF0ZURyYWcgPyBE
cmFnT3BlcmF0aW9uQ29weSA6IERyYWdPcGVyYXRpb25Ob25lOworICAgIC8vIEZJWE1FOiB0byBt
YXRjaCB0aGUgbWFjb3MgYmVoYXZpb3VyIHdlIHNob3VsZCByZXR1cm4gV1RGOjpudWxsb3B0Lgor
ICAgIC8vIElmIHdlIGFyZSBhIG1vZGFsIHdpbmRvdywgd2UgYXJlIHRoZSBkcmFnIHNvdXJjZSwg
b3IgdGhlIHdpbmRvdyBpcyBhbiBhdHRhY2hlZCBzaGVldC4KKyAgICAvLyBJZiB0aGlzIGNhbiBi
ZSBkZXRlcm1pbmVkIGZyb20gd2l0aGluIFdlYkNvcmUgb3BlcmF0aW9uRm9yRHJhZyBjYW4gYmUg
cHVsbGVkIGludG8KKyAgICAvLyBXZWJDb3JlIGl0c2VsZi4KKyAgICBpZiAoZHJhZ0RhdGEuY29u
dGFpbnNVUkwoKSAmJiAhbV9kaWRJbml0aWF0ZURyYWcpCisgICAgICAgIHJldHVybiBEcmFnT3Bl
cmF0aW9uQ29weTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiBib29sIERyYWdDb250
cm9sbGVyOjppc0NvcHlLZXlEb3duKGNvbnN0IERyYWdEYXRhJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0RyYWdEYXRhLmNwcAppbmRleCA4ZjY3NTVmNTc2MWExNDU0ZTliNDA2MDAyZTA4ODQzYzZiNzE4
ODdjLi5lOGM0MGY1NTkwMmQ5M2E1YTg3MmFjMGVlMGZkYWNjM2Y5ZWQyZmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0Rh
dGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJh
Z0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+
IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBk
YXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ss
IERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVu
dFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAs
IG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtNDIsNyArNDIsNyBAQCBEcmFnRGF0YTo6RHJh
Z0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQbwogeyAgCiB9CiAKLURyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmLCBj
b25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3Np
dGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25G
bGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25B
Y3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9u
RmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9u
QWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAg
LCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdE
YXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCA0MjFhMjk5NDNiM2QxMGQ0
ODVkYTVjZTllZmQ1M2UzZmFmYmMwZjBkLi4zMWI4YWI5ZWU4MDZmZTBkMWYyYmRkNzk3YjVhM2Fl
Zjk3NjcxZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTc1LDEzICs3NSwx
MyBAQCBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBEcmFnZ2luZ1B1cnBvc2UgeyBGb3JFZGl0aW5n
LCBGb3JGaWxlVXBsb2FkLCBGb3JDb2xvckNvbnRyb2wgfTsKIAogICAgIC8vIGNsaWVudFBvc2l0
aW9uIGlzIHRha2VuIHRvIGJlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJhZyBldmVudCB3aXRoaW4g
dGhlIHRhcmdldCB3aW5kb3csIHdpdGggKDAsMCkgYXQgdGhlIHRvcCBsZWZ0Ci0gICAgV0VCQ09S
RV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFn
QXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVz
dGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwotICAgIFdFQkNP
UkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
RHJhZ09wZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25l
LCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFj
dGlvbigpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJlZiwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBw
bGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdE
ZXN0aW5hdGlvbkFjdGlvbigpKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBT
dHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwg
RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKICAgICAv
LyBUaGlzIGNvbnN0cnVjdG9yIHNob3VsZCB1c2VkIG9ubHkgYnkgV2ViS2l0MiBJUEMgYmVjYXVz
ZSBEcmFnRGF0YQogICAgIC8vIGlzIGluaXRpYWxpemVkIGJ5IHRoZSBkZWNvZGVyIGFuZCBub3Qg
aW4gdGhlIGNvbnN0cnVjdG9yLgogICAgIERyYWdEYXRhKCkgPSBkZWZhdWx0OwogI2lmIFBMQVRG
T1JNKFdJTikKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYs
IGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlv
bkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0Rh
dGEoY29uc3QgRHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNv
dXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9u
Tm9uZSk7CiAgICAgY29uc3QgRHJhZ0RhdGFNYXAmIGRyYWdEYXRhTWFwKCk7CiAgICAgdm9pZCBn
ZXREcmFnRmlsZURlc2NyaXB0b3JEYXRhKGludCYgc2l6ZSwgU3RyaW5nJiBwYXRobmFtZSk7CiAg
ICAgdm9pZCBnZXREcmFnRmlsZUNvbnRlbnREYXRhKGludCBzaXplLCB2b2lkKiBkYXRhQmxvYik7
CkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbFBvc2l0aW9uOyB9CiAgICAgRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2FwcGxpY2F0aW9uRmxhZ3M7IH0K
ICAgICBEcmFnRGF0YVJlZiBwbGF0Zm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3Jt
RHJhZ0RhdGE7IH0KLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
aygpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9CisgICAg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpIGNv
bnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOyB9CiAgICAgYm9vbCBj
b250YWluc1VSTChGaWxlbmFtZUNvbnZlcnNpb25Qb2xpY3kgPSBDb252ZXJ0RmlsZW5hbWVzKSBj
b25zdDsKICAgICBib29sIGNvbnRhaW5zUGxhaW5UZXh0KCkgY29uc3Q7CiAgICAgYm9vbCBjb250
YWluc0NvbXBhdGlibGVDb250ZW50KERyYWdnaW5nUHVycG9zZSA9IERyYWdnaW5nUHVycG9zZTo6
Rm9yRWRpdGluZykgY29uc3Q7CkBAIC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBJbnRQ
b2ludCBtX2NsaWVudFBvc2l0aW9uOwogICAgIEludFBvaW50IG1fZ2xvYmFsUG9zaXRpb247CiAg
ICAgRHJhZ0RhdGFSZWYgbV9wbGF0Zm9ybURyYWdEYXRhOwotICAgIERyYWdPcGVyYXRpb24gbV9k
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOwogICAgIERyYWdBcHBsaWNhdGlvbkZsYWdz
IG1fYXBwbGljYXRpb25GbGFnczsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2ZpbGVOYW1lczsKICAg
ICBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlv
bk1hc2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0
YUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5t
bQppbmRleCA5Y2NhZmMwY2Q3YTgzNmU2YzkxZTFmMjMzZTE4OTBiMzM4YTRkMzQwLi4zYTEyODlk
NGJjYzU2MDk2YWRlZmQwNTgwMDc0M2VkMDljNjRjNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0KQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0
aWMgaW5saW5lIFN0cmluZyB0aWZmUGFzdGVib2FyZFR5cGUoKQogI2VuZGlmCiB9CiAKLURyYWdE
YXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERy
YWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6OkRy
YWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
c291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNl
dDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1f
Y2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGds
b2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBAIC0xMzEsNyAr
MTMxLDcgQEAgRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsKIH0KIAotRHJhZ0RhdGE6OkRyYWdE
YXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJhZ0RhdGE6
OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdz
IGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlv
bk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9n
bG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAppbmRleCAw
YzAxM2NmNjdlZTU4NWJjZWVlNDQ5NWJiNDYwMTE2YWMwMWRjMWQxLi4wOGMyYmVhN2M2YThkNTA2
NWJkMTdjMGYxMjgwNDQwNDViYjhlOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrVXRpbGl0aWVzLmNwcApAQCAtMTQ5LDQ5ICsxNDksNDkgQEAgdW5zaWduZWQgc3RhdGVN
b2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0b24pCiAgICAgcmV0dXJuIDEgPDwgKDgg
KyBidXR0b24gLSAxKTsKIH0KIAotRHJhZ09wZXJhdGlvbiBnZGtEcmFnQWN0aW9uVG9EcmFnT3Bl
cmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbiBnZGtBY3Rpb24pCiB7
Ci0gICAgLy8gV2UgaGF2ZSBubyBnb29kIHdheSB0byBkZXRlY3QgRHJhZ09wZXJhdGlvbkV2ZXJ5
IG90aGVyIHRoYW4KKyAgICAvLyBXZSBoYXZlIG5vIGdvb2Qgd2F5IHRvIGRldGVjdCBhbnlEcmFn
T3BlcmF0aW9uKCkgb3RoZXIgdGhhbgogICAgIC8vIHRvIHVzZSBpdCB3aGVuIGFsbCBhcHBsaWNh
YmxlIGZsYWdzIGFyZSBvbi4KICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9DT1BZCiAg
ICAgICAgICYmIGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRQogICAgICAgICAmJiBnZGtBY3Rp
b24gJiBHREtfQUNUSU9OX0xJTkspCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uRXZlcnk7
CisgICAgICAgIHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CiAKLSAgICB1bnNpZ25lZCBhY3Rp
b24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gYWN0
aW9uOwogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0NPUFkpCi0gICAgICAgIGFjdGlv
biB8PSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9u
Q29weSk7CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRSkKLSAgICAgICAgYWN0
aW9uIHw9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVyYXRp
b25Nb3ZlKTsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9MSU5LKQotICAgICAgICBh
Y3Rpb24gfD0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJh
dGlvbkxpbmspOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGFjdGlv
bik7CisgICAgcmV0dXJuIGFjdGlvbjsKIH0KIAotR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9u
VG9HZGtEcmFnQWN0aW9ucyhEcmFnT3BlcmF0aW9uIGNvcmVBY3Rpb24pCitHZGtEcmFnQWN0aW9u
IGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBj
b3JlQWN0aW9uKQogewogICAgIHVuc2lnbmVkIGdka0FjdGlvbiA9IDA7Ci0gICAgaWYgKGNvcmVB
Y3Rpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKGNvcmVBY3Rpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oZ2RrQWN0aW9uKTsK
IAotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKGNvcmVB
Y3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICBnZGtBY3Rpb24gfD0g
R0RLX0FDVElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbk1vdmUp
CisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAg
ICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlv
bkxpbmspKQogICAgICAgICBnZGtBY3Rpb24gfD0gR0RLX0FDVElPTl9MSU5LOwogCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlvbik7CiB9CiAKLUdka0RyYWdB
Y3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihEcmFnT3BlcmF0aW9uIGNv
cmVBY3Rpb24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rp
b24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24pCiB7Ci0gICAgaWYgKGNvcmVB
Y3Rpb24gPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5IHx8IGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9u
Q29weSkKKyAgICBpZiAoY29yZUFjdGlvbiA9PSBhbnlEcmFnT3BlcmF0aW9uKCkgfHwgY29yZUFj
dGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiBHREtfQUNU
SU9OX0NPUFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBp
ZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJldHVy
biBHREtfQUNUSU9OX01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uTGlu
aykKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAg
ICAgIHJldHVybiBHREtfQUNUSU9OX0xJTks7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0Ry
YWdBY3Rpb24+KDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGll
cy5oCmluZGV4IDVhYWI0ZWI3OWEyMWU5YTRmNTI2NjM5NGZlNjYwNmY4NDI4NjUwODQuLjE5OGJj
OGUyNTA5YzQ1NWQyMzI0NGE3ODExM2FlZmNhMGU4ZmVhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKQEAgLTUxLDggKzUxLDggQEAgU3RyaW5nIGRlZmF1
bHRHdGtTeXN0ZW1Gb250KCk7CiAKIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHN0YXRlTW9kaWZp
ZXJGb3JHZGtCdXR0b24odW5zaWduZWQgYnV0dG9uKTsKIAotV0VCQ09SRV9FWFBPUlQgRHJhZ09w
ZXJhdGlvbiBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0RyYWdBY3Rpb24pOwotV0VC
Q09SRV9FWFBPUlQgR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhE
cmFnT3BlcmF0aW9uKTsKLVdFQkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlv
blRvU2luZ2xlR2RrRHJhZ0FjdGlvbihEcmFnT3BlcmF0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0Ry
YWdBY3Rpb24pOworV0VCQ09SRV9FWFBPUlQgR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9H
ZGtEcmFnQWN0aW9ucyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4pOworV0VCQ09SRV9FWFBPUlQg
R2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCmluZGV4IGVlMGQ4YjI2MGNjY2I0ZGJj
ZTEzMGVkMzMxYzg5M2MwZGMwZmIwM2IuLjE4ODcwZjIyNzUyODdiOTdkYWEzOWU4MDNiYzdlMmIz
OGU1ZWY0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0
YVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEJhaWR1
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQxLDcgKzQx
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRHJhZ0RhdGE6OkRyYWdEYXRhKGNvbnN0IERy
YWdEYXRhTWFwJiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IElu
dFBvaW50JiBnbG9iYWxQb3NpdGlvbiwKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlv
bk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKQorICAgIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykK
ICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBv
c2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IDJkNDNiYWViZjhlMTI2
YmU5ZjllYTlhMWZjYmYzM2U3ZGI2ZjlkZTAuLmFiZWUyNTU0N2NkM2Y3NzQ4MGRhOTcyNzljMDdl
MDgyM2RkMjI4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9V
SUtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5o
CkBAIC0xMDI1LDEyICsxMDI1LDYgQEAgQ0dGbG9hdCBVSVJvdW5kVG9TY3JlZW5TY2FsZShDR0Zs
b2F0IHZhbHVlLCBVSVNjcmVlbiAqKTsKIAogV1RGX0VYVEVSTl9DX0VORAogCi10eXBlZGVmIE5T
X09QVElPTlMoTlNVSW50ZWdlciwgVUlEcmFnT3BlcmF0aW9uKQotewotICAgIFVJRHJhZ09wZXJh
dGlvbk5vbmUgPSAwLAotICAgIFVJRHJhZ09wZXJhdGlvbkV2ZXJ5ID0gTlNVSW50ZWdlck1heCwK
LX07Ci0KIEBpbnRlcmZhY2UgVUlEcmFnSW50ZXJhY3Rpb24gKCkKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBhc3NpZ24sIGdldHRlcj1fbGlmdERlbGF5LCBzZXR0ZXI9X3NldExpZnREZWxheTopIE5T
VGltZUludGVydmFsIGxpZnREZWxheTsKIC0gKHZvaWQpX3NldEFsbG93c1BvaW50ZXJEcmFnQmVm
b3JlTGlmdERlbGF5OihCT09MKWFsbG93c1BvaW50ZXJEcmFnQmVmb3JlTGlmdERlbGF5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggM2ZkZDgwNDlkNDk2MDhi
YWVkMGFlMDZlNmViZDA3MTRjMTc4NjkyYS4uNTliMzUzY2MxMWIyZGFkMDU5YWRiMzI5N2FlYWQ4
NWY2NDUxMTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC0yMDksNiArMjA5LDcgQEAgZGVmIHR5cGVzX3RoYXRfY2Fubm90X2JlX2ZvcndhcmRfZGVjbGFy
ZWQoKToKICAgICAgICAgJ1dlYkNvcmU6OkRpY3RhdGlvbkNvbnRleHQnLAogICAgICAgICAnV2Vi
Q29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JX
b3JrZXJJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OkRyYWdPcGVyYXRpb24nLCAgIyBG
SVhNRTogUmVtb3ZlIGFmdGVyIGNvbnZlcnRpbmcgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiB0byBl
bnVtIGNsYXNzLgogICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKICAgICAgICAg
J1dlYkNvcmU6OkZyYW1lSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpMaWJXZWJSVENT
b2NrZXRJZGVudGlmaWVyJywKQEAgLTU4OCw2ICs1ODksNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlw
ZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJzog
Wyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYktpdDo6RG9j
dW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QnOiBbJyJEb2N1bWVudEVkaXRpbmdDb250ZXh0Lmgi
J10sCiAgICAgICAgICdXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QnOiBbJzxXZWJDb3JlL0Ry
YWdBY3Rpb25zLmg+J10sCisgICAgICAgICdXZWJDb3JlOjpEcmFnT3BlcmF0aW9uJzogWyc8V2Vi
Q29yZS9EcmFnQWN0aW9ucy5oPiddLAogICAgICAgICAnV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cyc6IFsnPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyc6IFsnPFdlYkNvcmUvRmlsZUNob29zZXIuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OlNoYXJlRGF0YVdpdGhQYXJzZWRVUkwnOiBbJzxXZWJDb3JlL1No
YXJlRGF0YS5oPiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKaW5kZXggYzg2OGMyNzczZjhkYmQzMjc4YjIwNTBh
MDhlNmY4YjU3ZGI4YmI0ZC4uODk3ODlmMzgyYTllNjc0ZjkxMWU5Yzg5MTRjYmE3NmE5ZmVjOTAx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rp
b25zSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJh
Z0FjdGlvbnNJbnRlcm5hbC5oCkBAIC00MCw0ICs0MCwyNCBAQCBpbmxpbmUgT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1h
c2soVwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiBVU0UoQVBQS0lUKQoraW5saW5lIE9w
dGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soTlNE
cmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4gcmVzdWx0OworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Db3B5
KQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KTsKKyAgICBp
ZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0LmFkZChX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluayk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09w
ZXJhdGlvbkdlbmVyaWMpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkdlbmVyaWMpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlKQor
ICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBp
ZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0LmFkZChX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09w
ZXJhdGlvbkRlbGV0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
RGVsZXRlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmIC8vIFVTRShBUFBLSVQpCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKaW5kZXggZDQ0MzgxMTI5Zjk5NzViMTkzMWI5NDY0Mzk5NmI4ZGFj
ZjY1ZjQ5Yi4uY2U4ZjJmOThkMTBiYmFiOGZlNTIxMTVhYjRkNzZlNDNhOGI1ZTc1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNTMx
LDcgKzE1MzEsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGVuY29kZXIgPDwg
ZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKTsKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmdsb2Jh
bFBvc2l0aW9uKCk7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKGRyYWdEYXRhLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzaygpKTsKKyAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzaygpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFnRGF0YS5mbGFn
cygpKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IGRyYWdEYXRhLnBhc3Rl
Ym9hcmROYW1lKCk7CkBAIC0xNTUwLDggKzE1NTAsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8RHJh
Z0RhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoZ2xvYmFsUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spKQor
ICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBhcHBsaWNh
dGlvbkZsYWdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cmFnU291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2Uu
aAppbmRleCAzOGEwNjZmNWMzMGVhMGU0ZmYwZDgzMTVmOTQ2YzVhNzEzYmMxNzZmLi5iNWZjYmYw
OWQ5OTNkMjM4NjFjNmI4OTJiNDcyMDJiNDdjN2QyNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgRHJhZ1NvdXJjZShHdGtXaWRnZXQqKTsKICAgICB+RHJhZ1NvdXJjZSgpOwog
Ci0gICAgdm9pZCBiZWdpbihXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYpOworICAgIHZvaWQgYmVnaW4oV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4s
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYpOwogCiBwcml2YXRlOgogICAgIEd0a1dpZGdldCog
bV93ZWJWaWV3IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL0RyYWdTb3VyY2VHdGszLmNwcAppbmRleCAzZWQ0Y2NjMzIzNjllM2NmM2Q4MDIyZmFj
YzNhZjIzOGVlZDg2MzVhLi5lZmRjZWYyNWQzYmI3NGYwYTliYjdiM2QxOTA5MDdkNWI5MWU0NGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VH
dGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VH
dGszLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIERyYWdTb3VyY2U6On5EcmFnU291cmNlKCkKICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEobV93ZWJWaWV3LCB0aGlzKTsK
IH0KIAotdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0
YSwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgaW1h
Z2UpCit2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRh
LCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaywgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4mJiBpbWFnZSkKIHsKICAgICBpZiAobV9kcmFnKSB7CiAgICAgICAgIGd0a19kcmFn
X2NhbmNlbChtX2RyYWcuZ2V0KCkpOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRHJhZ1NvdXJj
ZTo6YmVnaW4oU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24gb3Bl
cmF0aW9uLCBSCiAgICAgaWYgKG1fc2VsZWN0aW9uRGF0YS0+Y2FuU21hcnRSZXBsYWNlKCkpCiAg
ICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBE
cmFnVGFyZ2V0VHlwZTo6U21hcnRQYXN0ZSk7CiAKLSAgICBtX2RyYWcgPSBndGtfZHJhZ19iZWdp
bl93aXRoX2Nvb3JkaW5hdGVzKG1fd2ViVmlldywgbGlzdC5nZXQoKSwgZHJhZ09wZXJhdGlvblRv
R2RrRHJhZ0FjdGlvbnMob3BlcmF0aW9uKSwgR0RLX0JVVFRPTl9QUklNQVJZLCBudWxscHRyLCAt
MSwgLTEpOworICAgIG1fZHJhZyA9IGd0a19kcmFnX2JlZ2luX3dpdGhfY29vcmRpbmF0ZXMobV93
ZWJWaWV3LCBsaXN0LmdldCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhvcGVyYXRp
b25NYXNrKSwgR0RLX0JVVFRPTl9QUklNQVJZLCBudWxscHRyLCAtMSwgLTEpOwogICAgIGlmIChp
bWFnZSkgewogICAgICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFnZVN1cmZhY2UoaW1h
Z2UtPmNyZWF0ZUNhaXJvU3VyZmFjZSgpKTsKICAgICAgICAgLy8gVXNlIHRoZSBjZW50ZXIgb2Yg
dGhlIGRyYWcgaW1hZ2UgYXMgaG90c3BvdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKaW5kZXggZDhiNDM1NjkzNGVmNTI4MjQ5OTYx
MGU3NzlhZjAyZWVkNjhiYThiNi4uYzZhY2I1YTI3NjI0N2EyNTA0N2I2YjQxYjRmNGQyYjFmMWZm
NTdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291
cmNlR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291
cmNlR3RrNC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgRHJhZ1NvdXJjZTo6fkRyYWdTb3VyY2UoKQog
ewogfQogCi12b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25E
YXRhLCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBp
bWFnZSkKK3ZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRh
dGEsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrLCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiYmIGltYWdlKQogewogICAgIGlmIChtX2RyYWcpIHsKICAgICAgICAgZ2RrX2Ry
YWdfZHJvcF9kb25lKG1fZHJhZy5nZXQoKSwgRkFMU0UpOwpAQCAtODksNyArODksNyBAQCB2b2lk
IERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBEcmFnT3Bl
cmF0aW9uIG9wZXJhdGlvbiwgUgogICAgIGF1dG8qIHN1cmZhY2UgPSBndGtfbmF0aXZlX2dldF9z
dXJmYWNlKGd0a193aWRnZXRfZ2V0X25hdGl2ZShtX3dlYlZpZXcpKTsKICAgICBhdXRvKiBkZXZp
Y2UgPSBnZGtfc2VhdF9nZXRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGd0
a193aWRnZXRfZ2V0X2Rpc3BsYXkobV93ZWJWaWV3KSkpOwogICAgIEdSZWZQdHI8R2RrQ29udGVu
dFByb3ZpZGVyPiBwcm92aWRlciA9IGFkb3B0R1JlZihnZGtfY29udGVudF9wcm92aWRlcl9uZXdf
dW5pb24ocHJvdmlkZXJzLmRhdGEoKSwgcHJvdmlkZXJzLnNpemUoKSkpOwotICAgIG1fZHJhZyA9
IGFkb3B0R1JlZihnZGtfZHJhZ19iZWdpbihzdXJmYWNlLCBkZXZpY2UsIHByb3ZpZGVyLmdldCgp
LCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhvcGVyYXRpb24pLCAwLCAwKSk7CisgICAg
bV9kcmFnID0gYWRvcHRHUmVmKGdka19kcmFnX2JlZ2luKHN1cmZhY2UsIGRldmljZSwgcHJvdmlk
ZXIuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKG9wZXJhdGlvbk1hc2spLCAw
LCAwKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdChtX2RyYWcuZ2V0KCksICJkbmQtZmluaXNoZWQi
LCBHX0NBTExCQUNLKCtbXShHZGtEcmFnKiBndGtEcmFnLCBncG9pbnRlciB1c2VyRGF0YSkgewog
ICAgICAgICBhdXRvJiBkcmFnID0gKnN0YXRpY19jYXN0PERyYWdTb3VyY2UqPih1c2VyRGF0YSk7
CiAgICAgICAgIGlmIChkcmFnLm1fZHJhZy5nZXQoKSAhPSBndGtEcmFnKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXQuaAppbmRleCA4YzNiMTBlMTA1MGMxOGQ4
ZTE4MTQ0MmM5ODRkOTAyNDljYTg3YWMwLi5hMDA0NTAwYjBkZWY2OWM4ZDg1ZTY0YjI1ZjcyMWJk
OTgwMWMxMWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXQuaApAQCAtODAsNyArODAsNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiBtX3Bvc2l0aW9uOwogICAgIHVuc2lnbmVkIG1fZGF0YVJlcXVlc3RDb3VudCB7IDAg
fTsKICAgICBPcHRpb25hbDxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRhdGE7
Ci0gICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBtX29wZXJhdGlvbiB7IFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Ob25lIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gbV9v
cGVyYXRpb247CiAjaWYgVVNFKEdUSzQpCiAgICAgR1JlZlB0cjxHQ2FuY2VsbGFibGU+IG1fY2Fu
Y2VsbGFibGU7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBjMTNiMjliMzFkYzU1OGJlMjBlY2RlYTM3ZTBmY2Mz
NTI5NzRkNTEzLi4xYzUxOTVmMjc2NjRkN2I2M2I5MGMwNjRlY2EwMzBhYjMyZmM5YTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNw
cApAQCAtMjE3LDExICsyMTcsMTEgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkaWRQZXJmb3JtQWN0aW9u
KCkKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICBhdXRvIG9wZXJhdGlvbiA9IHBhZ2UtPmN1cnJl
bnREcmFnT3BlcmF0aW9uKCk7Ci0gICAgaWYgKG9wZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKKyAg
ICBpZiAoKCFvcGVyYXRpb24gJiYgIW1fb3BlcmF0aW9uKSB8fCAqb3BlcmF0aW9uID09ICptX29w
ZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247
Ci0gICAgZ2RrX2RyYWdfc3RhdHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvU2luZ2xl
R2RrRHJhZ0FjdGlvbihtX29wZXJhdGlvbiksIEdES19DVVJSRU5UX1RJTUUpOworICAgIGdka19k
cmFnX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rp
b24obV9vcGVyYXRpb24gPyAqbV9vcGVyYXRpb24gOiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4o
eyB9KSksIEdES19DVVJSRU5UX1RJTUUpOwogfQogCiB2b2lkIERyb3BUYXJnZXQ6OmxlYXZlVGlt
ZXJGaXJlZCgpCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZVRpbWVy
RmlyZWQoKQogICAgIGF1dG8qIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBhZ2UoV0VCS0lU
X1dFQl9WSUVXX0JBU0UobV93ZWJWaWV3KSk7CiAgICAgQVNTRVJUKHBhZ2UpOwogCi0gICAgRHJh
Z0RhdGEgZHJhZ0RhdGEoJm1fc2VsZWN0aW9uRGF0YS52YWx1ZSgpLCAqbV9wb3NpdGlvbiwgY29u
dmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3dlYlZpZXcsICptX3Bvc2l0aW9uKSwgRHJh
Z09wZXJhdGlvbk5vbmUpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEu
dmFsdWUoKSwgKm1fcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93
ZWJWaWV3LCAqbV9wb3NpdGlvbiksIHsgfSk7CiAgICAgcGFnZS0+ZHJhZ0V4aXRlZChkcmFnRGF0
YSk7CiAgICAgcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKaW5kZXgg
NTFjYTNlN2I4MjE4MmY4YjA1ODY0YTRkNDcxN2NmMWJlNTRhZDg0NS4uMzYxZTRmYTVjNTVhNjhh
ZDAzMWUyNzAyMWE2ZDI5N2E3ZWQ5NTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgRHJvcFRh
cmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7CiAKICAgICAgICAgZHJvcC5lbnRlcih7IGNs
YW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRvSW50ZWdlcih5KSB9KTsKLSAgICAgICAgcmV0dXJuIGRy
YWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29wZXJhdGlvbik7CisgICAg
ICAgIHJldHVybiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVy
YXRpb24gPyAqZHJvcC5tX29wZXJhdGlvbiA6IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IH0p
KTsKICAgICB9KSwgdGhpcyk7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHRhcmdldCwgImRyYWct
bW90aW9uIiwgR19DQUxMQkFDSygrW10oR3RrRHJvcFRhcmdldEFzeW5jKiwgR2RrRHJvcCogZ2Rr
RHJvcCwgZG91YmxlIHgsIGRvdWJsZSB5LCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR2RrRHJhZ0Fj
dGlvbiB7CkBAIC03Miw3ICs3Miw3IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0
KiB3ZWJWaWV3KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+
KDApOwogCiAgICAgICAgIGRyb3AudXBkYXRlKHsgY2xhbXBUb0ludGVnZXIoeCksIGNsYW1wVG9J
bnRlZ2VyKHkpIH0pOwotICAgICAgICByZXR1cm4gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJh
Z0FjdGlvbihkcm9wLm1fb3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25U
b1NpbmdsZUdka0RyYWdBY3Rpb24oZHJvcC5tX29wZXJhdGlvbiA/ICpkcm9wLm1fb3BlcmF0aW9u
IDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgfSkpOwogICAgIH0pLCB0aGlzKTsKIAogICAg
IGdfc2lnbmFsX2Nvbm5lY3QodGFyZ2V0LCAiZHJhZy1sZWF2ZSIsIEdfQ0FMTEJBQ0soK1tdKEd0
a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSB7
CkBAIC0yNzMsMTEgKzI3MywxMSBAQCB2b2lkIERyb3BUYXJnZXQ6OmRpZFBlcmZvcm1BY3Rpb24o
KQogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gcGFnZS0+Y3VycmVu
dERyYWdPcGVyYXRpb24oKTsKLSAgICBpZiAob3BlcmF0aW9uID09IG1fb3BlcmF0aW9uKQorICAg
IGlmICgoIW9wZXJhdGlvbiAmJiAhbV9vcGVyYXRpb24pIHx8IG9wZXJhdGlvbiA9PSBtX29wZXJh
dGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247Ci0g
ICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0Fj
dGlvbnMobV9vcGVyYXRpb24pLCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKG1f
b3BlcmF0aW9uKSk7CisgICAgZ2RrX2Ryb3Bfc3RhdHVzKG1fZHJvcC5nZXQoKSwgZHJhZ09wZXJh
dGlvblRvR2RrRHJhZ0FjdGlvbnMobV9vcGVyYXRpb24gPyAqbV9vcGVyYXRpb24gOiBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbih7IH0pKSwgZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlv
bihtX29wZXJhdGlvbiA/ICptX29wZXJhdGlvbiA6IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7
IH0pKSk7CiB9CiAKIHZvaWQgRHJvcFRhcmdldDo6bGVhdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA2NWU2OWMyYzU2
ZWU0YzUwMzM5ZDM3MzQ1MzcxNTQ0MTYzY2ZmOTJkLi4wYWVlNGJjOTM4MGNiNDdjYTQ5MDBkODU1
NmQ1MWUyNGQ4ZjE0YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMzIwLDkgKzMyMCw5IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB9CiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKFNl
bGVjdGlvbkRhdGEmJiBzZWxlY3Rpb24sIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiwgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpz
dGFydERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGRyYWdPcGVyYXRpb25NYXNrLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFn
ZSkKIHsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXRUJLSVRfV0VCX1ZJRVdfQkFT
RShtX3ZpZXdXaWRnZXQpLCBXVEZNb3ZlKHNlbGVjdGlvbiksIGRyYWdPcGVyYXRpb24sIFdURk1v
dmUoZHJhZ0ltYWdlKSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV0VCS0lUX1dF
Ql9WSUVXX0JBU0UobV92aWV3V2lkZ2V0KSwgV1RGTW92ZShzZWxlY3Rpb24pLCBkcmFnT3BlcmF0
aW9uTWFzaywgV1RGTW92ZShkcmFnSW1hZ2UpKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCBlZDM5ZTc0ZGRlOGQ5NmFiODU0
YzNiZWJhMDU1OTMwYWJiNTZjODI2Li4yNzAwOTk4MjZiN2JlYzVlMzJhNmNjMDVjNDFmMWZjMTRl
YzU5OGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xp
ZW50SW1wbC5oCkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlv
bkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3
U25hcHNob3QoT3B0aW9uYWw8V2ViQ29yZTo6SW50UmVjdD4mJikgb3ZlcnJpZGU7CiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKLSAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25E
YXRhJiYsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYg
ZHJhZ0ltYWdlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhJiYsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiwgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBm
ZTRlN2FjMDMxYzFiNGY5ZWE5MzkwOGIzMzY1ZmIxN2QyZDJlMDU3Li40NGRiNDQ4OTAzNDY4NWM5
OTliNzczYTc0Mjc3MzljMTZmYmI1NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjA1NCwxMyArMjA1NCwx
MyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU2V0VG9vbHRpcEFyZWEoV2ViS2l0V2ViVmlld0Jh
c2UqIHdlYlZpZXdCYXNlLCBjb25zdCBJbnRSZQogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKLXZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YlZpZXdCYXNlLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgRHJhZ09wZXJhdGlvbiBk
cmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQordm9pZCB3ZWJr
aXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIFNl
bGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJh
Z09wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAg
V2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAgICAg
aWYgKCFwcml2LT5kcmFnU291cmNlKQogICAgICAgICBwcml2LT5kcmFnU291cmNlID0gbWFrZVVu
aXF1ZTxEcmFnU291cmNlPihHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CiAKLSAgICBwcml2LT5k
cmFnU291cmNlLT5iZWdpbihXVEZNb3ZlKHNlbGVjdGlvbkRhdGEpLCBkcmFnT3BlcmF0aW9uLCBX
VEZNb3ZlKGltYWdlKSk7CisgICAgcHJpdi0+ZHJhZ1NvdXJjZS0+YmVnaW4oV1RGTW92ZShzZWxl
Y3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdURk1vdmUoaW1hZ2UpKTsKIAogI2lmICFV
U0UoR1RLNCkKICAgICAvLyBBIGRyYWcgc3RhcnRpbmcgc2hvdWxkIHByZXZlbnQgYSBkb3VibGUt
Y2xpY2sgZnJvbSBoYXBwZW5pbmcuIFRoaXMgbWlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCmluZGV4
IDFjNGRmMTI3ZWM0OGQ1NzU1NjRkYjA0M2ZiN2FmOTU5MGY3Y2M3MjQuLmViN2Y4NmUwOGU3MzZh
YjcwN2JhNjE5NjA5OWU2ZTI5OWI2NmNkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaApAQCAtODIs
NyArODIsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlRGlkUmVsYXVuY2hXZWJQcm9jZXNzKFdl
YktpdFdlYlZpZXdCYXNlKik7CiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUGFnZUNsb3NlZChXZWJL
aXRXZWJWaWV3QmFzZSopOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQgd2Via2l0
V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqLCBXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhJiYsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcD4mJik7Cit2b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZp
ZXdCYXNlKiwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4sIFJlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4mJik7CiB2b2lkIHdl
YmtpdFdlYlZpZXdCYXNlRGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKFdlYktpdFdlYlZp
ZXdCYXNlKik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQppbmRleCAyZTM5ZWE2Y2ZlODAxZTA4MDFlNDViZmE4N2MwOTNjODlkMjRhMGMy
Li42OWI2MmRlMjUyZjFkMzBmOTJiNTE4MTc2ODZiZjEwODJkODQwNDcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMzkxMyw3ICszOTEzLDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ2dlZEltYWdlKE5TSW1hZ2UgKiwgQ0dQb2ludCBlbmRQ
b2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXIKICAgICBzZW5kRHJhZ0VuZFRvUGFnZShlbmRQb2lu
dCwgb3BlcmF0aW9uKTsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2Uo
Q0dQb2ludCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgV2ViVmll
d0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlv
biBkcmFnT3BlcmF0aW9uTWFzaykKIHsKICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgIE5TUG9pbnQgd2luZG93SW1hZ2VMb2MgPSBbW21fdmlldyB3aW5kb3ddIGNv
bnZlcnRTY3JlZW5Ub0Jhc2U6TlNQb2ludEZyb21DR1BvaW50KGVuZFBvaW50KV07CkBAIC0zOTIz
LDcgKzM5MjMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50
IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQogICAgIC8vIFByZXZlbnQgcXVl
dWVkIG1vdXNlRHJhZ2dlZCBldmVudHMgZnJvbSBjb21pbmcgYWZ0ZXIgdGhlIGRyYWcgYW5kIGZh
a2UgbW91c2VVcCBldmVudC4KICAgICBtX2lnbm9yZXNNb3VzZURyYWdnZWRFdmVudHMgPSB0cnVl
OwogCi0gICAgbV9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQod2luZG93TW91c2VM
b2MpLCBXZWJDb3JlOjpJbnRQb2ludChXZWJDb3JlOjpnbG9iYWxQb2ludCh3aW5kb3dNb3VzZUxv
YywgW21fdmlldyB3aW5kb3ddKSksIG9wZXJhdGlvbik7CisgICAgbV9wYWdlLT5kcmFnRW5kZWQo
V2ViQ29yZTo6SW50UG9pbnQod2luZG93TW91c2VMb2MpLCBXZWJDb3JlOjpJbnRQb2ludChXZWJD
b3JlOjpnbG9iYWxQb2ludCh3aW5kb3dNb3VzZUxvYywgW21fdmlldyB3aW5kb3ddKSksIGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhkcmFnT3BlcmF0aW9uTWFzaykpOwogfQogCiBzdGF0aWMgV2ViQ29y
ZTo6RHJhZ0FwcGxpY2F0aW9uRmxhZ3MgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcoTlNWaWV3ICp2
aWV3LCBpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKQEAgLTM5NDcsNyArMzk0Nyw3
IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRlcmVkKGlkIDxOU0Ry
YWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChb
bV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmll
dzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9p
bnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwogICAg
IGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrKFttX3ZpZXcgX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86
ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2spOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlv
bk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CiAgICAgV2Vi
Q29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJh
Z09wZXJhdGlvbk1hc2ssIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVs
ZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAKICAg
ICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwpAQCAtMzk1NiwxOCArMzk1
Niw0MiBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChpZCA8
TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9u
Q29weTsKIH0KIAorc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRpb24p
CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dpdGNoICgqZHJh
Z09wZXJhdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk6CisgICAg
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkxpbms6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGNh
c2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBOU0RyYWdP
cGVyYXRpb25HZW5lcmljOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6
CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Nb3Zl
OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJu
IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKK30KKwogTlNEcmFnT3BlcmF0aW9u
IFdlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2lu
Z0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBv
aW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8u
ZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7CiAgICAgYXV0byBkcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW21fdmlldyBf
d2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsK
LSAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CisgICAg
YXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0lu
Zm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBXZWJDb3JlOjpEcmFnRGF0YSBk
cmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBkcmFnT3BlcmF0aW9uTWFzaywg
YXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2lu
Z0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKTsKICAgICBtX3BhZ2UtPmRyYWdVcGRh
dGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogCiAg
ICAgTlNJbnRlZ2VyIG51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX3BhZ2UtPmN1cnJlbnRE
cmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpOwogCi0gICAgaWYgKG1fcGFnZS0+Y3VycmVu
dERyYWdPcGVyYXRpb24oKSA9PSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICBpZiAo
IW1fcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKSkKICAgICAgICAgbnVtYmVyT2ZWYWxpZEl0
ZW1zRm9yRHJvcCA9IG1faW5pdGlhbE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A7CiAKICAgICBO
U0RyYWdnaW5nRm9ybWF0aW9uIGRyYWdnaW5nRm9ybWF0aW9uID0gTlNEcmFnZ2luZ0Zvcm1hdGlv
bk5vbmU7CkBAIC0zOTc5LDE0ICs0MDAzLDE0IEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1w
bDo6ZHJhZ2dpbmdVcGRhdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAg
IGlmIChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdGb3JtYXRpb24gIT0gZHJhZ2dpbmdGb3JtYXRpb24p
CiAgICAgICAgIFtkcmFnZ2luZ0luZm8gc2V0RHJhZ2dpbmdGb3JtYXRpb246ZHJhZ2dpbmdGb3Jt
YXRpb25dOwogCi0gICAgcmV0dXJuIG1fcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKTsKKyAg
ICByZXR1cm4ga2l0KG1fcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKSk7CiB9CiAKIHZvaWQg
V2ViVmlld0ltcGw6OmRyYWdnaW5nRXhpdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJ
bmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2lu
dDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRh
IGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRy
YWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3
LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKICAgICBtX3BhZ2UtPmRyYWdFeGl0
ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFtZSk7CiAgICAg
bV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKICAgICBkcmFnZ2luZ0luZm8u
bnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1faW5pdGlhbE51bWJlck9mVmFsaWRJdGVtc0Zv
ckRyb3A7CkBAIC00MDAyLDcgKzQwMjYsNyBAQCBib29sIFdlYlZpZXdJbXBsOjpwZXJmb3JtRHJh
Z09wZXJhdGlvbihpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJD
b3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xv
YmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBb
bV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJhZ0RhdGEgPSBuZXcg
V2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFz
ZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0g
bmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVE
cmFnT3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFn
Z2luZ0luZm8pKTsKIAogICAgIE5TQXJyYXkgKnR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
UGFzdGVib2FyZC50eXBlczsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBhYzVk
OTBlYjUzOWZiMDA2NTI2NTU1OGUyZTk0NjE1YTg3NGZhNmNiLi4yZTY2NjI4YWI1YzcwOGZmZjEy
MTBlNTg3Y2Q0YTg1MjliODBlODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CkBAIC0yNTAsNyArMjUwLDcgQEAgcHVibGljOgogICAgIAogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoV2ViQ29y
ZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVh
YmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWco
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSA9IDA7CiAjZWxzZQogICAg
IHZpcnR1YWwgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29yZTo6RHJhZ0l0ZW0mLCBjb25zdCBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSYpIHsgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAwZmM5YjhlNWNkMDM2NDhlZjFiOTNkYmJlNGFjNDFm
MDM2OWRkNjg3Li5kNDNjNzkzMjcyZTcwOWE1M2JkNTAxODZkZjcwYmVlNjk4Y2FhNzcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI0MjQsMTEgKzI0MjQs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdD
b250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJhZwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlv
biwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBt
b3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwg
Y29uc3QgSW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVt
ZW50UmVjdCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgV2ViQ29y
ZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3Zl
ckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgSW50
UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgSW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCkK
IHsKLSAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZHJhZ09wZXJhdGlvbiA8PSBEcmFnT3Bl
cmF0aW9uRGVsZXRlKTsKLQotICAgIG1fY3VycmVudERyYWdPcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxEcmFnT3BlcmF0aW9uPihkcmFnT3BlcmF0aW9uKTsKKyAgICBtX2N1cnJlbnREcmFnT3BlcmF0
aW9uID0gZHJhZ09wZXJhdGlvbjsKICAgICBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QgPSBk
cmFnSGFuZGxpbmdNZXRob2Q7CiAgICAgbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dCA9IG1v
dXNlSXNPdmVyRmlsZUlucHV0OwogICAgIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFj
Y2VwdGVkID0gbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZDsKQEAgLTI0MzgsMjAgKzI0MzYsMjAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50
NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJDb3IKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQg
V2ViUGFnZVByb3h5OjpzdGFydERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVp
bnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFn
SW1hZ2VIYW5kbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEm
JiBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09w
ZXJhdGlvbk1hc2ssIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5k
bGUpCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlID0gIWRyYWdJbWFn
ZUhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRs
ZSkgOiBudWxscHRyOwotICAgIHBhZ2VDbGllbnQoKS5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rp
b25EYXRhKSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ09wZXJhdGlv
biksIFdURk1vdmUoZHJhZ0ltYWdlKSk7CisgICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhXVEZN
b3ZlKHNlbGVjdGlvbkRhdGEpLCBkcmFnT3BlcmF0aW9uTWFzaywgV1RGTW92ZShkcmFnSW1hZ2Up
KTsKIAogICAgIGRpZFN0YXJ0RHJhZygpOwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFn
T3BlcmF0aW9uTWFzaykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9z
aXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnT3Bl
cmF0aW9uTWFzaykpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9KTsKIH0KIApAQCAtMjQ4Miw3
ICsyNDgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZERyYWdnaW5nKCkKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpCiB7Ci0gICAgbV9jdXJy
ZW50RHJhZ09wZXJhdGlvbiA9IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lOworICAgIG1fY3Vy
cmVudERyYWdPcGVyYXRpb24gPSBXVEY6Om51bGxvcHQ7CiAgICAgbV9jdXJyZW50RHJhZ0hhbmRs
aW5nTWV0aG9kID0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwogICAgIG1fY3VycmVudERyYWdJ
c092ZXJGaWxlSW5wdXQgPSBmYWxzZTsKICAgICBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1Rv
QmVBY2NlcHRlZCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDdiYTlmOGI1ZWMwNzcwMjMwYjNkMjllNWI3YWUwZjY1YjdlNjVjNzIuLjdmNjg3MGM4NDQ1Yjkw
NWFmNGIyODA0MGUxZTFhYzllZmJjM2M1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0xMTU2LDggKzExNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3Jt
RHJhZ09wZXJhdGlvbihXZWJDb3JlOjpEcmFnRGF0YSYsIGNvbnN0IFN0cmluZyYgZHJhZ1N0b3Jh
Z2VOYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXkmJik7CiAgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ09wZXJhdGlvbihib29sIGhhbmRs
ZWQpOwogCi0gICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3Qg
ZHJhZ09wZXJhdGlvbiwgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNP
dmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBl
ZGl0YWJsZUVsZW1lbnRSZWN0KTsKLSAgICB2b2lkIGRyYWdFbmRlZChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsKKyAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiwgV2ViQ29yZTo6
RHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBu
dW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbnNlcnRp
b25SZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBlZGl0YWJsZUVsZW1lbnRSZWN0KTsKKyAg
ICB2b2lkIGRyYWdFbmRlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KTsKICAgICB2b2lkIGRpZFN0YXJ0RHJhZygpOwogICAgIHZvaWQg
ZHJhZ0NhbmNlbGxlZCgpOwogICAgIHZvaWQgc2V0RHJhZ0NhcmV0UmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CkBAIC0xMTY3LDcgKzExNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmlzaWJsZVVSTCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGFyY2hpdmVI
YW5kbGUsIHVpbnQ2NF90IGFyY2hpdmVTaXplKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykK
LSAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIHVpbnQ2NF90IGRy
YWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2UpOwor
ICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+LCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJh
Z0ltYWdlKTsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTEyMjYsNyArMTIyNiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAogI2lmIEVOQUJM
RShEUkFHX1NVUFBPUlQpCi0gICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBjdXJyZW50RHJhZ09w
ZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdPcGVyYXRpb247IH0KKyAgICBP
cHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjdXJyZW50RHJhZ09wZXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdPcGVyYXRpb247IH0KICAgICBXZWJDb3JlOjpEcmFn
SGFuZGxpbmdNZXRob2QgY3VycmVudERyYWdIYW5kbGluZ01ldGhvZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhvZDsgfQogICAgIGJvb2wgY3VycmVudERyYWdJc092
ZXJGaWxlSW5wdXQoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0
OyB9CiAgICAgdW5zaWduZWQgY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQ7IH0K
QEAgLTI2MDcsNyArMjYwNyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICAvLyBDdXJyZW50IGRyYWcgZGVzdGluYXRpb24gZGV0YWlscyBhcmUgZGVsaXZlcmVkIGFz
IGFuIGFzeW5jaHJvbm91cyByZXNwb25zZSwKICAgICAvLyBzbyB3ZSBwcmVzZXJ2ZSB0aGVtIHRv
IGJlIHVzZWQgd2hlbiB0aGUgbmV4dCBkcmFnZ2luZyBkZWxlZ2F0ZSBjYWxsIGlzIG1hZGUuCi0g
ICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uIHsgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbk5vbmUgfTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOwogICAgIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01l
dGhvZCBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QgeyBXZWJDb3JlOjpEcmFnSGFuZGxpbmdN
ZXRob2Q6Ok5vbmUgfTsKICAgICBib29sIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgeyBm
YWxzZSB9OwogICAgIHVuc2lnbmVkIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2Vw
dGVkIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDJkMjNlNGI2NjBiODZlNjc4NjQ1MGVlMzczZDI1Y2FjMTViOGVjN2Uu
LmFkY2ExNWM0YmJhZDdlYmI3N2FiNjBhYzVjNmZlYTQyNjFkNmNmNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTMxMCw3ICsz
MTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBEcmFnIGFuZCBkcm9w
IG1lc3NhZ2VzCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBEaWRQZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJhZ09wZXJhdGlvbiwgZW51bTp1aW50OF90IFdlYkNv
cmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092
ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIFdlYkNvcmU6
OkludFJlY3QgaW5zZXJ0aW9uUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBlZGl0YWJsZUVsZW1lbnRS
ZWN0KQorICAgIERpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6RHJh
Z0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJ
bnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgV2ViQ29yZTo6SW50UmVj
dCBpbnNlcnRpb25SZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGVkaXRhYmxlRWxlbWVudFJlY3QpCiAg
ICAgRGlkRW5kRHJhZ2dpbmcoKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoRFJBR19TVVBQT1JUKQpAQCAtMzE4LDcgKzMxOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgU2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGltYWdlSGFuZGxlLCB1aW50NjRfdCBpbWFn
ZVNpemUsIFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIGV4dGVuc2lvbiwgU3RyaW5nIHRpdGxlLCBT
dHJpbmcgdXJsLCBTdHJpbmcgdmlzaWJsZVVSTCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBhcmNoaXZlSGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSkKICNlbmRpZgogI2lmIFBMQVRG
T1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBTdGFydERyYWcoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb25EYXRhLCB1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRyYWdJbWFnZSkKKyAgICBTdGFydERyYWcoV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgZHJhZ0ltYWdlKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KaW5kZXggNDM5ZGI5OTc3ZWUyYzMxOTRhNmRlODI3NmQxMzI1YWM4ZGJiODBiYS4u
Njk2YjkwODhkODg2ODExMzdmZGFjM2JkYjk5MTgyY2Y0NDQ5MjYyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CkBAIC03Mjg1LDcgKzcyODUsNyBAQCAtICh2b2lkKV9kaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0
OihCT09MKXN0YXJ0ZWQKICAgICAgICAgaWYgKHN0YXJ0ZWQpIHsKICAgICAgICAgICAgIC8vIEEg
Y2xpZW50IG9mIHRoZSBPYmplY3RpdmUgQyBTUEkgb3IgVUlLaXQgbWlnaHQgaGF2ZSBwcmV2ZW50
ZWQgdGhlIGRyYWcgZnJvbSBiZWdpbm5pbmcgZW50aXJlbHkgaW4gdGhlIFVJIHByb2Nlc3MsIGlu
IHdoaWNoIGNhc2UKICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gYmFsYW5jZSB0aGUgYGRyYWdz
dGFydGAgZXZlbnQgd2l0aCBhIGBkcmFnZW5kYC4KLSAgICAgICAgICAgIF9wYWdlLT5kcmFnRW5k
ZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Ob25lKTsKKyAgICAgICAgICAgIF9wYWdlLT5kcmFnRW5kZWQocG9zaXRpb25Gb3JE
cmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIHsgfSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBA
IC03MzAzLDI0ICs3MzAzLDQyIEBAIC0gKHZvaWQpY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50
c0ZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBvCiAgICAgICAgICpv
dXRHbG9iYWxQb2ludCA9IGxvY2F0aW9uSW5Db250ZW50VmlldzsKIH0KIAotc3RhdGljIFVJRHJv
cE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24oV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCitzdGF0aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVy
YXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiBvcGVyYXRpb24pCiB7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Nb3ZlKQotICAgICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uTW92ZTsKLQotICAgIGlm
IChvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSkKLSAgICAgICAgcmV0dXJu
IFVJRHJvcE9wZXJhdGlvbkNvcHk7Ci0KKyAgICBpZiAob3BlcmF0aW9uKSB7CisgICAgICAgIGlm
ICgqb3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgICAgICBy
ZXR1cm4gVUlEcm9wT3BlcmF0aW9uTW92ZTsKKyAgICAgICAgaWYgKCpvcGVyYXRpb24gJiBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRp
b25Db3B5OworICAgIH0KICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOwogfQogCitz
dGF0aWMgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9u
Rm9yVUlEcm9wT3BlcmF0aW9uKFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uKQoreworICAg
IHN3aXRjaCAoZHJvcE9wZXJhdGlvbikgeworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uQ2FuY2Vs
OgorICAgICAgICByZXR1cm4geyB9OworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uRm9yYmlkZGVu
OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgY2Fz
ZSBVSURyb3BPcGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbkNvcHk7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4g
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiB7IH07Cit9CisKIC0gKFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRh
Rm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGRyYWdEZXN0aW5hdGlv
bkFjdGlvbjooV0tEcmFnRGVzdGluYXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uCiB7
CiAgICAgQ0dQb2ludCBnbG9iYWw7CiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29t
cHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50
UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKIAotICAgIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPihzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRpb24gPyBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uRXZlcnkgOiAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkV2ZXJ5ICYgfldlYkNvcmU6OkRy
YWdPcGVyYXRpb25Nb3ZlKSk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IFdlYkNvcmU6
OmFueURyYWdPcGVyYXRpb24oKTsKKyAgICBpZiAoIXNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlv
bikKKyAgICAgICAgZHJhZ09wZXJhdGlvbk1hc2sucmVtb3ZlKFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25Nb3ZlKTsKICAgICByZXR1cm4geyBzZXNzaW9uLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Y2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25N
YXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25Ob25lLCBXZWJLaXQ6OmNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKGRyYWdEZXN0aW5hdGlvbkFjdGlvbikgfTsKIH0KIApAQCAtNzQyNCw3
ICs3NDQyLDggQEAgLSAodm9pZClfZGlkUGVyZm9ybURyYWdPcGVyYXRpb246KEJPT0wpaGFuZGxl
ZAogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQ
b2ludHNGb3JEcm9wU2Vzc2lvbjpkcm9wU2Vzc2lvbiBvdXRDbGllbnRQb2ludDomY2xpZW50IG91
dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lv
blN0YXRlXTsKLSAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChj
bGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgX3BhZ2UtPmN1cnJlbnRE
cmFnT3BlcmF0aW9uKCkpOworICAgIGF1dG8gY3VycmVudERyYWdPcGVyYXRpb24gPSBfcGFnZS0+
Y3VycmVudERyYWdPcGVyYXRpb24oKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJv
dW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwg
Y3VycmVudERyYWdPcGVyYXRpb24gPyAqY3VycmVudERyYWdPcGVyYXRpb24gOiBPcHRpb25TZXQ8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oeyB9KSk7CiB9CiAKIC0gKHZvaWQpX2RpZENoYW5nZURy
YWdDYXJldFJlY3Q6KENHUmVjdClwcmV2aW91c1JlY3QgY3VycmVudFJlY3Q6KENHUmVjdClyZWN0
CkBAIC04MDEzLDcgKzgwMzIsNyBAQCAtICh2b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50
ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiB3aWxsQW5pbWF0ZUxpZnRXaXRoQW5pbQogICAgICAgICAg
ICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJEcmFnIHNlc3Npb24gZW5kZWQgYXQgc3RhcnQ6
ICVwIiwgc2Vzc2lvbik7CiAgICAgICAgICAgICAvLyBUaGUgbGlmdCB3YXMgY2FuY2VsZWQsIHNv
IC1kcm9wSW50ZXJhY3Rpb246c2Vzc2lvbkRpZEVuZDogd2lsbCBuZXZlciBiZSBpbnZva2VkLiBU
aGlzIGlzIHRoZSBsYXN0IGNoYW5jZSB0byBjbGVhbiB1cC4KICAgICAgICAgICAgIFtwcm90ZWN0
ZWRTZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsKLSAgICAgICAgICAgIHBhZ2Ut
PmRyYWdFbmRlZChwb3NpdGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbk5vbmUpOworICAgICAgICAgICAgcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0
aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCB7IH0pOwogICAgICAgICB9CiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIGVsc2UKQEAgLTgwNDgsNyArODA2Nyw3IEBA
IC0gKHZvaWQpZHJhZ0ludGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9u
IHNlc3Npb246KGlkIDxVSURyYWdTZXNzCiAgICAgICAgIHJldHVybjsKIAogICAgIFtzZWxmIGNs
ZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsKLSAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNv
cmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9z
aXRpb25Gb3JEcmFnRW5kKCkpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50
ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCgpKSwgb3BlcmF0aW9uKTsK
KyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9u
Rm9yRHJhZ0VuZCgpKSwgY29yZURyYWdPcGVyYXRpb25Gb3JVSURyb3BPcGVyYXRpb24ob3BlcmF0
aW9uKSk7CiB9CiAKIC0gKFVJVGFyZ2V0ZWREcmFnUHJldmlldyAqKWRyYWdJbnRlcmFjdGlvbjoo
VUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBwcmV2aWV3Rm9yQ2FuY2VsbGluZ0l0ZW06
KFVJRHJhZ0l0ZW0gKilpdGVtIHdpdGhEZWZhdWx0OihVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilk
ZWZhdWx0UHJldmlldwpAQCAtODI2Nyw3ICs4Mjg2LDcgQEAgLSAodm9pZClkcm9wSW50ZXJhY3Rp
b246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc2Vzc2lvbkRpZEVuZDooaWQgPFVJ
RHIKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFs
UG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lvbiBvdXRDbGllbnRQb2ludDomY2xpZW50IG91dEds
b2JhbFBvaW50OiZnbG9iYWxdOwogICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0
YXRlXTsKLSAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGll
bnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbk5vbmUpOworICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCB7IH0pOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCmluZGV4IGVlZDdiOTk2ODU3MzZk
NWQwMTY2OTAwZDFhYzZkZTAzYTIxNjEwNWUuLjc0ZjQ2Y2NiZjExM2Y3YzZiZjk5YTJhMTgyYjg4
ZjQxN2MzMzBjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcApAQCAtNzUsNyAr
NzUsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRh
VHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmKQogCiAgICAgbV9wYWdlLT53aWxsU3RhcnRE
cmFnKCk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnRE
cmFnKGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuc2VsZWN0aW9uRGF0YSgpLCBkYXRhVHJhbnNm
ZXIuc291cmNlT3BlcmF0aW9uKCksIGhhbmRsZSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTdGFydERyYWcoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5zZWxl
Y3Rpb25EYXRhKCksIGRhdGFUcmFuc2Zlci5zb3VyY2VPcGVyYXRpb25NYXNrKCksIGhhbmRsZSkp
OwogfQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2MGIwZWE3OTYyZGU3MzZiYjBiYTUzOWZlMTQy
MTdiYzRiYzBkOTI3Li5lNzc0YTJjYjgzMDc3NmI1YTU2ZWYxMDlkNjMxYmUzOGJiOWU4NzlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzk0
NCwyMiArMzk0NCwyMiBAQCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIFdl
YlBhZ2U6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYQogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAKICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50
NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rp
b25EYXRhLCB1aW50MzJfdCBmbGFncykKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFNlbGVjdGlvbkRhdGEm
JiBzZWxlY3Rpb25EYXRhLCB1aW50MzJfdCBmbGFncykKIHsKICAgICBpZiAoIW1fcGFnZSkgewot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBm
YWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxp
bmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKSwgc3RhdGljX2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZs
YWdzKSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBzdGF0aWNf
Y2FzdDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsKICAgICBzd2l0Y2ggKGFjdGlvbikg
ewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkVudGVyZWQ6IHsKLSAgICAgICAgRHJh
Z09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVy
KCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRHJhZ09wZXJh
dGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJc092
ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0Jl
QWNjZXB0ZWQoKSwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNl
IERyYWdDb250cm9sbGVyQWN0aW9uOjpVcGRhdGVkOiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24g
cmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRh
dGVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3Bh
Z2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihy
ZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxp
bmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0
KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCks
IHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zOTc4LDI0ICszOTc4LDI0
IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9s
bGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50CiB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6
OkRyYWdEYXRhJiBkcmFnRGF0YSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0
ZW5zaW9uc0hhbmRsZUFycmF5KQogewogICAgIGlmICghbV9wYWdlKSB7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERy
YWdPcGVyYXRpb25Ob25lLCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0s
IHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9u
ZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBz
d2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkVudGVyZWQ6
IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJl
c29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJl
ZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9s
bGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51
bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCku
Y2FyZXRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJv
bGxlcigpLmVkaXRhYmxlRWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlVwZGF0
ZWQ6IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3Bh
Z2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRv
IHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBk
YXRlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
Lm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgbV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVy
KCkuY2FyZXRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29u
dHJvbGxlcigpLmVkaXRhYmxlRWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkV4
aXRlZDoKICAgICAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0Rh
dGEpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpO
b25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFn
SGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1
cm47CiAgICAgICAgIAogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlBlcmZvcm1EcmFn
T3BlcmF0aW9uOiB7CkBAIC00MDIyLDcgKzQwMjIsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdl
YgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0
X3Qgb3BlcmF0aW9uKQordm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2spCiB7CiAgICAgSW50
UG9pbnQgYWRqdXN0ZWRDbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbi54KCkgKyBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLngoKSwgY2xpZW50UG9zaXRpb24ueSgpICsg
bV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS55KCkpOwogICAgIEludFBvaW50
IGFkanVzdGVkR2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24ueCgpICsgbV9wYWdlLT5kcmFn
Q29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS54KCksIGdsb2JhbFBvc2l0aW9uLnkoKSArIG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueSgpKTsKQEAgLTQwMzMsNyArNDAzMyw3
IEBAIHZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0
aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iCiAgICAgICAgIHJldHVybjsKICAgICAvLyBGSVhN
RTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUg
cmVhbCBvbmVzIGluc3RlYWQuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGFkanVzdGVk
Q2xpZW50UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxs
VGltZTo6bm93KCksIDAsIFdlYkNvcmU6Ok5vVGFwKTsKLSAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoRHJhZ09wZXJhdGlvbilv
cGVyYXRpb24pOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1Nv
dXJjZUVuZGVkQXQoZXZlbnQsIGRyYWdPcGVyYXRpb25NYXNrKTsKIAogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRW5kRHJhZ2dpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjMmM0OGQxYzkzNjgyMGJlOWMwMzk2MzIy
NzFkYmZjMzA3OGM4MWI4Li42NzljZmQxYjUzMmZhYmFmNDYyZWRlNjdmZDcyNGJiYWI2NTNhOGNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04OTks
NyArODk5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVk
aXRhYmxlRWxlbWVudCgpOwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0o
R1RLKQotICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVy
QWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIHVpbnQzMl90IGZsYWdzKTsK
KyAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlv
biwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEm
JiwgdWludDMyX3QgZmxhZ3MpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAm
JiAhUExBVEZPUk0oR1RLKQpAQCAtOTA3LDcgKzkwNyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2b2lkIGRyYWdFbmRlZChXZWJDb3JlOjpJbnRQ
b2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVp
bnQ2NF90IG9wZXJhdGlvbik7CisgICAgdm9pZCBkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUxvYWRE
cmFnRGVzdGluYXRpb25BY3Rpb24oKTsKICAgICB2b2lkIG1heVBlcmZvcm1VcGxvYWREcmFnRGVz
dGluYXRpb25BY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDUzOGU2NTcyZTUwZjhlNDMwMDY4ZTY5ODc1
ODlmYTBkY2Y1Y2ZkMmYuLmFlOTI3NDc2Mzg4NTNiMzJlMjNiNGVlMTM2M2ExMzNiY2JmNjA1MWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtMzA5LDE0ICszMDksMTQgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
IAogICAgICMgRHJhZyBhbmQgZHJvcC4KICNpZiBQTEFURk9STShHVEspICYmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCi0gICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVudW06dWludDhfdCBX
ZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xp
ZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBk
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0
aW9uLCB1aW50MzJfdCBmbGFncykKKyAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51
bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24s
IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uLCB1aW50MzJfdCBmbGFncykK
ICNlbmRpZgogI2lmICFQTEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAg
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVudW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250
cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQp
CiAjZW5kaWYKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIERpZFN0YXJ0RHJhZygpCi0g
ICAgRHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQorICAgIERyYWdFbmRl
ZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xv
YmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0
aW9uTWFzaykKICAgICBEcmFnQ2FuY2VsbGVkKCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDBlNjU2NDk2
Yzg0MDBhYWM5MzIxNWVhNjc4YWIxMDkwYzRkMmU0MDMuLjhiODdkYjM4YzIyNDQyNmZhN2JlNDk5
YmJhYzIxOTAwMWI5YTU3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC05MjQsNyArOTI0LDcgQEAgdm9pZCBXZWJQYWdl
OjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNs
aWVudFBvc2l0aW8KICAgICAvLyBpcyBvcGFxdWUgdG8gdGhlIHdlYiBwcm9jZXNzLCB3aGljaCBv
bmx5IHNlZXMgdGhhdCB0aGUgY3VycmVudCBkcmFnIGhhcyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcg
b25lIGlzIGJlZ2lubmluZy4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoY2xpZW50UG9z
aXRpb24sIGdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygpLCAwLCBO
b1RhcCk7CiAgICAgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbmRlZCgpOwotICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQs
IERyYWdPcGVyYXRpb25Ob25lLCBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6WWVzKTsKKyAgICBtX3Bh
Z2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCB7
IH0sIE1heUV4dGVuZERyYWdTZXNzaW9uOjpZZXMpOwogCiAgICAgYm9vbCBkaWRIYW5kbGVEcmFn
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS50cnlUb0JlZ2luRHJhZ0F0UG9p
bnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEhhbmRsZUFkZGl0aW9uYWxEcmFnSXRlbXNSZXF1ZXN0KGRpZEhhbmRs
ZURyYWcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmlu
ZGV4IGQ0ZGVhN2MzOWM4Y2FmNGMzN2I0YWE4NWZkNTc5MWZlYWNlNDk4ODguLmI5ZWVjZGM4ZGM5
MTk1YjMzOTkxOGQ1ZDVkYTAxNTI0ZDc3ZTc5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTQyLDcgKzk0Miw3IEBAIC0gKHZvaWQpX3NldFR5
cGluZ1N0eWxlOihET01DU1NTdHlsZURlY2xhcmF0aW9uICopc3R5bGUgd2l0aFVuZG9BY3Rpb246
KFdlYkNvcmU6CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMp
Ci0tICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9u
OihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aW9uCistICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDoo
TlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pZHJhZ09wZXJhdGlv
bk1hc2sKIHsKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsK
QEAgLTk1Miw3ICs5NTIsNyBAQCAtICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3
aW5kb3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aQogICAgIC8vIEZJWE1F
OiBUaGVzZSBhcmUgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSBy
ZWFsIG9uZXMgaW5zdGVhZC4KICAgICBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQo
V2ViQ29yZTo6SW50UG9pbnQod2luZG93TG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6
Z2xvYmFsUG9pbnQod2luZG93TG9jLCBbdmlldy0+cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddKSks
CiAgICAgICAgIFdlYkNvcmU6OkxlZnRCdXR0b24sIFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6bm93KCks
IFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViQ29yZTo6Tm9UYXApOwotICAgIF9wcml2YXRlLT5j
b3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCAoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbilvcGVyYXRpb24pOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmV2
ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JU
KSAmJiBQTEFURk9STShNQUMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDVlNGE4OTA1ZWM4NGY1N2I1MWQ5ODljMTcwNTlmZDdjZDBj
YzFkYzguLmU3Y2E0NjFkOTBlOTk1NTJmMmMxMmYyYWUyNjdjMTE2YjBjY2RjN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYsIDIwMDcgR3JhaGFtIERlbm5p
cyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MjI5LDYg
KzQyMjksMjggQEAgLSAodm9pZCl0b3VjaDooV2ViRXZlbnQgKilldmVudAogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpCisKK3N0YXRpYyBOU0RyYWdP
cGVyYXRpb24ga2l0KE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25N
YXNrKQoreworICAgIGlmIChvcGVyYXRpb25NYXNrID09IFdlYkNvcmU6OmFueURyYWdPcGVyYXRp
b24oKSkKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkV2ZXJ5OworCisgICAgTlNEcmFn
T3BlcmF0aW9uIHJlc3VsdCA9IE5TRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgaWYgKG9wZXJhdGlv
bk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpKQorICAgICAgICByZXN1
bHQgfD0gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlu
cyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluaykpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdP
cGVyYXRpb25MaW5rOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25HZW5lcmljKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkdl
bmVyaWM7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJh
dGlvblByaXZhdGUpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZTsK
KyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92
ZSkpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25Nb3ZlOworICAgIGlmIChvcGVy
YXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpKQorICAgICAg
ICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uRGVsZXRlOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCiAtICh2b2lkKWRyYWdJ
bWFnZTooTlNJbWFnZSAqKWRyYWdJbWFnZQogICAgICAgICAgICAgICAgYXQ6KE5TUG9pbnQpYXQK
QEAgLTQyODAsNyArNDMwMiw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CiAK
LSAgICByZXR1cm4gKE5TRHJhZ09wZXJhdGlvbilwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJj
ZURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4ga2l0KHBhZ2UtPmRyYWdDb250cm9sbGVyKCku
c291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7CiB9CiAKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0JFR0lOCkBAIC00Mzg2LDcgKzQ0MDgsNyBAQCAtIChOU0RyYWdPcGVyYXRpb24p
ZHJhZ2dpbmdTZXNzaW9uOihOU0RyYWdnaW5nU2Vzc2lvbiAqKXNlc3Npb24gc291cmNlT3BlcmF0
aW9uTQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7
CiAKLSAgICByZXR1cm4gKE5TRHJhZ09wZXJhdGlvbilwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNv
dXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1cm4ga2l0KHBhZ2UtPmRyYWdDb250cm9sbGVy
KCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7CiB9CiAKIC0gKHZvaWQpZHJhZ2dpbmdTZXNz
aW9uOihOU0RyYWdnaW5nU2Vzc2lvbiAqKXNlc3Npb24gZW5kZWRBdFBvaW50OihOU1BvaW50KXNj
cmVlblBvaW50IG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGM1ZTlmMjVjNjFlOTMzMDFl
MjgzZWEwYTRjMDgzODhmMTk0MTE5NTUuLjA5NzY3N2Q5ZGFiYzg3ODA5YzFjYzBkZDRkNTc4ZTcz
Y2NjN2MxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTU4OSw2ICs1ODksOTIgQEAgc3RhdGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFcKICAgICAgICAgcmVz
dWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CisKKyNpZiAhVVNFKEFQUEtJVCkKKy8vIFNlZSA8VUlLaXQvVUlEcmFnZ2lu
Z19Qcml2YXRlLmg+LgordHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9VSURyYWdPcGVy
YXRpb24pIHsKKyAgICBfVUlEcmFnT3BlcmF0aW9uTm9uZSA9IDAsCisgICAgX1VJRHJhZ09wZXJh
dGlvbkNvcHkgPSAxLAorICAgIF9VSURyYWdPcGVyYXRpb25Nb3ZlID0gMTYsCit9OworI2VuZGlm
CisKK09wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soQ29jb2FEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4gcmVzdWx0OworCisjaWYgVVNFKEFQUEtJVCkKKyAgICBpZiAob3Bl
cmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlv
bkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOwor
ICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1
bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9u
ICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlv
bk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOwor
ICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3Vs
dC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisjZWxzZQorICAgIGlmIChvcGVy
YXRpb24gJiBfVUlEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIF9VSURyYWdPcGVyYXRp
b25Nb3ZlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsK
KyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIFVT
RShBUFBLSVQpCitzdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQoreworICAgIGlmICghZHJhZ09wZXJhdGlvbikK
KyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CisKKyAgICBzd2l0Y2ggKCpkcmFn
T3BlcmF0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weToKKyAgICAg
ICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTGluazoKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkxpbms7CisgICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09w
ZXJhdGlvbkdlbmVyaWM7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZToK
KyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgY2FzZSBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk1vdmU7
CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlOgorICAgICAgICByZXR1cm4g
TlNEcmFnT3BlcmF0aW9uRGVsZXRlOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworfQorI2Vsc2UKK3N0YXRpYyBfVUlE
cmFnT3BlcmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3Bl
cmF0aW9uKQoreworICAgIGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIF9VSURy
YWdPcGVyYXRpb25Ob25lOworCisgICAgc3dpdGNoICgqZHJhZ09wZXJhdGlvbikgeworICAgIGNh
c2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3Bl
cmF0aW9uQ29weTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rOgorICAgICAg
ICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uR2VuZXJpYzoKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOworICAg
IGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6CisgICAgICAgIHJldHVybiBfVUlE
cmFnT3BlcmF0aW9uTm9uZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgor
ICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uRGVsZXRlOgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIF9VSURyYWdP
cGVyYXRpb25Ob25lOworfQorI2VuZGlmIC8vIFVTRShBUFBLSVQpCiAjZW5kaWYgLy8gRU5BQkxF
KERSQUdfU1VQUE9SVCkKIAogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmlu
ZE9wdGlvbnMgb3B0aW9ucykKQEAgLTE5MjMsNyArMjAwOSw3IEBAIC0gKFdlYkRyYWdEZXN0aW5h
dGlvbkFjdGlvbilkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJv
cFNlc3NpCiAKIC0gKFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRhRm9yU2Vzc2lvbjooaWQgPFVJ
RHJvcFNlc3Npb24+KXNlc3Npb24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2Jh
bDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgog
ewotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPihvcGVyYXRpb24pOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3Jl
RHJhZ09wZXJhdGlvbk1hc2sob3BlcmF0aW9uKTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFj
dGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhbc2VsZiBkcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjpzZXNzaW9uXSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lv
biwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudFBvc2l0aW9uKSwgV2ViQ29yZTo6cm91
bmRlZEludFBvaW50KGdsb2JhbFBvc2l0aW9uKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6
OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgfTsKIH0KQEAg
LTE5MzIsMTQgKzIwMTgsMTQgQEAgLSAodWludDY0X3QpX2VudGVyZWREYXRhSW50ZXJhY3Rpb246
KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCkKIHsKICAgICBXZWJU
aHJlYWRMb2NrKCk7CiAgICAgYXV0byBkcmFnRGF0YSA9IFtzZWxmIGRyYWdEYXRhRm9yU2Vzc2lv
bjpzZXNzaW9uIGNsaWVudDpjbGllbnRQb3NpdGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3Bl
cmF0aW9uOm9wZXJhdGlvbl07Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJv
bGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICByZXR1cm4ga2l0KF9wcml2YXRlLT5w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKSk7CiB9CiAKIC0gKHVp
bnQ2NF90KV91cGRhdGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lv
biBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBv
c2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCiB7CiAgICAgV2ViVGhyZWFkTG9j
aygpOwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lv
biBjbGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpv
cGVyYXRpb25dOwotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5k
cmFnVXBkYXRlZChkcmFnRGF0YSk7CisgICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+cGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSkpOwogfQogCiAtICh2b2lkKV9leGl0
ZWREYXRhSW50ZXJhY3Rpb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQ
b2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0
aW9uOih1aW50NjRfdClvcGVyYXRpb24KQEAgLTY3NDgsOCArNjgzNCw4IEBAIC0gKE5TRHJhZ09w
ZXJhdGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZv
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2Nh
dGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2lu
dChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAg
ICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFs
LCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5n
SW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0g
ICAgcmV0dXJuIGNvcmUoc2VsZiktPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0Rh
dGEpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50
LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10s
IFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgcmV0
dXJuIGtpdChjb3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRh
KSk7CiB9CiAKIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1VwZGF0ZWQ6KGlkIDxOU0RyYWdn
aW5nSW5mbz4pZHJhZ2dpbmdJbmZvCkBAIC02NzYxLDggKzY4NDcsOCBAQCAtIChOU0RyYWdPcGVy
YXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwog
ICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRp
b25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQo
W2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAg
V2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwg
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0lu
Zm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAg
IHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAg
ICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFs
LCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBh
Y3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJldHVybiBraXQo
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSkpOwogfQogCiAtICh2
b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAt
Njc3Myw3ICs2ODU5LDcgQEAgLSAodm9pZClkcmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJ
bmZvPilkcmFnZ2luZ0luZm8KIAogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dp
bmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwo
V2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3Nl
bGYgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtk
cmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0
aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEo
ZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9u
RmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAgICAgcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhp
dGVkKGRyYWdEYXRhKTsKIH0KIApAQCAtNjc4Niw3ICs2ODcyLDcgQEAgLSAoQk9PTClwZXJmb3Jt
RHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIHsKICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFn
Z2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKLSAgICBhdXRvKiBk
cmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdn
aW5nSW5mb10pOworICAgIGF1dG8qIGRyYWdEYXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRy
YWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dp
bmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZs
YWdzOmRyYWdnaW5nSW5mb10pOwogCiAgICAgTlNBcnJheSogdHlwZXMgPSBkcmFnZ2luZ0luZm8u
ZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIGlmICghW3R5cGVzIGNvbnRhaW5zT2JqZWN0
OldlYkFyY2hpdmVQYm9hcmRUeXBlXSAmJiBbdHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQ29yZTo6
bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2FyZFR5cGUoKV0pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDdkNzBjMDRhMGNl
MTM0Y2ZlODdkNTZmZDgxMWY0ZGM1ZmJjYjM4ODkuLmQ1OTc2YzQ0ZWU3MWQwZTA0NDZlMmJlNDJm
NTRiMTRhZjMxNDE4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTM2LDYgKzM2LDcgQEAKICNpZmRlZiBfX2NwbHVzcGx1cwogCiAjaW1wb3J0IDxXZWJD
b3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnQWN0aW9u
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaW5kT3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudEVudW1zLmg+CkBA
IC04OSw3ICs5MCwxNyBAQCBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIAog
I2lmZGVmIF9fY3BsdXNwbHVzCiAKLVdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdl
YkZpbmRPcHRpb25zIG9wdGlvbnMpOworI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCisjaWYgVVNF
KEFQUEtJVCkKK3R5cGVkZWYgTlNEcmFnT3BlcmF0aW9uIENvY29hRHJhZ09wZXJhdGlvbjsKKyNl
bHNlCit0eXBlZGVmIHVpbnQ2NF90IENvY29hRHJhZ09wZXJhdGlvbjsKKyNlbmRpZiAvLyBVU0Uo
QVBQS0lUKQorCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVy
YXRpb25NYXNrKENvY29hRHJhZ09wZXJhdGlvbik7CisjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQ
UE9SVCkKKworV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMp
OwogCiBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBjb3JlTGF5b3V0TWlsZXN0
b25lcyhXZWJMYXlvdXRNaWxlc3RvbmVzKTsKIFdlYkxheW91dE1pbGVzdG9uZXMga2l0TGF5b3V0
TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuY3BwCmluZGV4IDMxMzI2MDM2YThhNDEyNTc3ZWMxY2ExOTE3ZGMzZmY4NjIwN2UyNjMuLmIy
NDlmZmQ4Nzk0ODI5NzJlNTY2YzJlMGFkMjdjYzJhNjJjNTQ1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3Bw
CkBAIC00NCwxOCArNDQsMTggQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRp
YyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKERyYWdPcGVy
YXRpb24gb3ApCitzdGF0aWMgRFdPUkQgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFn
Q3Vyc29ycyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKICAgICBE
V09SRCByZXN1bHQgPSBEUk9QRUZGRUNUX05PTkU7Ci0gICAgaWYgKG9wID09IERyYWdPcGVyYXRp
b25FdmVyeSkKKyAgICBpZiAob3BlcmF0aW9uTWFzayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBEUk9QRUZGRUNUX0NPUFkgfCBEUk9QRUZGRUNUX0xJTksgfCBEUk9QRUZG
RUNUX01PVkU7IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlmIChvcGVy
YXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgcmVzdWx0IHw9
IERST1BFRkZFQ1RfQ09QWTsgCi0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAg
aWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICBy
ZXN1bHQgfD0gRFJPUEVGRkVDVF9MSU5LOyAKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92
ZSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAg
ICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX01PVkU7Ci0gICAgaWYgKG9wICYgRHJhZ09wZXJh
dGlvbkdlbmVyaWMpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlv
bkdlbmVyaWMpKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9NT1ZFOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJgog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgRFdPUkQgb2tFZmZlY3QgPSBkcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKG1fd2ViVmlldy0+cGFnZSgpLT5k
cmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKSk7CisgICAgICAgIERXT1JEIG9r
RWZmZWN0ID0gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhtX3dlYlZp
ZXctPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpKTsK
ICAgICAgICAgRFdPUkQgZWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOwogICAgICAgICBDT01QdHI8
SVdlYlVJRGVsZWdhdGU+IHVpOwogICAgICAgICBIUkVTVUxUIGhyID0gRV9OT1RJTVBMOwpAQCAt
MTY0LDE1ICsxNjQsMTUgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0g
aXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJgogICAgICAgICBpZiAoaHIg
PT0gRV9OT1RJTVBMKQogICAgICAgICAgICAgaHIgPSBEb0RyYWdEcm9wKGRhdGFPYmplY3QuZ2V0
KCksIHNvdXJjZS5nZXQoKSwgb2tFZmZlY3QsICZlZmZlY3QpOwogCi0gICAgICAgIERyYWdPcGVy
YXRpb24gb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrOwogICAgICAgICBpZiAoaHIgPT0gRFJBR0RST1Bf
U19EUk9QKSB7CiAgICAgICAgICAgICBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9DT1BZKQotICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uQ29weTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfTElOSykKLSAgICAgICAgICAgICAgICBvcGVyYXRpb24g
PSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25NYXNrID0gRHJh
Z09wZXJhdGlvbkxpbms7CiAgICAgICAgICAgICBlbHNlIGlmIChlZmZlY3QgJiBEUk9QRUZGRUNU
X01PVkUpCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk1vdmU7Cisg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uTWFzayA9IERyYWdPcGVyYXRpb25Nb3ZlOwogICAgICAg
ICB9Ci0gICAgICAgIGZyYW1lLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVy
YXRlTW91c2VFdmVudChtX3dlYlZpZXcsIGZhbHNlKSwgb3BlcmF0aW9uKTsKKyAgICAgICAgZnJh
bWUuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZ2VuZXJhdGVNb3VzZUV2ZW50KG1f
d2ViVmlldywgZmFsc2UpLCBvcGVyYXRpb25NYXNrKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCmluZGV4IDNiZGVlNmJiZDViNDg3ZTQ1Nzg4ZTJjNDc3NTI3NWQ5ZDBh
OTIwNTQuLjUyZmRmYThiNTM4ZjFlNmEzNTU2ODZhYzE4N2ZhMWFhNDhlYjgyYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC01ODQyLDM4ICs1ODQyLDQyIEBAIEhSRVNVTFQg
V2ViVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KF9PdXRfIExQUkVDVCByZWN0KQogICAgIHJldHVy
biBTX09LOwogfQogCi1zdGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcihEcmFn
T3BlcmF0aW9uIG9wKSB7Ci0gICAgRFdPUkQgcmVzID0gRFJPUEVGRkVDVF9OT05FOwotICAgIGlm
IChvcCAmIERyYWdPcGVyYXRpb25Db3B5KSAKLSAgICAgICAgcmVzID0gRFJPUEVGRkVDVF9DT1BZ
OwotICAgIGVsc2UgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkxpbmspIAotICAgICAgICByZXMgPSBE
Uk9QRUZGRUNUX0xJTks7Ci0gICAgZWxzZSBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92ZSkgCi0g
ICAgICAgIHJlcyA9IERST1BFRkZFQ1RfTU9WRTsKLSAgICBlbHNlIGlmIChvcCAmIERyYWdPcGVy
YXRpb25HZW5lcmljKSAKLSAgICAgICAgcmVzID0gRFJPUEVGRkVDVF9NT1ZFOyAvL1RoaXMgYXBw
ZWFycyB0byBiZSB0aGUgRmlyZWZveCBiZWhhdmlvdXIKLSAgICByZXR1cm4gcmVzOworc3RhdGlj
IERXT1JEIGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IoT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
b3BlcmF0aW9uTWFzaykKK3sKKyAgICBpZiAoIW9wZXJhdGlvbk1hc2spCisgICAgICAgIHJldHVy
biBEUk9QRUZGRUNUX05PTkU7CisKKyAgICBEV09SRCByZXN1bHQgPSBEUk9QRUZGRUNUX05PTkU7
CisgICAgaWYgKCpvcGVyYXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJl
c3VsdCA9IERST1BFRkZFQ1RfQ09QWTsKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uTWFzayAmIERy
YWdPcGVyYXRpb25MaW5rKQorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX0xJTks7CisgICAg
ZWxzZSBpZiAoKm9wZXJhdGlvbk1hc2sgJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVz
dWx0ID0gRFJPUEVGRkVDVF9NT1ZFOworICAgIGVsc2UgaWYgKCpvcGVyYXRpb25NYXNrICYgRHJh
Z09wZXJhdGlvbkdlbmVyaWMpCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1RfTU9WRTsgLy8g
VGhpcyBhcHBlYXJzIHRvIGJlIHRoZSBGaXJlZm94IGJlaGF2aW91ci4KKyAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1EcmFnT3BlcmF0aW9uIFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9u
KERXT1JEIGdyZktleVN0YXRlKSBjb25zdAorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IFdlYlZp
ZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25zdAogewog
ICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAg
ICAgIHJldHVybiB7IH07CiAKICAgICAvLyBDb25mb3JtcyB0byBNaWNyb3NvZnQncyBrZXkgY29t
YmluYXRpb25zIGFzIGRvY3VtZW50ZWQgZm9yIAogICAgIC8vIElEcm9wVGFyZ2V0OjpEcmFnT3Zl
ci4gTm90ZSwgZ3JmS2V5U3RhdGUgaXMgdGhlIGN1cnJlbnQgCiAgICAgLy8gc3RhdGUgb2YgdGhl
IGtleWJvYXJkIG1vZGlmaWVyIGtleXMgb24gdGhlIGtleWJvYXJkLiBTZWU6CiAgICAgLy8gPGh0
dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczY4MDEyOShWUy44NSkuYXNw
eD4uCi0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVy
KCkuc291cmNlRHJhZ09wZXJhdGlvbigpOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9IG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpOwogCiAgICAgaWYg
KChncmZLZXlTdGF0ZSAmIChNS19DT05UUk9MIHwgTUtfU0hJRlQpKSA9PSAoTUtfQ09OVFJPTCB8
IE1LX1NISUZUKSkKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAg
ICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdPcGVyYXRpb25MaW5rIH07CiAgICAgZWxzZSBpZiAo
KGdyZktleVN0YXRlICYgTUtfQ09OVFJPTCkgPT0gTUtfQ09OVFJPTCkKLSAgICAgICAgb3BlcmF0
aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdP
cGVyYXRpb25Db3B5IH07CiAgICAgZWxzZSBpZiAoKGdyZktleVN0YXRlICYgTUtfU0hJRlQpID09
IE1LX1NISUZUKQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uR2VuZXJpYzsKKyAg
ICAgICAgb3BlcmF0aW9uTWFzayA9IHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfTsKIAotICAgIHJl
dHVybiBvcGVyYXRpb247CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKIEhSRVNVTFQg
V2ViVmlldzo6RHJhZ0VudGVyKElEYXRhT2JqZWN0KiBwRGF0YU9iamVjdCwgRFdPUkQgZ3JmS2V5
U3RhdGUsIFBPSU5UTCBwdCwgRFdPUkQqIHBkd0VmZmVjdCkKQEAgLTU5MTksOCArNTkyMyw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6RHJhZ0xlYXZlKCkKICAgICAgICAgbV9kcm9wVGFyZ2V0SGVscGVy
LT5EcmFnTGVhdmUoKTsKIAogICAgIGlmIChtX2RyYWdEYXRhKSB7Ci0gICAgICAgIERyYWdEYXRh
IGRhdGEobV9kcmFnRGF0YS5nZXQoKSwgSW50UG9pbnQoKSwgSW50UG9pbnQoKSwgCi0gICAgICAg
ICAgICBEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgIERyYWdEYXRhIGRhdGEobV9kcmFnRGF0
YS5nZXQoKSwgSW50UG9pbnQoKSwgSW50UG9pbnQoKSwgeyB9KTsKICAgICAgICAgbV9wYWdlLT5k
cmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZGF0YSk7CiAgICAgICAgIG1fZHJhZ0RhdGEgPSAw
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCAxODA2Njk4YTlhZDg0YmMy
Zjg4OGI1ZjJlZGMzMDNmOWU1YWE1ZjQ1Li43YjIyMTA0ZDk4ZTU3ZmMzNzc1MzM2ZDE5Mjk5Mzkz
NTU4MjBjNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCkBAIC01NTUsNyArNTU1LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGVyZm9ybUxheWVyZWRXaW5kb3dVcGRhdGUoKTsKIAot
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQg
Z3JmS2V5U3RhdGUpIGNvbnN0OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PiBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3Q7CiAKICAg
ICAvLyBGSVhNRTogVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIGEgd29ya2Fyb3VuZC4gVGhlIGRy
b3AgZWZmZWN0IChwZHdFZmZlY3QpIHBhc3NlZCB0byBEcm9wIGlzIGluY29ycmVjdC4gCiAgICAg
Ly8gV2Ugc2V0IHRoaXMgdmFyaWFibGUgaW4gRHJhZ0VudGVyIGFuZCBEcmFnT3ZlciBzbyB0aGF0
IGl0IGNhbiBiZSB1c2VkIGluIERyb3AgdG8gc2V0IHRoZSBjb3JyZWN0IGRyb3AgZWZmZWN0LiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400999</attachid>
            <date>2020-06-03 22:23:00 -0700</date>
            <delta_ts>2020-06-04 10:15:57 -0700</delta_ts>
            <desc>Patch v12</desc>
            <filename>bug-212605-20200603222305.patch</filename>
            <type>text/plain</type>
            <size>139423</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE1MTdlMTU1ZDI4MjVk
NmVkOGZiZGZjZWMzMjkyNTA0ZTg0MTA5My4uNGY4OTYyMzdkOWJiY2FkMzEyYTlmMDdjY2U0Y2Jl
NWE1NGRiMDU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMC0wNi0wMyAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAgICAgICAgLSBSZXBsYWNlIHVzZSBvZiBEcmFnT3Bl
cmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9yCisgICAgICAgICAgT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAgIC0gUmVuYW1lIGZ1bmN0aW9uIHBhcmFtZXRlcnMg
YW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5vdGUgdXNlCisgICAgICAgICAgb2YgbWFzayB2YWx1
ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdPcGVyYXRpb25Ob25lIGVudW0gdmFsdWUuCisgICAg
ICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9uRXZlcnkgZW51bSB2YWx1ZSB3aXRoIGFueURyYWdP
cGVyYXRpb24oKS4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYWdPcEZyb21JRU9wKToKKyAgICAgICAgKFdlYkNvcmU6OklFT3BGcm9tRHJhZ09w
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0
KTogUmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRp
b25NYXNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRp
b25PcGVyYXRpb24gY29uc3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXI6OnNldFNvdXJjZU9wZXJhdGlvbik6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXI6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKTogUmVuYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2sp
OgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJh
bnNmZXI6OnNvdXJjZU9wZXJhdGlvbiBjb25zdCk6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXI6OmRlc3RpbmF0aW9uT3BlcmF0aW9uIGNvbnN0KTogUmVuYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2sg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRp
b24pOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldFNvdXJjZU9w
ZXJhdGlvbk1hc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5h
dGlvbk9wZXJhdGlvbik6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6
c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKiBwYWdlL0RyYWdBY3Rpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKTogQWRkLgorICAgICAgICAo
V1RGOjpFbnVtVHJhaXRzPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KTogQWRkLgorICAgICAgICAo
V1RGOjpPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOiBBZGQuCisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6ZHJhZ0VudGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdV
cGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRP
clVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAgICAgICAgLSBDaGFu
Z2UgbG9naWMgdG8gY2FsbCBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZygpIHRvIGNvbnZlcnQKKyAg
ICAgICAgICB0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrIHRvIGEgc2luZ2xlIG9wZXJhdGlv
biB3aGVuCisgICAgICAgICAgdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzayBidXQgZG9lc24n
dCBjb250YWluIHdpdGggYW55CisgICAgICAgICAgYml0IHZhbHVlcyBzZXQgaW4gc291cmNlT3Bl
cmF0aW9uTWFzay4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcp
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNv
dXJjZURyYWdPcGVyYXRpb24gY29uc3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
cmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydERyYWdPcGVyYXRpb25Ub0Ryb3Bab25lT3BlcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmREcm9wWm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdD
b250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0
aW9uKToKKyAgICAgICAgKiBwYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAgICAgIC0gQ2xl
YW4gdXAgY29tbWVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1V0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Omdk
a0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJh
dGlvblRvR2RrRHJhZ0FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJhdGlvblRv
U2luZ2xlR2RrRHJhZ0FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdEYXRhV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisKIDIwMjAtMDYt
MDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRXZl
bnRSZWdpb246OnRyYW5zbGF0ZSgpIG5lZWRzIHRvIG9mZnNldCB0aGUgd2hlZWwgZXZlbnQgcmVn
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBiYzZlNWExZDVmMjEyZTk2NWRjODE2ZTkwNGIzYzgwY2ZkMzdiYmJj
Li5hNDJiMmY1MWJhNDM5YmJiZDRiMDUxMTNjZjM1NTllZDk0YWU1YmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwNSBAQAorMjAyMC0wNi0wMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFs
dWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAg
ICAgICAgLSBSZXBsYWNlIHVzZSBvZiBEcmFnT3BlcmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IG9yCisgICAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAg
IC0gUmVuYW1lIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5v
dGUgdXNlCisgICAgICAgICAgb2YgbWFzayB2YWx1ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdP
cGVyYXRpb25Ob25lIGVudW0gdmFsdWUuCisgICAgICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9u
RXZlcnkgZW51bSB2YWx1ZSB3aXRoIGFueURyYWdPcGVyYXRpb24oKS4KKworICAgICAgICAqIFBs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKFVJRHJhZ09wZXJhdGlvbik6Cisg
ICAgICAgIC0gUmVtb3ZlIHVudXNlZCAoYW5kIG1pc25hbWVkKSBVSURyYWdPcGVyYXRpb24gZW51
bSB0eXBlZGVmLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAg
ICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgIChoZWFk
ZXJzX2Zvcl90eXBlKToKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbiBlbnVtLgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJ
bnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojpjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQg
Y29udmVyc2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAtIFVwZGF0ZSB0byBlbmNvZGUvZGVjb2RlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPi4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaDoKKyAgICAgICAgKFdlYktp
dDo6RHJhZ1NvdXJjZTo6YmVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdT
b3VyY2VHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ1NvdXJjZTo6YmVnaW4pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RHJhZ1NvdXJjZTo6YmVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRpZFBlcmZvcm1BY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJv
cFRhcmdldDo6RHJvcFRhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRpZFBl
cmZvcm1BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTdGFy
dERyYWcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZS5oOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcpOgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6ZHJhZ2dpbmdFbnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6a2l0KTogQWRkIGNvbnZlcnNp
b24gZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAg
ICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rp
b24uCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnN0YXJ0RHJhZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKToKKyAgICAgICAgLSBSZW1vdmUgTUVTU0FHRV9DSEVDSyBub3cgdGhhdCB3
ZSdyZSB1c2luZyB0aGUgYWN0dWFsIHR5cGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRW5kZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0Q3VycmVudERyYWdJbmZvcm1h
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmN1cnJlbnREcmFnT3BlcmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAoV2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViUGFnZVByb3h5OjpTdGFydERyYWcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0Ol0pOgorICAg
ICAgICAoZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKGNv
cmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKTogQWRkIGNvbnZlcnNpb24gZnVuY3Rp
b24uCisgICAgICAgIC0gTm90ZSB0aGF0IHRoaXMgd2FzIG5vdCBiZWluZyBjb252ZXJ0ZWQgZnJv
bSBVSURyb3BPcGVyYXRpb24gdG8KKyAgICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIHBy
ZXZpb3VzbHksIGFuZCBVSURyb3BPcGVyYXRpb25Nb3ZlCisgICAgICAgICAgKDB4Mykgd2FzIG5v
dCBiZWluZyBwcm9wZXJseSBjb252ZXJ0ZWQgdG8gRHJhZ09wZXJhdGlvbk1vdmUKKyAgICAgICAg
ICAoMHgxNikuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0RhdGFGb3JEcm9wU2Vzc2lv
bjpkcmFnRGVzdGluYXRpb25BY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rp
ZFBlcmZvcm1EcmFnT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJ
bnRlcmFjdGlvbjp3aWxsQW5pbWF0ZUxpZnRXaXRoQW5pbWF0b3I6c2Vzc2lvbjpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBkcmFnSW50ZXJhY3Rpb246c2Vzc2lvbjpkaWRFbmRXaXRoT3Bl
cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyb3BJbnRlcmFjdGlvbjpzZXNz
aW9uRGlkRW5kOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICAoV2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKFdlYlBh
Z2U6OkRyYWdFbmRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1z
Rm9yRHJhZ1Nlc3Npb24pOgorCiAyMDIwLTA2LTAyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMu
cmVpZEBzb255LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OW3IyNjA4NDRdOiBbR1RLXVtXUEVd
IEluc3BlY3RvciBHUmVzb3VyY2Ugbm8gbG9uZ2VyIHVwZGF0ZWQgYWZ0ZXIgV2ViSW5zcGVjdG9y
VUkgZmlsZSB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNDFkYjY0NzVl
OGVhZGZkMjk0OWRjOTg3NzE2ZDRmNTg2MzM1ZjE1Yy4uODkzNjY0MDA3ZDgzN2FmYTk4ZjE2Y2Q4
ZWQxMzYxMDgxMjY5YzAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ1IEBACisyMDIwLTA2LTAzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBmb3IgbWFzayB2YWx1ZXMKKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjYwNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBicm9hZCBzdHJva2VzOgorICAgICAgICAt
IFJlcGxhY2UgdXNlIG9mIERyYWdPcGVyYXRpb24gd2l0aCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3IKKyAgICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPi4KKyAgICAgICAgLSBSZW5h
bWUgZnVuY3Rpb24gcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRvIGRlbm90ZSB1c2UK
KyAgICAgICAgICBvZiBtYXNrIHZhbHVlcy4KKyAgICAgICAgLSBSZW1vdmUgRHJhZ09wZXJhdGlv
bk5vbmUgZW51bSB2YWx1ZS4KKyAgICAgICAgLSBSZXBsYWNlIERyYWdPcGVyYXRpb25FdmVyeSBl
bnVtIHZhbHVlIHdpdGggYW55RHJhZ09wZXJhdGlvbigpLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYWdTb3VyY2VFbmRlZEF0Om9wZXJh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoa2l0
KTogQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBkcmFnZ2luZ1Nlc3Npb246c291cmNlT3BlcmF0aW9uTWFza0ZvckRyYWdnaW5nQ29udGV4dDpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlRHJhZ09wZXJh
dGlvbk1hc2spOiBBZGQgY29udmVyc2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKGtpdCk6IERpdHRv
LgorICAgICAgICAtIE1hcCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyB0byBfVUlEcmFn
T3BlcmF0aW9uTW92ZQorICAgICAgICAgIGJhc2VkIG9uIGxvZ2ljIGluIFdlYkNvcmUuICBBbGwg
b3RoZXIgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbgorICAgICAgICAgIGVudW0gdmFsdWVzIG1hcCB0
byBfVUlEcmFnT3BlcmF0aW9uTm9uZS4KKyAgICAgICAgKC1bV2ViVmlldyBkcmFnRGF0YUZvclNl
c3Npb246Y2xpZW50Omdsb2JhbDpvcGVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Vu
dGVyZWREYXRhSW50ZXJhY3Rpb246Y2xpZW50Omdsb2JhbDpvcGVyYXRpb246XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX3VwZGF0ZWREYXRhSW50ZXJhY3Rpb246Y2xpZW50Omdsb2JhbDpvcGVyYXRp
b246XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2lu
Z0V4aXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAoQ29jb2FEcmFn
T3BlcmF0aW9uKToKKyAgICAgICAgLSBBZGQgdHlwZWRlZiBzbyBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soKSBtYXkgYmUgc2hhcmVkIGFjcm9zcworICAgICAgICAgIHBsYXRmb3Jtcy4KKyAgICAgICAg
KGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6IEFkZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKGNvcmVP
cHRpb25zKToKKyAgICAgICAgLSBSZW1vdmUgcmVkdW5kYW50IHBhcmFtZXRlciBuYW1lLgorCiAy
MDIwLTA2LTAyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZlcnQgRkVBVFVSRVNfREVGSU5FUyByZWxhdGVkIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCA2OTI3NWVlNzNjMTVlNWZlOTczYmM4MTU5MDczYjhmZDQwYjZlMTU1Li44
ZjkwNDdkZmM1ZDk4MzQ1ZGY3NDY1MDFjOGY2MTIxYTQ0OWNiMmFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDYtMDMgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGZvciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJy
b2FkIHN0cm9rZXM6CisgICAgICAgIC0gUmVwbGFjZSB1c2Ugb2YgRHJhZ09wZXJhdGlvbiB3aXRo
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcgorICAgICAgICAgIE9wdGlvbmFsPERyYWdPcGVy
YXRpb24+LgorICAgICAgICAtIFJlbmFtZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFuZCBsb2NhbCB2
YXJpYWJsZXMgdG8gZGVub3RlIHVzZQorICAgICAgICAgIG9mIG1hc2sgdmFsdWVzLgorICAgICAg
ICAtIFJlbW92ZSBEcmFnT3BlcmF0aW9uTm9uZSBlbnVtIHZhbHVlLgorICAgICAgICAtIFJlcGxh
Y2UgRHJhZ09wZXJhdGlvbkV2ZXJ5IGVudW0gdmFsdWUgd2l0aCBhbnlEcmFnT3BlcmF0aW9uKCku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAg
KGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMpOgorICAgICAgICAoV2Vi
RHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IpOgorICAgICAgICAoV2ViVmlldzo6a2V5U3RhdGVU
b0RyYWdPcGVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViVmlldzo6RHJhZ0xlYXZlKToKKyAg
ICAgICAgKiBXZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJh
dGlvbiBjb25zdCk6CisKIDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rp
b24gdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODQ2M2E0OGU5NzRm
YmUzZjc3ZjY2OWU1MTc4MjQ3OWI5NGNiMTA5Ni4uZDg4ZmMyMGY2Nzc2NjNmMDQzN2M5MDhhN2I4
OGM1ZmI3MmM2YWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDg4LDE4ICs0ODgsMTggQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICBy
ZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JEcm9wKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFk
b25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmRE
cm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNl
dFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0
U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNm
ZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0
ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zl
cj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBE
cmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0
ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9v
bCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5l
dyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92
ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBU
eXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJh
dGlvbihzb3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0
aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2lu
SWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAg
ICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTU5NSw3NCArNTk1LDc0IEBAIHZvaWQgRHJh
Z0ltYWdlTG9hZGVyOjppbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KikK
ICAgICBtX2RhdGFUcmFuc2Zlci0+dXBkYXRlRHJhZ0ltYWdlKCk7CiB9CiAKLXN0YXRpYyBEcmFn
T3BlcmF0aW9uIGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQorc3RhdGlj
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9w
ZXJhdGlvbikKIHsKICAgICBpZiAob3BlcmF0aW9uID09ICJ1bmluaXRpYWxpemVkIikKLSAgICAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVy
YXRpb24oKTsKICAgICBpZiAob3BlcmF0aW9uID09ICJub25lIikKLSAgICAgICAgcmV0dXJuIERy
YWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmIChvcGVyYXRpb24g
PT0gImNvcHkiKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJl
dHVybiB7IERyYWdPcGVyYXRpb25Db3B5IH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGluayIp
Ci0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgcmV0dXJuIHsgRHJh
Z09wZXJhdGlvbkxpbmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJtb3ZlIikKLSAgICAgICAg
cmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRp
b25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVy
YXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAgICAgICBy
ZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxp
bmspOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxp
bmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TW92ZSIpCi0gICAgICAgIHJldHVybiAo
RHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8
IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHks
IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9OwogICAgIGlmIChvcGVy
YXRpb24gPT0gImxpbmtNb3ZlIikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFn
T3BlcmF0aW9uTGluayB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUp
OworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVy
aWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiYWxsIikKLSAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlv
blByaXZhdGU7IC8vIHJlYWxseSBhIG1hcmtlciBmb3IgIm5vIGNvbnZlcnNpb24iCisgICAgICAg
IHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvblBy
aXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikK
K3N0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb24g
JiAoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgYm9vbCBp
c0dlbmVyaWNNb3ZlID0gb3BlcmF0aW9uTWFzay5jb250YWluc0FueSh7IERyYWdPcGVyYXRpb25H
ZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KTsKIAotICAgIGlmICgoaXNHZW5lcmljTW92ZSAm
JiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uTGluaykpIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYg
KChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0
aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfSkpIHx8IG9wZXJhdGlvbk1hc2sgPT0gYW55RHJh
Z09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gImFsbCI7Ci0gICAgaWYgKGlzR2VuZXJpY01v
dmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KSkKKyAgICBpZiAoaXNHZW5lcmlj
TW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAg
ICAgcmV0dXJuICJjb3B5TW92ZSI7Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgKG9wZXJhdGlv
biAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRp
b25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAgcmV0dXJuICJsaW5r
TW92ZSI7Ci0gICAgaWYgKChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkgJiYgKG9wZXJh
dGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlu
c0FsbCh7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9uTGluayB9KSkKICAgICAgICAg
cmV0dXJuICJjb3B5TGluayI7CiAgICAgaWYgKGlzR2VuZXJpY01vdmUpCiAgICAgICAgIHJldHVy
biAibW92ZSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlm
IChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0
dXJuICJjb3B5IjsKLSAgICBpZiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAg
aWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICBy
ZXR1cm4gImxpbmsiOwogICAgIHJldHVybiAibm9uZSI7CiB9CiAKLURyYWdPcGVyYXRpb24gRGF0
YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb24oKSBjb25zdAorT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0CiB7Ci0gICAgRHJh
Z09wZXJhdGlvbiBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVPcChtX2VmZmVjdEFsbG93ZWQpOwot
ICAgIEFTU0VSVChvcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOwotICAgIHJldHVy
biBvcGVyYXRpb247CisgICAgYXV0byBvcGVyYXRpb25NYXNrID0gZHJhZ09wRnJvbUlFT3AobV9l
ZmZlY3RBbGxvd2VkKTsKKyAgICBBU1NFUlQob3BlcmF0aW9uTWFzayAhPSBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKLURyYWdPcGVyYXRpb24g
RGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0CitPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soKSBjb25z
dAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gZHJhZ09wRnJvbUlFT3AobV9kcm9w
RWZmZWN0KTsKLSAgICBBU1NFUlQob3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9w
ZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlv
bkxpbmsgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJp
YyB8IERyYWdPcGVyYXRpb25Nb3ZlKSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5
KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9IGRyYWdP
cEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7CisgICAgQVNTRVJUKG9wZXJhdGlvbk1hc2sgPT0gRHJh
Z09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFz
ayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25NYXNrID09IE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPih7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KSB8
fCBvcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24oKSk7CisgICAgcmV0dXJuIG9wZXJh
dGlvbk1hc2s7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24oRHJh
Z09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFuc2Zlcjo6c2V0U291cmNlT3BlcmF0
aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBB
U1NFUlRfQVJHKG9wZXJhdGlvbiwgb3BlcmF0aW9uICE9IERyYWdPcGVyYXRpb25Qcml2YXRlKTsK
LSAgICBtX2VmZmVjdEFsbG93ZWQgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb24pOworICAgIEFT
U0VSVF9BUkcob3BlcmF0aW9uTWFzaywgb3BlcmF0aW9uTWFzayAhPSBEcmFnT3BlcmF0aW9uUHJp
dmF0ZSk7CisgICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uTWFz
ayk7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbihEcmFn
T3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9w
ZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCiB7Ci0g
ICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uQ29weSB8
fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwgb3BlcmF0aW9uID09IERyYWdPcGVy
YXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8fCBvcGVyYXRp
b24gPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9uKShE
cmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKSk7Ci0gICAgbV9kcm9wRWZm
ZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAgICBBU1NFUlRfQVJHKG9wZXJhdGlv
bk1hc2ssIG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFz
ay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVy
YXRpb25NYXNrID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJh
Z09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uTWFzayA9PSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfSkpOworICAgIG1f
ZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbk1hc2spOwogfQogCiBTdHJpbmcg
RGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
aAppbmRleCBlNWNmYWY4NTZmYjI4ODNmYzE1NGRkYzg4YjBkNzcyM2JjOTg4YjA0Li4zY2NjZjY3
YWM1YWVkM2ZkMTljOTViMGQ0MzFkMTkwNTlkMmMwYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgVG9iaWFzIEFudG9uIChhbnRv
bkBzdHVkLmZiaS5maC1kYXJtc3RhZHQuZGUpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVs
IFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTg4LDE1ICs4OCwxNSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZygpOwogICAgIHN0YXRpYyBS
ZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYp
OwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3Vt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wg
ZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVw
ZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIHN0YXRpYyBS
ZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFn
Z2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRp
bmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKIAogICAg
IGJvb2wgZHJvcEVmZmVjdElzVW5pbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVm
ZmVjdCA9PSAidW5pbml0aWFsaXplZCI7IH0KIAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3Bl
cmF0aW9uKCkgY29uc3Q7Ci0gICAgRHJhZ09wZXJhdGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigp
IGNvbnN0OwotICAgIHZvaWQgc2V0U291cmNlT3BlcmF0aW9uKERyYWdPcGVyYXRpb24pOwotICAg
IHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbik7CisgICAgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdDsKKyAgICBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gZGVzdGluYXRpb25PcGVyYXRpb25NYXNrKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRTb3VyY2VPcGVyYXRpb25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7
CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+KTsKIAogICAgIHZvaWQgc2V0RHJhZ0hhc1N0YXJ0ZWQoKSB7IG1fc2hvdWxkVXBkYXRl
RHJhZ0ltYWdlID0gdHJ1ZTsgfQogICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50
UG9pbnQmIGRyYWdMb2NhdGlvbikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5k
ZXggYTkyM2NhZTU4Y2JmNWY2NWJlY2M3ZTkyM2YyZDM4MDdiMmU4M2ViZC4uYmY4M2Q2M2NlNWRm
MzhlNmQxNDFhMzgwOTJlZTE1NGE1NDYyZTM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMu
aApAQCAtNjAsMTggKzYwLDIxIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgRHJhZ1NvdXJjZUFjdGlv
bkFueSAgICAgICAgICA9IFVJTlRfTUFYCiB9IERyYWdTb3VyY2VBY3Rpb247CiAKLS8vIE1hdGNo
ZXMgTlNEcmFnT3BlcmF0aW9uLgorLy8gU2VlIE5TRHJhZ09wZXJhdGlvbiwgX1VJRHJhZ09wZXJh
dGlvbiBhbmQgVUlEcm9wT3BlcmF0aW9uLgogdHlwZWRlZiBlbnVtIHsKLSAgICBEcmFnT3BlcmF0
aW9uTm9uZSAgICA9IDAsCiAgICAgRHJhZ09wZXJhdGlvbkNvcHkgICAgPSAxLAogICAgIERyYWdP
cGVyYXRpb25MaW5rICAgID0gMiwKICAgICBEcmFnT3BlcmF0aW9uR2VuZXJpYyA9IDQsCiAgICAg
RHJhZ09wZXJhdGlvblByaXZhdGUgPSA4LAogICAgIERyYWdPcGVyYXRpb25Nb3ZlICAgID0gMTYs
CiAgICAgRHJhZ09wZXJhdGlvbkRlbGV0ZSAgPSAzMiwKLSAgICBEcmFnT3BlcmF0aW9uRXZlcnkg
ICA9IFVJTlRfTUFYCiB9IERyYWdPcGVyYXRpb247CiAKK2NvbnN0ZXhwciBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gYW55RHJhZ09wZXJhdGlvbigpCit7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJh
dGlvbkNvcHksIERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09w
ZXJhdGlvblByaXZhdGUsIERyYWdPcGVyYXRpb25Nb3ZlLCBEcmFnT3BlcmF0aW9uRGVsZXRlIH07
Cit9CisKIGVudW0gY2xhc3MgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gOiBib29sIHsgTm8sIFllcyB9
OwogZW51bSBjbGFzcyBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgOiBib29sIHsgTm8sIFll
cyB9OwogZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50OF90IHsgTm9uZSwgRWRp
dFBsYWluVGV4dCwgRWRpdFJpY2hUZXh0LCBVcGxvYWRGaWxlLCBQYWdlTG9hZCwgU2V0Q29sb3Is
IE5vbkRlZmF1bHQgfTsKQEAgLTkzLDYgKzk2LDE4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kPiB7CiAgICAgPjsKIH07CiAKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24s
CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5LAorICAgICAgICBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMs
CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlLAorICAgICAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTW92ZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0
ZQorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29y
ZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gT3B0aW9uU2V0
VmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sCkBAIC0xMDIs
NCArMTE3LDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sCisg
ICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5LAorICAgICAgICBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMsCisg
ICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlLAorICAgICAgICBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTW92ZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZQor
ICAgID47Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggNGVlMmUyZmIzNTg0ZDc4OTU0MTYzYmFiOWIxMWM1ZTc1YmYyZGQ1
MS4uODQyYzYyZTMzMDZmMzY1Nzg5OWRlMTBiYzQxNGQ5OTkxMGExMDRiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIERyYWdD
b250cm9sbGVyOjpkcmFnRW5kZWQoKQogICAgIGNsaWVudCgpLmRyYWdFbmRlZCgpOwogfQogCi1E
cmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0Vu
dGVyZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBkcmFnRW50ZXJl
ZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgbV9maWxl
SW5wdXRFbGVtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlv
bmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgcmV0dXJuIGRyYWdFbnRlcmVkT3JVcGRhdGVkKGRyYWdE
YXRhKTsKIH0KQEAgLTI3OCw3ICsyNzgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3Jt
RHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgbV9kb2N1bWVudFVu
ZGVyTW91c2UgPSBudWxscHRyOwogICAgIGNsZWFyRHJhZ0NhcmV0KCk7CiAKLSAgICBpZiAob3Bl
cmF0aW9uRm9yTG9hZChkcmFnRGF0YSkgPT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKCFv
cGVyYXRpb25Gb3JMb2FkKGRyYWdEYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
YXV0byB1cmxTdHJpbmcgPSBkcmFnRGF0YS5hc1VSTCgpOwpAQCAtMzA0LDIxICszMDQsMjEgQEAg
dm9pZCBEcmFnQ29udHJvbGxlcjo6bW91c2VNb3ZlZEludG9Eb2N1bWVudChEb2N1bWVudCogbmV3
RG9jdW1lbnQpCiAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBuZXdEb2N1bWVudDsKIH0KIAot
RHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xs
ZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9p
bnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSkpOwogCiAgICAgbV9kcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrID0gZHJhZ0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpOwogICAgIGlm
IChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2suaXNFbXB0eSgpKSB7CiAgICAgICAgIGNsZWFy
RHJhZ0NhcmV0KCk7IC8vIEZJWE1FOiBXaHkgbm90IGNhbGwgbW91c2VNb3ZlZEludG9Eb2N1bWVu
dChudWxscHRyKT8KLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KIAotICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb247CiAgICAgbV9kcmFnSGFuZGxpbmdNZXRob2QgPSB0cnlEb2N1bWVudERyYWco
ZHJhZ0RhdGEsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaywgZHJhZ09wZXJhdGlvbik7CiAg
ICAgaWYgKG1fZHJhZ0hhbmRsaW5nTWV0aG9kID09IERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSAm
JiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmNvbnRhaW5zKERyYWdEZXN0aW5hdGlvbkFj
dGlvbjo6TG9hZCkpKSB7CiAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBvcGVyYXRpb25Gb3JMb2Fk
KGRyYWdEYXRhKTsKLSAgICAgICAgaWYgKGRyYWdPcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlvbk5v
bmUpCisgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uKQogICAgICAgICAgICAgbV9kcmFnSGFuZGxp
bmdNZXRob2QgPSBEcmFnSGFuZGxpbmdNZXRob2Q6OlBhZ2VMb2FkOwogICAgIH0gZWxzZSBpZiAo
bV9kcmFnSGFuZGxpbmdNZXRob2QgPT0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpTZXRDb2xvcikKICAg
ICAgICAgZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OwpAQCAtMzg4LDcgKzM4OCw3
IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0Zv
ckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuCiAKICNlbmRpZgogCi1EcmFnSGFuZGxpbmdNZXRo
b2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFz
aywgRHJhZ09wZXJhdGlvbiYgZHJhZ09wZXJhdGlvbikKK0RyYWdIYW5kbGluZ01ldGhvZCBEcmFn
Q29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0
aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiYgZHJhZ09wZXJhdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1l
bnRVbmRlck1vdXNlKQogICAgICAgICByZXR1cm4gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwpA
QCAtNDU4LDcgKzQ1OCw3IEBAIERyYWdIYW5kbGluZ01ldGhvZCBEcmFnQ29udHJvbGxlcjo6dHJ5
RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0CiAgICAgICAgICAgICAg
ICAgbV9udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkID0gMTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKCFtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpCi0gICAgICAgICAgICAgICAg
ZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICAgICAgICAgIGRyYWdP
cGVyYXRpb24gPSBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRV
bmRlck1vdXNlLT5zZXRDYW5SZWNlaXZlRHJvcHBlZEZpbGVzKG1fbnVtYmVyT2ZJdGVtc1RvQmVB
Y2NlcHRlZCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IG92
ZXIgYSBmaWxlIGlucHV0IGVsZW1lbnQuIFRoZSBkcmFnZ2VkIGl0ZW0ocykgd2lsbCBsb2FkZWQg
aW50byB0aGUgdmlldywKQEAgLTQ4OSw3ICs0ODksNyBAQCBEcmFnU291cmNlQWN0aW9uIERyYWdD
b250cm9sbGVyOjpkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHJvb3RW
aQogICAgIHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247CiB9CiAKLURyYWdPcGVyYXRpb24gRHJh
Z0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQor
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQo
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1f
cGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24o
KSk7CiAKQEAgLTUwNCw3ICs1MDQsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpv
cGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICB9CiAKICAgICBp
ZiAoZG9jdW1lbnQgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IChpczxQbHVnaW5Eb2N1bWVudD4o
KmRvY3VtZW50KSAmJiAhcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3MpIHx8IGRvY3VtZW50LT5o
YXNFZGl0YWJsZVN0eWxlKCkpKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7Cisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb24oZHJh
Z0RhdGEpOwogfQogCkBAIC02OTMsMjggKzY5MywyOCBAQCBib29sIERyYWdDb250cm9sbGVyOjpj
YW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKERyYWdP
cGVyYXRpb24gc3JjT3BNYXNrKQorc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRlZmF1
bHRPcGVyYXRpb25Gb3JEcmFnKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrKQogewogICAgIC8vIFRoaXMgaXMgZGVzaWduZWQgdG8gbWF0Y2ggSUUncyBvcGVyYXRp
b24gZmFsbGJhY2sgZm9yIHRoZSBjYXNlIHdoZXJlCiAgICAgLy8gdGhlIHBhZ2UgY2FsbHMgcHJl
dmVudERlZmF1bHQoKSBpbiBhIGRyYWcgZXZlbnQgYnV0IGRvZXNuJ3Qgc2V0IGRyb3BFZmZlY3Qu
Ci0gICAgaWYgKHNyY09wTWFzayA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gRHJh
Z09wZXJhdGlvbkNvcHk7Ci0gICAgaWYgKHNyY09wTWFzayA9PSBEcmFnT3BlcmF0aW9uTm9uZSkK
LSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwotICAgIGlmIChzcmNPcE1hc2sgJiBE
cmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1h
c2suY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbk1vdmU7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdPcGVyYXRpb25HZW5lcmljKQorICAg
IGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25HZW5lcmljKSkK
ICAgICAgICAgcmV0dXJuIERyYWdDb250cm9sbGVyOjpwbGF0Zm9ybUdlbmVyaWNEcmFnT3BlcmF0
aW9uKCk7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlmIChz
b3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAg
cmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFnT3BlcmF0
aW9uTGluaykKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0
aW9uTGluaykpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKICAgICAKICAgICAv
LyBGSVhNRTogRG9lcyBJRSByZWFsbHkgcmV0dXJuICJnZW5lcmljIiBldmVuIGlmIG5vIG9wZXJh
dGlvbnMgd2VyZSBhbGxvd2VkIGJ5IHRoZSBzb3VyY2U/CiAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b25HZW5lcmljOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCitib29sIERyYWdD
b250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50VW5k
ZXJNb3VzZSk7CiAgICAgUmVmPEZyYW1lPiBtYWluRnJhbWUobV9wYWdlLm1haW5GcmFtZSgpKTsK
QEAgLTcyMiwxNyArNzIyLDE5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24mIG9wZXJhCiAgICAgaWYgKCF2
aWV3UHJvdGVjdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBEcmFnT3BlcmF0aW9u
IHNvdXJjZU9wZXJhdGlvbiA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygp
OwotICAgIGF1dG8gdGFyZ2V0UmVzcG9uc2UgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnVw
ZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBbJmRyYWdEYXRhXSgp
IHsgcmV0dXJuIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKTsgfSwg
c291cmNlT3BlcmF0aW9uLCBkcmFnRGF0YS5jb250YWluc0ZpbGVzKCkpOworICAgIGF1dG8gc291
cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygp
OworICAgIGF1dG8gdGFyZ2V0UmVzcG9uc2UgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnVw
ZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBbJmRyYWdEYXRhXSgp
IHsKKyAgICAgICAgcmV0dXJuIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdE
YXRhKTsKKyAgICB9LCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnRGF0YS5jb250YWluc0ZpbGVz
KCkpOwogICAgIGlmICghdGFyZ2V0UmVzcG9uc2UuYWNjZXB0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbikKLSAgICAgICAgb3BlcmF0
aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc291cmNlT3BlcmF0aW9uKTsKLSAgICBlbHNl
IGlmICghKHNvdXJjZU9wZXJhdGlvbiAmIHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbi52YWx1ZSgp
KSkgLy8gVGhlIGVsZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9y
dGVkIGJ5IHRoZSBzb3VyY2UKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7
CisgICAgaWYgKCF0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrKQorICAgICAgICBvcGVyYXRp
b24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBl
bHNlIGlmICghc291cmNlT3BlcmF0aW9uTWFzay5jb250YWluc0FueSh0YXJnZXRSZXNwb25zZS5v
cGVyYXRpb25NYXNrLnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3BlcmF0aW9u
IHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZS4KKyAgICAgICAgb3BlcmF0aW9u
ID0gV1RGOjpudWxsb3B0OwogICAgIGVsc2UKLSAgICAgICAgb3BlcmF0aW9uID0gdGFyZ2V0UmVz
cG9uc2Uub3BlcmF0aW9uLnZhbHVlKCk7CisgICAgICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVy
YXRpb25Gb3JEcmFnKHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2sudmFsdWUoKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk1Niw3ICs5NTgsNyBAQCBPcHRpb25hbDxIaXRUZXN0UmVz
dWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0VGVzdFJlc3VsdEZvckRyYWdTdGFydChGcmFtZSYgc291
cmNlLAogICAgIHJldHVybiB7IGhpdFRlc3RSZXN1bHQgfTsKIH0KIAotYm9vbCBEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdP
cGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25z
dCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGhhc0Rh
dGEpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJh
Z1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1h
c2ssIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYg
ZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGhhc0RhdGEpCiB7CiAgICAg
aWYgKCFzdGF0ZS5zb3VyY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk3Miw3ICs5NzQs
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJh
Z1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIEludFBvaW50IG1vdXNlRHJhZ2dlZFBv
aW50ID0gc3JjLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7
CiAKICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBVUkwoKTsKLSAgICBtX3NvdXJjZURyYWdPcGVy
YXRpb24gPSBzcmNPcDsKKyAgICBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrID0gc291cmNlT3Bl
cmF0aW9uTWFzazsKIAogICAgIERyYWdJbWFnZSBkcmFnSW1hZ2U7CiAgICAgSW50UG9pbnQgZHJh
Z0xvYygwLCAwKTsKQEAgLTk5NSw3ICs5OTcsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgog
ICAgICAgICAvLyBTZWxlY3Rpb24sIGltYWdlLCBhbmQgbGluayBkcmFncyByZWNlaXZlIGEgZGVm
YXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlvbnMgdGhhdAogICAgICAgICAvLyBmb2xs
b3dzIGZyb206CiAgICAgICAgIC8vIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVu
ay9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0/cmV2PTQ4NTI2I0wzNDMwCi0gICAg
ICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KG1f
c291cmNlRHJhZ09wZXJhdGlvbiB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlv
bkNvcHkpOworICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrLmFkZCh7IERyYWdPcGVy
YXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uQ29weSB9KTsKICAgICB9CiAKICAgICBBU1NFUlQo
c3RhdGUuc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCA5MGY4
NzVjMDY3YTVjNmExYTcwMDBkZGE1ZmEzODBhZTg2ZGQ3MTQ5Li5lYTQ5OWUwZWJkNjUxNmU5ODA4
YzQ5ZjFlYzA4NTI0NDlkY2VlOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
CkBAIC01OSw5ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEcmFnT3BlcmF0aW9uIHBs
YXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRpb24oKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdP
cGVyYXRpb24gZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0YSYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0YSYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIERyYWdPcGVyYXRpb24gZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnVXBkYXRl
ZChjb25zdCBEcmFnRGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGVyZm9ybURyYWdP
cGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdD
YW5jZWxsZWQoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gZHJhZyBsb2dp
YyBpcyBpbiBXZWJDb3JlLgogICAgIHZvaWQgc2V0RGlkSW5pdGlhdGVEcmFnKGJvb2wgaW5pdGlh
dGVkKSB7IG1fZGlkSW5pdGlhdGVEcmFnID0gaW5pdGlhdGVkOyB9CiAgICAgYm9vbCBkaWRJbml0
aWF0ZURyYWcoKSBjb25zdCB7IHJldHVybiBtX2RpZEluaXRpYXRlRHJhZzsgfQotICAgIERyYWdP
cGVyYXRpb24gc291cmNlRHJhZ09wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJh
Z09wZXJhdGlvbjsgfQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VEcmFnT3Bl
cmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2s7IH0K
ICAgICBjb25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2RyYWdn
aW5nSW1hZ2VVUkw7IH0KICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29uc3QgSW50UG9pbnQmIG9m
ZnNldCkgeyBtX2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICBjb25zdCBJbnRQb2ludCYgZHJh
Z09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ09mZnNldDsgfQpAQCAtOTUsNyArOTUsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcyk7CiAKICAg
ICB2b2lkIHByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZUZyYW1lLCBEcmFnU291cmNl
QWN0aW9uLCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBEYXRhVHJhbnNmZXImLCBjb25zdCBJbnRQ
b2ludCYgZHJhZ09yaWdpbikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydERyYWcoRnJhbWUmIHNyYywg
Y29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZh
dWx0UGFzdGVib2FyZERhdGEpOworICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0
IERyYWdTdGF0ZSYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZh
dWx0UGFzdGVib2FyZERhdGEpOwogICAgIHN0YXRpYyBjb25zdCBJbnRTaXplJiBtYXhEcmFnSW1h
Z2VTaXplKCk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IE1heE9yaWdpbmFsSW1hZ2VBcmVhOwpA
QCAtMTA4LDExICsxMDgsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGRpc3BhdGNoVGV4dElucHV0
RXZlbnRGb3IoRnJhbWUqLCBjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY2FuUHJvY2Vzc0Ry
YWcoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGNvbmNsdWRlRWRpdERyYWcoY29uc3QgRHJh
Z0RhdGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERy
YWdEYXRhJik7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdE
YXRhJik7Ci0gICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFn
RGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+LCBEcmFnT3BlcmF0aW9uJik7
Ci0gICAgYm9vbCB0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmLCBEcmFnT3BlcmF0aW9uJik7
Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CisgICAg
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0Rh
dGEmKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25Gb3JMb2FkKGNvbnN0
IERyYWdEYXRhJik7CisgICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3VtZW50RHJhZyhjb25z
dCBEcmFnRGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+LCBPcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiYpOworICAgIGJvb2wgdHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiwg
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBk
cmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgdm9pZCBjbGVhckRyYWdDYXJldCgp
OwogICAgIGJvb2wgZHJhZ0lzTW92ZShGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IERyYWdEYXRhJik7
CiAgICAgYm9vbCBpc0NvcHlLZXlEb3duKGNvbnN0IERyYWdEYXRhJik7CkBAIC0xNTYsNyArMTU2
LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBtX2Ry
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7CiAgICAgRHJhZ1NvdXJjZUFjdGlvbiBtX2RyYWdTb3Vy
Y2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9uTm9uZSB9OwogICAgIGJvb2wgbV9kaWRJbml0aWF0
ZURyYWcgeyBmYWxzZSB9OwotICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9u
IHsgRHJhZ09wZXJhdGlvbk5vbmUgfTsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBz
dGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0aGluIFdlYktpdAorICAgIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrOyAvLyBTZXQgaW4gc3RhcnREcmFn
IHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2ViS2l0LgogICAg
IEludFBvaW50IG1fZHJhZ09mZnNldDsKICAgICBVUkwgbV9kcmFnZ2luZ0ltYWdlVVJMOwogICAg
IGJvb2wgbV9pc1BlcmZvcm1pbmdEcm9wIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCBkNTU3N2VlZjExNDg4NjAzMWM4YTc3ZGM4YWU0M2EyNjRjOGVhY2U1
Li5lZWEyZTk5ZDIwYzhkMTI4OWNlYWI5ZTZlMTIxNTc1ODhiM2Q1MWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMzM0LDcgKzIzMzQsNyBAQCBzdGF0aWMgYm9vbCB0
YXJnZXRJc0ZyYW1lKE5vZGUqIHRhcmdldCwgRnJhbWUqJiBmcmFtZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9E
cmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ09wZXJhdGlvbikKK3N0YXRpYyBPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24o
Y29uc3QgU3RyaW5nJiBkcmFnT3BlcmF0aW9uKQogewogICAgIGlmIChkcmFnT3BlcmF0aW9uID09
ICJjb3B5IikKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwpAQCAtMjM0MiwyMSAr
MjM0MiwyNCBAQCBzdGF0aWMgRHJhZ09wZXJhdGlvbiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25U
b0RyYWdPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnTwogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbk1vdmU7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImxpbmsiKQogICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbkxpbms7Ci0gICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwor
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29udmVydERyYWdP
cGVyYXRpb25Ub0Ryb3Bab25lT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQorc3Rh
dGljIFN0cmluZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVPcGVyYXRpb24oT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uKQogewotICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7
Ci0gICAgY2FzZSBEcmFnT3BlcmF0aW9uQ29weToKLSAgICAgICAgcmV0dXJuICJjb3B5Il9zOwot
ICAgIGNhc2UgRHJhZ09wZXJhdGlvbk1vdmU6Ci0gICAgICAgIHJldHVybiAibW92ZSJfczsKLSAg
ICBjYXNlIERyYWdPcGVyYXRpb25MaW5rOgotICAgICAgICByZXR1cm4gImxpbmsiX3M7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJjb3B5Il9zOworICAgIGlmIChvcGVyYXRpb24pIHsK
KyAgICAgICAgc3dpdGNoICgqb3BlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgRHJhZ09wZXJhdGlv
bkNvcHk6CisgICAgICAgICAgICByZXR1cm4gImNvcHkiX3M7CisgICAgICAgIGNhc2UgRHJhZ09w
ZXJhdGlvbk1vdmU6CisgICAgICAgICAgICByZXR1cm4gIm1vdmUiX3M7CisgICAgICAgIGNhc2Ug
RHJhZ09wZXJhdGlvbkxpbms6CisgICAgICAgICAgICByZXR1cm4gImxpbmsiX3M7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KKyAgICByZXR1
cm4gImNvcHkiX3M7CiB9CiAKIHN0YXRpYyBib29sIGhhc0Ryb3Bab25lVHlwZShEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgY29uc3QgU3RyaW5nJiBrZXl3b3JkKQpAQCAtMjM3NiwxNSArMjM3
OSwxNSBAQCBzdGF0aWMgYm9vbCBmaW5kRHJvcFpvbmUoTm9kZSYgdGFyZ2V0LCBEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlcikKICAgICBmb3IgKDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIGtleXdvcmRzKGVs
ZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2Via2l0ZHJvcHpvbmVBdHRy
KSwgdHJ1ZSk7CiAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwotICAgICAgICBEcmFnT3Bl
cmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMCwgc2l6ZSA9IGtleXdvcmRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAg
ICAgRHJhZ09wZXJhdGlvbiBvcCA9IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJh
dGlvbihrZXl3b3Jkc1tpXSk7Ci0gICAgICAgICAgICBpZiAob3AgIT0gRHJhZ09wZXJhdGlvbk5v
bmUpIHsKLSAgICAgICAgICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9u
Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wOworICAgICAgICAg
ICAgYXV0byBvcGVyYXRpb25Gcm9tS2V5d29yZCA9IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRv
RHJhZ09wZXJhdGlvbihrZXl3b3Jkc1tpXSk7CisgICAgICAgICAgICBpZiAob3BlcmF0aW9uRnJv
bUtleXdvcmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAg
ICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBvcGVyYXRpb25Gcm9tS2V5d29yZDsKICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBtYXRjaGVkIHx8IGhhc0Ry
b3Bab25lVHlwZShkYXRhVHJhbnNmZXIsIGtleXdvcmRzW2ldLnN0cmluZygpKTsKLSAgICAgICAg
ICAgIGlmIChtYXRjaGVkICYmIGRyYWdPcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlvbk5vbmUpCisg
ICAgICAgICAgICBpZiAobWF0Y2hlZCAmJiBkcmFnT3BlcmF0aW9uKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChtYXRjaGVkKSB7CkBAIC0yMzk1LDIwICsy
Mzk4LDE5IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQsIERhdGFUcmFu
c2ZlciYgZGF0YVRyYW5zZmVyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRXZlbnRIYW5kbGVy
OjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJh
Z092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9v
bCBkcmFnZ2luZ0ZpbGVzKQorRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRI
YW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykK
IHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRp
bmdEcm9wVGFyZ2V0KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3Vy
Y2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0
YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0LmRvY3VtZW50KCks
IFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMp
OwogICAgIGJvb2wgYWNjZXB0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRUeXBlLCB0YXJnZXQs
IGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAgIGlmICghYWNjZXB0KQogICAgICAgICBh
Y2NlcHQgPSBmaW5kRHJvcFpvbmUodGFyZ2V0LCBkYXRhVHJhbnNmZXIpOwogICAgIGRhdGFUcmFu
c2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIGlmIChhY2NlcHQgJiYgIWRhdGFU
cmFuc2Zlci0+ZHJvcEVmZmVjdElzVW5pbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4geyB0
cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uKCkgfTsKKyAgICAgICAgcmV0
dXJuIHsgdHJ1ZSwgZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soKSB9Owog
ICAgIHJldHVybiB7IGFjY2VwdCwgV1RGOjpudWxsb3B0IH07CiB9CiAKLUV2ZW50SGFuZGxlcjo6
RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1ha2VQYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJj
ZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0
UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPigpPiYgbWFrZVBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZyYW1lPiBw
cm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAgICBpZiAoIW1fZnJhbWUudmlldygpKQpAQCAtMjQz
OCwxOSArMjQ0MCwxOSBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhh
bmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAgICAgICBGcmFtZSog
dGFyZ2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1lKG5ld1RhcmdldC5nZXQoKSwg
dGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAg
ICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0Fu
ZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmls
ZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxl
cigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0
aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAobmV3VGFyZ2V0KSB7
CiAgICAgICAgICAgICAvLyBBcyBwZXIgc2VjdGlvbiA3LjkuNCBvZiB0aGUgSFRNTCA1IHNwZWMu
LCB3ZSBtdXN0IGFsd2F5cyBmaXJlIGEgZHJhZyBldmVudCBiZWZvcmUgZmlyaW5nIGEgZHJhZ2Vu
dGVyLCBkcmFnbGVhdmUsIG9yIGRyYWdvdmVyIGV2ZW50LgogICAgICAgICAgICAgZGlzcGF0Y2hF
dmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwot
ICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChl
dmVudE5hbWVzKCkuZHJhZ2VudGVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVi
b2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgcmVz
cG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChldmVudE5hbWVzKCkuZHJh
Z2VudGVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VP
cGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0
YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogUmVjdXJzaW5nIGFnYWluIGhlcmUgZG9lc24ndCBtYWtlIHNlbnNlIGlm
IHRoZSBuZXdUYXJnZXQgYW5kIG1fZHJhZ1RhcmdldCB3ZXJlIGluIHRoZSBzYW1lIGZyYW1lLgog
ICAgICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0g
dGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtl
UGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAg
ICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5k
RHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5n
RmlsZXMpOwogICAgICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewotICAgICAgICAgICAg
YXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRh
cmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9w
ZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+
ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dp
bmdGaWxlcyk7CiAgICAgICAgICAgICBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJh
Z2xlYXZlRXZlbnQsICptX2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwog
ICAgICAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAg
ICAgIH0KQEAgLTI0NjQsMTIgKzI0NjYsMTIgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVz
cG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU0KICAg
ICAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgICAgICBpZiAodGFyZ2V0SXNGcmFtZShuZXdU
YXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAgaWYgKHRhcmdldEZyYW1l
KQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigp
LnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9u
LCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1l
LT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQs
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9IGVsc2UgaWYg
KG5ld1RhcmdldCkgewogICAgICAgICAgICAgLy8gTm90ZSwgd2hlbiBkZWFsaW5nIHdpdGggc3Vi
LWZyYW1lcywgd2UgbWF5IG5lZWQgdG8gZmlyZSBvbmx5IGEgZHJhZ292ZXIgZXZlbnQgYXMgYSBk
cmFnIGV2ZW50IG1heSBoYXZlIGJlZW4gZmlyZWQgZWFybGllci4KICAgICAgICAgICAgIGlmICgh
bV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQpCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hF
dmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwot
ICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChl
dmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJv
YXJkKCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICByZXNw
b25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMoKS5kcmFn
b3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3Bl
cmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgICAgICBtX3Nob3VsZE9ubHlGaXJl
RHJhZ092ZXJFdmVudCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ3NywyNSArMjQ3
OSwyNSBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVw
ZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAgIHJldHVybiByZXNwb25zZTsKIH0K
IAotdm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQs
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCit2b2lk
IEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxl
cykKIHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCiAgICAgRnJh
bWUqIHRhcmdldEZyYW1lOwogICAgIGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQo
KSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAg
IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChldmVudCwgV1RG
TW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAg
ICAgICAgIHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChldmVu
dCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxl
cyk7CiAgICAgfSBlbHNlIGlmIChtX2RyYWdUYXJnZXQpIHsKICAgICAgICAgZGlzcGF0Y2hFdmVu
dFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwogCi0g
ICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGlu
Z0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQp
LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1Rh
cmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFz
aywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnbGVhdmVFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQo
KSk7CiAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAg
IH0KICAgICBjbGVhckRyYWdTdGF0ZSgpOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGVyZm9y
bURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0
aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitib29sIEV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdB
bmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZyYW1lPiBwcm90
ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKIApAQCAtMjUwMyw5ICsyNTA1LDkgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
LCBzdGQ6OnVuaXEKICAgICBib29sIHByZXZlbnRlZERlZmF1bHQgPSBmYWxzZTsKICAgICBpZiAo
dGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAg
ICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gdGFyZ2V0
RnJhbWUtPmV2ZW50SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwgV1RGTW92ZShw
YXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAg
IHByZXZlbnRlZERlZmF1bHQgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURy
YWdBbmREcm9wKGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNr
LCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewotICAgICAg
ICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChtX2RyYWdU
YXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwg
ZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JEcm9wKG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJv
YXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIHByZXZl
bnRlZERlZmF1bHQgPSBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJvcEV2ZW50LCAq
bV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyKTsKICAgICAgICAgZGF0YVRyYW5zZmVy
LT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgfQpAQCAtMzcyOSwxMyArMzczMSwxMyBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkU3RhcnREcmFnKCkKICNlbmRpZgogfQogCi12b2lkIEV2
ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIE1heUV4dGVuZERyYWdTZXNzaW9uIG1heUV4
dGVuZERyYWdTZXNzaW9uKQordm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBk
cmFnT3BlcmF0aW9uTWFzaywgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gbWF5RXh0ZW5kRHJhZ1Nlc3Np
b24pCiB7CiAgICAgLy8gU2VuZCBhIGhpdCB0ZXN0IHJlcXVlc3Qgc28gdGhhdCBSZW5kZXJMYXll
ciBnZXRzIGEgY2hhbmNlIHRvIHVwZGF0ZSB0aGUgOmhvdmVyIGFuZCA6YWN0aXZlIHBzZXVkb2Ns
YXNzZXMuCiAgICAgcHJlcGFyZU1vdXNlRXZlbnQoT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpS
ZXF1ZXN0VHlwZT4geyBIaXRUZXN0UmVxdWVzdDo6UmVsZWFzZSwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9LCBldmVudCk7CiAKICAgICBpZiAoc2hvdWxk
RGlzcGF0Y2hFdmVudHNUb0RyYWdTb3VyY2VFbGVtZW50KCkpIHsKLSAgICAgICAgZHJhZ1N0YXRl
KCkuZGF0YVRyYW5zZmVyLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbihvcGVyYXRpb24pOworICAg
ICAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uTWFz
ayhkcmFnT3BlcmF0aW9uTWFzayk7CiAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VF
bGVtZW50KGV2ZW50TmFtZXMoKS5kcmFnZW5kRXZlbnQsIGV2ZW50KTsKICAgICB9CiAgICAgaW52
YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwpAQCAtMzg2NSw3ICszODY3LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZl
bnQsIENoZWNrRHIKICAgICAvLyBPbmNlIHdlJ3JlIHBhc3QgdGhlIGh5c3RlcmVzaXMgcG9pbnQs
IHdlIGRvbid0IHdhbnQgdG8gdHJlYXQgdGhpcyBnZXN0dXJlIGFzIGEgY2xpY2sKICAgICBpbnZh
bGlkYXRlQ2xpY2soKTsKICAgICAKLSAgICBEcmFnT3BlcmF0aW9uIHNyY09wID0gRHJhZ09wZXJh
dGlvbk5vbmU7ICAgICAgCisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2s7CiAgICAgCiAgICAgLy8gVGhpcyBkb2VzIHdvcmsgb25seSBpZiB3ZSBtaXNzZWQg
YSBkcmFnRW5kLiBEbyBpdCBhbnl3YXksIGp1c3QgdG8gbWFrZSBzdXJlIHRoZSBvbGQgZGF0YVRy
YW5zZmVyIGdldHMgbnVtYmVkLgogICAgIC8vIEZJWE1FOiBDb25zaWRlciBkb2luZyB0aGlzIGVh
cmxpZXIgaW4gdGhpcyBmdW5jdGlvbiBhcyB0aGUgZWFybGllc3QgcG9pbnQgd2UncmUgc3VyZSBp
dCB3b3VsZCBiZSBzYWZlIHRvIGRyb3AgYW4gb2xkIGRyYWcuCkBAIC0zOTAwLDcgKzM5MDIsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogCiAgICAgICAgIGlmIChtX21vdXNlRG93bk1heVN0
YXJ0RHJhZykgewogICAgICAgICAgICAgLy8gR2F0aGVyIHZhbHVlcyBmcm9tIERIVE1MIGVsZW1l
bnQsIGlmIGl0IHNldCBhbnkuCi0gICAgICAgICAgICBzcmNPcCA9IGRyYWdTdGF0ZSgpLmRhdGFU
cmFuc2Zlci0+c291cmNlT3BlcmF0aW9uKCk7CisgICAgICAgICAgICBzb3VyY2VPcGVyYXRpb25N
YXNrID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb25NYXNrKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFl1Y2ssIGEgZHJhZ2dlZEltYWdlOm1vdmVUbzog
bWVzc2FnZSBjYW4gYmUgZmlyZWQgYXMgYSByZXN1bHQgb2Yga2lja2luZyBvZmYgdGhlCiAgICAg
ICAgICAgICAvLyBkcmFnIHdpdGggZHJhZ0ltYWdlISBCZWNhdXNlIG9mIHRoYXQgZHVtYiByZWVu
dHJhbmN5LCB3ZSBtYXkgdGhpbmsgd2UndmUgbm90CkBAIC0zOTExLDcgKzM5MTMsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmVudCwgQ2hlY2tEcgogICAgIAogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0gICAgICAgIG1fZGlk
U3RhcnREcmFnID0gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLnN0YXJ0RHJhZyhtX2Zy
YW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duQ29udGVu
dHNQb3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKKyAgICAgICAgbV9kaWRT
dGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFnKG1fZnJh
bWUsIGRyYWdTdGF0ZSgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBldmVudC5ldmVudCgpLCBtX21v
dXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAg
ICAgICAgIC8vIEluIFdlYktpdDIgd2UgY291bGQgcmUtZW50ZXIgdGhpcyBjb2RlIGFuZCBzdGFy
dCBhbm90aGVyIGRyYWcuCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMg
d2l0aCB0aGUgb3duZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkIGFuZCB0aGUgcHJvbWlzZWQgdHlw
ZXMuCiAgICAgICAgIGlmIChtX2RpZFN0YXJ0RHJhZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKaW5kZXggNmZmYzgzYzAxMmZmZTA5NTA0NjQxNDA1MTE2MWQ3NTA2YWYxOTJhMS4uMjdj
YWU2MWVkMTE4MzRhY2M1NDUyZGI2Y2I5MjNiMzI5NjY4Y2YyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCkBAIC0xNjMsMTEgKzE2MywxMSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICBzdHJ1Y3QgRHJhZ1RhcmdldFJlc3BvbnNlIHsKICAgICAgICAgYm9v
bCBhY2NlcHQgeyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVy
YXRpb247CisgICAgICAgIE9wdGlvbmFsPE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPj4gb3BlcmF0
aW9uTWFzazsKICAgICB9OwotICAgIERyYWdUYXJnZXRSZXNwb25zZSB1cGRhdGVEcmFnQW5kRHJv
cChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBi
b29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVy
YXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYs
IERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgRHJhZ1RhcmdldFJlc3Bv
bnNlIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiwgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIHZvaWQgY2FuY2VsRHJhZ0Fu
ZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAg
ICBib29sIHBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29s
IGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgdXBkYXRlRHJhZ1N0YXRlQWZ0ZXJFZGl0RHJhZ0lm
TmVlZGVkKEVsZW1lbnQmIHJvb3RFZGl0YWJsZUVsZW1lbnQpOwogICAgIFJlZlB0cjxFbGVtZW50
PiBkcmFnZ2VkRWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCkBAIC0yNjgsNyArMjY4LDcgQEAgcHVi
bGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBEcmFnT3Bl
cmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpObyk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIE1heUV4dGVuZERyYWdTZXNz
aW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKTsKICNlbmRpZgogCiAgICAgdm9pZCBmb2N1
c0RvY3VtZW50VmlldygpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgZGlzcGF0Y2hEcmFnRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYsIERhdGFUcmFuc2ZlciYpOwotICAgIERyYWdUYXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdF
bnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQm
IHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYgLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIERyYWdU
YXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBPcHRpb25TZXQ8RHJhZ09wZXJh
dGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgdm9pZCBpbnZhbGlkYXRlRGF0YVRyYW5z
ZmVyKCk7CiAKICAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9n
dGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDdkMDUyY2ZlMThhZWI1MzhiZTY2MzlhZjAz
MGVjN2RkZWUwZTJlMTMuLmQ3MWFiMWRmZTQ0YWFiNmEyYzk1Y2M2MjVlMmFmODZiNDM0NDc5NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
MCwxMyArNTAsMTMgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgcmV0dXJuIGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBw
bGljYXRpb25Jc0NvcHlLZXlEb3duOwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVy
OjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdP
cGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBpbmNvbXBsZXRlCiAgICAg
aWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9u
Q29weTsKIAotICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCiBjb25zdCBJbnRTaXplJiBEcmFnQ29udHJvbGxlcjo6bWF4RHJhZ0ltYWdl
U2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IDg1YmQ0OGFjYzIyNGQwZTc4NGIzMWMyODQ1YWQwNjg1N2JkODEwMjEuLmM2MDNmYmRkYTQz
N2NkYThhZDM4NDUzYTdkNTU2ZmQ0ZjU0OTRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMTAgKzY0LDEwIEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIHJldHVy
biBkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsKIH0KICAg
ICAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6
OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFn
RGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCkKLSAgICAgICAgcmV0dXJuIERy
YWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgYm9v
bCBtYXlDb250YWluVVJMOwogICAgIGlmIChjYW5Mb2FkRGF0YUZyb21EcmFnZ2luZ1Bhc3RlYm9h
cmQoKSkKQEAgLTc2LDEyICs3NiwxMiBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpk
cmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAgICAgbWF5Q29udGFp
blVSTCA9IGRyYWdEYXRhLmNvbnRhaW5zVVJMVHlwZUlkZW50aWZpZXIoKTsKIAogICAgIGlmICgh
bWF5Q29udGFpblVSTCAmJiAhZHJhZ0RhdGEuY29udGFpbnNQcm9taXNlKCkpCi0gICAgICAgIHJl
dHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAog
ICAgIGlmICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwgKCEoZHJhZ0RhdGEuZmxhZ3MoKSAmIChE
cmFnQXBwbGljYXRpb25IYXNBdHRhY2hlZFNoZWV0IHwgRHJhZ0FwcGxpY2F0aW9uSXNTb3VyY2Up
KSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAotICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiBjb25zdCBJbnRT
aXplJiBEcmFnQ29udHJvbGxlcjo6bWF4RHJhZ0ltYWdlU2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKaW5kZXggMmQ0NmQ2YjIzZWEzNzIyOGEy
NDAyNTdiNzM0Njk3MThmNjBiMDg1ZS4uM2RhNGEzODI2NDQ1YjcxY2NhZWM0YjEyNWY3NDkxYmU1
NTQ0ZDVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xs
ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2lu
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQyLDEzICs0MiwxNSBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29u
Qm90dG9tSW5zZXQgPSAzOwogCiBjb25zdCBmbG9hdCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ltYWdl
QWxwaGEgPSAwLjc1ZjsKIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJh
dGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBE
cmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
Ci0gICAgLy9GSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lCi0gICAgLy9pZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdl
IGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQK
LSAgICAvL0lmIHRoaXMgY2FuIGJlIGRldGVybWluZWQgZnJvbSB3aXRoaW4gV2ViQ29yZSBvcGVy
YXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxsZWQgaW50byAKLSAgICAvL1dlYkNvcmUgaXRzZWxmCi0g
ICAgcmV0dXJuIGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnID8g
RHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAvLyBGSVhNRTogdG8g
bWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIFdURjo6bnVsbG9wdC4K
KyAgICAvLyBJZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2Us
IG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQuCisgICAgLy8gSWYgdGhpcyBjYW4g
YmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJhdGlvbkZvckRyYWcgY2FuIGJl
IHB1bGxlZCBpbnRvCisgICAgLy8gV2ViQ29yZSBpdHNlbGYuCisgICAgaWYgKGRyYWdEYXRhLmNv
bnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQorICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbkNvcHk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogYm9vbCBEcmFnQ29u
dHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5jcHAKaW5kZXggOGY2NzU1ZjU3NjFhMTQ1NGU5YjQwNjAwMmUwODg0M2M2Yjcx
ODg3Yy4uZThjNDBmNTU5MDJkOTNhNWE4NzJhYzBlZTBmZGFjYzNmOWVkMmZjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdE
YXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERy
YWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYg
ZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFj
dGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGll
bnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAg
LCBtX3BsYXRmb3JtRHJhZ0RhdGEoZGF0YSkKQEAgLTQyLDcgKzQyLDcgQEAgRHJhZ0RhdGE6OkRy
YWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG8KIHsgIAogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwg
Y29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9z
aXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9u
RmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9u
QWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlv
bkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlv
bkFjdGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAg
ICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFn
RGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNDIxYTI5OTQzYjNkMTBk
NDg1ZGE1Y2U5ZWZkNTNlM2ZhZmJjMGYwZC4uMzFiOGFiOWVlODA2ZmUwZDFmMmJkZDc5N2I1YTNh
ZWY5NzY3MWY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03NSwxMyArNzUs
MTMgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgRHJhZ2dpbmdQdXJwb3NlIHsgRm9yRWRpdGlu
ZywgRm9yRmlsZVVwbG9hZCwgRm9yQ29sb3JDb250cm9sIH07CiAKICAgICAvLyBjbGllbnRQb3Np
dGlvbiBpcyB0YWtlbiB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYWcgZXZlbnQgd2l0aGlu
IHRoZSB0YXJnZXQgd2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0b3AgbGVmdAotICAgIFdFQkNP
UkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJh
Z0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25B
Y3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0Fw
cGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFn
RGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3Qg
U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4s
IERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERy
YWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CiAgICAg
Ly8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1
c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90
IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVsdDsKICNpZiBQTEFU
Rk9STShXSU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAm
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdE
YXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlv
bk5vbmUpOwogICAgIGNvbnN0IERyYWdEYXRhTWFwJiBkcmFnRGF0YU1hcCgpOwogICAgIHZvaWQg
Z2V0RHJhZ0ZpbGVEZXNjcmlwdG9yRGF0YShpbnQmIHNpemUsIFN0cmluZyYgcGF0aG5hbWUpOwog
ICAgIHZvaWQgZ2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9pZCogZGF0YUJsb2Ip
OwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfQogICAgIERyYWdBcHBs
aWNhdGlvbkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkZsYWdzOyB9
CiAgICAgRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bURyYWdEYXRhOyB9Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQorICAg
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSBj
b25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQogICAgIGJvb2wg
Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcykg
Y29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BsYWluVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2UgPSBEcmFnZ2luZ1B1cnBvc2U6
OkZvckVkaXRpbmcpIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgSW50
UG9pbnQgbV9jbGllbnRQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwog
ICAgIERyYWdEYXRhUmVmIG1fcGxhdGZvcm1EcmFnRGF0YTsKLSAgICBEcmFnT3BlcmF0aW9uIG1f
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKICAgICBEcmFnQXBwbGljYXRpb25GbGFn
cyBtX2FwcGxpY2F0aW9uRmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlTmFtZXM7CiAg
ICAgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gbV9kcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0Rh
dGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2Eu
bW0KaW5kZXggOWNjYWZjMGNkN2E4MzZlNmM5MWUxZjIzM2UxODkwYjMzOGE0ZDM0MC4uM2ExMjg5
ZDRiY2M1NjA5NmFkZWZkMDU4MDA3NDNlZDA5YzY0YzZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgc3Rh
dGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3RlYm9hcmRUeXBlKCkKICNlbmRpZgogfQogCi1EcmFn
RGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291
cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpE
cmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBt
X2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtMTMxLDcg
KzEzMSw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7CiB9CiAKLURyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNl
dDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRh
OjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFn
cyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rp
b25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKaW5kZXgg
MGMwMTNjZjY3ZWU1ODViY2VlZTQ0OTViYjQ2MDExNmFjMDFkYzFkMS4uMDhjMmJlYTdjNmE4ZDUw
NjViZDE3YzBmMTI4MDQ0MDQ1YmI4ZTkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0d0a1V0aWxpdGllcy5jcHAKQEAgLTE0OSw0OSArMTQ5LDQ5IEBAIHVuc2lnbmVkIHN0YXRl
TW9kaWZpZXJGb3JHZGtCdXR0b24odW5zaWduZWQgYnV0dG9uKQogICAgIHJldHVybiAxIDw8ICg4
ICsgYnV0dG9uIC0gMSk7CiB9CiAKLURyYWdPcGVyYXRpb24gZ2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbihHZGtEcmFnQWN0aW9uIGdka0FjdGlvbikKK09wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQog
ewotICAgIC8vIFdlIGhhdmUgbm8gZ29vZCB3YXkgdG8gZGV0ZWN0IERyYWdPcGVyYXRpb25FdmVy
eSBvdGhlciB0aGFuCisgICAgLy8gV2UgaGF2ZSBubyBnb29kIHdheSB0byBkZXRlY3QgYW55RHJh
Z09wZXJhdGlvbigpIG90aGVyIHRoYW4KICAgICAvLyB0byB1c2UgaXQgd2hlbiBhbGwgYXBwbGlj
YWJsZSBmbGFncyBhcmUgb24uCiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fQ09QWQog
ICAgICAgICAmJiBnZGtBY3Rpb24gJiBHREtfQUNUSU9OX01PVkUKICAgICAgICAgJiYgZ2RrQWN0
aW9uICYgR0RLX0FDVElPTl9MSU5LKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5
OworICAgICAgICByZXR1cm4gYW55RHJhZ09wZXJhdGlvbigpOwogCi0gICAgdW5zaWduZWQgYWN0
aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGFj
dGlvbjsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9DT1BZKQotICAgICAgICBhY3Rp
b24gfD0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlv
bkNvcHkpOwogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX01PVkUpCi0gICAgICAgIGFj
dGlvbiB8PSBEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0
aW9uTW92ZSk7CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fTElOSykKLSAgICAgICAg
YWN0aW9uIHw9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVy
YXRpb25MaW5rKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihhY3Rp
b24pOworICAgIHJldHVybiBhY3Rpb247CiB9CiAKLUdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlv
blRvR2RrRHJhZ0FjdGlvbnMoRHJhZ09wZXJhdGlvbiBjb3JlQWN0aW9uKQorR2RrRHJhZ0FjdGlv
biBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
Y29yZUFjdGlvbikKIHsKICAgICB1bnNpZ25lZCBnZGtBY3Rpb24gPSAwOwotICAgIGlmIChjb3Jl
QWN0aW9uID09IERyYWdPcGVyYXRpb25Ob25lKQorICAgIGlmIChjb3JlQWN0aW9uLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlvbik7
CiAKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlmIChjb3Jl
QWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgZ2RrQWN0aW9uIHw9
IEdES19BQ1RJT05fQ09QWTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Nb3Zl
KQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkKICAgICAg
ICAgZ2RrQWN0aW9uIHw9IEdES19BQ1RJT05fTU9WRTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERy
YWdPcGVyYXRpb25MaW5rKQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25MaW5rKSkKICAgICAgICAgZ2RrQWN0aW9uIHw9IEdES19BQ1RJT05fTElOSzsKIAogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihnZGtBY3Rpb24pOwogfQogCi1HZGtEcmFn
QWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oRHJhZ09wZXJhdGlvbiBj
b3JlQWN0aW9uKQorR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0
aW9uKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBjb3JlQWN0aW9uKQogewotICAgIGlmIChjb3Jl
QWN0aW9uID09IERyYWdPcGVyYXRpb25FdmVyeSB8fCBjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlv
bkNvcHkpCisgICAgaWYgKGNvcmVBY3Rpb24gPT0gYW55RHJhZ09wZXJhdGlvbigpIHx8IGNvcmVB
Y3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICByZXR1cm4gR0RLX0FD
VElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAg
aWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICByZXR1
cm4gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkxp
bmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAg
ICAgICByZXR1cm4gR0RLX0FDVElPTl9MSU5LOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtE
cmFnQWN0aW9uPigwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRp
ZXMuaAppbmRleCA1YWFiNGViNzlhMjFlOWE0ZjUyNjYzOTRmZTY2MDZmODQyODY1MDg0Li4xOThi
YzhlMjUwOWM0NTVkMjMyNDRhNzgxMTNhZWZjYTBlOGZlYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCkBAIC01MSw4ICs1MSw4IEBAIFN0cmluZyBkZWZh
dWx0R3RrU3lzdGVtRm9udCgpOwogCiBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBzdGF0ZU1vZGlm
aWVyRm9yR2RrQnV0dG9uKHVuc2lnbmVkIGJ1dHRvbik7CiAKLVdFQkNPUkVfRVhQT1JUIERyYWdP
cGVyYXRpb24gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uKTsKLVdF
QkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMo
RHJhZ09wZXJhdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRp
b25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oRHJhZ09wZXJhdGlvbik7CitXRUJDT1JFX0VYUE9SVCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtE
cmFnQWN0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRv
R2RrRHJhZ0FjdGlvbnMoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKK1dFQkNPUkVfRVhQT1JU
IEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAppbmRleCBlZTBkOGIyNjBjY2NiNGRi
Y2UxMzBlZDMzMWM4OTNjMGRjMGZiMDNiLi4xODg3MGYyMjc1Mjg3Yjk3ZGFhMzllODAzYmM3ZTJi
MzhlNWVmNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0Rh
dGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBCYWlk
dSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MSw3ICs0
MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBE
cmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKKyAgICBPcHRpb25TZXQ8RHJhZ09w
ZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3Mp
CiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQ
b3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAyZDQzYmFlYmY4ZTEy
NmJlOWY5ZWE5YTFmY2JmMzNlN2RiNmY5ZGUwLi5hYmVlMjU1NDdjZDNmNzc0ODBkYTk3Mjc5YzA3
ZTA4MjNkZDIyOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3Mv
VUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEku
aApAQCAtMTAyNSwxMiArMTAyNSw2IEBAIENHRmxvYXQgVUlSb3VuZFRvU2NyZWVuU2NhbGUoQ0dG
bG9hdCB2YWx1ZSwgVUlTY3JlZW4gKik7CiAKIFdURl9FWFRFUk5fQ19FTkQKIAotdHlwZWRlZiBO
U19PUFRJT05TKE5TVUludGVnZXIsIFVJRHJhZ09wZXJhdGlvbikKLXsKLSAgICBVSURyYWdPcGVy
YXRpb25Ob25lID0gMCwKLSAgICBVSURyYWdPcGVyYXRpb25FdmVyeSA9IE5TVUludGVnZXJNYXgs
Ci19OwotCiBAaW50ZXJmYWNlIFVJRHJhZ0ludGVyYWN0aW9uICgpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgYXNzaWduLCBnZXR0ZXI9X2xpZnREZWxheSwgc2V0dGVyPV9zZXRMaWZ0RGVsYXk6KSBO
U1RpbWVJbnRlcnZhbCBsaWZ0RGVsYXk7CiAtICh2b2lkKV9zZXRBbGxvd3NQb2ludGVyRHJhZ0Jl
Zm9yZUxpZnREZWxheTooQk9PTClhbGxvd3NQb2ludGVyRHJhZ0JlZm9yZUxpZnREZWxheTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDNmZGQ4MDQ5ZDQ5NjA4
YmFlZDBhZTA2ZTZlYmQwNzE0YzE3ODY5MmEuLjU5YjM1M2NjMTFiMmRhZDA1OWFkYjMyOTdhZWFk
ODVmNjQ1MTE3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMjA5LDYgKzIwOSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xh
cmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0JywKICAgICAgICAgJ1dl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9y
V29ya2VySWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpEcmFnT3BlcmF0aW9uJywgICMg
RklYTUU6IFJlbW92ZSBhZnRlciBjb252ZXJ0aW5nIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gdG8g
ZW51bSBjbGFzcy4KICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRD
U29ja2V0SWRlbnRpZmllcicsCkBAIC01ODgsNiArNTg5LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5
cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcic6
IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJLaXQ6OkRv
Y3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5o
IiddLAogICAgICAgICAnV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kJzogWyc8V2ViQ29yZS9E
cmFnQWN0aW9ucy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6RHJhZ09wZXJhdGlvbic6IFsnPFdl
YkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHMnOiBbJzxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dl
YkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJzogWyc8V2ViQ29yZS9T
aGFyZURhdGEuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oCmluZGV4IGM4NjhjMjc3M2Y4ZGJkMzI3OGIyMDUw
YTA4ZTZmOGI1N2RiOGJiNGQuLjg5Nzg5ZjM4MmE5ZTY3NGY5MTFlOWM4OTE0Y2JhNzZhOWZlYzkw
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0
aW9uc0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0Ry
YWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtNDAsNCArNDAsMjQgQEAgaW5saW5lIE9wdGlvblNldDxX
ZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrKFcKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgVVNFKEFQUEtJVCkKK2lubGluZSBP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKE5T
RHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IHJlc3VsdDsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uQ29w
eSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAg
aWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdP
cGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkK
KyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAg
aWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdP
cGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkRlbGV0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ0NDM4MTEyOWY5OTc1YjE5MzFiOTQ2NDM5OTZiOGRh
Y2Y2NWY0OWIuLmNlOGYyZjk4ZDEwYmJhYjhmZTUyMTE1YWI0ZDc2ZTQzYThiNWU3NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTUz
MSw3ICsxNTMxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBlbmNvZGVyIDw8
IGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCk7CiAgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5nbG9i
YWxQb3NpdGlvbigpOwotICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFnRGF0YS5kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2soKSk7CisgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2soKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oZHJhZ0RhdGEuZmxh
Z3MoKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5wYXN0
ZWJvYXJkTmFtZSgpOwpAQCAtMTU1MCw4ICsxNTUwLDggQEAgYm9vbCBBcmd1bWVudENvZGVyPERy
YWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERyYWdEYXRhJiBkcmFnRGF0YSkKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGdsb2JhbFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSkK
KyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgYXBwbGlj
YXRpb25GbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJhZ1NvdXJjZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNl
LmgKaW5kZXggMzhhMDY2ZjVjMzBlYTBlNGZmMGQ4MzE1Zjk0NmM1YTcxM2JjMTc2Zi4uYjVmY2Jm
MDlkOTkzZDIzODYxYzZiODkyYjQ3MjAyYjQ3YzdkMjRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IERyYWdTb3VyY2UoR3RrV2lkZ2V0Kik7CiAgICAgfkRyYWdTb3VyY2UoKTsK
IAotICAgIHZvaWQgYmVnaW4oV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmKTsKKyAgICB2b2lkIGJlZ2luKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmKTsKIAogcHJpdmF0ZToKICAgICBHdGtXaWRnZXQq
IG1fd2ViVmlldyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAKaW5kZXggM2VkNGNjYzMyMzY5ZTNjZjNkODAyMmZh
Y2MzYWYyMzhlZWQ4NjM1YS4uZWZkY2VmMjVkM2JiNzRmMGE5YmI3YjNkMTkwOTA3ZDViOTFlNDRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNl
R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNl
R3RrMy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBEcmFnU291cmNlOjp+RHJhZ1NvdXJjZSgpCiAg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fd2ViVmlldywgdGhpcyk7
CiB9CiAKLXZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRh
dGEsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGlt
YWdlKQordm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0
YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAgaWYgKG1fZHJhZykgewogICAgICAgICBndGtfZHJh
Z19jYW5jZWwobV9kcmFnLmdldCgpKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIERyYWdTb3Vy
Y2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBEcmFnT3BlcmF0aW9uIG9w
ZXJhdGlvbiwgUgogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmNhblNtYXJ0UmVwbGFjZSgpKQog
ICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9z
dGF0aWNfc3RyaW5nKCJhcHBsaWNhdGlvbi92bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKSwgMCwg
RHJhZ1RhcmdldFR5cGU6OlNtYXJ0UGFzdGUpOwogCi0gICAgbV9kcmFnID0gZ3RrX2RyYWdfYmVn
aW5fd2l0aF9jb29yZGluYXRlcyhtX3dlYlZpZXcsIGxpc3QuZ2V0KCksIGRyYWdPcGVyYXRpb25U
b0dka0RyYWdBY3Rpb25zKG9wZXJhdGlvbiksIEdES19CVVRUT05fUFJJTUFSWSwgbnVsbHB0ciwg
LTEsIC0xKTsKKyAgICBtX2RyYWcgPSBndGtfZHJhZ19iZWdpbl93aXRoX2Nvb3JkaW5hdGVzKG1f
d2ViVmlldywgbGlzdC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMob3BlcmF0
aW9uTWFzayksIEdES19CVVRUT05fUFJJTUFSWSwgbnVsbHB0ciwgLTEsIC0xKTsKICAgICBpZiAo
aW1hZ2UpIHsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2VTdXJmYWNlKGlt
YWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKSk7CiAgICAgICAgIC8vIFVzZSB0aGUgY2VudGVyIG9m
IHRoZSBkcmFnIGltYWdlIGFzIGhvdHNwb3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCmluZGV4IGQ4YjQzNTY5MzRlZjUyODI0OTk2
MTBlNzc5YWYwMmVlZDY4YmE4YjYuLmM2YWNiNWEyNzYyNDdhMjUwNDdiNmI0MWI0ZjRkMmIxZjFm
ZjU3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1Nv
dXJjZUd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1Nv
dXJjZUd0azQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIERyYWdTb3VyY2U6On5EcmFnU291cmNlKCkK
IHsKIH0KIAotdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9u
RGF0YSwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYg
aW1hZ2UpCit2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25E
YXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaywgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4mJiBpbWFnZSkKIHsKICAgICBpZiAobV9kcmFnKSB7CiAgICAgICAgIGdka19k
cmFnX2Ryb3BfZG9uZShtX2RyYWcuZ2V0KCksIEZBTFNFKTsKQEAgLTg5LDcgKzg5LDcgQEAgdm9p
ZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgRHJhZ09w
ZXJhdGlvbiBvcGVyYXRpb24sIFIKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRf
c3VyZmFjZShndGtfd2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CiAgICAgYXV0byogZGV2
aWNlID0gZ2RrX3NlYXRfZ2V0X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdChn
dGtfd2lkZ2V0X2dldF9kaXNwbGF5KG1fd2ViVmlldykpKTsKICAgICBHUmVmUHRyPEdka0NvbnRl
bnRQcm92aWRlcj4gcHJvdmlkZXIgPSBhZG9wdEdSZWYoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3
X3VuaW9uKHByb3ZpZGVycy5kYXRhKCksIHByb3ZpZGVycy5zaXplKCkpKTsKLSAgICBtX2RyYWcg
PSBhZG9wdEdSZWYoZ2RrX2RyYWdfYmVnaW4oc3VyZmFjZSwgZGV2aWNlLCBwcm92aWRlci5nZXQo
KSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMob3BlcmF0aW9uKSwgMCwgMCkpOworICAg
IG1fZHJhZyA9IGFkb3B0R1JlZihnZGtfZHJhZ19iZWdpbihzdXJmYWNlLCBkZXZpY2UsIHByb3Zp
ZGVyLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhvcGVyYXRpb25NYXNrKSwg
MCwgMCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kcmFnLmdldCgpLCAiZG5kLWZpbmlzaGVk
IiwgR19DQUxMQkFDSygrW10oR2RrRHJhZyogZ3RrRHJhZywgZ3BvaW50ZXIgdXNlckRhdGEpIHsK
ICAgICAgICAgYXV0byYgZHJhZyA9ICpzdGF0aWNfY2FzdDxEcmFnU291cmNlKj4odXNlckRhdGEp
OwogICAgICAgICBpZiAoZHJhZy5tX2RyYWcuZ2V0KCkgIT0gZ3RrRHJhZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKaW5kZXggOGMzYjEwZTEwNTBjMThk
OGUxODE0NDJjOTg0ZDkwMjQ5Y2E4N2FjMC4uYTAwNDUwMGIwZGVmNjljOGQ4NWU2NGIyNWY3MjFi
ZDk4MDFjMTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4gbV9wb3NpdGlvbjsKICAgICB1bnNpZ25lZCBtX2RhdGFSZXF1ZXN0Q291bnQgeyAw
IH07CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4gbV9zZWxlY3Rpb25EYXRh
OwotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9vcGVyYXRpb24geyBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IG1f
b3BlcmF0aW9uOwogI2lmIFVTRShHVEs0KQogICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2Nh
bmNlbGxhYmxlOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggYzEzYjI5YjMxZGM1NThiZTIwZWNkZWEzN2UwZmNj
MzUyOTc0ZDUxMy4uMWM1MTk1ZjI3NjY0ZDdiNjNiOTBjMDY0ZWNhMDMwYWIzMmZjOWE0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAKQEAgLTIxNywxMSArMjE3LDExIEBAIHZvaWQgRHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlv
bigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBwYWdlLT5jdXJy
ZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChvcGVyYXRpb24gPT0gbV9vcGVyYXRpb24pCisg
ICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29wZXJhdGlvbikgfHwgKm9wZXJhdGlvbiA9PSAqbV9v
cGVyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9u
OwotICAgIGdka19kcmFnX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub1Npbmds
ZUdka0RyYWdBY3Rpb24obV9vcGVyYXRpb24pLCBHREtfQ1VSUkVOVF9USU1FKTsKKyAgICBnZGtf
ZHJhZ19zdGF0dXMobV9kcm9wLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0
aW9uKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
KHsgfSkpLCBHREtfQ1VSUkVOVF9USU1FKTsKIH0KIAogdm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZVRp
bWVyRmlyZWQoKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6bGVhdmVUaW1l
ckZpcmVkKCkKICAgICBhdXRvKiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJ
VF9XRUJfVklFV19CQVNFKG1fd2ViVmlldykpOwogICAgIEFTU0VSVChwYWdlKTsKIAotICAgIERy
YWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEudmFsdWUoKSwgKm1fcG9zaXRpb24sIGNv
bnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93ZWJWaWV3LCAqbV9wb3NpdGlvbiksIERy
YWdPcGVyYXRpb25Ob25lKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmbV9zZWxlY3Rpb25EYXRh
LnZhbHVlKCksICptX3Bvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KG1f
d2ViVmlldywgKm1fcG9zaXRpb24pLCB7IH0pOwogICAgIHBhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0Rh
dGEpOwogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCmluZGV4
IDUxY2EzZTdiODIxODJmOGIwNTg2NGE0ZDQ3MTdjZjFiZTU0YWQ4NDUuLjM2MWU0ZmE1YzU1YTY4
YWQwMzFlMjcwMjFhNmQyOTdhN2VkOTU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIERyb3BU
YXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KDApOwogCiAgICAgICAgIGRyb3AuZW50ZXIoeyBj
bGFtcFRvSW50ZWdlcih4KSwgY2xhbXBUb0ludGVnZXIoeSkgfSk7Ci0gICAgICAgIHJldHVybiBk
cmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVyYXRpb24pOworICAg
ICAgICByZXR1cm4gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihkcm9wLm1fb3Bl
cmF0aW9uID8gKmRyb3AubV9vcGVyYXRpb24gOiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyB9
KSk7CiAgICAgfSksIHRoaXMpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdCh0YXJnZXQsICJkcmFn
LW1vdGlvbiIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdk
a0Ryb3AsIGRvdWJsZSB4LCBkb3VibGUgeSwgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdka0RyYWdB
Y3Rpb24gewpAQCAtNzIsNyArNzIsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KEd0a1dpZGdl
dCogd2ViVmlldykKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9u
PigwKTsKIAogICAgICAgICBkcm9wLnVwZGF0ZSh7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRv
SW50ZWdlcih5KSB9KTsKLSAgICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0Ry
YWdBY3Rpb24oZHJvcC5tX29wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBkcmFnT3BlcmF0aW9u
VG9TaW5nbGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVyYXRpb24gPyAqZHJvcC5tX29wZXJhdGlv
biA6IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IH0pKTsKICAgICB9KSwgdGhpcyk7CiAKICAg
ICBnX3NpZ25hbF9jb25uZWN0KHRhcmdldCwgImRyYWctbGVhdmUiLCBHX0NBTExCQUNLKCtbXShH
dGtEcm9wVGFyZ2V0QXN5bmMqLCBHZGtEcm9wKiBnZGtEcm9wLCBncG9pbnRlciB1c2VyRGF0YSkg
ewpAQCAtMjczLDExICsyNzMsMTEgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkaWRQZXJmb3JtQWN0aW9u
KCkKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICBhdXRvIG9wZXJhdGlvbiA9IHBhZ2UtPmN1cnJl
bnREcmFnT3BlcmF0aW9uKCk7Ci0gICAgaWYgKG9wZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKKyAg
ICBpZiAoKCFvcGVyYXRpb24gJiYgIW1fb3BlcmF0aW9uKSB8fCBvcGVyYXRpb24gPT0gbV9vcGVy
YXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9uOwot
ICAgIGdka19kcm9wX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdB
Y3Rpb25zKG1fb3BlcmF0aW9uKSwgZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbiht
X29wZXJhdGlvbikpOworICAgIGdka19kcm9wX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVy
YXRpb25Ub0dka0RyYWdBY3Rpb25zKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9uIDogT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24oeyB9KSksIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rp
b24obV9vcGVyYXRpb24gPyAqbV9vcGVyYXRpb24gOiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4o
eyB9KSkpOwogfQogCiB2b2lkIERyb3BUYXJnZXQ6OmxlYXZlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNjVlNjljMmM1
NmVlNGM1MDMzOWQzNzM0NTM3MTU0NDE2M2NmZjkyZC4uMGFlZTRiYzkzODBjYjQ3Y2E0OTAwZDg1
NTZkNTFlMjRkOGYxNGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTMyMCw5ICszMjAsOSBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogfQogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhT
ZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uLCBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24sIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBkcmFnT3BlcmF0aW9uTWFzaywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1h
Z2UpCiB7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV0VCS0lUX1dFQl9WSUVXX0JB
U0UobV92aWV3V2lkZ2V0KSwgV1RGTW92ZShzZWxlY3Rpb24pLCBkcmFnT3BlcmF0aW9uLCBXVEZN
b3ZlKGRyYWdJbWFnZSkpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdFQktJVF9X
RUJfVklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0aW9uKSwgZHJhZ09wZXJh
dGlvbk1hc2ssIFdURk1vdmUoZHJhZ0ltYWdlKSk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZWQzOWU3NGRkZThkOTZhYjg1
NGMzYmViYTA1NTkzMGFiYjU2YzgyNi4uMjcwMDk5ODI2YjdiZWM1ZTMyYTZjYzA1YzQxZjFmYzE0
ZWM1OThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rp
b25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmll
d1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOwogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYm
IGRyYWdJbWFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbigpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXgg
ZmU0ZTdhYzAzMWMxYjRmOWVhOTM5MDhiMzM2NWZiMTdkMmQyZTA1Ny4uNDRkYjQ0ODkwMzQ2ODVj
OTk5Yjc3M2E3NDI3NzM5YzE2ZmJiNTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTIwNTQsMTMgKzIwNTQs
MTMgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBBcmVhKFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZSwgY29uc3QgSW50UmUKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCi12b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZSwgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24g
ZHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBpbWFnZSkKK3ZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBT
ZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb25NYXNrLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQogewogICAg
IFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAg
IGlmICghcHJpdi0+ZHJhZ1NvdXJjZSkKICAgICAgICAgcHJpdi0+ZHJhZ1NvdXJjZSA9IG1ha2VV
bmlxdWU8RHJhZ1NvdXJjZT4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwogCi0gICAgcHJpdi0+
ZHJhZ1NvdXJjZS0+YmVnaW4oV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbiwg
V1RGTW92ZShpbWFnZSkpOworICAgIHByaXYtPmRyYWdTb3VyY2UtPmJlZ2luKFdURk1vdmUoc2Vs
ZWN0aW9uRGF0YSksIGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGltYWdlKSk7CiAKICNpZiAh
VVNFKEdUSzQpCiAgICAgLy8gQSBkcmFnIHN0YXJ0aW5nIHNob3VsZCBwcmV2ZW50IGEgZG91Ymxl
LWNsaWNrIGZyb20gaGFwcGVuaW5nLiBUaGlzIG1pZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRl
eCAxYzRkZjEyN2VjNDhkNTc1NTY0ZGIwNDNmYjdhZjk1OTBmN2NjNzI0Li5lYjdmODZlMDhlNzM2
YWI3MDdiYTYxOTYwOTllNmUyOTliNjZjZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhX
ZWJLaXRXZWJWaWV3QmFzZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVBhZ2VDbG9zZWQoV2Vi
S2l0V2ViVmlld0Jhc2UqKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8V2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA+JiYpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJW
aWV3QmFzZSosIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+LCBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+JiYpOwogdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZURpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJLaXRXZWJW
aWV3QmFzZSopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KaW5kZXggMmUzOWVhNmNmZTgwMWUwODAxZTQ1YmZhODdjMDkzYzg5ZDI0YTBj
Mi4uNjliNjJkZTI1MmYxZDMwZjkyYjUxODE3Njg2YmYxMDgyZDg0MDQ3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTM5MTMsNyArMzkxMyw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnZWRJbWFnZShOU0ltYWdlICosIENHUG9pbnQgZW5k
UG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyCiAgICAgc2VuZERyYWdFbmRUb1BhZ2UoZW5kUG9p
bnQsIG9wZXJhdGlvbik7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdl
KENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIFdlYlZp
ZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRp
b24gZHJhZ09wZXJhdGlvbk1hc2spCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICBOU1BvaW50IHdpbmRvd0ltYWdlTG9jID0gW1ttX3ZpZXcgd2luZG93XSBj
b252ZXJ0U2NyZWVuVG9CYXNlOk5TUG9pbnRGcm9tQ0dQb2ludChlbmRQb2ludCldOwpAQCAtMzky
Myw3ICszOTIzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UoQ0dQb2lu
dCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKICAgICAvLyBQcmV2ZW50IHF1
ZXVlZCBtb3VzZURyYWdnZWQgZXZlbnRzIGZyb20gY29taW5nIGFmdGVyIHRoZSBkcmFnIGFuZCBm
YWtlIG1vdXNlVXAgZXZlbnQuCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gdHJ1
ZTsKIAotICAgIG1fcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50KHdpbmRvd01vdXNl
TG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xvYmFsUG9pbnQod2luZG93TW91c2VM
b2MsIFttX3ZpZXcgd2luZG93XSkpLCBvcGVyYXRpb24pOworICAgIG1fcGFnZS0+ZHJhZ0VuZGVk
KFdlYkNvcmU6OkludFBvaW50KHdpbmRvd01vdXNlTG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2Vi
Q29yZTo6Z2xvYmFsUG9pbnQod2luZG93TW91c2VMb2MsIFttX3ZpZXcgd2luZG93XSkpLCBjb3Jl
RHJhZ09wZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KIAogc3RhdGljIFdlYkNv
cmU6OkRyYWdBcHBsaWNhdGlvbkZsYWdzIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKE5TVmlldyAq
dmlldywgaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCkBAIC0zOTQ3LDcgKzM5NDcs
NyBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChpZCA8TlNE
cmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQo
W21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZp
ZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBv
aW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAg
ICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZv
OmRyYWdnaW5nSW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRp
b25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRy
YWdPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogCiAg
ICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKQEAgLTM5NTYsMTggKzM5
NTYsNDIgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQg
PE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlv
bkNvcHk7CiB9CiAKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCit7CisgICAgaWYgKCFkcmFnT3BlcmF0aW9u
KQorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHN3aXRjaCAoKmRy
YWdPcGVyYXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5OgorICAg
ICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25MaW5rOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTGluazsKKyAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljOgorICAgICAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uR2VuZXJpYzsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRl
OgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBjYXNlIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTW92
ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGU6CisgICAgICAgIHJldHVy
biBOU0RyYWdPcGVyYXRpb25EZWxldGU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7Cit9CisKIE5TRHJhZ09wZXJhdGlv
biBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dp
bmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQ
b2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwogICAgIGF1dG8gZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFttX3ZpZXcg
X3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7
Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOworICAg
IGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CiAgICAgV2ViQ29yZTo6RHJhZ0RhdGEg
ZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbk1hc2ss
IGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dp
bmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAgICAgbV9wYWdlLT5kcmFnVXBk
YXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKIAog
ICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9wYWdlLT5jdXJyZW50
RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKIAotICAgIGlmIChtX3BhZ2UtPmN1cnJl
bnREcmFnT3BlcmF0aW9uKCkgPT0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYg
KCFtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpCiAgICAgICAgIG51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwogCiAgICAg
TlNEcmFnZ2luZ0Zvcm1hdGlvbiBkcmFnZ2luZ0Zvcm1hdGlvbiA9IE5TRHJhZ2dpbmdGb3JtYXRp
b25Ob25lOwpAQCAtMzk3OSwxNCArNDAwMywxNCBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0lt
cGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAg
ICBpZiAoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nRm9ybWF0aW9uICE9IGRyYWdnaW5nRm9ybWF0aW9u
KQogICAgICAgICBbZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nRm9ybWF0aW9uOmRyYWdnaW5nRm9y
bWF0aW9uXTsKIAotICAgIHJldHVybiBtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7Cisg
ICAgcmV0dXJuIGtpdChtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpOwogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5n
SW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9p
bnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0
YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBk
cmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0lu
Zm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmll
dy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAgICAgbV9wYWdlLT5kcmFnRXhp
dGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogICAg
IG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgZHJhZ2dpbmdJbmZv
Lm51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNG
b3JEcm9wOwpAQCAtNDAwMiw3ICs0MDI2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURy
YWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwg
W21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3
IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVh
c2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9
IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3Jl
RHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJh
Z2dpbmdJbmZvKSk7CiAKICAgICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYWM1
ZDkwZWI1MzlmYjAwNjUyNjU1NThlMmU5NDYxNWE4NzRmYTZjYi4uMmU2NjYyOGFiNWM3MDhmZmYx
MjEwZTU4N2NkNGE4NTI5YjgwZTgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aApAQCAtMjUwLDcgKzI1MCw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgPSAwOwogI2Vsc2UKICAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMGZjOWI4ZTVjZDAzNjQ4ZWYxYjkzZGJiZTRhYzQx
ZjAzNjlkZDY4Ny4uZDQzYzc5MzI3MmU3MDlhNTNiZDUwMTg2ZGY3MGJlZTY5OGNhYTc3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNDI0LDExICsyNDI0
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFn
Q29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRp
b24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wg
bW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQs
IGNvbnN0IEludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IEludFJlY3QmIGVkaXRhYmxlRWxl
bWVudFJlY3QpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24sIFdlYkNv
cmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092
ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IElu
dFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IEludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3Qp
CiB7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGRyYWdPcGVyYXRpb24gPD0gRHJhZ09w
ZXJhdGlvbkRlbGV0ZSk7Ci0KLSAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nh
c3Q8RHJhZ09wZXJhdGlvbj4oZHJhZ09wZXJhdGlvbik7CisgICAgbV9jdXJyZW50RHJhZ09wZXJh
dGlvbiA9IGRyYWdPcGVyYXRpb247CiAgICAgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kID0g
ZHJhZ0hhbmRsaW5nTWV0aG9kOwogICAgIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgPSBt
b3VzZUlzT3ZlckZpbGVJbnB1dDsKICAgICBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVB
Y2NlcHRlZCA9IG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQ7CkBAIC0yNDM4LDIwICsyNDM2LDIw
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWlu
dDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViQ29yCiB9CiAKICNpZiBQTEFURk9STShHVEspCi12b2lk
IFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCB1
aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJh
Z0ltYWdlSGFuZGxlKQordm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdP
cGVyYXRpb25NYXNrLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFu
ZGxlKQogewogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSA9ICFkcmFnSW1h
Z2VIYW5kbGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShkcmFnSW1hZ2VIYW5k
bGUpIDogbnVsbHB0cjsKLSAgICBwYWdlQ2xpZW50KCkuc3RhcnREcmFnKFdURk1vdmUoc2VsZWN0
aW9uRGF0YSksIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRp
b24pLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOworICAgIHBhZ2VDbGllbnQoKS5zdGFydERyYWcoV1RG
TW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdURk1vdmUoZHJhZ0ltYWdl
KSk7CiAKICAgICBkaWRTdGFydERyYWcoKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pCit2b2lkIFdlYlBhZ2VQcm94
eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJh
Z09wZXJhdGlvbk1hc2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBv
c2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ09w
ZXJhdGlvbk1hc2spKTsKICAgICBzZXREcmFnQ2FyZXRSZWN0KHsgfSk7CiB9CiAKQEAgLTI0ODIs
NyArMjQ4MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmREcmFnZ2luZygpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKQogewotICAgIG1fY3Vy
cmVudERyYWdPcGVyYXRpb24gPSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBtX2N1
cnJlbnREcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIG1fY3VycmVudERyYWdIYW5k
bGluZ01ldGhvZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKICAgICBtX2N1cnJlbnREcmFn
SXNPdmVyRmlsZUlucHV0ID0gZmFsc2U7CiAgICAgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNU
b0JlQWNjZXB0ZWQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA3YmE5ZjhiNWVjMDc3MDIzMGIzZDI5ZTViN2FlMGY2NWI3ZTY1YzcyLi43ZjY4NzBjODQ0NWI5
MDVhZjRiMjgwNDBlMWUxYWM5ZWZiYzNjNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTE1Niw4ICsxMTU2LDggQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9y
bURyYWdPcGVyYXRpb24oV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9y
YWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5JiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybURyYWdPcGVyYXRpb24oYm9vbCBoYW5k
bGVkKTsKIAotICAgIHZvaWQgZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90
IGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlz
T3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZWRpdGFibGVFbGVtZW50UmVjdCk7Ci0gICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CisgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFdlYkNvcmU6
OkRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQg
bnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0
aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCk7Cisg
ICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPik7CiAgICAgdm9pZCBkaWRTdGFydERyYWcoKTsKICAgICB2b2lk
IGRyYWdDYW5jZWxsZWQoKTsKICAgICB2b2lkIHNldERyYWdDYXJldFJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHZpc2libGVVUkwsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBhcmNoaXZl
SGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
Ci0gICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50NjRfdCBk
cmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsK
KyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRy
YWdJbWFnZSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gY3VycmVudERyYWdP
cGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY3VycmVudERyYWdPcGVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CiAgICAgV2ViQ29yZTo6RHJh
Z0hhbmRsaW5nTWV0aG9kIGN1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2Q7IH0KICAgICBib29sIGN1cnJlbnREcmFnSXNP
dmVyRmlsZUlucHV0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1
dDsgfQogICAgIHVuc2lnbmVkIGN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkOyB9
CkBAIC0yNjA3LDcgKzI2MDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAgICAgLy8gQ3VycmVudCBkcmFnIGRlc3RpbmF0aW9uIGRldGFpbHMgYXJlIGRlbGl2ZXJlZCBh
cyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2UsCiAgICAgLy8gc28gd2UgcHJlc2VydmUgdGhlbSB0
byBiZSB1c2VkIHdoZW4gdGhlIG5leHQgZHJhZ2dpbmcgZGVsZWdhdGUgY2FsbCBpcyBtYWRlLgot
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9jdXJyZW50RHJhZ09wZXJhdGlvbiB7IFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Ob25lIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsKICAgICBXZWJDb3JlOjpEcmFnSGFuZGxpbmdN
ZXRob2QgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kIHsgV2ViQ29yZTo6RHJhZ0hhbmRsaW5n
TWV0aG9kOjpOb25lIH07CiAgICAgYm9vbCBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0IHsg
ZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2Nl
cHRlZCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAyZDIzZTRiNjYwYjg2ZTY3ODY0NTBlZTM3M2QyNWNhYzE1YjhlYzdl
Li5hZGNhMTVjNGJiYWQ3ZWJiNzdhYjYwYWM1YzZmZWE0MjYxZDZjZjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMTAsNyAr
MzEwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgRHJhZyBhbmQgZHJv
cCBtZXNzYWdlcwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRGlkUGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGVudW06dWludDhfdCBXZWJD
b3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNP
dmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBXZWJDb3Jl
OjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6OkludFJlY3QgZWRpdGFibGVFbGVtZW50
UmVjdCkKKyAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgZW51bTp1aW50OF90IFdlYkNvcmU6OkRy
YWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxl
SW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIFdlYkNvcmU6OkludFJl
Y3QgaW5zZXJ0aW9uUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBlZGl0YWJsZUVsZW1lbnRSZWN0KQog
ICAgIERpZEVuZERyYWdnaW5nKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKQEAgLTMxOCw3ICszMTgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFNldFByb21pc2VkRGF0YUZvckltYWdlKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBpbWFnZUhhbmRsZSwgdWludDY0X3QgaW1h
Z2VTaXplLCBTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBleHRlbnNpb24sIFN0cmluZyB0aXRsZSwg
U3RyaW5nIHVybCwgU3RyaW5nIHZpc2libGVVUkwsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5k
bGUgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNpemUpCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgU3RhcnREcmFnKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uRGF0YSwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCisgICAgU3RhcnREcmFnKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNrLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGRyYWdJbWFnZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCmluZGV4IDQzOWRiOTk3N2VlMmMzMTk0YTZkZTgyNzZkMTMyNWFjOGRiYjgwYmEu
LjY5NmI5MDg4ZDg4NjgxMTM3ZmRhYzNiZGI5OTE4MmNmNDQ0OTI2MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQpAQCAtNzI4NSw3ICs3Mjg1LDcgQEAgLSAodm9pZClfZGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVz
dDooQk9PTClzdGFydGVkCiAgICAgICAgIGlmIChzdGFydGVkKSB7CiAgICAgICAgICAgICAvLyBB
IGNsaWVudCBvZiB0aGUgT2JqZWN0aXZlIEMgU1BJIG9yIFVJS2l0IG1pZ2h0IGhhdmUgcHJldmVu
dGVkIHRoZSBkcmFnIGZyb20gYmVnaW5uaW5nIGVudGlyZWx5IGluIHRoZSBVSSBwcm9jZXNzLCBp
biB3aGljaCBjYXNlCiAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGJhbGFuY2UgdGhlIGBkcmFn
c3RhcnRgIGV2ZW50IHdpdGggYSBgZHJhZ2VuZGAuCi0gICAgICAgICAgICBfcGFnZS0+ZHJhZ0Vu
ZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBfcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9y
RHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCB7IH0pOwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtNzMwMywyNCArNzMwMyw0MiBAQCAtICh2b2lkKWNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2lu
dHNGb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gbwogICAgICAgICAq
b3V0R2xvYmFsUG9pbnQgPSBsb2NhdGlvbkluQ29udGVudFZpZXc7CiB9CiAKLXN0YXRpYyBVSURy
b3BPcGVyYXRpb24gZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQorc3RhdGljIFVJRHJvcE9wZXJhdGlvbiBkcm9wT3Bl
cmF0aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gb3BlcmF0aW9uKQogewotICAgIGlmIChvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTW92ZSkKLSAgICAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbk1vdmU7Ci0KLSAgICBp
ZiAob3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpCi0gICAgICAgIHJldHVy
biBVSURyb3BPcGVyYXRpb25Db3B5OwotCisgICAgaWYgKG9wZXJhdGlvbikgeworICAgICAgICBp
ZiAoKm9wZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICAgICAg
cmV0dXJuIFVJRHJvcE9wZXJhdGlvbk1vdmU7CisgICAgICAgIGlmICgqb3BlcmF0aW9uICYgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgICAgICByZXR1cm4gVUlEcm9wT3BlcmF0
aW9uQ29weTsKKyAgICB9CiAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbkNhbmNlbDsKIH0KIAor
c3RhdGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlv
bkZvclVJRHJvcE9wZXJhdGlvbihVSURyb3BPcGVyYXRpb24gZHJvcE9wZXJhdGlvbikKK3sKKyAg
ICBzd2l0Y2ggKGRyb3BPcGVyYXRpb24pIHsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbkNhbmNl
bDoKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbkZvcmJpZGRl
bjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNh
c2UgVUlEcm9wT3BlcmF0aW9uQ29weToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Db3B5OworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0
YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFnRGVzdGluYXRp
b25BY3Rpb246KFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWRyYWdEZXN0aW5hdGlvbkFjdGlvbgog
ewogICAgIENHUG9pbnQgZ2xvYmFsOwogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNv
bXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVu
dFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAKLSAgICBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4oc2Vzc2lvbi5hbGxvd3NNb3ZlT3BlcmF0aW9uID8gV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25FdmVyeSAmIH5XZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTW92ZSkpOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBXZWJDb3Jl
OjphbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgaWYgKCFzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRp
b24pCisgICAgICAgIGRyYWdPcGVyYXRpb25NYXNrLnJlbW92ZShXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uTW92ZSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBkcmFnT3BlcmF0aW9u
TWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgV2ViS2l0Ojpjb3JlRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRpb25BY3Rpb24pIH07CiB9CiAKQEAgLTc0MjQs
NyArNzQ0Miw4IEBAIC0gKHZvaWQpX2RpZFBlcmZvcm1EcmFnT3BlcmF0aW9uOihCT09MKWhhbmRs
ZWQKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFs
UG9pbnRzRm9yRHJvcFNlc3Npb246ZHJvcFNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBv
dXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Np
b25TdGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Y2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIF9wYWdlLT5jdXJyZW50
RHJhZ09wZXJhdGlvbigpKTsKKyAgICBhdXRvIGN1cnJlbnREcmFnT3BlcmF0aW9uID0gX3BhZ2Ut
PmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCks
IGN1cnJlbnREcmFnT3BlcmF0aW9uID8gKmN1cnJlbnREcmFnT3BlcmF0aW9uIDogT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHsgfSkpOwogfQogCiAtICh2b2lkKV9kaWRDaGFuZ2VE
cmFnQ2FyZXRSZWN0OihDR1JlY3QpcHJldmlvdXNSZWN0IGN1cnJlbnRSZWN0OihDR1JlY3QpcmVj
dApAQCAtODAxMyw3ICs4MDMyLDcgQEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0lu
dGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW0KICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIGVuZGVkIGF0IHN0YXJ0
OiAlcCIsIHNlc3Npb24pOwogICAgICAgICAgICAgLy8gVGhlIGxpZnQgd2FzIGNhbmNlbGVkLCBz
byAtZHJvcEludGVyYWN0aW9uOnNlc3Npb25EaWRFbmQ6IHdpbGwgbmV2ZXIgYmUgaW52b2tlZC4g
VGhpcyBpcyB0aGUgbGFzdCBjaGFuY2UgdG8gY2xlYW4gdXAuCiAgICAgICAgICAgICBbcHJvdGVj
dGVkU2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgICAgICAgICBwYWdl
LT5kcmFnRW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Ob25lKTsKKyAgICAgICAgICAgIHBhZ2UtPmRyYWdFbmRlZChwb3Np
dGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgeyB9KTsKICAgICAgICAgfQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBlbHNlCkBAIC04MDQ4LDcgKzgwNjcsNyBA
QCAtICh2b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlv
biBzZXNzaW9uOihpZCA8VUlEcmFnU2VzcwogICAgICAgICByZXR1cm47CiAKICAgICBbc2VsZiBj
bGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJD
b3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBv
c2l0aW9uRm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIG9wZXJhdGlvbik7
CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6
cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlv
bkZvckRyYWdFbmQoKSksIGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKG9wZXJh
dGlvbikpOwogfQogCiAtIChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkcmFnSW50ZXJhY3Rpb246
KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckNhbmNlbGxpbmdJdGVt
OihVSURyYWdJdGVtICopaXRlbSB3aXRoRGVmYXVsdDooVUlUYXJnZXRlZERyYWdQcmV2aWV3ICop
ZGVmYXVsdFByZXZpZXcKQEAgLTgyNjcsNyArODI4Niw3IEBAIC0gKHZvaWQpZHJvcEludGVyYWN0
aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHNlc3Npb25EaWRFbmQ6KGlkIDxV
SURyCiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2Jh
bFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRH
bG9iYWxQb2ludDomZ2xvYmFsXTsKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25T
dGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xp
ZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Ob25lKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgeyB9KTsKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRleCBlZWQ3Yjk5Njg1NzM2
ZDVkMDE2NjkwMGQxYWM2ZGUwM2EyMTYxMDVlLi43NGY0NmNjYmYxMTNmN2M2YmY5OWEyYTE4MmI4
OGY0MTdjMzMwYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTc1LDcg
Kzc1LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0
YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJikKIAogICAgIG1fcGFnZS0+d2lsbFN0YXJ0
RHJhZygpOwogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0
RHJhZyhkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLnNlbGVjdGlvbkRhdGEoKSwgZGF0YVRyYW5z
ZmVyLnNvdXJjZU9wZXJhdGlvbigpLCBoYW5kbGUpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuc2Vs
ZWN0aW9uRGF0YSgpLCBkYXRhVHJhbnNmZXIuc291cmNlT3BlcmF0aW9uTWFzaygpLCBoYW5kbGUp
KTsKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdlYktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjBiMGVhNzk2MmRlNzM2YmIwYmE1MzlmZTE0
MjE3YmM0YmMwZDkyNy4uZTc3NGEyY2I4MzA3NzZiNWE1NmVmMTA5ZDYzMWJlMzhiYjllODc5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM5
NDQsMjIgKzM5NDQsMjIgQEAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBX
ZWJQYWdlOjpub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmEKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogCiAjaWYgUExBVEZPUk0oR1RLKQotdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWlu
dDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSwgdWludDMyX3QgZmxhZ3MpCit2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgdWludDMyX3QgZmxhZ3MpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwg
ZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKFdURjo6bnVsbG9wdCwgRHJhZ0hhbmRs
aW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIERyYWdEYXRhIGRyYWdEYXRhKCZzZWxlY3Rpb25EYXRhLCBjbGllbnRQb3Np
dGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzayksIHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlvbkZsYWdzPihm
bGFncykpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKCZzZWxlY3Rpb25EYXRhLCBjbGllbnRQb3Np
dGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgc3RhdGlj
X2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CiAgICAgc3dpdGNoIChhY3Rpb24p
IHsKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRlcmVkOiB7Ci0gICAgICAgIERy
YWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxl
cigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0byByZXNvbHZlZERyYWdPcGVy
YXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwog
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnSGFuZGxpbmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm1vdXNlSXNP
dmVyRmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5udW1iZXJPZkl0ZW1zVG9C
ZUFjY2VwdGVkKCksIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6VXBkYXRlZDogewotICAgICAgICBEcmFnT3BlcmF0aW9u
IHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBk
YXRlZChkcmFnRGF0YSk7CisgICAgICAgIGF1dG8gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
cmVzb2x2ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hhbmRs
aW5nTWV0aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1
dCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgp
LCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzk3OCwyNCArMzk3OCwy
NCBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludAogdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpEcmFnRGF0YSYgZHJhZ0RhdGEsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4
dGVuc2lvbnNIYW5kbGVBcnJheSkKIHsKICAgICBpZiAoIW1fcGFnZSkgewotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihE
cmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9
LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5v
bmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
c3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRlcmVk
OiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0byBy
ZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVy
ZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxpbmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5u
dW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigp
LmNhcmV0UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpLCBtX3BhZ2UtPmRyYWdDYXJldENvbnRy
b2xsZXIoKS5lZGl0YWJsZUVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpVcGRh
dGVkOiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0
byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1Vw
ZGF0ZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxpbmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxl
cigpLmNhcmV0UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpLCBtX3BhZ2UtPmRyYWdDYXJldENv
bnRyb2xsZXIoKS5lZGl0YWJsZUVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpF
eGl0ZWQ6CiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdE
YXRhKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIERyYWdIYW5kbGluZ01ldGhvZDo6
Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKFdURjo6bnVsbG9wdCwgRHJh
Z0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpQZXJmb3JtRHJh
Z09wZXJhdGlvbjogewpAQCAtNDAyMiw3ICs0MDIyLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBX
ZWIKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2lu
dCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2
NF90IG9wZXJhdGlvbikKK3ZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIElu
dFBvaW50IGFkanVzdGVkQ2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24ueCgpICsgbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS54KCksIGNsaWVudFBvc2l0aW9uLnkoKSAr
IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueSgpKTsKICAgICBJbnRQb2lu
dCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uLngoKSArIG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueCgpLCBnbG9iYWxQb3NpdGlvbi55KCkgKyBtX3Bh
Z2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLnkoKSk7CkBAIC00MDMzLDcgKzQwMzMs
NyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3Np
dGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYgogICAgICAgICByZXR1cm47CiAgICAgLy8gRklY
TUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJl
IHJlYWwgb25lcyBpbnN0ZWFkLgogICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChhZGp1c3Rl
ZENsaWVudFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2Fs
bFRpbWU6Om5vdygpLCAwLCBXZWJDb3JlOjpOb1RhcCk7Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgKERyYWdPcGVyYXRpb24p
b3BlcmF0aW9uKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdT
b3VyY2VFbmRlZEF0KGV2ZW50LCBkcmFnT3BlcmF0aW9uTWFzayk7CiAKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZEVuZERyYWdnaW5nKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzJjNDhkMWM5MzY4MjBiZTljMDM5NjMy
MjcxZGJmYzMwNzhjODFiOC4uNjc5Y2ZkMWI1MzJmYWJhZjQ2MmVkZTY3ZmQ3MjRiYmFiNjUzYThj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODk5
LDcgKzg5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRF
ZGl0YWJsZUVsZW1lbnQoKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JN
KEdUSykKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxl
ckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50MzJfdCBmbGFncyk7
CisgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRh
JiYsIHVpbnQzMl90IGZsYWdzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkg
JiYgIVBMQVRGT1JNKEdUSykKQEAgLTkwNyw3ICs5MDcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBkcmFnRW5kZWQoV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1
aW50NjRfdCBvcGVyYXRpb24pOworICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1Mb2Fk
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7CiAgICAgdm9pZCBtYXlQZXJmb3JtVXBsb2FkRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA1MzhlNjU3MmU1MGY4ZTQzMDA2OGU2OTg3
NTg5ZmEwZGNmNWNmZDJmLi5hZTkyNzQ3NjM4ODUzYjMyZTIzYjRlZTEzNjNhMTMzYmNiZjYwNTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTMwOSwxNCArMzA5LDE0IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAKICAgICAjIERyYWcgYW5kIGRyb3AuCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJB
R19TVVBQT1JUKQotICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNs
aWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qg
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVj
dGlvbiwgdWludDMyX3QgZmxhZ3MpCisgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVu
dW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6
SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9u
LCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3QgZmxhZ3Mp
CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAg
IFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29u
dHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2Fk
KQogI2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBEaWRTdGFydERyYWcoKQot
ICAgIERyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6
SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKKyAgICBEcmFnRW5k
ZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJh
dGlvbk1hc2spCiAgICAgRHJhZ0NhbmNlbGxlZCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwZTY1NjQ5
NmM4NDAwYWFjOTMyMTVlYTY3OGFiMTA5MGM0ZDJlNDAzLi44Yjg3ZGIzOGMyMjQ0MjZmYTdiZTQ5
OWJiYWMyMTkwMDFiOWE1NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgV2ViUGFn
ZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBj
bGllbnRQb3NpdGlvCiAgICAgLy8gaXMgb3BhcXVlIHRvIHRoZSB3ZWIgcHJvY2Vzcywgd2hpY2gg
b25seSBzZWVzIHRoYXQgdGhlIGN1cnJlbnQgZHJhZyBoYXMgZW5kZWQsIGFuZCB0aGF0IGEgbmV3
IG9uZSBpcyBiZWdpbm5pbmcuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGNsaWVudFBv
c2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgMCwg
Tm9UYXApOwogICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW5kZWQoKTsKLSAgICBt
X3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50
LCBEcmFnT3BlcmF0aW9uTm9uZSwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Olllcyk7CisgICAgbV9w
YWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwg
eyB9LCBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6WWVzKTsKIAogICAgIGJvb2wgZGlkSGFuZGxlRHJh
ZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkudHJ5VG9CZWdpbkRyYWdBdFBv
aW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbik7CiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChkaWRIYW5k
bGVEcmFnKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpp
bmRleCBkNGRlYTdjMzljOGNhZjRjMzdiNGFhODVmZDU3OTFmZWFjZTQ5ODg4Li5iOWVlY2RjOGRj
OTE5NWIzMzk5MThkNWQ1ZGEwMTUyNGQ3N2U3OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk0Miw3ICs5NDIsNyBAQCAtICh2b2lkKV9zZXRU
eXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlIHdpdGhVbmRvQWN0aW9u
OihXZWJDb3JlOgogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFD
KQotLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlv
bjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbgorLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6
KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKWRyYWdPcGVyYXRp
b25NYXNrCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKQogICAgICAgICByZXR1cm47
CkBAIC05NTIsNyArOTUyLDcgQEAgLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQp
d2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGkKICAgICAvLyBGSVhN
RTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUg
cmVhbCBvbmVzIGluc3RlYWQuCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50
KFdlYkNvcmU6OkludFBvaW50KHdpbmRvd0xvYyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6
Omdsb2JhbFBvaW50KHdpbmRvd0xvYywgW3ZpZXctPnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSkp
LAogICAgICAgICBXZWJDb3JlOjpMZWZ0QnV0dG9uLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygp
LCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIFdlYkNvcmU6Ok5vVGFwKTsKLSAgICBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgKFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5l
dmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgY29yZURyYWdPcGVyYXRpb25N
YXNrKGRyYWdPcGVyYXRpb25NYXNrKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9S
VCkgJiYgUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQppbmRleCA1ZTRhODkwNWVjODRmNTdiNTFkOTg5YzE3MDU5ZmQ3Y2Qw
Y2MxZGM4Li5lN2NhNDYxZDkwZTk5NTUyZjJjMTJmMmFlMjY3YzExNmIwY2NkYzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2LCAyMDA3IEdyYWhhbSBEZW5u
aXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDIyOSw2
ICs0MjI5LDI4IEBAIC0gKHZvaWQpdG91Y2g6KFdlYkV2ZW50ICopZXZlbnQKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKQorCitzdGF0aWMgTlNEcmFn
T3BlcmF0aW9uIGtpdChPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9u
TWFzaykKK3sKKyAgICBpZiAob3BlcmF0aW9uTWFzayA9PSBXZWJDb3JlOjphbnlEcmFnT3BlcmF0
aW9uKCkpCisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25FdmVyeTsKKworICAgIE5TRHJh
Z09wZXJhdGlvbiByZXN1bHQgPSBOU0RyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVyYXRp
b25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KSkKKyAgICAgICAgcmVz
dWx0IHw9IE5TRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFp
bnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFn
T3BlcmF0aW9uTGluazsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uR2VuZXJpYykpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25H
ZW5lcmljOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Qcml2YXRlKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvblByaXZhdGU7
CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1v
dmUpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBpZiAob3Bl
cmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKSkKKyAgICAg
ICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogLSAodm9pZClkcmFn
SW1hZ2U6KE5TSW1hZ2UgKilkcmFnSW1hZ2UKICAgICAgICAgICAgICAgIGF0OihOU1BvaW50KWF0
CkBAIC00MjgwLDcgKzQzMDIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwog
Ci0gICAgcmV0dXJuIChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3Vy
Y2VEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigp
LnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19CRUdJTgpAQCAtNDM4Niw3ICs0NDA4LDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9u
KWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilzZXNzaW9uIHNvdXJjZU9wZXJh
dGlvbk0KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25l
OwogCi0gICAgcmV0dXJuIChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5z
b3VyY2VEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxl
cigpLnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkpOwogfQogCiAtICh2b2lkKWRyYWdnaW5nU2Vz
c2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilzZXNzaW9uIGVuZGVkQXRQb2ludDooTlNQb2ludClz
Y3JlZW5Qb2ludCBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBjNWU5ZjI1YzYxZTkzMzAx
ZTI4M2VhMGE0YzA4Mzg4ZjE5NDExOTU1Li4wOTc2NzdkOWRhYmM4NzgwOWMxY2MwZGQ0ZDU3OGU3
M2NjYzdjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC01ODksNiArNTg5LDkyIEBAIHN0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXCiAgICAgICAgIHJl
c3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQorCisjaWYgIVVTRShBUFBLSVQpCisvLyBTZWUgPFVJS2l0L1VJRHJhZ2dp
bmdfUHJpdmF0ZS5oPi4KK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfVUlEcmFnT3Bl
cmF0aW9uKSB7CisgICAgX1VJRHJhZ09wZXJhdGlvbk5vbmUgPSAwLAorICAgIF9VSURyYWdPcGVy
YXRpb25Db3B5ID0gMSwKKyAgICBfVUlEcmFnT3BlcmF0aW9uTW92ZSA9IDE2LAorfTsKKyNlbmRp
ZgorCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25N
YXNrKENvY29hRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKworI2lmIFVTRShBUFBLSVQpCisgICAgaWYgKG9w
ZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRp
b25MaW5rKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsK
KyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVz
dWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlv
biAmIE5TRHJhZ09wZXJhdGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRp
b25Nb3ZlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsK
KyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1
bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworI2Vsc2UKKyAgICBpZiAob3Bl
cmF0aW9uICYgX1VJRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3BlcmF0
aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7
CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBV
U0UoQVBQS0lUKQorc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRpb24p
CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dpdGNoICgqZHJh
Z09wZXJhdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk6CisgICAg
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkxpbms6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGNh
c2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBOU0RyYWdP
cGVyYXRpb25HZW5lcmljOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6
CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Nb3Zl
OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJu
IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKK30KKyNlbHNlCitzdGF0aWMgX1VJ
RHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09w
ZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAgIHJldHVybiBfVUlE
cmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHN3aXRjaCAoKmRyYWdPcGVyYXRpb24pIHsKKyAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gX1VJRHJhZ09w
ZXJhdGlvbkNvcHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAg
ICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTW92ZTsKKyAg
ICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOgorICAgICAgICByZXR1cm4gX1VJ
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToK
KyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25l
OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBfVUlEcmFn
T3BlcmF0aW9uTm9uZTsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQogI2VuZGlmIC8vIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZp
bmRPcHRpb25zIG9wdGlvbnMpCkBAIC0xOTIzLDcgKzIwMDksNyBAQCAtIChXZWJEcmFnRGVzdGlu
YXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURy
b3BTZXNzaQogCiAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxV
SURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9i
YWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24K
IHsKLSAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4ob3BlcmF0aW9uKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29y
ZURyYWdPcGVyYXRpb25NYXNrKG9wZXJhdGlvbik7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOwogICAgIHJldHVybiB7IHNlc3Np
b24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJv
dW5kZWRJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3Jl
OjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrIH07CiB9CkBA
IC0xOTMyLDE0ICsyMDE4LDE0IEBAIC0gKHVpbnQ2NF90KV9lbnRlcmVkRGF0YUludGVyYWN0aW9u
OihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpCiB7CiAgICAgV2Vi
VGhyZWFkTG9jaygpOwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Np
b246c2Vzc2lvbiBjbGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9w
ZXJhdGlvbjpvcGVyYXRpb25dOwotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSkpOwogfQogCiAtICh1
aW50NjRfdClfdXBkYXRlZERhdGFJbnRlcmFjdGlvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Np
b24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQ
b3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgogewogICAgIFdlYlRocmVhZExv
Y2soKTsKICAgICBhdXRvIGRyYWdEYXRhID0gW3NlbGYgZHJhZ0RhdGFGb3JTZXNzaW9uOnNlc3Np
b24gY2xpZW50OmNsaWVudFBvc2l0aW9uIGdsb2JhbDpnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246
b3BlcmF0aW9uXTsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250cm9sbGVyKCku
ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAgIHJldHVybiBraXQoX3ByaXZhdGUtPnBhZ2UtPmRy
YWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAodm9pZClfZXhp
dGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENH
UG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJh
dGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCkBAIC02NzQ4LDggKzY4MzQsOCBAQCAtIChOU0RyYWdP
cGVyYXRpb24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5m
bwogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9j
YXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9p
bnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0g
ICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2lu
Z0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwot
ICAgIHJldHVybiBjb3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdE
YXRhKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVu
dCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9d
LCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJl
dHVybiBraXQoY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0
YSkpOwogfQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFn
Z2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjc2MSw4ICs2ODQ3LDggQEAgLSAoTlNEcmFnT3Bl
cmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8K
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0
aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAg
IFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWws
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJ
bmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAg
ICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7Cisg
ICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYg
YWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICByZXR1cm4ga2l0
KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAo
dm9pZClkcmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAg
LTY3NzMsNyArNjg1OSw3IEBAIC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5n
SW5mbz4pZHJhZ2dpbmdJbmZvCiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
KFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtz
ZWxmIHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0lu
Zm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihb
ZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNh
dGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRh
KGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJh
Z2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlv
bkZsYWdzOmRyYWdnaW5nSW5mb10pOwogICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4
aXRlZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3ODYsNyArNjg3Miw3IEBAIC0gKEJPT0wpcGVyZm9y
bURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0p
OwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJh
Z2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgYXV0byog
ZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGds
b2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBk
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFn
Z2luZ0luZm9dKTsKKyAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25G
bGFnczpkcmFnZ2luZ0luZm9dKTsKIAogICAgIE5TQXJyYXkqIHR5cGVzID0gZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVj
dDpXZWJBcmNoaXZlUGJvYXJkVHlwZV0gJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6
OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA3ZDcwYzA0YTBj
ZTEzNGNmZTg3ZDU2ZmQ4MTFmNGRjNWZiY2IzODg5Li5kNTk3NmM0NGVlNzFkMGUwNDQ2ZTJiZTQy
ZjU0YjE0YWYzMTQxODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0zNiw2ICszNiw3IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIAogI2ltcG9ydCA8V2Vi
Q29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlv
bnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpA
QCAtODksNyArOTAsMTcgQEAgY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwogCi1XZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhX
ZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorI2lmIFVT
RShBUFBLSVQpCit0eXBlZGVmIE5TRHJhZ09wZXJhdGlvbiBDb2NvYURyYWdPcGVyYXRpb247Cisj
ZWxzZQordHlwZWRlZiB1aW50NjRfdCBDb2NvYURyYWdPcGVyYXRpb247CisjZW5kaWYgLy8gVVNF
KEFQUEtJVCkKKworT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3Bl
cmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24pOworI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpCisKK1dlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25z
KTsKIAogT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gY29yZUxheW91dE1pbGVz
dG9uZXMoV2ViTGF5b3V0TWlsZXN0b25lcyk7CiBXZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91
dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcAppbmRleCAzMTMyNjAzNmE4YTQxMjU3N2VjMWNhMTkxN2RjM2ZmODYyMDdlMjYzLi5i
MjQ5ZmZkODc5NDgyOTcyZTU2NmMyZTBhZDI3Y2MyYTYyYzU0NTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cApAQCAtNDQsMTggKzQ0LDE4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0
aWMgRFdPUkQgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhEcmFnT3Bl
cmF0aW9uIG9wKQorc3RhdGljIERXT1JEIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJh
Z0N1cnNvcnMoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCiB7CiAgICAg
RFdPUkQgcmVzdWx0ID0gRFJPUEVGRkVDVF9OT05FOwotICAgIGlmIChvcCA9PSBEcmFnT3BlcmF0
aW9uRXZlcnkpCisgICAgaWYgKG9wZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQog
ICAgICAgICByZXR1cm4gRFJPUEVGRkVDVF9DT1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJPUEVG
RkVDVF9NT1ZFOyAKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAob3Bl
cmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJlc3VsdCB8
PSBEUk9QRUZGRUNUX0NPUFk7IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25MaW5rKQorICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAg
cmVzdWx0IHw9IERST1BFRkZFQ1RfTElOSzsgCi0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbk1v
dmUpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQog
ICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9NT1ZFOwotICAgIGlmIChvcCAmIERyYWdPcGVy
YXRpb25HZW5lcmljKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25HZW5lcmljKSkKICAgICAgICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfTU9WRTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3Rh
cnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIERXT1JEIG9rRWZmZWN0ID0gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhtX3dlYlZpZXctPnBhZ2UoKS0+
ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uKCkpOworICAgICAgICBEV09SRCBv
a0VmZmVjdCA9IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMobV93ZWJW
aWV3LT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7
CiAgICAgICAgIERXT1JEIGVmZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsKICAgICAgICAgQ09NUHRy
PElXZWJVSURlbGVnYXRlPiB1aTsKICAgICAgICAgSFJFU1VMVCBociA9IEVfTk9USU1QTDsKQEAg
LTE2NCwxNSArMTY0LDE1IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVt
IGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYKICAgICAgICAgaWYgKGhy
ID09IEVfTk9USU1QTCkKICAgICAgICAgICAgIGhyID0gRG9EcmFnRHJvcChkYXRhT2JqZWN0Lmdl
dCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZmZWN0LCAmZWZmZWN0KTsKIAotICAgICAgICBEcmFnT3Bl
cmF0aW9uIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzazsKICAgICAgICAgaWYgKGhyID09IERSQUdEUk9Q
X1NfRFJPUCkgewogICAgICAgICAgICAgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfQ09QWSkKLSAg
ICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgICAg
ICAgICBvcGVyYXRpb25NYXNrID0gRHJhZ09wZXJhdGlvbkNvcHk7CiAgICAgICAgICAgICBlbHNl
IGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX0xJTkspCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9u
ID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9uTWFzayA9IERy
YWdPcGVyYXRpb25MaW5rOwogICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVD
VF9NT1ZFKQotICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOwor
ICAgICAgICAgICAgICAgIG9wZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uTW92ZTsKICAgICAg
ICAgfQotICAgICAgICBmcmFtZS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChnZW5l
cmF0ZU1vdXNlRXZlbnQobV93ZWJWaWV3LCBmYWxzZSksIG9wZXJhdGlvbik7CisgICAgICAgIGZy
YW1lLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVyYXRlTW91c2VFdmVudCht
X3dlYlZpZXcsIGZhbHNlKSwgb3BlcmF0aW9uTWFzayk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzYmRlZTZiYmQ1YjQ4N2U0NTc4OGUyYzQ3NzUyNzVkOWQw
YTkyMDU0Li41MmZkZmE4YjUzOGYxZTZhMzU1Njg2YWMxODdmYTFhYTQ4ZWI4MmE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNTg0MiwzOCArNTg0Miw0MiBAQCBIUkVTVUxU
IFdlYlZpZXc6OnZpc2libGVDb250ZW50UmVjdChfT3V0XyBMUFJFQ1QgcmVjdCkKICAgICByZXR1
cm4gU19PSzsKIH0KIAotc3RhdGljIERXT1JEIGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IoRHJh
Z09wZXJhdGlvbiBvcCkgewotICAgIERXT1JEIHJlcyA9IERST1BFRkZFQ1RfTk9ORTsKLSAgICBp
ZiAob3AgJiBEcmFnT3BlcmF0aW9uQ29weSkgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfQ09Q
WTsKLSAgICBlbHNlIGlmIChvcCAmIERyYWdPcGVyYXRpb25MaW5rKSAKLSAgICAgICAgcmVzID0g
RFJPUEVGRkVDVF9MSU5LOwotICAgIGVsc2UgaWYgKG9wICYgRHJhZ09wZXJhdGlvbk1vdmUpIAot
ICAgICAgICByZXMgPSBEUk9QRUZGRUNUX01PVkU7Ci0gICAgZWxzZSBpZiAob3AgJiBEcmFnT3Bl
cmF0aW9uR2VuZXJpYykgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfTU9WRTsgLy9UaGlzIGFw
cGVhcnMgdG8gYmUgdGhlIEZpcmVmb3ggYmVoYXZpb3VyCi0gICAgcmV0dXJuIHJlczsKK3N0YXRp
YyBEV09SRCBkcmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29yKE9wdGlvbmFsPERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCit7CisgICAgaWYgKCFvcGVyYXRpb25NYXNrKQorICAgICAgICByZXR1
cm4gRFJPUEVGRkVDVF9OT05FOworCisgICAgRFdPUkQgcmVzdWx0ID0gRFJPUEVGRkVDVF9OT05F
OworICAgIGlmICgqb3BlcmF0aW9uTWFzayAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICBy
ZXN1bHQgPSBEUk9QRUZGRUNUX0NPUFk7CisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbk1hc2sgJiBE
cmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9MSU5LOworICAg
IGVsc2UgaWYgKCpvcGVyYXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJl
c3VsdCA9IERST1BFRkZFQ1RfTU9WRTsKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uTWFzayAmIERy
YWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX01PVkU7IC8v
IFRoaXMgYXBwZWFycyB0byBiZSB0aGUgRmlyZWZveCBiZWhhdmlvdXIuCisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotRHJhZ09wZXJhdGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlv
bihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKK09wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBXZWJW
aWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgLy8gQ29uZm9ybXMgdG8gTWljcm9zb2Z0J3Mga2V5IGNv
bWJpbmF0aW9ucyBhcyBkb2N1bWVudGVkIGZvciAKICAgICAvLyBJRHJvcFRhcmdldDo6RHJhZ092
ZXIuIE5vdGUsIGdyZktleVN0YXRlIGlzIHRoZSBjdXJyZW50IAogICAgIC8vIHN0YXRlIG9mIHRo
ZSBrZXlib2FyZCBtb2RpZmllciBrZXlzIG9uIHRoZSBrZXlib2FyZC4gU2VlOgogICAgIC8vIDxo
dHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2ODAxMjkoVlMuODUpLmFz
cHg+LgotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxl
cigpLnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBtX3Bh
Z2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKTsKIAogICAgIGlm
ICgoZ3JmS2V5U3RhdGUgJiAoTUtfQ09OVFJPTCB8IE1LX1NISUZUKSkgPT0gKE1LX0NPTlRST0wg
fCBNS19TSElGVCkpCi0gICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAg
ICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uTGluayB9OwogICAgIGVsc2UgaWYg
KChncmZLZXlTdGF0ZSAmIE1LX0NPTlRST0wpID09IE1LX0NPTlRST0wpCi0gICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFn
T3BlcmF0aW9uQ29weSB9OwogICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAmIE1LX1NISUZUKSA9
PSBNS19TSElGVCkKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkdlbmVyaWM7Cisg
ICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdPcGVyYXRpb25HZW5lcmljIH07CiAKLSAgICBy
ZXR1cm4gb3BlcmF0aW9uOworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCiBIUkVTVUxU
IFdlYlZpZXc6OkRyYWdFbnRlcihJRGF0YU9iamVjdCogcERhdGFPYmplY3QsIERXT1JEIGdyZktl
eVN0YXRlLCBQT0lOVEwgcHQsIERXT1JEKiBwZHdFZmZlY3QpCkBAIC01OTE5LDggKzU5MjMsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OkRyYWdMZWF2ZSgpCiAgICAgICAgIG1fZHJvcFRhcmdldEhlbHBl
ci0+RHJhZ0xlYXZlKCk7CiAKICAgICBpZiAobV9kcmFnRGF0YSkgewotICAgICAgICBEcmFnRGF0
YSBkYXRhKG1fZHJhZ0RhdGEuZ2V0KCksIEludFBvaW50KCksIEludFBvaW50KCksIAotICAgICAg
ICAgICAgRHJhZ09wZXJhdGlvbk5vbmUpOworICAgICAgICBEcmFnRGF0YSBkYXRhKG1fZHJhZ0Rh
dGEuZ2V0KCksIEludFBvaW50KCksIEludFBvaW50KCksIHsgfSk7CiAgICAgICAgIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRhdGEpOwogICAgICAgICBtX2RyYWdEYXRhID0g
MDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggMTgwNjY5OGE5YWQ4NGJj
MmY4ODhiNWYyZWRjMzAzZjllNWFhNWY0NS4uN2IyMjEwNGQ5OGU1N2ZjMzc3NTMzNmQxOTI5OTM5
MzU1ODIwYzU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNTU1LDcgKzU1NSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBlcmZvcm1MYXllcmVkV2luZG93VXBkYXRlKCk7CiAK
LSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JE
IGdyZktleVN0YXRlKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0OwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgdmFyaWFibGUgaXMgcGFydCBvZiBhIHdvcmthcm91bmQuIFRoZSBk
cm9wIGVmZmVjdCAocGR3RWZmZWN0KSBwYXNzZWQgdG8gRHJvcCBpcyBpbmNvcnJlY3QuIAogICAg
IC8vIFdlIHNldCB0aGlzIHZhcmlhYmxlIGluIERyYWdFbnRlciBhbmQgRHJhZ092ZXIgc28gdGhh
dCBpdCBjYW4gYmUgdXNlZCBpbiBEcm9wIHRvIHNldCB0aGUgY29ycmVjdCBkcm9wIGVmZmVjdC4g
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401035</attachid>
            <date>2020-06-04 10:15:57 -0700</date>
            <delta_ts>2020-06-05 11:20:57 -0700</delta_ts>
            <desc>Patch v13</desc>
            <filename>bug-212605-v13-identical-to-v12.patch</filename>
            <type>text/plain</type>
            <size>139423</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTE1MTdlMTU1ZDI4MjVk
NmVkOGZiZGZjZWMzMjkyNTA0ZTg0MTA5My4uNGY4OTYyMzdkOWJiY2FkMzEyYTlmMDdjY2U0Y2Jl
NWE1NGRiMDU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAyMC0wNi0wMyAgRGF2
aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5v
cmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAgICAgICAgLSBSZXBsYWNlIHVzZSBvZiBEcmFnT3Bl
cmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9yCisgICAgICAgICAgT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAgIC0gUmVuYW1lIGZ1bmN0aW9uIHBhcmFtZXRlcnMg
YW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5vdGUgdXNlCisgICAgICAgICAgb2YgbWFzayB2YWx1
ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdPcGVyYXRpb25Ob25lIGVudW0gdmFsdWUuCisgICAg
ICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9uRXZlcnkgZW51bSB2YWx1ZSB3aXRoIGFueURyYWdP
cGVyYXRpb24oKS4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OmRyYWdPcEZyb21JRU9wKToKKyAgICAgICAgKFdlYkNvcmU6OklFT3BGcm9tRHJhZ09w
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0
KTogUmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRp
b25NYXNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRp
b25PcGVyYXRpb24gY29uc3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhVHJhbnNmZXI6OnNldFNvdXJjZU9wZXJhdGlvbik6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXI6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKTogUmVuYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2sp
OgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFU
cmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJh
bnNmZXI6OnNvdXJjZU9wZXJhdGlvbiBjb25zdCk6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVHJhbnNmZXI6OmRlc3RpbmF0aW9uT3BlcmF0aW9uIGNvbnN0KTogUmVuYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2sg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRp
b24pOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldFNvdXJjZU9w
ZXJhdGlvbk1hc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5h
dGlvbk9wZXJhdGlvbik6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6
c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKToKKyAgICAgICAgKiBwYWdlL0RyYWdBY3Rpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjphbnlEcmFnT3BlcmF0aW9uKTogQWRkLgorICAgICAgICAo
V1RGOjpFbnVtVHJhaXRzPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KTogQWRkLgorICAgICAgICAo
V1RGOjpPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOiBBZGQuCisgICAgICAgICog
cGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6ZHJhZ0VudGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdV
cGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRP
clVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKToKKyAgICAgICAgLSBDaGFu
Z2UgbG9naWMgdG8gY2FsbCBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZygpIHRvIGNvbnZlcnQKKyAg
ICAgICAgICB0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrIHRvIGEgc2luZ2xlIG9wZXJhdGlv
biB3aGVuCisgICAgICAgICAgdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzayBidXQgZG9lc24n
dCBjb250YWluIHdpdGggYW55CisgICAgICAgICAgYml0IHZhbHVlcyBzZXQgaW4gc291cmNlT3Bl
cmF0aW9uTWFzay4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzdGFydERyYWcp
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnNv
dXJjZURyYWdPcGVyYXRpb24gY29uc3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0Nv
bnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6dHJ5REhUTUxEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpk
cmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udmVydERyYWdPcGVyYXRpb25Ub0Ryb3Bab25lT3BlcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmZpbmREcm9wWm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6aGFuZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3ApOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjYW5jZWxEcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQpOgorICAgICAgICAq
IHBhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdD
b250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKiBwYWdlL21hYy9EcmFnQ29udHJv
bGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0
aW9uKToKKyAgICAgICAgKiBwYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbik6CisgICAgICAgIC0gQ2xl
YW4gdXAgY29tbWVudC4KKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdE
YXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6RHJhZ0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1V0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Omdk
a0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJh
dGlvblRvR2RrRHJhZ0FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJhdGlvblRv
U2luZ2xlR2RrRHJhZ0FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vd2luL0RyYWdEYXRhV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisKIDIwMjAtMDYt
MDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRXZl
bnRSZWdpb246OnRyYW5zbGF0ZSgpIG5lZWRzIHRvIG9mZnNldCB0aGUgd2hlZWwgZXZlbnQgcmVn
aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBiYzZlNWExZDVmMjEyZTk2NWRjODE2ZTkwNGIzYzgwY2ZkMzdiYmJj
Li5hNDJiMmY1MWJhNDM5YmJiZDRiMDUxMTNjZjM1NTllZDk0YWU1YmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwNSBAQAorMjAyMC0wNi0wMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFs
dWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAg
ICAgICAgLSBSZXBsYWNlIHVzZSBvZiBEcmFnT3BlcmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IG9yCisgICAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAg
IC0gUmVuYW1lIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5v
dGUgdXNlCisgICAgICAgICAgb2YgbWFzayB2YWx1ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdP
cGVyYXRpb25Ob25lIGVudW0gdmFsdWUuCisgICAgICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9u
RXZlcnkgZW51bSB2YWx1ZSB3aXRoIGFueURyYWdPcGVyYXRpb24oKS4KKworICAgICAgICAqIFBs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDoKKyAgICAgICAgKFVJRHJhZ09wZXJhdGlvbik6Cisg
ICAgICAgIC0gUmVtb3ZlIHVudXNlZCAoYW5kIG1pc25hbWVkKSBVSURyYWdPcGVyYXRpb24gZW51
bSB0eXBlZGVmLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAg
ICAodHlwZXNfdGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCk6CisgICAgICAgIChoZWFk
ZXJzX2Zvcl90eXBlKToKKyAgICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbiBlbnVtLgorICAgICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJ
bnRlcm5hbC5oOgorICAgICAgICAoV2ViS2l0Ojpjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQg
Y29udmVyc2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RHJhZ0RhdGE+OjpkZWNvZGUpOgorICAgICAg
ICAtIFVwZGF0ZSB0byBlbmNvZGUvZGVjb2RlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPi4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaDoKKyAgICAgICAgKFdlYktp
dDo6RHJhZ1NvdXJjZTo6YmVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdT
b3VyY2VHdGszLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ1NvdXJjZTo6YmVnaW4pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RHJhZ1NvdXJjZTo6YmVnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRpZFBlcmZvcm1BY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpEcm9wVGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJv
cFRhcmdldDo6RHJvcFRhcmdldCk6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmRpZFBl
cmZvcm1BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTdGFy
dERyYWcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJp
dmF0ZS5oOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcpOgorCisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6ZHJhZ2dpbmdFbnRlcmVkKToKKyAgICAgICAgKFdlYktpdDo6a2l0KTogQWRkIGNvbnZlcnNp
b24gZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRpb24pOgorICAgICAg
ICAtIE1ha2UgdXNlIG9mIGNvcmVEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnZlcnNpb24gZnVuY3Rp
b24uCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OnN0YXJ0RHJhZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKToKKyAgICAgICAgLSBSZW1vdmUgTUVTU0FHRV9DSEVDSyBub3cgdGhhdCB3
ZSdyZSB1c2luZyB0aGUgYWN0dWFsIHR5cGUuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRW5kZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0Q3VycmVudERyYWdJbmZvcm1h
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmN1cnJlbnREcmFnT3BlcmF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAoV2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViUGFnZVByb3h5OjpTdGFydERyYWcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRIYW5kbGVEcmFnU3RhcnRSZXF1ZXN0Ol0pOgorICAg
ICAgICAoZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKGNv
cmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKTogQWRkIGNvbnZlcnNpb24gZnVuY3Rp
b24uCisgICAgICAgIC0gTm90ZSB0aGF0IHRoaXMgd2FzIG5vdCBiZWluZyBjb252ZXJ0ZWQgZnJv
bSBVSURyb3BPcGVyYXRpb24gdG8KKyAgICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIHBy
ZXZpb3VzbHksIGFuZCBVSURyb3BPcGVyYXRpb25Nb3ZlCisgICAgICAgICAgKDB4Mykgd2FzIG5v
dCBiZWluZyBwcm9wZXJseSBjb252ZXJ0ZWQgdG8gRHJhZ09wZXJhdGlvbk1vdmUKKyAgICAgICAg
ICAoMHgxNikuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJhZ0RhdGFGb3JEcm9wU2Vzc2lv
bjpkcmFnRGVzdGluYXRpb25BY3Rpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2Rp
ZFBlcmZvcm1EcmFnT3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJ
bnRlcmFjdGlvbjp3aWxsQW5pbWF0ZUxpZnRXaXRoQW5pbWF0b3I6c2Vzc2lvbjpdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBkcmFnSW50ZXJhY3Rpb246c2Vzc2lvbjpkaWRFbmRXaXRoT3Bl
cmF0aW9uOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyb3BJbnRlcmFjdGlvbjpzZXNz
aW9uRGlkRW5kOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpzdGFy
dERyYWcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhZ0VuZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICAoV2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAgICAgICAgKFdlYlBh
Z2U6OkRyYWdFbmRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1z
Rm9yRHJhZ1Nlc3Npb24pOgorCiAyMDIwLTA2LTAyICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMu
cmVpZEBzb255LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OW3IyNjA4NDRdOiBbR1RLXVtXUEVd
IEluc3BlY3RvciBHUmVzb3VyY2Ugbm8gbG9uZ2VyIHVwZGF0ZWQgYWZ0ZXIgV2ViSW5zcGVjdG9y
VUkgZmlsZSB1cGRhdGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNDFkYjY0NzVl
OGVhZGZkMjk0OWRjOTg3NzE2ZDRmNTg2MzM1ZjE1Yy4uODkzNjY0MDA3ZDgzN2FmYTk4ZjE2Y2Q4
ZWQxMzYxMDgxMjY5YzAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ1IEBACisyMDIwLTA2LTAzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBmb3IgbWFzayB2YWx1ZXMKKyAg
ICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjYwNT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBicm9hZCBzdHJva2VzOgorICAgICAgICAt
IFJlcGxhY2UgdXNlIG9mIERyYWdPcGVyYXRpb24gd2l0aCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3IKKyAgICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPi4KKyAgICAgICAgLSBSZW5h
bWUgZnVuY3Rpb24gcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRvIGRlbm90ZSB1c2UK
KyAgICAgICAgICBvZiBtYXNrIHZhbHVlcy4KKyAgICAgICAgLSBSZW1vdmUgRHJhZ09wZXJhdGlv
bk5vbmUgZW51bSB2YWx1ZS4KKyAgICAgICAgLSBSZXBsYWNlIERyYWdPcGVyYXRpb25FdmVyeSBl
bnVtIHZhbHVlIHdpdGggYW55RHJhZ09wZXJhdGlvbigpLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2RyYWdTb3VyY2VFbmRlZEF0Om9wZXJh
dGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoa2l0
KTogQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBkcmFnZ2luZ1Nlc3Npb246c291cmNlT3BlcmF0aW9uTWFza0ZvckRyYWdnaW5nQ29udGV4dDpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlRHJhZ09wZXJh
dGlvbk1hc2spOiBBZGQgY29udmVyc2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKGtpdCk6IERpdHRv
LgorICAgICAgICAtIE1hcCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyB0byBfVUlEcmFn
T3BlcmF0aW9uTW92ZQorICAgICAgICAgIGJhc2VkIG9uIGxvZ2ljIGluIFdlYkNvcmUuICBBbGwg
b3RoZXIgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbgorICAgICAgICAgIGVudW0gdmFsdWVzIG1hcCB0
byBfVUlEcmFnT3BlcmF0aW9uTm9uZS4KKyAgICAgICAgKC1bV2ViVmlldyBkcmFnRGF0YUZvclNl
c3Npb246Y2xpZW50Omdsb2JhbDpvcGVyYXRpb246XSk6CisgICAgICAgICgtW1dlYlZpZXcgX2Vu
dGVyZWREYXRhSW50ZXJhY3Rpb246Y2xpZW50Omdsb2JhbDpvcGVyYXRpb246XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgX3VwZGF0ZWREYXRhSW50ZXJhY3Rpb246Y2xpZW50Omdsb2JhbDpvcGVyYXRp
b246XSk6CisgICAgICAgICgtW1dlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOl0pOgorICAgICAgICAo
LVtXZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBkcmFnZ2lu
Z0V4aXRlZDpdKToKKyAgICAgICAgKC1bV2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAoQ29jb2FEcmFn
T3BlcmF0aW9uKToKKyAgICAgICAgLSBBZGQgdHlwZWRlZiBzbyBjb3JlRHJhZ09wZXJhdGlvbk1h
c2soKSBtYXkgYmUgc2hhcmVkIGFjcm9zcworICAgICAgICAgIHBsYXRmb3Jtcy4KKyAgICAgICAg
KGNvcmVEcmFnT3BlcmF0aW9uTWFzayk6IEFkZCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKGNvcmVP
cHRpb25zKToKKyAgICAgICAgLSBSZW1vdmUgcmVkdW5kYW50IHBhcmFtZXRlciBuYW1lLgorCiAy
MDIwLTA2LTAyICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZlcnQgRkVBVFVSRVNfREVGSU5FUyByZWxhdGVkIGNoYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCA2OTI3NWVlNzNjMTVlNWZlOTczYmM4MTU5MDczYjhmZDQwYjZlMTU1Li44
ZjkwNDdkZmM1ZDk4MzQ1ZGY3NDY1MDFjOGY2MTIxYTQ0OWNiMmFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDYtMDMgIERhdmlkIEtpbHplciAg
PGRka2lsemVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IGZvciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGJy
b2FkIHN0cm9rZXM6CisgICAgICAgIC0gUmVwbGFjZSB1c2Ugb2YgRHJhZ09wZXJhdGlvbiB3aXRo
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcgorICAgICAgICAgIE9wdGlvbmFsPERyYWdPcGVy
YXRpb24+LgorICAgICAgICAtIFJlbmFtZSBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFuZCBsb2NhbCB2
YXJpYWJsZXMgdG8gZGVub3RlIHVzZQorICAgICAgICAgIG9mIG1hc2sgdmFsdWVzLgorICAgICAg
ICAtIFJlbW92ZSBEcmFnT3BlcmF0aW9uTm9uZSBlbnVtIHZhbHVlLgorICAgICAgICAtIFJlcGxh
Y2UgRHJhZ09wZXJhdGlvbkV2ZXJ5IGVudW0gdmFsdWUgd2l0aCBhbnlEcmFnT3BlcmF0aW9uKCku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAg
KGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMpOgorICAgICAgICAoV2Vi
RHJhZ0NsaWVudDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IpOgorICAgICAgICAoV2ViVmlldzo6a2V5U3RhdGVU
b0RyYWdPcGVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViVmlldzo6RHJhZ0xlYXZlKToKKyAg
ICAgICAgKiBXZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJh
dGlvbiBjb25zdCk6CisKIDIwMjAtMDYtMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBEb24ndCB1c2UgY2FzdHMgdG8gY29udmVydCBiZXR3ZWVuIFdlYkNv
cmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhbmQge1dlYixXS31EcmFnRGVzdGluYXRpb25BY3Rp
b24gdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5kZXggODQ2M2E0OGU5NzRm
YmUzZjc3ZjY2OWU1MTc4MjQ3OWI5NGNiMTA5Ni4uZDg4ZmMyMGY2Nzc2NjNmMDQzN2M5MDhhN2I4
OGM1ZmI3MmM2YWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDg4LDE4ICs0ODgsMTggQEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICBy
ZXR1cm4gZGF0YVRyYW5zZmVyOwogfQogCi1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6
OmNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwg
Ym9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JEcm9wKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykKIHsKICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5zZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFk
b25seSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmRE
cm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNl
dFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0
U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNm
ZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0
ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zl
cj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBE
cmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERh
dGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29u
c3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0
ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9v
bCBkcmFnZ2luZ0ZpbGVzKQogewogICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5l
dyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5zZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92
ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBU
eXBlOjpEcmFnQW5kRHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJh
dGlvbihzb3VyY2VPcGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0
aW9uTWFzayhzb3VyY2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2lu
SWRlbnRpZmllciA9IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAg
ICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsKIH0KQEAgLTU5NSw3NCArNTk1LDc0IEBAIHZvaWQgRHJh
Z0ltYWdlTG9hZGVyOjppbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KikK
ICAgICBtX2RhdGFUcmFuc2Zlci0+dXBkYXRlRHJhZ0ltYWdlKCk7CiB9CiAKLXN0YXRpYyBEcmFn
T3BlcmF0aW9uIGRyYWdPcEZyb21JRU9wKGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQorc3RhdGlj
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9w
ZXJhdGlvbikKIHsKICAgICBpZiAob3BlcmF0aW9uID09ICJ1bmluaXRpYWxpemVkIikKLSAgICAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVy
YXRpb24oKTsKICAgICBpZiAob3BlcmF0aW9uID09ICJub25lIikKLSAgICAgICAgcmV0dXJuIERy
YWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4geyB9OwogICAgIGlmIChvcGVyYXRpb24g
PT0gImNvcHkiKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJl
dHVybiB7IERyYWdPcGVyYXRpb25Db3B5IH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGluayIp
Ci0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgcmV0dXJuIHsgRHJh
Z09wZXJhdGlvbkxpbmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJtb3ZlIikKLSAgICAgICAg
cmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRp
b25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVy
YXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAgICAgICBy
ZXR1cm4gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxp
bmspOworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxp
bmsgfTsKICAgICBpZiAob3BlcmF0aW9uID09ICJjb3B5TW92ZSIpCi0gICAgICAgIHJldHVybiAo
RHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8
IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHks
IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9OwogICAgIGlmIChvcGVy
YXRpb24gPT0gImxpbmtNb3ZlIikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFn
T3BlcmF0aW9uTGluayB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUp
OworICAgICAgICByZXR1cm4geyBEcmFnT3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVy
aWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiYWxsIikKLSAg
ICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVyeTsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlv
blByaXZhdGU7IC8vIHJlYWxseSBhIG1hcmtlciBmb3IgIm5vIGNvbnZlcnNpb24iCisgICAgICAg
IHJldHVybiBhbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvblBy
aXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFya2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikK
K3N0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb24g
JiAoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgYm9vbCBp
c0dlbmVyaWNNb3ZlID0gb3BlcmF0aW9uTWFzay5jb250YWluc0FueSh7IERyYWdPcGVyYXRpb25H
ZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KTsKIAotICAgIGlmICgoaXNHZW5lcmljTW92ZSAm
JiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uTGluaykpIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYg
KChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0
aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfSkpIHx8IG9wZXJhdGlvbk1hc2sgPT0gYW55RHJh
Z09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gImFsbCI7Ci0gICAgaWYgKGlzR2VuZXJpY01v
dmUgJiYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KSkKKyAgICBpZiAoaXNHZW5lcmlj
TW92ZSAmJiBvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAg
ICAgcmV0dXJuICJjb3B5TW92ZSI7Ci0gICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgKG9wZXJhdGlv
biAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiBvcGVyYXRp
b25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAgcmV0dXJuICJsaW5r
TW92ZSI7Ci0gICAgaWYgKChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkgJiYgKG9wZXJh
dGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlu
c0FsbCh7IERyYWdPcGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9uTGluayB9KSkKICAgICAgICAg
cmV0dXJuICJjb3B5TGluayI7CiAgICAgaWYgKGlzR2VuZXJpY01vdmUpCiAgICAgICAgIHJldHVy
biAibW92ZSI7Ci0gICAgaWYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlm
IChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgcmV0
dXJuICJjb3B5IjsKLSAgICBpZiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkxpbmspCisgICAg
aWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAgICAgICBy
ZXR1cm4gImxpbmsiOwogICAgIHJldHVybiAibm9uZSI7CiB9CiAKLURyYWdPcGVyYXRpb24gRGF0
YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb24oKSBjb25zdAorT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IERhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0CiB7Ci0gICAgRHJh
Z09wZXJhdGlvbiBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVPcChtX2VmZmVjdEFsbG93ZWQpOwot
ICAgIEFTU0VSVChvcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOwotICAgIHJldHVy
biBvcGVyYXRpb247CisgICAgYXV0byBvcGVyYXRpb25NYXNrID0gZHJhZ09wRnJvbUlFT3AobV9l
ZmZlY3RBbGxvd2VkKTsKKyAgICBBU1NFUlQob3BlcmF0aW9uTWFzayAhPSBEcmFnT3BlcmF0aW9u
UHJpdmF0ZSk7CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKLURyYWdPcGVyYXRpb24g
RGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbigpIGNvbnN0CitPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soKSBjb25z
dAogewotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gZHJhZ09wRnJvbUlFT3AobV9kcm9w
RWZmZWN0KTsKLSAgICBBU1NFUlQob3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9w
ZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlv
bkxpbmsgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uR2VuZXJp
YyB8IERyYWdPcGVyYXRpb25Nb3ZlKSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkV2ZXJ5
KTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9IGRyYWdP
cEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7CisgICAgQVNTRVJUKG9wZXJhdGlvbk1hc2sgPT0gRHJh
Z09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFzay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFz
ayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb25NYXNrID09IE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPih7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KSB8
fCBvcGVyYXRpb25NYXNrID09IGFueURyYWdPcGVyYXRpb24oKSk7CisgICAgcmV0dXJuIG9wZXJh
dGlvbk1hc2s7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb24oRHJh
Z09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIERhdGFUcmFuc2Zlcjo6c2V0U291cmNlT3BlcmF0
aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBB
U1NFUlRfQVJHKG9wZXJhdGlvbiwgb3BlcmF0aW9uICE9IERyYWdPcGVyYXRpb25Qcml2YXRlKTsK
LSAgICBtX2VmZmVjdEFsbG93ZWQgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb24pOworICAgIEFT
U0VSVF9BUkcob3BlcmF0aW9uTWFzaywgb3BlcmF0aW9uTWFzayAhPSBEcmFnT3BlcmF0aW9uUHJp
dmF0ZSk7CisgICAgbV9lZmZlY3RBbGxvd2VkID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uTWFz
ayk7CiB9CiAKLXZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbihEcmFn
T3BlcmF0aW9uIG9wZXJhdGlvbikKK3ZvaWQgRGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9w
ZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCiB7Ci0g
ICAgQVNTRVJUX0FSRyhvcGVyYXRpb24sIG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uQ29weSB8
fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbk5vbmUgfHwgb3BlcmF0aW9uID09IERyYWdPcGVy
YXRpb25MaW5rIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8fCBvcGVyYXRp
b24gPT0gRHJhZ09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uID09IChEcmFnT3BlcmF0aW9uKShE
cmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKSk7Ci0gICAgbV9kcm9wRWZm
ZWN0ID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAgICBBU1NFUlRfQVJHKG9wZXJhdGlv
bk1hc2ssIG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uTWFz
ay5pc0VtcHR5KCkgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVy
YXRpb25NYXNrID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJh
Z09wZXJhdGlvbk1vdmUgfHwgb3BlcmF0aW9uTWFzayA9PSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4oeyBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfSkpOworICAgIG1f
ZHJvcEVmZmVjdCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbk1hc2spOwogfQogCiBTdHJpbmcg
RGF0YVRyYW5zZmVyOjpkcm9wRWZmZWN0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
aAppbmRleCBlNWNmYWY4NTZmYjI4ODNmYzE1NGRkYzg4YjBkNzcyM2JjOTg4YjA0Li4zY2NjZjY3
YWM1YWVkM2ZkMTljOTViMGQ0MzFkMTkwNTlkMmMwYzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5oCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5
IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgVG9iaWFzIEFudG9uIChhbnRv
bkBzdHVkLmZiaS5maC1kYXJtc3RhZHQuZGUpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVs
IFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTg4LDE1ICs4OCwxNSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAg
ICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJhZygpOwogICAgIHN0YXRpYyBS
ZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcmFnU3RhcnRFdmVudChjb25zdCBEb2N1bWVudCYp
OwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3Vt
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wg
ZHJhZ2dpbmdGaWxlcyk7Ci0gICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVw
ZGF0aW5nRHJvcFRhcmdldChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIHN0YXRpYyBS
ZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFn
Z2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRp
bmdEcm9wVGFyZ2V0KGNvbnN0IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKIAogICAg
IGJvb2wgZHJvcEVmZmVjdElzVW5pbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJvcEVm
ZmVjdCA9PSAidW5pbml0aWFsaXplZCI7IH0KIAotICAgIERyYWdPcGVyYXRpb24gc291cmNlT3Bl
cmF0aW9uKCkgY29uc3Q7Ci0gICAgRHJhZ09wZXJhdGlvbiBkZXN0aW5hdGlvbk9wZXJhdGlvbigp
IGNvbnN0OwotICAgIHZvaWQgc2V0U291cmNlT3BlcmF0aW9uKERyYWdPcGVyYXRpb24pOwotICAg
IHZvaWQgc2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbik7CisgICAgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdDsKKyAgICBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gZGVzdGluYXRpb25PcGVyYXRpb25NYXNrKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRTb3VyY2VPcGVyYXRpb25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7
CisgICAgdm9pZCBzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+KTsKIAogICAgIHZvaWQgc2V0RHJhZ0hhc1N0YXJ0ZWQoKSB7IG1fc2hvdWxkVXBkYXRl
RHJhZ0ltYWdlID0gdHJ1ZTsgfQogICAgIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2UoSW50
UG9pbnQmIGRyYWdMb2NhdGlvbikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdBY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKaW5k
ZXggYTkyM2NhZTU4Y2JmNWY2NWJlY2M3ZTkyM2YyZDM4MDdiMmU4M2ViZC4uYmY4M2Q2M2NlNWRm
MzhlNmQxNDFhMzgwOTJlZTE1NGE1NDYyZTM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQWN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMu
aApAQCAtNjAsMTggKzYwLDIxIEBAIHR5cGVkZWYgZW51bSB7CiAgICAgRHJhZ1NvdXJjZUFjdGlv
bkFueSAgICAgICAgICA9IFVJTlRfTUFYCiB9IERyYWdTb3VyY2VBY3Rpb247CiAKLS8vIE1hdGNo
ZXMgTlNEcmFnT3BlcmF0aW9uLgorLy8gU2VlIE5TRHJhZ09wZXJhdGlvbiwgX1VJRHJhZ09wZXJh
dGlvbiBhbmQgVUlEcm9wT3BlcmF0aW9uLgogdHlwZWRlZiBlbnVtIHsKLSAgICBEcmFnT3BlcmF0
aW9uTm9uZSAgICA9IDAsCiAgICAgRHJhZ09wZXJhdGlvbkNvcHkgICAgPSAxLAogICAgIERyYWdP
cGVyYXRpb25MaW5rICAgID0gMiwKICAgICBEcmFnT3BlcmF0aW9uR2VuZXJpYyA9IDQsCiAgICAg
RHJhZ09wZXJhdGlvblByaXZhdGUgPSA4LAogICAgIERyYWdPcGVyYXRpb25Nb3ZlICAgID0gMTYs
CiAgICAgRHJhZ09wZXJhdGlvbkRlbGV0ZSAgPSAzMiwKLSAgICBEcmFnT3BlcmF0aW9uRXZlcnkg
ICA9IFVJTlRfTUFYCiB9IERyYWdPcGVyYXRpb247CiAKK2NvbnN0ZXhwciBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gYW55RHJhZ09wZXJhdGlvbigpCit7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJh
dGlvbkNvcHksIERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09w
ZXJhdGlvblByaXZhdGUsIERyYWdPcGVyYXRpb25Nb3ZlLCBEcmFnT3BlcmF0aW9uRGVsZXRlIH07
Cit9CisKIGVudW0gY2xhc3MgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gOiBib29sIHsgTm8sIFllcyB9
OwogZW51bSBjbGFzcyBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgOiBib29sIHsgTm8sIFll
cyB9OwogZW51bSBjbGFzcyBEcmFnSGFuZGxpbmdNZXRob2QgOiB1aW50OF90IHsgTm9uZSwgRWRp
dFBsYWluVGV4dCwgRWRpdFJpY2hUZXh0LCBVcGxvYWRGaWxlLCBQYWdlTG9hZCwgU2V0Q29sb3Is
IE5vbkRlZmF1bHQgfTsKQEAgLTkzLDYgKzk2LDE4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kPiB7CiAgICAgPjsKIH07CiAKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24s
CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5LAorICAgICAgICBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMs
CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlLAorICAgICAgICBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTW92ZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0
ZQorICAgID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29y
ZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gT3B0aW9uU2V0
VmFsdWVzPAogICAgICAgICBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sCkBAIC0xMDIs
NCArMTE3LDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpE
cmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3Qg
T3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHsKKyAgICB1c2luZyB2YWx1
ZXMgPSBPcHRpb25TZXRWYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sCisg
ICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5LAorICAgICAgICBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMsCisg
ICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlLAorICAgICAgICBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTW92ZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZQor
ICAgID47Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggNGVlMmUyZmIzNTg0ZDc4OTU0MTYzYmFiOWIxMWM1ZTc1YmYyZGQ1
MS4uODQyYzYyZTMzMDZmMzY1Nzg5OWRlMTBiYzQxNGQ5OTkxMGExMDRiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIERyYWdD
b250cm9sbGVyOjpkcmFnRW5kZWQoKQogICAgIGNsaWVudCgpLmRyYWdFbmRlZCgpOwogfQogCi1E
cmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0Vu
dGVyZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBkcmFnRW50ZXJl
ZE9yVXBkYXRlZChkcmFnRGF0YSk7CiB9CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBEcmFnQ29u
dHJvbGxlcjo6ZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgbV9maWxl
SW5wdXRFbGVtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlv
bmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgcmV0dXJuIGRyYWdFbnRlcmVkT3JVcGRhdGVkKGRyYWdE
YXRhKTsKIH0KQEAgLTI3OCw3ICsyNzgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3Jt
RHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgbV9kb2N1bWVudFVu
ZGVyTW91c2UgPSBudWxscHRyOwogICAgIGNsZWFyRHJhZ0NhcmV0KCk7CiAKLSAgICBpZiAob3Bl
cmF0aW9uRm9yTG9hZChkcmFnRGF0YSkgPT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKCFv
cGVyYXRpb25Gb3JMb2FkKGRyYWdEYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
YXV0byB1cmxTdHJpbmcgPSBkcmFnRGF0YS5hc1VSTCgpOwpAQCAtMzA0LDIxICszMDQsMjEgQEAg
dm9pZCBEcmFnQ29udHJvbGxlcjo6bW91c2VNb3ZlZEludG9Eb2N1bWVudChEb2N1bWVudCogbmV3
RG9jdW1lbnQpCiAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBuZXdEb2N1bWVudDsKIH0KIAot
RHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xs
ZXI6OmRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBtb3VzZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9p
bnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSkpOwogCiAgICAgbV9kcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrID0gZHJhZ0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpOwogICAgIGlm
IChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2suaXNFbXB0eSgpKSB7CiAgICAgICAgIGNsZWFy
RHJhZ0NhcmV0KCk7IC8vIEZJWE1FOiBXaHkgbm90IGNhbGwgbW91c2VNb3ZlZEludG9Eb2N1bWVu
dChudWxscHRyKT8KLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KIAotICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb247CiAgICAgbV9kcmFnSGFuZGxpbmdNZXRob2QgPSB0cnlEb2N1bWVudERyYWco
ZHJhZ0RhdGEsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaywgZHJhZ09wZXJhdGlvbik7CiAg
ICAgaWYgKG1fZHJhZ0hhbmRsaW5nTWV0aG9kID09IERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSAm
JiAobV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmNvbnRhaW5zKERyYWdEZXN0aW5hdGlvbkFj
dGlvbjo6TG9hZCkpKSB7CiAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBvcGVyYXRpb25Gb3JMb2Fk
KGRyYWdEYXRhKTsKLSAgICAgICAgaWYgKGRyYWdPcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlvbk5v
bmUpCisgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uKQogICAgICAgICAgICAgbV9kcmFnSGFuZGxp
bmdNZXRob2QgPSBEcmFnSGFuZGxpbmdNZXRob2Q6OlBhZ2VMb2FkOwogICAgIH0gZWxzZSBpZiAo
bV9kcmFnSGFuZGxpbmdNZXRob2QgPT0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpTZXRDb2xvcikKICAg
ICAgICAgZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OwpAQCAtMzg4LDcgKzM4OCw3
IEBAIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0Zv
ckRyYWdIYW5kbGluZ01ldGhvZChEcmFnSGFuCiAKICNlbmRpZgogCi1EcmFnSGFuZGxpbmdNZXRo
b2QgRHJhZ0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFz
aywgRHJhZ09wZXJhdGlvbiYgZHJhZ09wZXJhdGlvbikKK0RyYWdIYW5kbGluZ01ldGhvZCBEcmFn
Q29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0
aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiYgZHJhZ09wZXJhdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1l
bnRVbmRlck1vdXNlKQogICAgICAgICByZXR1cm4gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwpA
QCAtNDU4LDcgKzQ1OCw3IEBAIERyYWdIYW5kbGluZ01ldGhvZCBEcmFnQ29udHJvbGxlcjo6dHJ5
RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0CiAgICAgICAgICAgICAg
ICAgbV9udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkID0gMTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKCFtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpCi0gICAgICAgICAgICAgICAg
ZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICAgICAgICAgIGRyYWdP
cGVyYXRpb24gPSBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRV
bmRlck1vdXNlLT5zZXRDYW5SZWNlaXZlRHJvcHBlZEZpbGVzKG1fbnVtYmVyT2ZJdGVtc1RvQmVB
Y2NlcHRlZCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IG92
ZXIgYSBmaWxlIGlucHV0IGVsZW1lbnQuIFRoZSBkcmFnZ2VkIGl0ZW0ocykgd2lsbCBsb2FkZWQg
aW50byB0aGUgdmlldywKQEAgLTQ4OSw3ICs0ODksNyBAQCBEcmFnU291cmNlQWN0aW9uIERyYWdD
b250cm9sbGVyOjpkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHJvb3RW
aQogICAgIHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247CiB9CiAKLURyYWdPcGVyYXRpb24gRHJh
Z0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQor
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQo
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1f
cGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24o
KSk7CiAKQEAgLTUwNCw3ICs1MDQsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpv
cGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICB9CiAKICAgICBp
ZiAoZG9jdW1lbnQgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IChpczxQbHVnaW5Eb2N1bWVudD4o
KmRvY3VtZW50KSAmJiAhcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3MpIHx8IGRvY3VtZW50LT5o
YXNFZGl0YWJsZVN0eWxlKCkpKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7Cisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb24oZHJh
Z0RhdGEpOwogfQogCkBAIC02OTMsMjggKzY5MywyOCBAQCBib29sIERyYWdDb250cm9sbGVyOjpj
YW5Qcm9jZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKERyYWdP
cGVyYXRpb24gc3JjT3BNYXNrKQorc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRlZmF1
bHRPcGVyYXRpb25Gb3JEcmFnKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrKQogewogICAgIC8vIFRoaXMgaXMgZGVzaWduZWQgdG8gbWF0Y2ggSUUncyBvcGVyYXRp
b24gZmFsbGJhY2sgZm9yIHRoZSBjYXNlIHdoZXJlCiAgICAgLy8gdGhlIHBhZ2UgY2FsbHMgcHJl
dmVudERlZmF1bHQoKSBpbiBhIGRyYWcgZXZlbnQgYnV0IGRvZXNuJ3Qgc2V0IGRyb3BFZmZlY3Qu
Ci0gICAgaWYgKHNyY09wTWFzayA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gRHJh
Z09wZXJhdGlvbkNvcHk7Ci0gICAgaWYgKHNyY09wTWFzayA9PSBEcmFnT3BlcmF0aW9uTm9uZSkK
LSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwotICAgIGlmIChzcmNPcE1hc2sgJiBE
cmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKHNvdXJjZU9wZXJhdGlvbk1h
c2suY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbk1vdmU7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdPcGVyYXRpb25HZW5lcmljKQorICAg
IGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25HZW5lcmljKSkK
ICAgICAgICAgcmV0dXJuIERyYWdDb250cm9sbGVyOjpwbGF0Zm9ybUdlbmVyaWNEcmFnT3BlcmF0
aW9uKCk7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlmIChz
b3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAg
cmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1hc2sgJiBEcmFnT3BlcmF0
aW9uTGluaykKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0
aW9uTGluaykpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsKICAgICAKICAgICAv
LyBGSVhNRTogRG9lcyBJRSByZWFsbHkgcmV0dXJuICJnZW5lcmljIiBldmVuIGlmIG5vIG9wZXJh
dGlvbnMgd2VyZSBhbGxvd2VkIGJ5IHRoZSBzb3VyY2U/CiAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b25HZW5lcmljOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24pCitib29sIERyYWdD
b250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50VW5k
ZXJNb3VzZSk7CiAgICAgUmVmPEZyYW1lPiBtYWluRnJhbWUobV9wYWdlLm1haW5GcmFtZSgpKTsK
QEAgLTcyMiwxNyArNzIyLDE5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhj
b25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24mIG9wZXJhCiAgICAgaWYgKCF2
aWV3UHJvdGVjdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBEcmFnT3BlcmF0aW9u
IHNvdXJjZU9wZXJhdGlvbiA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygp
OwotICAgIGF1dG8gdGFyZ2V0UmVzcG9uc2UgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnVw
ZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBbJmRyYWdEYXRhXSgp
IHsgcmV0dXJuIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdEYXRhKTsgfSwg
c291cmNlT3BlcmF0aW9uLCBkcmFnRGF0YS5jb250YWluc0ZpbGVzKCkpOworICAgIGF1dG8gc291
cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygp
OworICAgIGF1dG8gdGFyZ2V0UmVzcG9uc2UgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLnVw
ZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBbJmRyYWdEYXRhXSgp
IHsKKyAgICAgICAgcmV0dXJuIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRyYWdE
YXRhKTsKKyAgICB9LCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnRGF0YS5jb250YWluc0ZpbGVz
KCkpOwogICAgIGlmICghdGFyZ2V0UmVzcG9uc2UuYWNjZXB0KQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbikKLSAgICAgICAgb3BlcmF0
aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc291cmNlT3BlcmF0aW9uKTsKLSAgICBlbHNl
IGlmICghKHNvdXJjZU9wZXJhdGlvbiAmIHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbi52YWx1ZSgp
KSkgLy8gVGhlIGVsZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBpcyBub3Qgc3VwcG9y
dGVkIGJ5IHRoZSBzb3VyY2UKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7
CisgICAgaWYgKCF0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrKQorICAgICAgICBvcGVyYXRp
b24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb25NYXNrKTsKKyAgICBl
bHNlIGlmICghc291cmNlT3BlcmF0aW9uTWFzay5jb250YWluc0FueSh0YXJnZXRSZXNwb25zZS5v
cGVyYXRpb25NYXNrLnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3BlcmF0aW9u
IHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZS4KKyAgICAgICAgb3BlcmF0aW9u
ID0gV1RGOjpudWxsb3B0OwogICAgIGVsc2UKLSAgICAgICAgb3BlcmF0aW9uID0gdGFyZ2V0UmVz
cG9uc2Uub3BlcmF0aW9uLnZhbHVlKCk7CisgICAgICAgIG9wZXJhdGlvbiA9IGRlZmF1bHRPcGVy
YXRpb25Gb3JEcmFnKHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2sudmFsdWUoKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk1Niw3ICs5NTgsNyBAQCBPcHRpb25hbDxIaXRUZXN0UmVz
dWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0VGVzdFJlc3VsdEZvckRyYWdTdGFydChGcmFtZSYgc291
cmNlLAogICAgIHJldHVybiB7IGhpdFRlc3RSZXN1bHQgfTsKIH0KIAotYm9vbCBEcmFnQ29udHJv
bGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYgc3RhdGUsIERyYWdP
cGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25z
dCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGhhc0Rh
dGEpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJh
Z1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1h
c2ssIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25zdCBJbnRQb2ludCYg
ZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGhhc0RhdGEpCiB7CiAgICAg
aWYgKCFzdGF0ZS5zb3VyY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk3Miw3ICs5NzQs
NyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJh
Z1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIEludFBvaW50IG1vdXNlRHJhZ2dlZFBv
aW50ID0gc3JjLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQucG9zaXRpb24oKSk7
CiAKICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBVUkwoKTsKLSAgICBtX3NvdXJjZURyYWdPcGVy
YXRpb24gPSBzcmNPcDsKKyAgICBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrID0gc291cmNlT3Bl
cmF0aW9uTWFzazsKIAogICAgIERyYWdJbWFnZSBkcmFnSW1hZ2U7CiAgICAgSW50UG9pbnQgZHJh
Z0xvYygwLCAwKTsKQEAgLTk5NSw3ICs5OTcsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFy
dERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgog
ICAgICAgICAvLyBTZWxlY3Rpb24sIGltYWdlLCBhbmQgbGluayBkcmFncyByZWNlaXZlIGEgZGVm
YXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlvbnMgdGhhdAogICAgICAgICAvLyBmb2xs
b3dzIGZyb206CiAgICAgICAgIC8vIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVu
ay9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0/cmV2PTQ4NTI2I0wzNDMwCi0gICAg
ICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KG1f
c291cmNlRHJhZ09wZXJhdGlvbiB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlv
bkNvcHkpOworICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrLmFkZCh7IERyYWdPcGVy
YXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uQ29weSB9KTsKICAgICB9CiAKICAgICBBU1NFUlQo
c3RhdGUuc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuaAppbmRleCA5MGY4
NzVjMDY3YTVjNmExYTcwMDBkZGE1ZmEzODBhZTg2ZGQ3MTQ5Li5lYTQ5OWUwZWJkNjUxNmU5ODA4
YzQ5ZjFlYzA4NTI0NDlkY2VlOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5o
CkBAIC01OSw5ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEcmFnT3BlcmF0aW9uIHBs
YXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRpb24oKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdP
cGVyYXRpb24gZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0YSYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0YSYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIERyYWdPcGVyYXRpb24gZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnVXBkYXRl
ZChjb25zdCBEcmFnRGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGVyZm9ybURyYWdP
cGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYWdD
YW5jZWxsZWQoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgLy8gZHJhZyBsb2dp
YyBpcyBpbiBXZWJDb3JlLgogICAgIHZvaWQgc2V0RGlkSW5pdGlhdGVEcmFnKGJvb2wgaW5pdGlh
dGVkKSB7IG1fZGlkSW5pdGlhdGVEcmFnID0gaW5pdGlhdGVkOyB9CiAgICAgYm9vbCBkaWRJbml0
aWF0ZURyYWcoKSBjb25zdCB7IHJldHVybiBtX2RpZEluaXRpYXRlRHJhZzsgfQotICAgIERyYWdP
cGVyYXRpb24gc291cmNlRHJhZ09wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJh
Z09wZXJhdGlvbjsgfQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VEcmFnT3Bl
cmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2s7IH0K
ICAgICBjb25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX2RyYWdn
aW5nSW1hZ2VVUkw7IH0KICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29uc3QgSW50UG9pbnQmIG9m
ZnNldCkgeyBtX2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICBjb25zdCBJbnRQb2ludCYgZHJh
Z09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ09mZnNldDsgfQpAQCAtOTUsNyArOTUsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcyk7CiAKICAg
ICB2b2lkIHByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZUZyYW1lLCBEcmFnU291cmNl
QWN0aW9uLCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBEYXRhVHJhbnNmZXImLCBjb25zdCBJbnRQ
b2ludCYgZHJhZ09yaWdpbikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydERyYWcoRnJhbWUmIHNyYywg
Y29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZh
dWx0UGFzdGVib2FyZERhdGEpOworICAgIGJvb2wgc3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0
IERyYWdTdGF0ZSYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZh
dWx0UGFzdGVib2FyZERhdGEpOwogICAgIHN0YXRpYyBjb25zdCBJbnRTaXplJiBtYXhEcmFnSW1h
Z2VTaXplKCk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IE1heE9yaWdpbmFsSW1hZ2VBcmVhOwpA
QCAtMTA4LDExICsxMDgsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGRpc3BhdGNoVGV4dElucHV0
RXZlbnRGb3IoRnJhbWUqLCBjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY2FuUHJvY2Vzc0Ry
YWcoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGNvbmNsdWRlRWRpdERyYWcoY29uc3QgRHJh
Z0RhdGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERy
YWdEYXRhJik7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb25Gb3JMb2FkKGNvbnN0IERyYWdE
YXRhJik7Ci0gICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFn
RGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+LCBEcmFnT3BlcmF0aW9uJik7
Ci0gICAgYm9vbCB0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmLCBEcmFnT3BlcmF0aW9uJik7
Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CisgICAg
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0Rh
dGEmKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25Gb3JMb2FkKGNvbnN0
IERyYWdEYXRhJik7CisgICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3VtZW50RHJhZyhjb25z
dCBEcmFnRGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+LCBPcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiYpOworICAgIGJvb2wgdHJ5REhUTUxEcmFnKGNvbnN0IERyYWdEYXRhJiwg
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBk
cmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgdm9pZCBjbGVhckRyYWdDYXJldCgp
OwogICAgIGJvb2wgZHJhZ0lzTW92ZShGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IERyYWdEYXRhJik7
CiAgICAgYm9vbCBpc0NvcHlLZXlEb3duKGNvbnN0IERyYWdEYXRhJik7CkBAIC0xNTYsNyArMTU2
LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBtX2Ry
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7CiAgICAgRHJhZ1NvdXJjZUFjdGlvbiBtX2RyYWdTb3Vy
Y2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9uTm9uZSB9OwogICAgIGJvb2wgbV9kaWRJbml0aWF0
ZURyYWcgeyBmYWxzZSB9OwotICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VEcmFnT3BlcmF0aW9u
IHsgRHJhZ09wZXJhdGlvbk5vbmUgfTsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3aGVuIGEgZHJhZyBz
dGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0aGluIFdlYktpdAorICAgIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrOyAvLyBTZXQgaW4gc3RhcnREcmFn
IHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2ViS2l0LgogICAg
IEludFBvaW50IG1fZHJhZ09mZnNldDsKICAgICBVUkwgbV9kcmFnZ2luZ0ltYWdlVVJMOwogICAg
IGJvb2wgbV9pc1BlcmZvcm1pbmdEcm9wIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCBkNTU3N2VlZjExNDg4NjAzMWM4YTc3ZGM4YWU0M2EyNjRjOGVhY2U1
Li5lZWEyZTk5ZDIwYzhkMTI4OWNlYWI5ZTZlMTIxNTc1ODhiM2Q1MWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMzM0LDcgKzIzMzQsNyBAQCBzdGF0aWMgYm9vbCB0
YXJnZXRJc0ZyYW1lKE5vZGUqIHRhcmdldCwgRnJhbWUqJiBmcmFtZSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9E
cmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ09wZXJhdGlvbikKK3N0YXRpYyBPcHRpb25h
bDxEcmFnT3BlcmF0aW9uPiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24o
Y29uc3QgU3RyaW5nJiBkcmFnT3BlcmF0aW9uKQogewogICAgIGlmIChkcmFnT3BlcmF0aW9uID09
ICJjb3B5IikKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwpAQCAtMjM0MiwyMSAr
MjM0MiwyNCBAQCBzdGF0aWMgRHJhZ09wZXJhdGlvbiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25U
b0RyYWdPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnTwogICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbk1vdmU7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImxpbmsiKQogICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbkxpbms7Ci0gICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwor
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29udmVydERyYWdP
cGVyYXRpb25Ub0Ryb3Bab25lT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQorc3Rh
dGljIFN0cmluZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVPcGVyYXRpb24oT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uKQogewotICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7
Ci0gICAgY2FzZSBEcmFnT3BlcmF0aW9uQ29weToKLSAgICAgICAgcmV0dXJuICJjb3B5Il9zOwot
ICAgIGNhc2UgRHJhZ09wZXJhdGlvbk1vdmU6Ci0gICAgICAgIHJldHVybiAibW92ZSJfczsKLSAg
ICBjYXNlIERyYWdPcGVyYXRpb25MaW5rOgotICAgICAgICByZXR1cm4gImxpbmsiX3M7Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJjb3B5Il9zOworICAgIGlmIChvcGVyYXRpb24pIHsK
KyAgICAgICAgc3dpdGNoICgqb3BlcmF0aW9uKSB7CisgICAgICAgIGNhc2UgRHJhZ09wZXJhdGlv
bkNvcHk6CisgICAgICAgICAgICByZXR1cm4gImNvcHkiX3M7CisgICAgICAgIGNhc2UgRHJhZ09w
ZXJhdGlvbk1vdmU6CisgICAgICAgICAgICByZXR1cm4gIm1vdmUiX3M7CisgICAgICAgIGNhc2Ug
RHJhZ09wZXJhdGlvbkxpbms6CisgICAgICAgICAgICByZXR1cm4gImxpbmsiX3M7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KKyAgICByZXR1
cm4gImNvcHkiX3M7CiB9CiAKIHN0YXRpYyBib29sIGhhc0Ryb3Bab25lVHlwZShEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlciwgY29uc3QgU3RyaW5nJiBrZXl3b3JkKQpAQCAtMjM3NiwxNSArMjM3
OSwxNSBAQCBzdGF0aWMgYm9vbCBmaW5kRHJvcFpvbmUoTm9kZSYgdGFyZ2V0LCBEYXRhVHJhbnNm
ZXImIGRhdGFUcmFuc2ZlcikKICAgICBmb3IgKDsgZWxlbWVudDsgZWxlbWVudCA9IGVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIGtleXdvcmRzKGVs
ZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2Via2l0ZHJvcHpvbmVBdHRy
KSwgdHJ1ZSk7CiAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwotICAgICAgICBEcmFnT3Bl
cmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMCwgc2l6ZSA9IGtleXdvcmRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAg
ICAgRHJhZ09wZXJhdGlvbiBvcCA9IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJh
dGlvbihrZXl3b3Jkc1tpXSk7Ci0gICAgICAgICAgICBpZiAob3AgIT0gRHJhZ09wZXJhdGlvbk5v
bmUpIHsKLSAgICAgICAgICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9u
Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wOworICAgICAgICAg
ICAgYXV0byBvcGVyYXRpb25Gcm9tS2V5d29yZCA9IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRv
RHJhZ09wZXJhdGlvbihrZXl3b3Jkc1tpXSk7CisgICAgICAgICAgICBpZiAob3BlcmF0aW9uRnJv
bUtleXdvcmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAg
ICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBvcGVyYXRpb25Gcm9tS2V5d29yZDsKICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBtYXRjaGVkIHx8IGhhc0Ry
b3Bab25lVHlwZShkYXRhVHJhbnNmZXIsIGtleXdvcmRzW2ldLnN0cmluZygpKTsKLSAgICAgICAg
ICAgIGlmIChtYXRjaGVkICYmIGRyYWdPcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlvbk5vbmUpCisg
ICAgICAgICAgICBpZiAobWF0Y2hlZCAmJiBkcmFnT3BlcmF0aW9uKQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChtYXRjaGVkKSB7CkBAIC0yMzk1LDIwICsy
Mzk4LDE5IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQsIERhdGFUcmFu
c2ZlciYgZGF0YVRyYW5zZmVyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRXZlbnRIYW5kbGVy
OjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJh
Z092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9v
bCBkcmFnZ2luZ0ZpbGVzKQorRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRI
YW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxlcykK
IHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRp
bmdEcm9wVGFyZ2V0KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3Vy
Y2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0
YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0LmRvY3VtZW50KCks
IFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMp
OwogICAgIGJvb2wgYWNjZXB0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRUeXBlLCB0YXJnZXQs
IGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAgIGlmICghYWNjZXB0KQogICAgICAgICBh
Y2NlcHQgPSBmaW5kRHJvcFpvbmUodGFyZ2V0LCBkYXRhVHJhbnNmZXIpOwogICAgIGRhdGFUcmFu
c2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIGlmIChhY2NlcHQgJiYgIWRhdGFU
cmFuc2Zlci0+ZHJvcEVmZmVjdElzVW5pbml0aWFsaXplZCgpKQotICAgICAgICByZXR1cm4geyB0
cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uKCkgfTsKKyAgICAgICAgcmV0
dXJuIHsgdHJ1ZSwgZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soKSB9Owog
ICAgIHJldHVybiB7IGFjY2VwdCwgV1RGOjpudWxsb3B0IH07CiB9CiAKLUV2ZW50SGFuZGxlcjo6
RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0FuZERyb3AoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1ha2VQYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJj
ZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0
UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPigpPiYgbWFrZVBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3Vy
Y2VPcGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZyYW1lPiBw
cm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAgICBpZiAoIW1fZnJhbWUudmlldygpKQpAQCAtMjQz
OCwxOSArMjQ0MCwxOSBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhh
bmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAgICAgICBGcmFtZSog
dGFyZ2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1lKG5ld1RhcmdldC5nZXQoKSwg
dGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAg
ICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0Fu
ZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmls
ZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxl
cigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0
aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAobmV3VGFyZ2V0KSB7
CiAgICAgICAgICAgICAvLyBBcyBwZXIgc2VjdGlvbiA3LjkuNCBvZiB0aGUgSFRNTCA1IHNwZWMu
LCB3ZSBtdXN0IGFsd2F5cyBmaXJlIGEgZHJhZyBldmVudCBiZWZvcmUgZmlyaW5nIGEgZHJhZ2Vu
dGVyLCBkcmFnbGVhdmUsIG9yIGRyYWdvdmVyIGV2ZW50LgogICAgICAgICAgICAgZGlzcGF0Y2hF
dmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwot
ICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChl
dmVudE5hbWVzKCkuZHJhZ2VudGVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVi
b2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgcmVz
cG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChldmVudE5hbWVzKCkuZHJh
Z2VudGVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VP
cGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0
YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogUmVjdXJzaW5nIGFnYWluIGhlcmUgZG9lc24ndCBtYWtlIHNlbnNlIGlm
IHRoZSBuZXdUYXJnZXQgYW5kIG1fZHJhZ1RhcmdldCB3ZXJlIGluIHRoZSBzYW1lIGZyYW1lLgog
ICAgICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0g
dGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtl
UGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAg
ICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5k
RHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5n
RmlsZXMpOwogICAgICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewotICAgICAgICAgICAg
YXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRh
cmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9w
ZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9
IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+
ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dp
bmdGaWxlcyk7CiAgICAgICAgICAgICBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJh
Z2xlYXZlRXZlbnQsICptX2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwog
ICAgICAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAg
ICAgIH0KQEAgLTI0NjQsMTIgKzI0NjYsMTIgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVz
cG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU0KICAg
ICAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgICAgICBpZiAodGFyZ2V0SXNGcmFtZShuZXdU
YXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAgaWYgKHRhcmdldEZyYW1l
KQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigp
LnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9u
LCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1l
LT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQs
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9IGVsc2UgaWYg
KG5ld1RhcmdldCkgewogICAgICAgICAgICAgLy8gTm90ZSwgd2hlbiBkZWFsaW5nIHdpdGggc3Vi
LWZyYW1lcywgd2UgbWF5IG5lZWQgdG8gZmlyZSBvbmx5IGEgZHJhZ292ZXIgZXZlbnQgYXMgYSBk
cmFnIGV2ZW50IG1heSBoYXZlIGJlZW4gZmlyZWQgZWFybGllci4KICAgICAgICAgICAgIGlmICgh
bV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQpCiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hF
dmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwot
ICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChl
dmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQsIG1ha2VQYXN0ZWJv
YXJkKCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICByZXNw
b25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50TmFtZXMoKS5kcmFn
b3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3Bl
cmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgICAgICBtX3Nob3VsZE9ubHlGaXJl
RHJhZ092ZXJFdmVudCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMjQ3NywyNSArMjQ3
OSwyNSBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRsZXI6OnVw
ZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAgIHJldHVybiByZXNwb25zZTsKIH0K
IAotdm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQs
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCit2b2lk
IEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdGaWxl
cykKIHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOwogCiAgICAgRnJh
bWUqIHRhcmdldEZyYW1lOwogICAgIGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQo
KSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAg
IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChldmVudCwgV1RG
TW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAg
ICAgICAgIHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJvcChldmVu
dCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxl
cyk7CiAgICAgfSBlbHNlIGlmIChtX2RyYWdUYXJnZXQpIHsKICAgICAgICAgZGlzcGF0Y2hFdmVu
dFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgZXZlbnQpOwogCi0g
ICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGlu
Z0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQp
LCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICBhdXRvIGRhdGFUcmFu
c2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1Rh
cmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFz
aywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50KGV2ZW50TmFtZXMo
KS5kcmFnbGVhdmVFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFuc2Zlci5nZXQo
KSk7CiAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAg
IH0KICAgICBjbGVhckRyYWdTdGF0ZSgpOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGVyZm9y
bURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0
aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitib29sIEV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdB
bmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZyYW1lPiBwcm90
ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKIApAQCAtMjUwMyw5ICsyNTA1LDkgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
LCBzdGQ6OnVuaXEKICAgICBib29sIHByZXZlbnRlZERlZmF1bHQgPSBmYWxzZTsKICAgICBpZiAo
dGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAg
ICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gdGFyZ2V0
RnJhbWUtPmV2ZW50SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwgV1RGTW92ZShw
YXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAg
IHByZXZlbnRlZERlZmF1bHQgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkucGVyZm9ybURy
YWdBbmREcm9wKGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb25NYXNr
LCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewotICAgICAg
ICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChtX2RyYWdU
YXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwg
ZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JEcm9wKG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJv
YXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIHByZXZl
bnRlZERlZmF1bHQgPSBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJvcEV2ZW50LCAq
bV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyKTsKICAgICAgICAgZGF0YVRyYW5zZmVy
LT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgfQpAQCAtMzcyOSwxMyArMzczMSwxMyBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkU3RhcnREcmFnKCkKICNlbmRpZgogfQogCi12b2lkIEV2
ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIE1heUV4dGVuZERyYWdTZXNzaW9uIG1heUV4
dGVuZERyYWdTZXNzaW9uKQordm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBk
cmFnT3BlcmF0aW9uTWFzaywgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gbWF5RXh0ZW5kRHJhZ1Nlc3Np
b24pCiB7CiAgICAgLy8gU2VuZCBhIGhpdCB0ZXN0IHJlcXVlc3Qgc28gdGhhdCBSZW5kZXJMYXll
ciBnZXRzIGEgY2hhbmNlIHRvIHVwZGF0ZSB0aGUgOmhvdmVyIGFuZCA6YWN0aXZlIHBzZXVkb2Ns
YXNzZXMuCiAgICAgcHJlcGFyZU1vdXNlRXZlbnQoT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpS
ZXF1ZXN0VHlwZT4geyBIaXRUZXN0UmVxdWVzdDo6UmVsZWFzZSwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9LCBldmVudCk7CiAKICAgICBpZiAoc2hvdWxk
RGlzcGF0Y2hFdmVudHNUb0RyYWdTb3VyY2VFbGVtZW50KCkpIHsKLSAgICAgICAgZHJhZ1N0YXRl
KCkuZGF0YVRyYW5zZmVyLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbihvcGVyYXRpb24pOworICAg
ICAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNldERlc3RpbmF0aW9uT3BlcmF0aW9uTWFz
ayhkcmFnT3BlcmF0aW9uTWFzayk7CiAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VF
bGVtZW50KGV2ZW50TmFtZXMoKS5kcmFnZW5kRXZlbnQsIGV2ZW50KTsKICAgICB9CiAgICAgaW52
YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwpAQCAtMzg2NSw3ICszODY3LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZl
bnQsIENoZWNrRHIKICAgICAvLyBPbmNlIHdlJ3JlIHBhc3QgdGhlIGh5c3RlcmVzaXMgcG9pbnQs
IHdlIGRvbid0IHdhbnQgdG8gdHJlYXQgdGhpcyBnZXN0dXJlIGFzIGEgY2xpY2sKICAgICBpbnZh
bGlkYXRlQ2xpY2soKTsKICAgICAKLSAgICBEcmFnT3BlcmF0aW9uIHNyY09wID0gRHJhZ09wZXJh
dGlvbk5vbmU7ICAgICAgCisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2s7CiAgICAgCiAgICAgLy8gVGhpcyBkb2VzIHdvcmsgb25seSBpZiB3ZSBtaXNzZWQg
YSBkcmFnRW5kLiBEbyBpdCBhbnl3YXksIGp1c3QgdG8gbWFrZSBzdXJlIHRoZSBvbGQgZGF0YVRy
YW5zZmVyIGdldHMgbnVtYmVkLgogICAgIC8vIEZJWE1FOiBDb25zaWRlciBkb2luZyB0aGlzIGVh
cmxpZXIgaW4gdGhpcyBmdW5jdGlvbiBhcyB0aGUgZWFybGllc3QgcG9pbnQgd2UncmUgc3VyZSBp
dCB3b3VsZCBiZSBzYWZlIHRvIGRyb3AgYW4gb2xkIGRyYWcuCkBAIC0zOTAwLDcgKzM5MDIsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogCiAgICAgICAgIGlmIChtX21vdXNlRG93bk1heVN0
YXJ0RHJhZykgewogICAgICAgICAgICAgLy8gR2F0aGVyIHZhbHVlcyBmcm9tIERIVE1MIGVsZW1l
bnQsIGlmIGl0IHNldCBhbnkuCi0gICAgICAgICAgICBzcmNPcCA9IGRyYWdTdGF0ZSgpLmRhdGFU
cmFuc2Zlci0+c291cmNlT3BlcmF0aW9uKCk7CisgICAgICAgICAgICBzb3VyY2VPcGVyYXRpb25N
YXNrID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRpb25NYXNrKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFl1Y2ssIGEgZHJhZ2dlZEltYWdlOm1vdmVUbzog
bWVzc2FnZSBjYW4gYmUgZmlyZWQgYXMgYSByZXN1bHQgb2Yga2lja2luZyBvZmYgdGhlCiAgICAg
ICAgICAgICAvLyBkcmFnIHdpdGggZHJhZ0ltYWdlISBCZWNhdXNlIG9mIHRoYXQgZHVtYiByZWVu
dHJhbmN5LCB3ZSBtYXkgdGhpbmsgd2UndmUgbm90CkBAIC0zOTExLDcgKzM5MTMsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmVudCwgQ2hlY2tEcgogICAgIAogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJh
ZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0gICAgICAgIG1fZGlk
U3RhcnREcmFnID0gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLnN0YXJ0RHJhZyhtX2Zy
YW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91c2VEb3duQ29udGVu
dHNQb3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKKyAgICAgICAgbV9kaWRT
dGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3RhcnREcmFnKG1fZnJh
bWUsIGRyYWdTdGF0ZSgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBldmVudC5ldmVudCgpLCBtX21v
dXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGhhc05vbkRlZmF1bHRQYXN0ZWJvYXJkRGF0YSk7CiAg
ICAgICAgIC8vIEluIFdlYktpdDIgd2UgY291bGQgcmUtZW50ZXIgdGhpcyBjb2RlIGFuZCBzdGFy
dCBhbm90aGVyIGRyYWcuCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVzZXMgcHJvYmxlbXMg
d2l0aCB0aGUgb3duZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkIGFuZCB0aGUgcHJvbWlzZWQgdHlw
ZXMuCiAgICAgICAgIGlmIChtX2RpZFN0YXJ0RHJhZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKaW5kZXggNmZmYzgzYzAxMmZmZTA5NTA0NjQxNDA1MTE2MWQ3NTA2YWYxOTJhMS4uMjdj
YWU2MWVkMTE4MzRhY2M1NDUyZGI2Y2I5MjNiMzI5NjY4Y2YyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCkBAIC0xNjMsMTEgKzE2MywxMSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICBzdHJ1Y3QgRHJhZ1RhcmdldFJlc3BvbnNlIHsKICAgICAgICAgYm9v
bCBhY2NlcHQgeyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVy
YXRpb247CisgICAgICAgIE9wdGlvbmFsPE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPj4gb3BlcmF0
aW9uTWFzazsKICAgICB9OwotICAgIERyYWdUYXJnZXRSZXNwb25zZSB1cGRhdGVEcmFnQW5kRHJv
cChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBi
b29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHZvaWQgY2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVy
YXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3Ao
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYs
IERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgRHJhZ1RhcmdldFJlc3Bv
bnNlIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IHN0
ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiwgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIHZvaWQgY2FuY2VsRHJhZ0Fu
ZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAg
ICBib29sIHBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29s
IGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgdXBkYXRlRHJhZ1N0YXRlQWZ0ZXJFZGl0RHJhZ0lm
TmVlZGVkKEVsZW1lbnQmIHJvb3RFZGl0YWJsZUVsZW1lbnQpOwogICAgIFJlZlB0cjxFbGVtZW50
PiBkcmFnZ2VkRWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCkBAIC0yNjgsNyArMjY4LDcgQEAgcHVi
bGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBEcmFnT3Bl
cmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpObyk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIE1heUV4dGVuZERyYWdTZXNz
aW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKTsKICNlbmRpZgogCiAgICAgdm9pZCBmb2N1
c0RvY3VtZW50VmlldygpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgZGlzcGF0Y2hEcmFnRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYsIERhdGFUcmFuc2ZlciYpOwotICAgIERyYWdUYXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdF
bnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQm
IHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+JiYgLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIERyYWdU
YXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBPcHRpb25TZXQ8RHJhZ09wZXJh
dGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgdm9pZCBpbnZhbGlkYXRlRGF0YVRyYW5z
ZmVyKCk7CiAKICAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9n
dGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDdkMDUyY2ZlMThhZWI1MzhiZTY2MzlhZjAz
MGVjN2RkZWUwZTJlMTMuLmQ3MWFiMWRmZTQ0YWFiNmEyYzk1Y2M2MjVlMmFmODZiNDM0NDc5NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01
MCwxMyArNTAsMTMgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBE
cmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgcmV0dXJuIGRyYWdEYXRhLmZsYWdzKCkgJiBEcmFnQXBw
bGljYXRpb25Jc0NvcHlLZXlEb3duOwogfQogCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVy
OjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdP
cGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBk
cmFnRGF0YSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBpbmNvbXBsZXRlCiAgICAg
aWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9u
Q29weTsKIAotICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCiBjb25zdCBJbnRTaXplJiBEcmFnQ29udHJvbGxlcjo6bWF4RHJhZ0ltYWdl
U2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxl
ck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IDg1YmQ0OGFjYzIyNGQwZTc4NGIzMWMyODQ1YWQwNjg1N2JkODEwMjEuLmM2MDNmYmRkYTQz
N2NkYThhZDM4NDUzYTdkNTU2ZmQ0ZjU0OTRmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMTAgKzY0LDEwIEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIHJldHVy
biBkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsKIH0KICAg
ICAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJh
Z0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6
OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIGlmIChkcmFn
RGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCkKLSAgICAgICAgcmV0dXJuIERy
YWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgYm9v
bCBtYXlDb250YWluVVJMOwogICAgIGlmIChjYW5Mb2FkRGF0YUZyb21EcmFnZ2luZ1Bhc3RlYm9h
cmQoKSkKQEAgLTc2LDEyICs3NiwxMiBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpk
cmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAgICAgbWF5Q29udGFp
blVSTCA9IGRyYWdEYXRhLmNvbnRhaW5zVVJMVHlwZUlkZW50aWZpZXIoKTsKIAogICAgIGlmICgh
bWF5Q29udGFpblVSTCAmJiAhZHJhZ0RhdGEuY29udGFpbnNQcm9taXNlKCkpCi0gICAgICAgIHJl
dHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAog
ICAgIGlmICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwgKCEoZHJhZ0RhdGEuZmxhZ3MoKSAmIChE
cmFnQXBwbGljYXRpb25IYXNBdHRhY2hlZFNoZWV0IHwgRHJhZ0FwcGxpY2F0aW9uSXNTb3VyY2Up
KSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAotICAgIHJldHVybiBEcmFn
T3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiBjb25zdCBJbnRT
aXplJiBEcmFnQ29udHJvbGxlcjo6bWF4RHJhZ0ltYWdlU2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKaW5kZXggMmQ0NmQ2YjIzZWEzNzIyOGEy
NDAyNTdiNzM0Njk3MThmNjBiMDg1ZS4uM2RhNGEzODI2NDQ1YjcxY2NhZWM0YjEyNWY3NDkxYmU1
NTQ0ZDVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xs
ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2lu
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQyLDEzICs0MiwxNSBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJY29u
Qm90dG9tSW5zZXQgPSAzOwogCiBjb25zdCBmbG9hdCBEcmFnQ29udHJvbGxlcjo6RHJhZ0ltYWdl
QWxwaGEgPSAwLjc1ZjsKIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJh
dGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBE
cmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7
Ci0gICAgLy9GSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lCi0gICAgLy9pZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdl
IGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQK
LSAgICAvL0lmIHRoaXMgY2FuIGJlIGRldGVybWluZWQgZnJvbSB3aXRoaW4gV2ViQ29yZSBvcGVy
YXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxsZWQgaW50byAKLSAgICAvL1dlYkNvcmUgaXRzZWxmCi0g
ICAgcmV0dXJuIGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnID8g
RHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAvLyBGSVhNRTogdG8g
bWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIFdURjo6bnVsbG9wdC4K
KyAgICAvLyBJZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2Us
IG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQuCisgICAgLy8gSWYgdGhpcyBjYW4g
YmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJhdGlvbkZvckRyYWcgY2FuIGJl
IHB1bGxlZCBpbnRvCisgICAgLy8gV2ViQ29yZSBpdHNlbGYuCisgICAgaWYgKGRyYWdEYXRhLmNv
bnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQorICAgICAgICByZXR1cm4gRHJhZ09w
ZXJhdGlvbkNvcHk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogYm9vbCBEcmFnQ29u
dHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnRGF0YS5jcHAKaW5kZXggOGY2NzU1ZjU3NjFhMTQ1NGU5YjQwNjAwMmUwODg0M2M2Yjcx
ODg3Yy4uZThjNDBmNTU5MDJkOTNhNWE4NzJhYzBlZTBmZGFjYzNmOWVkMmZjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdE
YXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERy
YWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYg
ZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
LCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFj
dGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGll
bnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAg
LCBtX3BsYXRmb3JtRHJhZ0RhdGEoZGF0YSkKQEAgLTQyLDcgKzQyLDcgQEAgRHJhZ0RhdGE6OkRy
YWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG8KIHsgIAogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiwg
Y29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9z
aXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9u
RmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9u
QWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlv
bkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlv
bkFjdGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAg
ICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFn
RGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNDIxYTI5OTQzYjNkMTBk
NDg1ZGE1Y2U5ZWZkNTNlM2ZhZmJjMGYwZC4uMzFiOGFiOWVlODA2ZmUwZDFmMmJkZDc5N2I1YTNh
ZWY5NzY3MWY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBAIC03NSwxMyArNzUs
MTMgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgRHJhZ2dpbmdQdXJwb3NlIHsgRm9yRWRpdGlu
ZywgRm9yRmlsZVVwbG9hZCwgRm9yQ29sb3JDb250cm9sIH07CiAKICAgICAvLyBjbGllbnRQb3Np
dGlvbiBpcyB0YWtlbiB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYWcgZXZlbnQgd2l0aGlu
IHRoZSB0YXJnZXQgd2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0b3AgbGVmdAotICAgIFdFQkNP
UkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiwgRHJh
Z0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRpb25TZXQ8RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigpKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3Qg
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9u
ZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25B
Y3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0RhdGFSZWYsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0Fw
cGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFn
RGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3Qg
U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4s
IERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERy
YWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CiAgICAg
Ly8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktpdDIgSVBDIGJlY2F1
c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVjb2RlciBhbmQgbm90
IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVsdDsKICNpZiBQTEFU
Rk9STShXSU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAm
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRp
b25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVfRVhQT1JUIERyYWdE
YXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlv
bk5vbmUpOwogICAgIGNvbnN0IERyYWdEYXRhTWFwJiBkcmFnRGF0YU1hcCgpOwogICAgIHZvaWQg
Z2V0RHJhZ0ZpbGVEZXNjcmlwdG9yRGF0YShpbnQmIHNpemUsIFN0cmluZyYgcGF0aG5hbWUpOwog
ICAgIHZvaWQgZ2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9pZCogZGF0YUJsb2Ip
OwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfQogICAgIERyYWdBcHBs
aWNhdGlvbkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlvbkZsYWdzOyB9
CiAgICAgRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bURyYWdEYXRhOyB9Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQorICAg
IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSBj
b25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsgfQogICAgIGJvb2wg
Y29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5ID0gQ29udmVydEZpbGVuYW1lcykg
Y29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BsYWluVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgY29u
dGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2UgPSBEcmFnZ2luZ1B1cnBvc2U6
OkZvckVkaXRpbmcpIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgSW50
UG9pbnQgbV9jbGllbnRQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2JhbFBvc2l0aW9uOwog
ICAgIERyYWdEYXRhUmVmIG1fcGxhdGZvcm1EcmFnRGF0YTsKLSAgICBEcmFnT3BlcmF0aW9uIG1f
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKICAgICBEcmFnQXBwbGljYXRpb25GbGFn
cyBtX2FwcGxpY2F0aW9uRmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9maWxlTmFtZXM7CiAg
ICAgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gbV9kcmFnRGVzdGluYXRpb25BY3Rp
b25NYXNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0Rh
dGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2Eu
bW0KaW5kZXggOWNjYWZjMGNkN2E4MzZlNmM5MWUxZjIzM2UxODkwYjMzOGE0ZDM0MC4uM2ExMjg5
ZDRiY2M1NjA5NmFkZWZkMDU4MDA3NDNlZDA5YzY0YzZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0xMTYsNyArMTE2LDcgQEAgc3Rh
dGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3RlYm9hcmRUeXBlKCkKICNlbmRpZgogfQogCi1EcmFn
RGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291
cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxE
cmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpE
cmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25T
ZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBt
X2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihn
bG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRhKQpAQCAtMTMxLDcg
KzEzMSw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7CiB9CiAKLURyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNl
dDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRh
OjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFn
cyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rp
b25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1f
Z2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEo
MCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKaW5kZXgg
MGMwMTNjZjY3ZWU1ODViY2VlZTQ0OTViYjQ2MDExNmFjMDFkYzFkMS4uMDhjMmJlYTdjNmE4ZDUw
NjViZDE3YzBmMTI4MDQ0MDQ1YmI4ZTkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0d0a1V0aWxpdGllcy5jcHAKQEAgLTE0OSw0OSArMTQ5LDQ5IEBAIHVuc2lnbmVkIHN0YXRl
TW9kaWZpZXJGb3JHZGtCdXR0b24odW5zaWduZWQgYnV0dG9uKQogICAgIHJldHVybiAxIDw8ICg4
ICsgYnV0dG9uIC0gMSk7CiB9CiAKLURyYWdPcGVyYXRpb24gZ2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbihHZGtEcmFnQWN0aW9uIGdka0FjdGlvbikKK09wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0RyYWdBY3Rpb24gZ2RrQWN0aW9uKQog
ewotICAgIC8vIFdlIGhhdmUgbm8gZ29vZCB3YXkgdG8gZGV0ZWN0IERyYWdPcGVyYXRpb25FdmVy
eSBvdGhlciB0aGFuCisgICAgLy8gV2UgaGF2ZSBubyBnb29kIHdheSB0byBkZXRlY3QgYW55RHJh
Z09wZXJhdGlvbigpIG90aGVyIHRoYW4KICAgICAvLyB0byB1c2UgaXQgd2hlbiBhbGwgYXBwbGlj
YWJsZSBmbGFncyBhcmUgb24uCiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fQ09QWQog
ICAgICAgICAmJiBnZGtBY3Rpb24gJiBHREtfQUNUSU9OX01PVkUKICAgICAgICAgJiYgZ2RrQWN0
aW9uICYgR0RLX0FDVElPTl9MSU5LKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkV2ZXJ5
OworICAgICAgICByZXR1cm4gYW55RHJhZ09wZXJhdGlvbigpOwogCi0gICAgdW5zaWduZWQgYWN0
aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGFj
dGlvbjsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9DT1BZKQotICAgICAgICBhY3Rp
b24gfD0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlv
bkNvcHkpOwogICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX01PVkUpCi0gICAgICAgIGFj
dGlvbiB8PSBEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0
aW9uTW92ZSk7CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJT05fTElOSykKLSAgICAgICAg
YWN0aW9uIHw9IERyYWdPcGVyYXRpb25MaW5rOworICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVy
YXRpb25MaW5rKTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihhY3Rp
b24pOworICAgIHJldHVybiBhY3Rpb247CiB9CiAKLUdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlv
blRvR2RrRHJhZ0FjdGlvbnMoRHJhZ09wZXJhdGlvbiBjb3JlQWN0aW9uKQorR2RrRHJhZ0FjdGlv
biBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4g
Y29yZUFjdGlvbikKIHsKICAgICB1bnNpZ25lZCBnZGtBY3Rpb24gPSAwOwotICAgIGlmIChjb3Jl
QWN0aW9uID09IERyYWdPcGVyYXRpb25Ob25lKQorICAgIGlmIChjb3JlQWN0aW9uLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlvbik7
CiAKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlmIChjb3Jl
QWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgZ2RrQWN0aW9uIHw9
IEdES19BQ1RJT05fQ09QWTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Nb3Zl
KQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkKICAgICAg
ICAgZ2RrQWN0aW9uIHw9IEdES19BQ1RJT05fTU9WRTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERy
YWdPcGVyYXRpb25MaW5rKQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25MaW5rKSkKICAgICAgICAgZ2RrQWN0aW9uIHw9IEdES19BQ1RJT05fTElOSzsKIAogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihnZGtBY3Rpb24pOwogfQogCi1HZGtEcmFn
QWN0aW9uIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oRHJhZ09wZXJhdGlvbiBj
b3JlQWN0aW9uKQorR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0
aW9uKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBjb3JlQWN0aW9uKQogewotICAgIGlmIChjb3Jl
QWN0aW9uID09IERyYWdPcGVyYXRpb25FdmVyeSB8fCBjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlv
bkNvcHkpCisgICAgaWYgKGNvcmVBY3Rpb24gPT0gYW55RHJhZ09wZXJhdGlvbigpIHx8IGNvcmVB
Y3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICByZXR1cm4gR0RLX0FD
VElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAg
aWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICByZXR1
cm4gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkxp
bmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkxpbmspKQogICAg
ICAgICByZXR1cm4gR0RLX0FDVElPTl9MSU5LOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtE
cmFnQWN0aW9uPigwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRp
ZXMuaAppbmRleCA1YWFiNGViNzlhMjFlOWE0ZjUyNjYzOTRmZTY2MDZmODQyODY1MDg0Li4xOThi
YzhlMjUwOWM0NTVkMjMyNDRhNzgxMTNhZWZjYTBlOGZlYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCkBAIC01MSw4ICs1MSw4IEBAIFN0cmluZyBkZWZh
dWx0R3RrU3lzdGVtRm9udCgpOwogCiBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBzdGF0ZU1vZGlm
aWVyRm9yR2RrQnV0dG9uKHVuc2lnbmVkIGJ1dHRvbik7CiAKLVdFQkNPUkVfRVhQT1JUIERyYWdP
cGVyYXRpb24gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uKTsKLVdF
QkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMo
RHJhZ09wZXJhdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRp
b25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oRHJhZ09wZXJhdGlvbik7CitXRUJDT1JFX0VYUE9SVCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtE
cmFnQWN0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRv
R2RrRHJhZ0FjdGlvbnMoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKK1dFQkNPUkVfRVhQT1JU
IEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAppbmRleCBlZTBkOGIyNjBjY2NiNGRi
Y2UxMzBlZDMzMWM4OTNjMGRjMGZiMDNiLi4xODg3MGYyMjc1Mjg3Yjk3ZGFhMzllODAzYmM3ZTJi
MzhlNWVmNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0Rh
dGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdpbi5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMiBCYWlk
dSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC00MSw3ICs0
MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBE
cmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKKyAgICBPcHRpb25TZXQ8RHJhZ09w
ZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3Mp
CiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9iYWxQ
b3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YSgwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAyZDQzYmFlYmY4ZTEy
NmJlOWY5ZWE5YTFmY2JmMzNlN2RiNmY5ZGUwLi5hYmVlMjU1NDdjZDNmNzc0ODBkYTk3Mjc5YzA3
ZTA4MjNkZDIyOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3Mv
VUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEku
aApAQCAtMTAyNSwxMiArMTAyNSw2IEBAIENHRmxvYXQgVUlSb3VuZFRvU2NyZWVuU2NhbGUoQ0dG
bG9hdCB2YWx1ZSwgVUlTY3JlZW4gKik7CiAKIFdURl9FWFRFUk5fQ19FTkQKIAotdHlwZWRlZiBO
U19PUFRJT05TKE5TVUludGVnZXIsIFVJRHJhZ09wZXJhdGlvbikKLXsKLSAgICBVSURyYWdPcGVy
YXRpb25Ob25lID0gMCwKLSAgICBVSURyYWdPcGVyYXRpb25FdmVyeSA9IE5TVUludGVnZXJNYXgs
Ci19OwotCiBAaW50ZXJmYWNlIFVJRHJhZ0ludGVyYWN0aW9uICgpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgYXNzaWduLCBnZXR0ZXI9X2xpZnREZWxheSwgc2V0dGVyPV9zZXRMaWZ0RGVsYXk6KSBO
U1RpbWVJbnRlcnZhbCBsaWZ0RGVsYXk7CiAtICh2b2lkKV9zZXRBbGxvd3NQb2ludGVyRHJhZ0Jl
Zm9yZUxpZnREZWxheTooQk9PTClhbGxvd3NQb2ludGVyRHJhZ0JlZm9yZUxpZnREZWxheTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDNmZGQ4MDQ5ZDQ5NjA4
YmFlZDBhZTA2ZTZlYmQwNzE0YzE3ODY5MmEuLjU5YjM1M2NjMTFiMmRhZDA1OWFkYjMyOTdhZWFk
ODVmNjQ1MTE3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpA
QCAtMjA5LDYgKzIwOSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xh
cmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0JywKICAgICAgICAgJ1dl
YkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9y
V29ya2VySWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpEcmFnT3BlcmF0aW9uJywgICMg
RklYTUU6IFJlbW92ZSBhZnRlciBjb252ZXJ0aW5nIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gdG8g
ZW51bSBjbGFzcy4KICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6TGliV2ViUlRD
U29ja2V0SWRlbnRpZmllcicsCkBAIC01ODgsNiArNTg5LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5
cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcic6
IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCiAgICAgICAgICdXZWJLaXQ6OkRv
Y3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5o
IiddLAogICAgICAgICAnV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kJzogWyc8V2ViQ29yZS9E
cmFnQWN0aW9ucy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6RHJhZ09wZXJhdGlvbic6IFsnPFdl
YkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHMnOiBbJzxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwKICAgICAgICAgJ1dl
YkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVDaG9vc2VyLmg+J10s
CiAgICAgICAgICdXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJzogWyc8V2ViQ29yZS9T
aGFyZURhdGEuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oCmluZGV4IGM4NjhjMjc3M2Y4ZGJkMzI3OGIyMDUw
YTA4ZTZmOGI1N2RiOGJiNGQuLjg5Nzg5ZjM4MmE5ZTY3NGY5MTFlOWM4OTE0Y2JhNzZhOWZlYzkw
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0
aW9uc0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0Ry
YWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtNDAsNCArNDAsMjQgQEAgaW5saW5lIE9wdGlvblNldDxX
ZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrKFcKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgVVNFKEFQUEtJVCkKK2lubGluZSBP
cHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKE5T
RHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IHJlc3VsdDsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uQ29w
eSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAg
aWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdP
cGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkK
KyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAg
aWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdP
cGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkRlbGV0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ0NDM4MTEyOWY5OTc1YjE5MzFiOTQ2NDM5OTZiOGRh
Y2Y2NWY0OWIuLmNlOGYyZjk4ZDEwYmJhYjhmZTUyMTE1YWI0ZDc2ZTQzYThiNWU3NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTUz
MSw3ICsxNTMxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBlbmNvZGVyIDw8
IGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCk7CiAgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5nbG9i
YWxQb3NpdGlvbigpOwotICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFnRGF0YS5kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2soKSk7CisgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5kcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2soKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oZHJhZ0RhdGEuZmxh
Z3MoKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5wYXN0
ZWJvYXJkTmFtZSgpOwpAQCAtMTU1MCw4ICsxNTUwLDggQEAgYm9vbCBBcmd1bWVudENvZGVyPERy
YWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERyYWdEYXRhJiBkcmFnRGF0YSkKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGdsb2JhbFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2s7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSkK
KyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgYXBwbGlj
YXRpb25GbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJhZ1NvdXJjZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNl
LmgKaW5kZXggMzhhMDY2ZjVjMzBlYTBlNGZmMGQ4MzE1Zjk0NmM1YTcxM2JjMTc2Zi4uYjVmY2Jm
MDlkOTkzZDIzODYxYzZiODkyYjQ3MjAyYjQ3YzdkMjRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IERyYWdTb3VyY2UoR3RrV2lkZ2V0Kik7CiAgICAgfkRyYWdTb3VyY2UoKTsK
IAotICAgIHZvaWQgYmVnaW4oV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmKTsKKyAgICB2b2lkIGJlZ2luKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmKTsKIAogcHJpdmF0ZToKICAgICBHdGtXaWRnZXQq
IG1fd2ViVmlldyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAKaW5kZXggM2VkNGNjYzMyMzY5ZTNjZjNkODAyMmZh
Y2MzYWYyMzhlZWQ4NjM1YS4uZWZkY2VmMjVkM2JiNzRmMGE5YmI3YjNkMTkwOTA3ZDViOTFlNDRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNl
R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNl
R3RrMy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBEcmFnU291cmNlOjp+RHJhZ1NvdXJjZSgpCiAg
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fd2ViVmlldywgdGhpcyk7
CiB9CiAKLXZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRh
dGEsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGlt
YWdlKQordm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0
YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAgaWYgKG1fZHJhZykgewogICAgICAgICBndGtfZHJh
Z19jYW5jZWwobV9kcmFnLmdldCgpKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIERyYWdTb3Vy
Y2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBEcmFnT3BlcmF0aW9uIG9w
ZXJhdGlvbiwgUgogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmNhblNtYXJ0UmVwbGFjZSgpKQog
ICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9z
dGF0aWNfc3RyaW5nKCJhcHBsaWNhdGlvbi92bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKSwgMCwg
RHJhZ1RhcmdldFR5cGU6OlNtYXJ0UGFzdGUpOwogCi0gICAgbV9kcmFnID0gZ3RrX2RyYWdfYmVn
aW5fd2l0aF9jb29yZGluYXRlcyhtX3dlYlZpZXcsIGxpc3QuZ2V0KCksIGRyYWdPcGVyYXRpb25U
b0dka0RyYWdBY3Rpb25zKG9wZXJhdGlvbiksIEdES19CVVRUT05fUFJJTUFSWSwgbnVsbHB0ciwg
LTEsIC0xKTsKKyAgICBtX2RyYWcgPSBndGtfZHJhZ19iZWdpbl93aXRoX2Nvb3JkaW5hdGVzKG1f
d2ViVmlldywgbGlzdC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMob3BlcmF0
aW9uTWFzayksIEdES19CVVRUT05fUFJJTUFSWSwgbnVsbHB0ciwgLTEsIC0xKTsKICAgICBpZiAo
aW1hZ2UpIHsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2VTdXJmYWNlKGlt
YWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKSk7CiAgICAgICAgIC8vIFVzZSB0aGUgY2VudGVyIG9m
IHRoZSBkcmFnIGltYWdlIGFzIGhvdHNwb3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCmluZGV4IGQ4YjQzNTY5MzRlZjUyODI0OTk2
MTBlNzc5YWYwMmVlZDY4YmE4YjYuLmM2YWNiNWEyNzYyNDdhMjUwNDdiNmI0MWI0ZjRkMmIxZjFm
ZjU3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1Nv
dXJjZUd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1Nv
dXJjZUd0azQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIERyYWdTb3VyY2U6On5EcmFnU291cmNlKCkK
IHsKIH0KIAotdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9u
RGF0YSwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYg
aW1hZ2UpCit2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25E
YXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaywgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4mJiBpbWFnZSkKIHsKICAgICBpZiAobV9kcmFnKSB7CiAgICAgICAgIGdka19k
cmFnX2Ryb3BfZG9uZShtX2RyYWcuZ2V0KCksIEZBTFNFKTsKQEAgLTg5LDcgKzg5LDcgQEAgdm9p
ZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgRHJhZ09w
ZXJhdGlvbiBvcGVyYXRpb24sIFIKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRf
c3VyZmFjZShndGtfd2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CiAgICAgYXV0byogZGV2
aWNlID0gZ2RrX3NlYXRfZ2V0X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdChn
dGtfd2lkZ2V0X2dldF9kaXNwbGF5KG1fd2ViVmlldykpKTsKICAgICBHUmVmUHRyPEdka0NvbnRl
bnRQcm92aWRlcj4gcHJvdmlkZXIgPSBhZG9wdEdSZWYoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3
X3VuaW9uKHByb3ZpZGVycy5kYXRhKCksIHByb3ZpZGVycy5zaXplKCkpKTsKLSAgICBtX2RyYWcg
PSBhZG9wdEdSZWYoZ2RrX2RyYWdfYmVnaW4oc3VyZmFjZSwgZGV2aWNlLCBwcm92aWRlci5nZXQo
KSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMob3BlcmF0aW9uKSwgMCwgMCkpOworICAg
IG1fZHJhZyA9IGFkb3B0R1JlZihnZGtfZHJhZ19iZWdpbihzdXJmYWNlLCBkZXZpY2UsIHByb3Zp
ZGVyLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhvcGVyYXRpb25NYXNrKSwg
MCwgMCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kcmFnLmdldCgpLCAiZG5kLWZpbmlzaGVk
IiwgR19DQUxMQkFDSygrW10oR2RrRHJhZyogZ3RrRHJhZywgZ3BvaW50ZXIgdXNlckRhdGEpIHsK
ICAgICAgICAgYXV0byYgZHJhZyA9ICpzdGF0aWNfY2FzdDxEcmFnU291cmNlKj4odXNlckRhdGEp
OwogICAgICAgICBpZiAoZHJhZy5tX2RyYWcuZ2V0KCkgIT0gZ3RrRHJhZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKaW5kZXggOGMzYjEwZTEwNTBjMThk
OGUxODE0NDJjOTg0ZDkwMjQ5Y2E4N2FjMC4uYTAwNDUwMGIwZGVmNjljOGQ4NWU2NGIyNWY3MjFi
ZDk4MDFjMTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4gbV9wb3NpdGlvbjsKICAgICB1bnNpZ25lZCBtX2RhdGFSZXF1ZXN0Q291bnQgeyAw
IH07CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4gbV9zZWxlY3Rpb25EYXRh
OwotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9vcGVyYXRpb24geyBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IG1f
b3BlcmF0aW9uOwogI2lmIFVTRShHVEs0KQogICAgIEdSZWZQdHI8R0NhbmNlbGxhYmxlPiBtX2Nh
bmNlbGxhYmxlOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggYzEzYjI5YjMxZGM1NThiZTIwZWNkZWEzN2UwZmNj
MzUyOTc0ZDUxMy4uMWM1MTk1ZjI3NjY0ZDdiNjNiOTBjMDY0ZWNhMDMwYWIzMmZjOWE0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAKQEAgLTIxNywxMSArMjE3LDExIEBAIHZvaWQgRHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlv
bigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBwYWdlLT5jdXJy
ZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlmIChvcGVyYXRpb24gPT0gbV9vcGVyYXRpb24pCisg
ICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29wZXJhdGlvbikgfHwgKm9wZXJhdGlvbiA9PSAqbV9v
cGVyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9u
OwotICAgIGdka19kcmFnX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub1Npbmds
ZUdka0RyYWdBY3Rpb24obV9vcGVyYXRpb24pLCBHREtfQ1VSUkVOVF9USU1FKTsKKyAgICBnZGtf
ZHJhZ19zdGF0dXMobV9kcm9wLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0
aW9uKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9uIDogT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
KHsgfSkpLCBHREtfQ1VSUkVOVF9USU1FKTsKIH0KIAogdm9pZCBEcm9wVGFyZ2V0OjpsZWF2ZVRp
bWVyRmlyZWQoKQpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgRHJvcFRhcmdldDo6bGVhdmVUaW1l
ckZpcmVkKCkKICAgICBhdXRvKiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJ
VF9XRUJfVklFV19CQVNFKG1fd2ViVmlldykpOwogICAgIEFTU0VSVChwYWdlKTsKIAotICAgIERy
YWdEYXRhIGRyYWdEYXRhKCZtX3NlbGVjdGlvbkRhdGEudmFsdWUoKSwgKm1fcG9zaXRpb24sIGNv
bnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV93ZWJWaWV3LCAqbV9wb3NpdGlvbiksIERy
YWdPcGVyYXRpb25Ob25lKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmbV9zZWxlY3Rpb25EYXRh
LnZhbHVlKCksICptX3Bvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KG1f
d2ViVmlldywgKm1fcG9zaXRpb24pLCB7IH0pOwogICAgIHBhZ2UtPmRyYWdFeGl0ZWQoZHJhZ0Rh
dGEpOwogICAgIHBhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCmluZGV4
IDUxY2EzZTdiODIxODJmOGIwNTg2NGE0ZDQ3MTdjZjFiZTU0YWQ4NDUuLjM2MWU0ZmE1YzU1YTY4
YWQwMzFlMjcwMjFhNmQyOTdhN2VkOTU5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCkBAIC02Myw3ICs2Myw3IEBAIERyb3BU
YXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KDApOwogCiAgICAgICAgIGRyb3AuZW50ZXIoeyBj
bGFtcFRvSW50ZWdlcih4KSwgY2xhbXBUb0ludGVnZXIoeSkgfSk7Ci0gICAgICAgIHJldHVybiBk
cmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVyYXRpb24pOworICAg
ICAgICByZXR1cm4gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbihkcm9wLm1fb3Bl
cmF0aW9uID8gKmRyb3AubV9vcGVyYXRpb24gOiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyB9
KSk7CiAgICAgfSksIHRoaXMpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdCh0YXJnZXQsICJkcmFn
LW1vdGlvbiIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdk
a0Ryb3AsIGRvdWJsZSB4LCBkb3VibGUgeSwgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdka0RyYWdB
Y3Rpb24gewpAQCAtNzIsNyArNzIsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KEd0a1dpZGdl
dCogd2ViVmlldykKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9u
PigwKTsKIAogICAgICAgICBkcm9wLnVwZGF0ZSh7IGNsYW1wVG9JbnRlZ2VyKHgpLCBjbGFtcFRv
SW50ZWdlcih5KSB9KTsKLSAgICAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0Ry
YWdBY3Rpb24oZHJvcC5tX29wZXJhdGlvbik7CisgICAgICAgIHJldHVybiBkcmFnT3BlcmF0aW9u
VG9TaW5nbGVHZGtEcmFnQWN0aW9uKGRyb3AubV9vcGVyYXRpb24gPyAqZHJvcC5tX29wZXJhdGlv
biA6IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IH0pKTsKICAgICB9KSwgdGhpcyk7CiAKICAg
ICBnX3NpZ25hbF9jb25uZWN0KHRhcmdldCwgImRyYWctbGVhdmUiLCBHX0NBTExCQUNLKCtbXShH
dGtEcm9wVGFyZ2V0QXN5bmMqLCBHZGtEcm9wKiBnZGtEcm9wLCBncG9pbnRlciB1c2VyRGF0YSkg
ewpAQCAtMjczLDExICsyNzMsMTEgQEAgdm9pZCBEcm9wVGFyZ2V0OjpkaWRQZXJmb3JtQWN0aW9u
KCkKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICBhdXRvIG9wZXJhdGlvbiA9IHBhZ2UtPmN1cnJl
bnREcmFnT3BlcmF0aW9uKCk7Ci0gICAgaWYgKG9wZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKKyAg
ICBpZiAoKCFvcGVyYXRpb24gJiYgIW1fb3BlcmF0aW9uKSB8fCBvcGVyYXRpb24gPT0gbV9vcGVy
YXRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fb3BlcmF0aW9uID0gb3BlcmF0aW9uOwot
ICAgIGdka19kcm9wX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdB
Y3Rpb25zKG1fb3BlcmF0aW9uKSwgZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlvbiht
X29wZXJhdGlvbikpOworICAgIGdka19kcm9wX3N0YXR1cyhtX2Ryb3AuZ2V0KCksIGRyYWdPcGVy
YXRpb25Ub0dka0RyYWdBY3Rpb25zKG1fb3BlcmF0aW9uID8gKm1fb3BlcmF0aW9uIDogT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24oeyB9KSksIGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rp
b24obV9vcGVyYXRpb24gPyAqbV9vcGVyYXRpb24gOiBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4o
eyB9KSkpOwogfQogCiB2b2lkIERyb3BUYXJnZXQ6OmxlYXZlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNjVlNjljMmM1
NmVlNGM1MDMzOWQzNzM0NTM3MTU0NDE2M2NmZjkyZC4uMGFlZTRiYzkzODBjYjQ3Y2E0OTAwZDg1
NTZkNTFlMjRkOGYxNGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTMyMCw5ICszMjAsOSBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogfQogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLXZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhT
ZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uLCBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24sIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBkcmFnT3BlcmF0aW9uTWFzaywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1h
Z2UpCiB7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV0VCS0lUX1dFQl9WSUVXX0JB
U0UobV92aWV3V2lkZ2V0KSwgV1RGTW92ZShzZWxlY3Rpb24pLCBkcmFnT3BlcmF0aW9uLCBXVEZN
b3ZlKGRyYWdJbWFnZSkpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdFQktJVF9X
RUJfVklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0aW9uKSwgZHJhZ09wZXJh
dGlvbk1hc2ssIFdURk1vdmUoZHJhZ0ltYWdlKSk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZWQzOWU3NGRkZThkOTZhYjg1
NGMzYmViYTA1NTkzMGFiYjU2YzgyNi4uMjcwMDk5ODI2YjdiZWM1ZTMyYTZjYzA1YzQxZjFmYzE0
ZWM1OThiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNs
aWVudEltcGwuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rp
b25EaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmll
d1NuYXBzaG90KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOwogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYm
IGRyYWdJbWFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbigpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXgg
ZmU0ZTdhYzAzMWMxYjRmOWVhOTM5MDhiMzM2NWZiMTdkMmQyZTA1Ny4uNDRkYjQ0ODkwMzQ2ODVj
OTk5Yjc3M2E3NDI3NzM5YzE2ZmJiNTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTIwNTQsMTMgKzIwNTQs
MTMgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBBcmVhKFdlYktpdFdlYlZpZXdC
YXNlKiB3ZWJWaWV3QmFzZSwgY29uc3QgSW50UmUKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCi12b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiB3
ZWJWaWV3QmFzZSwgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24g
ZHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBpbWFnZSkKK3ZvaWQgd2Vi
a2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBT
ZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRy
YWdPcGVyYXRpb25NYXNrLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQogewogICAg
IFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAg
IGlmICghcHJpdi0+ZHJhZ1NvdXJjZSkKICAgICAgICAgcHJpdi0+ZHJhZ1NvdXJjZSA9IG1ha2VV
bmlxdWU8RHJhZ1NvdXJjZT4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwogCi0gICAgcHJpdi0+
ZHJhZ1NvdXJjZS0+YmVnaW4oV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbiwg
V1RGTW92ZShpbWFnZSkpOworICAgIHByaXYtPmRyYWdTb3VyY2UtPmJlZ2luKFdURk1vdmUoc2Vs
ZWN0aW9uRGF0YSksIGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGltYWdlKSk7CiAKICNpZiAh
VVNFKEdUSzQpCiAgICAgLy8gQSBkcmFnIHN0YXJ0aW5nIHNob3VsZCBwcmV2ZW50IGEgZG91Ymxl
LWNsaWNrIGZyb20gaGFwcGVuaW5nLiBUaGlzIG1pZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRl
eCAxYzRkZjEyN2VjNDhkNTc1NTY0ZGIwNDNmYjdhZjk1OTBmN2NjNzI0Li5lYjdmODZlMDhlNzM2
YWI3MDdiYTYxOTYwOTllNmUyOTliNjZjZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhX
ZWJLaXRXZWJWaWV3QmFzZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVBhZ2VDbG9zZWQoV2Vi
S2l0V2ViVmlld0Jhc2UqKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIHdlYmtp
dFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8V2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA+JiYpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJW
aWV3QmFzZSosIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+LCBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+JiYpOwogdm9pZCB3
ZWJraXRXZWJWaWV3QmFzZURpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJLaXRXZWJW
aWV3QmFzZSopOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KaW5kZXggMmUzOWVhNmNmZTgwMWUwODAxZTQ1YmZhODdjMDkzYzg5ZDI0YTBj
Mi4uNjliNjJkZTI1MmYxZDMwZjkyYjUxODE3Njg2YmYxMDgyZDg0MDQ3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTM5MTMsNyArMzkxMyw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRyYWdnZWRJbWFnZShOU0ltYWdlICosIENHUG9pbnQgZW5k
UG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyCiAgICAgc2VuZERyYWdFbmRUb1BhZ2UoZW5kUG9p
bnQsIG9wZXJhdGlvbik7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdl
KENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIFdlYlZp
ZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRp
b24gZHJhZ09wZXJhdGlvbk1hc2spCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICBOU1BvaW50IHdpbmRvd0ltYWdlTG9jID0gW1ttX3ZpZXcgd2luZG93XSBj
b252ZXJ0U2NyZWVuVG9CYXNlOk5TUG9pbnRGcm9tQ0dQb2ludChlbmRQb2ludCldOwpAQCAtMzky
Myw3ICszOTIzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UoQ0dQb2lu
dCBlbmRQb2ludCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKICAgICAvLyBQcmV2ZW50IHF1
ZXVlZCBtb3VzZURyYWdnZWQgZXZlbnRzIGZyb20gY29taW5nIGFmdGVyIHRoZSBkcmFnIGFuZCBm
YWtlIG1vdXNlVXAgZXZlbnQuCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gdHJ1
ZTsKIAotICAgIG1fcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50KHdpbmRvd01vdXNl
TG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xvYmFsUG9pbnQod2luZG93TW91c2VM
b2MsIFttX3ZpZXcgd2luZG93XSkpLCBvcGVyYXRpb24pOworICAgIG1fcGFnZS0+ZHJhZ0VuZGVk
KFdlYkNvcmU6OkludFBvaW50KHdpbmRvd01vdXNlTG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2Vi
Q29yZTo6Z2xvYmFsUG9pbnQod2luZG93TW91c2VMb2MsIFttX3ZpZXcgd2luZG93XSkpLCBjb3Jl
RHJhZ09wZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KIAogc3RhdGljIFdlYkNv
cmU6OkRyYWdBcHBsaWNhdGlvbkZsYWdzIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKE5TVmlldyAq
dmlldywgaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCkBAIC0zOTQ3LDcgKzM5NDcs
NyBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChpZCA8TlNE
cmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQo
W21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZp
ZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBv
aW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAg
ICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayhbbV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZv
OmRyYWdnaW5nSW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRp
b25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIFdl
YkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRy
YWdPcGVyYXRpb25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3Jl
bGVhc2VkKCksIGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogCiAg
ICAgbV9wYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKQEAgLTM5NTYsMTggKzM5
NTYsNDIgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQg
PE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlv
bkNvcHk7CiB9CiAKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24pCit7CisgICAgaWYgKCFkcmFnT3BlcmF0aW9u
KQorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHN3aXRjaCAoKmRy
YWdPcGVyYXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5OgorICAg
ICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25MaW5rOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTGluazsKKyAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljOgorICAgICAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uR2VuZXJpYzsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRl
OgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBjYXNlIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTW92
ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGU6CisgICAgICAgIHJldHVy
biBOU0RyYWdPcGVyYXRpb25EZWxldGU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7Cit9CisKIE5TRHJhZ09wZXJhdGlv
biBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dp
bmdJbmZvKQogewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQ
b2ludDpkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nTG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwogICAgIGF1dG8gZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFttX3ZpZXcg
X3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7
Ci0gICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOworICAg
IGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJ
bmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayk7CiAgICAgV2ViQ29yZTo6RHJhZ0RhdGEg
ZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbk1hc2ss
IGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dp
bmdJbmZvKSwgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAgICAgbV9wYWdlLT5kcmFnVXBk
YXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKIAog
ICAgIE5TSW50ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9wYWdlLT5jdXJyZW50
RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKIAotICAgIGlmIChtX3BhZ2UtPmN1cnJl
bnREcmFnT3BlcmF0aW9uKCkgPT0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYg
KCFtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpCiAgICAgICAgIG51bWJlck9mVmFsaWRJ
dGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwogCiAgICAg
TlNEcmFnZ2luZ0Zvcm1hdGlvbiBkcmFnZ2luZ0Zvcm1hdGlvbiA9IE5TRHJhZ2dpbmdGb3JtYXRp
b25Ob25lOwpAQCAtMzk3OSwxNCArNDAwMywxNCBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0lt
cGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAg
ICBpZiAoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nRm9ybWF0aW9uICE9IGRyYWdnaW5nRm9ybWF0aW9u
KQogICAgICAgICBbZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nRm9ybWF0aW9uOmRyYWdnaW5nRm9y
bWF0aW9uXTsKIAotICAgIHJldHVybiBtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7Cisg
ICAgcmV0dXJuIGtpdChtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpOwogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5n
SW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9p
bnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0
YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBk
cmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0lu
Zm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmll
dy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAgICAgbV9wYWdlLT5kcmFnRXhp
dGVkKGRyYWdEYXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogICAg
IG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgZHJhZ2dpbmdJbmZv
Lm51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNG
b3JEcm9wOwpAQCAtNDAwMiw3ICs0MDI2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURy
YWdPcGVyYXRpb24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2Vi
Q29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5k
cmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwg
W21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3
IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVh
c2VkKCksIGRyYWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9
IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3Jl
RHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
ayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJh
Z2dpbmdJbmZvKSk7CiAKICAgICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2lu
Z1Bhc3RlYm9hcmQudHlwZXM7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYWM1
ZDkwZWI1MzlmYjAwNjUyNjU1NThlMmU5NDYxNWE4NzRmYTZjYi4uMmU2NjYyOGFiNWM3MDhmZmYx
MjEwZTU4N2NkNGE4NTI5YjgwZTgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aApAQCAtMjUwLDcgKzI1MCw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgPSAwOwogI2Vsc2UKICAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmKSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMGZjOWI4ZTVjZDAzNjQ4ZWYxYjkzZGJiZTRhYzQx
ZjAzNjlkZDY4Ny4uZDQzYzc5MzI3MmU3MDlhNTNiZDUwMTg2ZGY3MGJlZTY5OGNhYTc3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNDI0LDExICsyNDI0
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFn
Q29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRp
b24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wg
bW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQs
IGNvbnN0IEludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IEludFJlY3QmIGVkaXRhYmxlRWxl
bWVudFJlY3QpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24sIFdlYkNv
cmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092
ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IElu
dFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IEludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3Qp
CiB7Ci0gICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGRyYWdPcGVyYXRpb24gPD0gRHJhZ09w
ZXJhdGlvbkRlbGV0ZSk7Ci0KLSAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nh
c3Q8RHJhZ09wZXJhdGlvbj4oZHJhZ09wZXJhdGlvbik7CisgICAgbV9jdXJyZW50RHJhZ09wZXJh
dGlvbiA9IGRyYWdPcGVyYXRpb247CiAgICAgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kID0g
ZHJhZ0hhbmRsaW5nTWV0aG9kOwogICAgIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgPSBt
b3VzZUlzT3ZlckZpbGVJbnB1dDsKICAgICBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVB
Y2NlcHRlZCA9IG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQ7CkBAIC0yNDM4LDIwICsyNDM2LDIw
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWlu
dDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViQ29yCiB9CiAKICNpZiBQTEFURk9STShHVEspCi12b2lk
IFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCB1
aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJh
Z0ltYWdlSGFuZGxlKQordm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdP
cGVyYXRpb25NYXNrLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFu
ZGxlKQogewogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSA9ICFkcmFnSW1h
Z2VIYW5kbGUuaXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShkcmFnSW1hZ2VIYW5k
bGUpIDogbnVsbHB0cjsKLSAgICBwYWdlQ2xpZW50KCkuc3RhcnREcmFnKFdURk1vdmUoc2VsZWN0
aW9uRGF0YSksIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRp
b24pLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOworICAgIHBhZ2VDbGllbnQoKS5zdGFydERyYWcoV1RG
TW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdURk1vdmUoZHJhZ0ltYWdl
KSk7CiAKICAgICBkaWRTdGFydERyYWcoKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pCit2b2lkIFdlYlBhZ2VQcm94
eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJh
Z09wZXJhdGlvbk1hc2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBv
c2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ09w
ZXJhdGlvbk1hc2spKTsKICAgICBzZXREcmFnQ2FyZXRSZWN0KHsgfSk7CiB9CiAKQEAgLTI0ODIs
NyArMjQ4MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmREcmFnZ2luZygpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKQogewotICAgIG1fY3Vy
cmVudERyYWdPcGVyYXRpb24gPSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBtX2N1
cnJlbnREcmFnT3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIG1fY3VycmVudERyYWdIYW5k
bGluZ01ldGhvZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKICAgICBtX2N1cnJlbnREcmFn
SXNPdmVyRmlsZUlucHV0ID0gZmFsc2U7CiAgICAgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNU
b0JlQWNjZXB0ZWQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA3YmE5ZjhiNWVjMDc3MDIzMGIzZDI5ZTViN2FlMGY2NWI3ZTY1YzcyLi43ZjY4NzBjODQ0NWI5
MDVhZjRiMjgwNDBlMWUxYWM5ZWZiYzNjNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTE1Niw4ICsxMTU2LDggQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9y
bURyYWdPcGVyYXRpb24oV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9y
YWdlTmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5JiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybURyYWdPcGVyYXRpb24oYm9vbCBoYW5k
bGVkKTsKIAotICAgIHZvaWQgZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90
IGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlz
T3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
ZWRpdGFibGVFbGVtZW50UmVjdCk7Ci0gICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CisgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFdlYkNvcmU6
OkRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQg
bnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0
aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCk7Cisg
ICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPik7CiAgICAgdm9pZCBkaWRTdGFydERyYWcoKTsKICAgICB2b2lk
IGRyYWdDYW5jZWxsZWQoKTsKICAgICB2b2lkIHNldERyYWdDYXJldFJlY3QoY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYpOwpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHZpc2libGVVUkwsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBhcmNoaXZl
SGFuZGxlLCB1aW50NjRfdCBhcmNoaXZlU2l6ZSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
Ci0gICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50NjRfdCBk
cmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsK
KyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRy
YWdJbWFnZSk7CiAjZW5kaWYKICNlbmRpZgogCkBAIC0xMjI2LDcgKzEyMjYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gY3VycmVudERyYWdP
cGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY3VycmVudERyYWdPcGVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CiAgICAgV2ViQ29yZTo6RHJh
Z0hhbmRsaW5nTWV0aG9kIGN1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnREcmFnSGFuZGxpbmdNZXRob2Q7IH0KICAgICBib29sIGN1cnJlbnREcmFnSXNP
dmVyRmlsZUlucHV0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1
dDsgfQogICAgIHVuc2lnbmVkIGN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkOyB9
CkBAIC0yNjA3LDcgKzI2MDcsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAgICAgLy8gQ3VycmVudCBkcmFnIGRlc3RpbmF0aW9uIGRldGFpbHMgYXJlIGRlbGl2ZXJlZCBh
cyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2UsCiAgICAgLy8gc28gd2UgcHJlc2VydmUgdGhlbSB0
byBiZSB1c2VkIHdoZW4gdGhlIG5leHQgZHJhZ2dpbmcgZGVsZWdhdGUgY2FsbCBpcyBtYWRlLgot
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9jdXJyZW50RHJhZ09wZXJhdGlvbiB7IFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Ob25lIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsKICAgICBXZWJDb3JlOjpEcmFnSGFuZGxpbmdN
ZXRob2QgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kIHsgV2ViQ29yZTo6RHJhZ0hhbmRsaW5n
TWV0aG9kOjpOb25lIH07CiAgICAgYm9vbCBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0IHsg
ZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2Nl
cHRlZCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAyZDIzZTRiNjYwYjg2ZTY3ODY0NTBlZTM3M2QyNWNhYzE1YjhlYzdl
Li5hZGNhMTVjNGJiYWQ3ZWJiNzdhYjYwYWM1YzZmZWE0MjYxZDZjZjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMTAsNyAr
MzEwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgRHJhZyBhbmQgZHJv
cCBtZXNzYWdlcwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRGlkUGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGVudW06dWludDhfdCBXZWJD
b3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNP
dmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBXZWJDb3Jl
OjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6OkludFJlY3QgZWRpdGFibGVFbGVtZW50
UmVjdCkKKyAgICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgZW51bTp1aW50OF90IFdlYkNvcmU6OkRy
YWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxl
SW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIFdlYkNvcmU6OkludFJl
Y3QgaW5zZXJ0aW9uUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBlZGl0YWJsZUVsZW1lbnRSZWN0KQog
ICAgIERpZEVuZERyYWdnaW5nKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKQEAgLTMxOCw3ICszMTgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFNldFByb21pc2VkRGF0YUZvckltYWdlKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBpbWFnZUhhbmRsZSwgdWludDY0X3QgaW1h
Z2VTaXplLCBTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBleHRlbnNpb24sIFN0cmluZyB0aXRsZSwg
U3RyaW5nIHVybCwgU3RyaW5nIHZpc2libGVVUkwsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5k
bGUgYXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNpemUpCiAjZW5kaWYKICNpZiBQTEFU
Rk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgU3RhcnREcmFnKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uRGF0YSwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2Vi
S2l0OjpTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCisgICAgU3RhcnREcmFnKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNrLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGRyYWdJbWFnZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tCmluZGV4IDQzOWRiOTk3N2VlMmMzMTk0YTZkZTgyNzZkMTMyNWFjOGRiYjgwYmEu
LjY5NmI5MDg4ZDg4NjgxMTM3ZmRhYzNiZGI5OTE4MmNmNDQ0OTI2MjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bQpAQCAtNzI4NSw3ICs3Mjg1LDcgQEAgLSAodm9pZClfZGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVz
dDooQk9PTClzdGFydGVkCiAgICAgICAgIGlmIChzdGFydGVkKSB7CiAgICAgICAgICAgICAvLyBB
IGNsaWVudCBvZiB0aGUgT2JqZWN0aXZlIEMgU1BJIG9yIFVJS2l0IG1pZ2h0IGhhdmUgcHJldmVu
dGVkIHRoZSBkcmFnIGZyb20gYmVnaW5uaW5nIGVudGlyZWx5IGluIHRoZSBVSSBwcm9jZXNzLCBp
biB3aGljaCBjYXNlCiAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGJhbGFuY2UgdGhlIGBkcmFn
c3RhcnRgIGV2ZW50IHdpdGggYSBgZHJhZ2VuZGAuCi0gICAgICAgICAgICBfcGFnZS0+ZHJhZ0Vu
ZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBfcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9y
RHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCB7IH0pOwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtNzMwMywyNCArNzMwMyw0MiBAQCAtICh2b2lkKWNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2lu
dHNGb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gbwogICAgICAgICAq
b3V0R2xvYmFsUG9pbnQgPSBsb2NhdGlvbkluQ29udGVudFZpZXc7CiB9CiAKLXN0YXRpYyBVSURy
b3BPcGVyYXRpb24gZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQorc3RhdGljIFVJRHJvcE9wZXJhdGlvbiBkcm9wT3Bl
cmF0aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gb3BlcmF0aW9uKQogewotICAgIGlmIChvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTW92ZSkKLSAgICAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbk1vdmU7Ci0KLSAgICBp
ZiAob3BlcmF0aW9uICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpCi0gICAgICAgIHJldHVy
biBVSURyb3BPcGVyYXRpb25Db3B5OwotCisgICAgaWYgKG9wZXJhdGlvbikgeworICAgICAgICBp
ZiAoKm9wZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICAgICAg
cmV0dXJuIFVJRHJvcE9wZXJhdGlvbk1vdmU7CisgICAgICAgIGlmICgqb3BlcmF0aW9uICYgV2Vi
Q29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgICAgICByZXR1cm4gVUlEcm9wT3BlcmF0
aW9uQ29weTsKKyAgICB9CiAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbkNhbmNlbDsKIH0KIAor
c3RhdGljIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlv
bkZvclVJRHJvcE9wZXJhdGlvbihVSURyb3BPcGVyYXRpb24gZHJvcE9wZXJhdGlvbikKK3sKKyAg
ICBzd2l0Y2ggKGRyb3BPcGVyYXRpb24pIHsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbkNhbmNl
bDoKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbkZvcmJpZGRl
bjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNh
c2UgVUlEcm9wT3BlcmF0aW9uQ29weToKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Db3B5OworICAgIGNhc2UgVUlEcm9wT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJu
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0
YUZvckRyb3BTZXNzaW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBkcmFnRGVzdGluYXRp
b25BY3Rpb246KFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKWRyYWdEZXN0aW5hdGlvbkFjdGlvbgog
ewogICAgIENHUG9pbnQgZ2xvYmFsOwogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNv
bXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVu
dFBvaW50OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAKLSAgICBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4oc2Vzc2lvbi5hbGxvd3NNb3ZlT3BlcmF0aW9uID8gV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkV2ZXJ5IDogKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25FdmVyeSAmIH5XZWJDb3JlOjpE
cmFnT3BlcmF0aW9uTW92ZSkpOworICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBXZWJDb3Jl
OjphbnlEcmFnT3BlcmF0aW9uKCk7CisgICAgaWYgKCFzZXNzaW9uLmFsbG93c01vdmVPcGVyYXRp
b24pCisgICAgICAgIGRyYWdPcGVyYXRpb25NYXNrLnJlbW92ZShXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uTW92ZSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBkcmFnT3BlcmF0aW9u
TWFzaywgV2ViQ29yZTo6RHJhZ0FwcGxpY2F0aW9uTm9uZSwgV2ViS2l0Ojpjb3JlRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFzayhkcmFnRGVzdGluYXRpb25BY3Rpb24pIH07CiB9CiAKQEAgLTc0MjQs
NyArNzQ0Miw4IEBAIC0gKHZvaWQpX2RpZFBlcmZvcm1EcmFnT3BlcmF0aW9uOihCT09MKWhhbmRs
ZWQKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFs
UG9pbnRzRm9yRHJvcFNlc3Npb246ZHJvcFNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBv
dXRHbG9iYWxQb2ludDomZ2xvYmFsXTsKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Np
b25TdGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Y2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIF9wYWdlLT5jdXJyZW50
RHJhZ09wZXJhdGlvbigpKTsKKyAgICBhdXRvIGN1cnJlbnREcmFnT3BlcmF0aW9uID0gX3BhZ2Ut
PmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCks
IGN1cnJlbnREcmFnT3BlcmF0aW9uID8gKmN1cnJlbnREcmFnT3BlcmF0aW9uIDogT3B0aW9uU2V0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KHsgfSkpOwogfQogCiAtICh2b2lkKV9kaWRDaGFuZ2VE
cmFnQ2FyZXRSZWN0OihDR1JlY3QpcHJldmlvdXNSZWN0IGN1cnJlbnRSZWN0OihDR1JlY3QpcmVj
dApAQCAtODAxMyw3ICs4MDMyLDcgQEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0lu
dGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2lsbEFuaW1hdGVMaWZ0V2l0aEFuaW0KICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HKERyYWdBbmREcm9wLCAiRHJhZyBzZXNzaW9uIGVuZGVkIGF0IHN0YXJ0
OiAlcCIsIHNlc3Npb24pOwogICAgICAgICAgICAgLy8gVGhlIGxpZnQgd2FzIGNhbmNlbGVkLCBz
byAtZHJvcEludGVyYWN0aW9uOnNlc3Npb25EaWRFbmQ6IHdpbGwgbmV2ZXIgYmUgaW52b2tlZC4g
VGhpcyBpcyB0aGUgbGFzdCBjaGFuY2UgdG8gY2xlYW4gdXAuCiAgICAgICAgICAgICBbcHJvdGVj
dGVkU2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgICAgICAgICBwYWdl
LT5kcmFnRW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Ob25lKTsKKyAgICAgICAgICAgIHBhZ2UtPmRyYWdFbmRlZChwb3Np
dGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgeyB9KTsKICAgICAgICAgfQogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBlbHNlCkBAIC04MDQ4LDcgKzgwNjcsNyBA
QCAtICh2b2lkKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlv
biBzZXNzaW9uOihpZCA8VUlEcmFnU2VzcwogICAgICAgICByZXR1cm47CiAKICAgICBbc2VsZiBj
bGVhblVwRHJhZ1NvdXJjZVNlc3Npb25TdGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJD
b3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBv
c2l0aW9uRm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIG9wZXJhdGlvbik7
CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9w
SW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCgpKSwgV2ViQ29yZTo6
cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlv
bkZvckRyYWdFbmQoKSksIGNvcmVEcmFnT3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKG9wZXJh
dGlvbikpOwogfQogCiAtIChVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkcmFnSW50ZXJhY3Rpb246
KFVJRHJhZ0ludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckNhbmNlbGxpbmdJdGVt
OihVSURyYWdJdGVtICopaXRlbSB3aXRoRGVmYXVsdDooVUlUYXJnZXRlZERyYWdQcmV2aWV3ICop
ZGVmYXVsdFByZXZpZXcKQEAgLTgyNjcsNyArODI4Niw3IEBAIC0gKHZvaWQpZHJvcEludGVyYWN0
aW9uOihVSURyb3BJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHNlc3Npb25EaWRFbmQ6KGlkIDxV
SURyCiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2Jh
bFBvaW50c0ZvckRyb3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRH
bG9iYWxQb2ludDomZ2xvYmFsXTsKICAgICBbc2VsZiBjbGVhblVwRHJhZ1NvdXJjZVNlc3Npb25T
dGF0ZV07Ci0gICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xp
ZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Ob25lKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgeyB9KTsKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAppbmRleCBlZWQ3Yjk5Njg1NzM2
ZDVkMDE2NjkwMGQxYWM2ZGUwM2EyMTYxMDVlLi43NGY0NmNjYmYxMTNmN2M2YmY5OWEyYTE4MmI4
OGY0MTdjMzMwYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTc1LDcg
Kzc1LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0
YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIEZyYW1lJikKIAogICAgIG1fcGFnZS0+d2lsbFN0YXJ0
RHJhZygpOwogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0
RHJhZyhkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLnNlbGVjdGlvbkRhdGEoKSwgZGF0YVRyYW5z
ZmVyLnNvdXJjZU9wZXJhdGlvbigpLCBoYW5kbGUpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCkuc2Vs
ZWN0aW9uRGF0YSgpLCBkYXRhVHJhbnNmZXIuc291cmNlT3BlcmF0aW9uTWFzaygpLCBoYW5kbGUp
KTsKIH0KIAogfTsgLy8gbmFtZXNwYWNlIFdlYktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjBiMGVhNzk2MmRlNzM2YmIwYmE1MzlmZTE0
MjE3YmM0YmMwZDkyNy4uZTc3NGEyY2I4MzA3NzZiNWE1NmVmMTA5ZDYzMWJlMzhiYjllODc5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM5
NDQsMjIgKzM5NDQsMjIgQEAgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyKiBX
ZWJQYWdlOjpub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmEKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQogCiAjaWYgUExBVEZPUk0oR1RLKQotdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWlu
dDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSwgdWludDMyX3QgZmxhZ3MpCit2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgdWludDMyX3QgZmxhZ3MpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRy
b2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwg
ZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKFdURjo6bnVsbG9wdCwgRHJhZ0hhbmRs
aW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIERyYWdEYXRhIGRyYWdEYXRhKCZzZWxlY3Rpb25EYXRhLCBjbGllbnRQb3Np
dGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGRyYWdnaW5n
U291cmNlT3BlcmF0aW9uTWFzayksIHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlvbkZsYWdzPihm
bGFncykpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKCZzZWxlY3Rpb25EYXRhLCBjbGllbnRQb3Np
dGlvbiwgZ2xvYmFsUG9zaXRpb24sIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgc3RhdGlj
X2Nhc3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CiAgICAgc3dpdGNoIChhY3Rpb24p
IHsKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRlcmVkOiB7Ci0gICAgICAgIERy
YWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxl
cigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0byByZXNvbHZlZERyYWdPcGVy
YXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwog
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnSGFuZGxpbmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm1vdXNlSXNP
dmVyRmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5udW1iZXJPZkl0ZW1zVG9C
ZUFjY2VwdGVkKCksIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2Fz
ZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6VXBkYXRlZDogewotICAgICAgICBEcmFnT3BlcmF0aW9u
IHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBk
YXRlZChkcmFnRGF0YSk7CisgICAgICAgIGF1dG8gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
cmVzb2x2ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hhbmRs
aW5nTWV0aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1
dCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgp
LCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzk3OCwyNCArMzk3OCwy
NCBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludAogdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBXZWJDb3Jl
OjpEcmFnRGF0YSYgZHJhZ0RhdGEsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiYgc2FuZGJveEV4
dGVuc2lvbnNIYW5kbGVBcnJheSkKIHsKICAgICBpZiAoIW1fcGFnZSkgewotICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihE
cmFnT3BlcmF0aW9uTm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9
LCB7IH0pKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5v
bmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
c3dpdGNoIChhY3Rpb24pIHsKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpFbnRlcmVk
OiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0byBy
ZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVy
ZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxpbmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5u
dW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigp
LmNhcmV0UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpLCBtX3BhZ2UtPmRyYWdDYXJldENvbnRy
b2xsZXIoKS5lZGl0YWJsZUVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpVcGRh
dGVkOiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0
byByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1Vw
ZGF0ZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxpbmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5udW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxl
cigpLmNhcmV0UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpLCBtX3BhZ2UtPmRyYWdDYXJldENv
bnRyb2xsZXIoKS5lZGl0YWJsZUVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzKCkpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpF
eGl0ZWQ6CiAgICAgICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdE
YXRhKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIERyYWdIYW5kbGluZ01ldGhvZDo6
Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKFdURjo6bnVsbG9wdCwgRHJh
Z0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpQZXJmb3JtRHJh
Z09wZXJhdGlvbjogewpAQCAtNDAyMiw3ICs0MDIyLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBX
ZWIKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2lu
dCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2
NF90IG9wZXJhdGlvbikKK3ZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIElu
dFBvaW50IGFkanVzdGVkQ2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24ueCgpICsgbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS54KCksIGNsaWVudFBvc2l0aW9uLnkoKSAr
IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueSgpKTsKICAgICBJbnRQb2lu
dCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9uLngoKSArIG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueCgpLCBnbG9iYWxQb3NpdGlvbi55KCkgKyBtX3Bh
Z2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLnkoKSk7CkBAIC00MDMzLDcgKzQwMzMs
NyBAQCB2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3Np
dGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYgogICAgICAgICByZXR1cm47CiAgICAgLy8gRklY
TUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkgc2hvdWxkIGJl
IHJlYWwgb25lcyBpbnN0ZWFkLgogICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVudChhZGp1c3Rl
ZENsaWVudFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0dG9uLCBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2Fs
bFRpbWU6Om5vdygpLCAwLCBXZWJDb3JlOjpOb1RhcCk7Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUo
KS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgKERyYWdPcGVyYXRpb24p
b3BlcmF0aW9uKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdT
b3VyY2VFbmRlZEF0KGV2ZW50LCBkcmFnT3BlcmF0aW9uTWFzayk7CiAKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZEVuZERyYWdnaW5nKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzJjNDhkMWM5MzY4MjBiZTljMDM5NjMy
MjcxZGJmYzMwNzhjODFiOC4uNjc5Y2ZkMWI1MzJmYWJhZjQ2MmVkZTY3ZmQ3MjRiYmFiNjUzYThj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtODk5
LDcgKzg5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRF
ZGl0YWJsZUVsZW1lbnQoKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JN
KEdUSykKLSAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxl
ckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50MzJfdCBmbGFncyk7
CisgICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJh
dGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRh
JiYsIHVpbnQzMl90IGZsYWdzKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkg
JiYgIVBMQVRGT1JNKEdUSykKQEAgLTkwNyw3ICs5MDcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdm9pZCBkcmFnRW5kZWQoV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1
aW50NjRfdCBvcGVyYXRpb24pOworICAgIHZvaWQgZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9u
U2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KTsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1Mb2Fk
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCk7CiAgICAgdm9pZCBtYXlQZXJmb3JtVXBsb2FkRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA1MzhlNjU3MmU1MGY4ZTQzMDA2OGU2OTg3
NTg5ZmEwZGNmNWNmZDJmLi5hZTkyNzQ3NjM4ODUzYjMyZTIzYjRlZTEzNjNhMTMzYmNiZjYwNTFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTMwOSwxNCArMzA5LDE0IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAKICAgICAjIERyYWcgYW5kIGRyb3AuCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJB
R19TVVBQT1JUKQotICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNs
aWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qg
ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVj
dGlvbiwgdWludDMyX3QgZmxhZ3MpCisgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVu
dW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6
SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9u
LCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VPcGVyYXRp
b25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3QgZmxhZ3Mp
CiAjZW5kaWYKICNpZiAhUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAg
IFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29u
dHJvbGxlckFjdGlvbiBhY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2Fk
KQogI2VuZGlmCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBEaWRTdGFydERyYWcoKQot
ICAgIERyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6
SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbikKKyAgICBEcmFnRW5k
ZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJh
dGlvbk1hc2spCiAgICAgRHJhZ0NhbmNlbGxlZCgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwZTY1NjQ5
NmM4NDAwYWFjOTMyMTVlYTY3OGFiMTA5MGM0ZDJlNDAzLi44Yjg3ZGIzOGMyMjQ0MjZmYTdiZTQ5
OWJiYWMyMTkwMDFiOWE1NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgV2ViUGFn
ZTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBj
bGllbnRQb3NpdGlvCiAgICAgLy8gaXMgb3BhcXVlIHRvIHRoZSB3ZWIgcHJvY2Vzcywgd2hpY2gg
b25seSBzZWVzIHRoYXQgdGhlIGN1cnJlbnQgZHJhZyBoYXMgZW5kZWQsIGFuZCB0aGF0IGEgbmV3
IG9uZSBpcyBiZWdpbm5pbmcuCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KGNsaWVudFBv
c2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgTGVmdEJ1dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgMCwg
Tm9UYXApOwogICAgIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW5kZWQoKTsKLSAgICBt
X3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50
LCBEcmFnT3BlcmF0aW9uTm9uZSwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Olllcyk7CisgICAgbV9w
YWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwg
eyB9LCBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6WWVzKTsKIAogICAgIGJvb2wgZGlkSGFuZGxlRHJh
ZyA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkudHJ5VG9CZWdpbkRyYWdBdFBv
aW50KGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbik7CiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRIYW5kbGVBZGRpdGlvbmFsRHJhZ0l0ZW1zUmVxdWVzdChkaWRIYW5k
bGVEcmFnKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpp
bmRleCBkNGRlYTdjMzljOGNhZjRjMzdiNGFhODVmZDU3OTFmZWFjZTQ5ODg4Li5iOWVlY2RjOGRj
OTE5NWIzMzk5MThkNWQ1ZGEwMTUyNGQ3N2U3OTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTk0Miw3ICs5NDIsNyBAQCAtICh2b2lkKV9zZXRU
eXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlIHdpdGhVbmRvQWN0aW9u
OihXZWJDb3JlOgogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFD
KQotLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlv
bjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbgorLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6
KE5TUG9pbnQpd2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKWRyYWdPcGVyYXRp
b25NYXNrCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKQogICAgICAgICByZXR1cm47
CkBAIC05NTIsNyArOTUyLDcgQEAgLSAodm9pZClfZHJhZ1NvdXJjZUVuZGVkQXQ6KE5TUG9pbnQp
d2luZG93TG9jIG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGkKICAgICAvLyBGSVhN
RTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUg
cmVhbCBvbmVzIGluc3RlYWQuCiAgICAgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50
KFdlYkNvcmU6OkludFBvaW50KHdpbmRvd0xvYyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6
Omdsb2JhbFBvaW50KHdpbmRvd0xvYywgW3ZpZXctPnBsYXRmb3JtV2lkZ2V0KCkgd2luZG93XSkp
LAogICAgICAgICBXZWJDb3JlOjpMZWZ0QnV0dG9uLCBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50OjpN
b3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV2FsbFRpbWU6Om5vdygp
LCBXZWJDb3JlOjpGb3JjZUF0Q2xpY2ssIFdlYkNvcmU6Ok5vVGFwKTsKLSAgICBfcHJpdmF0ZS0+
Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgKFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24pb3BlcmF0aW9uKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5l
dmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgY29yZURyYWdPcGVyYXRpb25N
YXNrKGRyYWdPcGVyYXRpb25NYXNrKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9S
VCkgJiYgUExBVEZPUk0oTUFDKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQppbmRleCA1ZTRhODkwNWVjODRmNTdiNTFkOTg5YzE3MDU5ZmQ3Y2Qw
Y2MxZGM4Li5lN2NhNDYxZDkwZTk5NTUyZjJjMTJmMmFlMjY3YzExNmIwY2NkYzdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2LCAyMDA3IEdyYWhhbSBEZW5u
aXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDIyOSw2
ICs0MjI5LDI4IEBAIC0gKHZvaWQpdG91Y2g6KFdlYkV2ZW50ICopZXZlbnQKICNlbmRpZgogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oTUFDKQorCitzdGF0aWMgTlNEcmFn
T3BlcmF0aW9uIGtpdChPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9u
TWFzaykKK3sKKyAgICBpZiAob3BlcmF0aW9uTWFzayA9PSBXZWJDb3JlOjphbnlEcmFnT3BlcmF0
aW9uKCkpCisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25FdmVyeTsKKworICAgIE5TRHJh
Z09wZXJhdGlvbiByZXN1bHQgPSBOU0RyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVyYXRp
b25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KSkKKyAgICAgICAgcmVz
dWx0IHw9IE5TRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFp
bnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFn
T3BlcmF0aW9uTGluazsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uR2VuZXJpYykpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25H
ZW5lcmljOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb25Qcml2YXRlKSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvblByaXZhdGU7
CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1v
dmUpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBpZiAob3Bl
cmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKSkKKyAgICAg
ICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogLSAodm9pZClkcmFn
SW1hZ2U6KE5TSW1hZ2UgKilkcmFnSW1hZ2UKICAgICAgICAgICAgICAgIGF0OihOU1BvaW50KWF0
CkBAIC00MjgwLDcgKzQzMDIsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwog
Ci0gICAgcmV0dXJuIChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3Vy
Y2VEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigp
LnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19CRUdJTgpAQCAtNDM4Niw3ICs0NDA4LDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9u
KWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilzZXNzaW9uIHNvdXJjZU9wZXJh
dGlvbk0KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25l
OwogCi0gICAgcmV0dXJuIChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5z
b3VyY2VEcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxl
cigpLnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCkpOwogfQogCiAtICh2b2lkKWRyYWdnaW5nU2Vz
c2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilzZXNzaW9uIGVuZGVkQXRQb2ludDooTlNQb2ludClz
Y3JlZW5Qb2ludCBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBjNWU5ZjI1YzYxZTkzMzAx
ZTI4M2VhMGE0YzA4Mzg4ZjE5NDExOTU1Li4wOTc2NzdkOWRhYmM4NzgwOWMxY2MwZGQ0ZDU3OGU3
M2NjYzdjMWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CkBAIC01ODksNiArNTg5LDkyIEBAIHN0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXCiAgICAgICAgIHJl
c3VsdC5hZGQoV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQorCisjaWYgIVVTRShBUFBLSVQpCisvLyBTZWUgPFVJS2l0L1VJRHJhZ2dp
bmdfUHJpdmF0ZS5oPi4KK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfVUlEcmFnT3Bl
cmF0aW9uKSB7CisgICAgX1VJRHJhZ09wZXJhdGlvbk5vbmUgPSAwLAorICAgIF9VSURyYWdPcGVy
YXRpb25Db3B5ID0gMSwKKyAgICBfVUlEcmFnT3BlcmF0aW9uTW92ZSA9IDE2LAorfTsKKyNlbmRp
ZgorCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25N
YXNrKENvY29hRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKworI2lmIFVTRShBUFBLSVQpCisgICAgaWYgKG9w
ZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRp
b25MaW5rKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsK
KyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVz
dWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlv
biAmIE5TRHJhZ09wZXJhdGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRp
b25Nb3ZlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsK
KyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1
bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworI2Vsc2UKKyAgICBpZiAob3Bl
cmF0aW9uICYgX1VJRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3BlcmF0
aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7
CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBV
U0UoQVBQS0lUKQorc3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6
RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRpb24p
CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dpdGNoICgqZHJh
Z09wZXJhdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk6CisgICAg
ICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkxpbms6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGNh
c2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBOU0RyYWdP
cGVyYXRpb25HZW5lcmljOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6
CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Nb3Zl
OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJu
IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKK30KKyNlbHNlCitzdGF0aWMgX1VJ
RHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09w
ZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAgIHJldHVybiBfVUlE
cmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHN3aXRjaCAoKmRyYWdPcGVyYXRpb24pIHsKKyAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gX1VJRHJhZ09w
ZXJhdGlvbkNvcHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAg
ICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTW92ZTsKKyAg
ICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOgorICAgICAgICByZXR1cm4gX1VJ
RHJhZ09wZXJhdGlvbk5vbmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToK
KyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25l
OworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBfVUlEcmFn
T3BlcmF0aW9uTm9uZTsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQogI2VuZGlmIC8vIEVOQUJM
RShEUkFHX1NVUFBPUlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZp
bmRPcHRpb25zIG9wdGlvbnMpCkBAIC0xOTIzLDcgKzIwMDksNyBAQCAtIChXZWJEcmFnRGVzdGlu
YXRpb25BY3Rpb24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURy
b3BTZXNzaQogCiAtIChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxV
SURyb3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9i
YWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24K
IHsKLSAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJh
Z09wZXJhdGlvbj4ob3BlcmF0aW9uKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29y
ZURyYWdPcGVyYXRpb25NYXNrKG9wZXJhdGlvbik7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOwogICAgIHJldHVybiB7IHNlc3Np
b24sIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJv
dW5kZWRJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3Jl
OjpEcmFnQXBwbGljYXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrIH07CiB9CkBA
IC0xOTMyLDE0ICsyMDE4LDE0IEBAIC0gKHVpbnQ2NF90KV9lbnRlcmVkRGF0YUludGVyYWN0aW9u
OihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpCiB7CiAgICAgV2Vi
VGhyZWFkTG9jaygpOwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Np
b246c2Vzc2lvbiBjbGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9w
ZXJhdGlvbjpvcGVyYXRpb25dOwotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRy
b2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSkpOwogfQogCiAtICh1
aW50NjRfdClfdXBkYXRlZERhdGFJbnRlcmFjdGlvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Np
b24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQ
b3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgogewogICAgIFdlYlRocmVhZExv
Y2soKTsKICAgICBhdXRvIGRyYWdEYXRhID0gW3NlbGYgZHJhZ0RhdGFGb3JTZXNzaW9uOnNlc3Np
b24gY2xpZW50OmNsaWVudFBvc2l0aW9uIGdsb2JhbDpnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246
b3BlcmF0aW9uXTsKLSAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250cm9sbGVyKCku
ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAgIHJldHVybiBraXQoX3ByaXZhdGUtPnBhZ2UtPmRy
YWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAodm9pZClfZXhp
dGVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENH
UG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJh
dGlvbjoodWludDY0X3Qpb3BlcmF0aW9uCkBAIC02NzQ4LDggKzY4MzQsOCBAQCAtIChOU0RyYWdP
cGVyYXRpb24pZHJhZ2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5m
bwogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9j
YXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9p
bnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0g
ICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2lu
Z0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwot
ICAgIHJldHVybiBjb3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdE
YXRhKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVu
dCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1Nv
dXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9d
LCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJl
dHVybiBraXQoY29yZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0
YSkpOwogfQogCiAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFn
Z2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjc2MSw4ICs2ODQ3LDggQEAgLSAoTlNEcmFnT3Bl
cmF0aW9uKWRyYWdnaW5nVXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8K
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0
aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50
KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAg
IFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWws
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJ
bmZvXSwgW3NlbGYgYWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAg
ICByZXR1cm4gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7Cisg
ICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYg
YWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICByZXR1cm4ga2l0
KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAo
dm9pZClkcmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAg
LTY3NzMsNyArNjg1OSw3IEBAIC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5n
SW5mbz4pZHJhZ2dpbmdJbmZvCiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFs
KFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtz
ZWxmIHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0lu
Zm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihb
ZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNh
dGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRh
KGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJh
Z2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlv
bkZsYWdzOmRyYWdnaW5nSW5mb10pOwogICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4
aXRlZChkcmFnRGF0YSk7CiB9CiAKQEAgLTY3ODYsNyArNjg3Miw3IEBAIC0gKEJPT0wpcGVyZm9y
bURyYWdPcGVyYXRpb246KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0p
OwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJh
Z2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgYXV0byog
ZHJhZ0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGds
b2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBk
cmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFn
Z2luZ0luZm9dKTsKKyAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShk
cmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25G
bGFnczpkcmFnZ2luZ0luZm9dKTsKIAogICAgIE5TQXJyYXkqIHR5cGVzID0gZHJhZ2dpbmdJbmZv
LmRyYWdnaW5nUGFzdGVib2FyZC50eXBlczsKICAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVj
dDpXZWJBcmNoaXZlUGJvYXJkVHlwZV0gJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6
OmxlZ2FjeUZpbGVzUHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA3ZDcwYzA0YTBj
ZTEzNGNmZTg3ZDU2ZmQ4MTFmNGRjNWZiY2IzODg5Li5kNTk3NmM0NGVlNzFkMGUwNDQ2ZTJiZTQy
ZjU0YjE0YWYzMTQxODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CkBAIC0zNiw2ICszNiw3IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIAogI2ltcG9ydCA8V2Vi
Q29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlv
bnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpA
QCAtODksNyArOTAsMTcgQEAgY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwogCi1XZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhX
ZWJGaW5kT3B0aW9ucyBvcHRpb25zKTsKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorI2lmIFVT
RShBUFBLSVQpCit0eXBlZGVmIE5TRHJhZ09wZXJhdGlvbiBDb2NvYURyYWdPcGVyYXRpb247Cisj
ZWxzZQordHlwZWRlZiB1aW50NjRfdCBDb2NvYURyYWdPcGVyYXRpb247CisjZW5kaWYgLy8gVVNF
KEFQUEtJVCkKKworT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3Bl
cmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRpb24pOworI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpCisKK1dlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25z
KTsKIAogT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gY29yZUxheW91dE1pbGVz
dG9uZXMoV2ViTGF5b3V0TWlsZXN0b25lcyk7CiBXZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91
dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xp
ZW50LmNwcAppbmRleCAzMTMyNjAzNmE4YTQxMjU3N2VjMWNhMTkxN2RjM2ZmODYyMDdlMjYzLi5i
MjQ5ZmZkODc5NDgyOTcyZTU2NmMyZTBhZDI3Y2MyYTYyYzU0NTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cApAQCAtNDQsMTggKzQ0LDE4IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0
aWMgRFdPUkQgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhEcmFnT3Bl
cmF0aW9uIG9wKQorc3RhdGljIERXT1JEIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJh
Z0N1cnNvcnMoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCiB7CiAgICAg
RFdPUkQgcmVzdWx0ID0gRFJPUEVGRkVDVF9OT05FOwotICAgIGlmIChvcCA9PSBEcmFnT3BlcmF0
aW9uRXZlcnkpCisgICAgaWYgKG9wZXJhdGlvbk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQog
ICAgICAgICByZXR1cm4gRFJPUEVGRkVDVF9DT1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJPUEVG
RkVDVF9NT1ZFOyAKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAob3Bl
cmF0aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJlc3VsdCB8
PSBEUk9QRUZGRUNUX0NPUFk7IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25MaW5rKQorICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAg
cmVzdWx0IHw9IERST1BFRkZFQ1RfTElOSzsgCi0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbk1v
dmUpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQog
ICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9NT1ZFOwotICAgIGlmIChvcCAmIERyYWdPcGVy
YXRpb25HZW5lcmljKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25HZW5lcmljKSkKICAgICAgICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfTU9WRTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3Rh
cnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIERXT1JEIG9rRWZmZWN0ID0gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhtX3dlYlZpZXctPnBhZ2UoKS0+
ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uKCkpOworICAgICAgICBEV09SRCBv
a0VmZmVjdCA9IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMobV93ZWJW
aWV3LT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7
CiAgICAgICAgIERXT1JEIGVmZmVjdCA9IERST1BFRkZFQ1RfTk9ORTsKICAgICAgICAgQ09NUHRy
PElXZWJVSURlbGVnYXRlPiB1aTsKICAgICAgICAgSFJFU1VMVCBociA9IEVfTk9USU1QTDsKQEAg
LTE2NCwxNSArMTY0LDE1IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVt
IGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYKICAgICAgICAgaWYgKGhy
ID09IEVfTk9USU1QTCkKICAgICAgICAgICAgIGhyID0gRG9EcmFnRHJvcChkYXRhT2JqZWN0Lmdl
dCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZmZWN0LCAmZWZmZWN0KTsKIAotICAgICAgICBEcmFnT3Bl
cmF0aW9uIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzazsKICAgICAgICAgaWYgKGhyID09IERSQUdEUk9Q
X1NfRFJPUCkgewogICAgICAgICAgICAgaWYgKGVmZmVjdCAmIERST1BFRkZFQ1RfQ09QWSkKLSAg
ICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uQ29weTsKKyAgICAgICAgICAg
ICAgICBvcGVyYXRpb25NYXNrID0gRHJhZ09wZXJhdGlvbkNvcHk7CiAgICAgICAgICAgICBlbHNl
IGlmIChlZmZlY3QgJiBEUk9QRUZGRUNUX0xJTkspCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9u
ID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9uTWFzayA9IERy
YWdPcGVyYXRpb25MaW5rOwogICAgICAgICAgICAgZWxzZSBpZiAoZWZmZWN0ICYgRFJPUEVGRkVD
VF9NT1ZFKQotICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Nb3ZlOwor
ICAgICAgICAgICAgICAgIG9wZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uTW92ZTsKICAgICAg
ICAgfQotICAgICAgICBmcmFtZS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5kZWRBdChnZW5l
cmF0ZU1vdXNlRXZlbnQobV93ZWJWaWV3LCBmYWxzZSksIG9wZXJhdGlvbik7CisgICAgICAgIGZy
YW1lLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0KGdlbmVyYXRlTW91c2VFdmVudCht
X3dlYlZpZXcsIGZhbHNlKSwgb3BlcmF0aW9uTWFzayk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzYmRlZTZiYmQ1YjQ4N2U0NTc4OGUyYzQ3NzUyNzVkOWQw
YTkyMDU0Li41MmZkZmE4YjUzOGYxZTZhMzU1Njg2YWMxODdmYTFhYTQ4ZWI4MmE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNTg0MiwzOCArNTg0Miw0MiBAQCBIUkVTVUxU
IFdlYlZpZXc6OnZpc2libGVDb250ZW50UmVjdChfT3V0XyBMUFJFQ1QgcmVjdCkKICAgICByZXR1
cm4gU19PSzsKIH0KIAotc3RhdGljIERXT1JEIGRyYWdPcGVyYXRpb25Ub0RyYWdDdXJzb3IoRHJh
Z09wZXJhdGlvbiBvcCkgewotICAgIERXT1JEIHJlcyA9IERST1BFRkZFQ1RfTk9ORTsKLSAgICBp
ZiAob3AgJiBEcmFnT3BlcmF0aW9uQ29weSkgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfQ09Q
WTsKLSAgICBlbHNlIGlmIChvcCAmIERyYWdPcGVyYXRpb25MaW5rKSAKLSAgICAgICAgcmVzID0g
RFJPUEVGRkVDVF9MSU5LOwotICAgIGVsc2UgaWYgKG9wICYgRHJhZ09wZXJhdGlvbk1vdmUpIAot
ICAgICAgICByZXMgPSBEUk9QRUZGRUNUX01PVkU7Ci0gICAgZWxzZSBpZiAob3AgJiBEcmFnT3Bl
cmF0aW9uR2VuZXJpYykgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfTU9WRTsgLy9UaGlzIGFw
cGVhcnMgdG8gYmUgdGhlIEZpcmVmb3ggYmVoYXZpb3VyCi0gICAgcmV0dXJuIHJlczsKK3N0YXRp
YyBEV09SRCBkcmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29yKE9wdGlvbmFsPERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCit7CisgICAgaWYgKCFvcGVyYXRpb25NYXNrKQorICAgICAgICByZXR1
cm4gRFJPUEVGRkVDVF9OT05FOworCisgICAgRFdPUkQgcmVzdWx0ID0gRFJPUEVGRkVDVF9OT05F
OworICAgIGlmICgqb3BlcmF0aW9uTWFzayAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICBy
ZXN1bHQgPSBEUk9QRUZGRUNUX0NPUFk7CisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbk1hc2sgJiBE
cmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9MSU5LOworICAg
IGVsc2UgaWYgKCpvcGVyYXRpb25NYXNrICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJl
c3VsdCA9IERST1BFRkZFQ1RfTU9WRTsKKyAgICBlbHNlIGlmICgqb3BlcmF0aW9uTWFzayAmIERy
YWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNUX01PVkU7IC8v
IFRoaXMgYXBwZWFycyB0byBiZSB0aGUgRmlyZWZveCBiZWhhdmlvdXIuCisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotRHJhZ09wZXJhdGlvbiBXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlv
bihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKK09wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBXZWJW
aWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgLy8gQ29uZm9ybXMgdG8gTWljcm9zb2Z0J3Mga2V5IGNv
bWJpbmF0aW9ucyBhcyBkb2N1bWVudGVkIGZvciAKICAgICAvLyBJRHJvcFRhcmdldDo6RHJhZ092
ZXIuIE5vdGUsIGdyZktleVN0YXRlIGlzIHRoZSBjdXJyZW50IAogICAgIC8vIHN0YXRlIG9mIHRo
ZSBrZXlib2FyZCBtb2RpZmllciBrZXlzIG9uIHRoZSBrZXlib2FyZC4gU2VlOgogICAgIC8vIDxo
dHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2ODAxMjkoVlMuODUpLmFz
cHg+LgotICAgIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxl
cigpLnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBtX3Bh
Z2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKTsKIAogICAgIGlm
ICgoZ3JmS2V5U3RhdGUgJiAoTUtfQ09OVFJPTCB8IE1LX1NISUZUKSkgPT0gKE1LX0NPTlRST0wg
fCBNS19TSElGVCkpCi0gICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25MaW5rOworICAg
ICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uTGluayB9OwogICAgIGVsc2UgaWYg
KChncmZLZXlTdGF0ZSAmIE1LX0NPTlRST0wpID09IE1LX0NPTlRST0wpCi0gICAgICAgIG9wZXJh
dGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICBvcGVyYXRpb25NYXNrID0geyBEcmFn
T3BlcmF0aW9uQ29weSB9OwogICAgIGVsc2UgaWYgKChncmZLZXlTdGF0ZSAmIE1LX1NISUZUKSA9
PSBNS19TSElGVCkKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkdlbmVyaWM7Cisg
ICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdPcGVyYXRpb25HZW5lcmljIH07CiAKLSAgICBy
ZXR1cm4gb3BlcmF0aW9uOworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCiBIUkVTVUxU
IFdlYlZpZXc6OkRyYWdFbnRlcihJRGF0YU9iamVjdCogcERhdGFPYmplY3QsIERXT1JEIGdyZktl
eVN0YXRlLCBQT0lOVEwgcHQsIERXT1JEKiBwZHdFZmZlY3QpCkBAIC01OTE5LDggKzU5MjMsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OkRyYWdMZWF2ZSgpCiAgICAgICAgIG1fZHJvcFRhcmdldEhlbHBl
ci0+RHJhZ0xlYXZlKCk7CiAKICAgICBpZiAobV9kcmFnRGF0YSkgewotICAgICAgICBEcmFnRGF0
YSBkYXRhKG1fZHJhZ0RhdGEuZ2V0KCksIEludFBvaW50KCksIEludFBvaW50KCksIAotICAgICAg
ICAgICAgRHJhZ09wZXJhdGlvbk5vbmUpOworICAgICAgICBEcmFnRGF0YSBkYXRhKG1fZHJhZ0Rh
dGEuZ2V0KCksIEludFBvaW50KCksIEludFBvaW50KCksIHsgfSk7CiAgICAgICAgIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRhdGEpOwogICAgICAgICBtX2RyYWdEYXRhID0g
MDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKaW5kZXggMTgwNjY5OGE5YWQ4NGJj
MmY4ODhiNWYyZWRjMzAzZjllNWFhNWY0NS4uN2IyMjEwNGQ5OGU1N2ZjMzc3NTMzNmQxOTI5OTM5
MzU1ODIwYzU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaApAQCAtNTU1LDcgKzU1NSw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBlcmZvcm1MYXllcmVkV2luZG93VXBkYXRlKCk7CiAK
LSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JE
IGdyZktleVN0YXRlKSBjb25zdDsKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0OwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgdmFyaWFibGUgaXMgcGFydCBvZiBhIHdvcmthcm91bmQuIFRoZSBk
cm9wIGVmZmVjdCAocGR3RWZmZWN0KSBwYXNzZWQgdG8gRHJvcCBpcyBpbmNvcnJlY3QuIAogICAg
IC8vIFdlIHNldCB0aGlzIHZhcmlhYmxlIGluIERyYWdFbnRlciBhbmQgRHJhZ092ZXIgc28gdGhh
dCBpdCBjYW4gYmUgdXNlZCBpbiBEcm9wIHRvIHNldCB0aGUgY29ycmVjdCBkcm9wIGVmZmVjdC4g
Cg==
</data>
<flag name="review"
          id="416424"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401219</attachid>
            <date>2020-06-05 17:38:45 -0700</date>
            <delta_ts>2020-06-06 07:56:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212605-20200605173909.patch</filename>
            <type>text/plain</type>
            <size>137946</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFjZDc1Zjk5N2Q1NmE1MGE5OTkwZDY1
OTBjNzA3OTI4MGVjN2I4NGQuLjIxZTFjYjFlNjM3NWRmNDlmNGJiODlhNGY1N2ZkODU4OWE2ZmUz
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMDUgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGZv
ciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogd3RmL09wdGlvblNl
dC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6Ok9wdGlvblNldCk6CisgICAgICAgIC0gQWRk
IGNvbnN0cnVjdG9yIGZvciBPcHRpb25TZXQoT3B0aW9uYWwpLgorCiAyMDIwLTA2LTA1ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAwZWMxYjg1OGYwMzllODJhMzk3ZThhNjA4Y2YyZGZiYWE3Nzk5NDA0Li5hOTQzOGU0NzgzZGMx
MjFhYTBkMDM0MjYyZjBjNGQwNDFiYTQxMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEyIEBA
CisyMDIwLTA2LTA1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBmb3IgbWFzayB2YWx1ZXMKKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjYwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBJbiBicm9hZCBzdHJva2VzOgorICAgICAgICAtIFJlcGxhY2Ug
dXNlIG9mIERyYWdPcGVyYXRpb24gd2l0aCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3IKKyAg
ICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPi4KKyAgICAgICAgLSBSZW5hbWUgZnVuY3Rp
b24gcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRvIGRlbm90ZSB1c2UKKyAgICAgICAg
ICBvZiBtYXNrIHZhbHVlcy4KKyAgICAgICAgLSBSZW1vdmUgRHJhZ09wZXJhdGlvbk5vbmUgZW51
bSB2YWx1ZS4KKyAgICAgICAgLSBSZXBsYWNlIERyYWdPcGVyYXRpb25FdmVyeSBlbnVtIHZhbHVl
IHdpdGggYW55RHJhZ09wZXJhdGlvbigpLgorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3ApOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wRnJvbUlFT3ApOgorICAgICAgICAoV2ViQ29yZTo6
SUVPcEZyb21EcmFnT3ApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzb3VyY2VP
cGVyYXRpb24gY29uc3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6
OnNvdXJjZU9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbiBjb25zdCk6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb25NYXNrIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uKTogUmVuYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb24p
OiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldERlc3RpbmF0aW9u
T3BlcmF0aW9uTWFzayk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogUmVuYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb25NYXNrIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29u
c3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmRlc3RpbmF0aW9u
T3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNl
dFNvdXJjZU9wZXJhdGlvbik6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKTogUmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2spOgorICAgICAgICAqIHBh
Z2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24pOiBB
ZGQuCisgICAgICAgIChXVEY6OkVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOiBB
ZGQuCisgICAgICAgIChXVEY6Ok9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPik6IEFk
ZC4KKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29u
dHJvbGxlcjo6ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6
OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVy
OjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6dHJ5RG9jdW1lbnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpv
cGVyYXRpb25Gb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRPcGVyYXRpb25Gb3JE
cmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcpOgor
ICAgICAgICAtIENoYW5nZSBsb2dpYyB0byBjYWxsIGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKCkg
dG8gY29udmVydAorICAgICAgICAgIHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2sgdG8gYSBz
aW5nbGUgb3BlcmF0aW9uIHdoZW4KKyAgICAgICAgICB0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25N
YXNrIGJ1dCBkb2Vzbid0IGNvbnRhaW4gd2l0aCBhbnkKKyAgICAgICAgICBiaXQgdmFsdWVzIHNl
dCBpbiBzb3VyY2VPcGVyYXRpb25NYXNrLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbiBjb25zdCk6IFJlbmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzb3VyY2VEcmFnT3BlcmF0aW9uTWFzayBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24pOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpv
bmVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZmluZERyb3Bab25lKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJv
cCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVu
dCk6CisgICAgICAgICogcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24pOgorICAgICAgICAqIHBhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OmRyYWdPcGVyYXRpb24pOgorICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToK
KyAgICAgICAgLSBDbGVhbiB1cCBjb21tZW50LgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OkRyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvR3RrVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdka0RyYWdBY3Rpb25U
b0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJhdGlvblRvR2RrRHJh
Z0FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJh
Z0FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpk
cmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OkRyYWdEYXRh
KToKKwogMjAyMC0wNi0wNSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBlYXJseSBzdW1tZXIgMjAy
MCBlZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhYTMzYWQ5MWFmOTlhYmVhOGE2OGYwZmI0MTY5ZTBmYWE4
NTY2OTIuLmVlNGEyY2IyMjkzMDA1YmU2OGU4YWY3MWVlYTgyMzdmNjE4MGM5MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTA1IEBACisyMDIwLTA2LTA1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBmb3IgbWFz
ayB2YWx1ZXMKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjYwNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBicm9hZCBzdHJva2VzOgor
ICAgICAgICAtIFJlcGxhY2UgdXNlIG9mIERyYWdPcGVyYXRpb24gd2l0aCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gb3IKKyAgICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPi4KKyAgICAg
ICAgLSBSZW5hbWUgZnVuY3Rpb24gcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRvIGRl
bm90ZSB1c2UKKyAgICAgICAgICBvZiBtYXNrIHZhbHVlcy4KKyAgICAgICAgLSBSZW1vdmUgRHJh
Z09wZXJhdGlvbk5vbmUgZW51bSB2YWx1ZS4KKyAgICAgICAgLSBSZXBsYWNlIERyYWdPcGVyYXRp
b25FdmVyeSBlbnVtIHZhbHVlIHdpdGggYW55RHJhZ09wZXJhdGlvbigpLgorCisgICAgICAgICog
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAgICAgICAoVUlEcmFnT3BlcmF0aW9uKToK
KyAgICAgICAgLSBSZW1vdmUgdW51c2VkIChhbmQgbWlzbmFtZWQpIFVJRHJhZ09wZXJhdGlvbiBl
bnVtIHR5cGVkZWYuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKGhl
YWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAtIEFkZCBzdXBwb3J0IGZvciBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uIGVudW0uCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9u
c0ludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OmNvcmVEcmFnT3BlcmF0aW9uTWFzayk6IEFk
ZCBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZW5jb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZSk6CisgICAg
ICAgIC0gVXBkYXRlIHRvIGVuY29kZS9kZWNvZGUgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+Lgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZS5oOgorICAgICAgICAoV2Vi
S2l0OjpEcmFnU291cmNlOjpiZWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmFnU291cmNlOjpiZWdpbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmFnU291cmNlOjpiZWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGsz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmxlYXZlVGltZXJGaXJlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGlk
UGVyZm9ybUFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVN0
YXJ0RHJhZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlLmg6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyk6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpraXQpOiBBZGQgY29udmVy
c2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nVXBk
YXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAg
ICAgIC0gTWFrZSB1c2Ugb2YgY29yZURyYWdPcGVyYXRpb25NYXNrKCkgY29udmVyc2lvbiBmdW5j
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAtIFJlbW92ZSBNRVNTQUdFX0NIRUNLIG5vdyB0aGF0
IHdlJ3JlIHVzaW5nIHRoZSBhY3R1YWwgdHlwZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFbmRl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRDdXJyZW50RHJhZ0luZm9y
bWF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRW5kZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y3VycmVudERyYWdPcGVyYXRpb24gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIChXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJQYWdlUHJveHk6OlN0YXJ0RHJhZyk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6XSk6Cisg
ICAgICAgIChkcm9wT3BlcmF0aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24pOgorICAgICAgICAo
Y29yZURyYWdPcGVyYXRpb25Gb3JVSURyb3BPcGVyYXRpb24pOiBBZGQgY29udmVyc2lvbiBmdW5j
dGlvbi4KKyAgICAgICAgLSBOb3RlIHRoYXQgdGhpcyB3YXMgbm90IGJlaW5nIGNvbnZlcnRlZCBm
cm9tIFVJRHJvcE9wZXJhdGlvbiB0bworICAgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24g
cHJldmlvdXNseSwgYW5kIFVJRHJvcE9wZXJhdGlvbk1vdmUKKyAgICAgICAgICAoMHgzKSB3YXMg
bm90IGJlaW5nIHByb3Blcmx5IGNvbnZlcnRlZCB0byBEcmFnT3BlcmF0aW9uTW92ZQorICAgICAg
ICAgICgweDE2KS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnRGF0YUZvckRyb3BTZXNz
aW9uOmRyYWdEZXN0aW5hdGlvbkFjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
ZGlkUGVyZm9ybURyYWdPcGVyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJh
Z0ludGVyYWN0aW9uOndpbGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjpzZXNzaW9uOl0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uOmRpZEVuZFdpdGhP
cGVyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOnNl
c3Npb25EaWRFbmQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OnN0
YXJ0RHJhZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYWdFbmRlZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgIChXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2Vi
UGFnZTo6RHJhZ0VuZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRl
bXNGb3JEcmFnU2Vzc2lvbik6CisKIDIwMjAtMDYtMDUgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8g
IDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywg
ZWFybHkgc3VtbWVyIDIwMjAgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IDhjNTVmMjNlM2I0YjdjODZlNjAxMjljZmVlYmJiMzI0MDE5NzE1NTAuLjBhMWM3NzYxZGI4ZWJi
MGYwYWNlZGE1N2VlYThmMmVlMTNhYzMyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NSBAQAorMjAyMC0wNi0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sg
dmFsdWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAg
ICAgICAgLSBSZXBsYWNlIHVzZSBvZiBEcmFnT3BlcmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IG9yCisgICAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAg
IC0gUmVuYW1lIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5v
dGUgdXNlCisgICAgICAgICAgb2YgbWFzayB2YWx1ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdP
cGVyYXRpb25Ob25lIGVudW0gdmFsdWUuCisgICAgICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9u
RXZlcnkgZW51bSB2YWx1ZSB3aXRoIGFueURyYWdPcGVyYXRpb24oKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmFnU291cmNlRW5kZWRB
dDpvcGVyYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAg
ICAgKGtpdCk6IEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDpdKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgZHJhZ2dpbmdTZXNzaW9uOnNvdXJjZU9wZXJhdGlvbk1hc2tGb3JEcmFnZ2luZ0Nv
bnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoY29yZURy
YWdPcGVyYXRpb25NYXNrKTogQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgIChraXQp
OiBEaXR0by4KKyAgICAgICAgLSBNYXAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMgdG8g
X1VJRHJhZ09wZXJhdGlvbk1vdmUKKyAgICAgICAgICBiYXNlZCBvbiBsb2dpYyBpbiBXZWJDb3Jl
LiAgQWxsIG90aGVyIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24KKyAgICAgICAgICBlbnVtIHZhbHVl
cyBtYXAgdG8gX1VJRHJhZ09wZXJhdGlvbk5vbmUuCisgICAgICAgICgtW1dlYlZpZXcgZHJhZ0Rh
dGFGb3JTZXNzaW9uOmNsaWVudDpnbG9iYWw6b3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9lbnRlcmVkRGF0YUludGVyYWN0aW9uOmNsaWVudDpnbG9iYWw6b3BlcmF0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF91cGRhdGVkRGF0YUludGVyYWN0aW9uOmNsaWVudDpnbG9iYWw6
b3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ1VwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
ZHJhZ2dpbmdFeGl0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRp
b246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKENv
Y29hRHJhZ09wZXJhdGlvbik6CisgICAgICAgIC0gQWRkIHR5cGVkZWYgc28gY29yZURyYWdPcGVy
YXRpb25NYXNrKCkgbWF5IGJlIHNoYXJlZCBhY3Jvc3MKKyAgICAgICAgICBwbGF0Zm9ybXMuCisg
ICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQgZGVjbGFyYXRpb24uCisgICAgICAg
IChjb3JlT3B0aW9ucyk6CisgICAgICAgIC0gUmVtb3ZlIHJlZHVuZGFudCBwYXJhbWV0ZXIgbmFt
ZS4KKwogMjAyMC0wNi0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW0FwcGxlIFBheV0gUmVtb3ZlIGNvbmRpdGlvbmFscyBmb3IgRU5BQkxFX0FQUExFX1BBWV9T
RVNTSU9OX1YoM3w0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDY5Mjc1ZWU3M2Mx
NWU1ZmU5NzNiYzgxNTkwNzNiOGZkNDBiNmUxNTUuLjE3NDg1MTY1OGExY2IzYjRmNzNkNjIyOTE4
MWZjZjllYTQ5YTdmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OCBAQAorMjAyMC0wNi0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAgICAgICAgLSBSZXBs
YWNlIHVzZSBvZiBEcmFnT3BlcmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9y
CisgICAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAgIC0gUmVuYW1lIGZ1
bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5vdGUgdXNlCisgICAg
ICAgICAgb2YgbWFzayB2YWx1ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdPcGVyYXRpb25Ob25l
IGVudW0gdmFsdWUuCisgICAgICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9uRXZlcnkgZW51bSB2
YWx1ZSB3aXRoIGFueURyYWdPcGVyYXRpb24oKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
VG9EcmFnQ3Vyc29ycyk6CisgICAgICAgIChXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcpOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcik6
CisgICAgICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJWaWV3OjpEcmFnTGVhdmUpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAgICAgICAg
KFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9uIGNvbnN0KToKKwogMjAyMC0wNi0wMSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHVzZSBj
YXN0cyB0byBjb252ZXJ0IGJldHdlZW4gV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFu
ZCB7V2ViLFdLfURyYWdEZXN0aW5hdGlvbkFjdGlvbiB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvT3B0aW9uU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAppbmRleCAy
YWQ2OGZiNTMxNmQ3MDc5YzNmZGRiODRhNDk1YzVlMDU3Y2UwMzFiLi4yZGNmNDNjMmU2Mjk0ZGQy
MzJhMTIwMmZiMmVmYjAzNmQ4Y2VmNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRp
b25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKQEAgLTE2NSw2ICsxNjYsMTEgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogCisgICAgY29uc3RleHByIE9wdGlvblNldChPcHRpb25hbDxFPiBvcHRpb25hbCkK
KyAgICAgICAgOiBtX3N0b3JhZ2Uob3B0aW9uYWwgPyBzdGF0aWNfY2FzdDxTdG9yYWdlVHlwZT4o
Km9wdGlvbmFsKSA6IDApCisgICAgeworICAgIH0KKwogICAgIGNvbnN0ZXhwciBTdG9yYWdlVHlw
ZSB0b1JhdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZTsgfQogCiAgICAgY29uc3RleHByIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3N0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAKaW5kZXggOTA0YmRkOTM5MDVlNDZmYjIyYTU4MDZiNGFjNjEzMmJmYTNj
MDU2Ni4uMjA5YzA3YjdmNzU4YWYxOTM3YWU0OGY3MzJjNGM5MTBkYjI3NGJkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDg5LDE4ICs0ODksMTgg
QEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVu
dChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQog
Ci1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJk
LCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVm
PERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdG
aWxlcykKIHsKICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5z
ZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJk
KSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5k
RHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VP
cGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFzayhzb3Vy
Y2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9
IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRh
dGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJh
dGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09w
ZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAg
IGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5z
ZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdG
aWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsK
LSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRpb24pOwor
ICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25N
YXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9y
aWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsK
IH0KQEAgLTU5Niw3NCArNTk2LDc0IEBAIHZvaWQgRHJhZ0ltYWdlTG9hZGVyOjppbWFnZUNoYW5n
ZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KikKICAgICBtX2RhdGFUcmFuc2Zlci0+dXBk
YXRlRHJhZ0ltYWdlKCk7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRyYWdPcEZyb21JRU9w
KGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQorc3RhdGljIE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHsKICAgICBpZiAob3Bl
cmF0aW9uID09ICJ1bmluaXRpYWxpemVkIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25F
dmVyeTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKICAgICBpZiAob3BlcmF0
aW9uID09ICJub25lIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHkiKQotICAgICAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25Db3B5
IH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGluayIpCi0gICAgICAgIHJldHVybiBEcmFnT3Bl
cmF0aW9uTGluazsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkxpbmsgfTsKICAgICBp
ZiAob3BlcmF0aW9uID09ICJtb3ZlIikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShE
cmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAgcmV0dXJu
IHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9w
ZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAgICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxpbmspOworICAgICAgICByZXR1cm4geyBE
cmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfTsKICAgICBpZiAob3BlcmF0aW9u
ID09ICJjb3B5TW92ZSIpCi0gICAgICAgIHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJh
dGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAg
ICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHksIERyYWdPcGVyYXRpb25HZW5lcmljLCBE
cmFnT3BlcmF0aW9uTW92ZSB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImxpbmtNb3ZlIikKLSAg
ICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uTGluayB8IERyYWdPcGVy
YXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFn
T3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07
CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiYWxsIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b25FdmVyeTsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlvblByaXZhdGU7IC8vIHJlYWxseSBhIG1h
cmtlciBmb3IgIm5vIGNvbnZlcnNpb24iCisgICAgICAgIHJldHVybiBhbnlEcmFnT3BlcmF0aW9u
KCk7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvblByaXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFy
a2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJv
bURyYWdPcChEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBjb25zdCBjaGFyKiBJRU9w
RnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKLSAg
ICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb24gJiAoRHJhZ09wZXJhdGlvbkdlbmVyaWMg
fCBEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgYm9vbCBpc0dlbmVyaWNNb3ZlID0gb3BlcmF0aW9u
TWFzay5jb250YWluc0FueSh7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92
ZSB9KTsKIAotICAgIGlmICgoaXNHZW5lcmljTW92ZSAmJiAob3BlcmF0aW9uICYgRHJhZ09wZXJh
dGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpIHx8IG9wZXJhdGlv
biA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYgKChpc0dlbmVyaWNNb3ZlICYmIG9wZXJh
dGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxp
bmsgfSkpIHx8IG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoYW55RHJhZ09wZXJhdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuICJhbGwiOwotICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIChvcGVyYXRp
b24gJiBEcmFnT3BlcmF0aW9uQ29weSkpCisgICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0
aW9uTWFzay5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiAiY29w
eU1vdmUiOwotICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0
aW9uTGluaykpCisgICAgaWYgKGlzR2VuZXJpY01vdmUgJiYgb3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJldHVybiAibGlua01vdmUiOwotICAgIGlm
ICgob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3Bl
cmF0aW9uTGluaykpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3Bl
cmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfSkpCiAgICAgICAgIHJldHVybiAiY29weUxp
bmsiOwogICAgIGlmIChpc0dlbmVyaWNNb3ZlKQogICAgICAgICByZXR1cm4gIm1vdmUiOwotICAg
IGlmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAob3BlcmF0aW9uTWFz
ay5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIHJldHVybiAiY29weSI7Ci0g
ICAgaWYgKG9wZXJhdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKQorICAgIGlmIChvcGVyYXRpb25N
YXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAgcmV0dXJuICJsaW5rIjsK
ICAgICByZXR1cm4gIm5vbmUiOwogfQogCi1EcmFnT3BlcmF0aW9uIERhdGFUcmFuc2Zlcjo6c291
cmNlT3BlcmF0aW9uKCkgY29uc3QKK09wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBEYXRhVHJhbnNm
ZXI6OnNvdXJjZU9wZXJhdGlvbk1hc2soKSBjb25zdAogewotICAgIERyYWdPcGVyYXRpb24gb3Bl
cmF0aW9uID0gZHJhZ09wRnJvbUlFT3AobV9lZmZlY3RBbGxvd2VkKTsKLSAgICBBU1NFUlQob3Bl
cmF0aW9uICE9IERyYWdPcGVyYXRpb25Qcml2YXRlKTsKLSAgICByZXR1cm4gb3BlcmF0aW9uOwor
ICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9IGRyYWdPcEZyb21JRU9wKG1fZWZmZWN0QWxsb3dlZCk7
CisgICAgQVNTRVJUKG9wZXJhdGlvbk1hc2sgIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOworICAg
IHJldHVybiBvcGVyYXRpb25NYXNrOwogfQogCi1EcmFnT3BlcmF0aW9uIERhdGFUcmFuc2Zlcjo6
ZGVzdGluYXRpb25PcGVyYXRpb24oKSBjb25zdAorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IERh
dGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb25NYXNrKCkgY29uc3QKIHsKLSAgICBEcmFn
T3BlcmF0aW9uIG9wZXJhdGlvbiA9IGRyYWdPcEZyb21JRU9wKG1fZHJvcEVmZmVjdCk7Ci0gICAg
QVNTRVJUKG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb24gPT0gRHJh
Z09wZXJhdGlvbk5vbmUgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJh
dGlvbiA9PSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0
aW9uTW92ZSkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25FdmVyeSk7Ci0gICAgcmV0dXJu
IG9wZXJhdGlvbjsKKyAgICBhdXRvIG9wZXJhdGlvbk1hc2sgPSBkcmFnT3BGcm9tSUVPcChtX2Ry
b3BFZmZlY3QpOworICAgIEFTU0VSVChvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Db3B5
IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0eSgpIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJh
dGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFzayA9PSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4oeyBE
cmFnT3BlcmF0aW9uR2VuZXJpYywgRHJhZ09wZXJhdGlvbk1vdmUgfSkgfHwgb3BlcmF0aW9uTWFz
ayA9PSBhbnlEcmFnT3BlcmF0aW9uKCkpOworICAgIHJldHVybiBvcGVyYXRpb25NYXNrOwogfQog
Ci12b2lkIERhdGFUcmFuc2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3Bl
cmF0aW9uKQordm9pZCBEYXRhVHJhbnNmZXI6OnNldFNvdXJjZU9wZXJhdGlvbk1hc2soT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2spCiB7Ci0gICAgQVNTRVJUX0FSRyhvcGVy
YXRpb24sIG9wZXJhdGlvbiAhPSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7Ci0gICAgbV9lZmZlY3RB
bGxvd2VkID0gSUVPcEZyb21EcmFnT3Aob3BlcmF0aW9uKTsKKyAgICBBU1NFUlRfQVJHKG9wZXJh
dGlvbk1hc2ssIG9wZXJhdGlvbk1hc2sgIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIG1f
ZWZmZWN0QWxsb3dlZCA9IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbk1hc2spOwogfQogCi12b2lk
IERhdGFUcmFuc2Zlcjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVy
YXRpb24pCit2b2lkIERhdGFUcmFuc2Zlcjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQogewotICAgIEFTU0VSVF9BUkco
b3BlcmF0aW9uLCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uID09
IERyYWdPcGVyYXRpb25Ob25lIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBv
cGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkdlbmVyaWMgfHwgb3BlcmF0aW9uID09IERyYWdPcGVy
YXRpb25Nb3ZlIHx8IG9wZXJhdGlvbiA9PSAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJhdGlvbkdl
bmVyaWMgfCBEcmFnT3BlcmF0aW9uTW92ZSkpOwotICAgIG1fZHJvcEVmZmVjdCA9IElFT3BGcm9t
RHJhZ09wKG9wZXJhdGlvbik7CisgICAgQVNTRVJUX0FSRyhvcGVyYXRpb25NYXNrLCBvcGVyYXRp
b25NYXNrID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbk1hc2suaXNFbXB0eSgpIHx8
IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9uTWFzayA9PSBE
cmFnT3BlcmF0aW9uR2VuZXJpYyB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25Nb3Zl
IHx8IG9wZXJhdGlvbk1hc2sgPT0gT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgRHJhZ09wZXJh
dGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pKTsKKyAgICBtX2Ryb3BFZmZlY3QgPSBJ
RU9wRnJvbURyYWdPcChvcGVyYXRpb25NYXNrKTsKIH0KIAogU3RyaW5nIERhdGFUcmFuc2Zlcjo6
ZHJvcEVmZmVjdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKaW5kZXggZTVjZmFm
ODU2ZmIyODgzZmMxNTRkZGM4OGIwZDc3MjNiYzk4OGIwNC4uM2NjY2Y2N2FjNWFlZDNmZDE5Yzk1
YjBkNDMxZDE5MDU5ZDJjMGM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaApAQCAtMiw3
ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29t
KQogICogQ29weXJpZ2h0IChDKSAyMDAxIFRvYmlhcyBBbnRvbiAoYW50b25Ac3R1ZC5mYmkuZmgt
ZGFybXN0YWR0LmRlKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53
ZWluaWdAZ21haWwuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC04OCwxNSArODgs
MTUgQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgc3RhdGljIFJlZjxE
YXRhVHJhbnNmZXI+IGNyZWF0ZUZvckRyYWcoKTsKICAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zl
cj4gY3JlYXRlRm9yRHJhZ1N0YXJ0RXZlbnQoY29uc3QgRG9jdW1lbnQmKTsKLSAgICBzdGF0aWMg
UmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMp
OwotICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJn
ZXQoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgRHJhZ09w
ZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBzdGF0aWMgUmVmPERhdGFUcmFuc2Zl
cj4gY3JlYXRlRm9yRHJvcChjb25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Cisg
ICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldChj
b25zdCBEb2N1bWVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAKICAgICBib29sIGRyb3BFZmZl
Y3RJc1VuaW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVybiBtX2Ryb3BFZmZlY3QgPT0gInVuaW5p
dGlhbGl6ZWQiOyB9CiAKLSAgICBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbigpIGNvbnN0
OwotICAgIERyYWdPcGVyYXRpb24gZGVzdGluYXRpb25PcGVyYXRpb24oKSBjb25zdDsKLSAgICB2
b2lkIHNldFNvdXJjZU9wZXJhdGlvbihEcmFnT3BlcmF0aW9uKTsKLSAgICB2b2lkIHNldERlc3Rp
bmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRpb24pOworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3Q7CisgICAgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IGRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygpIGNvbnN0OworICAgIHZvaWQgc2V0U291
cmNlT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4pOworICAgIHZvaWQgc2V0
RGVzdGluYXRpb25PcGVyYXRpb25NYXNrKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPik7CiAKICAg
ICB2b2lkIHNldERyYWdIYXNTdGFydGVkKCkgeyBtX3Nob3VsZFVwZGF0ZURyYWdJbWFnZSA9IHRy
dWU7IH0KICAgICBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JiBkcmFnTG9j
YXRpb24pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCmluZGV4IGE5MjNjYWU1OGNi
ZjVmNjViZWNjN2U5MjNmMmQzODA3YjJlODNlYmQuLmYzZGQzZTVlYTM5ZDJmMmNmMGRkMjdiNmE1
OTU3NTUwZDBlNjIyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKQEAgLTYwLDE3ICs2
MCwyMCBAQCB0eXBlZGVmIGVudW0gewogICAgIERyYWdTb3VyY2VBY3Rpb25BbnkgICAgICAgICAg
PSBVSU5UX01BWAogfSBEcmFnU291cmNlQWN0aW9uOwogCi0vLyBNYXRjaGVzIE5TRHJhZ09wZXJh
dGlvbi4KLXR5cGVkZWYgZW51bSB7Ci0gICAgRHJhZ09wZXJhdGlvbk5vbmUgICAgPSAwLAorLy8g
U2VlIE5TRHJhZ09wZXJhdGlvbiwgX1VJRHJhZ09wZXJhdGlvbiBhbmQgVUlEcm9wT3BlcmF0aW9u
LgorZW51bSBEcmFnT3BlcmF0aW9uIHsKICAgICBEcmFnT3BlcmF0aW9uQ29weSAgICA9IDEsCiAg
ICAgRHJhZ09wZXJhdGlvbkxpbmsgICAgPSAyLAogICAgIERyYWdPcGVyYXRpb25HZW5lcmljID0g
NCwKICAgICBEcmFnT3BlcmF0aW9uUHJpdmF0ZSA9IDgsCiAgICAgRHJhZ09wZXJhdGlvbk1vdmUg
ICAgPSAxNiwKICAgICBEcmFnT3BlcmF0aW9uRGVsZXRlICA9IDMyLAotICAgIERyYWdPcGVyYXRp
b25FdmVyeSAgID0gVUlOVF9NQVgKLX0gRHJhZ09wZXJhdGlvbjsKK307CisKK2NvbnN0ZXhwciBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gYW55RHJhZ09wZXJhdGlvbigpCit7CisgICAgcmV0dXJu
IHsgRHJhZ09wZXJhdGlvbkNvcHksIERyYWdPcGVyYXRpb25MaW5rLCBEcmFnT3BlcmF0aW9uR2Vu
ZXJpYywgRHJhZ09wZXJhdGlvblByaXZhdGUsIERyYWdPcGVyYXRpb25Nb3ZlLCBEcmFnT3BlcmF0
aW9uRGVsZXRlIH07Cit9CiAKIGVudW0gY2xhc3MgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gOiBib29s
IHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgOiBi
b29sIHsgTm8sIFllcyB9OwpAQCAtOTMsNiArOTYsMTggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2Q+IHsKICAgICA+OwogfTsKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiB7CisgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
biwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHksCisgICAgICAgIFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJp
YywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUsCisgICAgICAgIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVs
ZXRlCisgICAgPjsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBPcHRpb25T
ZXRWYWx1ZXM8CiAgICAgICAgIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwKQEAgLTEw
Miw0ICsxMTcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9uU2V0VHJhaXRzPFdlYkNvcmU6
OkRyYWdEZXN0aW5hdGlvbkFjdGlvbj4gewogICAgID47CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVj
dCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4geworICAgIHVzaW5nIHZh
bHVlcyA9IE9wdGlvblNldFZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwK
KyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHksCisgICAgICAgIFdlYkNvcmU6OkRy
YWdPcGVyYXRpb25MaW5rLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYywK
KyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUsCisgICAgICAgIFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25Nb3ZlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRl
CisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAppbmRleCA0MTkzZDRkNWQ0ZTQ2YjJlZjJlMTkzMGFjOTdhNTEyYzk0ODIy
NTYxLi44ZmE5YjI1ZjVlMWUwMjQ1MmFhY2NmY2QwN2EyMWZhM2FkOWU4Mjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgRHJh
Z0NvbnRyb2xsZXI6OmRyYWdFbmRlZCgpCiAgICAgY2xpZW50KCkuZHJhZ0VuZGVkKCk7CiB9CiAK
LURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSkKK09wdGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFn
RW50ZXJlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgcmV0dXJuIGRyYWdFbnRl
cmVkT3JVcGRhdGVkKGRyYWdEYXRhKTsKIH0KQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIERyYWdD
b250cm9sbGVyOjpkcmFnRXhpdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICBtX2Zp
bGVJbnB1dEVsZW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKIH0KIAotRHJhZ09wZXJhdGlvbiBE
cmFnQ29udHJvbGxlcjo6ZHJhZ1VwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0
aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdVcGRhdGVkKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICByZXR1cm4gZHJhZ0VudGVyZWRPclVwZGF0ZWQoZHJh
Z0RhdGEpOwogfQpAQCAtMjc4LDcgKzI3OCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnBlcmZv
cm1EcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICBtX2RvY3VtZW50
VW5kZXJNb3VzZSA9IG51bGxwdHI7CiAgICAgY2xlYXJEcmFnQ2FyZXQoKTsKIAotICAgIGlmIChv
cGVyYXRpb25Gb3JMb2FkKGRyYWdEYXRhKSA9PSBEcmFnT3BlcmF0aW9uTm9uZSkKKyAgICBpZiAo
IW9wZXJhdGlvbkZvckxvYWQoZHJhZ0RhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBhdXRvIHVybFN0cmluZyA9IGRyYWdEYXRhLmFzVVJMKCk7CkBAIC0zMDQsMjEgKzMwNCwyMSBA
QCB2b2lkIERyYWdDb250cm9sbGVyOjptb3VzZU1vdmVkSW50b0RvY3VtZW50KERvY3VtZW50KiBu
ZXdEb2N1bWVudCkKICAgICBtX2RvY3VtZW50VW5kZXJNb3VzZSA9IG5ld0RvY3VtZW50OwogfQog
Ci1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25z
dCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJv
bGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewog
ICAgIG1vdXNlTW92ZWRJbnRvRG9jdW1lbnQobV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQ
b2ludChkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpKSk7CiAKICAgICBtX2RyYWdEZXN0aW5hdGlv
bkFjdGlvbk1hc2sgPSBkcmFnRGF0YS5kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKCk7CiAgICAg
aWYgKG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzay5pc0VtcHR5KCkpIHsKICAgICAgICAgY2xl
YXJEcmFnQ2FyZXQoKTsgLy8gRklYTUU6IFdoeSBub3QgY2FsbCBtb3VzZU1vdmVkSW50b0RvY3Vt
ZW50KG51bGxwdHIpPwotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgRHJhZ09wZXJhdGlvbiBkcmFnT3Bl
cmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4g
ZHJhZ09wZXJhdGlvbjsKICAgICBtX2RyYWdIYW5kbGluZ01ldGhvZCA9IHRyeURvY3VtZW50RHJh
ZyhkcmFnRGF0YSwgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLCBkcmFnT3BlcmF0aW9uKTsK
ICAgICBpZiAobV9kcmFnSGFuZGxpbmdNZXRob2QgPT0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25l
ICYmIChtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2suY29udGFpbnMoRHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uOjpMb2FkKSkpIHsKICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wZXJhdGlvbkZvckxv
YWQoZHJhZ0RhdGEpOwotICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbiAhPSBEcmFnT3BlcmF0aW9u
Tm9uZSkKKyAgICAgICAgaWYgKGRyYWdPcGVyYXRpb24pCiAgICAgICAgICAgICBtX2RyYWdIYW5k
bGluZ01ldGhvZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6UGFnZUxvYWQ7CiAgICAgfSBlbHNlIGlm
IChtX2RyYWdIYW5kbGluZ01ldGhvZCA9PSBEcmFnSGFuZGxpbmdNZXRob2Q6OlNldENvbG9yKQog
ICAgICAgICBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CkBAIC0zODgsNyArMzg4
LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxlcjo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
Rm9yRHJhZ0hhbmRsaW5nTWV0aG9kKERyYWdIYW4KIAogI2VuZGlmCiAKLURyYWdIYW5kbGluZ01l
dGhvZCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25N
YXNrLCBEcmFnT3BlcmF0aW9uJiBkcmFnT3BlcmF0aW9uKQorRHJhZ0hhbmRsaW5nTWV0aG9kIERy
YWdDb250cm9sbGVyOjp0cnlEb2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBP
cHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2ssIE9w
dGlvbmFsPERyYWdPcGVyYXRpb24+JiBkcmFnT3BlcmF0aW9uKQogewogICAgIGlmICghbV9kb2N1
bWVudFVuZGVyTW91c2UpCiAgICAgICAgIHJldHVybiBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmU7
CkBAIC00NTgsNyArNDU4LDcgQEAgRHJhZ0hhbmRsaW5nTWV0aG9kIERyYWdDb250cm9sbGVyOjp0
cnlEb2N1bWVudERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBPcHQKICAgICAgICAgICAg
ICAgICBtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQgPSAxOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoIW1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCkKLSAgICAgICAgICAgICAg
ICBkcmFnT3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAgICAgICAgICAgZHJh
Z09wZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgIG1fZmlsZUlucHV0RWxlbWVu
dFVuZGVyTW91c2UtPnNldENhblJlY2VpdmVEcm9wcGVkRmlsZXMobV9udW1iZXJPZkl0ZW1zVG9C
ZUFjY2VwdGVkKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3Qg
b3ZlciBhIGZpbGUgaW5wdXQgZWxlbWVudC4gVGhlIGRyYWdnZWQgaXRlbShzKSB3aWxsIGxvYWRl
ZCBpbnRvIHRoZSB2aWV3LApAQCAtNDg5LDcgKzQ4OSw3IEBAIERyYWdTb3VyY2VBY3Rpb24gRHJh
Z0NvbnRyb2xsZXI6OmRlbGVnYXRlRHJhZ1NvdXJjZUFjdGlvbihjb25zdCBJbnRQb2ludCYgcm9v
dFZpCiAgICAgcmV0dXJuIG1fZHJhZ1NvdXJjZUFjdGlvbjsKIH0KIAotRHJhZ09wZXJhdGlvbiBE
cmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEp
CitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9h
ZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS5jbGllbnRQb3NpdGlv
bigpKTsKIApAQCAtNTA0LDcgKzUwNCw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6
Om9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIH0KIAogICAg
IGlmIChkb2N1bWVudCAmJiAobV9kaWRJbml0aWF0ZURyYWcgfHwgKGlzPFBsdWdpbkRvY3VtZW50
PigqZG9jdW1lbnQpICYmICFwbHVnaW5Eb2N1bWVudEFjY2VwdHNEcmFncykgfHwgZG9jdW1lbnQt
Pmhhc0VkaXRhYmxlU3R5bGUoKSkpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gZHJhZ09wZXJhdGlvbihk
cmFnRGF0YSk7CiB9CiAKQEAgLTY5MywyOCArNjkzLDI4IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6
OmNhblByb2Nlc3NEcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoRHJh
Z09wZXJhdGlvbiBzcmNPcE1hc2spCitzdGF0aWMgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZGVm
YXVsdE9wZXJhdGlvbkZvckRyYWcoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJh
dGlvbk1hc2spCiB7CiAgICAgLy8gVGhpcyBpcyBkZXNpZ25lZCB0byBtYXRjaCBJRSdzIG9wZXJh
dGlvbiBmYWxsYmFjayBmb3IgdGhlIGNhc2Ugd2hlcmUKICAgICAvLyB0aGUgcGFnZSBjYWxscyBw
cmV2ZW50RGVmYXVsdCgpIGluIGEgZHJhZyBldmVudCBidXQgZG9lc24ndCBzZXQgZHJvcEVmZmVj
dC4KLSAgICBpZiAoc3JjT3BNYXNrID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBpZiAoc291
cmNlT3BlcmF0aW9uTWFzay5jb250YWluc0FsbChhbnlEcmFnT3BlcmF0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7Ci0gICAgaWYgKHNyY09wTWFzayA9PSBEcmFnT3Bl
cmF0aW9uTm9uZSkKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOwotICAgIGlmIChz
cmNPcE1hc2sgJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFz
ay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbk1vdmU7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdPcGVyYXRpb25H
ZW5lcmljKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRp
b25HZW5lcmljKSkKICAgICAgICAgcmV0dXJuIERyYWdDb250cm9sbGVyOjpwbGF0Zm9ybUdlbmVy
aWNEcmFnT3BlcmF0aW9uKCk7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdPcGVyYXRpb25Db3B5
KQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5
KSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwotICAgIGlmIChzcmNPcE1hc2sg
JiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5jb250YWlu
cyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTGluazsK
ICAgICAKICAgICAvLyBGSVhNRTogRG9lcyBJRSByZWFsbHkgcmV0dXJuICJnZW5lcmljIiBldmVu
IGlmIG5vIG9wZXJhdGlvbnMgd2VyZSBhbGxvd2VkIGJ5IHRoZSBzb3VyY2U/CiAgICAgcmV0dXJu
IERyYWdPcGVyYXRpb25HZW5lcmljOwogfQogCi1ib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRN
TERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhLCBEcmFnT3BlcmF0aW9uJiBvcGVyYXRpb24p
Citib29sIERyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmIGRyYWdE
YXRhLCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiYgb3BlcmF0aW9uKQogewogICAgIEFTU0VSVCht
X2RvY3VtZW50VW5kZXJNb3VzZSk7CiAgICAgUmVmPEZyYW1lPiBtYWluRnJhbWUobV9wYWdlLm1h
aW5GcmFtZSgpKTsKQEAgLTcyMiwxNyArNzIyLDE5IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRy
eURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24mIG9wZXJh
CiAgICAgaWYgKCF2aWV3UHJvdGVjdG9yKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBE
cmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzaygpOwotICAgIGF1dG8gdGFyZ2V0UmVzcG9uc2UgPSBtYWluRnJhbWUtPmV2ZW50
SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBb
JmRyYWdEYXRhXSgpIHsgcmV0dXJuIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGRy
YWdEYXRhKTsgfSwgc291cmNlT3BlcmF0aW9uLCBkcmFnRGF0YS5jb250YWluc0ZpbGVzKCkpOwor
ICAgIGF1dG8gc291cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzaygpOworICAgIGF1dG8gdGFyZ2V0UmVzcG9uc2UgPSBtYWluRnJhbWUtPmV2ZW50
SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGNyZWF0ZU1vdXNlRXZlbnQoZHJhZ0RhdGEpLCBb
JmRyYWdEYXRhXSgpIHsKKyAgICAgICAgcmV0dXJuIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdB
bmREcm9wKGRyYWdEYXRhKTsKKyAgICB9LCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnRGF0YS5j
b250YWluc0ZpbGVzKCkpOwogICAgIGlmICghdGFyZ2V0UmVzcG9uc2UuYWNjZXB0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbikKLSAg
ICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlvbkZvckRyYWcoc291cmNlT3BlcmF0aW9u
KTsKLSAgICBlbHNlIGlmICghKHNvdXJjZU9wZXJhdGlvbiAmIHRhcmdldFJlc3BvbnNlLm9wZXJh
dGlvbi52YWx1ZSgpKSkgLy8gVGhlIGVsZW1lbnQgcGlja2VkIGFuIG9wZXJhdGlvbiB3aGljaCBp
cyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzb3VyY2UKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09w
ZXJhdGlvbk5vbmU7CisgICAgaWYgKCF0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrKQorICAg
ICAgICBvcGVyYXRpb24gPSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb25N
YXNrKTsKKyAgICBlbHNlIGlmICghc291cmNlT3BlcmF0aW9uTWFzay5jb250YWluc0FueSh0YXJn
ZXRSZXNwb25zZS5vcGVyYXRpb25NYXNrLnZhbHVlKCkpKSAvLyBUaGUgZWxlbWVudCBwaWNrZWQg
YW4gb3BlcmF0aW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHNvdXJjZS4KKyAgICAg
ICAgb3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIGVsc2UKLSAgICAgICAgb3BlcmF0aW9u
ID0gdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uLnZhbHVlKCk7CisgICAgICAgIG9wZXJhdGlvbiA9
IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2sudmFs
dWUoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk1Niw3ICs5NTgsNyBAQCBPcHRpb25h
bDxIaXRUZXN0UmVzdWx0PiBEcmFnQ29udHJvbGxlcjo6aGl0VGVzdFJlc3VsdEZvckRyYWdTdGFy
dChGcmFtZSYgc291cmNlLAogICAgIHJldHVybiB7IGhpdFRlc3RSZXN1bHQgfTsKIH0KIAotYm9v
bCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lJiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYg
c3RhdGUsIERyYWdPcGVyYXRpb24gc3JjT3AsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJh
Z0V2ZW50LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9h
cmREYXRhIGhhc0RhdGEpCitib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNy
YywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJj
ZU9wZXJhdGlvbk1hc2ssIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZHJhZ0V2ZW50LCBjb25z
dCBJbnRQb2ludCYgZHJhZ09yaWdpbiwgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIGhhc0Rh
dGEpCiB7CiAgICAgaWYgKCFzdGF0ZS5zb3VyY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTk3Miw3ICs5NzQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNy
YywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIEludFBvaW50IG1v
dXNlRHJhZ2dlZFBvaW50ID0gc3JjLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhkcmFnRXZlbnQu
cG9zaXRpb24oKSk7CiAKICAgICBtX2RyYWdnaW5nSW1hZ2VVUkwgPSBVUkwoKTsKLSAgICBtX3Nv
dXJjZURyYWdPcGVyYXRpb24gPSBzcmNPcDsKKyAgICBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNr
ID0gc291cmNlT3BlcmF0aW9uTWFzazsKIAogICAgIERyYWdJbWFnZSBkcmFnSW1hZ2U7CiAgICAg
SW50UG9pbnQgZHJhZ0xvYygwLCAwKTsKQEAgLTk5NSw3ICs5OTcsNyBAQCBib29sIERyYWdDb250
cm9sbGVyOjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJh
Z09wZXJhdGlvbgogICAgICAgICAvLyBTZWxlY3Rpb24sIGltYWdlLCBhbmQgbGluayBkcmFncyBy
ZWNlaXZlIGEgZGVmYXVsdCBzZXQgb2YgYWxsb3dlZCBkcmFnIG9wZXJhdGlvbnMgdGhhdAogICAg
ICAgICAvLyBmb2xsb3dzIGZyb206CiAgICAgICAgIC8vIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
YnJvd3Nlci90cnVuay9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0/cmV2PTQ4NTI2
I0wzNDMwCi0gICAgICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbiA9IHN0YXRpY19jYXN0PERyYWdP
cGVyYXRpb24+KG1fc291cmNlRHJhZ09wZXJhdGlvbiB8IERyYWdPcGVyYXRpb25HZW5lcmljIHwg
RHJhZ09wZXJhdGlvbkNvcHkpOworICAgICAgICBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrLmFk
ZCh7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uQ29weSB9KTsKICAgICB9CiAK
ICAgICBBU1NFUlQoc3RhdGUuc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
aAppbmRleCA5MGY4NzVjMDY3YTVjNmExYTcwMDBkZGE1ZmEzODBhZTg2ZGQ3MTQ5Li5lYTQ5OWUw
ZWJkNjUxNmU5ODA4YzQ5ZjFlYzA4NTI0NDlkY2VlOGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5oCkBAIC01OSw5ICs1OSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBEcmFn
T3BlcmF0aW9uIHBsYXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRpb24oKTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIERyYWdPcGVyYXRpb24gZHJhZ0VudGVyZWQoY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZChjb25zdCBE
cmFnRGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0V4aXRlZChjb25zdCBEcmFn
RGF0YSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdPcGVyYXRpb24gZHJhZ1VwZGF0ZWQoY29u
c3QgRHJhZ0RhdGEmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEcmFnT3BlcmF0aW9u
PiBkcmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRyYWdDYW5jZWxsZWQoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gZHJhZyBsb2dpYyBpcyBpbiBXZWJDb3JlLgogICAgIHZvaWQgc2V0RGlkSW5pdGlhdGVEcmFn
KGJvb2wgaW5pdGlhdGVkKSB7IG1fZGlkSW5pdGlhdGVEcmFnID0gaW5pdGlhdGVkOyB9CiAgICAg
Ym9vbCBkaWRJbml0aWF0ZURyYWcoKSBjb25zdCB7IHJldHVybiBtX2RpZEluaXRpYXRlRHJhZzsg
fQotICAgIERyYWdPcGVyYXRpb24gc291cmNlRHJhZ09wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlRHJhZ09wZXJhdGlvbjsgfQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBz
b3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRHJhZ09wZXJh
dGlvbk1hc2s7IH0KICAgICBjb25zdCBVUkwmIGRyYWdnaW5nSW1hZ2VVUkwoKSBjb25zdCB7IHJl
dHVybiBtX2RyYWdnaW5nSW1hZ2VVUkw7IH0KICAgICB2b2lkIHNldERyYWdPZmZzZXQoY29uc3Qg
SW50UG9pbnQmIG9mZnNldCkgeyBtX2RyYWdPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICBjb25zdCBJ
bnRQb2ludCYgZHJhZ09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ09mZnNldDsgfQpAQCAt
OTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnREcm9w
cGVkSW1hZ2VQbGFjZWhvbGRlcnNBdENhcmV0KGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VT
aXplcyk7CiAKICAgICB2b2lkIHByZXBhcmVGb3JEcmFnU3RhcnQoRnJhbWUmIHNvdXJjZUZyYW1l
LCBEcmFnU291cmNlQWN0aW9uLCBFbGVtZW50JiBzb3VyY2VFbGVtZW50LCBEYXRhVHJhbnNmZXIm
LCBjb25zdCBJbnRQb2ludCYgZHJhZ09yaWdpbikgY29uc3Q7Ci0gICAgYm9vbCBzdGFydERyYWco
RnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiwgRHJhZ09wZXJhdGlvbiBzcmNPcCwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2lu
LCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOworICAgIGJvb2wgc3RhcnREcmFnKEZyYW1l
JiBzcmMsIGNvbnN0IERyYWdTdGF0ZSYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2lu
LCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgIHN0YXRpYyBjb25zdCBJbnRTaXpl
JiBtYXhEcmFnSW1hZ2VTaXplKCk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IE1heE9yaWdpbmFs
SW1hZ2VBcmVhOwpAQCAtMTA4LDExICsxMDgsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIGRpc3Bh
dGNoVGV4dElucHV0RXZlbnRGb3IoRnJhbWUqLCBjb25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wg
Y2FuUHJvY2Vzc0RyYWcoY29uc3QgRHJhZ0RhdGEmKTsKICAgICBib29sIGNvbmNsdWRlRWRpdERy
YWcoY29uc3QgRHJhZ0RhdGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIGRyYWdFbnRlcmVkT3JVcGRh
dGVkKGNvbnN0IERyYWdEYXRhJik7Ci0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb25Gb3JMb2Fk
KGNvbnN0IERyYWdEYXRhJik7Ci0gICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3VtZW50RHJh
Zyhjb25zdCBEcmFnRGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+LCBEcmFn
T3BlcmF0aW9uJik7Ci0gICAgYm9vbCB0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmLCBEcmFn
T3BlcmF0aW9uJik7Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdE
YXRhJik7CisgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ0VudGVyZWRPclVwZGF0ZWQo
Y29uc3QgRHJhZ0RhdGEmKTsKKyAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25G
b3JMb2FkKGNvbnN0IERyYWdEYXRhJik7CisgICAgRHJhZ0hhbmRsaW5nTWV0aG9kIHRyeURvY3Vt
ZW50RHJhZyhjb25zdCBEcmFnRGF0YSYsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+
LCBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiYpOworICAgIGJvb2wgdHJ5REhUTUxEcmFnKGNvbnN0
IERyYWdEYXRhJiwgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4mKTsKKyAgICBPcHRpb25hbDxEcmFn
T3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJik7CiAgICAgdm9pZCBjbGVh
ckRyYWdDYXJldCgpOwogICAgIGJvb2wgZHJhZ0lzTW92ZShGcmFtZVNlbGVjdGlvbiYsIGNvbnN0
IERyYWdEYXRhJik7CiAgICAgYm9vbCBpc0NvcHlLZXlEb3duKGNvbnN0IERyYWdEYXRhJik7CkBA
IC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9u
QWN0aW9uPiBtX2RyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2s7CiAgICAgRHJhZ1NvdXJjZUFjdGlv
biBtX2RyYWdTb3VyY2VBY3Rpb24geyBEcmFnU291cmNlQWN0aW9uTm9uZSB9OwogICAgIGJvb2wg
bV9kaWRJbml0aWF0ZURyYWcgeyBmYWxzZSB9OwotICAgIERyYWdPcGVyYXRpb24gbV9zb3VyY2VE
cmFnT3BlcmF0aW9uIHsgRHJhZ09wZXJhdGlvbk5vbmUgfTsgLy8gU2V0IGluIHN0YXJ0RHJhZyB3
aGVuIGEgZHJhZyBzdGFydHMgZnJvbSBhIG1vdXNlIGRvd24gd2l0aGluIFdlYktpdAorICAgIE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiBtX3NvdXJjZURyYWdPcGVyYXRpb25NYXNrOyAvLyBTZXQg
aW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4g
V2ViS2l0LgogICAgIEludFBvaW50IG1fZHJhZ09mZnNldDsKICAgICBVUkwgbV9kcmFnZ2luZ0lt
YWdlVVJMOwogICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdEcm9wIHsgZmFsc2UgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAzN2Q0YjQxMDM4OTYxZmExZmI3Mjg3ZGQ3NGMx
ZTQ0ZWNkMmQwNjgxLi4wZTAxMzQ1YWIyNDZmNTk4MDkzNWI2ZDZhODYxZmY4YjM1MTNjNjk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMzM0LDcgKzIzMzQsNyBAQCBz
dGF0aWMgYm9vbCB0YXJnZXRJc0ZyYW1lKE5vZGUqIHRhcmdldCwgRnJhbWUqJiBmcmFtZSkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIERyYWdPcGVyYXRpb24gY29udmVydERyb3Bab25l
T3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgZHJhZ09wZXJhdGlvbikKK3N0
YXRpYyBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0Ry
YWdPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnT3BlcmF0aW9uKQogewogICAgIGlmIChkcmFn
T3BlcmF0aW9uID09ICJjb3B5IikKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OwpA
QCAtMjM0MiwyMSArMjM0MiwyMiBAQCBzdGF0aWMgRHJhZ09wZXJhdGlvbiBjb252ZXJ0RHJvcFpv
bmVPcGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnTwogICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbk1vdmU7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImxpbmsi
KQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkxpbms7Ci0gICAgcmV0dXJuIERyYWdPcGVy
YXRpb25Ob25lOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcg
Y29udmVydERyYWdPcGVyYXRpb25Ub0Ryb3Bab25lT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3Bl
cmF0aW9uKQorc3RhdGljIFN0cmluZyBjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpvbmVPcGVy
YXRpb24oT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uKQogewotICAgIHN3aXRjaCAo
b3BlcmF0aW9uKSB7Ci0gICAgY2FzZSBEcmFnT3BlcmF0aW9uQ29weToKLSAgICAgICAgcmV0dXJu
ICJjb3B5Il9zOwotICAgIGNhc2UgRHJhZ09wZXJhdGlvbk1vdmU6Ci0gICAgICAgIHJldHVybiAi
bW92ZSJfczsKLSAgICBjYXNlIERyYWdPcGVyYXRpb25MaW5rOgotICAgICAgICByZXR1cm4gImxp
bmsiX3M7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuICJjb3B5Il9zOworICAgIGlmIChv
cGVyYXRpb24pIHsKKyAgICAgICAgc3dpdGNoICgqb3BlcmF0aW9uKSB7CisgICAgICAgIGNhc2Ug
RHJhZ09wZXJhdGlvbk1vdmU6CisgICAgICAgICAgICByZXR1cm4gIm1vdmUiX3M7CisgICAgICAg
IGNhc2UgRHJhZ09wZXJhdGlvbkxpbms6CisgICAgICAgICAgICByZXR1cm4gImxpbmsiX3M7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KKyAg
ICByZXR1cm4gImNvcHkiX3M7CiB9CiAKIHN0YXRpYyBib29sIGhhc0Ryb3Bab25lVHlwZShEYXRh
VHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgY29uc3QgU3RyaW5nJiBrZXl3b3JkKQpAQCAtMjM3Niwx
NSArMjM3NywxNCBAQCBzdGF0aWMgYm9vbCBmaW5kRHJvcFpvbmUoTm9kZSYgdGFyZ2V0LCBEYXRh
VHJhbnNmZXImIGRhdGFUcmFuc2ZlcikKICAgICBmb3IgKDsgZWxlbWVudDsgZWxlbWVudCA9IGVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIGtleXdv
cmRzKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24od2Via2l0ZHJvcHpv
bmVBdHRyKSwgdHJ1ZSk7CiAgICAgICAgIGJvb2wgbWF0Y2hlZCA9IGZhbHNlOwotICAgICAgICBE
cmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAg
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbjsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMCwgc2l6ZSA9IGtleXdvcmRzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewotICAg
ICAgICAgICAgRHJhZ09wZXJhdGlvbiBvcCA9IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJh
Z09wZXJhdGlvbihrZXl3b3Jkc1tpXSk7Ci0gICAgICAgICAgICBpZiAob3AgIT0gRHJhZ09wZXJh
dGlvbk5vbmUpIHsKLSAgICAgICAgICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9PSBEcmFnT3Bl
cmF0aW9uTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgZHJhZ09wZXJhdGlvbiA9IG9wOworICAg
ICAgICAgICAgaWYgKGF1dG8gb3BlcmF0aW9uRnJvbUtleXdvcmQgPSBjb252ZXJ0RHJvcFpvbmVP
cGVyYXRpb25Ub0RyYWdPcGVyYXRpb24oa2V5d29yZHNbaV0pKSB7CisgICAgICAgICAgICAgICAg
aWYgKCFkcmFnT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0g
b3BlcmF0aW9uRnJvbUtleXdvcmQ7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICBtYXRjaGVkID0gbWF0Y2hlZCB8fCBoYXNEcm9wWm9uZVR5cGUoZGF0YVRyYW5zZmVyLCBrZXl3
b3Jkc1tpXS5zdHJpbmcoKSk7Ci0gICAgICAgICAgICBpZiAobWF0Y2hlZCAmJiBkcmFnT3BlcmF0
aW9uICE9IERyYWdPcGVyYXRpb25Ob25lKQorICAgICAgICAgICAgaWYgKG1hdGNoZWQgJiYgZHJh
Z09wZXJhdGlvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBp
ZiAobWF0Y2hlZCkgewpAQCAtMjM5NSwyMCArMjM5NSwxOSBAQCBzdGF0aWMgYm9vbCBmaW5kRHJv
cFpvbmUoTm9kZSYgdGFyZ2V0LCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlcikKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLUV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFu
ZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZl
bnQsCi0gICAgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgRHJhZ09w
ZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcykKK0V2ZW50SGFuZGxl
cjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRy
YWdPdmVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiYmIHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRp
b25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7Ci0gICAgYXV0byBkYXRhVHJhbnNmZXIgPSBE
YXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0aW5nRHJvcFRhcmdldCh0YXJnZXQuZG9jdW1lbnQo
KSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsK
KyAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdE
cm9wVGFyZ2V0KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VP
cGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICBib29sIGFjY2VwdCA9IGRpc3BhdGNo
RHJhZ0V2ZW50KGV2ZW50VHlwZSwgdGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyLmdldCgpKTsK
ICAgICBpZiAoIWFjY2VwdCkKICAgICAgICAgYWNjZXB0ID0gZmluZERyb3Bab25lKHRhcmdldCwg
ZGF0YVRyYW5zZmVyKTsKICAgICBkYXRhVHJhbnNmZXItPm1ha2VJbnZhbGlkRm9yU2VjdXJpdHko
KTsKICAgICBpZiAoYWNjZXB0ICYmICFkYXRhVHJhbnNmZXItPmRyb3BFZmZlY3RJc1VuaW5pdGlh
bGl6ZWQoKSkKLSAgICAgICAgcmV0dXJuIHsgdHJ1ZSwgZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlv
bk9wZXJhdGlvbigpIH07CisgICAgICAgIHJldHVybiB7IHRydWUsIGRhdGFUcmFuc2Zlci0+ZGVz
dGluYXRpb25PcGVyYXRpb25NYXNrKCkgfTsKICAgICByZXR1cm4geyBhY2NlcHQsIFdURjo6bnVs
bG9wdCB9OwogfQogCi1FdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVudEhhbmRs
ZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+JiBtYWtlUGFz
dGVib2FyZCwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxl
cykKK0V2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRl
RHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgc3RkOjpm
dW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1ha2VQYXN0ZWJvYXJkLCBP
cHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2lu
Z0ZpbGVzKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAgICAg
aWYgKCFtX2ZyYW1lLnZpZXcoKSkKQEAgLTI0MzgsMTkgKzI0MzcsMTkgQEAgRXZlbnRIYW5kbGVy
OjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25z
dCBQbGF0Zm9ybU0KICAgICAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgICAgICBpZiAodGFy
Z2V0SXNGcmFtZShuZXdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAg
aWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUt
PmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwg
c291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgICAgICByZXNwb25z
ZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwg
bWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAg
ICAgICB9IGVsc2UgaWYgKG5ld1RhcmdldCkgewogICAgICAgICAgICAgLy8gQXMgcGVyIHNlY3Rp
b24gNy45LjQgb2YgdGhlIEhUTUwgNSBzcGVjLiwgd2UgbXVzdCBhbHdheXMgZmlyZSBhIGRyYWcg
ZXZlbnQgYmVmb3JlIGZpcmluZyBhIGRyYWdlbnRlciwgZHJhZ2xlYXZlLCBvciBkcmFnb3ZlciBl
dmVudC4KICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50
TmFtZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0
Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCAq
bmV3VGFyZ2V0LCBldmVudCwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uLCBkcmFn
Z2luZ0ZpbGVzKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0Y2hEcmFnRW50ZXJPckRy
YWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVu
dCwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0
KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFJlY3Vyc2luZyBhZ2Fp
biBoZXJlIGRvZXNuJ3QgbWFrZSBzZW5zZSBpZiB0aGUgbmV3VGFyZ2V0IGFuZCBtX2RyYWdUYXJn
ZXQgd2VyZSBpbiB0aGUgc2FtZSBmcmFtZS4KICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkK
LSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51
cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwg
ZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+
ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBz
b3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmICht
X2RyYWdUYXJnZXQpIHsKLSAgICAgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5z
ZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgp
LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAg
ICAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVwZGF0
aW5nRHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIG1ha2VQYXN0ZWJvYXJkKCks
IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICAgICAgZGlzcGF0
Y2hEcmFnRXZlbnQoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBl
dmVudCwgZGF0YVRyYW5zZmVyLmdldCgpKTsKICAgICAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFr
ZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgICAgICB9CkBAIC0yNDY0LDEyICsyNDYzLDEyIEBA
IEV2ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJh
Z0FuZERyb3AoY29uc3QgUGxhdGZvcm1NCiAgICAgICAgIEZyYW1lKiB0YXJnZXRGcmFtZTsKICAg
ICAgICAgaWYgKHRhcmdldElzRnJhbWUobmV3VGFyZ2V0LmdldCgpLCB0YXJnZXRGcmFtZSkpIHsK
ICAgICAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9
IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFr
ZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAg
ICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlRHJhZ0Fu
ZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2lu
Z0ZpbGVzKTsKICAgICAgICAgfSBlbHNlIGlmIChuZXdUYXJnZXQpIHsKICAgICAgICAgICAgIC8v
IE5vdGUsIHdoZW4gZGVhbGluZyB3aXRoIHN1Yi1mcmFtZXMsIHdlIG1heSBuZWVkIHRvIGZpcmUg
b25seSBhIGRyYWdvdmVyIGV2ZW50IGFzIGEgZHJhZyBldmVudCBtYXkgaGF2ZSBiZWVuIGZpcmVk
IGVhcmxpZXIuCiAgICAgICAgICAgICBpZiAoIW1fc2hvdWxkT25seUZpcmVEcmFnT3ZlckV2ZW50
KQogICAgICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50
TmFtZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gZGlzcGF0
Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoZXZlbnROYW1lcygpLmRyYWdvdmVyRXZlbnQsICpu
ZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdn
aW5nRmlsZXMpOworICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJh
Z092ZXJFdmVudChldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQs
IG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwog
ICAgICAgICAgICAgbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQgPSBmYWxzZTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTI0NzcsMjUgKzI0NzYsMjUgQEAgRXZlbnRIYW5kbGVyOjpEcmFnVGFy
Z2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9y
bU0KICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKLXZvaWQgRXZlbnRIYW5kbGVyOjpjYW5jZWxE
cmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlv
biwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQordm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmRE
cm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVy
YXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0
ZWRGcmFtZShtX2ZyYW1lKTsKIAogICAgIEZyYW1lKiB0YXJnZXRGcmFtZTsKICAgICBpZiAodGFy
Z2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICBp
ZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCku
Y2FuY2VsRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJh
dGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuY2FuY2VsRHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJj
ZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgIH0gZWxzZSBpZiAobV9kcmFnVGFy
Z2V0KSB7CiAgICAgICAgIGRpc3BhdGNoRXZlbnRUb0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFt
ZXMoKS5kcmFnRXZlbnQsIGV2ZW50KTsKIAotICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERh
dGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1fZHJhZ1RhcmdldC0+ZG9j
dW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0Zp
bGVzKTsKKyAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZv
clVwZGF0aW5nRHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFz
dGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICBk
aXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsICptX2RyYWdUYXJn
ZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAgICAgICBkYXRhVHJhbnNmZXItPm1h
a2VJbnZhbGlkRm9yU2VjdXJpdHkoKTsKICAgICB9CiAgICAgY2xlYXJEcmFnU3RhdGUoKTsKIH0K
IAotYm9vbCBFdmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJk
LCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorYm9v
bCBFdmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0Zp
bGVzKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CiAKQEAgLTI1
MDMsOSArMjUwMiw5IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwZXJmb3JtRHJhZ0FuZERyb3AoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxCiAgICAgYm9vbCBwcmV2ZW50
ZWREZWZhdWx0ID0gZmFsc2U7CiAgICAgaWYgKHRhcmdldElzRnJhbWUobV9kcmFnVGFyZ2V0Lmdl
dCgpLCB0YXJnZXRGcmFtZSkpIHsKICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAg
ICAgcHJldmVudGVkRGVmYXVsdCA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5wZXJmb3Jt
RHJhZ0FuZERyb3AoZXZlbnQsIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbiwg
ZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gdGFyZ2V0RnJh
bWUtPmV2ZW50SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChldmVudCwgV1RGTW92ZShwYXN0
ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgfSBlbHNl
IGlmIChtX2RyYWdUYXJnZXQpIHsKLSAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJh
bnNmZXI6OmNyZWF0ZUZvckRyb3AobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3ZlKHBh
c3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICBhdXRv
IGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yRHJvcChtX2RyYWdUYXJnZXQt
PmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRy
YWdnaW5nRmlsZXMpOwogICAgICAgICBwcmV2ZW50ZWREZWZhdWx0ID0gZGlzcGF0Y2hEcmFnRXZl
bnQoZXZlbnROYW1lcygpLmRyb3BFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFUcmFu
c2Zlcik7CiAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwog
ICAgIH0KQEAgLTM3MjksMTMgKzM3MjgsMTMgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFN0YXJ0
RHJhZygpCiAjZW5kaWYKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3VyY2VFbmRlZEF0
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
LCBNYXlFeHRlbmREcmFnU2Vzc2lvbiBtYXlFeHRlbmREcmFnU2Vzc2lvbikKK3ZvaWQgRXZlbnRI
YW5kbGVyOjpkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
LCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIE1heUV4dGVuZERy
YWdTZXNzaW9uIG1heUV4dGVuZERyYWdTZXNzaW9uKQogewogICAgIC8vIFNlbmQgYSBoaXQgdGVz
dCByZXF1ZXN0IHNvIHRoYXQgUmVuZGVyTGF5ZXIgZ2V0cyBhIGNoYW5jZSB0byB1cGRhdGUgdGhl
IDpob3ZlciBhbmQgOmFjdGl2ZSBwc2V1ZG9jbGFzc2VzLgogICAgIHByZXBhcmVNb3VzZUV2ZW50
KE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IHsgSGl0VGVzdFJlcXVlc3Q6
OlJlbGVhc2UsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQg
fSwgZXZlbnQpOwogCiAgICAgaWYgKHNob3VsZERpc3BhdGNoRXZlbnRzVG9EcmFnU291cmNlRWxl
bWVudCgpKSB7Ci0gICAgICAgIGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zlci0+c2V0RGVzdGluYXRp
b25PcGVyYXRpb24ob3BlcmF0aW9uKTsKKyAgICAgICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVy
LT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spOwogICAgICAg
ICBkaXNwYXRjaEV2ZW50VG9EcmFnU291cmNlRWxlbWVudChldmVudE5hbWVzKCkuZHJhZ2VuZEV2
ZW50LCBldmVudCk7CiAgICAgfQogICAgIGludmFsaWRhdGVEYXRhVHJhbnNmZXIoKTsKQEAgLTM4
NjUsNyArMzg2NCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0RyCiAgICAgLy8gT25jZSB3ZSdy
ZSBwYXN0IHRoZSBoeXN0ZXJlc2lzIHBvaW50LCB3ZSBkb24ndCB3YW50IHRvIHRyZWF0IHRoaXMg
Z2VzdHVyZSBhcyBhIGNsaWNrCiAgICAgaW52YWxpZGF0ZUNsaWNrKCk7CiAgICAgCi0gICAgRHJh
Z09wZXJhdGlvbiBzcmNPcCA9IERyYWdPcGVyYXRpb25Ob25lOyAgICAgIAorICAgIE9wdGlvblNl
dDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrOwogICAgIAogICAgIC8vIFRoaXMg
ZG9lcyB3b3JrIG9ubHkgaWYgd2UgbWlzc2VkIGEgZHJhZ0VuZC4gRG8gaXQgYW55d2F5LCBqdXN0
IHRvIG1ha2Ugc3VyZSB0aGUgb2xkIGRhdGFUcmFuc2ZlciBnZXRzIG51bWJlZC4KICAgICAvLyBG
SVhNRTogQ29uc2lkZXIgZG9pbmcgdGhpcyBlYXJsaWVyIGluIHRoaXMgZnVuY3Rpb24gYXMgdGhl
IGVhcmxpZXN0IHBvaW50IHdlJ3JlIHN1cmUgaXQgd291bGQgYmUgc2FmZSB0byBkcm9wIGFuIG9s
ZCBkcmFnLgpAQCAtMzkwMSw3ICszOTAwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURy
YWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKIAog
ICAgICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgICAgIC8vIEdh
dGhlciB2YWx1ZXMgZnJvbSBESFRNTCBlbGVtZW50LCBpZiBpdCBzZXQgYW55LgotICAgICAgICAg
ICAgc3JjT3AgPSBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNvdXJjZU9wZXJhdGlvbigpOwor
ICAgICAgICAgICAgc291cmNlT3BlcmF0aW9uTWFzayA9IGRyYWdTdGF0ZSgpLmRhdGFUcmFuc2Zl
ci0+c291cmNlT3BlcmF0aW9uTWFzaygpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBZ
dWNrLCBhIGRyYWdnZWRJbWFnZTptb3ZlVG86IG1lc3NhZ2UgY2FuIGJlIGZpcmVkIGFzIGEgcmVz
dWx0IG9mIGtpY2tpbmcgb2ZmIHRoZQogICAgICAgICAgICAgLy8gZHJhZyB3aXRoIGRyYWdJbWFn
ZSEgQmVjYXVzZSBvZiB0aGF0IGR1bWIgcmVlbnRyYW5jeSwgd2UgbWF5IHRoaW5rIHdlJ3ZlIG5v
dApAQCAtMzkxMiw3ICszOTExLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAKICAg
ICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcpIHsKICAgICAgICAgUGFnZSogcGFnZSA9IG1f
ZnJhbWUucGFnZSgpOwotICAgICAgICBtX2RpZFN0YXJ0RHJhZyA9IHBhZ2UgJiYgcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS5zdGFydERyYWcobV9mcmFtZSwgZHJhZ1N0YXRlKCksIHNyY09wLCBldmVu
dC5ldmVudCgpLCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGhhc05vbkRlZmF1bHRQYXN0
ZWJvYXJkRGF0YSk7CisgICAgICAgIG1fZGlkU3RhcnREcmFnID0gcGFnZSAmJiBwYWdlLT5kcmFn
Q29udHJvbGxlcigpLnN0YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc291cmNlT3BlcmF0
aW9uTWFzaywgZXZlbnQuZXZlbnQoKSwgbV9tb3VzZURvd25Db250ZW50c1Bvc2l0aW9uLCBoYXNO
b25EZWZhdWx0UGFzdGVib2FyZERhdGEpOwogICAgICAgICAvLyBJbiBXZWJLaXQyIHdlIGNvdWxk
IHJlLWVudGVyIHRoaXMgY29kZSBhbmQgc3RhcnQgYW5vdGhlciBkcmFnLgogICAgICAgICAvLyBP
biBPUyBYIHRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggdGhlIG93bmVyc2hpcCBvZiB0aGUgcGFz
dGVib2FyZCBhbmQgdGhlIHByb21pc2VkIHR5cGVzLgogICAgICAgICBpZiAobV9kaWRTdGFydERy
YWcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDZmZmM4M2MwMTJmZmUwOTUw
NDY0MTQwNTExNjFkNzUwNmFmMTkyYTEuLjI3Y2FlNjFlZDExODM0YWNjNTQ1MmRiNmNiOTIzYjMy
OTY2OGNmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMTYzLDExICsxNjMs
MTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgc3RydWN0IERyYWdU
YXJnZXRSZXNwb25zZSB7CiAgICAgICAgIGJvb2wgYWNjZXB0IHsgZmFsc2UgfTsKLSAgICAgICAg
T3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uOworICAgICAgICBPcHRpb25hbDxPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4+IG9wZXJhdGlvbk1hc2s7CiAgICAgfTsKLSAgICBEcmFnVGFy
Z2V0UmVzcG9uc2UgdXBkYXRlRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwg
Y29uc3Qgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mLCBEcmFn
T3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKLSAgICB2b2lk
IGNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwot
ICAgIGJvb2wgcGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5n
RmlsZXMpOworICAgIERyYWdUYXJnZXRSZXNwb25zZSB1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkPigpPiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0Zp
bGVzKTsKKyAgICB2b2lkIGNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlv
bj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgYm9vbCBwZXJmb3JtRHJhZ0FuZERyb3AoY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIE9w
dGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB2b2lkIHVw
ZGF0ZURyYWdTdGF0ZUFmdGVyRWRpdERyYWdJZk5lZWRlZChFbGVtZW50JiByb290RWRpdGFibGVF
bGVtZW50KTsKICAgICBSZWZQdHI8RWxlbWVudD4gZHJhZ2dlZEVsZW1lbnQoKSBjb25zdDsKICNl
bmRpZgpAQCAtMjY4LDcgKzI2OCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRpZFN0YXJ0RHJhZygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNl
bGxlZCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgRHJhZ09wZXJhdGlvbiwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24g
PSBNYXlFeHRlbmREcmFnU2Vzc2lvbjo6Tm8pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJh
Z1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+LCBNYXlFeHRlbmREcmFnU2Vzc2lvbiA9IE1heUV4dGVuZERyYWdTZXNzaW9uOjpO
byk7CiAjZW5kaWYKIAogICAgIHZvaWQgZm9jdXNEb2N1bWVudFZpZXcoKTsKQEAgLTQxNiw3ICs0
MTYsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBib29sIGRp
c3BhdGNoRHJhZ0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVudCYgdGFy
Z2V0LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBEYXRhVHJhbnNmZXImKTsKLSAgICBEcmFn
VGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmICwgRHJhZ09wZXJhdGlvbiwgYm9v
bCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICBEcmFnVGFyZ2V0UmVzcG9uc2UgZGlzcGF0Y2hEcmFnRW50
ZXJPckRyYWdPdmVyRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0
YXJnZXQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkPiYmICwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwog
ICAgIHZvaWQgaW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwogCiAgICAgYm9vbCBoYW5kbGVEcmFn
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBDaGVja0RyYWdIeXN0ZXJlc2lz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3Rr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAppbmRl
eCA3ZDA1MmNmZTE4YWViNTM4YmU2NjM5YWYwMzBlYzdkZGVlMGUyZTEzLi5kNzFhYjFkZmU0NGFh
YjZhMmM5NWNjNjI1ZTJhZjg2YjQzNDQ3OTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9n
dGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTAsMTMgKzUwLDEzIEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogICAgIHJldHVy
biBkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5RG93bjsKIH0KIAot
RHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0
YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJh
Z09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiB7CiAgICAgLy8gRklYTUU6IFRo
aXMgbG9naWMgaXMgaW5jb21wbGV0ZQogICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpKQog
ICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CiAKLSAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbk5vbmU7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogY29uc3QgSW50U2l6ZSYg
RHJhZ0NvbnRyb2xsZXI6Om1heERyYWdJbWFnZVNpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvRHJhZ0NvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQppbmRleCA4NWJkNDhhY2MyMjRkMGU3ODRiMzFjMjg0
NWFkMDY4NTdiZDgxMDIxLi5jNjAzZmJkZGE0MzdjZGE4YWQzODQ1M2E3ZDU1NmZkNGY1NDk0Zjc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9EcmFnQ29udHJvbGxlck1hYy5tbQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY0
LDEwICs2NCwxMCBAQCBib29sIERyYWdDb250cm9sbGVyOjppc0NvcHlLZXlEb3duKGNvbnN0IERy
YWdEYXRhJiBkcmFnRGF0YSkKICAgICByZXR1cm4gZHJhZ0RhdGEuZmxhZ3MoKSAmIERyYWdBcHBs
aWNhdGlvbklzQ29weUtleURvd247CiB9CiAgICAgCi1EcmFnT3BlcmF0aW9uIERyYWdDb250cm9s
bGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERy
YWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRh
JiBkcmFnRGF0YSkKIHsKICAgICBpZiAoZHJhZ0RhdGEuZmxhZ3MoKSAmIERyYWdBcHBsaWNhdGlv
bklzTW9kYWwpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIGJvb2wgbWF5Q29udGFpblVSTDsKICAgICBpZiAoY2Fu
TG9hZERhdGFGcm9tRHJhZ2dpbmdQYXN0ZWJvYXJkKCkpCkBAIC03NiwxMiArNzYsMTIgQEAgRHJh
Z09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiAgICAgICAgIG1heUNvbnRhaW5VUkwgPSBkcmFnRGF0YS5jb250YWluc1VSTFR5
cGVJZGVudGlmaWVyKCk7CiAKICAgICBpZiAoIW1heUNvbnRhaW5VUkwgJiYgIWRyYWdEYXRhLmNv
bnRhaW5zUHJvbWlzZSgpKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICBpZiAoIW1fZG9jdW1lbnRVbmRlck1vdXNl
IHx8ICghKGRyYWdEYXRhLmZsYWdzKCkgJiAoRHJhZ0FwcGxpY2F0aW9uSGFzQXR0YWNoZWRTaGVl
dCB8IERyYWdBcHBsaWNhdGlvbklzU291cmNlKSkpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbkNvcHk7CiAKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIH0KIAogY29uc3QgSW50U2l6ZSYgRHJhZ0NvbnRyb2xsZXI6Om1heERyYWdJ
bWFnZVNpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRy
b2xsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRHJhZ0NvbnRyb2xsZXJXaW4u
Y3BwCmluZGV4IDJkNDZkNmIyM2VhMzcyMjhhMjQwMjU3YjczNDY5NzE4ZjYwYjA4NWUuLjhkYjhj
OWQ1YmI2ZjQ2ZTZhODU5ZTdlYTkyMjZhMjNjMjliNzFjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MiwxMyArNDIsMTUgQEAgY29uc3Qg
aW50IERyYWdDb250cm9sbGVyOjpEcmFnSWNvbkJvdHRvbUluc2V0ID0gMzsKIAogY29uc3QgZmxv
YXQgRHJhZ0NvbnRyb2xsZXI6OkRyYWdJbWFnZUFscGhhID0gMC43NWY7CiAKLURyYWdPcGVyYXRp
b24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQorT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24o
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewotICAgIC8vRklYTUU6IHRvIG1hdGNoIHRoZSBt
YWNvcyBiZWhhdmlvdXIgd2Ugc2hvdWxkIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZQotICAgIC8v
aWYgd2UgYXJlIGEgbW9kYWwgd2luZG93LCB3ZSBhcmUgdGhlIGRyYWcgc291cmNlLCBvciB0aGUg
d2luZG93IGlzIGFuIGF0dGFjaGVkIHNoZWV0Ci0gICAgLy9JZiB0aGlzIGNhbiBiZSBkZXRlcm1p
bmVkIGZyb20gd2l0aGluIFdlYkNvcmUgb3BlcmF0aW9uRm9yRHJhZyBjYW4gYmUgcHVsbGVkIGlu
dG8gCi0gICAgLy9XZWJDb3JlIGl0c2VsZgotICAgIHJldHVybiBkcmFnRGF0YS5jb250YWluc1VS
TCgpICYmICFtX2RpZEluaXRpYXRlRHJhZyA/IERyYWdPcGVyYXRpb25Db3B5IDogRHJhZ09wZXJh
dGlvbk5vbmU7CisgICAgLy8gRklYTUU6IFRvIG1hdGNoIHRoZSBtYWNPUyBiZWhhdmlvdXIgd2Ug
c2hvdWxkIHJldHVybiBXVEY6Om51bGxvcHQuCisgICAgLy8gSWYgd2UgYXJlIGEgbW9kYWwgd2lu
ZG93LCB3ZSBhcmUgdGhlIGRyYWcgc291cmNlLCBvciB0aGUgd2luZG93IGlzIGFuIGF0dGFjaGVk
IHNoZWV0LgorICAgIC8vIElmIHRoaXMgY2FuIGJlIGRldGVybWluZWQgZnJvbSB3aXRoaW4gV2Vi
Q29yZSBvcGVyYXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxsZWQgaW50bworICAgIC8vIFdlYkNvcmUg
aXRzZWxmLgorICAgIGlmIChkcmFnRGF0YS5jb250YWluc1VSTCgpICYmICFtX2RpZEluaXRpYXRl
RHJhZykKKyAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Db3B5OworICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3Qg
RHJhZ0RhdGEmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCmluZGV4IDhmNjc1NWY1
NzYxYTE0NTRlOWI0MDYwMDJlMDg4NDNjNmI3MTg4N2MuLmU4YzQwZjU1OTAyZDkzYTVhODcyYWMw
ZWUwZmRhY2MzZjllZDJmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShDT0NP
QSkKLURyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYg
Y2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJh
dGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0
aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQorRHJh
Z0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09w
ZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3Ms
IE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykK
ICAgICA6IG1fY2xpZW50UG9zaXRpb24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBv
c2l0aW9uKGdsb2JhbFBvc2l0aW9uKQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKGRhdGEpCkBA
IC00Miw3ICs0Miw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7ICAKIH0KIAotRHJhZ0Rh
dGE6OkRyYWdEYXRhKGNvbnN0IFN0cmluZyYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9w
ZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6RHJhZ0Rh
dGEoY29uc3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdE
ZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQ
b3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9z
aXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
RGF0YS5oCmluZGV4IDQyMWEyOTk0M2IzZDEwZDQ4NWRhNWNlOWVmZDUzZTNmYWZiYzBmMGQuLjMx
YjhhYjllZTgwNmZlMGQxZjJiZGQ3OTdiNWEzYWVmOTc2NzFmODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0RhdGEuaApAQCAtNzUsMTMgKzc1LDEzIEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNz
IERyYWdnaW5nUHVycG9zZSB7IEZvckVkaXRpbmcsIEZvckZpbGVVcGxvYWQsIEZvckNvbG9yQ29u
dHJvbCB9OwogCiAgICAgLy8gY2xpZW50UG9zaXRpb24gaXMgdGFrZW4gdG8gYmUgdGhlIHBvc2l0
aW9uIG9mIHRoZSBkcmFnIGV2ZW50IHdpdGhpbiB0aGUgdGFyZ2V0IHdpbmRvdywgd2l0aCAoMCww
KSBhdCB0aGUgdG9wIGxlZnQKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShEcmFnRGF0YVJl
ZiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFs
UG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxp
Y2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVz
dGluYXRpb25BY3Rpb24oKSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3QgU3Ry
aW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29u
c3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uLCBEcmFnQXBwbGljYXRp
b25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25B
Y3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdFQkNPUkVfRVhQT1JU
IERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBE
cmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFn
RGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKCkpOworICAgIFdF
QkNPUkVfRVhQT1JUIERyYWdEYXRhKGNvbnN0IFN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCBjb25z
dCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdB
cHBsaWNhdGlvbk5vbmUsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+ID0gYW55RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uKCkpOwogICAgIC8vIFRoaXMgY29uc3RydWN0b3Igc2hvdWxkIHVz
ZWQgb25seSBieSBXZWJLaXQyIElQQyBiZWNhdXNlIERyYWdEYXRhCiAgICAgLy8gaXMgaW5pdGlh
bGl6ZWQgYnkgdGhlIGRlY29kZXIgYW5kIG5vdCBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgRHJh
Z0RhdGEoKSA9IGRlZmF1bHQ7CiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFdFQkNPUkVfRVhQT1JU
IERyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNl
T3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25l
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBEcmFnRGF0YU1hcCYsIGNvbnN0
IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9u
LCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxp
Y2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lKTsKICAgICBjb25zdCBEcmFnRGF0YU1h
cCYgZHJhZ0RhdGFNYXAoKTsKICAgICB2b2lkIGdldERyYWdGaWxlRGVzY3JpcHRvckRhdGEoaW50
JiBzaXplLCBTdHJpbmcmIHBhdGhuYW1lKTsKICAgICB2b2lkIGdldERyYWdGaWxlQ29udGVudERh
dGEoaW50IHNpemUsIHZvaWQqIGRhdGFCbG9iKTsKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2xv
YmFsUG9zaXRpb247IH0KICAgICBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncygpIGNvbnN0IHsg
cmV0dXJuIG1fYXBwbGljYXRpb25GbGFnczsgfQogICAgIERyYWdEYXRhUmVmIHBsYXRmb3JtRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1EcmFnRGF0YTsgfQotICAgIERyYWdPcGVyYXRp
b24gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2lu
Z1NvdXJjZU9wZXJhdGlvbk1hc2s7IH0KKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2s7IH0KICAgICBib29sIGNvbnRhaW5zVVJMKEZpbGVuYW1lQ29udmVyc2lv
blBvbGljeSA9IENvbnZlcnRGaWxlbmFtZXMpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNQbGFp
blRleHQoKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoRHJhZ2dp
bmdQdXJwb3NlID0gRHJhZ2dpbmdQdXJwb3NlOjpGb3JFZGl0aW5nKSBjb25zdDsKQEAgLTEyOSw3
ICsxMjksNyBAQCBwcml2YXRlOgogICAgIEludFBvaW50IG1fY2xpZW50UG9zaXRpb247CiAgICAg
SW50UG9pbnQgbV9nbG9iYWxQb3NpdGlvbjsKICAgICBEcmFnRGF0YVJlZiBtX3BsYXRmb3JtRHJh
Z0RhdGE7Ci0gICAgRHJhZ09wZXJhdGlvbiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsK
KyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbV9kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2s7CiAgICAgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgbV9hcHBsaWNhdGlvbkZsYWdzOwogICAgIFZl
Y3RvcjxTdHJpbmc+IG1fZmlsZU5hbWVzOwogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25B
Y3Rpb24+IG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRhQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCmluZGV4IDljY2FmYzBjZDdhODM2ZTZjOTFl
MWYyMzNlMTg5MGIzMzhhNGQzNDAuLjNhMTI4OWQ0YmNjNTYwOTZhZGVmZDA1ODAwNzQzZWQwOWM2
NGM2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0RyYWdEYXRh
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2Nv
YS5tbQpAQCAtMTE2LDcgKzExNiw3IEBAIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHRpZmZQYXN0ZWJv
YXJkVHlwZSgpCiAjZW5kaWYKIH0KIAotRHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRh
dGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNh
dGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5h
dGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBw
bGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVz
dGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlv
bikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRm
b3JtRHJhZ0RhdGEoZGF0YSkKQEAgLTEzMSw3ICsxMzEsNyBAQCBEcmFnRGF0YTo6RHJhZ0RhdGEo
RHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJ
bnRQbwogewogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFn
ZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBs
aWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0
aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgU3RyaW5nJiBkcmFn
U3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0
aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGlu
YXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKICAgICA6IG1fY2xpZW50UG9zaXRp
b24oY2xpZW50UG9zaXRpb24pCiAgICAgLCBtX2dsb2JhbFBvc2l0aW9uKGdsb2JhbFBvc2l0aW9u
KQogICAgICwgbV9wbGF0Zm9ybURyYWdEYXRhKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtVdGlsaXRpZXMuY3BwCmluZGV4IDBjMDEzY2Y2N2VlNTg1YmNlZWU0NDk1YmI0NjAx
MTZhYzAxZGMxZDEuLjVlN2YyZjM2Mjc5OTQwYmMxYmVhMWY5NTYzMGU4ZDE2MzZmNzYzODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCkBAIC0xNDks
NDkgKzE0OSw0MCBAQCB1bnNpZ25lZCBzdGF0ZU1vZGlmaWVyRm9yR2RrQnV0dG9uKHVuc2lnbmVk
IGJ1dHRvbikKICAgICByZXR1cm4gMSA8PCAoOCArIGJ1dHRvbiAtIDEpOwogfQogCi1EcmFnT3Bl
cmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbiBnZGtBY3Rp
b24pCitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlv
bihHZGtEcmFnQWN0aW9uIGdka0FjdGlvbikKIHsKLSAgICAvLyBXZSBoYXZlIG5vIGdvb2Qgd2F5
IHRvIGRldGVjdCBEcmFnT3BlcmF0aW9uRXZlcnkgb3RoZXIgdGhhbgotICAgIC8vIHRvIHVzZSBp
dCB3aGVuIGFsbCBhcHBsaWNhYmxlIGZsYWdzIGFyZSBvbi4KLSAgICBpZiAoZ2RrQWN0aW9uICYg
R0RLX0FDVElPTl9DT1BZCi0gICAgICAgICYmIGdka0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRQot
ICAgICAgICAmJiBnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0xJTkspCi0gICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uRXZlcnk7Ci0KLSAgICB1bnNpZ25lZCBhY3Rpb24gPSBEcmFnT3BlcmF0aW9u
Tm9uZTsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gYWN0aW9uOwogICAgIGlmIChnZGtB
Y3Rpb24gJiBHREtfQUNUSU9OX0NPUFkpCi0gICAgICAgIGFjdGlvbiB8PSBEcmFnT3BlcmF0aW9u
Q29weTsKKyAgICAgICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uQ29weSk7CiAgICAgaWYgKGdk
a0FjdGlvbiAmIEdES19BQ1RJT05fTU9WRSkKLSAgICAgICAgYWN0aW9uIHw9IERyYWdPcGVyYXRp
b25Nb3ZlOworICAgICAgICBhY3Rpb24uYWRkKERyYWdPcGVyYXRpb25Nb3ZlKTsKICAgICBpZiAo
Z2RrQWN0aW9uICYgR0RLX0FDVElPTl9MSU5LKQotICAgICAgICBhY3Rpb24gfD0gRHJhZ09wZXJh
dGlvbkxpbms7CisgICAgICAgIGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlvbkxpbmspOwogCi0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGFjdGlvbik7CisgICAgcmV0dXJuIGFj
dGlvbjsKIH0KIAotR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhE
cmFnT3BlcmF0aW9uIGNvcmVBY3Rpb24pCitHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dk
a0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBjb3JlQWN0aW9uKQogewogICAg
IHVuc2lnbmVkIGdka0FjdGlvbiA9IDA7Ci0gICAgaWYgKGNvcmVBY3Rpb24gPT0gRHJhZ09wZXJh
dGlvbk5vbmUpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihnZGtB
Y3Rpb24pOwogCi0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICBp
ZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uQ29weSkpCiAgICAgICAgIGdka0Fj
dGlvbiB8PSBHREtfQUNUSU9OX0NPUFk7Ci0gICAgaWYgKGNvcmVBY3Rpb24gJiBEcmFnT3BlcmF0
aW9uTW92ZSkKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkp
CiAgICAgICAgIGdka0FjdGlvbiB8PSBHREtfQUNUSU9OX01PVkU7Ci0gICAgaWYgKGNvcmVBY3Rp
b24gJiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAoY29yZUFjdGlvbi5jb250YWlucyhEcmFn
T3BlcmF0aW9uTGluaykpCiAgICAgICAgIGdka0FjdGlvbiB8PSBHREtfQUNUSU9OX0xJTks7CiAK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oZ2RrQWN0aW9uKTsKIH0KIAot
R2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKERyYWdPcGVy
YXRpb24gY29yZUFjdGlvbikKK0dka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2Rr
RHJhZ0FjdGlvbihPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gY29yZUFjdGlvbikKIHsKLSAgICBp
ZiAoY29yZUFjdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkgfHwgY29yZUFjdGlvbiAmIERyYWdP
cGVyYXRpb25Db3B5KQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25D
b3B5KSkKICAgICAgICAgcmV0dXJuIEdES19BQ1RJT05fQ09QWTsKLSAgICBpZiAoY29yZUFjdGlv
biAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdP
cGVyYXRpb25Nb3ZlKSkKICAgICAgICAgcmV0dXJuIEdES19BQ1RJT05fTU9WRTsKLSAgICBpZiAo
Y29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25MaW5rKQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRh
aW5zKERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAgcmV0dXJuIEdES19BQ1RJT05fTElOSzsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oMCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKaW5kZXggNWFhYjRlYjc5YTIxZTlhNGY1
MjY2Mzk0ZmU2NjA2Zjg0Mjg2NTA4NC4uMTk4YmM4ZTI1MDljNDU1ZDIzMjQ0YTc4MTEzYWVmY2Ew
ZThmZWExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaApA
QCAtNTEsOCArNTEsOCBAQCBTdHJpbmcgZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKIAogV0VCQ09S
RV9FWFBPUlQgdW5zaWduZWQgc3RhdGVNb2RpZmllckZvckdka0J1dHRvbih1bnNpZ25lZCBidXR0
b24pOwogCi1XRUJDT1JFX0VYUE9SVCBEcmFnT3BlcmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdP
cGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRy
YWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKERyYWdPcGVyYXRpb24pOwotV0VCQ09SRV9FWFBP
UlQgR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKERyYWdP
cGVyYXRpb24pOworV0VCQ09SRV9FWFBPUlQgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGdka0Ry
YWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbik7CitXRUJDT1JFX0VYUE9SVCBH
ZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPik7CitXRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9uIGRyYWdPcGVyYXRpb25U
b1NpbmdsZUdka0RyYWdBY3Rpb24oT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0RyYWdEYXRhV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9EcmFnRGF0YVdp
bi5jcHAKaW5kZXggZWUwZDhiMjYwY2NjYjRkYmNlMTMwZWQzMzFjODkzYzBkYzBmYjAzYi4uMTg4
NzBmMjI3NTI4N2I5N2RhYTM5ZTgwM2JjN2UyYjM4ZTVlZjQwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQmFpZHUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtNDEsNyArNDEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBEcmFnRGF0YTo6RHJhZ0RhdGEoY29uc3QgRHJhZ0RhdGFNYXAmIGRhdGEsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLAotICAg
IERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3Mg
ZmxhZ3MpCisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ss
IERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGll
bnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAg
LCBtX3BsYXRmb3JtRHJhZ0RhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJ
S2l0U1BJLmgKaW5kZXggMmQ0M2JhZWJmOGUxMjZiZTlmOWVhOWExZmNiZjMzZTdkYjZmOWRlMC4u
YWJlZTI1NTQ3Y2QzZjc3NDgwZGE5NzI3OWMwN2UwODIzZGQyMjhmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgKQEAgLTEwMjUsMTIgKzEwMjUsNiBAQCBDR0Zs
b2F0IFVJUm91bmRUb1NjcmVlblNjYWxlKENHRmxvYXQgdmFsdWUsIFVJU2NyZWVuICopOwogCiBX
VEZfRVhURVJOX0NfRU5ECiAKLXR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBVSURyYWdP
cGVyYXRpb24pCi17Ci0gICAgVUlEcmFnT3BlcmF0aW9uTm9uZSA9IDAsCi0gICAgVUlEcmFnT3Bl
cmF0aW9uRXZlcnkgPSBOU1VJbnRlZ2VyTWF4LAotfTsKLQogQGludGVyZmFjZSBVSURyYWdJbnRl
cmFjdGlvbiAoKQogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbiwgZ2V0dGVyPV9saWZ0RGVs
YXksIHNldHRlcj1fc2V0TGlmdERlbGF5OikgTlNUaW1lSW50ZXJ2YWwgbGlmdERlbGF5OwogLSAo
dm9pZClfc2V0QWxsb3dzUG9pbnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk6KEJPT0wpYWxsb3dzUG9p
bnRlckRyYWdCZWZvcmVMaWZ0RGVsYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQppbmRleCA2MzI5ZmNmYTUyMzlmMGFmZjFmYTQxYmUxOGZhMmM3ODY1ODAyNDVhLi45
ODY5NzJhYWI1YTRiZDI5ZmM3MmIxZjg1N2VjZjljMTEzMjc5YTM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIwOSw2ICsyMDksNyBAQCBkZWYgdHlwZXNf
dGhhdF9jYW5ub3RfYmVfZm9yd2FyZF9kZWNsYXJlZCgpOgogICAgICAgICAnV2ViQ29yZTo6RGlj
dGF0aW9uQ29udGV4dCcsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInLAorICAgICAgICAn
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbicsICAjIEZJWE1FOiBSZW1vdmUgYWZ0ZXIgY29udmVydGlu
ZyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIHRvIGVudW0gY2xhc3MuCiAgICAgICAgICdXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyJywK
ICAgICAgICAgJ1dlYkNvcmU6OkxpYldlYlJUQ1NvY2tldElkZW50aWZpZXInLApAQCAtNTg5LDYg
KzU5MCw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6
RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXInOiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBl
cy5oPiddLAogICAgICAgICAnV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6
IFsnIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6OkRyYWdI
YW5kbGluZ01ldGhvZCc6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKKyAgICAgICAgJ1dl
YkNvcmU6OkRyYWdPcGVyYXRpb24nOiBbJzxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+J10sCiAgICAg
ICAgICdXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJzogWyc8V2ViQ29yZS9KU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJzog
Wyc8V2ViQ29yZS9GaWxlQ2hvb3Nlci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6U2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCc6IFsnPFdlYkNvcmUvU2hhcmVEYXRhLmg+J10sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApp
bmRleCBjODY4YzI3NzNmOGRiZDMyNzhiMjA1MGEwOGU2ZjhiNTdkYjhiYjRkLi44OTc4OWYzODJh
OWU2NzRmOTExZTljODkxNGNiYTc2YTlmZWM5MDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKQEAgLTQwLDQg
KzQwLDI0IEBAIGlubGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorI2lmIFVTRShBUFBLSVQpCitpbmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhOU0RyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQorewor
ICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiByZXN1bHQ7CisgICAgaWYgKG9w
ZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRp
b25MaW5rKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsK
KyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVz
dWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlv
biAmIE5TRHJhZ09wZXJhdGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvblByaXZhdGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRp
b25Nb3ZlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsK
KyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1
bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisjZW5kaWYgLy8gVVNFKEFQUEtJVCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBkNDQz
ODExMjlmOTk3NWIxOTMxYjk0NjQzOTk2YjhkYWNmNjVmNDliLi5jZThmMmY5OGQxMGJiYWI4ZmU1
MjExNWFiNGQ3NmU0M2E4YjVlNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE1MzEsNyArMTUzMSw3IEBAIHZvaWQgQXJndW1lbnRD
b2RlcjxEcmFnRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiB7CiAgICAgZW5jb2RlciA8PCBkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpOwog
ICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRpb24oKTsKLSAgICBlbmNvZGVyLmVu
Y29kZUVudW0oZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCkpOworICAgIGVu
Y29kZXIgPDwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7CiAgICAgZW5j
b2Rlci5lbmNvZGVFbnVtKGRyYWdEYXRhLmZsYWdzKCkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIGVuY29kZXIgPDwgZHJhZ0RhdGEucGFzdGVib2FyZE5hbWUoKTsKQEAgLTE1NTAsOCArMTU1
MCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShnbG9iYWxQ
b3NpdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIERyYWdPcGVyYXRpb24gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaykpCisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IERyYWdBcHBsaWNhdGlvbkZsYWdzIGFwcGxpY2F0aW9uRmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZS5oCmluZGV4IDM4YTA2NmY1YzMwZWEwZTRmZjBk
ODMxNWY5NDZjNWE3MTNiYzE3NmYuLmI1ZmNiZjA5ZDk5M2QyMzg2MWM2Yjg5MmI0NzIwMmI0N2M3
ZDI0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1Nv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZS5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBEcmFnU291cmNlKEd0a1dp
ZGdldCopOwogICAgIH5EcmFnU291cmNlKCk7CiAKLSAgICB2b2lkIGJlZ2luKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4mJik7CisgICAgdm9pZCBiZWdpbihXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlv
blNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJik7
CiAKIHByaXZhdGU6CiAgICAgR3RrV2lkZ2V0KiBtX3dlYlZpZXcgeyBudWxscHRyIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGszLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3BwCmlu
ZGV4IDNlZDRjY2MzMjM2OWUzY2YzZDgwMjJmYWNjM2FmMjM4ZWVkODYzNWEuLmVmZGNlZjI1ZDNi
Yjc0ZjBhOWJiN2IzZDE5MDkwN2Q1YjkxZTQ0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAg
RHJhZ1NvdXJjZTo6fkRyYWdTb3VyY2UoKQogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfYnlfZGF0YShtX3dlYlZpZXcsIHRoaXMpOwogfQogCi12b2lkIERyYWdTb3VyY2U6OmJlZ2lu
KFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiwg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBpbWFnZSkKK3ZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4o
U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBv
cGVyYXRpb25NYXNrLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQogewogICAgIGlm
IChtX2RyYWcpIHsKICAgICAgICAgZ3RrX2RyYWdfY2FuY2VsKG1fZHJhZy5nZXQoKSk7CkBAIC0x
MjksNyArMTI5LDcgQEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2Vs
ZWN0aW9uRGF0YSwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIFIKICAgICBpZiAobV9zZWxlY3Rp
b25EYXRhLT5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChs
aXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGljYXRpb24vdm5k
LndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyYWdUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsK
IAotICAgIG1fZHJhZyA9IGd0a19kcmFnX2JlZ2luX3dpdGhfY29vcmRpbmF0ZXMobV93ZWJWaWV3
LCBsaXN0LmdldCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhvcGVyYXRpb24pLCBH
REtfQlVUVE9OX1BSSU1BUlksIG51bGxwdHIsIC0xLCAtMSk7CisgICAgbV9kcmFnID0gZ3RrX2Ry
YWdfYmVnaW5fd2l0aF9jb29yZGluYXRlcyhtX3dlYlZpZXcsIGxpc3QuZ2V0KCksIGRyYWdPcGVy
YXRpb25Ub0dka0RyYWdBY3Rpb25zKG9wZXJhdGlvbk1hc2spLCBHREtfQlVUVE9OX1BSSU1BUlks
IG51bGxwdHIsIC0xLCAtMSk7CiAgICAgaWYgKGltYWdlKSB7CiAgICAgICAgIFJlZlB0cjxjYWly
b19zdXJmYWNlX3Q+IGltYWdlU3VyZmFjZShpbWFnZS0+Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkpOwog
ICAgICAgICAvLyBVc2UgdGhlIGNlbnRlciBvZiB0aGUgZHJhZyBpbWFnZSBhcyBob3RzcG90Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNw
cAppbmRleCBkOGI0MzU2OTM0ZWY1MjgyNDk5NjEwZTc3OWFmMDJlZWQ2OGJhOGI2Li5jNmFjYjVh
Mjc2MjQ3YTI1MDQ3YjZiNDFiNGY0ZDJiMWYxZmY1N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApAQCAtNDQsNyArNDQsNyBA
QCBEcmFnU291cmNlOjp+RHJhZ1NvdXJjZSgpCiB7CiB9CiAKLXZvaWQgRHJhZ1NvdXJjZTo6YmVn
aW4oU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9u
LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQordm9pZCBEcmFnU291cmNlOjpiZWdp
bihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAg
aWYgKG1fZHJhZykgewogICAgICAgICBnZGtfZHJhZ19kcm9wX2RvbmUobV9kcmFnLmdldCgpLCBG
QUxTRSk7CkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9u
RGF0YSYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBSCiAgICAgYXV0
byogc3VyZmFjZSA9IGd0a19uYXRpdmVfZ2V0X3N1cmZhY2UoZ3RrX3dpZGdldF9nZXRfbmF0aXZl
KG1fd2ViVmlldykpOwogICAgIGF1dG8qIGRldmljZSA9IGdka19zZWF0X2dldF9wb2ludGVyKGdk
a19kaXNwbGF5X2dldF9kZWZhdWx0X3NlYXQoZ3RrX3dpZGdldF9nZXRfZGlzcGxheShtX3dlYlZp
ZXcpKSk7CiAgICAgR1JlZlB0cjxHZGtDb250ZW50UHJvdmlkZXI+IHByb3ZpZGVyID0gYWRvcHRH
UmVmKGdka19jb250ZW50X3Byb3ZpZGVyX25ld191bmlvbihwcm92aWRlcnMuZGF0YSgpLCBwcm92
aWRlcnMuc2l6ZSgpKSk7Ci0gICAgbV9kcmFnID0gYWRvcHRHUmVmKGdka19kcmFnX2JlZ2luKHN1
cmZhY2UsIGRldmljZSwgcHJvdmlkZXIuZ2V0KCksIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rp
b25zKG9wZXJhdGlvbiksIDAsIDApKTsKKyAgICBtX2RyYWcgPSBhZG9wdEdSZWYoZ2RrX2RyYWdf
YmVnaW4oc3VyZmFjZSwgZGV2aWNlLCBwcm92aWRlci5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2Rr
RHJhZ0FjdGlvbnMob3BlcmF0aW9uTWFzayksIDAsIDApKTsKICAgICBnX3NpZ25hbF9jb25uZWN0
KG1fZHJhZy5nZXQoKSwgImRuZC1maW5pc2hlZCIsIEdfQ0FMTEJBQ0soK1tdKEdka0RyYWcqIGd0
a0RyYWcsIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIGF1dG8mIGRyYWcgPSAqc3RhdGlj
X2Nhc3Q8RHJhZ1NvdXJjZSo+KHVzZXJEYXRhKTsKICAgICAgICAgaWYgKGRyYWcubV9kcmFnLmdl
dCgpICE9IGd0a0RyYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0Ryb3BUYXJnZXQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldC5oCmluZGV4IDhjM2IxMGUxMDUwYzE4ZDhlMTgxNDQyYzk4NGQ5MDI0OWNhODdhYzAuLmEw
MDQ1MDBiMGRlZjY5YzhkODVlNjRiMjVmNzIxYmQ5ODAxYzExYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5oCkBAIC04MCw3ICs4MCw3IEBAIHByaXZh
dGU6CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IG1fcG9zaXRpb247CiAgICAgdW5z
aWduZWQgbV9kYXRhUmVxdWVzdENvdW50IHsgMCB9OwogICAgIE9wdGlvbmFsPFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE+IG1fc2VsZWN0aW9uRGF0YTsKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
IG1fb3BlcmF0aW9uIHsgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBtX29wZXJhdGlvbjsKICNpZiBVU0UoR1RLNCkKICAg
ICBHUmVmUHRyPEdDYW5jZWxsYWJsZT4gbV9jYW5jZWxsYWJsZTsKICNlbHNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGMx
M2IyOWIzMWRjNTU4YmUyMGVjZGVhMzdlMGZjYzM1Mjk3NGQ1MTMuLjgwOTBlYWM3ZTQxMDQwMjYx
ODg3MGViMGUwYTEyNDFlZDRmMGRjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBE
cm9wVGFyZ2V0OjpkaWRQZXJmb3JtQWN0aW9uKCkKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICBh
dXRvIG9wZXJhdGlvbiA9IHBhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7Ci0gICAgaWYgKG9w
ZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKKyAgICBpZiAoKCFvcGVyYXRpb24gJiYgIW1fb3BlcmF0
aW9uKSB8fCAqb3BlcmF0aW9uID09ICptX29wZXJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247CkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBEcm9w
VGFyZ2V0OjpsZWF2ZVRpbWVyRmlyZWQoKQogICAgIGF1dG8qIHBhZ2UgPSB3ZWJraXRXZWJWaWV3
QmFzZUdldFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV93ZWJWaWV3KSk7CiAgICAgQVNTRVJU
KHBhZ2UpOwogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJm1fc2VsZWN0aW9uRGF0YS52YWx1ZSgp
LCAqbV9wb3NpdGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3dlYlZpZXcs
ICptX3Bvc2l0aW9uKSwgRHJhZ09wZXJhdGlvbk5vbmUpOworICAgIERyYWdEYXRhIGRyYWdEYXRh
KCZtX3NlbGVjdGlvbkRhdGEudmFsdWUoKSwgKm1fcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2lu
dFRvU2NyZWVuUG9pbnQobV93ZWJWaWV3LCAqbV9wb3NpdGlvbiksIHsgfSk7CiAgICAgcGFnZS0+
ZHJhZ0V4aXRlZChkcmFnRGF0YSk7CiAgICAgcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0
aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJv
cFRhcmdldEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFy
Z2V0R3RrNC5jcHAKaW5kZXggNTFjYTNlN2I4MjE4MmY4YjA1ODY0YTRkNDcxN2NmMWJlNTRhZDg0
NS4uZGIxZWM0ZmNhMjk3NTcwZmE1MjQyZDFjOGY1NDg4NTNjMDdjZDlmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTI3
Myw3ICsyNzMsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRpZFBlcmZvcm1BY3Rpb24oKQogICAgIEFT
U0VSVChwYWdlKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gcGFnZS0+Y3VycmVudERyYWdPcGVy
YXRpb24oKTsKLSAgICBpZiAob3BlcmF0aW9uID09IG1fb3BlcmF0aW9uKQorICAgIGlmICgoIW9w
ZXJhdGlvbiAmJiAhbV9vcGVyYXRpb24pIHx8IG9wZXJhdGlvbiA9PSBtX29wZXJhdGlvbikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9vcGVyYXRpb24gPSBvcGVyYXRpb247CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDY1
ZTY5YzJjNTZlZTRjNTAzMzlkMzczNDUzNzE1NDQxNjNjZmY5MmQuLjBhZWU0YmM5MzgwY2I0N2Nh
NDkwMGQ4NTU2ZDUxZTI0ZDhmMTRiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0zMjAsOSArMzIwLDkgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzdGFy
dERyYWcoU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbiwgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0
aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbk1hc2ssIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYg
ZHJhZ0ltYWdlKQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdFQktJVF9XRUJf
VklFV19CQVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0aW9uKSwgZHJhZ09wZXJhdGlv
biwgV1RGTW92ZShkcmFnSW1hZ2UpKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhX
RUJLSVRfV0VCX1ZJRVdfQkFTRShtX3ZpZXdXaWRnZXQpLCBXVEZNb3ZlKHNlbGVjdGlvbiksIGRy
YWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGRyYWdJbWFnZSkpOwogfQogCiB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGVkMzllNzRkZGU4
ZDk2YWI4NTRjM2JlYmEwNTU5MzBhYmI1NmM4MjYuLjI3MDA5OTgyNmI3YmVjNWUzMmE2Y2MwNWM0
MWYxZmMxNGVjNTk4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
dGsvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4g
dGFrZVZpZXdTbmFwc2hvdChPcHRpb25hbDxXZWJDb3JlOjpJbnRSZWN0PiYmKSBvdmVycmlkZTsK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4mJiBkcmFnSW1hZ2UpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRQ
ZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oKSBvdmVycmlkZTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CmluZGV4IDYzOGVjMWYzNGY5OWEyYjhiNDFhYmZlYmZjM2JmZGM4YTNiOTQzZGEuLjVjZjQyZGE1
ZTBhMDg4OGNjM2VmZDU4ZjcxNWVkMjkyOTE1YTZiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0yMDYxLDEz
ICsyMDYxLDEzIEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VTZXRUb29sdGlwQXJlYShXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIGNvbnN0IEludFJlCiB9CiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UsIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBEcmFnT3Bl
cmF0aW9uIGRyYWdPcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgaW1hZ2UpCit2
b2lkIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3
QmFzZSwgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBkcmFnT3BlcmF0aW9uTWFzaywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBpbWFnZSkK
IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJp
djsKICAgICBpZiAoIXByaXYtPmRyYWdTb3VyY2UpCiAgICAgICAgIHByaXYtPmRyYWdTb3VyY2Ug
PSBtYWtlVW5pcXVlPERyYWdTb3VyY2U+KEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKIAotICAg
IHByaXYtPmRyYWdTb3VyY2UtPmJlZ2luKFdURk1vdmUoc2VsZWN0aW9uRGF0YSksIGRyYWdPcGVy
YXRpb24sIFdURk1vdmUoaW1hZ2UpKTsKKyAgICBwcml2LT5kcmFnU291cmNlLT5iZWdpbihXVEZN
b3ZlKHNlbGVjdGlvbkRhdGEpLCBkcmFnT3BlcmF0aW9uTWFzaywgV1RGTW92ZShpbWFnZSkpOwog
CiAjaWYgIVVTRShHVEs0KQogICAgIC8vIEEgZHJhZyBzdGFydGluZyBzaG91bGQgcHJldmVudCBh
IGRvdWJsZS1jbGljayBmcm9tIGhhcHBlbmluZy4gVGhpcyBtaWdodApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
LmgKaW5kZXggMWM0ZGYxMjdlYzQ4ZDU3NTU2NGRiMDQzZmI3YWY5NTkwZjdjYzcyNC4uZWI3Zjg2
ZTA4ZTczNmFiNzA3YmE2MTk2MDk5ZTZlMjk5YjY2Y2QxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5o
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRSZWxhdW5jaFdlYlBy
b2Nlc3MoV2ViS2l0V2ViVmlld0Jhc2UqKTsKIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VQYWdlQ2xv
c2VkKFdlYktpdFdlYlZpZXdCYXNlKik7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSosIFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwPiYmKTsKK3ZvaWQgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV2Vi
S2l0V2ViVmlld0Jhc2UqLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPiwgUmVmUHRyPFdlYktpdDo6U2hhcmVhYmxlQml0bWFwPiYmKTsK
IHZvaWQgd2Via2l0V2ViVmlld0Jhc2VEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oV2Vi
S2l0V2ViVmlld0Jhc2UqKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJlMzllYTZjZmU4MDFlMDgwMWU0NWJmYTg3YzA5M2M4
OWQyNGEwYzIuLjY5YjYyZGUyNTJmMWQzMGY5MmI1MTgxNzY4NmJmMTA4MmQ4NDA0NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0zOTEzLDcg
KzM5MTMsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkcmFnZ2VkSW1hZ2UoTlNJbWFnZSAqLCBDR1Bv
aW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3BlcgogICAgIHNlbmREcmFnRW5kVG9QYWdl
KGVuZFBvaW50LCBvcGVyYXRpb24pOwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjpzZW5kRHJhZ0Vu
ZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQordm9p
ZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UoQ0dQb2ludCBlbmRQb2ludCwgTlNEcmFn
T3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgTlNQb2ludCB3aW5kb3dJbWFnZUxvYyA9IFtbbV92aWV3IHdp
bmRvd10gY29udmVydFNjcmVlblRvQmFzZTpOU1BvaW50RnJvbUNHUG9pbnQoZW5kUG9pbnQpXTsK
QEAgLTM5MjMsNyArMzkyMyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdl
KENHUG9pbnQgZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCiAgICAgLy8gUHJl
dmVudCBxdWV1ZWQgbW91c2VEcmFnZ2VkIGV2ZW50cyBmcm9tIGNvbWluZyBhZnRlciB0aGUgZHJh
ZyBhbmQgZmFrZSBtb3VzZVVwIGV2ZW50LgogICAgIG1faWdub3Jlc01vdXNlRHJhZ2dlZEV2ZW50
cyA9IHRydWU7CiAKLSAgICBtX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCh3aW5k
b3dNb3VzZUxvYyksIFdlYkNvcmU6OkludFBvaW50KFdlYkNvcmU6Omdsb2JhbFBvaW50KHdpbmRv
d01vdXNlTG9jLCBbbV92aWV3IHdpbmRvd10pKSwgb3BlcmF0aW9uKTsKKyAgICBtX3BhZ2UtPmRy
YWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dNb3VzZUxvYyksIFdlYkNvcmU6OkludFBv
aW50KFdlYkNvcmU6Omdsb2JhbFBvaW50KHdpbmRvd01vdXNlTG9jLCBbbV92aWV3IHdpbmRvd10p
KSwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdPcGVyYXRpb25NYXNrKSk7CiB9CiAKIHN0YXRp
YyBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25GbGFncyBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhO
U1ZpZXcgKnZpZXcsIGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQpAQCAtMzk0Nyw3
ICszOTQ3LDcgQEAgTlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQo
aWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9u
IGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpn
bG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3dd
KSk7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0gY29yZURyYWdEZXN0aW5h
dGlvbkFjdGlvbk1hc2soW21fdmlldyBfd2ViX2RyYWdEZXN0aW5hdGlvbkFjdGlvbkZvckRyYWdn
aW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzayk7CisgICAgYXV0byBkcmFnT3BlcmF0aW9uTWFzayA9IGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKTsK
ICAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xv
YmFsLCBkcmFnT3BlcmF0aW9uTWFzaywgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3Lmdl
dEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNr
KTsKIAogICAgIG1fcGFnZS0+cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CkBAIC0zOTU2
LDE4ICszOTU2LDQyIEBAIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFbnRl
cmVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogICAgIHJldHVybiBOU0RyYWdP
cGVyYXRpb25Db3B5OwogfQogCitzdGF0aWMgTlNEcmFnT3BlcmF0aW9uIGtpdChPcHRpb25hbDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQoreworICAgIGlmICghZHJhZ09w
ZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CisKKyAgICBzd2l0
Y2ggKCpkcmFnT3BlcmF0aW9uKSB7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29w
eToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgY2FzZSBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkxpbms7
CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYzoKKyAgICAgICAgcmV0dXJu
IE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
UHJpdmF0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgY2Fz
ZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJh
dGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlOgorICAgICAg
ICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uRGVsZXRlOworICAgIH0KKworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworfQorCiBOU0RyYWdP
cGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+
IGRyYWdnaW5nSW5mbykKIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBj
b252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdn
aW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRvIGRy
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhb
bV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5n
SW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNrKGRy
YWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRp
b25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCks
IGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogICAgIG1fcGFnZS0+
ZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEsIGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9hcmQubmFt
ZSk7CiAKICAgICBOU0ludGVnZXIgbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcCA9IG1fcGFnZS0+
Y3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkKCk7CiAKLSAgICBpZiAobV9wYWdl
LT5jdXJyZW50RHJhZ09wZXJhdGlvbigpID09IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Ob25lKQor
ICAgIGlmICghbV9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpKQogICAgICAgICBudW1iZXJP
ZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDsK
IAogICAgIE5TRHJhZ2dpbmdGb3JtYXRpb24gZHJhZ2dpbmdGb3JtYXRpb24gPSBOU0RyYWdnaW5n
Rm9ybWF0aW9uTm9uZTsKQEAgLTM5NzksMTQgKzQwMDMsMTQgQEAgTlNEcmFnT3BlcmF0aW9uIFdl
YlZpZXdJbXBsOjpkcmFnZ2luZ1VwZGF0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0lu
Zm8pCiAgICAgaWYgKGRyYWdnaW5nSW5mby5kcmFnZ2luZ0Zvcm1hdGlvbiAhPSBkcmFnZ2luZ0Zv
cm1hdGlvbikKICAgICAgICAgW2RyYWdnaW5nSW5mbyBzZXREcmFnZ2luZ0Zvcm1hdGlvbjpkcmFn
Z2luZ0Zvcm1hdGlvbl07CiAKLSAgICByZXR1cm4gbV9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlv
bigpOworICAgIHJldHVybiBraXQobV9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpKTsKIH0K
IAogdm9pZCBXZWJWaWV3SW1wbDo6ZHJhZ2dpbmdFeGl0ZWQoaWQgPE5TRHJhZ2dpbmdJbmZvPiBk
cmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50KFttX3ZpZXcgY29u
dmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uIGZyb21WaWV3Om5pbF0pOwog
ICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFz
ZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CisgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJh
Z2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5n
SW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJh
ZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRyYWdnaW5nSW5mbykpOwogICAgIG1fcGFnZS0+
ZHJhZ0V4aXRlZChkcmFnRGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1l
KTsKICAgICBtX3BhZ2UtPnJlc2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIGRyYWdn
aW5nSW5mby5udW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9pbml0aWFsTnVtYmVyT2ZWYWxp
ZEl0ZW1zRm9yRHJvcDsKQEAgLTQwMDIsNyArNDAyNiw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OnBl
cmZvcm1EcmFnT3BlcmF0aW9uKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQogewog
ICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFnZ2lu
Z0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9j
YXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwotICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0
YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrKSwgYXBwbGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1
dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0luZm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSAqZHJh
Z0RhdGEgPSBuZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgY29yZURyYWdPcGVyYXRpb25NYXNrKGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2Vk
KCksIGRyYWdnaW5nSW5mbykpOwogCiAgICAgTlNBcnJheSAqdHlwZXMgPSBkcmFnZ2luZ0luZm8u
ZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmlu
ZGV4IGFjNWQ5MGViNTM5ZmIwMDY1MjY1NTU4ZTJlOTQ2MTVhODc0ZmE2Y2IuLjJlNjY2MjhhYjVj
NzA4ZmZmMTIxMGU1ODdjZDRhODUyOWI4MGU4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTI1MCw3ICsyNTAsNyBAQCBwdWJsaWM6CiAgICAgCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICNpZiBQTEFURk9STShHVEspCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJh
ZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpID0gMDsKICNl
bHNlCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnSXRlbSYs
IGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJikgeyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQzY2QzYjVmZjRlOTFhMmZkNDczOTQw
NDRlNDg3Yzg3OWI2ZTQxYTQuLmYxMDExYmFjZTJhNTNjOTNhMTQxZTc5YzRiMzZhNmEyNDcxZDAz
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjQyNCwx
MSArMjQyNCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnCiAjZW5kaWYKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFn
T3BlcmF0aW9uLCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9k
LCBib29sIG1vdXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFj
Y2VwdGVkLCBjb25zdCBJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0
YWJsZUVsZW1lbnRSZWN0KQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9u
LCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1v
dXNlSXNPdmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBj
b25zdCBJbnRSZWN0JiBpbnNlcnRpb25SZWN0LCBjb25zdCBJbnRSZWN0JiBlZGl0YWJsZUVsZW1l
bnRSZWN0KQogewotICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBkcmFnT3BlcmF0aW9uIDw9
IERyYWdPcGVyYXRpb25EZWxldGUpOwotCi0gICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IHN0
YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24pOworICAgIG1fY3VycmVudERy
YWdPcGVyYXRpb24gPSBkcmFnT3BlcmF0aW9uOwogICAgIG1fY3VycmVudERyYWdIYW5kbGluZ01l
dGhvZCA9IGRyYWdIYW5kbGluZ01ldGhvZDsKICAgICBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlu
cHV0ID0gbW91c2VJc092ZXJGaWxlSW5wdXQ7CiAgICAgbV9jdXJyZW50RHJhZ051bWJlck9mRmls
ZXNUb0JlQWNjZXB0ZWQgPSBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkOwpAQCAtMjQzOCwyMCAr
MjQzNiwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYkNvcgogfQogCiAjaWYgUExBVEZPUk0oR1RL
KQotdm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9u
RGF0YSwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGRyYWdJbWFnZUhhbmRsZSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdGFydERyYWcoU2VsZWN0
aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
PiBkcmFnT3BlcmF0aW9uTWFzaywgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJ
bWFnZUhhbmRsZSkKIHsKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UgPSAh
ZHJhZ0ltYWdlSGFuZGxlLmlzTnVsbCgpID8gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZHJhZ0lt
YWdlSGFuZGxlKSA6IG51bGxwdHI7Ci0gICAgcGFnZUNsaWVudCgpLnN0YXJ0RHJhZyhXVEZNb3Zl
KHNlbGVjdGlvbkRhdGEpLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihkcmFn
T3BlcmF0aW9uKSwgV1RGTW92ZShkcmFnSW1hZ2UpKTsKKyAgICBwYWdlQ2xpZW50KCkuc3RhcnRE
cmFnKFdURk1vdmUoc2VsZWN0aW9uRGF0YSksIGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGRy
YWdJbWFnZSkpOwogCiAgICAgZGlkU3RhcnREcmFnKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmRyYWdFbmRlZChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQordm9pZCBXZWJQ
YWdlUHJveHk6OmRyYWdFbmRlZChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+IGRyYWdPcGVyYXRpb25NYXNrKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChj
bGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIG9wZXJhdGlvbikpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24s
IGRyYWdPcGVyYXRpb25NYXNrKSk7CiAgICAgc2V0RHJhZ0NhcmV0UmVjdCh7IH0pOwogfQogCkBA
IC0yNDgyLDcgKzI0ODAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJhZ2dpbmcoKQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCkKIHsKLSAg
ICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmU7Cisg
ICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IFdURjo6bnVsbG9wdDsKICAgICBtX2N1cnJlbnRE
cmFnSGFuZGxpbmdNZXRob2QgPSBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmU7CiAgICAgbV9jdXJy
ZW50RHJhZ0lzT3ZlckZpbGVJbnB1dCA9IGZhbHNlOwogICAgIG1fY3VycmVudERyYWdOdW1iZXJP
ZkZpbGVzVG9CZUFjY2VwdGVkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggYzQ3MTI2MDIxNDhkZTAzMjNmNGM2YmVkODY2NTMxNTBjOTljZDIyYS4uODcwNjRj
ZmNmNjdjNWE4MjczOWI0MTgzZjhiYjg5OTVmOWU5MTc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNTcsOCArMTE1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHBlcmZvcm1EcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdEYXRhJiwgY29uc3QgU3RyaW5nJiBk
cmFnU3RvcmFnZU5hbWUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnT3BlcmF0aW9uKGJv
b2wgaGFuZGxlZCk7CiAKLSAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1
aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wg
bW91c2VJc092ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpOwotICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pOworICAgIHZvaWQgZGlkUGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBX
ZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVu
c2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGluc2VydGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJl
Y3QpOworICAgIHZvaWQgZHJhZ0VuZGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOwogICAgIHZvaWQgZGlkU3RhcnREcmFnKCk7CiAg
ICAgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7CiAgICAgdm9pZCBzZXREcmFnQ2FyZXRSZWN0KGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKTsKQEAgLTExNjgsNyArMTE2OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYg
YXJjaGl2ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNpemUpOwogI2VuZGlmCiAjaWYgUExBVEZP
Uk0oR1RLKQotICAgIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWlu
dDY0X3QgZHJhZ09wZXJhdGlvbiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJ
bWFnZSk7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBPcHRp
b25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlJiBkcmFnSW1hZ2UpOwogI2VuZGlmCiAjZW5kaWYKIApAQCAtMTIyNyw3ICsxMjI3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIGN1cnJl
bnREcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsg
fQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGN1cnJlbnREcmFnT3BlcmF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ09wZXJhdGlvbjsgfQogICAgIFdlYkNv
cmU6OkRyYWdIYW5kbGluZ01ldGhvZCBjdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kKCkgY29uc3Qg
eyByZXR1cm4gbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kOyB9CiAgICAgYm9vbCBjdXJyZW50
RHJhZ0lzT3ZlckZpbGVJbnB1dCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudERyYWdJc092ZXJG
aWxlSW5wdXQ7IH0KICAgICB1bnNpZ25lZCBjdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNj
ZXB0ZWQoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2Nl
cHRlZDsgfQpAQCAtMjYwOCw3ICsyNjA4LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQogICAgIC8vIEN1cnJlbnQgZHJhZyBkZXN0aW5hdGlvbiBkZXRhaWxzIGFyZSBkZWxp
dmVyZWQgYXMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlLAogICAgIC8vIHNvIHdlIHByZXNlcnZl
IHRoZW0gdG8gYmUgdXNlZCB3aGVuIHRoZSBuZXh0IGRyYWdnaW5nIGRlbGVnYXRlIGNhbGwgaXMg
bWFkZS4KLSAgICBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uIG1fY3VycmVudERyYWdPcGVyYXRpb24g
eyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IG1fY3VycmVudERyYWdPcGVyYXRpb247CiAgICAgV2ViQ29yZTo6RHJhZ0hh
bmRsaW5nTWV0aG9kIG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhvZCB7IFdlYkNvcmU6OkRyYWdI
YW5kbGluZ01ldGhvZDo6Tm9uZSB9OwogICAgIGJvb2wgbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJ
bnB1dCB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNU
b0JlQWNjZXB0ZWQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggNDkxYTM1MzkxZGM2Mzk4OGRkMWIyMTMzMDRmNDE5NDNk
YWM0ZWU2Yy4uODM1MDhlODllNDU2MDhmMmE0ZmYxMTE5YmM5MWUyZTI1NTBkNDA1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAt
MzEwLDcgKzMxMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIERyYWcg
YW5kIGRyb3AgbWVzc2FnZXMKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIERpZFBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kIGRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBt
b3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwg
V2ViQ29yZTo6SW50UmVjdCBpbnNlcnRpb25SZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGVkaXRhYmxl
RWxlbWVudFJlY3QpCisgICAgRGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKE9wdGlvbmFs
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24sIGVudW06dWludDhfdCBXZWJD
b3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNP
dmVyRmlsZUlucHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBXZWJDb3Jl
OjpJbnRSZWN0IGluc2VydGlvblJlY3QsIFdlYkNvcmU6OkludFJlY3QgZWRpdGFibGVFbGVtZW50
UmVjdCkKICAgICBEaWRFbmREcmFnZ2luZygpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0zMTgsNyArMzE4LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBTZXRQcm9taXNlZERhdGFGb3JJbWFnZShTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaW1hZ2VIYW5kbGUsIHVpbnQ2
NF90IGltYWdlU2l6ZSwgU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcgZXh0ZW5zaW9uLCBTdHJpbmcg
dGl0bGUsIFN0cmluZyB1cmwsIFN0cmluZyB2aXNpYmxlVVJMLCBXZWJLaXQ6OlNoYXJlZE1lbW9y
eTo6SGFuZGxlIGFyY2hpdmVIYW5kbGUsIHVpbnQ2NF90IGFyY2hpdmVTaXplKQogI2VuZGlmCiAj
aWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFN0YXJ0RHJhZyhX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbkRhdGEsIHVpbnQ2NF90IGRyYWdPcGVyYXRp
b24sIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgZHJhZ0ltYWdlKQorICAgIFN0YXJ0
RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbkRhdGEsIE9wdGlvblNldDxXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaywgV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBP
UlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCA0MzlkYjk5NzdlZTJjMzE5NGE2ZGU4Mjc2ZDEzMjVhYzhk
YmI4MGJhLi43MjY2NjhlNmRmYzMwOWVkY2MwYzk0MjQ1MTZjNjUxNTgyNDI3ODVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTcyODUsNyArNzI4NSw3IEBAIC0gKHZvaWQpX2RpZEhhbmRsZURyYWdTdGFy
dFJlcXVlc3Q6KEJPT0wpc3RhcnRlZAogICAgICAgICBpZiAoc3RhcnRlZCkgewogICAgICAgICAg
ICAgLy8gQSBjbGllbnQgb2YgdGhlIE9iamVjdGl2ZSBDIFNQSSBvciBVSUtpdCBtaWdodCBoYXZl
IHByZXZlbnRlZCB0aGUgZHJhZyBmcm9tIGJlZ2lubmluZyBlbnRpcmVseSBpbiB0aGUgVUkgcHJv
Y2VzcywgaW4gd2hpY2ggY2FzZQogICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBiYWxhbmNlIHRo
ZSBgZHJhZ3N0YXJ0YCBldmVudCB3aXRoIGEgYGRyYWdlbmRgLgotICAgICAgICAgICAgX3BhZ2Ut
PmRyYWdFbmRlZChwb3NpdGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbk5vbmUpOworICAgICAgICAgICAgX3BhZ2UtPmRyYWdFbmRlZChwb3Np
dGlvbkZvckRyYWdFbmQsIHBvc2l0aW9uRm9yRHJhZ0VuZCwgeyB9KTsKICAgICAgICAgfQogICAg
IH0KIH0KQEAgLTczMDMsMjQgKzczMDMsNDIgQEAgLSAodm9pZCljb21wdXRlQ2xpZW50QW5kR2xv
YmFsUG9pbnRzRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9uIG8KICAg
ICAgICAgKm91dEdsb2JhbFBvaW50ID0gbG9jYXRpb25JbkNvbnRlbnRWaWV3OwogfQogCi1zdGF0
aWMgVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb25Gb3JXZWJDb3JlRHJhZ09wZXJhdGlvbihX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBVSURyb3BPcGVyYXRpb24g
ZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+IG9wZXJhdGlvbikKIHsKLSAgICBpZiAob3BlcmF0aW9uICYgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk1vdmUpCi0gICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Nb3ZlOwot
Ci0gICAgaWYgKG9wZXJhdGlvbiAmIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KQotICAgICAg
ICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uQ29weTsKLQorICAgIGlmIChvcGVyYXRpb24pIHsKKyAg
ICAgICAgaWYgKCpvcGVyYXRpb24gPT0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpCisgICAg
ICAgICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uTW92ZTsKKyAgICAgICAgaWYgKCpvcGVyYXRp
b24gPT0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgICAgICByZXR1cm4gVUlE
cm9wT3BlcmF0aW9uQ29weTsKKyAgICB9CiAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbkNhbmNl
bDsKIH0KIAorc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFn
T3BlcmF0aW9uRm9yVUlEcm9wT3BlcmF0aW9uKFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9u
KQoreworICAgIHN3aXRjaCAoZHJvcE9wZXJhdGlvbikgeworICAgIGNhc2UgVUlEcm9wT3BlcmF0
aW9uQ2FuY2VsOgorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGNhc2UgVUlEcm9w
T3BlcmF0aW9uRm9yYmlkZGVuOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGU7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4g
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Nb3Zl
OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmU7CisgICAgfQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIC0g
KFdlYkNvcmU6OkRyYWdEYXRhKWRyYWdEYXRhRm9yRHJvcFNlc3Npb246KGlkIDxVSURyb3BTZXNz
aW9uPilzZXNzaW9uIGRyYWdEZXN0aW5hdGlvbkFjdGlvbjooV0tEcmFnRGVzdGluYXRpb25BY3Rp
b24pZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uCiB7CiAgICAgQ0dQb2ludCBnbG9iYWw7CiAgICAgQ0dQ
b2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVudEFuZEdsb2JhbFBvaW50c0ZvckRy
b3BTZXNzaW9uOnNlc3Npb24gb3V0Q2xpZW50UG9pbnQ6JmNsaWVudCBvdXRHbG9iYWxQb2ludDom
Z2xvYmFsXTsKIAotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihzZXNzaW9uLmFsbG93c01vdmVP
cGVyYXRpb24gPyBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgOiAoV2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbkV2ZXJ5ICYgfldlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKSk7CisgICAgYXV0byBk
cmFnT3BlcmF0aW9uTWFzayA9IFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24oKTsKKyAgICBpZiAo
IXNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbikKKyAgICAgICAgZHJhZ09wZXJhdGlvbk1hc2su
cmVtb3ZlKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKICAgICByZXR1cm4geyBzZXNzaW9u
LCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBv
aW50KGdsb2JhbCksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGljYXRpb25O
b25lLCBXZWJLaXQ6OmNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKGRyYWdEZXN0aW5hdGlv
bkFjdGlvbikgfTsKIH0KIApAQCAtNzQyNCw3ICs3NDQyLDggQEAgLSAodm9pZClfZGlkUGVyZm9y
bURyYWdPcGVyYXRpb246KEJPT0wpaGFuZGxlZAogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtz
ZWxmIGNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpkcm9wU2Vzc2lv
biBvdXRDbGllbnRQb2ludDomY2xpZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogICAgIFtz
ZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsKLSAgICBfcGFnZS0+ZHJhZ0VuZGVk
KFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9p
bnQoZ2xvYmFsKSwgX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpOworICAgIGF1dG8gY3Vy
cmVudERyYWdPcGVyYXRpb24gPSBfcGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKTsKKyAgICBf
cGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3Jl
Ojpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgY3VycmVudERyYWdPcGVyYXRpb24gPyAqY3VycmVu
dERyYWdPcGVyYXRpb24gOiBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oeyB9KSk7
CiB9CiAKIC0gKHZvaWQpX2RpZENoYW5nZURyYWdDYXJldFJlY3Q6KENHUmVjdClwcmV2aW91c1Jl
Y3QgY3VycmVudFJlY3Q6KENHUmVjdClyZWN0CkBAIC04MDEzLDcgKzgwMzIsNyBAQCAtICh2b2lk
KWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiB3aWxsQW5p
bWF0ZUxpZnRXaXRoQW5pbQogICAgICAgICAgICAgUkVMRUFTRV9MT0coRHJhZ0FuZERyb3AsICJE
cmFnIHNlc3Npb24gZW5kZWQgYXQgc3RhcnQ6ICVwIiwgc2Vzc2lvbik7CiAgICAgICAgICAgICAv
LyBUaGUgbGlmdCB3YXMgY2FuY2VsZWQsIHNvIC1kcm9wSW50ZXJhY3Rpb246c2Vzc2lvbkRpZEVu
ZDogd2lsbCBuZXZlciBiZSBpbnZva2VkLiBUaGlzIGlzIHRoZSBsYXN0IGNoYW5jZSB0byBjbGVh
biB1cC4KICAgICAgICAgICAgIFtwcm90ZWN0ZWRTZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lv
blN0YXRlXTsKLSAgICAgICAgICAgIHBhZ2UtPmRyYWdFbmRlZChwb3NpdGlvbkZvckRyYWdFbmQs
IHBvc2l0aW9uRm9yRHJhZ0VuZCwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpOworICAgICAg
ICAgICAgcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFn
RW5kLCB7IH0pOwogICAgICAgICB9CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAg
IGVsc2UKQEAgLTgwNDgsNyArODA2Nyw3IEBAIC0gKHZvaWQpZHJhZ0ludGVyYWN0aW9uOihVSURy
YWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHNlc3Npb246KGlkIDxVSURyYWdTZXNzCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFtzZWxmIGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsK
LSAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBXZWJDb3JlOjpy
b3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9u
Rm9yRHJhZ0VuZCgpKSwgb3BlcmF0aW9uKTsKKyAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6
OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRp
b25Gb3JEcmFnRW5kKCkpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoX2RyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5hZGp1c3RlZFBvc2l0aW9uRm9yRHJhZ0VuZCgpKSwgY29yZURyYWdPcGVyYXRp
b25Gb3JVSURyb3BPcGVyYXRpb24ob3BlcmF0aW9uKSk7CiB9CiAKIC0gKFVJVGFyZ2V0ZWREcmFn
UHJldmlldyAqKWRyYWdJbnRlcmFjdGlvbjooVUlEcmFnSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlv
biBwcmV2aWV3Rm9yQ2FuY2VsbGluZ0l0ZW06KFVJRHJhZ0l0ZW0gKilpdGVtIHdpdGhEZWZhdWx0
OihVSVRhcmdldGVkRHJhZ1ByZXZpZXcgKilkZWZhdWx0UHJldmlldwpAQCAtODI2Nyw3ICs4Mjg2
LDcgQEAgLSAodm9pZClkcm9wSW50ZXJhY3Rpb246KFVJRHJvcEludGVyYWN0aW9uICopaW50ZXJh
Y3Rpb24gc2Vzc2lvbkRpZEVuZDooaWQgPFVJRHIKICAgICBDR1BvaW50IGNsaWVudDsKICAgICBb
c2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lvbiBv
dXRDbGllbnRQb2ludDomY2xpZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogICAgIFtzZWxm
IGNsZWFuVXBEcmFnU291cmNlU2Vzc2lvblN0YXRlXTsKLSAgICBfcGFnZS0+ZHJhZ0VuZGVkKFdl
YkNvcmU6OnJvdW5kZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQo
Z2xvYmFsKSwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpOworICAgIF9wYWdlLT5kcmFnRW5k
ZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQ
b2ludChnbG9iYWwpLCB7IH0pOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRH
dGsuY3BwCmluZGV4IGVlZDdiOTk2ODU3MzZkNWQwMTY2OTAwZDFhYzZkZTAzYTIxNjEwNWUuLjc0
ZjQ2Y2NiZjExM2Y3YzZiZjk5YTJhMTgyYjg4ZjQxN2MzMzBjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFdlYkRyYWdDbGllbnQ6OnN0
YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUm
KQogCiAgICAgbV9wYWdlLT53aWxsU3RhcnREcmFnKCk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKGRhdGFUcmFuc2Zlci5wYXN0ZWJvYXJkKCku
c2VsZWN0aW9uRGF0YSgpLCBkYXRhVHJhbnNmZXIuc291cmNlT3BlcmF0aW9uKCksIGhhbmRsZSkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydERyYWcoZGF0
YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5zZWxlY3Rpb25EYXRhKCksIGRhdGFUcmFuc2Zlci5zb3Vy
Y2VPcGVyYXRpb25NYXNrKCksIGhhbmRsZSkpOwogfQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViS2l0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAz
N2E1ZDdkMmNkNTNmZDJkNDY5OGZiOTlmYzg4NzIzOTc4NjQ2NGFkLi4zYzE3ZjkwOGUxMWY2NzFm
ZmI3NDIwMmM0YTcxMTkwYjAxZTU2YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzk0NSwyMiArMzk0NSwyMiBAQCBOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIqIFdlYlBhZ2U6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKICNpZiBQTEFURk9STShHVEsp
Ci12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxl
ckFjdGlvbiBhY3Rpb24sIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50
UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2ssIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCB1aW50MzJfdCBmbGFncykKK3ZvaWQg
V2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9u
IGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2ssIFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCB1aW50MzJfdCBmbGFn
cykKIHsKICAgICBpZiAoIW1fcGFnZSkgewotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwg
RHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0s
IHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEo
JnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgc3RhdGljX2Nh
c3Q8RHJhZ09wZXJhdGlvbj4oZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgc3RhdGljX2Nh
c3Q8RHJhZ0FwcGxpY2F0aW9uRmxhZ3M+KGZsYWdzKSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEo
JnNlbGVjdGlvbkRhdGEsIGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ2dpbmdT
b3VyY2VPcGVyYXRpb25NYXNrLCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxh
Z3MpKTsKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rp
b246OkVudGVyZWQ6IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRp
b24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAg
ICAgICBhdXRvIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlv
biwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2Ut
PmRyYWdDb250cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgeyB9LCB7IH0pKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIERyYWdDb250cm9sbGVyQWN0aW9uOjpVcGRhdGVk
OiB7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdl
LT5kcmFnQ29udHJvbGxlcigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAgICAgICAgYXV0byBy
ZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0
ZWQoZHJhZ0RhdGEpOwogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihyZXNvbHZlZERyYWdPcGVyYXRpb24sIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnSGFuZGxpbmdNZXRob2QoKSwgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLm1vdXNlSXNPdmVyRmlsZUlucHV0KCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5u
dW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkKCksIHsgfSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0zOTc5LDI0ICszOTc5LDI0IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29uc3QgSW50CiB2
b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFj
dGlvbiBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlQXJyYXkmJiBzYW5kYm94RXh0ZW5zaW9uc0hhbmRsZUFycmF5KQogewogICAgIGlm
ICghbV9wYWdlKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBEcmFnSGFuZGxpbmdN
ZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxv
cHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBzd2l0Y2ggKGFjdGlvbikgewogICAgIGNhc2UgRHJh
Z0NvbnRyb2xsZXJBY3Rpb246OkVudGVyZWQ6IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiByZXNv
bHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VudGVyZWQo
ZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJlc29s
dmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGluZ01l
dGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQoKSwg
bV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwgbV9w
YWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
KCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmVkaXRhYmxlRWxlbWVudFJlY3RJblJv
b3RWaWV3Q29vcmRpbmF0ZXMoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2Ug
RHJhZ0NvbnRyb2xsZXJBY3Rpb246OlVwZGF0ZWQ6IHsKLSAgICAgICAgRHJhZ09wZXJhdGlvbiBy
ZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0
ZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CiAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHJl
c29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdIYW5kbGlu
Z01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJc092ZXJGaWxlSW5wdXQo
KSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQoKSwg
bV9wYWdlLT5kcmFnQ2FyZXRDb250cm9sbGVyKCkuY2FyZXRSZWN0SW5Sb290Vmlld0Nvb3JkaW5h
dGVzKCksIG1fcGFnZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLmVkaXRhYmxlRWxlbWVudFJlY3RJ
blJvb3RWaWV3Q29vcmRpbmF0ZXMoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNh
c2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OkV4aXRlZDoKICAgICAgICAgbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLmRyYWdFeGl0ZWQoZHJhZ0RhdGEpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9u
Tm9uZSwgRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oV1RGOjpudWxsb3B0LCBEcmFnSGFuZGxpbmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAw
LCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgRHJhZ0Nv
bnRyb2xsZXJBY3Rpb246OlBlcmZvcm1EcmFnT3BlcmF0aW9uOiB7CkBAIC00MDIzLDcgKzQwMjMs
NyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJv
bGxlckFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZTo6
ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKQordm9pZCBXZWJQYWdlOjpk
cmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJh
Z09wZXJhdGlvbk1hc2spCiB7CiAgICAgSW50UG9pbnQgYWRqdXN0ZWRDbGllbnRQb3NpdGlvbihj
bGllbnRQb3NpdGlvbi54KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgp
LngoKSwgY2xpZW50UG9zaXRpb24ueSgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdP
ZmZzZXQoKS55KCkpOwogICAgIEludFBvaW50IGFkanVzdGVkR2xvYmFsUG9zaXRpb24oZ2xvYmFs
UG9zaXRpb24ueCgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS54KCks
IGdsb2JhbFBvc2l0aW9uLnkoKSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0
KCkueSgpKTsKQEAgLTQwMzQsNyArNDAzNCw3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhZ0VuZGVkKFdl
YkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iCiAg
ICAgICAgIHJldHVybjsKICAgICAvLyBGSVhNRTogVGhlc2UgYXJlIGZha2UgbW9kaWZpZXIga2V5
cyBoZXJlLCBidXQgdGhleSBzaG91bGQgYmUgcmVhbCBvbmVzIGluc3RlYWQuCiAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IGV2ZW50KGFkanVzdGVkQ2xpZW50UG9zaXRpb24sIGFkanVzdGVkR2xvYmFs
UG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6bm93KCksIDAsIFdlYkNvcmU6Ok5vVGFw
KTsKLSAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRl
ZEF0KGV2ZW50LCAoRHJhZ09wZXJhdGlvbilvcGVyYXRpb24pOworICAgIG1fcGFnZS0+bWFpbkZy
YW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIGRyYWdPcGVyYXRp
b25NYXNrKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRW5kRHJhZ2dp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCA5NjM2OGFjMzAzMjZlZGI4MGU4NjMwY2FkMWRkOTgzZDgyMTdiMWRkLi5hNGIxNTc4NjZiZTdm
MmQ1ZTU4ODM2Njc4ZWQ3NDE1ZGYyNjI1YmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC04OTksNyArODk5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpOwogCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkgJiYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgcGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlv
biwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhJiYsIHVpbnQzMl90IGZsYWdzKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9w
dGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDMyX3QgZmxhZ3MpOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiAhUExBVEZPUk0oR1RLKQpAQCAtOTA3LDcgKzkw
Nyw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2
b2lkIGRyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6
SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IG9wZXJhdGlvbik7CisgICAgdm9pZCBk
cmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOwog
CiAgICAgdm9pZCB3aWxsUGVyZm9ybUxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKTsKICAgICB2
b2lkIG1heVBlcmZvcm1VcGxvYWREcmFnRGVzdGluYXRpb25BY3Rpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4
IDUzOGU2NTcyZTUwZjhlNDMwMDY4ZTY5ODc1ODlmYTBkY2Y1Y2ZkMmYuLmFlOTI3NDc2Mzg4NTNi
MzJlMjNiNGVlMTM2M2ExMzNiY2JmNjA1MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMzA5LDE0ICszMDksMTQg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogICAgICMgRHJhZyBhbmQgZHJvcC4KICNpZiBQ
TEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgUGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKGVudW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFj
dGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50
IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uLCB1aW50MzJfdCBmbGFncykKKyAgICBQZXJm
b3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xs
ZXJBY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29y
ZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEg
c2VsZWN0aW9uLCB1aW50MzJfdCBmbGFncykKICNlbmRpZgogI2lmICFQTEFURk9STShHVEspICYm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGVu
dW06dWludDhfdCBXZWJLaXQ6OkRyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkg
c2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpCiAjZW5kaWYKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAgIERpZFN0YXJ0RHJhZygpCi0gICAgRHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50
IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0
X3Qgb3BlcmF0aW9uKQorICAgIERyYWdFbmRlZChXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3Np
dGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykKICAgICBEcmFnQ2FuY2VsbGVkKCkK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCmluZGV4IDBlNjU2NDk2Yzg0MDBhYWM5MzIxNWVhNjc4YWIxMDkwYzRkMmU0
MDMuLjhiODdkYjM4YzIyNDQyNmZhN2JlNDk5YmJhYzIxOTAwMWI5YTU3MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC05
MjQsNyArOTI0LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJh
Z1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW8KICAgICAvLyBpcyBvcGFxdWUg
dG8gdGhlIHdlYiBwcm9jZXNzLCB3aGljaCBvbmx5IHNlZXMgdGhhdCB0aGUgY3VycmVudCBkcmFn
IGhhcyBlbmRlZCwgYW5kIHRoYXQgYSBuZXcgb25lIGlzIGJlZ2lubmluZy4KICAgICBQbGF0Zm9y
bU1vdXNlRXZlbnQgZXZlbnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBMZWZ0QnV0
dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgV2FsbFRpbWU6Om5vdygpLCAwLCBOb1RhcCk7CiAgICAgbV9wYWdlLT5kcmFnQ29udHJv
bGxlcigpLmRyYWdFbmRlZCgpOwotICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIERyYWdPcGVyYXRpb25Ob25lLCBNYXlFeHRlbmRE
cmFnU2Vzc2lvbjo6WWVzKTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigp
LmRyYWdTb3VyY2VFbmRlZEF0KGV2ZW50LCB7IH0sIE1heUV4dGVuZERyYWdTZXNzaW9uOjpZZXMp
OwogCiAgICAgYm9vbCBkaWRIYW5kbGVEcmFnID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhh
bmRsZXIoKS50cnlUb0JlZ2luRHJhZ0F0UG9pbnQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0
aW9uKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEhhbmRsZUFkZGl0aW9u
YWxEcmFnSXRlbXNSZXF1ZXN0KGRpZEhhbmRsZURyYWcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGQ0ZGVhN2MzOWM4Y2FmNGMzN2I0YWE4NWZk
NTc5MWZlYWNlNDk4ODguLmI5ZWVjZGM4ZGM5MTk1YjMzOTkxOGQ1ZDVkYTAxNTI0ZDc3ZTc5OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtOTQy
LDcgKzk0Miw3IEBAIC0gKHZvaWQpX3NldFR5cGluZ1N0eWxlOihET01DU1NTdHlsZURlY2xhcmF0
aW9uICopc3R5bGUgd2l0aFVuZG9BY3Rpb246KFdlYkNvcmU6CiB9CiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpCi0tICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDoo
TlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aW9uCist
ICh2b2lkKV9kcmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihO
U0RyYWdPcGVyYXRpb24pZHJhZ09wZXJhdGlvbk1hc2sKIHsKICAgICBpZiAoIV9wcml2YXRlLT5j
b3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTk1Miw3ICs5NTIsNyBAQCAtICh2b2lkKV9k
cmFnU291cmNlRW5kZWRBdDooTlNQb2ludCl3aW5kb3dMb2Mgb3BlcmF0aW9uOihOU0RyYWdPcGVy
YXRpb24pb3BlcmF0aQogICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgZmFrZSBtb2RpZmllciBrZXlz
IGhlcmUsIGJ1dCB0aGV5IHNob3VsZCBiZSByZWFsIG9uZXMgaW5zdGVhZC4KICAgICBXZWJDb3Jl
OjpQbGF0Zm9ybU1vdXNlRXZlbnQgZXZlbnQoV2ViQ29yZTo6SW50UG9pbnQod2luZG93TG9jKSwg
V2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xvYmFsUG9pbnQod2luZG93TG9jLCBbdmlldy0+
cGxhdGZvcm1XaWRnZXQoKSB3aW5kb3ddKSksCiAgICAgICAgIFdlYkNvcmU6OkxlZnRCdXR0b24s
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6OkZvcmNlQXRDbGljaywgV2ViQ29y
ZTo6Tm9UYXApOwotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLmRyYWdT
b3VyY2VFbmRlZEF0KGV2ZW50LCAoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbilvcGVyYXRpb24pOwor
ICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLmRyYWdTb3VyY2VFbmRlZEF0
KGV2ZW50LCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KICNl
bmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDVlNGE4OTA1
ZWM4NGY1N2I1MWQ5ODljMTcwNTlmZDdjZDBjYzFkYzguLjM4ZTc5MDkxNTFiZjc4NmVlNTJlMGYx
Nzg3MDNhYTFkYjNiNTRiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAg
KEMpIDIwMDYsIDIwMDcgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC00MjI5LDYgKzQyMjksMjUgQEAgLSAodm9pZCl0b3VjaDooV2Vi
RXZlbnQgKilldmVudAogI2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFU
Rk9STShNQUMpCisKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvblNldDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQoreworICAgIE5TRHJhZ09wZXJhdGlvbiBy
ZXN1bHQgPSBOU0RyYWdPcGVyYXRpb25Ob25lOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRh
aW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5KSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJh
Z09wZXJhdGlvbkNvcHk7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkxpbmspKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTGlu
azsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
R2VuZXJpYykpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25HZW5lcmljOworICAg
IGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRl
KSkKKyAgICAgICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvblByaXZhdGU7CisgICAgaWYgKG9w
ZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKQorICAgICAg
ICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5j
b250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlKSkKKyAgICAgICAgcmVzdWx0IHw9
IE5TRHJhZ09wZXJhdGlvbkRlbGV0ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgogLSAodm9pZClkcmFnSW1hZ2U6KE5TSW1h
Z2UgKilkcmFnSW1hZ2UKICAgICAgICAgICAgICAgIGF0OihOU1BvaW50KWF0CkBAIC00MjgwLDcg
KzQyOTksNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0dXJu
IChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0
aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdP
cGVyYXRpb25NYXNrKCkpOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19C
RUdJTgpAQCAtNDM4Niw3ICs0NDA1LDcgQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU2Vz
c2lvbjooTlNEcmFnZ2luZ1Nlc3Npb24gKilzZXNzaW9uIHNvdXJjZU9wZXJhdGlvbk0KICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOwogCi0gICAgcmV0
dXJuIChOU0RyYWdPcGVyYXRpb24pcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3Bl
cmF0aW9uKCk7CisgICAgcmV0dXJuIGtpdChwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURy
YWdPcGVyYXRpb25NYXNrKCkpOwogfQogCiAtICh2b2lkKWRyYWdnaW5nU2Vzc2lvbjooTlNEcmFn
Z2luZ1Nlc3Npb24gKilzZXNzaW9uIGVuZGVkQXRQb2ludDooTlNQb2ludClzY3JlZW5Qb2ludCBv
cGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBjNWU5ZjI1YzYxZTkzMzAxZTI4M2VhMGE0YzA4
Mzg4ZjE5NDExOTU1Li4wOTc2NzdkOWRhYmM4NzgwOWMxY2MwZGQ0ZDU3OGU3M2NjYzdjMWQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC01ODksNiAr
NTg5LDkyIEBAIHN0YXRpYyBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhXCiAgICAgICAgIHJlc3VsdC5hZGQoV2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQorCisjaWYgIVVTRShBUFBLSVQpCisvLyBTZWUgPFVJS2l0L1VJRHJhZ2dpbmdfUHJpdmF0ZS5o
Pi4KK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfVUlEcmFnT3BlcmF0aW9uKSB7Cisg
ICAgX1VJRHJhZ09wZXJhdGlvbk5vbmUgPSAwLAorICAgIF9VSURyYWdPcGVyYXRpb25Db3B5ID0g
MSwKKyAgICBfVUlEcmFnT3BlcmF0aW9uTW92ZSA9IDE2LAorfTsKKyNlbmRpZgorCitPcHRpb25T
ZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJh
Z09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+IHJlc3VsdDsKKworI2lmIFVTRShBUFBLSVQpCisgICAgaWYgKG9wZXJhdGlvbiAmIE5T
RHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25MaW5rKQorICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25MaW5rKTsKKyAgICBpZiAob3Bl
cmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uR2VuZXJpYykKKyAgICAgICAgcmVzdWx0LmFkZChXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYyk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09w
ZXJhdGlvblByaXZhdGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdPcGVyYXRpb25Nb3ZlKQorICAg
ICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICBpZiAob3Bl
cmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uRGVsZXRlKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25EZWxldGUpOworI2Vsc2UKKyAgICBpZiAob3BlcmF0aW9uICYgX1VJ
RHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbkNvcHkpOworICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3BlcmF0aW9uTW92ZSkKKyAg
ICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSk7CisjZW5kaWYgLy8g
VVNFKEFQUEtJVCkKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKyNpZiBVU0UoQVBQS0lUKQor
c3RhdGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4gZHJhZ09wZXJhdGlvbikKK3sKKyAgICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAgIHJl
dHVybiBOU0RyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dpdGNoICgqZHJhZ09wZXJhdGlvbikg
eworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBO
U0RyYWdPcGVyYXRpb25Db3B5OworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbms6
CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGNhc2UgV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkdlbmVyaWM6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25HZW5l
cmljOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGU6CisgICAgICAgIHJl
dHVybiBOU0RyYWdPcGVyYXRpb25Qcml2YXRlOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbk1vdmU6CisgICAgICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2Ug
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJh
dGlvbkRlbGV0ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKK30KKyNlbHNlCitzdGF0aWMgX1VJRHJhZ09wZXJhdGlv
biBraXQoT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlvbikKK3sK
KyAgICBpZiAoIWRyYWdPcGVyYXRpb24pCisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9u
Tm9uZTsKKworICAgIHN3aXRjaCAoKmRyYWdPcGVyYXRpb24pIHsKKyAgICBjYXNlIFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbkNvcHk7
CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgcmV0dXJuIF9V
SURyYWdPcGVyYXRpb25Ob25lOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVy
aWM6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBjYXNlIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlv
bk5vbmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAgICAgcmV0
dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkRlbGV0ZToKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworICAgIH0KKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9u
ZTsKK30KKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBP
UlQpCiAKIFdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9w
dGlvbnMpCkBAIC0xOTIzLDcgKzIwMDksNyBAQCAtIChXZWJEcmFnRGVzdGluYXRpb25BY3Rpb24p
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0ZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaQogCiAt
IChXZWJDb3JlOjpEcmFnRGF0YSlkcmFnRGF0YUZvclNlc3Npb246KGlkIDxVSURyb3BTZXNzaW9u
PilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQp
Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KIHsKLSAgICBhdXRv
IGRyYWdPcGVyYXRpb25NYXNrID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4o
b3BlcmF0aW9uKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRp
b25NYXNrKG9wZXJhdGlvbik7CiAgICAgYXV0byBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrID0g
Y29yZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soW3NlbGYgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
TWFza0ZvclNlc3Npb246c2Vzc2lvbl0pOwogICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6
OnJvdW5kZWRJbnRQb2ludChjbGllbnRQb3NpdGlvbiksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChnbG9iYWxQb3NpdGlvbiksIGRyYWdPcGVyYXRpb25NYXNrLCBXZWJDb3JlOjpEcmFnQXBwbGlj
YXRpb25Ob25lLCBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrIH07CiB9CkBAIC0xOTMyLDE0ICsy
MDE4LDE0IEBAIC0gKHVpbnQ2NF90KV9lbnRlcmVkRGF0YUludGVyYWN0aW9uOihpZCA8VUlEcm9w
U2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpCiB7CiAgICAgV2ViVGhyZWFkTG9jaygp
OwogICAgIGF1dG8gZHJhZ0RhdGEgPSBbc2VsZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lvbiBj
bGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xvYmFsOmdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpvcGVy
YXRpb25dOwotICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFn
RW50ZXJlZChkcmFnRGF0YSk7CisgICAgcmV0dXJuIGtpdChfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0Nv
bnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSkpOwogfQogCiAtICh1aW50NjRfdClfdXBk
YXRlZERhdGFJbnRlcmFjdGlvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gY2xpZW50OihD
R1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbiBvcGVy
YXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgogewogICAgIFdlYlRocmVhZExvY2soKTsKICAgICBh
dXRvIGRyYWdEYXRhID0gW3NlbGYgZHJhZ0RhdGFGb3JTZXNzaW9uOnNlc3Npb24gY2xpZW50OmNs
aWVudFBvc2l0aW9uIGdsb2JhbDpnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246b3BlcmF0aW9uXTsK
LSAgICByZXR1cm4gX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQo
ZHJhZ0RhdGEpOworICAgIHJldHVybiBraXQoX3ByaXZhdGUtPnBhZ2UtPmRyYWdDb250cm9sbGVy
KCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAodm9pZClfZXhpdGVkRGF0YUludGVy
YWN0aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50
UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0
X3Qpb3BlcmF0aW9uCkBAIC02NzQ4LDggKzY4MzQsOCBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJh
Z2dpbmdFbnRlcmVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNv
cmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAg
ICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5n
SW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2Vs
ZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIHJldHVybiBj
b3JlKHNlbGYpLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKKyAgICBX
ZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBj
b3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rp
b25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOworICAgIHJldHVybiBraXQoY29y
ZShzZWxmKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSkpOwogfQogCiAt
IChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRy
YWdnaW5nSW5mbwpAQCAtNjc2MSw4ICs2ODQ3LDggQEAgLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdn
aW5nVXBkYXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAg
V2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0lu
Zm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10pKTsKIAotICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0
PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYg
YWN0aW9uTWFza0ZvckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKLSAgICByZXR1cm4gcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CisgICAgV2ViQ29yZTo6
RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgY29yZURyYWdP
cGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSks
IFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSwgW3NlbGYgYWN0aW9uTWFza0Zv
ckRyYWdnaW5nSW5mbzpkcmFnZ2luZ0luZm9dKTsKKyAgICByZXR1cm4ga2l0KHBhZ2UtPmRyYWdD
b250cm9sbGVyKCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpKTsKIH0KIAogLSAodm9pZClkcmFnZ2lu
Z0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KQEAgLTY3NzMsNyArNjg1
OSw3IEBAIC0gKHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dp
bmdJbmZvCiAKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2RyYWdnaW5nSW5mbyBkcmFn
Z2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omds
b2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0sIFtzZWxmIHdpbmRvd10p
KTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwg
Z2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZv
IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRy
YWdnaW5nSW5mb10pOworICAgIFdlYkNvcmU6OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5m
bywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdn
aW5nSW5mb10pOwogICAgIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4aXRlZChkcmFnRGF0
YSk7CiB9CiAKQEAgLTY3ODYsNyArNjg3Miw3IEBAIC0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRp
b246KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiB7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNv
cmU6OkludFBvaW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRy
YWdnaW5nTG9jYXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7Ci0gICAgYXV0byogZHJhZ0RhdGEgPSBu
ZXcgV2ViQ29yZTo6RHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dKTsK
KyAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8s
IGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2RyYWdnaW5nSW5mbyBkcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2lu
Z0luZm9dKTsKIAogICAgIE5TQXJyYXkqIHR5cGVzID0gZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFz
dGVib2FyZC50eXBlczsKICAgICBpZiAoIVt0eXBlcyBjb250YWluc09iamVjdDpXZWJBcmNoaXZl
UGJvYXJkVHlwZV0gJiYgW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkNvcmU6OmxlZ2FjeUZpbGVz
UHJvbWlzZVBhc3RlYm9hcmRUeXBlKCldKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA3ZDcwYzA0YTBjZTEzNGNmZTg3ZDU2
ZmQ4MTFmNGRjNWZiY2IzODg5Li5lYTFmMmYzMWU1YmNmOTkwNDU0ZGQwMmZmMGQzMGQxNTAzMTYz
ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0lu
dGVybmFsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zNiw2
ICszNiw3IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIAogI2ltcG9ydCA8V2ViQ29yZS9BbHRlcm5h
dGl2ZVRleHRDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnRFbnVtcy5oPgpAQCAtODksNyArOTAs
MTcgQEAgY2xhc3MgV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXI7CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwogCi1XZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9u
cyBvcHRpb25zKTsKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQorI2lmIFVTRShBUFBLSVQpCit1
c2luZyBDb2NvYURyYWdPcGVyYXRpb24gPSBOU0RyYWdPcGVyYXRpb247CisjZWxzZQordXNpbmcg
Q29jb2FEcmFnT3BlcmF0aW9uID0gdWludDY0X3Q7CisjZW5kaWYKKworT3B0aW9uU2V0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhDb2NvYURyYWdPcGVyYXRp
b24pOworI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCisKK1dlYkNvcmU6OkZpbmRPcHRp
b25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zKTsKIAogT3B0aW9uU2V0PFdlYkNvcmU6Okxh
eW91dE1pbGVzdG9uZT4gY29yZUxheW91dE1pbGVzdG9uZXMoV2ViTGF5b3V0TWlsZXN0b25lcyk7
CiBXZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAppbmRleCAzMTMyNjAzNmE4YTQx
MjU3N2VjMWNhMTkxN2RjM2ZmODYyMDdlMjYzLi5lNTZjZGM5YTJiMDJiYmQwY2YxNzE5ZmI1NDM2
ZThjZWI5OWU5NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcApAQCAtNDQsMTggKzQ0LDE4IEBACiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgRFdPUkQgZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhEcmFnT3BlcmF0aW9uIG9wKQorc3RhdGljIERXT1JEIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMoT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IG9wZXJhdGlvbk1hc2spCiB7CiAgICAgRFdPUkQgcmVzdWx0ID0gRFJPUEVGRkVDVF9O
T05FOwotICAgIGlmIChvcCA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYgKG9wZXJhdGlv
bk1hc2sgPT0gYW55RHJhZ09wZXJhdGlvbigpKQogICAgICAgICByZXR1cm4gRFJPUEVGRkVDVF9D
T1BZIHwgRFJPUEVGRkVDVF9MSU5LIHwgRFJPUEVGRkVDVF9NT1ZFOyAKLSAgICBpZiAob3AgJiBE
cmFnT3BlcmF0aW9uQ29weSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3Bl
cmF0aW9uQ29weSkpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX0NPUFk7IAotICAgIGlm
IChvcCAmIERyYWdPcGVyYXRpb25MaW5rKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5z
KERyYWdPcGVyYXRpb25MaW5rKSkKICAgICAgICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfTElOSzsg
Ci0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgaWYgKG9wZXJhdGlvbk1hc2su
Y29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVD
VF9NT1ZFOwotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25HZW5lcmljKQorICAgIGlmIChvcGVy
YXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25HZW5lcmljKSkKICAgICAgICAgcmVzdWx0
IHw9IERST1BFRkZFQ1RfTU9WRTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTUyLDcgKzE1
Miw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVtIGl0ZW0sIERhdGFU
cmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIERXT1JEIG9rRWZmZWN0ID0gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9E
cmFnQ3Vyc29ycyhtX3dlYlZpZXctPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFn
T3BlcmF0aW9uKCkpOworICAgICAgICBEV09SRCBva0VmZmVjdCA9IGRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFza1RvRHJhZ0N1cnNvcnMobV93ZWJWaWV3LT5wYWdlKCktPmRyYWdDb250cm9sbGVy
KCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7CiAgICAgICAgIERXT1JEIGVmZmVjdCA9IERS
T1BFRkZFQ1RfTk9ORTsKICAgICAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aTsKICAgICAg
ICAgSFJFU1VMVCBociA9IEVfTk9USU1QTDsKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYkRy
YWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSXRlbSBpdGVtLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFu
c2ZlciwgRnJhbWUmCiAgICAgICAgIGlmIChociA9PSBFX05PVElNUEwpCiAgICAgICAgICAgICBo
ciA9IERvRHJhZ0Ryb3AoZGF0YU9iamVjdC5nZXQoKSwgc291cmNlLmdldCgpLCBva0VmZmVjdCwg
JmVmZmVjdCk7CiAKLSAgICAgICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBEcmFnT3BlcmF0
aW9uTm9uZTsKKyAgICAgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbjsKICAg
ICAgICAgaWYgKGhyID09IERSQUdEUk9QX1NfRFJPUCkgewogICAgICAgICAgICAgaWYgKGVmZmVj
dCAmIERST1BFRkZFQ1RfQ09QWSkKICAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3Bl
cmF0aW9uQ29weTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggM2JkZWU2YmJk
NWI0ODdlNDU3ODhlMmM0Nzc1Mjc1ZDlkMGE5MjA1NC4uNDJkY2QyODhiZGE2ZGEyMTgxMWRiMzJh
MjUzYTE5NzIwZmM5MTQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTU4
NDIsMzggKzU4NDIsNDIgQEAgSFJFU1VMVCBXZWJWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QoX091
dF8gTFBSRUNUIHJlY3QpCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLXN0YXRpYyBEV09SRCBkcmFn
T3BlcmF0aW9uVG9EcmFnQ3Vyc29yKERyYWdPcGVyYXRpb24gb3ApIHsKLSAgICBEV09SRCByZXMg
PSBEUk9QRUZGRUNUX05PTkU7Ci0gICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkNvcHkpIAotICAg
ICAgICByZXMgPSBEUk9QRUZGRUNUX0NPUFk7Ci0gICAgZWxzZSBpZiAob3AgJiBEcmFnT3BlcmF0
aW9uTGluaykgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfTElOSzsKLSAgICBlbHNlIGlmIChv
cCAmIERyYWdPcGVyYXRpb25Nb3ZlKSAKLSAgICAgICAgcmVzID0gRFJPUEVGRkVDVF9NT1ZFOwot
ICAgIGVsc2UgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpIAotICAgICAgICByZXMgPSBE
Uk9QRUZGRUNUX01PVkU7IC8vVGhpcyBhcHBlYXJzIHRvIGJlIHRoZSBGaXJlZm94IGJlaGF2aW91
cgotICAgIHJldHVybiByZXM7CitzdGF0aWMgRFdPUkQgZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNv
cihPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCit7CisgICAgaWYgKCFvcGVyYXRp
b24pCisgICAgICAgIHJldHVybiBEUk9QRUZGRUNUX05PTkU7CisKKyAgICBEV09SRCByZXN1bHQg
PSBEUk9QRUZGRUNUX05PTkU7CisgICAgaWYgKCpvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkNv
cHkpCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1RfQ09QWTsKKyAgICBlbHNlIGlmICgqb3Bl
cmF0aW9uID09IERyYWdPcGVyYXRpb25MaW5rKQorICAgICAgICByZXN1bHQgPSBEUk9QRUZGRUNU
X0xJTks7CisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTW92ZSkKKyAg
ICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9NT1ZFOworICAgIGVsc2UgaWYgKCpvcGVyYXRpb24g
PT0gRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1RfTU9W
RTsgLy8gVGhpcyBhcHBlYXJzIHRvIGJlIHRoZSBGaXJlZm94IGJlaGF2aW91ci4KKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1EcmFnT3BlcmF0aW9uIFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3Bl
cmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25zdAorT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25z
dAogewogICAgIGlmICghbV9wYWdlKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7
CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICAvLyBDb25mb3JtcyB0byBNaWNyb3NvZnQncyBr
ZXkgY29tYmluYXRpb25zIGFzIGRvY3VtZW50ZWQgZm9yIAogICAgIC8vIElEcm9wVGFyZ2V0OjpE
cmFnT3Zlci4gTm90ZSwgZ3JmS2V5U3RhdGUgaXMgdGhlIGN1cnJlbnQgCiAgICAgLy8gc3RhdGUg
b2YgdGhlIGtleWJvYXJkIG1vZGlmaWVyIGtleXMgb24gdGhlIGtleWJvYXJkLiBTZWU6CiAgICAg
Ly8gPGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczY4MDEyOShWUy44
NSkuYXNweD4uCi0gICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbigpOworICAgIGF1dG8gb3BlcmF0aW9uTWFzayA9
IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3BlcmF0aW9uTWFzaygpOwogCiAg
ICAgaWYgKChncmZLZXlTdGF0ZSAmIChNS19DT05UUk9MIHwgTUtfU0hJRlQpKSA9PSAoTUtfQ09O
VFJPTCB8IE1LX1NISUZUKSkKLSAgICAgICAgb3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkxpbms7
CisgICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7IERyYWdPcGVyYXRpb25MaW5rIH07CiAgICAgZWxz
ZSBpZiAoKGdyZktleVN0YXRlICYgTUtfQ09OVFJPTCkgPT0gTUtfQ09OVFJPTCkKLSAgICAgICAg
b3BlcmF0aW9uID0gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIG9wZXJhdGlvbk1hc2sgPSB7
IERyYWdPcGVyYXRpb25Db3B5IH07CiAgICAgZWxzZSBpZiAoKGdyZktleVN0YXRlICYgTUtfU0hJ
RlQpID09IE1LX1NISUZUKQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uR2VuZXJp
YzsKKyAgICAgICAgb3BlcmF0aW9uTWFzayA9IHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfTsKIAot
ICAgIHJldHVybiBvcGVyYXRpb247CisgICAgcmV0dXJuIG9wZXJhdGlvbk1hc2s7CiB9CiAKIEhS
RVNVTFQgV2ViVmlldzo6RHJhZ0VudGVyKElEYXRhT2JqZWN0KiBwRGF0YU9iamVjdCwgRFdPUkQg
Z3JmS2V5U3RhdGUsIFBPSU5UTCBwdCwgRFdPUkQqIHBkd0VmZmVjdCkKQEAgLTU5MTksOCArNTky
Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6RHJhZ0xlYXZlKCkKICAgICAgICAgbV9kcm9wVGFyZ2V0
SGVscGVyLT5EcmFnTGVhdmUoKTsKIAogICAgIGlmIChtX2RyYWdEYXRhKSB7Ci0gICAgICAgIERy
YWdEYXRhIGRhdGEobV9kcmFnRGF0YS5nZXQoKSwgSW50UG9pbnQoKSwgSW50UG9pbnQoKSwgCi0g
ICAgICAgICAgICBEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgIERyYWdEYXRhIGRhdGEobV9k
cmFnRGF0YS5nZXQoKSwgSW50UG9pbnQoKSwgSW50UG9pbnQoKSwgeyB9KTsKICAgICAgICAgbV9w
YWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFeGl0ZWQoZGF0YSk7CiAgICAgICAgIG1fZHJhZ0Rh
dGEgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAppbmRleCAxODA2Njk4YTlh
ZDg0YmMyZjg4OGI1ZjJlZGMzMDNmOWU1YWE1ZjQ1Li43YjIyMTA0ZDk4ZTU3ZmMzNzc1MzM2ZDE5
Mjk5MzkzNTU4MjBjNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oCkBAIC01NTUsNyAr
NTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGVyZm9ybUxheWVyZWRXaW5kb3dVcGRhdGUo
KTsKIAotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24ga2V5U3RhdGVUb0RyYWdPcGVyYXRpb24o
RFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uPiBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0ZSkgY29uc3Q7
CiAKICAgICAvLyBGSVhNRTogVGhpcyB2YXJpYWJsZSBpcyBwYXJ0IG9mIGEgd29ya2Fyb3VuZC4g
VGhlIGRyb3AgZWZmZWN0IChwZHdFZmZlY3QpIHBhc3NlZCB0byBEcm9wIGlzIGluY29ycmVjdC4g
CiAgICAgLy8gV2Ugc2V0IHRoaXMgdmFyaWFibGUgaW4gRHJhZ0VudGVyIGFuZCBEcmFnT3ZlciBz
byB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIERyb3AgdG8gc2V0IHRoZSBjb3JyZWN0IGRyb3AgZWZm
ZWN0LiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401222</attachid>
            <date>2020-06-05 18:42:38 -0700</date>
            <delta_ts>2020-06-06 08:17:36 -0700</delta_ts>
            <desc>Patch for landing v2</desc>
            <filename>bug-212605-20200605184303.patch</filename>
            <type>text/plain</type>
            <size>138158</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFjZDc1Zjk5N2Q1NmE1MGE5OTkwZDY1
OTBjNzA3OTI4MGVjN2I4NGQuLjIxZTFjYjFlNjM3NWRmNDlmNGJiODlhNGY1N2ZkODU4OWE2ZmUz
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMDUgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGZv
ciBtYXNrIHZhbHVlcworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyNjA1PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogd3RmL09wdGlvblNl
dC5oOgorICAgICAgICAoV1RGOjpPcHRpb25TZXQ6Ok9wdGlvblNldCk6CisgICAgICAgIC0gQWRk
IGNvbnN0cnVjdG9yIGZvciBPcHRpb25TZXQoT3B0aW9uYWwpLgorCiAyMDIwLTA2LTA1ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVzZSBBVkFz
c2V0V3JpdGVyRGVsZWdhdGUgdG8gaW1wbGVtZW50IE1lZGlhUmVjb3JkZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAwZWMxYjg1OGYwMzllODJhMzk3ZThhNjA4Y2YyZGZiYWE3Nzk5NDA0Li5hOTQzOGU0NzgzZGMx
MjFhYTBkMDM0MjYyZjBjNGQwNDFiYTQxMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEyIEBA
CisyMDIwLTA2LTA1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAg
ICAgVXNlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBmb3IgbWFzayB2YWx1ZXMKKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjYwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KKworICAgICAgICBJbiBicm9hZCBzdHJva2VzOgorICAgICAgICAtIFJlcGxhY2Ug
dXNlIG9mIERyYWdPcGVyYXRpb24gd2l0aCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3IKKyAg
ICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPi4KKyAgICAgICAgLSBSZW5hbWUgZnVuY3Rp
b24gcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRvIGRlbm90ZSB1c2UKKyAgICAgICAg
ICBvZiBtYXNrIHZhbHVlcy4KKyAgICAgICAgLSBSZW1vdmUgRHJhZ09wZXJhdGlvbk5vbmUgZW51
bSB2YWx1ZS4KKyAgICAgICAgLSBSZXBsYWNlIERyYWdPcGVyYXRpb25FdmVyeSBlbnVtIHZhbHVl
IHdpdGggYW55RHJhZ09wZXJhdGlvbigpLgorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3ApOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQp
OgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wRnJvbUlFT3ApOgorICAgICAgICAoV2ViQ29yZTo6
SUVPcEZyb21EcmFnT3ApOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzb3VyY2VP
cGVyYXRpb24gY29uc3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6
OnNvdXJjZU9wZXJhdGlvbk1hc2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVyOjpkZXN0aW5hdGlvbk9wZXJhdGlvbiBjb25zdCk6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb25NYXNrIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0U291cmNlT3BlcmF0aW9uKTogUmVuYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6c2V0RGVzdGluYXRpb25PcGVyYXRpb24p
OiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNldERlc3RpbmF0aW9u
T3BlcmF0aW9uTWFzayk6CisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRhdGFUcmFuc2Zlcjo6c291cmNlT3BlcmF0aW9uIGNvbnN0KTogUmVuYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpzb3VyY2VPcGVyYXRpb25NYXNrIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6ZGVzdGluYXRpb25PcGVyYXRpb24gY29u
c3QpOiBSZW5hbWUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmRlc3RpbmF0aW9u
T3BlcmF0aW9uTWFzayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnNl
dFNvdXJjZU9wZXJhdGlvbik6IFJlbmFtZS4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zl
cjo6c2V0U291cmNlT3BlcmF0aW9uTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNm
ZXI6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKTogUmVuYW1lLgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVRyYW5zZmVyOjpzZXREZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2spOgorICAgICAgICAqIHBh
Z2UvRHJhZ0FjdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OmFueURyYWdPcGVyYXRpb24pOiBB
ZGQuCisgICAgICAgIChXVEY6OkVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4pOiBB
ZGQuCisgICAgICAgIChXVEY6Ok9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPik6IEFk
ZC4KKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29u
dHJvbGxlcjo6ZHJhZ1VwZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6
OnBlcmZvcm1EcmFnT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVy
OjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxl
cjo6dHJ5RG9jdW1lbnREcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpv
cGVyYXRpb25Gb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OmRlZmF1bHRPcGVyYXRpb25Gb3JE
cmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcpOgor
ICAgICAgICAtIENoYW5nZSBsb2dpYyB0byBjYWxsIGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKCkg
dG8gY29udmVydAorICAgICAgICAgIHRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2sgdG8gYSBz
aW5nbGUgb3BlcmF0aW9uIHdoZW4KKyAgICAgICAgICB0YXJnZXRSZXNwb25zZS5vcGVyYXRpb25N
YXNrIGJ1dCBkb2Vzbid0IGNvbnRhaW4gd2l0aCBhbnkKKyAgICAgICAgICBiaXQgdmFsdWVzIHNl
dCBpbiBzb3VyY2VPcGVyYXRpb25NYXNrLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyk6CisgICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdFbnRlcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6c291cmNlRHJhZ09wZXJhdGlvbiBjb25zdCk6IFJlbmFtZS4KKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpzb3VyY2VEcmFnT3BlcmF0aW9uTWFzayBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZE9yVXBkYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9uRm9yTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1lbnREcmFnKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDb250cm9sbGVyOjp0cnlESFRNTERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24pOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09w
ZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0RHJhZ09wZXJhdGlvblRvRHJvcFpv
bmVPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZmluZERyb3Bab25lKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnRW50ZXJPckRyYWdPdmVyRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFu
ZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJv
cCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVu
dCk6CisgICAgICAgICogcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24pOgorICAgICAgICAqIHBhZ2Uv
bWFjL0RyYWdDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xs
ZXI6OmRyYWdPcGVyYXRpb24pOgorICAgICAgICAqIHBhZ2Uvd2luL0RyYWdDb250cm9sbGVyV2lu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKToK
KyAgICAgICAgLSBDbGVhbiB1cCBjb21tZW50LgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdEYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vRHJhZ0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdEYXRhOjpEcmFnRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnRGF0YTo6ZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OkRyYWdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvR3RrVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omdka0RyYWdBY3Rpb25U
b0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJhdGlvblRvR2RrRHJh
Z0FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJh
Z0FjdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oOgorICAgICAg
ICAoV2ViQ29yZTo6Z2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpk
cmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vRHJhZ0RhdGFXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0RhdGE6OkRyYWdEYXRh
KToKKwogMjAyMC0wNi0wNSAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIE5vbi11bmlmaWVkIGJ1aWxkIGZpeGVzLCBlYXJseSBzdW1tZXIgMjAy
MCBlZGl0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhYTMzYWQ5MWFmOTlhYmVhOGE2OGYwZmI0MTY5ZTBmYWE4
NTY2OTIuLmVlNGEyY2IyMjkzMDA1YmU2OGU4YWY3MWVlYTgyMzdmNjE4MGM5MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTA1IEBACisyMDIwLTA2LTA1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBmb3IgbWFz
ayB2YWx1ZXMKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjYwNT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBJbiBicm9hZCBzdHJva2VzOgor
ICAgICAgICAtIFJlcGxhY2UgdXNlIG9mIERyYWdPcGVyYXRpb24gd2l0aCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4gb3IKKyAgICAgICAgICBPcHRpb25hbDxEcmFnT3BlcmF0aW9uPi4KKyAgICAg
ICAgLSBSZW5hbWUgZnVuY3Rpb24gcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRvIGRl
bm90ZSB1c2UKKyAgICAgICAgICBvZiBtYXNrIHZhbHVlcy4KKyAgICAgICAgLSBSZW1vdmUgRHJh
Z09wZXJhdGlvbk5vbmUgZW51bSB2YWx1ZS4KKyAgICAgICAgLSBSZXBsYWNlIERyYWdPcGVyYXRp
b25FdmVyeSBlbnVtIHZhbHVlIHdpdGggYW55RHJhZ09wZXJhdGlvbigpLgorCisgICAgICAgICog
UGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOgorICAgICAgICAoVUlEcmFnT3BlcmF0aW9uKToK
KyAgICAgICAgLSBSZW1vdmUgdW51c2VkIChhbmQgbWlzbmFtZWQpIFVJRHJhZ09wZXJhdGlvbiBl
bnVtIHR5cGVkZWYuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICh0eXBlc190aGF0X2Nhbm5vdF9iZV9mb3J3YXJkX2RlY2xhcmVkKToKKyAgICAgICAgKGhl
YWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAtIEFkZCBzdXBwb3J0IGZvciBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uIGVudW0uCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9u
c0ludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OmNvcmVEcmFnT3BlcmF0aW9uTWFzayk6IEFk
ZCBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6ZW5jb2Rl
KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxEcmFnRGF0YT46OmRlY29kZSk6CisgICAg
ICAgIC0gVXBkYXRlIHRvIGVuY29kZS9kZWNvZGUgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+Lgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZS5oOgorICAgICAgICAoV2Vi
S2l0OjpEcmFnU291cmNlOjpiZWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azMuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmFnU291cmNlOjpiZWdpbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpEcmFnU291cmNlOjpiZWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGsz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6OmxlYXZlVGltZXJGaXJlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
cm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6ZGlk
UGVyZm9ybUFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVN0
YXJ0RHJhZyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQ
cml2YXRlLmg6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyk6CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpzZW5kRHJhZ0VuZFRvUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpkcmFnZ2luZ0VudGVyZWQpOgorICAgICAgICAoV2ViS2l0OjpraXQpOiBBZGQgY29udmVy
c2lvbiBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRyYWdnaW5nVXBk
YXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFnZ2luZ0V4aXRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpwZXJmb3JtRHJhZ09wZXJhdGlvbik6CisgICAg
ICAgIC0gTWFrZSB1c2Ugb2YgY29yZURyYWdPcGVyYXRpb25NYXNrKCkgY29udmVyc2lvbiBmdW5j
dGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAtIFJlbW92ZSBNRVNTQUdFX0NIRUNLIG5vdyB0aGF0
IHdlJ3JlIHVzaW5nIHRoZSBhY3R1YWwgdHlwZS4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYWdFbmRl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzZXRDdXJyZW50RHJhZ0luZm9y
bWF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmFnRW5kZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y3VycmVudERyYWdPcGVyYXRpb24gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIChXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1E
cmFnQ29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJQYWdlUHJveHk6OlN0YXJ0RHJhZyk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZEhhbmRsZURyYWdTdGFydFJlcXVlc3Q6XSk6Cisg
ICAgICAgIChkcm9wT3BlcmF0aW9uRm9yV2ViQ29yZURyYWdPcGVyYXRpb24pOgorICAgICAgICAo
Y29yZURyYWdPcGVyYXRpb25Gb3JVSURyb3BPcGVyYXRpb24pOiBBZGQgY29udmVyc2lvbiBmdW5j
dGlvbi4KKyAgICAgICAgLSBOb3RlIHRoYXQgdGhpcyB3YXMgbm90IGJlaW5nIGNvbnZlcnRlZCBm
cm9tIFVJRHJvcE9wZXJhdGlvbiB0bworICAgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24g
cHJldmlvdXNseSwgYW5kIFVJRHJvcE9wZXJhdGlvbk1vdmUKKyAgICAgICAgICAoMHgzKSB3YXMg
bm90IGJlaW5nIHByb3Blcmx5IGNvbnZlcnRlZCB0byBEcmFnT3BlcmF0aW9uTW92ZQorICAgICAg
ICAgICgweDE2KS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkcmFnRGF0YUZvckRyb3BTZXNz
aW9uOmRyYWdEZXN0aW5hdGlvbkFjdGlvbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
ZGlkUGVyZm9ybURyYWdPcGVyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJh
Z0ludGVyYWN0aW9uOndpbGxBbmltYXRlTGlmdFdpdGhBbmltYXRvcjpzZXNzaW9uOl0pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGRyYWdJbnRlcmFjdGlvbjpzZXNzaW9uOmRpZEVuZFdpdGhP
cGVyYXRpb246XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZHJvcEludGVyYWN0aW9uOnNl
c3Npb25EaWRFbmQ6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRyYWdDbGllbnQ6OnN0
YXJ0RHJhZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmFnRW5kZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYWdFbmRlZCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgIChXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAoV2Vi
UGFnZTo6RHJhZ0VuZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRl
bXNGb3JEcmFnU2Vzc2lvbik6CisKIDIwMjAtMDYtMDUgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8g
IDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcywg
ZWFybHkgc3VtbWVyIDIwMjAgZWRpdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IDhjNTVmMjNlM2I0YjdjODZlNjAxMjljZmVlYmJiMzI0MDE5NzE1NTAuLjBhMWM3NzYxZGI4ZWJi
MGYwYWNlZGE1N2VlYThmMmVlMTNhYzMyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NSBAQAorMjAyMC0wNi0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sg
dmFsdWVzCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAg
ICAgICAgLSBSZXBsYWNlIHVzZSBvZiBEcmFnT3BlcmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdP
cGVyYXRpb24+IG9yCisgICAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAg
IC0gUmVuYW1lIGZ1bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5v
dGUgdXNlCisgICAgICAgICAgb2YgbWFzayB2YWx1ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdP
cGVyYXRpb25Ob25lIGVudW0gdmFsdWUuCisgICAgICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9u
RXZlcnkgZW51bSB2YWx1ZSB3aXRoIGFueURyYWdPcGVyYXRpb24oKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kcmFnU291cmNlRW5kZWRB
dDpvcGVyYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAg
ICAgKGtpdCk6IEFkZCBjb252ZXJzaW9uIGZ1bmN0aW9uLgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDpdKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgZHJhZ2dpbmdTZXNzaW9uOnNvdXJjZU9wZXJhdGlvbk1hc2tGb3JEcmFnZ2luZ0Nv
bnRleHQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoY29yZURy
YWdPcGVyYXRpb25NYXNrKTogQWRkIGNvbnZlcnNpb24gZnVuY3Rpb24uCisgICAgICAgIChraXQp
OiBEaXR0by4KKyAgICAgICAgLSBNYXAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMgdG8g
X1VJRHJhZ09wZXJhdGlvbk1vdmUKKyAgICAgICAgICBiYXNlZCBvbiBsb2dpYyBpbiBXZWJDb3Jl
LiAgQWxsIG90aGVyIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24KKyAgICAgICAgICBlbnVtIHZhbHVl
cyBtYXAgdG8gX1VJRHJhZ09wZXJhdGlvbk5vbmUuCisgICAgICAgICgtW1dlYlZpZXcgZHJhZ0Rh
dGFGb3JTZXNzaW9uOmNsaWVudDpnbG9iYWw6b3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJW
aWV3IF9lbnRlcmVkRGF0YUludGVyYWN0aW9uOmNsaWVudDpnbG9iYWw6b3BlcmF0aW9uOl0pOgor
ICAgICAgICAoLVtXZWJWaWV3IF91cGRhdGVkRGF0YUludGVyYWN0aW9uOmNsaWVudDpnbG9iYWw6
b3BlcmF0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBkcmFnZ2luZ1VwZGF0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcg
ZHJhZ2dpbmdFeGl0ZWQ6XSk6CisgICAgICAgICgtW1dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRp
b246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKENv
Y29hRHJhZ09wZXJhdGlvbik6CisgICAgICAgIC0gQWRkIHR5cGVkZWYgc28gY29yZURyYWdPcGVy
YXRpb25NYXNrKCkgbWF5IGJlIHNoYXJlZCBhY3Jvc3MKKyAgICAgICAgICBwbGF0Zm9ybXMuCisg
ICAgICAgIChjb3JlRHJhZ09wZXJhdGlvbk1hc2spOiBBZGQgZGVjbGFyYXRpb24uCisgICAgICAg
IChjb3JlT3B0aW9ucyk6CisgICAgICAgIC0gUmVtb3ZlIHJlZHVuZGFudCBwYXJhbWV0ZXIgbmFt
ZS4KKwogMjAyMC0wNi0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW0FwcGxlIFBheV0gUmVtb3ZlIGNvbmRpdGlvbmFscyBmb3IgRU5BQkxFX0FQUExFX1BBWV9T
RVNTSU9OX1YoM3w0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDY5Mjc1ZWU3M2Mx
NWU1ZmU5NzNiYzgxNTkwNzNiOGZkNDBiNmUxNTUuLjE3NDg1MTY1OGExY2IzYjRmNzNkNjIyOTE4
MWZjZjllYTQ5YTdmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OCBAQAorMjAyMC0wNi0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFVzZSBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZm9yIG1hc2sgdmFsdWVzCisgICAg
ICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTI2MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW4gYnJvYWQgc3Ryb2tlczoKKyAgICAgICAgLSBSZXBs
YWNlIHVzZSBvZiBEcmFnT3BlcmF0aW9uIHdpdGggT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9y
CisgICAgICAgICAgT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4uCisgICAgICAgIC0gUmVuYW1lIGZ1
bmN0aW9uIHBhcmFtZXRlcnMgYW5kIGxvY2FsIHZhcmlhYmxlcyB0byBkZW5vdGUgdXNlCisgICAg
ICAgICAgb2YgbWFzayB2YWx1ZXMuCisgICAgICAgIC0gUmVtb3ZlIERyYWdPcGVyYXRpb25Ob25l
IGVudW0gdmFsdWUuCisgICAgICAgIC0gUmVwbGFjZSBEcmFnT3BlcmF0aW9uRXZlcnkgZW51bSB2
YWx1ZSB3aXRoIGFueURyYWdPcGVyYXRpb24oKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkRyYWdDbGllbnQuY3BwOgorICAgICAgICAoZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
VG9EcmFnQ3Vyc29ycyk6CisgICAgICAgIChXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcpOgorICAg
ICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoZHJhZ09wZXJhdGlvblRvRHJhZ0N1cnNvcik6
CisgICAgICAgIChXZWJWaWV3OjprZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbiBjb25zdCk6CisgICAg
ICAgIChXZWJWaWV3OjpEcmFnTGVhdmUpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKyAgICAgICAg
KFdlYlZpZXc6OmtleVN0YXRlVG9EcmFnT3BlcmF0aW9uIGNvbnN0KToKKwogMjAyMC0wNi0wMSAg
RGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHVzZSBj
YXN0cyB0byBjb252ZXJ0IGJldHdlZW4gV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFu
ZCB7V2ViLFdLfURyYWdEZXN0aW5hdGlvbkFjdGlvbiB0eXBlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvT3B0aW9uU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaAppbmRleCAy
YWQ2OGZiNTMxNmQ3MDc5YzNmZGRiODRhNDk1YzVlMDU3Y2UwMzFiLi4yZGNmNDNjMmU2Mjk0ZGQy
MzJhMTIwMmZiMmVmYjAzNmQ4Y2VmNTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PcHRp
b25TZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PcHRpb25TZXQuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKQEAgLTE2NSw2ICsxNjYsMTEgQEAgcHVibGljOgogICAgICAgICB9
CiAgICAgfQogCisgICAgY29uc3RleHByIE9wdGlvblNldChPcHRpb25hbDxFPiBvcHRpb25hbCkK
KyAgICAgICAgOiBtX3N0b3JhZ2Uob3B0aW9uYWwgPyBzdGF0aWNfY2FzdDxTdG9yYWdlVHlwZT4o
Km9wdGlvbmFsKSA6IDApCisgICAgeworICAgIH0KKwogICAgIGNvbnN0ZXhwciBTdG9yYWdlVHlw
ZSB0b1JhdygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZTsgfQogCiAgICAgY29uc3RleHByIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3N0b3JhZ2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlci5jcHAKaW5kZXggOTA0YmRkOTM5MDVlNDZmYjIyYTU4MDZiNGFjNjEzMmJmYTNj
MDU2Ni4uODA1NjQwNjQyNjY4NWNmNGIyZjZkZTRlMTgzZWJiOWRhNGFmMWQyMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDg5LDE4ICs0ODksMTgg
QEAgUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcmFnU3RhcnRFdmVu
dChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICByZXR1cm4gZGF0YVRyYW5zZmVyOwogfQog
Ci1SZWY8RGF0YVRyYW5zZmVyPiBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvckRyb3AoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJk
LCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVm
PERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2FyZCwgT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJhZ2dpbmdG
aWxlcykKIHsKICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IGFkb3B0UmVmKCpuZXcgRGF0YVRyYW5z
ZmVyKERhdGFUcmFuc2Zlcjo6U3RvcmVNb2RlOjpSZWFkb25seSwgV1RGTW92ZShwYXN0ZWJvYXJk
KSwgZHJhZ2dpbmdGaWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5k
RHJvcERhdGEpKTsKLSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VP
cGVyYXRpb24pOworICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFzayhzb3Vy
Y2VPcGVyYXRpb25NYXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9
IGRvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRh
dGFUcmFuc2ZlcjsKIH0KIAotUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVyOjpjcmVhdGVG
b3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJh
dGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorUmVmPERhdGFUcmFuc2Zlcj4gRGF0YVRyYW5zZmVy
OjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBPcHRpb25TZXQ8RHJhZ09w
ZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgYm9vbCBkcmFnZ2luZ0ZpbGVzKQogewogICAg
IGF1dG8gZGF0YVRyYW5zZmVyID0gYWRvcHRSZWYoKm5ldyBEYXRhVHJhbnNmZXIoRGF0YVRyYW5z
ZmVyOjpTdG9yZU1vZGU6OlByb3RlY3RlZCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgZHJhZ2dpbmdG
aWxlcyA/IFR5cGU6OkRyYWdBbmREcm9wRmlsZXMgOiBUeXBlOjpEcmFnQW5kRHJvcERhdGEpKTsK
LSAgICBkYXRhVHJhbnNmZXItPnNldFNvdXJjZU9wZXJhdGlvbihzb3VyY2VPcGVyYXRpb24pOwor
ICAgIGRhdGFUcmFuc2Zlci0+c2V0U291cmNlT3BlcmF0aW9uTWFzayhzb3VyY2VPcGVyYXRpb25N
YXNrKTsKICAgICBkYXRhVHJhbnNmZXItPm1fb3JpZ2luSWRlbnRpZmllciA9IGRvY3VtZW50Lm9y
aWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJkKCk7CiAgICAgcmV0dXJuIGRhdGFUcmFuc2ZlcjsK
IH0KQEAgLTU5Niw3NCArNTk2LDc0IEBAIHZvaWQgRHJhZ0ltYWdlTG9hZGVyOjppbWFnZUNoYW5n
ZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KikKICAgICBtX2RhdGFUcmFuc2Zlci0+dXBk
YXRlRHJhZ0ltYWdlKCk7CiB9CiAKLXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRyYWdPcEZyb21JRU9w
KGNvbnN0IFN0cmluZyYgb3BlcmF0aW9uKQorc3RhdGljIE9wdGlvblNldDxEcmFnT3BlcmF0aW9u
PiBkcmFnT3BGcm9tSUVPcChjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHsKICAgICBpZiAob3Bl
cmF0aW9uID09ICJ1bmluaXRpYWxpemVkIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25F
dmVyeTsKKyAgICAgICAgcmV0dXJuIGFueURyYWdPcGVyYXRpb24oKTsKICAgICBpZiAob3BlcmF0
aW9uID09ICJub25lIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAg
ICByZXR1cm4geyB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImNvcHkiKQotICAgICAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgICAgIHJldHVybiB7IERyYWdPcGVyYXRpb25Db3B5
IH07CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAibGluayIpCi0gICAgICAgIHJldHVybiBEcmFnT3Bl
cmF0aW9uTGluazsKKyAgICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkxpbmsgfTsKICAgICBp
ZiAob3BlcmF0aW9uID09ICJtb3ZlIikKLSAgICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShE
cmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAgICAgICAgcmV0dXJu
IHsgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07CiAgICAgaWYgKG9w
ZXJhdGlvbiA9PSAiY29weUxpbmsiKQotICAgICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pKERy
YWdPcGVyYXRpb25Db3B5IHwgRHJhZ09wZXJhdGlvbkxpbmspOworICAgICAgICByZXR1cm4geyBE
cmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxpbmsgfTsKICAgICBpZiAob3BlcmF0aW9u
ID09ICJjb3B5TW92ZSIpCi0gICAgICAgIHJldHVybiAoRHJhZ09wZXJhdGlvbikoRHJhZ09wZXJh
dGlvbkNvcHkgfCBEcmFnT3BlcmF0aW9uR2VuZXJpYyB8IERyYWdPcGVyYXRpb25Nb3ZlKTsKKyAg
ICAgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvbkNvcHksIERyYWdPcGVyYXRpb25HZW5lcmljLCBE
cmFnT3BlcmF0aW9uTW92ZSB9OwogICAgIGlmIChvcGVyYXRpb24gPT0gImxpbmtNb3ZlIikKLSAg
ICAgICAgcmV0dXJuIChEcmFnT3BlcmF0aW9uKShEcmFnT3BlcmF0aW9uTGluayB8IERyYWdPcGVy
YXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUpOworICAgICAgICByZXR1cm4geyBEcmFn
T3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH07
CiAgICAgaWYgKG9wZXJhdGlvbiA9PSAiYWxsIikKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b25FdmVyeTsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlvblByaXZhdGU7IC8vIHJlYWxseSBhIG1h
cmtlciBmb3IgIm5vIGNvbnZlcnNpb24iCisgICAgICAgIHJldHVybiBhbnlEcmFnT3BlcmF0aW9u
KCk7CisgICAgcmV0dXJuIHsgRHJhZ09wZXJhdGlvblByaXZhdGUgfTsgLy8gUmVhbGx5IGEgbWFy
a2VyIGZvciAibm8gY29udmVyc2lvbiIuCiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBJRU9wRnJv
bURyYWdPcChEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKK3N0YXRpYyBjb25zdCBjaGFyKiBJRU9w
RnJvbURyYWdPcChPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKLSAg
ICBib29sIGlzR2VuZXJpY01vdmUgPSBvcGVyYXRpb24gJiAoRHJhZ09wZXJhdGlvbkdlbmVyaWMg
fCBEcmFnT3BlcmF0aW9uTW92ZSk7CisgICAgYm9vbCBpc0dlbmVyaWNNb3ZlID0gb3BlcmF0aW9u
TWFzay5jb250YWluc0FueSh7IERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uTW92
ZSB9KTsKIAotICAgIGlmICgoaXNHZW5lcmljTW92ZSAmJiAob3BlcmF0aW9uICYgRHJhZ09wZXJh
dGlvbkNvcHkpICYmIChvcGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykpIHx8IG9wZXJhdGlv
biA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYgKChpc0dlbmVyaWNNb3ZlICYmIG9wZXJh
dGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxp
bmsgfSkpIHx8IG9wZXJhdGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uQ29weSwg
RHJhZ09wZXJhdGlvbkxpbmssIERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uUHJp
dmF0ZSwgRHJhZ09wZXJhdGlvbk1vdmUsIERyYWdPcGVyYXRpb25EZWxldGUgfSkpCiAgICAgICAg
IHJldHVybiAiYWxsIjsKLSAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiAob3BlcmF0aW9uICYgRHJh
Z09wZXJhdGlvbkNvcHkpKQorICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2su
Y29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICByZXR1cm4gImNvcHlNb3ZlIjsK
LSAgICBpZiAoaXNHZW5lcmljTW92ZSAmJiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkxpbmsp
KQorICAgIGlmIChpc0dlbmVyaWNNb3ZlICYmIG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09w
ZXJhdGlvbkxpbmspKQogICAgICAgICByZXR1cm4gImxpbmtNb3ZlIjsKLSAgICBpZiAoKG9wZXJh
dGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KSAmJiAob3BlcmF0aW9uICYgRHJhZ09wZXJhdGlvbkxp
bmspKQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zQWxsKHsgRHJhZ09wZXJhdGlvbkNv
cHksIERyYWdPcGVyYXRpb25MaW5rIH0pKQogICAgICAgICByZXR1cm4gImNvcHlMaW5rIjsKICAg
ICBpZiAoaXNHZW5lcmljTW92ZSkKICAgICAgICAgcmV0dXJuICJtb3ZlIjsKLSAgICBpZiAob3Bl
cmF0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFp
bnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICByZXR1cm4gImNvcHkiOwotICAgIGlmIChv
cGVyYXRpb24gJiBEcmFnT3BlcmF0aW9uTGluaykKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250
YWlucyhEcmFnT3BlcmF0aW9uTGluaykpCiAgICAgICAgIHJldHVybiAibGluayI7CiAgICAgcmV0
dXJuICJub25lIjsKIH0KIAotRHJhZ09wZXJhdGlvbiBEYXRhVHJhbnNmZXI6OnNvdXJjZU9wZXJh
dGlvbigpIGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gRGF0YVRyYW5zZmVyOjpzb3Vy
Y2VPcGVyYXRpb25NYXNrKCkgY29uc3QKIHsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9
IGRyYWdPcEZyb21JRU9wKG1fZWZmZWN0QWxsb3dlZCk7Ci0gICAgQVNTRVJUKG9wZXJhdGlvbiAh
PSBEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7Ci0gICAgcmV0dXJuIG9wZXJhdGlvbjsKKyAgICBhdXRv
IG9wZXJhdGlvbk1hc2sgPSBkcmFnT3BGcm9tSUVPcChtX2VmZmVjdEFsbG93ZWQpOworICAgIEFT
U0VSVChvcGVyYXRpb25NYXNrICE9IERyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICByZXR1cm4g
b3BlcmF0aW9uTWFzazsKIH0KIAotRHJhZ09wZXJhdGlvbiBEYXRhVHJhbnNmZXI6OmRlc3RpbmF0
aW9uT3BlcmF0aW9uKCkgY29uc3QKK09wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBEYXRhVHJhbnNm
ZXI6OmRlc3RpbmF0aW9uT3BlcmF0aW9uTWFzaygpIGNvbnN0CiB7Ci0gICAgRHJhZ09wZXJhdGlv
biBvcGVyYXRpb24gPSBkcmFnT3BGcm9tSUVPcChtX2Ryb3BFZmZlY3QpOwotICAgIEFTU0VSVChv
cGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkNvcHkgfHwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRp
b25Ob25lIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTGluayB8fCBvcGVyYXRpb24gPT0g
KERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5lcmljIHwgRHJhZ09wZXJhdGlvbk1vdmUp
IHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpOwotICAgIHJldHVybiBvcGVyYXRp
b247CisgICAgYXV0byBvcGVyYXRpb25NYXNrID0gZHJhZ09wRnJvbUlFT3AobV9kcm9wRWZmZWN0
KTsKKyAgICBBU1NFUlQob3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVy
YXRpb25NYXNrLmlzRW1wdHkoKSB8fCBvcGVyYXRpb25NYXNrID09IERyYWdPcGVyYXRpb25MaW5r
IHx8IG9wZXJhdGlvbk1hc2sgPT0gT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KHsgRHJhZ09wZXJh
dGlvbkdlbmVyaWMsIERyYWdPcGVyYXRpb25Nb3ZlIH0pIHx8IG9wZXJhdGlvbk1hc2sgPT0gYW55
RHJhZ09wZXJhdGlvbigpKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uTWFzazsKIH0KIAotdm9pZCBE
YXRhVHJhbnNmZXI6OnNldFNvdXJjZU9wZXJhdGlvbihEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikK
K3ZvaWQgRGF0YVRyYW5zZmVyOjpzZXRTb3VyY2VPcGVyYXRpb25NYXNrKE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBvcGVyYXRpb25NYXNrKQogewotICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uLCBv
cGVyYXRpb24gIT0gRHJhZ09wZXJhdGlvblByaXZhdGUpOwotICAgIG1fZWZmZWN0QWxsb3dlZCA9
IElFT3BGcm9tRHJhZ09wKG9wZXJhdGlvbik7CisgICAgQVNTRVJUX0FSRyhvcGVyYXRpb25NYXNr
LCBvcGVyYXRpb25NYXNrICE9IERyYWdPcGVyYXRpb25Qcml2YXRlKTsKKyAgICBtX2VmZmVjdEFs
bG93ZWQgPSBJRU9wRnJvbURyYWdPcChvcGVyYXRpb25NYXNrKTsKIH0KIAotdm9pZCBEYXRhVHJh
bnNmZXI6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uKERyYWdPcGVyYXRpb24gb3BlcmF0aW9uKQor
dm9pZCBEYXRhVHJhbnNmZXI6OnNldERlc3RpbmF0aW9uT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8
RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaykKIHsKLSAgICBBU1NFUlRfQVJHKG9wZXJhdGlv
biwgb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Db3B5IHx8IG9wZXJhdGlvbiA9PSBEcmFnT3Bl
cmF0aW9uTm9uZSB8fCBvcGVyYXRpb24gPT0gRHJhZ09wZXJhdGlvbkxpbmsgfHwgb3BlcmF0aW9u
ID09IERyYWdPcGVyYXRpb25HZW5lcmljIHx8IG9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uTW92
ZSB8fCBvcGVyYXRpb24gPT0gKERyYWdPcGVyYXRpb24pKERyYWdPcGVyYXRpb25HZW5lcmljIHwg
RHJhZ09wZXJhdGlvbk1vdmUpKTsKLSAgICBtX2Ryb3BFZmZlY3QgPSBJRU9wRnJvbURyYWdPcChv
cGVyYXRpb24pOworICAgIEFTU0VSVF9BUkcob3BlcmF0aW9uTWFzaywgb3BlcmF0aW9uTWFzayA9
PSBEcmFnT3BlcmF0aW9uQ29weSB8fCBvcGVyYXRpb25NYXNrLmlzRW1wdHkoKSB8fCBvcGVyYXRp
b25NYXNrID09IERyYWdPcGVyYXRpb25MaW5rIHx8IG9wZXJhdGlvbk1hc2sgPT0gRHJhZ09wZXJh
dGlvbkdlbmVyaWMgfHwgb3BlcmF0aW9uTWFzayA9PSBEcmFnT3BlcmF0aW9uTW92ZSB8fCBvcGVy
YXRpb25NYXNrID09IE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPih7IERyYWdPcGVyYXRpb25HZW5l
cmljLCBEcmFnT3BlcmF0aW9uTW92ZSB9KSk7CisgICAgbV9kcm9wRWZmZWN0ID0gSUVPcEZyb21E
cmFnT3Aob3BlcmF0aW9uTWFzayk7CiB9CiAKIFN0cmluZyBEYXRhVHJhbnNmZXI6OmRyb3BFZmZl
Y3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCmluZGV4IGU1Y2ZhZjg1NmZiMjg4
M2ZjMTU0ZGRjODhiMGQ3NzIzYmM5ODhiMDQuLjNjY2NmNjdhYzVhZWQzZmQxOWM5NWIwZDQzMWQx
OTA1OWQyYzBjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTIsNyArMiw3IEBA
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqIENv
cHlyaWdodCAoQykgMjAwMSBUb2JpYXMgQW50b24gKGFudG9uQHN0dWQuZmJpLmZoLWRhcm1zdGFk
dC5kZSkKICAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdt
YWlsLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODgsMTUgKzg4LDE1IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHN0YXRpYyBSZWY8RGF0YVRyYW5z
ZmVyPiBjcmVhdGVGb3JEcmFnKCk7CiAgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0
ZUZvckRyYWdTdGFydEV2ZW50KGNvbnN0IERvY3VtZW50Jik7Ci0gICAgc3RhdGljIFJlZjxEYXRh
VHJhbnNmZXI+IGNyZWF0ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4mJiwgRHJhZ09wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKTsKLSAgICBz
dGF0aWMgUmVmPERhdGFUcmFuc2Zlcj4gY3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KGNvbnN0
IERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24s
IGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgc3RhdGljIFJlZjxEYXRhVHJhbnNmZXI+IGNyZWF0
ZUZvckRyb3AoY29uc3QgRG9jdW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIHN0YXRp
YyBSZWY8RGF0YVRyYW5zZmVyPiBjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQoY29uc3QgRG9j
dW1lbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogCiAgICAgYm9vbCBkcm9wRWZmZWN0SXNVbmlu
aXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9kcm9wRWZmZWN0ID09ICJ1bmluaXRpYWxpemVk
IjsgfQogCi0gICAgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb24oKSBjb25zdDsKLSAgICBE
cmFnT3BlcmF0aW9uIGRlc3RpbmF0aW9uT3BlcmF0aW9uKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRT
b3VyY2VPcGVyYXRpb24oRHJhZ09wZXJhdGlvbik7Ci0gICAgdm9pZCBzZXREZXN0aW5hdGlvbk9w
ZXJhdGlvbihEcmFnT3BlcmF0aW9uKTsKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291
cmNlT3BlcmF0aW9uTWFzaygpIGNvbnN0OworICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBk
ZXN0aW5hdGlvbk9wZXJhdGlvbk1hc2soKSBjb25zdDsKKyAgICB2b2lkIHNldFNvdXJjZU9wZXJh
dGlvbk1hc2soT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKKyAgICB2b2lkIHNldERlc3RpbmF0
aW9uT3BlcmF0aW9uTWFzayhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4pOwogCiAgICAgdm9pZCBz
ZXREcmFnSGFzU3RhcnRlZCgpIHsgbV9zaG91bGRVcGRhdGVEcmFnSW1hZ2UgPSB0cnVlOyB9CiAg
ICAgRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYgZHJhZ0xvY2F0aW9uKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0FjdGlvbnMuaAppbmRleCBhOTIzY2FlNThjYmY1ZjY1YmVj
YzdlOTIzZjJkMzgwN2IyZTgzZWJkLi5mM2RkM2U1ZWEzOWQyZjJjZjBkZDI3YjZhNTk1NzU1MGQw
ZTYyMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdBY3Rpb25zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQWN0aW9ucy5oCkBAIC02MCwxNyArNjAsMjAgQEAg
dHlwZWRlZiBlbnVtIHsKICAgICBEcmFnU291cmNlQWN0aW9uQW55ICAgICAgICAgID0gVUlOVF9N
QVgKIH0gRHJhZ1NvdXJjZUFjdGlvbjsKIAotLy8gTWF0Y2hlcyBOU0RyYWdPcGVyYXRpb24uCi10
eXBlZGVmIGVudW0gewotICAgIERyYWdPcGVyYXRpb25Ob25lICAgID0gMCwKKy8vIFNlZSBOU0Ry
YWdPcGVyYXRpb24sIF9VSURyYWdPcGVyYXRpb24gYW5kIFVJRHJvcE9wZXJhdGlvbi4KK2VudW0g
RHJhZ09wZXJhdGlvbiB7CiAgICAgRHJhZ09wZXJhdGlvbkNvcHkgICAgPSAxLAogICAgIERyYWdP
cGVyYXRpb25MaW5rICAgID0gMiwKICAgICBEcmFnT3BlcmF0aW9uR2VuZXJpYyA9IDQsCiAgICAg
RHJhZ09wZXJhdGlvblByaXZhdGUgPSA4LAogICAgIERyYWdPcGVyYXRpb25Nb3ZlICAgID0gMTYs
CiAgICAgRHJhZ09wZXJhdGlvbkRlbGV0ZSAgPSAzMiwKLSAgICBEcmFnT3BlcmF0aW9uRXZlcnkg
ICA9IFVJTlRfTUFYCi19IERyYWdPcGVyYXRpb247Cit9OworCitjb25zdGV4cHIgT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+IGFueURyYWdPcGVyYXRpb24oKQoreworICAgIHJldHVybiB7IERyYWdP
cGVyYXRpb25Db3B5LCBEcmFnT3BlcmF0aW9uTGluaywgRHJhZ09wZXJhdGlvbkdlbmVyaWMsIERy
YWdPcGVyYXRpb25Qcml2YXRlLCBEcmFnT3BlcmF0aW9uTW92ZSwgRHJhZ09wZXJhdGlvbkRlbGV0
ZSB9OworfQogCiBlbnVtIGNsYXNzIE1heUV4dGVuZERyYWdTZXNzaW9uIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKIGVudW0gY2xhc3MgSGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhIDogYm9vbCB7IE5v
LCBZZXMgfTsKQEAgLTkzLDYgKzk2LDE4IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kPiB7CiAgICAgPjsKIH07CiAKK3RlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sCisgICAg
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5LAorICAgICAgICBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMsCisgICAg
ICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlLAorICAgICAgICBXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uTW92ZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZQorICAg
ID47Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBPcHRpb25TZXRUcmFpdHM8V2ViQ29yZTo6RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uPiB7CiAgICAgdXNpbmcgdmFsdWVzID0gT3B0aW9uU2V0VmFsdWVz
PAogICAgICAgICBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sCkBAIC0xMDIsNCArMTE3
LDE2IEBAIHRlbXBsYXRlPD4gc3RydWN0IE9wdGlvblNldFRyYWl0czxXZWJDb3JlOjpEcmFnRGVz
dGluYXRpb25BY3Rpb24+IHsKICAgICA+OwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgT3B0aW9u
U2V0VHJhaXRzPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBP
cHRpb25TZXRWYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sCisgICAgICAg
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5LAorICAgICAgICBXZWJDb3JlOjpEcmFnT3BlcmF0
aW9uTGluaywKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkdlbmVyaWMsCisgICAgICAg
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlLAorICAgICAgICBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uTW92ZSwKKyAgICAgICAgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkRlbGV0ZQorICAgID47
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKaW5kZXggNDE5M2Q0ZDVkNGU0NmIyZWYyZTE5MzBhYzk3YTUxMmM5NDgyMjU2MS4uYmZi
YTkwODg0NmNhYjMzOWQzZmViY2FlZDQxODVlOTVjZTlmZjllOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIERyYWdDb250cm9s
bGVyOjpkcmFnRW5kZWQoKQogICAgIGNsaWVudCgpLmRyYWdFbmRlZCgpOwogfQogCi1EcmFnT3Bl
cmF0aW9uIERyYWdDb250cm9sbGVyOjpkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0Rh
dGEpCitPcHRpb25hbDxEcmFnT3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWQo
Y29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIHJldHVybiBkcmFnRW50ZXJlZE9yVXBk
YXRlZChkcmFnRGF0YSk7CiB9CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBEcmFnQ29udHJvbGxl
cjo6ZHJhZ0V4aXRlZChjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgbV9maWxlSW5wdXRF
bGVtZW50VW5kZXJNb3VzZSA9IG51bGxwdHI7CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRy
b2xsZXI6OmRyYWdVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09wdGlvbmFsPERy
YWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiB7CiAgICAgcmV0dXJuIGRyYWdFbnRlcmVkT3JVcGRhdGVkKGRyYWdEYXRhKTsK
IH0KQEAgLTI3OCw3ICsyNzgsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09w
ZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgbV9kb2N1bWVudFVuZGVyTW91
c2UgPSBudWxscHRyOwogICAgIGNsZWFyRHJhZ0NhcmV0KCk7CiAKLSAgICBpZiAob3BlcmF0aW9u
Rm9yTG9hZChkcmFnRGF0YSkgPT0gRHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKCFvcGVyYXRp
b25Gb3JMb2FkKGRyYWdEYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byB1
cmxTdHJpbmcgPSBkcmFnRGF0YS5hc1VSTCgpOwpAQCAtMzA0LDIxICszMDQsMjEgQEAgdm9pZCBE
cmFnQ29udHJvbGxlcjo6bW91c2VNb3ZlZEludG9Eb2N1bWVudChEb2N1bWVudCogbmV3RG9jdW1l
bnQpCiAgICAgbV9kb2N1bWVudFVuZGVyTW91c2UgPSBuZXdEb2N1bWVudDsKIH0KIAotRHJhZ09w
ZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6ZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0Rh
dGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6OmRy
YWdFbnRlcmVkT3JVcGRhdGVkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICBtb3Vz
ZU1vdmVkSW50b0RvY3VtZW50KG1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJh
Z0RhdGEuY2xpZW50UG9zaXRpb24oKSkpOwogCiAgICAgbV9kcmFnRGVzdGluYXRpb25BY3Rpb25N
YXNrID0gZHJhZ0RhdGEuZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaygpOwogICAgIGlmIChtX2Ry
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2suaXNFbXB0eSgpKSB7CiAgICAgICAgIGNsZWFyRHJhZ0Nh
cmV0KCk7IC8vIEZJWE1FOiBXaHkgbm90IGNhbGwgbW91c2VNb3ZlZEludG9Eb2N1bWVudChudWxs
cHRyKT8KLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgIH0KIAotICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiA9
IERyYWdPcGVyYXRpb25Ob25lOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdPcGVy
YXRpb247CiAgICAgbV9kcmFnSGFuZGxpbmdNZXRob2QgPSB0cnlEb2N1bWVudERyYWcoZHJhZ0Rh
dGEsIG1fZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzaywgZHJhZ09wZXJhdGlvbik7CiAgICAgaWYg
KG1fZHJhZ0hhbmRsaW5nTWV0aG9kID09IERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSAmJiAobV9k
cmFnRGVzdGluYXRpb25BY3Rpb25NYXNrLmNvbnRhaW5zKERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6
TG9hZCkpKSB7CiAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBvcGVyYXRpb25Gb3JMb2FkKGRyYWdE
YXRhKTsKLSAgICAgICAgaWYgKGRyYWdPcGVyYXRpb24gIT0gRHJhZ09wZXJhdGlvbk5vbmUpCisg
ICAgICAgIGlmIChkcmFnT3BlcmF0aW9uKQogICAgICAgICAgICAgbV9kcmFnSGFuZGxpbmdNZXRo
b2QgPSBEcmFnSGFuZGxpbmdNZXRob2Q6OlBhZ2VMb2FkOwogICAgIH0gZWxzZSBpZiAobV9kcmFn
SGFuZGxpbmdNZXRob2QgPT0gRHJhZ0hhbmRsaW5nTWV0aG9kOjpTZXRDb2xvcikKICAgICAgICAg
ZHJhZ09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZv
aWQgRHJhZ0NvbnRyb2xsZXI6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVyc0ZvckRyYWdI
YW5kbGluZ01ldGhvZChEcmFnSGFuCiAKICNlbmRpZgogCi1EcmFnSGFuZGxpbmdNZXRob2QgRHJh
Z0NvbnRyb2xsZXI6OnRyeURvY3VtZW50RHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9w
dGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaywgRHJh
Z09wZXJhdGlvbiYgZHJhZ09wZXJhdGlvbikKK0RyYWdIYW5kbGluZ01ldGhvZCBEcmFnQ29udHJv
bGxlcjo6dHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0aW9uU2V0
PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrLCBPcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiYgZHJhZ09wZXJhdGlvbikKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRVbmRl
ck1vdXNlKQogICAgICAgICByZXR1cm4gRHJhZ0hhbmRsaW5nTWV0aG9kOjpOb25lOwpAQCAtNDU4
LDcgKzQ1OCw3IEBAIERyYWdIYW5kbGluZ01ldGhvZCBEcmFnQ29udHJvbGxlcjo6dHJ5RG9jdW1l
bnREcmFnKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSwgT3B0CiAgICAgICAgICAgICAgICAgbV9u
dW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkID0gMTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKCFtX251bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQpCi0gICAgICAgICAgICAgICAgZHJhZ09w
ZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRp
b24gPSBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBtX2ZpbGVJbnB1dEVsZW1lbnRVbmRlck1v
dXNlLT5zZXRDYW5SZWNlaXZlRHJvcHBlZEZpbGVzKG1fbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRl
ZCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBhcmUgbm90IG92ZXIgYSBm
aWxlIGlucHV0IGVsZW1lbnQuIFRoZSBkcmFnZ2VkIGl0ZW0ocykgd2lsbCBsb2FkZWQgaW50byB0
aGUgdmlldywKQEAgLTQ4OSw3ICs0ODksNyBAQCBEcmFnU291cmNlQWN0aW9uIERyYWdDb250cm9s
bGVyOjpkZWxlZ2F0ZURyYWdTb3VyY2VBY3Rpb24oY29uc3QgSW50UG9pbnQmIHJvb3RWaQogICAg
IHJldHVybiBtX2RyYWdTb3VyY2VBY3Rpb247CiB9CiAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRy
b2xsZXI6Om9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9u
YWw8RHJhZ09wZXJhdGlvbj4gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQoY29uc3Qg
RHJhZ0RhdGEmIGRyYWdEYXRhKQogewogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFnZS5t
YWluRnJhbWUoKS5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSk7CiAK
QEAgLTUwNCw3ICs1MDQsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRp
b25Gb3JMb2FkKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICB9CiAKICAgICBpZiAoZG9j
dW1lbnQgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IChpczxQbHVnaW5Eb2N1bWVudD4oKmRvY3Vt
ZW50KSAmJiAhcGx1Z2luRG9jdW1lbnRBY2NlcHRzRHJhZ3MpIHx8IGRvY3VtZW50LT5oYXNFZGl0
YWJsZVN0eWxlKCkpKQotICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb24oZHJhZ0RhdGEp
OwogfQogCkBAIC02OTMsMjggKzY5MywyOCBAQCBib29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9j
ZXNzRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXN0YXRpYyBEcmFnT3BlcmF0aW9uIGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKERyYWdPcGVyYXRp
b24gc3JjT3BNYXNrKQorc3RhdGljIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRlZmF1bHRPcGVy
YXRpb25Gb3JEcmFnKE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNr
KQogewogICAgIC8vIFRoaXMgaXMgZGVzaWduZWQgdG8gbWF0Y2ggSUUncyBvcGVyYXRpb24gZmFs
bGJhY2sgZm9yIHRoZSBjYXNlIHdoZXJlCiAgICAgLy8gdGhlIHBhZ2UgY2FsbHMgcHJldmVudERl
ZmF1bHQoKSBpbiBhIGRyYWcgZXZlbnQgYnV0IGRvZXNuJ3Qgc2V0IGRyb3BFZmZlY3QuCi0gICAg
aWYgKHNyY09wTWFzayA9PSBEcmFnT3BlcmF0aW9uRXZlcnkpCisgICAgaWYgKHNvdXJjZU9wZXJh
dGlvbk1hc2suY29udGFpbnNBbGwoeyBEcmFnT3BlcmF0aW9uQ29weSwgRHJhZ09wZXJhdGlvbkxp
bmssIERyYWdPcGVyYXRpb25HZW5lcmljLCBEcmFnT3BlcmF0aW9uUHJpdmF0ZSwgRHJhZ09wZXJh
dGlvbk1vdmUsIERyYWdPcGVyYXRpb25EZWxldGUgfSkpCiAgICAgICAgIHJldHVybiBEcmFnT3Bl
cmF0aW9uQ29weTsKLSAgICBpZiAoc3JjT3BNYXNrID09IERyYWdPcGVyYXRpb25Ob25lKQotICAg
ICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdP
cGVyYXRpb25Nb3ZlKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBpZiAoc291cmNlT3BlcmF0aW9uTWFzay5j
b250YWlucyhEcmFnT3BlcmF0aW9uTW92ZSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9u
TW92ZTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAgaWYg
KHNvdXJjZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkdlbmVyaWMpKQogICAg
ICAgICByZXR1cm4gRHJhZ0NvbnRyb2xsZXI6OnBsYXRmb3JtR2VuZXJpY0RyYWdPcGVyYXRpb24o
KTsKLSAgICBpZiAoc3JjT3BNYXNrICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgaWYgKHNvdXJj
ZU9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICByZXR1
cm4gRHJhZ09wZXJhdGlvbkNvcHk7Ci0gICAgaWYgKHNyY09wTWFzayAmIERyYWdPcGVyYXRpb25M
aW5rKQorICAgIGlmIChzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25M
aW5rKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25MaW5rOwogICAgIAogICAgIC8vIEZJ
WE1FOiBEb2VzIElFIHJlYWxseSByZXR1cm4gImdlbmVyaWMiIGV2ZW4gaWYgbm8gb3BlcmF0aW9u
cyB3ZXJlIGFsbG93ZWQgYnkgdGhlIHNvdXJjZT8KICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkdl
bmVyaWM7CiB9CiAKLWJvb2wgRHJhZ0NvbnRyb2xsZXI6OnRyeURIVE1MRHJhZyhjb25zdCBEcmFn
RGF0YSYgZHJhZ0RhdGEsIERyYWdPcGVyYXRpb24mIG9wZXJhdGlvbikKK2Jvb2wgRHJhZ0NvbnRy
b2xsZXI6OnRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEsIE9wdGlvbmFsPERy
YWdPcGVyYXRpb24+JiBvcGVyYXRpb24pCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnRVbmRlck1v
dXNlKTsKICAgICBSZWY8RnJhbWU+IG1haW5GcmFtZShtX3BhZ2UubWFpbkZyYW1lKCkpOwpAQCAt
NzIyLDE3ICs3MjIsMTkgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6dHJ5REhUTUxEcmFnKGNvbnN0
IERyYWdEYXRhJiBkcmFnRGF0YSwgRHJhZ09wZXJhdGlvbiYgb3BlcmEKICAgICBpZiAoIXZpZXdQ
cm90ZWN0b3IpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIERyYWdPcGVyYXRpb24gc291
cmNlT3BlcmF0aW9uID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7Ci0g
ICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRl
RHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFsmZHJhZ0RhdGFdKCkgeyBy
ZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEpOyB9LCBzb3Vy
Y2VPcGVyYXRpb24sIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7CisgICAgYXV0byBzb3VyY2VP
cGVyYXRpb25NYXNrID0gZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCk7Cisg
ICAgYXV0byB0YXJnZXRSZXNwb25zZSA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRl
RHJhZ0FuZERyb3AoY3JlYXRlTW91c2VFdmVudChkcmFnRGF0YSksIFsmZHJhZ0RhdGFdKCkgewor
ICAgICAgICByZXR1cm4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3AoZHJhZ0RhdGEp
OworICAgIH0sIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdEYXRhLmNvbnRhaW5zRmlsZXMoKSk7
CiAgICAgaWYgKCF0YXJnZXRSZXNwb25zZS5hY2NlcHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmICghdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uKQotICAgICAgICBvcGVyYXRpb24g
PSBkZWZhdWx0T3BlcmF0aW9uRm9yRHJhZyhzb3VyY2VPcGVyYXRpb24pOwotICAgIGVsc2UgaWYg
KCEoc291cmNlT3BlcmF0aW9uICYgdGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uLnZhbHVlKCkpKSAv
LyBUaGUgZWxlbWVudCBwaWNrZWQgYW4gb3BlcmF0aW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQg
YnkgdGhlIHNvdXJjZQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAg
ICBpZiAoIXRhcmdldFJlc3BvbnNlLm9wZXJhdGlvbk1hc2spCisgICAgICAgIG9wZXJhdGlvbiA9
IGRlZmF1bHRPcGVyYXRpb25Gb3JEcmFnKHNvdXJjZU9wZXJhdGlvbk1hc2spOworICAgIGVsc2Ug
aWYgKCFzb3VyY2VPcGVyYXRpb25NYXNrLmNvbnRhaW5zQW55KHRhcmdldFJlc3BvbnNlLm9wZXJh
dGlvbk1hc2sudmFsdWUoKSkpIC8vIFRoZSBlbGVtZW50IHBpY2tlZCBhbiBvcGVyYXRpb24gd2hp
Y2ggaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgc291cmNlLgorICAgICAgICBvcGVyYXRpb24gPSBX
VEY6Om51bGxvcHQ7CiAgICAgZWxzZQotICAgICAgICBvcGVyYXRpb24gPSB0YXJnZXRSZXNwb25z
ZS5vcGVyYXRpb24udmFsdWUoKTsKKyAgICAgICAgb3BlcmF0aW9uID0gZGVmYXVsdE9wZXJhdGlv
bkZvckRyYWcodGFyZ2V0UmVzcG9uc2Uub3BlcmF0aW9uTWFzay52YWx1ZSgpKTsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtOTU2LDcgKzk1OCw3IEBAIE9wdGlvbmFsPEhpdFRlc3RSZXN1bHQ+
IERyYWdDb250cm9sbGVyOjpoaXRUZXN0UmVzdWx0Rm9yRHJhZ1N0YXJ0KEZyYW1lJiBzb3VyY2Us
CiAgICAgcmV0dXJuIHsgaGl0VGVzdFJlc3VsdCB9OwogfQogCi1ib29sIERyYWdDb250cm9sbGVy
OjpzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJh
dGlvbiBzcmNPcCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IElu
dFBvaW50JiBkcmFnT3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgaGFzRGF0YSkK
K2Jvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3Rh
dGUmIHN0YXRlLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBkcmFnRXZlbnQsIGNvbnN0IEludFBvaW50JiBkcmFn
T3JpZ2luLCBIYXNOb25EZWZhdWx0UGFzdGVib2FyZERhdGEgaGFzRGF0YSkKIHsKICAgICBpZiAo
IXN0YXRlLnNvdXJjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTcyLDcgKzk3NCw3IEBA
IGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3Rh
dGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgSW50UG9pbnQgbW91c2VEcmFnZ2VkUG9pbnQg
PSBzcmMudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGRyYWdFdmVudC5wb3NpdGlvbigpKTsKIAog
ICAgIG1fZHJhZ2dpbmdJbWFnZVVSTCA9IFVSTCgpOwotICAgIG1fc291cmNlRHJhZ09wZXJhdGlv
biA9IHNyY09wOworICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2sgPSBzb3VyY2VPcGVyYXRp
b25NYXNrOwogCiAgICAgRHJhZ0ltYWdlIGRyYWdJbWFnZTsKICAgICBJbnRQb2ludCBkcmFnTG9j
KDAsIDApOwpAQCAtOTk1LDcgKzk5Nyw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
ZyhGcmFtZSYgc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAg
ICAgIC8vIFNlbGVjdGlvbiwgaW1hZ2UsIGFuZCBsaW5rIGRyYWdzIHJlY2VpdmUgYSBkZWZhdWx0
IHNldCBvZiBhbGxvd2VkIGRyYWcgb3BlcmF0aW9ucyB0aGF0CiAgICAgICAgIC8vIGZvbGxvd3Mg
ZnJvbToKICAgICAgICAgLy8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbT9yZXY9NDg1MjYjTDM0MzAKLSAgICAgICAg
bV9zb3VyY2VEcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4obV9zb3Vy
Y2VEcmFnT3BlcmF0aW9uIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMgfCBEcmFnT3BlcmF0aW9uQ29w
eSk7CisgICAgICAgIG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2suYWRkKHsgRHJhZ09wZXJhdGlv
bkdlbmVyaWMsIERyYWdPcGVyYXRpb25Db3B5IH0pOwogICAgIH0KIAogICAgIEFTU0VSVChzdGF0
ZS5zb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5oCmluZGV4IDkwZjg3NWMw
NjdhNWM2YTFhNzAwMGRkYTVmYTM4MGFlODZkZDcxNDkuLmVhNDk5ZTBlYmQ2NTE2ZTk4MDhjNDlm
MWVjMDg1MjQ0OWRjZWU4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmgKQEAg
LTU5LDkgKzU5LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIERyYWdPcGVyYXRpb24gcGxhdGZv
cm1HZW5lcmljRHJhZ09wZXJhdGlvbigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ09wZXJh
dGlvbiBkcmFnRW50ZXJlZChjb25zdCBEcmFnRGF0YSYpOworICAgIFdFQkNPUkVfRVhQT1JUIE9w
dGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdFbnRlcmVkKGNvbnN0IERyYWdEYXRhJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnRXhpdGVkKGNvbnN0IERyYWdEYXRhJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgRHJhZ09wZXJhdGlvbiBkcmFnVXBkYXRlZChjb25zdCBEcmFnRGF0YSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdVcGRhdGVkKGNv
bnN0IERyYWdEYXRhJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwZXJmb3JtRHJhZ09wZXJh
dGlvbihjb25zdCBEcmFnRGF0YSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhZ0NhbmNl
bGxlZCgpOwogCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAvLyBkcmFnIGxvZ2ljIGlz
IGluIFdlYkNvcmUuCiAgICAgdm9pZCBzZXREaWRJbml0aWF0ZURyYWcoYm9vbCBpbml0aWF0ZWQp
IHsgbV9kaWRJbml0aWF0ZURyYWcgPSBpbml0aWF0ZWQ7IH0KICAgICBib29sIGRpZEluaXRpYXRl
RHJhZygpIGNvbnN0IHsgcmV0dXJuIG1fZGlkSW5pdGlhdGVEcmFnOyB9Ci0gICAgRHJhZ09wZXJh
dGlvbiBzb3VyY2VEcmFnT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3Bl
cmF0aW9uOyB9CisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZURyYWdPcGVyYXRp
b25NYXNrKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEcmFnT3BlcmF0aW9uTWFzazsgfQogICAg
IGNvbnN0IFVSTCYgZHJhZ2dpbmdJbWFnZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ2dpbmdJ
bWFnZVVSTDsgfQogICAgIHZvaWQgc2V0RHJhZ09mZnNldChjb25zdCBJbnRQb2ludCYgb2Zmc2V0
KSB7IG1fZHJhZ09mZnNldCA9IG9mZnNldDsgfQogICAgIGNvbnN0IEludFBvaW50JiBkcmFnT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9kcmFnT2Zmc2V0OyB9CkBAIC05NSw3ICs5NSw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9s
ZGVyc0F0Q2FyZXQoY29uc3QgVmVjdG9yPEludFNpemU+JiBpbWFnZVNpemVzKTsKIAogICAgIHZv
aWQgcHJlcGFyZUZvckRyYWdTdGFydChGcmFtZSYgc291cmNlRnJhbWUsIERyYWdTb3VyY2VBY3Rp
b24sIEVsZW1lbnQmIHNvdXJjZUVsZW1lbnQsIERhdGFUcmFuc2ZlciYsIGNvbnN0IEludFBvaW50
JiBkcmFnT3JpZ2luKSBjb25zdDsKLSAgICBib29sIHN0YXJ0RHJhZyhGcmFtZSYgc3JjLCBjb25z
dCBEcmFnU3RhdGUmLCBEcmFnT3BlcmF0aW9uIHNyY09wLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQ
YXN0ZWJvYXJkRGF0YSk7CisgICAgYm9vbCBzdGFydERyYWcoRnJhbWUmIHNyYywgY29uc3QgRHJh
Z1N0YXRlJiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGRyYWdFdmVudCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIEhhc05vbkRlZmF1bHRQ
YXN0ZWJvYXJkRGF0YSk7CiAgICAgc3RhdGljIGNvbnN0IEludFNpemUmIG1heERyYWdJbWFnZVNp
emUoKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4T3JpZ2luYWxJbWFnZUFyZWE7CkBAIC0x
MDgsMTEgKzEwOCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzcGF0Y2hUZXh0SW5wdXRFdmVu
dEZvcihGcmFtZSosIGNvbnN0IERyYWdEYXRhJik7CiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZyhj
b25zdCBEcmFnRGF0YSYpOwogICAgIGJvb2wgY29uY2x1ZGVFZGl0RHJhZyhjb25zdCBEcmFnRGF0
YSYpOwotICAgIERyYWdPcGVyYXRpb24gZHJhZ0VudGVyZWRPclVwZGF0ZWQoY29uc3QgRHJhZ0Rh
dGEmKTsKLSAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJhZ0RhdGEm
KTsKLSAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERyYWdEYXRh
JiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4sIERyYWdPcGVyYXRpb24mKTsKLSAg
ICBib29sIHRyeURIVE1MRHJhZyhjb25zdCBEcmFnRGF0YSYsIERyYWdPcGVyYXRpb24mKTsKLSAg
ICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKKyAgICBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiBkcmFnRW50ZXJlZE9yVXBkYXRlZChjb25zdCBEcmFnRGF0YSYp
OworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbkZvckxvYWQoY29uc3QgRHJh
Z0RhdGEmKTsKKyAgICBEcmFnSGFuZGxpbmdNZXRob2QgdHJ5RG9jdW1lbnREcmFnKGNvbnN0IERy
YWdEYXRhJiwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4sIE9wdGlvbmFsPERyYWdP
cGVyYXRpb24+Jik7CisgICAgYm9vbCB0cnlESFRNTERyYWcoY29uc3QgRHJhZ0RhdGEmLCBPcHRp
b25hbDxEcmFnT3BlcmF0aW9uPiYpOworICAgIE9wdGlvbmFsPERyYWdPcGVyYXRpb24+IGRyYWdP
cGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmKTsKICAgICB2b2lkIGNsZWFyRHJhZ0NhcmV0KCk7CiAg
ICAgYm9vbCBkcmFnSXNNb3ZlKEZyYW1lU2VsZWN0aW9uJiwgY29uc3QgRHJhZ0RhdGEmKTsKICAg
ICBib29sIGlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmKTsKQEAgLTE1Niw3ICsxNTYsNyBA
QCBwcml2YXRlOgogICAgIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IG1fZHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uTWFzazsKICAgICBEcmFnU291cmNlQWN0aW9uIG1fZHJhZ1NvdXJjZUFj
dGlvbiB7IERyYWdTb3VyY2VBY3Rpb25Ob25lIH07CiAgICAgYm9vbCBtX2RpZEluaXRpYXRlRHJh
ZyB7IGZhbHNlIH07Ci0gICAgRHJhZ09wZXJhdGlvbiBtX3NvdXJjZURyYWdPcGVyYXRpb24geyBE
cmFnT3BlcmF0aW9uTm9uZSB9OyAvLyBTZXQgaW4gc3RhcnREcmFnIHdoZW4gYSBkcmFnIHN0YXJ0
cyBmcm9tIGEgbW91c2UgZG93biB3aXRoaW4gV2ViS2l0CisgICAgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+IG1fc291cmNlRHJhZ09wZXJhdGlvbk1hc2s7IC8vIFNldCBpbiBzdGFydERyYWcgd2hl
biBhIGRyYWcgc3RhcnRzIGZyb20gYSBtb3VzZSBkb3duIHdpdGhpbiBXZWJLaXQuCiAgICAgSW50
UG9pbnQgbV9kcmFnT2Zmc2V0OwogICAgIFVSTCBtX2RyYWdnaW5nSW1hZ2VVUkw7CiAgICAgYm9v
bCBtX2lzUGVyZm9ybWluZ0Ryb3AgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCmluZGV4IDM3ZDRiNDEwMzg5NjFmYTFmYjcyODdkZDc0YzFlNDRlY2QyZDA2ODEuLjBl
MDEzNDVhYjI0NmY1OTgwOTM1YjZkNmE4NjFmZjhiMzUxM2M2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKQEAgLTIzMzQsNyArMjMzNCw3IEBAIHN0YXRpYyBib29sIHRhcmdl
dElzRnJhbWUoTm9kZSogdGFyZ2V0LCBGcmFtZSomIGZyYW1lKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgRHJhZ09wZXJhdGlvbiBjb252ZXJ0RHJvcFpvbmVPcGVyYXRpb25Ub0RyYWdP
cGVyYXRpb24oY29uc3QgU3RyaW5nJiBkcmFnT3BlcmF0aW9uKQorc3RhdGljIE9wdGlvbmFsPERy
YWdPcGVyYXRpb24+IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09wZXJhdGlvbihjb25z
dCBTdHJpbmcmIGRyYWdPcGVyYXRpb24pCiB7CiAgICAgaWYgKGRyYWdPcGVyYXRpb24gPT0gImNv
cHkiKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CkBAIC0yMzQyLDIxICsyMzQy
LDIyIEBAIHN0YXRpYyBEcmFnT3BlcmF0aW9uIGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJh
Z09wZXJhdGlvbihjb25zdCBTdHJpbmcmIGRyYWdPCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0
aW9uTW92ZTsKICAgICBpZiAoZHJhZ09wZXJhdGlvbiA9PSAibGluayIpCiAgICAgICAgIHJldHVy
biBEcmFnT3BlcmF0aW9uTGluazsKLSAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CisgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAotc3RhdGljIFN0cmluZyBjb252ZXJ0RHJhZ09wZXJh
dGlvblRvRHJvcFpvbmVPcGVyYXRpb24oRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCitzdGF0aWMg
U3RyaW5nIGNvbnZlcnREcmFnT3BlcmF0aW9uVG9Ecm9wWm9uZU9wZXJhdGlvbihPcHRpb25hbDxE
cmFnT3BlcmF0aW9uPiBvcGVyYXRpb24pCiB7Ci0gICAgc3dpdGNoIChvcGVyYXRpb24pIHsKLSAg
ICBjYXNlIERyYWdPcGVyYXRpb25Db3B5OgotICAgICAgICByZXR1cm4gImNvcHkiX3M7Ci0gICAg
Y2FzZSBEcmFnT3BlcmF0aW9uTW92ZToKLSAgICAgICAgcmV0dXJuICJtb3ZlIl9zOwotICAgIGNh
c2UgRHJhZ09wZXJhdGlvbkxpbms6Ci0gICAgICAgIHJldHVybiAibGluayJfczsKLSAgICBkZWZh
dWx0OgotICAgICAgICByZXR1cm4gImNvcHkiX3M7CisgICAgaWYgKG9wZXJhdGlvbikgeworICAg
ICAgICBzd2l0Y2ggKCpvcGVyYXRpb24pIHsKKyAgICAgICAgY2FzZSBEcmFnT3BlcmF0aW9uTW92
ZToKKyAgICAgICAgICAgIHJldHVybiAibW92ZSJfczsKKyAgICAgICAgY2FzZSBEcmFnT3BlcmF0
aW9uTGluazoKKyAgICAgICAgICAgIHJldHVybiAibGluayJfczsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiAiY29weSJf
czsKIH0KIAogc3RhdGljIGJvb2wgaGFzRHJvcFpvbmVUeXBlKERhdGFUcmFuc2ZlciYgZGF0YVRy
YW5zZmVyLCBjb25zdCBTdHJpbmcmIGtleXdvcmQpCkBAIC0yMzc2LDE1ICsyMzc3LDE0IEBAIHN0
YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJnZXQsIERhdGFUcmFuc2ZlciYgZGF0YVRy
YW5zZmVyKQogICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxl
bWVudCgpKSB7CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcga2V5d29yZHMoZWxlbWVudC0+YXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3ZWJraXRkcm9wem9uZUF0dHIpLCB0cnVlKTsK
ICAgICAgICAgYm9vbCBtYXRjaGVkID0gZmFsc2U7Ci0gICAgICAgIERyYWdPcGVyYXRpb24gZHJh
Z09wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICBPcHRpb25hbDxEcmFnT3Bl
cmF0aW9uPiBkcmFnT3BlcmF0aW9uOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBzaXpl
ID0ga2V5d29yZHMuc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBEcmFnT3Bl
cmF0aW9uIG9wID0gY29udmVydERyb3Bab25lT3BlcmF0aW9uVG9EcmFnT3BlcmF0aW9uKGtleXdv
cmRzW2ldKTsKLSAgICAgICAgICAgIGlmIChvcCAhPSBEcmFnT3BlcmF0aW9uTm9uZSkgewotICAg
ICAgICAgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Ob25lKQotICAg
ICAgICAgICAgICAgICAgICBkcmFnT3BlcmF0aW9uID0gb3A7CisgICAgICAgICAgICBpZiAoYXV0
byBvcGVyYXRpb25Gcm9tS2V5d29yZCA9IGNvbnZlcnREcm9wWm9uZU9wZXJhdGlvblRvRHJhZ09w
ZXJhdGlvbihrZXl3b3Jkc1tpXSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWRyYWdPcGVyYXRp
b24pCisgICAgICAgICAgICAgICAgICAgIGRyYWdPcGVyYXRpb24gPSBvcGVyYXRpb25Gcm9tS2V5
d29yZDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBtYXRj
aGVkIHx8IGhhc0Ryb3Bab25lVHlwZShkYXRhVHJhbnNmZXIsIGtleXdvcmRzW2ldLnN0cmluZygp
KTsKLSAgICAgICAgICAgIGlmIChtYXRjaGVkICYmIGRyYWdPcGVyYXRpb24gIT0gRHJhZ09wZXJh
dGlvbk5vbmUpCisgICAgICAgICAgICBpZiAobWF0Y2hlZCAmJiBkcmFnT3BlcmF0aW9uKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChtYXRjaGVkKSB7CkBA
IC0yMzk1LDIwICsyMzk1LDE5IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlJiB0YXJn
ZXQsIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
RXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERy
YWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1l
bnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4mJiBwYXN0ZWJvYXJkLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9w
ZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorRXZlbnRIYW5kbGVyOjpEcmFnVGFyZ2V0UmVz
cG9uc2UgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVib2Fy
ZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wgZHJh
Z2dpbmdGaWxlcykKIHsKLSAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3Jl
YXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KHRhcmdldC5kb2N1bWVudCgpLCBXVEZNb3ZlKHBhc3Rl
Ym9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgIGF1dG8gZGF0YVRy
YW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQodGFyZ2V0
LmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRy
YWdnaW5nRmlsZXMpOwogICAgIGJvb2wgYWNjZXB0ID0gZGlzcGF0Y2hEcmFnRXZlbnQoZXZlbnRU
eXBlLCB0YXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNmZXIuZ2V0KCkpOwogICAgIGlmICghYWNjZXB0
KQogICAgICAgICBhY2NlcHQgPSBmaW5kRHJvcFpvbmUodGFyZ2V0LCBkYXRhVHJhbnNmZXIpOwog
ICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1cml0eSgpOwogICAgIGlmIChhY2Nl
cHQgJiYgIWRhdGFUcmFuc2Zlci0+ZHJvcEVmZmVjdElzVW5pbml0aWFsaXplZCgpKQotICAgICAg
ICByZXR1cm4geyB0cnVlLCBkYXRhVHJhbnNmZXItPmRlc3RpbmF0aW9uT3BlcmF0aW9uKCkgfTsK
KyAgICAgICAgcmV0dXJuIHsgdHJ1ZSwgZGF0YVRyYW5zZmVyLT5kZXN0aW5hdGlvbk9wZXJhdGlv
bk1hc2soKSB9OwogICAgIHJldHVybiB7IGFjY2VwdCwgV1RGOjpudWxsb3B0IH07CiB9CiAKLUV2
ZW50SGFuZGxlcjo6RHJhZ1RhcmdldFJlc3BvbnNlIEV2ZW50SGFuZGxlcjo6dXBkYXRlRHJhZ0Fu
ZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgY29uc3Qgc3RkOjpmdW5jdGlv
bjxzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4oKT4mIG1ha2VQYXN0ZWJvYXJkLCBEcmFnT3Bl
cmF0aW9uIHNvdXJjZU9wZXJhdGlvbiwgYm9vbCBkcmFnZ2luZ0ZpbGVzKQorRXZlbnRIYW5kbGVy
OjpEcmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYgbWFrZVBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3Bl
cmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAg
UmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAgICBpZiAoIW1fZnJhbWUudmll
dygpKQpAQCAtMjQzOCwxOSArMjQzNywxOSBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNw
b25zZSBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAg
ICAgICBGcmFtZSogdGFyZ2V0RnJhbWU7CiAgICAgICAgIGlmICh0YXJnZXRJc0ZyYW1lKG5ld1Rh
cmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0RnJhbWUp
Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVyKCku
dXBkYXRlRHJhZ0FuZERyb3AoZXZlbnQsIG1ha2VQYXN0ZWJvYXJkLCBzb3VyY2VPcGVyYXRpb24s
IGRyYWdnaW5nRmlsZXMpOworICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUt
PmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwg
c291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIH0gZWxzZSBpZiAo
bmV3VGFyZ2V0KSB7CiAgICAgICAgICAgICAvLyBBcyBwZXIgc2VjdGlvbiA3LjkuNCBvZiB0aGUg
SFRNTCA1IHNwZWMuLCB3ZSBtdXN0IGFsd2F5cyBmaXJlIGEgZHJhZyBldmVudCBiZWZvcmUgZmly
aW5nIGEgZHJhZ2VudGVyLCBkcmFnbGVhdmUsIG9yIGRyYWdvdmVyIGV2ZW50LgogICAgICAgICAg
ICAgZGlzcGF0Y2hFdmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVu
dCwgZXZlbnQpOwotICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJh
Z092ZXJFdmVudChldmVudE5hbWVzKCkuZHJhZ2VudGVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50
LCBtYWtlUGFzdGVib2FyZCgpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAg
ICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChldmVu
dE5hbWVzKCkuZHJhZ2VudGVyRXZlbnQsICpuZXdUYXJnZXQsIGV2ZW50LCBtYWtlUGFzdGVib2Fy
ZCgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJhZ1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUp
KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUmVjdXJzaW5nIGFnYWluIGhlcmUgZG9lc24ndCBt
YWtlIHNlbnNlIGlmIHRoZSBuZXdUYXJnZXQgYW5kIG1fZHJhZ1RhcmdldCB3ZXJlIGluIHRoZSBz
YW1lIGZyYW1lLgogICAgICAgICAgICAgaWYgKHRhcmdldEZyYW1lKQotICAgICAgICAgICAgICAg
IHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9w
KGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsK
KyAgICAgICAgICAgICAgICByZXNwb25zZSA9IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51
cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFrZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbk1h
c2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAgICB9IGVsc2UgaWYgKG1fZHJhZ1RhcmdldCkgewot
ICAgICAgICAgICAgYXV0byBkYXRhVHJhbnNmZXIgPSBEYXRhVHJhbnNmZXI6OmNyZWF0ZUZvclVw
ZGF0aW5nRHJvcFRhcmdldChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIG1ha2VQYXN0ZWJvYXJk
KCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgICAgICBhdXRvIGRh
dGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFyZ2V0KG1f
ZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgbWFrZVBhc3RlYm9hcmQoKSwgc291cmNlT3BlcmF0aW9u
TWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgICAgICBkaXNwYXRjaERyYWdFdmVudChldmVu
dE5hbWVzKCkuZHJhZ2xlYXZlRXZlbnQsICptX2RyYWdUYXJnZXQsIGV2ZW50LCBkYXRhVHJhbnNm
ZXIuZ2V0KCkpOwogICAgICAgICAgICAgZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3Vy
aXR5KCk7CiAgICAgICAgIH0KQEAgLTI0NjQsMTIgKzI0NjMsMTIgQEAgRXZlbnRIYW5kbGVyOjpE
cmFnVGFyZ2V0UmVzcG9uc2UgRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnQW5kRHJvcChjb25zdCBQ
bGF0Zm9ybU0KICAgICAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgICAgICBpZiAodGFyZ2V0
SXNGcmFtZShuZXdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKSkgewogICAgICAgICAgICAgaWYg
KHRhcmdldEZyYW1lKQotICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gdGFyZ2V0RnJhbWUtPmV2
ZW50SGFuZGxlcigpLnVwZGF0ZURyYWdBbmREcm9wKGV2ZW50LCBtYWtlUGFzdGVib2FyZCwgc291
cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsKKyAgICAgICAgICAgICAgICByZXNwb25zZSA9
IHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVEcmFnQW5kRHJvcChldmVudCwgbWFr
ZVBhc3RlYm9hcmQsIHNvdXJjZU9wZXJhdGlvbk1hc2ssIGRyYWdnaW5nRmlsZXMpOwogICAgICAg
ICB9IGVsc2UgaWYgKG5ld1RhcmdldCkgewogICAgICAgICAgICAgLy8gTm90ZSwgd2hlbiBkZWFs
aW5nIHdpdGggc3ViLWZyYW1lcywgd2UgbWF5IG5lZWQgdG8gZmlyZSBvbmx5IGEgZHJhZ292ZXIg
ZXZlbnQgYXMgYSBkcmFnIGV2ZW50IG1heSBoYXZlIGJlZW4gZmlyZWQgZWFybGllci4KICAgICAg
ICAgICAgIGlmICghbV9zaG91bGRPbmx5RmlyZURyYWdPdmVyRXZlbnQpCiAgICAgICAgICAgICAg
ICAgZGlzcGF0Y2hFdmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVu
dCwgZXZlbnQpOwotICAgICAgICAgICAgcmVzcG9uc2UgPSBkaXNwYXRjaERyYWdFbnRlck9yRHJh
Z092ZXJFdmVudChldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgKm5ld1RhcmdldCwgZXZlbnQs
IG1ha2VQYXN0ZWJvYXJkKCksIHNvdXJjZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAg
ICAgICAgICByZXNwb25zZSA9IGRpc3BhdGNoRHJhZ0VudGVyT3JEcmFnT3ZlckV2ZW50KGV2ZW50
TmFtZXMoKS5kcmFnb3ZlckV2ZW50LCAqbmV3VGFyZ2V0LCBldmVudCwgbWFrZVBhc3RlYm9hcmQo
KSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgICAgICBtX3No
b3VsZE9ubHlGaXJlRHJhZ092ZXJFdmVudCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAt
MjQ3NywyNSArMjQ3NiwyNSBAQCBFdmVudEhhbmRsZXI6OkRyYWdUYXJnZXRSZXNwb25zZSBFdmVu
dEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTQogICAgIHJldHVybiBy
ZXNwb25zZTsKIH0KIAotdm9pZCBFdmVudEhhbmRsZXI6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYm
IHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5n
RmlsZXMpCit2b2lkIEV2ZW50SGFuZGxlcjo6Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgcGFzdGVi
b2FyZCwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIGJvb2wg
ZHJhZ2dpbmdGaWxlcykKIHsKICAgICBSZWY8RnJhbWU+IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUp
OwogCiAgICAgRnJhbWUqIHRhcmdldEZyYW1lOwogICAgIGlmICh0YXJnZXRJc0ZyYW1lKG1fZHJh
Z1RhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpKSB7CiAgICAgICAgIGlmICh0YXJnZXRGcmFtZSkK
LSAgICAgICAgICAgIHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFnQW5kRHJv
cChldmVudCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0Zp
bGVzKTsKKyAgICAgICAgICAgIHRhcmdldEZyYW1lLT5ldmVudEhhbmRsZXIoKS5jYW5jZWxEcmFn
QW5kRHJvcChldmVudCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywg
ZHJhZ2dpbmdGaWxlcyk7CiAgICAgfSBlbHNlIGlmIChtX2RyYWdUYXJnZXQpIHsKICAgICAgICAg
ZGlzcGF0Y2hFdmVudFRvRHJhZ1NvdXJjZUVsZW1lbnQoZXZlbnROYW1lcygpLmRyYWdFdmVudCwg
ZXZlbnQpOwogCi0gICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0gRGF0YVRyYW5zZmVyOjpjcmVh
dGVGb3JVcGRhdGluZ0Ryb3BUYXJnZXQobV9kcmFnVGFyZ2V0LT5kb2N1bWVudCgpLCBXVEZNb3Zl
KHBhc3RlYm9hcmQpLCBzb3VyY2VPcGVyYXRpb24sIGRyYWdnaW5nRmlsZXMpOworICAgICAgICBh
dXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9yVXBkYXRpbmdEcm9wVGFy
Z2V0KG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNl
T3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAgICAgICAgIGRpc3BhdGNoRHJhZ0V2ZW50
KGV2ZW50TmFtZXMoKS5kcmFnbGVhdmVFdmVudCwgKm1fZHJhZ1RhcmdldCwgZXZlbnQsIGRhdGFU
cmFuc2Zlci5nZXQoKSk7CiAgICAgICAgIGRhdGFUcmFuc2Zlci0+bWFrZUludmFsaWRGb3JTZWN1
cml0eSgpOwogICAgIH0KICAgICBjbGVhckRyYWdTdGF0ZSgpOwogfQogCi1ib29sIEV2ZW50SGFu
ZGxlcjo6cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQs
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIERyYWdPcGVyYXRpb24g
c291cmNlT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpCitib29sIEV2ZW50SGFuZGxlcjo6
cGVyZm9ybURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiYmIHBhc3RlYm9hcmQsIE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBib29sIGRyYWdnaW5nRmlsZXMpCiB7CiAgICAgUmVm
PEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKIApAQCAtMjUwMyw5ICsyNTAyLDkgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OnBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2ZW50LCBzdGQ6OnVuaXEKICAgICBib29sIHByZXZlbnRlZERlZmF1bHQgPSBmYWxz
ZTsKICAgICBpZiAodGFyZ2V0SXNGcmFtZShtX2RyYWdUYXJnZXQuZ2V0KCksIHRhcmdldEZyYW1l
KSkgewogICAgICAgICBpZiAodGFyZ2V0RnJhbWUpCi0gICAgICAgICAgICBwcmV2ZW50ZWREZWZh
dWx0ID0gdGFyZ2V0RnJhbWUtPmV2ZW50SGFuZGxlcigpLnBlcmZvcm1EcmFnQW5kRHJvcChldmVu
dCwgV1RGTW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uLCBkcmFnZ2luZ0ZpbGVzKTsK
KyAgICAgICAgICAgIHByZXZlbnRlZERlZmF1bHQgPSB0YXJnZXRGcmFtZS0+ZXZlbnRIYW5kbGVy
KCkucGVyZm9ybURyYWdBbmREcm9wKGV2ZW50LCBXVEZNb3ZlKHBhc3RlYm9hcmQpLCBzb3VyY2VP
cGVyYXRpb25NYXNrLCBkcmFnZ2luZ0ZpbGVzKTsKICAgICB9IGVsc2UgaWYgKG1fZHJhZ1Rhcmdl
dCkgewotICAgICAgICBhdXRvIGRhdGFUcmFuc2ZlciA9IERhdGFUcmFuc2Zlcjo6Y3JlYXRlRm9y
RHJvcChtX2RyYWdUYXJnZXQtPmRvY3VtZW50KCksIFdURk1vdmUocGFzdGVib2FyZCksIHNvdXJj
ZU9wZXJhdGlvbiwgZHJhZ2dpbmdGaWxlcyk7CisgICAgICAgIGF1dG8gZGF0YVRyYW5zZmVyID0g
RGF0YVRyYW5zZmVyOjpjcmVhdGVGb3JEcm9wKG1fZHJhZ1RhcmdldC0+ZG9jdW1lbnQoKSwgV1RG
TW92ZShwYXN0ZWJvYXJkKSwgc291cmNlT3BlcmF0aW9uTWFzaywgZHJhZ2dpbmdGaWxlcyk7CiAg
ICAgICAgIHByZXZlbnRlZERlZmF1bHQgPSBkaXNwYXRjaERyYWdFdmVudChldmVudE5hbWVzKCku
ZHJvcEV2ZW50LCAqbV9kcmFnVGFyZ2V0LCBldmVudCwgZGF0YVRyYW5zZmVyKTsKICAgICAgICAg
ZGF0YVRyYW5zZmVyLT5tYWtlSW52YWxpZEZvclNlY3VyaXR5KCk7CiAgICAgfQpAQCAtMzcyOSwx
MyArMzcyOCwxMyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkU3RhcnREcmFnKCkKICNlbmRpZgog
fQogCi12b2lkIEV2ZW50SGFuZGxlcjo6ZHJhZ1NvdXJjZUVuZGVkQXQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIE1heUV4dGVuZERyYWdT
ZXNzaW9uIG1heUV4dGVuZERyYWdTZXNzaW9uKQordm9pZCBFdmVudEhhbmRsZXI6OmRyYWdTb3Vy
Y2VFbmRlZEF0KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaywgTWF5RXh0ZW5kRHJhZ1Nlc3Npb24gbWF5RXh0
ZW5kRHJhZ1Nlc3Npb24pCiB7CiAgICAgLy8gU2VuZCBhIGhpdCB0ZXN0IHJlcXVlc3Qgc28gdGhh
dCBSZW5kZXJMYXllciBnZXRzIGEgY2hhbmNlIHRvIHVwZGF0ZSB0aGUgOmhvdmVyIGFuZCA6YWN0
aXZlIHBzZXVkb2NsYXNzZXMuCiAgICAgcHJlcGFyZU1vdXNlRXZlbnQoT3B0aW9uU2V0PEhpdFRl
c3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4geyBIaXRUZXN0UmVxdWVzdDo6UmVsZWFzZSwgSGl0VGVz
dFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9LCBldmVudCk7CiAKICAg
ICBpZiAoc2hvdWxkRGlzcGF0Y2hFdmVudHNUb0RyYWdTb3VyY2VFbGVtZW50KCkpIHsKLSAgICAg
ICAgZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zZXREZXN0aW5hdGlvbk9wZXJhdGlvbihvcGVy
YXRpb24pOworICAgICAgICBkcmFnU3RhdGUoKS5kYXRhVHJhbnNmZXItPnNldERlc3RpbmF0aW9u
T3BlcmF0aW9uTWFzayhkcmFnT3BlcmF0aW9uTWFzayk7CiAgICAgICAgIGRpc3BhdGNoRXZlbnRU
b0RyYWdTb3VyY2VFbGVtZW50KGV2ZW50TmFtZXMoKS5kcmFnZW5kRXZlbnQsIGV2ZW50KTsKICAg
ICB9CiAgICAgaW52YWxpZGF0ZURhdGFUcmFuc2ZlcigpOwpAQCAtMzg2NSw3ICszODY0LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAvLyBPbmNlIHdlJ3JlIHBhc3QgdGhlIGh5c3Rl
cmVzaXMgcG9pbnQsIHdlIGRvbid0IHdhbnQgdG8gdHJlYXQgdGhpcyBnZXN0dXJlIGFzIGEgY2xp
Y2sKICAgICBpbnZhbGlkYXRlQ2xpY2soKTsKICAgICAKLSAgICBEcmFnT3BlcmF0aW9uIHNyY09w
ID0gRHJhZ09wZXJhdGlvbk5vbmU7ICAgICAgCisgICAgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+
IHNvdXJjZU9wZXJhdGlvbk1hc2s7CiAgICAgCiAgICAgLy8gVGhpcyBkb2VzIHdvcmsgb25seSBp
ZiB3ZSBtaXNzZWQgYSBkcmFnRW5kLiBEbyBpdCBhbnl3YXksIGp1c3QgdG8gbWFrZSBzdXJlIHRo
ZSBvbGQgZGF0YVRyYW5zZmVyIGdldHMgbnVtYmVkLgogICAgIC8vIEZJWE1FOiBDb25zaWRlciBk
b2luZyB0aGlzIGVhcmxpZXIgaW4gdGhpcyBmdW5jdGlvbiBhcyB0aGUgZWFybGllc3QgcG9pbnQg
d2UncmUgc3VyZSBpdCB3b3VsZCBiZSBzYWZlIHRvIGRyb3AgYW4gb2xkIGRyYWcuCkBAIC0zOTAx
LDcgKzM5MDAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogCiAgICAgICAgIGlmIChtX21v
dXNlRG93bk1heVN0YXJ0RHJhZykgewogICAgICAgICAgICAgLy8gR2F0aGVyIHZhbHVlcyBmcm9t
IERIVE1MIGVsZW1lbnQsIGlmIGl0IHNldCBhbnkuCi0gICAgICAgICAgICBzcmNPcCA9IGRyYWdT
dGF0ZSgpLmRhdGFUcmFuc2Zlci0+c291cmNlT3BlcmF0aW9uKCk7CisgICAgICAgICAgICBzb3Vy
Y2VPcGVyYXRpb25NYXNrID0gZHJhZ1N0YXRlKCkuZGF0YVRyYW5zZmVyLT5zb3VyY2VPcGVyYXRp
b25NYXNrKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFl1Y2ssIGEgZHJhZ2dlZElt
YWdlOm1vdmVUbzogbWVzc2FnZSBjYW4gYmUgZmlyZWQgYXMgYSByZXN1bHQgb2Yga2lja2luZyBv
ZmYgdGhlCiAgICAgICAgICAgICAvLyBkcmFnIHdpdGggZHJhZ0ltYWdlISBCZWNhdXNlIG9mIHRo
YXQgZHVtYiByZWVudHJhbmN5LCB3ZSBtYXkgdGhpbmsgd2UndmUgbm90CkBAIC0zOTEyLDcgKzM5
MTEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgQ2hlY2tEcgogICAgIAogICAgIGlmIChtX21vdXNlRG93
bk1heVN0YXJ0RHJhZykgewogICAgICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0g
ICAgICAgIG1fZGlkU3RhcnREcmFnID0gcGFnZSAmJiBwYWdlLT5kcmFnQ29udHJvbGxlcigpLnN0
YXJ0RHJhZyhtX2ZyYW1lLCBkcmFnU3RhdGUoKSwgc3JjT3AsIGV2ZW50LmV2ZW50KCksIG1fbW91
c2VEb3duQ29udGVudHNQb3NpdGlvbiwgaGFzTm9uRGVmYXVsdFBhc3RlYm9hcmREYXRhKTsKKyAg
ICAgICAgbV9kaWRTdGFydERyYWcgPSBwYWdlICYmIHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc3Rh
cnREcmFnKG1fZnJhbWUsIGRyYWdTdGF0ZSgpLCBzb3VyY2VPcGVyYXRpb25NYXNrLCBldmVudC5l
dmVudCgpLCBtX21vdXNlRG93bkNvbnRlbnRzUG9zaXRpb24sIGhhc05vbkRlZmF1bHRQYXN0ZWJv
YXJkRGF0YSk7CiAgICAgICAgIC8vIEluIFdlYktpdDIgd2UgY291bGQgcmUtZW50ZXIgdGhpcyBj
b2RlIGFuZCBzdGFydCBhbm90aGVyIGRyYWcuCiAgICAgICAgIC8vIE9uIE9TIFggdGhpcyBjYXVz
ZXMgcHJvYmxlbXMgd2l0aCB0aGUgb3duZXJzaGlwIG9mIHRoZSBwYXN0ZWJvYXJkIGFuZCB0aGUg
cHJvbWlzZWQgdHlwZXMuCiAgICAgICAgIGlmIChtX2RpZFN0YXJ0RHJhZykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNmZmYzgzYzAxMmZmZTA5NTA0NjQxNDA1MTE2MWQ3NTA2
YWYxOTJhMS4uMjdjYWU2MWVkMTE4MzRhY2M1NDUyZGI2Y2I5MjNiMzI5NjY4Y2YyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBAIC0xNjMsMTEgKzE2MywxMSBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBzdHJ1Y3QgRHJhZ1RhcmdldFJlc3BvbnNlIHsK
ICAgICAgICAgYm9vbCBhY2NlcHQgeyBmYWxzZSB9OwotICAgICAgICBPcHRpb25hbDxEcmFnT3Bl
cmF0aW9uPiBvcGVyYXRpb247CisgICAgICAgIE9wdGlvbmFsPE9wdGlvblNldDxEcmFnT3BlcmF0
aW9uPj4gb3BlcmF0aW9uTWFzazsKICAgICB9OwotICAgIERyYWdUYXJnZXRSZXNwb25zZSB1cGRh
dGVEcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPigpPiYsIERyYWdPcGVyYXRpb24gc291cmNl
T3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMpOwotICAgIHZvaWQgY2FuY2VsRHJhZ0FuZERy
b3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7Ci0gICAgYm9vbCBwZXJmb3Jt
RHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBh
c3RlYm9hcmQ+JiYsIERyYWdPcGVyYXRpb24sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CisgICAgRHJh
Z1RhcmdldFJlc3BvbnNlIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+KCk+Jiwg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOworICAgIHZvaWQg
Y2FuY2VsRHJhZ0FuZERyb3AoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+JiYsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiwgYm9vbCBkcmFnZ2lu
Z0ZpbGVzKTsKKyAgICBib29sIHBlcmZvcm1EcmFnQW5kRHJvcChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmLCBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4mJiwgT3B0aW9uU2V0PERyYWdPcGVy
YXRpb24+LCBib29sIGRyYWdnaW5nRmlsZXMpOwogICAgIHZvaWQgdXBkYXRlRHJhZ1N0YXRlQWZ0
ZXJFZGl0RHJhZ0lmTmVlZGVkKEVsZW1lbnQmIHJvb3RFZGl0YWJsZUVsZW1lbnQpOwogICAgIFJl
ZlB0cjxFbGVtZW50PiBkcmFnZ2VkRWxlbWVudCgpIGNvbnN0OwogI2VuZGlmCkBAIC0yNjgsNyAr
MjY4LDcgQEAgcHVibGljOgogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkU3RhcnRE
cmFnKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnQ2FuY2VsbGVkKCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmLCBEcmFnT3BlcmF0aW9uLCBNYXlFeHRlbmREcmFnU2Vzc2lvbiA9IE1heUV4dGVuZERyYWdT
ZXNzaW9uOjpObyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmFnU291cmNlRW5kZWRBdChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIE1heUV4
dGVuZERyYWdTZXNzaW9uID0gTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Ok5vKTsKICNlbmRpZgogCiAg
ICAgdm9pZCBmb2N1c0RvY3VtZW50VmlldygpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHByaXZhdGU6
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGJvb2wgZGlzcGF0Y2hEcmFnRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiB0YXJnZXQsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYsIERhdGFUcmFuc2ZlciYpOwotICAgIERyYWdUYXJnZXRSZXNwb25zZSBk
aXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBEcmFnT3BlcmF0aW9uLCBib29sIGRyYWdnaW5nRmlsZXMp
OworICAgIERyYWdUYXJnZXRSZXNwb25zZSBkaXNwYXRjaERyYWdFbnRlck9yRHJhZ092ZXJFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEVsZW1lbnQmIHRhcmdldCwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jiwgc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+JiYgLCBPcHRpb25T
ZXQ8RHJhZ09wZXJhdGlvbj4sIGJvb2wgZHJhZ2dpbmdGaWxlcyk7CiAgICAgdm9pZCBpbnZhbGlk
YXRlRGF0YVRyYW5zZmVyKCk7CiAKICAgICBib29sIGhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYsIENoZWNrRHJhZ0h5c3RlcmVzaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDdkMDUyY2ZlMThhZWI1
MzhiZTY2MzlhZjAzMGVjN2RkZWUwZTJlMTMuLmQ3MWFiMWRmZTQ0YWFiNmEyYzk1Y2M2MjVlMmFm
ODZiNDM0NDc5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250
cm9sbGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxl
ckd0ay5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01MCwxMyArNTAsMTMgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5
RG93bihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgcmV0dXJuIGRyYWdEYXRhLmZsYWdz
KCkgJiBEcmFnQXBwbGljYXRpb25Jc0NvcHlLZXlEb3duOwogfQogCi1EcmFnT3BlcmF0aW9uIERy
YWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKK09w
dGlvbmFsPERyYWdPcGVyYXRpb24+IERyYWdDb250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0
IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBpbmNv
bXBsZXRlCiAgICAgaWYgKGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkpCiAgICAgICAgIHJldHVybiBE
cmFnT3BlcmF0aW9uQ29weTsKIAotICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiBjb25zdCBJbnRTaXplJiBEcmFnQ29udHJvbGxlcjo6
bWF4RHJhZ0ltYWdlU2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9E
cmFnQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9s
bGVyTWFjLm1tCmluZGV4IDg1YmQ0OGFjYzIyNGQwZTc4NGIzMWMyODQ1YWQwNjg1N2JkODEwMjEu
LmM2MDNmYmRkYTQzN2NkYThhZDM4NDUzYTdkNTU2ZmQ0ZjU0OTRmNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0RyYWdDb250cm9sbGVyTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjQsMTAgKzY0LDEwIEBAIGJv
b2wgRHJhZ0NvbnRyb2xsZXI6OmlzQ29weUtleURvd24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRh
KQogICAgIHJldHVybiBkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNDb3B5S2V5
RG93bjsKIH0KICAgICAKLURyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRp
b24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQorT3B0aW9uYWw8RHJhZ09wZXJhdGlvbj4gRHJh
Z0NvbnRyb2xsZXI6OmRyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRyYWdEYXRhKQogewog
ICAgIGlmIChkcmFnRGF0YS5mbGFncygpICYgRHJhZ0FwcGxpY2F0aW9uSXNNb2RhbCkKLSAgICAg
ICAgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCiAgICAgYm9vbCBtYXlDb250YWluVVJMOwogICAgIGlmIChjYW5Mb2FkRGF0YUZyb21EcmFn
Z2luZ1Bhc3RlYm9hcmQoKSkKQEAgLTc2LDEyICs3NiwxMiBAQCBEcmFnT3BlcmF0aW9uIERyYWdD
b250cm9sbGVyOjpkcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAgICAg
ICAgbWF5Q29udGFpblVSTCA9IGRyYWdEYXRhLmNvbnRhaW5zVVJMVHlwZUlkZW50aWZpZXIoKTsK
IAogICAgIGlmICghbWF5Q29udGFpblVSTCAmJiAhZHJhZ0RhdGEuY29udGFpbnNQcm9taXNlKCkp
Ci0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAogICAgIGlmICghbV9kb2N1bWVudFVuZGVyTW91c2UgfHwgKCEoZHJhZ0RhdGEu
ZmxhZ3MoKSAmIChEcmFnQXBwbGljYXRpb25IYXNBdHRhY2hlZFNoZWV0IHwgRHJhZ0FwcGxpY2F0
aW9uSXNTb3VyY2UpKSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uQ29weTsKIAotICAg
IHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQog
CiBjb25zdCBJbnRTaXplJiBEcmFnQ29udHJvbGxlcjo6bWF4RHJhZ0ltYWdlU2l6ZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9EcmFnQ29udHJvbGxlcldpbi5jcHAKaW5kZXggMmQ0NmQ2
YjIzZWEzNzIyOGEyNDAyNTdiNzM0Njk3MThmNjBiMDg1ZS4uOGRiOGM5ZDViYjZmNDZlNmE4NTll
N2VhOTIyNmEyM2MyOWI3MWM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4v
RHJhZ0NvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0RyYWdD
b250cm9sbGVyV2luLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDEzICs0MiwxNSBAQCBjb25zdCBpbnQgRHJhZ0NvbnRyb2xs
ZXI6OkRyYWdJY29uQm90dG9tSW5zZXQgPSAzOwogCiBjb25zdCBmbG9hdCBEcmFnQ29udHJvbGxl
cjo6RHJhZ0ltYWdlQWxwaGEgPSAwLjc1ZjsKIAotRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxl
cjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCitPcHRpb25hbDxEcmFn
T3BlcmF0aW9uPiBEcmFnQ29udHJvbGxlcjo6ZHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYg
ZHJhZ0RhdGEpCiB7Ci0gICAgLy9GSVhNRTogdG8gbWF0Y2ggdGhlIG1hY29zIGJlaGF2aW91ciB3
ZSBzaG91bGQgcmV0dXJuIERyYWdPcGVyYXRpb25Ob25lCi0gICAgLy9pZiB3ZSBhcmUgYSBtb2Rh
bCB3aW5kb3csIHdlIGFyZSB0aGUgZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0
YWNoZWQgc2hlZXQKLSAgICAvL0lmIHRoaXMgY2FuIGJlIGRldGVybWluZWQgZnJvbSB3aXRoaW4g
V2ViQ29yZSBvcGVyYXRpb25Gb3JEcmFnIGNhbiBiZSBwdWxsZWQgaW50byAKLSAgICAvL1dlYkNv
cmUgaXRzZWxmCi0gICAgcmV0dXJuIGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5p
dGlhdGVEcmFnID8gRHJhZ09wZXJhdGlvbkNvcHkgOiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAv
LyBGSVhNRTogVG8gbWF0Y2ggdGhlIG1hY09TIGJlaGF2aW91ciB3ZSBzaG91bGQgcmV0dXJuIFdU
Rjo6bnVsbG9wdC4KKyAgICAvLyBJZiB3ZSBhcmUgYSBtb2RhbCB3aW5kb3csIHdlIGFyZSB0aGUg
ZHJhZyBzb3VyY2UsIG9yIHRoZSB3aW5kb3cgaXMgYW4gYXR0YWNoZWQgc2hlZXQuCisgICAgLy8g
SWYgdGhpcyBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIHdpdGhpbiBXZWJDb3JlIG9wZXJhdGlvbkZv
ckRyYWcgY2FuIGJlIHB1bGxlZCBpbnRvCisgICAgLy8gV2ViQ29yZSBpdHNlbGYuCisgICAgaWYg
KGRyYWdEYXRhLmNvbnRhaW5zVVJMKCkgJiYgIW1fZGlkSW5pdGlhdGVEcmFnKQorICAgICAgICBy
ZXR1cm4gRHJhZ09wZXJhdGlvbkNvcHk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAog
Ym9vbCBEcmFnQ29udHJvbGxlcjo6aXNDb3B5S2V5RG93bihjb25zdCBEcmFnRGF0YSYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5jcHAKaW5kZXggOGY2NzU1ZjU3NjFhMTQ1NGU5YjQwNjAw
MmUwODg0M2M2YjcxODg3Yy4uZThjNDBmNTU5MDJkOTNhNWE4NzJhYzBlZTBmZGFjYzNmOWVkMmZj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmNwcApAQCAtMzIsNyArMzIsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKENPQ09BKQotRHJhZ0RhdGE6OkRy
YWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBEcmFnT3BlcmF0aW9uIHNvdXJjZU9wZXJh
dGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCitEcmFnRGF0YTo6RHJhZ0RhdGEo
RHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJ
bnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VP
cGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdE
ZXN0aW5hdGlvbkFjdGlvbj4gZGVzdGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQ
b3NpdGlvbihjbGllbnRQb3NpdGlvbikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9z
aXRpb24pCiAgICAgLCBtX3BsYXRmb3JtRHJhZ0RhdGEoZGF0YSkKQEAgLTQyLDcgKzQyLDcgQEAg
RHJhZ0RhdGE6OkRyYWdEYXRhKERyYWdEYXRhUmVmIGRhdGEsIGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG8KIHsgIAogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoY29u
c3QgU3RyaW5nJiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2lu
dCYgZ2xvYmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJh
Z0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+
IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcm
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQ
b3NpdGlvbiwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERy
YWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
PiBkZXN0aW5hdGlvbkFjdGlvbk1hc2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBv
c2l0aW9uKQogICAgICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1f
cGxhdGZvcm1EcmFnRGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RHJhZ0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKaW5kZXggNDIx
YTI5OTQzYjNkMTBkNDg1ZGE1Y2U5ZWZkNTNlM2ZhZmJjMGYwZC4uMzFiOGFiOWVlODA2ZmUwZDFm
MmJkZDc5N2I1YTNhZWY5NzY3MWY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRHJhZ0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCkBA
IC03NSwxMyArNzUsMTMgQEAgcHVibGljOgogICAgIGVudW0gY2xhc3MgRHJhZ2dpbmdQdXJwb3Nl
IHsgRm9yRWRpdGluZywgRm9yRmlsZVVwbG9hZCwgRm9yQ29sb3JDb250cm9sIH07CiAKICAgICAv
LyBjbGllbnRQb3NpdGlvbiBpcyB0YWtlbiB0byBiZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRyYWcg
ZXZlbnQgd2l0aGluIHRoZSB0YXJnZXQgd2luZG93LCB3aXRoICgwLDApIGF0IHRoZSB0b3AgbGVm
dAotICAgIFdFQkNPUkVfRVhQT1JUIERyYWdEYXRhKERyYWdEYXRhUmVmLCBjb25zdCBJbnRQb2lu
dCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09w
ZXJhdGlvbiwgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgPSBEcmFnQXBwbGljYXRpb25Ob25lLCBPcHRp
b25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiA9IGFueURyYWdEZXN0aW5hdGlvbkFjdGlvbigp
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdl
TmFtZSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIERyYWdPcGVyYXRpb24sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0Fw
cGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFn
RGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoRHJhZ0Rh
dGFSZWYsIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4sIERyYWdBcHBsaWNhdGlvbkZs
YWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlv
bj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRHJh
Z0RhdGEoY29uc3QgU3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBPcHRpb25TZXQ8RHJh
Z09wZXJhdGlvbj4sIERyYWdBcHBsaWNhdGlvbkZsYWdzID0gRHJhZ0FwcGxpY2F0aW9uTm9uZSwg
T3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gPSBhbnlEcmFnRGVzdGluYXRpb25BY3Rp
b24oKSk7CiAgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgdXNlZCBvbmx5IGJ5IFdlYktp
dDIgSVBDIGJlY2F1c2UgRHJhZ0RhdGEKICAgICAvLyBpcyBpbml0aWFsaXplZCBieSB0aGUgZGVj
b2RlciBhbmQgbm90IGluIHRoZSBjb25zdHJ1Y3Rvci4KICAgICBEcmFnRGF0YSgpID0gZGVmYXVs
dDsKICNpZiBQTEFURk9STShXSU4pCi0gICAgV0VCQ09SRV9FWFBPUlQgRHJhZ0RhdGEoY29uc3Qg
RHJhZ0RhdGFNYXAmLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBv
aW50JiBnbG9iYWxQb3NpdGlvbiwgRHJhZ09wZXJhdGlvbiBzb3VyY2VPcGVyYXRpb25NYXNrLCBE
cmFnQXBwbGljYXRpb25GbGFncyA9IERyYWdBcHBsaWNhdGlvbk5vbmUpOworICAgIFdFQkNPUkVf
RVhQT1JUIERyYWdEYXRhKGNvbnN0IERyYWdEYXRhTWFwJiwgY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxEcmFn
T3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyA9IERy
YWdBcHBsaWNhdGlvbk5vbmUpOwogICAgIGNvbnN0IERyYWdEYXRhTWFwJiBkcmFnRGF0YU1hcCgp
OwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVEZXNjcmlwdG9yRGF0YShpbnQmIHNpemUsIFN0cmluZyYg
cGF0aG5hbWUpOwogICAgIHZvaWQgZ2V0RHJhZ0ZpbGVDb250ZW50RGF0YShpbnQgc2l6ZSwgdm9p
ZCogZGF0YUJsb2IpOwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50UG9p
bnQmIGdsb2JhbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxQb3NpdGlvbjsgfQog
ICAgIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNh
dGlvbkZsYWdzOyB9CiAgICAgRHJhZ0RhdGFSZWYgcGxhdGZvcm1EYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF0Zm9ybURyYWdEYXRhOyB9Ci0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzazsgfQorICAgIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2soKSBjb25zdCB7IHJldHVybiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsg
fQogICAgIGJvb2wgY29udGFpbnNVUkwoRmlsZW5hbWVDb252ZXJzaW9uUG9saWN5ID0gQ29udmVy
dEZpbGVuYW1lcykgY29uc3Q7CiAgICAgYm9vbCBjb250YWluc1BsYWluVGV4dCgpIGNvbnN0Owog
ICAgIGJvb2wgY29udGFpbnNDb21wYXRpYmxlQ29udGVudChEcmFnZ2luZ1B1cnBvc2UgPSBEcmFn
Z2luZ1B1cnBvc2U6OkZvckVkaXRpbmcpIGNvbnN0OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZh
dGU6CiAgICAgSW50UG9pbnQgbV9jbGllbnRQb3NpdGlvbjsKICAgICBJbnRQb2ludCBtX2dsb2Jh
bFBvc2l0aW9uOwogICAgIERyYWdEYXRhUmVmIG1fcGxhdGZvcm1EcmFnRGF0YTsKLSAgICBEcmFn
T3BlcmF0aW9uIG1fZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrOworICAgIE9wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBtX2RyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzazsKICAgICBEcmFnQXBw
bGljYXRpb25GbGFncyBtX2FwcGxpY2F0aW9uRmxhZ3M7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9m
aWxlTmFtZXM7CiAgICAgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gbV9kcmFnRGVz
dGluYXRpb25BY3Rpb25NYXNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvRHJhZ0RhdGFDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0Ry
YWdEYXRhQ29jb2EubW0KaW5kZXggOWNjYWZjMGNkN2E4MzZlNmM5MWUxZjIzM2UxODkwYjMzOGE0
ZDM0MC4uM2ExMjg5ZDRiY2M1NjA5NmFkZWZkMDU4MDA3NDNlZDA5YzY0YzZjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRHJhZ0RhdGFDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9EcmFnRGF0YUNvY29hLm1tCkBAIC0xMTYsNyAr
MTE2LDcgQEAgc3RhdGljIGlubGluZSBTdHJpbmcgdGlmZlBhc3RlYm9hcmRUeXBlKCkKICNlbmRp
ZgogfQogCi1EcmFnRGF0YTo6RHJhZ0RhdGEoRHJhZ0RhdGFSZWYgZGF0YSwgY29uc3QgSW50UG9p
bnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERyYWdP
cGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxhZ3Ms
IE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFzaykK
K0RyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRhLCBjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PERy
YWdPcGVyYXRpb24+IHNvdXJjZU9wZXJhdGlvbk1hc2ssIERyYWdBcHBsaWNhdGlvbkZsYWdzIGZs
YWdzLCBPcHRpb25TZXQ8RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uPiBkZXN0aW5hdGlvbkFjdGlvbk1h
c2spCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAgICwgbV9nbG9i
YWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFnRGF0YShkYXRh
KQpAQCAtMTMxLDcgKzEzMSw3IEBAIERyYWdEYXRhOjpEcmFnRGF0YShEcmFnRGF0YVJlZiBkYXRh
LCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvCiB7CiB9CiAKLURy
YWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIERy
YWdPcGVyYXRpb24gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9uRmxhZ3MgZmxh
Z3MsIE9wdGlvblNldDxEcmFnRGVzdGluYXRpb25BY3Rpb24+IGRlc3RpbmF0aW9uQWN0aW9uTWFz
aykKK0RyYWdEYXRhOjpEcmFnRGF0YShjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwgY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBzb3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBw
bGljYXRpb25GbGFncyBmbGFncywgT3B0aW9uU2V0PERyYWdEZXN0aW5hdGlvbkFjdGlvbj4gZGVz
dGluYXRpb25BY3Rpb25NYXNrKQogICAgIDogbV9jbGllbnRQb3NpdGlvbihjbGllbnRQb3NpdGlv
bikKICAgICAsIG1fZ2xvYmFsUG9zaXRpb24oZ2xvYmFsUG9zaXRpb24pCiAgICAgLCBtX3BsYXRm
b3JtRHJhZ0RhdGEoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGll
cy5jcHAKaW5kZXggMGMwMTNjZjY3ZWU1ODViY2VlZTQ0OTViYjQ2MDExNmFjMDFkYzFkMS4uNWU3
ZjJmMzYyNzk5NDBiYzFiZWExZjk1NjMwZThkMTYzNmY3NjM4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKQEAgLTE0OSw0OSArMTQ5LDQwIEBAIHVu
c2lnbmVkIHN0YXRlTW9kaWZpZXJGb3JHZGtCdXR0b24odW5zaWduZWQgYnV0dG9uKQogICAgIHJl
dHVybiAxIDw8ICg4ICsgYnV0dG9uIC0gMSk7CiB9CiAKLURyYWdPcGVyYXRpb24gZ2RrRHJhZ0Fj
dGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uIGdka0FjdGlvbikKK09wdGlvblNldDxE
cmFnT3BlcmF0aW9uPiBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKEdka0RyYWdBY3Rpb24g
Z2RrQWN0aW9uKQogewotICAgIC8vIFdlIGhhdmUgbm8gZ29vZCB3YXkgdG8gZGV0ZWN0IERyYWdP
cGVyYXRpb25FdmVyeSBvdGhlciB0aGFuCi0gICAgLy8gdG8gdXNlIGl0IHdoZW4gYWxsIGFwcGxp
Y2FibGUgZmxhZ3MgYXJlIG9uLgotICAgIGlmIChnZGtBY3Rpb24gJiBHREtfQUNUSU9OX0NPUFkK
LSAgICAgICAgJiYgZ2RrQWN0aW9uICYgR0RLX0FDVElPTl9NT1ZFCi0gICAgICAgICYmIGdka0Fj
dGlvbiAmIEdES19BQ1RJT05fTElOSykKLSAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRpb25FdmVy
eTsKLQotICAgIHVuc2lnbmVkIGFjdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgIE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBhY3Rpb247CiAgICAgaWYgKGdka0FjdGlvbiAmIEdES19BQ1RJ
T05fQ09QWSkKLSAgICAgICAgYWN0aW9uIHw9IERyYWdPcGVyYXRpb25Db3B5OworICAgICAgICBh
Y3Rpb24uYWRkKERyYWdPcGVyYXRpb25Db3B5KTsKICAgICBpZiAoZ2RrQWN0aW9uICYgR0RLX0FD
VElPTl9NT1ZFKQotICAgICAgICBhY3Rpb24gfD0gRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgICAg
IGFjdGlvbi5hZGQoRHJhZ09wZXJhdGlvbk1vdmUpOwogICAgIGlmIChnZGtBY3Rpb24gJiBHREtf
QUNUSU9OX0xJTkspCi0gICAgICAgIGFjdGlvbiB8PSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAg
ICAgYWN0aW9uLmFkZChEcmFnT3BlcmF0aW9uTGluayk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RHJhZ09wZXJhdGlvbj4oYWN0aW9uKTsKKyAgICByZXR1cm4gYWN0aW9uOwogfQogCi1HZGtE
cmFnQWN0aW9uIGRyYWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKERyYWdPcGVyYXRpb24gY29y
ZUFjdGlvbikKK0dka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMoT3B0
aW9uU2V0PERyYWdPcGVyYXRpb24+IGNvcmVBY3Rpb24pCiB7CiAgICAgdW5zaWduZWQgZ2RrQWN0
aW9uID0gMDsKLSAgICBpZiAoY29yZUFjdGlvbiA9PSBEcmFnT3BlcmF0aW9uTm9uZSkKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KGdka0FjdGlvbik7CiAKLSAgICBp
ZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgIGlmIChjb3JlQWN0aW9uLmNv
bnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAgICAgICAgZ2RrQWN0aW9uIHw9IEdES19BQ1RJ
T05fQ09QWTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAgIGlm
IChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Nb3ZlKSkKICAgICAgICAgZ2RrQWN0
aW9uIHw9IEdES19BQ1RJT05fTU9WRTsKLSAgICBpZiAoY29yZUFjdGlvbiAmIERyYWdPcGVyYXRp
b25MaW5rKQorICAgIGlmIChjb3JlQWN0aW9uLmNvbnRhaW5zKERyYWdPcGVyYXRpb25MaW5rKSkK
ICAgICAgICAgZ2RrQWN0aW9uIHw9IEdES19BQ1RJT05fTElOSzsKIAogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihnZGtBY3Rpb24pOwogfQogCi1HZGtEcmFnQWN0aW9uIGRy
YWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oRHJhZ09wZXJhdGlvbiBjb3JlQWN0aW9u
KQorR2RrRHJhZ0FjdGlvbiBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9uKE9wdGlv
blNldDxEcmFnT3BlcmF0aW9uPiBjb3JlQWN0aW9uKQogewotICAgIGlmIChjb3JlQWN0aW9uID09
IERyYWdPcGVyYXRpb25FdmVyeSB8fCBjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlvbkNvcHkpCisg
ICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbkNvcHkpKQogICAgICAgICBy
ZXR1cm4gR0RLX0FDVElPTl9DT1BZOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJhZ09wZXJhdGlv
bk1vdmUpCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlvbk1vdmUpKQog
ICAgICAgICByZXR1cm4gR0RLX0FDVElPTl9NT1ZFOwotICAgIGlmIChjb3JlQWN0aW9uICYgRHJh
Z09wZXJhdGlvbkxpbmspCisgICAgaWYgKGNvcmVBY3Rpb24uY29udGFpbnMoRHJhZ09wZXJhdGlv
bkxpbmspKQogICAgICAgICByZXR1cm4gR0RLX0FDVElPTl9MSU5LOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxHZGtEcmFnQWN0aW9uPigwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtVdGlsaXRpZXMuaAppbmRleCA1YWFiNGViNzlhMjFlOWE0ZjUyNjYzOTRmZTY2MDZmODQy
ODY1MDg0Li4xOThiYzhlMjUwOWM0NTVkMjMyNDRhNzgxMTNhZWZjYTBlOGZlYTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCkBAIC01MSw4ICs1MSw4IEBA
IFN0cmluZyBkZWZhdWx0R3RrU3lzdGVtRm9udCgpOwogCiBXRUJDT1JFX0VYUE9SVCB1bnNpZ25l
ZCBzdGF0ZU1vZGlmaWVyRm9yR2RrQnV0dG9uKHVuc2lnbmVkIGJ1dHRvbik7CiAKLVdFQkNPUkVf
RVhQT1JUIERyYWdPcGVyYXRpb24gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFn
QWN0aW9uKTsKLVdFQkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvR2Rr
RHJhZ0FjdGlvbnMoRHJhZ09wZXJhdGlvbik7Ci1XRUJDT1JFX0VYUE9SVCBHZGtEcmFnQWN0aW9u
IGRyYWdPcGVyYXRpb25Ub1NpbmdsZUdka0RyYWdBY3Rpb24oRHJhZ09wZXJhdGlvbik7CitXRUJD
T1JFX0VYUE9SVCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZ2RrRHJhZ0FjdGlvblRvRHJhZ09w
ZXJhdGlvbihHZGtEcmFnQWN0aW9uKTsKK1dFQkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJh
Z09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMoT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+KTsKK1dF
QkNPUkVfRVhQT1JUIEdka0RyYWdBY3Rpb24gZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0Fj
dGlvbihPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRHJhZ0RhdGFXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0RyYWdEYXRhV2luLmNwcAppbmRleCBlZTBk
OGIyNjBjY2NiNGRiY2UxMzBlZDMzMWM4OTNjMGRjMGZiMDNiLi4xODg3MGYyMjc1Mjg3Yjk3ZGFh
MzllODAzYmM3ZTJiMzhlNWVmNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRHJhZ0RhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9E
cmFnRGF0YVdpbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMiBCYWlkdSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC00MSw3ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERyYWdEYXRhOjpEcmFn
RGF0YShjb25zdCBEcmFnRGF0YU1hcCYgZGF0YSwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0
aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sCi0gICAgRHJhZ09wZXJhdGlvbiBz
b3VyY2VPcGVyYXRpb25NYXNrLCBEcmFnQXBwbGljYXRpb25GbGFncyBmbGFncykKKyAgICBPcHRp
b25TZXQ8RHJhZ09wZXJhdGlvbj4gc291cmNlT3BlcmF0aW9uTWFzaywgRHJhZ0FwcGxpY2F0aW9u
RmxhZ3MgZmxhZ3MpCiAgICAgOiBtX2NsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uKQogICAg
ICwgbV9nbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbikKICAgICAsIG1fcGxhdGZvcm1EcmFn
RGF0YSgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0
U1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAy
ZDQzYmFlYmY4ZTEyNmJlOWY5ZWE5YTFmY2JmMzNlN2RiNmY5ZGUwLi5hYmVlMjU1NDdjZDNmNzc0
ODBkYTk3Mjc5YzA3ZTA4MjNkZDIyOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9p
b3MvVUlLaXRTUEkuaApAQCAtMTAyNSwxMiArMTAyNSw2IEBAIENHRmxvYXQgVUlSb3VuZFRvU2Ny
ZWVuU2NhbGUoQ0dGbG9hdCB2YWx1ZSwgVUlTY3JlZW4gKik7CiAKIFdURl9FWFRFUk5fQ19FTkQK
IAotdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIFVJRHJhZ09wZXJhdGlvbikKLXsKLSAg
ICBVSURyYWdPcGVyYXRpb25Ob25lID0gMCwKLSAgICBVSURyYWdPcGVyYXRpb25FdmVyeSA9IE5T
VUludGVnZXJNYXgsCi19OwotCiBAaW50ZXJmYWNlIFVJRHJhZ0ludGVyYWN0aW9uICgpCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgYXNzaWduLCBnZXR0ZXI9X2xpZnREZWxheSwgc2V0dGVyPV9zZXRM
aWZ0RGVsYXk6KSBOU1RpbWVJbnRlcnZhbCBsaWZ0RGVsYXk7CiAtICh2b2lkKV9zZXRBbGxvd3NQ
b2ludGVyRHJhZ0JlZm9yZUxpZnREZWxheTooQk9PTClhbGxvd3NQb2ludGVyRHJhZ0JlZm9yZUxp
ZnREZWxheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDYz
MjlmY2ZhNTIzOWYwYWZmMWZhNDFiZTE4ZmEyYzc4NjU4MDI0NWEuLjk4Njk3MmFhYjVhNGJkMjlm
YzcyYjFmODU3ZWNmOWMxMTMyNzlhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQpAQCAtMjA5LDYgKzIwOSw3IEBAIGRlZiB0eXBlc190aGF0X2Nhbm5vdF9iZV9m
b3J3YXJkX2RlY2xhcmVkKCk6CiAgICAgICAgICdXZWJDb3JlOjpEaWN0YXRpb25Db250ZXh0JywK
ICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3Jl
OjpEb2N1bWVudE9yV29ya2VySWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uJywgICMgRklYTUU6IFJlbW92ZSBhZnRlciBjb252ZXJ0aW5nIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24gdG8gZW51bSBjbGFzcy4KICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmll
cicsCiAgICAgICAgICdXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29y
ZTo6TGliV2ViUlRDU29ja2V0SWRlbnRpZmllcicsCkBAIC01ODksNiArNTkwLDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudE9yV29ya2Vy
SWRlbnRpZmllcic6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+J10sCiAgICAgICAg
ICdXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0JzogWyciRG9jdW1lbnRFZGl0
aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kJzog
Wyc8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPiddLAorICAgICAgICAnV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbic6IFsnPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHMnOiBbJzxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4nXSwK
ICAgICAgICAgJ1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MnOiBbJzxXZWJDb3JlL0ZpbGVD
aG9vc2VyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpTaGFyZURhdGFXaXRoUGFyc2VkVVJMJzog
Wyc8V2ViQ29yZS9TaGFyZURhdGEuaD4nXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvX1dLRHJhZ0FjdGlvbnNJbnRlcm5hbC5oCmluZGV4IGM4NjhjMjc3M2Y4
ZGJkMzI3OGIyMDUwYTA4ZTZmOGI1N2RiOGJiNGQuLjg5Nzg5ZjM4MmE5ZTY3NGY5MTFlOWM4OTE0
Y2JhNzZhOWZlYzkwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9fV0tEcmFnQWN0aW9uc0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL19XS0RyYWdBY3Rpb25zSW50ZXJuYWwuaApAQCAtNDAsNCArNDAsMjQgQEAgaW5saW5l
IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKFcKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisjaWYgVVNFKEFQUEtJ
VCkKK2lubGluZSBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVy
YXRpb25NYXNrKE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit7CisgICAgT3B0aW9uU2V0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+IHJlc3VsdDsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFn
T3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
Q29weSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAg
IHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRp
b24gJiBOU0RyYWdPcGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0
aW9uUHJpdmF0ZSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJp
dmF0ZSk7CisgICAgaWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAg
IHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRp
b24gJiBOU0RyYWdPcGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbkRlbGV0ZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZiAvLyBV
U0UoQVBQS0lUKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ0NDM4MTEyOWY5OTc1YjE5MzFi
OTQ2NDM5OTZiOGRhY2Y2NWY0OWIuLmNlOGYyZjk4ZDEwYmJhYjhmZTUyMTE1YWI0ZDc2ZTQzYThi
NWU3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcApAQCAtMTUzMSw3ICsxNTMxLDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPERyYWdEYXRhPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKIHsKICAg
ICBlbmNvZGVyIDw8IGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCk7CiAgICAgZW5jb2RlciA8PCBk
cmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpOwotICAgIGVuY29kZXIuZW5jb2RlRW51bShkcmFnRGF0
YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSk7CisgICAgZW5jb2RlciA8PCBkcmFnRGF0
YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0o
ZHJhZ0RhdGEuZmxhZ3MoKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCBk
cmFnRGF0YS5wYXN0ZWJvYXJkTmFtZSgpOwpAQCAtMTU1MCw4ICsxNTUwLDggQEAgYm9vbCBBcmd1
bWVudENvZGVyPERyYWdEYXRhPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERyYWdEYXRhJiBk
cmFnRGF0YSkKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGdsb2JhbFBvc2l0aW9uKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRHJhZ09wZXJhdGlvbiBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2s7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrKSkKKyAgICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgRHJhZ0FwcGxpY2F0aW9u
RmxhZ3MgYXBwbGljYXRpb25GbGFnczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9EcmFnU291cmNlLmgKaW5kZXggMzhhMDY2ZjVjMzBlYTBlNGZmMGQ4MzE1Zjk0NmM1YTcxM2Jj
MTc2Zi4uYjVmY2JmMDlkOTkzZDIzODYxYzZiODkyYjQ3MjAyYjQ3YzdkMjRkMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IERyYWdTb3VyY2UoR3RrV2lkZ2V0Kik7CiAgICAgfkRy
YWdTb3VyY2UoKTsKIAotICAgIHZvaWQgYmVnaW4oV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmKTsKKyAgICB2
b2lkIGJlZ2luKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRy
YWdPcGVyYXRpb24+LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmKTsKIAogcHJpdmF0ZToKICAg
ICBHdGtXaWRnZXQqIG1fd2ViVmlldyB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azMuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrMy5jcHAKaW5kZXggM2VkNGNjYzMyMzY5
ZTNjZjNkODAyMmZhY2MzYWYyMzhlZWQ4NjM1YS4uZWZkY2VmMjVkM2JiNzRmMGE5YmI3YjNkMTkw
OTA3ZDViOTFlNDRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9EcmFnU291cmNlR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9EcmFnU291cmNlR3RrMy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBEcmFnU291cmNlOjp+RHJh
Z1NvdXJjZSgpCiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1fd2Vi
VmlldywgdGhpcyk7CiB9CiAKLXZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0YSYm
IHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24gb3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiYmIGltYWdlKQordm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYg
c2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG9wZXJhdGlvbk1hc2ssIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgaW1hZ2UpCiB7CiAgICAgaWYgKG1fZHJhZykgewogICAg
ICAgICBndGtfZHJhZ19jYW5jZWwobV9kcmFnLmdldCgpKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2
b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCBEcmFn
T3BlcmF0aW9uIG9wZXJhdGlvbiwgUgogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmNhblNtYXJ0
UmVwbGFjZSgpKQogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19h
dG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJhcHBsaWNhdGlvbi92bmQud2Via2l0Z3RrLnNtYXJ0
cGFzdGUiKSwgMCwgRHJhZ1RhcmdldFR5cGU6OlNtYXJ0UGFzdGUpOwogCi0gICAgbV9kcmFnID0g
Z3RrX2RyYWdfYmVnaW5fd2l0aF9jb29yZGluYXRlcyhtX3dlYlZpZXcsIGxpc3QuZ2V0KCksIGRy
YWdPcGVyYXRpb25Ub0dka0RyYWdBY3Rpb25zKG9wZXJhdGlvbiksIEdES19CVVRUT05fUFJJTUFS
WSwgbnVsbHB0ciwgLTEsIC0xKTsKKyAgICBtX2RyYWcgPSBndGtfZHJhZ19iZWdpbl93aXRoX2Nv
b3JkaW5hdGVzKG1fd2ViVmlldywgbGlzdC5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0Fj
dGlvbnMob3BlcmF0aW9uTWFzayksIEdES19CVVRUT05fUFJJTUFSWSwgbnVsbHB0ciwgLTEsIC0x
KTsKICAgICBpZiAoaW1hZ2UpIHsKICAgICAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1h
Z2VTdXJmYWNlKGltYWdlLT5jcmVhdGVDYWlyb1N1cmZhY2UoKSk7CiAgICAgICAgIC8vIFVzZSB0
aGUgY2VudGVyIG9mIHRoZSBkcmFnIGltYWdlIGFzIGhvdHNwb3QuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCmluZGV4IGQ4YjQzNTY5
MzRlZjUyODI0OTk2MTBlNzc5YWYwMmVlZDY4YmE4YjYuLmM2YWNiNWEyNzYyNDdhMjUwNDdiNmI0
MWI0ZjRkMmIxZjFmZjU3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIERyYWdTb3VyY2U6On5E
cmFnU291cmNlKCkKIHsKIH0KIAotdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+JiYgaW1hZ2UpCit2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEm
JiBzZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uTWFzaywg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBpbWFnZSkKIHsKICAgICBpZiAobV9kcmFnKSB7CiAg
ICAgICAgIGdka19kcmFnX2Ryb3BfZG9uZShtX2RyYWcuZ2V0KCksIEZBTFNFKTsKQEAgLTg5LDcg
Kzg5LDcgQEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9u
RGF0YSwgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24sIFIKICAgICBhdXRvKiBzdXJmYWNlID0gZ3Rr
X25hdGl2ZV9nZXRfc3VyZmFjZShndGtfd2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CiAg
ICAgYXV0byogZGV2aWNlID0gZ2RrX3NlYXRfZ2V0X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2Rl
ZmF1bHRfc2VhdChndGtfd2lkZ2V0X2dldF9kaXNwbGF5KG1fd2ViVmlldykpKTsKICAgICBHUmVm
UHRyPEdka0NvbnRlbnRQcm92aWRlcj4gcHJvdmlkZXIgPSBhZG9wdEdSZWYoZ2RrX2NvbnRlbnRf
cHJvdmlkZXJfbmV3X3VuaW9uKHByb3ZpZGVycy5kYXRhKCksIHByb3ZpZGVycy5zaXplKCkpKTsK
LSAgICBtX2RyYWcgPSBhZG9wdEdSZWYoZ2RrX2RyYWdfYmVnaW4oc3VyZmFjZSwgZGV2aWNlLCBw
cm92aWRlci5nZXQoKSwgZHJhZ09wZXJhdGlvblRvR2RrRHJhZ0FjdGlvbnMob3BlcmF0aW9uKSwg
MCwgMCkpOworICAgIG1fZHJhZyA9IGFkb3B0R1JlZihnZGtfZHJhZ19iZWdpbihzdXJmYWNlLCBk
ZXZpY2UsIHByb3ZpZGVyLmdldCgpLCBkcmFnT3BlcmF0aW9uVG9HZGtEcmFnQWN0aW9ucyhvcGVy
YXRpb25NYXNrKSwgMCwgMCkpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kcmFnLmdldCgpLCAi
ZG5kLWZpbmlzaGVkIiwgR19DQUxMQkFDSygrW10oR2RrRHJhZyogZ3RrRHJhZywgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKICAgICAgICAgYXV0byYgZHJhZyA9ICpzdGF0aWNfY2FzdDxEcmFnU291cmNl
Kj4odXNlckRhdGEpOwogICAgICAgICBpZiAoZHJhZy5tX2RyYWcuZ2V0KCkgIT0gZ3RrRHJhZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKaW5kZXggOGMz
YjEwZTEwNTBjMThkOGUxODE0NDJjOTg0ZDkwMjQ5Y2E4N2FjMC4uYTAwNDUwMGIwZGVmNjljOGQ4
NWU2NGIyNWY3MjFiZDk4MDFjMTFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9Ecm9wVGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0LmgKQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gbV9wb3NpdGlvbjsKICAgICB1bnNpZ25lZCBtX2RhdGFSZXF1
ZXN0Q291bnQgeyAwIH07CiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4gbV9z
ZWxlY3Rpb25EYXRhOwotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gbV9vcGVyYXRpb24geyBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSB9OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdP
cGVyYXRpb24+IG1fb3BlcmF0aW9uOwogI2lmIFVTRShHVEs0KQogICAgIEdSZWZQdHI8R0NhbmNl
bGxhYmxlPiBtX2NhbmNlbGxhYmxlOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggYzEzYjI5YjMxZGM1NThiZTIw
ZWNkZWEzN2UwZmNjMzUyOTc0ZDUxMy4uODA5MGVhYzdlNDEwNDAyNjE4ODcwZWIwZTBhMTI0MWVk
NGYwZGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmRpZFBl
cmZvcm1BY3Rpb24oKQogICAgIEFTU0VSVChwYWdlKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0g
cGFnZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKTsKLSAgICBpZiAob3BlcmF0aW9uID09IG1fb3Bl
cmF0aW9uKQorICAgIGlmICgoIW9wZXJhdGlvbiAmJiAhbV9vcGVyYXRpb24pIHx8ICpvcGVyYXRp
b24gPT0gKm1fb3BlcmF0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBtX29wZXJhdGlvbiA9
IG9wZXJhdGlvbjsKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIERyb3BUYXJnZXQ6OmxlYXZlVGlt
ZXJGaXJlZCgpCiAgICAgYXV0byogcGFnZSA9IHdlYmtpdFdlYlZpZXdCYXNlR2V0UGFnZShXRUJL
SVRfV0VCX1ZJRVdfQkFTRShtX3dlYlZpZXcpKTsKICAgICBBU1NFUlQocGFnZSk7CiAKLSAgICBE
cmFnRGF0YSBkcmFnRGF0YSgmbV9zZWxlY3Rpb25EYXRhLnZhbHVlKCksICptX3Bvc2l0aW9uLCBj
b252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KG1fd2ViVmlldywgKm1fcG9zaXRpb24pLCBE
cmFnT3BlcmF0aW9uTm9uZSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoJm1fc2VsZWN0aW9uRGF0
YS52YWx1ZSgpLCAqbV9wb3NpdGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludCht
X3dlYlZpZXcsICptX3Bvc2l0aW9uKSwgeyB9KTsKICAgICBwYWdlLT5kcmFnRXhpdGVkKGRyYWdE
YXRhKTsKICAgICBwYWdlLT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAppbmRl
eCA1MWNhM2U3YjgyMTgyZjhiMDU4NjRhNGQ0NzE3Y2YxYmU1NGFkODQ1Li5kYjFlYzRmY2EyOTc1
NzBmYTUyNDJkMWM4ZjU0ODg1M2MwN2NkOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZv
aWQgRHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlvbigpCiAgICAgQVNTRVJUKHBhZ2UpOwogCiAg
ICAgYXV0byBvcGVyYXRpb24gPSBwYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOwotICAgIGlm
IChvcGVyYXRpb24gPT0gbV9vcGVyYXRpb24pCisgICAgaWYgKCghb3BlcmF0aW9uICYmICFtX29w
ZXJhdGlvbikgfHwgb3BlcmF0aW9uID09IG1fb3BlcmF0aW9uKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX29wZXJhdGlvbiA9IG9wZXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNjVlNjljMmM1NmVlNGM1MDMz
OWQzNzM0NTM3MTU0NDE2M2NmZjkyZC4uMGFlZTRiYzkzODBjYjQ3Y2E0OTAwZDg1NTZkNTFlMjRk
OGYxNGJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5jcHAKQEAgLTMyMCw5ICszMjAsOSBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogfQogCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKLXZvaWQgUGFnZUNsaWVudEltcGw6OnN0YXJ0RHJhZyhTZWxlY3Rpb25E
YXRhJiYgc2VsZWN0aW9uLCBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24sIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFn
KFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb24sIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBkcmFn
T3BlcmF0aW9uTWFzaywgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpCiB7Ci0g
ICAgd2Via2l0V2ViVmlld0Jhc2VTdGFydERyYWcoV0VCS0lUX1dFQl9WSUVXX0JBU0UobV92aWV3
V2lkZ2V0KSwgV1RGTW92ZShzZWxlY3Rpb24pLCBkcmFnT3BlcmF0aW9uLCBXVEZNb3ZlKGRyYWdJ
bWFnZSkpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdFQktJVF9XRUJfVklFV19C
QVNFKG1fdmlld1dpZGdldCksIFdURk1vdmUoc2VsZWN0aW9uKSwgZHJhZ09wZXJhdGlvbk1hc2ss
IFdURk1vdmUoZHJhZ0ltYWdlKSk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFBlcmZv
cm1EcmFnQ29udHJvbGxlckFjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggZWQzOWU3NGRkZThkOTZhYjg1NGMzYmViYTA1
NTkzMGFiYjU2YzgyNi4uMjcwMDk5ODI2YjdiZWM1ZTMyYTZjYzA1YzQxZjFmYzE0ZWM1OThiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
aApAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFu
Z2UoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90
KE9wdGlvbmFsPFdlYkNvcmU6OkludFJlY3Q+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCi0gICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFn
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYm
LCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFJlZlB0cjxTaGFyZWFibGVCaXRt
YXA+JiYgZHJhZ0ltYWdlKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbigpIG92ZXJyaWRlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggNjM4ZWMxZjM0
Zjk5YTJiOGI0MWFiZmViZmMzYmZkYzhhM2I5NDNkYS4uNWNmNDJkYTVlMGEwODg4Y2MzZWZkNThm
NzE1ZWQyOTI5MTVhNmIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTIwNjEsMTMgKzIwNjEsMTMgQEAgdm9p
ZCB3ZWJraXRXZWJWaWV3QmFzZVNldFRvb2x0aXBBcmVhKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJW
aWV3QmFzZSwgY29uc3QgSW50UmUKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lk
IHdlYmtpdFdlYlZpZXdCYXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFz
ZSwgU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIERyYWdPcGVyYXRpb24gZHJhZ09wZXJh
dGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBpbWFnZSkKK3ZvaWQgd2Via2l0V2ViVmll
d0Jhc2VTdGFydERyYWcoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBTZWxlY3Rpb25E
YXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRp
b25NYXNrLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGltYWdlKQogewogICAgIFdlYktpdFdl
YlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdlYlZpZXdCYXNlLT5wcml2OwogICAgIGlmICghcHJp
di0+ZHJhZ1NvdXJjZSkKICAgICAgICAgcHJpdi0+ZHJhZ1NvdXJjZSA9IG1ha2VVbmlxdWU8RHJh
Z1NvdXJjZT4oR1RLX1dJREdFVCh3ZWJWaWV3QmFzZSkpOwogCi0gICAgcHJpdi0+ZHJhZ1NvdXJj
ZS0+YmVnaW4oV1RGTW92ZShzZWxlY3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbiwgV1RGTW92ZShp
bWFnZSkpOworICAgIHByaXYtPmRyYWdTb3VyY2UtPmJlZ2luKFdURk1vdmUoc2VsZWN0aW9uRGF0
YSksIGRyYWdPcGVyYXRpb25NYXNrLCBXVEZNb3ZlKGltYWdlKSk7CiAKICNpZiAhVVNFKEdUSzQp
CiAgICAgLy8gQSBkcmFnIHN0YXJ0aW5nIHNob3VsZCBwcmV2ZW50IGEgZG91YmxlLWNsaWNrIGZy
b20gaGFwcGVuaW5nLiBUaGlzIG1pZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUuaAppbmRleCAxYzRkZjEy
N2VjNDhkNTc1NTY0ZGIwNDNmYjdhZjk1OTBmN2NjNzI0Li5lYjdmODZlMDhlNzM2YWI3MDdiYTYx
OTYwOTllNmUyOTliNjZjZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlLmgKQEAgLTgyLDcgKzgyLDcg
QEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZURpZFJlbGF1bmNoV2ViUHJvY2VzcyhXZWJLaXRXZWJW
aWV3QmFzZSopOwogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVBhZ2VDbG9zZWQoV2ViS2l0V2ViVmll
d0Jhc2UqKTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi12b2lkIHdlYmtpdFdlYlZpZXdC
YXNlU3RhcnREcmFnKFdlYktpdFdlYlZpZXdCYXNlKiwgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYm
LCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+
JiYpOwordm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSos
IFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+LCBSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+JiYpOwogdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZURpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXZWJLaXRXZWJWaWV3QmFzZSop
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KaW5kZXggMmUzOWVhNmNmZTgwMWUwODAxZTQ1YmZhODdjMDkzYzg5ZDI0YTBjMi4uNjliNjJk
ZTI1MmYxZDMwZjkyYjUxODE3Njg2YmYxMDgyZDg0MDQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTM5MTMsNyArMzkxMyw3IEBAIHZvaWQg
V2ViVmlld0ltcGw6OmRyYWdnZWRJbWFnZShOU0ltYWdlICosIENHUG9pbnQgZW5kUG9pbnQsIE5T
RHJhZ09wZXJhdGlvbiBvcGVyCiAgICAgc2VuZERyYWdFbmRUb1BhZ2UoZW5kUG9pbnQsIG9wZXJh
dGlvbik7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnNlbmREcmFnRW5kVG9QYWdlKENHUG9pbnQg
ZW5kUG9pbnQsIE5TRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24pCit2b2lkIFdlYlZpZXdJbXBsOjpz
ZW5kRHJhZ0VuZFRvUGFnZShDR1BvaW50IGVuZFBvaW50LCBOU0RyYWdPcGVyYXRpb24gZHJhZ09w
ZXJhdGlvbk1hc2spCiB7CiAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
ICAgICBOU1BvaW50IHdpbmRvd0ltYWdlTG9jID0gW1ttX3ZpZXcgd2luZG93XSBjb252ZXJ0U2Ny
ZWVuVG9CYXNlOk5TUG9pbnRGcm9tQ0dQb2ludChlbmRQb2ludCldOwpAQCAtMzkyMyw3ICszOTIz
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2VuZERyYWdFbmRUb1BhZ2UoQ0dQb2ludCBlbmRQb2lu
dCwgTlNEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbikKICAgICAvLyBQcmV2ZW50IHF1ZXVlZCBtb3Vz
ZURyYWdnZWQgZXZlbnRzIGZyb20gY29taW5nIGFmdGVyIHRoZSBkcmFnIGFuZCBmYWtlIG1vdXNl
VXAgZXZlbnQuCiAgICAgbV9pZ25vcmVzTW91c2VEcmFnZ2VkRXZlbnRzID0gdHJ1ZTsKIAotICAg
IG1fcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50KHdpbmRvd01vdXNlTG9jKSwgV2Vi
Q29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xvYmFsUG9pbnQod2luZG93TW91c2VMb2MsIFttX3Zp
ZXcgd2luZG93XSkpLCBvcGVyYXRpb24pOworICAgIG1fcGFnZS0+ZHJhZ0VuZGVkKFdlYkNvcmU6
OkludFBvaW50KHdpbmRvd01vdXNlTG9jKSwgV2ViQ29yZTo6SW50UG9pbnQoV2ViQ29yZTo6Z2xv
YmFsUG9pbnQod2luZG93TW91c2VMb2MsIFttX3ZpZXcgd2luZG93XSkpLCBjb3JlRHJhZ09wZXJh
dGlvbk1hc2soZHJhZ09wZXJhdGlvbk1hc2spKTsKIH0KIAogc3RhdGljIFdlYkNvcmU6OkRyYWdB
cHBsaWNhdGlvbkZsYWdzIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKE5TVmlldyAqdmlldywgaWQg
PE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCkBAIC0zOTQ3LDcgKzM5NDcsNyBAQCBOU0Ry
YWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdnaW5nRW50ZXJlZChpZCA8TlNEcmFnZ2luZ0lu
Zm8+IGRyYWdnaW5nSW5mbykKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBj
b252ZXJ0UG9pbnQ6ZHJhZ2dpbmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7
CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdn
aW5nSW5mby5kcmFnZ2luZ0xvY2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKICAgICBhdXRvIGRy
YWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayhb
bV92aWV3IF93ZWJfZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uRm9yRHJhZ2dpbmdJbmZvOmRyYWdnaW5n
SW5mb10pOwotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNrID0gY29yZURyYWdPcGVyYXRpb25NYXNrKGRy
YWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOwogICAgIFdlYkNvcmU6OkRy
YWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGRyYWdPcGVyYXRp
b25NYXNrLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCks
IGRyYWdnaW5nSW5mbyksIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2spOwogCiAgICAgbV9wYWdl
LT5yZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKTsKQEAgLTM5NTYsMTggKzM5NTYsNDIgQEAg
TlNEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnZ2luZ0VudGVyZWQoaWQgPE5TRHJhZ2dp
bmdJbmZvPiBkcmFnZ2luZ0luZm8pCiAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNvcHk7CiB9
CiAKK3N0YXRpYyBOU0RyYWdPcGVyYXRpb24ga2l0KE9wdGlvbmFsPFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24+IGRyYWdPcGVyYXRpb24pCit7CisgICAgaWYgKCFkcmFnT3BlcmF0aW9uKQorICAgICAg
ICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTm9uZTsKKworICAgIHN3aXRjaCAoKmRyYWdPcGVyYXRp
b24pIHsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Db3B5OgorICAgICAgICByZXR1
cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25M
aW5rOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTGluazsKKyAgICBjYXNlIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25HZW5lcmljOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9u
R2VuZXJpYzsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Qcml2YXRlOgorICAgICAg
ICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBjYXNlIFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICBj
YXNlIFdlYkNvcmU6OkRyYWdPcGVyYXRpb25EZWxldGU6CisgICAgICAgIHJldHVybiBOU0RyYWdP
cGVyYXRpb25EZWxldGU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7Cit9CisKIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3
SW1wbDo6ZHJhZ2dpbmdVcGRhdGVkKGlkIDxOU0RyYWdnaW5nSW5mbz4gZHJhZ2dpbmdJbmZvKQog
ewogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVudChbbV92aWV3IGNvbnZlcnRQb2ludDpkcmFn
Z2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiBmcm9tVmlldzpuaWxdKTsKICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoZHJhZ2dpbmdJbmZvLmRyYWdnaW5n
TG9jYXRpb24sIFttX3ZpZXcgd2luZG93XSkpOwogICAgIGF1dG8gZHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uTWFzayA9IGNvcmVEcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrKFttX3ZpZXcgX3dlYl9kcmFn
RGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgYXV0
byBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spOworICAgIGF1dG8gZHJh
Z09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzayk7CiAgICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEo
ZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgZHJhZ09wZXJhdGlvbk1hc2ssIGFwcGxpY2F0
aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSwg
ZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFzayk7CiAgICAgbV9wYWdlLT5kcmFnVXBkYXRlZChkcmFn
RGF0YSwgZHJhZ2dpbmdJbmZvLmRyYWdnaW5nUGFzdGVib2FyZC5uYW1lKTsKIAogICAgIE5TSW50
ZWdlciBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wID0gbV9wYWdlLT5jdXJyZW50RHJhZ051bWJl
ck9mRmlsZXNUb0JlQWNjZXB0ZWQoKTsKIAotICAgIGlmIChtX3BhZ2UtPmN1cnJlbnREcmFnT3Bl
cmF0aW9uKCkgPT0gV2ViQ29yZTo6RHJhZ09wZXJhdGlvbk5vbmUpCisgICAgaWYgKCFtX3BhZ2Ut
PmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpCiAgICAgICAgIG51bWJlck9mVmFsaWRJdGVtc0ZvckRy
b3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwogCiAgICAgTlNEcmFnZ2lu
Z0Zvcm1hdGlvbiBkcmFnZ2luZ0Zvcm1hdGlvbiA9IE5TRHJhZ2dpbmdGb3JtYXRpb25Ob25lOwpA
QCAtMzk3OSwxNCArNDAwMywxNCBAQCBOU0RyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdn
aW5nVXBkYXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKICAgICBpZiAoZHJh
Z2dpbmdJbmZvLmRyYWdnaW5nRm9ybWF0aW9uICE9IGRyYWdnaW5nRm9ybWF0aW9uKQogICAgICAg
ICBbZHJhZ2dpbmdJbmZvIHNldERyYWdnaW5nRm9ybWF0aW9uOmRyYWdnaW5nRm9ybWF0aW9uXTsK
IAotICAgIHJldHVybiBtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCk7CisgICAgcmV0dXJu
IGtpdChtX3BhZ2UtPmN1cnJlbnREcmFnT3BlcmF0aW9uKCkpOwogfQogCiB2b2lkIFdlYlZpZXdJ
bXBsOjpkcmFnZ2luZ0V4aXRlZChpZCA8TlNEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbykKIHsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW21fdmlldyBjb252ZXJ0UG9pbnQ6ZHJhZ2dp
bmdJbmZvLmRyYWdnaW5nTG9jYXRpb24gZnJvbVZpZXc6bmlsXSk7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgZ2xvYmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KGRyYWdnaW5nSW5mby5kcmFnZ2luZ0xv
Y2F0aW9uLCBbbV92aWV3IHdpbmRvd10pKTsKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPihkcmFnZ2luZ0luZm8uZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKSwgYXBw
bGljYXRpb25GbGFnc0ZvckRyYWcobV92aWV3LmdldEF1dG9yZWxlYXNlZCgpLCBkcmFnZ2luZ0lu
Zm8pKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVu
dCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzayksIGFwcGxpY2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRv
cmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZvKSk7CiAgICAgbV9wYWdlLT5kcmFnRXhpdGVkKGRyYWdE
YXRhLCBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLm5hbWUpOwogICAgIG1fcGFnZS0+
cmVzZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgZHJhZ2dpbmdJbmZvLm51bWJlck9m
VmFsaWRJdGVtc0ZvckRyb3AgPSBtX2luaXRpYWxOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wOwpA
QCAtNDAwMiw3ICs0MDI2LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6cGVyZm9ybURyYWdPcGVyYXRp
b24oaWQgPE5TRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm8pCiB7CiAgICAgV2ViQ29yZTo6SW50
UG9pbnQgY2xpZW50KFttX3ZpZXcgY29udmVydFBvaW50OmRyYWdnaW5nSW5mby5kcmFnZ2luZ0xv
Y2F0aW9uIGZyb21WaWV3Om5pbF0pOwogICAgIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbChXZWJD
b3JlOjpnbG9iYWxQb2ludChkcmFnZ2luZ0luZm8uZHJhZ2dpbmdMb2NhdGlvbiwgW21fdmlldyB3
aW5kb3ddKSk7Ci0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgKmRyYWdEYXRhID0gbmV3IFdlYkNvcmU6
OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19jYXN0PFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24+KGRyYWdnaW5nSW5mby5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2spLCBhcHBsaWNhdGlvbkZsYWdzRm9yRHJhZyhtX3ZpZXcuZ2V0QXV0b3JlbGVhc2VkKCksIGRy
YWdnaW5nSW5mbykpOworICAgIFdlYkNvcmU6OkRyYWdEYXRhICpkcmFnRGF0YSA9IG5ldyBXZWJD
b3JlOjpEcmFnRGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJh
dGlvbk1hc2soZHJhZ2dpbmdJbmZvLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIGFwcGxp
Y2F0aW9uRmxhZ3NGb3JEcmFnKG1fdmlldy5nZXRBdXRvcmVsZWFzZWQoKSwgZHJhZ2dpbmdJbmZv
KSk7CiAKICAgICBOU0FycmF5ICp0eXBlcyA9IGRyYWdnaW5nSW5mby5kcmFnZ2luZ1Bhc3RlYm9h
cmQudHlwZXM7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggYWM1ZDkwZWI1Mzlm
YjAwNjUyNjU1NThlMmU5NDYxNWE4NzRmYTZjYi4uMmU2NjYyOGFiNWM3MDhmZmYxMjEwZTU4N2Nk
NGE4NTI5YjgwZTgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjUw
LDcgKzI1MCw3IEBAIHB1YmxpYzoKICAgICAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogI2lm
IFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OlNlbGVj
dGlvbkRhdGEmJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4mJiBkcmFnSW1hZ2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6
OlNlbGVjdGlvbkRhdGEmJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+LCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgPSAwOwogI2Vsc2UKICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdJdGVtJiwgY29uc3QgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUmKSB7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggZDNjZDNiNWZmNGU5MWEyZmQ0NzM5NDA0NGU0ODdjODc5YjZlNDFh
NC4uZjEwMTFiYWNlMmE1M2M5M2ExNDFlNzljNGIzNmE2YTI0NzFkMDM2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNDI0LDExICsyNDI0LDkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxl
ckFjdGlvbiBhY3Rpb24sIERyYWcKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYkNv
cmU6OkRyYWdIYW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092
ZXJGaWxlSW5wdXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IElu
dFJlY3QmIGluc2VydGlvblJlY3QsIGNvbnN0IEludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3Qp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKE9wdGlv
bmFsPFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb24sIFdlYkNvcmU6OkRyYWdI
YW5kbGluZ01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5w
dXQsIHVuc2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIGNvbnN0IEludFJlY3QmIGlu
c2VydGlvblJlY3QsIGNvbnN0IEludFJlY3QmIGVkaXRhYmxlRWxlbWVudFJlY3QpCiB7Ci0gICAg
TUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGRyYWdPcGVyYXRpb24gPD0gRHJhZ09wZXJhdGlvbkRl
bGV0ZSk7Ci0KLSAgICBtX2N1cnJlbnREcmFnT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8RHJhZ09w
ZXJhdGlvbj4oZHJhZ09wZXJhdGlvbik7CisgICAgbV9jdXJyZW50RHJhZ09wZXJhdGlvbiA9IGRy
YWdPcGVyYXRpb247CiAgICAgbV9jdXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kID0gZHJhZ0hhbmRs
aW5nTWV0aG9kOwogICAgIG1fY3VycmVudERyYWdJc092ZXJGaWxlSW5wdXQgPSBtb3VzZUlzT3Zl
ckZpbGVJbnB1dDsKICAgICBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCA9
IG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQ7CkBAIC0yNDM4LDIwICsyNDM2LDIwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgZHJh
Z09wZXJhdGlvbiwgV2ViQ29yCiB9CiAKICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2VQ
cm94eTo6c3RhcnREcmFnKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhLCB1aW50NjRfdCBk
cmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFu
ZGxlKQordm9pZCBXZWJQYWdlUHJveHk6OnN0YXJ0RHJhZyhTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdPcGVyYXRpb25N
YXNrLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlKQogewog
ICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSA9ICFkcmFnSW1hZ2VIYW5kbGUu
aXNOdWxsKCkgPyBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShkcmFnSW1hZ2VIYW5kbGUpIDogbnVs
bHB0cjsKLSAgICBwYWdlQ2xpZW50KCkuc3RhcnREcmFnKFdURk1vdmUoc2VsZWN0aW9uRGF0YSks
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24pLCBXVEZN
b3ZlKGRyYWdJbWFnZSkpOworICAgIHBhZ2VDbGllbnQoKS5zdGFydERyYWcoV1RGTW92ZShzZWxl
Y3Rpb25EYXRhKSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdURk1vdmUoZHJhZ0ltYWdlKSk7CiAKICAg
ICBkaWRTdGFydERyYWcoKTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0Vu
ZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0Vu
ZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gZHJhZ09wZXJhdGlv
bk1hc2spCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBn
bG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgZHJhZ09wZXJhdGlvbk1h
c2spKTsKICAgICBzZXREcmFnQ2FyZXRSZWN0KHsgfSk7CiB9CiAKQEAgLTI0ODIsNyArMjQ4MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmREcmFnZ2luZygpCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXNldEN1cnJlbnREcmFnSW5mb3JtYXRpb24oKQogewotICAgIG1fY3VycmVudERyYWdP
cGVyYXRpb24gPSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBtX2N1cnJlbnREcmFn
T3BlcmF0aW9uID0gV1RGOjpudWxsb3B0OwogICAgIG1fY3VycmVudERyYWdIYW5kbGluZ01ldGhv
ZCA9IERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZTsKICAgICBtX2N1cnJlbnREcmFnSXNPdmVyRmls
ZUlucHV0ID0gZmFsc2U7CiAgICAgbV9jdXJyZW50RHJhZ051bWJlck9mRmlsZXNUb0JlQWNjZXB0
ZWQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjNDcxMjYw
MjE0OGRlMDMyM2Y0YzZiZWQ4NjY1MzE1MGM5OWNkMjJhLi44NzA2NGNmY2Y2N2M1YTgyNzM5YjQx
ODNmOGJiODk5NWY5ZTkxNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTE1Nyw4ICsxMTU3LDggQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybURyYWdPcGVy
YXRpb24oV2ViQ29yZTo6RHJhZ0RhdGEmLCBjb25zdCBTdHJpbmcmIGRyYWdTdG9yYWdlTmFtZSwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
JiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybURyYWdPcGVyYXRpb24oYm9vbCBoYW5kbGVkKTsKIAot
ICAgIHZvaWQgZGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVy
YXRpb24sIFdlYkNvcmU6OkRyYWdIYW5kbGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJ
bnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWRpdGFibGVF
bGVtZW50UmVjdCk7Ci0gICAgdm9pZCBkcmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24s
IHVpbnQ2NF90IG9wZXJhdGlvbik7CisgICAgdm9pZCBkaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4sIFdlYkNvcmU6OkRyYWdIYW5k
bGluZ01ldGhvZCwgYm9vbCBtb3VzZUlzT3ZlckZpbGVJbnB1dCwgdW5zaWduZWQgbnVtYmVyT2ZJ
dGVtc1RvQmVBY2NlcHRlZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5zZXJ0aW9uUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZWRpdGFibGVFbGVtZW50UmVjdCk7CisgICAgdm9pZCBk
cmFnRW5kZWQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPik7CiAgICAgdm9pZCBkaWRTdGFydERyYWcoKTsKICAgICB2b2lkIGRyYWdDYW5j
ZWxsZWQoKTsKICAgICB2b2lkIHNldERyYWdDYXJldFJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpOwpAQCAtMTE2OCw3ICsxMTY4LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHZpc2libGVVUkwsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBhcmNoaXZlSGFuZGxlLCB1
aW50NjRfdCBhcmNoaXZlU2l6ZSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgdm9p
ZCBzdGFydERyYWcoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmLCB1aW50NjRfdCBkcmFnT3BlcmF0
aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsKKyAgICB2b2lk
IHN0YXJ0RHJhZyhXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYsIE9wdGlvblNldDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPiwgY29uc3QgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZSk7
CiAjZW5kaWYKICNlbmRpZgogCkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQotICAgIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24gY3VycmVudERyYWdPcGVyYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CisgICAgT3B0aW9uYWw8
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY3VycmVudERyYWdPcGVyYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2N1cnJlbnREcmFnT3BlcmF0aW9uOyB9CiAgICAgV2ViQ29yZTo6RHJhZ0hhbmRsaW5n
TWV0aG9kIGN1cnJlbnREcmFnSGFuZGxpbmdNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2N1cnJl
bnREcmFnSGFuZGxpbmdNZXRob2Q7IH0KICAgICBib29sIGN1cnJlbnREcmFnSXNPdmVyRmlsZUlu
cHV0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50RHJhZ0lzT3ZlckZpbGVJbnB1dDsgfQogICAg
IHVuc2lnbmVkIGN1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudERyYWdOdW1iZXJPZkZpbGVzVG9CZUFjY2VwdGVkOyB9CkBAIC0yNjA4
LDcgKzI2MDgsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgLy8g
Q3VycmVudCBkcmFnIGRlc3RpbmF0aW9uIGRldGFpbHMgYXJlIGRlbGl2ZXJlZCBhcyBhbiBhc3lu
Y2hyb25vdXMgcmVzcG9uc2UsCiAgICAgLy8gc28gd2UgcHJlc2VydmUgdGhlbSB0byBiZSB1c2Vk
IHdoZW4gdGhlIG5leHQgZHJhZ2dpbmcgZGVsZWdhdGUgY2FsbCBpcyBtYWRlLgotICAgIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb24gbV9jdXJyZW50RHJhZ09wZXJhdGlvbiB7IFdlYkNvcmU6OkRyYWdP
cGVyYXRpb25Ob25lIH07CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gbV9j
dXJyZW50RHJhZ09wZXJhdGlvbjsKICAgICBXZWJDb3JlOjpEcmFnSGFuZGxpbmdNZXRob2QgbV9j
dXJyZW50RHJhZ0hhbmRsaW5nTWV0aG9kIHsgV2ViQ29yZTo6RHJhZ0hhbmRsaW5nTWV0aG9kOjpO
b25lIH07CiAgICAgYm9vbCBtX2N1cnJlbnREcmFnSXNPdmVyRmlsZUlucHV0IHsgZmFsc2UgfTsK
ICAgICB1bnNpZ25lZCBtX2N1cnJlbnREcmFnTnVtYmVyT2ZGaWxlc1RvQmVBY2NlcHRlZCB7IDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgppbmRleCA0OTFhMzUzOTFkYzYzOTg4ZGQxYjIxMzMwNGY0MTk0M2RhYzRlZTZjLi44MzUwOGU4
OWU0NTYwOGYyYTRmZjExMTliYzkxZTJlMjU1MGQ0MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMTAsNyArMzEwLDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgRHJhZyBhbmQgZHJvcCBtZXNzYWdl
cwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgRGlkUGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGVudW06dWludDhfdCBXZWJDb3JlOjpEcmFn
SGFuZGxpbmdNZXRob2QgZHJhZ0hhbmRsaW5nTWV0aG9kLCBib29sIG1vdXNlSXNPdmVyRmlsZUlu
cHV0LCB1bnNpZ25lZCBudW1iZXJPZkl0ZW1zVG9CZUFjY2VwdGVkLCBXZWJDb3JlOjpJbnRSZWN0
IGluc2VydGlvblJlY3QsIFdlYkNvcmU6OkludFJlY3QgZWRpdGFibGVFbGVtZW50UmVjdCkKKyAg
ICBEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4gZHJhZ09wZXJhdGlvbiwgZW51bTp1aW50OF90IFdlYkNvcmU6OkRyYWdIYW5kbGlu
Z01ldGhvZCBkcmFnSGFuZGxpbmdNZXRob2QsIGJvb2wgbW91c2VJc092ZXJGaWxlSW5wdXQsIHVu
c2lnbmVkIG51bWJlck9mSXRlbXNUb0JlQWNjZXB0ZWQsIFdlYkNvcmU6OkludFJlY3QgaW5zZXJ0
aW9uUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBlZGl0YWJsZUVsZW1lbnRSZWN0KQogICAgIERpZEVu
ZERyYWdnaW5nKCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKQEAgLTMxOCw3ICszMTgsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewog
ICAgIFNldFByb21pc2VkRGF0YUZvckltYWdlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBpbWFnZUhhbmRsZSwgdWludDY0X3QgaW1hZ2VTaXplLCBT
dHJpbmcgZmlsZW5hbWUsIFN0cmluZyBleHRlbnNpb24sIFN0cmluZyB0aXRsZSwgU3RyaW5nIHVy
bCwgU3RyaW5nIHZpc2libGVVUkwsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgYXJjaGl2
ZUhhbmRsZSwgdWludDY0X3QgYXJjaGl2ZVNpemUpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEsp
ICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgU3RhcnREcmFnKFdlYkNvcmU6OlNlbGVjdGlv
bkRhdGEgc2VsZWN0aW9uRGF0YSwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViS2l0OjpTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCisgICAgU3RhcnREcmFnKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGEgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRp
b24+IGRyYWdPcGVyYXRpb25NYXNrLCBXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGRy
YWdJbWFnZSkKICNlbmRpZgogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IDQzOWRiOTk3N2VlMmMzMTk0YTZkZTgyNzZkMTMyNWFjOGRiYjgwYmEuLjcyNjY2OGU2
ZGZjMzA5ZWRjYzBjOTQyNDUxNmM2NTE1ODI0Mjc4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNzI4
NSw3ICs3Mjg1LDcgQEAgLSAodm9pZClfZGlkSGFuZGxlRHJhZ1N0YXJ0UmVxdWVzdDooQk9PTClz
dGFydGVkCiAgICAgICAgIGlmIChzdGFydGVkKSB7CiAgICAgICAgICAgICAvLyBBIGNsaWVudCBv
ZiB0aGUgT2JqZWN0aXZlIEMgU1BJIG9yIFVJS2l0IG1pZ2h0IGhhdmUgcHJldmVudGVkIHRoZSBk
cmFnIGZyb20gYmVnaW5uaW5nIGVudGlyZWx5IGluIHRoZSBVSSBwcm9jZXNzLCBpbiB3aGljaCBj
YXNlCiAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGJhbGFuY2UgdGhlIGBkcmFnc3RhcnRgIGV2
ZW50IHdpdGggYSBgZHJhZ2VuZGAuCi0gICAgICAgICAgICBfcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0
aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFnRW5kLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9u
Tm9uZSk7CisgICAgICAgICAgICBfcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwg
cG9zaXRpb25Gb3JEcmFnRW5kLCB7IH0pOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzMwMywy
NCArNzMwMyw0MiBAQCAtICh2b2lkKWNvbXB1dGVDbGllbnRBbmRHbG9iYWxQb2ludHNGb3JEcm9w
U2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gbwogICAgICAgICAqb3V0R2xvYmFs
UG9pbnQgPSBsb2NhdGlvbkluQ29udGVudFZpZXc7CiB9CiAKLXN0YXRpYyBVSURyb3BPcGVyYXRp
b24gZHJvcE9wZXJhdGlvbkZvcldlYkNvcmVEcmFnT3BlcmF0aW9uKFdlYkNvcmU6OkRyYWdPcGVy
YXRpb24gb3BlcmF0aW9uKQorc3RhdGljIFVJRHJvcE9wZXJhdGlvbiBkcm9wT3BlcmF0aW9uRm9y
V2ViQ29yZURyYWdPcGVyYXRpb24oT3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gb3Bl
cmF0aW9uKQogewotICAgIGlmIChvcGVyYXRpb24gJiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92
ZSkKLSAgICAgICAgcmV0dXJuIFVJRHJvcE9wZXJhdGlvbk1vdmU7Ci0KLSAgICBpZiAob3BlcmF0
aW9uICYgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNvcHkpCi0gICAgICAgIHJldHVybiBVSURyb3BP
cGVyYXRpb25Db3B5OwotCisgICAgaWYgKG9wZXJhdGlvbikgeworICAgICAgICBpZiAoKm9wZXJh
dGlvbiA9PSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgICAgIHJldHVybiBV
SURyb3BPcGVyYXRpb25Nb3ZlOworICAgICAgICBpZiAoKm9wZXJhdGlvbiA9PSBXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgICAgIHJldHVybiBVSURyb3BPcGVyYXRpb25Db3B5
OworICAgIH0KICAgICByZXR1cm4gVUlEcm9wT3BlcmF0aW9uQ2FuY2VsOwogfQogCitzdGF0aWMg
T3B0aW9uYWw8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gY29yZURyYWdPcGVyYXRpb25Gb3JVSURy
b3BPcGVyYXRpb24oVUlEcm9wT3BlcmF0aW9uIGRyb3BPcGVyYXRpb24pCit7CisgICAgc3dpdGNo
IChkcm9wT3BlcmF0aW9uKSB7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25DYW5jZWw6CisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgY2FzZSBVSURyb3BPcGVyYXRpb25Gb3JiaWRk
ZW46CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBj
YXNlIFVJRHJvcE9wZXJhdGlvbkNvcHk6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uQ29weTsKKyAgICBjYXNlIFVJRHJvcE9wZXJhdGlvbk1vdmU6CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogLSAoV2ViQ29yZTo6RHJhZ0Rh
dGEpZHJhZ0RhdGFGb3JEcm9wU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gZHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uOihXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVzdGluYXRp
b25BY3Rpb24KIHsKICAgICBDR1BvaW50IGdsb2JhbDsKICAgICBDR1BvaW50IGNsaWVudDsKICAg
ICBbc2VsZiBjb21wdXRlQ2xpZW50QW5kR2xvYmFsUG9pbnRzRm9yRHJvcFNlc3Npb246c2Vzc2lv
biBvdXRDbGllbnRQb2ludDomY2xpZW50IG91dEdsb2JhbFBvaW50OiZnbG9iYWxdOwogCi0gICAg
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uTWFzayA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KHNlc3Npb24uYWxsb3dzTW92ZU9wZXJhdGlvbiA/IFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25FdmVyeSA6IChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRXZlcnkgJiB+
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpKTsKKyAgICBhdXRvIGRyYWdPcGVyYXRpb25NYXNr
ID0gV2ViQ29yZTo6YW55RHJhZ09wZXJhdGlvbigpOworICAgIGlmICghc2Vzc2lvbi5hbGxvd3NN
b3ZlT3BlcmF0aW9uKQorICAgICAgICBkcmFnT3BlcmF0aW9uTWFzay5yZW1vdmUoV2ViQ29yZTo6
RHJhZ09wZXJhdGlvbk1vdmUpOwogICAgIHJldHVybiB7IHNlc3Npb24sIFdlYkNvcmU6OnJvdW5k
ZWRJbnRQb2ludChjbGllbnQpLCBXZWJDb3JlOjpyb3VuZGVkSW50UG9pbnQoZ2xvYmFsKSwgZHJh
Z09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIFdlYktpdDo6Y29y
ZURyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2soZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKSB9OwogfQog
CkBAIC03NDI0LDcgKzc0NDIsOCBAQCAtICh2b2lkKV9kaWRQZXJmb3JtRHJhZ09wZXJhdGlvbjoo
Qk9PTCloYW5kbGVkCiAgICAgQ0dQb2ludCBjbGllbnQ7CiAgICAgW3NlbGYgY29tcHV0ZUNsaWVu
dEFuZEdsb2JhbFBvaW50c0ZvckRyb3BTZXNzaW9uOmRyb3BTZXNzaW9uIG91dENsaWVudFBvaW50
OiZjbGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdT
b3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRl
ZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBfcGFn
ZS0+Y3VycmVudERyYWdPcGVyYXRpb24oKSk7CisgICAgYXV0byBjdXJyZW50RHJhZ09wZXJhdGlv
biA9IF9wYWdlLT5jdXJyZW50RHJhZ09wZXJhdGlvbigpOworICAgIF9wYWdlLT5kcmFnRW5kZWQo
V2ViQ29yZTo6cm91bmRlZEludFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2lu
dChnbG9iYWwpLCBjdXJyZW50RHJhZ09wZXJhdGlvbiA/ICpjdXJyZW50RHJhZ09wZXJhdGlvbiA6
IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPih7IH0pKTsKIH0KIAogLSAodm9pZClf
ZGlkQ2hhbmdlRHJhZ0NhcmV0UmVjdDooQ0dSZWN0KXByZXZpb3VzUmVjdCBjdXJyZW50UmVjdDoo
Q0dSZWN0KXJlY3QKQEAgLTgwMTMsNyArODAzMiw3IEBAIC0gKHZvaWQpZHJhZ0ludGVyYWN0aW9u
OihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxBbmltYXRlTGlmdFdpdGhBbmlt
CiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhEcmFnQW5kRHJvcCwgIkRyYWcgc2Vzc2lvbiBlbmRl
ZCBhdCBzdGFydDogJXAiLCBzZXNzaW9uKTsKICAgICAgICAgICAgIC8vIFRoZSBsaWZ0IHdhcyBj
YW5jZWxlZCwgc28gLWRyb3BJbnRlcmFjdGlvbjpzZXNzaW9uRGlkRW5kOiB3aWxsIG5ldmVyIGJl
IGludm9rZWQuIFRoaXMgaXMgdGhlIGxhc3QgY2hhbmNlIHRvIGNsZWFuIHVwLgogICAgICAgICAg
ICAgW3Byb3RlY3RlZFNlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgICAg
ICAgICAgcGFnZS0+ZHJhZ0VuZGVkKHBvc2l0aW9uRm9yRHJhZ0VuZCwgcG9zaXRpb25Gb3JEcmFn
RW5kLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgICAgICAgICBwYWdlLT5kcmFn
RW5kZWQocG9zaXRpb25Gb3JEcmFnRW5kLCBwb3NpdGlvbkZvckRyYWdFbmQsIHsgfSk7CiAgICAg
ICAgIH0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgZWxzZQpAQCAtODA0OCw3
ICs4MDY3LDcgQEAgLSAodm9pZClkcmFnSW50ZXJhY3Rpb246KFVJRHJhZ0ludGVyYWN0aW9uICop
aW50ZXJhY3Rpb24gc2Vzc2lvbjooaWQgPFVJRHJhZ1Nlc3MKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgW3NlbGYgY2xlYW5VcERyYWdTb3VyY2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFn
RW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUu
YWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChf
ZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVzdGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBv
cGVyYXRpb24pOworICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KF9kcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuYWRqdXN0ZWRQb3NpdGlvbkZvckRyYWdFbmQoKSks
IFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChfZHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmFkanVz
dGVkUG9zaXRpb25Gb3JEcmFnRW5kKCkpLCBjb3JlRHJhZ09wZXJhdGlvbkZvclVJRHJvcE9wZXJh
dGlvbihvcGVyYXRpb24pKTsKIH0KIAogLSAoVUlUYXJnZXRlZERyYWdQcmV2aWV3ICopZHJhZ0lu
dGVyYWN0aW9uOihVSURyYWdJbnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHByZXZpZXdGb3JDYW5j
ZWxsaW5nSXRlbTooVUlEcmFnSXRlbSAqKWl0ZW0gd2l0aERlZmF1bHQ6KFVJVGFyZ2V0ZWREcmFn
UHJldmlldyAqKWRlZmF1bHRQcmV2aWV3CkBAIC04MjY3LDcgKzgyODYsNyBAQCAtICh2b2lkKWRy
b3BJbnRlcmFjdGlvbjooVUlEcm9wSW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBzZXNzaW9uRGlk
RW5kOihpZCA8VUlEcgogICAgIENHUG9pbnQgY2xpZW50OwogICAgIFtzZWxmIGNvbXB1dGVDbGll
bnRBbmRHbG9iYWxQb2ludHNGb3JEcm9wU2Vzc2lvbjpzZXNzaW9uIG91dENsaWVudFBvaW50OiZj
bGllbnQgb3V0R2xvYmFsUG9pbnQ6Jmdsb2JhbF07CiAgICAgW3NlbGYgY2xlYW5VcERyYWdTb3Vy
Y2VTZXNzaW9uU3RhdGVdOwotICAgIF9wYWdlLT5kcmFnRW5kZWQoV2ViQ29yZTo6cm91bmRlZElu
dFBvaW50KGNsaWVudCksIFdlYkNvcmU6OnJvdW5kZWRJbnRQb2ludChnbG9iYWwpLCBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uTm9uZSk7CisgICAgX3BhZ2UtPmRyYWdFbmRlZChXZWJDb3JlOjpyb3Vu
ZGVkSW50UG9pbnQoY2xpZW50KSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbCksIHsg
fSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggZWVk
N2I5OTY4NTczNmQ1ZDAxNjY5MDBkMWFjNmRlMDNhMjE2MTA1ZS4uNzRmNDZjY2JmMTEzZjdjNmJm
OTlhMmExODJiODhmNDE3YzMzMGMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3Bw
CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJdGVt
IGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYpCiAKICAgICBtX3BhZ2Ut
PndpbGxTdGFydERyYWcoKTsKIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTdGFydERyYWcoZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5zZWxlY3Rpb25EYXRhKCks
IGRhdGFUcmFuc2Zlci5zb3VyY2VPcGVyYXRpb24oKSwgaGFuZGxlKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlN0YXJ0RHJhZyhkYXRhVHJhbnNmZXIucGFzdGVi
b2FyZCgpLnNlbGVjdGlvbkRhdGEoKSwgZGF0YVRyYW5zZmVyLnNvdXJjZU9wZXJhdGlvbk1hc2so
KSwgaGFuZGxlKSk7CiB9CiAKIH07IC8vIG5hbWVzcGFjZSBXZWJLaXQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM3YTVkN2QyY2Q1M2ZkMmQ0
Njk4ZmI5OWZjODg3MjM5Nzg2NDY0YWQuLjNjMTdmOTA4ZTExZjY3MWZmYjc0MjAyYzRhNzExOTBi
MDFlNTZhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0zOTQ1LDIyICszOTQ1LDIyIEBAIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlciogV2ViUGFnZTo6bm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hCiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZTo6
cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvYmFsUG9z
aXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgU2VsZWN0aW9uRGF0
YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQzMl90IGZsYWdzKQordm9pZCBXZWJQYWdlOjpwZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwg
T3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgU2Vs
ZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEsIHVpbnQzMl90IGZsYWdzKQogewogICAgIGlmICgh
bV9wYWdlKSB7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9y
bURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBEcmFnSGFuZGxpbmdNZXRo
b2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51bGxvcHQs
IERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0aW9uRGF0YSwg
Y2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9u
PihkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRp
b25GbGFncz4oZmxhZ3MpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YSgmc2VsZWN0aW9uRGF0YSwg
Y2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1h
c2ssIHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlvbkZsYWdzPihmbGFncykpOwogICAgIHN3aXRj
aCAoYWN0aW9uKSB7CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6RW50ZXJlZDogewot
ICAgICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVkRHJhZ09wZXJhdGlvbiA9IG1fcGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAgICAgIGF1dG8gcmVzb2x2
ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRy
YWdEYXRhKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24ocmVzb2x2ZWREcmFnT3BlcmF0aW9uLCBtX3BhZ2UtPmRyYWdD
b250cm9sbGVyKCkuZHJhZ0hhbmRsaW5nTWV0aG9kKCksIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIo
KS5tb3VzZUlzT3ZlckZpbGVJbnB1dCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubnVtYmVy
T2ZJdGVtc1RvQmVBY2NlcHRlZCgpLCB7IH0sIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb246OlVwZGF0ZWQ6IHsKLSAgICAgICAgRHJh
Z09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250cm9sbGVy
KCkuZHJhZ1VwZGF0ZWQoZHJhZ0RhdGEpOworICAgICAgICBhdXRvIHJlc29sdmVkRHJhZ09wZXJh
dGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKHJlc29sdmVkRHJhZ09wZXJhdGlvbiwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdIYW5kbGluZ01ldGhvZCgpLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkubW91c2VJc092
ZXJGaWxlSW5wdXQoKSwgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLm51bWJlck9mSXRlbXNUb0Jl
QWNjZXB0ZWQoKSwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM5Nzks
MjQgKzM5NzksMjQgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24o
RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBjb25zdCBJbnQKIHZvaWQgV2ViUGFnZTo6cGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgY29u
c3QgV2ViQ29yZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYm
IHNhbmRib3hFeHRlbnNpb25zSGFuZGxlQXJyYXkpCiB7CiAgICAgaWYgKCFtX3BhZ2UpIHsKLSAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFs
c2UsIDAsIHsgfSwgeyB9KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKFdURjo6bnVsbG9wdCwgRHJhZ0hhbmRsaW5n
TWV0aG9kOjpOb25lLCBmYWxzZSwgMCwgeyB9LCB7IH0pKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlv
bjo6RW50ZXJlZDogewotICAgICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVkRHJhZ09wZXJhdGlv
biA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRW50ZXJlZChkcmFnRGF0YSk7CisgICAg
ICAgIGF1dG8gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxlcigp
LmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24ocmVzb2x2ZWREcmFnT3BlcmF0aW9u
LCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hhbmRsaW5nTWV0aG9kKCksIG1fcGFnZS0+
ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1dCgpLCBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgpLCBtX3BhZ2UtPmRyYWdDYXJldENv
bnRyb2xsZXIoKS5jYXJldFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSwgbV9wYWdlLT5kcmFn
Q2FyZXRDb250cm9sbGVyKCkuZWRpdGFibGVFbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cygpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFj
dGlvbjo6VXBkYXRlZDogewotICAgICAgICBEcmFnT3BlcmF0aW9uIHJlc29sdmVkRHJhZ09wZXJh
dGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7Cisg
ICAgICAgIGF1dG8gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29udHJvbGxl
cigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24ocmVzb2x2ZWREcmFnT3BlcmF0
aW9uLCBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0hhbmRsaW5nTWV0aG9kKCksIG1fcGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS5tb3VzZUlzT3ZlckZpbGVJbnB1dCgpLCBtX3BhZ2UtPmRyYWdD
b250cm9sbGVyKCkubnVtYmVyT2ZJdGVtc1RvQmVBY2NlcHRlZCgpLCBtX3BhZ2UtPmRyYWdDYXJl
dENvbnRyb2xsZXIoKS5jYXJldFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSwgbV9wYWdlLT5k
cmFnQ2FyZXRDb250cm9sbGVyKCkuZWRpdGFibGVFbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGlu
YXRlcygpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBEcmFnQ29udHJvbGxl
ckFjdGlvbjo6RXhpdGVkOgogICAgICAgICBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0V4
aXRlZChkcmFnRGF0YSk7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdPcGVyYXRpb25Ob25lLCBEcmFnSGFuZGxp
bmdNZXRob2Q6Ok5vbmUsIGZhbHNlLCAwLCB7IH0sIHsgfSkpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihXVEY6Om51
bGxvcHQsIERyYWdIYW5kbGluZ01ldGhvZDo6Tm9uZSwgZmFsc2UsIDAsIHsgfSwgeyB9KSk7CiAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbjo6
UGVyZm9ybURyYWdPcGVyYXRpb246IHsKQEAgLTQwMjMsNyArNDAyMyw3IEBAIHZvaWQgV2ViUGFn
ZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlv
biwgY29uc3QgV2ViCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29y
ZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0
aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pCit2b2lkIFdlYlBhZ2U6OmRyYWdFbmRlZChXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uTWFzaykK
IHsKICAgICBJbnRQb2ludCBhZGp1c3RlZENsaWVudFBvc2l0aW9uKGNsaWVudFBvc2l0aW9uLngo
KSArIG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnT2Zmc2V0KCkueCgpLCBjbGllbnRQb3Np
dGlvbi55KCkgKyBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLnkoKSk7CiAg
ICAgSW50UG9pbnQgYWRqdXN0ZWRHbG9iYWxQb3NpdGlvbihnbG9iYWxQb3NpdGlvbi54KCkgKyBt
X3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ09mZnNldCgpLngoKSwgZ2xvYmFsUG9zaXRpb24u
eSgpICsgbV9wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdPZmZzZXQoKS55KCkpOwpAQCAtNDAz
NCw3ICs0MDM0LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQg
Y2xpZW50UG9zaXRpb24sIFdlYkNvcmU6OkludFBvaW50IGdsb2IKICAgICAgICAgcmV0dXJuOwog
ICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgZmFrZSBtb2RpZmllciBrZXlzIGhlcmUsIGJ1dCB0aGV5
IHNob3VsZCBiZSByZWFsIG9uZXMgaW5zdGVhZC4KICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZl
bnQoYWRqdXN0ZWRDbGllbnRQb3NpdGlvbiwgYWRqdXN0ZWRHbG9iYWxQb3NpdGlvbiwgTGVmdEJ1
dHRvbiwgUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIFdhbGxUaW1lOjpub3coKSwgMCwgV2ViQ29yZTo6Tm9UYXApOwotICAgIG1fcGFnZS0+
bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIChEcmFn
T3BlcmF0aW9uKW9wZXJhdGlvbik7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRs
ZXIoKS5kcmFnU291cmNlRW5kZWRBdChldmVudCwgZHJhZ09wZXJhdGlvbk1hc2spOwogCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRFbmREcmFnZ2luZygpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDk2MzY4YWMzMDMyNmVk
YjgwZTg2MzBjYWQxZGQ5ODNkODIxN2IxZGQuLmE0YjE1Nzg2NmJlN2YyZDVlNTg4MzY2NzhlZDc0
MTVkZjI2MjViY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTg5OSw3ICs4OTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN0b3JlU2VsZWN0aW9u
SW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCk7CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAm
JiBQTEFURk9STShHVEspCi0gICAgdm9pZCBwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJh
Z0NvbnRyb2xsZXJBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlv
biwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiwgdWludDMy
X3QgZmxhZ3MpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250
cm9sbGVyQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6
OkRyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YSYmLCB1aW50MzJfdCBmbGFncyk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpICYmICFQTEFURk9STShHVEspCkBAIC05MDcsNyArOTA3LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIHZvaWQgZHJhZ0VuZGVkKFdl
YkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQ
b3NpdGlvbiwgdWludDY0X3Qgb3BlcmF0aW9uKTsKKyAgICB2b2lkIGRyYWdFbmRlZChXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRp
b24sIE9wdGlvblNldDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPik7CiAKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtTG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwogICAgIHZvaWQgbWF5UGVyZm9ybVVw
bG9hZERyYWdEZXN0aW5hdGlvbkFjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNTM4ZTY1NzJlNTBmOGU0
MzAwNjhlNjk4NzU4OWZhMGRjZjVjZmQyZi4uYWU5Mjc0NzYzODg1M2IzMmUyM2I0ZWUxMzYzYTEz
M2JjYmY2MDUxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0zMDksMTQgKzMwOSwxNCBAQCBHZW5lcmF0ZVN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZQogCiAgICAgIyBEcmFnIGFuZCBkcm9wLgogI2lmIFBMQVRGT1JNKEdUSykgJiYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51
bTp1aW50OF90IFdlYktpdDo6RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24s
IHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSBzZWxlY3Rpb24sIHVpbnQzMl90IGZsYWdzKQorICAgIFBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihlbnVtOnVpbnQ4X3QgV2ViS2l0OjpEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24s
IFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9i
YWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFzaywgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24sIHVpbnQz
Ml90IGZsYWdzKQogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKICAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oZW51bTp1aW50OF90IFdlYktp
dDo6RHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9u
c0ZvclVwbG9hZCkKICNlbmRpZgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgRGlkU3Rh
cnREcmFnKCkKLSAgICBEcmFnRW5kZWQoV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24s
IFdlYkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBvcGVyYXRpb24pCisg
ICAgRHJhZ0VuZGVkKFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJ
bnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
IGRyYWdPcGVyYXRpb25NYXNrKQogICAgIERyYWdDYW5jZWxsZWQoKQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggMGU2NTY0OTZjODQwMGFhYzkzMjE1ZWE2NzhhYjEwOTBjNGQyZTQwMy4uOGI4N2RiMzhjMjI0
NDI2ZmE3YmU0OTliYmFjMjE5MDAxYjlhNTcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTkyNCw3ICs5MjQsNyBAQCB2
b2lkIFdlYlBhZ2U6OnJlcXVlc3RBZGRpdGlvbmFsSXRlbXNGb3JEcmFnU2Vzc2lvbihjb25zdCBJ
bnRQb2ludCYgY2xpZW50UG9zaXRpbwogICAgIC8vIGlzIG9wYXF1ZSB0byB0aGUgd2ViIHByb2Nl
c3MsIHdoaWNoIG9ubHkgc2VlcyB0aGF0IHRoZSBjdXJyZW50IGRyYWcgaGFzIGVuZGVkLCBhbmQg
dGhhdCBhIG5ldyBvbmUgaXMgYmVnaW5uaW5nLgogICAgIFBsYXRmb3JtTW91c2VFdmVudCBldmVu
dChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIExlZnRCdXR0b24sIFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBXYWxsVGltZTo6
bm93KCksIDAsIE5vVGFwKTsKICAgICBtX3BhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ0VuZGVk
KCk7Ci0gICAgbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVudEhhbmRsZXIoKS5kcmFnU291cmNlRW5k
ZWRBdChldmVudCwgRHJhZ09wZXJhdGlvbk5vbmUsIE1heUV4dGVuZERyYWdTZXNzaW9uOjpZZXMp
OworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVk
QXQoZXZlbnQsIHsgfSwgTWF5RXh0ZW5kRHJhZ1Nlc3Npb246Olllcyk7CiAKICAgICBib29sIGRp
ZEhhbmRsZURyYWcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLnRyeVRvQmVn
aW5EcmFnQXRQb2ludChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24pOwogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkSGFuZGxlQWRkaXRpb25hbERyYWdJdGVtc1JlcXVl
c3QoZGlkSGFuZGxlRHJhZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RnJhbWUubW0KaW5kZXggZDRkZWE3YzM5YzhjYWY0YzM3YjRhYTg1ZmQ1NzkxZmVhY2U0OTg4OC4u
YjllZWNkYzhkYzkxOTViMzM5OTE4ZDVkNWRhMDE1MjRkNzdlNzk5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC05NDIsNyArOTQyLDcgQEAgLSAo
dm9pZClfc2V0VHlwaW5nU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZSB3aXRo
VW5kb0FjdGlvbjooV2ViQ29yZToKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBM
QVRGT1JNKE1BQykKLS0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xv
YyBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpb24KKy0gKHZvaWQpX2RyYWdTb3Vy
Y2VFbmRlZEF0OihOU1BvaW50KXdpbmRvd0xvYyBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilk
cmFnT3BlcmF0aW9uTWFzawogewogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTUyLDcgKzk1Miw3IEBAIC0gKHZvaWQpX2RyYWdTb3VyY2VFbmRlZEF0
OihOU1BvaW50KXdpbmRvd0xvYyBvcGVyYXRpb246KE5TRHJhZ09wZXJhdGlvbilvcGVyYXRpCiAg
ICAgLy8gRklYTUU6IFRoZXNlIGFyZSBmYWtlIG1vZGlmaWVyIGtleXMgaGVyZSwgYnV0IHRoZXkg
c2hvdWxkIGJlIHJlYWwgb25lcyBpbnN0ZWFkLgogICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VF
dmVudCBldmVudChXZWJDb3JlOjpJbnRQb2ludCh3aW5kb3dMb2MpLCBXZWJDb3JlOjpJbnRQb2lu
dChXZWJDb3JlOjpnbG9iYWxQb2ludCh3aW5kb3dMb2MsIFt2aWV3LT5wbGF0Zm9ybVdpZGdldCgp
IHdpbmRvd10pKSwKICAgICAgICAgV2ViQ29yZTo6TGVmdEJ1dHRvbiwgV2ViQ29yZTo6UGxhdGZv
cm1FdmVudDo6TW91c2VNb3ZlZCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdhbGxU
aW1lOjpub3coKSwgV2ViQ29yZTo6Rm9yY2VBdENsaWNrLCBXZWJDb3JlOjpOb1RhcCk7Ci0gICAg
X3ByaXZhdGUtPmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZl
bnQsIChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbik7CisgICAgX3ByaXZhdGUtPmNv
cmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZHJhZ1NvdXJjZUVuZGVkQXQoZXZlbnQsIGNvcmVEcmFn
T3BlcmF0aW9uTWFzayhkcmFnT3BlcmF0aW9uTWFzaykpOwogfQogI2VuZGlmIC8vIEVOQUJMRShE
UkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNWU0YTg5MDVlYzg0ZjU3YjUxZDk4OWMx
NzA1OWZkN2NkMGNjMWRjOC4uMzhlNzkwOTE1MWJmNzg2ZWU1MmUwZjE3ODcwM2FhMWRiM2I1NGI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiwgMjAwNyBH
cmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
QEAgLTQyMjksNiArNDIyOSwyNSBAQCAtICh2b2lkKXRvdWNoOihXZWJFdmVudCAqKWV2ZW50CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpICYmIFBMQVRGT1JNKE1BQykKKworc3Rh
dGljIE5TRHJhZ09wZXJhdGlvbiBraXQoT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+
IG9wZXJhdGlvbk1hc2spCit7CisgICAgTlNEcmFnT3BlcmF0aW9uIHJlc3VsdCA9IE5TRHJhZ09w
ZXJhdGlvbk5vbmU7CisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoV2ViQ29yZTo6RHJh
Z09wZXJhdGlvbkNvcHkpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9uQ29weTsK
KyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGlu
aykpCisgICAgICAgIHJlc3VsdCB8PSBOU0RyYWdPcGVyYXRpb25MaW5rOworICAgIGlmIChvcGVy
YXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6OkRyYWdPcGVyYXRpb25HZW5lcmljKSkKKyAgICAg
ICAgcmVzdWx0IHw9IE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgaWYgKG9wZXJhdGlvbk1h
c2suY29udGFpbnMoV2ViQ29yZTo6RHJhZ09wZXJhdGlvblByaXZhdGUpKQorICAgICAgICByZXN1
bHQgfD0gTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZTsKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250
YWlucyhXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZSkpCisgICAgICAgIHJlc3VsdCB8PSBOU0Ry
YWdPcGVyYXRpb25Nb3ZlOworICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKFdlYkNvcmU6
OkRyYWdPcGVyYXRpb25EZWxldGUpKQorICAgICAgICByZXN1bHQgfD0gTlNEcmFnT3BlcmF0aW9u
RGVsZXRlOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0JFR0lOCiAtICh2b2lkKWRyYWdJbWFnZTooTlNJbWFnZSAqKWRyYWdJbWFnZQog
ICAgICAgICAgICAgICAgYXQ6KE5TUG9pbnQpYXQKQEAgLTQyODAsNyArNDI5OSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CiAKLSAgICByZXR1cm4gKE5TRHJhZ09wZXJhdGlv
bilwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICByZXR1
cm4ga2l0KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2soKSk7
CiB9CiAKIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCkBAIC00Mzg2LDcg
KzQ0MDUsNyBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTZXNzaW9uOihOU0RyYWdnaW5n
U2Vzc2lvbiAqKXNlc3Npb24gc291cmNlT3BlcmF0aW9uTQogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk5vbmU7CiAKLSAgICByZXR1cm4gKE5TRHJhZ09wZXJh
dGlvbilwYWdlLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKTsKKyAgICBy
ZXR1cm4ga2l0KHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuc291cmNlRHJhZ09wZXJhdGlvbk1hc2so
KSk7CiB9CiAKIC0gKHZvaWQpZHJhZ2dpbmdTZXNzaW9uOihOU0RyYWdnaW5nU2Vzc2lvbiAqKXNl
c3Npb24gZW5kZWRBdFBvaW50OihOU1BvaW50KXNjcmVlblBvaW50IG9wZXJhdGlvbjooTlNEcmFn
T3BlcmF0aW9uKW9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCmluZGV4IGM1ZTlmMjVjNjFlOTMzMDFlMjgzZWEwYTRjMDgzODhmMTk0MTE5NTUuLjA5
NzY3N2Q5ZGFiYzg3ODA5YzFjYzBkZDRkNTc4ZTczY2NjN2MxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTU4OSw2ICs1ODksOTIgQEAgc3RhdGlj
IE9wdGlvblNldDxXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24+IGNvcmVEcmFnRGVzdGlu
YXRpb25BY3Rpb25NYXNrKFcKICAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb246OkxvYWQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CisKKyNpZiAhVVNFKEFQ
UEtJVCkKKy8vIFNlZSA8VUlLaXQvVUlEcmFnZ2luZ19Qcml2YXRlLmg+LgordHlwZWRlZiBOU19P
UFRJT05TKE5TVUludGVnZXIsIF9VSURyYWdPcGVyYXRpb24pIHsKKyAgICBfVUlEcmFnT3BlcmF0
aW9uTm9uZSA9IDAsCisgICAgX1VJRHJhZ09wZXJhdGlvbkNvcHkgPSAxLAorICAgIF9VSURyYWdP
cGVyYXRpb25Nb3ZlID0gMTYsCit9OworI2VuZGlmCisKK09wdGlvblNldDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPiBjb3JlRHJhZ09wZXJhdGlvbk1hc2soQ29jb2FEcmFnT3BlcmF0aW9uIG9wZXJh
dGlvbikKK3sKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlvbj4gcmVzdWx0Owor
CisjaWYgVVNFKEFQUEtJVCkKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uQ29w
eSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAg
aWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbkxpbmspOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdP
cGVyYXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkRyYWdPcGVyYXRp
b25HZW5lcmljKTsKKyAgICBpZiAob3BlcmF0aW9uICYgTlNEcmFnT3BlcmF0aW9uUHJpdmF0ZSkK
KyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZSk7CisgICAg
aWYgKG9wZXJhdGlvbiAmIE5TRHJhZ09wZXJhdGlvbk1vdmUpCisgICAgICAgIHJlc3VsdC5hZGQo
V2ViQ29yZTo6RHJhZ09wZXJhdGlvbk1vdmUpOworICAgIGlmIChvcGVyYXRpb24gJiBOU0RyYWdP
cGVyYXRpb25EZWxldGUpCisgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6RHJhZ09wZXJhdGlv
bkRlbGV0ZSk7CisjZWxzZQorICAgIGlmIChvcGVyYXRpb24gJiBfVUlEcmFnT3BlcmF0aW9uQ29w
eSkKKyAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpEcmFnT3BlcmF0aW9uQ29weSk7CisgICAg
aWYgKG9wZXJhdGlvbiAmIF9VSURyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICByZXN1bHQuYWRk
KFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlKTsKKyNlbmRpZiAvLyBVU0UoQVBQS0lUKQorCisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2lmIFVTRShBUFBLSVQpCitzdGF0aWMgTlNEcmFnT3Bl
cmF0aW9uIGtpdChPcHRpb25hbDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9u
KQoreworICAgIGlmICghZHJhZ09wZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJh
dGlvbk5vbmU7CisKKyAgICBzd2l0Y2ggKCpkcmFnT3BlcmF0aW9uKSB7CisgICAgY2FzZSBXZWJD
b3JlOjpEcmFnT3BlcmF0aW9uQ29weToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkNv
cHk7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTGluazoKKyAgICAgICAgcmV0dXJu
IE5TRHJhZ09wZXJhdGlvbkxpbms7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2Vu
ZXJpYzoKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbkdlbmVyaWM7CisgICAgY2FzZSBX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uUHJpdmF0ZToKKyAgICAgICAgcmV0dXJuIE5TRHJhZ09wZXJh
dGlvblByaXZhdGU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uTW92ZToKKyAgICAg
ICAgcmV0dXJuIE5TRHJhZ09wZXJhdGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uRGVsZXRlOgorICAgICAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uRGVsZXRlOworICAg
IH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBOU0RyYWdPcGVyYXRp
b25Ob25lOworfQorI2Vsc2UKK3N0YXRpYyBfVUlEcmFnT3BlcmF0aW9uIGtpdChPcHRpb25hbDxX
ZWJDb3JlOjpEcmFnT3BlcmF0aW9uPiBkcmFnT3BlcmF0aW9uKQoreworICAgIGlmICghZHJhZ09w
ZXJhdGlvbikKKyAgICAgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworCisgICAgc3dp
dGNoICgqZHJhZ09wZXJhdGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbkNv
cHk6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uQ29weTsKKyAgICBjYXNlIFdlYkNv
cmU6OkRyYWdPcGVyYXRpb25MaW5rOgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5v
bmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uR2VuZXJpYzoKKyAgICAgICAgcmV0
dXJuIF9VSURyYWdPcGVyYXRpb25Nb3ZlOworICAgIGNhc2UgV2ViQ29yZTo6RHJhZ09wZXJhdGlv
blByaXZhdGU6CisgICAgICAgIHJldHVybiBfVUlEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBjYXNl
IFdlYkNvcmU6OkRyYWdPcGVyYXRpb25Nb3ZlOgorICAgICAgICByZXR1cm4gX1VJRHJhZ09wZXJh
dGlvbk1vdmU7CisgICAgY2FzZSBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uRGVsZXRlOgorICAgICAg
ICByZXR1cm4gX1VJRHJhZ09wZXJhdGlvbk5vbmU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIF9VSURyYWdPcGVyYXRpb25Ob25lOworfQorI2VuZGlmIC8v
IFVTRShBUFBLSVQpCiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogV2ViQ29yZTo6
RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlvbnMgb3B0aW9ucykKQEAgLTE5MjMs
NyArMjAwOSw3IEBAIC0gKFdlYkRyYWdEZXN0aW5hdGlvbkFjdGlvbilkcmFnRGVzdGluYXRpb25B
Y3Rpb25NYXNrRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3NpCiAKIC0gKFdlYkNvcmU6OkRyYWdE
YXRhKWRyYWdEYXRhRm9yU2Vzc2lvbjooaWQgPFVJRHJvcFNlc3Npb24+KXNlc3Npb24gY2xpZW50
OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbiBv
cGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbgogewotICAgIGF1dG8gZHJhZ09wZXJhdGlvbk1h
c2sgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFnT3BlcmF0aW9uPihvcGVyYXRpb24pOworICAg
IGF1dG8gZHJhZ09wZXJhdGlvbk1hc2sgPSBjb3JlRHJhZ09wZXJhdGlvbk1hc2sob3BlcmF0aW9u
KTsKICAgICBhdXRvIGRyYWdEZXN0aW5hdGlvbkFjdGlvbk1hc2sgPSBjb3JlRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uTWFzayhbc2VsZiBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yU2Vzc2lvbjpz
ZXNzaW9uXSk7CiAgICAgcmV0dXJuIHsgc2Vzc2lvbiwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50
KGNsaWVudFBvc2l0aW9uKSwgV2ViQ29yZTo6cm91bmRlZEludFBvaW50KGdsb2JhbFBvc2l0aW9u
KSwgZHJhZ09wZXJhdGlvbk1hc2ssIFdlYkNvcmU6OkRyYWdBcHBsaWNhdGlvbk5vbmUsIGRyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2sgfTsKIH0KQEAgLTE5MzIsMTQgKzIwMTgsMTQgQEAgLSAodWlu
dDY0X3QpX2VudGVyZWREYXRhSW50ZXJhY3Rpb246KGlkIDxVSURyb3BTZXNzaW9uPilzZXNzaW9u
IGNsaWVudDooQ0dQb2ludCkKIHsKICAgICBXZWJUaHJlYWRMb2NrKCk7CiAgICAgYXV0byBkcmFn
RGF0YSA9IFtzZWxmIGRyYWdEYXRhRm9yU2Vzc2lvbjpzZXNzaW9uIGNsaWVudDpjbGllbnRQb3Np
dGlvbiBnbG9iYWw6Z2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOm9wZXJhdGlvbl07Ci0gICAgcmV0
dXJuIF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRh
KTsKKyAgICByZXR1cm4ga2l0KF9wcml2YXRlLT5wYWdlLT5kcmFnQ29udHJvbGxlcigpLmRyYWdF
bnRlcmVkKGRyYWdEYXRhKSk7CiB9CiAKIC0gKHVpbnQ2NF90KV91cGRhdGVkRGF0YUludGVyYWN0
aW9uOihpZCA8VUlEcm9wU2Vzc2lvbj4pc2Vzc2lvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9z
aXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qp
b3BlcmF0aW9uCiB7CiAgICAgV2ViVGhyZWFkTG9jaygpOwogICAgIGF1dG8gZHJhZ0RhdGEgPSBb
c2VsZiBkcmFnRGF0YUZvclNlc3Npb246c2Vzc2lvbiBjbGllbnQ6Y2xpZW50UG9zaXRpb24gZ2xv
YmFsOmdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjpvcGVyYXRpb25dOwotICAgIHJldHVybiBfcHJp
dmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CisgICAg
cmV0dXJuIGtpdChfcHJpdmF0ZS0+cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnVXBkYXRlZChk
cmFnRGF0YSkpOwogfQogCiAtICh2b2lkKV9leGl0ZWREYXRhSW50ZXJhY3Rpb246KGlkIDxVSURy
b3BTZXNzaW9uPilzZXNzaW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6
KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb24KQEAg
LTY3NDgsOCArNjgzNCw4IEBAIC0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlk
IDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCiAgICAgV2ViQ29yZTo6SW50UG9pbnQgY2xp
ZW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOwogICAgIFdlYkNvcmU6OkludFBv
aW50IGdsb2JhbChXZWJDb3JlOjpnbG9iYWxQb2ludChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9j
YXRpb25dLCBbc2VsZiB3aW5kb3ddKSk7CiAKLSAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpEcmFn
T3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBb
c2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JE
cmFnZ2luZ0luZm86ZHJhZ2dpbmdJbmZvXSk7Ci0gICAgcmV0dXJuIGNvcmUoc2VsZiktPmRyYWdD
b250cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOworICAgIFdlYkNvcmU6OkRyYWdEYXRh
IGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIGNvcmVEcmFnT3BlcmF0aW9u
TWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10pLCBbc2VsZiBh
cHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10sIFtzZWxmIGFjdGlvbk1hc2tGb3JEcmFnZ2lu
Z0luZm86ZHJhZ2dpbmdJbmZvXSk7CisgICAgcmV0dXJuIGtpdChjb3JlKHNlbGYpLT5kcmFnQ29u
dHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKSk7CiB9CiAKIC0gKE5TRHJhZ09wZXJhdGlv
bilkcmFnZ2luZ1VwZGF0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCkBAIC02
NzYxLDggKzY4NDcsOCBAQCAtIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdVcGRhdGVkOihpZCA8
TlNEcmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwogICAgIFdlYkNvcmU6OkludFBvaW50IGNsaWVu
dChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsKICAgICBXZWJDb3JlOjpJbnRQb2lu
dCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0
aW9uXSwgW3NlbGYgd2luZG93XSkpOwogCi0gICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEo
ZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2JhbCwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RHJhZ09w
ZXJhdGlvbj4oW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3Nl
bGYgYXBwbGljYXRpb25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJh
Z2dpbmdJbmZvOmRyYWdnaW5nSW5mb10pOwotICAgIHJldHVybiBwYWdlLT5kcmFnQ29udHJvbGxl
cigpLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKKyAgICBXZWJDb3JlOjpEcmFnRGF0YSBkcmFnRGF0
YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBjb3JlRHJhZ09wZXJhdGlvbk1hc2soW2Ry
YWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKSwgW3NlbGYgYXBwbGljYXRp
b25GbGFnczpkcmFnZ2luZ0luZm9dLCBbc2VsZiBhY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmZvOmRy
YWdnaW5nSW5mb10pOworICAgIHJldHVybiBraXQocGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFn
VXBkYXRlZChkcmFnRGF0YSkpOwogfQogCiAtICh2b2lkKWRyYWdnaW5nRXhpdGVkOihpZCA8TlNE
cmFnZ2luZ0luZm8+KWRyYWdnaW5nSW5mbwpAQCAtNjc3Myw3ICs2ODU5LDcgQEAgLSAodm9pZClk
cmFnZ2luZ0V4aXRlZDooaWQgPE5TRHJhZ2dpbmdJbmZvPilkcmFnZ2luZ0luZm8KIAogICAgIFdl
YkNvcmU6OkludFBvaW50IGNsaWVudChbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nTG9jYXRpb25dKTsK
ICAgICBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWwoV2ViQ29yZTo6Z2xvYmFsUG9pbnQoW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSwgW3NlbGYgd2luZG93XSkpOwotICAgIFdlYkNvcmU6
OkRyYWdEYXRhIGRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWwsIHN0YXRpY19j
YXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7Cisg
ICAgV2ViQ29yZTo6RHJhZ0RhdGEgZHJhZ0RhdGEoZHJhZ2dpbmdJbmZvLCBjbGllbnQsIGdsb2Jh
bCwgY29yZURyYWdPcGVyYXRpb25NYXNrKFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrXSksIFtzZWxmIGFwcGxpY2F0aW9uRmxhZ3M6ZHJhZ2dpbmdJbmZvXSk7CiAgICAg
cGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnRXhpdGVkKGRyYWdEYXRhKTsKIH0KIApAQCAtNjc4
Niw3ICs2ODcyLDcgQEAgLSAoQk9PTClwZXJmb3JtRHJhZ09wZXJhdGlvbjooaWQgPE5TRHJhZ2dp
bmdJbmZvPilkcmFnZ2luZ0luZm8KIHsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnQoW2Ry
YWdnaW5nSW5mbyBkcmFnZ2luZ0xvY2F0aW9uXSk7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgZ2xv
YmFsKFdlYkNvcmU6Omdsb2JhbFBvaW50KFtkcmFnZ2luZ0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0s
IFtzZWxmIHdpbmRvd10pKTsKLSAgICBhdXRvKiBkcmFnRGF0YSA9IG5ldyBXZWJDb3JlOjpEcmFn
RGF0YShkcmFnZ2luZ0luZm8sIGNsaWVudCwgZ2xvYmFsLCBzdGF0aWNfY2FzdDxXZWJDb3JlOjpE
cmFnT3BlcmF0aW9uPihbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10p
LCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOworICAgIGF1dG8qIGRyYWdE
YXRhID0gbmV3IFdlYkNvcmU6OkRyYWdEYXRhKGRyYWdnaW5nSW5mbywgY2xpZW50LCBnbG9iYWws
IGNvcmVEcmFnT3BlcmF0aW9uTWFzayhbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0
aW9uTWFza10pLCBbc2VsZiBhcHBsaWNhdGlvbkZsYWdzOmRyYWdnaW5nSW5mb10pOwogCiAgICAg
TlNBcnJheSogdHlwZXMgPSBkcmFnZ2luZ0luZm8uZHJhZ2dpbmdQYXN0ZWJvYXJkLnR5cGVzOwog
ICAgIGlmICghW3R5cGVzIGNvbnRhaW5zT2JqZWN0OldlYkFyY2hpdmVQYm9hcmRUeXBlXSAmJiBb
dHlwZXMgY29udGFpbnNPYmplY3Q6V2ViQ29yZTo6bGVnYWN5RmlsZXNQcm9taXNlUGFzdGVib2Fy
ZFR5cGUoKV0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXdJbnRlcm5hbC5oCmluZGV4IDdkNzBjMDRhMGNlMTM0Y2ZlODdkNTZmZDgxMWY0ZGM1ZmJjYjM4
ODkuLmVhMWYyZjMxZTViY2Y5OTA0NTRkZDAyZmYwZDMwZDE1MDMxNjNmYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDEwIElnYWxpYSBTLkwKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM2LDYgKzM2LDcgQEAKICNpZmRl
ZiBfX2NwbHVzcGx1cwogCiAjaW1wb3J0IDxXZWJDb3JlL0FsdGVybmF0aXZlVGV4dENsaWVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaW5k
T3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSFRNTE1lZGlhRWxlbWVudEVudW1zLmg+CkBAIC04OSw3ICs5MCwxNyBAQCBjbGFzcyBXZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlcjsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiAKLVdlYkNv
cmU6OkZpbmRPcHRpb25zIGNvcmVPcHRpb25zKFdlYkZpbmRPcHRpb25zIG9wdGlvbnMpOworI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCisjaWYgVVNFKEFQUEtJVCkKK3VzaW5nIENvY29hRHJhZ09w
ZXJhdGlvbiA9IE5TRHJhZ09wZXJhdGlvbjsKKyNlbHNlCit1c2luZyBDb2NvYURyYWdPcGVyYXRp
b24gPSB1aW50NjRfdDsKKyNlbmRpZgorCitPcHRpb25TZXQ8V2ViQ29yZTo6RHJhZ09wZXJhdGlv
bj4gY29yZURyYWdPcGVyYXRpb25NYXNrKENvY29hRHJhZ09wZXJhdGlvbik7CisjZW5kaWYgLy8g
RU5BQkxFKERSQUdfU1VQUE9SVCkKKworV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMo
V2ViRmluZE9wdGlvbnMpOwogCiBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBj
b3JlTGF5b3V0TWlsZXN0b25lcyhXZWJMYXlvdXRNaWxlc3RvbmVzKTsKIFdlYkxheW91dE1pbGVz
dG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0
b25lPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkRyYWdDbGllbnQuY3BwCmluZGV4IDMxMzI2MDM2YThhNDEyNTc3ZWMxY2ExOTE3ZGMz
ZmY4NjIwN2UyNjMuLmU1NmNkYzlhMmIwMmJiZDBjZjE3MTlmYjU0MzZlOGNlYjk5ZTk1YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuY3BwCkBAIC00NCwxOCArNDQsMTggQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLXN0YXRpYyBEV09SRCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdD
dXJzb3JzKERyYWdPcGVyYXRpb24gb3ApCitzdGF0aWMgRFdPUkQgZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrVG9EcmFnQ3Vyc29ycyhPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9u
TWFzaykKIHsKICAgICBEV09SRCByZXN1bHQgPSBEUk9QRUZGRUNUX05PTkU7Ci0gICAgaWYgKG9w
ID09IERyYWdPcGVyYXRpb25FdmVyeSkKKyAgICBpZiAob3BlcmF0aW9uTWFzayA9PSBhbnlEcmFn
T3BlcmF0aW9uKCkpCiAgICAgICAgIHJldHVybiBEUk9QRUZGRUNUX0NPUFkgfCBEUk9QRUZGRUNU
X0xJTksgfCBEUk9QRUZGRUNUX01PVkU7IAotICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25Db3B5
KQorICAgIGlmIChvcGVyYXRpb25NYXNrLmNvbnRhaW5zKERyYWdPcGVyYXRpb25Db3B5KSkKICAg
ICAgICAgcmVzdWx0IHw9IERST1BFRkZFQ1RfQ09QWTsgCi0gICAgaWYgKG9wICYgRHJhZ09wZXJh
dGlvbkxpbmspCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFpbnMoRHJhZ09wZXJhdGlvbkxp
bmspKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9MSU5LOyAKLSAgICBpZiAob3AgJiBE
cmFnT3BlcmF0aW9uTW92ZSkKKyAgICBpZiAob3BlcmF0aW9uTWFzay5jb250YWlucyhEcmFnT3Bl
cmF0aW9uTW92ZSkpCiAgICAgICAgIHJlc3VsdCB8PSBEUk9QRUZGRUNUX01PVkU7Ci0gICAgaWYg
KG9wICYgRHJhZ09wZXJhdGlvbkdlbmVyaWMpCisgICAgaWYgKG9wZXJhdGlvbk1hc2suY29udGFp
bnMoRHJhZ09wZXJhdGlvbkdlbmVyaWMpKQogICAgICAgICByZXN1bHQgfD0gRFJPUEVGRkVDVF9N
T1ZFOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBXZWJE
cmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0l0ZW0gaXRlbSwgRGF0YVRyYW5zZmVyJiBkYXRhVHJh
bnNmZXIsIEZyYW1lJgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgRFdPUkQg
b2tFZmZlY3QgPSBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tUb0RyYWdDdXJzb3JzKG1fd2Vi
Vmlldy0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb24oKSk7Cisg
ICAgICAgIERXT1JEIG9rRWZmZWN0ID0gZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrVG9EcmFn
Q3Vyc29ycyhtX3dlYlZpZXctPnBhZ2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VEcmFnT3Bl
cmF0aW9uTWFzaygpKTsKICAgICAgICAgRFdPUkQgZWZmZWN0ID0gRFJPUEVGRkVDVF9OT05FOwog
ICAgICAgICBDT01QdHI8SVdlYlVJRGVsZWdhdGU+IHVpOwogICAgICAgICBIUkVTVUxUIGhyID0g
RV9OT1RJTVBMOwpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViRHJhZ0NsaWVudDo6c3RhcnRE
cmFnKERyYWdJdGVtIGl0ZW0sIERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyLCBGcmFtZSYKICAg
ICAgICAgaWYgKGhyID09IEVfTk9USU1QTCkKICAgICAgICAgICAgIGhyID0gRG9EcmFnRHJvcChk
YXRhT2JqZWN0LmdldCgpLCBzb3VyY2UuZ2V0KCksIG9rRWZmZWN0LCAmZWZmZWN0KTsKIAotICAg
ICAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Ob25lOworICAgICAg
ICBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gb3BlcmF0aW9uOwogICAgICAgICBpZiAoaHIgPT0g
RFJBR0RST1BfU19EUk9QKSB7CiAgICAgICAgICAgICBpZiAoZWZmZWN0ICYgRFJPUEVGRkVDVF9D
T1BZKQogICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25Db3B5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzYmRlZTZiYmQ1YjQ4N2U0NTc4OGUyYzQ3
NzUyNzVkOWQwYTkyMDU0Li40MmRjZDI4OGJkYTZkYTIxODExZGIzMmEyNTNhMTk3MjBmYzkxNDVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNTg0MiwzOCArNTg0Miw0MiBA
QCBIUkVTVUxUIFdlYlZpZXc6OnZpc2libGVDb250ZW50UmVjdChfT3V0XyBMUFJFQ1QgcmVjdCkK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotc3RhdGljIERXT1JEIGRyYWdPcGVyYXRpb25Ub0RyYWdD
dXJzb3IoRHJhZ09wZXJhdGlvbiBvcCkgewotICAgIERXT1JEIHJlcyA9IERST1BFRkZFQ1RfTk9O
RTsKLSAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uQ29weSkgCi0gICAgICAgIHJlcyA9IERST1BF
RkZFQ1RfQ09QWTsKLSAgICBlbHNlIGlmIChvcCAmIERyYWdPcGVyYXRpb25MaW5rKSAKLSAgICAg
ICAgcmVzID0gRFJPUEVGRkVDVF9MSU5LOwotICAgIGVsc2UgaWYgKG9wICYgRHJhZ09wZXJhdGlv
bk1vdmUpIAotICAgICAgICByZXMgPSBEUk9QRUZGRUNUX01PVkU7Ci0gICAgZWxzZSBpZiAob3Ag
JiBEcmFnT3BlcmF0aW9uR2VuZXJpYykgCi0gICAgICAgIHJlcyA9IERST1BFRkZFQ1RfTU9WRTsg
Ly9UaGlzIGFwcGVhcnMgdG8gYmUgdGhlIEZpcmVmb3ggYmVoYXZpb3VyCi0gICAgcmV0dXJuIHJl
czsKK3N0YXRpYyBEV09SRCBkcmFnT3BlcmF0aW9uVG9EcmFnQ3Vyc29yKE9wdGlvbmFsPERyYWdP
cGVyYXRpb24+IG9wZXJhdGlvbikKK3sKKyAgICBpZiAoIW9wZXJhdGlvbikKKyAgICAgICAgcmV0
dXJuIERST1BFRkZFQ1RfTk9ORTsKKworICAgIERXT1JEIHJlc3VsdCA9IERST1BFRkZFQ1RfTk9O
RTsKKyAgICBpZiAoKm9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9uQ29weSkKKyAgICAgICAgcmVz
dWx0ID0gRFJPUEVGRkVDVF9DT1BZOworICAgIGVsc2UgaWYgKCpvcGVyYXRpb24gPT0gRHJhZ09w
ZXJhdGlvbkxpbmspCisgICAgICAgIHJlc3VsdCA9IERST1BFRkZFQ1RfTElOSzsKKyAgICBlbHNl
IGlmICgqb3BlcmF0aW9uID09IERyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAgICByZXN1bHQgPSBE
Uk9QRUZGRUNUX01PVkU7CisgICAgZWxzZSBpZiAoKm9wZXJhdGlvbiA9PSBEcmFnT3BlcmF0aW9u
R2VuZXJpYykKKyAgICAgICAgcmVzdWx0ID0gRFJPUEVGRkVDVF9NT1ZFOyAvLyBUaGlzIGFwcGVh
cnMgdG8gYmUgdGhlIEZpcmVmb3ggYmVoYXZpb3VyLgorICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LURyYWdPcGVyYXRpb24gV2ViVmlldzo6a2V5U3RhdGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3Jm
S2V5U3RhdGUpIGNvbnN0CitPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gV2ViVmlldzo6a2V5U3Rh
dGVUb0RyYWdPcGVyYXRpb24oRFdPUkQgZ3JmS2V5U3RhdGUpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X3BhZ2UpCi0gICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIC8vIENvbmZvcm1zIHRvIE1pY3Jvc29mdCdzIGtleSBjb21iaW5hdGlvbnMg
YXMgZG9jdW1lbnRlZCBmb3IgCiAgICAgLy8gSURyb3BUYXJnZXQ6OkRyYWdPdmVyLiBOb3RlLCBn
cmZLZXlTdGF0ZSBpcyB0aGUgY3VycmVudCAKICAgICAvLyBzdGF0ZSBvZiB0aGUga2V5Ym9hcmQg
bW9kaWZpZXIga2V5cyBvbiB0aGUga2V5Ym9hcmQuIFNlZToKICAgICAvLyA8aHR0cDovL21zZG4u
bWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjgwMTI5KFZTLjg1KS5hc3B4Pi4KLSAgICBE
cmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5zb3VyY2VE
cmFnT3BlcmF0aW9uKCk7CisgICAgYXV0byBvcGVyYXRpb25NYXNrID0gbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLnNvdXJjZURyYWdPcGVyYXRpb25NYXNrKCk7CiAKICAgICBpZiAoKGdyZktleVN0
YXRlICYgKE1LX0NPTlRST0wgfCBNS19TSElGVCkpID09IChNS19DT05UUk9MIHwgTUtfU0hJRlQp
KQotICAgICAgICBvcGVyYXRpb24gPSBEcmFnT3BlcmF0aW9uTGluazsKKyAgICAgICAgb3BlcmF0
aW9uTWFzayA9IHsgRHJhZ09wZXJhdGlvbkxpbmsgfTsKICAgICBlbHNlIGlmICgoZ3JmS2V5U3Rh
dGUgJiBNS19DT05UUk9MKSA9PSBNS19DT05UUk9MKQotICAgICAgICBvcGVyYXRpb24gPSBEcmFn
T3BlcmF0aW9uQ29weTsKKyAgICAgICAgb3BlcmF0aW9uTWFzayA9IHsgRHJhZ09wZXJhdGlvbkNv
cHkgfTsKICAgICBlbHNlIGlmICgoZ3JmS2V5U3RhdGUgJiBNS19TSElGVCkgPT0gTUtfU0hJRlQp
Ci0gICAgICAgIG9wZXJhdGlvbiA9IERyYWdPcGVyYXRpb25HZW5lcmljOworICAgICAgICBvcGVy
YXRpb25NYXNrID0geyBEcmFnT3BlcmF0aW9uR2VuZXJpYyB9OwogCi0gICAgcmV0dXJuIG9wZXJh
dGlvbjsKKyAgICByZXR1cm4gb3BlcmF0aW9uTWFzazsKIH0KIAogSFJFU1VMVCBXZWJWaWV3OjpE
cmFnRW50ZXIoSURhdGFPYmplY3QqIHBEYXRhT2JqZWN0LCBEV09SRCBncmZLZXlTdGF0ZSwgUE9J
TlRMIHB0LCBEV09SRCogcGR3RWZmZWN0KQpAQCAtNTkxOSw4ICs1OTIzLDcgQEAgSFJFU1VMVCBX
ZWJWaWV3OjpEcmFnTGVhdmUoKQogICAgICAgICBtX2Ryb3BUYXJnZXRIZWxwZXItPkRyYWdMZWF2
ZSgpOwogCiAgICAgaWYgKG1fZHJhZ0RhdGEpIHsKLSAgICAgICAgRHJhZ0RhdGEgZGF0YShtX2Ry
YWdEYXRhLmdldCgpLCBJbnRQb2ludCgpLCBJbnRQb2ludCgpLCAKLSAgICAgICAgICAgIERyYWdP
cGVyYXRpb25Ob25lKTsKKyAgICAgICAgRHJhZ0RhdGEgZGF0YShtX2RyYWdEYXRhLmdldCgpLCBJ
bnRQb2ludCgpLCBJbnRQb2ludCgpLCB7IH0pOwogICAgICAgICBtX3BhZ2UtPmRyYWdDb250cm9s
bGVyKCkuZHJhZ0V4aXRlZChkYXRhKTsKICAgICAgICAgbV9kcmFnRGF0YSA9IDA7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5oCmluZGV4IDE4MDY2OThhOWFkODRiYzJmODg4YjVmMmVk
YzMwM2Y5ZTVhYTVmNDUuLjdiMjIxMDRkOThlNTdmYzM3NzUzMzZkMTkyOTkzOTM1NTgyMGM1NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmgKQEAgLTU1NSw3ICs1NTUsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBwZXJmb3JtTGF5ZXJlZFdpbmRvd1VwZGF0ZSgpOwogCi0gICAgV2ViQ29y
ZTo6RHJhZ09wZXJhdGlvbiBrZXlTdGF0ZVRvRHJhZ09wZXJhdGlvbihEV09SRCBncmZLZXlTdGF0
ZSkgY29uc3Q7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+IGtleVN0YXRl
VG9EcmFnT3BlcmF0aW9uKERXT1JEIGdyZktleVN0YXRlKSBjb25zdDsKIAogICAgIC8vIEZJWE1F
OiBUaGlzIHZhcmlhYmxlIGlzIHBhcnQgb2YgYSB3b3JrYXJvdW5kLiBUaGUgZHJvcCBlZmZlY3Qg
KHBkd0VmZmVjdCkgcGFzc2VkIHRvIERyb3AgaXMgaW5jb3JyZWN0LiAKICAgICAvLyBXZSBzZXQg
dGhpcyB2YXJpYWJsZSBpbiBEcmFnRW50ZXIgYW5kIERyYWdPdmVyIHNvIHRoYXQgaXQgY2FuIGJl
IHVzZWQgaW4gRHJvcCB0byBzZXQgdGhlIGNvcnJlY3QgZHJvcCBlZmZlY3QuIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>