<?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>16135</bug_id>
          
          <creation_ts>2007-11-25 15:08:00 -0800</creation_ts>
          <short_desc>[GTK] Support caret browsing</short_desc>
          <delta_ts>2010-02-25 05:44:20 -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>Accessibility</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>15310</dependson>
          <blocked>25531</blocked>
    
    <blocked>25415</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alp Toker">alp</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>a9016009</cc>
    
    <cc>ap</cc>
    
    <cc>david.bolter</cc>
    
    <cc>elle.uca</cc>
    
    <cc>emacemac7</cc>
    
    <cc>gustavo</cc>
    
    <cc>jdiggs</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>walker.willie</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>62324</commentid>
    <comment_count>0</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-11-25 15:08:00 -0800</bug_when>
    <thetext>Caret browsing is an accessibility feature that allows in-page navigation similar to content editable, displaying an insertion caret which can be moved with the arrow keys. However, the content is not actually editable, and when the caret is in a hyperlink, the hyperlink gets a focus ring and hitting enter causes it to get activated.

This is enabled in Firefox by hitting F7, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63233</commentid>
    <comment_count>1</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2007-12-04 06:19:08 -0800</bug_when>
    <thetext>GtkTextView also supports a caret mode:

  http://library.gnome.org/devel/gtk/2.12/GtkTextView.html

&lt;snip&gt;

gtk_text_view_set_cursor_visible ()

void                gtk_text_view_set_cursor_visible    (GtkTextView *text_view,
                                                         gboolean setting);

Toggles whether the insertion point is displayed. A buffer with no editable text probably shouldn&apos;t have a visible cursor, so you may want to turn the cursor off.

&lt;/snip&gt;

This should probably be the inspiration for the API we choose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92654</commentid>
    <comment_count>2</comment_count>
      <attachid>23778</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-09-24 19:05:58 -0700</bug_when>
    <thetext>Created attachment 23778
Caret navigation (proof of concept)

This patch enables navigation using a blinking caret without interfering with other editing capabilities. What needs work:

1) Make this into a configurable web setting for WebSettings/WebPreferences instead of hijacking AXObjectCache::enableEnhancedUserInterfaceAccessibility() (which we may later be able to obsolete depending on Mac a11y requirements).

2) Focus elements when they&apos;re entered.

3) Caret sometimes get &apos;trapped&apos; in a node. Should integrate more closely with SelectionController/FocusController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97992</commentid>
    <comment_count>3</comment_count>
      <attachid>24982</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-11-07 19:32:00 -0800</bug_when>
    <thetext>Created attachment 24982
WIP caret navigation support

This patch is against WebKit r38232 (but should apply to later revisions).

To try it out:

$ WEBKIT_CARET=1 Programs/GtkLauncher

There are some caret browsing changes in this patch that it will probably make sense to enable in the non-caret-browsing mode too rather than making them conditional.

Known issues:

1) Caret sometimes gets stuck and needs a tab or up/down to get going again.
2) Patch breaks focusing into a WebView by tabbing; easy to fix.

It&apos;s worth doing a search in the bug tracker for &apos;caret&apos; since issues like (1) have often already been noticed and reported by users of WebKit&apos;s HTML-editing mode which shares code with the feature in this patch.

The code is portable and should work in other WebKit ports (Mac, Win, Qt, Wx, Chrome) but it may depend on some recent focus changes that are currently only in the GTK+ port that the other ports may need to pick up if they want to switch on this feature. It may also require modifications to the EditorClient in those ports to work correctly.

I could do with feedback from

1) WebKit developers familiar with the focus and editing code. Are we on the right track here?
2) People who use or are familiar with caret browsing in Mozilla. Does this do what you need? What&apos;s missing and what could work better?
3) Other port maintainers. Does this Setting work in your WebKit port?

Cheers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100626</commentid>
    <comment_count>4</comment_count>
    <who name="Luca Ferretti">elle.uca</who>
    <bug_when>2008-11-28 13:25:22 -0800</bug_when>
    <thetext>Just a couple of links.

Mozilla Keyboard Navigation
http://www.mozilla.org/access/keyboard/proposal

GNOME Caret Navigation Mode
http://library.gnome.org/users/gnome-access-guide/stable/keynav-52.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107033</commentid>
    <comment_count>5</comment_count>
      <attachid>27035</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-01-26 07:53:56 -0800</bug_when>
    <thetext>Created attachment 27035
0001-Update-alp-s-patch-to-trunk.patch

Updated Alp&apos;s patch to trunk, as some the code and some assumptions had been changed in trunk. I&apos;ve also removed all &apos;bool caretBrowsing = true;&apos; hardcodings, and try to check the setting everywhere.

Other than that the same bugs and way of testing he mentions still apply, and it would still be nice to get some feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107180</commentid>
    <comment_count>6</comment_count>
      <attachid>27073</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-01-27 06:15:18 -0800</bug_when>
    <thetext>Created attachment 27073
Caret browsing v3

I started refactoring the code in EditorClientGTK to handle properly events with caret browsing (most keys but up/down/left/right would not work in caret mode, for example), and halfway through realized I was basically getting to do what was already done in the Windows port. So I took that code and modified it to handle differently up/down/left/right keys in caret mode instead.

With this the keys works as expected in both caret and non-caret mode, and I haven&apos;t been able to reproduce the &quot;getting stuck in a node&quot; bug either (but I couldn&apos;t say if it&apos;s gone for good).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107188</commentid>
    <comment_count>7</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-01-27 08:38:19 -0800</bug_when>
    <thetext>Just for the record, I went through http://www.mozilla.org/access/keyboard/proposal:

- Everything in continuous navigation seems to work OK. We behave as if layout.word_select.eat_space_to_next_word were set to FALSE and layout.word_select.stop_at_punctuation to TRUE (Mozilla says it should be FALSE by default in !Windows)

- Everything in discontinuous navigation seems to work except (Ctrl+)Home/End. Probably those need to be special cased in EditorClient too for CaretBrowsing if we use the current approach.

- Text selection: seems to work in general but it gets &apos;stuck&apos; in some situations.

- Control: in general forms are not auto-focused in caret mode, so it&apos;s a bit hard to test most of the stuff listed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107444</commentid>
    <comment_count>8</comment_count>
      <attachid>27073</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2009-01-28 18:31:10 -0800</bug_when>
    <thetext>Comment on attachment 27073
Caret browsing v3

Xan,

Thanks for picking this up.

I suppose the interpretKeyEvent() brings this in line with the other ports so that&apos;s fair enough.

The g_thread_init () change doesn&apos;t belong in this patch.

I think this is all good as long as it doesn&apos;t change behaviour on other ports. Maybe with a ChangeLog entry we can get this reviewed (I&apos;d best not review my own code!)

Cheers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108416</commentid>
    <comment_count>9</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-02-05 03:34:57 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 27073 [review])
&gt; The g_thread_init () change doesn&apos;t belong in this patch.

Right, it was needed for GtkLauncher to run though. I did it so Sun guys could test it and give feedback (but apparently they never got to it).

&gt; 
&gt; I think this is all good as long as it doesn&apos;t change behaviour on other ports.
&gt; Maybe with a ChangeLog entry we can get this reviewed (I&apos;d best not review my
&gt; own code!)
&gt; 
&gt; Cheers
&gt; 

I tried to be careful to make it so that the new code is never executed if the caret pref is not enabled, so it should be safe. I can add the ChangeLog if you think this could go in already, but there are still some quite important things missing (see previous comments).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>108439</commentid>
    <comment_count>10</comment_count>
    <who name="Willie Walker">walker.willie</who>
    <bug_when>2009-02-05 08:17:13 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 27073 [review] [review])
&gt; &gt; The g_thread_init () change doesn&apos;t belong in this patch.
&gt; 
&gt; Right, it was needed for GtkLauncher to run though. I did it so Sun guys could
&gt; test it and give feedback (but apparently they never got to it).

Hey guys - thanks much for the work on this right now.  Yeah - we&apos;ve been pretty busy working on some nasty problems and haven&apos;t had a chance to look at this yet.

I haven&apos;t yet Google&apos;d for instructions on how to do so, but do you know of anyone who has had success building/using WebKit on OpenSolaris?  If they have tips/tricks/hints, it&apos;d be great to not have to learn them on my own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113200</commentid>
    <comment_count>11</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-03-11 11:00:21 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; (From update of attachment 27073 [review] [review] [review])
&gt; &gt; &gt; The g_thread_init () change doesn&apos;t belong in this patch.
&gt; &gt; 
&gt; &gt; Right, it was needed for GtkLauncher to run though. I did it so Sun guys could
&gt; &gt; test it and give feedback (but apparently they never got to it).
&gt; 
&gt; Hey guys - thanks much for the work on this right now.  Yeah - we&apos;ve been
&gt; pretty busy working on some nasty problems and haven&apos;t had a chance to look at
&gt; this yet.
&gt; 
&gt; I haven&apos;t yet Google&apos;d for instructions on how to do so, but do you know of
&gt; anyone who has had success building/using WebKit on OpenSolaris?  If they have
&gt; tips/tricks/hints, it&apos;d be great to not have to learn them on my own.
&gt; 

Hey, I really have no clue about that, although googling &apos;webkit gtk opensolaris&apos; gives a few hits with people that apparently managed to build it without much trouble.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118257</commentid>
    <comment_count>12</comment_count>
      <attachid>29645</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-21 07:00:35 -0700</bug_when>
    <thetext>Created attachment 29645
basiccaret.patch

Implements basic caret browsing support in WebCore. Most of the code is just adding the setting and enabling the right codepaths (shared with editable mode) when needed. The changes in FocusController are needed for TAB to do the right thing when caret mode is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118258</commentid>
    <comment_count>13</comment_count>
      <attachid>29646</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-21 07:01:05 -0700</bug_when>
    <thetext>Created attachment 29646
gtksetting.patch

Add the caret mode setting to the GTK port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118259</commentid>
    <comment_count>14</comment_count>
      <attachid>29647</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-21 07:01:32 -0700</bug_when>
    <thetext>Created attachment 29647
editorclientkeys.patch

Refactor key event handling in EditorClientGTK to work under caret mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118287</commentid>
    <comment_count>15</comment_count>
      <attachid>29646</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-04-21 10:53:25 -0700</bug_when>
    <thetext>Comment on attachment 29646
gtksetting.patch

Looks correct to me, I understand the first patch needs to go in prior to this one, but r=me when the first one gets reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118302</commentid>
    <comment_count>16</comment_count>
      <attachid>29647</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-04-21 11:32:59 -0700</bug_when>
    <thetext>Comment on attachment 29647
editorclientkeys.patch

&gt; +    if (caretBrowsing) {
&gt; +        switch (keyEvent-&gt;windowsVirtualKeyCode()) {
&gt;              case VK_LEFT:
&gt; -                frame-&gt;selection()-&gt;modify(kevent-&gt;shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
&gt; +                frame-&gt;selection()-&gt;modify(keyEvent-&gt;shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
&gt;                          SelectionController::LEFT,
&gt; -                        kevent-&gt;ctrlKey() ? WordGranularity : CharacterGranularity,
&gt; +                        keyEvent-&gt;ctrlKey() ? WordGranularity : CharacterGranularity,
&gt;                          true);
&gt; -                break;
&gt; +                return true;

There seems to be code very similar to this one here, btw: EventHandler::handleKeyboardSelectionMovement (in WebCore/page/EventHandler.cpp). This code seems to be called Perhaps we are doing some unneeded work?

&gt; +    const PlatformKeyboardEvent* keyEvent = evt-&gt;keyEvent();
&gt; +    if (!keyEvent /*|| keyEvent-&gt;isSystemKey()*/)  // do not treat this as text input if it&apos;s a system key event
&gt; +        return false;

keyEvent-&gt;isSystemKey seems to be something used only by windows? We probably want to remove both comments here.
  
&gt; -    // FIXME: Use GtkBindingSet instead of this hard-coded switch
&gt; -    // http://bugs.webkit.org/show_bug.cgi?id=15911

We are now using GtkBindingSet in the webview, but we will be using the static table for editing? I am still trying to grasp how key handling works, but it seems to me like most things such as home/end/pageup/pagedown should be handled by that code you added to WebView, instead?

&gt; +    // It&apos;s not quite clear whether clipboard shortcuts and Undo/Redo should be handled
&gt; +    // in the application or in WebKit. We chose WebKit.
&gt; +    { &apos;C&apos;,       CtrlKey,            &quot;Copy&quot;                                        },
&gt; +    { &apos;V&apos;,       CtrlKey,            &quot;Paste&quot;                                       },
&gt; +    { &apos;X&apos;,       CtrlKey,            &quot;Cut&quot;                                         },
&gt; +    { &apos;A&apos;,       CtrlKey,            &quot;SelectAll&quot;                                   },
&gt; +    { VK_INSERT, CtrlKey,            &quot;Copy&quot;                                        },
&gt; +    { VK_DELETE, ShiftKey,           &quot;Cut&quot;                                         },
&gt; +    { VK_INSERT, ShiftKey,           &quot;Paste&quot;                                       },
&gt; +    { &apos;Z&apos;,       CtrlKey,            &quot;Undo&quot;                                        },
&gt; +    { &apos;Z&apos;,       CtrlKey | ShiftKey, &quot;Redo&quot;                                        },
&gt; +};
[...]
&gt; +    Editor::Command command = frame-&gt;editor()-&gt;command(interpretKeyEvent(evt));
[...]
&gt; +void EditorClient::handleKeyboardEvent(KeyboardEvent* event)
&gt; +{
&gt; +    if (handleEditingKeyboardEvent(event))
&gt; +        event-&gt;setDefaultHandled();
&gt;  }

An old commit seems to have moved cut/copy/paste/select-all from here to our WebView object (see http://trac.webkit.org/changeset/28386), so I think we should probably avoid handling them here? We should probably consider moving undo/redo, in the future, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118364</commentid>
    <comment_count>17</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-22 00:00:12 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 29647 [review])
&gt; &gt; +    if (caretBrowsing) {
&gt; &gt; +        switch (keyEvent-&gt;windowsVirtualKeyCode()) {
&gt; &gt;              case VK_LEFT:
&gt; &gt; -                frame-&gt;selection()-&gt;modify(kevent-&gt;shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
&gt; &gt; +                frame-&gt;selection()-&gt;modify(keyEvent-&gt;shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
&gt; &gt;                          SelectionController::LEFT,
&gt; &gt; -                        kevent-&gt;ctrlKey() ? WordGranularity : CharacterGranularity,
&gt; &gt; +                        keyEvent-&gt;ctrlKey() ? WordGranularity : CharacterGranularity,
&gt; &gt;                          true);
&gt; &gt; -                break;
&gt; &gt; +                return true;
&gt; 
&gt; There seems to be code very similar to this one here, btw:
&gt; EventHandler::handleKeyboardSelectionMovement (in
&gt; WebCore/page/EventHandler.cpp). This code seems to be called Perhaps we are
&gt; doing some unneeded work?

Mmm, it seems to be conditionally called if some a11y setting is enabled, but I think it&apos;s not in our case. I guess you are talking about EventHandler::defaultKeyboardEventHandler here? I can look into this.

&gt; 
&gt; &gt; +    const PlatformKeyboardEvent* keyEvent = evt-&gt;keyEvent();
&gt; &gt; +    if (!keyEvent /*|| keyEvent-&gt;isSystemKey()*/)  // do not treat this as text input if it&apos;s a system key event
&gt; &gt; +        return false;
&gt; 
&gt; keyEvent-&gt;isSystemKey seems to be something used only by windows? We probably
&gt; want to remove both comments here.

You are right.

&gt; 
&gt; &gt; -    // FIXME: Use GtkBindingSet instead of this hard-coded switch
&gt; &gt; -    // http://bugs.webkit.org/show_bug.cgi?id=15911
&gt; 
&gt; We are now using GtkBindingSet in the webview, but we will be using the static
&gt; table for editing? I am still trying to grasp how key handling works, but it
&gt; seems to me like most things such as home/end/pageup/pagedown should be handled
&gt; by that code you added to WebView, instead?
&gt; 

The motion keys in editor mode handle and modify the selection, while the stuff in the view scroll the view, so AFAICT they should not be handled by the same code. What could be done here, probably, is change the code to use GtkBinding too.

&gt; &gt; +    // It&apos;s not quite clear whether clipboard shortcuts and Undo/Redo should be handled
&gt; &gt; +    // in the application or in WebKit. We chose WebKit.
&gt; &gt; +    { &apos;C&apos;,       CtrlKey,            &quot;Copy&quot;                                        },
&gt; &gt; +    { &apos;V&apos;,       CtrlKey,            &quot;Paste&quot;                                       },
&gt; &gt; +    { &apos;X&apos;,       CtrlKey,            &quot;Cut&quot;                                         },
&gt; &gt; +    { &apos;A&apos;,       CtrlKey,            &quot;SelectAll&quot;                                   },
&gt; &gt; +    { VK_INSERT, CtrlKey,            &quot;Copy&quot;                                        },
&gt; &gt; +    { VK_DELETE, ShiftKey,           &quot;Cut&quot;                                         },
&gt; &gt; +    { VK_INSERT, ShiftKey,           &quot;Paste&quot;                                       },
&gt; &gt; +    { &apos;Z&apos;,       CtrlKey,            &quot;Undo&quot;                                        },
&gt; &gt; +    { &apos;Z&apos;,       CtrlKey | ShiftKey, &quot;Redo&quot;                                        },
&gt; &gt; +};
&gt; [...]
&gt; &gt; +    Editor::Command command = frame-&gt;editor()-&gt;command(interpretKeyEvent(evt));
&gt; [...]
&gt; &gt; +void EditorClient::handleKeyboardEvent(KeyboardEvent* event)
&gt; &gt; +{
&gt; &gt; +    if (handleEditingKeyboardEvent(event))
&gt; &gt; +        event-&gt;setDefaultHandled();
&gt; &gt;  }
&gt; 
&gt; An old commit seems to have moved cut/copy/paste/select-all from here to our
&gt; WebView object (see http://trac.webkit.org/changeset/28386), so I think we
&gt; should probably avoid handling them here? We should probably consider moving
&gt; undo/redo, in the future, too.
&gt; 

You are right, in this case it seems to be the same code. I&apos;ll check this too.

Thanks for the review!

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118642</commentid>
    <comment_count>18</comment_count>
      <attachid>29737</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-24 04:38:38 -0700</bug_when>
    <thetext>Created attachment 29737
editorclientkeysv2.patch

OK, I&apos;ve removed the systemKey commented code, and the handling of the clipboard functions from here.

The GtkBinding thing would be nice, but I don&apos;t see an issue way of doing it here, since for the bindings to work you need to go the parent class of the view in keypress, which happens quite a bit later than this.

Also, the code for up/down/etc in caretBrowsing here is actually different than the one in EventHandler, so I&apos;ve left it here for now. We may unify it, but I think it should be done in a different patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118795</commentid>
    <comment_count>19</comment_count>
      <attachid>29737</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-04-24 19:06:09 -0700</bug_when>
    <thetext>Comment on attachment 29737
editorclientkeysv2.patch

(In reply to comment #18)
&gt; The GtkBinding thing would be nice, but I don&apos;t see an issue way of doing it
&gt; here, since for the bindings to work you need to go the parent class of the
&gt; view in keypress, which happens quite a bit later than this.
&gt; 
&gt; Also, the code for up/down/etc in caretBrowsing here is actually different than
&gt; the one in EventHandler, so I&apos;ve left it here for now. We may unify it, but I
&gt; think it should be done in a different patch.

Those sound sane to me. This one is go in my opinion, too. So r=me. Now let&apos;s find someone to get the first one looked at.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118861</commentid>
    <comment_count>20</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-04-25 17:16:27 -0700</bug_when>
    <thetext>I applied basiccaret.patch, gtksetting.patch, and editorclientkeyssv2.patch. I&apos;m running it with:

WEBKIT_CARET=1 Programs/GtkLauncher

But I seem to be caret-less. I&apos;m sure I&apos;m missing something silly, but I&apos;m not seeing it at the moment. Hints would be appreciated. :-)

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118885</commentid>
    <comment_count>21</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-26 00:14:59 -0700</bug_when>
    <thetext>I&apos;m sorry!

You need to add this small snippet to the code for GtkLauncher, in WebKitTools/GtkLauncher/main.c:

+    WebKitWebSettings* settings = webkit_web_settings_new ();
+    g_object_set (settings,
+                  &quot;enable-caret-browsing&quot;, g_getenv (&quot;WEBKIT_CARET&quot;) ? TRUE : FALSE,
+                  NULL);
+    webkit_web_view_set_settings (web_view, settings);

I forgot about this because I use Epiphany for testing now, so I removed this from the patch (since it&apos;s not meant to be committed anyway).

I&apos;ll upload a patch with that now for testers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118886</commentid>
    <comment_count>22</comment_count>
      <attachid>29799</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-26 00:17:13 -0700</bug_when>
    <thetext>Created attachment 29799
caretmodelauncher.patch

Enable caret mode in GtkLauncher with WEBKIT_CARET=1 ./GtkLauncher.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118919</commentid>
    <comment_count>23</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-04-26 12:41:24 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Created an attachment (id=29799) [review]
&gt; caretmodelauncher.patch
&gt; 
&gt; Enable caret mode in GtkLauncher with WEBKIT_CARET=1 ./GtkLauncher.
&gt; 

Awesome, thanks! Works like a charm now.

In looking at this with Accerciser&apos;s event monitor, I&apos;m not seeing any caret-moved events being emitted. Are you seeing them, or is that part of the work in progress?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118921</commentid>
    <comment_count>24</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-26 12:45:51 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; In looking at this with Accerciser&apos;s event monitor, I&apos;m not seeing any
&gt; caret-moved events being emitted. Are you seeing them, or is that part of the
&gt; work in progress?
&gt; 

That&apos;s indeed still missing :)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118930</commentid>
    <comment_count>25</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-04-26 15:39:25 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; That&apos;s indeed still missing :)

No worries. Just checking. Some of the patches didn&apos;t apply cleanly to trunk (due to changes with spell checking iirc) so I had to do some hand-patching. I wanted to rule out the all-too-likely possibility of user error. :-)

Other observations, which I&apos;ll jot down here for now:

* Need support for Home, End, Ctrl+Home, Ctrl+End

* Need (additional) support for selection via Shift + the above. Interestingly enough, this seems to have been implemented once something is already selected. (i.e. if you Shift + Right, Shift+Home, Shift+End, Shift+Ctrl+Home, and Shift+Ctrl+End start working as expected. They just fail when nothing is already selected.)

* In addition to the caret-moved events, I&apos;m not seeing text-selection-changed events when selecting/unselecting text.

* What are your thoughts/plans w.r.t. emitting focus: events when focus changes? I am seeing the object:state-changed:focused events now (yea!) but not focus: events. To be honest, I&apos;m not sure how critical they are. I&apos;m just used to seeing them in other apps. I&apos;ll leave it to Will to comment on that.

That said.... This is still awesome progress. Thanks again! And let me know if you want new bugs filed for any/all of the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119063</commentid>
    <comment_count>26</comment_count>
      <attachid>29645</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-27 23:44:39 -0700</bug_when>
    <thetext>Comment on attachment 29645
basiccaret.patch

+    bool caretBrowsing = settings() &amp;&amp; settings()-&gt;caretBrowsingEnabled();
     bool shouldBlink = m_caretVisible
-        &amp;&amp; selection()-&gt;isCaret() &amp;&amp; selection()-&gt;isContentEditable();
+        &amp;&amp; selection()-&gt;isCaret() &amp;&amp; (selection()-&gt;isContentEditable() || caretBrowsing);

I was under the impression that we would not blink when caret browsing.  To provide a cue that the content is non editable.


+    if (!selection()-&gt;isNone() || !(isContentEditable() || caretBrowsing))

You don&apos;t need the ()s here.


         // If this is a change in selection resulting from a delete operation,
         // oldSelection may no longer be in the document.
-        if (closeTyping &amp;&amp; oldSelection.isContentEditable() &amp;&amp; oldSelection.start().node() &amp;&amp; oldSelection.start().node()-&gt;inDocument()) {
+        if (closeTyping &amp;&amp; (oldSelection.isContentEditable() || caretBrowsing)  &amp;&amp; oldSelection.start().node() &amp;&amp; oldSelection.start().node()-&gt;inDocument()) {
             VisiblePosition oldStart(oldSelection.visibleStart());

Do you really want to mark misspelled words if they are non-editable?  The user can&apos;t do anything about them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119064</commentid>
    <comment_count>27</comment_count>
      <attachid>29645</attachid>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-27 23:47:00 -0700</bug_when>
    <thetext>Comment on attachment 29645
basiccaret.patch

also  we should have a bug on entering form elements when caret browsing or in editable content.  other than those things, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119068</commentid>
    <comment_count>28</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-28 00:48:17 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 29645 [review])
&gt; +    bool caretBrowsing = settings() &amp;&amp; settings()-&gt;caretBrowsingEnabled();
&gt;      bool shouldBlink = m_caretVisible
&gt; -        &amp;&amp; selection()-&gt;isCaret() &amp;&amp; selection()-&gt;isContentEditable();
&gt; +        &amp;&amp; selection()-&gt;isCaret() &amp;&amp; (selection()-&gt;isContentEditable() ||
&gt; caretBrowsing);
&gt; 
&gt; I was under the impression that we would not blink when caret browsing.  To
&gt; provide a cue that the content is non editable.
&gt; 

Hum, it seems that we actually need this in order for the caret to be visible. Also, FWIW, in Gecko the caret actually blinks, most probably to make it easier (or possible) to figure out where it is.

&gt; 
&gt; +    if (!selection()-&gt;isNone() || !(isContentEditable() || caretBrowsing))
&gt; 
&gt; You don&apos;t need the ()s here.
&gt;

Mmm, are you sure? You mean like !isContentEditable() || !caretBrowsing ? That&apos;s not really the same... 
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119069</commentid>
    <comment_count>29</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-28 00:51:32 -0700</bug_when>
    <thetext>&gt; &gt; +    if (!selection()-&gt;isNone() || !(isContentEditable() || caretBrowsing))
&gt; &gt; 
&gt; &gt; You don&apos;t need the ()s here.
&gt; &gt;
&gt; 
&gt; Mmm, are you sure? You mean like !isContentEditable() || !caretBrowsing ?
&gt; That&apos;s not really the same... 

Oops my mistake I misread it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119072</commentid>
    <comment_count>30</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-28 01:04:54 -0700</bug_when>
    <thetext>So is the patch OK to go with the blinking bit on it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119073</commentid>
    <comment_count>31</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-28 01:44:02 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; So is the patch OK to go with the blinking bit on it?
&gt; 

I&apos;m going to go ahead and commit this, to be consistent with the de-facto standard. If you disagree we can work on this issue in future patches. Thanks for the review!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23778</attachid>
            <date>2008-09-24 19:05:58 -0700</date>
            <delta_ts>2008-11-07 19:32:00 -0800</delta_ts>
            <desc>Caret navigation (proof of concept)</desc>
            <filename>nuanti-caret-nav.patch</filename>
            <type>text/plain</type>
            <size>4028</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAzNjg3MykKKysrIFdlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEyLDkgKzE4MTIsMTEgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRLZXlib2FyZEV2ZW50SAogICAgICAgICBpZiAoZXZl
bnQtPmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDA5IikKICAgICAgICAgICAgIGRlZmF1bHRUYWJF
dmVudEhhbmRsZXIoZXZlbnQpOwogCisjaWYgIVBMQVRGT1JNKEdUSykKICAgICAgICAvLyBwcm92
aWRlcyBLQiBuYXZpZ2F0aW9uIGFuZCBzZWxlY3Rpb24gZm9yIGVuaGFuY2VkIGFjY2Vzc2liaWxp
dHkgdXNlcnMKICAgICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuaGFuY2Vk
VXNlckludGVyZmFjZUVuYWJsZWQoKSkKICAgICAgICAgICAgaGFuZGxlS2V5Ym9hcmRTZWxlY3Rp
b25Nb3ZlbWVudChldmVudCk7ICAgICAgIAorI2VuZGlmCiAgICB9CiAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBrZXlwcmVzc0V2ZW50KSB7CiAgICAgICAgIG1fZnJhbWUtPmVkaXRvcigpLT5oYW5k
bGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gMzY4NzMpCisrKyBX
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiRnJhbWVQcml2YXRlLmgiCiAKICNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5o
IgorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJCZWZvcmVVbmxvYWRFdmVu
dC5oIgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5LmgiCkBAIC01NjEsNyArNTYyLDcgQEAgdm9pZCBGcmFtZTo6c2VsZWN0aW9u
TGF5b3V0Q2hhbmdlZCgpCiAgICAgYm9vbCBjYXJldFJlY3RDaGFuZ2VkID0gc2VsZWN0aW9uKCkt
PnJlY29tcHV0ZUNhcmV0UmVjdCgpOwogCiAgICAgYm9vbCBzaG91bGRCbGluayA9IGQtPm1fY2Fy
ZXRWaXNpYmxlCi0gICAgICAgICYmIHNlbGVjdGlvbigpLT5pc0NhcmV0KCkgJiYgc2VsZWN0aW9u
KCktPmlzQ29udGVudEVkaXRhYmxlKCk7CisgICAgICAgICYmIHNlbGVjdGlvbigpLT5pc0NhcmV0
KCkgJiYgKHNlbGVjdGlvbigpLT5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IEFYT2JqZWN0Q2FjaGU6
OmFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkKCkpOwogCiAgICAgLy8g
SWYgdGhlIGNhcmV0IG1vdmVkLCBzdG9wIHRoZSBibGluayB0aW1lciBzbyB3ZSBjYW4gcmVzdGFy
dCB3aXRoIGEKICAgICAvLyBibGFjayBjYXJldCBpbiB0aGUgbmV3IGxvY2F0aW9uLgpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMzY4NzMpCisrKyBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogCisjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0xNjUxLDcgKzE2NTIsNyBAQCB2b2lkIFJl
bmRlckJsb2NrOjpwYWludENhcmV0KFBhaW50SW5mbyYgCiAgICAgICAgIHJldHVybjsKICAgICAv
LyBpZiBjYXJldE5vZGUgaXMgYSBibG9jayBhbmQgY2FyZXQgaXMgaW5zaWRlIGl0IHRoZW4gY2Fy
ZXQgc2hvdWxkIGJlIHBhaW50ZWQgYnkgdGhhdCBibG9jawogICAgIGJvb2wgY3Vyc29ySW5zaWRl
QmxvY2tDYXJldE5vZGUgPSByZW5kZXJlci0+aXNCbG9ja0Zsb3coKSAmJiBzZWxlY3Rpb24tPmlz
SW5zaWRlTm9kZSgpOwotICAgIGlmICgoY3Vyc29ySW5zaWRlQmxvY2tDYXJldE5vZGUgPyByZW5k
ZXJlciA6IHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKSkgPT0gdGhpcyAmJiBzZWxlY3Rpb24t
PmlzQ29udGVudEVkaXRhYmxlKCkpIHsKKyAgICBpZiAoKGN1cnNvckluc2lkZUJsb2NrQ2FyZXRO
b2RlID8gcmVuZGVyZXIgOiByZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCkpID09IHRoaXMgJiYg
KHNlbGVjdGlvbi0+aXNDb250ZW50RWRpdGFibGUoKSB8fCBBWE9iamVjdENhY2hlOjphY2Nlc3Np
YmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlRW5hYmxlZCgpKSkgewogICAgICAgICBpZiAodHlw
ZSA9PSBDdXJzb3JDYXJldCkKICAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPnBhaW50
Q2FyZXQocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50SW5mby5yZWN0KTsKICAgICAgICAgZWxzZQpJ
bmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAko
cmV2aXNpb24gMzY4NzMpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMywyMSArMzEzLDI0IEBAIHZvaWQgRWRpdG9y
Q2xpZW50Ojp0b2dnbGVHcmFtbWFyQ2hlY2tpbmcKIHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVL
ZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUobV93ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
OwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpKQor
ICAgIC8vaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkpCisg
ICAgLy8gICAgcmV0dXJuOworICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCoga2V2ZW50ID0gZXZlbnQtPmtleUV2ZW50KCk7
CiAgICAgaWYgKCFrZXZlbnQgfHwga2V2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpLZXlVcCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTm9kZSogc3RhcnQgPSBmcmFtZS0+
c2VsZWN0aW9uKCktPnN0YXJ0KCkubm9kZSgpOwotICAgIGlmICghc3RhcnQpCi0gICAgICAgIHJl
dHVybjsKKyAgICAvL05vZGUqIHN0YXJ0ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm5v
ZGUoKTsKKyAgICAvL2lmICghc3RhcnQpCisgICAgLy8gICAgcmV0dXJuOwogCiAgICAgLy8gRklY
TUU6IFVzZSBHdGtCaW5kaW5nU2V0IGluc3RlYWQgb2YgdGhpcyBoYXJkLWNvZGVkIHN3aXRjaAog
ICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTExCiAKLSAg
ICBpZiAoc3RhcnQtPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKKyAgICAvL2lmICh0cnVlIHx8IHN0
YXJ0LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CisgICAgaWYgKHRydWUpIHsKICAgICAgICAgc3dp
dGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CiAgICAgICAgICAgICBjYXNl
IFZLX0JBQ0s6CiAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGly
ZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24982</attachid>
            <date>2008-11-07 19:32:00 -0800</date>
            <delta_ts>2009-01-26 07:53:56 -0800</delta_ts>
            <desc>WIP caret navigation support</desc>
            <filename>caret-nov8.patch</filename>
            <type>text/plain</type>
            <size>20501</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKaW5kZXggMTg5MDMzOC4uM2VlZmU3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEs
NiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBOdWFudGkgTHRkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw2ICs1
OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJQYXJ0Lmgi
CiAjaW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKKyNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlNvdW5kLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRl
eHRJdGVyYXRvci5oIgpAQCAtOTksMTUgKzEwMSwxOSBAQCBFZGl0b3JDbGllbnQqIEVkaXRvcjo6
Y2xpZW50KCkgY29uc3QKIAogdm9pZCBFZGl0b3I6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiB7CisgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS0+c2V0
dGluZ3MoKSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwor
CiAgICAgaWYgKEVkaXRvckNsaWVudCogYyA9IGNsaWVudCgpKQotICAgICAgICBpZiAoc2VsZWN0
aW9uRm9yQ29tbWFuZChldmVudCkuaXNDb250ZW50RWRpdGFibGUoKSkKKyAgICAgICAgaWYgKGNh
cmV0QnJvd3NpbmcgfHwgc2VsZWN0aW9uRm9yQ29tbWFuZChldmVudCkuaXNDb250ZW50RWRpdGFi
bGUoKSkKICAgICAgICAgICAgIGMtPmhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQpOwogfQogCiB2
b2lkIEVkaXRvcjo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogeworICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9m
cmFtZS0+c2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKKwogICAgIGlmIChFZGl0
b3JDbGllbnQqIGMgPSBjbGllbnQoKSkKLSAgICAgICAgaWYgKHNlbGVjdGlvbkZvckNvbW1hbmQo
ZXZlbnQpLmlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgICAgIGlmIChjYXJldEJyb3dzaW5nIHx8
IHNlbGVjdGlvbkZvckNvbW1hbmQoZXZlbnQpLmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAg
ICAgICBjLT5oYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oZXZlbnQpOwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2VkaXRp
bmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggODlkYWYzMy4uYTkwNDY5MCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNv
cmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcApAQCAtODQyLDggKzg0Miw5IEBAIHZv
aWQgU2VsZWN0aW9uQ29udHJvbGxlcjo6cGFpbnRDYXJldChHcmFwaGljc0NvbnRleHQgKnAsIGNv
bnN0IEludFJlY3QgJnJlY3QpCiAgICAgICAgIAogICAgIEludFJlY3QgY2FyZXQgPSBpbnRlcnNl
Y3Rpb24oY2FyZXRSZWN0KCksIHJlY3QpOwogICAgIGlmICghY2FyZXQuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IHRydWU7CiAgICAgICAgIENvbG9yIGNhcmV0Q29s
b3IgPSBDb2xvcjo6YmxhY2s7Ci0gICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSByb290RWRpdGFi
bGVFbGVtZW50KCk7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjYXJldEJyb3dzaW5nID8g
c3RhcnQoKS5lbGVtZW50KCkgOiByb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgICAgIGlmIChl
bGVtZW50ICYmIGVsZW1lbnQtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBjYXJldENvbG9yID0g
ZWxlbWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sb3IoKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCA4MGY3OWQ0Li5jMTA3YWFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtNTUwLDcg
KzU1MCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgICAgICAgICAmJiBtX2ZyYW1l
LT5zZWxlY3Rpb24oKS0+aXNSYW5nZSgpKSB7CiAgICAgICAgIFNlbGVjdGlvbiBuZXdTZWxlY3Rp
b247CiAgICAgICAgIE5vZGUgKm5vZGUgPSBldmVudC50YXJnZXROb2RlKCk7Ci0gICAgICAgIGlm
IChub2RlICYmIG5vZGUtPmlzQ29udGVudEVkaXRhYmxlKCkgJiYgbm9kZS0+cmVuZGVyZXIoKSkg
eworICAgICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSB0cnVlOworICAgICAgICBpZiAobm9kZSAm
JiAoY2FyZXRCcm93c2luZyB8fCBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSAmJiBub2RlLT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zID0gbm9kZS0+cmVu
ZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCkpOwogICAgICAgICAg
ICAgbmV3U2VsZWN0aW9uID0gU2VsZWN0aW9uKHBvcyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAKaW5kZXggOWIzMDM2Mi4uMjYxYjAwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFu
dGkgTHRkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTgsOSArMTE5LDE2
IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXMoRm9jdXNEaXJlY3Rpb24gZGly
ZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVuCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCisgICAgTm9kZSogY3VycmVudE5vZGUgPSBkb2N1bWVudC0+Zm9jdXNl
ZE5vZGUoKTsKKworICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IHRydWU7CisgICAgLy8gRklYTUU6
IE5vdCBxdWl0ZSBjb3JyZWN0IHdoZW4gaXQgY29tZXMgdG8gZm9jdXMgdHJhbnNpdGlvbnMgbGVh
dmluZy9lbnRlcmluZyB0aGUgV2ViVmlldyBpdHNlbGYKKyAgICBpZiAoY2FyZXRCcm93c2luZyAm
JiAhY3VycmVudE5vZGUpCisgICAgICAgIGN1cnJlbnROb2RlID0gZnJhbWUtPnNlbGVjdGlvbigp
LT5zdGFydCgpLm5vZGUoKTsKKwogICAgIE5vZGUqIG5vZGUgPSAoZGlyZWN0aW9uID09IEZvY3Vz
RGlyZWN0aW9uRm9yd2FyZCkKLSAgICAgICAgPyBkb2N1bWVudC0+bmV4dEZvY3VzYWJsZU5vZGUo
ZG9jdW1lbnQtPmZvY3VzZWROb2RlKCksIGV2ZW50KQotICAgICAgICA6IGRvY3VtZW50LT5wcmV2
aW91c0ZvY3VzYWJsZU5vZGUoZG9jdW1lbnQtPmZvY3VzZWROb2RlKCksIGV2ZW50KTsKKyAgICAg
ICAgPyBkb2N1bWVudC0+bmV4dEZvY3VzYWJsZU5vZGUoY3VycmVudE5vZGUsIGV2ZW50KQorICAg
ICAgICA6IGRvY3VtZW50LT5wcmV2aW91c0ZvY3VzYWJsZU5vZGUoY3VycmVudE5vZGUsIGV2ZW50
KTsKICAgICAgICAgICAgIAogICAgIC8vIElmIHRoZXJlJ3Mgbm8gZm9jdXNhYmxlIG5vZGUgdG8g
YWR2YW5jZSB0bywgbW92ZSB1cCB0aGUgZnJhbWUgdHJlZSB1bnRpbCB3ZSBmaW5kIG9uZS4KICAg
ICB3aGlsZSAoIW5vZGUgJiYgZnJhbWUpIHsKQEAgLTIwMSw2ICsyMDksMTUgQEAgYm9vbCBGb2N1
c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1cyhGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJv
YXJkRXZlbnQqIGV2ZW4KICAgICBpZiAobmV3RG9jdW1lbnQpCiAgICAgICAgIHNldEZvY3VzZWRG
cmFtZShuZXdEb2N1bWVudC0+ZnJhbWUoKSk7CiAKKyAgICBpZiAoY2FyZXRCcm93c2luZykgewor
ICAgICAgICBTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKFBvc2l0aW9uKG5vZGUsIDApLCBQb3NpdGlv
bihub2RlLCAwKSwgRE9XTlNUUkVBTSk7CisgICAgICAgIGlmIChmcmFtZS0+c2hvdWxkQ2hhbmdl
U2VsZWN0aW9uKG5ld1NlbGVjdGlvbikpIHsKKyAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24o
KS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CisgICAgICAgICAgICAvLyBXaHkgaXMgdGhp
cyByZXZlYWxTZWxlY3Rpb24oKSBuZWNlc3Nhcnk/CisgICAgICAgICAgICBmcmFtZS0+cmV2ZWFs
U2VsZWN0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obm9kZSktPmZvY3VzKGZhbHNlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyOSw2ICsy
NDYsMTAgQEAgc3RhdGljIHZvaWQgY2xlYXJTZWxlY3Rpb25JZk5lZWRlZChGcmFtZSogb2xkRm9j
dXNlZEZyYW1lLCBGcmFtZSogbmV3Rm9jdXNlZEZyYW0KICAgICBTZWxlY3Rpb25Db250cm9sbGVy
KiBzID0gb2xkRm9jdXNlZEZyYW1lLT5zZWxlY3Rpb24oKTsKICAgICBpZiAocy0+aXNOb25lKCkp
CiAgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IHRydWU7CisgICAg
aWYgKGNhcmV0QnJvd3NpbmcpCisgICAgICAgIHJldHVybjsKICAgICAKICAgICBOb2RlKiBzZWxl
Y3Rpb25TdGFydE5vZGUgPSBzLT5zZWxlY3Rpb24oKS5zdGFydCgpLm5vZGUoKTsKICAgICBpZiAo
c2VsZWN0aW9uU3RhcnROb2RlID09IG5ld0ZvY3VzZWROb2RlIHx8IHNlbGVjdGlvblN0YXJ0Tm9k
ZS0+aXNEZXNjZW5kYW50T2YobmV3Rm9jdXNlZE5vZGUpIHx8IHNlbGVjdGlvblN0YXJ0Tm9kZS0+
c2hhZG93QW5jZXN0b3JOb2RlKCkgPT0gbmV3Rm9jdXNlZE5vZGUpCkBAIC0yNTUsNiArMjc2LDcg
QEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWROb2RlKE5vZGUqIG5vZGUsIFBhc3NS
ZWZQdHI8RnJhbWU+IG5ld0ZvY3VzZWRGcmEKICAgICBpZiAob2xkRm9jdXNlZE5vZGUgPT0gbm9k
ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAorICAgIC8vIEZJWE1FOiBNaWdodCB3
YW50IHRvIGRpc2FibGUgdGhpcyBjaGVjayBmb3IgY2FyZXRCcm93c2luZwogICAgIGlmIChvbGRG
b2N1c2VkTm9kZSAmJiBvbGRGb2N1c2VkTm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IG9s
ZEZvY3VzZWROb2RlICYmICFyZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMob2xkRm9jdXNlZE5vZGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYmQwOGU1OC4uYmEy
YmVmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC05LDYgKzksNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IEFsZXhl
eSBQcm9za3VyeWFrb3YgPGFwQG55cG9wLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAo
QykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDA4IE51YW50aSBMdGQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTcyLDYgKzczLDcgQEAKICNp
bmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNp
bmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNp
bmNsdWRlICJucHJ1bnRpbWVfaW1wbC5oIgogI2luY2x1ZGUgInJ1bnRpbWVfcm9vdC5oIgogI2lu
Y2x1ZGUgInZpc2libGVfdW5pdHMuaCIKQEAgLTUzMSw2ICs1MzMsMTUgQEAgdm9pZCBGcmFtZTo6
c2V0Rm9jdXNlZE5vZGVJZk5lZWRlZCgpCiAgICAgaWYgKCFkb2N1bWVudCgpIHx8IHNlbGVjdGlv
bigpLT5pc05vbmUoKSB8fCAhc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBzZXR0aW5ncygpICYmIHNl
dHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYgKGNhcmV0QnJvd3Npbmcp
IHsKKyAgICAgICAgTm9kZSogYW5jaG9yID0gZW5jbG9zaW5nQW5jaG9yRWxlbWVudChzZWxlY3Rp
b24oKS0+YmFzZSgpKTsKKyAgICAgICAgaWYgKGFuY2hvcikgeworICAgICAgICAgICAgcGFnZSgp
LT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZE5vZGUoYW5jaG9yLCB0aGlzKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIE5vZGUqIHRhcmdldCA9IHNl
bGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgaWYgKHRhcmdldCkgewogICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0LT5yZW5kZXJlcigpOwpAQCAtNTUx
LDE0ICs1NjIsMTggQEAgdm9pZCBGcmFtZTo6c2V0Rm9jdXNlZE5vZGVJZk5lZWRlZCgpCiAgICAg
ICAgIH0KICAgICAgICAgZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZE5vZGUoMCk7CiAgICAgfQorCisg
ICAgaWYgKGNhcmV0QnJvd3NpbmcpCisgICAgICAgIHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCkt
PnNldEZvY3VzZWROb2RlKDAsIHRoaXMpOwogfQogCiB2b2lkIEZyYW1lOjpzZWxlY3Rpb25MYXlv
dXRDaGFuZ2VkKCkKIHsKICAgICBib29sIGNhcmV0UmVjdENoYW5nZWQgPSBzZWxlY3Rpb24oKS0+
cmVjb21wdXRlQ2FyZXRSZWN0KCk7CiAKLSAgICBib29sIHNob3VsZEJsaW5rID0gZC0+bV9jYXJl
dFZpc2libGUKLSAgICAgICAgJiYgc2VsZWN0aW9uKCktPmlzQ2FyZXQoKSAmJiBzZWxlY3Rpb24o
KS0+aXNDb250ZW50RWRpdGFibGUoKTsKKyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBzZXR0aW5n
cygpICYmIHNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CisgICAgYm9vbCBzaG91
bGRCbGluayA9IGQtPm1fY2FyZXRWaXNpYmxlICYmIHNlbGVjdGlvbigpLT5pc0NhcmV0KCkKKyAg
ICAgICAgJiYgKGNhcmV0QnJvd3NpbmcgfHwgc2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRhYmxl
KCkpOwogCiAgICAgLy8gSWYgdGhlIGNhcmV0IG1vdmVkLCBzdG9wIHRoZSBibGluayB0aW1lciBz
byB3ZSBjYW4gcmVzdGFydCB3aXRoIGEKICAgICAvLyBibGFjayBjYXJldCBpbiB0aGUgbmV3IGxv
Y2F0aW9uLgpAQCAtMTM4OCw3ICsxNDAzLDggQEAgdm9pZCBGcmFtZTo6c2V0U2VsZWN0aW9uRnJv
bU5vbmUoKQogICAgIC8vIFB1dCBhIGNhcmV0IGluc2lkZSB0aGUgYm9keSBpZiB0aGUgZW50aXJl
IGZyYW1lIGlzIGVkaXRhYmxlIChlaXRoZXIgdGhlIAogICAgIC8vIGVudGlyZSBXZWJWaWV3IGlz
IGVkaXRhYmxlIG9yIGRlc2lnbk1vZGUgaXMgb24gZm9yIHRoaXMgZG9jdW1lbnQpLgogICAgIERv
Y3VtZW50ICpkb2MgPSBkb2N1bWVudCgpOwotICAgIGlmICghZG9jIHx8ICFzZWxlY3Rpb24oKS0+
aXNOb25lKCkgfHwgIWlzQ29udGVudEVkaXRhYmxlKCkpCisgICAgYm9vbCBjYXJldEJyb3dzaW5n
ID0gc2V0dGluZ3MoKSAmJiBzZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOworICAg
IGlmICghZG9jIHx8ICFzZWxlY3Rpb24oKS0+aXNOb25lKCkgfHwgIShjYXJldEJyb3dzaW5nIHx8
IGlzQ29udGVudEVkaXRhYmxlKCkpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIE5v
ZGUqIG5vZGUgPSBkb2MtPmRvY3VtZW50RWxlbWVudCgpOwpAQCAtMTcxOCw3ICsxNzM0LDggQEAg
dm9pZCBGcmFtZTo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb24mIG9s
ZFNlbGVjdGlvbiwgYm9vbCBjbG9zZVQKICAgICAgICAgaWYgKGlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKSB7CiAgICAgICAgICAgICBTZWxlY3Rpb24gbmV3QWRqYWNlbnRXb3JkczsK
ICAgICAgICAgICAgIFNlbGVjdGlvbiBuZXdTZWxlY3RlZFNlbnRlbmNlOwotICAgICAgICAgICAg
aWYgKHNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CisgICAg
ICAgICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBzZXR0aW5ncygpICYmIHNldHRpbmdzKCktPmNh
cmV0QnJvd3NpbmdFbmFibGVkKCk7CisgICAgICAgICAgICBpZiAoY2FyZXRCcm93c2luZyB8fCBz
ZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSkgewogICAgICAgICAg
ICAgICAgIFZpc2libGVQb3NpdGlvbiBuZXdTdGFydChzZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCku
dmlzaWJsZVN0YXJ0KCkpOwogICAgICAgICAgICAgICAgIG5ld0FkamFjZW50V29yZHMgPSBTZWxl
Y3Rpb24oc3RhcnRPZldvcmQobmV3U3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZX
b3JkKG5ld1N0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKICAgICAgICAgICAgICAgICBp
ZiAoaXNDb250aW51b3VzR3JhbW1hckNoZWNraW5nRW5hYmxlZCkKQEAgLTE3MjgsNyArMTc0NSw3
IEBAIHZvaWQgRnJhbWU6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9u
JiBvbGRTZWxlY3Rpb24sIGJvb2wgY2xvc2VUCiAgICAgICAgICAgICAvLyBXaGVuIHR5cGluZyB3
ZSBjaGVjayBzcGVsbGluZyBlbHNld2hlcmUsIHNvIGRvbid0IHJlZG8gaXQgaGVyZS4KICAgICAg
ICAgICAgIC8vIElmIHRoaXMgaXMgYSBjaGFuZ2UgaW4gc2VsZWN0aW9uIHJlc3VsdGluZyBmcm9t
IGEgZGVsZXRlIG9wZXJhdGlvbiwKICAgICAgICAgICAgIC8vIG9sZFNlbGVjdGlvbiBtYXkgbm8g
bG9uZ2VyIGJlIGluIHRoZSBkb2N1bWVudC4KLSAgICAgICAgICAgIGlmIChjbG9zZVR5cGluZyAm
JiBvbGRTZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSAmJiBvbGRTZWxlY3Rpb24uc3RhcnQo
KS5ub2RlKCkgJiYgb2xkU2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5pbkRvY3VtZW50KCkpIHsK
KyAgICAgICAgICAgIGlmIChjbG9zZVR5cGluZyAmJiAoY2FyZXRCcm93c2luZyB8fCBvbGRTZWxl
Y3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkgJiYgb2xkU2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgp
ICYmIG9sZFNlbGVjdGlvbi5zdGFydCgpLm5vZGUoKS0+aW5Eb2N1bWVudCgpKSB7CiAgICAgICAg
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG9sZFN0YXJ0KG9sZFNlbGVjdGlvbi52aXNpYmxlU3Rh
cnQoKSk7CiAgICAgICAgICAgICAgICAgU2VsZWN0aW9uIG9sZEFkamFjZW50V29yZHMgPSBTZWxl
Y3Rpb24oc3RhcnRPZldvcmQob2xkU3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZX
b3JkKG9sZFN0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsgICAKICAgICAgICAgICAgICAg
ICBpZiAob2xkQWRqYWNlbnRXb3JkcyAhPSBuZXdBZGphY2VudFdvcmRzKSB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApp
bmRleCA3ODZlN2RmLi5mODVkZmU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgU2V0
dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSkKICAgICAsIG1fcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKKyAgICAsIG1fY2FyZXRCcm93c2luZ0VuYWJsZWQoZmFs
c2UpCiAgICAgLCBtX2FyZVBsdWdpbnNFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc0phdmFTY3Jp
cHRFbmFibGVkKGZhbHNlKQogICAgICwgbV9qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0
aWNhbGx5KGZhbHNlKQpAQCAtMjA3LDYgKzIwOCwxMSBAQCB2b2lkIFNldHRpbmdzOjpzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICBtX3By
aXZhdGVCcm93c2luZ0VuYWJsZWQgPSBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwogfQogCit2b2lk
IFNldHRpbmdzOjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sIGNhcmV0QnJvd3NpbmdFbmFi
bGVkKQoreworICAgIG1fY2FyZXRCcm93c2luZ0VuYWJsZWQgPSBjYXJldEJyb3dzaW5nRW5hYmxl
ZDsKK30KKwogdm9pZCBTZXR0aW5nczo6c2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseShib29sIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkpCiB7CiAg
ICAgbV9qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gamF2YVNjcmlwdENh
bk9wZW5XaW5kb3dzQXV0b21hdGljYWxseTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNmU3Y2I1Ni4uYWQ2NjAzNyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKQEAgLTk1LDYgKzk1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZDsgfQogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29s
KTsKKyAgICAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FyZXRCcm93c2luZ0VuYWJsZWQ7IH0KKwogICAgICAgICB2b2lkIHNldERlZmF1bHRUZXh0RW5j
b2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIGRlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0VGV4dEVuY29kaW5nTmFt
ZTsgfQogCkBAIC0yMDUsNiArMjA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIG1faXNKYXZhRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9sb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHkgOiAxOwogICAgICAgICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA6IDE7
CisgICAgICAgIGJvb2wgbV9jYXJldEJyb3dzaW5nRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wg
bV9hcmVQbHVnaW5zRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9pc0phdmFTY3JpcHRFbmFi
bGVkIDogMTsKICAgICAgICAgYm9vbCBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHkgOiAxOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGFlZTY5OGMuLmNiZWJm
MDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJT
ZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC0xNjQ0LDcgKzE2NDUsOCBAQCB2
b2lkIFJlbmRlckJsb2NrOjpwYWludENhcmV0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBDYXJldFR5
cGUgdHlwZSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIGlmIGNhcmV0Tm9kZSBpcyBhIGJsb2Nr
IGFuZCBjYXJldCBpcyBpbnNpZGUgaXQgdGhlbiBjYXJldCBzaG91bGQgYmUgcGFpbnRlZCBieSB0
aGF0IGJsb2NrCiAgICAgYm9vbCBjdXJzb3JJbnNpZGVCbG9ja0NhcmV0Tm9kZSA9IHJlbmRlcmVy
LT5pc0Jsb2NrRmxvdygpICYmIHNlbGVjdGlvbi0+aXNJbnNpZGVOb2RlKCk7Ci0gICAgaWYgKChj
dXJzb3JJbnNpZGVCbG9ja0NhcmV0Tm9kZSA/IHJlbmRlcmVyIDogcmVuZGVyZXItPmNvbnRhaW5p
bmdCbG9jaygpKSA9PSB0aGlzICYmIHNlbGVjdGlvbi0+aXNDb250ZW50RWRpdGFibGUoKSkgewor
ICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IGRvY3VtZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCkg
JiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQo
KTsKKyAgICBpZiAoKGN1cnNvckluc2lkZUJsb2NrQ2FyZXROb2RlID8gcmVuZGVyZXIgOiByZW5k
ZXJlci0+Y29udGFpbmluZ0Jsb2NrKCkpID09IHRoaXMgJiYgKHNlbGVjdGlvbi0+aXNDb250ZW50
RWRpdGFibGUoKSB8fCBjYXJldEJyb3dzaW5nKSkgewogICAgICAgICBpZiAodHlwZSA9PSBDdXJz
b3JDYXJldCkKICAgICAgICAgICAgIGRvY3VtZW50KCktPmZyYW1lKCktPnBhaW50Q2FyZXQocGFp
bnRJbmZvLmNvbnRleHQsIHBhaW50SW5mby5yZWN0KTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IDYyZjFmMjcuLmU4
Yzg5YjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5j
cHAKQEAgLTMxMywyMSArMzEzLDMwIEBAIHZvaWQgRWRpdG9yQ2xpZW50Ojp0b2dnbGVHcmFtbWFy
Q2hlY2tpbmcoKQogdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9h
cmRFdmVudCogZXZlbnQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShtX3dlYlZpZXcpLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisKKyAgICAvLyBGSVhNRTog
Q2xlYW4gdXAgdGhpcyBmdW5jdGlvbiBmb2xsb3dpbmcgY2FyZXQgYnJvd3NpbmcgY2hhbmdlcyBl
bnN1cmluZworICAgIC8vIHRoYXQgdW5oYW5kbGVkIGV2ZW50cyBhcmUgbm90IG1hcmtlZCBhcyBi
ZWluZyBoYW5kbGVkLgorCisgICAgLyoKICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZG9jdW1l
bnQoKS0+Zm9jdXNlZE5vZGUoKSkKICAgICAgICAgcmV0dXJuOworICAgICAgICAqLwogCiAgICAg
Y29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBrZXZlbnQgPSBldmVudC0+a2V5RXZlbnQoKTsK
ICAgICBpZiAoIWtldmVudCB8fCBrZXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQ6OktleVVwKQogICAgICAgICByZXR1cm47CiAKKyAgICAvKgogICAgIE5vZGUqIHN0YXJ0ID0g
ZnJhbWUtPnNlbGVjdGlvbigpLT5zdGFydCgpLm5vZGUoKTsKICAgICBpZiAoIXN0YXJ0KQogICAg
ICAgICByZXR1cm47CisgICAgICAgICovCiAKICAgICAvLyBGSVhNRTogVXNlIEd0a0JpbmRpbmdT
ZXQgaW5zdGVhZCBvZiB0aGlzIGhhcmQtY29kZWQgc3dpdGNoCiAgICAgLy8gaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MTEKIAotICAgIGlmIChzdGFydC0+aXNDb250
ZW50RWRpdGFibGUoKSkgeworICAgIC8vaWYgKHN0YXJ0LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7
CisgICAgaWYgKHRydWUpIHsKICAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFs
S2V5Q29kZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFZLX0JBQ0s6CiAgICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6
OkJBQ0tXQVJELApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IDQ5
YWI0YzYuLjY1MDljODcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNl
dHRpbmdzLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAK
QEAgLTQ5LDYgKzQ5LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgewogICAg
IGdjaGFyKiB1c2VyX3N0eWxlc2hlZXRfdXJpOwogICAgIGdmbG9hdCB6b29tX3N0ZXA7CiAgICAg
Z2Jvb2xlYW4gZW5hYmxlX2RldmVsb3Blcl9leHRyYXM7CisgICAgZ2Jvb2xlYW4gZW5hYmxlX2Nh
cmV0X2Jyb3dzaW5nOwogfTsKIAogI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9QUklW
QVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVf
V0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKQpAQCAtNzUsNyArNzYsOCBA
QCBlbnVtIHsKICAgICBQUk9QX1JFU0laQUJMRV9URVhUX0FSRUFTLAogICAgIFBST1BfVVNFUl9T
VFlMRVNIRUVUX1VSSSwKICAgICBQUk9QX1pPT01fU1RFUCwKLSAgICBQUk9QX0VOQUJMRV9ERVZF
TE9QRVJfRVhUUkFTCisgICAgUFJPUF9FTkFCTEVfREVWRUxPUEVSX0VYVFJBUywKKyAgICBQUk9Q
X0VOQUJMRV9DQVJFVF9CUk9XU0lORwogfTsKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0
aW5nc19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpOwpAQCAtMjg5LDYgKzI5MSwxNSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3ND
bGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9DQVJFVF9CUk9XU0lORywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuYWJsZS1jYXJldC1icm93c2luZyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5hYmxlIENhcmV0IEJyb3dz
aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGV0aGVyIHRvIGVu
YWJsZSBhY2Nlc3NpYmlsaXR5LWVuaGFuY2VkIGtleWJvYXJkIG5hdmlnYXRpb24uIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKwogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0
ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpOwogfQogCkBAIC0zODgs
NiArMzk5LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBST1BfRU5BQkxF
X0RFVkVMT1BFUl9FWFRSQVM6CiAgICAgICAgIHByaXYtPmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFz
ID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfQ0FSRVRfQlJPV1NJTkc6CisgICAgICAgIHByaXYtPmVuYWJsZV9jYXJldF9i
cm93c2luZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDYwLDYgKzQ3NCw5IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9QX0VOQUJMRV9ERVZFTE9QRVJf
RVhUUkFTOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFibGVf
ZGV2ZWxvcGVyX2V4dHJhcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVf
Q0FSRVRfQlJPV1NJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYt
PmVuYWJsZV9jYXJldF9icm93c2luZyk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQs
IHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC01MTEsNiArNTI4LDcgQEAgV2ViS2l0V2ViU2V0
dGluZ3MqIHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weShXZWJLaXRXZWJTZXR0aW5ncyogd2ViX3Nl
dHRpbmdzKQogICAgICAgICAgICAgICAgICAidXNlci1zdHlsZXNoZWV0LXVyaSIsIHByaXYtPnVz
ZXJfc3R5bGVzaGVldF91cmksCiAgICAgICAgICAgICAgICAgICJ6b29tLXN0ZXAiLCBwcml2LT56
b29tX3N0ZXAsCiAgICAgICAgICAgICAgICAgICJlbmFibGUtZGV2ZWxvcGVyLWV4dHJhcyIsIHBy
aXYtPmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzLAorICAgICAgICAgICAgICAgICAiZW5hYmxlLWNh
cmV0LWJyb3dzaW5nIiwgcHJpdi0+ZW5hYmxlX2NhcmV0X2Jyb3dzaW5nLAogICAgICAgICAgICAg
ICAgICBOVUxMKSk7CiAKICAgICByZXR1cm4gY29weTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKaW5kZXggMmM5MGI0ZS4uNDNiYzQ4ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKQEAgLTEzNzEsNyArMTM3MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191
cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBTZXR0aW5ncyogc2V0
dGluZ3MgPSBjb3JlKHdlYlZpZXcpLT5zZXR0aW5ncygpOwogCiAgICAgZ2NoYXIqIGRlZmF1bHRF
bmNvZGluZywgKmN1cnNpdmVGb250RmFtaWx5LCAqZGVmYXVsdEZvbnRGYW1pbHksICpmYW50YXN5
Rm9udEZhbWlseSwgKm1vbm9zcGFjZUZvbnRGYW1pbHksICpzYW5zU2VyaWZGb250RmFtaWx5LCAq
c2VyaWZGb250RmFtaWx5LCAqdXNlclN0eWxlc2hlZXRVcmk7Ci0gICAgZ2Jvb2xlYW4gYXV0b0xv
YWRJbWFnZXMsIGF1dG9TaHJpbmtJbWFnZXMsIHByaW50QmFja2dyb3VuZHMsIGVuYWJsZVNjcmlw
dHMsIGVuYWJsZVBsdWdpbnMsIGVuYWJsZURldmVsb3BlckV4dHJhcywgcmVzaXphYmxlVGV4dEFy
ZWFzOworICAgIGdib29sZWFuIGF1dG9Mb2FkSW1hZ2VzLCBhdXRvU2hyaW5rSW1hZ2VzLCBwcmlu
dEJhY2tncm91bmRzLCBlbmFibGVTY3JpcHRzLCBlbmFibGVQbHVnaW5zLCBlbmFibGVEZXZlbG9w
ZXJFeHRyYXMsIHJlc2l6YWJsZVRleHRBcmVhcywgZW5hYmxlQ2FyZXRCcm93c2luZzsKIAogICAg
IGdfb2JqZWN0X2dldChHX09CSkVDVCh3ZWJTZXR0aW5ncyksCiAgICAgICAgICAgICAgICAgICJk
ZWZhdWx0LWVuY29kaW5nIiwgJmRlZmF1bHRFbmNvZGluZywKQEAgLTEzODksNiArMTM4OSw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAgICAgICAgICAgICAgICAgInJlc2l6YWJsZS10ZXh0LWFyZWFzIiwgJnJl
c2l6YWJsZVRleHRBcmVhcywKICAgICAgICAgICAgICAgICAgInVzZXItc3R5bGVzaGVldC11cmki
LCAmdXNlclN0eWxlc2hlZXRVcmksCiAgICAgICAgICAgICAgICAgICJlbmFibGUtZGV2ZWxvcGVy
LWV4dHJhcyIsICZlbmFibGVEZXZlbG9wZXJFeHRyYXMsCisgICAgICAgICAgICAgICAgICJlbmFi
bGUtY2FyZXQtYnJvd3NpbmciLCAmZW5hYmxlQ2FyZXRCcm93c2luZywKICAgICAgICAgICAgICAg
ICAgTlVMTCk7CiAKICAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoZGVm
YXVsdEVuY29kaW5nKTsKQEAgLTE0MDYsNiArMTQwNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBzZXR0
aW5ncy0+c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHJlc2l6YWJsZVRleHRBcmVhcyk7CiAgICAg
c2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oS1VSTCh1c2VyU3R5bGVzaGVldFVy
aSkpOwogICAgIHNldHRpbmdzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKGVuYWJsZURldmVs
b3BlckV4dHJhcyk7CisgICAgc2V0dGluZ3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGVuYWJs
ZUNhcmV0QnJvd3NpbmcpOwogCiAgICAgZ19mcmVlKGRlZmF1bHRFbmNvZGluZyk7CiAgICAgZ19m
cmVlKGN1cnNpdmVGb250RmFtaWx5KTsKQEAgLTE0NjYsNiArMTQ2OCw4IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3RpZnkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNl
dHRpbmdzLCBHUGFyCiAgICAgICAgIHNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
KEtVUkwoZ192YWx1ZV9nZXRfc3RyaW5nKCZ2YWx1ZSkpKTsKICAgICBlbHNlIGlmIChuYW1lID09
IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiKSkKICAgICAgICAgc2V0
dGluZ3MtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFs
dWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IGdfaW50ZXJuX3N0cmluZygiZW5hYmxlLWNhcmV0
LWJyb3dzaW5nIikpCisgICAgICAgIHNldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChn
X3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwogICAgIGVsc2UgaWYgKCFnX29iamVjdF9jbGFz
c19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyh3ZWJTZXR0aW5ncyksIG5hbWUpKQog
ICAgICAgICBnX3dhcm5pbmcoIlVuZXhwZWN0ZWQgc2V0dGluZyAnJXMnIiwgbmFtZSk7CiAgICAg
Z192YWx1ZV91bnNldCgmdmFsdWUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvR3RrTGF1bmNo
ZXIvbWFpbi5jIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IDhlZDI2OTAu
LjllODgzNzcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYworKysg
Yi9XZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKQEAgLTE5Miw2ICsxOTIsMTAgQEAgbWFp
biAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBtYWluX3dpbmRvdyA9IGNyZWF0ZV93aW5k
b3cgKCk7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKG1haW5fd2luZG93
KSwgdmJveCk7CiAKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogd2ViX3NldHRpbmdzID0gd2Via2l0
X3dlYl9zZXR0aW5nc19uZXcgKCk7CisgICAgZ19vYmplY3Rfc2V0IChHX09CSkVDVCAod2ViX3Nl
dHRpbmdzKSwgImVuYWJsZS1jYXJldC1icm93c2luZyIsIGdfZ2V0ZW52ICgiV0VCS0lUX0NBUkVU
IikgPyBUUlVFIDogRkFMU0UsIE5VTEwpOworICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGlu
Z3MgKHdlYl92aWV3LCB3ZWJfc2V0dGluZ3MpOworCiAgICAgZ2NoYXIqIHVyaSA9IChnY2hhciop
IChhcmdjID4gMSA/IGFyZ3ZbMV0gOiAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIpOwogICAgIHdl
YmtpdF93ZWJfdmlld19vcGVuICh3ZWJfdmlldywgdXJpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27035</attachid>
            <date>2009-01-26 07:53:56 -0800</date>
            <delta_ts>2009-01-27 06:15:18 -0800</delta_ts>
            <desc>0001-Update-alp-s-patch-to-trunk.patch</desc>
            <filename>0001-Update-alp-s-patch-to-trunk.patch</filename>
            <type>text/plain</type>
            <size>19583</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBmMzJjNjcwZTIzOTg1ZDQwOWU0MDYxZjFkNzgyYjM4ZjdiNTMzODIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CkRhdGU6IE1vbiwg
MjYgSmFuIDIwMDkgMTc6NTA6MDMgKzAyMDAKU3ViamVjdDogW1BBVENIXSBVcGRhdGUgYWxwJ3Mg
cGF0Y2ggdG8gdHJ1bmsuCgotLS0KIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwICAgICAg
ICAgICAgICAgICB8ICAgIDMgKy0KIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwICAg
ICAgICAgICAgICB8ICAgMzEgKysrKysrKysrKysrKysrKysrKysrLS0tCiBXZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI0ICsrKysrKysrKysrKysrKyst
LS0KIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYg
KysrKysKIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDYgKysrKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCAgICAgICAgICAgICB8
ICAgIDYgKysrLQogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3Bw
IHwgICAgOSArKysrLS0tCiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAg
ICAgICAgfCAgIDIwICsrKysrKysrKysrKysrKy0KIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwICAgICAgICAgICB8ICAgIDYgKysrKy0KIFdlYktpdFRvb2xzL0d0a0xhdW5jaGVy
L21haW4uYyAgICAgICAgICAgICAgICB8ICAgIDkgKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwg
MTAyIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggMTRjOTc5YS4uMTczNDgyZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTU1Nyw3ICs1NTcs
OCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZQogICAgICAgICAgICAgJiYgbV9mcmFtZS0+c2Vs
ZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBTZWxlY3Rpb24gbmV3U2VsZWN0aW9uOwog
ICAgICAgICBOb2RlICpub2RlID0gZXZlbnQudGFyZ2V0Tm9kZSgpOwotICAgICAgICBpZiAobm9k
ZSAmJiBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpICYmIG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAg
ICAgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS0+c2V0dGluZ3MoKS0+Y2FyZXRCcm93
c2luZ0VuYWJsZWQoKTsKKyAgICAgICAgaWYgKG5vZGUgJiYgKGNhcmV0QnJvd3NpbmcgfHwgbm9k
ZS0+aXNDb250ZW50RWRpdGFibGUoKSkgJiYgbm9kZS0+cmVuZGVyZXIoKSkgewogICAgICAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHBvcyA9IG5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9p
bnQoZXZlbnQubG9jYWxQb2ludCgpKTsKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFNlbGVj
dGlvbihwb3MpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDliMzAz
NjIuLjQxMTAzYTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNiArNDYsNyBAQAogI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkBAIC0xMTgsOSArMTIwLDE2IEBAIGJvb2wgRm9jdXND
b250cm9sbGVyOjphZHZhbmNlRm9jdXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2Fy
ZEV2ZW50KiBldmVuCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgTm9kZSogY3VycmVudE5vZGUgPSBkb2N1bWVudC0+Zm9jdXNlZE5vZGUoKTsKKyAgICAv
LyBGSVhNRTogTm90IHF1aXRlIGNvcnJlY3Qgd2hlbiBpdCBjb21lcyB0byBmb2N1cyB0cmFuc2l0
aW9ucyBsZWF2aW5nL2VudGVyaW5nIHRoZSBXZWJWaWV3IGl0c2VsZgorICAgIGJvb2wgY2FyZXRC
cm93c2luZyA9IGZvY3VzZWRPck1haW5GcmFtZSgpLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5n
RW5hYmxlZCgpOworCisgICAgaWYgKGNhcmV0QnJvd3NpbmcgJiYgIWN1cnJlbnROb2RlKQorICAg
ICAgICBjdXJyZW50Tm9kZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+c3RhcnQoKS5ub2RlKCk7CisK
ICAgICBOb2RlKiBub2RlID0gKGRpcmVjdGlvbiA9PSBGb2N1c0RpcmVjdGlvbkZvcndhcmQpCi0g
ICAgICAgID8gZG9jdW1lbnQtPm5leHRGb2N1c2FibGVOb2RlKGRvY3VtZW50LT5mb2N1c2VkTm9k
ZSgpLCBldmVudCkKLSAgICAgICAgOiBkb2N1bWVudC0+cHJldmlvdXNGb2N1c2FibGVOb2RlKGRv
Y3VtZW50LT5mb2N1c2VkTm9kZSgpLCBldmVudCk7CisgICAgICAgID8gZG9jdW1lbnQtPm5leHRG
b2N1c2FibGVOb2RlKGN1cnJlbnROb2RlLCBldmVudCkKKyAgICAgICAgOiBkb2N1bWVudC0+cHJl
dmlvdXNGb2N1c2FibGVOb2RlKGN1cnJlbnROb2RlLCBldmVudCk7CiAgICAgICAgICAgICAKICAg
ICAvLyBJZiB0aGVyZSdzIG5vIGZvY3VzYWJsZSBub2RlIHRvIGFkdmFuY2UgdG8sIG1vdmUgdXAg
dGhlIGZyYW1lIHRyZWUgdW50aWwgd2UgZmluZCBvbmUuCiAgICAgd2hpbGUgKCFub2RlICYmIGZy
YW1lKSB7CkBAIC0yMDEsNiArMjEwLDE1IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNl
Rm9jdXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVuCiAgICAg
aWYgKG5ld0RvY3VtZW50KQogICAgICAgICBzZXRGb2N1c2VkRnJhbWUobmV3RG9jdW1lbnQtPmZy
YW1lKCkpOwogCisgICAgaWYgKGNhcmV0QnJvd3NpbmcpIHsKKyAgICAgICAgU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbihQb3NpdGlvbihub2RlLCAwKSwgUG9zaXRpb24obm9kZSwgMCksIERPV05TVFJF
QU0pOworICAgICAgICBpZiAoZnJhbWUtPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rp
b24pKSB7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdT
ZWxlY3Rpb24pOworICAgICAgICAgICAgLy8gV2h5IGlzIHRoaXMgcmV2ZWFsU2VsZWN0aW9uKCkg
bmVjZXNzYXJ5PworICAgICAgICAgICAgZnJhbWUtPnJldmVhbFNlbGVjdGlvbigpOworICAgICAg
ICB9CisgICAgfQorCiAgICAgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5mb2N1cyhmYWxz
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMjksNyArMjQ3LDExIEBAIHN0YXRpYyB2b2lk
IGNsZWFyU2VsZWN0aW9uSWZOZWVkZWQoRnJhbWUqIG9sZEZvY3VzZWRGcmFtZSwgRnJhbWUqIG5l
d0ZvY3VzZWRGcmFtCiAgICAgU2VsZWN0aW9uQ29udHJvbGxlciogcyA9IG9sZEZvY3VzZWRGcmFt
ZS0+c2VsZWN0aW9uKCk7CiAgICAgaWYgKHMtPmlzTm9uZSgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCisKKyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBvbGRGb2N1c2VkRnJhbWUtPnNldHRpbmdz
KCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7ICAgIAorICAgIGlmIChjYXJldEJyb3dzaW5nKQor
ICAgICAgICByZXR1cm47CisKICAgICBOb2RlKiBzZWxlY3Rpb25TdGFydE5vZGUgPSBzLT5zZWxl
Y3Rpb24oKS5zdGFydCgpLm5vZGUoKTsKICAgICBpZiAoc2VsZWN0aW9uU3RhcnROb2RlID09IG5l
d0ZvY3VzZWROb2RlIHx8IHNlbGVjdGlvblN0YXJ0Tm9kZS0+aXNEZXNjZW5kYW50T2YobmV3Rm9j
dXNlZE5vZGUpIHx8IHNlbGVjdGlvblN0YXJ0Tm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCkgPT0g
bmV3Rm9jdXNlZE5vZGUpCiAgICAgICAgIHJldHVybjsKQEAgLTI1NCw3ICsyNzYsOCBAQCBib29s
IEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZE5vZGUoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxG
cmFtZT4gbmV3Rm9jdXNlZEZyYQogICAgIE5vZGUqIG9sZEZvY3VzZWROb2RlID0gb2xkRG9jdW1l
bnQgPyBvbGREb2N1bWVudC0+Zm9jdXNlZE5vZGUoKSA6IDA7CiAgICAgaWYgKG9sZEZvY3VzZWRO
b2RlID09IG5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAKKworICAgIC8vIEZJ
WE1FOiBNaWdodCB3YW50IHRvIGRpc2FibGUgdGhpcyBjaGVjayBmb3IgY2FyZXRCcm93c2luZwog
ICAgIGlmIChvbGRGb2N1c2VkTm9kZSAmJiBvbGRGb2N1c2VkTm9kZS0+cm9vdEVkaXRhYmxlRWxl
bWVudCgpID09IG9sZEZvY3VzZWROb2RlICYmICFyZWxpbnF1aXNoZXNFZGl0aW5nRm9jdXMob2xk
Rm9jdXNlZE5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXgg
OTEwZmNiZC4uNDQxYjQzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysg
Yi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAiVGV4
dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAibnBy
dW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKICNpbmNsdWRlICJ2aXNp
YmxlX3VuaXRzLmgiCkBAIC01NjksNiArNTcwLDE1IEBAIHZvaWQgRnJhbWU6OnNldEZvY3VzZWRO
b2RlSWZOZWVkZWQoKQogICAgIGlmICghZG9jdW1lbnQoKSB8fCBzZWxlY3Rpb24oKS0+aXNOb25l
KCkgfHwgIXNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gc2V0dGluZ3MoKSAmJiBzZXR0aW5ncygpLT5j
YXJldEJyb3dzaW5nRW5hYmxlZCgpOworICAgIGlmIChjYXJldEJyb3dzaW5nKSB7CisgICAgICAg
IE5vZGUqIGFuY2hvciA9IGVuY2xvc2luZ0FuY2hvckVsZW1lbnQoc2VsZWN0aW9uKCktPmJhc2Uo
KSk7CisgICAgICAgIGlmIChhbmNob3IpIHsKKyAgICAgICAgICAgIHBhZ2UoKS0+Zm9jdXNDb250
cm9sbGVyKCktPnNldEZvY3VzZWROb2RlKGFuY2hvciwgdGhpcyk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBOb2RlKiB0YXJnZXQgPSBzZWxlY3Rpb24oKS0+
cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmICh0YXJnZXQpIHsKICAgICAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHRhcmdldC0+cmVuZGVyZXIoKTsKQEAgLTU4OSw2ICs1OTksOSBA
QCB2b2lkIEZyYW1lOjpzZXRGb2N1c2VkTm9kZUlmTmVlZGVkKCkKICAgICAgICAgfQogICAgICAg
ICBkb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZSgwKTsKICAgICB9CisKKyAgICBpZiAoY2FyZXRC
cm93c2luZykKKyAgICAgICAgcGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZE5v
ZGUoMCwgdGhpcyk7CiB9CiAKIHZvaWQgRnJhbWU6OnNlbGVjdGlvbkxheW91dENoYW5nZWQoKQpA
QCAtNTk2LDggKzYwOSw5IEBAIHZvaWQgRnJhbWU6OnNlbGVjdGlvbkxheW91dENoYW5nZWQoKQog
ICAgIGJvb2wgY2FyZXRSZWN0Q2hhbmdlZCA9IHNlbGVjdGlvbigpLT5yZWNvbXB1dGVDYXJldFJl
Y3QoKTsKIAogI2lmIEVOQUJMRShURVhUX0NBUkVUKQorICAgIGJvb2wgY2FyZXRCcm93c2luZyA9
IHNldHRpbmdzKCkgJiYgc2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKICAgICBi
b29sIHNob3VsZEJsaW5rID0gbV9jYXJldFZpc2libGUKLSAgICAgICAgJiYgc2VsZWN0aW9uKCkt
PmlzQ2FyZXQoKSAmJiBzZWxlY3Rpb24oKS0+aXNDb250ZW50RWRpdGFibGUoKTsKKyAgICAgICAg
JiYgc2VsZWN0aW9uKCktPmlzQ2FyZXQoKSAmJiAoc2VsZWN0aW9uKCktPmlzQ29udGVudEVkaXRh
YmxlKCkgfHwgY2FyZXRCcm93c2luZyk7CiAKICAgICAvLyBJZiB0aGUgY2FyZXQgbW92ZWQsIHN0
b3AgdGhlIGJsaW5rIHRpbWVyIHNvIHdlIGNhbiByZXN0YXJ0IHdpdGggYQogICAgIC8vIGJsYWNr
IGNhcmV0IGluIHRoZSBuZXcgbG9jYXRpb24uCkBAIC0xNDU0LDcgKzE0NjgsOCBAQCB2b2lkIEZy
YW1lOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAgICAgLy8gUHV0IGEgY2FyZXQgaW5zaWRlIHRo
ZSBib2R5IGlmIHRoZSBlbnRpcmUgZnJhbWUgaXMgZWRpdGFibGUgKGVpdGhlciB0aGUgCiAgICAg
Ly8gZW50aXJlIFdlYlZpZXcgaXMgZWRpdGFibGUgb3IgZGVzaWduTW9kZSBpcyBvbiBmb3IgdGhp
cyBkb2N1bWVudCkuCiAgICAgRG9jdW1lbnQgKmRvYyA9IGRvY3VtZW50KCk7Ci0gICAgaWYgKCFk
b2MgfHwgIXNlbGVjdGlvbigpLT5pc05vbmUoKSB8fCAhaXNDb250ZW50RWRpdGFibGUoKSkKKyAg
ICBib29sIGNhcmV0QnJvd3NpbmcgPSBzZXR0aW5ncygpICYmIHNldHRpbmdzKCktPmNhcmV0QnJv
d3NpbmdFbmFibGVkKCk7CisgICAgaWYgKCFkb2MgfHwgIXNlbGVjdGlvbigpLT5pc05vbmUoKSB8
fCAhKGlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZykpCiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCiAgICAgTm9kZSogbm9kZSA9IGRvYy0+ZG9jdW1lbnRFbGVtZW50KCk7CkBA
IC0xNzgwLDcgKzE3OTUsOCBAQCB2b2lkIEZyYW1lOjpyZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9u
KGNvbnN0IFNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBib29sIGNsb3NlVAogICAgICAgICBpZiAo
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpIHsKICAgICAgICAgICAgIFNlbGVjdGlv
biBuZXdBZGphY2VudFdvcmRzOwogICAgICAgICAgICAgU2VsZWN0aW9uIG5ld1NlbGVjdGVkU2Vu
dGVuY2U7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLmlzQ29udGVu
dEVkaXRhYmxlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IHNldHRpbmdz
KCkgJiYgc2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKKyAgICAgICAgICAgIGlm
IChzZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSB8fCBjYXJldEJy
b3dzaW5nKSB7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIG5ld1N0YXJ0KHNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7CiAgICAgICAgICAgICAgICAgbmV3
QWRqYWNlbnRXb3JkcyA9IFNlbGVjdGlvbihzdGFydE9mV29yZChuZXdTdGFydCwgTGVmdFdvcmRJ
Zk9uQm91bmRhcnkpLCBlbmRPZldvcmQobmV3U3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkp
OwogICAgICAgICAgICAgICAgIGlmIChpc0NvbnRpbnVvdXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
KQpAQCAtMTc5MCw3ICsxODA2LDcgQEAgdm9pZCBGcmFtZTo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVj
dGlvbihjb25zdCBTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgYm9vbCBjbG9zZVQKICAgICAgICAg
ICAgIC8vIFdoZW4gdHlwaW5nIHdlIGNoZWNrIHNwZWxsaW5nIGVsc2V3aGVyZSwgc28gZG9uJ3Qg
cmVkbyBpdCBoZXJlLgogICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGNoYW5nZSBpbiBzZWxl
Y3Rpb24gcmVzdWx0aW5nIGZyb20gYSBkZWxldGUgb3BlcmF0aW9uLAogICAgICAgICAgICAgLy8g
b2xkU2VsZWN0aW9uIG1heSBubyBsb25nZXIgYmUgaW4gdGhlIGRvY3VtZW50LgotICAgICAgICAg
ICAgaWYgKGNsb3NlVHlwaW5nICYmIG9sZFNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpICYm
IG9sZFNlbGVjdGlvbi5zdGFydCgpLm5vZGUoKSAmJiBvbGRTZWxlY3Rpb24uc3RhcnQoKS5ub2Rl
KCktPmluRG9jdW1lbnQoKSkgeworICAgICAgICAgICAgaWYgKGNsb3NlVHlwaW5nICYmIChvbGRT
ZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSB8fCBjYXJldEJyb3dzaW5nKSAmJiBvbGRTZWxl
Y3Rpb24uc3RhcnQoKS5ub2RlKCkgJiYgb2xkU2VsZWN0aW9uLnN0YXJ0KCkubm9kZSgpLT5pbkRv
Y3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gb2xkU3RhcnQob2xk
U2VsZWN0aW9uLnZpc2libGVTdGFydCgpKTsKICAgICAgICAgICAgICAgICBTZWxlY3Rpb24gb2xk
QWRqYWNlbnRXb3JkcyA9IFNlbGVjdGlvbihzdGFydE9mV29yZChvbGRTdGFydCwgTGVmdFdvcmRJ
Zk9uQm91bmRhcnkpLCBlbmRPZldvcmQob2xkU3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkp
OyAgIAogICAgICAgICAgICAgICAgIGlmIChvbGRBZGphY2VudFdvcmRzICE9IG5ld0FkamFjZW50
V29yZHMpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDllNGI3YjUuLjBlMzdiYjIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApA
QCAtODUsNiArODUsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1f
em9vbXNUZXh0T25seShmYWxzZSkKICAgICAsIG1fZW5mb3JjZUNTU01JTUVUeXBlSW5TdHJpY3RN
b2RlKHRydWUpCiAgICAgLCBtX21heGltdW1EZWNvZGVkSW1hZ2VTaXplKHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpCisgICAgLCBtX2NhcmV0QnJvd3NpbmdFbmFibGVkKGZhbHNl
KQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdl
IGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAgICAvLyBoYXNoIGJlZm9yZSB0cnlpbmcg
dG8gdXNlIGl0LgpAQCAtNDA1LDQgKzQwNiw5IEBAIHZvaWQgU2V0dGluZ3M6OnNldFNob3VsZFBh
aW50TmF0aXZlQ29udHJvbHMoYm9vbCBzaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzKQogfQogI2Vu
ZGlmCiAKK3ZvaWQgU2V0dGluZ3M6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wgY2FyZXRC
cm93c2luZ0VuYWJsZWQpCit7CisgICAgbV9jYXJldEJyb3dzaW5nRW5hYmxlZCA9IGNhcmV0QnJv
d3NpbmdFbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGQ0
NmEzYzYuLjdlOGY4YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBi
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0xMDYsNyArMTA2LDEwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCk7
CiAgICAgICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsgfQotICAgICAgICAKKworICAgICAgICB2b2lkIHNldENh
cmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgICAgICBib29sIGNhcmV0QnJvd3NpbmdFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYXJldEJyb3dzaW5nRW5hYmxlZDsgfQorCiAgICAgICAg
IHZvaWQgc2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBt
X2RlZmF1bHRUZXh0RW5jb2RpbmdOYW1lOyB9CiAKQEAgLTIyMSw2ICsyMjQsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0phdmFFbmFibGVkIDogMTsKICAgICAgICAg
Ym9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7CiAgICAgICAgIGJvb2wgbV9wcml2
YXRlQnJvd3NpbmdFbmFibGVkIDogMTsKKyAgICAgICAgYm9vbCBtX2NhcmV0QnJvd3NpbmdFbmFi
bGVkIDogMTsKICAgICAgICAgYm9vbCBtX2FyZVBsdWdpbnNFbmFibGVkIDogMTsKICAgICAgICAg
Ym9vbCBtX2RhdGFiYXNlc0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fbG9jYWxTdG9yYWdl
RW5hYmxlZCA6IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZjEwYWY3My4uODE2
ZjE5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzksNiArMzksNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTE2NjYsOSAr
MTY2NywxMCBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENhcmV0KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBpbnQgdHgsIGludCB0eSwgQ2FyZXRUeXBlIHR5cAogewogICAgIFNlbGVjdGlvbkNvbnRy
b2xsZXIqIHNlbGVjdGlvbiA9IHR5cGUgPT0gQ3Vyc29yQ2FyZXQgPyBkb2N1bWVudCgpLT5mcmFt
ZSgpLT5zZWxlY3Rpb24oKSA6IGRvY3VtZW50KCktPmZyYW1lKCktPmRyYWdDYXJldENvbnRyb2xs
ZXIoKTsKIAotICAgIC8vIEFzayB0aGUgU2VsZWN0aW9uQ29udHJvbGxlciBpZiB0aGUgY2FyZXQg
c2hvdWxkIGJlIHBhaW50ZWQgYnkgdGhpcyBibG9jaworICAgIC8vIFBhaW50IHRoZSBjYXJldCBp
ZiB0aGUgU2VsZWN0aW9uQ29udHJvbGxlciBzYXlzIHNvIG9yIGlmIGNhcmV0IGJyb3dzaW5nIGlz
IGVuYWJsZWQKKyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5z
ZXR0aW5ncygpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnNldHRpbmdzKCktPmNhcmV0QnJvd3Np
bmdFbmFibGVkKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBjYXJldFBhaW50ZXIgPSBzZWxlY3Rpb24t
PmNhcmV0UmVuZGVyZXIoKTsKLSAgICBpZiAoY2FyZXRQYWludGVyID09IHRoaXMgJiYgc2VsZWN0
aW9uLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CisgICAgaWYgKGNhcmV0UGFpbnRlciA9PSB0aGlz
ICYmIChzZWxlY3Rpb24tPmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZykpIHsK
ICAgICAgICAgLy8gQ29udmVydCB0aGUgcGFpbnRpbmcgb2Zmc2V0IGludG8gdGhlIGxvY2FsIGNv
b3JkaW5hdGUgc3lzdGVtIG9mIHRoaXMgcmVuZGVyZXIsCiAgICAgICAgIC8vIHRvIG1hdGNoIHRo
ZSBsb2NhbENhcmV0UmVjdCBjb21wdXRlZCBieSB0aGUgU2VsZWN0aW9uQ29udHJvbGxlcgogICAg
ICAgICBvZmZzZXRGb3JDb250ZW50cyh0eCwgdHkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IGUwOTE3OGUuLmI2MjI1ZmUgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKQEAgLTMxOCw4ICsz
MTgsMTAgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OnRvZ2dsZUdyYW1tYXJDaGVja2luZygpCiAKIHZv
aWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50
KQogeworICAgIC8vIEZJWE1FOiBDbGVhbiB1cCB0aGlzIGZ1bmN0aW9uIGZvbGxvd2luZyBjYXJl
dCBicm93c2luZyBjaGFuZ2VzIGVuc3VyaW5nCisgICAgLy8gdGhhdCB1bmhhbmRsZWQgZXZlbnRz
IGFyZSBub3QgbWFya2VkIGFzIGJlaW5nIGhhbmRsZWQuCiAgICAgRnJhbWUqIGZyYW1lID0gY29y
ZShtX3dlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0g
ICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCkpCisgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KiBrZXZlbnQgPSBldmVudC0+a2V5RXZlbnQoKTsKQEAgLTMyNywxMyArMzI5LDEyIEBA
IHZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBOb2RlKiBzdGFydCA9IGZyYW1lLT5zZWxlY3Rp
b24oKS0+c3RhcnQoKS5ub2RlKCk7Ci0gICAgaWYgKCFzdGFydCkKLSAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gRklYTUU6IFVzZSBHdGtCaW5kaW5nU2V0IGluc3RlYWQgb2YgdGhpcyBoYXJkLWNv
ZGVkIHN3aXRjaAogICAgIC8vIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1OTExCiAKLSAgICBpZiAoc3RhcnQtPmlzQ29udGVudEVkaXRhYmxlKCkpIHsKKyAgICBib29s
IGNhcmV0QnJvd3NpbmcgPSBmcmFtZS0+c2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQo
KTsKKyAgICBpZiAoc3RhcnQgJiYgc3RhcnQtPmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRC
cm93c2luZykgewogICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2Rl
KCkpIHsKICAgICAgICAgICAgIGNhc2UgVktfQkFDSzoKICAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dB
UkQsCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKaW5kZXggYWEzOGM2Yy4u
YjRjZmIyMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Mu
Y3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtNzQs
NiArNzQsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAgICAgZ2NoYXIq
IHVzZXJfc3R5bGVzaGVldF91cmk7CiAgICAgZ2Zsb2F0IHpvb21fc3RlcDsKICAgICBnYm9vbGVh
biBlbmFibGVfZGV2ZWxvcGVyX2V4dHJhczsKKyAgICBnYm9vbGVhbiBlbmFibGVfY2FyZXRfYnJv
d3Npbmc7CiB9OwogCiAjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX1BSSVZBVEUob2Jq
KSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VU
VElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpCkBAIC0xMDEsNyArMTAyLDggQEAgZW51
bSB7CiAgICAgUFJPUF9SRVNJWkFCTEVfVEVYVF9BUkVBUywKICAgICBQUk9QX1VTRVJfU1RZTEVT
SEVFVF9VUkksCiAgICAgUFJPUF9aT09NX1NURVAsCi0gICAgUFJPUF9FTkFCTEVfREVWRUxPUEVS
X0VYVFJBUworICAgIFBST1BfRU5BQkxFX0RFVkVMT1BFUl9FWFRSQVMsCisgICAgUFJPUF9FTkFC
TEVfQ0FSRVRfQlJPV1NJTkcKIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKQEAgLTMzNSw2ICszMzcsMTUgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFdlYlNldHRpbmdzQ2xhc3Mq
IGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwogCisgICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfQ0FSRVRfQlJPV1NJTkcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWNh
cmV0LWJyb3dzaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJFbmFibGUgQ2FyZXQgQnJvd3NpbmciLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldoZXRoZXIgdG8gZW5h
YmxlIGFjY2VzaWJpbGl0eSBlbmhhbmNlZCBrZXlib2FyZCBuYXZpZ2F0aW9uIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAorCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2Yo
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSk7CiB9CiAKQEAgLTQzNyw2ICs0NDgsOSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9FTkFCTEVfREVWRUxPUEVSX0VYVFJB
UzoKICAgICAgICAgcHJpdi0+ZW5hYmxlX2RldmVsb3Blcl9leHRyYXMgPSBnX3ZhbHVlX2dldF9i
b29sZWFuKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9DQVJF
VF9CUk9XU0lORzoKKyAgICAgICAgcHJpdi0+ZW5hYmxlX2NhcmV0X2Jyb3dzaW5nID0gZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBz
cGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC01MTIsNiArNTI2LDkgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
X2lkLCBHVmEKICAgICBjYXNlIFBST1BfRU5BQkxFX0RFVkVMT1BFUl9FWFRSQVM6CiAgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFz
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9DQVJFVF9CUk9XU0lORzoK
KyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlX2NhcmV0X2Jy
b3dzaW5nKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAg
ICBicmVhazsKQEAgLTU2Myw2ICs1ODAsNyBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Via2l0X3dl
Yl9zZXR0aW5nc19jb3B5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGluZ3MpCiAgICAgICAg
ICAgICAgICAgICJ1c2VyLXN0eWxlc2hlZXQtdXJpIiwgcHJpdi0+dXNlcl9zdHlsZXNoZWV0X3Vy
aSwKICAgICAgICAgICAgICAgICAgInpvb20tc3RlcCIsIHByaXYtPnpvb21fc3RlcCwKICAgICAg
ICAgICAgICAgICAgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIiwgcHJpdi0+ZW5hYmxlX2RldmVs
b3Blcl9leHRyYXMsCisgICAgICAgICAgICAgICAgICJlbmFibGUtY2FyZXQtYnJvd3NpbmciLCBw
cml2LT5lbmFibGVfY2FyZXRfYnJvd3NpbmcsCiAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIAog
ICAgIHJldHVybiBjb3B5OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAwZWE2
ZWQ1Li43NjcxOGM0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMTYyNSw3
ICsxNjI1LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGNvcmUod2Vi
VmlldyktPnNldHRpbmdzKCk7CiAKICAgICBnY2hhciogZGVmYXVsdEVuY29kaW5nLCAqY3Vyc2l2
ZUZvbnRGYW1pbHksICpkZWZhdWx0Rm9udEZhbWlseSwgKmZhbnRhc3lGb250RmFtaWx5LCAqbW9u
b3NwYWNlRm9udEZhbWlseSwgKnNhbnNTZXJpZkZvbnRGYW1pbHksICpzZXJpZkZvbnRGYW1pbHks
ICp1c2VyU3R5bGVzaGVldFVyaTsKLSAgICBnYm9vbGVhbiBhdXRvTG9hZEltYWdlcywgYXV0b1No
cmlua0ltYWdlcywgcHJpbnRCYWNrZ3JvdW5kcywgZW5hYmxlU2NyaXB0cywgZW5hYmxlUGx1Z2lu
cywgZW5hYmxlRGV2ZWxvcGVyRXh0cmFzLCByZXNpemFibGVUZXh0QXJlYXM7CisgICAgZ2Jvb2xl
YW4gYXV0b0xvYWRJbWFnZXMsIGF1dG9TaHJpbmtJbWFnZXMsIHByaW50QmFja2dyb3VuZHMsIGVu
YWJsZVNjcmlwdHMsIGVuYWJsZVBsdWdpbnMsIGVuYWJsZURldmVsb3BlckV4dHJhcywgcmVzaXph
YmxlVGV4dEFyZWFzLCBlbmFibGVDYXJldEJyb3dzaW5nOwogCiAgICAgZ19vYmplY3RfZ2V0KHdl
YlNldHRpbmdzLAogICAgICAgICAgICAgICAgICAiZGVmYXVsdC1lbmNvZGluZyIsICZkZWZhdWx0
RW5jb2RpbmcsCkBAIC0xNjQzLDYgKzE2NDMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgICAgICAg
ICAgICJyZXNpemFibGUtdGV4dC1hcmVhcyIsICZyZXNpemFibGVUZXh0QXJlYXMsCiAgICAgICAg
ICAgICAgICAgICJ1c2VyLXN0eWxlc2hlZXQtdXJpIiwgJnVzZXJTdHlsZXNoZWV0VXJpLAogICAg
ICAgICAgICAgICAgICAiZW5hYmxlLWRldmVsb3Blci1leHRyYXMiLCAmZW5hYmxlRGV2ZWxvcGVy
RXh0cmFzLAorICAgICAgICAgICAgICAgICAiZW5hYmxlLWNhcmV0LWJyb3dzaW5nIiwgJmVuYWJs
ZUNhcmV0QnJvd3NpbmcsCiAgICAgICAgICAgICAgICAgIE5VTEwpOwogCiAgICAgc2V0dGluZ3Mt
PnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKGRlZmF1bHRFbmNvZGluZyk7CkBAIC0xNjYwLDYg
KzE2NjEsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgc2V0dGluZ3MtPnNldFRleHRBcmVhc0FyZVJlc2l6
YWJsZShyZXNpemFibGVUZXh0QXJlYXMpOwogICAgIHNldHRpbmdzLT5zZXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKEtVUkwodXNlclN0eWxlc2hlZXRVcmkpKTsKICAgICBzZXR0aW5ncy0+c2V0RGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZChlbmFibGVEZXZlbG9wZXJFeHRyYXMpOworICAgIHNldHRpbmdz
LT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChlbmFibGVDYXJldEJyb3dzaW5nKTsKIAogICAgIGdf
ZnJlZShkZWZhdWx0RW5jb2RpbmcpOwogICAgIGdfZnJlZShjdXJzaXZlRm9udEZhbWlseSk7CkBA
IC0xNzI4LDYgKzE3MzAsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nf
bm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncywgR1BhcgogICAgICAgICBzZXR0
aW5ncy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihLVVJMKGdfdmFsdWVfZ2V0X3N0cmluZygm
dmFsdWUpKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1k
ZXZlbG9wZXItZXh0cmFzIikpCiAgICAgICAgIHNldHRpbmdzLT5zZXREZXZlbG9wZXJFeHRyYXNF
bmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9
PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1jYXJldC1icm93c2luZyIpKQorICAgICAgICBzZXR0
aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoZ192YWx1ZV9nZXRfYm9vbGVhbigmdmFsdWUp
KTsKICAgICBlbHNlIGlmICghZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eShHX09CSkVDVF9H
RVRfQ0xBU1Mod2ViU2V0dGluZ3MpLCBuYW1lKSkKICAgICAgICAgZ193YXJuaW5nKCJVbmV4cGVj
dGVkIHNldHRpbmcgJyVzJyIsIG5hbWUpOwogICAgIGdfdmFsdWVfdW5zZXQoJnZhbHVlKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyBiL1dlYktpdFRvb2xzL0d0
a0xhdW5jaGVyL21haW4uYwppbmRleCA4ZWQyNjkwLi5mZDhhZWUxIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIv
bWFpbi5jCkBAIC0xODIsNiArMTgyLDkgQEAgY3JlYXRlX3dpbmRvdyAoKQogaW50CiBtYWluIChp
bnQgYXJnYywgY2hhciogYXJndltdKQogeworICAgIGlmICghZ190aHJlYWRfc3VwcG9ydGVkICgp
KQorICAgICAgICBnX3RocmVhZF9pbml0IChOVUxMKTsKKwogICAgIGd0a19pbml0ICgmYXJnYywg
JmFyZ3YpOwogCiAgICAgR3RrV2lkZ2V0KiB2Ym94ID0gZ3RrX3Zib3hfbmV3IChGQUxTRSwgMCk7
CkBAIC0xOTIsNiArMTk1LDEyIEBAIG1haW4gKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAg
bWFpbl93aW5kb3cgPSBjcmVhdGVfd2luZG93ICgpOwogICAgIGd0a19jb250YWluZXJfYWRkIChH
VEtfQ09OVEFJTkVSIChtYWluX3dpbmRvdyksIHZib3gpOwogCisgICAgV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcgKCk7CisgICAgZ19vYmplY3Rf
c2V0IChzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICJlbmFibGUtY2FyZXQtYnJvd3Npbmci
LCBnX2dldGVudiAoIldFQktJVF9DQVJFVCIpID8gVFJVRSA6IEZBTFNFLAorICAgICAgICAgICAg
ICAgICAgTlVMTCk7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAod2ViX3ZpZXcs
IHNldHRpbmdzKTsKKwogICAgIGdjaGFyKiB1cmkgPSAoZ2NoYXIqKSAoYXJnYyA+IDEgPyBhcmd2
WzFdIDogImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfb3Bl
biAod2ViX3ZpZXcsIHVyaSk7CiAKLS0gCjEuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27073</attachid>
            <date>2009-01-27 06:15:18 -0800</date>
            <delta_ts>2009-04-21 07:00:35 -0700</delta_ts>
            <desc>Caret browsing v3</desc>
            <filename>caretv3.diff</filename>
            <type>text/plain</type>
            <size>33627</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMTRjOTc5YS4uMTczNDgyZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTU1Nyw3ICs1NTcsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZQogICAgICAg
ICAgICAgJiYgbV9mcmFtZS0+c2VsZWN0aW9uKCktPmlzUmFuZ2UoKSkgewogICAgICAgICBTZWxl
Y3Rpb24gbmV3U2VsZWN0aW9uOwogICAgICAgICBOb2RlICpub2RlID0gZXZlbnQudGFyZ2V0Tm9k
ZSgpOwotICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpICYmIG5v
ZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS0+
c2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKKyAgICAgICAgaWYgKG5vZGUgJiYg
KGNhcmV0QnJvd3NpbmcgfHwgbm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkgJiYgbm9kZS0+cmVu
ZGVyZXIoKSkgewogICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyA9IG5vZGUtPnJlbmRl
cmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoZXZlbnQubG9jYWxQb2ludCgpKTsKICAgICAgICAgICAg
IG5ld1NlbGVjdGlvbiA9IFNlbGVjdGlvbihwb3MpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCmluZGV4IDliMzAzNjIuLjQxMTAzYTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRp
IEx0ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUsNiArNDYsNyBAQAog
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2lu
Y2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCkBAIC0xMTgsOSAr
MTIwLDE2IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXMoRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVuCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgTm9kZSogY3VycmVudE5vZGUgPSBkb2N1bWVudC0+
Zm9jdXNlZE5vZGUoKTsKKyAgICAvLyBGSVhNRTogTm90IHF1aXRlIGNvcnJlY3Qgd2hlbiBpdCBj
b21lcyB0byBmb2N1cyB0cmFuc2l0aW9ucyBsZWF2aW5nL2VudGVyaW5nIHRoZSBXZWJWaWV3IGl0
c2VsZgorICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IGZvY3VzZWRPck1haW5GcmFtZSgpLT5zZXR0
aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOworCisgICAgaWYgKGNhcmV0QnJvd3Npbmcg
JiYgIWN1cnJlbnROb2RlKQorICAgICAgICBjdXJyZW50Tm9kZSA9IGZyYW1lLT5zZWxlY3Rpb24o
KS0+c3RhcnQoKS5ub2RlKCk7CisKICAgICBOb2RlKiBub2RlID0gKGRpcmVjdGlvbiA9PSBGb2N1
c0RpcmVjdGlvbkZvcndhcmQpCi0gICAgICAgID8gZG9jdW1lbnQtPm5leHRGb2N1c2FibGVOb2Rl
KGRvY3VtZW50LT5mb2N1c2VkTm9kZSgpLCBldmVudCkKLSAgICAgICAgOiBkb2N1bWVudC0+cHJl
dmlvdXNGb2N1c2FibGVOb2RlKGRvY3VtZW50LT5mb2N1c2VkTm9kZSgpLCBldmVudCk7CisgICAg
ICAgID8gZG9jdW1lbnQtPm5leHRGb2N1c2FibGVOb2RlKGN1cnJlbnROb2RlLCBldmVudCkKKyAg
ICAgICAgOiBkb2N1bWVudC0+cHJldmlvdXNGb2N1c2FibGVOb2RlKGN1cnJlbnROb2RlLCBldmVu
dCk7CiAgICAgICAgICAgICAKICAgICAvLyBJZiB0aGVyZSdzIG5vIGZvY3VzYWJsZSBub2RlIHRv
IGFkdmFuY2UgdG8sIG1vdmUgdXAgdGhlIGZyYW1lIHRyZWUgdW50aWwgd2UgZmluZCBvbmUuCiAg
ICAgd2hpbGUgKCFub2RlICYmIGZyYW1lKSB7CkBAIC0yMDEsNiArMjEwLDE1IEBAIGJvb2wgRm9j
dXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXli
b2FyZEV2ZW50KiBldmVuCiAgICAgaWYgKG5ld0RvY3VtZW50KQogICAgICAgICBzZXRGb2N1c2Vk
RnJhbWUobmV3RG9jdW1lbnQtPmZyYW1lKCkpOwogCisgICAgaWYgKGNhcmV0QnJvd3NpbmcpIHsK
KyAgICAgICAgU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihQb3NpdGlvbihub2RlLCAwKSwgUG9zaXRp
b24obm9kZSwgMCksIERPV05TVFJFQU0pOworICAgICAgICBpZiAoZnJhbWUtPnNob3VsZENoYW5n
ZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKSB7CisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOworICAgICAgICAgICAgLy8gV2h5IGlzIHRo
aXMgcmV2ZWFsU2VsZWN0aW9uKCkgbmVjZXNzYXJ5PworICAgICAgICAgICAgZnJhbWUtPnJldmVh
bFNlbGVjdGlvbigpOworICAgICAgICB9CisgICAgfQorCiAgICAgc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUpLT5mb2N1cyhmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMjksNyAr
MjQ3LDExIEBAIHN0YXRpYyB2b2lkIGNsZWFyU2VsZWN0aW9uSWZOZWVkZWQoRnJhbWUqIG9sZEZv
Y3VzZWRGcmFtZSwgRnJhbWUqIG5ld0ZvY3VzZWRGcmFtCiAgICAgU2VsZWN0aW9uQ29udHJvbGxl
ciogcyA9IG9sZEZvY3VzZWRGcmFtZS0+c2VsZWN0aW9uKCk7CiAgICAgaWYgKHMtPmlzTm9uZSgp
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKKyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBvbGRG
b2N1c2VkRnJhbWUtPnNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7ICAgIAorICAg
IGlmIChjYXJldEJyb3dzaW5nKQorICAgICAgICByZXR1cm47CisKICAgICBOb2RlKiBzZWxlY3Rp
b25TdGFydE5vZGUgPSBzLT5zZWxlY3Rpb24oKS5zdGFydCgpLm5vZGUoKTsKICAgICBpZiAoc2Vs
ZWN0aW9uU3RhcnROb2RlID09IG5ld0ZvY3VzZWROb2RlIHx8IHNlbGVjdGlvblN0YXJ0Tm9kZS0+
aXNEZXNjZW5kYW50T2YobmV3Rm9jdXNlZE5vZGUpIHx8IHNlbGVjdGlvblN0YXJ0Tm9kZS0+c2hh
ZG93QW5jZXN0b3JOb2RlKCkgPT0gbmV3Rm9jdXNlZE5vZGUpCiAgICAgICAgIHJldHVybjsKQEAg
LTI1NCw3ICsyNzYsOCBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZE5vZGUoTm9k
ZSogbm9kZSwgUGFzc1JlZlB0cjxGcmFtZT4gbmV3Rm9jdXNlZEZyYQogICAgIE5vZGUqIG9sZEZv
Y3VzZWROb2RlID0gb2xkRG9jdW1lbnQgPyBvbGREb2N1bWVudC0+Zm9jdXNlZE5vZGUoKSA6IDA7
CiAgICAgaWYgKG9sZEZvY3VzZWROb2RlID09IG5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICAKKworICAgIC8vIEZJWE1FOiBNaWdodCB3YW50IHRvIGRpc2FibGUgdGhpcyBjaGVj
ayBmb3IgY2FyZXRCcm93c2luZwogICAgIGlmIChvbGRGb2N1c2VkTm9kZSAmJiBvbGRGb2N1c2Vk
Tm9kZS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpID09IG9sZEZvY3VzZWROb2RlICYmICFyZWxpbnF1
aXNoZXNFZGl0aW5nRm9jdXMob2xkRm9jdXNlZE5vZGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggOTEwZmNiZC4uNDQxYjQzZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03MSw2ICs3
MSw3IEBACiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlhNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgImh0bWxlZGl0
aW5nLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jv
b3QuaCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCkBAIC01NjksNiArNTcwLDE1IEBAIHZv
aWQgRnJhbWU6OnNldEZvY3VzZWROb2RlSWZOZWVkZWQoKQogICAgIGlmICghZG9jdW1lbnQoKSB8
fCBzZWxlY3Rpb24oKS0+aXNOb25lKCkgfHwgIXNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3Rp
dmUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gc2V0dGlu
Z3MoKSAmJiBzZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOworICAgIGlmIChjYXJl
dEJyb3dzaW5nKSB7CisgICAgICAgIE5vZGUqIGFuY2hvciA9IGVuY2xvc2luZ0FuY2hvckVsZW1l
bnQoc2VsZWN0aW9uKCktPmJhc2UoKSk7CisgICAgICAgIGlmIChhbmNob3IpIHsKKyAgICAgICAg
ICAgIHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPnNldEZvY3VzZWROb2RlKGFuY2hvciwgdGhp
cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBOb2RlKiB0
YXJnZXQgPSBzZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIGlmICh0YXJn
ZXQpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRhcmdldC0+cmVuZGVyZXIo
KTsKQEAgLTU4OSw2ICs1OTksOSBAQCB2b2lkIEZyYW1lOjpzZXRGb2N1c2VkTm9kZUlmTmVlZGVk
KCkKICAgICAgICAgfQogICAgICAgICBkb2N1bWVudCgpLT5zZXRGb2N1c2VkTm9kZSgwKTsKICAg
ICB9CisKKyAgICBpZiAoY2FyZXRCcm93c2luZykKKyAgICAgICAgcGFnZSgpLT5mb2N1c0NvbnRy
b2xsZXIoKS0+c2V0Rm9jdXNlZE5vZGUoMCwgdGhpcyk7CiB9CiAKIHZvaWQgRnJhbWU6OnNlbGVj
dGlvbkxheW91dENoYW5nZWQoKQpAQCAtNTk2LDggKzYwOSw5IEBAIHZvaWQgRnJhbWU6OnNlbGVj
dGlvbkxheW91dENoYW5nZWQoKQogICAgIGJvb2wgY2FyZXRSZWN0Q2hhbmdlZCA9IHNlbGVjdGlv
bigpLT5yZWNvbXB1dGVDYXJldFJlY3QoKTsKIAogI2lmIEVOQUJMRShURVhUX0NBUkVUKQorICAg
IGJvb2wgY2FyZXRCcm93c2luZyA9IHNldHRpbmdzKCkgJiYgc2V0dGluZ3MoKS0+Y2FyZXRCcm93
c2luZ0VuYWJsZWQoKTsKICAgICBib29sIHNob3VsZEJsaW5rID0gbV9jYXJldFZpc2libGUKLSAg
ICAgICAgJiYgc2VsZWN0aW9uKCktPmlzQ2FyZXQoKSAmJiBzZWxlY3Rpb24oKS0+aXNDb250ZW50
RWRpdGFibGUoKTsKKyAgICAgICAgJiYgc2VsZWN0aW9uKCktPmlzQ2FyZXQoKSAmJiAoc2VsZWN0
aW9uKCktPmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZyk7CiAKICAgICAvLyBJ
ZiB0aGUgY2FyZXQgbW92ZWQsIHN0b3AgdGhlIGJsaW5rIHRpbWVyIHNvIHdlIGNhbiByZXN0YXJ0
IHdpdGggYQogICAgIC8vIGJsYWNrIGNhcmV0IGluIHRoZSBuZXcgbG9jYXRpb24uCkBAIC0xNDU0
LDcgKzE0NjgsOCBAQCB2b2lkIEZyYW1lOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAgICAgLy8g
UHV0IGEgY2FyZXQgaW5zaWRlIHRoZSBib2R5IGlmIHRoZSBlbnRpcmUgZnJhbWUgaXMgZWRpdGFi
bGUgKGVpdGhlciB0aGUgCiAgICAgLy8gZW50aXJlIFdlYlZpZXcgaXMgZWRpdGFibGUgb3IgZGVz
aWduTW9kZSBpcyBvbiBmb3IgdGhpcyBkb2N1bWVudCkuCiAgICAgRG9jdW1lbnQgKmRvYyA9IGRv
Y3VtZW50KCk7Ci0gICAgaWYgKCFkb2MgfHwgIXNlbGVjdGlvbigpLT5pc05vbmUoKSB8fCAhaXND
b250ZW50RWRpdGFibGUoKSkKKyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBzZXR0aW5ncygpICYm
IHNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYgKCFkb2MgfHwgIXNl
bGVjdGlvbigpLT5pc05vbmUoKSB8fCAhKGlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93
c2luZykpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgTm9kZSogbm9kZSA9IGRvYy0+
ZG9jdW1lbnRFbGVtZW50KCk7CkBAIC0xNzgwLDcgKzE3OTUsOCBAQCB2b2lkIEZyYW1lOjpyZXNw
b25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBib29s
IGNsb3NlVAogICAgICAgICBpZiAoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpIHsK
ICAgICAgICAgICAgIFNlbGVjdGlvbiBuZXdBZGphY2VudFdvcmRzOwogICAgICAgICAgICAgU2Vs
ZWN0aW9uIG5ld1NlbGVjdGVkU2VudGVuY2U7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uKCkt
PnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpIHsKKyAgICAgICAgICAgIGJvb2wgY2Fy
ZXRCcm93c2luZyA9IHNldHRpbmdzKCkgJiYgc2V0dGluZ3MoKS0+Y2FyZXRCcm93c2luZ0VuYWJs
ZWQoKTsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuaXNDb250ZW50
RWRpdGFibGUoKSB8fCBjYXJldEJyb3dzaW5nKSB7CiAgICAgICAgICAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIG5ld1N0YXJ0KHNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKSk7
CiAgICAgICAgICAgICAgICAgbmV3QWRqYWNlbnRXb3JkcyA9IFNlbGVjdGlvbihzdGFydE9mV29y
ZChuZXdTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQobmV3U3RhcnQsIFJp
Z2h0V29yZElmT25Cb3VuZGFyeSkpOwogICAgICAgICAgICAgICAgIGlmIChpc0NvbnRpbnVvdXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKQpAQCAtMTc5MCw3ICsxODA2LDcgQEAgdm9pZCBGcmFtZTo6
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwg
Ym9vbCBjbG9zZVQKICAgICAgICAgICAgIC8vIFdoZW4gdHlwaW5nIHdlIGNoZWNrIHNwZWxsaW5n
IGVsc2V3aGVyZSwgc28gZG9uJ3QgcmVkbyBpdCBoZXJlLgogICAgICAgICAgICAgLy8gSWYgdGhp
cyBpcyBhIGNoYW5nZSBpbiBzZWxlY3Rpb24gcmVzdWx0aW5nIGZyb20gYSBkZWxldGUgb3BlcmF0
aW9uLAogICAgICAgICAgICAgLy8gb2xkU2VsZWN0aW9uIG1heSBubyBsb25nZXIgYmUgaW4gdGhl
IGRvY3VtZW50LgotICAgICAgICAgICAgaWYgKGNsb3NlVHlwaW5nICYmIG9sZFNlbGVjdGlvbi5p
c0NvbnRlbnRFZGl0YWJsZSgpICYmIG9sZFNlbGVjdGlvbi5zdGFydCgpLm5vZGUoKSAmJiBvbGRT
ZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPmluRG9jdW1lbnQoKSkgeworICAgICAgICAgICAgaWYg
KGNsb3NlVHlwaW5nICYmIChvbGRTZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSB8fCBjYXJl
dEJyb3dzaW5nKSAmJiBvbGRTZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCkgJiYgb2xkU2VsZWN0aW9u
LnN0YXJ0KCkubm9kZSgpLT5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICBWaXNpYmxl
UG9zaXRpb24gb2xkU3RhcnQob2xkU2VsZWN0aW9uLnZpc2libGVTdGFydCgpKTsKICAgICAgICAg
ICAgICAgICBTZWxlY3Rpb24gb2xkQWRqYWNlbnRXb3JkcyA9IFNlbGVjdGlvbihzdGFydE9mV29y
ZChvbGRTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQob2xkU3RhcnQsIFJp
Z2h0V29yZElmT25Cb3VuZGFyeSkpOyAgIAogICAgICAgICAgICAgICAgIGlmIChvbGRBZGphY2Vu
dFdvcmRzICE9IG5ld0FkamFjZW50V29yZHMpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDllNGI3YjUuLjBl
MzdiYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtODUsNiArODUsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3Mo
UGFnZSogcGFnZSkKICAgICAsIG1fem9vbXNUZXh0T25seShmYWxzZSkKICAgICAsIG1fZW5mb3Jj
ZUNTU01JTUVUeXBlSW5TdHJpY3RNb2RlKHRydWUpCiAgICAgLCBtX21heGltdW1EZWNvZGVkSW1h
Z2VTaXplKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpCisgICAgLCBtX2NhcmV0
QnJvd3NpbmdFbmFibGVkKGZhbHNlKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJl
ZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAgICAv
LyBoYXNoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0LgpAQCAtNDA1LDQgKzQwNiw5IEBAIHZvaWQg
U2V0dGluZ3M6OnNldFNob3VsZFBhaW50TmF0aXZlQ29udHJvbHMoYm9vbCBzaG91bGRQYWludE5h
dGl2ZUNvbnRyb2xzKQogfQogI2VuZGlmCiAKK3ZvaWQgU2V0dGluZ3M6OnNldENhcmV0QnJvd3Np
bmdFbmFibGVkKGJvb2wgY2FyZXRCcm93c2luZ0VuYWJsZWQpCit7CisgICAgbV9jYXJldEJyb3dz
aW5nRW5hYmxlZCA9IGNhcmV0QnJvd3NpbmdFbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCmluZGV4IGQ0NmEzYzYuLjdlOGY4YjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5oCisrKyBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0xMDYsNyAr
MTA2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldFByaXZhdGVC
cm93c2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsgfQotICAgICAgICAK
KworICAgICAgICB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOworICAgICAgICBi
b29sIGNhcmV0QnJvd3NpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9jYXJldEJyb3dzaW5n
RW5hYmxlZDsgfQorCiAgICAgICAgIHZvaWQgc2V0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgZGVmYXVsdFRleHRFbmNvZGluZ05h
bWUoKSBjb25zdCB7IHJldHVybiBtX2RlZmF1bHRUZXh0RW5jb2RpbmdOYW1lOyB9CiAKQEAgLTIy
MSw2ICsyMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0phdmFF
bmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7
CiAgICAgICAgIGJvb2wgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkIDogMTsKKyAgICAgICAgYm9v
bCBtX2NhcmV0QnJvd3NpbmdFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2FyZVBsdWdpbnNF
bmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2RhdGFiYXNlc0VuYWJsZWQgOiAxOwogICAgICAg
ICBib29sIG1fbG9jYWxTdG9yYWdlRW5hYmxlZCA6IDE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggY2Q5ZDc1NC4uMDUzMWNiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKQEAgLTE2MTUsOSArMTYxNiwxMCBAQCB2b2lkIFJlbmRlckJsb2NrOjpwYWludENh
cmV0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgQ2FyZXRUeXBlIHR5cAog
ewogICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIHNlbGVjdGlvbiA9IHR5cGUgPT0gQ3Vyc29yQ2Fy
ZXQgPyBkb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKSA6IGRvY3VtZW50KCktPmZyYW1l
KCktPmRyYWdDYXJldENvbnRyb2xsZXIoKTsKIAotICAgIC8vIEFzayB0aGUgU2VsZWN0aW9uQ29u
dHJvbGxlciBpZiB0aGUgY2FyZXQgc2hvdWxkIGJlIHBhaW50ZWQgYnkgdGhpcyBibG9jaworICAg
IC8vIFBhaW50IHRoZSBjYXJldCBpZiB0aGUgU2VsZWN0aW9uQ29udHJvbGxlciBzYXlzIHNvIG9y
IGlmIGNhcmV0IGJyb3dzaW5nIGlzIGVuYWJsZWQKKyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBk
b2N1bWVudCgpLT5mcmFtZSgpLT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPmZyYW1lKCktPnNl
dHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAgICAgUmVuZGVyT2JqZWN0KiBjYXJl
dFBhaW50ZXIgPSBzZWxlY3Rpb24tPmNhcmV0UmVuZGVyZXIoKTsKLSAgICBpZiAoY2FyZXRQYWlu
dGVyID09IHRoaXMgJiYgc2VsZWN0aW9uLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CisgICAgaWYg
KGNhcmV0UGFpbnRlciA9PSB0aGlzICYmIChzZWxlY3Rpb24tPmlzQ29udGVudEVkaXRhYmxlKCkg
fHwgY2FyZXRCcm93c2luZykpIHsKICAgICAgICAgLy8gQ29udmVydCB0aGUgcGFpbnRpbmcgb2Zm
c2V0IGludG8gdGhlIGxvY2FsIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoaXMgcmVuZGVyZXIsCiAg
ICAgICAgIC8vIHRvIG1hdGNoIHRoZSBsb2NhbENhcmV0UmVjdCBjb21wdXRlZCBieSB0aGUgU2Vs
ZWN0aW9uQ29udHJvbGxlcgogICAgICAgICBvZmZzZXRGb3JDb250ZW50cyh0eCwgdHkpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IGUwOTE3
OGUuLmMxNDIyZmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEd0ay5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiRWRpdENvbW1hbmQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKKyNpbmNsdWRlICJFdmVudE5h
bWVzLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJLZXlib2FyZENvZGVzLmgiCkBAIC0zMTYsMTQzICszMTcsMTg5IEBAIHZvaWQg
RWRpdG9yQ2xpZW50Ojp0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKQogewogfQogCi12b2lkIEVkaXRv
ckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKLXsKLSAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+
Zm9jdXNlZE5vZGUoKSkKLSAgICAgICAgcmV0dXJuOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN0
cmxLZXkgPSAxIDw8IDA7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgQWx0S2V5ID0gMSA8PCAxOwor
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFNoaWZ0S2V5ID0gMSA8PCAyOworCitzdHJ1Y3QgS2V5RG93
bkVudHJ5IHsKKyAgICB1bnNpZ25lZCB2aXJ0dWFsS2V5OworICAgIHVuc2lnbmVkIG1vZGlmaWVy
czsKKyAgICBjb25zdCBjaGFyKiBuYW1lOworfTsKKyAgICAKK3N0cnVjdCBLZXlQcmVzc0VudHJ5
IHsKKyAgICB1bnNpZ25lZCBjaGFyQ29kZTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAg
Y29uc3QgY2hhciogbmFtZTsKK307CisKK3N0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93
bkVudHJpZXNbXSA9IHsKKyAgICB7IFZLX0xFRlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92
ZUxlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xF
RlQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAi
TW92ZVdvcmRMZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X0xFRlQsICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0
aW9uIiAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAg
ICAiTW92ZVJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX1JJR0hULCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uIiAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgQ3RybEtleSwgICAgICAg
ICAgICAiTW92ZVdvcmRSaWdodCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX1JJR0hULCAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRSaWdodEFuZE1vZGlm
eVNlbGVjdGlvbiIgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1VQLCAgICAgMCwgICAgICAgICAg
ICAgICAgICAiTW92ZVVwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICB7IFZLX1VQLCAgICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgU2hpZnRLZXks
ICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAg
fSwKKyAgICB7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24iICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0RPV04sICAgU2hpZnRL
ZXksICAgICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAg
ICAgfSwKKyAgICB7IFZLX05FWFQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgMCwg
ICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcCIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX05FWFQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VE
b3duIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAg
MCwgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwKKyAgICB7IFZLX0hPTUUs
ICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92
ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKKworICAgIHsgVktf
RU5ELCAgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAg
ICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICB9LAorICAgIHsg
VktfRU5ELCAgICBDdHJsS2V5LCAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfRU5ELCAgICBDdHJsS2V5IHwgU2hpZnRL
ZXksICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICB9LAorCisg
ICAgeyBWS19CQUNLLCAgIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIFNoaWZ0S2V5LCAg
ICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgeyBWS19ERUxFVEUsIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIEN0cmxLZXks
ICAgICAgICAgICAgIkRlbGV0ZVdvcmRCYWNrd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCisgICAgeyBWS19ERUxFVEUsIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3
YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgCisgICAgeyAnQicsICAgICAg
IEN0cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUJvbGQiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyAnSScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2ds
ZUl0YWxpYyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICB7IFZLX0VT
Q0FQRSwgMCwgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX09FTV9QRVJJT0QsIEN0cmxLZXksICAgICAgICAi
Q2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X1RBQiwgICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1RBQiwgICAgU2hpZnRLZXksICAgICAgICAg
ICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX1JFVFVSTiwgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgQ3RybEtleSwgICAgICAg
ICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX1JFVFVSTiwgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgQWx0S2V5IHwgU2hp
ZnRLZXksICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KworICAgIC8vIEl0J3Mgbm90IHF1aXRlIGNsZWFyIHdoZXRoZXIgY2xpcGJvYXJkIHNob3J0Y3V0
cyBhbmQgVW5kby9SZWRvIHNob3VsZCBiZSBoYW5kbGVkCisgICAgLy8gaW4gdGhlIGFwcGxpY2F0
aW9uIG9yIGluIFdlYktpdC4gV2UgY2hvc2UgV2ViS2l0LgorICAgIHsgJ0MnLCAgICAgICBDdHJs
S2V5LCAgICAgICAgICAgICJDb3B5IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgJ1YnLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJQYXN0ZSIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1gnLCAgICAgICBD
dHJsS2V5LCAgICAgICAgICAgICJDdXQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorICAgIHsgJ0EnLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJTZWxlY3RB
bGwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfSU5TRVJU
LCBDdHJsS2V5LCAgICAgICAgICAgICJDb3B5IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgIHsgVktfREVMRVRFLCBTaGlmdEtleSwgICAgICAgICAgICJDdXQi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfSU5T
RVJULCBTaGlmdEtleSwgICAgICAgICAgICJQYXN0ZSIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgIHsgJ1onLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJV
bmRvIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1on
LCAgICAgICBDdHJsS2V5IHwgU2hpZnRLZXksICJSZWRvIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorfTsKKworc3RhdGljIGNvbnN0IEtleVByZXNzRW50cnkga2V5
UHJlc3NFbnRyaWVzW10gPSB7CisgICAgeyAnXHQnLCAgIDAsICAgICAgICAgICAgICAgICAgIklu
c2VydFRhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnXHQn
LCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyAnXHInLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2Vy
dE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnXHInLCAg
IEN0cmxLZXksICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyAnXHInLCAgIEFsdEtleSwgICAgICAgICAgICAgIkluc2VydE5l
d2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnXHInLCAgIEFs
dEtleSB8IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCit9OworCitzdGF0aWMgY29uc3QgY2hhciogaW50ZXJwcmV0S2V5RXZlbnQoY29u
c3QgS2V5Ym9hcmRFdmVudCogZXZ0KQoreworICAgIEFTU0VSVChldnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkua2V5ZG93bkV2ZW50IHx8IGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlw
cmVzc0V2ZW50KTsKKworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlE
b3duQ29tbWFuZHNNYXAgPSAwOworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+
KiBrZXlQcmVzc0NvbW1hbmRzTWFwID0gMDsKKworICAgIGlmICgha2V5RG93bkNvbW1hbmRzTWFw
KSB7CisgICAgICAgIGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3Qg
Y2hhcio+OworICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBj
b25zdCBjaGFyKj47CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdfTl9FTEVN
RU5UUyhrZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAgICAgIGtleURvd25Db21tYW5kc01h
cC0+c2V0KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleURvd25FbnRyaWVz
W2ldLnZpcnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOworCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQor
ICAgICAgICAgICAga2V5UHJlc3NDb21tYW5kc01hcC0+c2V0KGtleVByZXNzRW50cmllc1tpXS5t
b2RpZmllcnMgPDwgMTYgfCBrZXlQcmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50
cmllc1tpXS5uYW1lKTsKKyAgICB9CiAKLSAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQq
IGtldmVudCA9IGV2ZW50LT5rZXlFdmVudCgpOwotICAgIGlmICgha2V2ZW50IHx8IGtldmVudC0+
dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXApCi0gICAgICAgIHJldHVybjsK
KyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChldnQtPnNoaWZ0S2V5KCkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoZXZ0LT5hbHRLZXkoKSkKKyAg
ICAgICAgbW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAoZXZ0LT5jdHJsS2V5KCkpCisgICAg
ICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OworCisgICAgaWYgKGV2dC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8
PCAxNiB8IGV2dC0+a2V5Q29kZSgpOworICAgICAgICByZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNv
bW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6IDA7CisgICAgfQogCi0gICAgTm9kZSogc3RhcnQgPSBm
cmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkubm9kZSgpOwotICAgIGlmICghc3RhcnQpCi0gICAg
ICAgIHJldHVybjsKKyAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZ0LT5jaGFy
Q29kZSgpOworICAgIHJldHVybiBtYXBLZXkgPyBrZXlQcmVzc0NvbW1hbmRzTWFwLT5nZXQobWFw
S2V5KSA6IDA7Cit9CisKK3N0YXRpYyBib29sIGhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtl
eWJvYXJkRXZlbnQqIGV2dCkKK3sKKyAgICBOb2RlKiBub2RlID0gZXZ0LT50YXJnZXQoKS0+dG9O
b2RlKCk7CisgICAgQVNTRVJUKG5vZGUpOworICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3Vt
ZW50KCktPmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKIAotICAgIC8vIEZJWE1FOiBVc2Ug
R3RrQmluZGluZ1NldCBpbnN0ZWFkIG9mIHRoaXMgaGFyZC1jb2RlZCBzd2l0Y2gKLSAgICAvLyBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkxMQotCi0gICAgaWYgKHN0
YXJ0LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7Ci0gICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5k
b3dzVmlydHVhbEtleUNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBWS19CQUNLOgotICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25D
b250cm9sbGVyOjpCQUNLV0FSRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3Ry
bEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0
cnVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfREVMRVRF
OgotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAotICAgICAgICAgICAgICAgICAgICAgICAga2V2
ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwg
ZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIGNvbnN0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCoga2V5RXZlbnQgPSBldnQtPmtleUV2ZW50KCk7CisgICAgaWYgKCFrZXlF
dmVudCAvKnx8IGtleUV2ZW50LT5pc1N5c3RlbUtleSgpKi8pICAvLyBkbyBub3QgdHJlYXQgdGhp
cyBhcyB0ZXh0IGlucHV0IGlmIGl0J3MgYSBzeXN0ZW0ga2V5IGV2ZW50CisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IGZyYW1lLT5zZXR0aW5ncygpLT5j
YXJldEJyb3dzaW5nRW5hYmxlZCgpOworICAgIGlmIChjYXJldEJyb3dzaW5nKSB7CisgICAgICAg
IHN3aXRjaCAoa2V5RXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CiAgICAgICAgICAg
ICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2Rp
Znkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKKyAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVY
VEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBTZWxlY3Rpb25Db250cm9sbGVyOjpMRUZULAotICAgICAgICAgICAgICAgICAgICAgICAga2V2
ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVs
YXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRy
dWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgICAgICBmcmFtZS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVy
OjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAorICAgICAgICAgICAgICAgIGZy
YW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9u
Q29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULAotICAgICAgICAgICAg
ICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0
ZXJHcmFudWxhcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5
KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rp
b25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAorICAgICAg
ICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgp
ID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9W
RSwKICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJE
LAotICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhH
cmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGtl
eUV2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0
eSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgY2FzZSBWS19ET1dO
OgotICAgICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hp
ZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xs
ZXI6Ok1PVkUsCisgICAgICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5
RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rp
b25Db250cm9sbGVyOjpNT1ZFLAogICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29u
dHJvbGxlcjo6Rk9SV0FSRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtl
eSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCisgICAgICAgICAg
ICAgICAgICAgICAgICBrZXlFdmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkg
OiBMaW5lR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfUFJJT1I6ICAvLyBQYWdlVXAK
LSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoa2V2ZW50LT5zaGlmdEtl
eSgpID8gIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iIDogIk1vdmVQYWdlVXAiKS5leGVj
dXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX05FWFQ6
ICAvLyBQYWdlRG93bgotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChr
ZXZlbnQtPnNoaWZ0S2V5KCkgPyAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiA6ICJN
b3ZlUGFnZURvd24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgp
ICYmIGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9u
IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgp
KQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0Jl
Z2lubmluZ09mRG9jdW1lbnQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
a2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1
dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIikuZXhlY3V0ZSgpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19FTkQ6Ci0gICAgICAgICAg
ICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpICYmIGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkRvY3Vt
ZW50QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAg
ICAgICAgZWxzZSBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlv
biIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIikuZXhlY3V0ZSgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJJbnNlcnRMaW5lQnJlYWsiKS5l
eGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX1RB
QjoKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIGlmICgha2V2ZW50LT5jdHJsS2V5KCkgJiYgIWtldmVudC0+YWx0S2V5KCkgJiYg
IWtldmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoa2V2
ZW50LT50ZXh0KCkubGVuZ3RoKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVUNo
YXIgY2ggPSBrZXZlbnQtPnRleHQoKVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIERv
bid0IGluc2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNhbiByZXN1bHQg
aW4gdW5leHBlY3RlZCBiZWhhdmlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA8
ICcgJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQo
a2V2ZW50LT50ZXh0KCksIGV2ZW50KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtldmVu
dC0+Y3RybEtleSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5k
b3dzVmlydHVhbEtleUNvZGUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19C
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
VG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVktfSToKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpLmV4ZWN1
dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVktfWToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZLX1o6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJVbmRvIiku
ZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRv
d3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX1BSSU9SOiAgLy8gUGFn
ZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZVVw
IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBW
S19ORVhUOiAgLy8gUGFnZURvd24KLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1vdmVQYWdlRG93biIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgVktfSE9NRToKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5j
dHJsS2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
TW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAgICAgICAgICAgIGlmIChrZXZl
bnQtPmN0cmxLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJNb3ZlVG9FbmRPZkRvY3VtZW50IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZXZlbnQtPnNl
dERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAKKworICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5k
ID0gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOworCisg
ICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlE
b3duKSB7CisgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQg
aWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKKyAgICAgICAgLy8gc28g
d2UgbGVhdmUgaXQgdXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVs
eSAoZS5nLiBUYWIgdGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBi
ZSBnZW5lcmF0ZWQKKyAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFy
YWN0ZXIsIG9yIEVudGVyKS4KKyAgICAgICAgcmV0dXJuICFjb21tYW5kLmlzVGV4dEluc2VydGlv
bigpICYmIGNvbW1hbmQuZXhlY3V0ZShldnQpOworICAgIH0KKworICAgICBpZiAoY29tbWFuZC5l
eGVjdXRlKGV2dCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gRG9uJ3QgaW5zZXJ0
IG51bGwgb3IgY29udHJvbCBjaGFyYWN0ZXJzIGFzIHRoZXkgY2FuIHJlc3VsdCBpbiB1bmV4cGVj
dGVkIGJlaGF2aW91cgorICAgIGlmIChldnQtPmNoYXJDb2RlKCkgPCAnICcpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZ0
LT5rZXlFdmVudCgpLT50ZXh0KCksIGV2dCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50OjpoYW5k
bGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChoYW5kbGVF
ZGl0aW5nS2V5Ym9hcmRFdmVudChldmVudCkpCisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3du
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Mu
Y3BwCmluZGV4IGFhMzhjNmMuLmI0Y2ZiMjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnNldHRpbmdzLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5ncy5jcHAKQEAgLTc0LDYgKzc0LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1By
aXZhdGUgewogICAgIGdjaGFyKiB1c2VyX3N0eWxlc2hlZXRfdXJpOwogICAgIGdmbG9hdCB6b29t
X3N0ZXA7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2RldmVsb3Blcl9leHRyYXM7CisgICAgZ2Jvb2xl
YW4gZW5hYmxlX2NhcmV0X2Jyb3dzaW5nOwogfTsKIAogI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJ
TkdTX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKQpAQCAt
MTAxLDcgKzEwMiw4IEBAIGVudW0gewogICAgIFBST1BfUkVTSVpBQkxFX1RFWFRfQVJFQVMsCiAg
ICAgUFJPUF9VU0VSX1NUWUxFU0hFRVRfVVJJLAogICAgIFBST1BfWk9PTV9TVEVQLAotICAgIFBS
T1BfRU5BQkxFX0RFVkVMT1BFUl9FWFRSQVMKKyAgICBQUk9QX0VOQUJMRV9ERVZFTE9QRVJfRVhU
UkFTLAorICAgIFBST1BfRU5BQkxFX0NBUkVUX0JST1dTSU5HCiB9OwogCiBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CkBAIC0zMzUsNiAr
MzM3LDE1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJL
aXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3Mp
KTsKIAorICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0NBUkVUX0JS
T1dTSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oImVuYWJsZS1jYXJldC1icm93c2luZyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5hYmxlIENhcmV0IEJyb3dzaW5n
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJXaGV0aGVyIHRvIGVuYWJsZSBhY2Nlc2liaWxpdHkgZW5oYW5jZWQga2V5Ym9hcmQgbmF2
aWdhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJp
dmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpOwogfQogCkBAIC00
MzcsNiArNDQ4LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBST1BfRU5B
QkxFX0RFVkVMT1BFUl9FWFRSQVM6CiAgICAgICAgIHByaXYtPmVuYWJsZV9kZXZlbG9wZXJfZXh0
cmFzID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfQ0FSRVRfQlJPV1NJTkc6CisgICAgICAgIHByaXYtPmVuYWJsZV9jYXJl
dF9icm93c2luZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTEyLDYgKzUyNiw5
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9QX0VOQUJMRV9ERVZFTE9Q
RVJfRVhUUkFTOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFi
bGVfZGV2ZWxvcGVyX2V4dHJhcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFC
TEVfQ0FSRVRfQlJPV1NJTkc6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHBy
aXYtPmVuYWJsZV9jYXJldF9icm93c2luZyk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3Bf
aWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC01NjMsNiArNTgwLDcgQEAgV2ViS2l0V2Vi
U2V0dGluZ3MqIHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weShXZWJLaXRXZWJTZXR0aW5ncyogd2Vi
X3NldHRpbmdzKQogICAgICAgICAgICAgICAgICAidXNlci1zdHlsZXNoZWV0LXVyaSIsIHByaXYt
PnVzZXJfc3R5bGVzaGVldF91cmksCiAgICAgICAgICAgICAgICAgICJ6b29tLXN0ZXAiLCBwcml2
LT56b29tX3N0ZXAsCiAgICAgICAgICAgICAgICAgICJlbmFibGUtZGV2ZWxvcGVyLWV4dHJhcyIs
IHByaXYtPmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzLAorICAgICAgICAgICAgICAgICAiZW5hYmxl
LWNhcmV0LWJyb3dzaW5nIiwgcHJpdi0+ZW5hYmxlX2NhcmV0X2Jyb3dzaW5nLAogICAgICAgICAg
ICAgICAgICBOVUxMKSk7CiAKICAgICByZXR1cm4gY29weTsKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKaW5kZXggMGVhNmVkNS4uNzY3MThjNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKQEAgLTE2MjUsNyArMTYyNSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmll
d191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBTZXR0aW5ncyog
c2V0dGluZ3MgPSBjb3JlKHdlYlZpZXcpLT5zZXR0aW5ncygpOwogCiAgICAgZ2NoYXIqIGRlZmF1
bHRFbmNvZGluZywgKmN1cnNpdmVGb250RmFtaWx5LCAqZGVmYXVsdEZvbnRGYW1pbHksICpmYW50
YXN5Rm9udEZhbWlseSwgKm1vbm9zcGFjZUZvbnRGYW1pbHksICpzYW5zU2VyaWZGb250RmFtaWx5
LCAqc2VyaWZGb250RmFtaWx5LCAqdXNlclN0eWxlc2hlZXRVcmk7Ci0gICAgZ2Jvb2xlYW4gYXV0
b0xvYWRJbWFnZXMsIGF1dG9TaHJpbmtJbWFnZXMsIHByaW50QmFja2dyb3VuZHMsIGVuYWJsZVNj
cmlwdHMsIGVuYWJsZVBsdWdpbnMsIGVuYWJsZURldmVsb3BlckV4dHJhcywgcmVzaXphYmxlVGV4
dEFyZWFzOworICAgIGdib29sZWFuIGF1dG9Mb2FkSW1hZ2VzLCBhdXRvU2hyaW5rSW1hZ2VzLCBw
cmludEJhY2tncm91bmRzLCBlbmFibGVTY3JpcHRzLCBlbmFibGVQbHVnaW5zLCBlbmFibGVEZXZl
bG9wZXJFeHRyYXMsIHJlc2l6YWJsZVRleHRBcmVhcywgZW5hYmxlQ2FyZXRCcm93c2luZzsKIAog
ICAgIGdfb2JqZWN0X2dldCh3ZWJTZXR0aW5ncywKICAgICAgICAgICAgICAgICAgImRlZmF1bHQt
ZW5jb2RpbmciLCAmZGVmYXVsdEVuY29kaW5nLApAQCAtMTY0Myw2ICsxNjQzLDcgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogICAgICAgICAgICAgICAgICAicmVzaXphYmxlLXRleHQtYXJlYXMiLCAmcmVzaXphYmxl
VGV4dEFyZWFzLAogICAgICAgICAgICAgICAgICAidXNlci1zdHlsZXNoZWV0LXVyaSIsICZ1c2Vy
U3R5bGVzaGVldFVyaSwKICAgICAgICAgICAgICAgICAgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFz
IiwgJmVuYWJsZURldmVsb3BlckV4dHJhcywKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1jYXJl
dC1icm93c2luZyIsICZlbmFibGVDYXJldEJyb3dzaW5nLAogICAgICAgICAgICAgICAgICBOVUxM
KTsKIAogICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShkZWZhdWx0RW5j
b2RpbmcpOwpAQCAtMTY2MCw2ICsxNjYxLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHNldHRpbmdzLT5z
ZXRUZXh0QXJlYXNBcmVSZXNpemFibGUocmVzaXphYmxlVGV4dEFyZWFzKTsKICAgICBzZXR0aW5n
cy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihLVVJMKHVzZXJTdHlsZXNoZWV0VXJpKSk7CiAg
ICAgc2V0dGluZ3MtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5hYmxlRGV2ZWxvcGVyRXh0
cmFzKTsKKyAgICBzZXR0aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoZW5hYmxlQ2FyZXRC
cm93c2luZyk7CiAKICAgICBnX2ZyZWUoZGVmYXVsdEVuY29kaW5nKTsKICAgICBnX2ZyZWUoY3Vy
c2l2ZUZvbnRGYW1pbHkpOwpAQCAtMTcyOCw2ICsxNzMwLDggQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X3NldHRpbmdzX25vdGlmeShXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3Ms
IEdQYXIKICAgICAgICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oS1VSTChn
X3ZhbHVlX2dldF9zdHJpbmcoJnZhbHVlKSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRl
cm5fc3RyaW5nKCJlbmFibGUtZGV2ZWxvcGVyLWV4dHJhcyIpKQogICAgICAgICBzZXR0aW5ncy0+
c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOwor
ICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtY2FyZXQtYnJvd3Np
bmciKSkKKyAgICAgICAgc2V0dGluZ3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGdfdmFsdWVf
Z2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAgICAgZWxzZSBpZiAoIWdfb2JqZWN0X2NsYXNzX2ZpbmRf
cHJvcGVydHkoR19PQkpFQ1RfR0VUX0NMQVNTKHdlYlNldHRpbmdzKSwgbmFtZSkpCiAgICAgICAg
IGdfd2FybmluZygiVW5leHBlY3RlZCBzZXR0aW5nICclcyciLCBuYW1lKTsKICAgICBnX3ZhbHVl
X3Vuc2V0KCZ2YWx1ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWlu
LmMgYi9XZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKaW5kZXggNTlmMjIzMC4uNmY0MThh
YyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCisrKyBiL1dlYktp
dFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYwpAQCAtMTgyLDYgKzE4Miw5IEBAIGNyZWF0ZV93aW5k
b3cgKCkKIGludAogbWFpbiAoaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKIHsKKyAgICBpZiAoIWdf
dGhyZWFkX3N1cHBvcnRlZCAoKSkKKyAgICAgICAgZ190aHJlYWRfaW5pdCAoTlVMTCk7CisKICAg
ICBndGtfaW5pdCAoJmFyZ2MsICZhcmd2KTsKICAgICBpZiAoIWdfdGhyZWFkX3N1cHBvcnRlZCAo
KSkKICAgICAgICAgZ190aHJlYWRfaW5pdCAoTlVMTCk7CkBAIC0xOTQsNiArMTk3LDEyIEBAIG1h
aW4gKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgbWFpbl93aW5kb3cgPSBjcmVhdGVfd2lu
ZG93ICgpOwogICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChtYWluX3dpbmRv
dyksIHZib3gpOwogCisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dl
Yl9zZXR0aW5nc19uZXcgKCk7CisgICAgZ19vYmplY3Rfc2V0IChzZXR0aW5ncywKKyAgICAgICAg
ICAgICAgICAgICJlbmFibGUtY2FyZXQtYnJvd3NpbmciLCBnX2dldGVudiAoIldFQktJVF9DQVJF
VCIpID8gVFJVRSA6IEZBTFNFLAorICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgd2Via2l0
X3dlYl92aWV3X3NldF9zZXR0aW5ncyAod2ViX3ZpZXcsIHNldHRpbmdzKTsKKwogICAgIGdjaGFy
KiB1cmkgPSAoZ2NoYXIqKSAoYXJnYyA+IDEgPyBhcmd2WzFdIDogImh0dHA6Ly93d3cuZ29vZ2xl
LmNvbS8iKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfb3BlbiAod2ViX3ZpZXcsIHVyaSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29645</attachid>
            <date>2009-04-21 07:00:35 -0700</date>
            <delta_ts>2009-04-27 23:47:00 -0700</delta_ts>
            <desc>basiccaret.patch</desc>
            <filename>basiccaret.patch</filename>
            <type>text/plain</type>
            <size>13872</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBhNzdiYTJjNTAzOGEyZjdlYTUxMDQyZTFmYmY1NzVkNDU1NzAzZTI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDIxIEFwciAyMDA5IDE2OjUyOjQzICswMzAwClN1YmplY3Q6IFtQQVRDSCAxLzNdIDIwMDkt
MDQtMjEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTM1CiAgICAgICAgW0dUS10gU3VwcG9ydCBjYXJldCBicm93c2luZwoKICAg
ICAgICBCYXNlZCBvbiBhIHBhdGNoIGJ5IEFscCBUb2tlci4KCiAgICAgICAgSW1wbGVtZW50IGJh
c2ljIHN1cHBvcnQgZm9yIGNhcmV0IGJyb3dzaW5nLCBhY3RpdmUgb25seSB3aGVuIHRoZQogICAg
ICAgIGNvcnJlc3BvbmRpbmcgc2V0dGluZyBpcyBlbmFibGVkLgoKICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmNwcDoKICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVJlbGVhc2VFdmVudCk6CiAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CiAgICAg
ICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzKToKICAgICAgICAoV2Vi
Q29yZTo6Y2xlYXJTZWxlY3Rpb25JZk5lZWRlZCk6CiAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29u
dHJvbGxlcjo6c2V0Rm9jdXNlZE5vZGUpOgogICAgICAgICogcGFnZS9GcmFtZS5jcHA6CiAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRGb2N1c2VkTm9kZUlmTmVlZGVkKToKICAgICAgICAoV2Vi
Q29yZTo6RnJhbWU6OnNlbGVjdGlvbkxheW91dENoYW5nZWQpOgogICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6c2V0U2VsZWN0aW9uRnJvbU5vbmUpOgogICAgICAgIChXZWJDb3JlOjpGcmFtZTo6cmVz
cG9uZFRvQ2hhbmdlZFNlbGVjdGlvbik6CiAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKICAg
ICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKICAgICAgICAqIHBhZ2UvU2V0dGlu
Z3MuaDoKICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CiAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpwYWludENhcmV0KToKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgfCAgIDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCAgICAgfCAgICAzICsrLQogV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAgIHwgICAyOCArKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwICAgICAgICAgICAgfCAgIDI0ICsrKysrKysrKysrKysrKysrKysr
LS0tLQogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCAgICAgICAgIHwgICAgNiArKysrKysKIFdl
YkNvcmUvcGFnZS9TZXR0aW5ncy5oICAgICAgICAgICB8ICAgIDYgKysrKystCiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAgfCAgICA2ICsrKystLQogNyBmaWxlcyBjaGFuZ2VkLCA5
MCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGYzNmVjZjMuLjA1NTdlODcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzIgQEAKKzIwMDktMDQtMjEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNQorICAgICAgICBbR1RLXSBTdXBwb3J0
IGNhcmV0IGJyb3dzaW5nCisKKyAgICAgICAgQmFzZWQgb24gYSBwYXRjaCBieSBBbHAgVG9rZXIu
CisKKyAgICAgICAgSW1wbGVtZW50IGJhc2ljIHN1cHBvcnQgZm9yIGNhcmV0IGJyb3dzaW5nLCBh
Y3RpdmUgb25seSB3aGVuIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIHNldHRpbmcgaXMgZW5h
YmxlZC4KKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAqIHBh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxl
cjo6YWR2YW5jZUZvY3VzKToKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyU2VsZWN0aW9uSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkTm9kZSk6
CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0
Rm9jdXNlZE5vZGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2VsZWN0aW9u
TGF5b3V0Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0U2VsZWN0aW9uRnJv
bU5vbmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24pOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpwYWludENhcmV0KToKKwogMjAwOS0wNC0yMSAgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5n
b21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCmluZGV4IDVjNTcyNDMuLjVhYzY1MjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CkBAIC01NjcsNyArNTY3LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFz
ZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICAgICAgICAg
ICYmIGV2ZW50LmV2ZW50KCkuYnV0dG9uKCkgIT0gUmlnaHRCdXR0b24pIHsKICAgICAgICAgVmlz
aWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb247CiAgICAgICAgIE5vZGUgKm5vZGUgPSBldmVudC50
YXJnZXROb2RlKCk7Ci0gICAgICAgIGlmIChub2RlICYmIG5vZGUtPmlzQ29udGVudEVkaXRhYmxl
KCkgJiYgbm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBt
X2ZyYW1lLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOworICAgICAgICBpZiAo
bm9kZSAmJiAoY2FyZXRCcm93c2luZyB8fCBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZSgpKSAmJiBu
b2RlLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zID0gbm9k
ZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCkpOwogICAg
ICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihwb3MpOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDk3NjBiM2MuLmZmNGI4ZDYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9G
b2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDUsNiArNDYsNyBAQAogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRl
cldpZGdldC5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgogCkBAIC0xMTQsOSArMTE2LDE2IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9j
dXMoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVuCiAgICAgQVNT
RVJUKGZyYW1lKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
IAorICAgIE5vZGUqIGN1cnJlbnROb2RlID0gZG9jdW1lbnQtPmZvY3VzZWROb2RlKCk7CisgICAg
Ly8gRklYTUU6IE5vdCBxdWl0ZSBjb3JyZWN0IHdoZW4gaXQgY29tZXMgdG8gZm9jdXMgdHJhbnNp
dGlvbnMgbGVhdmluZy9lbnRlcmluZyB0aGUgV2ViVmlldyBpdHNlbGYKKyAgICBib29sIGNhcmV0
QnJvd3NpbmcgPSBmb2N1c2VkT3JNYWluRnJhbWUoKS0+c2V0dGluZ3MoKS0+Y2FyZXRCcm93c2lu
Z0VuYWJsZWQoKTsKKworICAgIGlmIChjYXJldEJyb3dzaW5nICYmICFjdXJyZW50Tm9kZSkKKyAg
ICAgICAgY3VycmVudE5vZGUgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnN0YXJ0KCkubm9kZSgpOwor
CiAgICAgTm9kZSogbm9kZSA9IChkaXJlY3Rpb24gPT0gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkKQot
ICAgICAgICA/IGRvY3VtZW50LT5uZXh0Rm9jdXNhYmxlTm9kZShkb2N1bWVudC0+Zm9jdXNlZE5v
ZGUoKSwgZXZlbnQpCi0gICAgICAgIDogZG9jdW1lbnQtPnByZXZpb3VzRm9jdXNhYmxlTm9kZShk
b2N1bWVudC0+Zm9jdXNlZE5vZGUoKSwgZXZlbnQpOworICAgICAgICA/IGRvY3VtZW50LT5uZXh0
Rm9jdXNhYmxlTm9kZShjdXJyZW50Tm9kZSwgZXZlbnQpCisgICAgICAgIDogZG9jdW1lbnQtPnBy
ZXZpb3VzRm9jdXNhYmxlTm9kZShjdXJyZW50Tm9kZSwgZXZlbnQpOwogICAgICAgICAgICAgCiAg
ICAgLy8gSWYgdGhlcmUncyBubyBmb2N1c2FibGUgbm9kZSB0byBhZHZhbmNlIHRvLCBtb3ZlIHVw
IHRoZSBmcmFtZSB0cmVlIHVudGlsIHdlIGZpbmQgb25lLgogICAgIHdoaWxlICghbm9kZSAmJiBm
cmFtZSkgewpAQCAtMTk1LDYgKzIwNCwxMiBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5j
ZUZvY3VzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbgogICAg
IGlmIChuZXdEb2N1bWVudCkKICAgICAgICAgc2V0Rm9jdXNlZEZyYW1lKG5ld0RvY3VtZW50LT5m
cmFtZSgpKTsKIAorICAgIGlmIChjYXJldEJyb3dzaW5nKSB7CisgICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gbmV3U2VsZWN0aW9uKFBvc2l0aW9uKG5vZGUsIDApLCBQb3NpdGlvbihub2RlLCAwKSwg
RE9XTlNUUkVBTSk7CisgICAgICAgIGlmIChmcmFtZS0+c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5l
d1NlbGVjdGlvbikpCisgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlv
bihuZXdTZWxlY3Rpb24pOworICAgIH0KKwogICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2Rl
KS0+Zm9jdXMoZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjIzLDcgKzIzOCwxMSBA
QCBzdGF0aWMgdm9pZCBjbGVhclNlbGVjdGlvbklmTmVlZGVkKEZyYW1lKiBvbGRGb2N1c2VkRnJh
bWUsIEZyYW1lKiBuZXdGb2N1c2VkRnJhbQogICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIHMgPSBv
bGRGb2N1c2VkRnJhbWUtPnNlbGVjdGlvbigpOwogICAgIGlmIChzLT5pc05vbmUoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIAorCisgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gb2xkRm9jdXNlZEZy
YW1lLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOyAgICAKKyAgICBpZiAoY2Fy
ZXRCcm93c2luZykKKyAgICAgICAgcmV0dXJuOworCiAgICAgTm9kZSogc2VsZWN0aW9uU3RhcnRO
b2RlID0gcy0+c2VsZWN0aW9uKCkuc3RhcnQoKS5ub2RlKCk7CiAgICAgaWYgKHNlbGVjdGlvblN0
YXJ0Tm9kZSA9PSBuZXdGb2N1c2VkTm9kZSB8fCBzZWxlY3Rpb25TdGFydE5vZGUtPmlzRGVzY2Vu
ZGFudE9mKG5ld0ZvY3VzZWROb2RlKSB8fCBzZWxlY3Rpb25TdGFydE5vZGUtPnNoYWRvd0FuY2Vz
dG9yTm9kZSgpID09IG5ld0ZvY3VzZWROb2RlKQogICAgICAgICByZXR1cm47CkBAIC0yNDgsNyAr
MjY3LDggQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWROb2RlKE5vZGUqIG5vZGUs
IFBhc3NSZWZQdHI8RnJhbWU+IG5ld0ZvY3VzZWRGcmEKICAgICBOb2RlKiBvbGRGb2N1c2VkTm9k
ZSA9IG9sZERvY3VtZW50ID8gb2xkRG9jdW1lbnQtPmZvY3VzZWROb2RlKCkgOiAwOwogICAgIGlm
IChvbGRGb2N1c2VkTm9kZSA9PSBub2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
CisKKyAgICAvLyBGSVhNRTogTWlnaHQgd2FudCB0byBkaXNhYmxlIHRoaXMgY2hlY2sgZm9yIGNh
cmV0QnJvd3NpbmcKICAgICBpZiAob2xkRm9jdXNlZE5vZGUgJiYgb2xkRm9jdXNlZE5vZGUtPnJv
b3RFZGl0YWJsZUVsZW1lbnQoKSA9PSBvbGRGb2N1c2VkTm9kZSAmJiAhcmVsaW5xdWlzaGVzRWRp
dGluZ0ZvY3VzKG9sZEZvY3VzZWROb2RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCmluZGV4IDA0N2Y4YjcuLjIyMDA3N2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzEsNiArNzEsNyBAQAog
I2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgog
I2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KQEAgLTU3Miw2ICs1NzMsMTUg
QEAgdm9pZCBGcmFtZTo6c2V0Rm9jdXNlZE5vZGVJZk5lZWRlZCgpCiAgICAgaWYgKHNlbGVjdGlv
bigpLT5pc05vbmUoKSB8fCAhc2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBzZXR0aW5ncygpICYmIHNl
dHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYgKGNhcmV0QnJvd3Npbmcp
IHsKKyAgICAgICAgTm9kZSogYW5jaG9yID0gZW5jbG9zaW5nQW5jaG9yRWxlbWVudChzZWxlY3Rp
b24oKS0+YmFzZSgpKTsKKyAgICAgICAgaWYgKGFuY2hvcikgeworICAgICAgICAgICAgcGFnZSgp
LT5mb2N1c0NvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZE5vZGUoYW5jaG9yLCB0aGlzKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIE5vZGUqIHRhcmdldCA9IHNl
bGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAgaWYgKHRhcmdldCkgewogICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0LT5yZW5kZXJlcigpOwpAQCAtNTky
LDYgKzYwMiw5IEBAIHZvaWQgRnJhbWU6OnNldEZvY3VzZWROb2RlSWZOZWVkZWQoKQogICAgICAg
ICB9CiAgICAgICAgIGRvY3VtZW50KCktPnNldEZvY3VzZWROb2RlKDApOwogICAgIH0KKworICAg
IGlmIChjYXJldEJyb3dzaW5nKQorICAgICAgICBwYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5z
ZXRGb2N1c2VkTm9kZSgwLCB0aGlzKTsKIH0KIAogdm9pZCBGcmFtZTo6c2VsZWN0aW9uTGF5b3V0
Q2hhbmdlZCgpCkBAIC01OTksOCArNjEyLDkgQEAgdm9pZCBGcmFtZTo6c2VsZWN0aW9uTGF5b3V0
Q2hhbmdlZCgpCiAgICAgYm9vbCBjYXJldFJlY3RDaGFuZ2VkID0gc2VsZWN0aW9uKCktPnJlY29t
cHV0ZUNhcmV0UmVjdCgpOwogCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCisgICAgYm9vbCBjYXJl
dEJyb3dzaW5nID0gc2V0dGluZ3MoKSAmJiBzZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxl
ZCgpOwogICAgIGJvb2wgc2hvdWxkQmxpbmsgPSBtX2NhcmV0VmlzaWJsZQotICAgICAgICAmJiBz
ZWxlY3Rpb24oKS0+aXNDYXJldCgpICYmIHNlbGVjdGlvbigpLT5pc0NvbnRlbnRFZGl0YWJsZSgp
OworICAgICAgICAmJiBzZWxlY3Rpb24oKS0+aXNDYXJldCgpICYmIChzZWxlY3Rpb24oKS0+aXND
b250ZW50RWRpdGFibGUoKSB8fCBjYXJldEJyb3dzaW5nKTsKIAogICAgIC8vIElmIHRoZSBjYXJl
dCBtb3ZlZCwgc3RvcCB0aGUgYmxpbmsgdGltZXIgc28gd2UgY2FuIHJlc3RhcnQgd2l0aCBhCiAg
ICAgLy8gYmxhY2sgY2FyZXQgaW4gdGhlIG5ldyBsb2NhdGlvbi4KQEAgLTEzMzUsNyArMTM0OSw4
IEBAIHZvaWQgRnJhbWU6OnNldFNlbGVjdGlvbkZyb21Ob25lKCkKICAgICAvLyBQdXQgYSBjYXJl
dCBpbnNpZGUgdGhlIGJvZHkgaWYgdGhlIGVudGlyZSBmcmFtZSBpcyBlZGl0YWJsZSAoZWl0aGVy
IHRoZSAKICAgICAvLyBlbnRpcmUgV2ViVmlldyBpcyBlZGl0YWJsZSBvciBkZXNpZ25Nb2RlIGlz
IG9uIGZvciB0aGlzIGRvY3VtZW50KS4KICAgICBEb2N1bWVudCAqZG9jID0gZG9jdW1lbnQoKTsK
LSAgICBpZiAoIXNlbGVjdGlvbigpLT5pc05vbmUoKSB8fCAhaXNDb250ZW50RWRpdGFibGUoKSkK
KyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBzZXR0aW5ncygpICYmIHNldHRpbmdzKCktPmNhcmV0
QnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYgKCFzZWxlY3Rpb24oKS0+aXNOb25lKCkgfHwgIShp
c0NvbnRlbnRFZGl0YWJsZSgpIHx8IGNhcmV0QnJvd3NpbmcpKQogICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgIE5vZGUqIG5vZGUgPSBkb2MtPmRvY3VtZW50RWxlbWVudCgpOwpAQCAtMTY1
Nyw3ICsxNjcyLDggQEAgdm9pZCBGcmFtZTo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBvbGRTZWxlY3Rpb24sIGJvb2wKICAgICBpZiAoaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpIHsKICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdB
ZGphY2VudFdvcmRzOwogICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGVkU2VudGVu
Y2U7Ci0gICAgICAgIGlmIChzZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFi
bGUoKSkgeworICAgICAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBzZXR0aW5ncygpICYmIHNldHRp
bmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CisgICAgICAgIGlmIChzZWxlY3Rpb24oKS0+
c2VsZWN0aW9uKCkuaXNDb250ZW50RWRpdGFibGUoKSB8fCBjYXJldEJyb3dzaW5nKSB7CiAgICAg
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gbmV3U3RhcnQoc2VsZWN0aW9uKCktPnNlbGVjdGlvbigp
LnZpc2libGVTdGFydCgpKTsKICAgICAgICAgICAgIG5ld0FkamFjZW50V29yZHMgPSBWaXNpYmxl
U2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKG5ld1N0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVu
ZE9mV29yZChuZXdTdGFydCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KSk7CiAgICAgICAgICAgICBp
ZiAoaXNDb250aW51b3VzR3JhbW1hckNoZWNraW5nRW5hYmxlZCkKQEAgLTE2NjcsNyArMTY4Myw3
IEBAIHZvaWQgRnJhbWU6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgb2xkU2VsZWN0aW9uLCBib29sCiAgICAgICAgIC8vIFdoZW4gdHlwaW5nIHdlIGNo
ZWNrIHNwZWxsaW5nIGVsc2V3aGVyZSwgc28gZG9uJ3QgcmVkbyBpdCBoZXJlLgogICAgICAgICAv
LyBJZiB0aGlzIGlzIGEgY2hhbmdlIGluIHNlbGVjdGlvbiByZXN1bHRpbmcgZnJvbSBhIGRlbGV0
ZSBvcGVyYXRpb24sCiAgICAgICAgIC8vIG9sZFNlbGVjdGlvbiBtYXkgbm8gbG9uZ2VyIGJlIGlu
IHRoZSBkb2N1bWVudC4KLSAgICAgICAgaWYgKGNsb3NlVHlwaW5nICYmIG9sZFNlbGVjdGlvbi5p
c0NvbnRlbnRFZGl0YWJsZSgpICYmIG9sZFNlbGVjdGlvbi5zdGFydCgpLm5vZGUoKSAmJiBvbGRT
ZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCktPmluRG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoY2xv
c2VUeXBpbmcgJiYgKG9sZFNlbGVjdGlvbi5pc0NvbnRlbnRFZGl0YWJsZSgpIHx8IGNhcmV0QnJv
d3NpbmcpICAmJiBvbGRTZWxlY3Rpb24uc3RhcnQoKS5ub2RlKCkgJiYgb2xkU2VsZWN0aW9uLnN0
YXJ0KCkubm9kZSgpLT5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIFZpc2libGVQb3NpdGlv
biBvbGRTdGFydChvbGRTZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkpOwogICAgICAgICAgICAgVmlz
aWJsZVNlbGVjdGlvbiBvbGRBZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9m
V29yZChvbGRTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQob2xkU3RhcnQs
IFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOyAgIAogICAgICAgICAgICAgaWYgKG9sZEFkamFjZW50
V29yZHMgIT0gbmV3QWRqYWNlbnRXb3JkcykgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmNwcCBiL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggZTEyNGVmNi4uZTVj
OTdjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC05MCw2ICs5MCw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQ
YWdlKiBwYWdlKQogICAgICwgbV91c2VzRW5jb2RpbmdEZXRlY3RvcihmYWxzZSkKICAgICAsIG1f
bWF4aW11bURlY29kZWRJbWFnZVNpemUoc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSkKICAgICAsIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MoZmFsc2UpCisgICAgLCBtX2Nh
cmV0QnJvd3NpbmdFbmFibGVkKGZhbHNlKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZl
IGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAg
ICAvLyBoYXNoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0LgpAQCAtNDM1LDQgKzQzNiw5IEBAIHZv
aWQgU2V0dGluZ3M6OnNldEFsbG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzKGJvb2wgYWxsb3dTY3Jp
cHRzVG9DbG9zZVdpbmRvd3MpCiAgICAgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyA9IGFs
bG93U2NyaXB0c1RvQ2xvc2VXaW5kb3dzOwogfQogCit2b2lkIFNldHRpbmdzOjpzZXRDYXJldEJy
b3dzaW5nRW5hYmxlZChib29sIGNhcmV0QnJvd3NpbmdFbmFibGVkKQoreworICAgIG1fY2FyZXRC
cm93c2luZ0VuYWJsZWQgPSBjYXJldEJyb3dzaW5nRW5hYmxlZDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAppbmRleCA3YmJkMWM2Li40NWE0ZGFiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMTEy
LDcgKzExMiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wpOwogICAgICAgICBib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7IH0KLSAgICAg
ICAgCisKKyAgICAgICAgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKKyAgICAg
ICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FyZXRCcm93
c2luZ0VuYWJsZWQ7IH0KKwogICAgICAgICB2b2lkIHNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1l
KGNvbnN0IFN0cmluZyYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIGRlZmF1bHRUZXh0RW5jb2Rp
bmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0VGV4dEVuY29kaW5nTmFtZTsgfQogICAg
ICAgICAKQEAgLTIzNiw2ICsyMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJv
b2wgbV9pc0phdmFFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSA6IDE7CiAgICAgICAgIGJvb2wgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkIDogMTsK
KyAgICAgICAgYm9vbCBtX2NhcmV0QnJvd3NpbmdFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBt
X2FyZVBsdWdpbnNFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2RhdGFiYXNlc0VuYWJsZWQg
OiAxOwogICAgICAgICBib29sIG1fbG9jYWxTdG9yYWdlRW5hYmxlZCA6IDE7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggMTEyMzI3Yi4uOTcyYjIxOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTE3MjIsOSArMTcyMywxMCBAQCB2b2lkIFJlbmRlckJs
b2NrOjpwYWludENhcmV0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgQ2Fy
ZXRUeXBlIHR5cAogewogICAgIFNlbGVjdGlvbkNvbnRyb2xsZXIqIHNlbGVjdGlvbiA9IHR5cGUg
PT0gQ3Vyc29yQ2FyZXQgPyBkb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKSA6IGRvY3Vt
ZW50KCktPmZyYW1lKCktPmRyYWdDYXJldENvbnRyb2xsZXIoKTsKIAotICAgIC8vIEFzayB0aGUg
U2VsZWN0aW9uQ29udHJvbGxlciBpZiB0aGUgY2FyZXQgc2hvdWxkIGJlIHBhaW50ZWQgYnkgdGhp
cyBibG9jaworICAgIC8vIFBhaW50IHRoZSBjYXJldCBpZiB0aGUgU2VsZWN0aW9uQ29udHJvbGxl
ciBzYXlzIHNvIG9yIGlmIGNhcmV0IGJyb3dzaW5nIGlzIGVuYWJsZWQKKyAgICBib29sIGNhcmV0
QnJvd3NpbmcgPSBkb2N1bWVudCgpLT5mcmFtZSgpLT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCkt
PmZyYW1lKCktPnNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7CiAgICAgUmVuZGVy
T2JqZWN0KiBjYXJldFBhaW50ZXIgPSBzZWxlY3Rpb24tPmNhcmV0UmVuZGVyZXIoKTsKLSAgICBp
ZiAoY2FyZXRQYWludGVyID09IHRoaXMgJiYgc2VsZWN0aW9uLT5pc0NvbnRlbnRFZGl0YWJsZSgp
KSB7CisgICAgaWYgKGNhcmV0UGFpbnRlciA9PSB0aGlzICYmIChzZWxlY3Rpb24tPmlzQ29udGVu
dEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZykpIHsKICAgICAgICAgLy8gQ29udmVydCB0aGUg
cGFpbnRpbmcgb2Zmc2V0IGludG8gdGhlIGxvY2FsIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoaXMg
cmVuZGVyZXIsCiAgICAgICAgIC8vIHRvIG1hdGNoIHRoZSBsb2NhbENhcmV0UmVjdCBjb21wdXRl
ZCBieSB0aGUgU2VsZWN0aW9uQ29udHJvbGxlcgogICAgICAgICBvZmZzZXRGb3JDb250ZW50cyh0
eCwgdHkpOwotLSAKMS42LjIuMgoK
</data>
<flag name="review"
          id="14811"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29646</attachid>
            <date>2009-04-21 07:01:05 -0700</date>
            <delta_ts>2009-04-21 10:53:25 -0700</delta_ts>
            <desc>gtksetting.patch</desc>
            <filename>gtksetting.patch</filename>
            <type>text/plain</type>
            <size>7301</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBjYjUzMTVjMTVjNDgxOWY5MzFiOTlmNTc5NjQ1YWMxMWIzNDM5ZjlkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDIxIEFwciAyMDA5IDE2OjU0OjIwICswMzAwClN1YmplY3Q6IFtQQVRDSCAyLzNdIDIwMDkt
MDQtMjEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTM1CiAgICAgICAgW0dUS10gU3VwcG9ydCBjYXJldCBicm93c2luZwoKICAg
ICAgICBCYXNlZCBvbiBhIHBhdGNoIGJ5IEFscCBUb2tlci4KCiAgICAgICAgQWRkIGVuYWJsZS1j
YXJldC1icm93c2luZyBzZXR0aW5nIHRvIFdlYktpdFdlYlZpZXcuCgogICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnNldHRpbmdzLmNwcDoKICAgICAgICAoX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0
ZTo6KToKICAgICAgICAoX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTo6d2Via2l0X3dlYl9zZXR0
aW5nc19jbGFzc19pbml0KToKICAgICAgICAoX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTo6d2Vi
a2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHkpOgogICAgICAgIChfV2ViS2l0V2ViU2V0dGlu
Z3NQcml2YXRlOjp3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0eSk6CiAgICAgICAgKF9X
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CiAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Ci0tLQogV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgIHwgICAxOSArKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgfCAgIDE3ICsrKysrKysrKysrKysrKystCiBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgfCAgICA2ICsrKysrLQogMyBm
aWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMWI5
ZDhkYy4uMDU4Y2I1NSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNCBAQAogMjAwOS0wNC0yMSAgWGFuIExvcGV6
ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MTM1CisgICAgICAgIFtHVEtdIFN1cHBvcnQgY2FyZXQgYnJvd3NpbmcKKworICAgICAgICBCYXNl
ZCBvbiBhIHBhdGNoIGJ5IEFscCBUb2tlci4KKworICAgICAgICBBZGQgZW5hYmxlLWNhcmV0LWJy
b3dzaW5nIHNldHRpbmcgdG8gV2ViS2l0V2ViVmlldy4KKworICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlOjop
OgorICAgICAgICAoX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZTo6d2Via2l0X3dlYl9zZXR0aW5n
c19jbGFzc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtp
dF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9X
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGU6OndlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorCisyMDA5LTA0LTIxICBYYW4gTG9wZXog
IDx4bG9wZXpAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9u
aGEuCiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NTQ2CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKaW5kZXggYjllMGZhMy4u
ZDIyYmZkNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Mu
Y3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtNzYs
NiArNzYsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAgICAgZ2Zsb2F0
IHpvb21fc3RlcDsKICAgICBnYm9vbGVhbiBlbmFibGVfZGV2ZWxvcGVyX2V4dHJhczsKICAgICBn
Ym9vbGVhbiBlbmFibGVfcHJpdmF0ZV9icm93c2luZzsKKyAgICBnYm9vbGVhbiBlbmFibGVfY2Fy
ZXRfYnJvd3Npbmc7CiB9OwogCiAjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX1BSSVZB
VEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9X
RUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpCkBAIC0xMDQsNyArMTA1LDgg
QEAgZW51bSB7CiAgICAgUFJPUF9VU0VSX1NUWUxFU0hFRVRfVVJJLAogICAgIFBST1BfWk9PTV9T
VEVQLAogICAgIFBST1BfRU5BQkxFX0RFVkVMT1BFUl9FWFRSQVMsCi0gICAgUFJPUF9FTkFCTEVf
UFJJVkFURV9CUk9XU0lORworICAgIFBST1BfRU5BQkxFX1BSSVZBVEVfQlJPV1NJTkcsCisgICAg
UFJPUF9FTkFCTEVfQ0FSRVRfQlJPV1NJTkcKIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKQEAgLTM1OSw2ICszNjEsMTQgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFdlYlNldHRp
bmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFM
U0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwogCisgICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfQ0FSRVRfQlJPV1NJTkcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigi
ZW5hYmxlLWNhcmV0LWJyb3dzaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBDYXJldCBCcm93c2luZyIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygi
V2hldGhlciB0byBlbmFibGUgYWNjZXNpYmlsaXR5IGVuaGFuY2VkIGtleWJvYXJkIG5hdmlnYXRp
b24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShr
bGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpOwogfQogCkBAIC00NjMsNiAr
NDczLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9QUklWQVRFX0JST1dTSU5HOgogICAgICAgICBwcml2LT5lbmFibGVfcHJp
dmF0ZV9icm93c2luZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgIGNhc2UgUFJP
UF9FTkFCTEVfQ0FSRVRfQlJPV1NJTkc6CisgICAgICAgIHByaXYtPmVuYWJsZV9jYXJldF9icm93
c2luZyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wX2lkLCBwc3BlYyk7CkBAIC01NDEsNiArNTUzLDggQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lk
LCBHVmEKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0VOQUJMRV9QUklWQVRFX0JST1dT
SU5HOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFibGVfcHJp
dmF0ZV9icm93c2luZyk7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9DQVJFVF9CUk9XU0lORzoKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlX2NhcmV0X2Jyb3dz
aW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FS
Tl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwpAQCAtNTk0LDYg
KzYwOCw3IEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkoV2Vi
S2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5ncykKICAgICAgICAgICAgICAgICAgInpvb20tc3Rl
cCIsIHByaXYtPnpvb21fc3RlcCwKICAgICAgICAgICAgICAgICAgImVuYWJsZS1kZXZlbG9wZXIt
ZXh0cmFzIiwgcHJpdi0+ZW5hYmxlX2RldmVsb3Blcl9leHRyYXMsCiAgICAgICAgICAgICAgICAg
ICJlbmFibGUtcHJpdmF0ZS1icm93c2luZyIsIHByaXYtPmVuYWJsZV9wcml2YXRlX2Jyb3dzaW5n
LAorICAgICAgICAgICAgICAgICAiZW5hYmxlLWNhcmV0LWJyb3dzaW5nIiwgcHJpdi0+ZW5hYmxl
X2NhcmV0X2Jyb3dzaW5nLAogICAgICAgICAgICAgICAgICBOVUxMKSk7CiAKICAgICByZXR1cm4g
Y29weTsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggMTUyNGViYi4uN2U3Yzdl
YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTE5MDgsNyArMTkwOCw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAgICBnY2hhciogZGVmYXVsdEVuY29kaW5nLCAqY3Vyc2l2ZUZvbnRGYW1p
bHksICpkZWZhdWx0Rm9udEZhbWlseSwgKmZhbnRhc3lGb250RmFtaWx5LCAqbW9ub3NwYWNlRm9u
dEZhbWlseSwgKnNhbnNTZXJpZkZvbnRGYW1pbHksICpzZXJpZkZvbnRGYW1pbHksICp1c2VyU3R5
bGVzaGVldFVyaTsKICAgICBnYm9vbGVhbiBhdXRvTG9hZEltYWdlcywgYXV0b1Nocmlua0ltYWdl
cywgcHJpbnRCYWNrZ3JvdW5kcywKICAgICAgICAgZW5hYmxlU2NyaXB0cywgZW5hYmxlUGx1Z2lu
cywgZW5hYmxlRGV2ZWxvcGVyRXh0cmFzLCByZXNpemFibGVUZXh0QXJlYXMsCi0gICAgICAgIGVu
YWJsZVByaXZhdGVCcm93c2luZzsKKyAgICAgICAgZW5hYmxlUHJpdmF0ZUJyb3dzaW5nLCBlbmFi
bGVDYXJldEJyb3dzaW5nOwogCiAgICAgZ19vYmplY3RfZ2V0KHdlYlNldHRpbmdzLAogICAgICAg
ICAgICAgICAgICAiZGVmYXVsdC1lbmNvZGluZyIsICZkZWZhdWx0RW5jb2RpbmcsCkBAIC0xOTI3
LDYgKzE5MjcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdz
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgICAgICAgICAgICAgICJ1c2VyLXN0eWxlc2hl
ZXQtdXJpIiwgJnVzZXJTdHlsZXNoZWV0VXJpLAogICAgICAgICAgICAgICAgICAiZW5hYmxlLWRl
dmVsb3Blci1leHRyYXMiLCAmZW5hYmxlRGV2ZWxvcGVyRXh0cmFzLAogICAgICAgICAgICAgICAg
ICAiZW5hYmxlLXByaXZhdGUtYnJvd3NpbmciLCAmZW5hYmxlUHJpdmF0ZUJyb3dzaW5nLAorICAg
ICAgICAgICAgICAgICAiZW5hYmxlLWNhcmV0LWJyb3dzaW5nIiwgJmVuYWJsZUNhcmV0QnJvd3Np
bmcsCiAgICAgICAgICAgICAgICAgIE5VTEwpOwogCiAgICAgc2V0dGluZ3MtPnNldERlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lKGRlZmF1bHRFbmNvZGluZyk7CkBAIC0xOTQ1LDYgKzE5NDYsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oS1VSTChL
VVJMKCksIHVzZXJTdHlsZXNoZWV0VXJpKSk7CiAgICAgc2V0dGluZ3MtPnNldERldmVsb3BlckV4
dHJhc0VuYWJsZWQoZW5hYmxlRGV2ZWxvcGVyRXh0cmFzKTsKICAgICBzZXR0aW5ncy0+c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChlbmFibGVQcml2YXRlQnJvd3NpbmcpOworICAgIHNldHRpbmdz
LT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChlbmFibGVDYXJldEJyb3dzaW5nKTsKIAogICAgIGdf
ZnJlZShkZWZhdWx0RW5jb2RpbmcpOwogICAgIGdfZnJlZShjdXJzaXZlRm9udEZhbWlseSk7CkBA
IC0yMDE1LDYgKzIwMTcsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nf
bm90aWZ5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncywgR1BhcgogICAgICAgICBzZXR0
aW5ncy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1
ZSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtcHJpdmF0
ZS1icm93c2luZyIpKQogICAgICAgICBzZXR0aW5ncy0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19p
bnRlcm5fc3RyaW5nKCJlbmFibGUtY2FyZXQtYnJvd3NpbmciKSkKKyAgICAgICAgc2V0dGluZ3Mt
PnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZhbHVlKSk7CiAg
ICAgZWxzZSBpZiAoIWdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VUX0NM
QVNTKHdlYlNldHRpbmdzKSwgbmFtZSkpCiAgICAgICAgIGdfd2FybmluZygiVW5leHBlY3RlZCBz
ZXR0aW5nICclcyciLCBuYW1lKTsKICAgICBnX3ZhbHVlX3Vuc2V0KCZ2YWx1ZSk7Ci0tIAoxLjYu
Mi4yCgo=
</data>
<flag name="review"
          id="14812"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29647</attachid>
            <date>2009-04-21 07:01:32 -0700</date>
            <delta_ts>2009-04-24 04:38:38 -0700</delta_ts>
            <desc>editorclientkeys.patch</desc>
            <filename>editorclientkeys.patch</filename>
            <type>text/plain</type>
            <size>18435</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBlNGE4ZmVmOTdjOTY3MWMxYzI0YTcyNzM0YmNmNjAzMDFiNDM2YjYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDIxIEFwciAyMDA5IDE2OjU4OjExICswMzAwClN1YmplY3Q6IFtQQVRDSCAzLzNdIDIwMDkt
MDQtMjEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTM1CiAgICAgICAgW0dUS10gU3VwcG9ydCBjYXJldCBicm93c2luZwoKICAg
ICAgICBSZWZhY3RvciBrZXlib2FyZCBldmVudCBoYW5kbGluZyB0byB3b3JrIHByb3Blcmx5IHVu
ZGVyIGNhcmV0CiAgICAgICAgYnJvd3NpbmcgbW9kZS4gTW9zdCBvZiB0aGUgY29kZSBjb21lcyBm
cm9tIHRoZSBXaW5kb3dzIHBvcnQuCgogICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmNwcDoKICAgICAgICAoV2ViS2l0OjopOgogICAgICAgIChXZWJLaXQ6OmludGVycHJl
dEtleUV2ZW50KToKICAgICAgICAoV2ViS2l0OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6
CiAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKLS0t
CiBXZWJLaXQvZ3RrL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICsr
CiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAgfCAgMjg5ICsr
KysrKysrKysrKysrKy0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTg1IGluc2VydGlvbnMo
KyksIDEyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDA1OGNiNTUuLmIwMjM0NTIgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC01LDYg
KzUsMjIgQEAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MTM1CiAgICAgICAgIFtHVEtdIFN1cHBvcnQgY2FyZXQgYnJvd3NpbmcKIAorICAgICAgICBS
ZWZhY3RvciBrZXlib2FyZCBldmVudCBoYW5kbGluZyB0byB3b3JrIHByb3Blcmx5IHVuZGVyIGNh
cmV0CisgICAgICAgIGJyb3dzaW5nIG1vZGUuIE1vc3Qgb2YgdGhlIGNvZGUgY29tZXMgZnJvbSB0
aGUgV2luZG93cyBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6KToKKyAgICAgICAgKFdlYktpdDo6aW50ZXJwcmV0
S2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisK
KzIwMDktMDQtMjEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEzNQorICAgICAgICBbR1RLXSBTdXBwb3J0IGNhcmV0IGJy
b3dzaW5nCisKICAgICAgICAgQmFzZWQgb24gYSBwYXRjaCBieSBBbHAgVG9rZXIuCiAKICAgICAg
ICAgQWRkIGVuYWJsZS1jYXJldC1icm93c2luZyBzZXR0aW5nIHRvIFdlYktpdFdlYlZpZXcuCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAg
Yi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKaW5kZXggYzJk
MzdhZS4uZmQxMzRkYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmNwcApAQCAtMSw2ICsxLDggQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFs
cCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBM
dGQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5LCBJZ2FsaWEgUy5MLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtMjMsNiArMjUsNyBAQAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNs
dWRlICJFZGl0Q29tbWFuZC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIktleWJvYXJkQ29kZXMuaCIKQEAgLTMxMiwxNDMgKzMxNSwxODkgQEAgdm9p
ZCBFZGl0b3JDbGllbnQ6OnRvZ2dsZUdyYW1tYXJDaGVja2luZygpCiB7CiB9CiAKLXZvaWQgRWRp
dG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQotewot
ICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5kb2N1bWVudCgp
LT5mb2N1c2VkTm9kZSgpKQotICAgICAgICByZXR1cm47CitzdGF0aWMgY29uc3QgdW5zaWduZWQg
Q3RybEtleSA9IDEgPDwgMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7
CitzdGF0aWMgY29uc3QgdW5zaWduZWQgU2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlE
b3duRW50cnkgeworICAgIHVuc2lnbmVkIHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZp
ZXJzOworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9OworCitzdHJ1Y3QgS2V5UHJlc3NFbnRyeSB7
CisgICAgdW5zaWduZWQgY2hhckNvZGU7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNv
bnN0IGNoYXIqIG5hbWU7Cit9OworCitzdGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25F
bnRyaWVzW10gPSB7CisgICAgeyBWS19MRUZULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVM
ZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19MRUZU
LCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19MRUZULCAgIEN0cmxLZXksICAgICAgICAgICAgIk1v
dmVXb3JkTGVmdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19M
RUZULCAgIEN0cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVjdGlv
biIgICAgICAgICAgICAgIH0sCisgICAgeyBWS19SSUdIVCwgIDAsICAgICAgICAgICAgICAgICAg
Ik1vdmVSaWdodCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBW
S19SSUdIVCwgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlv
biIgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19SSUdIVCwgIEN0cmxLZXksICAgICAgICAg
ICAgIk1vdmVXb3JkUmlnaHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
eyBWS19SSUdIVCwgIEN0cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVXb3JkUmlnaHRBbmRNb2RpZnlT
ZWxlY3Rpb24iICAgICAgICAgICAgIH0sCisgICAgeyBWS19VUCwgICAgIDAsICAgICAgICAgICAg
ICAgICAgIk1vdmVVcCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgeyBWS19VUCwgICAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVj
dGlvbiIgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19QUklPUiwgIFNoaWZ0S2V5LCAg
ICAgICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgIH0s
CisgICAgeyBWS19ET1dOLCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ET1dOLCAgIFNoaWZ0S2V5
LCAgICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAg
IH0sCisgICAgeyBWS19ORVhULCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVQYWdlRG93bkFu
ZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgIH0sCisgICAgeyBWS19QUklPUiwgIDAsICAg
ICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgeyBWS19ORVhULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93
biIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19IT01FLCAgIDAs
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZSIgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgeyBWS19IT01FLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVUb0Jl
Z2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgICAgIH0sCisgICAgeyBWS19IT01FLCAg
IEN0cmxLZXksICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiICAgICAgICAg
ICAgICAgICAgIH0sCisgICAgeyBWS19IT01FLCAgIEN0cmxLZXkgfCBTaGlmdEtleSwgIk1vdmVU
b0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCisKKyAgICB7IFZLX0VO
RCwgICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0VORCwgICAgU2hpZnRLZXksICAgICAgICAgICAi
TW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgfSwKKyAgICB7IFZL
X0VORCwgICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0VORCwgICAgQ3RybEtleSB8IFNoaWZ0S2V5
LCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgfSwKKworICAg
IHsgVktfQkFDSywgICAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfQkFDSywgICBTaGlmdEtleSwgICAg
ICAgICAgICJEZWxldGVCYWNrd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgIHsgVktfREVMRVRFLCAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfQkFDSywgICBDdHJsS2V5LCAg
ICAgICAgICAgICJEZWxldGVXb3JkQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfREVMRVRFLCBDdHJsS2V5LCAgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2Fy
ZCIgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgeyAnQicsICAgICAgIEN0cmxL
ZXksICAgICAgICAgICAgIlRvZ2dsZUJvbGQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgeyAnSScsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlRvZ2dsZUl0YWxp
YyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICB7IFZLX0VTQ0FQRSwg
MCwgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX09FTV9QRVJJT0QsIEN0cmxLZXksICAgICAgICAiQ2FuY2Vs
IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1RBQiwg
ICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX1RBQiwgICAgU2hpZnRLZXksICAgICAgICAgICAiSW5z
ZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JF
VFVSTiwgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgQ3RybEtleSwgICAgICAgICAgICAi
SW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X1JFVFVSTiwgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JFVFVSTiwgQWx0S2V5IHwgU2hpZnRLZXks
ICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAg
IC8vIEl0J3Mgbm90IHF1aXRlIGNsZWFyIHdoZXRoZXIgY2xpcGJvYXJkIHNob3J0Y3V0cyBhbmQg
VW5kby9SZWRvIHNob3VsZCBiZSBoYW5kbGVkCisgICAgLy8gaW4gdGhlIGFwcGxpY2F0aW9uIG9y
IGluIFdlYktpdC4gV2UgY2hvc2UgV2ViS2l0LgorICAgIHsgJ0MnLCAgICAgICBDdHJsS2V5LCAg
ICAgICAgICAgICJDb3B5IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgJ1YnLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJQYXN0ZSIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1gnLCAgICAgICBDdHJsS2V5
LCAgICAgICAgICAgICJDdXQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgJ0EnLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJTZWxlY3RBbGwiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfSU5TRVJULCBDdHJs
S2V5LCAgICAgICAgICAgICJDb3B5IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfREVMRVRFLCBTaGlmdEtleSwgICAgICAgICAgICJDdXQiICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfSU5TRVJULCBT
aGlmdEtleSwgICAgICAgICAgICJQYXN0ZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorICAgIHsgJ1onLCAgICAgICBDdHJsS2V5LCAgICAgICAgICAgICJVbmRvIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgJ1onLCAgICAg
ICBDdHJsS2V5IHwgU2hpZnRLZXksICJSZWRvIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorfTsKKworc3RhdGljIGNvbnN0IEtleVByZXNzRW50cnkga2V5UHJlc3NF
bnRyaWVzW10gPSB7CisgICAgeyAnXHQnLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydFRh
YiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnXHQnLCAgIFNo
aWZ0S2V5LCAgICAgICAgICAgIkluc2VydEJhY2t0YWIiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgeyAnXHInLCAgIDAsICAgICAgICAgICAgICAgICAgIkluc2VydE5ld2xp
bmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnXHInLCAgIEN0cmxL
ZXksICAgICAgICAgICAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCisgICAgeyAnXHInLCAgIEFsdEtleSwgICAgICAgICAgICAgIkluc2VydE5ld2xpbmUi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnXHInLCAgIEFsdEtleSB8
IFNoaWZ0S2V5LCAgIkluc2VydE5ld2xpbmUiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCit9OworCitzdGF0aWMgY29uc3QgY2hhciogaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5
Ym9hcmRFdmVudCogZXZ0KQoreworICAgIEFTU0VSVChldnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkua2V5ZG93bkV2ZW50IHx8IGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2
ZW50KTsKKworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlEb3duQ29t
bWFuZHNNYXAgPSAwOworICAgIHN0YXRpYyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+KiBrZXlQ
cmVzc0NvbW1hbmRzTWFwID0gMDsKKworICAgIGlmICgha2V5RG93bkNvbW1hbmRzTWFwKSB7Cisg
ICAgICAgIGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+
OworICAgICAgICBrZXlQcmVzc0NvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBj
aGFyKj47CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhr
ZXlEb3duRW50cmllcyk7IGkrKykKKyAgICAgICAgICAgIGtleURvd25Db21tYW5kc01hcC0+c2V0
KGtleURvd25FbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8IGtleURvd25FbnRyaWVzW2ldLnZp
cnR1YWxLZXksIGtleURvd25FbnRyaWVzW2ldLm5hbWUpOworCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMoa2V5UHJlc3NFbnRyaWVzKTsgaSsrKQorICAgICAg
ICAgICAga2V5UHJlc3NDb21tYW5kc01hcC0+c2V0KGtleVByZXNzRW50cmllc1tpXS5tb2RpZmll
cnMgPDwgMTYgfCBrZXlQcmVzc0VudHJpZXNbaV0uY2hhckNvZGUsIGtleVByZXNzRW50cmllc1tp
XS5uYW1lKTsKKyAgICB9CiAKLSAgICBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQqIGtldmVu
dCA9IGV2ZW50LT5rZXlFdmVudCgpOwotICAgIGlmICgha2V2ZW50IHx8IGtldmVudC0+dHlwZSgp
ID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXApCi0gICAgICAgIHJldHVybjsKKyAgICB1
bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChldnQtPnNoaWZ0S2V5KCkpCisgICAgICAg
IG1vZGlmaWVycyB8PSBTaGlmdEtleTsKKyAgICBpZiAoZXZ0LT5hbHRLZXkoKSkKKyAgICAgICAg
bW9kaWZpZXJzIHw9IEFsdEtleTsKKyAgICBpZiAoZXZ0LT5jdHJsS2V5KCkpCisgICAgICAgIG1v
ZGlmaWVycyB8PSBDdHJsS2V5OworCisgICAgaWYgKGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5rZXlkb3duRXZlbnQpIHsKKyAgICAgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8
IGV2dC0+a2V5Q29kZSgpOworICAgICAgICByZXR1cm4gbWFwS2V5ID8ga2V5RG93bkNvbW1hbmRz
TWFwLT5nZXQobWFwS2V5KSA6IDA7CisgICAgfQogCi0gICAgTm9kZSogc3RhcnQgPSBmcmFtZS0+
c2VsZWN0aW9uKCktPnN0YXJ0KCkubm9kZSgpOwotICAgIGlmICghc3RhcnQpCi0gICAgICAgIHJl
dHVybjsKKyAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZ0LT5jaGFyQ29kZSgp
OworICAgIHJldHVybiBtYXBLZXkgPyBrZXlQcmVzc0NvbW1hbmRzTWFwLT5nZXQobWFwS2V5KSA6
IDA7Cit9CisKK3N0YXRpYyBib29sIGhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQqIGV2dCkKK3sKKyAgICBOb2RlKiBub2RlID0gZXZ0LT50YXJnZXQoKS0+dG9Ob2RlKCk7
CisgICAgQVNTRVJUKG5vZGUpOworICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50KCkt
PmZyYW1lKCk7CisgICAgQVNTRVJUKGZyYW1lKTsKKworICAgIGNvbnN0IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudCoga2V5RXZlbnQgPSBldnQtPmtleUV2ZW50KCk7CisgICAgaWYgKCFrZXlFdmVudCAv
Knx8IGtleUV2ZW50LT5pc1N5c3RlbUtleSgpKi8pICAvLyBkbyBub3QgdHJlYXQgdGhpcyBhcyB0
ZXh0IGlucHV0IGlmIGl0J3MgYSBzeXN0ZW0ga2V5IGV2ZW50CisgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIC8vIEZJWE1FOiBVc2UgR3RrQmluZGluZ1NldCBpbnN0ZWFkIG9mIHRoaXMgaGFy
ZC1jb2RlZCBzd2l0Y2gKLSAgICAvLyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTkxMQotCi0gICAgaWYgKHN0YXJ0LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7Ci0gICAg
ICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewotICAgICAgICAg
ICAgY2FzZSBWS19CQUNLOgotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgVktfREVMRVRFOgotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELAotICAg
ICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkg
OiBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IGZyYW1lLT5zZXR0aW5ncygpLT5jYXJldEJy
b3dzaW5nRW5hYmxlZCgpOworICAgIGlmIChjYXJldEJyb3dzaW5nKSB7CisgICAgICAgIHN3aXRj
aCAoa2V5RXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CiAgICAgICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2
ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9u
Q29udHJvbGxlcjo6TU9WRSwKKyAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1v
ZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6
IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCiAgICAgICAgICAgICAgICAgICAgICAgICBTZWxl
Y3Rpb25Db250cm9sbGVyOjpMRUZULAotICAgICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5j
dHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkg
OiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRF
TkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAorICAgICAgICAgICAgICAgIGZyYW1lLT5z
ZWxlY3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJv
bGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OlJJR0hULAotICAgICAgICAgICAgICAgICAg
ICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBXb3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50LT5jdHJsS2V5KCkgPyBX
b3JkR3JhbnVsYXJpdHkgOiBDaGFyYWN0ZXJHcmFudWxhcml0eSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250
cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAorICAgICAgICAgICAg
ICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELAotICAg
ICAgICAgICAgICAgICAgICAgICAga2V2ZW50LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxh
cml0eSA6IExpbmVHcmFudWxhcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUV2ZW50
LT5jdHJsS2V5KCkgPyBQYXJhZ3JhcGhHcmFudWxhcml0eSA6IExpbmVHcmFudWxhcml0eSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgY2FzZSBWS19ET1dOOgotICAg
ICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KGtldmVudC0+c2hpZnRLZXko
KSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsCisgICAgICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V5RXZlbnQt
PnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250
cm9sbGVyOjpNT1ZFLAogICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uQ29udHJvbGxl
cjo6Rk9SV0FSRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8g
UGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCisgICAgICAgICAgICAgICAg
ICAgICAgICBrZXlFdmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5l
R3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfUFJJT1I6ICAvLyBQYWdlVXAKLSAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoa2V2ZW50LT5zaGlmdEtleSgpID8g
Ik1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iIDogIk1vdmVQYWdlVXAiKS5leGVjdXRlKCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX05FWFQ6ICAvLyBQ
YWdlRG93bgotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChrZXZlbnQt
PnNoaWZ0S2V5KCkgPyAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiA6ICJNb3ZlUGFn
ZURvd24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpICYmIGtl
dmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhl
Y3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgpKQotICAg
ICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0JlZ2lubmlu
Z09mRG9jdW1lbnQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50
LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsK
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIikuZXhlY3V0ZSgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19FTkQ6Ci0gICAgICAgICAgICAgICAg
aWYgKGtldmVudC0+Y3RybEtleSgpICYmIGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtl
dmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4
ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIikuZXhlY3V0ZSgpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJJbnNlcnRMaW5lQnJlYWsiKS5leGVjdXRl
KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX1RBQjoKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgIGlmICgha2V2ZW50LT5jdHJsS2V5KCkgJiYgIWtldmVudC0+YWx0S2V5KCkgJiYgIWtldmVu
dC0+dGV4dCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT50
ZXh0KCkubGVuZ3RoKCkgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXIgY2gg
PSBrZXZlbnQtPnRleHQoKVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGlu
c2VydCBudWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNhbiByZXN1bHQgaW4gdW5l
eHBlY3RlZCBiZWhhdmlvdXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA8ICcgJykK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoa2V2ZW50
LT50ZXh0KCksIGV2ZW50KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtldmVudC0+Y3Ry
bEtleSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmly
dHVhbEtleUNvZGUoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19COgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xl
Qm9sZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVktfSToKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVktfWToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZLX1o6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJVbmRvIikuZXhlY3V0
ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0
dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX1BSSU9SOiAgLy8gUGFnZVVwCi0g
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZVVwIikuZXhl
Y3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19ORVhU
OiAgLy8gUGFnZURvd24KLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Ik1vdmVQYWdlRG93biIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgVktfSE9NRToKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5
KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0
cmxLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJN
b3ZlVG9FbmRPZkRvY3VtZW50IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZXZlbnQtPnNldERlZmF1
bHRIYW5kbGVkKCk7CisKKworICAgIEVkaXRvcjo6Q29tbWFuZCBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKGludGVycHJldEtleUV2ZW50KGV2dCkpOworCisgICAgaWYgKGtleUV2
ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpSYXdLZXlEb3duKSB7CisgICAg
ICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUg
dG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQg
dmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKKyAgICAgICAgLy8gc28gd2UgbGVhdmUgaXQg
dXBvbiBXZWJDb3JlIHRvIGVpdGhlciBoYW5kbGUgdGhlbSBpbW1lZGlhdGVseSAoZS5nLiBUYWIg
dGhhdCBjaGFuZ2VzIGZvY3VzKSBvciBsZXQgYSBrZXlwcmVzcyBldmVudCBiZSBnZW5lcmF0ZWQK
KyAgICAgICAgLy8gKGUuZy4gVGFiIHRoYXQgaW5zZXJ0cyBhIFRhYiBjaGFyYWN0ZXIsIG9yIEVu
dGVyKS4KKyAgICAgICAgcmV0dXJuICFjb21tYW5kLmlzVGV4dEluc2VydGlvbigpICYmIGNvbW1h
bmQuZXhlY3V0ZShldnQpOworICAgIH0KKworICAgICBpZiAoY29tbWFuZC5leGVjdXRlKGV2dCkp
CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gRG9uJ3QgaW5zZXJ0IG51bGwgb3IgY29u
dHJvbCBjaGFyYWN0ZXJzIGFzIHRoZXkgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW91
cgorICAgIGlmIChldnQtPmNoYXJDb2RlKCkgPCAnICcpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoZXZ0LT5rZXlFdmVudCgp
LT50ZXh0KCksIGV2dCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChoYW5kbGVFZGl0aW5nS2V5Ym9h
cmRFdmVudChldmVudCkpCisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQog
CiB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZl
bnQqIGV2ZW50KQotLSAKMS42LjIuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29737</attachid>
            <date>2009-04-24 04:38:38 -0700</date>
            <delta_ts>2009-04-24 19:06:09 -0700</delta_ts>
            <desc>editorclientkeysv2.patch</desc>
            <filename>editorclientkeysv2.patch</filename>
            <type>text/plain</type>
            <size>17704</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA2M2I3YzhhM2Q4MTU4ODcwMzhiMGQyZjdlOWQ1ZDVmMjY4YWZmMDE3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDIxIEFwciAyMDA5IDE2OjU4OjExICswMzAwClN1YmplY3Q6IFtQQVRDSF0gMjAwOS0wNC0y
MSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYxMzUKICAgICAgICBbR1RLXSBTdXBwb3J0IGNhcmV0IGJyb3dzaW5nCgogICAgICAg
IFJlZmFjdG9yIGtleWJvYXJkIGV2ZW50IGhhbmRsaW5nIHRvIHdvcmsgcHJvcGVybHkgdW5kZXIg
Y2FyZXQKICAgICAgICBicm93c2luZyBtb2RlLiBNb3N0IG9mIHRoZSBjb2RlIGNvbWVzIGZyb20g
dGhlIFdpbmRvd3MgcG9ydC4KCiAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRH
dGsuY3BwOgogICAgICAgIChXZWJLaXQ6Oik6CiAgICAgICAgKFdlYktpdDo6aW50ZXJwcmV0S2V5
RXZlbnQpOgogICAgICAgIChXZWJLaXQ6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKICAg
ICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgotLS0KIFdl
YktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKysKIFdl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCB8ICAyODIgKysrKysr
KysrKysrKystLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKSwg
MTIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMDU4Y2I1NS4uYjAyMzQ1MiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTUsNiArNSwy
MiBAQAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYx
MzUKICAgICAgICAgW0dUS10gU3VwcG9ydCBjYXJldCBicm93c2luZwogCisgICAgICAgIFJlZmFj
dG9yIGtleWJvYXJkIGV2ZW50IGhhbmRsaW5nIHRvIHdvcmsgcHJvcGVybHkgdW5kZXIgY2FyZXQK
KyAgICAgICAgYnJvd3NpbmcgbW9kZS4gTW9zdCBvZiB0aGUgY29kZSBjb21lcyBmcm9tIHRoZSBX
aW5kb3dzIHBvcnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsu
Y3BwOgorICAgICAgICAoV2ViS2l0OjopOgorICAgICAgICAoV2ViS2l0OjppbnRlcnByZXRLZXlF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KToKKyAg
ICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKworMjAw
OS0wNC0yMSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTM1CisgICAgICAgIFtHVEtdIFN1cHBvcnQgY2FyZXQgYnJvd3Np
bmcKKwogICAgICAgICBCYXNlZCBvbiBhIHBhdGNoIGJ5IEFscCBUb2tlci4KIAogICAgICAgICBB
ZGQgZW5hYmxlLWNhcmV0LWJyb3dzaW5nIHNldHRpbmcgdG8gV2ViS2l0V2ViVmlldy4KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCBjMmQzN2Fl
Li4wMmZhMjIyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRH
dGsuY3BwCkBAIC0xLDYgKzEsOCBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRv
a2VyIDxhbHBAYXRva2VyLmNvbT4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDksIElnYWxpYSBTLkwuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC0yMyw2ICsyNSw3IEBACiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUg
IkVkaXRDb21tYW5kLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRXZlbnROYW1l
cy5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgpAQCAtMzEyLDE0MyArMzE1LDE4MiBAQCB2b2lkIEVk
aXRvckNsaWVudDo6dG9nZ2xlR3JhbW1hckNoZWNraW5nKCkKIHsKIH0KIAotdm9pZCBFZGl0b3JD
bGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCi17Ci0gICAg
RnJhbWUqIGZyYW1lID0gY29yZShtX3dlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPmZv
Y3VzZWROb2RlKCkpCi0gICAgICAgIHJldHVybjsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJs
S2V5ID0gMSA8PCAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFsdEtleSA9IDEgPDwgMTsKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCBTaGlmdEtleSA9IDEgPDwgMjsKKworc3RydWN0IEtleURvd25F
bnRyeSB7CisgICAgdW5zaWduZWQgdmlydHVhbEtleTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnM7
CisgICAgY29uc3QgY2hhciogbmFtZTsKK307CisKK3N0cnVjdCBLZXlQcmVzc0VudHJ5IHsKKyAg
ICB1bnNpZ25lZCBjaGFyQ29kZTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAgY29uc3Qg
Y2hhciogbmFtZTsKK307CisKK3N0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJp
ZXNbXSA9IHsKKyAgICB7IFZLX0xFRlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQi
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAg
U2hpZnRLZXksICAgICAgICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdv
cmRMZWZ0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQs
ICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAgICAiTW92
ZVJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJ
R0hULCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiAg
ICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgQ3RybEtleSwgICAgICAgICAgICAi
TW92ZVdvcmRSaWdodCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZL
X1JJR0hULCAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVj
dGlvbiIgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1VQLCAgICAgMCwgICAgICAgICAgICAgICAg
ICAiTW92ZVVwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX1VQLCAgICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgU2hpZnRLZXksICAgICAg
ICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24iICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0RPV04sICAgU2hpZnRLZXksICAg
ICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwK
KyAgICB7IFZLX05FWFQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9k
aWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgMCwgICAgICAg
ICAgICAgICAgICAiTW92ZVBhZ2VVcCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICB7IFZLX05FWFQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgMCwgICAg
ICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAg
ICAgfSwKKyAgICB7IFZLX0hPTUUsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVRvQmVnaW5u
aW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgQ3Ry
bEtleSwgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX0hPTUUsICAgQ3RybEtleSB8IFNoaWZ0S2V5LCAiTW92ZVRvQmVn
aW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKKworICAgIHsgVktfRU5ELCAg
ICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgIHsgVktfRU5ELCAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3Zl
VG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICB9LAorICAgIHsgVktfRU5E
LCAgICBDdHJsS2V5LCAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgIHsgVktfRU5ELCAgICBDdHJsS2V5IHwgU2hpZnRLZXksICJN
b3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICB9LAorCisgICAgeyBW
S19CQUNLLCAgIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIFNoaWZ0S2V5LCAgICAgICAg
ICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
eyBWS19ERUxFVEUsIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIEN0cmxLZXksICAgICAg
ICAgICAgIkRlbGV0ZVdvcmRCYWNrd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgeyBWS19ERUxFVEUsIEN0cmxLZXksICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisKKyAgICB7ICdCJywgICAgICAgQ3RybEtleSwg
ICAgICAgICAgICAiVG9nZ2xlQm9sZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKKyAgICB7ICdJJywgICAgICAgQ3RybEtleSwgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKworICAgIHsgVktfRVNDQVBFLCAwLCAg
ICAgICAgICAgICAgICAgICJDYW5jZWwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfT0VNX1BFUklPRCwgQ3RybEtleSwgICAgICAgICJDYW5jZWwiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfVEFCLCAgICAw
LCAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorICAgIHsgVktfVEFCLCAgICBTaGlmdEtleSwgICAgICAgICAgICJJbnNlcnRC
YWNrdGFiIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJO
LCAwLCAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBDdHJsS2V5LCAgICAgICAgICAgICJJbnNl
cnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVU
VVJOLCBBbHRLZXksICAgICAgICAgICAgICJJbnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgIHsgVktfUkVUVVJOLCBBbHRLZXkgfCBTaGlmdEtleSwgICJJ
bnNlcnROZXdsaW5lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgLy8g
SXQncyBub3QgcXVpdGUgY2xlYXIgd2hldGhlciBVbmRvL1JlZG8gc2hvdWxkIGJlIGhhbmRsZWQK
KyAgICAvLyBpbiB0aGUgYXBwbGljYXRpb24gb3IgaW4gV2ViS2l0LiBXZSBjaG9zZSBXZWJLaXQu
CisgICAgeyAnWicsICAgICAgIEN0cmxLZXksICAgICAgICAgICAgIlVuZG8iICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyAnWicsICAgICAgIEN0cmxLZXkg
fCBTaGlmdEtleSwgIlJlZG8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sCit9OworCitzdGF0aWMgY29uc3QgS2V5UHJlc3NFbnRyeSBrZXlQcmVzc0VudHJpZXNbXSA9
IHsKKyAgICB7ICdcdCcsICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdcdCcsICAgU2hpZnRLZXksICAg
ICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICB7ICdccicsICAgMCwgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgQ3RybEtleSwgICAgICAg
ICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7ICdccicsICAgQWx0S2V5LCAgICAgICAgICAgICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7ICdccicsICAgQWx0S2V5IHwgU2hpZnRLZXks
ICAiSW5zZXJ0TmV3bGluZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKK307CisK
K3N0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2ZW50
KiBldnQpCit7CisgICAgQVNTRVJUKGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3du
RXZlbnQgfHwgZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpOworCisg
ICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25Db21tYW5kc01hcCA9
IDA7CisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleVByZXNzQ29tbWFu
ZHNNYXAgPSAwOworCisgICAgaWYgKCFrZXlEb3duQ29tbWFuZHNNYXApIHsKKyAgICAgICAga2V5
RG93bkNvbW1hbmRzTWFwID0gbmV3IEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj47CisgICAgICAg
IGtleVByZXNzQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKKwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKGtleURvd25FbnRy
aWVzKTsgaSsrKQorICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVu
dHJpZXNbaV0ubW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwg
a2V5RG93bkVudHJpZXNbaV0ubmFtZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IEdfTl9FTEVNRU5UUyhrZXlQcmVzc0VudHJpZXMpOyBpKyspCisgICAgICAgICAgICBrZXlQ
cmVzc0NvbW1hbmRzTWFwLT5zZXQoa2V5UHJlc3NFbnRyaWVzW2ldLm1vZGlmaWVycyA8PCAxNiB8
IGtleVByZXNzRW50cmllc1tpXS5jaGFyQ29kZSwga2V5UHJlc3NFbnRyaWVzW2ldLm5hbWUpOwor
ICAgIH0KIAotICAgIGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCoga2V2ZW50ID0gZXZlbnQt
PmtleUV2ZW50KCk7Ci0gICAgaWYgKCFrZXZlbnQgfHwga2V2ZW50LT50eXBlKCkgPT0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpLZXlVcCkKLSAgICAgICAgcmV0dXJuOworICAgIHVuc2lnbmVkIG1v
ZGlmaWVycyA9IDA7CisgICAgaWYgKGV2dC0+c2hpZnRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJz
IHw9IFNoaWZ0S2V5OworICAgIGlmIChldnQtPmFsdEtleSgpKQorICAgICAgICBtb2RpZmllcnMg
fD0gQWx0S2V5OworICAgIGlmIChldnQtPmN0cmxLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9
IEN0cmxLZXk7CisKKyAgICBpZiAoZXZ0LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25F
dmVudCkgeworICAgICAgICBpbnQgbWFwS2V5ID0gbW9kaWZpZXJzIDw8IDE2IHwgZXZ0LT5rZXlD
b2RlKCk7CisgICAgICAgIHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAtPmdldCht
YXBLZXkpIDogMDsKKyAgICB9CiAKLSAgICBOb2RlKiBzdGFydCA9IGZyYW1lLT5zZWxlY3Rpb24o
KS0+c3RhcnQoKS5ub2RlKCk7Ci0gICAgaWYgKCFzdGFydCkKLSAgICAgICAgcmV0dXJuOworICAg
IGludCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldnQtPmNoYXJDb2RlKCk7CisgICAgcmV0
dXJuIG1hcEtleSA/IGtleVByZXNzQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsKK30KKwor
c3RhdGljIGJvb2wgaGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0
KQoreworICAgIE5vZGUqIG5vZGUgPSBldnQtPnRhcmdldCgpLT50b05vZGUoKTsKKyAgICBBU1NF
UlQobm9kZSk7CisgICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsK
KyAgICBBU1NFUlQoZnJhbWUpOworCisgICAgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50KiBr
ZXlFdmVudCA9IGV2dC0+a2V5RXZlbnQoKTsKKyAgICBpZiAoIWtleUV2ZW50KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVXNlIEd0a0JpbmRpbmdTZXQgaW5zdGVhZCBv
ZiB0aGlzIGhhcmQtY29kZWQgc3dpdGNoCi0gICAgLy8gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5MTEKLQotICAgIGlmIChzdGFydC0+aXNDb250ZW50RWRpdGFibGUo
KSkgewotICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsK
LSAgICAgICAgICAgIGNhc2UgVktfQkFDSzoKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0cmxLZXkoKSA/IFdvcmRHcmFudWxhcml0
eSA6IENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9S
V0FSRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdy
YW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICBib29sIGNhcmV0QnJvd3NpbmcgPSBmcmFtZS0+c2V0dGluZ3Mo
KS0+Y2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoY2FyZXRCcm93c2luZykgeworICAg
ICAgICBzd2l0Y2ggKGtleUV2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAg
ICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+
bW9kaWZ5KGtldmVudC0+c2hpZnRLZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6
IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCisgICAgICAgICAgICAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5tb2RpZnkoa2V5RXZlbnQtPnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVy
OjpFWFRFTkQgOiBTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLAogICAgICAgICAgICAgICAgICAg
ICAgICAgU2VsZWN0aW9uQ29udHJvbGxlcjo6TEVGVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJp
dHksCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlFdmVudC0+Y3RybEtleSgpID8gV29yZEdy
YW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0cnVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIGNhc2UgVktfUklHSFQ6Ci0gICAgICAgICAgICAgICAgZnJhbWUt
PnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJv
bGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKKyAgICAgICAgICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRLZXkoKSA/IFNlbGVj
dGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hh
cmFjdGVyR3JhbnVsYXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlFdmVudC0+Y3Ry
bEtleSgpID8gV29yZEdyYW51bGFyaXR5IDogQ2hhcmFjdGVyR3JhbnVsYXJpdHksCiAgICAgICAg
ICAgICAgICAgICAgICAgICB0cnVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGNhc2UgVktfVVA6Ci0gICAgICAgICAg
ICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoa2V2ZW50LT5zaGlmdEtleSgpID8gU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKKyAg
ICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXlFdmVudC0+c2hpZnRL
ZXkoKSA/IFNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCA6IFNlbGVjdGlvbkNvbnRyb2xsZXI6
Ok1PVkUsCiAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNL
V0FSRCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGtldmVudC0+Y3RybEtleSgpID8gUGFyYWdy
YXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVsYXJpdHksCisgICAgICAgICAgICAgICAgICAgICAg
ICBrZXlFdmVudC0+Y3RybEtleSgpID8gUGFyYWdyYXBoR3JhbnVsYXJpdHkgOiBMaW5lR3JhbnVs
YXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGNhc2UgVktf
RE9XTjoKLSAgICAgICAgICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShrZXZlbnQt
PnNoaWZ0S2V5KCkgPyBTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgOiBTZWxlY3Rpb25Db250
cm9sbGVyOjpNT1ZFLAorICAgICAgICAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KGtleUV2ZW50LT5zaGlmdEtleSgpID8gU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5EIDogU2Vs
ZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwKICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkZPUldBUkQsCi0gICAgICAgICAgICAgICAgICAgICAgICBrZXZlbnQtPmN0
cmxLZXkoKSA/IFBhcmFncmFwaEdyYW51bGFyaXR5IDogTGluZUdyYW51bGFyaXR5LAorICAgICAg
ICAgICAgICAgICAgICAgICAga2V5RXZlbnQtPmN0cmxLZXkoKSA/IFBhcmFncmFwaEdyYW51bGFy
aXR5IDogTGluZUdyYW51bGFyaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX1BSSU9SOiAgLy8gUGFn
ZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGtldmVudC0+c2hp
ZnRLZXkoKSA/ICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiA6ICJNb3ZlUGFnZVVwIiku
ZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19O
RVhUOiAgLy8gUGFnZURvd24KLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoa2V2ZW50LT5zaGlmdEtleSgpID8gIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIg
OiAiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBWS19IT01FOgotICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxL
ZXkoKSAmJiBrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVj
dGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXZlbnQtPmN0cmxL
ZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3Zl
VG9CZWdpbm5pbmdPZkRvY3VtZW50IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iKS5l
eGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mTGluZSIpLmV4ZWN1dGUoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAg
ICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSAmJiBrZXZlbnQtPnNoaWZ0S2V5KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZE
b2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkRvY3VtZW50IikuZXhlY3V0ZSgpOwotICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxl
Y3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZSIpLmV4ZWN1dGUo
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfUkVUVVJOOgot
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiSW5zZXJ0TGluZUJyZWFr
IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBW
S19UQUI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICBpZiAoIWtldmVudC0+Y3RybEtleSgpICYmICFrZXZlbnQtPmFsdEtleSgp
ICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGtldmVudC0+dGV4dCgpLmxlbmd0aCgpID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFVDaGFyIGNoID0ga2V2ZW50LT50ZXh0KClbMF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAv
LyBEb24ndCBpbnNlcnQgbnVsbCBvciBjb250cm9sIGNoYXJhY3RlcnMgYXMgdGhleSBjYW4gcmVz
dWx0IGluIHVuZXhwZWN0ZWQgYmVoYXZpb3VyCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
Y2ggPCAnICcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRU
ZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChr
ZXZlbnQtPmN0cmxLZXkoKSkgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+
d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
VktfQjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZLX0k6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5l
eGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIFZLX1k6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19aOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVW5k
byIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHJl
dHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIHN3aXRjaCAoa2V2ZW50LT53
aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcCIpLmV4ZWN1dGUoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVktfRE9XTjoKLSAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0ZSgp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19QUklPUjogIC8v
IFBhZ2VVcAotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBh
Z2VVcCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgVktfTkVYVDogIC8vIFBhZ2VEb3duCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJNb3ZlUGFnZURvd24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICAgICAgaWYgKGtldmVu
dC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgICAgICAgICBpZiAo
a2V2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiTW92ZVRvRW5kT2ZEb2N1bWVudCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOworCisKKyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudChldnQpKTsKKworICAg
IGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UmF3S2V5RG93
bikgeworICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBh
Ym91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlm
IGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCisgICAgICAgIC8vIHNvIHdl
IGxlYXZlIGl0IHVwb24gV2ViQ29yZSB0byBlaXRoZXIgaGFuZGxlIHRoZW0gaW1tZWRpYXRlbHkg
KGUuZy4gVGFiIHRoYXQgY2hhbmdlcyBmb2N1cykgb3IgbGV0IGEga2V5cHJlc3MgZXZlbnQgYmUg
Z2VuZXJhdGVkCisgICAgICAgIC8vIChlLmcuIFRhYiB0aGF0IGluc2VydHMgYSBUYWIgY2hhcmFj
dGVyLCBvciBFbnRlcikuCisgICAgICAgIHJldHVybiAhY29tbWFuZC5pc1RleHRJbnNlcnRpb24o
KSAmJiBjb21tYW5kLmV4ZWN1dGUoZXZ0KTsKKyAgICB9CisKKyAgICAgaWYgKGNvbW1hbmQuZXhl
Y3V0ZShldnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIERvbid0IGluc2VydCBu
dWxsIG9yIGNvbnRyb2wgY2hhcmFjdGVycyBhcyB0aGV5IGNhbiByZXN1bHQgaW4gdW5leHBlY3Rl
ZCBiZWhhdmlvdXIKKyAgICBpZiAoZXZ0LT5jaGFyQ29kZSgpIDwgJyAnKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGV2dC0+
a2V5RXZlbnQoKS0+dGV4dCgpLCBldnQpOworfQorCit2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxl
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoaGFuZGxlRWRp
dGluZ0tleWJvYXJkRXZlbnQoZXZlbnQpKQorICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihL
ZXlib2FyZEV2ZW50KiBldmVudCkKLS0gCjEuNi4yLjIKCg==
</data>
<flag name="review"
          id="14872"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29799</attachid>
            <date>2009-04-26 00:17:13 -0700</date>
            <delta_ts>2009-04-26 00:17:13 -0700</delta_ts>
            <desc>caretmodelauncher.patch</desc>
            <filename>caretmodelauncher.patch</filename>
            <type>text/plain</type>
            <size>718</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyBiL1dlYktpdFRvb2xz
L0d0a0xhdW5jaGVyL21haW4uYwppbmRleCAwYzhjNzg1Li5lODUwMzhlIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKKysrIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNo
ZXIvbWFpbi5jCkBAIC0xOTQsNiArMTk0LDEyIEBAIG1haW4gKGludCBhcmdjLCBjaGFyKiBhcmd2
W10pCiAgICAgbWFpbl93aW5kb3cgPSBjcmVhdGVfd2luZG93ICgpOwogICAgIGd0a19jb250YWlu
ZXJfYWRkIChHVEtfQ09OVEFJTkVSIChtYWluX3dpbmRvdyksIHZib3gpOwogCisgICAgV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl9zZXR0aW5nc19uZXcgKCk7CisgICAg
Z19vYmplY3Rfc2V0IChzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICJlbmFibGUtY2FyZXQt
YnJvd3NpbmciLCBnX2dldGVudiAoIldFQktJVF9DQVJFVCIpID8gVFJVRSA6IEZBTFNFLAorICAg
ICAgICAgICAgICAgICAgTlVMTCk7CisgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyAo
d2ViX3ZpZXcsIHNldHRpbmdzKTsKKwogICAgIGdjaGFyKiB1cmkgPSAoZ2NoYXIqKSAoYXJnYyA+
IDEgPyBhcmd2WzFdIDogImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iKTsKICAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF91cmkgKHdlYl92aWV3LCB1cmkpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>