<?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>54292</bug_id>
          
          <creation_ts>2011-02-11 10:15:41 -0800</creation_ts>
          <short_desc>remove the support of Frame::isContentEditable and its dependencies</short_desc>
          <delta_ts>2011-03-01 00:10:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>54290</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chang Shu">cshu</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>kevino</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>349821</commentid>
    <comment_count>0</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-11 10:15:41 -0800</bug_when>
    <thetext>Frame::isContentEditable is based on two things: Editor::clientIsEditable and Document::inDesignMode. In fact, it should only rely on Document::inDesignMode. We should remove this function and use Document::inDesignMode directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349830</commentid>
    <comment_count>1</comment_count>
      <attachid>82142</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-11 10:29:00 -0800</bug_when>
    <thetext>Created attachment 82142
fix patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350027</commentid>
    <comment_count>2</comment_count>
      <attachid>82142</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-11 14:18:49 -0800</bug_when>
    <thetext>Comment on attachment 82142
fix patch

Is it possible to simultaneously remove EditorClient::clientIsEditable?  It&apos;ll be nice if we did that in one patch to ensure no port is doing anything unusual in EditorClient::clientIsEditable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350085</commentid>
    <comment_count>3</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-11 15:18:41 -0800</bug_when>
    <thetext>Sure, will try.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350302</commentid>
    <comment_count>4</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-12 13:24:58 -0800</bug_when>
    <thetext>&gt; Is it possible to simultaneously remove EditorClient::clientIsEditable?  It&apos;ll be nice if we did that in one patch to ensure no port is doing anything unusual in EditorClient::clientIsEditable.

The only other place that uses this function is in WebCore/page/DragController.cpp, DragController::operationForLoad. Any idea to fix this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350342</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-12 17:52:47 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Is it possible to simultaneously remove EditorClient::clientIsEditable?  It&apos;ll be nice if we did that in one patch to ensure no port is doing anything unusual in EditorClient::clientIsEditable.
&gt; 
&gt; The only other place that uses this function is in WebCore/page/DragController.cpp, DragController::operationForLoad. Any idea to fix this?

That code is probably written by someone who doesn&apos;t understand editing.  It&apos;s probably safe to replace it by document-&gt;inDesignMode()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350343</commentid>
    <comment_count>6</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-12 18:51:59 -0800</bug_when>
    <thetext>&gt; &gt; The only other place that uses this function is in WebCore/page/DragController.cpp, DragController::operationForLoad. Any idea to fix this?
&gt; 
&gt; That code is probably written by someone who doesn&apos;t understand editing.  It&apos;s probably safe to replace it by document-&gt;inDesignMode()

Excellent!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350394</commentid>
    <comment_count>7</comment_count>
      <attachid>82262</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-13 08:16:08 -0800</bug_when>
    <thetext>Created attachment 82262
fix patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350461</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-13 14:47:22 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=82262) [details]
&gt; fix patch 2

You should also remove EditorClient::clientIsEditable and remove its implementation from each port to verify that not calling EditorClient::clientIsEditable is self-evidently correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350759</commentid>
    <comment_count>9</comment_count>
      <attachid>82337</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-14 10:44:58 -0800</bug_when>
    <thetext>Created attachment 82337
fix patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350961</commentid>
    <comment_count>10</comment_count>
      <attachid>82337</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 16:22:38 -0800</bug_when>
    <thetext>Comment on attachment 82337
fix patch 3

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

r- because this patch will break WebKit API in many ports.

&gt; Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:-486
&gt; -    return webkit_web_view_get_editable(m_webView);

It seems like we&apos;re regressing GTK port this way.  We need to modify webkit_web_view_set_editable/webkit_web_view_get_editable so that it properly turns on/off design-mode.

&gt; Source/WebKit/mac/WebCoreSupport/WebEditorClient.mm:-251
&gt; -    return [m_webView isEditable];

Ditto.  We need to update setEditable in WebKit/mac/WebView/WebView.mm to turn on/off design mode for mac port as well.

&gt; Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp:-243
&gt; -    return m_page-&gt;isContentEditable();

We need to update QWebPage::setContentEditable as well.

&gt; Source/WebKit/wx/WebKitSupport/EditorClientWx.cpp:-207
&gt; -        if (webKitWin) 
&gt; -            return webKitWin-&gt;IsEditable();

We also need to modify Wx port as well but they&apos;re doing something funky like executing any editing command only if the frame is editable.  We need someone who knows Wx port here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351090</commentid>
    <comment_count>11</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-02-14 21:48:03 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Source/WebKit/wx/WebKitSupport/EditorClientWx.cpp:-207
&gt; &gt; -        if (webKitWin) 
&gt; &gt; -            return webKitWin-&gt;IsEditable();
&gt; 
&gt; We also need to modify Wx port as well but they&apos;re doing something funky like executing any editing command only if the frame is editable.  We need someone who knows Wx port here.

This support was added a very long time ago, and looking over it, we can probably just remove the checks for IsEditable() in the wx commands that call Editor APIs. So IIUC, on the wx side we will need to remove the IsEditable() checks in wxWebKit APIs, then re-implement MakeEditable to call setDesignMode, and IsEditable to return whether document()-&gt;designMode() is set, is this right?

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351095</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 21:55:57 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; This support was added a very long time ago, and looking over it, we can probably just remove the checks for IsEditable() in the wx commands that call Editor APIs. So IIUC, on the wx side we will need to remove the IsEditable() checks in wxWebKit APIs, then re-implement MakeEditable to call setDesignMode, and IsEditable to return whether document()-&gt;designMode() is set, is this right?

Yeah, that makes sense.  That&apos;ll align the implementation of Wx port with the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352632</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-16 23:59:32 -0800</bug_when>
    <thetext>Kevin, any update on Wx side?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352803</commentid>
    <comment_count>14</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-17 06:32:29 -0800</bug_when>
    <thetext>I am also tied up on something else and will come back to this bug later.
--Chang</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352879</commentid>
    <comment_count>15</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-02-17 07:41:39 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Kevin, any update on Wx side?

Sorry, I don&apos;t understand... Until this patch is landed, I can&apos;t make a patch for the wx port without breaking the build, can I?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352893</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-17 07:54:50 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; Kevin, any update on Wx side?
&gt; 
&gt; Sorry, I don&apos;t understand... Until this patch is landed, I can&apos;t make a patch for the wx port without breaking the build, can I?

You can.  Take a look at Qt, Mac, &amp; Windows ports.  They set design mode when editability is changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352924</commentid>
    <comment_count>17</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-02-17 08:33:02 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; Kevin, any update on Wx side?
&gt; &gt; 
&gt; &gt; Sorry, I don&apos;t understand... Until this patch is landed, I can&apos;t make a patch for the wx port without breaking the build, can I?
&gt; 
&gt; You can.  Take a look at Qt, Mac, &amp; Windows ports.  They set design mode when editability is changed.

I see them calling editor()-&gt;applyEditingStyleToBodyElement(), is this what you mean by setting design mode? And actually, after the EditorClient::clientIsEditable check is removed by this patch, I don&apos;t see how you can turn off editing on the page once you&apos;ve set it, at least without resetting and reloading the page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352941</commentid>
    <comment_count>18</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-17 08:49:55 -0800</bug_when>
    <thetext>&gt; &gt; You can.  Take a look at Qt, Mac, &amp; Windows ports.  They set design mode when editability is changed.
&gt; 
&gt; I see them calling editor()-&gt;applyEditingStyleToBodyElement(), is this what you mean by setting design mode? And actually, after the EditorClient::clientIsEditable check is removed by this patch, I don&apos;t see how you can turn off editing on the page once you&apos;ve set it, at least without resetting and reloading the page?

I think calling editor()-&gt;applyEditingStyleToBodyElement() is something extra that QWebPage::setContentEditable does. QWebPage::setContentEditable also sets the editable flag and this flag is retrieved by EditorClient::clientIsEditable later on. So I think we should replace
d-&gt;editable = editable;
with
document-&gt;setDesignMode(editable);//something like that
Thus, we can remove the editable flag along with EditorClient::clientIsEditable.

I will work on this sometime next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353414</commentid>
    <comment_count>19</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-02-17 22:00:57 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; &gt; You can.  Take a look at Qt, Mac, &amp; Windows ports.  They set design mode when editability is changed.
&gt; &gt; 
&gt; &gt; I see them calling editor()-&gt;applyEditingStyleToBodyElement(), is this what you mean by setting design mode? And actually, after the EditorClient::clientIsEditable check is removed by this patch, I don&apos;t see how you can turn off editing on the page once you&apos;ve set it, at least without resetting and reloading the page?
&gt; 
&gt; I think calling editor()-&gt;applyEditingStyleToBodyElement() is something extra that QWebPage::setContentEditable does. QWebPage::setContentEditable also sets the editable flag and this flag is retrieved by EditorClient::clientIsEditable later on. So I think we should replace
&gt; d-&gt;editable = editable;
&gt; with
&gt; document-&gt;setDesignMode(editable);//something like that
&gt; Thus, we can remove the editable flag along with EditorClient::clientIsEditable.
&gt; 
&gt; I will work on this sometime next week.

Okay, thanks, I think I&apos;ve got it now. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354806</commentid>
    <comment_count>20</comment_count>
      <attachid>83215</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-21 14:31:47 -0800</bug_when>
    <thetext>Created attachment 83215
fix patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354879</commentid>
    <comment_count>21</comment_count>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-02-21 16:05:28 -0800</bug_when>
    <thetext>Attachment 83215 did not build on gtk:
Build output: http://queues.webkit.org/results/7943108</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354963</commentid>
    <comment_count>22</comment_count>
      <attachid>83252</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-21 18:22:45 -0800</bug_when>
    <thetext>Created attachment 83252
fix patch 5

fix gtk build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354965</commentid>
    <comment_count>23</comment_count>
      <attachid>83252</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-21 18:25:57 -0800</bug_when>
    <thetext>Comment on attachment 83252
fix patch 5

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

&gt; Source/WebKit/qt/Api/qwebpage.cpp:3167
&gt; -    if (d-&gt;editable != editable) {
&gt; -        d-&gt;editable = editable;
&gt; +    if (isContentEditable() != editable) {
&gt;          d-&gt;page-&gt;setTabKeyCyclesThroughElements(!editable);
&gt;          if (d-&gt;mainFrame) {
&gt;              WebCore::Frame* frame = d-&gt;mainFrame-&gt;d-&gt;frame;
&gt; +            frame-&gt;document()-&gt;setDesignMode(editable ? WebCore::Document::on : WebCore::Document::off);

Chang, did you verify that this change doesn&apos;t break qt port?  i.e. ran all layout tests successfully?

&gt; Source/WebKit/wx/WebFrame.cpp:414
&gt; -    m_isEditable = enable;
&gt; +    if (enable != isEditable() &amp;&amp; m_impl-&gt;frame &amp;&amp; m_impl-&gt;frame-&gt;document())
&gt; +        m_impl-&gt;frame-&gt;document()-&gt;setDesignMode(enable ? WebCore::Document::on : WebCore::Document::off);
&gt;  }
&gt;  
&gt; -
&gt; +bool wxWebFrame::isEditable()
&gt; +{
&gt; +    if (m_impl-&gt;frame &amp;&amp; m_impl-&gt;frame-&gt;document())
&gt; +        return m_impl-&gt;frame-&gt;document()-&gt;inDesignMode();
&gt; +    return false;
&gt; +}

Kevin, could you verify that this change indeed doesn&apos;t break wx?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354971</commentid>
    <comment_count>24</comment_count>
      <attachid>83252</attachid>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2011-02-21 18:41:46 -0800</bug_when>
    <thetext>Comment on attachment 83252
fix patch 5

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

&gt;&gt; Source/WebKit/wx/WebFrame.cpp:414
&gt;&gt; +}
&gt; 
&gt; Kevin, could you verify that this change indeed doesn&apos;t break wx?

The fix itself is the right one, but there&apos;s a typo. wx coding style says to capitalize the first letter, so the method name should be IsEditable, not isEditable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354978</commentid>
    <comment_count>25</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-21 18:56:58 -0800</bug_when>
    <thetext>Thanks for the comments. I&apos;m trying to see if it builds on all platforms (don&apos;t r- yet :). There&apos;s a typo already and I&apos;ll also run the the tests before the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355052</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-21 22:13:13 -0800</bug_when>
    <thetext>I ran layout tests on Mac port and got one failure:

--- /tmp/layout-test-results/editing/selection/designmode-no-caret-expected.txt	2011-02-21 19:22:09.000000000 -0800
+++ /tmp/layout-test-results/editing/selection/designmode-no-caret-actual.txt	2011-02-21 19:22:09.000000000 -0800
@@ -9,9 +9,11 @@
       RenderBlock (anonymous) at (0,0) size 784x54
         RenderText {#text} at (0,0) size 784x54
           text run at (0,0) width 759: &quot;This tests to see that a caret is placed inside an editable document that is entirely editable even when no caret is requested&quot;
+          text run at (759,0) width 4: &quot; &quot;
           text run at (0,18) width 118: &quot;programmatically. &quot;
           text run at (118,18) width 187: &quot;We do this as a convenience. &quot;
           text run at (305,18) width 479: &quot;Right now, we only do this convenience when a document&apos;s frame becomes&quot;
+          text run at (784,18) width 0: &quot; &quot;
           text run at (0,36) width 378: &quot;first responder or when a document&apos;s window becomes key.&quot;
       RenderBlock {PRE} at (0,67) size 784x15
         RenderText {#text} at (0,0) size 88x15

Simon, do you know what is going wrong here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355056</commentid>
    <comment_count>27</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-02-21 22:22:55 -0800</bug_when>
    <thetext>I do not, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355223</commentid>
    <comment_count>28</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-22 06:28:26 -0800</bug_when>
    <thetext>the above regression shows up after the latest change on mac/WebView/WebView.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355229</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-22 06:43:50 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; the above regression shows up after the latest change on mac/WebView/WebView.mm.

What do you mean by that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355243</commentid>
    <comment_count>30</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-22 07:09:42 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #28)
&gt; &gt; the above regression shows up after the latest change on mac/WebView/WebView.mm.
&gt; 
&gt; What do you mean by that?

I mean the regression was caused by the code change in the WebView.mm, which was done in patch#5. There was no regression up until patch#4. The difference in #5 is that the webview::iseditable always sync with designmode after the change but it&apos;s not the case before. I am looking into further details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355275</commentid>
    <comment_count>31</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-22 08:02:22 -0800</bug_when>
    <thetext>Here are some findings for the regression:
In function finishedLoadingWithDataSource in file mac/WebView/WebHTMLRepresentation.mm,
    if ([webView isEditable])
        core(webFrame)-&gt;editor()-&gt;applyEditingStyleToBodyElement();

The if condition always returns false before my change because the local flag is false. In my patch, the local flag is removed and isEditable checks the designmode, which is true.

It seems to me the new behavior is the right one and we should update the expected results. Agree? Disagree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355291</commentid>
    <comment_count>32</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-22 08:31:34 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Here are some findings for the regression:
&gt; In function finishedLoadingWithDataSource in file mac/WebView/WebHTMLRepresentation.mm,
&gt;     if ([webView isEditable])
&gt;         core(webFrame)-&gt;editor()-&gt;applyEditingStyleToBodyElement();
&gt; 
&gt; The if condition always returns false before my change because the local flag is false. In my patch, the local flag is removed and isEditable checks the designmode, which is true.
&gt; 
&gt; It seems to me the new behavior is the right one and we should update the expected results. Agree? Disagree?

But why does updating layout causes new text nodes to appear?  These new spaces do exist in the code but I&apos;m not sure if we should be emitting them in the render tree when they&apos;re at end of lines.  Could someone familiar with the rendering engine comment on this point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355356</commentid>
    <comment_count>33</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-22 10:02:20 -0800</bug_when>
    <thetext>&gt; &gt; It seems to me the new behavior is the right one and we should update the expected results. Agree? Disagree?
&gt; 
&gt; But why does updating layout causes new text nodes to appear?  These new spaces do exist in the code but I&apos;m not sure if we should be emitting them in the render tree when they&apos;re at end of lines.  Could someone familiar with the rendering engine comment on this point?

Function Editor::applyEditingStyleToElement sets some properties:
    style-&gt;setProperty(CSSPropertyWordWrap, &quot;break-word&quot;, false, ec);
    style-&gt;setProperty(CSSPropertyWebkitNbspMode, &quot;space&quot;, false, ec);
    style-&gt;setProperty(CSSPropertyWebkitLineBreak, &quot;after-white-space&quot;, false, ec);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355624</commentid>
    <comment_count>34</comment_count>
      <attachid>83394</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-22 14:44:42 -0800</bug_when>
    <thetext>Created attachment 83394
fix patch 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358797</commentid>
    <comment_count>35</comment_count>
      <attachid>83394</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 15:13:50 -0800</bug_when>
    <thetext>Comment on attachment 83394
fix patch 6

(In reply to comment #33)
&gt; &gt; &gt; It seems to me the new behavior is the right one and we should update the expected results. Agree? Disagree?
&gt; &gt; 
&gt; &gt; But why does updating layout causes new text nodes to appear?  These new spaces do exist in the code but I&apos;m not sure if we should be emitting them in the render tree when they&apos;re at end of lines.  Could someone familiar with the rendering engine comment on this point?
&gt; 
&gt; Function Editor::applyEditingStyleToElement sets some properties:
&gt;     style-&gt;setProperty(CSSPropertyWordWrap, &quot;break-word&quot;, false, ec);
&gt;     style-&gt;setProperty(CSSPropertyWebkitNbspMode, &quot;space&quot;, false, ec);
&gt;     style-&gt;setProperty(CSSPropertyWebkitLineBreak, &quot;after-white-space&quot;, false, ec);

Ok.  The change looks same to me so let&apos;s hope that this won&apos;t cause any regressions.  Thanks a lot for making this change!  I believe this and your follow-up patch will greatly improve the performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358798</commentid>
    <comment_count>36</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 15:14:23 -0800</bug_when>
    <thetext>&gt; Ok.  The change looks same to me so let&apos;s hope that this won&apos;t cause any regressions.  Thanks a lot for making this change!  I believe this and your follow-up patch will greatly improve the performance.

I meant to say the change looks &quot;sane&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358817</commentid>
    <comment_count>37</comment_count>
      <attachid>83394</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-27 16:40:00 -0800</bug_when>
    <thetext>Comment on attachment 83394
fix patch 6

thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358831</commentid>
    <comment_count>38</comment_count>
      <attachid>83394</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-27 18:07:03 -0800</bug_when>
    <thetext>Comment on attachment 83394
fix patch 6

Rejecting attachment 83394 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sf&apos;, &apos;la...&quot; exit_code: 2

Last 500 characters of output:
://git.webkit.org/WebKit
   d5109a9..a3991dd  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 79833 = d5109a91a14034dcc4f948631a41b2efed4487e5
r79834 = a3991dd0f5c78b808f362dec70ef788cc6b7e5bb
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://queues.webkit.org/results/8070229</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359027</commentid>
    <comment_count>39</comment_count>
      <attachid>84053</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-02-28 07:03:09 -0800</bug_when>
    <thetext>Created attachment 84053
fix patch 7

cleaned up some junks in the ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359550</commentid>
    <comment_count>40</comment_count>
      <attachid>84053</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-28 17:47:23 -0800</bug_when>
    <thetext>Comment on attachment 84053
fix patch 7

Clearing flags on attachment: 84053

Committed r79953: &lt;http://trac.webkit.org/changeset/79953&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359551</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-28 17:47:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359564</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-28 18:03:54 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/79953 might have broken SnowLeopard Intel Release (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359565</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-28 18:04:01 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/79954 might have broken SnowLeopard Intel Release (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>359696</commentid>
    <comment_count>44</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-01 00:10:00 -0800</bug_when>
    <thetext>*** Bug 54050 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82142</attachid>
            <date>2011-02-11 10:29:00 -0800</date>
            <delta_ts>2011-02-13 08:16:08 -0800</delta_ts>
            <desc>fix patch</desc>
            <filename>54292_1.patch</filename>
            <type>text/plain</type>
            <size>4362</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4MzQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDItMTEgIENoYW5nIFNo
dSAgPGNoYW5nLnNodUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgcmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRF
ZGl0YWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTQyOTIKKworICAgICAgICBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUgaXMgY3VycmVudGx5IGJh
c2VkIG9uIHR3byB0aGluZ3M6IEVkaXRvcjo6Y2xpZW50SXNFZGl0YWJsZSBhbmQKKyAgICAgICAg
RG9jdW1lbnQ6OmluRGVzaWduTW9kZS4gSW4gZmFjdCwgaXQgc2hvdWxkIG9ubHkgcmVseSBvbiBE
b2N1bWVudDo6aW5EZXNpZ25Nb2RlLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmlzUmVhZE9ubHkpOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRT
ZWxlY3Rpb25Gcm9tTm9uZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXNDb250ZW50RWRpdGFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmlzQ29udGVudFJpY2hseUVkaXRhYmxlKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisKIDIwMTEtMDItMTEg
IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
Y3BwCShyZXZpc2lvbiA3ODIyNykKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2MiwxMiArNjYy
LDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1JlYWRPbgogICAgICAgICBI
VE1MRWxlbWVudCogYm9keSA9IGRvY3VtZW50LT5ib2R5KCk7CiAgICAgICAgIGlmIChib2R5ICYm
IGJvZHktPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIAotICAgICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKLSAgICAg
ICAgaWYgKCFmcmFtZSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKLSAgICAg
ICAgcmV0dXJuICFmcmFtZS0+aXNDb250ZW50RWRpdGFibGUoKTsKKworICAgICAgICByZXR1cm4g
IWRvY3VtZW50LT5pbkRlc2lnbk1vZGUoKTsKICAgICB9CiAKICAgICBpZiAobV9yZW5kZXJlci0+
aXNCb3hNb2RlbE9iamVjdCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc4MjI3KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2
Nyw3ICsxNzY3LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRTZWxlY3Rpb25Gcgog
CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBib29s
IGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdz
KCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgaWYgKCFpc05vbmUoKSB8fCAhKG1fZnJh
bWUtPmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZykpCisgICAgaWYgKCFpc05v
bmUoKSB8fCAhKGRvY3VtZW50LT5pbkRlc2lnbk1vZGUoKSB8fCBjYXJldEJyb3dzaW5nKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1l
bnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiA3ODIy
NykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NTUsNyArNjU1LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNv
bnN0CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QgCiB7Ci0g
ICAgaWYgKGRvY3VtZW50KCktPmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+aXNDb250
ZW50RWRpdGFibGUoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWRlYWxseSB3ZSdkIGNhbGwgQVNTRVJUIW5lZWRz
U3R5bGVSZWNhbGMoKSkgaGVyZSwgYnV0CkBAIC02NzQsNyArNjc0LDcgQEAgYm9vbCBIVE1MRWxl
bWVudDo6aXNDb250ZW50RWRpdGFibGUoKSBjbwogCiBib29sIEhUTUxFbGVtZW50Ojppc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGRvY3VtZW50KCktPmZyYW1lKCkg
JiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAgICBpZiAoZG9j
dW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYg
KCFyZW5kZXJlcigpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gNzgyMjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUx
LDEzICs1NTEsNiBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPCiAg
ICAgfQogfQogCi1ib29sIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKG1fZWRpdG9yLmNsaWVudElzRWRpdGFibGUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgcmV0dXJuIG1fZG9jLT5pbkRlc2lnbk1vZGUoKTsKLX0KLQogI2lmbmRlZiBOREVCVUcKIHN0
YXRpYyBIYXNoU2V0PEZyYW1lKj4mIGtlZXBBbGl2ZVNldCgpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5oCShyZXZpc2lvbiA3ODIyNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTgyLDggKzE4Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFnZShOb2RlKik7CiAgICAgICAgIERyYWdJbWFnZVJlZiBk
cmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKIAotICAgICAgICBib29sIGlzQ29udGVudEVkaXRhYmxl
KCkgY29uc3Q7IC8vIGlmIHRydWUsIGV2ZXJ5dGhpbmcgaW4gZnJhbWUgaXMgZWRpdGFibGUKLQog
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50
UG9pbnQmIGZyYW1lUG9pbnQpOwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50KGNv
bnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82262</attachid>
            <date>2011-02-13 08:16:08 -0800</date>
            <delta_ts>2011-02-14 10:44:58 -0800</delta_ts>
            <desc>fix patch 2</desc>
            <filename>54292_2.patch</filename>
            <type>text/plain</type>
            <size>6290</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NDI4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMDItMTMgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICByZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRh
YmxlIGFuZCBFZGl0b3I6OmNsaWVudElzRWRpdGFibGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIEZyYW1lOjppc0NvbnRl
bnRFZGl0YWJsZSBpcyBjdXJyZW50bHkgYmFzZWQgb24gdHdvIHRoaW5nczogRWRpdG9yOjpjbGll
bnRJc0VkaXRhYmxlIGFuZAorICAgICAgICBEb2N1bWVudDo6aW5EZXNpZ25Nb2RlLiBJbiBmYWN0
LCBpdCBzaG91bGQgb25seSByZWx5IG9uIERvY3VtZW50OjppbkRlc2lnbk1vZGUuCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSk6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6Cisg
ICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbkZyb21Ob25lKToKKyAgICAgICAg
KiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojpp
c0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXNDb250
ZW50UmljaGx5RWRpdGFibGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgorICAg
ICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKwogMjAxMS0w
Mi0xMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbiBCZXJuc3RlaW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDc4NDI1
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYyLDEyICs2NjIsOCBAQCBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVhZE9uCiAgICAgICAgIEhUTUxFbGVtZW50KiBib2R5ID0g
ZG9jdW1lbnQtPmJvZHkoKTsKICAgICAgICAgaWYgKGJvZHkgJiYgYm9keS0+aXNDb250ZW50RWRp
dGFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1lKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gIWZyYW1lLT5p
c0NvbnRlbnRFZGl0YWJsZSgpOworCisgICAgICAgIHJldHVybiAhZG9jdW1lbnQtPmluRGVzaWdu
TW9kZSgpOwogICAgIH0KIAogICAgIGlmIChtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDc4NDI1KQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Mzgs
MTEgKzkzOCw2IEBAIHZvaWQgRWRpdG9yOjphcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3QKICAg
ICAgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZSwgZWRpdGluZ0FjdGlvbik7CiB9CiAKLWJv
b2wgRWRpdG9yOjpjbGllbnRJc0VkaXRhYmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY2xpZW50
KCkgJiYgY2xpZW50KCktPmlzRWRpdGFibGUoKTsKLX0KLQogLy8gQ1NTIHByb3BlcnRpZXMgdGhh
dCBvbmx5IGhhcyBhIHZpc3VhbCBkaWZmZXJlbmNlIHdoZW4gYXBwbGllZCB0byB0ZXh0Lgogc3Rh
dGljIGNvbnN0IGludCB0ZXh0T25seVByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVRl
eHREZWNvcmF0aW9uLApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiA3ODQy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2Nyw4ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBzZWxlY3Rpb25TdGFydEhh
c1N0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKSBjb25zdDsKIAotICAgIGJvb2wgY2xpZW50SXNF
ZGl0YWJsZSgpIGNvbnN0OwotICAgIAogICAgIHZvaWQgc2V0U2hvdWxkU3R5bGVXaXRoQ1NTKGJv
b2wgZmxhZykgeyBtX3Nob3VsZFN0eWxlV2l0aENTUyA9IGZsYWc7IH0KICAgICBib29sIHNob3Vs
ZFN0eWxlV2l0aENTUygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3R5bGVXaXRoQ1NTOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNw
cAkocmV2aXNpb24gNzg0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCB2b2lkIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbkZyCiAKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IG1fZnJh
bWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJs
ZWQoKTsKLSAgICBpZiAoIWlzTm9uZSgpIHx8ICEobV9mcmFtZS0+aXNDb250ZW50RWRpdGFibGUo
KSB8fCBjYXJldEJyb3dzaW5nKSkKKyAgICBpZiAoIWlzTm9uZSgpIHx8ICEoZG9jdW1lbnQtPmlu
RGVzaWduTW9kZSgpIHx8IGNhcmV0QnJvd3NpbmcpKQogICAgICAgICByZXR1cm47CiAKICAgICBO
b2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4NDI1KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NSw3ICs2NTUsNyBAQCBi
b29sIEhUTUxFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAogYm9vbCBIVE1MRWxlbWVu
dDo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdCAKIHsKLSAgICBpZiAoZG9jdW1lbnQoKS0+ZnJh
bWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgIGlm
IChkb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAvLyBJZGVhbGx5IHdlJ2QgY2FsbCBBU1NFUlQhbmVlZHNTdHlsZVJlY2FsYygpKSBoZXJlLCBi
dXQKQEAgLTY3NCw3ICs2NzQsNyBAQCBib29sIEhUTUxFbGVtZW50Ojppc0NvbnRlbnRFZGl0YWJs
ZSgpIGNvCiAKIGJvb2wgSFRNTEVsZW1lbnQ6OmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgY29u
c3QKIHsKLSAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgp
LT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgIGlmIChkb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXJlbmRlcmVyKCkpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3ODQyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTMsNyArMzUzLDcgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9u
RgogewogICAgIEFTU0VSVChkcmFnRGF0YSk7CiAgICAgRG9jdW1lbnQqIGRvYyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSk7
Ci0gICAgaWYgKGRvYyAmJiAobV9kaWRJbml0aWF0ZURyYWcgfHwgZG9jLT5pc1BsdWdpbkRvY3Vt
ZW50KCkgfHwgKGRvYy0+ZnJhbWUoKSAmJiBkb2MtPmZyYW1lKCktPmVkaXRvcigpLT5jbGllbnRJ
c0VkaXRhYmxlKCkpKSkKKyAgICBpZiAoZG9jICYmIChtX2RpZEluaXRpYXRlRHJhZyB8fCBkb2Mt
PmlzUGx1Z2luRG9jdW1lbnQoKSB8fCBkb2MtPmluRGVzaWduTW9kZSgpKSkKICAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOwogICAgIHJldHVybiBkcmFnT3BlcmF0aW9uKGRyYWdEYXRh
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiA3ODQyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsMTMgKzU1MSw2
IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQoRE8KICAgICB9CiB9CiAK
LWJvb2wgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKLXsKLSAgICBpZiAobV9lZGl0
b3IuY2xpZW50SXNFZGl0YWJsZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4g
bV9kb2MtPmluRGVzaWduTW9kZSgpOwotfQotCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIEhhc2hT
ZXQ8RnJhbWUqPiYga2VlcEFsaXZlU2V0KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlz
aW9uIDc4NDI1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODIsOCArMTgyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEcmFnSW1h
Z2VSZWYgbm9kZUltYWdlKE5vZGUqKTsKICAgICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZv
clNlbGVjdGlvbigpOwogCi0gICAgICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdDsg
Ly8gaWYgdHJ1ZSwgZXZlcnl0aGluZyBpbiBmcmFtZSBpcyBlZGl0YWJsZQotCiAgICAgICAgIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJh
bWVQb2ludCk7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50UG9p
bnQmIHdpbmRvd1BvaW50KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82337</attachid>
            <date>2011-02-14 10:44:58 -0800</date>
            <delta_ts>2011-02-21 14:31:47 -0800</delta_ts>
            <desc>fix patch 3</desc>
            <filename>54292_3.patch</filename>
            <type>text/plain</type>
            <size>23916</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NDg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDItMTQgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRh
YmxlLCBFZGl0b3I6OmNsaWVudElzRWRpdGFibGUgYW5kIEVkaXRvckNsaWVudDo6aXNFZGl0YWJs
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0Mjky
CisKKyAgICAgICAgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlIGlzIGN1cnJlbnRseSBiYXNlZCBv
biB0d28gdGhpbmdzOiBFZGl0b3I6OmNsaWVudElzRWRpdGFibGUgYW5kCisgICAgICAgIERvY3Vt
ZW50OjppbkRlc2lnbk1vZGUuIEluIGZhY3QsIGl0IHNob3VsZCBvbmx5IHJlbHkgb24gRG9jdW1l
bnQ6OmluRGVzaWduTW9kZS4gQXMgYSByZXN1bHQsCisgICAgICAgIEVkaXRvcjo6Y2xpZW50SXNF
ZGl0YWJsZSBhbmQgaXRzIGNsaWVudC1zaWRlIGltcGxlbWVudGF0aW9uIGNhbiBiZSByZW1vdmVk
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVhZE9u
bHkpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSk6
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6aXNDb250ZW50RWRpdGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnQ6OmlzQ29udGVudFJpY2hseUVkaXRhYmxlKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpvcGVyYXRpb25Gb3JM
b2FkKToKKyAgICAgICAgKiBwYWdlL0VkaXRvckNsaWVudC5oOgorICAgICAgICAqIHBhZ2UvRnJh
bWUuY3BwOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKwogMjAxMS0wMi0xNCAgQWxleGFuZGVy
IFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1
cnkgU2VtaWtoYXRza3kuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDc4NDg3
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYyLDEyICs2NjIsOCBAQCBib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVhZE9uCiAgICAgICAgIEhUTUxFbGVtZW50KiBib2R5ID0g
ZG9jdW1lbnQtPmJvZHkoKTsKICAgICAgICAgaWYgKGJvZHkgJiYgYm9keS0+aXNDb250ZW50RWRp
dGFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1lKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gIWZyYW1lLT5p
c0NvbnRlbnRFZGl0YWJsZSgpOworCisgICAgICAgIHJldHVybiAhZG9jdW1lbnQtPmluRGVzaWdu
TW9kZSgpOwogICAgIH0KIAogICAgIGlmIChtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDc4NDg3KQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Mzgs
MTEgKzkzOCw2IEBAIHZvaWQgRWRpdG9yOjphcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3QKICAg
ICAgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZSwgZWRpdGluZ0FjdGlvbik7CiB9CiAKLWJv
b2wgRWRpdG9yOjpjbGllbnRJc0VkaXRhYmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY2xpZW50
KCkgJiYgY2xpZW50KCktPmlzRWRpdGFibGUoKTsKLX0KLQogLy8gQ1NTIHByb3BlcnRpZXMgdGhh
dCBvbmx5IGhhcyBhIHZpc3VhbCBkaWZmZXJlbmNlIHdoZW4gYXBwbGllZCB0byB0ZXh0Lgogc3Rh
dGljIGNvbnN0IGludCB0ZXh0T25seVByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVRl
eHREZWNvcmF0aW9uLApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiA3ODQ4
NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2Nyw4ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBzZWxlY3Rpb25TdGFydEhh
c1N0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKSBjb25zdDsKIAotICAgIGJvb2wgY2xpZW50SXNF
ZGl0YWJsZSgpIGNvbnN0OwotICAgIAogICAgIHZvaWQgc2V0U2hvdWxkU3R5bGVXaXRoQ1NTKGJv
b2wgZmxhZykgeyBtX3Nob3VsZFN0eWxlV2l0aENTUyA9IGZsYWc7IH0KICAgICBib29sIHNob3Vs
ZFN0eWxlV2l0aENTUygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU3R5bGVXaXRoQ1NTOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNw
cAkocmV2aXNpb24gNzg0ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNv
bnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCB2b2lkIFNl
bGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbkZyCiAKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IG1fZnJh
bWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJs
ZWQoKTsKLSAgICBpZiAoIWlzTm9uZSgpIHx8ICEobV9mcmFtZS0+aXNDb250ZW50RWRpdGFibGUo
KSB8fCBjYXJldEJyb3dzaW5nKSkKKyAgICBpZiAoIWlzTm9uZSgpIHx8ICEoZG9jdW1lbnQtPmlu
RGVzaWduTW9kZSgpIHx8IGNhcmV0QnJvd3NpbmcpKQogICAgICAgICByZXR1cm47CiAKICAgICBO
b2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDc4NDg3KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1NSw3ICs2NTUsNyBAQCBi
b29sIEhUTUxFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKIAogYm9vbCBIVE1MRWxlbWVu
dDo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdCAKIHsKLSAgICBpZiAoZG9jdW1lbnQoKS0+ZnJh
bWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgIGlm
IChkb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAvLyBJZGVhbGx5IHdlJ2QgY2FsbCBBU1NFUlQhbmVlZHNTdHlsZVJlY2FsYygpKSBoZXJlLCBi
dXQKQEAgLTY3NCw3ICs2NzQsNyBAQCBib29sIEhUTUxFbGVtZW50Ojppc0NvbnRlbnRFZGl0YWJs
ZSgpIGNvCiAKIGJvb2wgSFRNTEVsZW1lbnQ6OmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkgY29u
c3QKIHsKLSAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgp
LT5pc0NvbnRlbnRFZGl0YWJsZSgpKQorICAgIGlmIChkb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXJlbmRlcmVyKCkpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3ODQ4NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTMsNyArMzUzLDcgQEAgRHJhZ09wZXJhdGlvbiBEcmFnQ29udHJvbGxlcjo6b3BlcmF0aW9u
RgogewogICAgIEFTU0VSVChkcmFnRGF0YSk7CiAgICAgRG9jdW1lbnQqIGRvYyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPmRvY3VtZW50QXRQb2ludChkcmFnRGF0YS0+Y2xpZW50UG9zaXRpb24oKSk7
Ci0gICAgaWYgKGRvYyAmJiAobV9kaWRJbml0aWF0ZURyYWcgfHwgZG9jLT5pc1BsdWdpbkRvY3Vt
ZW50KCkgfHwgKGRvYy0+ZnJhbWUoKSAmJiBkb2MtPmZyYW1lKCktPmVkaXRvcigpLT5jbGllbnRJ
c0VkaXRhYmxlKCkpKSkKKyAgICBpZiAoZG9jICYmIChtX2RpZEluaXRpYXRlRHJhZyB8fCBkb2Mt
PmlzUGx1Z2luRG9jdW1lbnQoKSB8fCBkb2MtPmluRGVzaWduTW9kZSgpKSkKICAgICAgICAgcmV0
dXJuIERyYWdPcGVyYXRpb25Ob25lOwogICAgIHJldHVybiBkcmFnT3BlcmF0aW9uKGRyYWdEYXRh
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRpdG9yQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9FZGl0b3JDbGllbnQuaAkocmV2aXNpb24gNzg0ODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0VkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksOCArMTA5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVj
a2luZ0VuYWJsZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2lu
ZygpID0gMDsKICAgICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpID0gMDsK
LSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpID0gMDsKIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZEVuZEVkaXRpbmcoUmFuZ2UqKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2
aXNpb24gNzg0ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTUxLDEzICs1NTEsNiBAQCB2b2lkIEZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0Zv
cldvcmxkKERPCiAgICAgfQogfQogCi1ib29sIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNv
bnN0Ci17Ci0gICAgaWYgKG1fZWRpdG9yLmNsaWVudElzRWRpdGFibGUoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fZG9jLT5pbkRlc2lnbk1vZGUoKTsKLX0KLQogI2lmbmRl
ZiBOREVCVUcKIHN0YXRpYyBIYXNoU2V0PEZyYW1lKj4mIGtlZXBBbGl2ZVNldCgpCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA3ODQ4NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDggKzE4Miw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgRHJhZ0ltYWdlUmVmIG5vZGVJbWFnZShOb2RlKik7CiAgICAgICAgIERy
YWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rpb24oKTsKIAotICAgICAgICBib29sIGlzQ29u
dGVudEVkaXRhYmxlKCkgY29uc3Q7IC8vIGlmIHRydWUsIGV2ZXJ5dGhpbmcgaW4gZnJhbWUgaXMg
ZWRpdGFibGUKLQogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpOwogICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnRBdFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODQ4OCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMTQg
IENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29u
dGVudEVkaXRhYmxlLCBFZGl0b3I6OmNsaWVudElzRWRpdGFibGUgYW5kIEVkaXRvckNsaWVudDo6
aXNFZGl0YWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlv
bi4KKworICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMv
RWRpdG9yQ2xpZW50SW1wbC5oOgorCiAyMDExLTAyLTE0ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rp
dmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRz
a3kuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmNwcAkocmV2aXNpb24gNzg0ODcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDExICsxODcsNiBAQCBp
bnQgRWRpdG9yQ2xpZW50SW1wbDo6c3BlbGxDaGVja2VyRG9jdW1lCiAgICAgcmV0dXJuIDA7CiB9
CiAKLWJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6aXNFZGl0YWJsZSgpCi17Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCiBib29sIEVkaXRvckNsaWVudEltcGw6OnNob3VsZEJlZ2luRWRpdGluZyhSYW5n
ZSogcmFuZ2UpCiB7CiAgICAgaWYgKG1fd2ViVmlldy0+Y2xpZW50KCkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA3ODQ4
NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlz
R3JhbW1hckNoZWNraW5nRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFy
Q2hlY2tpbmcoKTsKICAgICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwot
ICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEJl
Z2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRF
ZGl0aW5nKFdlYkNvcmU6OlJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5v
ZGUoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0
QWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NDg5KQorKysgU291cmNl
L1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTEtMDItMTQgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJh
bWU6OmlzQ29udGVudEVkaXRhYmxlLCBFZGl0b3I6OmNsaWVudElzRWRpdGFibGUgYW5kIEVkaXRv
ckNsaWVudDo6aXNFZGl0YWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBs
ZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisKIDIwMTEt
MDItMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNzg0ODcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDUsMTIgKzE0NSw2IEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpkaWRTZXRT
ZWxlY3Rpb25UeXAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIEVkaXRvckNsaWVu
dEVmbDo6aXNFZGl0YWJsZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRv
KFdURjo6UGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5oCShyZXZpc2lvbiA3ODQ4NykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7CiAgICAg
dmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc0VkaXRhYmxlKCk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFJh
bmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKTsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiwgUmFuZ2UqLCBFZGl0b3JJbnNlcnRB
Y3Rpb24pOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNzg0ODkpCisrKyBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MS0wMi0xNCAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFt
ZTo6aXNDb250ZW50RWRpdGFibGUsIEVkaXRvcjo6Y2xpZW50SXNFZGl0YWJsZSBhbmQgRWRpdG9y
Q2xpZW50Ojppc0VkaXRhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRlIGltcGxl
bWVudGF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaDoKKwogMjAxMS0w
Mi0xMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjc4MzMxLgpJbmRleDogU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lv
biA3ODQ4NykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MSwxMSArNDgxLDYgQEAgdm9pZCBFZGl0b3JD
bGllbnQ6OmRpZFNldFNlbGVjdGlvblR5cGVzRgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
LWJvb2wgRWRpdG9yQ2xpZW50Ojppc0VkaXRhYmxlKCkKLXsKLSAgICByZXR1cm4gd2Via2l0X3dl
Yl92aWV3X2dldF9lZGl0YWJsZShtX3dlYlZpZXcpOwotfQotCiB2b2lkIEVkaXRvckNsaWVudDo6
cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1h
bmQ+IGNvbW1hbmQpCiB7CiAgICAgaWYgKHVuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9T
dGFja0RlcHRoKQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmgJKHJldmlzaW9uIDc4NDg3KQorKysgU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTgw
LDggKzgwLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAgICAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9j
dW1lbnRUYWcoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKTsKICAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKTsKICAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSosIFdlYkNv
cmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaGFpa3Uv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3ODQ4OSkKKysrIFNvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMTQgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRh
YmxlLCBFZGl0b3I6OmNsaWVudElzRWRpdGFibGUgYW5kIEVkaXRvckNsaWVudDo6aXNFZGl0YWJs
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0Mjky
CisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oOgorCiAyMDExLTAyLTA4ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlk
ZWwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAkocmV2aXNpb24gNzg0ODcpCisrKyBTb3VyY2UvV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTEzLDEyICsxMTMsNiBAQCBpbnQgRWRpdG9yQ2xpZW50SGFpa3U6OnNwZWxsQ2hl
Y2tlckRvY3VtCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgRWRpdG9yQ2xpZW50SGFpa3U6Omlz
RWRpdGFibGUoKQotewotICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgY29udHJvbGxhYmxlCi0gICAg
cmV0dXJuIGZhbHNlOwotfQotCiBib29sIEVkaXRvckNsaWVudEhhaWt1OjpzaG91bGRCZWdpbkVk
aXRpbmcoV2ViQ29yZTo6UmFuZ2UqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRIYWlrdS5oCShyZXZpc2lvbiA3ODQ4NykKKysrIFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsOCArNTcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFt
bWFyQ2hlY2tpbmcoKTsKICAgICAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRU
YWcoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsKICAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKTsKICAgICAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NDg5KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMTQgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRh
YmxlLCBFZGl0b3I6OmNsaWVudElzRWRpdGFibGUgYW5kIEVkaXRvckNsaWVudDo6aXNFZGl0YWJs
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0Mjky
CisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKwogMjAxMS0wMi0xMSAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50
LgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgJKHJldmlzaW9uIDc4NDg3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
OwogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZERlbGV0ZVJhbmdlKFdlYkNvcmU6OlJhbmdlKik7ICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRTaG93RGVsZXRlSW50ZXJmYWNlKFdlYkNvcmU6OkhUTUxFbGVtZW50Kik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1t
CShyZXZpc2lvbiA3ODQ4NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDExICsyNDYsNiBAQCBpbnQg
V2ViRWRpdG9yQ2xpZW50OjpzcGVsbENoZWNrZXJEb2N1bWVuCiAgICAgcmV0dXJuIFttX3dlYlZp
ZXcgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6
aXNFZGl0YWJsZSgpCi17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgaXNFZGl0YWJsZV07Ci19Ci0K
IGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGREZWxldGVSYW5nZShSYW5nZSogcmFuZ2UpCiB7
CiAgICAgcmV0dXJuIFtbbV93ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZp
ZXc6bV93ZWJWaWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNzg0ODkpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDExLTAyLTE0ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZy
YW1lOjppc0NvbnRlbnRFZGl0YWJsZSwgRWRpdG9yOjpjbGllbnRJc0VkaXRhYmxlIGFuZCBFZGl0
b3JDbGllbnQ6OmlzRWRpdGFibGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1w
bGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKwogMjAxMS0w
Mi0xMSAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8b3N0YXBlbmtvLnZpYXRjaGVzbGF2QG5va2lh
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb3IgQXJuZSBWZXN0YsO4LgpJbmRleDogU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJ
KHJldmlzaW9uIDc4NDg3KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxMSArMjM4LDYgQEAgYm9vbCBF
ZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbgogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNFZGl0YWJsZSgpCi17IAotICAgIHJldHVybiBtX3Bh
Z2UtPmlzQ29udGVudEVkaXRhYmxlKCk7Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lz
dGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBj
bWQpCiB7CiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwpJbmRleDogU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAkocmV2aXNpb24gNzg0ODcpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAgICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVu
dFRhZygpOwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7Ci0g
ICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRC
ZWdpbkVkaXRpbmcoUmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhS
YW5nZSopOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNzg0ODkpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
MS0wMi0xNCAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFt
ZTo6aXNDb250ZW50RWRpdGFibGUsIEVkaXRvcjo6Y2xpZW50SXNFZGl0YWJsZSBhbmQgRWRpdG9y
Q2xpZW50Ojppc0VkaXRhYmxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRlIGltcGxl
bWVudGF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKwogMjAxMS0w
Mi0xMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCShyZXZpc2lvbiA3ODQ4NykKKysrIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYxOSwxMSArNjE5LDYgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRs
ZUlucHV0TWV0aG9kSwogewogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNFZGl0YWJsZSgp
Ci17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6aWdub3Jl
V29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmIHdvcmQpCiB7CiAgICAgQ09NUHRyPElX
ZWJFZGl0aW5nRGVsZWdhdGU+IGVkOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDc4NDg3KQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDggKzQ5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVD
b250aW51b3VzU3BlbGxDaGVja2luZygpOwogICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRv
Y3VtZW50VGFnKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCiAgICAgdmly
dHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopOwogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJhbmdlKik7CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZEluc2VydFRleHQoY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJDb3JlOjpSYW5nZSos
IFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwko
cmV2aXNpb24gNzg0ODkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAyLTE0ICBDaGFuZyBTaHUgIDxjc2h1QHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSwgRWRpdG9y
OjpjbGllbnRJc0VkaXRhYmxlIGFuZCBFZGl0b3JDbGllbnQ6OmlzRWRpdGFibGUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAg
IFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50V2luQ0UuaDoKKwogMjAxMS0wMi0xMCAgTmF0ZSBDaGFwaW4gIDxqYXBo
ZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gNzg0ODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ0LDEyICsxNDQsNiBAQCB2b2lkIEVkaXRvckNsaWVudFdpbkNFOjpkaWRTZXRTZWxlY3Rpb25U
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBFZGl0b3JDbGllbnRXaW5DRTo6aXNF
ZGl0YWJsZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KIHZvaWQgRWRpdG9yQ2xpZW50V2luQ0U6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA3ODQ4NykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAkod29ya2luZyBj
b3B5KQpAQCAtNDgsOCArNDgsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdy
YW1tYXJDaGVja2luZygpOwogICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFn
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCiAgICAgdmlydHVhbCBib29s
IHNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRp
dG9ySW5zZXJ0QWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA3ODQ4OSkKKysr
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTEtMDItMTQgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQg
b2YgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlLCBFZGl0b3I6OmNsaWVudElzRWRpdGFibGUgYW5k
IEVkaXRvckNsaWVudDo6aXNFZGl0YWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lk
ZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50
V3guY3BwOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaDoKKwogMjAx
MS0wMi0xMCAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRWRpdG9yQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAJKHJldmlzaW9uIDc4NDg3KQorKysgU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTk3LDE4ICsxOTcsNiBAQCBib29sIEVkaXRvckNsaWVudFd4OjpzZWxlY3RXb3JkQmVm
b3JlTWVuCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVkaXRvckNsaWVudFd4Ojppc0Vk
aXRhYmxlKCkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLQotICAgIGlmIChmcmFtZSkgewotICAgICAgICB3eFdl
YlZpZXcqIHdlYktpdFdpbiA9IGR5bmFtaWNfY2FzdDx3eFdlYlZpZXcqPihmcmFtZS0+dmlldygp
LT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKLSAgICAgICAgaWYgKHdlYktp
dFdpbikgCi0gICAgICAgICAgICByZXR1cm4gd2ViS2l0V2luLT5Jc0VkaXRhYmxlKCk7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBFZGl0b3JDbGllbnRXeDo6c2hvdWxkQmVn
aW5FZGl0aW5nKFJhbmdlKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmgJKHJldmlzaW9u
IDc4NDg3KQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0
V29yZEJlZm9yZU1lbnVFdmVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFJhbmdlKik7CiAgICAgdmlydHVh
bCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKTsK
</data>
<flag name="review"
          id="73997"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83215</attachid>
            <date>2011-02-21 14:31:47 -0800</date>
            <delta_ts>2011-02-21 18:22:45 -0800</delta_ts>
            <desc>fix patch 4</desc>
            <filename>54292_4.patch</filename>
            <type>text/plain</type>
            <size>34643</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MjUwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDItMjEgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRh
YmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBGcmFtZTo6aXNDb250ZW50RWRpdGFi
bGUgaXMgY3VycmVudGx5IGJhc2VkIG9uIHR3byB0aGluZ3M6IEVkaXRvcjo6Y2xpZW50SXNFZGl0
YWJsZSBhbmQKKyAgICAgICAgRG9jdW1lbnQ6OmluRGVzaWduTW9kZS4gSW4gZmFjdCwgaXQgc2hv
dWxkIG9ubHkgcmVseSBvbiBEb2N1bWVudDo6aW5EZXNpZ25Nb2RlLiBBcyBhIHJlc3VsdCwKKyAg
ICAgICAgRWRpdG9yOjpjbGllbnRJc0VkaXRhYmxlIGFuZCBpdHMgY2xpZW50LXNpZGUgaW1wbGVt
ZW50YXRpb24gY2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbkZyb21Ob25lKToKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
Ojppc0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXND
b250ZW50UmljaGx5RWRpdGFibGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgor
ICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorCiAyMDExLTAyLTIxICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXou
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzcyLDYgKzc3Miw3IEBAIF9f
Wk43V2ViQ29yZTdjb29raWVzRVBLTlNfOERvY3VtZW50RVJLTlMKIF9fWk43V2ViQ29yZTduc0Nv
bG9yRVJLTlNfNUNvbG9yRQogX19aTjdXZWJDb3JlOERvY3VtZW50MTFjcmVhdGVSYW5nZUV2CiBf
X1pON1dlYkNvcmU4RG9jdW1lbnQxMnVwZGF0ZUxheW91dEV2CitfX1pON1dlYkNvcmU4RG9jdW1l
bnQxM3NldERlc2lnbk1vZGVFTlMwXzEzSW5oZXJpdGVkQm9vbEUKIF9fWk43V2ViQ29yZThEb2N1
bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNHNldEZvY3VzZWRO
b2RlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQx
NmlzUGFnZUJveFZpc2libGVFaQpAQCAtMTIxNSw2ICsxMjE2LDcgQEAgX19aTks3V2ViQ29yZTdJ
bnRSZWN0Y3Y3X05TUmVjdEV2CiBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjdfTlNTaXplRXYKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQxMHJlbmRlclZpZXdFdgogX19aTks3V2ViQ29yZThEb2N1bWVu
dDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdFCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTJp
bkRlc2lnbk1vZGVFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDEzYXhPYmplY3RDYWNoZUV2CiBf
X1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamIKIF9fWk5LN1dlYkNv
cmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NjIsMTIgKzY2Miw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNS
ZWFkT24KICAgICAgICAgSFRNTEVsZW1lbnQqIGJvZHkgPSBkb2N1bWVudC0+Ym9keSgpOwogICAg
ICAgICBpZiAoYm9keSAmJiBib2R5LT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQt
PmZyYW1lKCk7Ci0gICAgICAgIGlmICghZnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgCi0gICAgICAgIHJldHVybiAhZnJhbWUtPmlzQ29udGVudEVkaXRhYmxlKCk7CisK
KyAgICAgICAgcmV0dXJuICFkb2N1bWVudC0+aW5EZXNpZ25Nb2RlKCk7CiAgICAgfQogCiAgICAg
aWYgKG1fcmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NSwxMSArOTU1LDYgQEAgdm9pZCBFZGl0
b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdAogICAgICAgICBhcHBseVBhcmFncmFwaFN0
eWxlKHN0eWxlLCBlZGl0aW5nQWN0aW9uKTsKIH0KIAotYm9vbCBFZGl0b3I6OmNsaWVudElzRWRp
dGFibGUoKSBjb25zdAotewotICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNFZGl0
YWJsZSgpOwotfQotCiAvLyBDU1MgcHJvcGVydGllcyB0aGF0IG9ubHkgaGFzIGEgdmlzdWFsIGRp
ZmZlcmVuY2Ugd2hlbiBhcHBsaWVkIHRvIHRleHQuCiBzdGF0aWMgY29uc3QgaW50IHRleHRPbmx5
UHJvcGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDggKzE3Miw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9u
KikgY29uc3Q7CiAKLSAgICBib29sIGNsaWVudElzRWRpdGFibGUoKSBjb25zdDsKLSAgICAKICAg
ICB2b2lkIHNldFNob3VsZFN0eWxlV2l0aENTUyhib29sIGZsYWcpIHsgbV9zaG91bGRTdHlsZVdp
dGhDU1MgPSBmbGFnOyB9CiAgICAgYm9vbCBzaG91bGRTdHlsZVdpdGhDU1MoKSBjb25zdCB7IHJl
dHVybiBtX3Nob3VsZFN0eWxlV2l0aENTUzsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc5MjI1KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgxMiw3ICsxODEyLDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRTZWxl
Y3Rpb25GcgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsK
ICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUt
PnNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgaWYgKCFpc05vbmUoKSB8
fCAhKG1fZnJhbWUtPmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZykpCisgICAg
aWYgKCFpc05vbmUoKSB8fCAhKGRvY3VtZW50LT5pbkRlc2lnbk1vZGUoKSB8fCBjYXJldEJyb3dz
aW5nKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NTcsNyArNjU3LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6c3VwcG9ydHNG
b2N1cygpIGNvbnN0CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OmlzQ29udGVudEVkaXRhYmxlKCkgY29u
c3QgCiB7Ci0gICAgaWYgKGRvY3VtZW50KCktPmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUo
KS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2Rl
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWRlYWxseSB3ZSdkIGNhbGwgQVNT
RVJUIW5lZWRzU3R5bGVSZWNhbGMoKSkgaGVyZSwgYnV0CkBAIC02NzYsNyArNjc2LDcgQEAgYm9v
bCBIVE1MRWxlbWVudDo6aXNDb250ZW50RWRpdGFibGUoKSBjbwogCiBib29sIEhUTUxFbGVtZW50
Ojppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGRvY3VtZW50KCkt
PmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAg
ICBpZiAoZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKCFyZW5kZXJlcigpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIERyYWdPcGVy
YXRpb24gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkYKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEp
OwogICAgIERvY3VtZW50KiBkb2MgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEF0UG9p
bnQoZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCkpOwotICAgIGlmIChkb2MgJiYgKG1fZGlkSW5p
dGlhdGVEcmFnIHx8IGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpIHx8IChkb2MtPmZyYW1lKCkgJiYg
ZG9jLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xpZW50SXNFZGl0YWJsZSgpKSkpCisgICAgaWYgKGRv
YyAmJiAobV9kaWRJbml0aWF0ZURyYWcgfHwgZG9jLT5pc1BsdWdpbkRvY3VtZW50KCkgfHwgZG9j
LT5pbkRlc2lnbk1vZGUoKSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKICAg
ICByZXR1cm4gZHJhZ09wZXJhdGlvbihkcmFnRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODcsOCArODcsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCkgPSAwOwogICAgIHZpcnR1YWwgaW50IHNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgPSAwOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0Vk
aXRhYmxlKCkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5n
ZSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopID0gMDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsMTMgKzU1MSw2IEBAIHZv
aWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQoRE8KICAgICB9CiB9CiAKLWJvb2wg
RnJhbWU6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKLXsKLSAgICBpZiAobV9lZGl0b3IuY2xp
ZW50SXNFZGl0YWJsZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9kb2Mt
PmluRGVzaWduTW9kZSgpOwotfQotCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIEhhc2hTZXQ8RnJh
bWUqPiYga2VlcEFsaXZlU2V0KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDc5
MjI1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODIsOCArMTgyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEcmFnSW1hZ2VSZWYg
bm9kZUltYWdlKE5vZGUqKTsKICAgICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZvclNlbGVj
dGlvbigpOwogCi0gICAgICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdDsgLy8gaWYg
dHJ1ZSwgZXZlcnl0aGluZyBpbiBmcmFtZSBpcyBlZGl0YWJsZQotCiAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2lu
dCk7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5
MjUwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUgYW5kIGl0cyBkZXBlbmRl
bmNpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgICogc3JjL0VkaXRv
ckNsaWVudEltcGwuaDoKKwogMjAxMS0wMi0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA3
OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODcsMTEgKzE4Nyw2IEBAIGludCBFZGl0b3JDbGllbnRJbXBs
OjpzcGVsbENoZWNrZXJEb2N1bWUKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBFZGl0b3JDbGll
bnRJbXBsOjppc0VkaXRhYmxlKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgRWRp
dG9yQ2xpZW50SW1wbDo6c2hvdWxkQmVnaW5FZGl0aW5nKFJhbmdlKiByYW5nZSkKIHsKICAgICBp
ZiAobV93ZWJWaWV3LT5jbGllbnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9FZGl0b3JDbGllbnRJbXBsLmgJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3
ICs1OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFi
bGVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwogICAgIHZp
cnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7Ci0gICAgdmlydHVhbCBib29sIGlz
RWRpdGFibGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6
OlJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFu
Z2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlKiwg
V2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pOwpJbmRleDogU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNTApCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yMSAgQ2hhbmcgU2h1
ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFi
bGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUg
aW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRF
ZmwuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgorCiAy
MDExLTAyLTIwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDc5
MjI1KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDEyICsxNDUsNiBAQCB2b2lkIEVkaXRvckNsaWVu
dEVmbDo6ZGlkU2V0U2VsZWN0aW9uVHlwCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9v
bCBFZGl0b3JDbGllbnRFZmw6OmlzRWRpdGFibGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJD
b21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuaAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAt
NjEsOCArNjEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVj
a2luZygpOwogICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJl
Z2luRWRpdGluZyhSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFJh
bmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwg
RWRpdG9ySW5zZXJ0QWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MjUw
KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTEtMDItMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1
cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKwor
ICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRlIGltcGxlbWVudGF0aW9uLiBNYWtlIFdlYktp
dCBzdXBwb3J0IGRlcGVuZCBvbiBEb2N1bWVudDo6aW5EZXNpZ25Nb2RlLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRHdGsuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2VkaXRhYmxlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFi
bGUpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oOgorCiAyMDExLTAy
LTIxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNzkyMjUpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODAsMTEgKzQ4MCw2IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpkaWRTZXRT
ZWxlY3Rpb25UeXBlc0YKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIEVkaXRvckNs
aWVudDo6aXNFZGl0YWJsZSgpCi17Ci0gICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19nZXRfZWRp
dGFibGUobV93ZWJWaWV3KTsKLX0KLQogdm9pZCBFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFu
ZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKQog
ewogICAgIGlmICh1bmRvU3RhY2suc2l6ZSgpID09IG1heGltdW1VbmRvU3RhY2tEZXB0aCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5oCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw4ICs4Nyw2IEBAIGNs
YXNzIEVkaXRvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpFZGkKICAgICAgICAgdmlydHVhbCB2
b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwogICAgICAgICB2aXJ0dWFsIGludCBzcGVsbENo
ZWNrZXJEb2N1bWVudFRhZygpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7
Ci0KICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5n
ZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5n
ZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2Rl
KiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gNzky
MjUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1NDUsNyArMzU0NSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19pbml0KFdlYktpdFcKICAgICBndGtfd2lkZ2V0X3NldF9jYW5fZm9jdXMoR1RLX1dJREdFVCh3
ZWJWaWV3KSwgVFJVRSk7CiAgICAgcHJpdi0+bWFpbkZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRSh3
ZWJraXRfd2ViX2ZyYW1lX25ldyh3ZWJWaWV3KSk7CiAgICAgcHJpdi0+bGFzdFBvcHVwWFBvc2l0
aW9uID0gcHJpdi0+bGFzdFBvcHVwWVBvc2l0aW9uID0gLTE7Ci0gICAgcHJpdi0+ZWRpdGFibGUg
PSBmYWxzZTsKIAogICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IGFkb3B0R1JlZih3ZWJraXRf
d2ViX2JhY2tfZm9yd2FyZF9saXN0X25ld193aXRoX3dlYl92aWV3KHdlYlZpZXcpKTsKIApAQCAt
NDM0MSw3ICs0MzQwLDEwIEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19nZXRfZWRpdGFibGUo
V2UKIAogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAot
ICAgIHJldHVybiBwcml2LT5lZGl0YWJsZTsKKyAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZp
ZXcpLT5tYWluRnJhbWUoKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGZyYW1lKTsKKworICAgIHJl
dHVybiBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7CiB9CiAKIC8qKgpAQCAtNDM2
NiwxNyArNDM2OCwxNSBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFibGUoV2ViS2l0
CiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwog
Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotCiAgICAg
RnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbChmcmFtZSk7CiAKICAgICAvLyBUT0RPOiBXaGF0IGhhcHBlbnMgd2hlbiB0aGUgZnJh
bWUgaXMgcmVwbGFjZWQ/CiAgICAgZmxhZyA9IGZsYWcgIT0gRkFMU0U7Ci0gICAgaWYgKGZsYWcg
PT0gcHJpdi0+ZWRpdGFibGUpCisgICAgaWYgKGZsYWcgPT0gd2Via2l0X3dlYl92aWV3X2dldF9l
ZGl0YWJsZSh3ZWJWaWV3KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+ZWRpdGFibGUg
PSBmbGFnOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXREZXNpZ25Nb2RlKGZsYWcgPyBXZWJD
b3JlOjpEb2N1bWVudDo6b24gOiBXZWJDb3JlOjpEb2N1bWVudDo6b2ZmKTsKIAogICAgIGlmIChm
bGFnKSB7CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlF
bGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3By
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlld3ByaXZhdGUuaAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNiBA
QCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsKICAgICBnaW50IGxhc3RQb3B1cFlQb3Np
dGlvbjsKIAogICAgIEhhc2hTZXQ8R3RrV2lkZ2V0Kj4gY2hpbGRyZW47Ci0gICAgYm9vbCBlZGl0
YWJsZTsKICAgICBHUmVmUHRyPEd0a0lNQ29udGV4dD4gaW1Db250ZXh0OwogCiAgICAgZ2Jvb2xl
YW4gdHJhbnNwYXJlbnQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNTAp
CisrKyBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDExLTAyLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBz
dXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisK
KyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oOgorCiAyMDExLTAyLTE3ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgpJbmRleDogU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRI
YWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRIYWlrdS5jcHAJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMywxMiArMTEzLDYgQEAgaW50IEVkaXRvckNsaWVudEhhaWt1OjpzcGVsbENoZWNr
ZXJEb2N1bQogICAgIHJldHVybiAwOwogfQogCi1ib29sIEVkaXRvckNsaWVudEhhaWt1Ojppc0Vk
aXRhYmxlKCkKLXsKLSAgICAvLyBGSVhNRTogc2hvdWxkIGJlIGNvbnRyb2xsYWJsZQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQogYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6c2hvdWxkQmVnaW5FZGl0
aW5nKFdlYkNvcmU6OlJhbmdlKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291
cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
SGFpa3UuaAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDYg
QEAgY2xhc3MgRWRpdG9yQ2xpZW50SGFpa3UgOiBwdWJsaWMgRWRpdG9yQwogICAgICAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7CiAgICAgICAgIHZpcnR1YWwgaW50IHNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzRWRpdGFi
bGUoKTsKLQogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFJhbmdlKik7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFJhbmdlKik7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5nZSosIEVkaXRvckluc2Vy
dEFjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTI1MCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisy
MDExLTAyLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZy
YW1lOjppc0NvbnRlbnRFZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVt
b3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4gTWFrZSBXZWJLaXQgc3VwcG9ydCBk
ZXBlbmQgb24gRG9jdW1lbnQ6OmluRGVzaWduTW9kZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgc2V0RWRpdGFibGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNFZGl0YWJsZV0pOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlld0RhdGEuaDoKKworMjAxMS0wMi0yMSAgQ2hhbmcgU2h1
ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFi
bGUsIEVkaXRvcjo6Y2xpZW50SXNFZGl0YWJsZSBhbmQgRWRpdG9yQ2xpZW50Ojppc0VkaXRhYmxl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIK
KworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRlIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorCiAyMDExLTAyLTE3ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZERl
bGV0ZVJhbmdlKFdlYkNvcmU6OlJhbmdlKik7ICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRT
aG93RGVsZXRlSW50ZXJmYWNlKFdlYkNvcmU6OkhUTUxFbGVtZW50Kik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShy
ZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDExICsyNDYsNiBAQCBpbnQgV2Vi
RWRpdG9yQ2xpZW50OjpzcGVsbENoZWNrZXJEb2N1bWVuCiAgICAgcmV0dXJuIFttX3dlYlZpZXcg
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWddOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNF
ZGl0YWJsZSgpCi17Ci0gICAgcmV0dXJuIFttX3dlYlZpZXcgaXNFZGl0YWJsZV07Ci19Ci0KIGJv
b2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGREZWxldGVSYW5nZShSYW5nZSogcmFuZ2UpCiB7CiAg
ICAgcmV0dXJuIFtbbV93ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6
bV93ZWJWaWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lv
biA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDk4OSwxMiArNDk4OSwxMiBAQCAtIChOU1NlbGVjdGlvbkFmZmluaXR5KXNl
bGVjdGlvbkFmZmluaXR5CiAKIC0gKHZvaWQpc2V0RWRpdGFibGU6KEJPT0wpZmxhZwogewotICAg
IGlmIChfcHJpdmF0ZS0+ZWRpdGFibGUgIT0gZmxhZykgewotICAgICAgICBfcHJpdmF0ZS0+ZWRp
dGFibGUgPSBmbGFnOworICAgIGlmIChbc2VsZiBpc0VkaXRhYmxlXSAhPSBmbGFnKSB7CiAgICAg
ICAgIGlmICghX3ByaXZhdGUtPnRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50c0NoYW5nZWQgJiYg
X3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0VGFiS2V5Q3lj
bGVzVGhyb3VnaEVsZW1lbnRzKCFmbGFnKTsKICAgICAgICAgRnJhbWUqIG1haW5GcmFtZSA9IFtz
ZWxmIF9tYWluQ29yZUZyYW1lXTsKICAgICAgICAgaWYgKG1haW5GcmFtZSkgeworICAgICAgICAg
ICAgbWFpbkZyYW1lLT5kb2N1bWVudCgpLT5zZXREZXNpZ25Nb2RlKGZsYWcgPyBXZWJDb3JlOjpE
b2N1bWVudDo6b24gOiBXZWJDb3JlOjpEb2N1bWVudDo6b2ZmKTsKICAgICAgICAgICAgIGlmIChm
bGFnKSB7CiAgICAgICAgICAgICAgICAgbWFpbkZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5n
U3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIFdlYlZpZXcg
aXMgbWFkZSBlZGl0YWJsZSBhbmQgdGhlIHNlbGVjdGlvbiBpcyBlbXB0eSwgc2V0IGl0IHRvIHNv
bWV0aGluZy4KQEAgLTUwMDcsNyArNTAwNywxMCBAQCAtICh2b2lkKXNldEVkaXRhYmxlOihCT09M
KWZsYWcKIAogLSAoQk9PTClpc0VkaXRhYmxlCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5lZGl0
YWJsZTsKKyAgICBGcmFtZSogbWFpbkZyYW1lID0gW3NlbGYgX21haW5Db3JlRnJhbWVdOworICAg
IGlmIChtYWluRnJhbWUpCisgICAgICAgIHJldHVybiBtYWluRnJhbWUtPmRvY3VtZW50KCktPmlu
RGVzaWduTW9kZSgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogLSAodm9pZClzZXRUeXBpbmdT
dHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEw
NSw2IEBAIEBpbnRlcmZhY2UgV2ViVmlld1ByaXZhdGUgOiBOU09iamVjdCB7CiAgICAgQk9PTCBz
aG91bGRDbG9zZVdpdGhXaW5kb3c7CiAgICAgQk9PTCBtYWluRnJhbWVEb2N1bWVudFJlYWR5Owog
ICAgIEJPT0wgZHJhd3NCYWNrZ3JvdW5kOwotICAgIEJPT0wgZWRpdGFibGU7CiAgICAgQk9PTCB0
YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHNDaGFuZ2VkOwogICAgIEJPT0wgYmVjb21pbmdGaXJz
dFJlc3BvbmRlcjsKICAgICBCT09MIGJlY29taW5nRmlyc3RSZXNwb25kZXJGcm9tT3V0c2lkZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTI1MCkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDItMjEgIENo
YW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVu
dEVkaXRhYmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUgdGhlIFdlYktp
dCBzaWRlIGltcGxlbWVudGF0aW9uLiBNYWtlIFdlYktpdCBzdXBwb3J0IGRlcGVuZCBvbiBEb2N1
bWVudDo6aW5EZXNpZ25Nb2RlLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAg
ICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdl
OjpzZXRDb250ZW50RWRpdGFibGUpOgorICAgICAgICAoUVdlYlBhZ2U6OmlzQ29udGVudEVkaXRh
YmxlKToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5oOgorCisyMDExLTAyLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRo
ZSBzdXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSwgRWRpdG9yOjpjbGllbnRJc0Vk
aXRhYmxlIGFuZCBFZGl0b3JDbGllbnQ6OmlzRWRpdGFibGUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUg
V2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuaDoKKwogMjAxMS0wMi0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5jcHAJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDIsNyArMzAyLDYgQEAgUVdlYlBhZ2VQcml2YXRl
OjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZwogICAgICwgY3VycmVudENvbnRleHRNZW51KDApCiAj
ZW5kaWYKICAgICAsIHNldHRpbmdzKDApCi0gICAgLCBlZGl0YWJsZShmYWxzZSkKICAgICAsIHVz
ZUZpeGVkTGF5b3V0KGZhbHNlKQogICAgICwgcGx1Z2luRmFjdG9yeSgwKQogICAgICwgaW5zcGVj
dG9yRnJvbnRlbmQoMCkKQEAgLTMxNjEsMTEgKzMxNjAsMTEgQEAgYm9vbCBRV2ViUGFnZTo6Zm9j
dXNOZXh0UHJldkNoaWxkKGJvb2wgbgogKi8KIHZvaWQgUVdlYlBhZ2U6OnNldENvbnRlbnRFZGl0
YWJsZShib29sIGVkaXRhYmxlKQogewotICAgIGlmIChkLT5lZGl0YWJsZSAhPSBlZGl0YWJsZSkg
ewotICAgICAgICBkLT5lZGl0YWJsZSA9IGVkaXRhYmxlOworICAgIGlmIChpc0NvbnRlbnRFZGl0
YWJsZSgpICE9IGVkaXRhYmxlKSB7CiAgICAgICAgIGQtPnBhZ2UtPnNldFRhYktleUN5Y2xlc1Ro
cm91Z2hFbGVtZW50cyghZWRpdGFibGUpOwogICAgICAgICBpZiAoZC0+bWFpbkZyYW1lKSB7CiAg
ICAgICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBkLT5tYWluRnJhbWUtPmQtPmZyYW1l
OworICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnNldERlc2lnbk1vZGUoZWRpdGFibGUg
PyBXZWJDb3JlOjpEb2N1bWVudDo6b24gOiBXZWJDb3JlOjpEb2N1bWVudDo6b2ZmKTsKICAgICAg
ICAgICAgIGlmIChlZGl0YWJsZSkgewogICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgLy8gRklY
TUU6IG1hYyBwb3J0IGNhbGxzIHRoaXMgaWYgdGhlcmUgaXMgbm8gc2VsZWN0ZWRET01SYW5nZQpA
QCAtMzE3OSw3ICszMTc4LDcgQEAgdm9pZCBRV2ViUGFnZTo6c2V0Q29udGVudEVkaXRhYmxlKGJv
b2wgZQogCiBib29sIFFXZWJQYWdlOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGQtPmVkaXRhYmxlOworICAgIHJldHVybiBkLT5tYWluRnJhbWUgJiYgZC0+bWFpbkZy
YW1lLT5kLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7CiB9CiAKIC8qIQpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAs
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBRV2ViU2V0dGluZ3MgKnNldHRpbmdzOwogICAgIFFQ
YWxldHRlIHBhbGV0dGU7Ci0gICAgYm9vbCBlZGl0YWJsZTsKICAgICBib29sIHVzZUZpeGVkTGF5
b3V0OwogCiAgICAgUUFjdGlvbiAqYWN0aW9uc1tRV2ViUGFnZTo6V2ViQWN0aW9uQ291bnRdOwpJ
bmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHAJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxMSArMjM4LDYg
QEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbgogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBFZGl0b3JDbGllbnRRdDo6aXNFZGl0YWJsZSgpCi17IAotICAgIHJl
dHVybiBtX3BhZ2UtPmlzQ29udGVudEVkaXRhYmxlKCk7Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50
UXQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRD
b21tYW5kPiBjbWQpCiB7CiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwpJbmRleDogU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAkocmV2aXNpb24g
NzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAgICB2aXJ0dWFsIGludCBzcGVsbENoZWNr
ZXJEb2N1bWVudFRhZygpOwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2
ZW50KCk7Ci0gICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5k
RWRpdGluZyhSYW5nZSopOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNTApCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMS0wMi0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9y
dCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAg
ICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oOgorCiAyMDExLTAyLTE5ICBDaGFybGllIFJlaXMgIDxjcmVp
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFycGFyaXRhLgpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyOSwxMSAr
NjI5LDYgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kSwogewogfQog
Ci1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNFZGl0YWJsZSgpCi17Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChj
b25zdCBTdHJpbmcmIHdvcmQpCiB7CiAgICAgQ09NUHRyPElXZWJFZGl0aW5nRGVsZWdhdGU+IGVk
OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2lu
ZygpOwogICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2lu
RWRpdGluZyhXZWJDb3JlOjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0
aW5nKFdlYkNvcmU6OlJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydFRleHQo
Y29uc3QgV1RGOjpTdHJpbmcmLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2Vy
dEFjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNTApCisrKyBT
b3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDExLTAyLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0
IG9mIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAg
ICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRXaW5DRS5oOgorCiAyMDExLTAyLTE5ICBDaGFybGllIFJlaXMgIDxj
cmVpc0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFycGFyaXRh
LgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRX
aW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktp
dC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NCwxMiArMTQ0LDYgQEAgdm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6ZGlkU2V0U2Vs
ZWN0aW9uVAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgRWRpdG9yQ2xpZW50V2lu
Q0U6OmlzRWRpdGFibGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOwotfQotCiB2b2lkIEVkaXRvckNsaWVudFdpbkNFOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRv
KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAkocmV2aXNpb24gNzkyMjUpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0
b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAgICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1
bWVudFRhZygpOwogCi0gICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKLQogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKTsKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5vZGUqLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNv
cmU6OkVkaXRvckluc2VydEFjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzky
NTApCisrKyBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDExLTAyLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBz
dXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisK
KyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4gTWFrZSBXZWJL
aXQgc3VwcG9ydCBkZXBlbmQgb24gRG9jdW1lbnQ6OmluRGVzaWduTW9kZS4KKworICAgICAgICAq
IFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKHd4V2ViRnJhbWU6Ond4V2ViRnJhbWUpOgorICAgICAg
ICAod3hXZWJGcmFtZTo6TWFrZUVkaXRhYmxlKToKKyAgICAgICAgKHd4V2ViRnJhbWU6OmlzRWRp
dGFibGUpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5jcHA6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRX
eC5oOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAod3hXZWJWaWV3Ojp3eFdlYlZp
ZXcpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAxMS0wMi0xOSAgQ2hhcmxpZSBSZWlzICA8
Y3JlaXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1paGFpIFBhcnBhcml0
YS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw2IEBACiAK
IHd4V2ViRnJhbWU6Ond4V2ViRnJhbWUod3hXZWJWaWV3KiBjb250YWluZXIsIHd4V2ViRnJhbWUq
IHBhcmVudCwgV2ViVmlld0ZyYW1lRGF0YSogZGF0YSkgOgogICAgIG1fdGV4dE1hZ25pZmllcigx
LjApLAotICAgIG1faXNFZGl0YWJsZShmYWxzZSksCiAgICAgbV9pc0luaXRpYWxpemVkKGZhbHNl
KSwKICAgICBtX2JlaW5nRGVzdHJveWVkKGZhbHNlKQogewpAQCAtNDAzLDEwICs0MDIsMTYgQEAg
dm9pZCB3eFdlYkZyYW1lOjpSZXNldFRleHRTaXplKCkKIAogdm9pZCB3eFdlYkZyYW1lOjpNYWtl
RWRpdGFibGUoYm9vbCBlbmFibGUpCiB7Ci0gICAgbV9pc0VkaXRhYmxlID0gZW5hYmxlOworICAg
IGlmIChlbmFibGUgIT0gaXNFZGl0YWJsZSgpICYmIG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5m
cmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0
RGVzaWduTW9kZShlbmFibGUgPyBXZWJDb3JlOjpEb2N1bWVudDo6b24gOiBXZWJDb3JlOjpEb2N1
bWVudDo6b2ZmKTsKIH0KIAotCitib29sIHd4V2ViRnJhbWU6OmlzRWRpdGFibGUoKQoreworICAg
IGlmIChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAg
IHJldHVybiBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CiAKIGJvb2wgd3hXZWJGcmFtZTo6Q2FuQ29weSgpCiB7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
eC9XZWJGcmFtZS5oCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJh
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IERlY3JlYXNlVGV4dFNpemUoKTsKICAgICB2b2lkIFJlc2V0VGV4dFNpemUoKTsKICAgICB2b2lk
IE1ha2VFZGl0YWJsZShib29sIGVuYWJsZSk7Ci0gICAgYm9vbCBJc0VkaXRhYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0VkaXRhYmxlOyB9CisgICAgYm9vbCBJc0VkaXRhYmxlKCkgY29uc3Q7CiAg
ICAgCiAgICAgV2ViQ29yZTo6RnJhbWUqIEdldEZyYW1lKCk7CiAKQEAgLTE3Myw3ICsxNzMsNiBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIGZsb2F0IG1fdGV4dE1hZ25pZmllcjsKLSAg
ICBib29sIG1faXNFZGl0YWJsZTsKICAgICBib29sIG1faXNJbml0aWFsaXplZDsKICAgICBib29s
IG1fYmVpbmdEZXN0cm95ZWQ7CiAgICAgV2ViRnJhbWVQcml2YXRlKiBtX2ltcGw7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC93eC9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw2IEBAIGNvbnN0IHd4Q2hhciog
d3hXZWJWaWV3TmFtZVN0ciA9IHd4VCgid2UKIAogd3hXZWJWaWV3Ojp3eFdlYlZpZXcoKSA6CiAg
ICAgbV90ZXh0TWFnbmlmaWVyKDEuMCksCi0gICAgbV9pc0VkaXRhYmxlKGZhbHNlKSwKICAgICBt
X2lzSW5pdGlhbGl6ZWQoZmFsc2UpLAogICAgIG1fYmVpbmdEZXN0cm95ZWQoZmFsc2UpLAogICAg
IG1fbW91c2VXaGVlbFpvb21zKGZhbHNlKSwKQEAgLTMzOCw3ICszMzcsNiBAQCB3eFdlYlZpZXc6
Ond4V2ViVmlldygpIDoKIHd4V2ViVmlldzo6d3hXZWJWaWV3KHd4V2luZG93KiBwYXJlbnQsIGlu
dCBpZCwgY29uc3Qgd3hQb2ludCYgcG9zaXRpb24sIAogICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgd3hTaXplJiBzaXplLCBsb25nIHN0eWxlLCBjb25zdCB3eFN0cmluZyYgbmFtZSkgOgogICAg
IG1fdGV4dE1hZ25pZmllcigxLjApLAotICAgIG1faXNFZGl0YWJsZShmYWxzZSksCiAgICAgbV9p
c0luaXRpYWxpemVkKGZhbHNlKSwKICAgICBtX2JlaW5nRGVzdHJveWVkKGZhbHNlKSwKICAgICBt
X21vdXNlV2hlZWxab29tcyhmYWxzZSksCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuaAkocmV2aXNpb24gNzky
MjUpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ5
LDcgKzI0OSw2IEBAIHByaXZhdGU6CiAgICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKHd4V2ViVmll
dykKICNlbmRpZgogICAgIGZsb2F0IG1fdGV4dE1hZ25pZmllcjsKLSAgICBib29sIG1faXNFZGl0
YWJsZTsKICAgICBib29sIG1faXNJbml0aWFsaXplZDsKICAgICBib29sIG1fYmVpbmdEZXN0cm95
ZWQ7CiAgICAgYm9vbCBtX21vdXNlV2hlZWxab29tczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAkocmV2aXNpb24gNzkyMjUp
CisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTcsMTggKzE5Nyw2IEBAIGJvb2wgRWRpdG9yQ2xpZW50V3g6OnNl
bGVjdFdvcmRCZWZvcmVNZW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRWRpdG9yQ2xp
ZW50V3g6OmlzRWRpdGFibGUoKQotewotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotCi0gICAgaWYgKGZyYW1lKSB7Ci0g
ICAgICAgIHd4V2ViVmlldyogd2ViS2l0V2luID0gZHluYW1pY19jYXN0PHd4V2ViVmlldyo+KGZy
YW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOwotICAgICAg
ICBpZiAod2ViS2l0V2luKSAKLSAgICAgICAgICAgIHJldHVybiB3ZWJLaXRXaW4tPklzRWRpdGFi
bGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIEVkaXRvckNsaWVudFd4
OjpzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3gu
aAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRp
dG9yQ2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7Ci0gICAgdmlydHVhbCBib29sIGlzRWRp
dGFibGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83252</attachid>
            <date>2011-02-21 18:22:45 -0800</date>
            <delta_ts>2011-02-22 14:44:42 -0800</delta_ts>
            <desc>fix patch 5</desc>
            <filename>54292_5.patch</filename>
            <type>text/plain</type>
            <size>34684</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDItMjEgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRh
YmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBGcmFtZTo6aXNDb250ZW50RWRpdGFi
bGUgaXMgY3VycmVudGx5IGJhc2VkIG9uIHR3byB0aGluZ3M6IEVkaXRvcjo6Y2xpZW50SXNFZGl0
YWJsZSBhbmQKKyAgICAgICAgRG9jdW1lbnQ6OmluRGVzaWduTW9kZS4gSW4gZmFjdCwgaXQgc2hv
dWxkIG9ubHkgcmVseSBvbiBEb2N1bWVudDo6aW5EZXNpZ25Nb2RlLiBBcyBhIHJlc3VsdCwKKyAg
ICAgICAgRWRpdG9yOjpjbGllbnRJc0VkaXRhYmxlIGFuZCBpdHMgY2xpZW50LXNpZGUgaW1wbGVt
ZW50YXRpb24gY2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbkZyb21Ob25lKToKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
Ojppc0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXND
b250ZW50UmljaGx5RWRpdGFibGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgor
ICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorCiAyMDExLTAyLTIxICBKYW1lcyBLb3ppYW5za2kg
IDxrb3pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc3NSw2ICs3NzUsNyBAQCBfX1pO
N1dlYkNvcmU3Y29va2llc0VQS05TXzhEb2N1bWVudEVSS05TCiBfX1pON1dlYkNvcmU3bnNDb2xv
ckVSS05TXzVDb2xvckUKIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VFdgogX19a
TjdXZWJDb3JlOERvY3VtZW50MTJ1cGRhdGVMYXlvdXRFdgorX19aTjdXZWJDb3JlOERvY3VtZW50
MTNzZXREZXNpZ25Nb2RlRU5TMF8xM0luaGVyaXRlZEJvb2xFCiBfX1pON1dlYkNvcmU4RG9jdW1l
bnQxM3N2Z0V4dGVuc2lvbnNFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MTRzZXRGb2N1c2VkTm9k
ZUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRQogX19aTjdXZWJDb3JlOERvY3VtZW50MTZp
c1BhZ2VCb3hWaXNpYmxlRWkKQEAgLTEyMTgsNiArMTIxOSw3IEBAIF9fWk5LN1dlYkNvcmU3SW50
UmVjdGN2N19OU1JlY3RFdgogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y3X05TU2l6ZUV2CiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50MTByZW5kZXJWaWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQx
MWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTks3V2ViQ29yZThEb2N1bWVudDEyaW5E
ZXNpZ25Nb2RlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgogX19a
Tks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiCiBfX1pOSzdXZWJDb3Jl
OERvY3VtZW50MTRnZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjYyLDEyICs2NjIsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVh
ZE9uCiAgICAgICAgIEhUTUxFbGVtZW50KiBib2R5ID0gZG9jdW1lbnQtPmJvZHkoKTsKICAgICAg
ICAgaWYgKGJvZHkgJiYgYm9keS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5m
cmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIAotICAgICAgICByZXR1cm4gIWZyYW1lLT5pc0NvbnRlbnRFZGl0YWJsZSgpOworCisg
ICAgICAgIHJldHVybiAhZG9jdW1lbnQtPmluRGVzaWduTW9kZSgpOwogICAgIH0KIAogICAgIGlm
IChtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAJKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTUsMTEgKzk1NSw2IEBAIHZvaWQgRWRpdG9y
OjphcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3QKICAgICAgICAgYXBwbHlQYXJhZ3JhcGhTdHls
ZShzdHlsZSwgZWRpdGluZ0FjdGlvbik7CiB9CiAKLWJvb2wgRWRpdG9yOjpjbGllbnRJc0VkaXRh
YmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzRWRpdGFi
bGUoKTsKLX0KLQogLy8gQ1NTIHByb3BlcnRpZXMgdGhhdCBvbmx5IGhhcyBhIHZpc3VhbCBkaWZm
ZXJlbmNlIHdoZW4gYXBwbGllZCB0byB0ZXh0Lgogc3RhdGljIGNvbnN0IGludCB0ZXh0T25seVBy
b3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLApJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw4ICsxNzIsNiBAQCBwdWJsaWM6
CiAKICAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiop
IGNvbnN0OwogCi0gICAgYm9vbCBjbGllbnRJc0VkaXRhYmxlKCkgY29uc3Q7Ci0gICAgCiAgICAg
dm9pZCBzZXRTaG91bGRTdHlsZVdpdGhDU1MoYm9vbCBmbGFnKSB7IG1fc2hvdWxkU3R5bGVXaXRo
Q1NTID0gZmxhZzsgfQogICAgIGJvb2wgc2hvdWxkU3R5bGVXaXRoQ1NTKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRTdHlsZVdpdGhDU1M7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MTIsNyArMTgxMiw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0U2VsZWN0
aW9uRnIKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAg
ICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS0+c2V0dGluZ3MoKSAmJiBtX2ZyYW1lLT5z
ZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwotICAgIGlmICghaXNOb25lKCkgfHwg
IShtX2ZyYW1lLT5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IGNhcmV0QnJvd3NpbmcpKQorICAgIGlm
ICghaXNOb25lKCkgfHwgIShkb2N1bWVudC0+aW5EZXNpZ25Nb2RlKCkgfHwgY2FyZXRCcm93c2lu
ZykpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNp
b24gNzkyNzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjU5LDcgKzY1OSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnN1cHBvcnRzRm9j
dXMoKSBjb25zdAogCiBib29sIEhUTUxFbGVtZW50Ojppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0
IAogewotICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkt
PmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgaWYgKGRvY3VtZW50KCktPmluRGVzaWduTW9kZSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElkZWFsbHkgd2UnZCBjYWxsIEFTU0VS
VCFuZWVkc1N0eWxlUmVjYWxjKCkpIGhlcmUsIGJ1dApAQCAtNjc4LDcgKzY3OCw3IEBAIGJvb2wg
SFRNTEVsZW1lbnQ6OmlzQ29udGVudEVkaXRhYmxlKCkgY28KIAogYm9vbCBIVE1MRWxlbWVudDo6
aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSBjb25zdAogewotICAgIGlmIChkb2N1bWVudCgpLT5m
cmFtZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAg
aWYgKGRvY3VtZW50KCktPmluRGVzaWduTW9kZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGlmICghcmVuZGVyZXIoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCBEcmFnT3BlcmF0
aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25GCiB7CiAgICAgQVNTRVJUKGRyYWdEYXRhKTsK
ICAgICBEb2N1bWVudCogZG9jID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnRBdFBvaW50
KGRyYWdEYXRhLT5jbGllbnRQb3NpdGlvbigpKTsKLSAgICBpZiAoZG9jICYmIChtX2RpZEluaXRp
YXRlRHJhZyB8fCBkb2MtPmlzUGx1Z2luRG9jdW1lbnQoKSB8fCAoZG9jLT5mcmFtZSgpICYmIGRv
Yy0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNsaWVudElzRWRpdGFibGUoKSkpKQorICAgIGlmIChkb2Mg
JiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpIHx8IGRvYy0+
aW5EZXNpZ25Nb2RlKCkpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CiAgICAg
cmV0dXJuIGRyYWdPcGVyYXRpb24oZHJhZ0RhdGEpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRp
dG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDggKzg3LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpID0gMDsKICAgICB2aXJ0dWFsIGludCBzcGVs
bENoZWNrZXJEb2N1bWVudFRhZygpID0gMDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0
YWJsZSgpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2Uq
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKSA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gNzkyNzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUxLDEzICs1NTEsNiBAQCB2b2lk
IEZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPCiAgICAgfQogfQogCi1ib29sIEZy
YW1lOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZWRpdG9yLmNsaWVu
dElzRWRpdGFibGUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fZG9jLT5p
bkRlc2lnbk1vZGUoKTsKLX0KLQogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBIYXNoU2V0PEZyYW1l
Kj4mIGtlZXBBbGl2ZVNldCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA3OTI3
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgy
LDggKzE4Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ0ltYWdlUmVmIG5v
ZGVJbWFnZShOb2RlKik7CiAgICAgICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oKTsKIAotICAgICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7IC8vIGlmIHRy
dWUsIGV2ZXJ5dGhpbmcgaW4gZnJhbWUgaXMgZWRpdGFibGUKLQogICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQp
OwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5k
b3dQb2ludCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTI3
NikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
dGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlIGFuZCBpdHMgZGVwZW5kZW5j
aWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQy
OTIKKworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRlIGltcGxlbWVudGF0aW9uLgorCisg
ICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9FZGl0b3JD
bGllbnRJbXBsLmg6CisKIDIwMTEtMDItMjEgIE5pY28gV2ViZXIgIDx0aGFraXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDc5
Mjc2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4NywxMSArMTg3LDYgQEAgaW50IEVkaXRvckNsaWVudEltcGw6
OnNwZWxsQ2hlY2tlckRvY3VtZQogICAgIHJldHVybiAwOwogfQogCi1ib29sIEVkaXRvckNsaWVu
dEltcGw6OmlzRWRpdGFibGUoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBFZGl0
b3JDbGllbnRJbXBsOjpzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqIHJhbmdlKQogewogICAgIGlm
IChtX3dlYlZpZXctPmNsaWVudCgpKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0VkaXRvckNsaWVudEltcGwuaAkocmV2aXNpb24gNzkyNzYpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcg
KzU5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJs
ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7CiAgICAgdmly
dHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNF
ZGl0YWJsZSgpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6
UmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5n
ZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5vZGUqLCBX
ZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAyLTIxICBDaGFuZyBTaHUg
IDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJs
ZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBp
bXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6CisKIDIw
MTEtMDItMjAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNzky
NzYpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMTIgKzE0NSw2IEBAIHZvaWQgRWRpdG9yQ2xpZW50
RWZsOjpkaWRTZXRTZWxlY3Rpb25UeXAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29s
IEVkaXRvckNsaWVudEVmbDo6aXNFZGl0YWJsZSgpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlckNv
bW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEVmbC5oCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw4ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNr
aW5nKCk7CiAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVn
aW5FZGl0aW5nKFJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFu
Z2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiwgUmFuZ2UqLCBF
ZGl0b3JJbnNlcnRBY3Rpb24pOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNzYp
CisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMCBAQAorMjAxMS0wMi0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgc3Vw
cG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisg
ICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uIE1ha2UgV2ViS2l0
IHN1cHBvcnQgZGVwZW5kIG9uIERvY3VtZW50OjppbkRlc2lnbk1vZGUuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJf
dmlld19nZXRfZWRpdGFibGUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJs
ZSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmg6CisKIDIwMTEtMDIt
MjEgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiA3OTI3NikKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ4MCwxMSArNDgwLDYgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmRpZFNldFNl
bGVjdGlvblR5cGVzRgogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgRWRpdG9yQ2xp
ZW50Ojppc0VkaXRhYmxlKCkKLXsKLSAgICByZXR1cm4gd2Via2l0X3dlYl92aWV3X2dldF9lZGl0
YWJsZShtX3dlYlZpZXcpOwotfQotCiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJDb21tYW5k
Rm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNvbW1hbmQpCiB7
CiAgICAgaWYgKHVuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQpJbmRl
eDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
R3RrLmgJKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDggKzg3LDYgQEAgY2xh
c3MgRWRpdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkVkaQogICAgICAgICB2aXJ0dWFsIHZv
aWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7CiAgICAgICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hl
Y2tlckRvY3VtZW50VGFnKCk7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsK
LQogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OlJhbmdl
Kik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJhbmdl
Kik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5vZGUq
LCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiA3OTI3
NikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzU0NSw3ICszNTQ1LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2luaXQoV2ViS2l0VwogICAgIGd0a193aWRnZXRfc2V0X2Nhbl9mb2N1cyhHVEtfV0lER0VUKHdl
YlZpZXcpLCBUUlVFKTsKICAgICBwcml2LT5tYWluRnJhbWUgPSBXRUJLSVRfV0VCX0ZSQU1FKHdl
YmtpdF93ZWJfZnJhbWVfbmV3KHdlYlZpZXcpKTsKICAgICBwcml2LT5sYXN0UG9wdXBYUG9zaXRp
b24gPSBwcml2LT5sYXN0UG9wdXBZUG9zaXRpb24gPSAtMTsKLSAgICBwcml2LT5lZGl0YWJsZSA9
IGZhbHNlOwogCiAgICAgcHJpdi0+YmFja0ZvcndhcmRMaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF93
ZWJfYmFja19mb3J3YXJkX2xpc3RfbmV3X3dpdGhfd2ViX3ZpZXcod2ViVmlldykpOwogCkBAIC00
MzM5LDkgKzQzMzgsOCBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2VkaXRhYmxlKFdl
CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcp
LCBGQUxTRSk7CiAKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnBy
aXY7Ci0KLSAgICByZXR1cm4gcHJpdi0+ZWRpdGFibGU7CisgICAgRnJhbWUqIGZyYW1lID0gY29y
ZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CisgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5kb2N1
bWVudCgpLT5pbkRlc2lnbk1vZGUoKTsKIH0KIAogLyoqCkBAIC00MzY2LDE3ICs0MzY0LDE1IEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZShXZWJLaXQKIHsKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBXZWJLaXRXZWJW
aWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KICAgICBGcmFtZSogZnJhbWUgPSBj
b3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKICAgICBnX3JldHVybl9pZl9mYWlsKGZyYW1lKTsK
IAogICAgIC8vIFRPRE86IFdoYXQgaGFwcGVucyB3aGVuIHRoZSBmcmFtZSBpcyByZXBsYWNlZD8K
ICAgICBmbGFnID0gZmxhZyAhPSBGQUxTRTsKLSAgICBpZiAoZmxhZyA9PSBwcml2LT5lZGl0YWJs
ZSkKKyAgICBpZiAoZmxhZyA9PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2VkaXRhYmxlKHdlYlZpZXcp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcml2LT5lZGl0YWJsZSA9IGZsYWc7CisgICAgZnJh
bWUtPmRvY3VtZW50KCktPnNldERlc2lnbk1vZGUoZmxhZyA/IFdlYkNvcmU6OkRvY3VtZW50Ojpv
biA6IFdlYkNvcmU6OkRvY3VtZW50OjpvZmYpOwogCiAgICAgaWYgKGZsYWcpIHsKICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oCShy
ZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
cHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw2IEBAIHN0cnVjdCBfV2ViS2l0
V2ViVmlld1ByaXZhdGUgewogICAgIGdpbnQgbGFzdFBvcHVwWVBvc2l0aW9uOwogCiAgICAgSGFz
aFNldDxHdGtXaWRnZXQqPiBjaGlsZHJlbjsKLSAgICBib29sIGVkaXRhYmxlOwogICAgIEdSZWZQ
dHI8R3RrSU1Db250ZXh0PiBpbUNvbnRleHQ7CiAKICAgICBnYm9vbGVhbiB0cmFuc3BhcmVudDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJL
aXQvaGFpa3UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEt
MDItMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6
OmlzQ29udGVudEVkaXRhYmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUg
dGhlIFdlYktpdCBzaWRlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEhhaWt1Lmg6CisKIDIwMTEtMDItMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhh
aWt1LmNwcAkocmV2aXNpb24gNzkyNzYpCisrKyBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDEyICsx
MTMsNiBAQCBpbnQgRWRpdG9yQ2xpZW50SGFpa3U6OnNwZWxsQ2hlY2tlckRvY3VtCiAgICAgcmV0
dXJuIDA7CiB9CiAKLWJvb2wgRWRpdG9yQ2xpZW50SGFpa3U6OmlzRWRpdGFibGUoKQotewotICAg
IC8vIEZJWE1FOiBzaG91bGQgYmUgY29udHJvbGxhYmxlCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
CiBib29sIEVkaXRvckNsaWVudEhhaWt1OjpzaG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFu
Z2UqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCShyZXZpc2lv
biA3OTI3NikKKysrIFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50SGFpa3UuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsOCArNTgsNiBAQCBjbGFzcyBFZGl0b3JD
bGllbnRIYWlrdSA6IHB1YmxpYyBFZGl0b3JDCiAgICAgICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVH
cmFtbWFyQ2hlY2tpbmcoKTsKICAgICAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1l
bnRUYWcoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsKICAgICAgICAgdmlydHVh
bCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKTsKICAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwgRWRpdG9ySW5zZXJ0QWN0aW9uKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDItMjEgIENoYW5n
IFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVk
aXRhYmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBz
aWRlIGltcGxlbWVudGF0aW9uLiBNYWtlIFdlYktpdCBzdXBwb3J0IGRlcGVuZCBvbiBEb2N1bWVu
dDo6aW5EZXNpZ25Nb2RlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRFZGl0YWJs
ZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBpc0VkaXRhYmxlXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3RGF0YS5oOgorCisyMDExLTAyLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRFZGl0YWJsZSwgRWRpdG9yOjpjbGll
bnRJc0VkaXRhYmxlIGFuZCBFZGl0b3JDbGllbnQ6OmlzRWRpdGFibGUuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92
ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW06CisKIDIwMTEtMDItMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNp
b24gNzkyNzYpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CiAgICAgdmlydHVhbCBib29s
IGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwotICAgIHZpcnR1YWwgYm9vbCBp
c0VkaXRhYmxlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViQ29y
ZTo6UmFuZ2UqKTsgICAgCiAgICAgdmlydHVhbCBib29sIHNob3VsZFNob3dEZWxldGVJbnRlcmZh
Y2UoV2ViQ29yZTo6SFRNTEVsZW1lbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDc5Mjc2KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDYsMTEgKzI0Niw2IEBAIGludCBXZWJFZGl0b3JDbGllbnQ6OnNw
ZWxsQ2hlY2tlckRvY3VtZW4KICAgICByZXR1cm4gW21fd2ViVmlldyBzcGVsbENoZWNrZXJEb2N1
bWVudFRhZ107CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc0VkaXRhYmxlKCkKLXsKLSAg
ICByZXR1cm4gW21fd2ViVmlldyBpc0VkaXRhYmxlXTsKLX0KLQogYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OnNob3VsZERlbGV0ZVJhbmdlKFJhbmdlKiByYW5nZSkKIHsKICAgICByZXR1cm4gW1ttX3dl
YlZpZXcgX2VkaXRpbmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzptX3dlYlZpZXcKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDc5Mjc2KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OTg5
LDEyICs0OTg5LDEyIEBAIC0gKE5TU2VsZWN0aW9uQWZmaW5pdHkpc2VsZWN0aW9uQWZmaW5pdHkK
IAogLSAodm9pZClzZXRFZGl0YWJsZTooQk9PTClmbGFnCiB7Ci0gICAgaWYgKF9wcml2YXRlLT5l
ZGl0YWJsZSAhPSBmbGFnKSB7Ci0gICAgICAgIF9wcml2YXRlLT5lZGl0YWJsZSA9IGZsYWc7Cisg
ICAgaWYgKFtzZWxmIGlzRWRpdGFibGVdICE9IGZsYWcpIHsKICAgICAgICAgaWYgKCFfcHJpdmF0
ZS0+dGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2hhbmdlZCAmJiBfcHJpdmF0ZS0+cGFnZSkK
ICAgICAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVu
dHMoIWZsYWcpOwogICAgICAgICBGcmFtZSogbWFpbkZyYW1lID0gW3NlbGYgX21haW5Db3JlRnJh
bWVdOwogICAgICAgICBpZiAobWFpbkZyYW1lKSB7CisgICAgICAgICAgICBtYWluRnJhbWUtPmRv
Y3VtZW50KCktPnNldERlc2lnbk1vZGUoZmxhZyA/IFdlYkNvcmU6OkRvY3VtZW50OjpvbiA6IFdl
YkNvcmU6OkRvY3VtZW50OjpvZmYpOwogICAgICAgICAgICAgaWYgKGZsYWcpIHsKICAgICAgICAg
ICAgICAgICBtYWluRnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1l
bnQoKTsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgV2ViVmlldyBpcyBtYWRlIGVkaXRhYmxl
IGFuZCB0aGUgc2VsZWN0aW9uIGlzIGVtcHR5LCBzZXQgaXQgdG8gc29tZXRoaW5nLgpAQCAtNTAw
Nyw3ICs1MDA3LDEwIEBAIC0gKHZvaWQpc2V0RWRpdGFibGU6KEJPT0wpZmxhZwogCiAtIChCT09M
KWlzRWRpdGFibGUKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmVkaXRhYmxlOworICAgIEZyYW1l
KiBtYWluRnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07CisgICAgaWYgKG1haW5GcmFtZSkK
KyAgICAgICAgcmV0dXJuIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiAtICh2b2lkKXNldFR5cGluZ1N0eWxlOihET01DU1NTdHls
ZURlY2xhcmF0aW9uICopc3R5bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmgJKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNyArMTA1LDYgQEAgQGludGVyZmFj
ZSBXZWJWaWV3UHJpdmF0ZSA6IE5TT2JqZWN0IHsKICAgICBCT09MIHNob3VsZENsb3NlV2l0aFdp
bmRvdzsKICAgICBCT09MIG1haW5GcmFtZURvY3VtZW50UmVhZHk7CiAgICAgQk9PTCBkcmF3c0Jh
Y2tncm91bmQ7Ci0gICAgQk9PTCBlZGl0YWJsZTsKICAgICBCT09MIHRhYktleUN5Y2xlc1Rocm91
Z2hFbGVtZW50c0NoYW5nZWQ7CiAgICAgQk9PTCBiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyOwogICAg
IEJPT0wgYmVjb21pbmdGaXJzdFJlc3BvbmRlckZyb21PdXRzaWRlOwpJbmRleDogU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0wMi0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3
ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUgYW5kIGl0
cyBkZXBlbmRlbmNpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50
YXRpb24uIE1ha2UgV2ViS2l0IHN1cHBvcnQgZGVwZW5kIG9uIERvY3VtZW50OjppbkRlc2lnbk1v
ZGUuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2
YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAoUVdlYlBhZ2U6OnNldENvbnRlbnRFZGl0
YWJsZSk6CisgICAgICAgIChRV2ViUGFnZTo6aXNDb250ZW50RWRpdGFibGUpOgorICAgICAgICAq
IEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0Lmg6CisKKzIw
MTEtMDItMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJh
bWU6OmlzQ29udGVudEVkaXRhYmxlLCBFZGl0b3I6OmNsaWVudElzRWRpdGFibGUgYW5kIEVkaXRv
ckNsaWVudDo6aXNFZGl0YWJsZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQgc2lkZSBpbXBs
ZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCiAyMDExLTAy
LTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNp
b24gNzkyNzYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwMiw3ICszMDIsNiBAQCBRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0
ZShRV2ViUGFnCiAgICAgLCBjdXJyZW50Q29udGV4dE1lbnUoMCkKICNlbmRpZgogICAgICwgc2V0
dGluZ3MoMCkKLSAgICAsIGVkaXRhYmxlKGZhbHNlKQogICAgICwgdXNlRml4ZWRMYXlvdXQoZmFs
c2UpCiAgICAgLCBwbHVnaW5GYWN0b3J5KDApCiAgICAgLCBpbnNwZWN0b3JGcm9udGVuZCgwKQpA
QCAtMzE2MSwxMSArMzE2MCwxMSBAQCBib29sIFFXZWJQYWdlOjpmb2N1c05leHRQcmV2Q2hpbGQo
Ym9vbCBuCiAqLwogdm9pZCBRV2ViUGFnZTo6c2V0Q29udGVudEVkaXRhYmxlKGJvb2wgZWRpdGFi
bGUpCiB7Ci0gICAgaWYgKGQtPmVkaXRhYmxlICE9IGVkaXRhYmxlKSB7Ci0gICAgICAgIGQtPmVk
aXRhYmxlID0gZWRpdGFibGU7CisgICAgaWYgKGlzQ29udGVudEVkaXRhYmxlKCkgIT0gZWRpdGFi
bGUpIHsKICAgICAgICAgZC0+cGFnZS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKCFl
ZGl0YWJsZSk7CiAgICAgICAgIGlmIChkLT5tYWluRnJhbWUpIHsKICAgICAgICAgICAgIFdlYkNv
cmU6OkZyYW1lKiBmcmFtZSA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWU7CisgICAgICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVzaWduTW9kZShlZGl0YWJsZSA/IFdlYkNvcmU6OkRvY3Vt
ZW50OjpvbiA6IFdlYkNvcmU6OkRvY3VtZW50OjpvZmYpOwogICAgICAgICAgICAgaWYgKGVkaXRh
YmxlKSB7CiAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHls
ZVRvQm9keUVsZW1lbnQoKTsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogbWFjIHBvcnQgY2Fs
bHMgdGhpcyBpZiB0aGVyZSBpcyBubyBzZWxlY3RlZERPTVJhbmdlCkBAIC0zMTc5LDcgKzMxNzgs
NyBAQCB2b2lkIFFXZWJQYWdlOjpzZXRDb250ZW50RWRpdGFibGUoYm9vbCBlCiAKIGJvb2wgUVdl
YlBhZ2U6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZC0+ZWRpdGFi
bGU7CisgICAgcmV0dXJuIGQtPm1haW5GcmFtZSAmJiBkLT5tYWluRnJhbWUtPmQtPmZyYW1lLT5k
b2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKTsKIH0KIAogLyohCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2VicGFnZV9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYnBhZ2VfcC5oCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlX3AuaAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDcgKzIwMCw2IEBAIHB1YmxpYzoKICNl
bmRpZgogICAgIFFXZWJTZXR0aW5ncyAqc2V0dGluZ3M7CiAgICAgUVBhbGV0dGUgcGFsZXR0ZTsK
LSAgICBib29sIGVkaXRhYmxlOwogICAgIGJvb2wgdXNlRml4ZWRMYXlvdXQ7CiAKICAgICBRQWN0
aW9uICphY3Rpb25zW1FXZWJQYWdlOjpXZWJBY3Rpb25Db3VudF07CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2aXNp
b24gNzkyNzYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDExICsyMzgsNiBAQCBib29sIEVkaXRvckNs
aWVudFF0OjpzZWxlY3RXb3JkQmVmb3JlTWVuCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29s
IEVkaXRvckNsaWVudFF0Ojppc0VkaXRhYmxlKCkKLXsgCi0gICAgcmV0dXJuIG1fcGFnZS0+aXND
b250ZW50RWRpdGFibGUoKTsKLX0KLQogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJDb21t
YW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+IGNtZCkKIHsK
ICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1t
YXJDaGVja2luZygpOwogICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7
CiAgICAgdmlydHVhbCBib29sIHNlbGVjdFdvcmRCZWZvcmVNZW51RXZlbnQoKTsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRp
dGluZyhSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFJhbmdlKik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAyLTIx
ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0Nv
bnRlbnRFZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBX
ZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lmg6CisKIDIwMTEtMDItMTkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJl
dmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI5LDExICs2MjksNiBAQCB2b2lkIFdl
YkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLCiB7CiB9CiAKLWJvb2wgV2ViRWRpdG9y
Q2xpZW50Ojppc0VkaXRhYmxlKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjppZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYgd29y
ZCkKIHsKICAgICBDT01QdHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4gZWQ7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2
aXNpb24gNzkyNzYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CiAgICAgdmlydHVh
bCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Vk
aXRhYmxlKCk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6
OlJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFu
Z2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBXVEY6OlN0cmlu
ZyYsIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJLaXQvd2lu
Y2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMjEg
IENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29u
dGVudEVkaXRhYmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUgdGhlIFdl
YktpdCBzaWRlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFdpbkNFLmg6CisKIDIwMTEtMDItMTkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdp
bkNFLmNwcAkocmV2aXNpb24gNzkyNzYpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDEyICsx
NDQsNiBAQCB2b2lkIEVkaXRvckNsaWVudFdpbkNFOjpkaWRTZXRTZWxlY3Rpb25UCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBFZGl0b3JDbGllbnRXaW5DRTo6aXNFZGl0YWJsZSgp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQg
RWRpdG9yQ2xpZW50V2luQ0U6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdp
bkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDksOCArNDksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVj
a2luZygpOwogICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJl
Z2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRF
ZGl0aW5nKFdlYkNvcmU6OlJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5v
ZGUoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0
QWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDItMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6
OmlzQ29udGVudEVkaXRhYmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUg
dGhlIFdlYktpdCBzaWRlIGltcGxlbWVudGF0aW9uLiBNYWtlIFdlYktpdCBzdXBwb3J0IGRlcGVu
ZCBvbiBEb2N1bWVudDo6aW5EZXNpZ25Nb2RlLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgor
ICAgICAgICAod3hXZWJGcmFtZTo6d3hXZWJGcmFtZSk6CisgICAgICAgICh3eFdlYkZyYW1lOjpN
YWtlRWRpdGFibGUpOgorICAgICAgICAod3hXZWJGcmFtZTo6aXNFZGl0YWJsZSk6CisgICAgICAg
ICogV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNw
cDoKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6CisgICAgICAgICog
V2ViVmlldy5jcHA6CisgICAgICAgICh3eFdlYlZpZXc6Ond4V2ViVmlldyk6CisgICAgICAgICog
V2ViVmlldy5oOgorCiAyMDExLTAyLTE5ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFycGFyaXRhLgpJbmRleDogU291cmNl
L1dlYktpdC93eC9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9X
ZWJGcmFtZS5jcHAJKHJldmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYktpdC93eC9XZWJGcmFt
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDYgQEAKIAogd3hXZWJGcmFtZTo6d3hX
ZWJGcmFtZSh3eFdlYlZpZXcqIGNvbnRhaW5lciwgd3hXZWJGcmFtZSogcGFyZW50LCBXZWJWaWV3
RnJhbWVEYXRhKiBkYXRhKSA6CiAgICAgbV90ZXh0TWFnbmlmaWVyKDEuMCksCi0gICAgbV9pc0Vk
aXRhYmxlKGZhbHNlKSwKICAgICBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpLAogICAgIG1fYmVpbmdE
ZXN0cm95ZWQoZmFsc2UpCiB7CkBAIC00MDMsMTAgKzQwMiwxNiBAQCB2b2lkIHd4V2ViRnJhbWU6
OlJlc2V0VGV4dFNpemUoKQogCiB2b2lkIHd4V2ViRnJhbWU6Ok1ha2VFZGl0YWJsZShib29sIGVu
YWJsZSkKIHsKLSAgICBtX2lzRWRpdGFibGUgPSBlbmFibGU7CisgICAgaWYgKGVuYWJsZSAhPSBp
c0VkaXRhYmxlKCkgJiYgbV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgp
KQorICAgICAgICBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpLT5zZXREZXNpZ25Nb2RlKGVuYWJs
ZSA/IFdlYkNvcmU6OkRvY3VtZW50OjpvbiA6IFdlYkNvcmU6OkRvY3VtZW50OjpvZmYpOwogfQog
Ci0KK2Jvb2wgd3hXZWJGcmFtZTo6aXNFZGl0YWJsZSgpCit7CisgICAgaWYgKG1faW1wbC0+ZnJh
bWUgJiYgbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG1faW1wbC0+
ZnJhbWUtPmRvY3VtZW50KCktPmluRGVzaWduTW9kZSgpOworICAgIHJldHVybiBmYWxzZTsKK30K
IAogYm9vbCB3eFdlYkZyYW1lOjpDYW5Db3B5KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gv
V2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmgJKHJl
dmlzaW9uIDc5Mjc2KQorKysgU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTksNyArMTU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgRGVjcmVhc2VUZXh0U2l6
ZSgpOwogICAgIHZvaWQgUmVzZXRUZXh0U2l6ZSgpOwogICAgIHZvaWQgTWFrZUVkaXRhYmxlKGJv
b2wgZW5hYmxlKTsKLSAgICBib29sIElzRWRpdGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzRWRp
dGFibGU7IH0KKyAgICBib29sIElzRWRpdGFibGUoKSBjb25zdDsKICAgICAKICAgICBXZWJDb3Jl
OjpGcmFtZSogR2V0RnJhbWUoKTsKIApAQCAtMTczLDcgKzE3Myw2IEBAIHB1YmxpYzoKICAgICAK
IHByaXZhdGU6CiAgICAgZmxvYXQgbV90ZXh0TWFnbmlmaWVyOwotICAgIGJvb2wgbV9pc0VkaXRh
YmxlOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOwogICAgIGJvb2wgbV9iZWluZ0Rlc3Ryb3ll
ZDsKICAgICBXZWJGcmFtZVByaXZhdGUqIG1faW1wbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gv
V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAko
cmV2aXNpb24gNzkyNzYpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMjcsNyArMzI3LDYgQEAgY29uc3Qgd3hDaGFyKiB3eFdlYlZpZXdOYW1lU3Ry
ID0gd3hUKCJ3ZQogCiB3eFdlYlZpZXc6Ond4V2ViVmlldygpIDoKICAgICBtX3RleHRNYWduaWZp
ZXIoMS4wKSwKLSAgICBtX2lzRWRpdGFibGUoZmFsc2UpLAogICAgIG1faXNJbml0aWFsaXplZChm
YWxzZSksCiAgICAgbV9iZWluZ0Rlc3Ryb3llZChmYWxzZSksCiAgICAgbV9tb3VzZVdoZWVsWm9v
bXMoZmFsc2UpLApAQCAtMzM4LDcgKzMzNyw2IEBAIHd4V2ViVmlldzo6d3hXZWJWaWV3KCkgOgog
d3hXZWJWaWV3Ojp3eFdlYlZpZXcod3hXaW5kb3cqIHBhcmVudCwgaW50IGlkLCBjb25zdCB3eFBv
aW50JiBwb3NpdGlvbiwgCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3eFNpemUmIHNpemUs
IGxvbmcgc3R5bGUsIGNvbnN0IHd4U3RyaW5nJiBuYW1lKSA6CiAgICAgbV90ZXh0TWFnbmlmaWVy
KDEuMCksCi0gICAgbV9pc0VkaXRhYmxlKGZhbHNlKSwKICAgICBtX2lzSW5pdGlhbGl6ZWQoZmFs
c2UpLAogICAgIG1fYmVpbmdEZXN0cm95ZWQoZmFsc2UpLAogICAgIG1fbW91c2VXaGVlbFpvb21z
KGZhbHNlKSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5oCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5LDYgQEAgcHJp
dmF0ZToKICAgICBERUNMQVJFX0RZTkFNSUNfQ0xBU1Mod3hXZWJWaWV3KQogI2VuZGlmCiAgICAg
ZmxvYXQgbV90ZXh0TWFnbmlmaWVyOwotICAgIGJvb2wgbV9pc0VkaXRhYmxlOwogICAgIGJvb2wg
bV9pc0luaXRpYWxpemVkOwogICAgIGJvb2wgbV9iZWluZ0Rlc3Ryb3llZDsKICAgICBib29sIG1f
bW91c2VXaGVlbFpvb21zOwpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Vk
aXRvckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCShyZXZpc2lvbiA3OTI3NikKKysrIFNvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5NywxOCArMTk3LDYgQEAgYm9vbCBFZGl0b3JDbGllbnRXeDo6c2VsZWN0V29yZEJlZm9yZU1l
bgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBFZGl0b3JDbGllbnRXeDo6aXNFZGl0YWJs
ZSgpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7Ci0KLSAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgd3hXZWJWaWV3
KiB3ZWJLaXRXaW4gPSBkeW5hbWljX2Nhc3Q8d3hXZWJWaWV3Kj4oZnJhbWUtPnZpZXcoKS0+aG9z
dFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSk7Ci0gICAgICAgIGlmICh3ZWJLaXRXaW4p
IAotICAgICAgICAgICAgcmV0dXJuIHdlYktpdFdpbi0+SXNFZGl0YWJsZSgpOwotICAgIH0KLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgRWRpdG9yQ2xpZW50V3g6OnNob3VsZEJlZ2luRWRp
dGluZyhSYW5nZSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCShyZXZpc2lvbiA3OTI3
NikKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBz
cGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGVjdFdvcmRC
ZWZvcmVNZW51RXZlbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwogCiAgICAg
dmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRFbmRFZGl0aW5nKFJhbmdlKik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83394</attachid>
            <date>2011-02-22 14:44:42 -0800</date>
            <delta_ts>2011-02-28 07:03:09 -0800</delta_ts>
            <desc>fix patch 6</desc>
            <filename>54292_6.patch</filename>
            <type>text/plain</type>
            <size>35880</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MjUwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDItMjEgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRh
YmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBGcmFtZTo6aXNDb250ZW50RWRpdGFi
bGUgaXMgY3VycmVudGx5IGJhc2VkIG9uIHR3byB0aGluZ3M6IEVkaXRvcjo6Y2xpZW50SXNFZGl0
YWJsZSBhbmQKKyAgICAgICAgRG9jdW1lbnQ6OmluRGVzaWduTW9kZS4gSW4gZmFjdCwgaXQgc2hv
dWxkIG9ubHkgcmVseSBvbiBEb2N1bWVudDo6aW5EZXNpZ25Nb2RlLiBBcyBhIHJlc3VsdCwKKyAg
ICAgICAgRWRpdG9yOjpjbGllbnRJc0VkaXRhYmxlIGFuZCBpdHMgY2xpZW50LXNpZGUgaW1wbGVt
ZW50YXRpb24gY2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbkZyb21Ob25lKToKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
Ojppc0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXND
b250ZW50UmljaGx5RWRpdGFibGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgor
ICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorCiAyMDExLTAyLTIxICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXou
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzcyLDYgKzc3Miw3IEBAIF9f
Wk43V2ViQ29yZTdjb29raWVzRVBLTlNfOERvY3VtZW50RVJLTlMKIF9fWk43V2ViQ29yZTduc0Nv
bG9yRVJLTlNfNUNvbG9yRQogX19aTjdXZWJDb3JlOERvY3VtZW50MTFjcmVhdGVSYW5nZUV2CiBf
X1pON1dlYkNvcmU4RG9jdW1lbnQxMnVwZGF0ZUxheW91dEV2CitfX1pON1dlYkNvcmU4RG9jdW1l
bnQxM3NldERlc2lnbk1vZGVFTlMwXzEzSW5oZXJpdGVkQm9vbEUKIF9fWk43V2ViQ29yZThEb2N1
bWVudDEzc3ZnRXh0ZW5zaW9uc0V2CiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxNHNldEZvY3VzZWRO
b2RlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQx
NmlzUGFnZUJveFZpc2libGVFaQpAQCAtMTIxNSw2ICsxMjE2LDcgQEAgX19aTks3V2ViQ29yZTdJ
bnRSZWN0Y3Y3X05TUmVjdEV2CiBfX1pOSzdXZWJDb3JlN0ludFNpemVjdjdfTlNTaXplRXYKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQxMHJlbmRlclZpZXdFdgogX19aTks3V2ViQ29yZThEb2N1bWVu
dDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdFCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTJp
bkRlc2lnbk1vZGVFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDEzYXhPYmplY3RDYWNoZUV2CiBf
X1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamIKIF9fWk5LN1dlYkNv
cmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NjIsMTIgKzY2Miw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNS
ZWFkT24KICAgICAgICAgSFRNTEVsZW1lbnQqIGJvZHkgPSBkb2N1bWVudC0+Ym9keSgpOwogICAg
ICAgICBpZiAoYm9keSAmJiBib2R5LT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQt
PmZyYW1lKCk7Ci0gICAgICAgIGlmICghZnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgCi0gICAgICAgIHJldHVybiAhZnJhbWUtPmlzQ29udGVudEVkaXRhYmxlKCk7CisK
KyAgICAgICAgcmV0dXJuICFkb2N1bWVudC0+aW5EZXNpZ25Nb2RlKCk7CiAgICAgfQogCiAgICAg
aWYgKG1fcmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1NSwxMSArOTU1LDYgQEAgdm9pZCBFZGl0
b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdAogICAgICAgICBhcHBseVBhcmFncmFwaFN0
eWxlKHN0eWxlLCBlZGl0aW5nQWN0aW9uKTsKIH0KIAotYm9vbCBFZGl0b3I6OmNsaWVudElzRWRp
dGFibGUoKSBjb25zdAotewotICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+aXNFZGl0
YWJsZSgpOwotfQotCiAvLyBDU1MgcHJvcGVydGllcyB0aGF0IG9ubHkgaGFzIGEgdmlzdWFsIGRp
ZmZlcmVuY2Ugd2hlbiBhcHBsaWVkIHRvIHRleHQuCiBzdGF0aWMgY29uc3QgaW50IHRleHRPbmx5
UHJvcGVydGllc1tdID0gewogICAgIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDggKzE3Miw2IEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9u
KikgY29uc3Q7CiAKLSAgICBib29sIGNsaWVudElzRWRpdGFibGUoKSBjb25zdDsKLSAgICAKICAg
ICB2b2lkIHNldFNob3VsZFN0eWxlV2l0aENTUyhib29sIGZsYWcpIHsgbV9zaG91bGRTdHlsZVdp
dGhDU1MgPSBmbGFnOyB9CiAgICAgYm9vbCBzaG91bGRTdHlsZVdpdGhDU1MoKSBjb25zdCB7IHJl
dHVybiBtX3Nob3VsZFN0eWxlV2l0aENTUzsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc5MjI1KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgxMiw3ICsxODEyLDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRTZWxl
Y3Rpb25GcgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsK
ICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUt
PnNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgaWYgKCFpc05vbmUoKSB8
fCAhKG1fZnJhbWUtPmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZykpCisgICAg
aWYgKCFpc05vbmUoKSB8fCAhKGRvY3VtZW50LT5pbkRlc2lnbk1vZGUoKSB8fCBjYXJldEJyb3dz
aW5nKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogbm9kZSA9IGRvY3VtZW50LT5kb2N1
bWVudEVsZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NTcsNyArNjU3LDcgQEAgYm9vbCBIVE1MRWxlbWVudDo6c3VwcG9ydHNG
b2N1cygpIGNvbnN0CiAKIGJvb2wgSFRNTEVsZW1lbnQ6OmlzQ29udGVudEVkaXRhYmxlKCkgY29u
c3QgCiB7Ci0gICAgaWYgKGRvY3VtZW50KCktPmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUo
KS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2Rl
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gSWRlYWxseSB3ZSdkIGNhbGwgQVNT
RVJUIW5lZWRzU3R5bGVSZWNhbGMoKSkgaGVyZSwgYnV0CkBAIC02NzYsNyArNjc2LDcgQEAgYm9v
bCBIVE1MRWxlbWVudDo6aXNDb250ZW50RWRpdGFibGUoKSBjbwogCiBib29sIEhUTUxFbGVtZW50
Ojppc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGRvY3VtZW50KCkt
PmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkKKyAg
ICBpZiAoZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgaWYgKCFyZW5kZXJlcigpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIERyYWdPcGVy
YXRpb24gRHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkYKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEp
OwogICAgIERvY3VtZW50KiBkb2MgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEF0UG9p
bnQoZHJhZ0RhdGEtPmNsaWVudFBvc2l0aW9uKCkpOwotICAgIGlmIChkb2MgJiYgKG1fZGlkSW5p
dGlhdGVEcmFnIHx8IGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpIHx8IChkb2MtPmZyYW1lKCkgJiYg
ZG9jLT5mcmFtZSgpLT5lZGl0b3IoKS0+Y2xpZW50SXNFZGl0YWJsZSgpKSkpCisgICAgaWYgKGRv
YyAmJiAobV9kaWRJbml0aWF0ZURyYWcgfHwgZG9jLT5pc1BsdWdpbkRvY3VtZW50KCkgfHwgZG9j
LT5pbkRlc2lnbk1vZGUoKSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKICAg
ICByZXR1cm4gZHJhZ09wZXJhdGlvbihkcmFnRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0VkaXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9F
ZGl0b3JDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODcsOCArODcsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCkgPSAwOwogICAgIHZpcnR1YWwgaW50IHNw
ZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgPSAwOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0Vk
aXRhYmxlKCkgPSAwOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5n
ZSopID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopID0gMDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsMTMgKzU1MSw2IEBAIHZv
aWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQoRE8KICAgICB9CiB9CiAKLWJvb2wg
RnJhbWU6OmlzQ29udGVudEVkaXRhYmxlKCkgY29uc3QKLXsKLSAgICBpZiAobV9lZGl0b3IuY2xp
ZW50SXNFZGl0YWJsZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gbV9kb2Mt
PmluRGVzaWduTW9kZSgpOwotfQotCiAjaWZuZGVmIE5ERUJVRwogc3RhdGljIEhhc2hTZXQ8RnJh
bWUqPiYga2VlcEFsaXZlU2V0KCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgJKHJldmlzaW9uIDc5
MjI1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODIsOCArMTgyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBEcmFnSW1hZ2VSZWYg
bm9kZUltYWdlKE5vZGUqKTsKICAgICAgICAgRHJhZ0ltYWdlUmVmIGRyYWdJbWFnZUZvclNlbGVj
dGlvbigpOwogCi0gICAgICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKSBjb25zdDsgLy8gaWYg
dHJ1ZSwgZXZlcnl0aGluZyBpbiBmcmFtZSBpcyBlZGl0YWJsZQotCiAgICAgICAgIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2lu
dCk7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5
MjUwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUgYW5kIGl0cyBkZXBlbmRl
bmNpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgICogc3JjL0VkaXRv
ckNsaWVudEltcGwuaDoKKwogMjAxMS0wMi0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA3
OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODcsMTEgKzE4Nyw2IEBAIGludCBFZGl0b3JDbGllbnRJbXBs
OjpzcGVsbENoZWNrZXJEb2N1bWUKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBFZGl0b3JDbGll
bnRJbXBsOjppc0VkaXRhYmxlKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJvb2wgRWRp
dG9yQ2xpZW50SW1wbDo6c2hvdWxkQmVnaW5FZGl0aW5nKFJhbmdlKiByYW5nZSkKIHsKICAgICBp
ZiAobV93ZWJWaWV3LT5jbGllbnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9FZGl0b3JDbGllbnRJbXBsLmgJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3
ICs1OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFi
bGVkKCk7CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwogICAgIHZp
cnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7Ci0gICAgdmlydHVhbCBib29sIGlz
RWRpdGFibGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6
OlJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFu
Z2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2RlKiwg
V2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pOwpJbmRleDogU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNTApCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yMSAgQ2hhbmcgU2h1
ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFi
bGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUg
aW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRF
ZmwuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oOgorCiAy
MDExLTAyLTIwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDc5
MjI1KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDEyICsxNDUsNiBAQCB2b2lkIEVkaXRvckNsaWVu
dEVmbDo6ZGlkU2V0U2VsZWN0aW9uVHlwCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9v
bCBFZGl0b3JDbGllbnRFZmw6OmlzRWRpdGFibGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJD
b21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8RWRpdENvbW1hbmQ+KQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRFZmwuaAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuaAkod29ya2luZyBjb3B5KQpAQCAt
NjEsOCArNjEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVj
a2luZygpOwogICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJl
Z2luRWRpdGluZyhSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFJh
bmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5vZGUoTm9kZSosIFJhbmdlKiwg
RWRpdG9ySW5zZXJ0QWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MjUw
KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTEtMDItMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1
cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKwor
ICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRlIGltcGxlbWVudGF0aW9uLiBNYWtlIFdlYktp
dCBzdXBwb3J0IGRlcGVuZCBvbiBEb2N1bWVudDo6aW5EZXNpZ25Nb2RlLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRHdGsuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2VkaXRhYmxlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFi
bGUpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5oOgorCiAyMDExLTAy
LTIxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNzkyMjUpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODAsMTEgKzQ4MCw2IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpkaWRTZXRT
ZWxlY3Rpb25UeXBlc0YKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIEVkaXRvckNs
aWVudDo6aXNFZGl0YWJsZSgpCi17Ci0gICAgcmV0dXJuIHdlYmtpdF93ZWJfdmlld19nZXRfZWRp
dGFibGUobV93ZWJWaWV3KTsKLX0KLQogdm9pZCBFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyQ29tbWFu
ZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjb21tYW5kKQog
ewogICAgIGlmICh1bmRvU3RhY2suc2l6ZSgpID09IG1heGltdW1VbmRvU3RhY2tEZXB0aCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5oCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw4ICs4Nyw2IEBAIGNs
YXNzIEVkaXRvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpFZGkKICAgICAgICAgdmlydHVhbCB2
b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwogICAgICAgICB2aXJ0dWFsIGludCBzcGVsbENo
ZWNrZXJEb2N1bWVudFRhZygpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7
Ci0KICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5n
ZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5n
ZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShXZWJDb3JlOjpOb2Rl
KiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gNzky
MjUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1NDUsNyArMzU0NSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d19pbml0KFdlYktpdFcKICAgICBndGtfd2lkZ2V0X3NldF9jYW5fZm9jdXMoR1RLX1dJREdFVCh3
ZWJWaWV3KSwgVFJVRSk7CiAgICAgcHJpdi0+bWFpbkZyYW1lID0gV0VCS0lUX1dFQl9GUkFNRSh3
ZWJraXRfd2ViX2ZyYW1lX25ldyh3ZWJWaWV3KSk7CiAgICAgcHJpdi0+bGFzdFBvcHVwWFBvc2l0
aW9uID0gcHJpdi0+bGFzdFBvcHVwWVBvc2l0aW9uID0gLTE7Ci0gICAgcHJpdi0+ZWRpdGFibGUg
PSBmYWxzZTsKIAogICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdCA9IGFkb3B0R1JlZih3ZWJraXRf
d2ViX2JhY2tfZm9yd2FyZF9saXN0X25ld193aXRoX3dlYl92aWV3KHdlYlZpZXcpKTsKIApAQCAt
NDMzOSw5ICs0MzM4LDggQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dldF9lZGl0YWJsZShX
ZQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSwgRkFMU0UpOwogCi0gICAgV2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5w
cml2OwotCi0gICAgcmV0dXJuIHByaXYtPmVkaXRhYmxlOworICAgIEZyYW1lKiBmcmFtZSA9IGNv
cmUod2ViVmlldyktPm1haW5GcmFtZSgpOworICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+ZG9j
dW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7CiB9CiAKIC8qKgpAQCAtNDM2NiwxNyArNDM2NCwxNSBA
QCB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfZWRpdGFibGUoV2ViS2l0CiB7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgV2ViS2l0V2Vi
Vmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotCiAgICAgRnJhbWUqIGZyYW1lID0g
Y29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChmcmFtZSk7
CiAKICAgICAvLyBUT0RPOiBXaGF0IGhhcHBlbnMgd2hlbiB0aGUgZnJhbWUgaXMgcmVwbGFjZWQ/
CiAgICAgZmxhZyA9IGZsYWcgIT0gRkFMU0U7Ci0gICAgaWYgKGZsYWcgPT0gcHJpdi0+ZWRpdGFi
bGUpCisgICAgaWYgKGZsYWcgPT0gd2Via2l0X3dlYl92aWV3X2dldF9lZGl0YWJsZSh3ZWJWaWV3
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpdi0+ZWRpdGFibGUgPSBmbGFnOworICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5zZXREZXNpZ25Nb2RlKGZsYWcgPyBXZWJDb3JlOjpEb2N1bWVudDo6
b24gOiBXZWJDb3JlOjpEb2N1bWVudDo6b2ZmKTsKIAogICAgIGlmIChmbGFnKSB7CiAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAko
cmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
d3ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNiBAQCBzdHJ1Y3QgX1dlYktp
dFdlYlZpZXdQcml2YXRlIHsKICAgICBnaW50IGxhc3RQb3B1cFlQb3NpdGlvbjsKIAogICAgIEhh
c2hTZXQ8R3RrV2lkZ2V0Kj4gY2hpbGRyZW47Ci0gICAgYm9vbCBlZGl0YWJsZTsKICAgICBHUmVm
UHRyPEd0a0lNQ29udGV4dD4gaW1Db250ZXh0OwogCiAgICAgZ2Jvb2xlYW4gdHJhbnNwYXJlbnQ7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNTApCisrKyBTb3VyY2UvV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEx
LTAyLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1l
Ojppc0NvbnRlbnRFZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3Zl
IHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRIYWlrdS5oOgorCiAyMDExLTAyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogU291cmNl
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRI
YWlrdS5jcHAJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywxMiAr
MTEzLDYgQEAgaW50IEVkaXRvckNsaWVudEhhaWt1OjpzcGVsbENoZWNrZXJEb2N1bQogICAgIHJl
dHVybiAwOwogfQogCi1ib29sIEVkaXRvckNsaWVudEhhaWt1Ojppc0VkaXRhYmxlKCkKLXsKLSAg
ICAvLyBGSVhNRTogc2hvdWxkIGJlIGNvbnRyb2xsYWJsZQotICAgIHJldHVybiBmYWxzZTsKLX0K
LQogYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6c2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OlJh
bmdlKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9oYWlr
dS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAkocmV2aXNp
b24gNzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDggKzU4LDYgQEAgY2xhc3MgRWRpdG9y
Q2xpZW50SGFpa3UgOiBwdWJsaWMgRWRpdG9yQwogICAgICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xl
R3JhbW1hckNoZWNraW5nKCk7CiAgICAgICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3Vt
ZW50VGFnKCk7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKLQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFJhbmdlKik7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFJhbmdlKik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5nZSosIEVkaXRvckluc2VydEFjdGlvbik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTI1MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDExLTAyLTIxICBDaGFu
ZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRF
ZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQg
c2lkZSBpbXBsZW1lbnRhdGlvbi4gTWFrZSBXZWJLaXQgc3VwcG9ydCBkZXBlbmQgb24gRG9jdW1l
bnQ6OmluRGVzaWduTW9kZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgc2V0RWRpdGFi
bGU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgaXNFZGl0YWJsZV0pOgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlld0RhdGEuaDoKKworMjAxMS0wMi0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUsIEVkaXRvcjo6Y2xp
ZW50SXNFZGl0YWJsZSBhbmQgRWRpdG9yQ2xpZW50Ojppc0VkaXRhYmxlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1v
dmUgdGhlIFdlYktpdCBzaWRlIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50Lm1tOgorCiAyMDExLTAyLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlz
aW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgYm9v
bCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNFZGl0YWJsZSgpOwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZERlbGV0ZVJhbmdlKFdlYkNv
cmU6OlJhbmdlKik7ICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVsZXRlSW50ZXJm
YWNlKFdlYkNvcmU6OkhUTUxFbGVtZW50Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiA3OTIyNSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjQ2LDExICsyNDYsNiBAQCBpbnQgV2ViRWRpdG9yQ2xpZW50Ojpz
cGVsbENoZWNrZXJEb2N1bWVuCiAgICAgcmV0dXJuIFttX3dlYlZpZXcgc3BlbGxDaGVja2VyRG9j
dW1lbnRUYWddOwogfQogCi1ib29sIFdlYkVkaXRvckNsaWVudDo6aXNFZGl0YWJsZSgpCi17Ci0g
ICAgcmV0dXJuIFttX3dlYlZpZXcgaXNFZGl0YWJsZV07Ci19Ci0KIGJvb2wgV2ViRWRpdG9yQ2xp
ZW50OjpzaG91bGREZWxldGVSYW5nZShSYW5nZSogcmFuZ2UpCiB7CiAgICAgcmV0dXJuIFtbbV93
ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6bV93ZWJWaWV3CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA3OTIyNSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDk4
OSwxMiArNDk4OSwxMiBAQCAtIChOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlvbkFmZmluaXR5
CiAKIC0gKHZvaWQpc2V0RWRpdGFibGU6KEJPT0wpZmxhZwogewotICAgIGlmIChfcHJpdmF0ZS0+
ZWRpdGFibGUgIT0gZmxhZykgewotICAgICAgICBfcHJpdmF0ZS0+ZWRpdGFibGUgPSBmbGFnOwor
ICAgIGlmIChbc2VsZiBpc0VkaXRhYmxlXSAhPSBmbGFnKSB7CiAgICAgICAgIGlmICghX3ByaXZh
dGUtPnRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50c0NoYW5nZWQgJiYgX3ByaXZhdGUtPnBhZ2Up
CiAgICAgICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1l
bnRzKCFmbGFnKTsKICAgICAgICAgRnJhbWUqIG1haW5GcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZy
YW1lXTsKICAgICAgICAgaWYgKG1haW5GcmFtZSkgeworICAgICAgICAgICAgbWFpbkZyYW1lLT5k
b2N1bWVudCgpLT5zZXREZXNpZ25Nb2RlKGZsYWcgPyBXZWJDb3JlOjpEb2N1bWVudDo6b24gOiBX
ZWJDb3JlOjpEb2N1bWVudDo6b2ZmKTsKICAgICAgICAgICAgIGlmIChmbGFnKSB7CiAgICAgICAg
ICAgICAgICAgbWFpbkZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVt
ZW50KCk7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIFdlYlZpZXcgaXMgbWFkZSBlZGl0YWJs
ZSBhbmQgdGhlIHNlbGVjdGlvbiBpcyBlbXB0eSwgc2V0IGl0IHRvIHNvbWV0aGluZy4KQEAgLTUw
MDcsNyArNTAwNywxMCBAQCAtICh2b2lkKXNldEVkaXRhYmxlOihCT09MKWZsYWcKIAogLSAoQk9P
TClpc0VkaXRhYmxlCiB7Ci0gICAgcmV0dXJuIF9wcml2YXRlLT5lZGl0YWJsZTsKKyAgICBGcmFt
ZSogbWFpbkZyYW1lID0gW3NlbGYgX21haW5Db3JlRnJhbWVdOworICAgIGlmIChtYWluRnJhbWUp
CisgICAgICAgIHJldHVybiBtYWluRnJhbWUtPmRvY3VtZW50KCktPmluRGVzaWduTW9kZSgpOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogLSAodm9pZClzZXRUeXBpbmdTdHlsZTooRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbiAqKXN0eWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5oCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw2IEBAIEBpbnRlcmZh
Y2UgV2ViVmlld1ByaXZhdGUgOiBOU09iamVjdCB7CiAgICAgQk9PTCBzaG91bGRDbG9zZVdpdGhX
aW5kb3c7CiAgICAgQk9PTCBtYWluRnJhbWVEb2N1bWVudFJlYWR5OwogICAgIEJPT0wgZHJhd3NC
YWNrZ3JvdW5kOwotICAgIEJPT0wgZWRpdGFibGU7CiAgICAgQk9PTCB0YWJLZXlDeWNsZXNUaHJv
dWdoRWxlbWVudHNDaGFuZ2VkOwogICAgIEJPT0wgYmVjb21pbmdGaXJzdFJlc3BvbmRlcjsKICAg
ICBCT09MIGJlY29taW5nRmlyc3RSZXNwb25kZXJGcm9tT3V0c2lkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3OTI1MCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDItMjEgIENoYW5nIFNodSAgPGNzaHVA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlIGFuZCBp
dHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRlIGltcGxlbWVu
dGF0aW9uLiBNYWtlIFdlYktpdCBzdXBwb3J0IGRlcGVuZCBvbiBEb2N1bWVudDo6aW5EZXNpZ25N
b2RlLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRDb250ZW50RWRp
dGFibGUpOgorICAgICAgICAoUVdlYlBhZ2U6OmlzQ29udGVudEVkaXRhYmxlKToKKyAgICAgICAg
KiBBcGkvcXdlYnBhZ2VfcC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oOgorCisy
MDExLTAyLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZy
YW1lOjppc0NvbnRlbnRFZGl0YWJsZSwgRWRpdG9yOjpjbGllbnRJc0VkaXRhYmxlIGFuZCBFZGl0
b3JDbGllbnQ6OmlzRWRpdGFibGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1w
bGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaDoKKwogMjAxMS0w
Mi0xNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlz
aW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMDIsNyArMzAyLDYgQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZh
dGUoUVdlYlBhZwogICAgICwgY3VycmVudENvbnRleHRNZW51KDApCiAjZW5kaWYKICAgICAsIHNl
dHRpbmdzKDApCi0gICAgLCBlZGl0YWJsZShmYWxzZSkKICAgICAsIHVzZUZpeGVkTGF5b3V0KGZh
bHNlKQogICAgICwgcGx1Z2luRmFjdG9yeSgwKQogICAgICwgaW5zcGVjdG9yRnJvbnRlbmQoMCkK
QEAgLTMxNjEsMTEgKzMxNjAsMTEgQEAgYm9vbCBRV2ViUGFnZTo6Zm9jdXNOZXh0UHJldkNoaWxk
KGJvb2wgbgogKi8KIHZvaWQgUVdlYlBhZ2U6OnNldENvbnRlbnRFZGl0YWJsZShib29sIGVkaXRh
YmxlKQogewotICAgIGlmIChkLT5lZGl0YWJsZSAhPSBlZGl0YWJsZSkgewotICAgICAgICBkLT5l
ZGl0YWJsZSA9IGVkaXRhYmxlOworICAgIGlmIChpc0NvbnRlbnRFZGl0YWJsZSgpICE9IGVkaXRh
YmxlKSB7CiAgICAgICAgIGQtPnBhZ2UtPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cygh
ZWRpdGFibGUpOwogICAgICAgICBpZiAoZC0+bWFpbkZyYW1lKSB7CiAgICAgICAgICAgICBXZWJD
b3JlOjpGcmFtZSogZnJhbWUgPSBkLT5tYWluRnJhbWUtPmQtPmZyYW1lOworICAgICAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPnNldERlc2lnbk1vZGUoZWRpdGFibGUgPyBXZWJDb3JlOjpEb2N1
bWVudDo6b24gOiBXZWJDb3JlOjpEb2N1bWVudDo6b2ZmKTsKICAgICAgICAgICAgIGlmIChlZGl0
YWJsZSkgewogICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5
bGVUb0JvZHlFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1hYyBwb3J0IGNh
bGxzIHRoaXMgaWYgdGhlcmUgaXMgbm8gc2VsZWN0ZWRET01SYW5nZQpAQCAtMzE3OSw3ICszMTc4
LDcgQEAgdm9pZCBRV2ViUGFnZTo6c2V0Q29udGVudEVkaXRhYmxlKGJvb2wgZQogCiBib29sIFFX
ZWJQYWdlOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPmVkaXRh
YmxlOworICAgIHJldHVybiBkLT5tYWluRnJhbWUgJiYgZC0+bWFpbkZyYW1lLT5kLT5mcmFtZS0+
ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7CiB9CiAKIC8qIQpJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlX3AuaAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw3ICsyMDAsNiBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICBRV2ViU2V0dGluZ3MgKnNldHRpbmdzOwogICAgIFFQYWxldHRlIHBhbGV0dGU7
Ci0gICAgYm9vbCBlZGl0YWJsZTsKICAgICBib29sIHVzZUZpeGVkTGF5b3V0OwogCiAgICAgUUFj
dGlvbiAqYWN0aW9uc1tRV2ViUGFnZTo6V2ViQWN0aW9uQ291bnRdOwpJbmRleDogU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHJldmlz
aW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCwxMSArMjM4LDYgQEAgYm9vbCBFZGl0b3JD
bGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBFZGl0b3JDbGllbnRRdDo6aXNFZGl0YWJsZSgpCi17IAotICAgIHJldHVybiBtX3BhZ2UtPmlz
Q29udGVudEVkaXRhYmxlKCk7Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29t
bWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjbWQpCiB7
CiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuaAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDcgKzU3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFt
bWFyQ2hlY2tpbmcoKTsKICAgICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygp
OwogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7Ci0gICAgdmly
dHVhbCBib29sIGlzRWRpdGFibGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVk
aXRpbmcoUmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSop
OwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNTApCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0y
MSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXND
b250ZW50RWRpdGFibGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUg
V2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oOgorCiAyMDExLTAyLTE5ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFycGFyaXRhLgpJbmRleDogU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCShy
ZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyOSwxMSArNjI5LDYgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kSwogewogfQogCi1ib29sIFdlYkVkaXRv
ckNsaWVudDo6aXNFZGl0YWJsZSgpCi17Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIFdl
YkVkaXRvckNsaWVudDo6aWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmIHdv
cmQpCiB7CiAgICAgQ09NUHRyPElXZWJFZGl0aW5nRGVsZWdhdGU+IGVkOwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJl
dmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDggKzUwLDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZygpOwogICAgIHZpcnR1
YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNF
ZGl0YWJsZSgpOwotCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3Jl
OjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJh
bmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgV1RGOjpTdHJp
bmcmLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNTApCisrKyBTb3VyY2UvV2ViS2l0L3dp
bmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAyLTIx
ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0Nv
bnRlbnRFZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBX
ZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRXaW5DRS5oOgorCiAyMDExLTAyLTE5ICBDaGFybGllIFJlaXMgIDxjcmVpc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFycGFyaXRhLgpJbmRleDogU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRX
aW5DRS5jcHAJKHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxMiAr
MTQ0LDYgQEAgdm9pZCBFZGl0b3JDbGllbnRXaW5DRTo6ZGlkU2V0U2VsZWN0aW9uVAogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgRWRpdG9yQ2xpZW50V2luQ0U6OmlzRWRpdGFibGUo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lk
IEVkaXRvckNsaWVudFdpbkNFOjpyZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4gY29tbWFuZCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRX
aW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50V2luQ0UuaAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDggKzQ5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hl
Y2tpbmcoKTsKICAgICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwogCi0g
ICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKLQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRC
ZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5k
RWRpdGluZyhXZWJDb3JlOjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnRO
b2RlKFdlYkNvcmU6Ok5vZGUqLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2Vy
dEFjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNzkyNTApCisrKyBTb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEx
LTAyLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1l
Ojppc0NvbnRlbnRFZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3Zl
IHRoZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4gTWFrZSBXZWJLaXQgc3VwcG9ydCBkZXBl
bmQgb24gRG9jdW1lbnQ6OmluRGVzaWduTW9kZS4KKworICAgICAgICAqIFdlYkZyYW1lLmNwcDoK
KyAgICAgICAgKHd4V2ViRnJhbWU6Ond4V2ViRnJhbWUpOgorICAgICAgICAod3hXZWJGcmFtZTo6
TWFrZUVkaXRhYmxlKToKKyAgICAgICAgKHd4V2ViRnJhbWU6OmlzRWRpdGFibGUpOgorICAgICAg
ICAqIFdlYkZyYW1lLmg6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5j
cHA6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5oOgorICAgICAgICAq
IFdlYlZpZXcuY3BwOgorICAgICAgICAod3hXZWJWaWV3Ojp3eFdlYlZpZXcpOgorICAgICAgICAq
IFdlYlZpZXcuaDoKKwogMjAxMS0wMi0xOSAgQ2hhcmxpZSBSZWlzICA8Y3JlaXNAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gv
V2ViRnJhbWUuY3BwCShyZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw2IEBACiAKIHd4V2ViRnJhbWU6Ond4
V2ViRnJhbWUod3hXZWJWaWV3KiBjb250YWluZXIsIHd4V2ViRnJhbWUqIHBhcmVudCwgV2ViVmll
d0ZyYW1lRGF0YSogZGF0YSkgOgogICAgIG1fdGV4dE1hZ25pZmllcigxLjApLAotICAgIG1faXNF
ZGl0YWJsZShmYWxzZSksCiAgICAgbV9pc0luaXRpYWxpemVkKGZhbHNlKSwKICAgICBtX2JlaW5n
RGVzdHJveWVkKGZhbHNlKQogewpAQCAtNDAzLDEwICs0MDIsMTYgQEAgdm9pZCB3eFdlYkZyYW1l
OjpSZXNldFRleHRTaXplKCkKIAogdm9pZCB3eFdlYkZyYW1lOjpNYWtlRWRpdGFibGUoYm9vbCBl
bmFibGUpCiB7Ci0gICAgbV9pc0VkaXRhYmxlID0gZW5hYmxlOworICAgIGlmIChlbmFibGUgIT0g
SXNFZGl0YWJsZSgpICYmIG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQo
KSkKKyAgICAgICAgbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVzaWduTW9kZShlbmFi
bGUgPyBXZWJDb3JlOjpEb2N1bWVudDo6b24gOiBXZWJDb3JlOjpEb2N1bWVudDo6b2ZmKTsKIH0K
IAotCitib29sIHd4V2ViRnJhbWU6OklzRWRpdGFibGUoKQoreworICAgIGlmIChtX2ltcGwtPmZy
YW1lICYmIG1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBtX2ltcGwt
PmZyYW1lLT5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CiAKIGJvb2wgd3hXZWJGcmFtZTo6Q2FuQ29weSgpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4
L1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5oCShy
ZXZpc2lvbiA3OTIyNSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIERlY3JlYXNlVGV4dFNp
emUoKTsKICAgICB2b2lkIFJlc2V0VGV4dFNpemUoKTsKICAgICB2b2lkIE1ha2VFZGl0YWJsZShi
b29sIGVuYWJsZSk7Ci0gICAgYm9vbCBJc0VkaXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0Vk
aXRhYmxlOyB9CisgICAgYm9vbCBJc0VkaXRhYmxlKCkgY29uc3Q7CiAgICAgCiAgICAgV2ViQ29y
ZTo6RnJhbWUqIEdldEZyYW1lKCk7CiAKQEAgLTE3Myw3ICsxNzMsNiBAQCBwdWJsaWM6CiAgICAg
CiBwcml2YXRlOgogICAgIGZsb2F0IG1fdGV4dE1hZ25pZmllcjsKLSAgICBib29sIG1faXNFZGl0
YWJsZTsKICAgICBib29sIG1faXNJbml0aWFsaXplZDsKICAgICBib29sIG1fYmVpbmdEZXN0cm95
ZWQ7CiAgICAgV2ViRnJhbWVQcml2YXRlKiBtX2ltcGw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4
L1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJ
KHJldmlzaW9uIDc5MjI1KQorKysgU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI3LDcgKzMyNyw2IEBAIGNvbnN0IHd4Q2hhciogd3hXZWJWaWV3TmFtZVN0
ciA9IHd4VCgid2UKIAogd3hXZWJWaWV3Ojp3eFdlYlZpZXcoKSA6CiAgICAgbV90ZXh0TWFnbmlm
aWVyKDEuMCksCi0gICAgbV9pc0VkaXRhYmxlKGZhbHNlKSwKICAgICBtX2lzSW5pdGlhbGl6ZWQo
ZmFsc2UpLAogICAgIG1fYmVpbmdEZXN0cm95ZWQoZmFsc2UpLAogICAgIG1fbW91c2VXaGVlbFpv
b21zKGZhbHNlKSwKQEAgLTMzOCw3ICszMzcsNiBAQCB3eFdlYlZpZXc6Ond4V2ViVmlldygpIDoK
IHd4V2ViVmlldzo6d3hXZWJWaWV3KHd4V2luZG93KiBwYXJlbnQsIGludCBpZCwgY29uc3Qgd3hQ
b2ludCYgcG9zaXRpb24sIAogICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXpl
LCBsb25nIHN0eWxlLCBjb25zdCB3eFN0cmluZyYgbmFtZSkgOgogICAgIG1fdGV4dE1hZ25pZmll
cigxLjApLAotICAgIG1faXNFZGl0YWJsZShmYWxzZSksCiAgICAgbV9pc0luaXRpYWxpemVkKGZh
bHNlKSwKICAgICBtX2JlaW5nRGVzdHJveWVkKGZhbHNlKSwKICAgICBtX21vdXNlV2hlZWxab29t
cyhmYWxzZSksCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuaAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2Uv
V2ViS2l0L3d4L1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw2IEBAIHBy
aXZhdGU6CiAgICAgREVDTEFSRV9EWU5BTUlDX0NMQVNTKHd4V2ViVmlldykKICNlbmRpZgogICAg
IGZsb2F0IG1fdGV4dE1hZ25pZmllcjsKLSAgICBib29sIG1faXNFZGl0YWJsZTsKICAgICBib29s
IG1faXNJbml0aWFsaXplZDsKICAgICBib29sIG1fYmVpbmdEZXN0cm95ZWQ7CiAgICAgYm9vbCBt
X21vdXNlV2hlZWxab29tczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAkocmV2aXNpb24gNzkyMjUpCisrKyBTb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTcsMTggKzE5Nyw2IEBAIGJvb2wgRWRpdG9yQ2xpZW50V3g6OnNlbGVjdFdvcmRCZWZvcmVN
ZW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRWRpdG9yQ2xpZW50V3g6OmlzRWRpdGFi
bGUoKQotewotICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotCi0gICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgIHd4V2ViVmll
dyogd2ViS2l0V2luID0gZHluYW1pY19jYXN0PHd4V2ViVmlldyo+KGZyYW1lLT52aWV3KCktPmhv
c3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpOwotICAgICAgICBpZiAod2ViS2l0V2lu
KSAKLSAgICAgICAgICAgIHJldHVybiB3ZWJLaXRXaW4tPklzRWRpdGFibGUoKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIEVkaXRvckNsaWVudFd4OjpzaG91bGRCZWdpbkVk
aXRpbmcoUmFuZ2UqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAkocmV2aXNpb24gNzky
MjUpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQg
c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RXb3Jk
QmVmb3JlTWVudUV2ZW50KCk7Ci0gICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2VkaXRpbmcvc2VsZWN0aW9uL2Rlc2lnbm1vZGUtbm8tY2FyZXQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9k
ZXNpZ25tb2RlLW5vLWNhcmV0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzkyMjUpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZGVzaWdubW9kZS1uby1jYXJl
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTksOSArOSwxMSBAQCBsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDAp
IHNpemUgNzg0eDU0CiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc4
NHg1NAogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc1OTogIlRoaXMgdGVzdHMg
dG8gc2VlIHRoYXQgYSBjYXJldCBpcyBwbGFjZWQgaW5zaWRlIGFuIGVkaXRhYmxlIGRvY3VtZW50
IHRoYXQgaXMgZW50aXJlbHkgZWRpdGFibGUgZXZlbiB3aGVuIG5vIGNhcmV0IGlzIHJlcXVlc3Rl
ZCIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzU5LDApIHdpZHRoIDQ6ICIgIgogICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCAxMTg6ICJwcm9ncmFtbWF0aWNhbGx5LiAiCiAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDExOCwxOCkgd2lkdGggMTg3OiAiV2UgZG8gdGhpcyBhcyBhIGNv
bnZlbmllbmNlLiAiCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDMwNSwxOCkgd2lkdGggNDc5OiAi
UmlnaHQgbm93LCB3ZSBvbmx5IGRvIHRoaXMgY29udmVuaWVuY2Ugd2hlbiBhIGRvY3VtZW50J3Mg
ZnJhbWUgYmVjb21lcyIKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzg0LDE4KSB3aWR0aCAwOiAi
ICIKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNikgd2lkdGggMzc4OiAiZmlyc3QgcmVzcG9u
ZGVyIG9yIHdoZW4gYSBkb2N1bWVudCdzIHdpbmRvdyBiZWNvbWVzIGtleS4iCiAgICAgICBSZW5k
ZXJCbG9jayB7UFJFfSBhdCAoMCw2Nykgc2l6ZSA3ODR4MTUKICAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgODh4MTUK
</data>
<flag name="review"
          id="75209"
          type_id="1"
          status="+"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="75924"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84053</attachid>
            <date>2011-02-28 07:03:09 -0800</date>
            <delta_ts>2011-02-28 17:47:23 -0800</delta_ts>
            <desc>fix patch 7</desc>
            <filename>54292_7.patch</filename>
            <type>text/plain</type>
            <size>35876</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5ODU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDItMjggIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRh
YmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBGcmFtZTo6aXNDb250ZW50RWRpdGFi
bGUgaXMgY3VycmVudGx5IGJhc2VkIG9uIHR3byB0aGluZ3M6IEVkaXRvcjo6Y2xpZW50SXNFZGl0
YWJsZSBhbmQKKyAgICAgICAgRG9jdW1lbnQ6OmluRGVzaWduTW9kZS4gSW4gZmFjdCwgaXQgc2hv
dWxkIG9ubHkgcmVseSBvbiBEb2N1bWVudDo6aW5EZXNpZ25Nb2RlLiBBcyBhIHJlc3VsdCwKKyAg
ICAgICAgRWRpdG9yOjpjbGllbnRJc0VkaXRhYmxlIGFuZCBpdHMgY2xpZW50LXNpZGUgaW1wbGVt
ZW50YXRpb24gY2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNSZWFkT25seSk6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6
CisgICAgICAgICogZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbkZyb21Ob25lKToKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
Ojppc0NvbnRlbnRFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aXND
b250ZW50UmljaGx5RWRpdGFibGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgor
ICAgICAgICAqIHBhZ2UvRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorCiAyMDExLTAyLTI4ICBSZW5hdGEgSG9kb3ZhbiAg
PHJlbmlAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDc5ODU3KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc4Miw2ICs3ODIsNyBAQCBfX1pO
N1dlYkNvcmU3Y29va2llc0VQS05TXzhEb2N1bWVudEVSS05TCiBfX1pON1dlYkNvcmU3bnNDb2xv
ckVSS05TXzVDb2xvckUKIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VFdgogX19a
TjdXZWJDb3JlOERvY3VtZW50MTJ1cGRhdGVMYXlvdXRFdgorX19aTjdXZWJDb3JlOERvY3VtZW50
MTNzZXREZXNpZ25Nb2RlRU5TMF8xM0luaGVyaXRlZEJvb2xFCiBfX1pON1dlYkNvcmU4RG9jdW1l
bnQxM3N2Z0V4dGVuc2lvbnNFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MTRzZXRGb2N1c2VkTm9k
ZUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRQogX19aTjdXZWJDb3JlOERvY3VtZW50MTZp
c1BhZ2VCb3hWaXNpYmxlRWkKQEAgLTEyMjUsNiArMTIyNiw3IEBAIF9fWk5LN1dlYkNvcmU3SW50
UmVjdGN2N19OU1JlY3RFdgogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y3X05TU2l6ZUV2CiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50MTByZW5kZXJWaWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQx
MWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTks3V2ViQ29yZThEb2N1bWVudDEyaW5E
ZXNpZ25Nb2RlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgogX19a
Tks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiCiBfX1pOSzdXZWJDb3Jl
OERvY3VtZW50MTRnZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDc5ODU3KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjYzLDEyICs2NjMsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVh
ZE9uCiAgICAgICAgIEhUTUxFbGVtZW50KiBib2R5ID0gZG9jdW1lbnQtPmJvZHkoKTsKICAgICAg
ICAgaWYgKGJvZHkgJiYgYm9keS0+aXNDb250ZW50RWRpdGFibGUoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgCi0gICAgICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5m
cmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1lKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIAotICAgICAgICByZXR1cm4gIWZyYW1lLT5pc0NvbnRlbnRFZGl0YWJsZSgpOworCisg
ICAgICAgIHJldHVybiAhZG9jdW1lbnQtPmluRGVzaWduTW9kZSgpOwogICAgIH0KIAogICAgIGlm
IChtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAJKHJldmlzaW9uIDc5ODU3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTUsMTEgKzk1NSw2IEBAIHZvaWQgRWRpdG9y
OjphcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3QKICAgICAgICAgYXBwbHlQYXJhZ3JhcGhTdHls
ZShzdHlsZSwgZWRpdGluZ0FjdGlvbik7CiB9CiAKLWJvb2wgRWRpdG9yOjpjbGllbnRJc0VkaXRh
YmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmlzRWRpdGFi
bGUoKTsKLX0KLQogLy8gQ1NTIHByb3BlcnRpZXMgdGhhdCBvbmx5IGhhcyBhIHZpc3VhbCBkaWZm
ZXJlbmNlIHdoZW4gYXBwbGllZCB0byB0ZXh0Lgogc3RhdGljIGNvbnN0IGludCB0ZXh0T25seVBy
b3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLApJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw4ICsxNzIsNiBAQCBwdWJsaWM6
CiAKICAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiop
IGNvbnN0OwogCi0gICAgYm9vbCBjbGllbnRJc0VkaXRhYmxlKCkgY29uc3Q7Ci0gICAgCiAgICAg
dm9pZCBzZXRTaG91bGRTdHlsZVdpdGhDU1MoYm9vbCBmbGFnKSB7IG1fc2hvdWxkU3R5bGVXaXRo
Q1NTID0gZmxhZzsgfQogICAgIGJvb2wgc2hvdWxkU3R5bGVXaXRoQ1NTKCkgY29uc3QgeyByZXR1
cm4gbV9zaG91bGRTdHlsZVdpdGhDU1M7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MTMsNyArMTgxMyw3IEBAIHZvaWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0U2VsZWN0
aW9uRnIKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAg
ICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS0+c2V0dGluZ3MoKSAmJiBtX2ZyYW1lLT5z
ZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwotICAgIGlmICghaXNOb25lKCkgfHwg
IShtX2ZyYW1lLT5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IGNhcmV0QnJvd3NpbmcpKQorICAgIGlm
ICghaXNOb25lKCkgfHwgIShkb2N1bWVudC0+aW5EZXNpZ25Nb2RlKCkgfHwgY2FyZXRCcm93c2lu
ZykpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNp
b24gNzk4NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjU5LDcgKzY1OSw3IEBAIGJvb2wgSFRNTEVsZW1lbnQ6OnN1cHBvcnRzRm9j
dXMoKSBjb25zdAogCiBib29sIEhUTUxFbGVtZW50Ojppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0
IAogewotICAgIGlmIChkb2N1bWVudCgpLT5mcmFtZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkt
PmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgaWYgKGRvY3VtZW50KCktPmluRGVzaWduTW9kZSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIElkZWFsbHkgd2UnZCBjYWxsIEFTU0VS
VCFuZWVkc1N0eWxlUmVjYWxjKCkpIGhlcmUsIGJ1dApAQCAtNjc4LDcgKzY3OCw3IEBAIGJvb2wg
SFRNTEVsZW1lbnQ6OmlzQ29udGVudEVkaXRhYmxlKCkgY28KIAogYm9vbCBIVE1MRWxlbWVudDo6
aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSBjb25zdAogewotICAgIGlmIChkb2N1bWVudCgpLT5m
cmFtZSgpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAg
aWYgKGRvY3VtZW50KCktPmluRGVzaWduTW9kZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIGlmICghcmVuZGVyZXIoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDc5ODU3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw3ICszNTMsNyBAQCBEcmFnT3BlcmF0
aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25GCiB7CiAgICAgQVNTRVJUKGRyYWdEYXRhKTsK
ICAgICBEb2N1bWVudCogZG9jID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnRBdFBvaW50
KGRyYWdEYXRhLT5jbGllbnRQb3NpdGlvbigpKTsKLSAgICBpZiAoZG9jICYmIChtX2RpZEluaXRp
YXRlRHJhZyB8fCBkb2MtPmlzUGx1Z2luRG9jdW1lbnQoKSB8fCAoZG9jLT5mcmFtZSgpICYmIGRv
Yy0+ZnJhbWUoKS0+ZWRpdG9yKCktPmNsaWVudElzRWRpdGFibGUoKSkpKQorICAgIGlmIChkb2Mg
JiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpIHx8IGRvYy0+
aW5EZXNpZ25Nb2RlKCkpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJhdGlvbk5vbmU7CiAgICAg
cmV0dXJuIGRyYWdPcGVyYXRpb24oZHJhZ0RhdGEpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9FZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Vk
aXRvckNsaWVudC5oCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRWRp
dG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDggKzg3LDYgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpID0gMDsKICAgICB2aXJ0dWFsIGludCBzcGVs
bENoZWNrZXJEb2N1bWVudFRhZygpID0gMDsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0
YWJsZSgpID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2Uq
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKSA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUxLDEzICs1NTEsNiBAQCB2b2lk
IEZyYW1lOjppbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPCiAgICAgfQogfQogCi1ib29sIEZy
YW1lOjppc0NvbnRlbnRFZGl0YWJsZSgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fZWRpdG9yLmNsaWVu
dElzRWRpdGFibGUoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fZG9jLT5p
bkRlc2lnbk1vZGUoKTsKLX0KLQogI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBIYXNoU2V0PEZyYW1l
Kj4mIGtlZXBBbGl2ZVNldCgpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCShyZXZpc2lvbiA3OTg1
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTgy
LDggKzE4Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRHJhZ0ltYWdlUmVmIG5v
ZGVJbWFnZShOb2RlKik7CiAgICAgICAgIERyYWdJbWFnZVJlZiBkcmFnSW1hZ2VGb3JTZWxlY3Rp
b24oKTsKIAotICAgICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCkgY29uc3Q7IC8vIGlmIHRy
dWUsIGV2ZXJ5dGhpbmcgaW4gZnJhbWUgaXMgZWRpdGFibGUKLQogICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQp
OwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnRBdFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5k
b3dQb2ludCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTg1
NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMjggIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUg
dGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlIGFuZCBpdHMgZGVwZW5kZW5j
aWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQy
OTIKKworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRlIGltcGxlbWVudGF0aW9uLgorCisg
ICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAqIHNyYy9FZGl0b3JD
bGllbnRJbXBsLmg6CisKIDIwMTEtMDItMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHJldmlz
aW9uIDc5ODU3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NywxMSArMTg3LDYgQEAgaW50IEVkaXRvckNsaWVu
dEltcGw6OnNwZWxsQ2hlY2tlckRvY3VtZQogICAgIHJldHVybiAwOwogfQogCi1ib29sIEVkaXRv
ckNsaWVudEltcGw6OmlzRWRpdGFibGUoKQotewotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9v
bCBFZGl0b3JDbGllbnRJbXBsOjpzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqIHJhbmdlKQogewog
ICAgIGlmIChtX3dlYlZpZXctPmNsaWVudCgpKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDcgKzU5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVja2lu
Z0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7CiAg
ICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNFZGl0YWJsZSgpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2Vi
Q29yZTo6UmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJDb3Jl
OjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5v
ZGUqLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAyLTI4ICBDaGFu
ZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjppc0NvbnRlbnRF
ZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRoZSBXZWJLaXQg
c2lkZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEVmbC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmg6
CisKIDIwMTEtMDItMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkocmV2aXNp
b24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUsMTIgKzE0NSw2IEBAIHZvaWQgRWRpdG9y
Q2xpZW50RWZsOjpkaWRTZXRTZWxlY3Rpb25UeXAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Ci1ib29sIEVkaXRvckNsaWVudEVmbDo6aXNFZGl0YWJsZSgpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdp
c3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxFZGl0Q29tbWFuZD4pCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw4ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1h
ckNoZWNraW5nKCk7CiAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7Ci0KICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQmVnaW5FZGl0aW5nKFJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRp
bmcoUmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiwgUmFu
Z2UqLCBFZGl0b3JJbnNlcnRBY3Rpb24pOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24g
Nzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAxMS0wMi0yOCAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0
aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUgYW5kIGl0cyBkZXBlbmRlbmNp
ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5
MgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uIE1ha2Ug
V2ViS2l0IHN1cHBvcnQgZGVwZW5kIG9uIERvY3VtZW50OjppbkRlc2lnbk1vZGUuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19nZXRfZWRpdGFibGUpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9l
ZGl0YWJsZSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmg6CisKIDIw
MTEtMDItMjYgIEx1a2FzeiBTbGFjaGNpYWsgIDxsLnNsYWNoY2lha0BzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDc5
ODU3KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3Rr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDExICs0ODEsNiBAQCB2b2lkIEVkaXRvckNsaWVu
dDo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9v
bCBFZGl0b3JDbGllbnQ6OmlzRWRpdGFibGUoKQotewotICAgIHJldHVybiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2VkaXRhYmxlKG1fd2ViVmlldyk7Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWdp
c3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4g
Y29tbWFuZCkKIHsKICAgICBpZiAodW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNr
RGVwdGgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRHdGsuaAkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODcsOCAr
ODcsNiBAQCBjbGFzcyBFZGl0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6RWRpCiAgICAgICAg
IHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAgICAgICAgdmlydHVhbCBp
bnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNF
ZGl0YWJsZSgpOwotCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2Vi
Q29yZTo6UmFuZ2UqKTsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoV2Vi
Q29yZTo6UmFuZ2UqKTsKICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5vZGUoV2Vi
Q29yZTo6Tm9kZSosIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9u
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJl
dmlzaW9uIDc5ODU3KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTQ1LDcgKzM1NDUsNiBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXCiAgICAgZ3RrX3dpZGdldF9zZXRfY2FuX2ZvY3VzKEdU
S19XSURHRVQod2ViVmlldyksIFRSVUUpOwogICAgIHByaXYtPm1haW5GcmFtZSA9IFdFQktJVF9X
RUJfRlJBTUUod2Via2l0X3dlYl9mcmFtZV9uZXcod2ViVmlldykpOwogICAgIHByaXYtPmxhc3RQ
b3B1cFhQb3NpdGlvbiA9IHByaXYtPmxhc3RQb3B1cFlQb3NpdGlvbiA9IC0xOwotICAgIHByaXYt
PmVkaXRhYmxlID0gZmFsc2U7CiAKICAgICBwcml2LT5iYWNrRm9yd2FyZExpc3QgPSBhZG9wdEdS
ZWYod2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9uZXdfd2l0aF93ZWJfdmlldyh3ZWJWaWV3
KSk7CiAKQEAgLTQzMzksOSArNDMzOCw4IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19nZXRf
ZWRpdGFibGUoV2UKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJ
RVcod2ViVmlldyksIEZBTFNFKTsKIAotICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0g
d2ViVmlldy0+cHJpdjsKLQotICAgIHJldHVybiBwcml2LT5lZGl0YWJsZTsKKyAgICBGcmFtZSog
ZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKKyAgICByZXR1cm4gZnJhbWUgJiYg
ZnJhbWUtPmRvY3VtZW50KCktPmluRGVzaWduTW9kZSgpOwogfQogCiAvKioKQEAgLTQzNjYsMTcg
KzQzNjQsMTUgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X2VkaXRhYmxlKFdlYktpdAogewog
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKIAotICAg
IFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKLQogICAgIEZyYW1l
KiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOwogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoZnJhbWUpOwogCiAgICAgLy8gVE9ETzogV2hhdCBoYXBwZW5zIHdoZW4gdGhlIGZyYW1lIGlz
IHJlcGxhY2VkPwogICAgIGZsYWcgPSBmbGFnICE9IEZBTFNFOwotICAgIGlmIChmbGFnID09IHBy
aXYtPmVkaXRhYmxlKQorICAgIGlmIChmbGFnID09IHdlYmtpdF93ZWJfdmlld19nZXRfZWRpdGFi
bGUod2ViVmlldykpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByaXYtPmVkaXRhYmxlID0gZmxh
ZzsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVzaWduTW9kZShmbGFnID8gV2ViQ29yZTo6
RG9jdW1lbnQ6Om9uIDogV2ViQ29yZTo6RG9jdW1lbnQ6Om9mZik7CiAKICAgICBpZiAoZmxhZykg
ewogICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVu
dCgpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdw
cml2YXRlLmgJKHJldmlzaW9uIDc5ODU3KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXdwcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDYgQEAgc3Ry
dWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgZ2ludCBsYXN0UG9wdXBZUG9zaXRpb247
CiAKICAgICBIYXNoU2V0PEd0a1dpZGdldCo+IGNoaWxkcmVuOwotICAgIGJvb2wgZWRpdGFibGU7
CiAgICAgR1JlZlB0cjxHdGtJTUNvbnRleHQ+IGltQ29udGV4dDsKIAogICAgIGdib29sZWFuIHRy
YW5zcGFyZW50OwpJbmRleDogU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5ODU3KQorKysg
U291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMS0wMi0yOCAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9y
dCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAg
ICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRIYWlrdS5jcHA6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaDoKKwogMjAxMS0wMi0xNyAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50SGFpa3UuY3BwCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJjZS9XZWJLaXQvaGFp
a3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTMsMTIgKzExMyw2IEBAIGludCBFZGl0b3JDbGllbnRIYWlrdTo6c3BlbGxDaGVja2VyRG9j
dW0KICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBFZGl0b3JDbGllbnRIYWlrdTo6aXNFZGl0YWJs
ZSgpCi17Ci0gICAgLy8gRklYTUU6IHNob3VsZCBiZSBjb250cm9sbGFibGUKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIGJvb2wgRWRpdG9yQ2xpZW50SGFpa3U6OnNob3VsZEJlZ2luRWRpdGluZyhX
ZWJDb3JlOjpSYW5nZSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50SGFpa3UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEhhaWt1
LmgJKHJldmlzaW9uIDc5ODU3KQorKysgU291cmNlL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRIYWlrdS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw2IEBAIGNs
YXNzIEVkaXRvckNsaWVudEhhaWt1IDogcHVibGljIEVkaXRvckMKICAgICAgICAgdmlydHVhbCB2
b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwogICAgICAgICB2aXJ0dWFsIGludCBzcGVsbENo
ZWNrZXJEb2N1bWVudFRhZygpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7
Ci0KICAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopOwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiwgUmFuZ2UqLCBFZGl0b3JJbnNlcnRBY3Rp
b24pOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0w
Mi0yOCAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6
aXNDb250ZW50RWRpdGFibGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0
aGUgV2ViS2l0IHNpZGUgaW1wbGVtZW50YXRpb24uIE1ha2UgV2ViS2l0IHN1cHBvcnQgZGVwZW5k
IG9uIERvY3VtZW50OjppbkRlc2lnbk1vZGUuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IHNldEVkaXRhYmxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzRWRpdGFibGVdKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisKIDIwMTEtMDItMjYgIFZzZXZvbG9kIFZsYXNv
diAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVs
ZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1
MSw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVk
KCk7Ci0gICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREZWxldGVSYW5nZShXZWJDb3JlOjpSYW5nZSopOyAgICAKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZShXZWJDb3JlOjpIVE1MRWxlbWVudCopOwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbQkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0NiwxMSArMjQ2LDYgQEAg
aW50IFdlYkVkaXRvckNsaWVudDo6c3BlbGxDaGVja2VyRG9jdW1lbgogICAgIHJldHVybiBbbV93
ZWJWaWV3IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnXTsKIH0KIAotYm9vbCBXZWJFZGl0b3JDbGll
bnQ6OmlzRWRpdGFibGUoKQotewotICAgIHJldHVybiBbbV93ZWJWaWV3IGlzRWRpdGFibGVdOwot
fQotCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqIHJhbmdl
KQogewogICAgIHJldHVybiBbW21fd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVyXSB3
ZWJWaWV3Om1fd2ViVmlldwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
cmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQ5ODgsMTIgKzQ5ODgsMTIgQEAgLSAoTlNTZWxlY3Rpb25BZmZp
bml0eSlzZWxlY3Rpb25BZmZpbml0eQogCiAtICh2b2lkKXNldEVkaXRhYmxlOihCT09MKWZsYWcK
IHsKLSAgICBpZiAoX3ByaXZhdGUtPmVkaXRhYmxlICE9IGZsYWcpIHsKLSAgICAgICAgX3ByaXZh
dGUtPmVkaXRhYmxlID0gZmxhZzsKKyAgICBpZiAoW3NlbGYgaXNFZGl0YWJsZV0gIT0gZmxhZykg
ewogICAgICAgICBpZiAoIV9wcml2YXRlLT50YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHNDaGFu
Z2VkICYmIF9wcml2YXRlLT5wYWdlKQogICAgICAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldFRh
YktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyghZmxhZyk7CiAgICAgICAgIEZyYW1lKiBtYWluRnJh
bWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07CiAgICAgICAgIGlmIChtYWluRnJhbWUpIHsKKyAg
ICAgICAgICAgIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVzaWduTW9kZShmbGFnID8gV2Vi
Q29yZTo6RG9jdW1lbnQ6Om9uIDogV2ViQ29yZTo6RG9jdW1lbnQ6Om9mZik7CiAgICAgICAgICAg
ICBpZiAoZmxhZykgewogICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZWRpdG9yKCktPmFwcGx5
RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBX
ZWJWaWV3IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHksIHNldCBp
dCB0byBzb21ldGhpbmcuCkBAIC01MDA2LDcgKzUwMDYsMTAgQEAgLSAodm9pZClzZXRFZGl0YWJs
ZTooQk9PTClmbGFnCiAKIC0gKEJPT0wpaXNFZGl0YWJsZQogewotICAgIHJldHVybiBfcHJpdmF0
ZS0+ZWRpdGFibGU7CisgICAgRnJhbWUqIG1haW5GcmFtZSA9IFtzZWxmIF9tYWluQ29yZUZyYW1l
XTsKKyAgICBpZiAobWFpbkZyYW1lKQorICAgICAgICByZXR1cm4gbWFpbkZyYW1lLT5kb2N1bWVu
dCgpLT5pbkRlc2lnbk1vZGUoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIC0gKHZvaWQpc2V0
VHlwaW5nU3R5bGU6KERPTUNTU1N0eWxlRGVjbGFyYXRpb24gKilzdHlsZQpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAkocmV2aXNpb24gNzk4NTcpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
NSw3ICsxMDUsNiBAQCBAaW50ZXJmYWNlIFdlYlZpZXdQcml2YXRlIDogTlNPYmplY3QgewogICAg
IEJPT0wgc2hvdWxkQ2xvc2VXaXRoV2luZG93OwogICAgIEJPT0wgbWFpbkZyYW1lRG9jdW1lbnRS
ZWFkeTsKICAgICBCT09MIGRyYXdzQmFja2dyb3VuZDsKLSAgICBCT09MIGVkaXRhYmxlOwogICAg
IEJPT0wgdGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2hhbmdlZDsKICAgICBCT09MIGJlY29t
aW5nRmlyc3RSZXNwb25kZXI7CiAgICAgQk9PTCBiZWNvbWluZ0ZpcnN0UmVzcG9uZGVyRnJvbU91
dHNpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDExLTAy
LTI4ICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRoZSBzdXBwb3J0IG9mIEZyYW1lOjpp
c0NvbnRlbnRFZGl0YWJsZSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MjkyCisKKyAgICAgICAgUmVtb3ZlIHRo
ZSBXZWJLaXQgc2lkZSBpbXBsZW1lbnRhdGlvbi4gTWFrZSBXZWJLaXQgc3VwcG9ydCBkZXBlbmQg
b24gRG9jdW1lbnQ6OmluRGVzaWduTW9kZS4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChR
V2ViUGFnZTo6c2V0Q29udGVudEVkaXRhYmxlKToKKyAgICAgICAgKFFXZWJQYWdlOjppc0NvbnRl
bnRFZGl0YWJsZSk6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuaDoKKwogMjAxMS0wMi0yOCAgS3Jpc3RpYW4gQW1saWUgIDxrcmlzdGlh
bi5hbWxpZUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDc5ODU3KQorKysgU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNyAr
MzAxLDYgQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUoUVdlYlBhZwogICAgICwg
Y3VycmVudENvbnRleHRNZW51KDApCiAjZW5kaWYKICAgICAsIHNldHRpbmdzKDApCi0gICAgLCBl
ZGl0YWJsZShmYWxzZSkKICAgICAsIHVzZUZpeGVkTGF5b3V0KGZhbHNlKQogICAgICwgcGx1Z2lu
RmFjdG9yeSgwKQogICAgICwgaW5zcGVjdG9yRnJvbnRlbmQoMCkKQEAgLTMxNjAsMTEgKzMxNTks
MTEgQEAgYm9vbCBRV2ViUGFnZTo6Zm9jdXNOZXh0UHJldkNoaWxkKGJvb2wgbgogKi8KIHZvaWQg
UVdlYlBhZ2U6OnNldENvbnRlbnRFZGl0YWJsZShib29sIGVkaXRhYmxlKQogewotICAgIGlmIChk
LT5lZGl0YWJsZSAhPSBlZGl0YWJsZSkgewotICAgICAgICBkLT5lZGl0YWJsZSA9IGVkaXRhYmxl
OworICAgIGlmIChpc0NvbnRlbnRFZGl0YWJsZSgpICE9IGVkaXRhYmxlKSB7CiAgICAgICAgIGQt
PnBhZ2UtPnNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyghZWRpdGFibGUpOwogICAgICAg
ICBpZiAoZC0+bWFpbkZyYW1lKSB7CiAgICAgICAgICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUg
PSBkLT5tYWluRnJhbWUtPmQtPmZyYW1lOworICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PnNldERlc2lnbk1vZGUoZWRpdGFibGUgPyBXZWJDb3JlOjpEb2N1bWVudDo6b24gOiBXZWJDb3Jl
OjpEb2N1bWVudDo6b2ZmKTsKICAgICAgICAgICAgIGlmIChlZGl0YWJsZSkgewogICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7
CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1hYyBwb3J0IGNhbGxzIHRoaXMgaWYgdGhlcmUg
aXMgbm8gc2VsZWN0ZWRET01SYW5nZQpAQCAtMzE3OCw3ICszMTc3LDcgQEAgdm9pZCBRV2ViUGFn
ZTo6c2V0Q29udGVudEVkaXRhYmxlKGJvb2wgZQogCiBib29sIFFXZWJQYWdlOjppc0NvbnRlbnRF
ZGl0YWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPmVkaXRhYmxlOworICAgIHJldHVybiBk
LT5tYWluRnJhbWUgJiYgZC0+bWFpbkZyYW1lLT5kLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNp
Z25Nb2RlKCk7CiB9CiAKIC8qIQpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Vf
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkocmV2
aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwMCw3ICsyMDAsNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICBRV2ViU2V0
dGluZ3MgKnNldHRpbmdzOwogICAgIFFQYWxldHRlIHBhbGV0dGU7Ci0gICAgYm9vbCBlZGl0YWJs
ZTsKICAgICBib29sIHVzZUZpeGVkTGF5b3V0OwogCiAgICAgUUFjdGlvbiAqYWN0aW9uc1tRV2Vi
UGFnZTo6V2ViQWN0aW9uQ291bnRdOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHJldmlzaW9uIDc5ODU3KQorKysgU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzOCwxMSArMjM4LDYgQEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29y
ZEJlZm9yZU1lbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBFZGl0b3JDbGllbnRRdDo6
aXNFZGl0YWJsZSgpCi17IAotICAgIHJldHVybiBtX3BhZ2UtPmlzQ29udGVudEVkaXRhYmxlKCk7
Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPiBjbWQpCiB7CiAjaWZuZGVmIFFUX05PX1VO
RE9TVEFDSwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuaAkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDcgKzU3LDYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKICAg
ICB2aXJ0dWFsIGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOwogICAgIHZpcnR1YWwgYm9v
bCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7Ci0gICAgdmlydHVhbCBib29sIGlzRWRpdGFi
bGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopOwpJbmRleDogU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yOCAgQ2hhbmcgU2h1ICA8Y3No
dUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRpdGFibGUgYW5k
IGl0cyBkZXBlbmRlbmNpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFJlbW92ZSB0aGUgV2ViS2l0IHNpZGUgaW1wbGVt
ZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorCiAyMDExLTAy
LTI2ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDc5ODU3KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjI5LDExICs2MjksNiBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6
aGFuZGxlSW5wdXRNZXRob2RLCiB7CiB9CiAKLWJvb2wgV2ViRWRpdG9yQ2xpZW50Ojppc0VkaXRh
YmxlKCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpp
Z25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYgd29yZCkKIHsKICAgICBDT01Q
dHI8SVdlYkVkaXRpbmdEZWxlZ2F0ZT4gZWQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gNzk4NTcpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTAsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRv
Z2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7CiAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWcoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7Ci0KICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OlJhbmdlKik7CiAgICAg
dmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKTsKICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBXVEY6OlN0cmluZyYsIFdlYkNvcmU6OlJh
bmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdl
TG9nCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMjggIENoYW5nIFNodSAgPGNz
aHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRhYmxlIGFu
ZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRlIGltcGxl
bWVudGF0aW9uLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50V2luQ0Uu
Y3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmg6CisKIDIw
MTEtMDItMTkgIENoYXJsaWUgUmVpcyAgPGNyZWlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmNwcAkocmV2aXNp
b24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDEyICsxNDQsNiBAQCB2b2lkIEVk
aXRvckNsaWVudFdpbkNFOjpkaWRTZXRTZWxlY3Rpb25UCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAotYm9vbCBFZGl0b3JDbGllbnRXaW5DRTo6aXNFZGl0YWJsZSgpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgRWRpdG9yQ2xpZW50V2lu
Q0U6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRD
b21tYW5kPiBjb21tYW5kKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFdpbkNFLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRXaW5D
RS5oCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwogICAgIHZp
cnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNFZGl0YWJsZSgpOwotCiAgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJD
b3JlOjpSYW5nZSopOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6
OlJhbmdlKik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9k
ZSosIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA3OTg1NykKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDItMjggIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgdGhlIHN1cHBvcnQgb2YgRnJhbWU6OmlzQ29udGVudEVkaXRh
YmxlIGFuZCBpdHMgZGVwZW5kZW5jaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTQyOTIKKworICAgICAgICBSZW1vdmUgdGhlIFdlYktpdCBzaWRl
IGltcGxlbWVudGF0aW9uLiBNYWtlIFdlYktpdCBzdXBwb3J0IGRlcGVuZCBvbiBEb2N1bWVudDo6
aW5EZXNpZ25Nb2RlLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAod3hXZWJG
cmFtZTo6d3hXZWJGcmFtZSk6CisgICAgICAgICh3eFdlYkZyYW1lOjpNYWtlRWRpdGFibGUpOgor
ICAgICAgICAod3hXZWJGcmFtZTo6SXNFZGl0YWJsZSk6CisgICAgICAgICogV2ViRnJhbWUuaDoK
KyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcDoKKyAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4Lmg6CisgICAgICAgICogV2ViVmlldy5jcHA6Cisg
ICAgICAgICh3eFdlYlZpZXc6Ond4V2ViVmlldyk6CisgICAgICAgICogV2ViVmlldy5oOgorCiAy
MDExLTAyLTI0ICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCShyZXZp
c2lvbiA3OTg1NykKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw3ICs3Nyw2IEBACiAKIHd4V2ViRnJhbWU6Ond4V2ViRnJhbWUod3hXZWJWaWV3
KiBjb250YWluZXIsIHd4V2ViRnJhbWUqIHBhcmVudCwgV2ViVmlld0ZyYW1lRGF0YSogZGF0YSkg
OgogICAgIG1fdGV4dE1hZ25pZmllcigxLjApLAotICAgIG1faXNFZGl0YWJsZShmYWxzZSksCiAg
ICAgbV9pc0luaXRpYWxpemVkKGZhbHNlKSwKICAgICBtX2JlaW5nRGVzdHJveWVkKGZhbHNlKQog
ewpAQCAtNDAzLDEwICs0MDIsMTYgQEAgdm9pZCB3eFdlYkZyYW1lOjpSZXNldFRleHRTaXplKCkK
IAogdm9pZCB3eFdlYkZyYW1lOjpNYWtlRWRpdGFibGUoYm9vbCBlbmFibGUpCiB7Ci0gICAgbV9p
c0VkaXRhYmxlID0gZW5hYmxlOworICAgIGlmIChlbmFibGUgIT0gSXNFZGl0YWJsZSgpICYmIG1f
aW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgbV9pbXBs
LT5mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVzaWduTW9kZShlbmFibGUgPyBXZWJDb3JlOjpEb2N1
bWVudDo6b24gOiBXZWJDb3JlOjpEb2N1bWVudDo6b2ZmKTsKIH0KIAotCitib29sIHd4V2ViRnJh
bWU6OklzRWRpdGFibGUoKQoreworICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJh
bWUtPmRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgp
LT5pbkRlc2lnbk1vZGUoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKIGJvb2wgd3hXZWJGcmFt
ZTo6Q2FuQ29weSgpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5oCShyZXZpc2lvbiA3OTg1NykKKysr
IFNvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDcgKzE1
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIERlY3JlYXNlVGV4dFNpemUoKTsKICAgICB2b2lkIFJl
c2V0VGV4dFNpemUoKTsKICAgICB2b2lkIE1ha2VFZGl0YWJsZShib29sIGVuYWJsZSk7Ci0gICAg
Ym9vbCBJc0VkaXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc0VkaXRhYmxlOyB9CisgICAgYm9v
bCBJc0VkaXRhYmxlKCkgY29uc3Q7CiAgICAgCiAgICAgV2ViQ29yZTo6RnJhbWUqIEdldEZyYW1l
KCk7CiAKQEAgLTE3Myw3ICsxNzMsNiBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIGZs
b2F0IG1fdGV4dE1hZ25pZmllcjsKLSAgICBib29sIG1faXNFZGl0YWJsZTsKICAgICBib29sIG1f
aXNJbml0aWFsaXplZDsKICAgICBib29sIG1fYmVpbmdEZXN0cm95ZWQ7CiAgICAgV2ViRnJhbWVQ
cml2YXRlKiBtX2ltcGw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViVmlldy5jcHAJKHJldmlzaW9uIDc5ODU3KQor
KysgU291cmNlL1dlYktpdC93eC9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDcg
KzMyNyw2IEBAIGNvbnN0IHd4Q2hhciogd3hXZWJWaWV3TmFtZVN0ciA9IHd4VCgid2UKIAogd3hX
ZWJWaWV3Ojp3eFdlYlZpZXcoKSA6CiAgICAgbV90ZXh0TWFnbmlmaWVyKDEuMCksCi0gICAgbV9p
c0VkaXRhYmxlKGZhbHNlKSwKICAgICBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpLAogICAgIG1fYmVp
bmdEZXN0cm95ZWQoZmFsc2UpLAogICAgIG1fbW91c2VXaGVlbFpvb21zKGZhbHNlKSwKQEAgLTMz
OCw3ICszMzcsNiBAQCB3eFdlYlZpZXc6Ond4V2ViVmlldygpIDoKIHd4V2ViVmlldzo6d3hXZWJW
aWV3KHd4V2luZG93KiBwYXJlbnQsIGludCBpZCwgY29uc3Qgd3hQb2ludCYgcG9zaXRpb24sIAog
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3hTaXplJiBzaXplLCBsb25nIHN0eWxlLCBjb25z
dCB3eFN0cmluZyYgbmFtZSkgOgogICAgIG1fdGV4dE1hZ25pZmllcigxLjApLAotICAgIG1faXNF
ZGl0YWJsZShmYWxzZSksCiAgICAgbV9pc0luaXRpYWxpemVkKGZhbHNlKSwKICAgICBtX2JlaW5n
RGVzdHJveWVkKGZhbHNlKSwKICAgICBtX21vdXNlV2hlZWxab29tcyhmYWxzZSksCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4
L1dlYlZpZXcuaAkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYlZpZXcu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDcgKzI0OSw2IEBAIHByaXZhdGU6CiAgICAgREVDTEFS
RV9EWU5BTUlDX0NMQVNTKHd4V2ViVmlldykKICNlbmRpZgogICAgIGZsb2F0IG1fdGV4dE1hZ25p
ZmllcjsKLSAgICBib29sIG1faXNFZGl0YWJsZTsKICAgICBib29sIG1faXNJbml0aWFsaXplZDsK
ICAgICBib29sIG1fYmVpbmdEZXN0cm95ZWQ7CiAgICAgYm9vbCBtX21vdXNlV2hlZWxab29tczsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVu
dFd4LmNwcAkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsMTggKzE5Nyw2IEBA
IGJvb2wgRWRpdG9yQ2xpZW50V3g6OnNlbGVjdFdvcmRCZWZvcmVNZW4KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgRWRpdG9yQ2xpZW50V3g6OmlzRWRpdGFibGUoKQotewotICAgIEZyYW1l
KiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
OwotCi0gICAgaWYgKGZyYW1lKSB7Ci0gICAgICAgIHd4V2ViVmlldyogd2ViS2l0V2luID0gZHlu
YW1pY19jYXN0PHd4V2ViVmlldyo+KGZyYW1lLT52aWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZv
cm1QYWdlQ2xpZW50KCkpOwotICAgICAgICBpZiAod2ViS2l0V2luKSAKLSAgICAgICAgICAgIHJl
dHVybiB3ZWJLaXRXaW4tPklzRWRpdGFibGUoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiBib29sIEVkaXRvckNsaWVudFd4OjpzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvRWRpdG9yQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAkocmV2aXNpb24gNzk4NTcpCisrKyBTb3VyY2UvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAt
NTcsNyArNTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1l
bnRUYWcoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7
Ci0gICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGlu
ZyhSYW5nZSopOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzk4NTcpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yOCAgQ2hhbmcg
U2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgc3VwcG9ydCBvZiBGcmFtZTo6aXNDb250ZW50RWRp
dGFibGUgYW5kIGl0cyBkZXBlbmRlbmNpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01NDI5MgorCisgICAgICAgIFVwZGF0ZWQgZXhwZWN0ZWQgcmVz
dWx0cyBhZnRlciB0aGUgY2hhbmdlIHRoYXQgc3luY3MgdGhlIFdlYktpdCBpc0VkaXRhYmxlCisg
ICAgICAgIGFuZCBXZWJDb3JlIGlzQ29udGVudEVkaXRhYmxlLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2Rlc2lnbm1vZGUtbm8tY2FyZXQtZXhwZWN0ZWQudHh0
OgorCiAyMDExLTAyLTI4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIE5vdCByZXZpZXdlZDogdXBkYXRlZCBpbnNwZWN0b3IgdGVzdCBoYXJuZXNzIGFu
ZCBjaHJvbWl1bSBleHBlY3RhdGlvbnMuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9zZWxlY3Rpb24vZGVzaWdubW9kZS1uby1jYXJldC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2Rlc2ln
bm1vZGUtbm8tY2FyZXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3OTg1NykKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9kZXNpZ25tb2RlLW5vLWNhcmV0LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDExIEBAIGxheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAogICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6
ZSA3ODR4NTQKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzg0eDU0
CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzU5OiAiVGhpcyB0ZXN0cyB0byBz
ZWUgdGhhdCBhIGNhcmV0IGlzIHBsYWNlZCBpbnNpZGUgYW4gZWRpdGFibGUgZG9jdW1lbnQgdGhh
dCBpcyBlbnRpcmVseSBlZGl0YWJsZSBldmVuIHdoZW4gbm8gY2FyZXQgaXMgcmVxdWVzdGVkIgor
ICAgICAgICAgIHRleHQgcnVuIGF0ICg3NTksMCkgd2lkdGggNDogIiAiCiAgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMTgpIHdpZHRoIDExODogInByb2dyYW1tYXRpY2FsbHkuICIKICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMTE4LDE4KSB3aWR0aCAxODc6ICJXZSBkbyB0aGlzIGFzIGEgY29udmVu
aWVuY2UuICIKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzA1LDE4KSB3aWR0aCA0Nzk6ICJSaWdo
dCBub3csIHdlIG9ubHkgZG8gdGhpcyBjb252ZW5pZW5jZSB3aGVuIGEgZG9jdW1lbnQncyBmcmFt
ZSBiZWNvbWVzIgorICAgICAgICAgIHRleHQgcnVuIGF0ICg3ODQsMTgpIHdpZHRoIDA6ICIgIgog
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM2KSB3aWR0aCAzNzg6ICJmaXJzdCByZXNwb25kZXIg
b3Igd2hlbiBhIGRvY3VtZW50J3Mgd2luZG93IGJlY29tZXMga2V5LiIKICAgICAgIFJlbmRlckJs
b2NrIHtQUkV9IGF0ICgwLDY3KSBzaXplIDc4NHgxNQogICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSA4OHgxNQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>